Загрузка данных
PCMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ck5lb2Y8ZXRjaCBVbHRpbWF0ZSBmb3IgV2luZG93cyAoV2luUEVBUyBTdHlsZSkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiM+CgpwYXJhbSgpCgojIC0tLSDQndCw0YHRgtGA0L7QudC60Lgg0LLRi9Cy0L7QtNCwINC4INC60L7QtNC40YDQvtCy0LrQuCAtLS0KW0NvbnNvbGVdOjpPdXRwdXRFbmNvZGluZyA9IFtTeXN0ZW0uVGV4dC5FbmNvZGluZ106OlVURjgKICRPdXRwdXRFbmNvZGluZyA9IFtTeXN0ZW0uVGV4dC5FbmNvZGluZ106OlVURjgKICRFcnJvckFjdGlvblByZWZlcmVuY2UgPSAiU2lsZW50bHlDb250aW51ZSIKICRIb3N0LlVJLlJhd1VJLldpbmRvd1RpdGxlID0gIk5lb2ZldGNoIFVsdGltYXRlIC0gU3lzdGVtIEFuYWx5c2lzIgoKZnVuY3Rpb24gV3JpdGUtSGVhZGVyIHsgcGFyYW0oJFRleHQpIFdyaXRlLUhvc3QgImBuPT09ICRUZXh0ID09PSIgLUZvcmVncm91bmRDb2xvciBDeWFuIH0KZnVuY3Rpb24gV3JpdGUtSXRlbSB7IAogICAgcGFyYW0oJEtleSwgJFZhbHVlKSAKICAgIGlmICgkVmFsdWUgLWVxICRudWxsIC1vciAkVmFsdWUgLWVxICIiKSB7ICRWYWx1ZSA9ICJOL0EiIH0gCiAgICBXcml0ZS1Ib3N0ICgiezAsLTMwfSA6IHsxfSIgLWYgJEtleSwgJFZhbHVlKSAtRm9yZWdyb3VuZENvbG9yIFdoaXRlCn0KZnVuY3Rpb24gV3JpdGUtV2FybiB7IHBhcmFtKCRUZXh0KSBXcml0ZS1Ib3N0ICJXQVJOSU5HOiAkVGV4dCIgLUZvcmVncm91bmRDb2xvciBZZWxsb3cgfQpmdW5jdGlvbiBXcml0ZS1TdWNjZXNzIHsgcGFyYW0oJFRleHQpIFdyaXRlLUhvc3QgIk9LOiAkVGV4dCIgLUZvcmVncm91bmRDb2xvciBHcmVlbiB9CmZ1bmN0aW9uIFdyaXRlLUJhZCB7IHBhcmFtKCRUZXh0KSBXcml0ZS1Ib3N0ICJCQUQ6ICRUZXh0IiAtRm9yZWdyb3VuZENvbG9yIFJlZCB9CmZ1bmN0aW9uIFdyaXRlLUFkbWluT25seSB7IFdyaXRlLUhvc3QgIlJlcXVpcmVzIEFkbWluIiAtRm9yZWdyb3VuZENvbG9yIFJlZCB9CgojIC0tLSAwLiDQn9GA0L7QstC10YDQutCwINC/0YDQsNCyINCQ0LTQvNC40L3QuNGB0YLRgNCw0YLQvtGA0LAgLS0tCiAkaXNBZG1pbiA9IChbU2VjdXJpdHkuUHJpbmNpcGFsLldpbmRvd3NQcmluY2lwYWxdW1NlY3VyaXR5LlByaW5jaXBhbC5XaW5kb3dzSWRlbnRpdHldOjpHZXRDdXJyZW50KCkpLklzSW5Sb2xlKFtTZWN1cml0eS5QcmluY2lwYWwuV2luZG93c0J1aWx0SW5Sb2xlXSJBZG1pbmlzdHJhdG9yIikKaWYgKC1ub3QgJGlzQWRtaW4pIHsgV3JpdGUtV2FybiAiUnVubmluZyB3aXRob3V0IEFkbWluIHJpZ2h0cy4gU29tZSBkYXRhIGlzIGhpZGRlbi4iIH0KCiMgLS0tIDEuIFNZU1RFTSBDT1JFIC0tLQpXcml0ZS1IZWFkZXIgIlNZU1RFTSBDT1JFIgogJG9zID0gR2V0LUNpbUluc3RhbmNlIFdpbjMyX09wZXJhdGluZ1N5c3RlbQogJGNzID0gR2V0LUNpbUluc3RhbmNlIFdpbjMyX0NvbXB1dGVyU3lzdGVtCiAkcmVnUGF0aCA9ICJIS0xNOlxTT0ZUV0FSRVxNaWNyb3NvZnRcV2luZG93cyBOVFxDdXJyZW50VmVyc2lvbiIKCiAkb3NOYW1lID0gIiQoJG9zLkNhcHRpb24pICQoJG9zLlZlcnNpb24pIEJ1aWxkICQoJG9zLkJ1aWxkTnVtYmVyKSIKV3JpdGUtSXRlbSAiT1MgVmVyc2lvbiIgJG9zTmFtZQpXcml0ZS1JdGVtICJBcmNoaXRlY3R1cmUiICRvcy5PU0FyY2hpdGVjdHVyZQoKICRrZXJuZWxCdWlsZCA9IChHZXQtSXRlbVByb3BlcnR5ICRyZWdQYXRoKS5CdWlsZExhYkV4CldyaXRlLUl0ZW0gIktlcm5lbCBCdWlsZCIgJGtlcm5lbEJ1aWxkCgogJGluc3RhbGxEYXRlUmF3ID0gKEdldC1JdGVtUHJvcGVydHkgJHJlZ1BhdGgpLkluc3RhbGxEYXRlCmlmICgkaW5zdGFsbERhdGVSYXcpIHsKICAgIHRyeSB7CiAgICAgICAgaWYgKCRpbnN0YWxsRGF0ZVJhdyAtaXMgW2ludF0gLW9yICRpbnN0YWxsRGF0ZVJhdyAtaXMgW2xvbmddIC1vciAkaW5zdGFsbERhdGVSYXcgLWlzIFtkb3VibGVdKSB7CiAgICAgICAgICAgICRpbnN0YWxsRGF0ZSA9IFtEYXRlVGltZU9mZnNldF06OkZyb21Vbml4VGltZVNlY29uZHMoJGluc3RhbGxEYXRlUmF3KS5EYXRlVGltZS5Ub0xvY2FsVGltZSgpCiAgICAgICAgfSBlbHNlaWYgKCRpbnN0YWxsRGF0ZVJhdyAtbWF0Y2ggIl5cZHsxNH0iKSB7CiAgICAgICAgICAgICRpbnN0YWxsRGF0ZSA9IFtEYXRlVGltZV06OlBhcnNlRXhhY3QoJGluc3RhbGxEYXRlUmF3LCAieXl5eU1NZGRISG1tc3MiLCAkbnVsbCkKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAkaW5zdGFsbERhdGUgPSBbRGF0ZVRpbWVdOjpQYXJzZSgkaW5zdGFsbERhdGVSYXcpCiAgICAgICAgfQogICAgICAgIFdyaXRlLUl0ZW0gIkluc3RhbGwgRGF0ZSIgJGluc3RhbGxEYXRlLlRvU3RyaW5nKCJkZC5NTS55eXl5IEhIOm1tIikKICAgIH0gY2F0Y2ggeyBXcml0ZS1JdGVtICJJbnN0YWxsIERhdGUiICJVbmtub3duIGZvcm1hdCIgfQp9IGVsc2UgeyBXcml0ZS1JdGVtICJJbnN0YWxsIERhdGUiICJOL0EiIH0KCiMgRklYOiBVcHRpbWUgdmFyaWFibGUgbmFtZSBjb3JyZWN0ZWQKICR1cHRpbWVTcGFuID0gKEdldC1EYXRlKSAtICRvcy5MYXN0Qm9vdFVwVGltZQogJHVwdGltZVN0ciA9ICJ7MH1kIHsxfWggezJ9bSIgLWYgJHVwdGltZVNwYW4uRGF5cywgJHVwdGltZVNwYW4uSG91cnMsICR1cHRpbWVTcGFuLk1pbnV0ZXMKV3JpdGUtSXRlbSAiVXB0aW1lIiAkdXB0aW1lU3RyCldyaXRlLUl0ZW0gIkFkbWluIFJpZ2h0cyIgKGlmICgkaXNBZG1pbikgeyAiWUVTIChFbGV2YXRlZCkiIH0gZWxzZSB7ICJOTyAoTGltaXRlZCkiIH0pCgp0cnkgewogICAgJGxpYyA9IEdldC1DaW1JbnN0YW5jZSBTb2Z0d2FyZUxpY2Vuc2luZ1Byb2R1Y3QgLUZpbHRlciAiTmFtZSBMSUtFICclV2luZG93cyUnIEFORCBQYXJ0aWFsUHJvZHVjdEtleSBJUyBOT1QgTlVMTCIgLUVycm9yQWN0aW9uIFN0b3AgfCBTZWxlY3QtT2JqZWN0IC1GaXJzdCAxCiAgICAkYWN0U3RhdHVzID0gaWYgKCRsaWMuTGljZW5zZVN0YXR1cyAtZXEgMSkgeyAiTGljZW5zZWQiIH0gZWxzZSB7ICJVbmxpY2Vuc2VkIC8gR3JhY2UgUGVyaW9kIiB9Cn0gY2F0Y2ggeyAkYWN0U3RhdHVzID0gIlVua25vd24iIH0KV3JpdGUtSXRlbSAiQWN0aXZhdGlvbiIgJGFjdFN0YXR1cwoKIyAtLS0gMi4gSEFSRFdBUkUgLS0tCldyaXRlLUhlYWRlciAiSEFSRFdBUkUiCiAkYmlvcyA9IEdldC1DaW1JbnN0YW5jZSBXaW4zMl9CSU9TCiAkYmFzZWJvYXJkID0gR2V0LUNpbUluc3RhbmNlIFdpbjMyX0Jhc2VCb2FyZAoKICRpc1ZNID0gJGZhbHNlCmlmICgkY3MuTWFudWZhY3R1cmVyIC1tYXRjaCAiVmlydHVhbHxWTXdhcmV8UUVNVXxLVk18WGVufGlubm90ZWt8QW1hem9uIiAtb3IgJGJpb3MuVmVyc2lvbiAtbWF0Y2ggIlZSVFVBTHxWTVdBUkV8QklPUyIpIHsgJGlzVk0gPSAkdHJ1ZSB9CldyaXRlLUl0ZW0gIkhhcmR3YXJlIFR5cGUiIChpZiAoJGlzVk0pIHsgIlZpcnR1YWwgTWFjaGluZSAoJCgkY3MuTWFudWZhY3R1cmVyKSkiIH0gZWxzZSB7ICJCYXJlIE1ldGFsIiB9KQpXcml0ZS1JdGVtICJNb3RoZXJib2FyZCIgIiQoJGJhc2Vib2FyZC5NYW51ZmFjdHVyZXIpICQoJGJhc2Vib2FyZC5Qcm9kdWN0KSIKV3JpdGUtSXRlbSAiQklPUyIgIiQoJGJpb3MuU01CSU9TQklPU1ZlcnNpb24pICgkKCRiaW9zLlJlbGVhc2VEYXRlLlRvU3RyaW5nKCd5eXl5LU1NLWRkJykpKSIKCiAkY3B1ID0gR2V0LUNpbUluc3RhbmNlIFdpbjMyX1Byb2Nlc3NvcgogJGNwdU5hbWUgPSAkY3B1Lk5hbWUKICRjcHVDb3JlcyA9ICgkY3B1IHwgTWVhc3VyZS1PYmplY3QgLVByb3BlcnR5IE51bWJlck9mQ29yZXMgLVN1bSkuU3VtCiAkY3B1TG9naWNhbCA9ICgkY3B1IHwgTWVhc3VyZS1PYmplY3QgLVByb3BlcnR5IE51bWJlck9mTG9naWNhbFByb2Nlc3NvcnMgLVN1bSkuU3VtCldyaXRlLUl0ZW0gIkNQVSIgIiRjcHVOYW1lICgkY3B1Q29yZXMgY29yZXMsICRjcHVMb2dpY2FsIGxvZ2ljKSIKCiAkZ3B1cyA9IEdldC1DaW1JbnN0YW5jZSBXaW4zMl9WaWRlb0NvbnRyb2xsZXIKICRwaHlzaWNhbEdwdSA9IEAoJGdwdXMgfCBXaGVyZS1PYmplY3QgeyAkXy5OYW1lIC1ub3RtYXRjaCAiVmlydHVhbHxEdW1teXxQYXJzZWN8SW5kaXJlY3R8Q2l0cml4IiB9KQogJHZpcnR1YWxHcHUgPSBAKCRncHVzIHwgV2hlcmUtT2JqZWN0IHsgJF8uTmFtZSAtbWF0Y2ggIlZpcnR1YWx8RHVtbXl8UGFyc2VjfEluZGlyZWN0fENpdHJpeCIgfSkKCldyaXRlLUl0ZW0gIkdQVSIgKCgkZ3B1cyB8IEZvckVhY2gtT2JqZWN0IHsgJF8uTmFtZSB9KSAtam9pbiAiLCAiKQoKICR0b3RhbFZSQU0gPSAoJGdwdXMgfCBNZWFzdXJlLU9iamVjdCAtUHJvcGVydHkgQWRhcHRlclJBTSAtU3VtKS5TdW0KaWYgKCR0b3RhbFZSQU0gLWd0IDApIHsgV3JpdGUtSXRlbSAiVlJBTSBUb3RhbCIgIiQoW21hdGhdOjpSb3VuZCgkdG90YWxWUkFNIC8gMUdCLCAyKSkgR0IiIH0gZWxzZSB7IFdyaXRlLUl0ZW0gIlZSQU0gVG90YWwiICJTaGFyZWQvRHluYW1pYyIgfQoKICRtb25TdHIgPSBpZiAoJHZpcnR1YWxHcHUuQ291bnQgLWd0IDApIHsgIiQoJHBoeXNpY2FsR3B1LkNvdW50KSBQaHlzaWNhbCwgJCgkdmlydHVhbEdwdS5Db3VudCkgVmlydHVhbCIgfSBlbHNlIHsgIiQoJHBoeXNpY2FsR3B1LkNvdW50KSBQaHlzaWNhbCIgfQpXcml0ZS1JdGVtICJNb25pdG9ycyAvIERpc3BsYXlzIiAkbW9uU3RyCgojIC0tLSAzLiBNRU1PUlkgJiBESVNLIC0tLQpXcml0ZS1IZWFkZXIgIk1FTU9SWSAmIERJU0siCiAkdG90YWxSQU0gPSBbbWF0aF06OlJvdW5kKCRvcy5Ub3RhbFZpc2libGVNZW1vcnlTaXplIC8gMU1CLCAyKQogJGZyZWVSQU0gPSBbbWF0aF06OlJvdW5kKCRvcy5GcmVlUGh5c2ljYWxNZW1vcnkgLyAxTUIsIDIpCiAkdXNlZFJBTSA9ICR0b3RhbFJBTSAtICRmcmVlUkFNCiAkcmFtUGVyY2VudCA9IFttYXRoXTo6Um91bmQoKCR1c2VkUkFNIC8gJHRvdGFsUkFNKSAqIDEwMCwgMSkKV3JpdGUtSXRlbSAiUkFNIiAiJHVzZWRSQU0gR0IgLyAkdG90YWxSQU0gR0IgKCRyYW1QZXJjZW50JSkiCgogJGRpc2tzID0gR2V0LUNpbUluc3RhbmNlIFdpbjMyX0xvZ2ljYWxEaXNrIHwgV2hlcmUtT2JqZWN0IHsgJF8uRHJpdmVUeXBlIC1lcSAzIH0KZm9yZWFjaCAoJGRpc2sgaW4gJGRpc2tzKSB7CiAgICAkc2l6ZUdCID0gW21hdGhdOjpSb3VuZCgkZGlzay5TaXplIC8gMUdCLCAyKQogICAgJGZyZWVHQiA9IFttYXRoXTo6Um91bmQoJGRpc2suRnJlZVNwYWNlIC8gMUdCLCAyKQogICAgJHVzZWRHQiA9ICRzaXplR0IgLSAkZnJlZUdCCiAgICAkcGVyY2VudCA9IFttYXRoXTo6Um91bmQoKCR1c2VkR0IgLyAkc2l6ZUdCKSAqIDEwMCwgMSkKICAgICRsYWJlbCA9IGlmICgkZGlzay5Wb2x1bWVOYW1lKSB7ICRkaXNrLlZvbHVtZU5hbWUgfSBlbHNlIHsgIkxvY2FsIERpc2siIH0KICAgICRjb2xvciA9IGlmICgkcGVyY2VudCAtZ3QgOTApIHsgIlJlZCIgfSBlbHNlaWYgKCRwZXJjZW50IC1ndCA3NSkgeyAiWWVsbG93IiB9IGVsc2UgeyAiV2hpdGUiIH0KICAgIFdyaXRlLUhvc3QgKCJ7MCwtMzB9IDogezF9IiAtZiAiRGlzayAoJCgkZGlzay5EZXZpY2VJRCkpIiwgIiRsYWJlbCAoJHVzZWRHQiBHQiAvICRzaXplR0IgR0IgfCAkcGVyY2VudCUpIikgLUZvcmVncm91bmRDb2xvciAkY29sb3IKfQoKIyAtLS0gNC4gVVNFUiAmIE5FVFdPUksgLS0tCldyaXRlLUhlYWRlciAiVVNFUiAmIE5FVFdPUksiCldyaXRlLUl0ZW0gIkhvc3RuYW1lIiAkZW52OkNPTVBVVEVSTkFNRQpXcml0ZS1JdGVtICJVc2VyIENvbnRleHQiICIkZW52OlVTRVJET01BSU5cJGVudjpVU0VSTkFNRSIKCiAkbmV0QWRhcHRlciA9IEdldC1OZXRJUENvbmZpZ3VyYXRpb24gLUVycm9yQWN0aW9uIElnbm9yZSB8IFdoZXJlLU9iamVjdCB7ICRfLklQdjREZWZhdWx0R2F0ZXdheSAtbmUgJG51bGwgfSB8IFNlbGVjdC1PYmplY3QgLUZpcnN0IDEKaWYgKCRuZXRBZGFwdGVyKSB7CiAgICAkaXAgPSAkbmV0QWRhcHRlci5JUHY0QWRkcmVzcy5JUEFkZHJlc3MKICAgICRwcmVmaXggPSAkbmV0QWRhcHRlci5JUHY0QWRkcmVzcy5QcmVmaXhMZW5ndGgKICAgIFdyaXRlLUl0ZW0gIkxvY2FsIElQIiAkaXAKICAgIFdyaXRlLUl0ZW0gIlN1Ym5ldCBNYXNrIiAiLyRwcmVmaXgiCiAgICBXcml0ZS1JdGVtICJHYXRld2F5IiAkbmV0QWRhcHRlci5JUHY0RGVmYXVsdEdhdGV3YXkuTmV4dEhvcAogICAgCiAgICAkZG5zID0gKEdldC1EbnNDbGllbnRTZXJ2ZXJBZGRyZXNzIC1JbnRlcmZhY2VJbmRleCAkbmV0QWRhcHRlci5JbnRlcmZhY2VJbmRleCAtQWRkcmVzc0ZhbWlseSBJUHY0IC1FcnJvckFjdGlvbiBJZ25vcmUpLlNlcnZlckFkZHJlc3NlcyAtam9pbiAiLCAiCiAgICBXcml0ZS1JdGVtICJETlMgU2VydmVycyIgJGRucwogICAgCiAgICAkbWFjID0gKEdldC1OZXRBZGFwdGVyIC1JbnRlcmZhY2VJbmRleCAkbmV0QWRhcHRlci5JbnRlcmZhY2VJbmRleCAtRXJyb3JBY3Rpb24gSWdub3JlKS5NYWNBZGRyZXNzCiAgICBXcml0ZS1JdGVtICJNQUMgQWRkcmVzcyIgJG1hYwp9IGVsc2UgeyBXcml0ZS1JdGVtICJOZXR3b3JrIiAiTm8gYWN0aXZlIGFkYXB0ZXIgZm91bmQiIH0KCldyaXRlLUhvc3QgImBuICBXaS1GaSBQcm9maWxlcyAmIFBhc3N3b3JkczoiIC1Gb3JlZ3JvdW5kQ29sb3IgR3JheQogJHByb2ZpbGVzID0gKG5ldHNoIHdsYW4gc2hvdyBwcm9maWxlcyAyPiRudWxsIHwgU2VsZWN0LVN0cmluZyAiQWxsIFVzZXIgUHJvZmlsZXxQcm9maWxlIiB8IEZvckVhY2gtT2JqZWN0IHsgCiAgICBpZiAoJF8uTGluZSAtbWF0Y2ggIjpccysoLispIikgeyAkTWF0Y2hlc1sxXS5UcmltKCkgfSAKfSkKaWYgKCRwcm9maWxlcykgewogICAgZm9yZWFjaCAoJHAgaW4gJHByb2ZpbGVzKSB7CiAgICAgICAgaWYgKCRpc0FkbWluKSB7CiAgICAgICAgICAgICRwYXNzTGluZSA9IChuZXRzaCB3bGFuIHNob3cgcHJvZmlsZSBuYW1lPSIkcCIga2V5PWNsZWFyIDI+JG51bGwgfCBTZWxlY3QtU3RyaW5nICJLZXkgQ29udGVudCIpCiAgICAgICAgICAgICRwYXNzID0gaWYgKCRwYXNzTGluZSkgeyAkcGFzc0xpbmUuTGluZS5TcGxpdCgiOiIpWzFdLlRyaW0oKSB9IGVsc2UgeyAiT3BlbiIgfQogICAgICAgICAgICBXcml0ZS1Ib3N0ICIgICAgJHAgOiAkcGFzcyIgLUZvcmVncm91bmRDb2xvciBZZWxsb3cKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBXcml0ZS1Ib3N0ICIgICAgJHAgOiAoUnVuIGFzIEFkbWluIHRvIHNlZSBwYXNzd29yZHMpIiAtRm9yZWdyb3VuZENvbG9yIERhcmtHcmF5CiAgICAgICAgfQogICAgfQp9IGVsc2UgeyBXcml0ZS1Ib3N0ICIgICAgTm8gV2ktRmkgcHJvZmlsZXMgZm91bmQuIiAtRm9yZWdyb3VuZENvbG9yIERhcmtHcmF5IH0KCnRyeSB7CiAgICAkcHVibGljSVAgPSBJbnZva2UtUmVzdE1ldGhvZCAiaHR0cHM6Ly9hcGkuaXBpZnkub3JnP2Zvcm1hdD1qc29uIiAtVGltZW91dFNlYyAzCiAgICBXcml0ZS1JdGVtICJQdWJsaWMgSVAiICRwdWJsaWNJUC5pcAogICAgJHJlcSA9IFtTeXN0ZW0uTmV0LldlYlJlcXVlc3RdOjpDcmVhdGUoImh0dHBzOi8vd3d3Lmdvb2dsZS5jb20iKTsgJHJlcS5UaW1lb3V0ID0gMzAwMAogICAgJHJlc3AgPSAkcmVxLkdldFJlc3BvbnNlKCk7ICRzZXJ2ZXJUaW1lID0gJHJlc3AuSGVhZGVyc1siRGF0ZSJdOyAkcmVzcC5DbG9zZSgpCiAgICBpZiAoJHNlcnZlclRpbWUgLWFuZCBbbWF0aF06OkFicygoKEdldC1EYXRlKSAtIChbRGF0ZVRpbWVdOjpQYXJzZSgkc2VydmVyVGltZSkuVG9Mb2NhbFRpbWUoKSkpLlRvdGFsTWludXRlcykgLWd0IDUpIHsKICAgICAgICBXcml0ZS1XYXJuICJUaW1lIERyaWZ0IERldGVjdGVkISBTeXN0ZW0gdGltZSBkaWZmZXJzIGZyb20gSW50ZXJuZXQgYnkgPiA1IG1pbnV0ZXMuIgogICAgfQp9IGNhdGNoIHsgV3JpdGUtSXRlbSAiUHVibGljIElQIiAiT2ZmbGluZSAvIFRpbWVvdXQiIH0KCiAkcHJveHlTZXR0aW5ncyA9IEdldC1JdGVtUHJvcGVydHkgIkhLQ1U6XFNvZnR3YXJlXE1pY3Jvc29mdFxXaW5kb3dzXEN1cnJlbnRWZXJzaW9uXEludGVybmV0IFNldHRpbmdzIgppZiAoJHByb3h5U2V0dGluZ3MuUHJveHlFbmFibGUgLWVxIDEpIHsKICAgIFdyaXRlLUl0ZW0gIlN5c3RlbSBQcm94eSAoSUUvSFRUUCkiICJFTkFCTEVEICgkKCRwcm94eVNldHRpbmdzLlByb3h5U2VydmVyKSkiCn0gZWxzZSB7IFdyaXRlLUl0ZW0gIlN5c3RlbSBQcm94eSAoSUUvSFRUUCkiICJEaXNhYmxlZCIgfQoKaWYgKCRwcm94eVNldHRpbmdzLkF1dG9Db25maWdVUkwpIHsKICAgIFdyaXRlLUl0ZW0gIlBBQyAvIFdQQUQgQXV0b0NvbmZpZyIgJHByb3h5U2V0dGluZ3MuQXV0b0NvbmZpZ1VSTAp9Cgp0cnkgewogICAgJHdpbkh0dHAgPSBuZXRzaCB3aW5odHRwIHNob3cgcHJveHkgMj4kbnVsbAogICAgaWYgKCR3aW5IdHRwIC1tYXRjaCAiRGlyZWN0IGFjY2VzcyIpIHsKICAgICAgICBXcml0ZS1JdGVtICJXaW5IVFRQIFByb3h5IiAiRGlyZWN0IGFjY2VzcyAobm8gcHJveHkpIgogICAgfSBlbHNlIHsKICAgICAgICAkcHJveHlMaW5lID0gKCR3aW5IdHRwIHwgU2VsZWN0LVN0cmluZyAiUHJveHkgU2VydmVyIikuTGluZQogICAgICAgIGlmICgkcHJveHlMaW5lKSB7IFdyaXRlLUl0ZW0gIldpbkhUVFAgUHJveHkiICgkcHJveHlMaW5lIC1yZXBsYWNlICJQcm94eSBTZXJ2ZXJccyo6XHMqIiwgIiIpIH0KICAgIH0KfSBjYXRjaCB7fQoKIyAtLS0gNS4gRU5WSVJPTk1FTlQgJiBTT0ZUIC0tLQpXcml0ZS1IZWFkZXIgIkVOVklST05NRU5UICYgU09GVCIKV3JpdGUtSXRlbSAiU2hlbGwiICJQb3dlclNoZWxsICQoJFBTVmVyc2lvblRhYmxlLlBTVmVyc2lvbi5Ub1N0cmluZygpKSIKICRkb3ROZXQ0ID0gKEdldC1JdGVtUHJvcGVydHkgIkhLTE06XFNPRlRXQVJFXE1pY3Jvc29mdFxORVQgRnJhbWV3b3JrIFNldHVwXE5EUFx2NFxGdWxsIiAtTmFtZSBWZXJzaW9uIC1FcnJvckFjdGlvbiBJZ25vcmUpLlZlcnNpb24KICRkb3ROZXQzNSA9IChHZXQtSXRlbVByb3BlcnR5ICJIS0xNOlxTT0ZUV0FSRVxNaWNyb3NvZnRcTkVUIEZyYW1ld29yayBTZXR1cFxORFBcdjMuNSIgLU5hbWUgVmVyc2lvbiAtRXJyb3JBY3Rpb24gSWdub3JlKS5WZXJzaW9uCldyaXRlLUl0ZW0gIi5ORVQgVmVyc2lvbnMiICJ2NDokZG90TmV0NCB8IHYzLjU6JGRvdE5ldDM1IgoKICRwa2dXaW5nZXQgPSBpZiAoR2V0LUNvbW1hbmQgd2luZ2V0IC1FcnJvckFjdGlvbiBJZ25vcmUpIHsgIkluc3RhbGxlZCIgfSBlbHNlIHsgIk5vIiB9CiAkcGtnU2Nvb3AgPSBpZiAoR2V0LUNvbW1hbmQgc2Nvb3AgLUVycm9yQWN0aW9uIElnbm9yZSkgeyAiSW5zdGFsbGVkIiB9IGVsc2UgeyAiTm8iIH0KICRwa2dDaG9jbyA9IGlmIChHZXQtQ29tbWFuZCBjaG9jbyAtRXJyb3JBY3Rpb24gSWdub3JlKSB7ICJJbnN0YWxsZWQiIH0gZWxzZSB7ICJObyIgfQpXcml0ZS1JdGVtICJQYWNrYWdlIE1hbmFnZXJzIiAiV2luZ2V0OiAkcGtnV2luZ2V0IHwgU2Nvb3A6ICRwa2dTY29vcCB8IENob2NvOiAkcGtnQ2hvY28iCgpXcml0ZS1Ib3N0ICJgbi0tLSBFbnZpcm9ubWVudCBWYXJpYWJsZXMgLS0tIiAtRm9yZWdyb3VuZENvbG9yIEdyYXkKV3JpdGUtSG9zdCAiICBQQVRIOiIgLUZvcmVncm91bmRDb2xvciBHcmF5CiAkZW52OlBBVEggLXNwbGl0ICI7IiB8IFdoZXJlLU9iamVjdCB7ICRfIC1uZSAiIiB9IHwgRm9yRWFjaC1PYmplY3QgeyBXcml0ZS1Ib3N0ICIgICAgJF8iIC1Gb3JlZ3JvdW5kQ29sb3IgRGFya0dyYXkgfQpXcml0ZS1JdGVtICJTeXN0ZW0gUm9vdCIgJGVudjpTeXN0ZW1Sb290CldyaXRlLUl0ZW0gIlRlbXAgRGlyIiAkZW52OlRFTVAKCiMgLS0tIDYuIFNFQ1VSSVRZLCBQUklWSUxFR0VTICYgVVNFUlMgLS0tCldyaXRlLUhlYWRlciAiU0VDVVJJVFksIFBSSVZJTEVHRVMgJiBVU0VSUyIKCiAkaWQgPSBbU3lzdGVtLlNlY3VyaXR5LlByaW5jaXBhbC5XaW5kb3dzSWRlbnRpdHldOjpHZXRDdXJyZW50KCkKICRpbCA9ICJVbmtub3duIgogJHNpZFZhbHVlcyA9ICRpZC5Hcm91cHMgfCBGb3JFYWNoLU9iamVjdCB7ICRfLlZhbHVlIH0KaWYgKCRzaWRWYWx1ZXMgLWNvbnRhaW5zICJTLTEtMTYtMTYzODQiKSB7ICRpbCA9ICJTeXN0ZW0iIH0KZWxzZWlmICgkc2lkVmFsdWVzIC1jb250YWlucyAiUy0xLTE2LTEyMjg4IikgeyAkaWwgPSAiSGlnaCIgfQplbHNlaWYgKCRzaWRWYWx1ZXMgLWNvbnRhaW5zICJTLTEtMTYtODE5MiIpIHsgJGlsID0gIk1lZGl1bSIgfQplbHNlaWYgKCRzaWRWYWx1ZXMgLWNvbnRhaW5zICJTLTEtMTYtNDA5NiIpIHsgJGlsID0gIkxvdyIgfQpXcml0ZS1JdGVtICJJbnRlZ3JpdHkgTGV2ZWwiICIkaWwgKCRlbnY6VVNFUkRPTUFJTlwkZW52OlVTRVJOQU1FKSIKCnRyeSB7CiAgICAkYXYgPSBHZXQtQ2ltSW5zdGFuY2UgLU5hbWVzcGFjZSAicm9vdFxTZWN1cml0eUNlbnRlcjIiIC1DbGFzc05hbWUgIkFudGl2aXJ1c1Byb2R1Y3QiCiAgICBXcml0ZS1JdGVtICJBbnRpdmlydXMiICgoJGF2IHwgRm9yRWFjaC1PYmplY3QgeyAkXy5kaXNwbGF5TmFtZSB9KSAtam9pbiAiLCAiKQp9IGNhdGNoIHsgV3JpdGUtSXRlbSAiQW50aXZpcnVzIiAiRXJyb3IgY2hlY2tpbmcgV01JIiB9Cgp0cnkgewogICAgSW1wb3J0LU1vZHVsZSBOZXRTZWN1cml0eSAtRXJyb3JBY3Rpb24gSWdub3JlCiAgICAkZndQcm9maWxlcyA9IEdldC1OZXRGaXJld2FsbFByb2ZpbGUgLUVycm9yQWN0aW9uIElnbm9yZQogICAgaWYgKCRmd1Byb2ZpbGVzKSB7CiAgICAgICAgJGZ3U3RyID0gKCRmd1Byb2ZpbGVzIHwgRm9yRWFjaC1PYmplY3QgeyAiJCgkXy5OYW1lKTogJChpZigkXy5FbmFibGVkKXsnT24nfWVsc2V7J09mZid9KSIgfSkgLWpvaW4gIiB8ICIKICAgICAgICBXcml0ZS1JdGVtICJGaXJld2FsbCIgJGZ3U3RyCiAgICB9IGVsc2UgeyBXcml0ZS1JdGVtICJGaXJld2FsbCIgIlVua25vd24iIH0KfSBjYXRjaCB7IFdyaXRlLUl0ZW0gIkZpcmV3YWxsIiAiVW5rbm93biIgfQoKaWYgKCRjcy5QYXJ0T2ZEb21haW4pIHsKICAgIFdyaXRlLUl0ZW0gIkRvbWFpbiBTdGF0dXMiICJKb2luZWQgKCQoJGNzLkRvbWFpbikpIgogICAgdHJ5IHsKICAgICAgICAkbnREb21haW4gPSBHZXQtQ2ltSW5zdGFuY2UgV2luMzJfTlREb21haW4gLUVycm9yQWN0aW9uIElnbm9yZSB8IFNlbGVjdC1PYmplY3QgLUZpcnN0IDEKICAgICAgICBXcml0ZS1JdGVtICJEb21haW4gQ29udHJvbGxlciIgIiQoJG50RG9tYWluLkRvbWFpbkNvbnRyb2xsZXJOYW1lKSAoJCgkbnREb21haW4uRG9tYWluQ29udHJvbGxlckFkZHJlc3MpKSIKICAgIH0gY2F0Y2gge30KfSBlbHNlIHsgV3JpdGUtSXRlbSAiRG9tYWluIFN0YXR1cyIgIldvcmtncm91cCAoJCgkY3MuV29ya2dyb3VwKSkiIH0KCiAkdWFjUGF0aCA9ICJIS0xNOlxTT0ZUV0FSRVxNaWNyb3NvZnRcV2luZG93c1xDdXJyZW50VmVyc2lvblxQb2xpY2llc1xTeXN0ZW0iCiAkdWFjRW5hYmxlID0gKEdldC1JdGVtUHJvcGVydHkgJHVhY1BhdGggLU5hbWUgRW5hYmxlTFVBIC1FcnJvckFjdGlvbiBJZ25vcmUpLkVuYWJsZUxVQQpXcml0ZS1JdGVtICJVQUMiIChpZiAoJHVhY0VuYWJsZSAtZXEgMSkgeyAiRW5hYmxlZCIgfSBlbHNlIHsgIkRJU0FCTEVEISIgfSkKCiAkbHNhUFBMID0gKEdldC1JdGVtUHJvcGVydHkgIkhLTE06XFNZU1RFTVxDdXJyZW50Q29udHJvbFNldFxDb250cm9sXExzYSIgLU5hbWUgUnVuQXNQUEwgLUVycm9yQWN0aW9uIElnbm9yZSkuUnVuQXNQUEwKV3JpdGUtSXRlbSAiTFNBIFByb3RlY3Rpb24gKFJ1bkFzUFBMKSIgKGlmICgkbHNhUFBMIC1lcSAxKSB7ICJFbmFibGVkIiB9IGVsc2UgeyAiRGlzYWJsZWQvTWlzc2luZyIgfSkKCiAkZXZicyA9IChHZXQtSXRlbVByb3BlcnR5ICJIS0xNOlxTWVNURU1cQ3VycmVudENvbnRyb2xTZXRcQ29udHJvbFxEZXZpY2VHdWFyZCIgLU5hbWUgRW5hYmxlVmlydHVhbGl6YXRpb25CYXNlZFNlY3VyaXR5IC1FcnJvckFjdGlvbiBJZ25vcmUpLkVuYWJsZVZpcnR1YWxpemF0aW9uQmFzZWRTZWN1cml0eQogJGxzYWNmZyA9IChHZXQtSXRlbVByb3BlcnR5ICJIS0xNOlxTWVNURU1cQ3VycmVudENvbnRyb2xTZXRcQ29udHJvbFxMc2EiIC1OYW1lIExzYUNmZ0ZsYWdzIC1FcnJvckFjdGlvbiBJZ25vcmUpLkxzYUNmZ0ZsYWdzCiAkY2dTdGF0dXMgPSBpZiAoJGV2YnMgLWVxIDEgLWFuZCAkbHNhY2ZnIC1lcSAxKSB7ICJFbmFibGVkIiB9IGVsc2UgeyAiRGlzYWJsZWQvTWlzc2luZyIgfQpXcml0ZS1JdGVtICJDcmVkZW50aWFsIEd1YXJkIiAkY2dTdGF0dXMKCmlmICgkaXNBZG1pbikgewogICAgdHJ5IHsKICAgICAgICBJbXBvcnQtTW9kdWxlIEJpdExvY2tlciAtRGlzYWJsZU5hbWVDaGVja2luZyAtV2FybmluZ0FjdGlvbiBTaWxlbnRseUNvbnRpbnVlIC1FcnJvckFjdGlvbiBJZ25vcmUKICAgICAgICAkYmxWb2x1bWVzID0gQChHZXQtQml0TG9ja2VyVm9sdW1lIC1FcnJvckFjdGlvbiBJZ25vcmUpCiAgICAgICAgaWYgKCRibFZvbHVtZXMuQ291bnQgLWd0IDApIHsKICAgICAgICAgICAgZm9yZWFjaCAoJHYgaW4gJGJsVm9sdW1lcykgeyBXcml0ZS1JdGVtICJCaXRMb2NrZXIgKCQoJHYuTW91bnRQb2ludCkpIiAiJCgkdi5Wb2x1bWVTdGF0dXMpIChQcm90OiAkKCR2LlByb3RlY3Rpb25TdGF0dXMpKSIgfQogICAgICAgIH0gZWxzZSB7IFdyaXRlLUl0ZW0gIkJpdExvY2tlciIgIk5vIHZvbHVtZXMgZm91bmQiIH0KICAgIH0gY2F0Y2ggeyBXcml0ZS1JdGVtICJCaXRMb2NrZXIiICJBY2Nlc3MgRGVuaWVkIG9yIE1vZHVsZSBtaXNzaW5nIiB9Cn0gZWxzZSB7IFdyaXRlLUl0ZW0gIkJpdExvY2tlciIgKFdyaXRlLUFkbWluT25seSkgfQoKV3JpdGUtSG9zdCAiYG4tLS0gUHJpdmlsZWdlcyAod2hvYW1pIC9wcml2KSAtLS0iIC1Gb3JlZ3JvdW5kQ29sb3IgR3JheQppZiAoJGlzQWRtaW4pIHsKICAgICRwcml2cyA9IHdob2FtaSAvcHJpdiAyPiRudWxsIHwgU2VsZWN0LVN0cmluZyAiRW5hYmxlZCIgfCBTZWxlY3QtT2JqZWN0IC1GaXJzdCAxNQogICAgJHByaXZzIHwgRm9yRWFjaC1PYmplY3QgeyBXcml0ZS1Ib3N0ICIgICQoJF8uTGluZS5UcmltKCkpIiAtRm9yZWdyb3VuZENvbG9yIEdyZWVuIH0KfSBlbHNlIHsgV3JpdGUtSG9zdCAiICAiOyBXcml0ZS1BZG1pbk9ubHkgfQoKV3JpdGUtSG9zdCAiYG4tLS0gTG9jYWwgVXNlcnMgLS0tIiAtRm9yZWdyb3VuZENvbG9yIEdyYXkKdHJ5IHsKICAgICR1c2VycyA9IEdldC1Mb2NhbFVzZXIgLUVycm9yQWN0aW9uIElnbm9yZSB8IFNvcnQtT2JqZWN0IE5hbWUKICAgIGZvcmVhY2ggKCR1IGluICR1c2VycykgewogICAgICAgICRzdGF0dXMgPSBpZiAoJHUuRW5hYmxlZCkgeyAiQWN0aXZlIiB9IGVsc2UgeyAiRGlzYWJsZWQiIH0KICAgICAgICAkbGFzdExvZ29uID0gaWYgKCR1Lkxhc3RMb2dvbiAtYW5kICR1Lkxhc3RMb2dvbiAtbmUgJG51bGwpIHsgJHUuTGFzdExvZ29uLlRvU3RyaW5nKCJkZC5NTS55eXl5IEhIOm1tIikgfSBlbHNlIHsgIk5ldmVyIiB9CiAgICAgICAgJGNvbG9yID0gaWYgKCR1LkVuYWJsZWQpIHsgIldoaXRlIiB9IGVsc2UgeyAiRGFya0dyYXkiIH0KICAgICAgICBXcml0ZS1Ib3N0ICIgICQoJHUuTmFtZSkgKCRzdGF0dXMpIC0gTGFzdDogJGxhc3RMb2dvbiIgLUZvcmVncm91bmRDb2xvciAkY29sb3IKICAgIH0KfSBjYXRjaCB7CiAgICAkd21pVXNlcnMgPSBHZXQtQ2ltSW5zdGFuY2UgV2luMzJfVXNlckFjY291bnQgLUZpbHRlciAiTG9jYWxBY2NvdW50PVRydWUiIC1FcnJvckFjdGlvbiBJZ25vcmUgfCBTb3J0LU9iamVjdCBOYW1lCiAgICBmb3JlYWNoICgkdSBpbiAkd21pVXNlcnMpIHsKICAgICAgICAkc3RhdHVzID0gaWYgKCR1LkRpc2FibGVkKSB7ICJEaXNhYmxlZCIgfSBlbHNlIHsgIkFjdGl2ZSIgfQogICAgICAgICRjb2xvciA9IGlmICgkdS5EaXNhYmxlZCkgeyAiRGFya0dyYXkiIH0gZWxzZSB7ICJXaGl0ZSIgfQogICAgICAgIFdyaXRlLUhvc3QgIiAgJCgkdS5OYW1lKSAoJHN0YXR1cykiIC1Gb3JlZ3JvdW5kQ29sb3IgJGNvbG9yCiAgICB9Cn0KCiMgRklYOiBSb2J1c3QgTG9jYWwgQWRtaW5zIGNoZWNrIHdpdGggZmFsbGJhY2sgdG8gIm5ldCBsb2NhbGdyb3VwIgpXcml0ZS1Ib3N0ICJgbi0tLSBMb2NhbCBBZG1pbmlzdHJhdG9ycyAtLS0iIC1Gb3JlZ3JvdW5kQ29sb3IgR3JheQp0cnkgewogICAgJGxvY2FsQWRtaW5zID0gQChHZXQtTG9jYWxHcm91cE1lbWJlciAtR3JvdXAgIkFkbWluaXN0cmF0b3JzIiAtRXJyb3JBY3Rpb24gU3RvcCkKICAgICRsb2NhbEFkbWlucyB8IEZvckVhY2gtT2JqZWN0IHsgV3JpdGUtSG9zdCAiICAkKCRfLlByaW5jaXBhbFNvdXJjZSkgJCgkXy5OYW1lKSIgLUZvcmVncm91bmRDb2xvciBZZWxsb3cgfQp9IGNhdGNoIHsKICAgICRmYWxsYmFja0FkbWlucyA9IG5ldCBsb2NhbGdyb3VwIGFkbWluaXN0cmF0b3JzIDI+JG51bGwgfCBXaGVyZS1PYmplY3QgeyAkXyAtbm90bWF0Y2ggIkFsaWFzIG5hbWV8Q29tbWVudHxNZW1iZXJzfFRoZSBjb21tYW5kfF5ccyokIiAtYW5kICRfIC1ub3RtYXRjaCAiXi0iIH0KICAgIGlmICgkZmFsbGJhY2tBZG1pbnMpIHsKICAgICAgICAkZmFsbGJhY2tBZG1pbnMgfCBGb3JFYWNoLU9iamVjdCB7IFdyaXRlLUhvc3QgIiAgJF8iIC1Gb3JlZ3JvdW5kQ29sb3IgWWVsbG93IH0KICAgIH0gZWxzZSB7CiAgICAgICAgV3JpdGUtSG9zdCAiICBBY2Nlc3MgRGVuaWVkIChSdW4gYXMgQWRtaW4pIiAtRm9yZWdyb3VuZENvbG9yIFJlZAogICAgfQp9CgojIC0tLSA3LiBORVRXT1JLIERFRVAgRElWRSAtLS0KV3JpdGUtSGVhZGVyICJORVRXT1JLIERFRVAgRElWRSAoQ29ubmVjdGlvbnMsIFJvdXRlcywgRE5TKSIKCnRyeSB7CiAgICBJbXBvcnQtTW9kdWxlIE5ldFRDUElQIC1FcnJvckFjdGlvbiBJZ25vcmUKICAgIFdyaXRlLUhvc3QgIiAgTGlzdGVuaW5nIFBvcnRzOiIgLUZvcmVncm91bmRDb2xvciBHcmF5CiAgICBHZXQtTmV0VENQQ29ubmVjdGlvbiAtU3RhdGUgTGlzdGVuIC1FcnJvckFjdGlvbiBJZ25vcmUgfCBTZWxlY3QtT2JqZWN0IExvY2FsQWRkcmVzcywgTG9jYWxQb3J0LCBPd25pbmdQcm9jZXNzIHwgRm9ybWF0LVRhYmxlIC1BdXRvU2l6ZSB8IE91dC1Ib3N0CiAgICAKICAgIFdyaXRlLUhvc3QgIiAgRXN0YWJsaXNoZWQgQ29ubmVjdGlvbnMgKHN1c3BpY2lvdXMgcG9ydHMgNDQ1LCAzMzg5LCA1OTg1KToiIC1Gb3JlZ3JvdW5kQ29sb3IgR3JheQogICAgJGVzdENvbm5zID0gR2V0LU5ldFRDUENvbm5lY3Rpb24gLVN0YXRlIEVzdGFibGlzaGVkIC1FcnJvckFjdGlvbiBJZ25vcmUgfCBXaGVyZS1PYmplY3QgeyAkXy5SZW1vdGVQb3J0IC1pbiA0NDUsIDMzODksIDU5ODUsIDQ0MywgODAgfQogICAgJGVzdENvbm5zIHwgRm9ybWF0LVRhYmxlIExvY2FsQWRkcmVzcywgTG9jYWxQb3J0LCBSZW1vdGVBZGRyZXNzLCBSZW1vdGVQb3J0LCBPd25pbmdQcm9jZXNzIC1BdXRvU2l6ZSB8IE91dC1Ib3N0Cn0gY2F0Y2ggeyBXcml0ZS1Ib3N0ICIgIE5ldFRDUElQIG1vZHVsZSBub3QgYXZhaWxhYmxlLiIgLUZvcmVncm91bmRDb2xvciBHcmF5IH0KCldyaXRlLUhvc3QgIiAgQVJQIFRhYmxlOiIgLUZvcmVncm91bmRDb2xvciBHcmF5CkdldC1OZXROZWlnaGJvciAtU3RhdGUgUmVhY2hhYmxlIC1FcnJvckFjdGlvbiBJZ25vcmUgfCBGb3JtYXQtVGFibGUgSVBBZGRyZXNzLCBMaW5rTGF5ZXJBZGRyZXNzLCBJbnRlcmZhY2VBbGlhcyAtQXV0b1NpemUgfCBPdXQtSG9zdAoKV3JpdGUtSG9zdCAiICBSb3V0aW5nIFRhYmxlOiIgLUZvcmVncm91bmRDb2xvciBHcmF5CkdldC1OZXRSb3V0ZSAtRXJyb3JBY3Rpb24gSWdub3JlIHwgU2VsZWN0LU9iamVjdCBEZXN0aW5hdGlvblByZWZpeCwgTmV4dEhvcCwgUm91dGVNZXRyaWMsIEludGVyZmFjZUFsaWFzIHwgRm9ybWF0LVRhYmxlIC1BdXRvU2l6ZSB8IE91dC1Ib3N0CgpXcml0ZS1Ib3N0ICIgIEROUyBDYWNoZToiIC1Gb3JlZ3JvdW5kQ29sb3IgR3JheQp0cnkgewogICAgR2V0LURuc0NsaWVudENhY2hlIC1FcnJvckFjdGlvbiBTdG9wIHwgU2VsZWN0LU9iamVjdCBFbnRyeSwgRGF0YSwgVGltZVRvTGl2ZSB8IEZvcm1hdC1UYWJsZSAtQXV0b1NpemUgfCBPdXQtSG9zdAp9IGNhdGNoIHsKICAgICRkbnNPdXQgPSBpcGNvbmZpZyAvZGlzcGxheWRucyAyPiRudWxsCiAgICAkZG5zUmVjb3JkcyA9ICRkbnNPdXQgfCBTZWxlY3QtU3RyaW5nICJSZWNvcmQgTmFtZSIgLUNvbnRleHQgMCwyCiAgICBpZiAoJGRuc1JlY29yZHMpIHsKICAgICAgICAkZG5zUmVjb3JkcyB8IFNlbGVjdC1PYmplY3QgLUZpcnN0IDE1IHwgRm9yRWFjaC1PYmplY3QgewogICAgICAgICAgICAkbmFtZSA9ICgkXy5MaW5lIC1zcGxpdCAiOlxzKyIpWzFdLlRyaW0oKQogICAgICAgICAgICBXcml0ZS1Ib3N0ICIgICAgJG5hbWUiIC1Gb3JlZ3JvdW5kQ29sb3IgRGFya0dyYXkKICAgICAgICB9CiAgICB9IGVsc2UgeyBXcml0ZS1Ib3N0ICIgICAgRW1wdHkgb3IgYWNjZXNzIGRlbmllZCIgLUZvcmVncm91bmRDb2xvciBEYXJrR3JheSB9Cn0KCldyaXRlLUhvc3QgIiAgU01CIFNoYXJlczoiIC1Gb3JlZ3JvdW5kQ29sb3IgR3JheQpuZXQgc2hhcmUgMj4kbnVsbCB8IEZvckVhY2gtT2JqZWN0IHsgV3JpdGUtSG9zdCAiICAkXyIgLUZvcmVncm91bmRDb2xvciBHcmF5IH0KCiMgLS0tIDguIENSRURFTlRJQUxTICYgU0VOU0lUSVZFIEZJTEVTIC0tLQpXcml0ZS1IZWFkZXIgIkNSRURFTlRJQUxTICYgU0VOU0lUSVZFIERBVEEiCgogJGFpSEtMTSA9IChHZXQtSXRlbVByb3BlcnR5ICJIS0xNOlxTT0ZUV0FSRVxQb2xpY2llc1xNaWNyb3NvZnRcV2luZG93c1xJbnN0YWxsZXIiIC1OYW1lIEFsd2F5c0luc3RhbGxFbGV2YXRlZCAtRXJyb3JBY3Rpb24gSWdub3JlKS5BbHdheXNJbnN0YWxsRWxldmF0ZWQKICRhaUhLQ1UgPSAoR2V0LUl0ZW1Qcm9wZXJ0eSAiSEtDVTpcU09GVFdBUkVcUG9saWNpZXNcTWljcm9zb2Z0XFdpbmRvd3NcSW5zdGFsbGVyIiAtTmFtZSBBbHdheXNJbnN0YWxsRWxldmF0ZWQgLUVycm9yQWN0aW9uIElnbm9yZSkuQWx3YXlzSW5zdGFsbEVsZXZhdGVkCmlmICgkYWlIS0xNIC1lcSAxIC1hbmQgJGFpSEtDVSAtZXEgMSkgeyBXcml0ZS1CYWQgIkFsd2F5c0luc3RhbGxFbGV2YXRlZCBpcyBFTkFCTEVEISAoQW55IHVzZXIgY2FuIHJ1biBNU0kgYXMgU1lTVEVNKSIgfSBlbHNlIHsgV3JpdGUtU3VjY2VzcyAiQWx3YXlzSW5zdGFsbEVsZXZhdGVkIGlzIERpc2FibGVkLiIgfQoKV3JpdGUtSG9zdCAiYG4tLS0gUmVnaXN0cnkgQ3JlZGVudGlhbHMgLS0tIiAtRm9yZWdyb3VuZENvbG9yIEdyYXkKICR3aW5sb2dvbiA9IEdldC1JdGVtUHJvcGVydHkgIkhLTE06XFNPRlRXQVJFXE1pY3Jvc29mdFxXaW5kb3dzIE5UXEN1cnJlbnRWZXJzaW9uXFdpbmxvZ29uIiAtRXJyb3JBY3Rpb24gSWdub3JlCmlmICgkd2lubG9nb24uRGVmYXVsdFBhc3N3b3JkKSB7IFdyaXRlLUJhZCAiRGVmYXVsdFBhc3N3b3JkIGZvdW5kIGluIFdpbmxvZ29uISIgfSBlbHNlIHsgV3JpdGUtU3VjY2VzcyAiTm8gRGVmYXVsdFBhc3N3b3JkIGluIFdpbmxvZ29uLiIgfQoKV3JpdGUtSG9zdCAiYG4tLS0gU2Vuc2l0aXZlIEZpbGVzIFNlYXJjaCAtLS0iIC1Gb3JlZ3JvdW5kQ29sb3IgR3JheQogJHNlbnNpdGl2ZVBhdHRlcm5zID0gQCgidW5hdHRlbmQueG1sIiwgInVuYXR0ZW5kLnR4dCIsICJzeXNwcmVwLmluZiIsICJ3ZWIuY29uZmlnIiwgIiouZW52IiwgImlkX3JzYSIsICJpZF9yc2EucHViIiwgIioua2V5IiwgIioucGVtIiwgInBhc3N3b3Jkcy50eHQiLCAiY3JlZGVudGlhbHMueG1sIiwgIktlZVBhc3MuY29uZmlnIikKICRzZWFyY2hSb290cyA9IEAoJGVudjpTeXN0ZW1Ecml2ZSArICJcIiwgJGVudjpQcm9ncmFtRmlsZXMsICR7ZW52OlByb2dyYW1GaWxlcyh4ODYpfSwgJGVudjpTeXN0ZW1Sb290ICsgIlxQYW50aGVyIiwgJGVudjpVU0VSUFJPRklMRSkKICRmb3VuZCA9IEAoKQpmb3JlYWNoICgkcm9vdCBpbiAkc2VhcmNoUm9vdHMpIHsKICAgIGlmICgtbm90IChUZXN0LVBhdGggJHJvb3QpKSB7IGNvbnRpbnVlIH0KICAgIGZvcmVhY2ggKCRwYXQgaW4gJHNlbnNpdGl2ZVBhdHRlcm5zKSB7CiAgICAgICAgJGZvdW5kICs9IEdldC1DaGlsZEl0ZW0gLVBhdGggJHJvb3QgLUZpbHRlciAkcGF0IC1SZWN1cnNlIC1GaWxlIC1FcnJvckFjdGlvbiBJZ25vcmUgLURlcHRoIDMKICAgIH0KfQppZiAoJGZvdW5kLkNvdW50IC1ndCAwKSB7CiAgICBXcml0ZS1XYXJuICJGb3VuZCAkKCRmb3VuZC5Db3VudCkgcG90ZW50aWFsbHkgc2Vuc2l0aXZlIGZpbGVzOiIKICAgICRmb3VuZCB8IFNlbGVjdC1PYmplY3QgLUZpcnN0IDE1IHwgRm9yRWFjaC1PYmplY3QgeyBXcml0ZS1Ib3N0ICIgICQoJF8uRnVsbE5hbWUpIiAtRm9yZWdyb3VuZENvbG9yIFllbGxvdyB9Cn0gZWxzZSB7IFdyaXRlLVN1Y2Nlc3MgIk5vIGNvbW1vbiBzZW5zaXRpdmUgZmlsZXMgZm91bmQuIiB9CgojIC0tLSA5LiBQRVJTSVNURU5DRSAmIEFVVE9TVEFSVCAtLS0KV3JpdGUtSGVhZGVyICJQRVJTSVNURU5DRSAmIEFVVE9TVEFSVCIKCiAkcnVuS2V5cyA9IEAoIkhLTE06XFNvZnR3YXJlXE1pY3Jvc29mdFxXaW5kb3dzXEN1cnJlbnRWZXJzaW9uXFJ1biIsICJIS0xNOlxTb2Z0d2FyZVxNaWNyb3NvZnRcV2luZG93c1xDdXJyZW50VmVyc2lvblxSdW5PbmNlIiwgIkhLQ1U6XFNvZnR3YXJlXE1pY3Jvc29mdFxXaW5kb3dzXEN1cnJlbnRWZXJzaW9uXFJ1biIsICJIS0NVOlxTb2Z0d2FyZVxNaWNyb3NvZnRcV2luZG93c1xDdXJyZW50VmVyc2lvblxSdW5PbmNlIikKV3JpdGUtSG9zdCAiICBSZWdpc3RyeSBSdW4gS2V5czoiIC1Gb3JlZ3JvdW5kQ29sb3IgR3JheQpmb3JlYWNoICgka2V5UGF0aCBpbiAkcnVuS2V5cykgewogICAgJHByb3BzID0gR2V0LUl0ZW1Qcm9wZXJ0eSAka2V5UGF0aCAtRXJyb3JBY3Rpb24gSWdub3JlCiAgICAkcHJvcHMuUFNPYmplY3QuUHJvcGVydGllcyB8IFdoZXJlLU9iamVjdCB7ICRfLk5hbWUgLW5vdGxpa2UgIlBTKiIgfSB8IEZvckVhY2gtT2JqZWN0IHsgV3JpdGUtSG9zdCAiICAka2V5UGF0aFwkKCRfLk5hbWUpID0gJCgkXy5WYWx1ZSkiIC1Gb3JlZ3JvdW5kQ29sb3IgWWVsbG93IH0KfQoKV3JpdGUtSG9zdCAiYG4gIFN0YXJ0dXAgRm9sZGVyczoiIC1Gb3JlZ3JvdW5kQ29sb3IgR3JheQogJHN0YXJ0dXBQYXRocyA9IEAoIiRlbnY6QVBQREFUQVxNaWNyb3NvZnRcV2luZG93c1xTdGFydCBNZW51XFByb2dyYW1zXFN0YXJ0dXAiLCAiJGVudjpQcm9ncmFtRGF0YVxNaWNyb3NvZnRcV2luZG93c1xTdGFydCBNZW51XFByb2dyYW1zXFN0YXJ0dXAiKQpmb3JlYWNoICgkcCBpbiAkc3RhcnR1cFBhdGhzKSB7IEdldC1DaGlsZEl0ZW0gJHAgLUZpbGUgLUVycm9yQWN0aW9uIElnbm9yZSB8IEZvckVhY2gtT2JqZWN0IHsgV3JpdGUtSG9zdCAiICAkKCRfLkZ1bGxOYW1lKSIgLUZvcmVncm91bmRDb2xvciBZZWxsb3cgfSB9CgojIEZJWDogSWdub3JlIGRlZmF1bHQgV2luZG93cyBTQ00gV01JIHBlcnNpc3RlbmNlIHRvIGF2b2lkIGZhbHNlIHBvc2l0aXZlcwpXcml0ZS1Ib3N0ICJgbiAgV01JIEV2ZW50IENvbnN1bWVycyAoUGVyc2lzdGVuY2UpOiIgLUZvcmVncm91bmRDb2xvciBHcmF5CnRyeSB7CiAgICAkY29uc3VtZXJzID0gR2V0LVdtaU9iamVjdCAtQ2xhc3MgX19GaWx0ZXJUb0NvbnN1bWVyQmluZGluZyAtTmFtZXNwYWNlICJyb290XHN1YnNjcmlwdGlvbiIgLUVycm9yQWN0aW9uIElnbm9yZQogICAgJHN1c3BpY2lvdXNDb25zdW1lcnMgPSAkY29uc3VtZXJzIHwgV2hlcmUtT2JqZWN0IHsgJF8uRmlsdGVyIC1ub3RtYXRjaCAiU0NNIEV2ZW50IExvZyBGaWx0ZXIiIC1hbmQgJF8uQ29uc3VtZXIgLW5vdG1hdGNoICJTQ00gRXZlbnQgTG9nIENvbnN1bWVyIiB9CiAgICBpZiAoJHN1c3BpY2lvdXNDb25zdW1lcnMpIHsgCiAgICAgICAgJHN1c3BpY2lvdXNDb25zdW1lcnMgfCBGb3JFYWNoLU9iamVjdCB7IFdyaXRlLVdhcm4gIldNSSBGaWx0ZXJUb0NvbnN1bWVyQmluZGluZyBmb3VuZCEgRmlsdGVyOiAkKCRfLkZpbHRlcikgQ29uc3VtZXI6ICQoJF8uQ29uc3VtZXIpIiB9IAogICAgfQogICAgZWxzZSB7IFdyaXRlLVN1Y2Nlc3MgIk5vIHN1c3BpY2lvdXMgV01JIHBlcnNpc3RlbmNlIGZvdW5kIChXaW5kb3dzIGRlZmF1bHQgaWdub3JlZCkuIiB9Cn0gY2F0Y2ggeyBXcml0ZS1Ib3N0ICIgIEFjY2VzcyBkZW5pZWQgdG8gcm9vdFxzdWJzY3JpcHRpb24uIiAtRm9yZWdyb3VuZENvbG9yIEdyYXkgfQoKV3JpdGUtSG9zdCAiYG4gIFBvd2VyU2hlbGwgSGlzdG9yeSAoUFNSZWFkTGluZSk6IiAtRm9yZWdyb3VuZENvbG9yIEdyYXkKdHJ5IHsKICAgICRoaXN0UGF0aCA9IChHZXQtUFNSZWFkTGluZU9wdGlvbikuSGlzdG9yeVNhdmVQYXRoCiAgICBpZiAoVGVzdC1QYXRoICRoaXN0UGF0aCkgeyBHZXQtQ29udGVudCAkaGlzdFBhdGggLVRhaWwgNSAtRXJyb3JBY3Rpb24gSWdub3JlIHwgRm9yRWFjaC1PYmplY3QgeyBXcml0ZS1Ib3N0ICIgICRfIiAtRm9yZWdyb3VuZENvbG9yIEdyYXkgfSB9Cn0gY2F0Y2gge30KCiMgLS0tIDEwLiBQUk9DRVNTRVMgJiBTRVJWSUNFUyAtLS0KV3JpdGUtSGVhZGVyICJQUk9DRVNTRVMgJiBTRVJWSUNFUyIKCldyaXRlLUhvc3QgIiAgU2VydmljZXMgd2l0aCBOb24tU3RhbmRhcmQgUGF0aHMgKFBvdGVudGlhbCBXZWFrIFBlcm1pc3Npb25zKToiIC1Gb3JlZ3JvdW5kQ29sb3IgR3JheQogJHNlcnZpY2VzID0gR2V0LUNpbUluc3RhbmNlIFdpbjMyX1NlcnZpY2UgLUVycm9yQWN0aW9uIElnbm9yZQogJG5vblN0ZCA9ICRzZXJ2aWNlcyB8IFdoZXJlLU9iamVjdCB7ICRfLlBhdGhOYW1lIC1hbmQgJF8uUGF0aE5hbWUgLW5vdGxpa2UgIkM6XFdpbmRvd3NcKiIgLWFuZCAkXy5TdGFydE5hbWUgLWVxICJMb2NhbFN5c3RlbSIgfQogJG5vblN0ZCB8IFNlbGVjdC1PYmplY3QgLUZpcnN0IDEwIHwgRm9yRWFjaC1PYmplY3QgeyBXcml0ZS1Ib3N0ICIgICQoJF8uTmFtZSk6ICQoJF8uUGF0aE5hbWUpIiAtRm9yZWdyb3VuZENvbG9yIFllbGxvdyB9CgojIC0tLSAxMS4gVlVMTkVSQUJJTElUSUVTICYgU1lTVEVNIENPTkZJRyAtLS0KV3JpdGUtSGVhZGVyICJWVUxORVJBQklMSVRJRVMgJiBDT05GSUciCgogJHNwb29sZXJSdW5uaW5nID0gKEdldC1TZXJ2aWNlIC1OYW1lIFNwb29sZXIgLUVycm9yQWN0aW9uIElnbm9yZSkuU3RhdHVzIC1lcSAiUnVubmluZyIKICRwbnBLZXkgPSAoR2V0LUl0ZW1Qcm9wZXJ0eSAiSEtMTTpcU09GVFdBUkVcUG9saWNpZXNcTWljcm9zb2Z0XFdpbmRvd3MgTlRcUHJpbnRlcnNcUG9pbnRBbmRQcmludCIgLU5hbWUgTm9XYXJuaW5nTm9FbGV2YXRpb25Pbkluc3RhbGwgLUVycm9yQWN0aW9uIElnbm9yZSkuTm9XYXJuaW5nTm9FbGV2YXRpb25Pbkluc3RhbGwKaWYgKCRzcG9vbGVyUnVubmluZyAtYW5kICRwbnBLZXkgLWVxIDEpIHsKICAgIFdyaXRlLUJhZCAiUHJpbnROaWdodG1hcmU6IFNwb29sZXIgcnVubmluZyBhbmQgUG9pbnRBbmRQcmludCBOb1dhcm5pbmdOb0VsZXZhdGlvbk9uSW5zdGFsbD0xISIKfSBlbHNlaWYgKCRzcG9vbGVyUnVubmluZykgewogICAgV3JpdGUtU3VjY2VzcyAiUHJpbnROaWdodG1hcmU6IFNwb29sZXIgcnVubmluZywgYnV0IFBvaW50QW5kUHJpbnQgYXBwZWFycyByZXN0cmljdGVkL3BhdGNoZWQuIgp9IGVsc2UgeyBXcml0ZS1TdWNjZXNzICJQcmludE5pZ2h0bWFyZTogU3Bvb2xlciBzdG9wcGVkLiIgfQoKICR3ZGlnZXN0ID0gKEdldC1JdGVtUHJvcGVydHkgIkhLTE06XFNZU1RFTVxDdXJyZW50Q29udHJvbFNldFxDb250cm9sXFNlY3VyaXR5UHJvdmlkZXJzXFdEaWdlc3QiIC1OYW1lIFVzZUxvZ29uQ3JlZGVudGlhbCAtRXJyb3JBY3Rpb24gSWdub3JlKS5Vc2VMb2dvbkNyZWRlbnRpYWwKaWYgKCR3ZGlnZXN0IC1lcSAxKSB7IFdyaXRlLUJhZCAiV0RpZ2VzdCBVc2VMb2dvbkNyZWRlbnRpYWw9MSAoUGxhaW50ZXh0IGNyZWRzIGluIG1lbW9yeSEpIiB9IGVsc2UgeyBXcml0ZS1TdWNjZXNzICJXRGlnZXN0IFVzZUxvZ29uQ3JlZGVudGlhbCBkaXNhYmxlZC9taXNzaW5nLiIgfQoKaWYgKCRpc0FkbWluKSB7CiAgICB0cnkgeyAkc2FtID0gR2V0LUl0ZW1Qcm9wZXJ0eSAiSEtMTTpcU0FNXFNBTSIgLUVycm9yQWN0aW9uIElnbm9yZTsgV3JpdGUtV2FybiAiU0FNIGhpdmUgaXMgYWNjZXNzaWJsZSBmb3IgcmVhZGluZyAoUG90ZW50aWFsIGR1bXApLiIgfSBjYXRjaCB7IFdyaXRlLVN1Y2Nlc3MgIlNBTSBoaXZlIGFjY2VzcyBkZW5pZWQgKEdvb2QpLiIgfQp9CgogJGZEZW55ID0gKEdldC1JdGVtUHJvcGVydHkgIkhLTE06XFN5c3RlbVxDdXJyZW50Q29udHJvbFNldFxDb250cm9sXFRlcm1pbmFsIFNlcnZlciIgLU5hbWUgZkRlbnlUU0Nvbm5lY3Rpb25zIC1FcnJvckFjdGlvbiBJZ25vcmUpLmZEZW55VFNDb25uZWN0aW9ucwpXcml0ZS1JdGVtICJSRFAgU3RhdHVzIiAoaWYgKCRmRGVueSAtZXEgMCkgeyAiRW5hYmxlZCIgfSBlbHNlIHsgIkRpc2FibGVkIiB9KQoKIyAtLS0gMTIuIEZPUkVOU0lDUyAmIEFDVElWSVRZIC0tLQpXcml0ZS1IZWFkZXIgIkZPUkVOU0lDUyAmIEFDVElWSVRZIgoKdHJ5IHsKICAgIEFkZC1UeXBlIC1Bc3NlbWJseU5hbWUgU3lzdGVtLldpbmRvd3MuRm9ybXMKICAgICRjbGlwID0gW1N5c3RlbS5XaW5kb3dzLkZvcm1zLkNsaXBib2FyZF06OkdldFRleHQoKQogICAgaWYgKCRjbGlwKSB7IFdyaXRlLUl0ZW0gIkNsaXBib2FyZCBDb250ZW50IiAkY2xpcC5TdWJzdHJpbmcoMCwgW21hdGhdOjpNaW4oJGNsaXAuTGVuZ3RoLCA1MDApKSB9Cn0gY2F0Y2gge30KCldyaXRlLUhvc3QgImBuICBVU0IgSGlzdG9yeToiIC1Gb3JlZ3JvdW5kQ29sb3IgR3JheQpHZXQtSXRlbVByb3BlcnR5ICJIS0xNOlxTWVNURU1cQ3VycmVudENvbnRyb2xTZXRcRW51bVxVU0JTVE9SXCpcKiIgLUVycm9yQWN0aW9uIElnbm9yZSB8IFNlbGVjdC1PYmplY3QgRnJpZW5kbHlOYW1lIHwgRm9ybWF0LVRhYmxlIC1BdXRvU2l6ZSB8IE91dC1Ib3N0CgpXcml0ZS1Ib3N0ICIgIFJlY2VudCBTeXN0ZW0zMiBNb2RpZmljYXRpb25zIChsYXN0IDMgZGF5cyk6IiAtRm9yZWdyb3VuZENvbG9yIEdyYXkKICRjdXRvZmYgPSAoR2V0LURhdGUpLkFkZERheXMoLTMpCkdldC1DaGlsZEl0ZW0gIiRlbnY6U3lzdGVtUm9vdFxTeXN0ZW0zMiIgLUZpbGUgLVJlY3Vyc2UgLUVycm9yQWN0aW9uIElnbm9yZSB8IFdoZXJlLU9iamVjdCB7ICRfLkxhc3RXcml0ZVRpbWUgLWd0ICRjdXRvZmYgfSB8IFNlbGVjdC1PYmplY3QgRnVsbE5hbWUsIExhc3RXcml0ZVRpbWUgfCBTb3J0LU9iamVjdCBMYXN0V3JpdGVUaW1lIC1EZXNjZW5kaW5nIHwgU2VsZWN0LU9iamVjdCAtRmlyc3QgNSB8IEZvcm1hdC1UYWJsZSAtQXV0b1NpemUgfCBPdXQtSG9zdAoKV3JpdGUtSG9zdCAiICBCcm93c2VyIFByb2ZpbGVzOiIgLUZvcmVncm91bmRDb2xvciBHcmF5CiAkYnJvd3NlcnMgPSBAKEB7IE5hbWU9IkNocm9tZSI7IFBhdGg9IiRlbnY6TE9DQUxBUFBEQVRBXEdvb2dsZVxDaHJvbWVcVXNlciBEYXRhXERlZmF1bHQiIH0sIEB7IE5hbWU9IkVkZ2UiOyBQYXRoPSIkZW52OkxPQ0FMQVBQREFUQVxNaWNyb3NvZnRcRWRnZVxVc2VyIERhdGFcRGVmYXVsdCIgfSwgQHsgTmFtZT0iRmlyZWZveCI7IFBhdGg9IiRlbnY6QVBQREFUQVxNb3ppbGxhXEZpcmVmb3hcUHJvZmlsZXMiIH0pCmZvcmVhY2ggKCRiIGluICRicm93c2VycykgeyBpZiAoVGVzdC1QYXRoICRiLlBhdGgpIHsgV3JpdGUtSG9zdCAiICAkKCRiLk5hbWUpIGZvdW5kIGF0ICQoJGIuUGF0aCkiIC1Gb3JlZ3JvdW5kQ29sb3IgWWVsbG93IH0gfQoKV3JpdGUtSXRlbSAiV1NMIiAoaWYgKEdldC1Db21tYW5kIHdzbCAtRXJyb3JBY3Rpb24gSWdub3JlKSB7ICJJbnN0YWxsZWQiIH0gZWxzZSB7ICJOb3QgSW5zdGFsbGVkIiB9KQpXcml0ZS1JdGVtICJEb2NrZXIiIChpZiAoR2V0LUNvbW1hbmQgZG9ja2VyIC1FcnJvckFjdGlvbiBJZ25vcmUpIHsgIkluc3RhbGxlZCIgfSBlbHNlIHsgIk5vdCBJbnN0YWxsZWQiIH0pCgojIC0tLSBFTkQgT0YgUkVQT1JUIC0tLQpXcml0ZS1Ib3N0ICJgbj09PSBFTkQgT0YgUkVQT1JUID09PSIgLUZvcmVncm91bmRDb2xvciBDeWFuCmlmICgtbm90ICRpc0FkbWluKSB7IFdyaXRlLUhvc3QgIlRpcDogUnVuIGFzIEFkbWluaXN0cmF0b3IgdG8gcmV2ZWFsIFdpLUZpIHBhc3N3b3JkcywgZnVsbCBwcml2aWxlZ2VzLCBMU0EvQml0TG9ja2VyLCBhbmQgU0FNIGNoZWNrcy4iIC1Gb3JlZ3JvdW5kQ29sb3IgWWVsbG93IH0=