Advertisement
Techpad

TechCode

Apr 28th, 2021
271
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 23.37 KB | None | 0 0
  1. TEBinicco(§IN)eydXSU5XSURUSCc6IDExMDAsICdXSU5IRUlHSFQnOiA3MDAsICdUSVRMRSc6ICdUZWNoQ29kZSd9(§IC)iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAACMSURBVDhPpZPbCcAgDEXT0k26Qtfodx8rOI8z1H51REtKImqNED0gRMTjJcEBHu+hg0+w3wdtdbjtgpFqMMZQpSMIrLVNkiBAWiSJAC+jREPSA+1lpDoFN59UCSxr/xgnqn/gYQ1+VBTEqVAmpUymkJP3AEW8mKqgBCaJ06gFeQKxBzH8YqkPnd8Z4AXr0Tnp5g/TLwAAAABJRU5ErkJggg==(§CO)aW1wb3J0IHRraW50ZXIgYXMgdGsKZnJvbSB0a2ludGVyIGltcG9ydCBmaWxlZGlhbG9nIGFzIGZkCmZyb20gdGtpbnRlciBpbXBvcnQgbWVzc2FnZWJveCBhcyBtYgppbXBvcnQga2V5d29yZAppbXBvcnQgYnVpbHRpbnMKaW1wb3J0IHR5cGVzCgpfcm9vdCA9IGZyYW1lMQojIF9yb290ID0gdGsuVGsoKQoKY2xhc3MgQ3VzdG9tVGV4dCh0ay5UZXh0KToKICAgICcnJ0EgdGV4dCB3aWRnZXQgd2l0aCBhIG5ldyBtZXRob2QsIGhpZ2hsaWdodF9wYXR0ZXJuKCkKCiAgICBleGFtcGxlOgoKICAgIHRleHQgPSBDdXN0b21UZXh0KCkKICAgIHRleHQudGFnX2NvbmZpZ3VyZSgicmVkIiwgZm9yZWdyb3VuZD0iI2ZmMDAwMCIpCiAgICB0ZXh0LmhpZ2hsaWdodF9wYXR0ZXJuKCJ0aGlzIHNob3VsZCBiZSByZWQiLCAicmVkIikKCiAgICBUaGUgaGlnaGxpZ2h0X3BhdHRlcm4gbWV0aG9kIGlzIGEgc2ltcGxpZmllZCBweXRob24KICAgIHZlcnNpb24gb2YgdGhlIHRjbCBjb2RlIGF0IGh0dHA6Ly93aWtpLnRjbC50ay8zMjQ2CiAgICAnJycKICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgIGdsb2JhbCB0awogICAgICAgIHRrLlRleHQuX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKQoKICAgIGRlZiBoaWdobGlnaHRfcGF0dGVybihzZWxmLCBwYXR0ZXJuLCB0YWcsIHN0YXJ0PSIxLjAiLCBlbmQ9ImVuZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnZXhwPUZhbHNlLCBhZnRlcj1GYWxzZSwgYWZ0ZXJjb3VudD0wKToKICAgICAgICAnJydBcHBseSB0aGUgZ2l2ZW4gdGFnIHRvIGFsbCB0ZXh0IHRoYXQgbWF0Y2hlcyB0aGUgZ2l2ZW4gcGF0dGVybgoKICAgICAgICBJZiAncmVnZXhwJyBpcyBzZXQgdG8gVHJ1ZSwgcGF0dGVybiB3aWxsIGJlIHRyZWF0ZWQgYXMgYSByZWd1bGFyCiAgICAgICAgZXhwcmVzc2lvbiBhY2NvcmRpbmcgdG8gVGNsJ3MgcmVndWxhciBleHByZXNzaW9uIHN5bnRheC4KICAgICAgICAnJycKCiAgICAgICAgc3RhcnQgPSBzZWxmLmluZGV4KHN0YXJ0KQogICAgICAgIGVuZCA9IHNlbGYuaW5kZXgoZW5kKQogICAgICAgIHNlbGYubWFya19zZXQoIm1hdGNoU3RhcnQiLCBzdGFydCkKICAgICAgICBzZWxmLm1hcmtfc2V0KCJtYXRjaEVuZCIsIHN0YXJ0KQogICAgICAgIHNlbGYubWFya19zZXQoInNlYXJjaExpbWl0IiwgZW5kKQoKICAgICAgICBjb3VudCA9IHRrLkludFZhcigpCiAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgaW5kZXggPSBzZWxmLnNlYXJjaChwYXR0ZXJuLCAibWF0Y2hFbmQiLCAic2VhcmNoTGltaXQiLCBjb3VudD1jb3VudCwgcmVnZXhwPXJlZ2V4cCkKICAgICAgICAgICAgaWYgaW5kZXggPT0gIiI6IGJyZWFrCiAgICAgICAgICAgIGlmIGNvdW50LmdldCgpID09IDA6IGJyZWFrICMgZGVnZW5lcmF0ZSBwYXR0ZXJuIHdoaWNoIG1hdGNoZXMgemVyby1sZW5ndGggc3RyaW5ncwogICAgICAgICAgICBpZiBhZnRlcjoKICAgICAgICAgICAgICAgIHNlbGYubWFya19zZXQoIm1hdGNoU3RhcnQiLCBzdHIoaW50KGZsb2F0KGluZGV4KSkpICsgIi4iICsgc3RyKGludChmbG9hdChpbmRleFtsZW4oc3RyKGludChmbG9hdChpbmRleCkpKSkgKyAxOl0pKSArIGludChhZnRlcmNvdW50KSkpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBzZWxmLm1hcmtfc2V0KCJtYXRjaFN0YXJ0IiwgaW5kZXgpCiAgICAgICAgICAgIHNlbGYubWFya19zZXQoIm1hdGNoRW5kIiwgIiVzKyVzYyIgJSAoaW5kZXgsIGNvdW50LmdldCgpKSkKICAgICAgICAgICAgc2VsZi50YWdfYWRkKHRhZywgIm1hdGNoU3RhcnQiLCAibWF0Y2hFbmQiKQogICAgICAgICAgICBzZWxmLnRhZ19yYWlzZSh0YWcpCgpjbGFzcyBFbnRyeVdQKHRrLkVudHJ5KToKICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXN0ZXI9Tm9uZSwgcGxhY2Vob2xkZXI9IiIsIGNvbG9yPSdncmV5JywgKiprd2FyZ3MpOgogICAgICAgIHN1cGVyKCkuX19pbml0X18obWFzdGVyKQoKICAgICAgICBzZWxmLmNvbmZpZyhrd2FyZ3MpCgogICAgICAgIHNlbGYucGxhY2Vob2xkZXIgPSBwbGFjZWhvbGRlcgogICAgICAgIHNlbGYucGxhY2Vob2xkZXJfY29sb3IgPSBjb2xvcgogICAgICAgIHNlbGYuZGVmYXVsdF9mZ19jb2xvciA9IHNlbGZbJ2ZnJ10KCiAgICAgICAgc2VsZi5iaW5kKCI8Rm9jdXNJbj4iLCBzZWxmLmZvY19pbikKICAgICAgICBzZWxmLmJpbmQoIjxGb2N1c091dD4iLCBzZWxmLmZvY19vdXQpCgogICAgICAgIHNlbGYucHV0X3BsYWNlaG9sZGVyKCkKCiAgICBkZWYgcHV0X3BsYWNlaG9sZGVyKHNlbGYpOgogICAgICAgIHNlbGYuaW5zZXJ0KDAsIHNlbGYucGxhY2Vob2xkZXIpCiAgICAgICAgc2VsZlsnZmcnXSA9IHNlbGYucGxhY2Vob2xkZXJfY29sb3IKCiAgICBkZWYgZm9jX2luKHNlbGYsICphcmdzKToKICAgICAgICBpZiBzZWxmWydmZyddID09IHNlbGYucGxhY2Vob2xkZXJfY29sb3I6CiAgICAgICAgICAgIHNlbGYuZGVsZXRlKCcwJywgJ2VuZCcpCiAgICAgICAgICAgIHNlbGZbJ2ZnJ10gPSBzZWxmLmRlZmF1bHRfZmdfY29sb3IKCiAgICBkZWYgZm9jX291dChzZWxmLCAqYXJncyk6CiAgICAgICAgaWYgbm90IHNlbGYuZ2V0KCk6CiAgICAgICAgICAgIHNlbGYucHV0X3BsYWNlaG9sZGVyKCkKCmRlZiBjYWxsYmFjayhlKToKICAgIGdsb2JhbCB0YgogICAgZ2xvYmFsIGxpbmVudW1iZXJzCiAgICBnbG9iYWwga2V5d29yZAogICAgZ2xvYmFsIGJ1aWx0aW5zCiAgICBnbG9iYWwgdHlwZXMKICAgIGlmIHRiLnRhZ19yYW5nZXMoJ3NlbCcpOgogICAgICAgIHRyYW5zZmVyc2VsZWN0aW9uID0gVHJ1ZQogICAgZWxzZToKICAgICAgICB0cmFuc2ZlcnNlbGVjdGlvbiA9IEZhbHNlCiAgICBpZiB0cmFuc2ZlcnNlbGVjdGlvbiA9PSBUcnVlOgogICAgICAgIHRiLm1hcmtfc2V0KCJzZWxlY3RTdGFydCIsICJzZWwuZmlyc3QiKQogICAgICAgIHRiLm1hcmtfc2V0KCJzZWxlY3RFbmQiLCAic2VsLmxhc3QiKQogICAgZWxzZToKICAgICAgICBwYXNzCiAgICBidWlsdGluX2Z1bmN0aW9uX25hbWVzID0gW25hbWUgZm9yIG5hbWUsIG9iaiBpbiB2YXJzKGJ1aWx0aW5zKS5pdGVtcygpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uob2JqLCB0eXBlcy5CdWlsdGluRnVuY3Rpb25UeXBlKSBvciBpc2luc3RhbmNlKG9iaiwgRXhjZXB0aW9uKV0KICAgIG1hbnVhbF9idWlsdGlucyA9IFsKICAgICAgICAiYm9vbCIsCiAgICAgICAgImJ5dGVhcnJheSIsCiAgICAgICAgImJ5dGVzIiwKICAgICAgICAiY2xhc3NtZXRob2QiLAogICAgICAgICJjb21wbGV4IiwKICAgICAgICAiZGljdCIsCiAgICAgICAgImVudW1lcmF0ZSIsCiAgICAgICAgImZpbHRlciIsCiAgICAgICAgImZsb2F0IiwKICAgICAgICAiZnJvemVuc2V0IiwKICAgICAgICAiaGVscCIsCiAgICAgICAgImludCIsCiAgICAgICAgImxpc3QiLAogICAgICAgICJtYXAiLAogICAgICAgICJtZW1vcnl2aWV3IiwKICAgICAgICAib2JqZWN0IiwKICAgICAgICAicHJvcGVydHkiLAogICAgICAgICJyYW5nZSIsCiAgICAgICAgInJldmVyc2VkIiwKICAgICAgICAic2V0IiwKICAgICAgICAic2xpY2UiLAogICAgICAgICJzdGF0aWNtZXRob2QiLAogICAgICAgICJzdHIiLAogICAgICAgICJzdXBlciIsCiAgICAgICAgInR1cGxlIiwKICAgICAgICAidHlwZSIsCiAgICAgICAgInppcCIsCiAgICAgICAgIkJhc2VFeGNlcHRpb24iLAogICAgICAgICJTeXN0ZW1FeGl0IiwKICAgICAgICAiS2V5Ym9hcmRJbnRlcnJ1cHQiLAogICAgICAgICJHZW5lcmF0b3JFeGl0IiwKICAgICAgICAiRXhjZXB0aW9uIiwKICAgICAgICAiU3RvcEl0ZXJhdGlvbiIsCiAgICAgICAgIlN0b3BBc3luY0l0ZXJhdGlvbiIsCiAgICAgICAgIkFyaXRobWV0aWNFcnJvciIsCiAgICAgICAgIkZsb2F0aW5nUG9pbnRFcnJvciIsCiAgICAgICAgIk92ZXJmbG93RXJyb3IiLAogICAgICAgICJaZXJvRGl2aXNpb25FcnJvciIsCiAgICAgICAgIkFzc2VydGlvbkVycm9yIiwKICAgICAgICAiQXR0cmlidXRlRXJyb3IiLAogICAgICAgICJCdWZmZXJFcnJvciIsCiAgICAgICAgIkVPRkVycm9yIiwKICAgICAgICAiSW1wb3J0RXJyb3IiLAogICAgICAgICJNb2R1bGVOb3RGb3VuZEVycm9yIiwKICAgICAgICAiTG9va3VwRXJyb3IiLAogICAgICAgICJJbmRleEVycm9yIiwKICAgICAgICAiS2V5RXJyb3IiLAogICAgICAgICJNZW1vcnlFcnJvciIsCiAgICAgICAgIk5hbWVFcnJvciIsCiAgICAgICAgIlVuYm91bmRMb2NhbEVycm9yIiwKICAgICAgICAiT1NFcnJvciIsCiAgICAgICAgIkJsb2NraW5nSU9FcnJvciIsCiAgICAgICAgIkNoaWxkUHJvY2Vzc0Vycm9yIiwKICAgICAgICAiQ29ubmVjdGlvbkVycm9yIiwKICAgICAgICAiQnJva2VuUGlwZUVycm9yIiwKICAgICAgICAiQ29ubmVjdGlvbkFib3J0ZWRFcnJvciIsCiAgICAgICAgIkNvbm5lY3Rpb25SZWZ1c2VkRXJyb3IiLAogICAgICAgICJDb25uZWN0aW9uUmVzZXRFcnJvciIsCiAgICAgICAgIkZpbGVFeGlzdHNFcnJvciIsCiAgICAgICAgIkZpbGVOb3RGb3VuZEVycm9yIiwKICAgICAgICAiSW50ZXJydXB0ZWRFcnJvciIsCiAgICAgICAgIklzQURpcmVjdG9yeUVycm9yIiwKICAgICAgICAiTm90QURpcmVjdG9yeUVycm9yIiwKICAgICAgICAiUGVybWlzc2lvbkVycm9yIiwKICAgICAgICAiUHJvY2Vzc0xvb2t1cEVycm9yIiwKICAgICAgICAiVGltZW91dEVycm9yIiwKICAgICAgICAiUmVmZXJlbmNlRXJyb3IiLAogICAgICAgICJSdW50aW1lRXJyb3IiLAogICAgICAgICJOb3RJbXBsZW1lbnRlZEVycm9yIiwKICAgICAgICAiUmVjdXJzaW9uRXJyb3IiLAogICAgICAgICJTeW50YXhFcnJvciIsCiAgICAgICAgIkluZGVudGF0aW9uRXJyb3IiLAogICAgICAgICJUYWJFcnJvciIsCiAgICAgICAgIlN5c3RlbUVycm9yIiwKICAgICAgICAiVHlwZUVycm9yIiwKICAgICAgICAiVmFsdWVFcnJvciIsCiAgICAgICAgIlVuaWNvZGVFcnJvciIsCiAgICAgICAgIlVuaWNvZGVEZWNvZGVFcnJvciIsCiAgICAgICAgIlVuaWNvZGVFbmNvZGVFcnJvciIsCiAgICAgICAgIlVuaWNvZGVUcmFuc2xhdGVFcnJvciIsCiAgICAgICAgIldhcm5pbmciLAogICAgICAgICJEZXByZWNhdGlvbldhcm5pbmciLAogICAgICAgICJQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nIiwKICAgICAgICAiUnVudGltZVdhcm5pbmciLAogICAgICAgICJTeW50YXhXYXJuaW5nIiwKICAgICAgICAiVXNlcldhcm5pbmciLAogICAgICAgICJGdXR1cmVXYXJuaW5nIiwKICAgICAgICAiSW1wb3J0V2FybmluZyIsCiAgICAgICAgIlVuaWNvZGVXYXJuaW5nIiwKICAgICAgICAiQnl0ZXNXYXJuaW5nIiwKICAgICAgICAiUmVzb3VyY2VXYXJuaW5nIgogICAgXQogICAgZm9yIHRhZyBpbiB0Yi50YWdfbmFtZXMoKToKICAgICAgICB0Yi50YWdfcmVtb3ZlKHRhZywgMS4wLCAnZW5kJykKICAgIGZvciBrdyBpbiBrZXl3b3JkLmt3bGlzdDoKICAgICAgICB0Yi5oaWdobGlnaHRfcGF0dGVybihyZiJceXtrd31ceSIsICJvcmFuZ2UiLCByZWdleHA9VHJ1ZSkKICAgIGZvciBiZiBpbiBidWlsdGluX2Z1bmN0aW9uX25hbWVzICsgbWFudWFsX2J1aWx0aW5zOgogICAgICAgIHRiLmhpZ2hsaWdodF9wYXR0ZXJuKHJmIlx5e2JmfVx5IiwgInB1cnBsZSIsIHJlZ2V4cD1UcnVlKQogICAgdGIuaGlnaGxpZ2h0X3BhdHRlcm4oIlx5X19wZWdfcGFyc2VyX19ceSIsICJlYXN0ZXJlZ2ciLCByZWdleHA9VHJ1ZSkKICAgIHRiLmhpZ2hsaWdodF9wYXR0ZXJuKHIiKD86ZGVmICkrW1x3XSoiLCAieWVsbG93IiwgcmVnZXhwPVRydWUsIGFmdGVyPVRydWUsIGFmdGVyY291bnQ9NCkKICAgIHRiLmhpZ2hsaWdodF9wYXR0ZXJuKHIiKD86Y2xhc3MgKStbXHddKiIsICJ5ZWxsb3ciLCByZWdleHA9VHJ1ZSwgYWZ0ZXI9VHJ1ZSwgYWZ0ZXJjb3VudD02KQogICAgdGIuaGlnaGxpZ2h0X3BhdHRlcm4ociJceV9faW5pdF9fXHkiLCAiY2xhc3NmdW5jdGlvbiIsIHJlZ2V4cD1UcnVlKQogICAgdGIuaGlnaGxpZ2h0X3BhdHRlcm4ocidceVxkJywgImJsdWUiLCByZWdleHA9VHJ1ZSkKICAgIHRiLmhpZ2hsaWdodF9wYXR0ZXJuKCcsJywgIm9yYW5nZSIpCiAgICB0Yi5oaWdobGlnaHRfcGF0dGVybignWy46Oz1cKFwpXFtcXVx7XH08PiFcK1wtXCpcL1xeXCVdJywgImRhcmsiLCByZWdleHA9VHJ1ZSkKICAgIHRiLmhpZ2hsaWdodF9wYXR0ZXJuKCcqYXJncycsICJibHVlIikKICAgIHRiLmhpZ2hsaWdodF9wYXR0ZXJuKCcqKmt3YXJncycsICJibHVlIikKICAgIHRiLmhpZ2hsaWdodF9wYXR0ZXJuKHIiXHlzZWxmXHkiLCAicHVycGxlIiwgcmVnZXhwPVRydWUpCiAgICB0Yi5oaWdobGlnaHRfcGF0dGVybihyIlx5ZnJhbWUxXHkiLCAicHVycGxlIiwgcmVnZXhwPVRydWUpCiAgICB0Yi5oaWdobGlnaHRfcGF0dGVybihyJyIoW14iXSpbLl0qKSInLCAiZ3JlZW4iLCByZWdleHA9VHJ1ZSkKICAgIHRiLmhpZ2hsaWdodF9wYXR0ZXJuKHIiJyhbXiddKlsuXSopJyIsICJncmVlbiIsIHJlZ2V4cD1UcnVlKQogICAgdGIuaGlnaGxpZ2h0X3BhdHRlcm4ociIoP3MpKFwiXCJcIigoPyFcIlwiXCIpW15cXF18XFxbYWJmbnJ0dj9cIidcXDAtN118XFx4WzAtOWEtZkEtRl0pKlwiXCJcIikiLCAibWxjIiwgcmVnZXhwPVRydWUpCiAgICB0Yi5oaWdobGlnaHRfcGF0dGVybihyIig/cykoXCdcJ1wnKCg/IVwnXCdcJylbXlxcXXxcXFthYmZucnR2PydcIlxcMC03XXxcXHhbMC05YS1mQS1GXSkqXCdcJ1wnKSIsICJtbGMiLCByZWdleHA9VHJ1ZSkKICAgIHRiLmhpZ2hsaWdodF9wYXR0ZXJuKHIiIyhbXiddKlsuXSopXG4iLCAiY29tbWVudCIsIHJlZ2V4cD1UcnVlKQogICAgdGIudGFnX3JhaXNlKCJncmVlbiIpCiAgICB0Yi50YWdfcmFpc2UoIm1sYyIpCiAgICB0Yi50YWdfcmFpc2UoImVhc3RlcmVnZyIpCiAgICBsaW5lbnVtYmVycy5jb25maWcoc3RhdGU9J25vcm1hbCcpCiAgICBsaW5lbnVtYmVycy5kZWxldGUoMS4wLCAnZW5kJykKICAgIGxpbmVudW1iZXJzLmluc2VydCgnZW5kJywgJzEnKQogICAgZm9yIGkgaW4gcmFuZ2UoaW50KHRiLmluZGV4KCdlbmQtMWMnKS5zcGxpdCgnLicpWzBdKSAtIDEpOgogICAgICAgIGxpbmVudW1iZXJzLmluc2VydCgnZW5kJywgIlxuIiArIHN0cihpICsgMikpCiAgICBsaW5lbnVtYmVycy50YWdfYWRkKCdyaWdodCcsICcxLjAnLCAnZW5kJykKICAgIGlmIGxlbih0Yi5pbmRleCgnZW5kLTFjJykuc3BsaXQoJy4nKVswXSkgPiA0OgogICAgICAgIGxpbmVudW1iZXJzLmNvbmZpZyh3aWR0aD1sZW4odGIuaW5kZXgoJ2VuZC0xYycpLnNwbGl0KCcuJylbMF0pKQogICAgZWxzZToKICAgICAgICBsaW5lbnVtYmVycy5jb25maWcod2lkdGg9NCkKICAgIGxpbmVudW1iZXJzLmNvbmZpZyhzdGF0ZT0nZGlzYWJsZWQnKQogICAgbGluZW51bWJlcnMueXZpZXdfbW92ZXRvKHRiLnl2aWV3KClbMF0pCiAgICBpZiB0cmFuc2ZlcnNlbGVjdGlvbiA9PSBUcnVlOgogICAgICAgIHRiLnRhZ19hZGQoJ3NlbCcsICJzZWxlY3RTdGFydCIsICJzZWxlY3RFbmQiKQogICAgZWxzZToKICAgICAgICBwYXNzCgpkZWYgdGFiX2luc2VydChlKToKICAgIHRiLmluc2VydCgiaW5zZXJ0IiwgIiAgICAiKQogICAgcmV0dXJuICJicmVhayIKCmRlZiBzYXZlKCk6CiAgICBsb2NhdGlvbiA9IGZkLmFza3NhdmVhc2ZpbGVuYW1lKHRpdGxlPSJTYXZlIGFzIFRFUCIsIGRlZmF1bHRleHRlbnNpb249Ii50ZXAiLCBmaWxldHlwZXM9WygiVGVjaHBhZCBFeGVjdXRhYmxlIFB5dGhvbiBGaWxlcyIsICIudGVwIiksICgiUHl0aG9uIEZpbGVzIiwgIi5weSIpLCAoIkFsbCBGaWxlcyIsICIqIildKQogICAgd2l0aCBvcGVuKGxvY2F0aW9uLCAidyIpIGFzIGY6CiAgICAgICAgZi53cml0ZSh0Yi5nZXQoIjEuMCIsICJlbmQtMWMiKSkKCmRlZiBjb21waWxlKCk6CiAgICBnbG9iYWwgZmQsIG1iLCB3aW54ZW50cnksIHdpbnllbnRyeSwgd2lud2lkdGhlbnRyeSwgd2luaGVpZ2h0ZW50cnksIHdpbnRpdGxlZW50cnkKICAgIGltcG9ydCBiYXNlNjQKICAgIGNvZGUgPSB0Yi5nZXQoIjEuMCIsICJlbmQtMWMiKQogICAgaW5mb2xpc3QgPSB7fQogICAgaWYgbm90IHdpbnhlbnRyeS5nZXQoKSA9PSAiIiBhbmQgd2lueGVudHJ5LmdldCgpLmlzbnVtZXJpYygpOgogICAgICAgIGluZm9saXN0WyJXSU5YIl0gPSBpbnQod2lueGVudHJ5LmdldCgpKQogICAgaWYgbm90IHdpbnllbnRyeS5nZXQoKSA9PSAiIiBhbmQgd2lueWVudHJ5LmdldCgpLmlzbnVtZXJpYygpOgogICAgICAgIGluZm9saXN0WyJXSU5ZIl0gPSBpbnQod2lueWVudHJ5LmdldCgpKQogICAgaWYgbm90IHdpbndpZHRoZW50cnkuZ2V0KCkgPT0gIiIgYW5kIHdpbndpZHRoZW50cnkuZ2V0KCkuaXNudW1lcmljKCk6CiAgICAgICAgaW5mb2xpc3RbIldJTldJRFRIIl0gPSBpbnQod2lud2lkdGhlbnRyeS5nZXQoKSkKICAgIGlmIG5vdCB3aW5oZWlnaHRlbnRyeS5nZXQoKSA9PSAiIiBhbmQgd2luaGVpZ2h0ZW50cnkuZ2V0KCkuaXNudW1lcmljKCk6CiAgICAgICAgaW5mb2xpc3RbIldJTkhFSUdIVCJdID0gaW50KHdpbmhlaWdodGVudHJ5LmdldCgpKQogICAgaWYgbm90IHdpbnRpdGxlZW50cnkuZ2V0KCkgPT0gIiIgYW5kIG5vdCB3aW50aXRsZWVudHJ5WyJmZyJdID09IHdpbnRpdGxlZW50cnkucGxhY2Vob2xkZXJfY29sb3I6CiAgICAgICAgaW5mb2xpc3RbIlRJVExFIl0gPSB3aW50aXRsZWVudHJ5LmdldCgpCiAgICBpbmZvID0gc3RyKGluZm9saXN0KQogICAgdHJ5OgogICAgICAgIGZvciBpIGluICIuIjoKICAgICAgICAgICAgd2l0aCBvcGVuKGZkLmFza29wZW5maWxlbmFtZSh0aXRsZT0iU2VsZWN0IGljb24gZmlsZSIsIGZpbGV0eXBlcz1bKCJQTkcgSW1hZ2VzIiwgIi5wbmciKSwgKCJBbGwgRmlsZXMiLCAiKiIpXSksICJyYiIpIGFzIGY6CiAgICAgICAgICAgICAgICBpY29uID0gZi5yZWFkKCkKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgY29kZV9jID0gYmFzZTY0LmI2NGVuY29kZShjb2RlLmVuY29kZSgiYXNjaWkiKSkKICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKICAgICAgICAgICAgICAgIG1iLnNob3dlcnJvcigiRmFpbGVkIHRvIGNvbXBpbGUgY29kZSIsICJZb3VyIGNvZGUgbWlnaHQgY29udGFpbiBhIG5vbi1hc2NpaSBjaGFyYWN0ZXIuIFBsZWFzZSByZXBsYWNlIGFsbCBub24tYXNjaWkgY2hhcmFjdGVycyB3aXRoIFVuaWNvZGUgZXNjYXBlIHNlcXVlbmNlcy4iKQogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgaW5mb19jID0gYmFzZTY0LmI2NGVuY29kZShpbmZvLmVuY29kZSgiYXNjaWkiKSkKICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKICAgICAgICAgICAgICAgIG1iLnNob3dlcnJvcigiRmFpbGVkIHRvIGNvbXBpbGUgaW5mbyIsICJUaGUgaW5mbyBjb250YWlucyBhIG5vbi1hc2NpaSBjaGFyYWN0ZXIuIFBsZWFzZSB1c2UgdW5pY29kZSBlc2NhcGUgY29kZXMgdG8gdXNlIHVuaWNvZGUgY2hhcmFjdGVycy4iKQogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgaWNvbl9jID0gYmFzZTY0LmI2NGVuY29kZShpY29uKQogICAgICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICAgICBtYi5zaG93ZXJyb3IoIkZhaWxlZCB0byBmb3JtYXQgaWNvbiIsICJUaGUgaWNvbiBzZWVtcyB0byBub3QgYmUgaW4gYmluYXJ5IGZvcm1hdC4iKQogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgZmluYWxjb2RlID0gZiJURUJpbmljY28oXHUwMGE3SU4pe2luZm9fYy5kZWNvZGUoJ2FzY2lpJyl9KFx1MDBhN0lDKXtpY29uX2MuZGVjb2RlKCdhc2NpaScpfShcdTAwYTdDTyl7Y29kZV9jLmRlY29kZSgnYXNjaWknKX0oXHUwMGE3RU4pIgogICAgICAgICAgICB3aXRoIG9wZW4oZmQuYXNrc2F2ZWFzZmlsZW5hbWUodGl0bGU9IlNhdmUgZmluYWwgZXhlY3V0YWJsZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxldHlwZXM9WygiVGVjaHBhZCBFeGVjdXRhYmxlIEJpbmFyeSBGaWxlcyIsICIudGViIiksICgiQWxsIEZpbGVzIiwgIioiKV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0ZXh0ZW5zaW9uPSIudGViIiksICJ3IikgYXMgZjoKICAgICAgICAgICAgICAgIGYud3JpdGUoZmluYWxjb2RlKQogICAgZXhjZXB0OgogICAgICAgIHBhc3MKCmRlZiBvcGVucHJvZ3JhbSgpOgogICAgdHJ5OgogICAgICAgIGdsb2JhbCBjYWxsYmFjawogICAgICAgIGZpbGV0b29wZW4gPSBmZC5hc2tvcGVuZmlsZW5hbWUodGl0bGU9Ik9wZW4gVEVQIG9yIFRFQiIsIGZpbGV0eXBlcz1bKCJBbGwgU3VwcG9ydGVkIEZpbGVzIiwgIi50ZWIgLnRlcCIpLCAoIlRlY2hwYWQgRXhlY3V0YWJsZSBCaW5hcnkgRmlsZXMiLCAiLnRlYiIpLCAoIlRlY2hwYWQgRXhlY3V0YWJsZSBQeXRob24gRmlsZXMiLCAiLnRlcCIpLCAoIkFsbCBGaWxlcyIsICIqIildKQogICAgICAgIHdpdGggb3BlbihmaWxldG9vcGVuLCAiciIpIGFzIGY6CiAgICAgICAgICAgIGlmIGZpbGV0b29wZW4uZW5kc3dpdGgoIi50ZWIiKToKICAgICAgICAgICAgICAgIGltcG9ydCBiYXNlNjQKICAgICAgICAgICAgICAgIGltcG9ydCBhc3QKICAgICAgICAgICAgICAgIGluZm9naXZlbiA9IFRydWUKICAgICAgICAgICAgICAgIHByb2dyYW0gPSBmLnJlYWQoKQogICAgICAgICAgICAgICAgaW5mb3NlY3Rpb24gPSBwcm9ncmFtLnNwbGl0KCJURUJpbmljY28oXHUwMGE3SU4pIilbMV0uc3BsaXQoIihcdTAwYTdJQykiKVswXQogICAgICAgICAgICAgICAgY29kZXNlY3Rpb24gPSBwcm9ncmFtLnNwbGl0KCIoXHUwMGE3Q08pIilbMV0uc3BsaXQoIihcdTAwYTdFTikiKVswXQogICAgICAgICAgICAgICAgaW5mbyA9IGFzdC5saXRlcmFsX2V2YWwoYmFzZTY0LmRlY29kZWJ5dGVzKGluZm9zZWN0aW9uLmVuY29kZSgiYXNjaWkiKSkuZGVjb2RlKCdhc2NpaScpKQogICAgICAgICAgICAgICAgY29kZSA9IGJhc2U2NC5kZWNvZGVieXRlcyhjb2Rlc2VjdGlvbi5lbmNvZGUoJ2FzY2lpJykpLmRlY29kZSgnYXNjaWknKQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgaW5mb2dpdmVuID0gRmFsc2UKICAgICAgICAgICAgICAgIGNvZGUgPSBmLnJlYWQoKQogICAgICAgIHRiLmRlbGV0ZSgnMS4wJywgJ2VuZCcpCiAgICAgICAgdGIuaW5zZXJ0KCcxLjAnLCBjb2RlKQogICAgICAgIGdsb2JhbCB3aW54ZW50cnksIHdpbnllbnRyeSwgd2lud2lkdGhlbnRyeSwgd2luaGVpZ2h0ZW50cnksIHdpbnRpdGxlZW50cnkKICAgICAgICBpZiBpbmZvZ2l2ZW46CiAgICAgICAgICAgIHdpbnhlbnRyeS5mb2NfaW4oKQogICAgICAgICAgICB3aW55ZW50cnkuZm9jX2luKCkKICAgICAgICAgICAgd2lud2lkdGhlbnRyeS5mb2NfaW4oKQogICAgICAgICAgICB3aW5oZWlnaHRlbnRyeS5mb2NfaW4oKQogICAgICAgICAgICB3aW50aXRsZWVudHJ5LmZvY19pbigpCiAgICAgICAgICAgIHdpbnhlbnRyeS5kZWxldGUoMCwgJ2VuZCcpCiAgICAgICAgICAgIHdpbnllbnRyeS5kZWxldGUoMCwgJ2VuZCcpCiAgICAgICAgICAgIHdpbndpZHRoZW50cnkuZGVsZXRlKDAsICdlbmQnKQogICAgICAgICAgICB3aW5oZWlnaHRlbnRyeS5kZWxldGUoMCwgJ2VuZCcpCiAgICAgICAgICAgIHdpbnRpdGxlZW50cnkuZGVsZXRlKDAsICdlbmQnKQogICAgICAgICAgICB3aW54ZW50cnkuaW5zZXJ0KDAsIGluZm8uZ2V0KCJXSU5YIiwgIiIpKQogICAgICAgICAgICB3aW55ZW50cnkuaW5zZXJ0KDAsIGluZm8uZ2V0KCJXSU5ZIiwgIiIpKQogICAgICAgICAgICB3aW53aWR0aGVudHJ5Lmluc2VydCgwLCBpbmZvLmdldCgiV0lOV0lEVEgiLCAiIikpCiAgICAgICAgICAgIHdpbmhlaWdodGVudHJ5Lmluc2VydCgwLCBpbmZvLmdldCgiV0lOSEVJR0hUIiwgIiIpKQogICAgICAgICAgICB3aW50aXRsZWVudHJ5Lmluc2VydCgwLCBpbmZvLmdldCgiVElUTEUiLCAiIikpCiAgICAgICAgICAgIHdpbnhlbnRyeS5mb2Nfb3V0KCkKICAgICAgICAgICAgd2lueWVudHJ5LmZvY19vdXQoKQogICAgICAgICAgICB3aW53aWR0aGVudHJ5LmZvY19vdXQoKQogICAgICAgICAgICB3aW5oZWlnaHRlbnRyeS5mb2Nfb3V0KCkKICAgICAgICAgICAgd2ludGl0bGVlbnRyeS5mb2Nfb3V0KCkKICAgICAgICBlbHNlOgogICAgICAgICAgICB3aW54ZW50cnkuZm9jX2luKCkKICAgICAgICAgICAgd2lueWVudHJ5LmZvY19pbigpCiAgICAgICAgICAgIHdpbndpZHRoZW50cnkuZm9jX2luKCkKICAgICAgICAgICAgd2luaGVpZ2h0ZW50cnkuZm9jX2luKCkKICAgICAgICAgICAgd2ludGl0bGVlbnRyeS5mb2NfaW4oKQogICAgICAgICAgICB3aW54ZW50cnkuZGVsZXRlKDAsICdlbmQnKQogICAgICAgICAgICB3aW55ZW50cnkuZGVsZXRlKDAsICdlbmQnKQogICAgICAgICAgICB3aW53aWR0aGVudHJ5LmRlbGV0ZSgwLCAnZW5kJykKICAgICAgICAgICAgd2luaGVpZ2h0ZW50cnkuZGVsZXRlKDAsICdlbmQnKQogICAgICAgICAgICB3aW50aXRsZWVudHJ5LmRlbGV0ZSgwLCAnZW5kJykKICAgICAgICAgICAgd2lueGVudHJ5LmZvY19vdXQoKQogICAgICAgICAgICB3aW55ZW50cnkuZm9jX291dCgpCiAgICAgICAgICAgIHdpbndpZHRoZW50cnkuZm9jX291dCgpCiAgICAgICAgICAgIHdpbmhlaWdodGVudHJ5LmZvY19vdXQoKQogICAgICAgICAgICB3aW50aXRsZWVudHJ5LmZvY19vdXQoKQogICAgICAgIGNhbGxiYWNrKCIiKQogICAgZXhjZXB0OgogICAgICAgIGdsb2JhbCBtYgogICAgICAgIG1iLnNob3dlcnJvcigiRXJyb3IgbG9hZGluZyBmaWxlIiwgIkFuIHVua25vd24gZXJyb3IgaGFzIG9jY3VyZWQuIFlvdXIgd29yayBoYXMgbm90IGJlZW4gY2hhbmdlZC4iKQoKZGVmIG5ld3Byb2dyYW0oKToKICAgIGdsb2JhbCB3aW54ZW50cnksIHdpbnllbnRyeSwgd2lud2lkdGhlbnRyeSwgd2luaGVpZ2h0ZW50cnksIHdpbnRpdGxlZW50cnksIGNhbGxiYWNrCiAgICB0Yi5kZWxldGUoJzEuMCcsICdlbmQnKQogICAgd2lueGVudHJ5LmZvY19pbigpCiAgICB3aW55ZW50cnkuZm9jX2luKCkKICAgIHdpbndpZHRoZW50cnkuZm9jX2luKCkKICAgIHdpbmhlaWdodGVudHJ5LmZvY19pbigpCiAgICB3aW50aXRsZWVudHJ5LmZvY19pbigpCiAgICB3aW54ZW50cnkuZGVsZXRlKDAsICdlbmQnKQogICAgd2lueWVudHJ5LmRlbGV0ZSgwLCAnZW5kJykKICAgIHdpbndpZHRoZW50cnkuZGVsZXRlKDAsICdlbmQnKQogICAgd2luaGVpZ2h0ZW50cnkuZGVsZXRlKDAsICdlbmQnKQogICAgd2ludGl0bGVlbnRyeS5kZWxldGUoMCwgJ2VuZCcpCiAgICB3aW54ZW50cnkuZm9jX291dCgpCiAgICB3aW55ZW50cnkuZm9jX291dCgpCiAgICB3aW53aWR0aGVudHJ5LmZvY19vdXQoKQogICAgd2luaGVpZ2h0ZW50cnkuZm9jX291dCgpCiAgICB3aW50aXRsZWVudHJ5LmZvY19vdXQoKQogICAgY2FsbGJhY2soIiIpCgp0b3BiYXJob2xkZXIgPSB0ay5GcmFtZShfcm9vdCwgYmc9J2dyYXk1MCcsIGJkPTApCnRvcGJhcmhvbGRlci5wYWNrKGZpbGw9J3gnKQp0b3BiYXIgPSB0ay5GcmFtZSh0b3BiYXJob2xkZXIsIGJnPSdncmF5MzAnLCBiZD0wKQp0b3BiYXIucGFjayhmaWxsPSd4JywgcGFkeT0oMCwgMSkpCgpuZXdidG4gPSB0ay5CdXR0b24odG9wYmFyLCBiZz0nZ3JheTMwJywgYWN0aXZlYmFja2dyb3VuZD0nc2t5Ymx1ZScsIGZnPSdncmF5OTAnLCBhY3RpdmVmb3JlZ3JvdW5kPSd3aGl0ZScsIHRleHQ9J05ldycsIGJkPTAsIHBhZHg9MiwgY29tbWFuZD1uZXdwcm9ncmFtKQpuZXdidG4ucGFjayhzaWRlPSdsZWZ0JywgYW5jaG9yPSd3JykKCm9wZW5idG4gPSB0ay5CdXR0b24odG9wYmFyLCBiZz0nZ3JheTMwJywgYWN0aXZlYmFja2dyb3VuZD0nc2t5Ymx1ZScsIGZnPSdncmF5OTAnLCBhY3RpdmVmb3JlZ3JvdW5kPSd3aGl0ZScsIHRleHQ9J09wZW4nLCBiZD0wLCBwYWR4PTIsIGNvbW1hbmQ9b3BlbnByb2dyYW0pCm9wZW5idG4ucGFjayhzaWRlPSdsZWZ0JywgYW5jaG9yPSd3JykKCnNhdmVidG4gPSB0ay5CdXR0b24odG9wYmFyLCBiZz0nZ3JheTMwJywgYWN0aXZlYmFja2dyb3VuZD0nc2t5Ymx1ZScsIGZnPSdncmF5OTAnLCBhY3RpdmVmb3JlZ3JvdW5kPSd3aGl0ZScsIHRleHQ9J1NhdmUnLCBiZD0wLCBwYWR4PTIsIGNvbW1hbmQ9c2F2ZSkKc2F2ZWJ0bi5wYWNrKHNpZGU9J2xlZnQnLCBhbmNob3I9J3cnKQoKY29tcGlsZWJ0biA9IHRrLkJ1dHRvbih0b3BiYXIsIGJnPSdncmF5MzAnLCBhY3RpdmViYWNrZ3JvdW5kPSdza3libHVlJywgZmc9J2dyYXk5MCcsIGFjdGl2ZWZvcmVncm91bmQ9J3doaXRlJywgdGV4dD0nQ29tcGlsZScsIGJkPTAsIHBhZHg9MiwgY29tbWFuZD1jb21waWxlKQpjb21waWxlYnRuLnBhY2soc2lkZT0nbGVmdCcsIGFuY2hvcj0ndycpCgpkZWYgX191cGRhdGVTY3JvbGwoZmlyc3QsIGxhc3QsIHR5cGU9Tm9uZSk6CiAgICBnbG9iYWwgbGluZW51bWJlcnMKICAgIGdsb2JhbCB0YgogICAgZ2xvYmFsIHRic2Nyb2xsYmFyeQogICAgdGIueXZpZXdfbW92ZXRvKGZpcnN0KQogICAgbGluZW51bWJlcnMueXZpZXdfbW92ZXRvKGZpcnN0KQogICAgdGJzY3JvbGxiYXJ5LnNldChmaXJzdCwgbGFzdCkKCm1haW5mcmFtZSA9IHRrLkZyYW1lKF9yb290LCBiZD0wLCBiZz0nZ3JheTMwJykKbWFpbmZyYW1lLnBhY2soc2lkZT0nbGVmdCcsIGV4cGFuZD1UcnVlLCBmaWxsPSdib3RoJykKCmNvbnRlbnQgPSB0ay5GcmFtZShtYWluZnJhbWUsIGJkPTAsIGJnPSdncmF5MzAnKQpjb250ZW50LnBhY2soc2lkZT0ndG9wJywgZXhwYW5kPVRydWUsIGZpbGw9J2JvdGgnKQoKbGluZW51bWJlcnMgPSB0ay5UZXh0KGNvbnRlbnQsIHdpZHRoPTQsIGZvbnQ9J2NvbnNvbGFzJywgYmc9J2dyYXkzMCcsIGZnPSdncmF5NTAnLCBzdGF0ZT0nZGlzYWJsZWQnLCBiZD0wLCBwYWR4PTUsIHlzY3JvbGxjb21tYW5kPV9fdXBkYXRlU2Nyb2xsLCBzZWxlY3RiYWNrZ3JvdW5kPSdncmF5MzAnLCBzZWxlY3Rmb3JlZ3JvdW5kPSdncmF5NTAnKQpsaW5lbnVtYmVycy5wYWNrKHNpZGU9J2xlZnQnLCBmaWxsPSdib3RoJykKbGluZW51bWJlcnMudGFnX2NvbmZpZ3VyZSgncmlnaHQnLCBqdXN0aWZ5PSdyaWdodCcpCgp0YiA9IEN1c3RvbVRleHQoY29udGVudCwgZm9udD0nY29uc29sYXMnLCBiZz0nZ3JheTIwJywgZmc9J2dyYXk4MCcsIGluc2VydGJhY2tncm91bmQ9J2dyYXk4MCcsIGJkPTAsIHlzY3JvbGxjb21tYW5kPV9fdXBkYXRlU2Nyb2xsLCBwYWR4PTUsIHdyYXA9Im5vbmUiKQp0Yi50YWdfY29uZmlndXJlKCJvcmFuZ2UiLCBmb3JlZ3JvdW5kPSJvcmFuZ2UiKQp0Yi50YWdfY29uZmlndXJlKCJ5ZWxsb3ciLCBmb3JlZ3JvdW5kPSJ5ZWxsb3ciKQp0Yi50YWdfY29uZmlndXJlKCJtbGMiLCBmb3JlZ3JvdW5kPSJsaWdodGdyZWVuIiwgZm9udD0iY29uc29sYXMgMTIgaXRhbGljIikKdGIudGFnX2NvbmZpZ3VyZSgiZ3JlZW4iLCBmb3JlZ3JvdW5kPSJncmVlbiIsIHNlbGVjdGZvcmVncm91bmQ9ImdyZWVuMiIpCnRiLnRhZ19jb25maWd1cmUoImJsdWUiLCBmb3JlZ3JvdW5kPSJza3libHVlIikKdGIudGFnX2NvbmZpZ3VyZSgicHVycGxlIiwgZm9yZWdyb3VuZD0icHVycGxlMSIsIHNlbGVjdGZvcmVncm91bmQ9Im1lZGl1bXB1cnBsZTEiKQp0Yi50YWdfY29uZmlndXJlKCJjbGFzc2Z1bmN0aW9uIiwgZm9yZWdyb3VuZD0icHVycGxlMyIsIHNlbGVjdGZvcmVncm91bmQ9InB1cnBsZTQiKQp0Yi50YWdfY29uZmlndXJlKCJkYXJrIiwgZm9yZWdyb3VuZD0iZ3JheTUwIiwgc2VsZWN0Zm9yZWdyb3VuZD0iZ3JheTc1IikKdGIudGFnX2NvbmZpZ3VyZSgiY29tbWVudCIsIGZvcmVncm91bmQ9ImdyYXk2MCIpCnRiLnRhZ19jb25maWd1cmUoImVhc3RlcmVnZyIsIGZvcmVncm91bmQ9InJlZCIsIGZvbnQ9ImNvbnNvbGFzIDEyIGJvbGQgaXRhbGljIikKdGIuYmluZCgiPEtleVJlbGVhc2U+IiwgY2FsbGJhY2spCnRiLmJpbmQoIjxUYWI+IiwgdGFiX2luc2VydCkKdGIucGFjayhzaWRlPSdsZWZ0JywgZXhwYW5kPVRydWUsIGZpbGw9J2JvdGgnKQoKdGJzY3JvbGxiYXJ5ID0gdGsuU2Nyb2xsYmFyKGNvbnRlbnQsIGNvbW1hbmQ9dGIueXZpZXcsIHdpZHRoPTEzKQp0YnNjcm9sbGJhcnkucGFjayhzaWRlPSdsZWZ0JywgZmlsbD0neScpCgppbmZvZnJhbWUgPSB0ay5GcmFtZShfcm9vdCwgYmc9J2dyYXkzMCcsIGJkPTApCmluZm9mcmFtZS5wYWNrKHNpZGU9J2xlZnQnLCBmaWxsPSdib3RoJykKCnRic2Nyb2xsYmFyeCA9IHRrLlNjcm9sbGJhcihtYWluZnJhbWUsIGNvbW1hbmQ9dGIueHZpZXcsIG9yaWVudD0naG9yaXpvbnRhbCcsIHdpZHRoPTEzKQp0YnNjcm9sbGJhcngucGFjayhzaWRlPSdib3R0b20nLCBmaWxsPSd4JywgYW5jaG9yPSdzJykKCnRiLmNvbmZpZyh4c2Nyb2xsY29tbWFuZD10YnNjcm9sbGJhcnguc2V0KQoKaW5mb2xhYmVsID0gdGsuTGFiZWwoaW5mb2ZyYW1lLCBiZz0nZ3JheTMwJywgZmc9J2dyYXk5MCcsIHRleHQ9J1Byb2dyYW0gSW5mbycsIGZvbnQ9J1RrRGVmYXVsdEZvbnQgMjAnKQppbmZvbGFiZWwucGFjayhhbmNob3I9J253JywgcGFkeD0oNSwgMjApKQoKd2lueGVudHJ5ID0gRW50cnlXUChpbmZvZnJhbWUsIGJnPSdncmF5MjAnLCBiZD0wLCBmZz0nZ3JheTgwJywgY29sb3I9J2dyYXk1MCcsIHBsYWNlaG9sZGVyPSdXaW5kb3cgWCBQb3NpdGlvbiBbV0lOWF0nLCBpbnNlcnRiYWNrZ3JvdW5kPSdncmF5ODAnKQp3aW55ZW50cnkgPSBFbnRyeVdQKGluZm9mcmFtZSwgYmc9J2dyYXkyMCcsIGJkPTAsIGZnPSdncmF5ODAnLCBjb2xvcj0nZ3JheTUwJywgcGxhY2Vob2xkZXI9J1dpbmRvdyBZIFBvc2l0aW9uIFtXSU5ZXScsIGluc2VydGJhY2tncm91bmQ9J2dyYXk4MCcpCndpbndpZHRoZW50cnkgPSBFbnRyeVdQKGluZm9mcmFtZSwgYmc9J2dyYXkyMCcsIGJkPTAsIGZnPSdncmF5ODAnLCBjb2xvcj0nZ3JheTUwJywgcGxhY2Vob2xkZXI9J1dpbmRvdyBXaWR0aCBbV0lOV0lEVEhdJywgaW5zZXJ0YmFja2dyb3VuZD0nZ3JheTgwJykKd2luaGVpZ2h0ZW50cnkgPSBFbnRyeVdQKGluZm9mcmFtZSwgYmc9J2dyYXkyMCcsIGJkPTAsIGZnPSdncmF5ODAnLCBjb2xvcj0nZ3JheTUwJywgcGxhY2Vob2xkZXI9J1dpbmRvdyBIZWlnaHQgW1dJTkhFSUdIVF0nLCBpbnNlcnRiYWNrZ3JvdW5kPSdncmF5ODAnKQp3aW50aXRsZWVudHJ5ID0gRW50cnlXUChpbmZvZnJhbWUsIGJnPSdncmF5MjAnLCBiZD0wLCBmZz0nZ3JheTgwJywgY29sb3I9J2dyYXk1MCcsIHBsYWNlaG9sZGVyPSdXaW5kb3cgVGl0bGUgW1RJVExFXScsIGluc2VydGJhY2tncm91bmQ9J2dyYXk4MCcpCgp3aW54ZW50cnkucGFjayhwYWR5PSgyMCwwKSwgcGFkeD0xMCwgZmlsbD0neCcpCndpbnllbnRyeS5wYWNrKHBhZHk9KDIwLDApLCBwYWR4PTEwLCBmaWxsPSd4JykKd2lud2lkdGhlbnRyeS5wYWNrKHBhZHk9KDIwLDApLCBwYWR4PTEwLCBmaWxsPSd4JykKd2luaGVpZ2h0ZW50cnkucGFjayhwYWR5PSgyMCwwKSwgcGFkeD0xMCwgZmlsbD0neCcpCndpbnRpdGxlZW50cnkucGFjayhwYWR5PSgyMCwwKSwgcGFkeD0xMCwgZmlsbD0neCcpCgpjYWxsYmFjaygiIikKCiMgX3Jvb3QubWFpbmxvb3AoKQ==(§EN)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement