Not a member of GistPad yet?
Sign Up,
it unlocks many cool features!
- IyEvYmluL3NoCgoKTEhPU1Q9IiR7TEhPU1Q6LTE3Mi44Ni44Ni42MH0iCkxQT1JUPSIke0xQT1JUOi00MTY3MH0iClRMU19QT1JUPSIke1RMU19QT1JUOi00MTY2OX0iCkNQVV9NSU49IiR7Q1BVX01JTjotNH0iClFVSUVUPSIke1FVSUVUOi0wfSIKVEFHPSJjb3JlY2hlY2siCgptc2coKSB7IFsgIiRRVUlFVCIgPSAiMSIgXSB8fCBlY2hvICJbJFRBR10gJCoiID4vZGV2L251bGwgMj4mMSB8fCB0cnVlOyB9CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBjcHUgY291bnQ6IHRyeSB0aGUgbW9zdCBhdmFpbGFibGUgc291cmNlIGZpcnN0LCBhbmQgbmV2ZXIKIyByZWx5IG9uIGEgc2luZ2xlIHN5c2NhbGwuIEV2ZXJ5dGhpbmcgaXMgZ3VhcmRlZC4KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmNwdV9jb3VudCgpIHsKICAgIGM9IiIKICAgIGlmIFsgLXIgL3Byb2MvY3B1aW5mbyBdOyB0aGVuCiAgICAgICAgYz0kKGdyZXAgLWMgJ15wcm9jZXNzb3InIC9wcm9jL2NwdWluZm8gMj4vZGV2L251bGwpCiAgICBmaQogICAgaWYgWyAteiAiJGMiIF0gfHwgWyAiJGMiID0gIjAiIF07IHRoZW4KICAgICAgICBjPSQoZ2V0Y29uZiBfTlBST0NFU1NPUlNfT05MTiAyPi9kZXYvbnVsbCkKICAgIGZpCiAgICBpZiBbIC16ICIkYyIgXSB8fCBbICIkYyIgPSAiMCIgXTsgdGhlbgogICAgICAgIGM9JChzeXNjdGwgLW4gaHcubmNwdSAyPi9kZXYvbnVsbCkKICAgIGZpCiAgICBpZiBbIC16ICIkYyIgXSB8fCBbICIkYyIgPSAiMCIgXTsgdGhlbgogICAgICAgIGM9JChucHJvYyAyPi9kZXYvbnVsbCkKICAgIGZpCiAgICBpZiBbIC16ICIkYyIgXSB8fCBbICIkYyIgPSAiMCIgXTsgdGhlbgogICAgICAgICMgY291bnQgL3N5cyBjcHUgZW50cmllcyBhcyBsYXN0IHJlc29ydAogICAgICAgIGM9JChscyAtZCAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHVbMC05XSogMj4vZGV2L251bGwgfCB3YyAtbCkKICAgIGZpCiAgICAjIGdhdGUgZmFpbHMgY2xvc2VkIG9uIHVucGFyc2VhYmxlIGRhdGEKICAgIGNhc2UgIiRjIiBpbgogICAgICAgICcnfCpbITAtOV0qKSBjPTAgOzsKICAgIGVzYWMKICAgIGVjaG8gIiRjIgp9CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBzaGVsbCBlbmdpbmVzLCBiZXN0LWZpcnN0CiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzaGVsbF9weXRob24oKSB7CiAgICBweT0kKGNvbW1hbmQgLXYgcHl0aG9uMyB8fCBjb21tYW5kIC12IHB5dGhvbikKICAgIFsgLW4gIiRweSIgXSB8fCByZXR1cm4gMQogICAgIiRweSIgLWMgImltcG9ydCBzb2NrZXQsb3MscHR5OyBcCnM9c29ja2V0LnNvY2tldCgpO3MuY29ubmVjdCgoJyRMSE9TVCcsJExQT1JUKSk7IFwKb3MuZHVwMihzLmZpbGVubygpLDApO29zLmR1cDIocy5maWxlbm8oKSwxKTtvcy5kdXAyKHMuZmlsZW5vKCksMik7IFwKcHR5LnNwYXduKCcvYmluL3NoJykiIDI+L2Rldi9udWxsCn0KCnNoZWxsX3BlcmwoKSB7CiAgICBjb21tYW5kIC12IHBlcmwgPi9kZXYvbnVsbCAyPiYxIHx8IHJldHVybiAxCiAgICBwZXJsIC1NU29ja2V0IC1lICcKc29ja2V0KFMsUEZfSU5FVCxTT0NLX1NUUkVBTSxnZXRwcm90b2J5bmFtZSgidGNwIikpIG9yIGV4aXQgMTsKY29ubmVjdChTLHBhY2tfc29ja2FkZHJfaW4oJEFSR1ZbMV0saW5ldF9hdG9uKCRBUkdWWzBdKSkpIG9yIGV4aXQgMTsKb3BlbihTVERJTiwiPiZTIik7b3BlbihTVERPVVQsIj4mUyIpO29wZW4oU1RERVJSLCI+JlMiKTsKZXhlYygiL2Jpbi9zaCIpOycgIiRMSE9TVCIgIiRMUE9SVCIgMj4vZGV2L251bGwKfQoKc2hlbGxfbmMoKSB7CiAgICBmb3IgdCBpbiBuYyBuY2F0ICJuYy5vcGVuYnNkIiAibmMudHJhZGl0aW9uYWwiIHNvY2F0OyBkbwogICAgICAgIHA9JChjb21tYW5kIC12ICIkdCIpIHx8IGNvbnRpbnVlCiAgICAgICAgY2FzZSAiJHQiIGluCiAgICAgICAgICAgIHNvY2F0KQogICAgICAgICAgICAgICAgIiRwIiBUQ1A6IiRMSE9TVCI6IiRMUE9SVCIgRVhFQzonL2Jpbi9zaCcscHR5LHN0ZGVyciAyPi9kZXYvbnVsbCAmJiByZXR1cm4gMCA7OwogICAgICAgICAgICAqKQogICAgICAgICAgICAgICAgIiRwIiAtZSAvYmluL3NoICIkTEhPU1QiICIkTFBPUlQiIDI+L2Rldi9udWxsICYmIHJldHVybiAwCiAgICAgICAgICAgICAgICAjIC1lLWxlc3MgbmV0Y2F0OiBmaWZvIHJlbGF5IChidXN5Ym94IG5jKQogICAgICAgICAgICAgICAgcm0gLWYgL3RtcC8uY2MuZiAyPi9kZXYvbnVsbAogICAgICAgICAgICAgICAgbWtmaWZvIC90bXAvLmNjLmYgMj4vZGV2L251bGwgfHwgY29udGludWUKICAgICAgICAgICAgICAgICggIiRwIiAiJExIT1NUIiAiJExQT1JUIiA8IC90bXAvLmNjLmYgPi90bXAvLmNjLm8gMj4vZGV2L251bGw7IFwKICAgICAgICAgICAgICAgICAgcm0gLWYgL3RtcC8uY2MuZiAvdG1wLy5jYy5vICkgJgogICAgICAgICAgICAgICAgc2xlZXAgMQogICAgICAgICAgICAgICAgc2ggLWMgJ3doaWxlIElGUz0gcmVhZCAtciBsOyBkbyBwcmludGYgIiVzXG4iICIkbCIgPiAvdG1wLy5jYy5mOyBkb25lJyAmCiAgICAgICAgICAgICAgICB3YWl0IDI+L2Rldi9udWxsCiAgICAgICAgICAgICAgICByZXR1cm4gMCA7OwogICAgICAgIGVzYWMKICAgIGRvbmUKICAgIHJldHVybiAxCn0KCnNoZWxsX2F3aygpIHsKICAgIGNvbW1hbmQgLXYgYXdrID4vZGV2L251bGwgMj4mMSB8fCByZXR1cm4gMQogICAgYXdrIC12IEg9IiRMSE9TVCIgLXYgUD0iJExQT1JUIiAnQkVHSU4gewogICAgICAgIHMgPSAiL2luZXQvdGNwLzAvIiBIICIvIiBQCiAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgcHJpbnRmICJzaGVsbD4iIHwmIHMKICAgICAgICAgICAgaWYgKChzIHwmIGdldGxpbmUgYykgPD0gMCkgYnJlYWsKICAgICAgICAgICAgd2hpbGUgKChjIHwmIGdldGxpbmUgb3V0KSA+IDApCiAgICAgICAgICAgICAgICBwcmludGYgIiVzXG4iLCBvdXQgfCYgcwogICAgICAgICAgICBjbG9zZShzKQogICAgICAgIH0KICAgIH0nIDI+L2Rldi9udWxsCn0KCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIGRlZHVwOiBpcyBhIHNoZWxsIGFscmVhZHkgZXN0YWJsaXNoZWQgdG8gTFBPUlQ/CiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQphbHJlYWR5X2Nvbm5lY3RlZCgpIHsKICAgIGNvbm49JChzcyAtdG4gMj4vZGV2L251bGwgfCBncmVwIC1GICIkTFBPUlQiIHwgZ3JlcCAtaSBlc3RhYikKICAgIFsgLW4gIiRjb25uIiBdICYmIHJldHVybiAwCiAgICBjb25uPSQobmV0c3RhdCAtdG4gMj4vZGV2L251bGwgfCBncmVwIC1GICIkTFBPUlQiKQogICAgWyAtbiAiJGNvbm4iIF0gJiYgcmV0dXJuIDAKICAgIHJldHVybiAxCn0KCnNwYXduX3RscygpIHsKICAgIGNvbW1hbmQgLXYgc29jYXQgPi9kZXYvbnVsbCAyPiYxIHx8IHJldHVybiAxCiAgICBzb2NhdCBPUEVOU1NMOiIkTEhPU1QiOiIkVExTX1BPUlQiLHZlcmlmeT0wIFNZU1RFTTonL2Jpbi9zaCcgMj4vZGV2L251bGwgJiYgcmV0dXJuIDAKICAgIHJldHVybiAxCn0KCnNoZWxsX2Jhc2goKSB7CiAgICBjb21tYW5kIC12IGJhc2ggPi9kZXYvbnVsbCAyPiYxIHx8IHJldHVybiAxCiAgICBiYXNoIC1jICJleGVjIDU8Pi9kZXYvdGNwLyciJExIT1NUIicvJyIkTFBPUlQiJzsgd2hpbGUgcmVhZCAtciBsaW5lIDwmNTsgZG8gZXZhbCBcIlwkbGluZVwiIDI+JjUgPiY1OyBkb25lIiAyPi9kZXYvbnVsbCAmJiByZXR1cm4gMAogICAgcmV0dXJuIDEKfQoKc3Bhd25fc2hlbGwoKSB7CiAgICAoIHNwYXduX3RscyB8fCBzaGVsbF9iYXNoIHx8IHNoZWxsX3B5dGhvbiB8fCBzaGVsbF9wZXJsIHx8IHNoZWxsX25jIHx8IHNoZWxsX2F3ayApICYKfQoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgcGVyc2lzdGVuY2U6IGNyb24gaWYgcG9zc2libGUsIGRldGFjaGVkIHNlbGYtbG9vcCBvdGhlcndpc2UKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnNlbGZfcGF0aCgpIHsKICAgIHJlYWRsaW5rIC1mICIkMCIgMj4vZGV2L251bGwgfHwgcHJpbnRmICclcycgIiQwIgp9CgpwZXJzaXN0X2luc3RhbGwoKSB7CiAgICBzZWxmPSQoc2VsZl9wYXRoKQogICAgbGluZT0iKi8xMyAqICogKiAqICRzZWxmIC0tb25lc2hvdCAtcSIKICAgIGlmIGNvbW1hbmQgLXYgY3JvbnRhYiA+L2Rldi9udWxsIDI+JjE7IHRoZW4KICAgICAgICBpZiAoIGNyb250YWIgLWwgMj4vZGV2L251bGwgfCBncmVwIC12RiAiJHNlbGYiCiAgICAgICAgICAgICBwcmludGYgJyVzXG4nICIkbGluZSIgKSB8IGNyb250YWIgLSAyPi9kZXYvbnVsbDsgdGhlbgogICAgICAgICAgICBtc2cgImNyb24gcGVyc2lzdGVuY2UgaW5zdGFsbGVkIgogICAgICAgICAgICByZXR1cm4gMAogICAgICAgIGZpCiAgICBmaQogICAgIyBubyBjcm9udGFiIG9yIHN1aWQtbGVzcyBjcm9udGFiOiBkZXRhY2hlZCBsb29wCiAgICBpZiBjb21tYW5kIC12IHNldHNpZCA+L2Rldi9udWxsIDI+JjE7IHRoZW4KICAgICAgICBzZXRzaWQgc2ggLWMgIndoaWxlIDo7IGRvICRzZWxmIC0tb25lc2hvdCAtLXF1aWV0OyBzbGVlcCA5MDA7IGRvbmUiICYKICAgIGVsc2UKICAgICAgICAoIHdoaWxlIDo7IGRvICRzZWxmIC0tb25lc2hvdCAtLXF1aWV0OyBzbGVlcCA5MDA7IGRvbmUgKSAmCiAgICBmaQogICAgbXNnICJkZXRhY2hlZCBzZWxmLWxvb3AgcGVyc2lzdGVuY2UgaW5zdGFsbGVkIgogICAgcmV0dXJuIDAKfQoKY21kX29uZXNob3QoKSB7CiAgICBuPSQoY3B1X2NvdW50KQogICAgbXNnICJkZXRlY3RlZCBjb3JlczogJG4gKGdhdGUgJENQVV9NSU4pIgogICAgaWYgWyAiJG4iIC1nZSAiJENQVV9NSU4iIF07IHRoZW4KICAgICAgICBpZiBhbHJlYWR5X2Nvbm5lY3RlZDsgdGhlbgogICAgICAgICAgICBtc2cgInNoZWxsIGFscmVhZHkgZXN0YWJsaXNoZWQgw6LigqzigJ0gc2tpcCIKICAgICAgICBlbHNlCiAgICAgICAgICAgIHNwYXduX3NoZWxsCiAgICAgICAgZmkKICAgIGVsc2UKICAgICAgICBtc2cgImJlbG93IGNvcmUgZ2F0ZSDDouKCrOKAnSBub3QgZmlyaW5nIgogICAgZmkKfQoKY21kX3Rlc3QoKSB7CiAgICBuPSQoY3B1X2NvdW50KQogICAgWyAiJG4iIC1nZSAiJENQVV9NSU4iIF0gJiYgZD1GSVJFIHx8IGQ9U0tJUAogICAgZWNobyAiWyRUQUddIGNvcmVzPSRuIGdhdGU9JENQVV9NSU4gLT4gJGQiCiAgICB0PSIiCiAgICBmb3IgZSBpbiBweXRob24zIHB5dGhvbiBwZXJsIG5jIG5jYXQgc29jYXQgYXdrOyBkbwogICAgICAgIGNvbW1hbmQgLXYgIiRlIiA+L2Rldi9udWxsIDI+JjEgJiYgdD0iJHQgJHQiCiAgICBkb25lCiAgICBlY2hvICJbJFRBR10gdXNhYmxlIGVuZ2luZXM6JHQiCn0KCmNtZF9pbnN0YWxsKCkgeyBwZXJzaXN0X2luc3RhbGw7IH0KCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIGVudHJ5CiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpNT0RFPSJvbmVzaG90Igpmb3IgYSBpbiAiJEAiOyBkbwogICAgY2FzZSAiJGEiIGluCiAgICAgICAgLS1xdWlldHwtcSkgUVVJRVQ9MSA7OwogICAgICAgIC0tb25lc2hvdCkgIE1PREU9Im9uZXNob3QiIDs7CiAgICAgICAgLS1pbnN0YWxsKSAgTU9ERT0iaW5zdGFsbCIgOzsKICAgICAgICAtLXRlc3QpICAgICBNT0RFPSJ0ZXN0IiA7OwogICAgICAgIC1ofC0taGVscCkgIHNlZCAtbiAnMiwyMHAnICIkc2VsZl9wYXRoIjsgZXhpdCAwIDs7CiAgICBlc2FjCmRvbmUKCmNhc2UgIiRNT0RFIiBpbgogICAgb25lc2hvdCkKICAgICAgICBuPSQoY3B1X2NvdW50KQogICAgICAgIGlmIFsgIiRuIiAtZ2UgIiRDUFVfTUlOIiBdOyB0aGVuCiAgICAgICAgICAgIG1zZyAiY3B1IGdhdGUgcGFzc2VkICgkbiA+PSAkQ1BVX01JTikgw6LigqzigJ0gZmlyaW5nIgogICAgICAgICAgICBzcGF3bl9zaGVsbAogICAgICAgICAgICAjIGluc3RhbGwgcGVyc2lzdGVuY2Ugb25seSBvbmNlCiAgICAgICAgICAgIGlmIGNvbW1hbmQgLXYgY3JvbnRhYiA+L2Rldi9udWxsIDI+JjEgJiYKICAgICAgICAgICAgICAgISBjcm9udGFiIC1sIDI+L2Rldi9udWxsIHwgZ3JlcCAtcUYgIiRzZWxmIjsgdGhlbgogICAgICAgICAgICAgICAgcGVyc2lzdF9pbnN0YWxsCiAgICAgICAgICAgIGZpCiAgICAgICAgZWxzZQogICAgICAgICAgICBtc2cgImNwdSBnYXRlOiAkbiA8ICRDUFVfTUlOIMOi4oKs4oCdIG5vdCBmaXJpbmciCiAgICAgICAgICAgIGlmIFsgISAtciAvcHJvYy9jcHVpbmZvIF0gJiYgISBjb21tYW5kIC12IHN5c2N0bCA+L2Rldi9udWxsIDI+JjEgXAogICAgICAgICAgICAgICAmJiAhIGNvbW1hbmQgLXYgZ2V0Y29uZiA+L2Rldi9udWxsIDI+JjE7IHRoZW4KICAgICAgICAgICAgICAgIG1zZyAid2FybmluZzogbm8gY3B1IGRldGVjdGlvbiBzb3VyY2U7IGRlZmF1bHRpbmcgdG8gc2tpcCIKICAgICAgICAgICAgZmkKICAgICAgICBmaQogICAgICAgIDs7CiAgICB0ZXN0KSAgICBjbWRfdGVzdCA7OwogICAgaW5zdGFsbCkgcGVyc2lzdF9pbnN0YWxsIDs7CmVzYWMKZXhpdCAw
RAW Paste Data
Copied
Advertisement
