#!/bin/bash
# SKRadius Installation Script
# Copyright (c) 2026 Aanirids Technologies Pvt Ltd
# All rights reserved - Distribution or modification prohibited

_0x1a2b3c=$(echo "IyEvYmluL2Jhc2gKIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiMgU0tSYWRpdXMgLSBJU1AgQ1JNIEluc3RhbGxhdGlvbiBTY3JpcHQKIyBTdGFjayA6IE5vZGUuanMgKEV4cHJlc3MpICsgTXlTUUwgKyBGcmVlUkFESVVTICsgUE0yCiMgT1MgICAgOiBVYnVudHUgMjYuMDQgTFRTCiMgQXV0aG9yOiBBYW5pcmlkcyBUZWNobm9sb2dpZXMgcHZ0IEx0ZC4KIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpldmFsICdyZWFkIC1wICJFbnRlciBVc2VybmFtZToiIHVzZXJuYW1lOwpyZWFkIC1wICJFbnRlciBQYXNzd29yZDoiIHNlY3VyaXR5OwphdXRoUmVzcG9uc2U9JCh3Z2V0IC0tc2VydmVyLXJlc3BvbnNlIC0tc3BpZGVyIC0tYXV0aC1uby1jaGFsbGVuZ2UgXAogIC0taHR0cC11c2VyPSR7dXNlcm5hbWV9IC0taHR0cC1wYXNzd29yZD0ke3NlY3VyaXR5fSBcCiAgaHR0cDovL3NldHVwLmFhbmlyaWRzLmNvbS9za3JhZGl1cy9zZXR1cC9zYW1wbGUudHh0IDI+JjEgfCBncmVwIC1jICdcJydIVFRQLzEuMSAyMDAgT0snXCcnKTsKCmlmIFsgIiRhdXRoUmVzcG9uc2UiID0gIjEiIF07IHRoZW4KCmNoZWNrX3N0YXR1cygpIHsKICBsb2NhbCBleGl0X2NvZGU9JD8KICBsb2NhbCBzdGVwX21lc3NhZ2U9IiQxIgogIGlmIFsgJGV4aXRfY29kZSAtbmUgMCBdOyB0aGVuCiAgICBlY2hvICJFUlJPUjogJHtzdGVwX21lc3NhZ2V9IGZhaWxlZCAoRXhpdCBDb2RlOiAkZXhpdF9jb2RlKS4iCiAgICBleGl0IDEKICBmaQp9CgpydW5fbXlzcWwoKSB7CiAgbG9jYWwgb3V0cHV0CiAgb3V0cHV0PSQoc3VkbyBteXNxbCAiJEAiIDI+JjEpCiAgbG9jYWwgc3RhdHVzPSQ/CiAgZWNobyAiJG91dHB1dCIgfCBncmVwIC12ICJVc2luZyBhIHBhc3N3b3JkIgogIHJldHVybiAkc3RhdHVzCn0KCmNsZWFyOwplY2hvICIjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyIKZWNobyAiIyMjIyMjIyMjIyMjIyMjIyMjIyBJbnN0YWxsYXRpb24gU2NyaXB0ICMjIyMjIyMjIyMjIyMjIyMjIyMiCmVjaG8gIiMgICAgICAgICAgICAgICAgICAgIFNLUmFkaXVzIElTUCBDUk0gICAgICAgICAgICAgICAgICAgICMiCmVjaG8gIiMgICAgICAgICAgICAgIEluc3RhbGxhdGlvbiB8IEJ5IFlvdXIgQ29tcGFueSAgICAgICAgICAgICMiCmVjaG8gIiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSMiCmVjaG8gIiMgICAgICAgICAgICAgICAgICB3d3cuYWFuaXJpZHMuY29tICAgICAgICAgICAgICAgICAgICAgICMiCmVjaG8gIiMgICAgICAgICAgICAgICAgICBzdXBwb3J0QGFhbmlyaWRzLmNvbSAgICAgICAgICAgICAgICAgICMiCmVjaG8gIiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIgplY2hvICIjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyIKCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFNURVAgMSDigJQgU3lzdGVtIHVwZGF0ZSAmIHRpbWV6b25lCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpzdWRvIGFwdC1nZXQgdXBkYXRlOyBjaGVja19zdGF0dXMgIlN5c3RlbSBwYWNrYWdlIGxpc3QgdXBkYXRlIChhcHQtZ2V0IHVwZGF0ZSkiCmVjaG8gIiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIgpyZWFkIC1wICJFbnRlciBUaW1lIFpvbmUgRXg6IEFzaWEvRGhha2EgOiAiIHN5c3RlbVRpbWV6b25lOwplY2hvICIjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyIKc3VkbyB0aW1lZGF0ZWN0bCBzZXQtdGltZXpvbmUgJHtzeXN0ZW1UaW1lem9uZX07IGNoZWNrX3N0YXR1cyAiU2V0dGluZyBzeXN0ZW0gdGltZXpvbmUgdG8gJHtzeXN0ZW1UaW1lem9uZX0iCgpyZWFkIC1wICJFbnRlciBkb21haW4gbmFtZSAoZS5nLiBhZG1pbi55b3VyZG9tYWluLmNvbSk6ICIgc2tyYWRpdXNEb21haW47CgojIFRhcmdldCBpbnN0YWxsYXRpb24gZGlyZWN0b3J5IGZvciB0aGUgd2ViIGFwcCAoZnJvbnRlbmQgYW5kIGJhY2tlbmQpCkFQUF9ESVI9Ii92YXIvd3d3L3NrcmFkaXVzL3NldHVwLXNrcmFkaXVzL2RlcGxveS1hYW5pcmlkcyIKCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFNURVAgMiDigJQgR2VuZXJhdGUgcmFuZG9tIHNlY3JldHMgJiBzdG9yZSBpbiAuZW52IGZpbGUKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1ZG8gbWtkaXIgLXAgL2V0Yy9za3JhZGl1czsgY2hlY2tfc3RhdHVzICJDcmVhdGluZyBjb25maWd1cmF0aW9uIGRpcmVjdG9yeSAvZXRjL3NrcmFkaXVzIgpzdWRvIHRvdWNoIC9ldGMvc2tyYWRpdXMvLmVudjsgY2hlY2tfc3RhdHVzICJDcmVhdGluZyAvZXRjL3NrcmFkaXVzLy5lbnYgZmlsZSIKc3VkbyBjaG1vZCA2MDAgL2V0Yy9za3JhZGl1cy8uZW52OyBjaGVja19zdGF0dXMgIlNldHRpbmcgcGVybWlzc2lvbnMgb24gL2V0Yy9za3JhZGl1cy8uZW52IGZpbGUiCkVOVl9GSUxFPSIvZXRjL3NrcmFkaXVzLy5lbnYiCgpTS1JBRElVU19NWVNRTF9QQVNTPSQob3BlbnNzbCByYW5kIC1iYXNlNjQgMjQgfCB0ciAtZGMgJ0EtWmEtejAtOScgfCBoZWFkIC1jIDIwKQppZiBbIC16ICIkU0tSQURJVVNfTVlTUUxfUEFTUyIgXSB8fCBbICR7I1NLUkFESVVTX01ZU1FMX1BBU1N9IC1sdCAxNiBdOyB0aGVuCiAgIyBGYWxsYmFjazogdXNlIC9kZXYvdXJhbmRvbSBpZiBvcGVuc3NsIGZhaWxzCiAgU0tSQURJVVNfTVlTUUxfUEFTUz0kKGNhdCAvZGV2L3VyYW5kb20gfCB0ciAtZGMgJ0EtWmEtejAtOScgfCBoZWFkIC1jIDIwKQpmaQpjaGVja19zdGF0dXMgIkdlbmVyYXRpbmcgTXlTUUwgcm9vdCBwYXNzd29yZCIKClNLUkFESVVTX0RCX1BBU1M9JChvcGVuc3NsIHJhbmQgLWJhc2U2NCAyNCB8IHRyIC1kYyAnQS1aYS16MC05JyB8IGhlYWQgLWMgMjApCmlmIFsgLXogIiRTS1JBRElVU19EQl9QQVNTIiBdIHx8IFsgJHsjU0tSQURJVVNfREJfUEFTU30gLWx0IDE2IF07IHRoZW4KICBTS1JBRElVU19EQl9QQVNTPSQoY2F0IC9kZXYvdXJhbmRvbSB8IHRyIC1kYyAnQS1aYS16MC05JyB8IGhlYWQgLWMgMjApCmZpCmNoZWNrX3N0YXR1cyAiR2VuZXJhdGluZyBTS1JhZGl1cyBEQiBwYXNzd29yZCIKClNLUkFESVVTX0pXVF9TRUNSRVQ9JChvcGVuc3NsIHJhbmQgLWhleCA2NCk7IGNoZWNrX3N0YXR1cyAiR2VuZXJhdGluZyBKV1Qgc2VjcmV0IGtleSIKClNLUkFESVVTX1JBRElVU19TRUNSRVQ9JChvcGVuc3NsIHJhbmQgLWJhc2U2NCAyNCB8IHRyIC1kYyAnQS1aYS16MC05JyB8IGhlYWQgLWMgMjApCmlmIFsgLXogIiRTS1JBRElVU19SQURJVVNfU0VDUkVUIiBdIHx8IFsgJHsjU0tSQURJVVNfUkFESVVTX1NFQ1JFVH0gLWx0IDE2IF07IHRoZW4KICBTS1JBRElVU19SQURJVVNfU0VDUkVUPSQoY2F0IC9kZXYvdXJhbmRvbSB8IHRyIC1kYyAnQS1aYS16MC05JyB8IGhlYWQgLWMgMjApCmZpCmNoZWNrX3N0YXR1cyAiR2VuZXJhdGluZyBGcmVlUkFESVVTIHNoYXJlZCBzZWNyZXQiCgojIFZlcmlmeSBwYXNzd29yZHMgYXJlIGdlbmVyYXRlZAppZiBbIC16ICIkU0tSQURJVVNfTVlTUUxfUEFTUyIgXTsgdGhlbgogIGVjaG8gIkVSUk9SOiBGYWlsZWQgdG8gZ2VuZXJhdGUgTXlTUUwgcGFzc3dvcmQiCiAgZXhpdCAxCmZpCgplY2hvICJza3JhZGl1c19teXNxbF9wYXNzPSR7U0tSQURJVVNfTVlTUUxfUEFTU30iIHwgc3VkbyB0ZWUgLWEgJEVOVl9GSUxFID4gL2Rldi9udWxsOyBjaGVja19zdGF0dXMgIldyaXRpbmcgbXlzcWxfcGFzcyB0byAuZW52IGZpbGUiCmVjaG8gInNrcmFkaXVzX2RiX3Bhc3M9JHtTS1JBRElVU19EQl9QQVNTfSIgfCBzdWRvIHRlZSAtYSAkRU5WX0ZJTEUgPiAvZGV2L251bGw7IGNoZWNrX3N0YXR1cyAiV3JpdGluZyBkYl9wYXNzIHRvIC5lbnYgZmlsZSIKZWNobyAic2tyYWRpdXNfand0X3NlY3JldD0ke1NLUkFESVVTX0pXVF9TRUNSRVR9IiB8IHN1ZG8gdGVlIC1hICRFTlZfRklMRSA+IC9kZXYvbnVsbDsgY2hlY2tfc3RhdHVzICJXcml0aW5nIGp3dF9zZWNyZXQgdG8gLmVudiBmaWxlIgplY2hvICJza3JhZGl1c19yYWRpdXNfc2VjcmV0PSR7U0tSQURJVVNfUkFESVVTX1NFQ1JFVH0iIHwgc3VkbyB0ZWUgLWEgJEVOVl9GSUxFID4gL2Rldi9udWxsOyBjaGVja19zdGF0dXMgIldyaXRpbmcgcmFkaXVzX3NlY3JldCB0byAuZW52IGZpbGUiCgojIEV4cG9ydCB2YXJpYWJsZXMgZm9yIGN1cnJlbnQgc2hlbGwgc2Vzc2lvbgpleHBvcnQgU0tSQURJVVNfTVlTUUxfUEFTUwpleHBvcnQgU0tSQURJVVNfREJfUEFTUwpleHBvcnQgU0tSQURJVVNfSldUX1NFQ1JFVApleHBvcnQgU0tSQURJVVNfUkFESVVTX1NFQ1JFVAoKZWNobyAiUGFzc3dvcmRzIGdlbmVyYXRlZCBzdWNjZXNzZnVsbHkgKGxlbmd0aCBjaGVjazogJHsjU0tSQURJVVNfTVlTUUxfUEFTU30gY2hhcnMpIgoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgU1RFUCAzIOKAlCBJbnN0YWxsIGNvcmUgc3lzdGVtIHBhY2thZ2VzCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQplY2hvICIjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyIKc3VkbyBhcHQtZ2V0IGluc3RhbGwgLXkgXAogIG5ldC10b29scyBuYW5vIHVuemlwIHZpbSBjdXJsIHVmdyBjcm9uIFwKICBidWlsZC1lc3NlbnRpYWwgZ2NjIG1ha2UgYXV0b2NvbmYgbGliYy1kZXYgcGtnLWNvbmZpZzsgY2hlY2tfc3RhdHVzICJJbnN0YWxsaW5nIGNvcmUgc3lzdGVtIHBhY2thZ2VzIgoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgU1RFUCA0IOKAlCBJbnN0YWxsIE5vZGUuanMgdjI0LjE1LjAgKExUUykgdmlhIE5vZGVTb3VyY2UKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmVjaG8gIiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIgplY2hvICJJbnN0YWxsaW5nIE5vZGUuanMgMjQuMTUuMCBMVFMuLi4iCmVjaG8gIiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIgpjdXJsIC1mc1NMIGh0dHBzOi8vZGViLm5vZGVzb3VyY2UuY29tL3NldHVwXzI0LnggfCBzdWRvIC1FIGJhc2ggLTsgY2hlY2tfc3RhdHVzICJDb25maWd1cmluZyBOb2RlU291cmNlIE5vZGUuanMgMjQueCByZXBvc2l0b3J5IgogCiMgUGluIHRoZSBleGFjdCAyNC4xNS4wIHBhY2thZ2UgYnVpbGQgYXZhaWxhYmxlIGluIHRoZSBOb2RlU291cmNlIHJlcG8uCiMgKFBsYWluICJhcHQtZ2V0IGluc3RhbGwgbm9kZWpzIiB3b3VsZCBncmFiIHRoZSBsYXRlc3QgMjQueCwgd2hpY2ggY2FuCiMgZHJpZnQgcGFzdCAyNC4xNS4wIGFzIE5vZGVTb3VyY2Ugc2hpcHMgbmV3ZXIgcGF0Y2ggcmVsZWFzZXMuKQpOT0RFX1BLRz0kKGFwdC1jYWNoZSBtYWRpc29uIG5vZGVqcyB8IGF3ayAnXCcne3ByaW50ICQzfSdcJycgfCBncmVwICJeMjQuMTUuMCIgfCBoZWFkIC1uMSkKaWYgWyAtbiAiJE5PREVfUEtHIiBdOyB0aGVuCiAgc3VkbyBhcHQtZ2V0IGluc3RhbGwgLXkgbm9kZWpzPSR7Tk9ERV9QS0d9OyBjaGVja19zdGF0dXMgIkluc3RhbGxpbmcgTm9kZS5qcyAke05PREVfUEtHfSIKZWxzZQogIGVjaG8gIldBUk5JTkc6IG5vZGVqcyAyNC4xNS4wIG5vdCBmb3VuZCBpbiBhcHQgcmVwbywgaW5zdGFsbGluZyBsYXRlc3QgMjQueCBpbnN0ZWFkIjsKICBzdWRvIGFwdC1nZXQgaW5zdGFsbCAteSBub2RlanM7IGNoZWNrX3N0YXR1cyAiSW5zdGFsbGluZyBsYXRlc3QgMjQueCBOb2RlLmpzIgpmaQpoYXNoIC1yIDI+L2Rldi9udWxsCm5vZGUgLXYKCmlmICEgY29tbWFuZCAtdiBucG0gPi9kZXYvbnVsbDsgdGhlbgogICAgZWNobyAiV0FSTklORzogbnBtIG5vdCBmb3VuZCwgYXR0ZW1wdGluZyB0byBpbnN0YWxsIG5wbS4uLiIKICAgIHN1ZG8gYXB0LWdldCBpbnN0YWxsIC15IG5wbQogICAgaGFzaCAtciAyPi9kZXYvbnVsbApmaQoKaWYgISBjb21tYW5kIC12IG5wbSA+L2Rldi9udWxsOyB0aGVuCiAgICBlY2hvICJucG0gaW5zdGFsbGF0aW9uIGZhaWxlZCIKICAgIGV4aXQgMQpmaQoKbnBtIC12CgojIEluc3RhbGwgUE0yIGdsb2JhbGx5CnN1ZG8gbnBtIGluc3RhbGwgLWcgcG0yOyBjaGVja19zdGF0dXMgIkluc3RhbGxpbmcgUE0yIGdsb2JhbGx5IgoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgU1RFUCA0LjUg4oCUIEluc3RhbGwgJiBjb25maWd1cmUgUmVkaXMKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmVjaG8gIiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIgplY2hvICJJbnN0YWxsaW5nIFJlZGlzIFNlcnZlciIKZWNobyAiIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMiCnN1ZG8gYXB0LWdldCBpbnN0YWxsIC15IHJlZGlzLXNlcnZlcjsgY2hlY2tfc3RhdHVzICJJbnN0YWxsaW5nIFJlZGlzIFNlcnZlciIKc3VkbyBzeXN0ZW1jdGwgc3RhcnQgcmVkaXMtc2VydmVyOyBjaGVja19zdGF0dXMgIlN0YXJ0aW5nIFJlZGlzIHNlcnZpY2UiCnN1ZG8gc3lzdGVtY3RsIGVuYWJsZSByZWRpcy1zZXJ2ZXI7IGNoZWNrX3N0YXR1cyAiRW5hYmxpbmcgUmVkaXMgb24gYm9vdCIKCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFNURVAgNSDigJQgSW5zdGFsbCAmIGNvbmZpZ3VyZSBNeVNRTAojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZWNobyAiIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMiCmVjaG8gIkluc3RhbGxpbmcgTXlTcWwgRGF0YWJhc2UgU2VydmVyIgplY2hvICIjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyIKc3VkbyBhcHQtZ2V0IGluc3RhbGwgLXkgbXlzcWwtc2VydmVyOyBjaGVja19zdGF0dXMgIkluc3RhbGxpbmcgTXlTUUwgU2VydmVyIgoKTVlTUUxfQ09ORj0iL2V0Yy9teXNxbC9teXNxbC5jb25mLmQvbXlzcWxkLmNuZiIKCmlmICEgc3VkbyBncmVwIC1xICJec2tpcC1sb2ctYmluIiAkTVlTUUxfQ09ORjsgdGhlbgogIGVjaG8gLWUgIlxuIyMgYWRkZWQgYnkgc2tyYWRpdXMgaW5zdGFsbGVyXG4jIyBUbyBza2lwIGJpbiBsb2cgb3IgcmVwbGljYXRpb25cbnNraXAtbG9nLWJpbiIgfCBzdWRvIHRlZSAtYSAkTVlTUUxfQ09ORgpmaQoKUkFNX0dCPSQoYXdrICdcJycvTWVtVG90YWwvIHsgcHJpbnRmICIlLjBmIFxuIiwgJDIvMTAyNC8xMDI0IH0nXCcnIC9wcm9jL21lbWluZm8pCmlmICgoIFJBTV9HQiA8PSAyICkpOyB0aGVuCiAgQlVGRkVSX1BPT0xfU0laRT0iNTEyTSIKICBCVUZGRVJfUE9PTF9JTlNUQU5DRVM9MQplbGlmICgoIFJBTV9HQiA+PSA0ICYmIFJBTV9HQiA8IDEwICkpOyB0aGVuCiAgQlVGRkVSX1BPT0xfU0laRT0iMUciCiAgQlVGRkVSX1BPT0xfSU5TVEFOQ0VTPTIKZWxzZQogIEJVRkZFUl9QT09MX1NJWkU9IjJHIgogIEJVRkZFUl9QT09MX0lOU1RBTkNFUz00CmZpCgpzdWRvIHNlZCAtaSAicy9ebWF4X2Nvbm5lY3Rpb25zXHMqPS4qL21heF9jb25uZWN0aW9ucyA9IDEwMDAwLyIgJE1ZU1FMX0NPTkYKc3VkbyBzZWQgLWkgInMvXmlubm9kYl9idWZmZXJfcG9vbF9zaXplXHMqPS4qL2lubm9kYl9idWZmZXJfcG9vbF9zaXplID0gJEJVRkZFUl9QT09MX1NJWkUvIiAkTVlTUUxfQ09ORgpzdWRvIHNlZCAtaSAicy9eaW5ub2RiX2J1ZmZlcl9wb29sX2luc3RhbmNlc1xzKj0uKi9pbm5vZGJfYnVmZmVyX3Bvb2xfaW5zdGFuY2VzID0gJEJVRkZFUl9QT09MX0lOU1RBTkNFUy8iICRNWVNRTF9DT05GCnN1ZG8gc2VkIC1pICJzL15pbm5vZGJfZmlsZV9wZXJfdGFibGVccyo9LiovaW5ub2RiX2ZpbGVfcGVyX3RhYmxlID0gMS8iICRNWVNRTF9DT05GCnN1ZG8gc2VkIC1pICJzL15pbm5vZGJfbG9nX2ZpbGVfc2l6ZVxzKj0uKi9pbm5vZGJfbG9nX2ZpbGVfc2l6ZSA9IDEyOE0vIiAkTVlTUUxfQ09ORjsgY2hlY2tfc3RhdHVzICJDb25maWd1cmluZyBNeVNRTCBwZXJmb3JtYW5jZSBzZXR0aW5ncyBpbiAkTVlTUUxfQ09ORiIKCnN1ZG8gZ3JlcCAtcSAiXm1heF9jb25uZWN0aW9ucyIgJE1ZU1FMX0NPTkYgfHwgZWNobyAibWF4X2Nvbm5lY3Rpb25zID0gMTAwMDAiIHwgc3VkbyB0ZWUgLWEgJE1ZU1FMX0NPTkYKc3VkbyBncmVwIC1xICJeaW5ub2RiX2J1ZmZlcl9wb29sX3NpemUiICRNWVNRTF9DT05GIHx8IGVjaG8gImlubm9kYl9idWZmZXJfcG9vbF9zaXplID0gJEJVRkZFUl9QT09MX1NJWkUiIHwgc3VkbyB0ZWUgLWEgJE1ZU1FMX0NPTkYKc3VkbyBncmVwIC1xICJeaW5ub2RiX2J1ZmZlcl9wb29sX2luc3RhbmNlcyIgJE1ZU1FMX0NPTkYgfHwgZWNobyAiaW5ub2RiX2J1ZmZlcl9wb29sX2luc3RhbmNlcyA9ICRCVUZGRVJfUE9PTF9JTlNUQU5DRVMiIHwgc3VkbyB0ZWUgLWEgJE1ZU1FMX0NPTkYKc3VkbyBncmVwIC1xICJeaW5ub2RiX2ZpbGVfcGVyX3RhYmxlIiAkTVlTUUxfQ09ORiB8fCBlY2hvICJpbm5vZGJfZmlsZV9wZXJfdGFibGUgPSAxIiB8IHN1ZG8gdGVlIC1hICRNWVNRTF9DT05GCnN1ZG8gZ3JlcCAtcSAiXmlubm9kYl9sb2dfZmlsZV9zaXplIiAkTVlTUUxfQ09ORiB8fCBlY2hvICJpbm5vZGJfbG9nX2ZpbGVfc2l6ZSA9IDEyOE0iIHwgc3VkbyB0ZWUgLWEgJE1ZU1FMX0NPTkYKCmVjaG8gIkNvbmZpZ3VyaW5nIE15U1FMIHJvb3QgcGFzc3dvcmQuLi4iCmVjaG8gIkRFQlVHOiBQYXNzd29yZCBsZW5ndGg6ICR7I1NLUkFESVVTX01ZU1FMX1BBU1N9IGNoYXJzIgoKIyBWZXJpZnkgcGFzc3dvcmQgaXMgbm90IGVtcHR5CmlmIFsgLXogIiRTS1JBRElVU19NWVNRTF9QQVNTIiBdOyB0aGVuCiAgZWNobyAiRVJST1I6IFNLUkFESVVTX01ZU1FMX1BBU1MgaXMgZW1wdHkhIgogIGV4aXQgMQpmaQoKIyBTZXQgTXlTUUwgcm9vdCBwYXNzd29yZApzdWRvIG15c3FsIDw8TVlTUUxfUk9PVF9TQ1JJUFQKQUxURVIgVVNFUiAnXCcncm9vdCdcJydAJ1wnJ2xvY2FsaG9zdCdcJycgSURFTlRJRklFRCBXSVRIIGNhY2hpbmdfc2hhMl9wYXNzd29yZCBCWSAiJHtTS1JBRElVU19NWVNRTF9QQVNTfSI7CkZMVVNIIFBSSVZJTEVHRVM7Ck1ZU1FMX1JPT1RfU0NSSVBUCmNoZWNrX3N0YXR1cyAiQ29uZmlndXJpbmcgTXlTUUwgcm9vdCB1c2VyIHBhc3N3b3JkIgoKc3VkbyBzeXN0ZW1jdGwgcmVzdGFydCBteXNxbDsgY2hlY2tfc3RhdHVzICJSZXN0YXJ0aW5nIE15U1FMIHNlcnZpY2UiCgojIFZlcmlmeSB0aGUgbmV3IHJvb3QgcGFzc3dvcmQgYWN0dWFsbHkgd29ya3MgYmVmb3JlIHByb2NlZWRpbmcKbXlzcWwgLXVyb290IC1wIiR7U0tSQURJVVNfTVlTUUxfUEFTU30iIC1lICJTRUxFQ1QgMTsiID4gL2Rldi9udWxsIDI+JjEKY2hlY2tfc3RhdHVzICJWZXJpZnlpbmcgTXlTUUwgcm9vdCBwYXNzd29yZCB3YXMgc2V0IGNvcnJlY3RseSIKCiMgQ3JlYXRlIGRhdGFiYXNlIGFuZCB1c2VyCnN1ZG8gbXlzcWwgLXVyb290IC1wIiR7U0tSQURJVVNfTVlTUUxfUEFTU30iIDw8TVlTUUxfREJfU0NSSVBUCkNSRUFURSBEQVRBQkFTRSBJRiBOT1QgRVhJU1RTIHNrcmFkaXVzIENIQVJBQ1RFUiBTRVQgdXRmOG1iNCBDT0xMQVRFIHV0ZjhtYjRfdW5pY29kZV9jaTsKQ1JFQVRFIFVTRVIgSUYgTk9UIEVYSVNUUyAnXCcnc2tyYWRpdXMnXCcnQCdcJydsb2NhbGhvc3QnXCcnIElERU5USUZJRUQgQlkgIiR7U0tSQURJVVNfREJfUEFTU30iOwpHUkFOVCBBTEwgUFJJVklMRUdFUyBPTiBza3JhZGl1cy4qIFRPICdcJydza3JhZGl1cydcJydAJ1wnJ2xvY2FsaG9zdCdcJyc7CkZMVVNIIFBSSVZJTEVHRVM7ClNFVCBHTE9CQUwgbG9nX2Jpbl90cnVzdF9mdW5jdGlvbl9jcmVhdG9ycz0xOwpNWVNRTF9EQl9TQ1JJUFQKY2hlY2tfc3RhdHVzICJDcmVhdGluZyBkYXRhYmFzZSBhbmQgdXNlciAnc2tyYWRpdXMnIGluIE15U1FMIgoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgU1RFUCA2IOKAlCBJbXBvcnQgZGF0YWJhc2Ugc2NoZW1hCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQplY2hvICIjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyIKZWNobyAiSW1wb3J0aW5nIERhdGFiYXNlIEludG8gTXlTcWwiCmVjaG8gIiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIgpjZCAvOwpzdWRvIG1rZGlyIHNrcmFkaXVzX2RhdGFiYXNlOyBjaGVja19zdGF0dXMgIkNyZWF0aW5nIHRlbXBvcmFyeSBkYXRhYmFzZSBkaXJlY3RvcnkiCmNkIHNrcmFkaXVzX2RhdGFiYXNlOyBjaGVja19zdGF0dXMgIkVudGVyaW5nIHRlbXBvcmFyeSBkYXRhYmFzZSBkaXJlY3RvcnkiCnN1ZG8gd2dldCAtLWh0dHAtdXNlcj0ke3VzZXJuYW1lfSAtLWh0dHAtcGFzc3dvcmQ9JHtzZWN1cml0eX0gXAogIGh0dHA6Ly9zZXR1cC5hYW5pcmlkcy5jb20vc2tyYWRpdXMvc2V0dXAvY29tbW9uL3NxbC9za3JhZGl1cy5zcWwgXAogIC1xIC1PIHNrcmFkaXVzLnNxbDsgY2hlY2tfc3RhdHVzICJEb3dubG9hZGluZyBNeVNRTCBzY2hlbWEgKHNrcmFkaXVzLnNxbCkiCnN1ZG8gbXlzcWwgLXVza3JhZGl1cyAtRCBza3JhZGl1cyAtcCR7U0tSQURJVVNfREJfUEFTU30gPCBza3JhZGl1cy5zcWw7IGNoZWNrX3N0YXR1cyAiSW1wb3J0aW5nIFNLUmFkaXVzIGRhdGFiYXNlIHNjaGVtYSIKc3VkbyBybSBza3JhZGl1cy5zcWw7CmNkIC4uLzsKc3VkbyBybSAtciBza3JhZGl1c19kYXRhYmFzZTsKY2QgLzsKCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFNURVAgNyDigJQgSW5zdGFsbCAmIGNvbmZpZ3VyZSBGcmVlUkFESVVTCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQplY2hvICIjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyIKZWNobyAiSW5zdGFsbGluZyBGcmVlcmFkaXVzIFNlcnZlciIKZWNobyAiIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMiCnN1ZG8gYXB0LWdldCBpbnN0YWxsIGZyZWVyYWRpdXMgZnJlZXJhZGl1cy1teXNxbCBmcmVlcmFkaXVzLXV0aWxzIC15OyBjaGVja19zdGF0dXMgIkluc3RhbGxpbmcgRnJlZVJBRElVUyBwYWNrYWdlcyIKc3VkbyBjaG1vZCAtUiA3NzcgL2V0Yy9mcmVlcmFkaXVzLzsgY2hlY2tfc3RhdHVzICJNb2RpZnlpbmcgcGVybWlzc2lvbnMgZm9yIC9ldGMvZnJlZXJhZGl1cy8iCgpjZCAvZXRjL2ZyZWVyYWRpdXMvMy4wLzsgY2hlY2tfc3RhdHVzICJFbnRlcmluZyAvZXRjL2ZyZWVyYWRpdXMvMy4wLyBkaXJlY3RvcnkiCnN1ZG8gd2dldCAtLWh0dHAtdXNlcj0ke3VzZXJuYW1lfSAtLWh0dHAtcGFzc3dvcmQ9JHtzZWN1cml0eX0gaHR0cDovL3NldHVwLmFhbmlyaWRzLmNvbS9za3JhZGl1cy9zZXR1cC9jb21tb24vZnJlZXJhZGl1cy9jbGllbnRzLmNvbmYgLXEgLU8gY2xpZW50cy5jb25mOyBjaGVja19zdGF0dXMgIkRvd25sb2FkaW5nIGNsaWVudHMuY29uZiIKc3VkbyB3Z2V0IC0taHR0cC11c2VyPSR7dXNlcm5hbWV9IC0taHR0cC1wYXNzd29yZD0ke3NlY3VyaXR5fSBodHRwOi8vc2V0dXAuYWFuaXJpZHMuY29tL3NrcmFkaXVzL3NldHVwL2NvbW1vbi9mcmVlcmFkaXVzL3JhZGl1c2QuY29uZiAtcSAtTyByYWRpdXNkLmNvbmY7IGNoZWNrX3N0YXR1cyAiRG93bmxvYWRpbmcgcmFkaXVzZC5jb25mIgpzdWRvIHdnZXQgLS1odHRwLXVzZXI9JHt1c2VybmFtZX0gLS1odHRwLXBhc3N3b3JkPSR7c2VjdXJpdHl9IGh0dHA6Ly9zZXR1cC5hYW5pcmlkcy5jb20vc2tyYWRpdXMvc2V0dXAvY29tbW9uL2ZyZWVyYWRpdXMvZGljdGlvbmFyeSAtcSAtTyBkaWN0aW9uYXJ5OyBjaGVja19zdGF0dXMgIkRvd25sb2FkaW5nIGRpY3Rpb25hcnkiCgpjZCAvZXRjL2ZyZWVyYWRpdXMvMy4wL3NpdGVzLWF2YWlsYWJsZS87IGNoZWNrX3N0YXR1cyAiRW50ZXJpbmcgc2l0ZXMtYXZhaWxhYmxlIGRpcmVjdG9yeSIKc3VkbyB3Z2V0IC0taHR0cC11c2VyPSR7dXNlcm5hbWV9IC0taHR0cC1wYXNzd29yZD0ke3NlY3VyaXR5fSBodHRwOi8vc2V0dXAuYWFuaXJpZHMuY29tL3NrcmFkaXVzL3NldHVwL2NvbW1vbi9mcmVlcmFkaXVzL2RlZmF1bHQgLXEgLU8gZGVmYXVsdDsgY2hlY2tfc3RhdHVzICJEb3dubG9hZGluZyBkZWZhdWx0IHNpdGUgY29uZmlnIgpzdWRvIHdnZXQgLS1odHRwLXVzZXI9JHt1c2VybmFtZX0gLS1odHRwLXBhc3N3b3JkPSR7c2VjdXJpdHl9IGh0dHA6Ly9zZXR1cC5hYW5pcmlkcy5jb20vc2tyYWRpdXMvc2V0dXAvY29tbW9uL2ZyZWVyYWRpdXMvaW5uZXItdHVubmVsIC1xIC1PIGlubmVyLXR1bm5lbDsgY2hlY2tfc3RhdHVzICJEb3dubG9hZGluZyBpbm5lci10dW5uZWwgc2l0ZSBjb25maWciCgojIERvd25sb2FkIENPQSBjb25maWcgKG9wdGlvbmFsIC0gbWF5IG5vdCBleGlzdCB5ZXQpCmVjaG8gIkF0dGVtcHRpbmcgdG8gZG93bmxvYWQgQ09BIHNpdGUgY29uZmlnIChvcHRpb25hbCkuLi4iCnN1ZG8gd2dldCAtLWh0dHAtdXNlcj0ke3VzZXJuYW1lfSAtLWh0dHAtcGFzc3dvcmQ9JHtzZWN1cml0eX0gaHR0cDovL3NldHVwLmFhbmlyaWRzLmNvbS9za3JhZGl1cy9zZXR1cC9jb21tb24vZnJlZXJhZGl1cy9jb2EgLXEgLU8gY29hIDI+L2Rldi9udWxsCmlmIFsgJD8gLWVxIDAgXTsgdGhlbgogIGVjaG8gIkNPQSBjb25maWcgZG93bmxvYWRlZCBzdWNjZXNzZnVsbHkiCmVsc2UKICBlY2hvICJDT0EgY29uZmlnIG5vdCBhdmFpbGFibGUgKHRoaXMgaXMgT0sgLSB3aWxsIGJlIGFkZGVkIGluIGZ1dHVyZSkiCmZpCgpjZCAvZXRjL2ZyZWVyYWRpdXMvMy4wL21vZHMtYXZhaWxhYmxlLzsgY2hlY2tfc3RhdHVzICJFbnRlcmluZyBtb2RzLWF2YWlsYWJsZSBkaXJlY3RvcnkiCnN1ZG8gd2dldCAtLWh0dHAtdXNlcj0ke3VzZXJuYW1lfSAtLWh0dHAtcGFzc3dvcmQ9JHtzZWN1cml0eX0gaHR0cDovL3NldHVwLmFhbmlyaWRzLmNvbS9za3JhZGl1cy9zZXR1cC9jb21tb24vZnJlZXJhZGl1cy9zcWwgLXEgLU8gc3FsOyBjaGVja19zdGF0dXMgIkRvd25sb2FkaW5nIHNxbCBtb2QgY29uZmlnIgoKY2QgL2V0Yy9mcmVlcmFkaXVzLzMuMC9tb2RzLWNvbmZpZy9zcWwvbWFpbi9teXNxbC87IGNoZWNrX3N0YXR1cyAiRW50ZXJpbmcgbXlzcWwgbW9kLWNvbmZpZyBkaXJlY3RvcnkiCnN1ZG8gd2dldCAtLWh0dHAtdXNlcj0ke3VzZXJuYW1lfSAtLWh0dHAtcGFzc3dvcmQ9JHtzZWN1cml0eX0gaHR0cDovL3NldHVwLmFhbmlyaWRzLmNvbS9za3JhZGl1cy9zZXR1cC9jb21tb24vZnJlZXJhZGl1cy9xdWVyaWVzLmNvbmYgLXEgLU8gcXVlcmllcy5jb25mOyBjaGVja19zdGF0dXMgIkRvd25sb2FkaW5nIHF1ZXJpZXMuY29uZiIKCmNkIC87CgojIEVuYWJsZSBTUUwgbW9kdWxlICYgc2V0IHBlcm1pc3Npb25zCnN1ZG8gbG4gLXNmIC9ldGMvZnJlZXJhZGl1cy8zLjAvbW9kcy1hdmFpbGFibGUvc3FsIC9ldGMvZnJlZXJhZGl1cy8zLjAvbW9kcy1lbmFibGVkL3NxbDsgY2hlY2tfc3RhdHVzICJFbmFibGluZyBTUUwgbW9kdWxlIHN5bWxpbmsiCnN1ZG8gY2hncnAgLWggZnJlZXJhZCAvZXRjL2ZyZWVyYWRpdXMvMy4wL21vZHMtYXZhaWxhYmxlL3NxbDsgY2hlY2tfc3RhdHVzICJTZXR0aW5nIGdyb3VwIGZvciBzcWwgbW9kLWF2YWlsYWJsZSIKc3VkbyBjaG93biBmcmVlcmFkOmZyZWVyYWQgL2V0Yy9mcmVlcmFkaXVzLzMuMC9tb2RzLWVuYWJsZWQvc3FsOyBjaGVja19zdGF0dXMgIlNldHRpbmcgb3duZXIgZm9yIHNxbCBtb2QtZW5hYmxlZCIKc3VkbyBjaG1vZCAtUiA3NTEgL2V0Yy9mcmVlcmFkaXVzLzsgY2hlY2tfc3RhdHVzICJBcHBseWluZyBmaW5hbCBwZXJtaXNzaW9ucyB0byAvZXRjL2ZyZWVyYWRpdXMvIgoKIyBJbmplY3QgREIgcGFzc3dvcmQgaW50byBGcmVlUkFESVVTIFNRTCBtb2R1bGUKRlJFRVJBRElVU19TUUxfQ09ORj0iL2V0Yy9mcmVlcmFkaXVzLzMuMC9tb2RzLWVuYWJsZWQvc3FsIgojIFJlcGxhY2UgYm90aCBvbGQgaGFyZGNvZGVkIHBhc3N3b3JkcyBhbmQgZW1wdHkgcGFzc3dvcmRzCnN1ZG8gc2VkIC1pICJzfHBhc3N3b3JkID0gXCIvOHI5aUo4R091VDlMVENhXCJ8cGFzc3dvcmQgPSBcIiR7U0tSQURJVVNfREJfUEFTU31cInxnIiAiJEZSRUVSQURJVVNfU1FMX0NPTkYiCnN1ZG8gc2VkIC1pICJzfHBhc3N3b3JkID0gXCJcInxwYXNzd29yZCA9IFwiJHtTS1JBRElVU19EQl9QQVNTfVwifGciICIkRlJFRVJBRElVU19TUUxfQ09ORiIKY2hlY2tfc3RhdHVzICJJbmplY3RpbmcgREIgcGFzc3dvcmQgaW50byBGcmVlUkFESVVTIFNRTCBjb25maWciCgojIEluamVjdCBSQURJVVMgc2hhcmVkIHNlY3JldCBpbnRvIGNsaWVudHMuY29uZgpzdWRvIHNlZCAtaSAic3xzZWNyZXQgPSAuKnxzZWNyZXQgPSAke1NLUkFESVVTX1JBRElVU19TRUNSRVR9fCIgL2V0Yy9mcmVlcmFkaXVzLzMuMC9jbGllbnRzLmNvbmY7IGNoZWNrX3N0YXR1cyAiSW5qZWN0aW5nIEZyZWVSQURJVVMgc2hhcmVkIHNlY3JldCIKCnN1ZG8gc2VydmljZSBmcmVlcmFkaXVzIHJlc3RhcnQ7IGNoZWNrX3N0YXR1cyAiUmVzdGFydGluZyBGcmVlUkFESVVTIHNlcnZpY2UiCgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBTVEVQIDgg4oCUIERlcGxveSBTS1JhZGl1cyBhcHAgKGJhY2tlbmQgKyBmcm9udGVuZCkKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmVjaG8gIiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIgplY2hvICJJbnN0YWxsaW5nIFNLUmFkaXVzIFdlYiBBcHAiCmVjaG8gIiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIgpzdWRvIG1rZGlyIC1wIC92YXIvd3d3L3NrcmFkaXVzOyBjaGVja19zdGF0dXMgIkNyZWF0aW5nIC92YXIvd3d3L3NrcmFkaXVzIGRpcmVjdG9yeSIKY2QgL3Zhci93d3cvc2tyYWRpdXM7IGNoZWNrX3N0YXR1cyAiRW50ZXJpbmcgL3Zhci93d3cvc2tyYWRpdXMgZGlyZWN0b3J5IgoKc3VkbyB3Z2V0IC0taHR0cC11c2VyPSR7dXNlcm5hbWV9IC0taHR0cC1wYXNzd29yZD0ke3NlY3VyaXR5fSBcCiAgaHR0cDovL3NldHVwLmFhbmlyaWRzLmNvbS9za3JhZGl1cy9zZXR1cC9pbnN0YWxsL3ppcC9za3JhZGl1cy56aXAgXAogIC1PIHNrcmFkaXVzLnppcDsgY2hlY2tfc3RhdHVzICJEb3dubG9hZGluZyBTS1JhZGl1cyBhcHAgYXJjaGl2ZSAoc2tyYWRpdXMuemlwKSIKc3VkbyB1bnppcCAtcSAtbyBza3JhZGl1cy56aXA7IGNoZWNrX3N0YXR1cyAiRXh0cmFjdGluZyBTS1JhZGl1cyB6aXAgYXJjaGl2ZSIKc3VkbyBybSBza3JhZGl1cy56aXA7CgojIFppcCBleHRyYWN0cyB0bzoKIyAgICRBUFBfRElSL2JhY2tlbmQgICAoTm9kZS5qcyBBUEkg4oCUIGJhY2tlbmQvZGlzdC9zdGFydC5qcykKIyAgICRBUFBfRElSL2Zyb250ZW5kL2Rpc3QgIChwcmUtYnVpbHQgc3RhdGljIGZpbGVzLCBzZXJ2ZWQgYnkgTmdpbngpCgojIENyZWF0ZSB1cGxvYWQgZGlyZWN0b3JpZXMgaW5zaWRlIGJhY2tlbmQKc3VkbyBta2RpciAtcCAiJEFQUF9ESVIvdXBsb2Fkcy9kb2NzIjsgY2hlY2tfc3RhdHVzICJDcmVhdGluZyB1cGxvYWRzL2RvY3MgZGlyZWN0b3J5IgoKIyBJbnN0YWxsIE5vZGUgZGVwZW5kZW5jaWVzIOKAlCBiYWNrZW5kIG9ubHksIGZyb250ZW5kL2Rpc3QgaXMgcHJlLWJ1aWx0CmNkICIkQVBQX0RJUi9iYWNrZW5kIjsgY2hlY2tfc3RhdHVzICJFbnRlcmluZyBiYWNrZW5kIGRpcmVjdG9yeSIKc3VkbyBucG0gaW5zdGFsbCAtLW9taXQ9ZGV2OyBjaGVja19zdGF0dXMgIkluc3RhbGxpbmcgYmFja2VuZCBucG0gcGFja2FnZXMiCgojIFdyaXRlIGFwcCAuZW52IGludG8gYmFja2VuZC8g4oCUIGFsbCBrZXlzIG1hdGNoIHlvdXIgcmVhbCAuZW52IGV4YWN0bHkKQVBQX0VOVl9GSUxFPSIkQVBQX0RJUi9iYWNrZW5kLy5lbnYiCnN1ZG8gdGVlICIkQVBQX0VOVl9GSUxFIiA+IC9kZXYvbnVsbCA8PEVPRgpOT0RFX0VOVj1wcm9kdWN0aW9uCgojIOKUgOKUgCBEYXRhYmFzZSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKREJfVVNFUj1za3JhZGl1cwpEQl9QQVNTV09SRD0ke1NLUkFESVVTX0RCX1BBU1N9CkRCX05BTUU9c2tyYWRpdXMKREJfSE9TVD1sb2NhbGhvc3QKREJfUE9SVD0zMzA2ClNFUVVFTElaRV9BTFRFUj1mYWxzZQoKIyDilIDilIAgUkFESVVTIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgApSQURJVVNfU0VDUkVUPSR7U0tSQURJVVNfUkFESVVTX1NFQ1JFVH0KCiMg4pSA4pSAIEZyb250ZW5kIG9yaWdpbiAoQ09SUykg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSACkZST05URU5EX1VSTD1odHRwczovLyR7c2tyYWRpdXNEb21haW59CgojIOKUgOKUgCBUUi0wNjkgQUNTIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgApUUjA2OV9CQVNFX1VSTD1odHRwOi8vQ0hBTkdFX01FOjc1NTcKCiMg4pSA4pSAIEpXVCDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKSldUX1NFQ1JFVD0ke1NLUkFESVVTX0pXVF9TRUNSRVR9CkpXVF9FWFBJUkVTX0lOPTI0aAoKIyDilIDilIAgTGljZW5zZSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKIyBMSUNFTlNFX0tFWT0KTElDRU5TRV9TRVJWRVJfVVJMPWh0dHA6Ly8xMC4xMC4xLjEwMzo1MDEwCkxJQ0VOU0VfVkFMSURBVElPTl9USU1FT1VUX01TPTEwMDAwCkxJQ0VOU0VfVkFMSURBVElPTl9DUk9OPTAgKi82ICogKiAqCgojIOKUgOKUgCBGaWxlIHVwbG9hZHMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAClVQTE9BRF9CQVNFX1BBVEg9JEFQUF9ESVIvdXBsb2FkcwpET0NVTUVOVFNfVVBMT0FEX1BBVEg9JEFQUF9ESVIvdXBsb2Fkcy9kb2NzCgojIOKUgOKUgCBSYXRlIExpbWl0aW5nIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgApFTkFCTEVfUkFURV9MSU1JVElORz10cnVlCkVOQUJMRV9BVVRIX1JBVEVfTElNSVQ9dHJ1ZQpFTkFCTEVfT1RQX1JBVEVfTElNSVQ9dHJ1ZQpFTkFCTEVfUEFZTUVOVF9SQVRFX0xJTUlUPXRydWUKRU5BQkxFX1VQTE9BRF9SQVRFX0xJTUlUPXRydWUKRU5BQkxFX1NFQVJDSF9SQVRFX0xJTUlUPXRydWUKU1RBRkZfSVBfQUxMT1dMSVNUPQoKIyDilIDilIAgUmVkaXMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAClJFRElTX0hPU1Q9bG9jYWxob3N0ClJFRElTX1BPUlQ9NjM3OQpSRURJU19FTkFCTEVEPXRydWUKRU9GCgpzdWRvIGNobW9kIDYwMCAiJEFQUF9FTlZfRklMRSI7IGNoZWNrX3N0YXR1cyAiU2V0dGluZyBwZXJtaXNzaW9ucyBvbiBiYWNrZW5kIC5lbnYiCnN1ZG8gY2hvd24gLVIgd3d3LWRhdGE6d3d3LWRhdGEgIiRBUFBfRElSIjsgY2hlY2tfc3RhdHVzICJTZXR0aW5nIG93bmVyIHRvIHd3dy1kYXRhIGZvciBhcHAgZmlsZXMiCgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBTVEVQIDkg4oCUIENvbmZpZ3VyZSBQTTIKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmVjaG8gIiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIgplY2hvICJDb25maWd1cmluZyBQTTIgcHJvY2VzcyBtYW5hZ2VyLi4uIgplY2hvICIjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyIKIyBlY29zeXN0ZW0uY29uZmlnLmpzLCBjcm9uLmpzLCBhbmQgcGFja2FnZS5qc29uIGFyZSBhbHJlYWR5IGluY2x1ZGVkIGluIHRoZSB6aXAKUE0yX0NPTkY9IiRBUFBfRElSL2JhY2tlbmQvZWNvc3lzdGVtLmNvbmZpZy5qcyIKCiMgVmVyaWZ5IGVjb3N5c3RlbS5jb25maWcuanMgZXhpc3RzIGluIHRoZSBleHRyYWN0ZWQgZmlsZXMKaWYgWyAhIC1mICIkUE0yX0NPTkYiIF07IHRoZW4KICBlY2hvICJFUlJPUjogZWNvc3lzdGVtLmNvbmZpZy5qcyBub3QgZm91bmQgaW4gZXh0cmFjdGVkIHppcCBhdCAkUE0yX0NPTkYiCiAgZXhpdCAxCmZpCgpzdWRvIG1rZGlyIC1wIC92YXIvbG9nL3NrcmFkaXVzOyBjaGVja19zdGF0dXMgIkNyZWF0aW5nIFBNMiBsb2cgZGlyZWN0b3J5IgpzdWRvIGNob3duIC1SIHd3dy1kYXRhOnd3dy1kYXRhIC92YXIvbG9nL3NrcmFkaXVzOyBjaGVja19zdGF0dXMgIlNldHRpbmcgb3duZXIgZm9yIFBNMiBsb2cgZGlyZWN0b3J5IgoKIyBDcmVhdGUgUE0yIGhvbWUgZGlyZWN0b3J5IGZvciB3d3ctZGF0YSB1c2VyCiMgd3d3LWRhdGEgaG9tZSBpcyAvdmFyL3d3dywgc28gUE0yIHVzZXMgL3Zhci93d3cvLnBtMiBmb3IgcnVudGltZSBkYXRhClBNMl9IT01FX0RJUj0iL3Zhci93d3cvLnBtMiIKc3VkbyBta2RpciAtcCAiJFBNMl9IT01FX0RJUiI7IGNoZWNrX3N0YXR1cyAiQ3JlYXRpbmcgUE0yIGhvbWUgZGlyZWN0b3J5ICgkUE0yX0hPTUVfRElSKSIKc3VkbyBjaG93biAtUiB3d3ctZGF0YTp3d3ctZGF0YSAiJFBNMl9IT01FX0RJUiI7IGNoZWNrX3N0YXR1cyAiU2V0dGluZyBvd25lciBmb3IgUE0yIGhvbWUgZGlyZWN0b3J5IgoKIyBucG0gKGludm9rZWQgaW50ZXJuYWxseSBieSAicG0yIGluc3RhbGwiKSBhbHNvIHJlc29sdmVzIGl0cyBjYWNoZSBkaXIgdmlhCiMgJEhPTUUgLT4gL3Zhci93d3cvLm5wbS4gRW5zdXJlIGl0IGV4aXN0cyBhbmQgaXMgb3duZWQgYnkgd3d3LWRhdGEsIHNhbWUKIyByZWFzb25pbmcgYXMgUE0yX0hPTUVfRElSIGFib3ZlIOKAlCBvdGhlcndpc2UgInBtMiBpbnN0YWxsIHBtMi1sb2dyb3RhdGUiCiMgZmFpbHMgd2l0aCBFQUNDRVMgdHJ5aW5nIHRvIGNyZWF0ZSAvdmFyL3d3dy8ubnBtLgpzdWRvIG1rZGlyIC1wIC92YXIvd3d3Ly5ucG07IGNoZWNrX3N0YXR1cyAiQ3JlYXRpbmcgbnBtIGNhY2hlIGRpcmVjdG9yeSAoL3Zhci93d3cvLm5wbSkiCnN1ZG8gY2hvd24gLVIgd3d3LWRhdGE6d3d3LWRhdGEgL3Zhci93d3cvLm5wbTsgY2hlY2tfc3RhdHVzICJTZXR0aW5nIG93bmVyIGZvciBucG0gY2FjaGUgZGlyZWN0b3J5IgoKIyBGYWlsc2FmZTogaWYgYW55dGhpbmcgdW5kZXIgL3Zhci93d3cgd2FzIGV2ZXIgdG91Y2hlZCBhcyByb290IChlLmcuIGR1cmluZwojIGEgcHJldmlvdXMgZmFpbGVkIHJ1biksIHJlY2xhaW0gb3duZXJzaGlwIGZvciB3d3ctZGF0YSBiZWZvcmUgcHJvY2VlZGluZy4Kc3VkbyBjaG93biAtUiB3d3ctZGF0YTp3d3ctZGF0YSAvdmFyL3d3dzsgY2hlY2tfc3RhdHVzICJFbnN1cmluZyAvdmFyL3d3dyBpcyBmdWxseSBvd25lZCBieSB3d3ctZGF0YSIKCiMgQ2xlYW4gdXAgYW55IGxlZnRvdmVyIHN0YXRlIGZyb20gYSBwcmV2aW91cy9wYXJ0aWFsIGluc3RhbGwgcnVuOgojICAtIGEgc3RyYXkgdW5zdXBlcnZpc2VkIG5vZGUgcHJvY2VzcyAoYnlwYXNzaW5nIFBNMiBlbnRpcmVseSkKIyAgLSBhIHN0YWxlIFBNMiBlbnRyeSBmb3IgInNrcmFkaXVzLWFwaSIgZnJvbSBhbiBlYXJsaWVyIGF0dGVtcHQKIyBCb3RoIGFyZSBzYWZlIG5vLW9wcyBvbiBhIGZyZXNoIGluc3RhbGwuCmVjaG8gIkNsZWFuaW5nIHVwIGFueSBwcmV2aW91cyBTS1JhZGl1cyBwcm9jZXNzIHN0YXRlLi4uIgpzdWRvIHBraWxsIC1mICJkaXN0L3N0YXJ0LmpzIiAyPi9kZXYvbnVsbCB8fCB0cnVlCnN1ZG8gLXUgd3d3LWRhdGEgUE0yX0hPTUU9IiRQTTJfSE9NRV9ESVIiIHBtMiBkZWxldGUgc2tyYWRpdXMtYXBpIDI+L2Rldi9udWxsIHx8IHRydWUKc3VkbyAtdSB3d3ctZGF0YSBQTTJfSE9NRT0iJFBNMl9IT01FX0RJUiIgcG0yIGRlbGV0ZSBza3JhZGl1cy1jcm9uIDI+L2Rldi9udWxsIHx8IHRydWUKc3VkbyAtdSB3d3ctZGF0YSBQTTJfSE9NRT0iJFBNMl9IT01FX0RJUiIgcG0yIGtpbGwgMj4vZGV2L251bGwgfHwgdHJ1ZQoKIyBDb25maWd1cmUgUE0yIHN0YXJ0dXAgc2VydmljZSBCRUZPUkUgc3RhcnRpbmcgYXBwcwojICgtLWhwIG11c3QgbWF0Y2ggd3d3LWRhdGEgaG9tZTogL3Zhci93d3cpCmVjaG8gIkNvbmZpZ3VyaW5nIFBNMiBzdGFydHVwIHN5c3RlbSBzZXJ2aWNlLi4uIgpzdWRvIGVudiBQQVRIPSIkUEFUSDovdXNyL2JpbiIgUE0yX0hPTUU9IiRQTTJfSE9NRV9ESVIiIHBtMiBzdGFydHVwIHN5c3RlbWQgLXUgd3d3LWRhdGEgLS1ocCAvdmFyL3d3dzsgY2hlY2tfc3RhdHVzICJDb25maWd1cmluZyBQTTIgc3RhcnR1cCBzeXN0ZW0gc2VydmljZSIKCiMgU3RhcnQgYXBwIHZpYSBQTTIKc3VkbyAtdSB3d3ctZGF0YSBQTTJfSE9NRT0iJFBNMl9IT01FX0RJUiIgcG0yIHN0YXJ0ICIkQVBQX0RJUi9iYWNrZW5kL2Vjb3N5c3RlbS5jb25maWcuanMiOyBjaGVja19zdGF0dXMgIlN0YXJ0aW5nIFNLUmFkaXVzIGFwcCB2aWEgUE0yIgoKIyBWZXJpZnkgdGhlIGFwcCBhY3R1YWxseSBjYW1lIG9ubGluZSDigJQgInBtMiBzdGFydCIgZXhpdHMgMCBldmVuIGlmIHRoZSBhcHAKIyBpbW1lZGlhdGVseSBjcmFzaC1sb29wcyAoYmFkIC5lbnYsIERCIGNvbm5lY3Rpb24gZmFpbHVyZSwgc3ludGF4IGVycm9yLCBldGMuKSwKIyBzbyBhIGNsZWFuIGV4aXQgY29kZSBhbG9uZSBkb2VzIE5PVCBtZWFuIHRoZSBhcHAgaXMgcnVubmluZy4Kc2xlZXAgMwoKQ0hFQ0tfU0NSSVBUPSIvdG1wL3BtMl9jaGVja19zdGF0dXMuanMiCnN1ZG8gdGVlICIkQ0hFQ0tfU0NSSVBUIiA+IC9kZXYvbnVsbCA8PEVPRgpsZXQgZCA9ICIiOwpwcm9jZXNzLnN0ZGluLm9uKCJkYXRhIiwgZnVuY3Rpb24oYykgeyBkICs9IGM7IH0pOwpwcm9jZXNzLnN0ZGluLm9uKCJlbmQiLCBmdW5jdGlvbigpIHsKICB0cnkgewogICAgdmFyIGogPSBKU09OLnBhcnNlKGQpOwogICAgdmFyIGFwcCA9IG51bGw7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGoubGVuZ3RoOyBpKyspIHsKICAgICAgaWYgKGpbaV0ubmFtZSA9PT0gInNrcmFkaXVzLWFwaSIpIHsgYXBwID0galtpXTsgYnJlYWs7IH0KICAgIH0KICAgIGNvbnNvbGUubG9nKGFwcCA/IGFwcC5wbTJfZW52LnN0YXR1cyA6ICJub3RfZm91bmQiKTsKICB9IGNhdGNoIChlKSB7CiAgICBjb25zb2xlLmxvZygicGFyc2VfZXJyb3IiKTsKICB9Cn0pOwpFT0YKCkFQUF9QTTJfU1RBVFVTPSQoc3VkbyAtdSB3d3ctZGF0YSBQTTJfSE9NRT0iJFBNMl9IT01FX0RJUiIgcG0yIGpsaXN0IHwgbm9kZSAiJENIRUNLX1NDUklQVCIpCnN1ZG8gcm0gLWYgIiRDSEVDS19TQ1JJUFQiCgppZiBbICIkQVBQX1BNMl9TVEFUVVMiICE9ICJvbmxpbmUiIF07IHRoZW4KICBlY2hvICJFUlJPUjogU0tSYWRpdXMgYXBwIGlzIG5vdCBvbmxpbmUgKHN0YXR1czogJHtBUFBfUE0yX1NUQVRVU30pLiIKICBlY2hvICJSZWNlbnQgbG9nczoiCiAgc3VkbyAtdSB3d3ctZGF0YSBQTTJfSE9NRT0iJFBNMl9IT01FX0RJUiIgcG0yIGxvZ3Mgc2tyYWRpdXMtYXBpIC0tbGluZXMgMzAgLS1ub3N0cmVhbQogIGV4aXQgMQpmaQplY2hvICJTS1JhZGl1cyBhcHAgY29uZmlybWVkIG9ubGluZSB2aWEgUE0yLiIKCiMgSW5zdGFsbCBQTTIgbG9nIHJvdGF0aW9uIG1vZHVsZSB0byBwcmV2ZW50IHVuYm91bmRlZCBsb2cgZ3Jvd3RoCnN1ZG8gLXUgd3d3LWRhdGEgUE0yX0hPTUU9IiRQTTJfSE9NRV9ESVIiIHBtMiBpbnN0YWxsIHBtMi1sb2dyb3RhdGU7IGNoZWNrX3N0YXR1cyAiSW5zdGFsbGluZyBwbTItbG9ncm90YXRlIG1vZHVsZSIKc3VkbyAtdSB3d3ctZGF0YSBQTTJfSE9NRT0iJFBNMl9IT01FX0RJUiIgcG0yIHNldCBwbTItbG9ncm90YXRlOm1heF9zaXplIDEwTTsgY2hlY2tfc3RhdHVzICJDb25maWd1cmluZyBwbTItbG9ncm90YXRlIG1heF9zaXplIgpzdWRvIC11IHd3dy1kYXRhIFBNMl9IT01FPSIkUE0yX0hPTUVfRElSIiBwbTIgc2V0IHBtMi1sb2dyb3RhdGU6cmV0YWluIDc7IGNoZWNrX3N0YXR1cyAiQ29uZmlndXJpbmcgcG0yLWxvZ3JvdGF0ZSByZXRhaW4iCnN1ZG8gLXUgd3d3LWRhdGEgUE0yX0hPTUU9IiRQTTJfSE9NRV9ESVIiIHBtMiBzZXQgcG0yLWxvZ3JvdGF0ZTpjb21wcmVzcyB0cnVlOyBjaGVja19zdGF0dXMgIkNvbmZpZ3VyaW5nIHBtMi1sb2dyb3RhdGUgY29tcHJlc3MiCnN1ZG8gLXUgd3d3LWRhdGEgUE0yX0hPTUU9IiRQTTJfSE9NRV9ESVIiIHBtMiBzZXQgcG0yLWxvZ3JvdGF0ZTpkYXRlRm9ybWF0ICJZWVlZLU1NLUREX0hILW1tLXNzIjsgY2hlY2tfc3RhdHVzICJDb25maWd1cmluZyBwbTItbG9ncm90YXRlIGRhdGVGb3JtYXQiCnN1ZG8gLXUgd3d3LWRhdGEgUE0yX0hPTUU9IiRQTTJfSE9NRV9ESVIiIHBtMiBzZXQgcG0yLWxvZ3JvdGF0ZTpyb3RhdGVJbnRlcnZhbCAiMCAwICogKiAqIjsgY2hlY2tfc3RhdHVzICJDb25maWd1cmluZyBwbTItbG9ncm90YXRlIHJvdGF0ZUludGVydmFsIgoKc3VkbyAtdSB3d3ctZGF0YSBQTTJfSE9NRT0iJFBNMl9IT01FX0RJUiIgcG0yIHNhdmU7IGNoZWNrX3N0YXR1cyAiU2F2aW5nIFBNMiBwcm9jZXNzIGxpc3QiCgojIFN0b3AgUE0yIGRhZW1vbiBncmFjZWZ1bGx5IGJlZm9yZSBsZXR0aW5nIHN5c3RlbWQgdGFrZSBvdmVyCmVjaG8gIlN0b3BwaW5nIFBNMiBkYWVtb24gdG8gdHJhbnNmZXIgY29udHJvbCB0byBzeXN0ZW1kLi4uIgpzdWRvIC11IHd3dy1kYXRhIFBNMl9IT01FPSIkUE0yX0hPTUVfRElSIiBwbTIga2lsbAoKIyBFbmFibGUgYW5kIHN0YXJ0IFBNMiBzeXN0ZW1kIHNlcnZpY2UKc3VkbyBzeXN0ZW1jdGwgZGFlbW9uLXJlbG9hZDsgY2hlY2tfc3RhdHVzICJSZWxvYWRpbmcgc3lzdGVtZCBkYWVtb24iCnN1ZG8gc3lzdGVtY3RsIGVuYWJsZSBwbTItd3d3LWRhdGE7IGNoZWNrX3N0YXR1cyAiRW5hYmxpbmcgUE0yIHNlcnZpY2Ugb24gYm9vdCIKc3VkbyBzeXN0ZW1jdGwgc3RhcnQgcG0yLXd3dy1kYXRhOyBjaGVja19zdGF0dXMgIlN0YXJ0aW5nIFBNMiBzeXN0ZW1kIHNlcnZpY2UiCgojIFdhaXQgZm9yIHNlcnZpY2UgdG8gc3RhcnQKc2xlZXAgMwoKIyBWZXJpZnkgYXBwcyBjYW1lIGJhY2sgb25saW5lIHZpYSBzeXN0ZW1kCkNIRUNLX1NDUklQVF8yPSIvdG1wL3BtMl9jaGVja19zeXN0ZW1kLmpzIgpzdWRvIHRlZSAiJENIRUNLX1NDUklQVF8yIiA+IC9kZXYvbnVsbCA8PCdOT0RFU0NSSVBUJwpsZXQgZCA9ICIiOwpwcm9jZXNzLnN0ZGluLm9uKCJkYXRhIiwgZnVuY3Rpb24oYykgeyBkICs9IGM7IH0pOwpwcm9jZXNzLnN0ZGluLm9uKCJlbmQiLCBmdW5jdGlvbigpIHsKICB0cnkgewogICAgdmFyIGogPSBKU09OLnBhcnNlKGQpOwogICAgdmFyIGFwcCA9IG51bGw7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGoubGVuZ3RoOyBpKyspIHsKICAgICAgaWYgKGpbaV0ubmFtZSA9PT0gInNrcmFkaXVzLWFwaSIpIHsgYXBwID0galtpXTsgYnJlYWs7IH0KICAgIH0KICAgIGNvbnNvbGUubG9nKGFwcCA/IGFwcC5wbTJfZW52LnN0YXR1cyA6ICJub3RfZm91bmQiKTsKICB9IGNhdGNoIChlKSB7CiAgICBjb25zb2xlLmxvZygicGFyc2VfZXJyb3IiKTsKICB9Cn0pOwpOT0RFU0NSSVBUCgpBUFBfUE0yX1NUQVRVUz0kKHN1ZG8gLXUgd3d3LWRhdGEgUE0yX0hPTUU9IiRQTTJfSE9NRV9ESVIiIHBtMiBqbGlzdCB8IG5vZGUgIiRDSEVDS19TQ1JJUFRfMiIpCnN1ZG8gcm0gLWYgIiRDSEVDS19TQ1JJUFRfMiIKCmlmIFsgIiRBUFBfUE0yX1NUQVRVUyIgIT0gIm9ubGluZSIgXTsgdGhlbgogIGVjaG8gIldBUk5JTkc6IEFwcHMgbWF5IG5vdCBoYXZlIHN0YXJ0ZWQgdmlhIHN5c3RlbWQuIFN0YXR1czogJHtBUFBfUE0yX1NUQVRVU30iCiAgZWNobyAiUmVjZW50IGxvZ3M6IgogIHN1ZG8gLXUgd3d3LWRhdGEgUE0yX0hPTUU9IiRQTTJfSE9NRV9ESVIiIHBtMiBsb2dzIHNrcmFkaXVzLWFwaSAtLWxpbmVzIDEwIC0tbm9zdHJlYW0gfHwgdHJ1ZQplbHNlCiAgZWNobyAiU0tSYWRpdXMgYXBwcyBzdWNjZXNzZnVsbHkgbWFuYWdlZCBieSBzeXN0ZW1kIHNlcnZpY2UuIgpmaQojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBTVEVQIDkuNSDigJQgSW5zdGFsbCBOZ2lueCAoc2VydmVzIGZyb250ZW5kLCBwcm94aWVzIEFQSSkKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmVjaG8gIiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIgplY2hvICJJbnN0YWxsaW5nICYgY29uZmlndXJpbmcgTmdpbnguLi4iCmVjaG8gIiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIgpzdWRvIGFwdC1nZXQgaW5zdGFsbCAteSBuZ2lueDsgY2hlY2tfc3RhdHVzICJJbnN0YWxsaW5nIE5naW54IgoKTkdJTlhfQ09ORl9GSUxFPSIvZXRjL25naW54L3NpdGVzLWF2YWlsYWJsZS9kZWZhdWx0IgpOR0lOWF9TRVJWRVJfQ09ORklHPSQoY2F0IDw8RU9GCnNlcnZlciB7CiAgICBsaXN0ZW4gODA7CiAgICBzZXJ2ZXJfbmFtZSAke3NrcmFkaXVzRG9tYWlufTsKCiAgICAjIFNlcnZlIHRoZSBmcm9udGVuZCBidWlsZAogICAgcm9vdCAkQVBQX0RJUi9mcm9udGVuZC9kaXN0OwogICAgaW5kZXggaW5kZXguaHRtbDsKCiAgICAjIEhhbmRsZSBmcm9udGVuZCByb3V0ZXMgKFJlYWN0LCBWdWUsIGV0Yy4pCiAgICBsb2NhdGlvbiAvIHsKICAgICAgICB0cnlfZmlsZXMgXCR1cmkgXCR1cmkvIC9pbmRleC5odG1sOwogICAgfQoKICAgICMgUHJveHkgQVBJIHJlcXVlc3RzIHRvIGJhY2tlbmQKICAgIGxvY2F0aW9uIC9hcGkvIHsKICAgICAgICBwcm94eV9wYXNzIGh0dHA6Ly8xMjcuMC4wLjE6NTAwMzsKICAgICAgICBwcm94eV9odHRwX3ZlcnNpb24gMS4xOwogICAgICAgIHByb3h5X3NldF9oZWFkZXIgSG9zdCBcJGhvc3Q7CiAgICAgICAgcHJveHlfc2V0X2hlYWRlciBYLVJlYWwtSVAgXCRyZW1vdGVfYWRkcjsKICAgICAgICBwcm94eV9zZXRfaGVhZGVyIFgtRm9yd2FyZGVkLUZvciBcJHByb3h5X2FkZF94X2ZvcndhcmRlZF9mb3I7CiAgICAgICAgcHJveHlfc2V0X2hlYWRlciBYLUZvcndhcmRlZC1Qcm90byBcJHNjaGVtZTsKICAgICAgICBwcm94eV9zZXRfaGVhZGVyIFVwZ3JhZGUgXCRodHRwX3VwZ3JhZGU7CiAgICAgICAgcHJveHlfc2V0X2hlYWRlciBDb25uZWN0aW9uICJ1cGdyYWRlIjsKICAgIH0KCiAgICBsb2NhdGlvbiAvdXBsb2Fkcy8gewogICAgICAgIHByb3h5X3Bhc3MgaHR0cDovLzEyNy4wLjAuMTo1MDAzL3VwbG9hZHMvOwogICAgICAgIHByb3h5X3NldF9oZWFkZXIgSG9zdCBcJGhvc3Q7CiAgICAgICAgcHJveHlfc2V0X2hlYWRlciBYLVJlYWwtSVAgXCRyZW1vdGVfYWRkcjsKICAgICAgICBwcm94eV9zZXRfaGVhZGVyIFgtRm9yd2FyZGVkLUZvciBcJHByb3h5X2FkZF94X2ZvcndhcmRlZF9mb3I7CiAgICB9CgogICAgIyBPcHRpb25hbDogaGFuZGxlIHN0YXRpYyBmaWxlcyBjYWNoaW5nCiAgICBsb2NhdGlvbiB+KiBcLihqc3xjc3N8cG5nfGpwZ3xqcGVnfGdpZnxpY298c3ZnfHdlYnApXCQgewogICAgICAgIGV4cGlyZXMgMzBkOwogICAgICAgIGFjY2Vzc19sb2cgb2ZmOwogICAgICAgIGFkZF9oZWFkZXIgQ2FjaGUtQ29udHJvbCAicHVibGljLCBuby10cmFuc2Zvcm0iOwogICAgfQoKICAgIGVycm9yX3BhZ2UgNDA0IC9pbmRleC5odG1sOwp9CkVPRgopCnN1ZG8gdHJ1bmNhdGUgLXMgMCAiJE5HSU5YX0NPTkZfRklMRSI7IGNoZWNrX3N0YXR1cyAiVHJ1bmNhdGluZyBOZ2lueCBjb25maWcgZmlsZSIKZWNobyAiJE5HSU5YX1NFUlZFUl9DT05GSUciIHwgc3VkbyB0ZWUgLWEgIiROR0lOWF9DT05GX0ZJTEUiID4gL2Rldi9udWxsOyBjaGVja19zdGF0dXMgIldyaXRpbmcgTmdpbnggY29uZmlndXJhdGlvbiIKc3VkbyBuZ2lueCAtdCAmJiBzdWRvIHN5c3RlbWN0bCByZXN0YXJ0IG5naW54OyBjaGVja19zdGF0dXMgIlRlc3RpbmcgYW5kIHJlc3RhcnRpbmcgTmdpbngiCnN1ZG8gc3lzdGVtY3RsIGVuYWJsZSBuZ2lueDsgY2hlY2tfc3RhdHVzICJFbmFibGluZyBOZ2lueCBzZXJ2aWNlIG9uIGJvb3QiCgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBTVEVQIDEwIOKAlCBGaXJld2FsbCBydWxlcwojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZWNobyAiIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMiCmVjaG8gIkNvbmZpZ3VyaW5nIGZpcmV3YWxsLi4uIgplY2hvICIjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyIKc3VkbyB1ZncgYWxsb3cgT3BlblNTSDsgY2hlY2tfc3RhdHVzICJDb25maWd1cmluZyBVRlcgdG8gYWxsb3cgT3BlblNTSCIKc3VkbyB1ZncgYWxsb3cgODAvdGNwOyBjaGVja19zdGF0dXMgIkNvbmZpZ3VyaW5nIFVGVyB0byBhbGxvdyBwb3J0IDgwIChIVFRQKSIKc3VkbyB1ZncgYWxsb3cgNDQzL3RjcDsgY2hlY2tfc3RhdHVzICJDb25maWd1cmluZyBVRlcgdG8gYWxsb3cgcG9ydCA0NDMgKEhUVFBTKSIKc3VkbyB1ZncgYWxsb3cgMTgxMi91ZHA7IGNoZWNrX3N0YXR1cyAiQ29uZmlndXJpbmcgVUZXIHRvIGFsbG93IHBvcnQgMTgxMiAoUkFESVVTKSIKc3VkbyB1ZncgYWxsb3cgMTgxMy91ZHA7IGNoZWNrX3N0YXR1cyAiQ29uZmlndXJpbmcgVUZXIHRvIGFsbG93IHBvcnQgMTgxMyAoUkFESVVTIGFjY291bnRpbmcpIgpzdWRvIHVmdyAtLWZvcmNlIGVuYWJsZTsgY2hlY2tfc3RhdHVzICJFbmFibGluZyBVRlcgZmlyZXdhbGwiCgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBTVEVQIDExIOKAlCBFbmFibGUgYWxsIHNlcnZpY2VzIG9uIGJvb3QKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnN1ZG8gc3lzdGVtY3RsIGVuYWJsZSBteXNxbCAyPiAvZGV2L251bGw7IGNoZWNrX3N0YXR1cyAiRW5hYmxpbmcgTXlTUUwgc2VydmljZSBvbiBib290IgpzdWRvIHN5c3RlbWN0bCBlbmFibGUgcmVkaXMtc2VydmVyIDI+IC9kZXYvbnVsbDsgY2hlY2tfc3RhdHVzICJFbmFibGluZyBSZWRpcyBzZXJ2aWNlIG9uIGJvb3QiCnN1ZG8gc3lzdGVtY3RsIGVuYWJsZSBmcmVlcmFkaXVzIDI+IC9kZXYvbnVsbDsgY2hlY2tfc3RhdHVzICJFbmFibGluZyBGcmVlUkFESVVTIHNlcnZpY2Ugb24gYm9vdCIKc3VkbyBzeXN0ZW1jdGwgZW5hYmxlIGNyb24gMj4gL2Rldi9udWxsOyBjaGVja19zdGF0dXMgIkVuYWJsaW5nIENyb24gc2VydmljZSBvbiBib290IgpzdWRvIHN5c3RlbWN0bCBlbmFibGUgcG0yLXd3dy1kYXRhIDI+IC9kZXYvbnVsbDsgY2hlY2tfc3RhdHVzICJFbmFibGluZyBQTTIgc2VydmljZSBvbiBib290IgoKCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFNURVAgMTIg4oCUIEluc3RhbGwgU1NMIGNlcnRpZmljYXRlIHZpYSBDZXJ0Ym90CiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQplY2hvICIjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyIKZWNobyAiSW5zdGFsbGluZyBTU0wgY2VydGlmaWNhdGUgZm9yICR7c2tyYWRpdXNEb21haW59Li4uIgplY2hvICIjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyIKc3VkbyBhcHQtZ2V0IGluc3RhbGwgLXkgY2VydGJvdCBweXRob24zLWNlcnRib3Qtbmdpbng7IGNoZWNrX3N0YXR1cyAiSW5zdGFsbGluZyBDZXJ0Ym90IGFuZCBOZ2lueCBwbHVnaW4iCnN1ZG8gY2VydGJvdCAtLW5naW54IC1kICR7c2tyYWRpdXNEb21haW59IC0tbm9uLWludGVyYWN0aXZlIC0tYWdyZWUtdG9zIC1tIHN1cHBvcnRAYWFuaXJpZHMuY29tIC0tcmVkaXJlY3Q7CmlmIFsgJD8gLW5lIDAgXTsgdGhlbgogIGVjaG8gIldBUk5JTkc6IENlcnRib3QgZmFpbGVkLiBUaGlzIHVzdWFsbHkgbWVhbnMgdGhlIGRvbWFpbiAke3NrcmFkaXVzRG9tYWlufSI7CiAgZWNobyAiaXMgbm90IHlldCBwb2ludGVkIGF0IHRoaXMgc2VydmVyJ1wnJ3MgSVAuIFlvdSBjYW4gcmV0cnkgbWFudWFsbHkgbGF0ZXIgd2l0aDoiOwogIGVjaG8gIiAgc3VkbyBjZXJ0Ym90IC0tbmdpbnggLWQgJHtza3JhZGl1c0RvbWFpbn0iOwpmaQoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgU1RFUCAxMyDigJQgQ2xlYW4gdXAgJiBmaW5pc2gKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmhpc3RvcnkgLWMgJiYgaGlzdG9yeSAtdzsKCmVjaG8gIiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIgplY2hvICIjIyMjIyMjIyAgU0tSYWRpdXMgSW5zdGFsbGF0aW9uIENvbXBsZXRlISAoMTAwJSkgICMjIyMjIyMjIgplY2hvICIjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyIKZWNobyAiIgplY2hvICIgIEFwcCBVUkwgICAgICAgICAgICA6IGh0dHA6Ly8ke3NrcmFkaXVzRG9tYWlufSIKZWNobyAiICBQTTIgc3RhdHVzICAgICAgICAgOiBzdWRvIC11IHd3dy1kYXRhIFBNMl9IT01FPS92YXIvd3d3Ly5wbTIgcG0yIHN0YXR1cyIKZWNobyAiICBBcGkgbG9ncyAgICAgICAgICAgOiBzdWRvIC11IHd3dy1kYXRhIFBNMl9IT01FPS92YXIvd3d3Ly5wbTIgcG0yIGxvZ3Mgc2tyYWRpdXMtYXBpIgplY2hvICIgIGNyb24gbG9ncyAgICAgICAgICAgOiBzdWRvIC11IHd3dy1kYXRhIFBNMl9IT01FPS92YXIvd3d3Ly5wbTIgcG0yIGxvZ3Mgc2tyYWRpdXMtY3JvbiIKZWNobyAiICBJbnN0YWxsZXIgc2VjcmV0cyAgOiAvZXRjL3NrcmFkaXVzLy5lbnYgIChjaG1vZCA2MDApIgplY2hvICIgIEJhY2tlbmQgLmVudiAgICAgICA6ICR7QVBQX0RJUn0vYmFja2VuZC8uZW52ICAoY2htb2QgNjAwKSIKZWNobyAiICBGcm9udGVuZCAoc3RhdGljKSAgOiAke0FQUF9ESVJ9L2Zyb250ZW5kL2Rpc3QgIChzZXJ2ZWQgYnkgTmdpbngpIgplY2hvICIgIFVwbG9hZHMgZGlyICAgICAgICA6ICR7QVBQX0RJUn0vdXBsb2Fkcy8iCmVjaG8gIiIKZWNobyAiICBJdGVtcyB0byBjb21wbGV0ZSBhZnRlciBpbnN0YWxsOiIKZWNobyAiICAgIDEuIFNldCBUUjA2OV9CQVNFX1VSTCBpbiAke0FQUF9ESVJ9L2JhY2tlbmQvLmVudiIKZWNobyAiICAgIDIuIFNldCBMSUNFTlNFX1NFUlZFUl9VUkwgaW4gJHtBUFBfRElSfS9iYWNrZW5kLy5lbnYiCmVjaG8gIiAgICAzLiBTZXQgTElDRU5TRV9LRVkgaWYgcmVxdWlyZWQiCmVjaG8gIiAgICA0LjEuIFJlc3RhcnQtYXBpOiBzdWRvIC11IHd3dy1kYXRhIFBNMl9IT01FPS92YXIvd3d3Ly5wbTIgcG0yIHJlc3RhcnQgc2tyYWRpdXMtYXBpIgplY2hvICIgICAgNC4yLiBSZXN0YXJ0LWNyb246IHN1ZG8gLXUgd3d3LWRhdGEgUE0yX0hPTUU9L3Zhci93d3cvLnBtMiBwbTIgcmVzdGFydCBza3JhZGl1cy1jcm9uIgplY2hvICIjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyIKCmVsc2UKICBlY2hvICJXcm9uZyBVc2VybmFtZSBvciBQYXNzd29yZC4gQ29udGFjdCB3d3cuc2tyYWRpdXMuYWFuaXJpZHMuY29tIjsKICBleGl0IDE7CmZpJw==" | base64 -d)
eval "$_0x1a2b3c"
