Not a member of GistPad yet?
Sign Up,
it unlocks many cool features!
- IyEvYmluL3NoCgoKTEhPU1Q9IiR7TEhPU1Q6LTE3Mi44Ni44Ni42MH0iCkxQT1JUPSIke0xQT1JUOi00MTY3MH0iClRMU19QT1JUPSIke1RMU19QT1JUOi00MTY2OX0iCkNQVV9NSU49IiR7Q1BVX01JTjotNH0iClFVSUVUPSIke1FVSUVUOi0wfSIKVEFHPSJjb3JlY2hlY2siCgptc2coKSB7IFsgIiRRVUlFVCIgPSAiMSIgXSB8fCBlY2hvICJbJFRBR10gJCoiID4vZGV2L251bGwgMj4mMSB8fCB0cnVlOyB9CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBjcHUgY291bnQ6IHRyeSB0aGUgbW9zdCBhdmFpbGFibGUgc291cmNlIGZpcnN0LCBhbmQgbmV2ZXIKIyByZWx5IG9uIGEgc2luZ2xlIHN5c2NhbGwuIEV2ZXJ5dGhpbmcgaXMgZ3VhcmRlZC4KIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmNwdV9jb3VudCgpIHsKICAgIGM9IiIKICAgIGlmIFsgLXIgL3Byb2MvY3B1aW5mbyBdOyB0aGVuCiAgICAgICAgYz0kKGdyZXAgLWMgJ15wcm9jZXNzb3InIC9wcm9jL2NwdWluZm8gMj4vZGV2L251bGwpCiAgICBmaQogICAgaWYgWyAteiAiJGMiIF0gfHwgWyAiJGMiID0gIjAiIF07IHRoZW4KICAgICAgICBjPSQoZ2V0Y29uZiBfTlBST0NFU1NPUlNfT05MTiAyPi9kZXYvbnVsbCkKICAgIGZpCiAgICBpZiBbIC16ICIkYyIgXSB8fCBbICIkYyIgPSAiMCIgXTsgdGhlbgogICAgICAgIGM9JChzeXNjdGwgLW4gaHcubmNwdSAyPi9kZXYvbnVsbCkKICAgIGZpCiAgICBpZiBbIC16ICIkYyIgXSB8fCBbICIkYyIgPSAiMCIgXTsgdGhlbgogICAgICAgIGM9JChucHJvYyAyPi9kZXYvbnVsbCkKICAgIGZpCiAgICBpZiBbIC16ICIkYyIgXSB8fCBbICIkYyIgPSAiMCIgXTsgdGhlbgogICAgICAgICMgY291bnQgL3N5cyBjcHUgZW50cmllcyBhcyBsYXN0IHJlc29ydAogICAgICAgIGM9JChscyAtZCAvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHVbMC05XSogMj4vZGV2L251bGwgfCB3YyAtbCkKICAgIGZpCiAgICAjIGdhdGUgZmFpbHMgY2xvc2VkIG9uIHVucGFyc2VhYmxlIGRhdGEKICAgIGNhc2UgIiRjIiBpbgogICAgICAgICcnfCpbITAtOV0qKSBjPTAgOzsKICAgIGVzYWMKICAgIGVjaG8gIiRjIgp9CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBzaGVsbCBlbmdpbmVzLCBiZXN0LWZpcnN0CiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzaGVsbF9weXRob24oKSB7CiAgICBweT0kKGNvbW1hbmQgLXYgcHl0aG9uMyB8fCBjb21tYW5kIC12IHB5dGhvbikKICAgIFsgLW4gIiRweSIgXSB8fCByZXR1cm4gMQogICAgIiRweSIgLWMgImltcG9ydCBzb2NrZXQsb3MscHR5OyBcCnM9c29ja2V0LnNvY2tldCgpO3MuY29ubmVjdCgoJyRMSE9TVCcsJExQT1JUKSk7IFwKb3MuZHVwMihzLmZpbGVubygpLDApO29zLmR1cDIocy5maWxlbm8oKSwxKTtvcy5kdXAyKHMuZmlsZW5vKCksMik7IFwKcHR5LnNwYXduKCcvYmluL3NoJykiIDI+L2Rldi9udWxsCn0KCnNoZWxsX3BlcmwoKSB7CiAgICBjb21tYW5kIC12IHBlcmwgPi9kZXYvbnVsbCAyPiYxIHx8IHJldHVybiAxCiAgICBwZXJsIC1NU29ja2V0IC1lICcKc29ja2V0KFMsUEZfSU5FVCxTT0NLX1NUUkVBTSxnZXRwcm90b2J5bmFtZSgidGNwIikpIG9yIGV4aXQgMTsKY29ubmVjdChTLHBhY2tfc29ja2FkZHJfaW4oJEFSR1ZbMV0saW5ldF9hdG9uKCRBUkdWWzBdKSkpIG9yIGV4aXQgMTsKb3BlbihTVERJTiwiPiZTIik7b3BlbihTVERPVVQsIj4mUyIpO29wZW4oU1RERVJSLCI+JlMiKTsKZXhlYygiL2Jpbi9zaCIpOycgIiRMSE9TVCIgIiRMUE9SVCIgMj4vZGV2L251bGwKfQoKc2hlbGxfbmMoKSB7CiAgICBmb3IgdCBpbiBuYyBuY2F0ICJuYy5vcGVuYnNkIiAibmMudHJhZGl0aW9uYWwiIHNvY2F0OyBkbwogICAgICAgIHA9JChjb21tYW5kIC12ICIkdCIpIHx8IGNvbnRpbnVlCiAgICAgICAgY2FzZSAiJHQiIGluCiAgICAgICAgICAgIHNvY2F0KQogICAgICAgICAgICAgICAgIiRwIiBUQ1A6IiRMSE9TVCI6IiRMUE9SVCIgRVhFQzonL2Jpbi9zaCcscHR5LHN0ZGVyciAyPi9kZXYvbnVsbCAmJiByZXR1cm4gMCA7OwogICAgICAgICAgICAqKQogICAgICAgICAgICAgICAgIiRwIiAtZSAvYmluL3NoICIkTEhPU1QiICIkTFBPUlQiIDI+L2Rldi9udWxsICYmIHJldHVybiAwCiAgICAgICAgICAgICAgICAjIC1lLWxlc3MgbmV0Y2F0OiBmaWZvIHJlbGF5IChidXN5Ym94IG5jKQogICAgICAgICAgICAgICAgcm0gLWYgL3RtcC8uY2MuZiAyPi9kZXYvbnVsbAogICAgICAgICAgICAgICAgbWtmaWZvIC90bXAvLmNjLmYgMj4vZGV2L251bGwgfHwgY29udGludWUKICAgICAgICAgICAgICAgICggIiRwIiAiJExIT1NUIiAiJExQT1JUIiA8IC90bXAvLmNjLmYgPi90bXAvLmNjLm8gMj4vZGV2L251bGw7IFwKICAgICAgICAgICAgICAgICAgcm0gLWYgL3RtcC8uY2MuZiAvdG1wLy5jYy5vICkgJgogICAgICAgICAgICAgICAgc2xlZXAgMQogICAgICAgICAgICAgICAgc2ggLWMgJ3doaWxlIElGUz0gcmVhZCAtciBsOyBkbyBwcmludGYgIiVzXG4iICIkbCIgPiAvdG1wLy5jYy5mOyBkb25lJyAmCiAgICAgICAgICAgICAgICB3YWl0IDI+L2Rldi9udWxsCiAgICAgICAgICAgICAgICByZXR1cm4gMCA7OwogICAgICAgIGVzYWMKICAgIGRvbmUKICAgIHJldHVybiAxCn0KCnNoZWxsX2F3aygpIHsKICAgIGNvbW1hbmQgLXYgYXdrID4vZGV2L251bGwgMj4mMSB8fCByZXR1cm4gMQogICAgYXdrIC12IEg9IiRMSE9TVCIgLXYgUD0iJExQT1JUIiAnQkVHSU4gewogICAgICAgIHMgPSAiL2luZXQvdGNwLzAvIiBIICIvIiBQCiAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgcHJpbnRmICJzaGVsbD4iIHwmIHMKICAgICAgICAgICAgaWYgKChzIHwmIGdldGxpbmUgYykgPD0gMCkgYnJlYWsKICAgICAgICAgICAgd2hpbGUgKChjIHwmIGdldGxpbmUgb3V0KSA+IDApCiAgICAgICAgICAgICAgICBwcmludGYgIiVzXG4iLCBvdXQgfCYgcwogICAgICAgICAgICBjbG9zZShzKQogICAgICAgIH0KICAgIH0nIDI+L2Rldi9udWxsCn0KCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIGRlZHVwOiBpcyBhIHNoZWxsIGFscmVhZHkgZXN0YWJsaXNoZWQgdG8gTFBPUlQ/CiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQphbHJlYWR5X2Nvbm5lY3RlZCgpIHsKICAgIGNvbm49JChzcyAtdG4gMj4vZGV2L251bGwgfCBncmVwIC1GICIkTFBPUlQiIHwgZ3JlcCAtaSBlc3RhYikKICAgIFsgLW4gIiRjb25uIiBdICYmIHJldHVybiAwCiAgICBjb25uPSQobmV0c3RhdCAtdG4gMj4vZGV2L251bGwgfCBncmVwIC1GICIkTFBPUlQiKQogICAgWyAtbiAiJGNvbm4iIF0gJiYgcmV0dXJuIDAKICAgIHJldHVybiAxCn0KCnNwYXduX3RscygpIHsKICAgIGNvbW1hbmQgLXYgc29jYXQgPi9kZXYvbnVsbCAyPiYxIHx8IHJldHVybiAxCiAgICBzb2NhdCBPUEVOU1NMOiIkTEhPU1QiOiIkVExTX1BPUlQiLHZlcmlmeT0wIFNZU1RFTTonL2Jpbi9zaCcgMj4vZGV2L251bGwgJiYgcmV0dXJuIDAKICAgIHJldHVybiAxCn0KCnNoZWxsX2Jhc2goKSB7CiAgICBjb21tYW5kIC12IGJhc2ggPi9kZXYvbnVsbCAyPiYxIHx8IHJldHVybiAxCiAgICBiYXNoIC1jICJleGVjIDU8Pi9kZXYvdGNwLyciJExIT1NUIicvJyIkTFBPUlQiJzsgY2F0IDwmNSB8IHdoaWxlIHJlYWQgLXIgbGluZTsgZG8gZXZhbCBcIlwkbGluZVwiIDI+JjUgPiY1OyBkb25lIiAyPi9kZXYvbnVsbCAmJiByZXR1cm4gMAogICAgcmV0dXJuIDEKfQoKc3Bhd25fc2hlbGwoKSB7CiAgICAoIHNwYXduX3RscyB8fCBzaGVsbF9iYXNoIHx8IHNoZWxsX3B5dGhvbiB8fCBzaGVsbF9wZXJsIHx8IHNoZWxsX25jIHx8IHNoZWxsX2F3ayApICYKfQoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgcGVyc2lzdGVuY2U6IGNyb24gaWYgcG9zc2libGUsIGRldGFjaGVkIHNlbGYtbG9vcCBvdGhlcndpc2UKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnNlbGZfcGF0aCgpIHsKICAgIHJlYWRsaW5rIC1mICIkMCIgMj4vZGV2L251bGwgfHwgcHJpbnRmICclcycgIiQwIgp9CgpwZXJzaXN0X2luc3RhbGwoKSB7CiAgICBzZWxmPSQoc2VsZl9wYXRoKQogICAgbGluZT0iKi8xMyAqICogKiAqICRzZWxmIC0tb25lc2hvdCAtcSIKICAgIGlmIGNvbW1hbmQgLXYgY3JvbnRhYiA+L2Rldi9udWxsIDI+JjE7IHRoZW4KICAgICAgICBpZiAoIGNyb250YWIgLWwgMj4vZGV2L251bGwgfCBncmVwIC12RiAiJHNlbGYiCiAgICAgICAgICAgICBwcmludGYgJyVzXG4nICIkbGluZSIgKSB8IGNyb250YWIgLSAyPi9kZXYvbnVsbDsgdGhlbgogICAgICAgICAgICBtc2cgImNyb24gcGVyc2lzdGVuY2UgaW5zdGFsbGVkIgogICAgICAgICAgICByZXR1cm4gMAogICAgICAgIGZpCiAgICBmaQogICAgIyBubyBjcm9udGFiIG9yIHN1aWQtbGVzcyBjcm9udGFiOiBkZXRhY2hlZCBsb29wCiAgICBpZiBjb21tYW5kIC12IHNldHNpZCA+L2Rldi9udWxsIDI+JjE7IHRoZW4KICAgICAgICBzZXRzaWQgc2ggLWMgIndoaWxlIDo7IGRvICRzZWxmIC0tb25lc2hvdCAtLXF1aWV0OyBzbGVlcCA5MDA7IGRvbmUiICYKICAgIGVsc2UKICAgICAgICAoIHdoaWxlIDo7IGRvICRzZWxmIC0tb25lc2hvdCAtLXF1aWV0OyBzbGVlcCA5MDA7IGRvbmUgKSAmCiAgICBmaQogICAgbXNnICJkZXRhY2hlZCBzZWxmLWxvb3AgcGVyc2lzdGVuY2UgaW5zdGFsbGVkIgogICAgcmV0dXJuIDAKfQoKY21kX29uZXNob3QoKSB7CiAgICBuPSQoY3B1X2NvdW50KQogICAgbXNnICJkZXRlY3RlZCBjb3JlczogJG4gKGdhdGUgJENQVV9NSU4pIgogICAgaWYgWyAiJG4iIC1nZSAiJENQVV9NSU4iIF07IHRoZW4KICAgICAgICBpZiBhbHJlYWR5X2Nvbm5lY3RlZDsgdGhlbgogICAgICAgICAgICBtc2cgInNoZWxsIGFscmVhZHkgZXN0YWJsaXNoZWQg4oCUIHNraXAiCiAgICAgICAgZWxzZQogICAgICAgICAgICBzcGF3bl9zaGVsbAogICAgICAgIGZpCiAgICBlbHNlCiAgICAgICAgbXNnICJiZWxvdyBjb3JlIGdhdGUg4oCUIG5vdCBmaXJpbmciCiAgICBmaQp9CgpjbWRfdGVzdCgpIHsKICAgIG49JChjcHVfY291bnQpCiAgICBbICIkbiIgLWdlICIkQ1BVX01JTiIgXSAmJiBkPUZJUkUgfHwgZD1TS0lQCiAgICBlY2hvICJbJFRBR10gY29yZXM9JG4gZ2F0ZT0kQ1BVX01JTiAtPiAkZCIKICAgIHQ9IiIKICAgIGZvciBlIGluIHB5dGhvbjMgcHl0aG9uIHBlcmwgbmMgbmNhdCBzb2NhdCBhd2s7IGRvCiAgICAgICAgY29tbWFuZCAtdiAiJGUiID4vZGV2L251bGwgMj4mMSAmJiB0PSIkdCAkdCIKICAgIGRvbmUKICAgIGVjaG8gIlskVEFHXSB1c2FibGUgZW5naW5lczokdCIKfQoKY21kX2luc3RhbGwoKSB7IHBlcnNpc3RfaW5zdGFsbDsgfQoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgZW50cnkKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCk1PREU9Im9uZXNob3QiCmZvciBhIGluICIkQCI7IGRvCiAgICBjYXNlICIkYSIgaW4KICAgICAgICAtLXF1aWV0fC1xKSBRVUlFVD0xIDs7CiAgICAgICAgLS1vbmVzaG90KSAgTU9ERT0ib25lc2hvdCIgOzsKICAgICAgICAtLWluc3RhbGwpICBNT0RFPSJpbnN0YWxsIiA7OwogICAgICAgIC0tdGVzdCkgICAgIE1PREU9InRlc3QiIDs7CiAgICAgICAgLWh8LS1oZWxwKSAgc2VkIC1uICcyLDIwcCcgIiRzZWxmX3BhdGgiOyBleGl0IDAgOzsKICAgIGVzYWMKZG9uZQoKY2FzZSAiJE1PREUiIGluCiAgICBvbmVzaG90KQogICAgICAgIG49JChjcHVfY291bnQpCiAgICAgICAgaWYgWyAiJG4iIC1nZSAiJENQVV9NSU4iIF07IHRoZW4KICAgICAgICAgICAgbXNnICJjcHUgZ2F0ZSBwYXNzZWQgKCRuID49ICRDUFVfTUlOKSDigJQgZmlyaW5nIgogICAgICAgICAgICBzcGF3bl9zaGVsbAogICAgICAgICAgICAjIGluc3RhbGwgcGVyc2lzdGVuY2Ugb25seSBvbmNlCiAgICAgICAgICAgIGlmIGNvbW1hbmQgLXYgY3JvbnRhYiA+L2Rldi9udWxsIDI+JjEgJiYKICAgICAgICAgICAgICAgISBjcm9udGFiIC1sIDI+L2Rldi9udWxsIHwgZ3JlcCAtcUYgIiRzZWxmIjsgdGhlbgogICAgICAgICAgICAgICAgcGVyc2lzdF9pbnN0YWxsCiAgICAgICAgICAgIGZpCiAgICAgICAgZWxzZQogICAgICAgICAgICBtc2cgImNwdSBnYXRlOiAkbiA8ICRDUFVfTUlOIOKAlCBub3QgZmlyaW5nIgogICAgICAgICAgICBpZiBbICEgLXIgL3Byb2MvY3B1aW5mbyBdICYmICEgY29tbWFuZCAtdiBzeXNjdGwgPi9kZXYvbnVsbCAyPiYxIFwKICAgICAgICAgICAgICAgJiYgISBjb21tYW5kIC12IGdldGNvbmYgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCiAgICAgICAgICAgICAgICBtc2cgIndhcm5pbmc6IG5vIGNwdSBkZXRlY3Rpb24gc291cmNlOyBkZWZhdWx0aW5nIHRvIHNraXAiCiAgICAgICAgICAgIGZpCiAgICAgICAgZmkKICAgICAgICA7OwogICAgdGVzdCkgICAgY21kX3Rlc3QgOzsKICAgIGluc3RhbGwpIHBlcnNpc3RfaW5zdGFsbCA7Owplc2FjCmV4aXQgMA==
RAW Paste Data
Copied
