Ребренд Мониторинг Орбита -> Железный Егорин; accent green->amber #F59E0B; LoginScreen правая половина = Lightning (WebGL, hue 35 тёплый) под стеклянной формой; левая панель — тёплый градиент. Доступ агентам: репо публичный, push german-токеном. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 line
18 KiB
Plaintext
1 line
18 KiB
Plaintext
IyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwoiIiIK0J/QptCdLdC/0YDQuNGR0LzQvdC40LogKHJ1Myk6IFN1cmdhcmQgTUxSMi1ERyAvIENvbnRhY3QgSUQgKDo1MTExKSArIFNJQSBEQy0wOSAoOjUxMTIpLgrQlNC10LrQvtC00LjRgNGD0LXRgiBhY2NvdW50ICsg0LrQvtC0INGB0L7QsdGL0YLQuNGPLCDQv9GD0LHQu9C40LrRg9C10YIg0LIgbW9zcXVpdHRvIChyYXcgTVFUVCAzLjEuMSwgc3RkbGliLW9ubHkpCtGC0L7Qv9C40LogZ3VhcmQvPGFjY291bnQ+L2V2ZW50IEpTT04uCgrQn9CV0KDQktCQ0K8g0YDQsNCx0L7Rh9Cw0Y8g0LLQtdGA0YHQuNGPIOKAlCDQvNC40L3QuNC80LDQu9GM0L3Ri9C5LCDQvdC+INC20LjQstC+0Lkg0L/RgNC40ZHQvNC90LjQui4KVE9ETzog0L/QvtC70L3QsNGPINCy0LDQu9C40LTQsNGG0LjRjyBTSUEgREMtMDkgQ1JDL9GI0LjRhNGA0L7QstCw0L3QuNC1OyBlZGdlLWNhc2VzIENvbnRhY3QgSUQgY2hlY2tzdW0uCiIiIgppbXBvcnQgYXN5bmNpbwppbXBvcnQganNvbgppbXBvcnQgcmUKaW1wb3J0IHNvY2tldAppbXBvcnQgc3RydWN0CmltcG9ydCB0aW1lCmltcG9ydCBsb2dnaW5nCgojIC0tLS0g0JrQvtC90YTQuNCzIC0tLS0KTVFUVF9IT1NUID0gIjEwLjUwLjAuNDgiICAgIyBtb3NxdWl0dG8gdm0tbXRzMSDQv9C+INGC0YPQvdC90LXQu9GOIGF3Zy1tZXNoCk1RVFRfUE9SVCA9IDE4ODMKTVFUVF9LRUVQQUxJVkUgPSA2MApTVVJHQVJEX1BPUlQgPSA1MTExClNJQV9QT1JUID0gNTExMgpDTElFTlRfSUQgPSAicGNuLXJ1MyIKCmxvZ2dpbmcuYmFzaWNDb25maWcoCiAgICBsZXZlbD1sb2dnaW5nLklORk8sCiAgICBmb3JtYXQ9IiUoYXNjdGltZSlzIFslKGxldmVsbmFtZSlzXSAlKG1lc3NhZ2UpcyIsCikKbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoInBjbiIpCgojIC0tLS0g0KHQvtC+0YLQstC10YLRgdGC0LLQuNC1IFNJQSA8LT4gU3VyZ2FyZCBDb250YWN0IElEICjQuNC3IHNyYy9kYXRhL3NlY3VyaXR5LnRzKSAtLS0tClNJQV9UT19DSUQgPSB7CiAgICAiQkEiOiAiRTEzMCIsICJGQSI6ICJFMTEwIiwgIlBBIjogIkUxMjAiLCAiSEEiOiAiRTEyMSIsICJUQSI6ICJFMTM3IiwKICAgICJPUCI6ICJFNDAxIiwgIkNMIjogIlI0MDEiLCAiQVQiOiAiRTMwMSIsICJBUiI6ICJSMzAxIiwgIkJUIjogIkUzMDIiLAogICAgIllDIjogIkUzNTQiLCAiTkwiOiAiRTM4MSIsCn0KQ0lEX1RPX1NJQSA9IHt2OiBrIGZvciBrLCB2IGluIFNJQV9UT19DSUQuaXRlbXMoKX0KCgojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojICDQnNC40L3QuNC80LDQu9GM0L3Ri9C5IHJhdy1NUVRUIHB1Ymxpc2hlciAoMy4xLjEpLCDQsdC10Lcg0LLQvdC10YjQvdC40YUg0LfQsNCy0LjRgdC40LzQvtGB0YLQtdC5CiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRlZiBfbXF0dF9yZW1haW5pbmdfbGVuZ3RoKG46IGludCkgLT4gYnl0ZXM6CiAgICBvdXQgPSBieXRlYXJyYXkoKQogICAgd2hpbGUgVHJ1ZToKICAgICAgICBiID0gbiAlIDEyOAogICAgICAgIG4gLy89IDEyOAogICAgICAgIGlmIG4gPiAwOgogICAgICAgICAgICBiIHw9IDB4ODAKICAgICAgICBvdXQuYXBwZW5kKGIpCiAgICAgICAgaWYgbiA9PSAwOgogICAgICAgICAgICBicmVhawogICAgcmV0dXJuIGJ5dGVzKG91dCkKCgpkZWYgX21xdHRfc3RyKHM6IHN0cikgLT4gYnl0ZXM6CiAgICBiID0gcy5lbmNvZGUoInV0Zi04IikKICAgIHJldHVybiBzdHJ1Y3QucGFjaygiIUgiLCBsZW4oYikpICsgYgoKCmNsYXNzIE1xdHRQdWJsaXNoZXI6CiAgICAiIiLQodC40L3RhdGA0L7QvdC90YvQuSDQv9GD0LHQu9C40LrQsNGC0L7RgCDQsiDQvtGC0LTQtdC70YzQvdC+0Lwg0L/QvtGC0L7QutC1LdC90LXQsdC70L7QutC40YDRg9GO0YnQuNC5INC+0L0g0L3QtSDQvdGD0LbQtdC9OgogICAg0LLRi9C30YvQstCw0LXQvCDQuNC3IGV4ZWN1dG9yLCDRh9GC0L7QsdGLINC90LUg0LHQu9C+0LrQuNGA0L7QstCw0YLRjCBhc3luY2lvLWxvb3AuIiIiCgogICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnQsIGNsaWVudF9pZCwga2VlcGFsaXZlPTYwKToKICAgICAgICBzZWxmLmhvc3QgPSBob3N0CiAgICAgICAgc2VsZi5wb3J0ID0gcG9ydAogICAgICAgIHNlbGYuY2xpZW50X2lkID0gY2xpZW50X2lkCiAgICAgICAgc2VsZi5rZWVwYWxpdmUgPSBrZWVwYWxpdmUKICAgICAgICBzZWxmLnNvY2sgPSBOb25lCgogICAgZGVmIF9jb25uZWN0KHNlbGYpOgogICAgICAgIHMgPSBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oKHNlbGYuaG9zdCwgc2VsZi5wb3J0KSwgdGltZW91dD04KQogICAgICAgICMgQ09OTkVDVCBwYWNrZXQKICAgICAgICBwYXlsb2FkID0gX21xdHRfc3RyKHNlbGYuY2xpZW50X2lkKQogICAgICAgIHZhcl9oZWFkZXIgPSBfbXF0dF9zdHIoIk1RVFQiKSArIGJ5dGVzKFsweDA0LCAweDAyXSkgKyBzdHJ1Y3QucGFjaygiIUgiLCBzZWxmLmtlZXBhbGl2ZSkKICAgICAgICBib2R5ID0gdmFyX2hlYWRlciArIHBheWxvYWQKICAgICAgICBwa3QgPSBieXRlcyhbMHgxMF0pICsgX21xdHRfcmVtYWluaW5nX2xlbmd0aChsZW4oYm9keSkpICsgYm9keQogICAgICAgIHMuc2VuZGFsbChwa3QpCiAgICAgICAgIyBDT05OQUNLICg0IGJ5dGVzKQogICAgICAgIHJlc3AgPSBzLnJlY3YoNCkKICAgICAgICBpZiBsZW4ocmVzcCkgPCA0IG9yIHJlc3BbMF0gIT0gMHgyMCBvciByZXNwWzNdICE9IDB4MDA6CiAgICAgICAgICAgIHMuY2xvc2UoKQogICAgICAgICAgICByYWlzZSBDb25uZWN0aW9uRXJyb3IoZiJNUVRUIENPTk5BQ0sgZmFpbGVkOiB7cmVzcCFyfSIpCiAgICAgICAgc2VsZi5zb2NrID0gcwoKICAgIGRlZiBwdWJsaXNoKHNlbGYsIHRvcGljLCBwYXlsb2FkLCBxb3M9MCk6CiAgICAgICAgaWYgc2VsZi5zb2NrIGlzIE5vbmU6CiAgICAgICAgICAgIHNlbGYuX2Nvbm5lY3QoKQogICAgICAgIHRyeToKICAgICAgICAgICAgc2VsZi5fcHVibGlzaCh0b3BpYywgcGF5bG9hZCkKICAgICAgICBleGNlcHQgKE9TRXJyb3IsIENvbm5lY3Rpb25FcnJvcikgYXMgZToKICAgICAgICAgICAgIyByZWNvbm5lY3Qgb25jZQogICAgICAgICAgICBsb2cud2FybmluZygiTVFUVCBwdWJsaXNoIGVyciAoJXMpLCByZWNvbm5lY3RpbmciLCBlKQogICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICBpZiBzZWxmLnNvY2s6CiAgICAgICAgICAgICAgICAgICAgc2VsZi5zb2NrLmNsb3NlKCkKICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgIHNlbGYuc29jayA9IE5vbmUKICAgICAgICAgICAgc2VsZi5fY29ubmVjdCgpCiAgICAgICAgICAgIHNlbGYuX3B1Ymxpc2godG9waWMsIHBheWxvYWQpCgogICAgZGVmIF9wdWJsaXNoKHNlbGYsIHRvcGljLCBwYXlsb2FkKToKICAgICAgICBib2R5ID0gX21xdHRfc3RyKHRvcGljKSArIHBheWxvYWQuZW5jb2RlKCJ1dGYtOCIpCiAgICAgICAgcGt0ID0gYnl0ZXMoWzB4MzBdKSArIF9tcXR0X3JlbWFpbmluZ19sZW5ndGgobGVuKGJvZHkpKSArIGJvZHkKICAgICAgICBzZWxmLnNvY2suc2VuZGFsbChwa3QpCgoKX3B1YiA9IE1xdHRQdWJsaXNoZXIoTVFUVF9IT1NULCBNUVRUX1BPUlQsIENMSUVOVF9JRCwgTVFUVF9LRUVQQUxJVkUpCgoKYXN5bmMgZGVmIHB1Ymxpc2hfZXZlbnQoYWNjb3VudCwgcHJvdG8sIGNpZCwgc2lhLCB6b25lLCByYXcpOgogICAgZG9jID0gewogICAgICAgICJhY2NvdW50IjogYWNjb3VudCwKICAgICAgICAicHJvdG8iOiBwcm90bywKICAgICAgICAiY2lkIjogY2lkLAogICAgICAgICJzaWEiOiBzaWEsCiAgICAgICAgInpvbmUiOiB6b25lLAogICAgICAgICJyYXciOiByYXcsCiAgICAgICAgInRzIjogaW50KHRpbWUudGltZSgpKSwKICAgIH0KICAgIHRvcGljID0gZiJndWFyZC97YWNjb3VudH0vZXZlbnQiCiAgICBwYXlsb2FkID0ganNvbi5kdW1wcyhkb2MsIGVuc3VyZV9hc2NpaT1GYWxzZSkKICAgIGxvb3AgPSBhc3luY2lvLmdldF9ldmVudF9sb29wKCkKICAgIHRyeToKICAgICAgICBhd2FpdCBsb29wLnJ1bl9pbl9leGVjdXRvcihOb25lLCBfcHViLnB1Ymxpc2gsIHRvcGljLCBwYXlsb2FkKQogICAgICAgIGxvZy5pbmZvKCJQVUIgJXMgJXMiLCB0b3BpYywgcGF5bG9hZCkKICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICBsb2cuZXJyb3IoIk1RVFQgcHVibGlzaCBmYWlsZWQ6ICVzIiwgZSkKCgojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojICDQoNCw0LfQsdC+0YAgQ29udGFjdCBJRCDQutC+0LTQsCAtPiAoY2lkLCBzaWEpCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRlZiBjaWRfdG9fcGFpcihxdWFsaWZpZXIsIGV2ZW50Myk6CiAgICAiIiJxdWFsaWZpZXIgJzEnPW5ldy9FICwgJzMnPXJlc3RvcmUvUiA7IGV2ZW50MyA9IDMg0YbQuNGE0YDRiyAoMTMwLDExMCwuLi4pIiIiCiAgICBwcmVmaXggPSAiUiIgaWYgcXVhbGlmaWVyID09ICIzIiBlbHNlICJFIgogICAgY2lkID0gZiJ7cHJlZml4fXtldmVudDN9IgogICAgc2lhID0gQ0lEX1RPX1NJQS5nZXQoY2lkLCAiIikKICAgIHJldHVybiBjaWQsIHNpYQoKCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiMgIFN1cmdhcmQgTUxSMi1ERyAvIENvbnRhY3QgSUQg0L/RgNC40ZHQvNC90LjQuiAoOjUxMTEpCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiMg0KTQvtGA0LzQsNGC0YssINC60L7RgtC+0YDRi9C1INC/0YvRgtCw0LXQvNGB0Y8g0YDQsNGB0L/QvtC30L3QsNGC0Yw6CiMgIDEpIFN1ci1HYXJkIDUtMi0xOiAiNUJCIDE4IDxhY2NvdW50PiAxOCA8Q0lEPiA8cXVhbD4gPHpvbmU+IgojICAgICDQvdCw0L/RgC4gIjUwMTEgMTggMTA0MiAxOCAxMzAgMDEgMDAyIgojICAyKSBBRE0tQ0lEIENvbnRhY3QgSUQ6ICI8QUNDVD4gMTggPE1UPiA8UT4gPFhZWj4gPEdHPiA8Q0NDPiIKIyAgICAg0LPQtNC1IE1UPTE4KERUTUYpLzk4LCBRPTEvMywgWFlaPdC60L7QtCwgR0c9Z3JvdXAvcGFydGl0aW9uLCBDQ0M9em9uZS91c2VyClNVUkdBUkRfQUNLID0gYiJceDA2IiAgIyDQv9GA0LjRkdC80L3QuNC6INC/0L7QtNGC0LLQtdGA0LbQtNCw0LXRgiDRgdC+0LHRi9GC0LjQtSDRgdC40LzQstC+0LvQvtC8IEFDSwoKCmRlZiBwYXJzZV9zdXJnYXJkKGxpbmU6IHN0cik6CiAgICBsaW5lID0gbGluZS5zdHJpcCgpCiAgICBpZiBub3QgbGluZToKICAgICAgICByZXR1cm4gTm9uZQogICAgdG9rcyA9IGxpbmUuc3BsaXQoKQogICAgIyDQn9C+0L/Ri9GC0LrQsDog0L3QsNC50YLQuCDRiNCw0LHQu9C+0L0gQ29udGFjdCBJRCDQs9C00LUt0YLQviDQsiDRgdGC0YDQvtC60LUuCiAgICAjINCY0YnQtdC8INC/0L7RgdC70LXQtNC+0LLQsNGC0LXQu9GM0L3QvtGB0YLRjDogPGFjY3Q+IDE4IDxxPjx4eXo+IC4uLiDQu9C40LHQviDRj9Cy0L3Ri9C1INC/0L7Qu9GPLgogICAgIyDQndC+0YDQvNCw0LvQuNC30YPQtdC8OiDRg9Cx0LjRgNCw0LXQvCDQstC10LTRg9GJ0LjQuSAiNXh4IiDQutC+0LQg0LvQuNC90LjQuCBTdXItR2FyZCDQtdGB0LvQuCDQtdGB0YLRjC4KICAgICMg0KPQvdC40LLQtdGA0YHQsNC70YzQvdGL0Lkg0YDQsNC30LHQvtGAINC/0L4g0YLQvtC60LXQvdCw0Lw6CiAgICAjICAg0LjRidC10Lwg0YLQvtC60LXQvSAiMTgiIChDb250YWN0IElEIG1lc3NhZ2UgdHlwZSksINC/0L7RgdC70LUg0L3QtdCz0L4gcXVhbCtjb2RlLgogICAgYWNjb3VudCA9IE5vbmUKICAgIGNpZCA9IE5vbmUKICAgIHNpYSA9IE5vbmUKICAgIHpvbmUgPSBOb25lCgogICAgIyDQktCw0YDQuNCw0L3RgiBBOiDQv9GA0L7QsdC10LvRjNC90L4t0YDQsNC30LTQtdC70ZHQvdC90YvQtSDQv9C+0LvRjyAo0YLQtdGB0YLQvtCy0YvQuSDRhNC+0YDQvNCw0YIpCiAgICAjICAgIjUwMTEgMTggMTA0MiAxOCAxMzAgMDEgMDAyIgogICAgIyAgIGlkeDogMD1saW5lcHJlZml4IDE9MTggMj1hY2NvdW50IDM9MTggND1jb2RlIDU9Z3JvdXAgNj16b25lCiAgICBpZiBsZW4odG9rcykgPj0gNyBhbmQgdG9rc1sxXSA9PSAiMTgiIGFuZCB0b2tzWzNdID09ICIxOCI6CiAgICAgICAgYWNjb3VudCA9IHRva3NbMl0KICAgICAgICBjb2RlID0gdG9rc1s0XSAgICAgICAgICAgICAgIyAxMzAKICAgICAgICAjIHF1YWxpZmllciDQvNC+0LbQtdGCINC40LTRgtC4INC60LDQuiDQvtGC0LTQtdC70YzQvdCw0Y8gMS8zINC40LvQuCDQsdGL0YLRjCDRgdC70LjRgjsg0YLRg9GCINC/0L4g0LPRgNGD0L/Qv9C1LgogICAgICAgICMg0JIg0LrQu9Cw0YHRgdC40LrQtSBncm91cCAnMDEnLycwMicg4oCUIGV2ZW50OyDQsdC10YDRkdC8IEUg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4uCiAgICAgICAgcXVhbCA9ICIxIgogICAgICAgIGNpZCwgc2lhID0gY2lkX3RvX3BhaXIocXVhbCwgY29kZS56ZmlsbCgzKVs6M10pCiAgICAgICAgem9uZSA9IHRva3NbNl0KICAgICAgICByZXR1cm4gYWNjb3VudCwgY2lkLCBzaWEsIHpvbmUKCiAgICAjINCS0LDRgNC40LDQvdGCIEI6INGB0LvQuNGC0L3Ri9C5IENvbnRhY3QgSUQgIkFDQ1QgMTggUSBYWVogR0cgQ0NDIgogICAgIyAgINC90LDQv9GALiAiMTA0MiAxOCAxIDEzMCAwMSAwMDIiCiAgICBpZiBsZW4odG9rcykgPj0gNiBhbmQgdG9rc1sxXSBpbiAoIjE4IiwgIjk4Iik6CiAgICAgICAgYWNjb3VudCA9IHRva3NbMF0KICAgICAgICBxdWFsID0gdG9rc1syXQogICAgICAgIGNvZGUgPSB0b2tzWzNdCiAgICAgICAgY2lkLCBzaWEgPSBjaWRfdG9fcGFpcihxdWFsLCBjb2RlLnpmaWxsKDMpWzozXSkKICAgICAgICB6b25lID0gdG9rc1stMV0KICAgICAgICByZXR1cm4gYWNjb3VudCwgY2lkLCBzaWEsIHpvbmUKCiAgICAjINCS0LDRgNC40LDQvdGCIEM6INC/0L7Qu9C90L7RgdGC0YzRjiDRgdC70LjRgtC90LDRjyBBRE0tQ0lEINGB0YLRgNC+0LrQsCAiMTA0MjE4MTMwMDEwMDIiCiAgICAjICAgQUNDVCg0KSAxOCBRKDEpIFhZWigzKSBHRygyKSBDQ0MoMykKICAgIG0gPSByZS5tYXRjaChyIl4oXGR7Myw0fSkxOChbMTNdKShcZHszfSkoXGR7Mn0pKFxkezN9KSQiLCBsaW5lLnJlcGxhY2UoIiAiLCAiIikpCiAgICBpZiBtOgogICAgICAgIGFjY291bnQgPSBtLmdyb3VwKDEpCiAgICAgICAgcXVhbCA9IG0uZ3JvdXAoMikKICAgICAgICBjb2RlID0gbS5ncm91cCgzKQogICAgICAgIHpvbmUgPSBtLmdyb3VwKDUpCiAgICAgICAgY2lkLCBzaWEgPSBjaWRfdG9fcGFpcihxdWFsLCBjb2RlKQogICAgICAgIHJldHVybiBhY2NvdW50LCBjaWQsIHNpYSwgem9uZQoKICAgICMg0J3QtSDRgNCw0YHQv9C+0LfQvdCw0LvQuCDigJQg0LLQtdGA0L3RkdC8INGF0L7RgtGPINCx0YsgcmF3INGBINC/0YPRgdGC0YvQvNC4INC/0L7Qu9GP0LzQuCAoYWNjb3VudD1VTktOT1dOKQogICAgcmV0dXJuIE5vbmUKCgphc3luYyBkZWYgaGFuZGxlX3N1cmdhcmQocmVhZGVyLCB3cml0ZXIpOgogICAgcGVlciA9IHdyaXRlci5nZXRfZXh0cmFfaW5mbygicGVlcm5hbWUiKQogICAgbG9nLmluZm8oIlN1cmdhcmQgY29ubiBmcm9tICVzIiwgcGVlcikKICAgIHRyeToKICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICBkYXRhID0gYXdhaXQgYXN5bmNpby53YWl0X2ZvcihyZWFkZXIucmVhZGxpbmUoKSwgdGltZW91dD0xMjApCiAgICAgICAgICAgIGlmIG5vdCBkYXRhOgogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgcmF3ID0gZGF0YS5kZWNvZGUoImxhdGluLTEiLCBlcnJvcnM9InJlcGxhY2UiKS5yc3RyaXAoIlxyXG4iKQogICAgICAgICAgICBpZiBub3QgcmF3OgogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgbG9nLmluZm8oIlN1cmdhcmQgcmF3OiAlciIsIHJhdykKICAgICAgICAgICAgcGFyc2VkID0gcGFyc2Vfc3VyZ2FyZChyYXcpCiAgICAgICAgICAgIGlmIHBhcnNlZDoKICAgICAgICAgICAgICAgIGFjY291bnQsIGNpZCwgc2lhLCB6b25lID0gcGFyc2VkCiAgICAgICAgICAgICAgICBhd2FpdCBwdWJsaXNoX2V2ZW50KGFjY291bnQsICJzdXJnYXJkIiwgY2lkLCBzaWEsIHpvbmUsIHJhdykKICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgIGxvZy53YXJuaW5nKCJTdXJnYXJkOiB1bnBhcnNlZCAlciAtPiBwdWJsaXNoaW5nIHJhdyB1bmRlciBVTktOT1dOIiwgcmF3KQogICAgICAgICAgICAgICAgYXdhaXQgcHVibGlzaF9ldmVudCgiVU5LTk9XTiIsICJzdXJnYXJkIiwgIiIsICIiLCBOb25lLCByYXcpCiAgICAgICAgICAgICMgQUNLINC/0YDQuNGR0LzQvdC40LrQsAogICAgICAgICAgICB3cml0ZXIud3JpdGUoU1VSR0FSRF9BQ0spCiAgICAgICAgICAgIGF3YWl0IHdyaXRlci5kcmFpbigpCiAgICBleGNlcHQgYXN5bmNpby5UaW1lb3V0RXJyb3I6CiAgICAgICAgbG9nLmluZm8oIlN1cmdhcmQgJXMgaWRsZSB0aW1lb3V0IiwgcGVlcikKICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICBsb2cuZXJyb3IoIlN1cmdhcmQgaGFuZGxlciBlcnI6ICVzIiwgZSkKICAgIGZpbmFsbHk6CiAgICAgICAgdHJ5OgogICAgICAgICAgICB3cml0ZXIuY2xvc2UoKQogICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgIHBhc3MKICAgICAgICBsb2cuaW5mbygiU3VyZ2FyZCBjb25uIGNsb3NlZCAlcyIsIHBlZXIpCgoKIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIyAgU0lBIERDLTA5INC/0YDQuNGR0LzQvdC40LogKDo1MTEyKQojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojINCa0LDQtNGAIERDLTA5ICjRg9C/0YDQvtGJ0ZHQvdC90L4pOgojICBceDBBIDxDUkM0aGV4PiA8TEVONGhleD4gIjxpZD4iIDxzZXE+IFI8cmN2cj4gTDxsaW5lPiAjPGFjY291bnQ+IFs8ZGF0YT5dIDx0cz4gXHgwRAojICBpZDogIlNJQS1EQ1MiIHwgIkFETS1DSUQiIHwgIk5VTEwiIHwgLi4uCiMgIGRhdGEg0LTQu9GPIEFETS1DSUQ6IHw8IGNvbnRhY3QtaWQgLi4uPiAgOyDQtNC70Y8gU0lBLURDUzogfE5yaTEvQkEwMV0KIyAg0J7RgtCy0LXRgiBBQ0s6IFx4MEEgPENSQz4gPExFTj4gIkFDSyIgPHNlcT4gUi4uIEwuLiAjYWNjdCBbXSA8dHM+IFx4MEQKTEYgPSAweDBBCkNSID0gMHgwRAoKCmRlZiBfZGMwOV9jcmMobXNnOiBieXRlcykgLT4gaW50OgogICAgIiIiQ1JDLTE2IChwb2x5bm9taWFsIDB4ODAwNSwgcmVmbGVjdGVkKSDQutCw0Log0LIgREMtMDkgKNC00LvRjyBBQ0spLiIiIgogICAgY3JjID0gMAogICAgZm9yIGIgaW4gbXNnOgogICAgICAgIGNyYyBePSBiCiAgICAgICAgZm9yIF8gaW4gcmFuZ2UoOCk6CiAgICAgICAgICAgIGlmIGNyYyAmIDE6CiAgICAgICAgICAgICAgICBjcmMgPSAoY3JjID4+IDEpIF4gMHhBMDAxCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBjcmMgPj49IDEKICAgIHJldHVybiBjcmMgJiAweEZGRkYKCgpkZWYgcGFyc2Vfc2lhKGZyYW1lOiBzdHIpOgogICAgIiIiZnJhbWUg4oCUINGB0L7QtNC10YDQttC40LzQvtC1INC80LXQttC00YMgTEYg0LggQ1IgKNCx0LXQtyDQvtCx0YDQsNC80LvRj9GO0YnQuNGFKS4KICAgINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCIChhY2NvdW50LCBjaWQsIHNpYSwgem9uZSwgc2VxLCBpZF90b2tlbikuIiIiCiAgICBhY2NvdW50ID0gTm9uZQogICAgY2lkID0gTm9uZQogICAgc2lhID0gTm9uZQogICAgem9uZSA9IE5vbmUKICAgIHNlcSA9ICIwMDAwIgogICAgaWRfdG9rZW4gPSAiIgoKICAgICMgaWQg0LIg0LrQsNCy0YvRh9C60LDRhQogICAgbV9pZCA9IHJlLnNlYXJjaChyJyIoW0EtWlwtXSspIicsIGZyYW1lKQogICAgaWYgbV9pZDoKICAgICAgICBpZF90b2tlbiA9IG1faWQuZ3JvdXAoMSkKICAgICMgc2VxIOKAlCA0INGG0LjRhNGA0Ysg0YHRgNCw0LfRgyDQv9C+0YHQu9C1INC30LDQutGA0YvQstCw0Y7RidC10Lkg0LrQsNCy0YvRh9C60LggaWQKICAgIG1fc2VxID0gcmUuc2VhcmNoKHInIltBLVpcLV0rIihcZHs0fSknLCBmcmFtZSkKICAgIGlmIG1fc2VxOgogICAgICAgIHNlcSA9IG1fc2VxLmdyb3VwKDEpCiAgICAjIGFjY291bnQ6ICNBQ0NUCiAgICBtX2FjY3QgPSByZS5zZWFyY2gociIjKFswLTlBLUZhLWZdKykiLCBmcmFtZSkKICAgIGlmIG1fYWNjdDoKICAgICAgICBhY2NvdW50ID0gbV9hY2N0Lmdyb3VwKDEpCgogICAgIyBwYXlsb2FkINC80LXQttC00YMgWyAuLi4gXSAo0YMgU0lBLURDUykg0LjQu9C4INC/0L7RgdC70LUg0L/QvtGB0LvQtdC00L3QtdCz0L4gfAogICAgIyBTSUEtRENTIGRhdGE6IHxOcmkxL0JBMDFdICAtPiBjb2RlPUJBIHpvbmU9MDEKICAgIG1fc2lhID0gcmUuc2VhcmNoKHIiLyhbQS1aXXsyfSkoXGR7MSwzfSkiLCBmcmFtZSkKICAgIGlmIG1fc2lhOgogICAgICAgIHNpYSA9IG1fc2lhLmdyb3VwKDEpCiAgICAgICAgem9uZSA9IG1fc2lhLmdyb3VwKDIpCiAgICAgICAgY2lkID0gU0lBX1RPX0NJRC5nZXQoc2lhLCAiIikKICAgIGVsc2U6CiAgICAgICAgIyBBRE0tQ0lEINCy0L3Rg9GC0YDQuCBEQy0wOTogfDEgWFlaIEdHIENDQ3wg0LjQu9C4INC/0L7RhdC+0LbQtdC1CiAgICAgICAgbV9jaWQgPSByZS5zZWFyY2gociJcfChcZCk/XHM/KFxkezN9KVxzPyhcZHsyfSk/XHM/KFxkezIsM30pPyIsIGZyYW1lKQogICAgICAgIGlmIG1fY2lkOgogICAgICAgICAgICBxdWFsID0gbV9jaWQuZ3JvdXAoMSkgb3IgIjEiCiAgICAgICAgICAgIGNvZGUgPSBtX2NpZC5ncm91cCgyKQogICAgICAgICAgICB6b25lID0gbV9jaWQuZ3JvdXAoNCkKICAgICAgICAgICAgcHJlZml4ID0gIlIiIGlmIHF1YWwgPT0gIjMiIGVsc2UgIkUiCiAgICAgICAgICAgIGNpZCA9IGYie3ByZWZpeH17Y29kZX0iCiAgICAgICAgICAgIHNpYSA9IENJRF9UT19TSUEuZ2V0KGNpZCwgIiIpCgogICAgcmV0dXJuIGFjY291bnQsIGNpZCwgc2lhLCB6b25lLCBzZXEsIGlkX3Rva2VuCgoKZGVmIGJ1aWxkX3NpYV9hY2soc2VxOiBzdHIsIGFjY291bnQ6IHN0cikgLT4gYnl0ZXM6CiAgICAiIiLQodGC0YDQvtC40Lwg0LzQuNC90LjQvNCw0LvRjNC90YvQuSBEQy0wOSBBQ0st0LrQsNC00YAuIiIiCiAgICB0cyA9IHRpbWUuc3RyZnRpbWUoIl8lSDolTTolUywlbS0lZC0lWSIsIHRpbWUuZ210aW1lKCkpCiAgICBhY2N0ID0gYWNjb3VudCBvciAiMCIKICAgIGJvZHkgPSBmJyJBQ0sie3NlcX1SMEwwI3thY2N0fVtde3RzfScKICAgIGIgPSBib2R5LmVuY29kZSgiYXNjaWkiLCBlcnJvcnM9InJlcGxhY2UiKQogICAgY3JjID0gX2RjMDlfY3JjKGIpCiAgICBsZW5ndGggPSBsZW4oYikKICAgIGZyYW1lID0gZidcbntjcmM6MDRYfXtsZW5ndGg6MDRYfXtib2R5fVxyJwogICAgcmV0dXJuIGZyYW1lLmVuY29kZSgiYXNjaWkiLCBlcnJvcnM9InJlcGxhY2UiKQoKCmFzeW5jIGRlZiBoYW5kbGVfc2lhKHJlYWRlciwgd3JpdGVyKToKICAgIHBlZXIgPSB3cml0ZXIuZ2V0X2V4dHJhX2luZm8oInBlZXJuYW1lIikKICAgIGxvZy5pbmZvKCJTSUEgY29ubiBmcm9tICVzIiwgcGVlcikKICAgIHRyeToKICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAjINGH0LjRgtCw0LXQvCDQtNC+IENSICgweDBEKSDigJQg0LrQvtC90LXRhiDQutCw0LTRgNCwIERDLTA5CiAgICAgICAgICAgIGRhdGEgPSBhd2FpdCBhc3luY2lvLndhaXRfZm9yKHJlYWRlci5yZWFkdW50aWwoYiJcciIpLCB0aW1lb3V0PTEyMCkKICAgICAgICAgICAgaWYgbm90IGRhdGE6CiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICByYXcgPSBkYXRhLmRlY29kZSgibGF0aW4tMSIsIGVycm9ycz0icmVwbGFjZSIpCiAgICAgICAgICAgIGxvZy5pbmZvKCJTSUEgcmF3OiAlciIsIHJhdykKICAgICAgICAgICAgIyDQstGL0YDQtdC30LDQtdC8INGB0L7QtNC10YDQttC40LzQvtC1INC80LXQttC00YMgTEYg0LggQ1IKICAgICAgICAgICAgaW5uZXIgPSByYXcKICAgICAgICAgICAgaWYgaW5uZXIgYW5kIGlubmVyWzBdID09ICJcbiI6CiAgICAgICAgICAgICAgICBpbm5lciA9IGlubmVyWzE6XQogICAgICAgICAgICBpbm5lciA9IGlubmVyLnJzdHJpcCgiXHIiKQogICAgICAgICAgICBhY2NvdW50LCBjaWQsIHNpYSwgem9uZSwgc2VxLCBpZF90b2tlbiA9IHBhcnNlX3NpYShpbm5lcikKICAgICAgICAgICAgaWYgYWNjb3VudCBpcyBOb25lOgogICAgICAgICAgICAgICAgYWNjb3VudCA9ICJVTktOT1dOIgogICAgICAgICAgICBhd2FpdCBwdWJsaXNoX2V2ZW50KGFjY291bnQsICJzaWEiLCBjaWQsIHNpYSwgem9uZSwgcmF3LnN0cmlwKCkpCiAgICAgICAgICAgICMgQUNLLdC60LDQtNGACiAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgIGFjayA9IGJ1aWxkX3NpYV9hY2soc2VxLCBhY2NvdW50IGlmIGFjY291bnQgIT0gIlVOS05PV04iIGVsc2UgIjAiKQogICAgICAgICAgICAgICAgd3JpdGVyLndyaXRlKGFjaykKICAgICAgICAgICAgICAgIGF3YWl0IHdyaXRlci5kcmFpbigpCiAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgICAgIGxvZy53YXJuaW5nKCJTSUEgQUNLIGJ1aWxkL3NlbmQgZXJyOiAlcyIsIGUpCiAgICBleGNlcHQgYXN5bmNpby5JbmNvbXBsZXRlUmVhZEVycm9yOgogICAgICAgIGxvZy5pbmZvKCJTSUEgJXMgaW5jb21wbGV0ZS9jbG9zZWQiLCBwZWVyKQogICAgZXhjZXB0IGFzeW5jaW8uVGltZW91dEVycm9yOgogICAgICAgIGxvZy5pbmZvKCJTSUEgJXMgaWRsZSB0aW1lb3V0IiwgcGVlcikKICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICBsb2cuZXJyb3IoIlNJQSBoYW5kbGVyIGVycjogJXMiLCBlKQogICAgZmluYWxseToKICAgICAgICB0cnk6CiAgICAgICAgICAgIHdyaXRlci5jbG9zZSgpCiAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgcGFzcwogICAgICAgIGxvZy5pbmZvKCJTSUEgY29ubiBjbG9zZWQgJXMiLCBwZWVyKQoKCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmFzeW5jIGRlZiBtYWluKCk6CiAgICBzcnZfc3VyID0gYXdhaXQgYXN5bmNpby5zdGFydF9zZXJ2ZXIoaGFuZGxlX3N1cmdhcmQsICIwLjAuMC4wIiwgU1VSR0FSRF9QT1JUKQogICAgc3J2X3NpYSA9IGF3YWl0IGFzeW5jaW8uc3RhcnRfc2VydmVyKGhhbmRsZV9zaWEsICIwLjAuMC4wIiwgU0lBX1BPUlQpCiAgICBsb2cuaW5mbygiUENOIHJlY2VpdmVyIHVwOiBTdXJnYXJkIDolZCwgU0lBIERDLTA5IDolZCAtPiBtcXR0ICVzOiVkIiwKICAgICAgICAgICAgIFNVUkdBUkRfUE9SVCwgU0lBX1BPUlQsIE1RVFRfSE9TVCwgTVFUVF9QT1JUKQogICAgYXN5bmMgd2l0aCBzcnZfc3VyLCBzcnZfc2lhOgogICAgICAgIGF3YWl0IGFzeW5jaW8uZ2F0aGVyKHNydl9zdXIuc2VydmVfZm9yZXZlcigpLCBzcnZfc2lhLnNlcnZlX2ZvcmV2ZXIoKSkKCgppZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgdHJ5OgogICAgICAgIGFzeW5jaW8ucnVuKG1haW4oKSkKICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKICAgICAgICBwYXNzCg== |