mirror of
https://github.com/laurent22/joplin.git
synced 2024-12-15 09:04:04 +02:00
1 line
1.4 MiB
1 line
1.4 MiB
module.exports = `KGZ1bmN0aW9uKGpyLHduKXt0eXBlb2YgZXhwb3J0cz09Im9iamVjdCImJnR5cGVvZiBtb2R1bGU8InUiP21vZHVsZS5leHBvcnRzPXduKCk6dHlwZW9mIGRlZmluZT09ImZ1bmN0aW9uIiYmZGVmaW5lLmFtZD9kZWZpbmUod24pOihqcj10eXBlb2YgZ2xvYmFsVGhpczwidSI/Z2xvYmFsVGhpczpqcnx8c2VsZixqci5tZXJtYWlkPXduKCkpfSkodGhpcyxmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0Ijt2YXIgT3N0PU9iamVjdC5kZWZpbmVQcm9wZXJ0eTt2YXIgRnN0PShqcix3bixmbik9PnduIGluIGpyP09zdChqcix3bix7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Zm59KTpqclt3bl09Zm47dmFyIHZsPShqcix3bixmbik9PihGc3QoanIsdHlwZW9mIHduIT0ic3ltYm9sIj93bisiIjp3bixmbiksZm4pO3ZhciBqcj10eXBlb2YgZ2xvYmFsVGhpczwidSI/Z2xvYmFsVGhpczp0eXBlb2Ygd2luZG93PCJ1Ij93aW5kb3c6dHlwZW9mIGdsb2JhbDwidSI/Z2xvYmFsOnR5cGVvZiBzZWxmPCJ1Ij9zZWxmOnt9O2Z1bmN0aW9uIHduKHQpe3ZhciBlPXQuZGVmYXVsdDtpZih0eXBlb2YgZT09ImZ1bmN0aW9uIil7dmFyIHI9ZnVuY3Rpb24oKXtyZXR1cm4gZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O3IucHJvdG90eXBlPWUucHJvdG90eXBlfWVsc2Ugcj17fTtyZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHIsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLE9iamVjdC5rZXlzKHQpLmZvckVhY2goZnVuY3Rpb24obil7dmFyIGk9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LG4pO09iamVjdC5kZWZpbmVQcm9wZXJ0eShyLG4saS5nZXQ/aTp7ZW51bWVyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdFtuXX19KX0pLHJ9ZnVuY3Rpb24gZm4odCl7dGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgZHluYW1pY2FsbHkgcmVxdWlyZSAiJyt0KyciLiBQbGVhc2UgY29uZmlndXJlIHRoZSBkeW5hbWljUmVxdWlyZVRhcmdldHMgb3IvYW5kIGlnbm9yZUR5bmFtaWNSZXF1aXJlcyBvcHRpb24gb2YgQHJvbGx1cC9wbHVnaW4tY29tbW9uanMgYXBwcm9wcmlhdGVseSBmb3IgdGhpcyByZXF1aXJlIGNhbGwgdG8gd29yay4nKX12YXIgeV89e2V4cG9ydHM6e319OyhmdW5jdGlvbih0LGUpeyhmdW5jdGlvbihyLG4pe3QuZXhwb3J0cz1uKCl9KShqcixmdW5jdGlvbigpe3ZhciByO2Z1bmN0aW9uIG4oKXtyZXR1cm4gci5hcHBseShudWxsLGFyZ3VtZW50cyl9ZnVuY3Rpb24gaShnKXtyZXR1cm4gZyBpbnN0YW5jZW9mIEFycmF5fHxPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZyk9PT0iW29iamVjdCBBcnJheV0ifWZ1bmN0aW9uIGEoZyl7cmV0dXJuIGchPW51bGwmJk9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChnKT09PSJbb2JqZWN0IE9iamVjdF0ifWZ1bmN0aW9uIHMoZyxFKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGcsRSl9ZnVuY3Rpb24gbyhnKXtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcylyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZykubGVuZ3RoPT09MDtmb3IodmFyIEUgaW4gZylpZihzKGcsRSkpcmV0dXJuO3JldHVybiAxfWZ1bmN0aW9uIGwoZyl7cmV0dXJuIGc9PT12b2lkIDB9ZnVuY3Rpb24gdShnKXtyZXR1cm4gdHlwZW9mIGc9PSJudW1iZXIifHxPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZyk9PT0iW29iamVjdCBOdW1iZXJdIn1mdW5jdGlvbiBoKGcpe3JldHVybiBnIGluc3RhbmNlb2YgRGF0ZXx8T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGcpPT09IltvYmplY3QgRGF0ZV0ifWZ1bmN0aW9uIGQoZyxFKXtmb3IodmFyIEk9W10sTz1nLmxlbmd0aCxHPTA7RzxPOysrRylJLnB1c2goRShnW0ddLEcpKTtyZXR1cm4gSX1mdW5jdGlvbiBmKGcsRSl7Zm9yKHZhciBJIGluIEUpcyhFLEkpJiYoZ1tJXT1FW0ldKTtyZXR1cm4gcyhFLCJ0b1N0cmluZyIpJiYoZy50b1N0cmluZz1FLnRvU3RyaW5nKSxzKEUsInZhbHVlT2YiKSYmKGcudmFsdWVPZj1FLnZhbHVlT2YpLGd9ZnVuY3Rpb24gcChnLEUsSSxPKXtyZXR1cm4gRHIoZyxFLEksTywhMCkudXRjKCl9ZnVuY3Rpb24gbShnKXtyZXR1cm4gZy5fcGY9PW51bGwmJihnLl9wZj17ZW1wdHk6ITEsdW51c2VkVG9rZW5zOltdLHVudXNlZElucHV0OltdLG92ZXJmbG93Oi0yLGNoYXJzTGVmdE92ZXI6MCxudWxsSW5wdXQ6ITEsaW52YWxpZEVyYTpudWxsLGludmFsaWRNb250aDpudWxsLGludmFsaWRGb3JtYXQ6ITEsdXNlckludmFsaWRhdGVkOiExLGlzbzohMSxwYXJzZWREYXRlUGFydHM6W10sZXJhOm51bGwsbWVyaWRpZW06bnVsbCxyZmMyODIyOiExLHdlZWtkYXlNaXNtYXRjaDohMX0pLGcuX3BmfWZ1bmN0aW9uIF8oZyl7aWYoZy5faXNWYWxpZD09bnVsbCl7dmFyIEU9bShnKSxJPWIuY2FsbChFLnBhcnNlZERhdGVQYXJ0cyxmdW5jdGlvbihPKXtyZXR1cm4gTyE9bnVsbH0pLEk9IWlzTmFOKGcuX2QuZ2V0VGltZSgpKSYmRS5vdmVyZmxvdzwwJiYhRS5lbXB0eSYmIUUuaW52YWxpZEVyYSYmIUUuaW52YWxpZE1vbnRoJiYhRS5pbnZhbGlkV2Vla2RheSYmIUUud2Vla2RheU1pc21hdGNoJiYhRS5udWxsSW5wdXQmJiFFLmludmFsaWRGb3JtYXQmJiFFLnVzZXJJbnZhbGlkYXRlZCYmKCFFLm1lcmlkaWVtfHxFLm1lcmlkaWVtJiZJKTtpZihnLl9zdHJpY3QmJihJPUkmJkUuY2hhcnNMZWZ0T3Zlcj09PTAmJkUudW51c2VkVG9rZW5zLmxlbmd0aD09PTAmJkUuYmlnSG91cj09PXZvaWQgMCksT2JqZWN0LmlzRnJvemVuIT1udWxsJiZPYmplY3QuaXNGcm96ZW4oZykpcmV0dXJuIEk7Zy5faXNWYWxpZD1JfXJldHVybiBnLl9pc1ZhbGlkfWZ1bmN0aW9uIHkoZyl7dmFyIEU9cChOYU4pO3JldHVybiBnIT1udWxsP2YobShFKSxnKTptKEUpLnVzZXJJbnZhbGlkYXRlZD0hMCxFfXZhciBiPUFycmF5LnByb3RvdHlwZS5zb21lfHxmdW5jdGlvbihnKXtmb3IodmFyIEU9T2JqZWN0KHRoaXMpLEk9RS5sZW5ndGg+Pj4wLE89MDtPPEk7TysrKWlmKE8gaW4gRSYmZy5jYWxsKHRoaXMsRVtPXSxPLEUpKXJldHVybiEwO3JldHVybiExfSx4PW4ubW9tZW50UHJvcGVydGllcz1bXSxrPSExO2Z1bmN0aW9uIFQoZyxFKXt2YXIgSSxPLEcsaHQ9eC5sZW5ndGg7aWYobChFLl9pc0FNb21lbnRPYmplY3QpfHwoZy5faXNBTW9tZW50T2JqZWN0PUUuX2lzQU1vbWVudE9iamVjdCksbChFLl9pKXx8KGcuX2k9RS5faSksbChFLl9mKXx8KGcuX2Y9RS5fZiksbChFLl9sKXx8KGcuX2w9RS5fbCksbChFLl9zdHJpY3QpfHwoZy5fc3RyaWN0PUUuX3N0cmljdCksbChFLl90em0pfHwoZy5fdHptPUUuX3R6bSksbChFLl9pc1VUQyl8fChnLl9pc1VUQz1FLl9pc1VUQyksbChFLl9vZmZzZXQpfHwoZy5fb2Zmc2V0PUUuX29mZnNldCksbChFLl9wZil8fChnLl9wZj1tKEUpKSxsKEUuX2xvY2FsZSl8fChnLl9sb2NhbGU9RS5fbG9jYWxlKSwwPGh0KWZvcihJPTA7STxodDtJKyspbChHPUVbTz14W0ldXSl8fChnW09dPUcpO3JldHVybiBnfWZ1bmN0aW9uIEMoZyl7VCh0aGlzLGcpLHRoaXMuX2Q9bmV3IERhdGUoZy5fZCE9bnVsbD9nLl9kLmdldFRpbWUoKTpOYU4pLHRoaXMuaXNWYWxpZCgpfHwodGhpcy5fZD1uZXcgRGF0ZShOYU4pKSxrPT09ITEmJihrPSEwLG4udXBkYXRlT2Zmc2V0KHRoaXMpLGs9ITEpfWZ1bmN0aW9uIE0oZyl7cmV0dXJuIGcgaW5zdGFuY2VvZiBDfHxnIT1udWxsJiZnLl9pc0FNb21lbnRPYmplY3QhPW51bGx9ZnVuY3Rpb24gUyhnKXtuLnN1cHByZXNzRGVwcmVjYXRpb25XYXJuaW5ncz09PSExJiZ0eXBlb2YgY29uc29sZTwidSImJmNvbnNvbGUud2FybiYmY29uc29sZS53YXJuKCJEZXByZWNhdGlvbiB3YXJuaW5nOiAiK2cpfWZ1bmN0aW9uIFIoZyxFKXt2YXIgST0hMDtyZXR1cm4gZihmdW5jdGlvbigpe2lmKG4uZGVwcmVjYXRpb25IYW5kbGVyIT1udWxsJiZuLmRlcHJlY2F0aW9uSGFuZGxlcihudWxsLGcpLEkpe2Zvcih2YXIgTyxHLGh0PVtdLHh0PWFyZ3VtZW50cy5sZW5ndGgsTXQ9MDtNdDx4dDtNdCsrKXtpZihPPSIiLHR5cGVvZiBhcmd1bWVudHNbTXRdPT0ib2JqZWN0Iil7Zm9yKEcgaW4gTys9YApbYCtNdCsiXSAiLGFyZ3VtZW50c1swXSlzKGFyZ3VtZW50c1swXSxHKSYmKE8rPUcrIjogIithcmd1bWVudHNbMF1bR10rIiwgIik7Tz1PLnNsaWNlKDAsLTIpfWVsc2UgTz1hcmd1bWVudHNbTXRdO2h0LnB1c2goTyl9UyhnK2AKQXJndW1lbnRzOiBgK0FycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGh0KS5qb2luKCIiKStgCmArbmV3IEVycm9yKCkuc3RhY2spLEk9ITF9cmV0dXJuIEUuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxFKX12YXIgQT17fTtmdW5jdGlvbiBMKGcsRSl7bi5kZXByZWNhdGlvbkhhbmRsZXIhPW51bGwmJm4uZGVwcmVjYXRpb25IYW5kbGVyKGcsRSksQVtnXXx8KFMoRSksQVtnXT0hMCl9ZnVuY3Rpb24gdihnKXtyZXR1cm4gdHlwZW9mIEZ1bmN0aW9uPCJ1IiYmZyBpbnN0YW5jZW9mIEZ1bmN0aW9ufHxPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZyk9PT0iW29iamVjdCBGdW5jdGlvbl0ifWZ1bmN0aW9uIEIoZyxFKXt2YXIgSSxPPWYoe30sZyk7Zm9yKEkgaW4gRSlzKEUsSSkmJihhKGdbSV0pJiZhKEVbSV0pPyhPW0ldPXt9LGYoT1tJXSxnW0ldKSxmKE9bSV0sRVtJXSkpOkVbSV0hPW51bGw/T1tJXT1FW0ldOmRlbGV0ZSBPW0ldKTtmb3IoSSBpbiBnKXMoZyxJKSYmIXMoRSxJKSYmYShnW0ldKSYmKE9bSV09Zih7fSxPW0ldKSk7cmV0dXJuIE99ZnVuY3Rpb24gdyhnKXtnIT1udWxsJiZ0aGlzLnNldChnKX1uLnN1cHByZXNzRGVwcmVjYXRpb25XYXJuaW5ncz0hMSxuLmRlcHJlY2F0aW9uSGFuZGxlcj1udWxsO3ZhciBEPU9iamVjdC5rZXlzfHxmdW5jdGlvbihnKXt2YXIgRSxJPVtdO2ZvcihFIGluIGcpcyhnLEUpJiZJLnB1c2goRSk7cmV0dXJuIEl9O2Z1bmN0aW9uIE4oZyxFLEkpe3ZhciBPPSIiK01hdGguYWJzKGcpO3JldHVybigwPD1nP0k/IisiOiIiOiItIikrTWF0aC5wb3coMTAsTWF0aC5tYXgoMCxFLU8ubGVuZ3RoKSkudG9TdHJpbmcoKS5zdWJzdHIoMSkrT312YXIgej0vKFxbW15cW10qXF0pfChcXCk/KFtIaF1tbShzcyk/fE1vfE1NP00/TT98RG98REREb3xERD9EP0Q/fGRkZD9kP3xkbz98d1tvfHddP3xXW298V10/fFFvP3xOezEsNX18WVlZWVlZfFlZWVlZfFlZWVl8WVl8eXsyLDR9fHlvP3xnZyhnZ2c/KT98R0coR0dHPyk/fGV8RXxhfEF8aGg/fEhIP3xraz98bW0/fHNzP3xTezEsOX18eHxYfHp6P3xaWj98LikvZyxYPS8oXFtbXlxbXSpcXSl8KFxcKT8oTFRTfExUfExMP0w/TD98bHsxLDR9KS9nLGN0PXt9LEo9e307ZnVuY3Rpb24gWShnLEUsSSxPKXt2YXIgRz10eXBlb2YgTz09InN0cmluZyI/ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc1tPXSgpfTpPO2cmJihKW2ddPUcpLEUmJihKW0VbMF1dPWZ1bmN0aW9uKCl7cmV0dXJuIE4oRy5hcHBseSh0aGlzLGFyZ3VtZW50cyksRVsxXSxFWzJdKX0pLEkmJihKW0ldPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLm9yZGluYWwoRy5hcHBseSh0aGlzLGFyZ3VtZW50cyksZyl9KX1mdW5jdGlvbiAkKGcsRSl7cmV0dXJuIGcuaXNWYWxpZCgpPyhFPWx0KEUsZy5sb2NhbGVEYXRhKCkpLGN0W0VdPWN0W0VdfHxmdW5jdGlvbihJKXtmb3IodmFyIE8sRz1JLm1hdGNoKHopLGh0PTAseHQ9Ry5sZW5ndGg7aHQ8eHQ7aHQrKylKW0dbaHRdXT9HW2h0XT1KW0dbaHRdXTpHW2h0XT0oTz1HW2h0XSkubWF0Y2goL1xbW1xzXFNdLyk/Ty5yZXBsYWNlKC9eXFt8XF0kL2csIiIpOk8ucmVwbGFjZSgvXFwvZywiIik7cmV0dXJuIGZ1bmN0aW9uKE10KXtmb3IodmFyIFZ0PSIiLE90PTA7T3Q8eHQ7T3QrKylWdCs9dihHW090XSk/R1tPdF0uY2FsbChNdCxJKTpHW090XTtyZXR1cm4gVnR9fShFKSxjdFtFXShnKSk6Zy5sb2NhbGVEYXRhKCkuaW52YWxpZERhdGUoKX1mdW5jdGlvbiBsdChnLEUpe3ZhciBJPTU7ZnVuY3Rpb24gTyhHKXtyZXR1cm4gRS5sb25nRGF0ZUZvcm1hdChHKXx8R31mb3IoWC5sYXN0SW5kZXg9MDswPD1JJiZYLnRlc3QoZyk7KWc9Zy5yZXBsYWNlKFgsTyksWC5sYXN0SW5kZXg9MCwtLUk7cmV0dXJuIGd9dmFyIHV0PXt9O2Z1bmN0aW9uIFcoZyxFKXt2YXIgST1nLnRvTG93ZXJDYXNlKCk7dXRbSV09dXRbSSsicyJdPXV0W0VdPWd9ZnVuY3Rpb24gdHQoZyl7cmV0dXJuIHR5cGVvZiBnPT0ic3RyaW5nIj91dFtnXXx8dXRbZy50b0xvd2VyQ2FzZSgpXTp2b2lkIDB9ZnVuY3Rpb24gSyhnKXt2YXIgRSxJLE89e307Zm9yKEkgaW4gZylzKGcsSSkmJihFPXR0KEkpKSYmKE9bRV09Z1tJXSk7cmV0dXJuIE99dmFyIGl0PXt9O2Z1bmN0aW9uIFooZyxFKXtpdFtnXT1FfWZ1bmN0aW9uIFYoZyl7cmV0dXJuIGclND09MCYmZyUxMDAhPTB8fGclNDAwPT0wfWZ1bmN0aW9uIFEoZyl7cmV0dXJuIGc8MD9NYXRoLmNlaWwoZyl8fDA6TWF0aC5mbG9vcihnKX1mdW5jdGlvbiBxKEUpe3ZhciBFPStFLEk9MDtyZXR1cm4gST1FIT0wJiZpc0Zpbml0ZShFKT9RKEUpOkl9ZnVuY3Rpb24gVShnLEUpe3JldHVybiBmdW5jdGlvbihJKXtyZXR1cm4gSSE9bnVsbD8oaih0aGlzLGcsSSksbi51cGRhdGVPZmZzZXQodGhpcyxFKSx0aGlzKTpGKHRoaXMsZyl9fWZ1bmN0aW9uIEYoZyxFKXtyZXR1cm4gZy5pc1ZhbGlkKCk/Zy5fZFsiZ2V0IisoZy5faXNVVEM/IlVUQyI6IiIpK0VdKCk6TmFOfWZ1bmN0aW9uIGooZyxFLEkpe2cuaXNWYWxpZCgpJiYhaXNOYU4oSSkmJihFPT09IkZ1bGxZZWFyIiYmVihnLnllYXIoKSkmJmcubW9udGgoKT09PTEmJmcuZGF0ZSgpPT09Mjk/KEk9cShJKSxnLl9kWyJzZXQiKyhnLl9pc1VUQz8iVVRDIjoiIikrRV0oSSxnLm1vbnRoKCkseXQoSSxnLm1vbnRoKCkpKSk6Zy5fZFsic2V0IisoZy5faXNVVEM/IlVUQyI6IiIpK0VdKEkpKX12YXIgUD0vXGQvLGZlPS9cZFxkLyxldD0vXGR7M30vLHRvPS9cZHs0fS8sb3M9L1srLV0/XGR7Nn0vLGF0PS9cZFxkPy8sSXQ9L1xkXGRcZFxkPy8sTHQ9L1xkXGRcZFxkXGRcZD8vLFJ0PS9cZHsxLDN9Lyxscz0vXGR7MSw0fS8sc3M9L1srLV0/XGR7MSw2fS8sQ3Q9L1xkKy8scHQ9L1srLV0/XGQrLyxtdD0vWnxbKy1dXGRcZDo/XGRcZC9naSx2dD0vWnxbKy1dXGRcZCg/Ojo/XGRcZCk/L2dpLFR0PS9bMC05XXswLDI1Nn1bJ2Etelx1MDBBMC1cdTA1RkZcdTA3MDAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGMDdcdUZGMTAtXHVGRkVGXXsxLDI1Nn18W1x1MDYwMC1cdTA2RkZcL117MSwyNTZ9KFxzKj9bXHUwNjAwLVx1MDZGRl17MSwyNTZ9KXsxLDJ9L2k7ZnVuY3Rpb24gZnQoZyxFLEkpe0d0W2ddPXYoRSk/RTpmdW5jdGlvbihPLEcpe3JldHVybiBPJiZJP0k6RX19ZnVuY3Rpb24gbGUoZyxFKXtyZXR1cm4gcyhHdCxnKT9HdFtnXShFLl9zdHJpY3QsRS5fbG9jYWxlKTpuZXcgUmVnRXhwKER0KGcucmVwbGFjZSgiXFwiLCIiKS5yZXBsYWNlKC9cXChcWyl8XFwoXF0pfFxbKFteXF1cW10qKVxdfFxcKC4pL2csZnVuY3Rpb24oSSxPLEcsaHQseHQpe3JldHVybiBPfHxHfHxodHx8eHR9KSkpfWZ1bmN0aW9uIER0KGcpe3JldHVybiBnLnJlcGxhY2UoL1stXC9cXF4kKis/LigpfFtcXXt9XS9nLCJcXCQmIil9dmFyIEd0PXt9LCR0PXt9O2Z1bmN0aW9uIFF0KGcsRSl7dmFyIEksTyxHPUU7Zm9yKHR5cGVvZiBnPT0ic3RyaW5nIiYmKGc9W2ddKSx1KEUpJiYoRz1mdW5jdGlvbihodCx4dCl7eHRbRV09cShodCl9KSxPPWcubGVuZ3RoLEk9MDtJPE87SSsrKSR0W2dbSV1dPUd9ZnVuY3Rpb24gd2UoZyxFKXtRdChnLGZ1bmN0aW9uKEksTyxHLGh0KXtHLl93PUcuX3d8fHt9LEUoSSxHLl93LEcsaHQpfSl9dmFyIGp0LEZ0PTAsenQ9MSx3dD0yLGJ0PTMsRXQ9NCxrdD01LFV0PTYsZ3Q9NyxoZT04O2Z1bmN0aW9uIHl0KGcsRSl7aWYoaXNOYU4oZyl8fGlzTmFOKEUpKXJldHVybiBOYU47dmFyIEk9KEUlKEk9MTIpK0kpJUk7cmV0dXJuIGcrPShFLUkpLzEyLEk9PTE/VihnKT8yOToyODozMS1JJTclMn1qdD1BcnJheS5wcm90b3R5cGUuaW5kZXhPZnx8ZnVuY3Rpb24oZyl7Zm9yKHZhciBFPTA7RTx0aGlzLmxlbmd0aDsrK0UpaWYodGhpc1tFXT09PWcpcmV0dXJuIEU7cmV0dXJuLTF9LFkoIk0iLFsiTU0iLDJdLCJNbyIsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tb250aCgpKzF9KSxZKCJNTU0iLDAsMCxmdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkubW9udGhzU2hvcnQodGhpcyxnKX0pLFkoIk1NTU0iLDAsMCxmdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkubW9udGhzKHRoaXMsZyl9KSxXKCJtb250aCIsIk0iKSxaKCJtb250aCIsOCksZnQoIk0iLGF0KSxmdCgiTU0iLGF0LGZlKSxmdCgiTU1NIixmdW5jdGlvbihnLEUpe3JldHVybiBFLm1vbnRoc1Nob3J0UmVnZXgoZyl9KSxmdCgiTU1NTSIsZnVuY3Rpb24oZyxFKXtyZXR1cm4gRS5tb250aHNSZWdleChnKX0pLFF0KFsiTSIsIk1NIl0sZnVuY3Rpb24oZyxFKXtFW3p0XT1xKGcpLTF9KSxRdChbIk1NTSIsIk1NTU0iXSxmdW5jdGlvbihnLEUsSSxPKXtPPUkuX2xvY2FsZS5tb250aHNQYXJzZShnLE8sSS5fc3RyaWN0KSxPIT1udWxsP0VbenRdPU86bShJKS5pbnZhbGlkTW9udGg9Z30pO3ZhciBuZT0iSmFudWFyeV9GZWJydWFyeV9NYXJjaF9BcHJpbF9NYXlfSnVuZV9KdWx5X0F1Z3VzdF9TZXB0ZW1iZXJfT2N0b2Jlcl9Ob3ZlbWJlcl9EZWNlbWJlciIuc3BsaXQoIl8iKSx2ZT0iSmFuX0ZlYl9NYXJfQXByX01heV9KdW5fSnVsX0F1Z19TZXBfT2N0X05vdl9EZWMiLnNwbGl0KCJfIikseWU9L0Rbb0RdPyhcW1teXFtcXV0qXF18XHMpK01NTU0/LyxiZT1UdCxUZT1UdDtmdW5jdGlvbiBXdChnLEUpe3ZhciBJO2lmKGcuaXNWYWxpZCgpKXtpZih0eXBlb2YgRT09InN0cmluZyIpe2lmKC9eXGQrJC8udGVzdChFKSlFPXEoRSk7ZWxzZSBpZighdShFPWcubG9jYWxlRGF0YSgpLm1vbnRoc1BhcnNlKEUpKSlyZXR1cm59ST1NYXRoLm1pbihnLmRhdGUoKSx5dChnLnllYXIoKSxFKSksZy5fZFsic2V0IisoZy5faXNVVEM/IlVUQyI6IiIpKyJNb250aCJdKEUsSSl9fWZ1bmN0aW9uIHNlKGcpe3JldHVybiBnIT1udWxsPyhXdCh0aGlzLGcpLG4udXBkYXRlT2Zmc2V0KHRoaXMsITApLHRoaXMpOkYodGhpcywiTW9udGgiKX1mdW5jdGlvbiBtZSgpe2Z1bmN0aW9uIGcoeHQsTXQpe3JldHVybiBNdC5sZW5ndGgteHQubGVuZ3RofWZvcih2YXIgRSxJPVtdLE89W10sRz1bXSxodD0wO2h0PDEyO2h0KyspRT1wKFsyZTMsaHRdKSxJLnB1c2godGhpcy5tb250aHNTaG9ydChFLCIiKSksTy5wdXNoKHRoaXMubW9udGhzKEUsIiIpKSxHLnB1c2godGhpcy5tb250aHMoRSwiIikpLEcucHVzaCh0aGlzLm1vbnRoc1Nob3J0KEUsIiIpKTtmb3IoSS5zb3J0KGcpLE8uc29ydChnKSxHLnNvcnQoZyksaHQ9MDtodDwxMjtodCsrKUlbaHRdPUR0KElbaHRdKSxPW2h0XT1EdChPW2h0XSk7Zm9yKGh0PTA7aHQ8MjQ7aHQrKylHW2h0XT1EdChHW2h0XSk7dGhpcy5fbW9udGhzUmVnZXg9bmV3IFJlZ0V4cCgiXigiK0cuam9pbigifCIpKyIpIiwiaSIpLHRoaXMuX21vbnRoc1Nob3J0UmVnZXg9dGhpcy5fbW9udGhzUmVnZXgsdGhpcy5fbW9udGhzU3RyaWN0UmVnZXg9bmV3IFJlZ0V4cCgiXigiK08uam9pbigifCIpKyIpIiwiaSIpLHRoaXMuX21vbnRoc1Nob3J0U3RyaWN0UmVnZXg9bmV3IFJlZ0V4cCgiXigiK0kuam9pbigifCIpKyIpIiwiaSIpfWZ1bmN0aW9uIHVlKGcpe3JldHVybiBWKGcpPzM2NjozNjV9WSgiWSIsMCwwLGZ1bmN0aW9uKCl7dmFyIGc9dGhpcy55ZWFyKCk7cmV0dXJuIGc8PTk5OTk/TihnLDQpOiIrIitnfSksWSgwLFsiWVkiLDJdLDAsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy55ZWFyKCklMTAwfSksWSgwLFsiWVlZWSIsNF0sMCwieWVhciIpLFkoMCxbIllZWVlZIiw1XSwwLCJ5ZWFyIiksWSgwLFsiWVlZWVlZIiw2LCEwXSwwLCJ5ZWFyIiksVygieWVhciIsInkiKSxaKCJ5ZWFyIiwxKSxmdCgiWSIscHQpLGZ0KCJZWSIsYXQsZmUpLGZ0KCJZWVlZIixscyx0byksZnQoIllZWVlZIixzcyxvcyksZnQoIllZWVlZWSIsc3Msb3MpLFF0KFsiWVlZWVkiLCJZWVlZWVkiXSxGdCksUXQoIllZWVkiLGZ1bmN0aW9uKGcsRSl7RVtGdF09Zy5sZW5ndGg9PT0yP24ucGFyc2VUd29EaWdpdFllYXIoZyk6cShnKX0pLFF0KCJZWSIsZnVuY3Rpb24oZyxFKXtFW0Z0XT1uLnBhcnNlVHdvRGlnaXRZZWFyKGcpfSksUXQoIlkiLGZ1bmN0aW9uKGcsRSl7RVtGdF09cGFyc2VJbnQoZywxMCl9KSxuLnBhcnNlVHdvRGlnaXRZZWFyPWZ1bmN0aW9uKGcpe3JldHVybiBxKGcpKyg2ODxxKGcpPzE5MDA6MmUzKX07dmFyIE4wPVUoIkZ1bGxZZWFyIiwhMCk7ZnVuY3Rpb24gX2EoZyxFLEksTyxHLGh0LHh0KXt2YXIgTXQ7cmV0dXJuIGc8MTAwJiYwPD1nPyhNdD1uZXcgRGF0ZShnKzQwMCxFLEksTyxHLGh0LHh0KSxpc0Zpbml0ZShNdC5nZXRGdWxsWWVhcigpKSYmTXQuc2V0RnVsbFllYXIoZykpOk10PW5ldyBEYXRlKGcsRSxJLE8sRyxodCx4dCksTXR9ZnVuY3Rpb24gSHIoZyl7dmFyIEU7cmV0dXJuIGc8MTAwJiYwPD1nPygoRT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpKVswXT1nKzQwMCxFPW5ldyBEYXRlKERhdGUuVVRDLmFwcGx5KG51bGwsRSkpLGlzRmluaXRlKEUuZ2V0VVRDRnVsbFllYXIoKSkmJkUuc2V0VVRDRnVsbFllYXIoZykpOkU9bmV3IERhdGUoRGF0ZS5VVEMuYXBwbHkobnVsbCxhcmd1bWVudHMpKSxFfWZ1bmN0aW9uIEllKGcsRSxJKXtyZXR1cm4gST03K0UtSSxJLSg3K0hyKGcsMCxJKS5nZXRVVENEYXkoKS1FKSU3LTF9ZnVuY3Rpb24gb2UoZyx4dCxNdCxPLEcpe3ZhciBodCx4dD0xKzcqKHh0LTEpKyg3K010LU8pJTcrSWUoZyxPLEcpLE10PXh0PD0wP3VlKGh0PWctMSkreHQ6eHQ+dWUoZyk/KGh0PWcrMSx4dC11ZShnKSk6KGh0PWcseHQpO3JldHVybnt5ZWFyOmh0LGRheU9mWWVhcjpNdH19ZnVuY3Rpb24gS2UoZyxFLEkpe3ZhciBPLEcsaHQ9SWUoZy55ZWFyKCksRSxJKSxodD1NYXRoLmZsb29yKChnLmRheU9mWWVhcigpLWh0LTEpLzcpKzE7cmV0dXJuIGh0PDE/Tz1odCt3cihHPWcueWVhcigpLTEsRSxJKTpodD53cihnLnllYXIoKSxFLEkpPyhPPWh0LXdyKGcueWVhcigpLEUsSSksRz1nLnllYXIoKSsxKTooRz1nLnllYXIoKSxPPWh0KSx7d2VlazpPLHllYXI6R319ZnVuY3Rpb24gd3IoZyxHLEkpe3ZhciBPPUllKGcsRyxJKSxHPUllKGcrMSxHLEkpO3JldHVybih1ZShnKS1PK0cpLzd9WSgidyIsWyJ3dyIsMl0sIndvIiwid2VlayIpLFkoIlciLFsiV1ciLDJdLCJXbyIsImlzb1dlZWsiKSxXKCJ3ZWVrIiwidyIpLFcoImlzb1dlZWsiLCJXIiksWigid2VlayIsNSksWigiaXNvV2VlayIsNSksZnQoInciLGF0KSxmdCgid3ciLGF0LGZlKSxmdCgiVyIsYXQpLGZ0KCJXVyIsYXQsZmUpLHdlKFsidyIsInd3IiwiVyIsIldXIl0sZnVuY3Rpb24oZyxFLEksTyl7RVtPLnN1YnN0cigwLDEpXT1xKGcpfSk7ZnVuY3Rpb24gR2UoZyxFKXtyZXR1cm4gZy5zbGljZShFLDcpLmNvbmNhdChnLnNsaWNlKDAsRSkpfVkoImQiLDAsImRvIiwiZGF5IiksWSgiZGQiLDAsMCxmdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5sb2NhbGVEYXRhKCkud2Vla2RheXNNaW4odGhpcyxnKX0pLFkoImRkZCIsMCwwLGZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLmxvY2FsZURhdGEoKS53ZWVrZGF5c1Nob3J0KHRoaXMsZyl9KSxZKCJkZGRkIiwwLDAsZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLndlZWtkYXlzKHRoaXMsZyl9KSxZKCJlIiwwLDAsIndlZWtkYXkiKSxZKCJFIiwwLDAsImlzb1dlZWtkYXkiKSxXKCJkYXkiLCJkIiksVygid2Vla2RheSIsImUiKSxXKCJpc29XZWVrZGF5IiwiRSIpLFooImRheSIsMTEpLFooIndlZWtkYXkiLDExKSxaKCJpc29XZWVrZGF5IiwxMSksZnQoImQiLGF0KSxmdCgiZSIsYXQpLGZ0KCJFIixhdCksZnQoImRkIixmdW5jdGlvbihnLEUpe3JldHVybiBFLndlZWtkYXlzTWluUmVnZXgoZyl9KSxmdCgiZGRkIixmdW5jdGlvbihnLEUpe3JldHVybiBFLndlZWtkYXlzU2hvcnRSZWdleChnKX0pLGZ0KCJkZGRkIixmdW5jdGlvbihnLEUpe3JldHVybiBFLndlZWtkYXlzUmVnZXgoZyl9KSx3ZShbImRkIiwiZGRkIiwiZGRkZCJdLGZ1bmN0aW9uKGcsRSxJLE8pe089SS5fbG9jYWxlLndlZWtkYXlzUGFyc2UoZyxPLEkuX3N0cmljdCksTyE9bnVsbD9FLmQ9TzptKEkpLmludmFsaWRXZWVrZGF5PWd9KSx3ZShbImQiLCJlIiwiRSJdLGZ1bmN0aW9uKGcsRSxJLE8pe0VbT109cShnKX0pO3ZhciBaZT0iU3VuZGF5X01vbmRheV9UdWVzZGF5X1dlZG5lc2RheV9UaHVyc2RheV9GcmlkYXlfU2F0dXJkYXkiLnNwbGl0KCJfIikscXQ9IlN1bl9Nb25fVHVlX1dlZF9UaHVfRnJpX1NhdCIuc3BsaXQoIl8iKSxzdD0iU3VfTW9fVHVfV2VfVGhfRnJfU2EiLnNwbGl0KCJfIiksQXQ9VHQsTnQ9VHQsSnQ9VHQ7ZnVuY3Rpb24gemUoKXtmdW5jdGlvbiBnKE90LGRlKXtyZXR1cm4gZGUubGVuZ3RoLU90Lmxlbmd0aH1mb3IodmFyIEUsSSxPLEc9W10saHQ9W10seHQ9W10sTXQ9W10sVnQ9MDtWdDw3O1Z0KyspTz1wKFsyZTMsMV0pLmRheShWdCksRT1EdCh0aGlzLndlZWtkYXlzTWluKE8sIiIpKSxJPUR0KHRoaXMud2Vla2RheXNTaG9ydChPLCIiKSksTz1EdCh0aGlzLndlZWtkYXlzKE8sIiIpKSxHLnB1c2goRSksaHQucHVzaChJKSx4dC5wdXNoKE8pLE10LnB1c2goRSksTXQucHVzaChJKSxNdC5wdXNoKE8pO0cuc29ydChnKSxodC5zb3J0KGcpLHh0LnNvcnQoZyksTXQuc29ydChnKSx0aGlzLl93ZWVrZGF5c1JlZ2V4PW5ldyBSZWdFeHAoIl4oIitNdC5qb2luKCJ8IikrIikiLCJpIiksdGhpcy5fd2Vla2RheXNTaG9ydFJlZ2V4PXRoaXMuX3dlZWtkYXlzUmVnZXgsdGhpcy5fd2Vla2RheXNNaW5SZWdleD10aGlzLl93ZWVrZGF5c1JlZ2V4LHRoaXMuX3dlZWtkYXlzU3RyaWN0UmVnZXg9bmV3IFJlZ0V4cCgiXigiK3h0LmpvaW4oInwiKSsiKSIsImkiKSx0aGlzLl93ZWVrZGF5c1Nob3J0U3RyaWN0UmVnZXg9bmV3IFJlZ0V4cCgiXigiK2h0LmpvaW4oInwiKSsiKSIsImkiKSx0aGlzLl93ZWVrZGF5c01pblN0cmljdFJlZ2V4PW5ldyBSZWdFeHAoIl4oIitHLmpvaW4oInwiKSsiKSIsImkiKX1mdW5jdGlvbiBQZSgpe3JldHVybiB0aGlzLmhvdXJzKCklMTJ8fDEyfWZ1bmN0aW9uIHFlKGcsRSl7WShnLDAsMCxmdW5jdGlvbigpe3JldHVybiB0aGlzLmxvY2FsZURhdGEoKS5tZXJpZGllbSh0aGlzLmhvdXJzKCksdGhpcy5taW51dGVzKCksRSl9KX1mdW5jdGlvbiBUcihnLEUpe3JldHVybiBFLl9tZXJpZGllbVBhcnNlfVkoIkgiLFsiSEgiLDJdLDAsImhvdXIiKSxZKCJoIixbImhoIiwyXSwwLFBlKSxZKCJrIixbImtrIiwyXSwwLGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaG91cnMoKXx8MjR9KSxZKCJobW0iLDAsMCxmdW5jdGlvbigpe3JldHVybiIiK1BlLmFwcGx5KHRoaXMpK04odGhpcy5taW51dGVzKCksMil9KSxZKCJobW1zcyIsMCwwLGZ1bmN0aW9uKCl7cmV0dXJuIiIrUGUuYXBwbHkodGhpcykrTih0aGlzLm1pbnV0ZXMoKSwyKStOKHRoaXMuc2Vjb25kcygpLDIpfSksWSgiSG1tIiwwLDAsZnVuY3Rpb24oKXtyZXR1cm4iIit0aGlzLmhvdXJzKCkrTih0aGlzLm1pbnV0ZXMoKSwyKX0pLFkoIkhtbXNzIiwwLDAsZnVuY3Rpb24oKXtyZXR1cm4iIit0aGlzLmhvdXJzKCkrTih0aGlzLm1pbnV0ZXMoKSwyKStOKHRoaXMuc2Vjb25kcygpLDIpfSkscWUoImEiLCEwKSxxZSgiQSIsITEpLFcoImhvdXIiLCJoIiksWigiaG91ciIsMTMpLGZ0KCJhIixUciksZnQoIkEiLFRyKSxmdCgiSCIsYXQpLGZ0KCJoIixhdCksZnQoImsiLGF0KSxmdCgiSEgiLGF0LGZlKSxmdCgiaGgiLGF0LGZlKSxmdCgia2siLGF0LGZlKSxmdCgiaG1tIixJdCksZnQoImhtbXNzIixMdCksZnQoIkhtbSIsSXQpLGZ0KCJIbW1zcyIsTHQpLFF0KFsiSCIsIkhIIl0sYnQpLFF0KFsiayIsImtrIl0sZnVuY3Rpb24oZyxFLEkpe2c9cShnKSxFW2J0XT1nPT09MjQ/MDpnfSksUXQoWyJhIiwiQSJdLGZ1bmN0aW9uKGcsRSxJKXtJLl9pc1BtPUkuX2xvY2FsZS5pc1BNKGcpLEkuX21lcmlkaWVtPWd9KSxRdChbImgiLCJoaCJdLGZ1bmN0aW9uKGcsRSxJKXtFW2J0XT1xKGcpLG0oSSkuYmlnSG91cj0hMH0pLFF0KCJobW0iLGZ1bmN0aW9uKGcsRSxJKXt2YXIgTz1nLmxlbmd0aC0yO0VbYnRdPXEoZy5zdWJzdHIoMCxPKSksRVtFdF09cShnLnN1YnN0cihPKSksbShJKS5iaWdIb3VyPSEwfSksUXQoImhtbXNzIixmdW5jdGlvbihnLEUsSSl7dmFyIE89Zy5sZW5ndGgtNCxHPWcubGVuZ3RoLTI7RVtidF09cShnLnN1YnN0cigwLE8pKSxFW0V0XT1xKGcuc3Vic3RyKE8sMikpLEVba3RdPXEoZy5zdWJzdHIoRykpLG0oSSkuYmlnSG91cj0hMH0pLFF0KCJIbW0iLGZ1bmN0aW9uKGcsRSxJKXt2YXIgTz1nLmxlbmd0aC0yO0VbYnRdPXEoZy5zdWJzdHIoMCxPKSksRVtFdF09cShnLnN1YnN0cihPKSl9KSxRdCgiSG1tc3MiLGZ1bmN0aW9uKGcsRSxJKXt2YXIgTz1nLmxlbmd0aC00LEc9Zy5sZW5ndGgtMjtFW2J0XT1xKGcuc3Vic3RyKDAsTykpLEVbRXRdPXEoZy5zdWJzdHIoTywyKSksRVtrdF09cShnLnN1YnN0cihHKSl9KSxUdD1VKCJIb3VycyIsITApO3ZhciBWZSx2YT17Y2FsZW5kYXI6e3NhbWVEYXk6IltUb2RheSBhdF0gTFQiLG5leHREYXk6IltUb21vcnJvdyBhdF0gTFQiLG5leHRXZWVrOiJkZGRkIFthdF0gTFQiLGxhc3REYXk6IltZZXN0ZXJkYXkgYXRdIExUIixsYXN0V2VlazoiW0xhc3RdIGRkZGQgW2F0XSBMVCIsc2FtZUVsc2U6IkwifSxsb25nRGF0ZUZvcm1hdDp7TFRTOiJoOm1tOnNzIEEiLExUOiJoOm1tIEEiLEw6Ik1NL0REL1lZWVkiLExMOiJNTU1NIEQsIFlZWVkiLExMTDoiTU1NTSBELCBZWVlZIGg6bW0gQSIsTExMTDoiZGRkZCwgTU1NTSBELCBZWVlZIGg6bW0gQSJ9LGludmFsaWREYXRlOiJJbnZhbGlkIGRhdGUiLG9yZGluYWw6IiVkIixkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9LyxyZWxhdGl2ZVRpbWU6e2Z1dHVyZToiaW4gJXMiLHBhc3Q6IiVzIGFnbyIsczoiYSBmZXcgc2Vjb25kcyIsc3M6IiVkIHNlY29uZHMiLG06ImEgbWludXRlIixtbToiJWQgbWludXRlcyIsaDoiYW4gaG91ciIsaGg6IiVkIGhvdXJzIixkOiJhIGRheSIsZGQ6IiVkIGRheXMiLHc6ImEgd2VlayIsd3c6IiVkIHdlZWtzIixNOiJhIG1vbnRoIixNTToiJWQgbW9udGhzIix5OiJhIHllYXIiLHl5OiIlZCB5ZWFycyJ9LG1vbnRoczpuZSxtb250aHNTaG9ydDp2ZSx3ZWVrOntkb3c6MCxkb3k6Nn0sd2Vla2RheXM6WmUsd2Vla2RheXNNaW46c3Qsd2Vla2RheXNTaG9ydDpxdCxtZXJpZGllbVBhcnNlOi9bYXBdXC4/bT9cLj8vaX0sQ2U9e30sV2k9e307ZnVuY3Rpb24gRTAoZyl7cmV0dXJuIGcmJmcudG9Mb3dlckNhc2UoKS5yZXBsYWNlKCJfIiwiLSIpfWZ1bmN0aW9uIF91KGcpe2Zvcih2YXIgRSxJLE8sRyxodD0wO2h0PGcubGVuZ3RoOyl7Zm9yKEU9KEc9RTAoZ1todF0pLnNwbGl0KCItIikpLmxlbmd0aCxJPShJPUUwKGdbaHQrMV0pKT9JLnNwbGl0KCItIik6bnVsbDswPEU7KXtpZihPPUxuKEcuc2xpY2UoMCxFKS5qb2luKCItIikpKXJldHVybiBPO2lmKEkmJkkubGVuZ3RoPj1FJiZmdW5jdGlvbih4dCxNdCl7Zm9yKHZhciBWdD1NYXRoLm1pbih4dC5sZW5ndGgsTXQubGVuZ3RoKSxPdD0wO090PFZ0O090Kz0xKWlmKHh0W090XSE9PU10W090XSlyZXR1cm4gT3Q7cmV0dXJuIFZ0fShHLEkpPj1FLTEpYnJlYWs7RS0tfWh0Kyt9cmV0dXJuIFZlfWZ1bmN0aW9uIExuKGcpe3ZhciBFO2lmKENlW2ddPT09dm9pZCAwJiYhMCYmdCYmdC5leHBvcnRzJiZnLm1hdGNoKCJeW14vXFxcXF0qJCIpIT1udWxsKXRyeXtFPVZlLl9hYmJyLGZuKCIuL2xvY2FsZS8iK2cpLFh0KEUpfWNhdGNoe0NlW2ddPW51bGx9cmV0dXJuIENlW2ddfWZ1bmN0aW9uIFh0KGcsRSl7cmV0dXJuIGcmJigoRT1sKEUpP2NlKGcpOmVlKGcsRSkpP1ZlPUU6dHlwZW9mIGNvbnNvbGU8InUiJiZjb25zb2xlLndhcm4mJmNvbnNvbGUud2FybigiTG9jYWxlICIrZysiIG5vdCBmb3VuZC4gRGlkIHlvdSBmb3JnZXQgdG8gbG9hZCBpdD8iKSksVmUuX2FiYnJ9ZnVuY3Rpb24gZWUoZyxFKXtpZihFPT09bnVsbClyZXR1cm4gZGVsZXRlIENlW2ddLG51bGw7dmFyIEksTz12YTtpZihFLmFiYnI9ZyxDZVtnXSE9bnVsbClMKCJkZWZpbmVMb2NhbGVPdmVycmlkZSIsInVzZSBtb21lbnQudXBkYXRlTG9jYWxlKGxvY2FsZU5hbWUsIGNvbmZpZykgdG8gY2hhbmdlIGFuIGV4aXN0aW5nIGxvY2FsZS4gbW9tZW50LmRlZmluZUxvY2FsZShsb2NhbGVOYW1lLCBjb25maWcpIHNob3VsZCBvbmx5IGJlIHVzZWQgZm9yIGNyZWF0aW5nIGEgbmV3IGxvY2FsZSBTZWUgaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy9kZWZpbmUtbG9jYWxlLyBmb3IgbW9yZSBpbmZvLiIpLE89Q2VbZ10uX2NvbmZpZztlbHNlIGlmKEUucGFyZW50TG9jYWxlIT1udWxsKWlmKENlW0UucGFyZW50TG9jYWxlXSE9bnVsbClPPUNlW0UucGFyZW50TG9jYWxlXS5fY29uZmlnO2Vsc2V7aWYoKEk9TG4oRS5wYXJlbnRMb2NhbGUpKT09bnVsbClyZXR1cm4gV2lbRS5wYXJlbnRMb2NhbGVdfHwoV2lbRS5wYXJlbnRMb2NhbGVdPVtdKSxXaVtFLnBhcmVudExvY2FsZV0ucHVzaCh7bmFtZTpnLGNvbmZpZzpFfSksbnVsbDtPPUkuX2NvbmZpZ31yZXR1cm4gQ2VbZ109bmV3IHcoQihPLEUpKSxXaVtnXSYmV2lbZ10uZm9yRWFjaChmdW5jdGlvbihHKXtlZShHLm5hbWUsRy5jb25maWcpfSksWHQoZyksQ2VbZ119ZnVuY3Rpb24gY2UoZyl7dmFyIEU7aWYoIShnPWcmJmcuX2xvY2FsZSYmZy5fbG9jYWxlLl9hYmJyP2cuX2xvY2FsZS5fYWJicjpnKSlyZXR1cm4gVmU7aWYoIWkoZykpe2lmKEU9TG4oZykpcmV0dXJuIEU7Zz1bZ119cmV0dXJuIF91KGcpfWZ1bmN0aW9uIFB0KGcpe3ZhciBFPWcuX2E7cmV0dXJuIEUmJm0oZykub3ZlcmZsb3c9PT0tMiYmKEU9RVt6dF08MHx8MTE8RVt6dF0/enQ6RVt3dF08MXx8RVt3dF0+eXQoRVtGdF0sRVt6dF0pP3d0OkVbYnRdPDB8fDI0PEVbYnRdfHxFW2J0XT09PTI0JiYoRVtFdF0hPT0wfHxFW2t0XSE9PTB8fEVbVXRdIT09MCk/YnQ6RVtFdF08MHx8NTk8RVtFdF0/RXQ6RVtrdF08MHx8NTk8RVtrdF0/a3Q6RVtVdF08MHx8OTk5PEVbVXRdP1V0Oi0xLG0oZykuX292ZXJmbG93RGF5T2ZZZWFyJiYoRTxGdHx8d3Q8RSkmJihFPXd0KSxtKGcpLl9vdmVyZmxvd1dlZWtzJiZFPT09LTEmJihFPWd0KSxtKGcpLl9vdmVyZmxvd1dlZWtkYXkmJkU9PT0tMSYmKEU9aGUpLG0oZykub3ZlcmZsb3c9RSksZ312YXIgamU9L15ccyooKD86WystXVxkezZ9fFxkezR9KS0oPzpcZFxkLVxkXGR8V1xkXGQtXGR8V1xkXGR8XGRcZFxkfFxkXGQpKSg/OihUfCApKFxkXGQoPzo6XGRcZCg/OjpcZFxkKD86Wy4sXVxkKyk/KT8pPykoWystXVxkXGQoPzo6P1xkXGQpP3xccypaKT8pPyQvLHJ0PS9eXHMqKCg/OlsrLV1cZHs2fXxcZHs0fSkoPzpcZFxkXGRcZHxXXGRcZFxkfFdcZFxkfFxkXGRcZHxcZFxkfCkpKD86KFR8ICkoXGRcZCg/OlxkXGQoPzpcZFxkKD86Wy4sXVxkKyk/KT8pPykoWystXVxkXGQoPzo6P1xkXGQpP3xccypaKT8pPyQvLEtzPS9afFsrLV1cZFxkKD86Oj9cZFxkKT8vLG90PVtbIllZWVlZWS1NTS1ERCIsL1srLV1cZHs2fS1cZFxkLVxkXGQvXSxbIllZWVktTU0tREQiLC9cZHs0fS1cZFxkLVxkXGQvXSxbIkdHR0ctW1ddV1ctRSIsL1xkezR9LVdcZFxkLVxkL10sWyJHR0dHLVtXXVdXIiwvXGR7NH0tV1xkXGQvLCExXSxbIllZWVktREREIiwvXGR7NH0tXGR7M30vXSxbIllZWVktTU0iLC9cZHs0fS1cZFxkLywhMV0sWyJZWVlZWVlNTUREIiwvWystXVxkezEwfS9dLFsiWVlZWU1NREQiLC9cZHs4fS9dLFsiR0dHR1tXXVdXRSIsL1xkezR9V1xkezN9L10sWyJHR0dHW1ddV1ciLC9cZHs0fVdcZHsyfS8sITFdLFsiWVlZWURERCIsL1xkezd9L10sWyJZWVlZTU0iLC9cZHs2fS8sITFdLFsiWVlZWSIsL1xkezR9LywhMV1dLEdyPVtbIkhIOm1tOnNzLlNTU1MiLC9cZFxkOlxkXGQ6XGRcZFwuXGQrL10sWyJISDptbTpzcyxTU1NTIiwvXGRcZDpcZFxkOlxkXGQsXGQrL10sWyJISDptbTpzcyIsL1xkXGQ6XGRcZDpcZFxkL10sWyJISDptbSIsL1xkXGQ6XGRcZC9dLFsiSEhtbXNzLlNTU1MiLC9cZFxkXGRcZFxkXGRcLlxkKy9dLFsiSEhtbXNzLFNTU1MiLC9cZFxkXGRcZFxkXGQsXGQrL10sWyJISG1tc3MiLC9cZFxkXGRcZFxkXGQvXSxbIkhIbW0iLC9cZFxkXGRcZC9dLFsiSEgiLC9cZFxkL11dLEMwPS9eXC8/RGF0ZVwoKC0/XGQrKS9pLGxfPS9eKD86KE1vbnxUdWV8V2VkfFRodXxGcml8U2F0fFN1biksP1xzKT8oXGR7MSwyfSlccyhKYW58RmVifE1hcnxBcHJ8TWF5fEp1bnxKdWx8QXVnfFNlcHxPY3R8Tm92fERlYylccyhcZHsyLDR9KVxzKFxkXGQpOihcZFxkKSg/OjooXGRcZCkpP1xzKD86KFVUfEdNVHxbRUNNUF1bU0RdVCl8KFtael0pfChbKy1dXGR7NH0pKSQvLFMwPXtVVDowLEdNVDowLEVEVDotMjQwLEVTVDotMzAwLENEVDotMzAwLENTVDotMzYwLE1EVDotMzYwLE1TVDotNDIwLFBEVDotNDIwLFBTVDotNDgwfTtmdW5jdGlvbiBBMChnKXt2YXIgRSxJLE8sRyxodCx4dCxWdD1nLl9pLE10PWplLmV4ZWMoVnQpfHxydC5leGVjKFZ0KSxWdD1vdC5sZW5ndGgsT3Q9R3IubGVuZ3RoO2lmKE10KXtmb3IobShnKS5pc289ITAsRT0wLEk9VnQ7RTxJO0UrKylpZihvdFtFXVsxXS5leGVjKE10WzFdKSl7Rz1vdFtFXVswXSxPPW90W0VdWzJdIT09ITE7YnJlYWt9aWYoRz09bnVsbClnLl9pc1ZhbGlkPSExO2Vsc2V7aWYoTXRbM10pe2ZvcihFPTAsST1PdDtFPEk7RSsrKWlmKEdyW0VdWzFdLmV4ZWMoTXRbM10pKXtodD0oTXRbMl18fCIgIikrR3JbRV1bMF07YnJlYWt9aWYoaHQ9PW51bGwpcmV0dXJuIHZvaWQoZy5faXNWYWxpZD0hMSl9aWYoT3x8aHQ9PW51bGwpe2lmKE10WzRdKXtpZighS3MuZXhlYyhNdFs0XSkpcmV0dXJuIHZvaWQoZy5faXNWYWxpZD0hMSk7eHQ9IloifWcuX2Y9RysoaHR8fCIiKSsoeHR8fCIiKSx2dShnKX1lbHNlIGcuX2lzVmFsaWQ9ITF9fWVsc2UgZy5faXNWYWxpZD0hMX1mdW5jdGlvbiBtcihnLEUsSSxPLEcsaHQpe3JldHVybiBnPVtmdW5jdGlvbih4dCl7eHQ9cGFyc2VJbnQoeHQsMTApO3tpZih4dDw9NDkpcmV0dXJuIDJlMyt4dDtpZih4dDw9OTk5KXJldHVybiAxOTAwK3h0fXJldHVybiB4dH0oZyksdmUuaW5kZXhPZihFKSxwYXJzZUludChJLDEwKSxwYXJzZUludChPLDEwKSxwYXJzZUludChHLDEwKV0saHQmJmcucHVzaChwYXJzZUludChodCwxMCkpLGd9ZnVuY3Rpb24gSGkoZyl7dmFyIEUsSSxPLEcsaHQ9bF8uZXhlYyhnLl9pLnJlcGxhY2UoL1woW14oKV0qXCl8W1xuXHRdL2csIiAiKS5yZXBsYWNlKC8oXHNccyspL2csIiAiKS5yZXBsYWNlKC9eXHNccyovLCIiKS5yZXBsYWNlKC9cc1xzKiQvLCIiKSk7aHQ/KEU9bXIoaHRbNF0saHRbM10saHRbMl0saHRbNV0saHRbNl0saHRbN10pLEk9aHRbMV0sTz1FLEc9ZyxJJiZxdC5pbmRleE9mKEkpIT09bmV3IERhdGUoT1swXSxPWzFdLE9bMl0pLmdldERheSgpPyhtKEcpLndlZWtkYXlNaXNtYXRjaD0hMCxHLl9pc1ZhbGlkPSExKTooZy5fYT1FLGcuX3R6bT0oST1odFs4XSxPPWh0WzldLEc9aHRbMTBdLEk/UzBbSV06Tz8wOjYwKigoKEk9cGFyc2VJbnQoRywxMCkpLShPPUklMTAwKSkvMTAwKStPKSxnLl9kPUhyLmFwcGx5KG51bGwsZy5fYSksZy5fZC5zZXRVVENNaW51dGVzKGcuX2QuZ2V0VVRDTWludXRlcygpLWcuX3R6bSksbShnKS5yZmMyODIyPSEwKSk6Zy5faXNWYWxpZD0hMX1mdW5jdGlvbiBHaShnLEUsSSl7cmV0dXJuIGchPW51bGw/ZzpFIT1udWxsP0U6SX1mdW5jdGlvbiBacyhnKXt2YXIgRSxJLE8sRyxodCx4dCxNdCxWdCxPdCxkZSxpZSxlcj1bXTtpZighZy5fZCl7Zm9yKE89ZyxHPW5ldyBEYXRlKG4ubm93KCkpLEk9Ty5fdXNlVVRDP1tHLmdldFVUQ0Z1bGxZZWFyKCksRy5nZXRVVENNb250aCgpLEcuZ2V0VVRDRGF0ZSgpXTpbRy5nZXRGdWxsWWVhcigpLEcuZ2V0TW9udGgoKSxHLmdldERhdGUoKV0sZy5fdyYmZy5fYVt3dF09PW51bGwmJmcuX2FbenRdPT1udWxsJiYoKEc9KE89ZykuX3cpLkdHIT1udWxsfHxHLlchPW51bGx8fEcuRSE9bnVsbD8oVnQ9MSxPdD00LGh0PUdpKEcuR0csTy5fYVtGdF0sS2UoRGUoKSwxLDQpLnllYXIpLHh0PUdpKEcuVywxKSwoKE10PUdpKEcuRSwxKSk8MXx8NzxNdCkmJihkZT0hMCkpOihWdD1PLl9sb2NhbGUuX3dlZWsuZG93LE90PU8uX2xvY2FsZS5fd2Vlay5kb3ksaWU9S2UoRGUoKSxWdCxPdCksaHQ9R2koRy5nZyxPLl9hW0Z0XSxpZS55ZWFyKSx4dD1HaShHLncsaWUud2VlayksRy5kIT1udWxsPygoTXQ9Ry5kKTwwfHw2PE10KSYmKGRlPSEwKTpHLmUhPW51bGw/KE10PUcuZStWdCwoRy5lPDB8fDY8Ry5lKSYmKGRlPSEwKSk6TXQ9VnQpLHh0PDF8fHh0PndyKGh0LFZ0LE90KT9tKE8pLl9vdmVyZmxvd1dlZWtzPSEwOmRlIT1udWxsP20oTykuX292ZXJmbG93V2Vla2RheT0hMDooaWU9b2UoaHQseHQsTXQsVnQsT3QpLE8uX2FbRnRdPWllLnllYXIsTy5fZGF5T2ZZZWFyPWllLmRheU9mWWVhcikpLGcuX2RheU9mWWVhciE9bnVsbCYmKEc9R2koZy5fYVtGdF0sSVtGdF0pLChnLl9kYXlPZlllYXI+dWUoRyl8fGcuX2RheU9mWWVhcj09PTApJiYobShnKS5fb3ZlcmZsb3dEYXlPZlllYXI9ITApLGRlPUhyKEcsMCxnLl9kYXlPZlllYXIpLGcuX2FbenRdPWRlLmdldFVUQ01vbnRoKCksZy5fYVt3dF09ZGUuZ2V0VVRDRGF0ZSgpKSxFPTA7RTwzJiZnLl9hW0VdPT1udWxsOysrRSlnLl9hW0VdPWVyW0VdPUlbRV07Zm9yKDtFPDc7RSsrKWcuX2FbRV09ZXJbRV09Zy5fYVtFXT09bnVsbD9FPT09Mj8xOjA6Zy5fYVtFXTtnLl9hW2J0XT09PTI0JiZnLl9hW0V0XT09PTAmJmcuX2Fba3RdPT09MCYmZy5fYVtVdF09PT0wJiYoZy5fbmV4dERheT0hMCxnLl9hW2J0XT0wKSxnLl9kPShnLl91c2VVVEM/SHI6X2EpLmFwcGx5KG51bGwsZXIpLGh0PWcuX3VzZVVUQz9nLl9kLmdldFVUQ0RheSgpOmcuX2QuZ2V0RGF5KCksZy5fdHptIT1udWxsJiZnLl9kLnNldFVUQ01pbnV0ZXMoZy5fZC5nZXRVVENNaW51dGVzKCktZy5fdHptKSxnLl9uZXh0RGF5JiYoZy5fYVtidF09MjQpLGcuX3cmJmcuX3cuZCE9PXZvaWQgMCYmZy5fdy5kIT09aHQmJihtKGcpLndlZWtkYXlNaXNtYXRjaD0hMCl9fWZ1bmN0aW9uIHZ1KGcpe2lmKGcuX2Y9PT1uLklTT184NjAxKUEwKGcpO2Vsc2UgaWYoZy5fZj09PW4uUkZDXzI4MjIpSGkoZyk7ZWxzZXtnLl9hPVtdLG0oZykuZW1wdHk9ITA7Zm9yKHZhciBFLEksTyxHLGh0LHh0PSIiK2cuX2ksTXQ9eHQubGVuZ3RoLFZ0PTAsT3Q9bHQoZy5fZixnLl9sb2NhbGUpLm1hdGNoKHopfHxbXSxkZT1PdC5sZW5ndGgsaWU9MDtpZTxkZTtpZSsrKUk9T3RbaWVdLChFPSh4dC5tYXRjaChsZShJLGcpKXx8W10pWzBdKSYmKDA8KE89eHQuc3Vic3RyKDAseHQuaW5kZXhPZihFKSkpLmxlbmd0aCYmbShnKS51bnVzZWRJbnB1dC5wdXNoKE8pLHh0PXh0LnNsaWNlKHh0LmluZGV4T2YoRSkrRS5sZW5ndGgpLFZ0Kz1FLmxlbmd0aCksSltJXT8oRT9tKGcpLmVtcHR5PSExOm0oZykudW51c2VkVG9rZW5zLnB1c2goSSksTz1JLGh0PWcsKEc9RSkhPW51bGwmJnMoJHQsTykmJiR0W09dKEcsaHQuX2EsaHQsTykpOmcuX3N0cmljdCYmIUUmJm0oZykudW51c2VkVG9rZW5zLnB1c2goSSk7bShnKS5jaGFyc0xlZnRPdmVyPU10LVZ0LDA8eHQubGVuZ3RoJiZtKGcpLnVudXNlZElucHV0LnB1c2goeHQpLGcuX2FbYnRdPD0xMiYmbShnKS5iaWdIb3VyPT09ITAmJjA8Zy5fYVtidF0mJihtKGcpLmJpZ0hvdXI9dm9pZCAwKSxtKGcpLnBhcnNlZERhdGVQYXJ0cz1nLl9hLnNsaWNlKDApLG0oZykubWVyaWRpZW09Zy5fbWVyaWRpZW0sZy5fYVtidF09ZnVuY3Rpb24oZXIsYnIseGkpe3JldHVybiB4aT09bnVsbD9icjplci5tZXJpZGllbUhvdXIhPW51bGw/ZXIubWVyaWRpZW1Ib3VyKGJyLHhpKTplci5pc1BNIT1udWxsPygoZXI9ZXIuaXNQTSh4aSkpJiZicjwxMiYmKGJyKz0xMiksYnI9ZXJ8fGJyIT09MTI/YnI6MCk6YnJ9KGcuX2xvY2FsZSxnLl9hW2J0XSxnLl9tZXJpZGllbSksKE10PW0oZykuZXJhKSE9PW51bGwmJihnLl9hW0Z0XT1nLl9sb2NhbGUuZXJhc0NvbnZlcnRZZWFyKE10LGcuX2FbRnRdKSksWnMoZyksUHQoZyl9fWZ1bmN0aW9uIE0wKGcpe3ZhciBFLEksTyxHPWcuX2ksaHQ9Zy5fZjtyZXR1cm4gZy5fbG9jYWxlPWcuX2xvY2FsZXx8Y2UoZy5fbCksRz09PW51bGx8fGh0PT09dm9pZCAwJiZHPT09IiI/eSh7bnVsbElucHV0OiEwfSk6KHR5cGVvZiBHPT0ic3RyaW5nIiYmKGcuX2k9Rz1nLl9sb2NhbGUucHJlcGFyc2UoRykpLE0oRyk/bmV3IEMoUHQoRykpOihoKEcpP2cuX2Q9RzppKGh0KT9mdW5jdGlvbih4dCl7dmFyIE10LFZ0LE90LGRlLGllLGVyLGJyPSExLHhpPXh0Ll9mLmxlbmd0aDtpZih4aT09PTApcmV0dXJuIG0oeHQpLmludmFsaWRGb3JtYXQ9ITAseHQuX2Q9bmV3IERhdGUoTmFOKTtmb3IoZGU9MDtkZTx4aTtkZSsrKWllPTAsZXI9ITEsTXQ9VCh7fSx4dCkseHQuX3VzZVVUQyE9bnVsbCYmKE10Ll91c2VVVEM9eHQuX3VzZVVUQyksTXQuX2Y9eHQuX2ZbZGVdLHZ1KE10KSxfKE10KSYmKGVyPSEwKSxpZT0oaWUrPW0oTXQpLmNoYXJzTGVmdE92ZXIpKzEwKm0oTXQpLnVudXNlZFRva2Vucy5sZW5ndGgsbShNdCkuc2NvcmU9aWUsYnI/aWU8T3QmJihPdD1pZSxWdD1NdCk6KE90PT1udWxsfHxpZTxPdHx8ZXIpJiYoT3Q9aWUsVnQ9TXQsZXImJihicj0hMCkpO2YoeHQsVnR8fE10KX0oZyk6aHQ/dnUoZyk6bChodD0oRz1nKS5faSk/Ry5fZD1uZXcgRGF0ZShuLm5vdygpKTpoKGh0KT9HLl9kPW5ldyBEYXRlKGh0LnZhbHVlT2YoKSk6dHlwZW9mIGh0PT0ic3RyaW5nIj8oST1HLChFPUMwLmV4ZWMoSS5faSkpIT09bnVsbD9JLl9kPW5ldyBEYXRlKCtFWzFdKTooQTAoSSksSS5faXNWYWxpZD09PSExJiYoZGVsZXRlIEkuX2lzVmFsaWQsSGkoSSksSS5faXNWYWxpZD09PSExJiYoZGVsZXRlIEkuX2lzVmFsaWQsSS5fc3RyaWN0P0kuX2lzVmFsaWQ9ITE6bi5jcmVhdGVGcm9tSW5wdXRGYWxsYmFjayhJKSkpKSk6aShodCk/KEcuX2E9ZChodC5zbGljZSgwKSxmdW5jdGlvbih4dCl7cmV0dXJuIHBhcnNlSW50KHh0LDEwKX0pLFpzKEcpKTphKGh0KT8oRT1HKS5fZHx8KE89KEk9SyhFLl9pKSkuZGF5PT09dm9pZCAwP0kuZGF0ZTpJLmRheSxFLl9hPWQoW0kueWVhcixJLm1vbnRoLE8sSS5ob3VyLEkubWludXRlLEkuc2Vjb25kLEkubWlsbGlzZWNvbmRdLGZ1bmN0aW9uKHh0KXtyZXR1cm4geHQmJnBhcnNlSW50KHh0LDEwKX0pLFpzKEUpKTp1KGh0KT9HLl9kPW5ldyBEYXRlKGh0KTpuLmNyZWF0ZUZyb21JbnB1dEZhbGxiYWNrKEcpLF8oZyl8fChnLl9kPW51bGwpLGcpKX1mdW5jdGlvbiBEcihnLEUsSSxPLEcpe3ZhciBodD17fTtyZXR1cm4gRSE9PSEwJiZFIT09ITF8fChPPUUsRT12b2lkIDApLEkhPT0hMCYmSSE9PSExfHwoTz1JLEk9dm9pZCAwKSwoYShnKSYmbyhnKXx8aShnKSYmZy5sZW5ndGg9PT0wKSYmKGc9dm9pZCAwKSxodC5faXNBTW9tZW50T2JqZWN0PSEwLGh0Ll91c2VVVEM9aHQuX2lzVVRDPUcsaHQuX2w9SSxodC5faT1nLGh0Ll9mPUUsaHQuX3N0cmljdD1PLChHPW5ldyBDKFB0KE0wKEc9aHQpKSkpLl9uZXh0RGF5JiYoRy5hZGQoMSwiZCIpLEcuX25leHREYXk9dm9pZCAwKSxHfWZ1bmN0aW9uIERlKGcsRSxJLE8pe3JldHVybiBEcihnLEUsSSxPLCExKX1uLmNyZWF0ZUZyb21JbnB1dEZhbGxiYWNrPVIoInZhbHVlIHByb3ZpZGVkIGlzIG5vdCBpbiBhIHJlY29nbml6ZWQgUkZDMjgyMiBvciBJU08gZm9ybWF0LiBtb21lbnQgY29uc3RydWN0aW9uIGZhbGxzIGJhY2sgdG8ganMgRGF0ZSgpLCB3aGljaCBpcyBub3QgcmVsaWFibGUgYWNyb3NzIGFsbCBicm93c2VycyBhbmQgdmVyc2lvbnMuIE5vbiBSRkMyODIyL0lTTyBkYXRlIGZvcm1hdHMgYXJlIGRpc2NvdXJhZ2VkLiBQbGVhc2UgcmVmZXIgdG8gaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy9qcy1kYXRlLyBmb3IgbW9yZSBpbmZvLiIsZnVuY3Rpb24oZyl7Zy5fZD1uZXcgRGF0ZShnLl9pKyhnLl91c2VVVEM/IiBVVEMiOiIiKSl9KSxuLklTT184NjAxPWZ1bmN0aW9uKCl7fSxuLlJGQ18yODIyPWZ1bmN0aW9uKCl7fSxJdD1SKCJtb21lbnQoKS5taW4gaXMgZGVwcmVjYXRlZCwgdXNlIG1vbWVudC5tYXggaW5zdGVhZC4gaHR0cDovL21vbWVudGpzLmNvbS9ndWlkZXMvIy93YXJuaW5ncy9taW4tbWF4LyIsZnVuY3Rpb24oKXt2YXIgZz1EZS5hcHBseShudWxsLGFyZ3VtZW50cyk7cmV0dXJuIHRoaXMuaXNWYWxpZCgpJiZnLmlzVmFsaWQoKT9nPHRoaXM/dGhpczpnOnkoKX0pLEx0PVIoIm1vbWVudCgpLm1heCBpcyBkZXByZWNhdGVkLCB1c2UgbW9tZW50Lm1pbiBpbnN0ZWFkLiBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL21pbi1tYXgvIixmdW5jdGlvbigpe3ZhciBnPURlLmFwcGx5KG51bGwsYXJndW1lbnRzKTtyZXR1cm4gdGhpcy5pc1ZhbGlkKCkmJmcuaXNWYWxpZCgpP3RoaXM8Zz90aGlzOmc6eSgpfSk7ZnVuY3Rpb24gaG4oZyxFKXt2YXIgSSxPO2lmKCEoRT1FLmxlbmd0aD09PTEmJmkoRVswXSk/RVswXTpFKS5sZW5ndGgpcmV0dXJuIERlKCk7Zm9yKEk9RVswXSxPPTE7TzxFLmxlbmd0aDsrK08pRVtPXS5pc1ZhbGlkKCkmJiFFW09dW2ddKEkpfHwoST1FW09dKTtyZXR1cm4gSX12YXIgeGE9WyJ5ZWFyIiwicXVhcnRlciIsIm1vbnRoIiwid2VlayIsImRheSIsImhvdXIiLCJtaW51dGUiLCJzZWNvbmQiLCJtaWxsaXNlY29uZCJdO2Z1bmN0aW9uIF9pKEUpe3ZhciBFPUsoRSksST1FLnllYXJ8fDAsTz1FLnF1YXJ0ZXJ8fDAsRz1FLm1vbnRofHwwLGh0PUUud2Vla3x8RS5pc29XZWVrfHwwLHh0PUUuZGF5fHwwLE10PUUuaG91cnx8MCxWdD1FLm1pbnV0ZXx8MCxPdD1FLnNlY29uZHx8MCxkZT1FLm1pbGxpc2Vjb25kfHwwO3RoaXMuX2lzVmFsaWQ9ZnVuY3Rpb24oaWUpe3ZhciBlcixicix4aT0hMSxnXz14YS5sZW5ndGg7Zm9yKGVyIGluIGllKWlmKHMoaWUsZXIpJiYoanQuY2FsbCh4YSxlcik9PT0tMXx8aWVbZXJdIT1udWxsJiZpc05hTihpZVtlcl0pKSlyZXR1cm4hMTtmb3IoYnI9MDticjxnXzsrK2JyKWlmKGllW3hhW2JyXV0pe2lmKHhpKXJldHVybiExO3BhcnNlRmxvYXQoaWVbeGFbYnJdXSkhPT1xKGllW3hhW2JyXV0pJiYoeGk9ITApfXJldHVybiEwfShFKSx0aGlzLl9taWxsaXNlY29uZHM9K2RlKzFlMypPdCs2ZTQqVnQrMWUzKk10KjYwKjYwLHRoaXMuX2RheXM9K3h0KzcqaHQsdGhpcy5fbW9udGhzPStHKzMqTysxMipJLHRoaXMuX2RhdGE9e30sdGhpcy5fbG9jYWxlPWNlKCksdGhpcy5fYnViYmxlKCl9ZnVuY3Rpb24ga2EoZyl7cmV0dXJuIGcgaW5zdGFuY2VvZiBfaX1mdW5jdGlvbiBSbihnKXtyZXR1cm4gZzwwPy0xKk1hdGgucm91bmQoLTEqZyk6TWF0aC5yb3VuZChnKX1mdW5jdGlvbiB4dShnLEUpe1koZywwLDAsZnVuY3Rpb24oKXt2YXIgST10aGlzLnV0Y09mZnNldCgpLE89IisiO3JldHVybiBJPDAmJihJPS1JLE89Ii0iKSxPK04ofn4oSS82MCksMikrRStOKH5+SSU2MCwyKX0pfXh1KCJaIiwiOiIpLHh1KCJaWiIsIiIpLGZ0KCJaIix2dCksZnQoIlpaIix2dCksUXQoWyJaIiwiWloiXSxmdW5jdGlvbihnLEUsSSl7SS5fdXNlVVRDPSEwLEkuX3R6bT1Rcyh2dCxnKX0pO3ZhciB5bD0vKFtcK1wtXXxcZFxkKS9naTtmdW5jdGlvbiBRcyhnLEkpe3ZhciBJPShJfHwiIikubWF0Y2goZyk7cmV0dXJuIEk9PT1udWxsP251bGw6KEk9NjAqKGc9KChJW0kubGVuZ3RoLTFdfHxbXSkrIiIpLm1hdGNoKHlsKXx8WyItIiwwLDBdKVsxXStxKGdbMl0pKT09PTA/MDpnWzBdPT09IisiP0k6LUl9ZnVuY3Rpb24gSW4oZyxFKXt2YXIgSTtyZXR1cm4gRS5faXNVVEM/KEU9RS5jbG9uZSgpLEk9KE0oZyl8fGgoZyk/ZzpEZShnKSkudmFsdWVPZigpLUUudmFsdWVPZigpLEUuX2Quc2V0VGltZShFLl9kLnZhbHVlT2YoKStJKSxuLnVwZGF0ZU9mZnNldChFLCExKSxFKTpEZShnKS5sb2NhbCgpfWZ1bmN0aW9uIGNfKGcpe3JldHVybi1NYXRoLnJvdW5kKGcuX2QuZ2V0VGltZXpvbmVPZmZzZXQoKSl9ZnVuY3Rpb24gclIoKXtyZXR1cm4hIXRoaXMuaXNWYWxpZCgpJiZ0aGlzLl9pc1VUQyYmdGhpcy5fb2Zmc2V0PT09MH1uLnVwZGF0ZU9mZnNldD1mdW5jdGlvbigpe307dmFyIEFzdD0vXigtfFwrKT8oPzooXGQqKVsuIF0pPyhcZCspOihcZCspKD86OihcZCspKFwuXGQqKT8pPyQvLE1zdD0vXigtfFwrKT9QKD86KFstK10/WzAtOSwuXSopWSk/KD86KFstK10/WzAtOSwuXSopTSk/KD86KFstK10/WzAtOSwuXSopVyk/KD86KFstK10/WzAtOSwuXSopRCk/KD86VCg/OihbLStdP1swLTksLl0qKUgpPyg/OihbLStdP1swLTksLl0qKU0pPyg/OihbLStdP1swLTksLl0qKVMpPyk/JC87ZnVuY3Rpb24gdmkoZyxFKXt2YXIgSSxPPWcsRz1udWxsO3JldHVybiBrYShnKT9PPXttczpnLl9taWxsaXNlY29uZHMsZDpnLl9kYXlzLE06Zy5fbW9udGhzfTp1KGcpfHwhaXNOYU4oK2cpPyhPPXt9LEU/T1tFXT0rZzpPLm1pbGxpc2Vjb25kcz0rZyk6KEc9QXN0LmV4ZWMoZykpPyhJPUdbMV09PT0iLSI/LTE6MSxPPXt5OjAsZDpxKEdbd3RdKSpJLGg6cShHW2J0XSkqSSxtOnEoR1tFdF0pKkksczpxKEdba3RdKSpJLG1zOnEoUm4oMWUzKkdbVXRdKSkqSX0pOihHPU1zdC5leGVjKGcpKT8oST1HWzFdPT09Ii0iPy0xOjEsTz17eTpKcyhHWzJdLEkpLE06SnMoR1szXSxJKSx3OkpzKEdbNF0sSSksZDpKcyhHWzVdLEkpLGg6SnMoR1s2XSxJKSxtOkpzKEdbN10sSSksczpKcyhHWzhdLEkpfSk6Tz09bnVsbD9PPXt9OnR5cGVvZiBPPT0ib2JqZWN0IiYmKCJmcm9tImluIE98fCJ0byJpbiBPKSYmKEU9ZnVuY3Rpb24oaHQseHQpe3ZhciBNdDtyZXR1cm4haHQuaXNWYWxpZCgpfHwheHQuaXNWYWxpZCgpP3ttaWxsaXNlY29uZHM6MCxtb250aHM6MH06KHh0PUluKHh0LGh0KSxodC5pc0JlZm9yZSh4dCk/TXQ9blIoaHQseHQpOigoTXQ9blIoeHQsaHQpKS5taWxsaXNlY29uZHM9LU10Lm1pbGxpc2Vjb25kcyxNdC5tb250aHM9LU10Lm1vbnRocyksTXQpfShEZShPLmZyb20pLERlKE8udG8pKSwoTz17fSkubXM9RS5taWxsaXNlY29uZHMsTy5NPUUubW9udGhzKSxHPW5ldyBfaShPKSxrYShnKSYmcyhnLCJfbG9jYWxlIikmJihHLl9sb2NhbGU9Zy5fbG9jYWxlKSxrYShnKSYmcyhnLCJfaXNWYWxpZCIpJiYoRy5faXNWYWxpZD1nLl9pc1ZhbGlkKSxHfWZ1bmN0aW9uIEpzKGcsRSl7cmV0dXJuIGc9ZyYmcGFyc2VGbG9hdChnLnJlcGxhY2UoIiwiLCIuIikpLChpc05hTihnKT8wOmcpKkV9ZnVuY3Rpb24gblIoZyxFKXt2YXIgST17fTtyZXR1cm4gSS5tb250aHM9RS5tb250aCgpLWcubW9udGgoKSsxMiooRS55ZWFyKCktZy55ZWFyKCkpLGcuY2xvbmUoKS5hZGQoSS5tb250aHMsIk0iKS5pc0FmdGVyKEUpJiYtLUkubW9udGhzLEkubWlsbGlzZWNvbmRzPStFLStnLmNsb25lKCkuYWRkKEkubW9udGhzLCJNIiksSX1mdW5jdGlvbiBpUihnLEUpe3JldHVybiBmdW5jdGlvbihJLE8pe3ZhciBHO3JldHVybiBPPT09bnVsbHx8aXNOYU4oK08pfHwoTChFLCJtb21lbnQoKS4iK0UrIihwZXJpb2QsIG51bWJlcikgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBtb21lbnQoKS4iK0UrIihudW1iZXIsIHBlcmlvZCkuIFNlZSBodHRwOi8vbW9tZW50anMuY29tL2d1aWRlcy8jL3dhcm5pbmdzL2FkZC1pbnZlcnRlZC1wYXJhbS8gZm9yIG1vcmUgaW5mby4iKSxHPUksST1PLE89RyksYVIodGhpcyx2aShJLE8pLGcpLHRoaXN9fWZ1bmN0aW9uIGFSKGcseHQsSSxPKXt2YXIgRz14dC5fbWlsbGlzZWNvbmRzLGh0PVJuKHh0Ll9kYXlzKSx4dD1Sbih4dC5fbW9udGhzKTtnLmlzVmFsaWQoKSYmKE89Tz09bnVsbHx8Tyx4dCYmV3QoZyxGKGcsIk1vbnRoIikreHQqSSksaHQmJmooZywiRGF0ZSIsRihnLCJEYXRlIikraHQqSSksRyYmZy5fZC5zZXRUaW1lKGcuX2QudmFsdWVPZigpK0cqSSksTyYmbi51cGRhdGVPZmZzZXQoZyxodHx8eHQpKX12aS5mbj1faS5wcm90b3R5cGUsdmkuaW52YWxpZD1mdW5jdGlvbigpe3JldHVybiB2aShOYU4pfSxuZT1pUigxLCJhZGQiKSxaZT1pUigtMSwic3VidHJhY3QiKTtmdW5jdGlvbiBzUihnKXtyZXR1cm4gdHlwZW9mIGc9PSJzdHJpbmcifHxnIGluc3RhbmNlb2YgU3RyaW5nfWZ1bmN0aW9uIExzdChnKXtyZXR1cm4gTShnKXx8aChnKXx8c1IoZyl8fHUoZyl8fGZ1bmN0aW9uKEUpe3ZhciBJPWkoRSksTz0hMTtyZXR1cm4gSSYmKE89RS5maWx0ZXIoZnVuY3Rpb24oRyl7cmV0dXJuIXUoRykmJnNSKEUpfSkubGVuZ3RoPT09MCksSSYmT30oZyl8fGZ1bmN0aW9uKEUpe3ZhciBJLE8sRz1hKEUpJiYhbyhFKSxodD0hMSx4dD1bInllYXJzIiwieWVhciIsInkiLCJtb250aHMiLCJtb250aCIsIk0iLCJkYXlzIiwiZGF5IiwiZCIsImRhdGVzIiwiZGF0ZSIsIkQiLCJob3VycyIsImhvdXIiLCJoIiwibWludXRlcyIsIm1pbnV0ZSIsIm0iLCJzZWNvbmRzIiwic2Vjb25kIiwicyIsIm1pbGxpc2Vjb25kcyIsIm1pbGxpc2Vjb25kIiwibXMiXSxNdD14dC5sZW5ndGg7Zm9yKEk9MDtJPE10O0krPTEpTz14dFtJXSxodD1odHx8cyhFLE8pO3JldHVybiBHJiZodH0oZyl8fGc9PW51bGx9ZnVuY3Rpb24gTDAoZyxHKXtpZihnLmRhdGUoKTxHLmRhdGUoKSlyZXR1cm4tTDAoRyxnKTt2YXIgST0xMiooRy55ZWFyKCktZy55ZWFyKCkpKyhHLm1vbnRoKCktZy5tb250aCgpKSxPPWcuY2xvbmUoKS5hZGQoSSwibW9udGhzIiksRz1HLU88MD8oRy1PKS8oTy1nLmNsb25lKCkuYWRkKEktMSwibW9udGhzIikpOihHLU8pLyhnLmNsb25lKCkuYWRkKDErSSwibW9udGhzIiktTyk7cmV0dXJuLShJK0cpfHwwfWZ1bmN0aW9uIG9SKGcpe3JldHVybiBnPT09dm9pZCAwP3RoaXMuX2xvY2FsZS5fYWJicjooKGc9Y2UoZykpIT1udWxsJiYodGhpcy5fbG9jYWxlPWcpLHRoaXMpfW4uZGVmYXVsdEZvcm1hdD0iWVlZWS1NTS1ERFRISDptbTpzc1oiLG4uZGVmYXVsdEZvcm1hdFV0Yz0iWVlZWS1NTS1ERFRISDptbTpzc1taXSIsc3Q9UigibW9tZW50KCkubGFuZygpIGlzIGRlcHJlY2F0ZWQuIEluc3RlYWQsIHVzZSBtb21lbnQoKS5sb2NhbGVEYXRhKCkgdG8gZ2V0IHRoZSBsYW5ndWFnZSBjb25maWd1cmF0aW9uLiBVc2UgbW9tZW50KCkubG9jYWxlKCkgdG8gY2hhbmdlIGxhbmd1YWdlcy4iLGZ1bmN0aW9uKGcpe3JldHVybiBnPT09dm9pZCAwP3RoaXMubG9jYWxlRGF0YSgpOnRoaXMubG9jYWxlKGcpfSk7ZnVuY3Rpb24gbFIoKXtyZXR1cm4gdGhpcy5fbG9jYWxlfXZhciBjUj0xMjYyMjc4MDhlNTtmdW5jdGlvbiBtbChnLEUpe3JldHVybihnJUUrRSklRX1mdW5jdGlvbiB1UihnLEUsSSl7cmV0dXJuIGc8MTAwJiYwPD1nP25ldyBEYXRlKGcrNDAwLEUsSSktY1I6bmV3IERhdGUoZyxFLEkpLnZhbHVlT2YoKX1mdW5jdGlvbiBoUihnLEUsSSl7cmV0dXJuIGc8MTAwJiYwPD1nP0RhdGUuVVRDKGcrNDAwLEUsSSktY1I6RGF0ZS5VVEMoZyxFLEkpfWZ1bmN0aW9uIHVfKGcsRSl7cmV0dXJuIEUuZXJhc0FiYnJSZWdleChnKX1mdW5jdGlvbiBoXygpe2Zvcih2YXIgZz1bXSxFPVtdLEk9W10sTz1bXSxHPXRoaXMuZXJhcygpLGh0PTAseHQ9Ry5sZW5ndGg7aHQ8eHQ7KytodClFLnB1c2goRHQoR1todF0ubmFtZSkpLGcucHVzaChEdChHW2h0XS5hYmJyKSksSS5wdXNoKER0KEdbaHRdLm5hcnJvdykpLE8ucHVzaChEdChHW2h0XS5uYW1lKSksTy5wdXNoKER0KEdbaHRdLmFiYnIpKSxPLnB1c2goRHQoR1todF0ubmFycm93KSk7dGhpcy5fZXJhc1JlZ2V4PW5ldyBSZWdFeHAoIl4oIitPLmpvaW4oInwiKSsiKSIsImkiKSx0aGlzLl9lcmFzTmFtZVJlZ2V4PW5ldyBSZWdFeHAoIl4oIitFLmpvaW4oInwiKSsiKSIsImkiKSx0aGlzLl9lcmFzQWJiclJlZ2V4PW5ldyBSZWdFeHAoIl4oIitnLmpvaW4oInwiKSsiKSIsImkiKSx0aGlzLl9lcmFzTmFycm93UmVnZXg9bmV3IFJlZ0V4cCgiXigiK0kuam9pbigifCIpKyIpIiwiaSIpfWZ1bmN0aW9uIFIwKGcsRSl7WSgwLFtnLGcubGVuZ3RoXSwwLEUpfWZ1bmN0aW9uIGZSKGcsRSxJLE8sRyl7dmFyIGh0O3JldHVybiBnPT1udWxsP0tlKHRoaXMsTyxHKS55ZWFyOihodD13cihnLE8sRyksZnVuY3Rpb24oeHQsTXQsVnQsT3QsZGUpe3JldHVybiB4dD1vZSh4dCxNdCxWdCxPdCxkZSksTXQ9SHIoeHQueWVhciwwLHh0LmRheU9mWWVhciksdGhpcy55ZWFyKE10LmdldFVUQ0Z1bGxZZWFyKCkpLHRoaXMubW9udGgoTXQuZ2V0VVRDTW9udGgoKSksdGhpcy5kYXRlKE10LmdldFVUQ0RhdGUoKSksdGhpc30uY2FsbCh0aGlzLGcsRT1odDxFP2h0OkUsSSxPLEcpKX1ZKCJOIiwwLDAsImVyYUFiYnIiKSxZKCJOTiIsMCwwLCJlcmFBYmJyIiksWSgiTk5OIiwwLDAsImVyYUFiYnIiKSxZKCJOTk5OIiwwLDAsImVyYU5hbWUiKSxZKCJOTk5OTiIsMCwwLCJlcmFOYXJyb3ciKSxZKCJ5IixbInkiLDFdLCJ5byIsImVyYVllYXIiKSxZKCJ5IixbInl5IiwyXSwwLCJlcmFZZWFyIiksWSgieSIsWyJ5eXkiLDNdLDAsImVyYVllYXIiKSxZKCJ5IixbInl5eXkiLDRdLDAsImVyYVllYXIiKSxmdCgiTiIsdV8pLGZ0KCJOTiIsdV8pLGZ0KCJOTk4iLHVfKSxmdCgiTk5OTiIsZnVuY3Rpb24oZyxFKXtyZXR1cm4gRS5lcmFzTmFtZVJlZ2V4KGcpfSksZnQoIk5OTk5OIixmdW5jdGlvbihnLEUpe3JldHVybiBFLmVyYXNOYXJyb3dSZWdleChnKX0pLFF0KFsiTiIsIk5OIiwiTk5OIiwiTk5OTiIsIk5OTk5OIl0sZnVuY3Rpb24oZyxFLEksTyl7Tz1JLl9sb2NhbGUuZXJhc1BhcnNlKGcsTyxJLl9zdHJpY3QpLE8/bShJKS5lcmE9TzptKEkpLmludmFsaWRFcmE9Z30pLGZ0KCJ5IixDdCksZnQoInl5IixDdCksZnQoInl5eSIsQ3QpLGZ0KCJ5eXl5IixDdCksZnQoInlvIixmdW5jdGlvbihnLEUpe3JldHVybiBFLl9lcmFZZWFyT3JkaW5hbFJlZ2V4fHxDdH0pLFF0KFsieSIsInl5IiwieXl5IiwieXl5eSJdLEZ0KSxRdChbInlvIl0sZnVuY3Rpb24oZyxFLEksTyl7dmFyIEc7SS5fbG9jYWxlLl9lcmFZZWFyT3JkaW5hbFJlZ2V4JiYoRz1nLm1hdGNoKEkuX2xvY2FsZS5fZXJhWWVhck9yZGluYWxSZWdleCkpLEkuX2xvY2FsZS5lcmFZZWFyT3JkaW5hbFBhcnNlP0VbRnRdPUkuX2xvY2FsZS5lcmFZZWFyT3JkaW5hbFBhcnNlKGcsRyk6RVtGdF09cGFyc2VJbnQoZywxMCl9KSxZKDAsWyJnZyIsMl0sMCxmdW5jdGlvbigpe3JldHVybiB0aGlzLndlZWtZZWFyKCklMTAwfSksWSgwLFsiR0ciLDJdLDAsZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc29XZWVrWWVhcigpJTEwMH0pLFIwKCJnZ2dnIiwid2Vla1llYXIiKSxSMCgiZ2dnZ2ciLCJ3ZWVrWWVhciIpLFIwKCJHR0dHIiwiaXNvV2Vla1llYXIiKSxSMCgiR0dHR0ciLCJpc29XZWVrWWVhciIpLFcoIndlZWtZZWFyIiwiZ2ciKSxXKCJpc29XZWVrWWVhciIsIkdHIiksWigid2Vla1llYXIiLDEpLFooImlzb1dlZWtZZWFyIiwxKSxmdCgiRyIscHQpLGZ0KCJnIixwdCksZnQoIkdHIixhdCxmZSksZnQoImdnIixhdCxmZSksZnQoIkdHR0ciLGxzLHRvKSxmdCgiZ2dnZyIsbHMsdG8pLGZ0KCJHR0dHRyIsc3Msb3MpLGZ0KCJnZ2dnZyIsc3Msb3MpLHdlKFsiZ2dnZyIsImdnZ2dnIiwiR0dHRyIsIkdHR0dHIl0sZnVuY3Rpb24oZyxFLEksTyl7RVtPLnN1YnN0cigwLDIpXT1xKGcpfSksd2UoWyJnZyIsIkdHIl0sZnVuY3Rpb24oZyxFLEksTyl7RVtPXT1uLnBhcnNlVHdvRGlnaXRZZWFyKGcpfSksWSgiUSIsMCwiUW8iLCJxdWFydGVyIiksVygicXVhcnRlciIsIlEiKSxaKCJxdWFydGVyIiw3KSxmdCgiUSIsUCksUXQoIlEiLGZ1bmN0aW9uKGcsRSl7RVt6dF09MyoocShnKS0xKX0pLFkoIkQiLFsiREQiLDJdLCJEbyIsImRhdGUiKSxXKCJkYXRlIiwiRCIpLFooImRhdGUiLDkpLGZ0KCJEIixhdCksZnQoIkREIixhdCxmZSksZnQoIkRvIixmdW5jdGlvbihnLEUpe3JldHVybiBnP0UuX2RheU9mTW9udGhPcmRpbmFsUGFyc2V8fEUuX29yZGluYWxQYXJzZTpFLl9kYXlPZk1vbnRoT3JkaW5hbFBhcnNlTGVuaWVudH0pLFF0KFsiRCIsIkREIl0sd3QpLFF0KCJEbyIsZnVuY3Rpb24oZyxFKXtFW3d0XT1xKGcubWF0Y2goYXQpWzBdKX0pLGxzPVUoIkRhdGUiLCEwKSxZKCJEREQiLFsiRERERCIsM10sIkRERG8iLCJkYXlPZlllYXIiKSxXKCJkYXlPZlllYXIiLCJEREQiKSxaKCJkYXlPZlllYXIiLDQpLGZ0KCJEREQiLFJ0KSxmdCgiRERERCIsZXQpLFF0KFsiREREIiwiRERERCJdLGZ1bmN0aW9uKGcsRSxJKXtJLl9kYXlPZlllYXI9cShnKX0pLFkoIm0iLFsibW0iLDJdLDAsIm1pbnV0ZSIpLFcoIm1pbnV0ZSIsIm0iKSxaKCJtaW51dGUiLDE0KSxmdCgibSIsYXQpLGZ0KCJtbSIsYXQsZmUpLFF0KFsibSIsIm1tIl0sRXQpO3ZhciBhcyx0bz1VKCJNaW51dGVzIiwhMSksc3M9KFkoInMiLFsic3MiLDJdLDAsInNlY29uZCIpLFcoInNlY29uZCIsInMiKSxaKCJzZWNvbmQiLDE1KSxmdCgicyIsYXQpLGZ0KCJzcyIsYXQsZmUpLFF0KFsicyIsInNzIl0sa3QpLFUoIlNlY29uZHMiLCExKSk7Zm9yKFkoIlMiLDAsMCxmdW5jdGlvbigpe3JldHVybn5+KHRoaXMubWlsbGlzZWNvbmQoKS8xMDApfSksWSgwLFsiU1MiLDJdLDAsZnVuY3Rpb24oKXtyZXR1cm5+fih0aGlzLm1pbGxpc2Vjb25kKCkvMTApfSksWSgwLFsiU1NTIiwzXSwwLCJtaWxsaXNlY29uZCIpLFkoMCxbIlNTU1MiLDRdLDAsZnVuY3Rpb24oKXtyZXR1cm4gMTAqdGhpcy5taWxsaXNlY29uZCgpfSksWSgwLFsiU1NTU1MiLDVdLDAsZnVuY3Rpb24oKXtyZXR1cm4gMTAwKnRoaXMubWlsbGlzZWNvbmQoKX0pLFkoMCxbIlNTU1NTUyIsNl0sMCxmdW5jdGlvbigpe3JldHVybiAxZTMqdGhpcy5taWxsaXNlY29uZCgpfSksWSgwLFsiU1NTU1NTUyIsN10sMCxmdW5jdGlvbigpe3JldHVybiAxZTQqdGhpcy5taWxsaXNlY29uZCgpfSksWSgwLFsiU1NTU1NTU1MiLDhdLDAsZnVuY3Rpb24oKXtyZXR1cm4gMWU1KnRoaXMubWlsbGlzZWNvbmQoKX0pLFkoMCxbIlNTU1NTU1NTUyIsOV0sMCxmdW5jdGlvbigpe3JldHVybiAxZTYqdGhpcy5taWxsaXNlY29uZCgpfSksVygibWlsbGlzZWNvbmQiLCJtcyIpLFooIm1pbGxpc2Vjb25kIiwxNiksZnQoIlMiLFJ0LFApLGZ0KCJTUyIsUnQsZmUpLGZ0KCJTU1MiLFJ0LGV0KSxhcz0iU1NTUyI7YXMubGVuZ3RoPD05O2FzKz0iUyIpZnQoYXMsQ3QpO2Z1bmN0aW9uIFJzdChnLEUpe0VbVXRdPXEoMWUzKigiMC4iK2cpKX1mb3IoYXM9IlMiO2FzLmxlbmd0aDw9OTthcys9IlMiKVF0KGFzLFJzdCk7b3M9VSgiTWlsbGlzZWNvbmRzIiwhMSksWSgieiIsMCwwLCJ6b25lQWJiciIpLFkoInp6IiwwLDAsInpvbmVOYW1lIiksUD1DLnByb3RvdHlwZTtmdW5jdGlvbiBkUihnKXtyZXR1cm4gZ31QLmFkZD1uZSxQLmNhbGVuZGFyPWZ1bmN0aW9uKEksRyl7YXJndW1lbnRzLmxlbmd0aD09PTEmJihhcmd1bWVudHNbMF0/THN0KGFyZ3VtZW50c1swXSk/KEk9YXJndW1lbnRzWzBdLEc9dm9pZCAwKTpmdW5jdGlvbihodCl7Zm9yKHZhciB4dD1hKGh0KSYmIW8oaHQpLE10PSExLFZ0PVsic2FtZURheSIsIm5leHREYXkiLCJsYXN0RGF5IiwibmV4dFdlZWsiLCJsYXN0V2VlayIsInNhbWVFbHNlIl0sT3Q9MDtPdDxWdC5sZW5ndGg7T3QrPTEpTXQ9TXR8fHMoaHQsVnRbT3RdKTtyZXR1cm4geHQmJk10fShhcmd1bWVudHNbMF0pJiYoRz1hcmd1bWVudHNbMF0sST12b2lkIDApOkc9ST12b2lkIDApO3ZhciBJPUl8fERlKCksTz1JbihJLHRoaXMpLnN0YXJ0T2YoImRheSIpLE89bi5jYWxlbmRhckZvcm1hdCh0aGlzLE8pfHwic2FtZUVsc2UiLEc9RyYmKHYoR1tPXSk/R1tPXS5jYWxsKHRoaXMsSSk6R1tPXSk7cmV0dXJuIHRoaXMuZm9ybWF0KEd8fHRoaXMubG9jYWxlRGF0YSgpLmNhbGVuZGFyKE8sdGhpcyxEZShJKSkpfSxQLmNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBDKHRoaXMpfSxQLmRpZmY9ZnVuY3Rpb24oZyxFLEkpe3ZhciBPLEcsaHQ7aWYoIXRoaXMuaXNWYWxpZCgpKXJldHVybiBOYU47aWYoIShPPUluKGcsdGhpcykpLmlzVmFsaWQoKSlyZXR1cm4gTmFOO3N3aXRjaChHPTZlNCooTy51dGNPZmZzZXQoKS10aGlzLnV0Y09mZnNldCgpKSxFPXR0KEUpKXtjYXNlInllYXIiOmh0PUwwKHRoaXMsTykvMTI7YnJlYWs7Y2FzZSJtb250aCI6aHQ9TDAodGhpcyxPKTticmVhaztjYXNlInF1YXJ0ZXIiOmh0PUwwKHRoaXMsTykvMzticmVhaztjYXNlInNlY29uZCI6aHQ9KHRoaXMtTykvMWUzO2JyZWFrO2Nhc2UibWludXRlIjpodD0odGhpcy1PKS82ZTQ7YnJlYWs7Y2FzZSJob3VyIjpodD0odGhpcy1PKS8zNmU1O2JyZWFrO2Nhc2UiZGF5IjpodD0odGhpcy1PLUcpLzg2NGU1O2JyZWFrO2Nhc2Uid2VlayI6aHQ9KHRoaXMtTy1HKS82MDQ4ZTU7YnJlYWs7ZGVmYXVsdDpodD10aGlzLU99cmV0dXJuIEk/aHQ6UShodCl9LFAuZW5kT2Y9ZnVuY3Rpb24oZyl7dmFyIEUsSTtpZigoZz10dChnKSk9PT12b2lkIDB8fGc9PT0ibWlsbGlzZWNvbmQifHwhdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIHRoaXM7c3dpdGNoKEk9dGhpcy5faXNVVEM/aFI6dVIsZyl7Y2FzZSJ5ZWFyIjpFPUkodGhpcy55ZWFyKCkrMSwwLDEpLTE7YnJlYWs7Y2FzZSJxdWFydGVyIjpFPUkodGhpcy55ZWFyKCksdGhpcy5tb250aCgpLXRoaXMubW9udGgoKSUzKzMsMSktMTticmVhaztjYXNlIm1vbnRoIjpFPUkodGhpcy55ZWFyKCksdGhpcy5tb250aCgpKzEsMSktMTticmVhaztjYXNlIndlZWsiOkU9SSh0aGlzLnllYXIoKSx0aGlzLm1vbnRoKCksdGhpcy5kYXRlKCktdGhpcy53ZWVrZGF5KCkrNyktMTticmVhaztjYXNlImlzb1dlZWsiOkU9SSh0aGlzLnllYXIoKSx0aGlzLm1vbnRoKCksdGhpcy5kYXRlKCktKHRoaXMuaXNvV2Vla2RheSgpLTEpKzcpLTE7YnJlYWs7Y2FzZSJkYXkiOmNhc2UiZGF0ZSI6RT1JKHRoaXMueWVhcigpLHRoaXMubW9udGgoKSx0aGlzLmRhdGUoKSsxKS0xO2JyZWFrO2Nhc2UiaG91ciI6RT10aGlzLl9kLnZhbHVlT2YoKSxFKz0zNmU1LW1sKEUrKHRoaXMuX2lzVVRDPzA6NmU0KnRoaXMudXRjT2Zmc2V0KCkpLDM2ZTUpLTE7YnJlYWs7Y2FzZSJtaW51dGUiOkU9dGhpcy5fZC52YWx1ZU9mKCksRSs9NmU0LW1sKEUsNmU0KS0xO2JyZWFrO2Nhc2Uic2Vjb25kIjpFPXRoaXMuX2QudmFsdWVPZigpLEUrPTFlMy1tbChFLDFlMyktMTticmVha31yZXR1cm4gdGhpcy5fZC5zZXRUaW1lKEUpLG4udXBkYXRlT2Zmc2V0KHRoaXMsITApLHRoaXN9LFAuZm9ybWF0PWZ1bmN0aW9uKGcpe3JldHVybiBnPWd8fCh0aGlzLmlzVXRjKCk/bi5kZWZhdWx0Rm9ybWF0VXRjOm4uZGVmYXVsdEZvcm1hdCksZz0kKHRoaXMsZyksdGhpcy5sb2NhbGVEYXRhKCkucG9zdGZvcm1hdChnKX0sUC5mcm9tPWZ1bmN0aW9uKGcsRSl7cmV0dXJuIHRoaXMuaXNWYWxpZCgpJiYoTShnKSYmZy5pc1ZhbGlkKCl8fERlKGcpLmlzVmFsaWQoKSk/dmkoe3RvOnRoaXMsZnJvbTpnfSkubG9jYWxlKHRoaXMubG9jYWxlKCkpLmh1bWFuaXplKCFFKTp0aGlzLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpfSxQLmZyb21Ob3c9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuZnJvbShEZSgpLGcpfSxQLnRvPWZ1bmN0aW9uKGcsRSl7cmV0dXJuIHRoaXMuaXNWYWxpZCgpJiYoTShnKSYmZy5pc1ZhbGlkKCl8fERlKGcpLmlzVmFsaWQoKSk/dmkoe2Zyb206dGhpcyx0bzpnfSkubG9jYWxlKHRoaXMubG9jYWxlKCkpLmh1bWFuaXplKCFFKTp0aGlzLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpfSxQLnRvTm93PWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLnRvKERlKCksZyl9LFAuZ2V0PWZ1bmN0aW9uKGcpe3JldHVybiB2KHRoaXNbZz10dChnKV0pP3RoaXNbZ10oKTp0aGlzfSxQLmludmFsaWRBdD1mdW5jdGlvbigpe3JldHVybiBtKHRoaXMpLm92ZXJmbG93fSxQLmlzQWZ0ZXI9ZnVuY3Rpb24oZyxFKXtyZXR1cm4gZz1NKGcpP2c6RGUoZyksISghdGhpcy5pc1ZhbGlkKCl8fCFnLmlzVmFsaWQoKSkmJigoRT10dChFKXx8Im1pbGxpc2Vjb25kIik9PT0ibWlsbGlzZWNvbmQiP3RoaXMudmFsdWVPZigpPmcudmFsdWVPZigpOmcudmFsdWVPZigpPHRoaXMuY2xvbmUoKS5zdGFydE9mKEUpLnZhbHVlT2YoKSl9LFAuaXNCZWZvcmU9ZnVuY3Rpb24oZyxFKXtyZXR1cm4gZz1NKGcpP2c6RGUoZyksISghdGhpcy5pc1ZhbGlkKCl8fCFnLmlzVmFsaWQoKSkmJigoRT10dChFKXx8Im1pbGxpc2Vjb25kIik9PT0ibWlsbGlzZWNvbmQiP3RoaXMudmFsdWVPZigpPGcudmFsdWVPZigpOnRoaXMuY2xvbmUoKS5lbmRPZihFKS52YWx1ZU9mKCk8Zy52YWx1ZU9mKCkpfSxQLmlzQmV0d2Vlbj1mdW5jdGlvbihnLEUsSSxPKXtyZXR1cm4gZz1NKGcpP2c6RGUoZyksRT1NKEUpP0U6RGUoRSksISEodGhpcy5pc1ZhbGlkKCkmJmcuaXNWYWxpZCgpJiZFLmlzVmFsaWQoKSkmJigoTz1PfHwiKCkiKVswXT09PSIoIj90aGlzLmlzQWZ0ZXIoZyxJKTohdGhpcy5pc0JlZm9yZShnLEkpKSYmKE9bMV09PT0iKSI/dGhpcy5pc0JlZm9yZShFLEkpOiF0aGlzLmlzQWZ0ZXIoRSxJKSl9LFAuaXNTYW1lPWZ1bmN0aW9uKEksRSl7dmFyIEk9TShJKT9JOkRlKEkpO3JldHVybiEoIXRoaXMuaXNWYWxpZCgpfHwhSS5pc1ZhbGlkKCkpJiYoKEU9dHQoRSl8fCJtaWxsaXNlY29uZCIpPT09Im1pbGxpc2Vjb25kIj90aGlzLnZhbHVlT2YoKT09PUkudmFsdWVPZigpOihJPUkudmFsdWVPZigpLHRoaXMuY2xvbmUoKS5zdGFydE9mKEUpLnZhbHVlT2YoKTw9SSYmSTw9dGhpcy5jbG9uZSgpLmVuZE9mKEUpLnZhbHVlT2YoKSkpfSxQLmlzU2FtZU9yQWZ0ZXI9ZnVuY3Rpb24oZyxFKXtyZXR1cm4gdGhpcy5pc1NhbWUoZyxFKXx8dGhpcy5pc0FmdGVyKGcsRSl9LFAuaXNTYW1lT3JCZWZvcmU9ZnVuY3Rpb24oZyxFKXtyZXR1cm4gdGhpcy5pc1NhbWUoZyxFKXx8dGhpcy5pc0JlZm9yZShnLEUpfSxQLmlzVmFsaWQ9ZnVuY3Rpb24oKXtyZXR1cm4gXyh0aGlzKX0sUC5sYW5nPXN0LFAubG9jYWxlPW9SLFAubG9jYWxlRGF0YT1sUixQLm1heD1MdCxQLm1pbj1JdCxQLnBhcnNpbmdGbGFncz1mdW5jdGlvbigpe3JldHVybiBmKHt9LG0odGhpcykpfSxQLnNldD1mdW5jdGlvbihnLEUpe2lmKHR5cGVvZiBnPT0ib2JqZWN0Iilmb3IodmFyIEk9ZnVuY3Rpb24oaHQpe3ZhciB4dCxNdD1bXTtmb3IoeHQgaW4gaHQpcyhodCx4dCkmJk10LnB1c2goe3VuaXQ6eHQscHJpb3JpdHk6aXRbeHRdfSk7cmV0dXJuIE10LnNvcnQoZnVuY3Rpb24oVnQsT3Qpe3JldHVybiBWdC5wcmlvcml0eS1PdC5wcmlvcml0eX0pLE10fShnPUsoZykpLE89SS5sZW5ndGgsRz0wO0c8TztHKyspdGhpc1tJW0ddLnVuaXRdKGdbSVtHXS51bml0XSk7ZWxzZSBpZih2KHRoaXNbZz10dChnKV0pKXJldHVybiB0aGlzW2ddKEUpO3JldHVybiB0aGlzfSxQLnN0YXJ0T2Y9ZnVuY3Rpb24oZyl7dmFyIEUsSTtpZigoZz10dChnKSk9PT12b2lkIDB8fGc9PT0ibWlsbGlzZWNvbmQifHwhdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIHRoaXM7c3dpdGNoKEk9dGhpcy5faXNVVEM/aFI6dVIsZyl7Y2FzZSJ5ZWFyIjpFPUkodGhpcy55ZWFyKCksMCwxKTticmVhaztjYXNlInF1YXJ0ZXIiOkU9SSh0aGlzLnllYXIoKSx0aGlzLm1vbnRoKCktdGhpcy5tb250aCgpJTMsMSk7YnJlYWs7Y2FzZSJtb250aCI6RT1JKHRoaXMueWVhcigpLHRoaXMubW9udGgoKSwxKTticmVhaztjYXNlIndlZWsiOkU9SSh0aGlzLnllYXIoKSx0aGlzLm1vbnRoKCksdGhpcy5kYXRlKCktdGhpcy53ZWVrZGF5KCkpO2JyZWFrO2Nhc2UiaXNvV2VlayI6RT1JKHRoaXMueWVhcigpLHRoaXMubW9udGgoKSx0aGlzLmRhdGUoKS0odGhpcy5pc29XZWVrZGF5KCktMSkpO2JyZWFrO2Nhc2UiZGF5IjpjYXNlImRhdGUiOkU9SSh0aGlzLnllYXIoKSx0aGlzLm1vbnRoKCksdGhpcy5kYXRlKCkpO2JyZWFrO2Nhc2UiaG91ciI6RT10aGlzLl9kLnZhbHVlT2YoKSxFLT1tbChFKyh0aGlzLl9pc1VUQz8wOjZlNCp0aGlzLnV0Y09mZnNldCgpKSwzNmU1KTticmVhaztjYXNlIm1pbnV0ZSI6RT10aGlzLl9kLnZhbHVlT2YoKSxFLT1tbChFLDZlNCk7YnJlYWs7Y2FzZSJzZWNvbmQiOkU9dGhpcy5fZC52YWx1ZU9mKCksRS09bWwoRSwxZTMpO2JyZWFrfXJldHVybiB0aGlzLl9kLnNldFRpbWUoRSksbi51cGRhdGVPZmZzZXQodGhpcywhMCksdGhpc30sUC5zdWJ0cmFjdD1aZSxQLnRvQXJyYXk9ZnVuY3Rpb24oKXt2YXIgZz10aGlzO3JldHVybltnLnllYXIoKSxnLm1vbnRoKCksZy5kYXRlKCksZy5ob3VyKCksZy5taW51dGUoKSxnLnNlY29uZCgpLGcubWlsbGlzZWNvbmQoKV19LFAudG9PYmplY3Q9ZnVuY3Rpb24oKXt2YXIgZz10aGlzO3JldHVybnt5ZWFyczpnLnllYXIoKSxtb250aHM6Zy5tb250aCgpLGRhdGU6Zy5kYXRlKCksaG91cnM6Zy5ob3VycygpLG1pbnV0ZXM6Zy5taW51dGVzKCksc2Vjb25kczpnLnNlY29uZHMoKSxtaWxsaXNlY29uZHM6Zy5taWxsaXNlY29uZHMoKX19LFAudG9EYXRlPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBEYXRlKHRoaXMudmFsdWVPZigpKX0sUC50b0lTT1N0cmluZz1mdW5jdGlvbihnKXtpZighdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIG51bGw7dmFyIEU9KGc9ZyE9PSEwKT90aGlzLmNsb25lKCkudXRjKCk6dGhpcztyZXR1cm4gRS55ZWFyKCk8MHx8OTk5OTxFLnllYXIoKT8kKEUsZz8iWVlZWVlZLU1NLUREW1RdSEg6bW06c3MuU1NTW1pdIjoiWVlZWVlZLU1NLUREW1RdSEg6bW06c3MuU1NTWiIpOnYoRGF0ZS5wcm90b3R5cGUudG9JU09TdHJpbmcpP2c/dGhpcy50b0RhdGUoKS50b0lTT1N0cmluZygpOm5ldyBEYXRlKHRoaXMudmFsdWVPZigpKzYwKnRoaXMudXRjT2Zmc2V0KCkqMWUzKS50b0lTT1N0cmluZygpLnJlcGxhY2UoIloiLCQoRSwiWiIpKTokKEUsZz8iWVlZWS1NTS1ERFtUXUhIOm1tOnNzLlNTU1taXSI6IllZWVktTU0tRERbVF1ISDptbTpzcy5TU1NaIil9LFAuaW5zcGVjdD1mdW5jdGlvbigpe2lmKCF0aGlzLmlzVmFsaWQoKSlyZXR1cm4ibW9tZW50LmludmFsaWQoLyogIit0aGlzLl9pKyIgKi8pIjt2YXIgZyxFPSJtb21lbnQiLEk9IiI7cmV0dXJuIHRoaXMuaXNMb2NhbCgpfHwoRT10aGlzLnV0Y09mZnNldCgpPT09MD8ibW9tZW50LnV0YyI6Im1vbWVudC5wYXJzZVpvbmUiLEk9IloiKSxFPSJbIitFKycoIl0nLGc9MDw9dGhpcy55ZWFyKCkmJnRoaXMueWVhcigpPD05OTk5PyJZWVlZIjoiWVlZWVlZIix0aGlzLmZvcm1hdChFK2crIi1NTS1ERFtUXUhIOm1tOnNzLlNTUyIrKEkrJ1siKV0nKSl9LHR5cGVvZiBTeW1ib2w8InUiJiZTeW1ib2wuZm9yIT1udWxsJiYoUFtTeW1ib2wuZm9yKCJub2RlanMudXRpbC5pbnNwZWN0LmN1c3RvbSIpXT1mdW5jdGlvbigpe3JldHVybiJNb21lbnQ8Iit0aGlzLmZvcm1hdCgpKyI+In0pLFAudG9KU09OPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNWYWxpZCgpP3RoaXMudG9JU09TdHJpbmcoKTpudWxsfSxQLnRvU3RyaW5nPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY2xvbmUoKS5sb2NhbGUoImVuIikuZm9ybWF0KCJkZGQgTU1NIEREIFlZWVkgSEg6bW06c3MgW0dNVF1aWiIpfSxQLnVuaXg9ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5mbG9vcih0aGlzLnZhbHVlT2YoKS8xZTMpfSxQLnZhbHVlT2Y9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZC52YWx1ZU9mKCktNmU0Kih0aGlzLl9vZmZzZXR8fDApfSxQLmNyZWF0aW9uRGF0YT1mdW5jdGlvbigpe3JldHVybntpbnB1dDp0aGlzLl9pLGZvcm1hdDp0aGlzLl9mLGxvY2FsZTp0aGlzLl9sb2NhbGUsaXNVVEM6dGhpcy5faXNVVEMsc3RyaWN0OnRoaXMuX3N0cmljdH19LFAuZXJhTmFtZT1mdW5jdGlvbigpe2Zvcih2YXIgZyxFPXRoaXMubG9jYWxlRGF0YSgpLmVyYXMoKSxJPTAsTz1FLmxlbmd0aDtJPE87KytJKWlmKGc9dGhpcy5jbG9uZSgpLnN0YXJ0T2YoImRheSIpLnZhbHVlT2YoKSxFW0ldLnNpbmNlPD1nJiZnPD1FW0ldLnVudGlsfHxFW0ldLnVudGlsPD1nJiZnPD1FW0ldLnNpbmNlKXJldHVybiBFW0ldLm5hbWU7cmV0dXJuIiJ9LFAuZXJhTmFycm93PWZ1bmN0aW9uKCl7Zm9yKHZhciBnLEU9dGhpcy5sb2NhbGVEYXRhKCkuZXJhcygpLEk9MCxPPUUubGVuZ3RoO0k8TzsrK0kpaWYoZz10aGlzLmNsb25lKCkuc3RhcnRPZigiZGF5IikudmFsdWVPZigpLEVbSV0uc2luY2U8PWcmJmc8PUVbSV0udW50aWx8fEVbSV0udW50aWw8PWcmJmc8PUVbSV0uc2luY2UpcmV0dXJuIEVbSV0ubmFycm93O3JldHVybiIifSxQLmVyYUFiYnI9ZnVuY3Rpb24oKXtmb3IodmFyIGcsRT10aGlzLmxvY2FsZURhdGEoKS5lcmFzKCksST0wLE89RS5sZW5ndGg7STxPOysrSSlpZihnPXRoaXMuY2xvbmUoKS5zdGFydE9mKCJkYXkiKS52YWx1ZU9mKCksRVtJXS5zaW5jZTw9ZyYmZzw9RVtJXS51bnRpbHx8RVtJXS51bnRpbDw9ZyYmZzw9RVtJXS5zaW5jZSlyZXR1cm4gRVtJXS5hYmJyO3JldHVybiIifSxQLmVyYVllYXI9ZnVuY3Rpb24oKXtmb3IodmFyIGcsRSxJPXRoaXMubG9jYWxlRGF0YSgpLmVyYXMoKSxPPTAsRz1JLmxlbmd0aDtPPEc7KytPKWlmKGc9SVtPXS5zaW5jZTw9SVtPXS51bnRpbD8xOi0xLEU9dGhpcy5jbG9uZSgpLnN0YXJ0T2YoImRheSIpLnZhbHVlT2YoKSxJW09dLnNpbmNlPD1FJiZFPD1JW09dLnVudGlsfHxJW09dLnVudGlsPD1FJiZFPD1JW09dLnNpbmNlKXJldHVybih0aGlzLnllYXIoKS1uKElbT10uc2luY2UpLnllYXIoKSkqZytJW09dLm9mZnNldDtyZXR1cm4gdGhpcy55ZWFyKCl9LFAueWVhcj1OMCxQLmlzTGVhcFllYXI9ZnVuY3Rpb24oKXtyZXR1cm4gVih0aGlzLnllYXIoKSl9LFAud2Vla1llYXI9ZnVuY3Rpb24oZyl7cmV0dXJuIGZSLmNhbGwodGhpcyxnLHRoaXMud2VlaygpLHRoaXMud2Vla2RheSgpLHRoaXMubG9jYWxlRGF0YSgpLl93ZWVrLmRvdyx0aGlzLmxvY2FsZURhdGEoKS5fd2Vlay5kb3kpfSxQLmlzb1dlZWtZZWFyPWZ1bmN0aW9uKGcpe3JldHVybiBmUi5jYWxsKHRoaXMsZyx0aGlzLmlzb1dlZWsoKSx0aGlzLmlzb1dlZWtkYXkoKSwxLDQpfSxQLnF1YXJ0ZXI9UC5xdWFydGVycz1mdW5jdGlvbihnKXtyZXR1cm4gZz09bnVsbD9NYXRoLmNlaWwoKHRoaXMubW9udGgoKSsxKS8zKTp0aGlzLm1vbnRoKDMqKGctMSkrdGhpcy5tb250aCgpJTMpfSxQLm1vbnRoPXNlLFAuZGF5c0luTW9udGg9ZnVuY3Rpb24oKXtyZXR1cm4geXQodGhpcy55ZWFyKCksdGhpcy5tb250aCgpKX0sUC53ZWVrPVAud2Vla3M9ZnVuY3Rpb24oZyl7dmFyIEU9dGhpcy5sb2NhbGVEYXRhKCkud2Vlayh0aGlzKTtyZXR1cm4gZz09bnVsbD9FOnRoaXMuYWRkKDcqKGctRSksImQiKX0sUC5pc29XZWVrPVAuaXNvV2Vla3M9ZnVuY3Rpb24oZyl7dmFyIEU9S2UodGhpcywxLDQpLndlZWs7cmV0dXJuIGc9PW51bGw/RTp0aGlzLmFkZCg3KihnLUUpLCJkIil9LFAud2Vla3NJblllYXI9ZnVuY3Rpb24oKXt2YXIgZz10aGlzLmxvY2FsZURhdGEoKS5fd2VlaztyZXR1cm4gd3IodGhpcy55ZWFyKCksZy5kb3csZy5kb3kpfSxQLndlZWtzSW5XZWVrWWVhcj1mdW5jdGlvbigpe3ZhciBnPXRoaXMubG9jYWxlRGF0YSgpLl93ZWVrO3JldHVybiB3cih0aGlzLndlZWtZZWFyKCksZy5kb3csZy5kb3kpfSxQLmlzb1dlZWtzSW5ZZWFyPWZ1bmN0aW9uKCl7cmV0dXJuIHdyKHRoaXMueWVhcigpLDEsNCl9LFAuaXNvV2Vla3NJbklTT1dlZWtZZWFyPWZ1bmN0aW9uKCl7cmV0dXJuIHdyKHRoaXMuaXNvV2Vla1llYXIoKSwxLDQpfSxQLmRhdGU9bHMsUC5kYXk9UC5kYXlzPWZ1bmN0aW9uKGcpe2lmKCF0aGlzLmlzVmFsaWQoKSlyZXR1cm4gZyE9bnVsbD90aGlzOk5hTjt2YXIgRSxJLE89dGhpcy5faXNVVEM/dGhpcy5fZC5nZXRVVENEYXkoKTp0aGlzLl9kLmdldERheSgpO3JldHVybiBnIT1udWxsPyhFPWcsST10aGlzLmxvY2FsZURhdGEoKSxnPXR5cGVvZiBFIT0ic3RyaW5nIj9FOmlzTmFOKEUpP3R5cGVvZihFPUkud2Vla2RheXNQYXJzZShFKSk9PSJudW1iZXIiP0U6bnVsbDpwYXJzZUludChFLDEwKSx0aGlzLmFkZChnLU8sImQiKSk6T30sUC53ZWVrZGF5PWZ1bmN0aW9uKGcpe2lmKCF0aGlzLmlzVmFsaWQoKSlyZXR1cm4gZyE9bnVsbD90aGlzOk5hTjt2YXIgRT0odGhpcy5kYXkoKSs3LXRoaXMubG9jYWxlRGF0YSgpLl93ZWVrLmRvdyklNztyZXR1cm4gZz09bnVsbD9FOnRoaXMuYWRkKGctRSwiZCIpfSxQLmlzb1dlZWtkYXk9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuaXNWYWxpZCgpP2chPW51bGw/KEU9ZyxJPXRoaXMubG9jYWxlRGF0YSgpLEk9dHlwZW9mIEU9PSJzdHJpbmciP0kud2Vla2RheXNQYXJzZShFKSU3fHw3OmlzTmFOKEUpP251bGw6RSx0aGlzLmRheSh0aGlzLmRheSgpJTc/STpJLTcpKTp0aGlzLmRheSgpfHw3OmchPW51bGw/dGhpczpOYU47dmFyIEUsSX0sUC5kYXlPZlllYXI9ZnVuY3Rpb24oZyl7dmFyIEU9TWF0aC5yb3VuZCgodGhpcy5jbG9uZSgpLnN0YXJ0T2YoImRheSIpLXRoaXMuY2xvbmUoKS5zdGFydE9mKCJ5ZWFyIikpLzg2NGU1KSsxO3JldHVybiBnPT1udWxsP0U6dGhpcy5hZGQoZy1FLCJkIil9LFAuaG91cj1QLmhvdXJzPVR0LFAubWludXRlPVAubWludXRlcz10byxQLnNlY29uZD1QLnNlY29uZHM9c3MsUC5taWxsaXNlY29uZD1QLm1pbGxpc2Vjb25kcz1vcyxQLnV0Y09mZnNldD1mdW5jdGlvbihnLEUsSSl7dmFyIE8sRz10aGlzLl9vZmZzZXR8fDA7aWYoIXRoaXMuaXNWYWxpZCgpKXJldHVybiBnIT1udWxsP3RoaXM6TmFOO2lmKGc9PW51bGwpcmV0dXJuIHRoaXMuX2lzVVRDP0c6Y18odGhpcyk7aWYodHlwZW9mIGc9PSJzdHJpbmciKXtpZigoZz1Rcyh2dCxnKSk9PT1udWxsKXJldHVybiB0aGlzfWVsc2UgTWF0aC5hYnMoZyk8MTYmJiFJJiYoZyo9NjApO3JldHVybiF0aGlzLl9pc1VUQyYmRSYmKE89Y18odGhpcykpLHRoaXMuX29mZnNldD1nLHRoaXMuX2lzVVRDPSEwLE8hPW51bGwmJnRoaXMuYWRkKE8sIm0iKSxHIT09ZyYmKCFFfHx0aGlzLl9jaGFuZ2VJblByb2dyZXNzP2FSKHRoaXMsdmkoZy1HLCJtIiksMSwhMSk6dGhpcy5fY2hhbmdlSW5Qcm9ncmVzc3x8KHRoaXMuX2NoYW5nZUluUHJvZ3Jlc3M9ITAsbi51cGRhdGVPZmZzZXQodGhpcywhMCksdGhpcy5fY2hhbmdlSW5Qcm9ncmVzcz1udWxsKSksdGhpc30sUC51dGM9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMudXRjT2Zmc2V0KDAsZyl9LFAubG9jYWw9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuX2lzVVRDJiYodGhpcy51dGNPZmZzZXQoMCxnKSx0aGlzLl9pc1VUQz0hMSxnJiZ0aGlzLnN1YnRyYWN0KGNfKHRoaXMpLCJtIikpLHRoaXN9LFAucGFyc2Vab25lPWZ1bmN0aW9uKCl7dmFyIGc7cmV0dXJuIHRoaXMuX3R6bSE9bnVsbD90aGlzLnV0Y09mZnNldCh0aGlzLl90em0sITEsITApOnR5cGVvZiB0aGlzLl9pPT0ic3RyaW5nIiYmKChnPVFzKG10LHRoaXMuX2kpKSE9bnVsbD90aGlzLnV0Y09mZnNldChnKTp0aGlzLnV0Y09mZnNldCgwLCEwKSksdGhpc30sUC5oYXNBbGlnbmVkSG91ck9mZnNldD1mdW5jdGlvbihnKXtyZXR1cm4hIXRoaXMuaXNWYWxpZCgpJiYoZz1nP0RlKGcpLnV0Y09mZnNldCgpOjAsKHRoaXMudXRjT2Zmc2V0KCktZyklNjA9PTApfSxQLmlzRFNUPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudXRjT2Zmc2V0KCk+dGhpcy5jbG9uZSgpLm1vbnRoKDApLnV0Y09mZnNldCgpfHx0aGlzLnV0Y09mZnNldCgpPnRoaXMuY2xvbmUoKS5tb250aCg1KS51dGNPZmZzZXQoKX0sUC5pc0xvY2FsPWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLmlzVmFsaWQoKSYmIXRoaXMuX2lzVVRDfSxQLmlzVXRjT2Zmc2V0PWZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLmlzVmFsaWQoKSYmdGhpcy5faXNVVEN9LFAuaXNVdGM9clIsUC5pc1VUQz1yUixQLnpvbmVBYmJyPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lzVVRDPyJVVEMiOiIifSxQLnpvbmVOYW1lPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lzVVRDPyJDb29yZGluYXRlZCBVbml2ZXJzYWwgVGltZSI6IiJ9LFAuZGF0ZXM9UigiZGF0ZXMgYWNjZXNzb3IgaXMgZGVwcmVjYXRlZC4gVXNlIGRhdGUgaW5zdGVhZC4iLGxzKSxQLm1vbnRocz1SKCJtb250aHMgYWNjZXNzb3IgaXMgZGVwcmVjYXRlZC4gVXNlIG1vbnRoIGluc3RlYWQiLHNlKSxQLnllYXJzPVIoInllYXJzIGFjY2Vzc29yIGlzIGRlcHJlY2F0ZWQuIFVzZSB5ZWFyIGluc3RlYWQiLE4wKSxQLnpvbmU9UigibW9tZW50KCkuem9uZSBpcyBkZXByZWNhdGVkLCB1c2UgbW9tZW50KCkudXRjT2Zmc2V0IGluc3RlYWQuIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3Mvem9uZS8iLGZ1bmN0aW9uKGcsRSl7cmV0dXJuIGchPW51bGw/KHRoaXMudXRjT2Zmc2V0KGc9dHlwZW9mIGchPSJzdHJpbmciPy1nOmcsRSksdGhpcyk6LXRoaXMudXRjT2Zmc2V0KCl9KSxQLmlzRFNUU2hpZnRlZD1SKCJpc0RTVFNoaWZ0ZWQgaXMgZGVwcmVjYXRlZC4gU2VlIGh0dHA6Ly9tb21lbnRqcy5jb20vZ3VpZGVzLyMvd2FybmluZ3MvZHN0LXNoaWZ0ZWQvIGZvciBtb3JlIGluZm9ybWF0aW9uIixmdW5jdGlvbigpe2lmKCFsKHRoaXMuX2lzRFNUU2hpZnRlZCkpcmV0dXJuIHRoaXMuX2lzRFNUU2hpZnRlZDt2YXIgZyxFPXt9O3JldHVybiBUKEUsdGhpcyksKEU9TTAoRSkpLl9hPyhnPShFLl9pc1VUQz9wOkRlKShFLl9hKSx0aGlzLl9pc0RTVFNoaWZ0ZWQ9dGhpcy5pc1ZhbGlkKCkmJjA8ZnVuY3Rpb24oSSxPLEcpe2Zvcih2YXIgaHQ9TWF0aC5taW4oSS5sZW5ndGgsTy5sZW5ndGgpLHh0PU1hdGguYWJzKEkubGVuZ3RoLU8ubGVuZ3RoKSxNdD0wLFZ0PTA7VnQ8aHQ7VnQrKykoRyYmSVtWdF0hPT1PW1Z0XXx8IUcmJnEoSVtWdF0pIT09cShPW1Z0XSkpJiZNdCsrO3JldHVybiBNdCt4dH0oRS5fYSxnLnRvQXJyYXkoKSkpOnRoaXMuX2lzRFNUU2hpZnRlZD0hMSx0aGlzLl9pc0RTVFNoaWZ0ZWR9KSxmZT13LnByb3RvdHlwZTtmdW5jdGlvbiBJMChnLEUsSSxodCl7dmFyIEc9Y2UoKSxodD1wKCkuc2V0KGh0LEUpO3JldHVybiBHW0ldKGh0LGcpfWZ1bmN0aW9uIHBSKGcsRSxJKXtpZih1KGcpJiYoRT1nLGc9dm9pZCAwKSxnPWd8fCIiLEUhPW51bGwpcmV0dXJuIEkwKGcsRSxJLCJtb250aCIpO2Zvcih2YXIgTz1bXSxHPTA7RzwxMjtHKyspT1tHXT1JMChnLEcsSSwibW9udGgiKTtyZXR1cm4gT31mdW5jdGlvbiBmXyhnLEUsSSxPKXtFPSh0eXBlb2YgZz09ImJvb2xlYW4iP3UoRSkmJihJPUUsRT12b2lkIDApOihFPWcsZz0hMSx1KEk9RSkmJihJPUUsRT12b2lkIDApKSxFfHwiIik7dmFyIEcsaHQ9Y2UoKSx4dD1nP2h0Ll93ZWVrLmRvdzowLE10PVtdO2lmKEkhPW51bGwpcmV0dXJuIEkwKEUsKEkreHQpJTcsTywiZGF5Iik7Zm9yKEc9MDtHPDc7RysrKU10W0ddPUkwKEUsKEcreHQpJTcsTywiZGF5Iik7cmV0dXJuIE10fWZlLmNhbGVuZGFyPWZ1bmN0aW9uKGcsRSxJKXtyZXR1cm4gdihnPXRoaXMuX2NhbGVuZGFyW2ddfHx0aGlzLl9jYWxlbmRhci5zYW1lRWxzZSk/Zy5jYWxsKEUsSSk6Z30sZmUubG9uZ0RhdGVGb3JtYXQ9ZnVuY3Rpb24oZyl7dmFyIEU9dGhpcy5fbG9uZ0RhdGVGb3JtYXRbZ10sST10aGlzLl9sb25nRGF0ZUZvcm1hdFtnLnRvVXBwZXJDYXNlKCldO3JldHVybiBFfHwhST9FOih0aGlzLl9sb25nRGF0ZUZvcm1hdFtnXT1JLm1hdGNoKHopLm1hcChmdW5jdGlvbihPKXtyZXR1cm4gTz09PSJNTU1NInx8Tz09PSJNTSJ8fE89PT0iREQifHxPPT09ImRkZGQiP08uc2xpY2UoMSk6T30pLmpvaW4oIiIpLHRoaXMuX2xvbmdEYXRlRm9ybWF0W2ddKX0sZmUuaW52YWxpZERhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faW52YWxpZERhdGV9LGZlLm9yZGluYWw9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuX29yZGluYWwucmVwbGFjZSgiJWQiLGcpfSxmZS5wcmVwYXJzZT1kUixmZS5wb3N0Zm9ybWF0PWRSLGZlLnJlbGF0aXZlVGltZT1mdW5jdGlvbihnLEUsSSxPKXt2YXIgRz10aGlzLl9yZWxhdGl2ZVRpbWVbSV07cmV0dXJuIHYoRyk/RyhnLEUsSSxPKTpHLnJlcGxhY2UoLyVkL2ksZyl9LGZlLnBhc3RGdXR1cmU9ZnVuY3Rpb24oZyxFKXtyZXR1cm4gdihnPXRoaXMuX3JlbGF0aXZlVGltZVswPGc/ImZ1dHVyZSI6InBhc3QiXSk/ZyhFKTpnLnJlcGxhY2UoLyVzL2ksRSl9LGZlLnNldD1mdW5jdGlvbihnKXt2YXIgRSxJO2ZvcihJIGluIGcpcyhnLEkpJiYodihFPWdbSV0pP3RoaXNbSV09RTp0aGlzWyJfIitJXT1FKTt0aGlzLl9jb25maWc9Zyx0aGlzLl9kYXlPZk1vbnRoT3JkaW5hbFBhcnNlTGVuaWVudD1uZXcgUmVnRXhwKCh0aGlzLl9kYXlPZk1vbnRoT3JkaW5hbFBhcnNlLnNvdXJjZXx8dGhpcy5fb3JkaW5hbFBhcnNlLnNvdXJjZSkrInwiKy9cZHsxLDJ9Ly5zb3VyY2UpfSxmZS5lcmFzPWZ1bmN0aW9uKGcsRSl7Zm9yKHZhciBJLE89dGhpcy5fZXJhc3x8Y2UoImVuIikuX2VyYXMsRz0wLGh0PU8ubGVuZ3RoO0c8aHQ7KytHKXtzd2l0Y2godHlwZW9mIE9bR10uc2luY2Upe2Nhc2Uic3RyaW5nIjpJPW4oT1tHXS5zaW5jZSkuc3RhcnRPZigiZGF5IiksT1tHXS5zaW5jZT1JLnZhbHVlT2YoKTticmVha31zd2l0Y2godHlwZW9mIE9bR10udW50aWwpe2Nhc2UidW5kZWZpbmVkIjpPW0ddLnVudGlsPTEvMDticmVhaztjYXNlInN0cmluZyI6ST1uKE9bR10udW50aWwpLnN0YXJ0T2YoImRheSIpLnZhbHVlT2YoKSxPW0ddLnVudGlsPUkudmFsdWVPZigpO2JyZWFrfX1yZXR1cm4gT30sZmUuZXJhc1BhcnNlPWZ1bmN0aW9uKGcsRSxJKXt2YXIgTyxHLGh0LHh0LE10LFZ0PXRoaXMuZXJhcygpO2ZvcihnPWcudG9VcHBlckNhc2UoKSxPPTAsRz1WdC5sZW5ndGg7TzxHOysrTylpZihodD1WdFtPXS5uYW1lLnRvVXBwZXJDYXNlKCkseHQ9VnRbT10uYWJici50b1VwcGVyQ2FzZSgpLE10PVZ0W09dLm5hcnJvdy50b1VwcGVyQ2FzZSgpLEkpc3dpdGNoKEUpe2Nhc2UiTiI6Y2FzZSJOTiI6Y2FzZSJOTk4iOmlmKHh0PT09ZylyZXR1cm4gVnRbT107YnJlYWs7Y2FzZSJOTk5OIjppZihodD09PWcpcmV0dXJuIFZ0W09dO2JyZWFrO2Nhc2UiTk5OTk4iOmlmKE10PT09ZylyZXR1cm4gVnRbT107YnJlYWt9ZWxzZSBpZigwPD1baHQseHQsTXRdLmluZGV4T2YoZykpcmV0dXJuIFZ0W09dfSxmZS5lcmFzQ29udmVydFllYXI9ZnVuY3Rpb24oZyxFKXt2YXIgST1nLnNpbmNlPD1nLnVudGlsPzE6LTE7cmV0dXJuIEU9PT12b2lkIDA/bihnLnNpbmNlKS55ZWFyKCk6bihnLnNpbmNlKS55ZWFyKCkrKEUtZy5vZmZzZXQpKkl9LGZlLmVyYXNBYmJyUmVnZXg9ZnVuY3Rpb24oZyl7cmV0dXJuIHModGhpcywiX2VyYXNBYmJyUmVnZXgiKXx8aF8uY2FsbCh0aGlzKSxnP3RoaXMuX2VyYXNBYmJyUmVnZXg6dGhpcy5fZXJhc1JlZ2V4fSxmZS5lcmFzTmFtZVJlZ2V4PWZ1bmN0aW9uKGcpe3JldHVybiBzKHRoaXMsIl9lcmFzTmFtZVJlZ2V4Iil8fGhfLmNhbGwodGhpcyksZz90aGlzLl9lcmFzTmFtZVJlZ2V4OnRoaXMuX2VyYXNSZWdleH0sZmUuZXJhc05hcnJvd1JlZ2V4PWZ1bmN0aW9uKGcpe3JldHVybiBzKHRoaXMsIl9lcmFzTmFycm93UmVnZXgiKXx8aF8uY2FsbCh0aGlzKSxnP3RoaXMuX2VyYXNOYXJyb3dSZWdleDp0aGlzLl9lcmFzUmVnZXh9LGZlLm1vbnRocz1mdW5jdGlvbihnLEUpe3JldHVybiBnPyhpKHRoaXMuX21vbnRocyk/dGhpcy5fbW9udGhzOnRoaXMuX21vbnRoc1sodGhpcy5fbW9udGhzLmlzRm9ybWF0fHx5ZSkudGVzdChFKT8iZm9ybWF0Ijoic3RhbmRhbG9uZSJdKVtnLm1vbnRoKCldOmkodGhpcy5fbW9udGhzKT90aGlzLl9tb250aHM6dGhpcy5fbW9udGhzLnN0YW5kYWxvbmV9LGZlLm1vbnRoc1Nob3J0PWZ1bmN0aW9uKGcsRSl7cmV0dXJuIGc/KGkodGhpcy5fbW9udGhzU2hvcnQpP3RoaXMuX21vbnRoc1Nob3J0OnRoaXMuX21vbnRoc1Nob3J0W3llLnRlc3QoRSk/ImZvcm1hdCI6InN0YW5kYWxvbmUiXSlbZy5tb250aCgpXTppKHRoaXMuX21vbnRoc1Nob3J0KT90aGlzLl9tb250aHNTaG9ydDp0aGlzLl9tb250aHNTaG9ydC5zdGFuZGFsb25lfSxmZS5tb250aHNQYXJzZT1mdW5jdGlvbihnLEUsSSl7dmFyIE8sRztpZih0aGlzLl9tb250aHNQYXJzZUV4YWN0KXJldHVybiBmdW5jdGlvbihpZSx4dCxNdCl7dmFyIFZ0LE90LGRlLGllPWllLnRvTG9jYWxlTG93ZXJDYXNlKCk7aWYoIXRoaXMuX21vbnRoc1BhcnNlKWZvcih0aGlzLl9tb250aHNQYXJzZT1bXSx0aGlzLl9sb25nTW9udGhzUGFyc2U9W10sdGhpcy5fc2hvcnRNb250aHNQYXJzZT1bXSxWdD0wO1Z0PDEyOysrVnQpZGU9cChbMmUzLFZ0XSksdGhpcy5fc2hvcnRNb250aHNQYXJzZVtWdF09dGhpcy5tb250aHNTaG9ydChkZSwiIikudG9Mb2NhbGVMb3dlckNhc2UoKSx0aGlzLl9sb25nTW9udGhzUGFyc2VbVnRdPXRoaXMubW9udGhzKGRlLCIiKS50b0xvY2FsZUxvd2VyQ2FzZSgpO3JldHVybiBNdD94dD09PSJNTU0iPyhPdD1qdC5jYWxsKHRoaXMuX3Nob3J0TW9udGhzUGFyc2UsaWUpKSE9PS0xP090Om51bGw6KE90PWp0LmNhbGwodGhpcy5fbG9uZ01vbnRoc1BhcnNlLGllKSkhPT0tMT9PdDpudWxsOnh0PT09Ik1NTSI/KE90PWp0LmNhbGwodGhpcy5fc2hvcnRNb250aHNQYXJzZSxpZSkpIT09LTF8fChPdD1qdC5jYWxsKHRoaXMuX2xvbmdNb250aHNQYXJzZSxpZSkpIT09LTE/T3Q6bnVsbDooT3Q9anQuY2FsbCh0aGlzLl9sb25nTW9udGhzUGFyc2UsaWUpKSE9PS0xfHwoT3Q9anQuY2FsbCh0aGlzLl9zaG9ydE1vbnRoc1BhcnNlLGllKSkhPT0tMT9PdDpudWxsfS5jYWxsKHRoaXMsZyxFLEkpO2Zvcih0aGlzLl9tb250aHNQYXJzZXx8KHRoaXMuX21vbnRoc1BhcnNlPVtdLHRoaXMuX2xvbmdNb250aHNQYXJzZT1bXSx0aGlzLl9zaG9ydE1vbnRoc1BhcnNlPVtdKSxPPTA7TzwxMjtPKyspaWYoRz1wKFsyZTMsT10pLEkmJiF0aGlzLl9sb25nTW9udGhzUGFyc2VbT10mJih0aGlzLl9sb25nTW9udGhzUGFyc2VbT109bmV3IFJlZ0V4cCgiXiIrdGhpcy5tb250aHMoRywiIikucmVwbGFjZSgiLiIsIiIpKyIkIiwiaSIpLHRoaXMuX3Nob3J0TW9udGhzUGFyc2VbT109bmV3IFJlZ0V4cCgiXiIrdGhpcy5tb250aHNTaG9ydChHLCIiKS5yZXBsYWNlKCIuIiwiIikrIiQiLCJpIikpLEl8fHRoaXMuX21vbnRoc1BhcnNlW09dfHwoRz0iXiIrdGhpcy5tb250aHMoRywiIikrInxeIit0aGlzLm1vbnRoc1Nob3J0KEcsIiIpLHRoaXMuX21vbnRoc1BhcnNlW09dPW5ldyBSZWdFeHAoRy5yZXBsYWNlKCIuIiwiIiksImkiKSksSSYmRT09PSJNTU1NIiYmdGhpcy5fbG9uZ01vbnRoc1BhcnNlW09dLnRlc3QoZyl8fEkmJkU9PT0iTU1NIiYmdGhpcy5fc2hvcnRNb250aHNQYXJzZVtPXS50ZXN0KGcpfHwhSSYmdGhpcy5fbW9udGhzUGFyc2VbT10udGVzdChnKSlyZXR1cm4gT30sZmUubW9udGhzUmVnZXg9ZnVuY3Rpb24oZyl7cmV0dXJuIHRoaXMuX21vbnRoc1BhcnNlRXhhY3Q/KHModGhpcywiX21vbnRoc1JlZ2V4Iil8fG1lLmNhbGwodGhpcyksZz90aGlzLl9tb250aHNTdHJpY3RSZWdleDp0aGlzLl9tb250aHNSZWdleCk6KHModGhpcywiX21vbnRoc1JlZ2V4Iil8fCh0aGlzLl9tb250aHNSZWdleD1UZSksdGhpcy5fbW9udGhzU3RyaWN0UmVnZXgmJmc/dGhpcy5fbW9udGhzU3RyaWN0UmVnZXg6dGhpcy5fbW9udGhzUmVnZXgpfSxmZS5tb250aHNTaG9ydFJlZ2V4PWZ1bmN0aW9uKGcpe3JldHVybiB0aGlzLl9tb250aHNQYXJzZUV4YWN0PyhzKHRoaXMsIl9tb250aHNSZWdleCIpfHxtZS5jYWxsKHRoaXMpLGc/dGhpcy5fbW9udGhzU2hvcnRTdHJpY3RSZWdleDp0aGlzLl9tb250aHNTaG9ydFJlZ2V4KToocyh0aGlzLCJfbW9udGhzU2hvcnRSZWdleCIpfHwodGhpcy5fbW9udGhzU2hvcnRSZWdleD1iZSksdGhpcy5fbW9udGhzU2hvcnRTdHJpY3RSZWdleCYmZz90aGlzLl9tb250aHNTaG9ydFN0cmljdFJlZ2V4OnRoaXMuX21vbnRoc1Nob3J0UmVnZXgpfSxmZS53ZWVrPWZ1bmN0aW9uKGcpe3JldHVybiBLZShnLHRoaXMuX3dlZWsuZG93LHRoaXMuX3dlZWsuZG95KS53ZWVrfSxmZS5maXJzdERheU9mWWVhcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLl93ZWVrLmRveX0sZmUuZmlyc3REYXlPZldlZWs9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fd2Vlay5kb3d9LGZlLndlZWtkYXlzPWZ1bmN0aW9uKGcsRSl7cmV0dXJuIEU9aSh0aGlzLl93ZWVrZGF5cyk/dGhpcy5fd2Vla2RheXM6dGhpcy5fd2Vla2RheXNbZyYmZyE9PSEwJiZ0aGlzLl93ZWVrZGF5cy5pc0Zvcm1hdC50ZXN0KEUpPyJmb3JtYXQiOiJzdGFuZGFsb25lIl0sZz09PSEwP0dlKEUsdGhpcy5fd2Vlay5kb3cpOmc/RVtnLmRheSgpXTpFfSxmZS53ZWVrZGF5c01pbj1mdW5jdGlvbihnKXtyZXR1cm4gZz09PSEwP0dlKHRoaXMuX3dlZWtkYXlzTWluLHRoaXMuX3dlZWsuZG93KTpnP3RoaXMuX3dlZWtkYXlzTWluW2cuZGF5KCldOnRoaXMuX3dlZWtkYXlzTWlufSxmZS53ZWVrZGF5c1Nob3J0PWZ1bmN0aW9uKGcpe3JldHVybiBnPT09ITA/R2UodGhpcy5fd2Vla2RheXNTaG9ydCx0aGlzLl93ZWVrLmRvdyk6Zz90aGlzLl93ZWVrZGF5c1Nob3J0W2cuZGF5KCldOnRoaXMuX3dlZWtkYXlzU2hvcnR9LGZlLndlZWtkYXlzUGFyc2U9ZnVuY3Rpb24oZyxFLEkpe3ZhciBPLEc7aWYodGhpcy5fd2Vla2RheXNQYXJzZUV4YWN0KXJldHVybiBmdW5jdGlvbihpZSx4dCxNdCl7dmFyIFZ0LE90LGRlLGllPWllLnRvTG9jYWxlTG93ZXJDYXNlKCk7aWYoIXRoaXMuX3dlZWtkYXlzUGFyc2UpZm9yKHRoaXMuX3dlZWtkYXlzUGFyc2U9W10sdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlPVtdLHRoaXMuX21pbldlZWtkYXlzUGFyc2U9W10sVnQ9MDtWdDw3OysrVnQpZGU9cChbMmUzLDFdKS5kYXkoVnQpLHRoaXMuX21pbldlZWtkYXlzUGFyc2VbVnRdPXRoaXMud2Vla2RheXNNaW4oZGUsIiIpLnRvTG9jYWxlTG93ZXJDYXNlKCksdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlW1Z0XT10aGlzLndlZWtkYXlzU2hvcnQoZGUsIiIpLnRvTG9jYWxlTG93ZXJDYXNlKCksdGhpcy5fd2Vla2RheXNQYXJzZVtWdF09dGhpcy53ZWVrZGF5cyhkZSwiIikudG9Mb2NhbGVMb3dlckNhc2UoKTtyZXR1cm4gTXQ/eHQ9PT0iZGRkZCI/KE90PWp0LmNhbGwodGhpcy5fd2Vla2RheXNQYXJzZSxpZSkpIT09LTE/T3Q6bnVsbDp4dD09PSJkZGQiPyhPdD1qdC5jYWxsKHRoaXMuX3Nob3J0V2Vla2RheXNQYXJzZSxpZSkpIT09LTE/T3Q6bnVsbDooT3Q9anQuY2FsbCh0aGlzLl9taW5XZWVrZGF5c1BhcnNlLGllKSkhPT0tMT9PdDpudWxsOnh0PT09ImRkZGQiPyhPdD1qdC5jYWxsKHRoaXMuX3dlZWtkYXlzUGFyc2UsaWUpKSE9PS0xfHwoT3Q9anQuY2FsbCh0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2UsaWUpKSE9PS0xfHwoT3Q9anQuY2FsbCh0aGlzLl9taW5XZWVrZGF5c1BhcnNlLGllKSkhPT0tMT9PdDpudWxsOnh0PT09ImRkZCI/KE90PWp0LmNhbGwodGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlLGllKSkhPT0tMXx8KE90PWp0LmNhbGwodGhpcy5fd2Vla2RheXNQYXJzZSxpZSkpIT09LTF8fChPdD1qdC5jYWxsKHRoaXMuX21pbldlZWtkYXlzUGFyc2UsaWUpKSE9PS0xP090Om51bGw6KE90PWp0LmNhbGwodGhpcy5fbWluV2Vla2RheXNQYXJzZSxpZSkpIT09LTF8fChPdD1qdC5jYWxsKHRoaXMuX3dlZWtkYXlzUGFyc2UsaWUpKSE9PS0xfHwoT3Q9anQuY2FsbCh0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2UsaWUpKSE9PS0xP090Om51bGx9LmNhbGwodGhpcyxnLEUsSSk7Zm9yKHRoaXMuX3dlZWtkYXlzUGFyc2V8fCh0aGlzLl93ZWVrZGF5c1BhcnNlPVtdLHRoaXMuX21pbldlZWtkYXlzUGFyc2U9W10sdGhpcy5fc2hvcnRXZWVrZGF5c1BhcnNlPVtdLHRoaXMuX2Z1bGxXZWVrZGF5c1BhcnNlPVtdKSxPPTA7Tzw3O08rKylpZihHPXAoWzJlMywxXSkuZGF5KE8pLEkmJiF0aGlzLl9mdWxsV2Vla2RheXNQYXJzZVtPXSYmKHRoaXMuX2Z1bGxXZWVrZGF5c1BhcnNlW09dPW5ldyBSZWdFeHAoIl4iK3RoaXMud2Vla2RheXMoRywiIikucmVwbGFjZSgiLiIsIlxcLj8iKSsiJCIsImkiKSx0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2VbT109bmV3IFJlZ0V4cCgiXiIrdGhpcy53ZWVrZGF5c1Nob3J0KEcsIiIpLnJlcGxhY2UoIi4iLCJcXC4/IikrIiQiLCJpIiksdGhpcy5fbWluV2Vla2RheXNQYXJzZVtPXT1uZXcgUmVnRXhwKCJeIit0aGlzLndlZWtkYXlzTWluKEcsIiIpLnJlcGxhY2UoIi4iLCJcXC4/IikrIiQiLCJpIikpLHRoaXMuX3dlZWtkYXlzUGFyc2VbT118fChHPSJeIit0aGlzLndlZWtkYXlzKEcsIiIpKyJ8XiIrdGhpcy53ZWVrZGF5c1Nob3J0KEcsIiIpKyJ8XiIrdGhpcy53ZWVrZGF5c01pbihHLCIiKSx0aGlzLl93ZWVrZGF5c1BhcnNlW09dPW5ldyBSZWdFeHAoRy5yZXBsYWNlKCIuIiwiIiksImkiKSksSSYmRT09PSJkZGRkIiYmdGhpcy5fZnVsbFdlZWtkYXlzUGFyc2VbT10udGVzdChnKXx8SSYmRT09PSJkZGQiJiZ0aGlzLl9zaG9ydFdlZWtkYXlzUGFyc2VbT10udGVzdChnKXx8SSYmRT09PSJkZCImJnRoaXMuX21pbldlZWtkYXlzUGFyc2VbT10udGVzdChnKXx8IUkmJnRoaXMuX3dlZWtkYXlzUGFyc2VbT10udGVzdChnKSlyZXR1cm4gT30sZmUud2Vla2RheXNSZWdleD1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5fd2Vla2RheXNQYXJzZUV4YWN0PyhzKHRoaXMsIl93ZWVrZGF5c1JlZ2V4Iil8fHplLmNhbGwodGhpcyksZz90aGlzLl93ZWVrZGF5c1N0cmljdFJlZ2V4OnRoaXMuX3dlZWtkYXlzUmVnZXgpOihzKHRoaXMsIl93ZWVrZGF5c1JlZ2V4Iil8fCh0aGlzLl93ZWVrZGF5c1JlZ2V4PUF0KSx0aGlzLl93ZWVrZGF5c1N0cmljdFJlZ2V4JiZnP3RoaXMuX3dlZWtkYXlzU3RyaWN0UmVnZXg6dGhpcy5fd2Vla2RheXNSZWdleCl9LGZlLndlZWtkYXlzU2hvcnRSZWdleD1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5fd2Vla2RheXNQYXJzZUV4YWN0PyhzKHRoaXMsIl93ZWVrZGF5c1JlZ2V4Iil8fHplLmNhbGwodGhpcyksZz90aGlzLl93ZWVrZGF5c1Nob3J0U3RyaWN0UmVnZXg6dGhpcy5fd2Vla2RheXNTaG9ydFJlZ2V4KToocyh0aGlzLCJfd2Vla2RheXNTaG9ydFJlZ2V4Iil8fCh0aGlzLl93ZWVrZGF5c1Nob3J0UmVnZXg9TnQpLHRoaXMuX3dlZWtkYXlzU2hvcnRTdHJpY3RSZWdleCYmZz90aGlzLl93ZWVrZGF5c1Nob3J0U3RyaWN0UmVnZXg6dGhpcy5fd2Vla2RheXNTaG9ydFJlZ2V4KX0sZmUud2Vla2RheXNNaW5SZWdleD1mdW5jdGlvbihnKXtyZXR1cm4gdGhpcy5fd2Vla2RheXNQYXJzZUV4YWN0PyhzKHRoaXMsIl93ZWVrZGF5c1JlZ2V4Iil8fHplLmNhbGwodGhpcyksZz90aGlzLl93ZWVrZGF5c01pblN0cmljdFJlZ2V4OnRoaXMuX3dlZWtkYXlzTWluUmVnZXgpOihzKHRoaXMsIl93ZWVrZGF5c01pblJlZ2V4Iil8fCh0aGlzLl93ZWVrZGF5c01pblJlZ2V4PUp0KSx0aGlzLl93ZWVrZGF5c01pblN0cmljdFJlZ2V4JiZnP3RoaXMuX3dlZWtkYXlzTWluU3RyaWN0UmVnZXg6dGhpcy5fd2Vla2RheXNNaW5SZWdleCl9LGZlLmlzUE09ZnVuY3Rpb24oZyl7cmV0dXJuKGcrIiIpLnRvTG93ZXJDYXNlKCkuY2hhckF0KDApPT09InAifSxmZS5tZXJpZGllbT1mdW5jdGlvbihnLEUsSSl7cmV0dXJuIDExPGc/ST8icG0iOiJQTSI6ST8iYW0iOiJBTSJ9LFh0KCJlbiIse2VyYXM6W3tzaW5jZToiMDAwMS0wMS0wMSIsdW50aWw6MS8wLG9mZnNldDoxLG5hbWU6IkFubm8gRG9taW5pIixuYXJyb3c6IkFEIixhYmJyOiJBRCJ9LHtzaW5jZToiMDAwMC0xMi0zMSIsdW50aWw6LTEvMCxvZmZzZXQ6MSxuYW1lOiJCZWZvcmUgQ2hyaXN0IixuYXJyb3c6IkJDIixhYmJyOiJCQyJ9XSxkYXlPZk1vbnRoT3JkaW5hbFBhcnNlOi9cZHsxLDJ9KHRofHN0fG5kfHJkKS8sb3JkaW5hbDpmdW5jdGlvbihnKXt2YXIgRT1nJTEwO3JldHVybiBnKyhxKGclMTAwLzEwKT09PTE/InRoIjpFPT0xPyJzdCI6RT09Mj8ibmQiOkU9PTM/InJkIjoidGgiKX19KSxuLmxhbmc9UigibW9tZW50LmxhbmcgaXMgZGVwcmVjYXRlZC4gVXNlIG1vbWVudC5sb2NhbGUgaW5zdGVhZC4iLFh0KSxuLmxhbmdEYXRhPVIoIm1vbWVudC5sYW5nRGF0YSBpcyBkZXByZWNhdGVkLiBVc2UgbW9tZW50LmxvY2FsZURhdGEgaW5zdGVhZC4iLGNlKTt2YXIgd2E9TWF0aC5hYnM7ZnVuY3Rpb24gZ1IoZyxFLEksTyl7cmV0dXJuIEU9dmkoRSxJKSxnLl9taWxsaXNlY29uZHMrPU8qRS5fbWlsbGlzZWNvbmRzLGcuX2RheXMrPU8qRS5fZGF5cyxnLl9tb250aHMrPU8qRS5fbW9udGhzLGcuX2J1YmJsZSgpfWZ1bmN0aW9uIHlSKGcpe3JldHVybiBnPDA/TWF0aC5mbG9vcihnKTpNYXRoLmNlaWwoZyl9ZnVuY3Rpb24gbVIoZyl7cmV0dXJuIDQ4MDAqZy8xNDYwOTd9ZnVuY3Rpb24gZF8oZyl7cmV0dXJuIDE0NjA5NypnLzQ4MDB9ZnVuY3Rpb24gVGEoZyl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXMoZyl9fVJ0PVRhKCJtcyIpLGV0PVRhKCJzIiksbmU9VGEoIm0iKSxMdD1UYSgiaCIpLEl0PVRhKCJkIiksWmU9VGEoInciKSxUdD1UYSgiTSIpLHRvPVRhKCJRIiksc3M9VGEoInkiKTtmdW5jdGlvbiBlbyhnKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc1ZhbGlkKCk/dGhpcy5fZGF0YVtnXTpOYU59fXZhciBvcz1lbygibWlsbGlzZWNvbmRzIiksbHM9ZW8oInNlY29uZHMiKSxOMD1lbygibWludXRlcyIpLGZlPWVvKCJob3VycyIpLElzdD1lbygiZGF5cyIpLE5zdD1lbygibW9udGhzIiksQnN0PWVvKCJ5ZWFycyIpLEVhPU1hdGgucm91bmQsYmw9e3NzOjQ0LHM6NDUsbTo0NSxoOjIyLGQ6MjYsdzpudWxsLE06MTF9O2Z1bmN0aW9uIERzdChnLEUsSSxPKXt2YXIgT3Q9dmkoZykuYWJzKCksZGU9RWEoT3QuYXMoInMiKSksRz1FYShPdC5hcygibSIpKSxodD1FYShPdC5hcygiaCIpKSx4dD1FYShPdC5hcygiZCIpKSxNdD1FYShPdC5hcygiTSIpKSxWdD1FYShPdC5hcygidyIpKSxPdD1FYShPdC5hcygieSIpKSxkZT0oZGU8PUkuc3M/WyJzIixkZV06ZGU8SS5zJiZbInNzIixkZV0pfHxHPD0xJiZbIm0iXXx8RzxJLm0mJlsibW0iLEddfHxodDw9MSYmWyJoIl18fGh0PEkuaCYmWyJoaCIsaHRdfHx4dDw9MSYmWyJkIl18fHh0PEkuZCYmWyJkZCIseHRdO3JldHVybihkZT0oZGU9SS53IT1udWxsP2RlfHxWdDw9MSYmWyJ3Il18fFZ0PEkudyYmWyJ3dyIsVnRdOmRlKXx8TXQ8PTEmJlsiTSJdfHxNdDxJLk0mJlsiTU0iLE10XXx8T3Q8PTEmJlsieSJdfHxbInl5IixPdF0pWzJdPUUsZGVbM109MDwrZyxkZVs0XT1PLGZ1bmN0aW9uKGllLGVyLGJyLHhpLGdfKXtyZXR1cm4gZ18ucmVsYXRpdmVUaW1lKGVyfHwxLCEhYnIsaWUseGkpfS5hcHBseShudWxsLGRlKX12YXIgcF89TWF0aC5hYnM7ZnVuY3Rpb24gX2woZyl7cmV0dXJuKDA8ZyktKGc8MCl8fCtnfWZ1bmN0aW9uIEIwKCl7aWYoIXRoaXMuaXNWYWxpZCgpKXJldHVybiB0aGlzLmxvY2FsZURhdGEoKS5pbnZhbGlkRGF0ZSgpO3ZhciBnLEUsSSxPLEcsaHQseHQsTXQ9cF8odGhpcy5fbWlsbGlzZWNvbmRzKS8xZTMsVnQ9cF8odGhpcy5fZGF5cyksT3Q9cF8odGhpcy5fbW9udGhzKSxkZT10aGlzLmFzU2Vjb25kcygpO3JldHVybiBkZT8oZz1RKE10LzYwKSxFPVEoZy82MCksTXQlPTYwLGclPTYwLEk9UShPdC8xMiksT3QlPTEyLE89TXQ/TXQudG9GaXhlZCgzKS5yZXBsYWNlKC9cLj8wKyQvLCIiKToiIixHPV9sKHRoaXMuX21vbnRocykhPT1fbChkZSk/Ii0iOiIiLGh0PV9sKHRoaXMuX2RheXMpIT09X2woZGUpPyItIjoiIix4dD1fbCh0aGlzLl9taWxsaXNlY29uZHMpIT09X2woZGUpPyItIjoiIiwoZGU8MD8iLSI6IiIpKyJQIisoST9HK0krIlkiOiIiKSsoT3Q/RytPdCsiTSI6IiIpKyhWdD9odCtWdCsiRCI6IiIpKyhFfHxnfHxNdD8iVCI6IiIpKyhFP3h0K0UrIkgiOiIiKSsoZz94dCtnKyJNIjoiIikrKE10P3h0K08rIlMiOiIiKSk6IlAwRCJ9dmFyIEJlPV9pLnByb3RvdHlwZTtyZXR1cm4gQmUuaXNWYWxpZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9pc1ZhbGlkfSxCZS5hYnM9ZnVuY3Rpb24oKXt2YXIgZz10aGlzLl9kYXRhO3JldHVybiB0aGlzLl9taWxsaXNlY29uZHM9d2EodGhpcy5fbWlsbGlzZWNvbmRzKSx0aGlzLl9kYXlzPXdhKHRoaXMuX2RheXMpLHRoaXMuX21vbnRocz13YSh0aGlzLl9tb250aHMpLGcubWlsbGlzZWNvbmRzPXdhKGcubWlsbGlzZWNvbmRzKSxnLnNlY29uZHM9d2EoZy5zZWNvbmRzKSxnLm1pbnV0ZXM9d2EoZy5taW51dGVzKSxnLmhvdXJzPXdhKGcuaG91cnMpLGcubW9udGhzPXdhKGcubW9udGhzKSxnLnllYXJzPXdhKGcueWVhcnMpLHRoaXN9LEJlLmFkZD1mdW5jdGlvbihnLEUpe3JldHVybiBnUih0aGlzLGcsRSwxKX0sQmUuc3VidHJhY3Q9ZnVuY3Rpb24oZyxFKXtyZXR1cm4gZ1IodGhpcyxnLEUsLTEpfSxCZS5hcz1mdW5jdGlvbihnKXtpZighdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIE5hTjt2YXIgRSxJLE89dGhpcy5fbWlsbGlzZWNvbmRzO2lmKChnPXR0KGcpKT09PSJtb250aCJ8fGc9PT0icXVhcnRlciJ8fGc9PT0ieWVhciIpc3dpdGNoKEU9dGhpcy5fZGF5cytPLzg2NGU1LEk9dGhpcy5fbW9udGhzK21SKEUpLGcpe2Nhc2UibW9udGgiOnJldHVybiBJO2Nhc2UicXVhcnRlciI6cmV0dXJuIEkvMztjYXNlInllYXIiOnJldHVybiBJLzEyfWVsc2Ugc3dpdGNoKEU9dGhpcy5fZGF5cytNYXRoLnJvdW5kKGRfKHRoaXMuX21vbnRocykpLGcpe2Nhc2Uid2VlayI6cmV0dXJuIEUvNytPLzYwNDhlNTtjYXNlImRheSI6cmV0dXJuIEUrTy84NjRlNTtjYXNlImhvdXIiOnJldHVybiAyNCpFK08vMzZlNTtjYXNlIm1pbnV0ZSI6cmV0dXJuIDE0NDAqRStPLzZlNDtjYXNlInNlY29uZCI6cmV0dXJuIDg2NDAwKkUrTy8xZTM7Y2FzZSJtaWxsaXNlY29uZCI6cmV0dXJuIE1hdGguZmxvb3IoODY0ZTUqRSkrTztkZWZhdWx0OnRocm93IG5ldyBFcnJvcigiVW5rbm93biB1bml0ICIrZyl9fSxCZS5hc01pbGxpc2Vjb25kcz1SdCxCZS5hc1NlY29uZHM9ZXQsQmUuYXNNaW51dGVzPW5lLEJlLmFzSG91cnM9THQsQmUuYXNEYXlzPUl0LEJlLmFzV2Vla3M9WmUsQmUuYXNNb250aHM9VHQsQmUuYXNRdWFydGVycz10byxCZS5hc1llYXJzPXNzLEJlLnZhbHVlT2Y9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc1ZhbGlkKCk/dGhpcy5fbWlsbGlzZWNvbmRzKzg2NGU1KnRoaXMuX2RheXMrdGhpcy5fbW9udGhzJTEyKjI1OTJlNiszMTUzNmU2KnEodGhpcy5fbW9udGhzLzEyKTpOYU59LEJlLl9idWJibGU9ZnVuY3Rpb24oKXt2YXIgZz10aGlzLl9taWxsaXNlY29uZHMsRT10aGlzLl9kYXlzLEk9dGhpcy5fbW9udGhzLE89dGhpcy5fZGF0YTtyZXR1cm4gMDw9ZyYmMDw9RSYmMDw9SXx8Zzw9MCYmRTw9MCYmSTw9MHx8KGcrPTg2NGU1KnlSKGRfKEkpK0UpLEk9RT0wKSxPLm1pbGxpc2Vjb25kcz1nJTFlMyxnPVEoZy8xZTMpLE8uc2Vjb25kcz1nJTYwLGc9UShnLzYwKSxPLm1pbnV0ZXM9ZyU2MCxnPVEoZy82MCksTy5ob3Vycz1nJTI0LEUrPVEoZy8yNCksSSs9Zz1RKG1SKEUpKSxFLT15UihkXyhnKSksZz1RKEkvMTIpLEklPTEyLE8uZGF5cz1FLE8ubW9udGhzPUksTy55ZWFycz1nLHRoaXN9LEJlLmNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIHZpKHRoaXMpfSxCZS5nZXQ9ZnVuY3Rpb24oZyl7cmV0dXJuIGc9dHQoZyksdGhpcy5pc1ZhbGlkKCk/dGhpc1tnKyJzIl0oKTpOYU59LEJlLm1pbGxpc2Vjb25kcz1vcyxCZS5zZWNvbmRzPWxzLEJlLm1pbnV0ZXM9TjAsQmUuaG91cnM9ZmUsQmUuZGF5cz1Jc3QsQmUud2Vla3M9ZnVuY3Rpb24oKXtyZXR1cm4gUSh0aGlzLmRheXMoKS83KX0sQmUubW9udGhzPU5zdCxCZS55ZWFycz1Cc3QsQmUuaHVtYW5pemU9ZnVuY3Rpb24oZyxFKXtpZighdGhpcy5pc1ZhbGlkKCkpcmV0dXJuIHRoaXMubG9jYWxlRGF0YSgpLmludmFsaWREYXRlKCk7dmFyIEk9ITEsTz1ibDtyZXR1cm4gdHlwZW9mIGc9PSJvYmplY3QiJiYoRT1nLGc9ITEpLHR5cGVvZiBnPT0iYm9vbGVhbiImJihJPWcpLHR5cGVvZiBFPT0ib2JqZWN0IiYmKE89T2JqZWN0LmFzc2lnbih7fSxibCxFKSxFLnMhPW51bGwmJkUuc3M9PW51bGwmJihPLnNzPUUucy0xKSksZz10aGlzLmxvY2FsZURhdGEoKSxFPURzdCh0aGlzLCFJLE8sZyksSSYmKEU9Zy5wYXN0RnV0dXJlKCt0aGlzLEUpKSxnLnBvc3Rmb3JtYXQoRSl9LEJlLnRvSVNPU3RyaW5nPUIwLEJlLnRvU3RyaW5nPUIwLEJlLnRvSlNPTj1CMCxCZS5sb2NhbGU9b1IsQmUubG9jYWxlRGF0YT1sUixCZS50b0lzb1N0cmluZz1SKCJ0b0lzb1N0cmluZygpIGlzIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgdG9JU09TdHJpbmcoKSBpbnN0ZWFkIChub3RpY2UgdGhlIGNhcGl0YWxzKSIsQjApLEJlLmxhbmc9c3QsWSgiWCIsMCwwLCJ1bml4IiksWSgieCIsMCwwLCJ2YWx1ZU9mIiksZnQoIngiLHB0KSxmdCgiWCIsL1srLV0/XGQrKFwuXGR7MSwzfSk/LyksUXQoIlgiLGZ1bmN0aW9uKGcsRSxJKXtJLl9kPW5ldyBEYXRlKDFlMypwYXJzZUZsb2F0KGcpKX0pLFF0KCJ4IixmdW5jdGlvbihnLEUsSSl7SS5fZD1uZXcgRGF0ZShxKGcpKX0pLG4udmVyc2lvbj0iMi4yOS40IixyPURlLG4uZm49UCxuLm1pbj1mdW5jdGlvbigpe3JldHVybiBobigiaXNCZWZvcmUiLFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApKX0sbi5tYXg9ZnVuY3Rpb24oKXtyZXR1cm4gaG4oImlzQWZ0ZXIiLFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApKX0sbi5ub3c9ZnVuY3Rpb24oKXtyZXR1cm4gRGF0ZS5ub3c/RGF0ZS5ub3coKTorbmV3IERhdGV9LG4udXRjPXAsbi51bml4PWZ1bmN0aW9uKGcpe3JldHVybiBEZSgxZTMqZyl9LG4ubW9udGhzPWZ1bmN0aW9uKGcsRSl7cmV0dXJuIHBSKGcsRSwibW9udGhzIil9LG4uaXNEYXRlPWgsbi5sb2NhbGU9WHQsbi5pbnZhbGlkPXksbi5kdXJhdGlvbj12aSxuLmlzTW9tZW50PU0sbi53ZWVrZGF5cz1mdW5jdGlvbihnLEUsSSl7cmV0dXJuIGZfKGcsRSxJLCJ3ZWVrZGF5cyIpfSxuLnBhcnNlWm9uZT1mdW5jdGlvbigpe3JldHVybiBEZS5hcHBseShudWxsLGFyZ3VtZW50cykucGFyc2Vab25lKCl9LG4ubG9jYWxlRGF0YT1jZSxuLmlzRHVyYXRpb249a2Esbi5tb250aHNTaG9ydD1mdW5jdGlvbihnLEUpe3JldHVybiBwUihnLEUsIm1vbnRoc1Nob3J0Iil9LG4ud2Vla2RheXNNaW49ZnVuY3Rpb24oZyxFLEkpe3JldHVybiBmXyhnLEUsSSwid2Vla2RheXNNaW4iKX0sbi5kZWZpbmVMb2NhbGU9ZWUsbi51cGRhdGVMb2NhbGU9ZnVuY3Rpb24oZyxFKXt2YXIgSSxPO3JldHVybiBFIT1udWxsPyhPPXZhLENlW2ddIT1udWxsJiZDZVtnXS5wYXJlbnRMb2NhbGUhPW51bGw/Q2VbZ10uc2V0KEIoQ2VbZ10uX2NvbmZpZyxFKSk6KEU9QihPPShJPUxuKGcpKSE9bnVsbD9JLl9jb25maWc6TyxFKSxJPT1udWxsJiYoRS5hYmJyPWcpLChPPW5ldyB3KEUpKS5wYXJlbnRMb2NhbGU9Q2VbZ10sQ2VbZ109TyksWHQoZykpOkNlW2ddIT1udWxsJiYoQ2VbZ10ucGFyZW50TG9jYWxlIT1udWxsPyhDZVtnXT1DZVtnXS5wYXJlbnRMb2NhbGUsZz09PVh0KCkmJlh0KGcpKTpDZVtnXSE9bnVsbCYmZGVsZXRlIENlW2ddKSxDZVtnXX0sbi5sb2NhbGVzPWZ1bmN0aW9uKCl7cmV0dXJuIEQoQ2UpfSxuLndlZWtkYXlzU2hvcnQ9ZnVuY3Rpb24oZyxFLEkpe3JldHVybiBmXyhnLEUsSSwid2Vla2RheXNTaG9ydCIpfSxuLm5vcm1hbGl6ZVVuaXRzPXR0LG4ucmVsYXRpdmVUaW1lUm91bmRpbmc9ZnVuY3Rpb24oZyl7cmV0dXJuIGc9PT12b2lkIDA/RWE6dHlwZW9mIGc9PSJmdW5jdGlvbiImJihFYT1nLCEwKX0sbi5yZWxhdGl2ZVRpbWVUaHJlc2hvbGQ9ZnVuY3Rpb24oZyxFKXtyZXR1cm4gYmxbZ10hPT12b2lkIDAmJihFPT09dm9pZCAwP2JsW2ddOihibFtnXT1FLGc9PT0icyImJihibC5zcz1FLTEpLCEwKSl9LG4uY2FsZW5kYXJGb3JtYXQ9ZnVuY3Rpb24oZyxFKXtyZXR1cm4oZz1nLmRpZmYoRSwiZGF5cyIsITApKTwtNj8ic2FtZUVsc2UiOmc8LTE/Imxhc3RXZWVrIjpnPDA/Imxhc3REYXkiOmc8MT8ic2FtZURheSI6ZzwyPyJuZXh0RGF5IjpnPDc/Im5leHRXZWVrIjoic2FtZUVsc2UifSxuLnByb3RvdHlwZT1QLG4uSFRNTDVfRk1UPXtEQVRFVElNRV9MT0NBTDoiWVlZWS1NTS1ERFRISDptbSIsREFURVRJTUVfTE9DQUxfU0VDT05EUzoiWVlZWS1NTS1ERFRISDptbTpzcyIsREFURVRJTUVfTE9DQUxfTVM6IllZWVktTU0tRERUSEg6bW06c3MuU1NTIixEQVRFOiJZWVlZLU1NLUREIixUSU1FOiJISDptbSIsVElNRV9TRUNPTkRTOiJISDptbTpzcyIsVElNRV9NUzoiSEg6bW06c3MuU1NTIixXRUVLOiJHR0dHLVtXXVdXIixNT05USDoiWVlZWS1NTSJ9LG59KX0pKHlfKTtjb25zdCBYbj15Xy5leHBvcnRzLGppPXt0cmFjZTowLGRlYnVnOjEsaW5mbzoyLHdhcm46MyxlcnJvcjo0LGZhdGFsOjV9LEg9e3RyYWNlOiguLi50KT0+e30sZGVidWc6KC4uLnQpPT57fSxpbmZvOiguLi50KT0+e30sd2FybjooLi4udCk9Pnt9LGVycm9yOiguLi50KT0+e30sZmF0YWw6KC4uLnQpPT57fX0sRDA9ZnVuY3Rpb24odD0iZmF0YWwiKXtsZXQgZT1qaS5mYXRhbDt0eXBlb2YgdD09InN0cmluZyI/KHQ9dC50b0xvd2VyQ2FzZSgpLHQgaW4gamkmJihlPWppW3RdKSk6dHlwZW9mIHQ9PSJudW1iZXIiJiYoZT10KSxILnRyYWNlPSgpPT57fSxILmRlYnVnPSgpPT57fSxILmluZm89KCk9Pnt9LEgud2Fybj0oKT0+e30sSC5lcnJvcj0oKT0+e30sSC5mYXRhbD0oKT0+e30sZTw9amkuZmF0YWwmJihILmZhdGFsPWNvbnNvbGUuZXJyb3I/Y29uc29sZS5lcnJvci5iaW5kKGNvbnNvbGUsTm4oIkZBVEFMIiksImNvbG9yOiBvcmFuZ2UiKTpjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUsIlx4MUJbMzVtIixObigiRkFUQUwiKSkpLGU8PWppLmVycm9yJiYoSC5lcnJvcj1jb25zb2xlLmVycm9yP2NvbnNvbGUuZXJyb3IuYmluZChjb25zb2xlLE5uKCJFUlJPUiIpLCJjb2xvcjogb3JhbmdlIik6Y29uc29sZS5sb2cuYmluZChjb25zb2xlLCJceDFCWzMxbSIsTm4oIkVSUk9SIikpKSxlPD1qaS53YXJuJiYoSC53YXJuPWNvbnNvbGUud2Fybj9jb25zb2xlLndhcm4uYmluZChjb25zb2xlLE5uKCJXQVJOIiksImNvbG9yOiBvcmFuZ2UiKTpjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUsIlx4MUJbMzNtIixObigiV0FSTiIpKSksZTw9amkuaW5mbyYmKEguaW5mbz1jb25zb2xlLmluZm8/Y29uc29sZS5pbmZvLmJpbmQoY29uc29sZSxObigiSU5GTyIpLCJjb2xvcjogbGlnaHRibHVlIik6Y29uc29sZS5sb2cuYmluZChjb25zb2xlLCJceDFCWzM0bSIsTm4oIklORk8iKSkpLGU8PWppLmRlYnVnJiYoSC5kZWJ1Zz1jb25zb2xlLmRlYnVnP2NvbnNvbGUuZGVidWcuYmluZChjb25zb2xlLE5uKCJERUJVRyIpLCJjb2xvcjogbGlnaHRncmVlbiIpOmNvbnNvbGUubG9nLmJpbmQoY29uc29sZSwiXHgxQlszMm0iLE5uKCJERUJVRyIpKSksZTw9amkudHJhY2UmJihILnRyYWNlPWNvbnNvbGUuZGVidWc/Y29uc29sZS5kZWJ1Zy5iaW5kKGNvbnNvbGUsTm4oIlRSQUNFIiksImNvbG9yOiBsaWdodGdyZWVuIik6Y29uc29sZS5sb2cuYmluZChjb25zb2xlLCJceDFCWzMybSIsTm4oIlRSQUNFIikpKX0sTm49dD0+YCVjJHtYbigpLmZvcm1hdCgic3MuU1NTIil9IDogJHt0fSA6IGA7dmFyIE8wPXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eShPMCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGtpPU8wLnNhbml0aXplVXJsPXZvaWQgMCxiUj0vXihbXlx3XSopKGphdmFzY3JpcHR8ZGF0YXx2YnNjcmlwdCkvaW0sX1I9LyYjKFx3KykoXlx3fDspPy9nLHZSPS9bXHUwMDAwLVx1MDAxRlx1MDA3Ri1cdTAwOUZcdTIwMDAtXHUyMDBEXHVGRUZGXS9naW0seFI9L14oW146XSspOi9nbSxrUj1bIi4iLCIvIl07ZnVuY3Rpb24gd1IodCl7cmV0dXJuIGtSLmluZGV4T2YodFswXSk+LTF9ZnVuY3Rpb24gVFIodCl7cmV0dXJuIHQucmVwbGFjZShfUixmdW5jdGlvbihlLHIpe3JldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHIpfSl9ZnVuY3Rpb24gRVIodCl7dmFyIGU9VFIodHx8IiIpLnJlcGxhY2UodlIsIiIpLnRyaW0oKTtpZighZSlyZXR1cm4iYWJvdXQ6YmxhbmsiO2lmKHdSKGUpKXJldHVybiBlO3ZhciByPWUubWF0Y2goeFIpO2lmKCFyKXJldHVybiBlO3ZhciBuPXJbMF07cmV0dXJuIGJSLnRlc3Qobik/ImFib3V0OmJsYW5rIjplfWtpPU8wLnNhbml0aXplVXJsPUVSO2Z1bmN0aW9uIFFlKHQsZSl7cmV0dXJuIHQ9PW51bGx8fGU9PW51bGw/TmFOOnQ8ZT8tMTp0PmU/MTp0Pj1lPzA6TmFOfWZ1bmN0aW9uIG1fKHQsZSl7cmV0dXJuIHQ9PW51bGx8fGU9PW51bGw/TmFOOmU8dD8tMTplPnQ/MTplPj10PzA6TmFOfWZ1bmN0aW9uIGt1KHQpe2xldCBlLHIsbjt0Lmxlbmd0aCE9PTI/KGU9UWUscj0obyxsKT0+UWUodChvKSxsKSxuPShvLGwpPT50KG8pLWwpOihlPXQ9PT1RZXx8dD09PW1fP3Q6Q1Iscj10LG49dCk7ZnVuY3Rpb24gaShvLGwsdT0wLGg9by5sZW5ndGgpe2lmKHU8aCl7aWYoZShsLGwpIT09MClyZXR1cm4gaDtkb3tjb25zdCBkPXUraD4+PjE7cihvW2RdLGwpPDA/dT1kKzE6aD1kfXdoaWxlKHU8aCl9cmV0dXJuIHV9ZnVuY3Rpb24gYShvLGwsdT0wLGg9by5sZW5ndGgpe2lmKHU8aCl7aWYoZShsLGwpIT09MClyZXR1cm4gaDtkb3tjb25zdCBkPXUraD4+PjE7cihvW2RdLGwpPD0wP3U9ZCsxOmg9ZH13aGlsZSh1PGgpfXJldHVybiB1fWZ1bmN0aW9uIHMobyxsLHU9MCxoPW8ubGVuZ3RoKXtjb25zdCBkPWkobyxsLHUsaC0xKTtyZXR1cm4gZD51JiZuKG9bZC0xXSxsKT4tbihvW2RdLGwpP2QtMTpkfXJldHVybntsZWZ0OmksY2VudGVyOnMscmlnaHQ6YX19ZnVuY3Rpb24gQ1IoKXtyZXR1cm4gMH1mdW5jdGlvbiBiXyh0KXtyZXR1cm4gdD09PW51bGw/TmFOOit0fWZ1bmN0aW9uKl9fKHQsZSl7aWYoZT09PXZvaWQgMClmb3IobGV0IHIgb2YgdClyIT1udWxsJiYocj0rcik+PXImJih5aWVsZCByKTtlbHNle2xldCByPS0xO2ZvcihsZXQgbiBvZiB0KShuPWUobiwrK3IsdCkpIT1udWxsJiYobj0rbik+PW4mJih5aWVsZCBuKX19Y29uc3Qgdl89a3UoUWUpLHhfPXZfLnJpZ2h0LFNSPXZfLmxlZnQsQVI9a3UoYl8pLmNlbnRlcixjcz14XztmdW5jdGlvbiBNUih0LGUpe2lmKCEoKGU9K2UpPj0wKSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiaW52YWxpZCByIik7bGV0IHI9dC5sZW5ndGg7aWYoISgocj1NYXRoLmZsb29yKHIpKT49MCkpdGhyb3cgbmV3IFJhbmdlRXJyb3IoImludmFsaWQgbGVuZ3RoIik7aWYoIXJ8fCFlKXJldHVybiB0O2NvbnN0IG49RjAoZSksaT10LnNsaWNlKCk7cmV0dXJuIG4odCxpLDAsciwxKSxuKGksdCwwLHIsMSksbih0LGksMCxyLDEpLHR9Y29uc3Qga189d18oRjApLExSPXdfKFJSKTtmdW5jdGlvbiB3Xyh0KXtyZXR1cm4gZnVuY3Rpb24oZSxyLG49cil7aWYoISgocj0rcik+PTApKXRocm93IG5ldyBSYW5nZUVycm9yKCJpbnZhbGlkIHJ4Iik7aWYoISgobj0rbik+PTApKXRocm93IG5ldyBSYW5nZUVycm9yKCJpbnZhbGlkIHJ5Iik7bGV0e2RhdGE6aSx3aWR0aDphLGhlaWdodDpzfT1lO2lmKCEoKGE9TWF0aC5mbG9vcihhKSk+PTApKXRocm93IG5ldyBSYW5nZUVycm9yKCJpbnZhbGlkIHdpZHRoIik7aWYoISgocz1NYXRoLmZsb29yKHMhPT12b2lkIDA/czppLmxlbmd0aC9hKSk+PTApKXRocm93IG5ldyBSYW5nZUVycm9yKCJpbnZhbGlkIGhlaWdodCIpO2lmKCFhfHwhc3x8IXImJiFuKXJldHVybiBlO2NvbnN0IG89ciYmdChyKSxsPW4mJnQobiksdT1pLnNsaWNlKCk7cmV0dXJuIG8mJmw/KHJvKG8sdSxpLGEscykscm8obyxpLHUsYSxzKSxybyhvLHUsaSxhLHMpLG5vKGwsaSx1LGEscyksbm8obCx1LGksYSxzKSxubyhsLGksdSxhLHMpKTpvPyhybyhvLGksdSxhLHMpLHJvKG8sdSxpLGEscykscm8obyxpLHUsYSxzKSk6bCYmKG5vKGwsaSx1LGEscyksbm8obCx1LGksYSxzKSxubyhsLGksdSxhLHMpKSxlfX1mdW5jdGlvbiBybyh0LGUscixuLGkpe2ZvcihsZXQgYT0wLHM9bippO2E8czspdChlLHIsYSxhKz1uLDEpfWZ1bmN0aW9uIG5vKHQsZSxyLG4saSl7Zm9yKGxldCBhPTAscz1uKmk7YTxuOysrYSl0KGUscixhLGErcyxuKX1mdW5jdGlvbiBSUih0KXtjb25zdCBlPUYwKHQpO3JldHVybihyLG4saSxhLHMpPT57aTw8PTIsYTw8PTIsczw8PTIsZShyLG4saSswLGErMCxzKSxlKHIsbixpKzEsYSsxLHMpLGUocixuLGkrMixhKzIscyksZShyLG4saSszLGErMyxzKX19ZnVuY3Rpb24gRjAodCl7Y29uc3QgZT1NYXRoLmZsb29yKHQpO2lmKGU9PT10KXJldHVybiBJUih0KTtjb25zdCByPXQtZSxuPTIqdCsxO3JldHVybihpLGEscyxvLGwpPT57aWYoISgoby09bCk+PXMpKXJldHVybjtsZXQgdT1lKmFbc107Y29uc3QgaD1sKmUsZD1oK2w7Zm9yKGxldCBmPXMscD1zK2g7ZjxwO2YrPWwpdSs9YVtNYXRoLm1pbihvLGYpXTtmb3IobGV0IGY9cyxwPW87Zjw9cDtmKz1sKXUrPWFbTWF0aC5taW4obyxmK2gpXSxpW2ZdPSh1K3IqKGFbTWF0aC5tYXgocyxmLWQpXSthW01hdGgubWluKG8sZitkKV0pKS9uLHUtPWFbTWF0aC5tYXgocyxmLWgpXX19ZnVuY3Rpb24gSVIodCl7Y29uc3QgZT0yKnQrMTtyZXR1cm4ocixuLGksYSxzKT0+e2lmKCEoKGEtPXMpPj1pKSlyZXR1cm47bGV0IG89dCpuW2ldO2NvbnN0IGw9cyp0O2ZvcihsZXQgdT1pLGg9aStsO3U8aDt1Kz1zKW8rPW5bTWF0aC5taW4oYSx1KV07Zm9yKGxldCB1PWksaD1hO3U8PWg7dSs9cylvKz1uW01hdGgubWluKGEsdStsKV0sclt1XT1vL2Usby09bltNYXRoLm1heChpLHUtbCldfX1mdW5jdGlvbiB3dSh0LGUpe2xldCByPTA7aWYoZT09PXZvaWQgMClmb3IobGV0IG4gb2YgdCluIT1udWxsJiYobj0rbik+PW4mJisrcjtlbHNle2xldCBuPS0xO2ZvcihsZXQgaSBvZiB0KShpPWUoaSwrK24sdCkpIT1udWxsJiYoaT0raSk+PWkmJisrcn1yZXR1cm4gcn1mdW5jdGlvbiBOUih0KXtyZXR1cm4gdC5sZW5ndGh8MH1mdW5jdGlvbiBCUih0KXtyZXR1cm4hKHQ+MCl9ZnVuY3Rpb24gRFIodCl7cmV0dXJuIHR5cGVvZiB0IT0ib2JqZWN0Inx8Imxlbmd0aCJpbiB0P3Q6QXJyYXkuZnJvbSh0KX1mdW5jdGlvbiBPUih0KXtyZXR1cm4gZT0+dCguLi5lKX1mdW5jdGlvbiBGUiguLi50KXtjb25zdCBlPXR5cGVvZiB0W3QubGVuZ3RoLTFdPT0iZnVuY3Rpb24iJiZPUih0LnBvcCgpKTt0PXQubWFwKERSKTtjb25zdCByPXQubWFwKE5SKSxuPXQubGVuZ3RoLTEsaT1uZXcgQXJyYXkobisxKS5maWxsKDApLGE9W107aWYobjwwfHxyLnNvbWUoQlIpKXJldHVybiBhO2Zvcig7Oyl7YS5wdXNoKGkubWFwKChvLGwpPT50W2xdW29dKSk7bGV0IHM9bjtmb3IoOysraVtzXT09PXJbc107KXtpZihzPT09MClyZXR1cm4gZT9hLm1hcChlKTphO2lbcy0tXT0wfX19ZnVuY3Rpb24gUFIodCxlKXt2YXIgcj0wLG49MDtyZXR1cm4gRmxvYXQ2NEFycmF5LmZyb20odCxlPT09dm9pZCAwP2k9PnIrPStpfHwwOmk9PnIrPStlKGksbisrLHQpfHwwKX1mdW5jdGlvbiBUXyh0LGUpe2xldCByPTAsbixpPTAsYT0wO2lmKGU9PT12b2lkIDApZm9yKGxldCBzIG9mIHQpcyE9bnVsbCYmKHM9K3MpPj1zJiYobj1zLWksaSs9bi8rK3IsYSs9bioocy1pKSk7ZWxzZXtsZXQgcz0tMTtmb3IobGV0IG8gb2YgdCkobz1lKG8sKytzLHQpKSE9bnVsbCYmKG89K28pPj1vJiYobj1vLWksaSs9bi8rK3IsYSs9biooby1pKSl9aWYocj4xKXJldHVybiBhLyhyLTEpfWZ1bmN0aW9uIEVfKHQsZSl7Y29uc3Qgcj1UXyh0LGUpO3JldHVybiByJiZNYXRoLnNxcnQocil9ZnVuY3Rpb24geGwodCxlKXtsZXQgcixuO2lmKGU9PT12b2lkIDApZm9yKGNvbnN0IGkgb2YgdClpIT1udWxsJiYocj09PXZvaWQgMD9pPj1pJiYocj1uPWkpOihyPmkmJihyPWkpLG48aSYmKG49aSkpKTtlbHNle2xldCBpPS0xO2ZvcihsZXQgYSBvZiB0KShhPWUoYSwrK2ksdCkpIT1udWxsJiYocj09PXZvaWQgMD9hPj1hJiYocj1uPWEpOihyPmEmJihyPWEpLG48YSYmKG49YSkpKX1yZXR1cm5bcixuXX1jbGFzcyBfcntjb25zdHJ1Y3Rvcigpe3RoaXMuX3BhcnRpYWxzPW5ldyBGbG9hdDY0QXJyYXkoMzIpLHRoaXMuX249MH1hZGQoZSl7Y29uc3Qgcj10aGlzLl9wYXJ0aWFscztsZXQgbj0wO2ZvcihsZXQgaT0wO2k8dGhpcy5fbiYmaTwzMjtpKyspe2NvbnN0IGE9cltpXSxzPWUrYSxvPU1hdGguYWJzKGUpPE1hdGguYWJzKGEpP2UtKHMtYSk6YS0ocy1lKTtvJiYocltuKytdPW8pLGU9c31yZXR1cm4gcltuXT1lLHRoaXMuX249bisxLHRoaXN9dmFsdWVPZigpe2NvbnN0IGU9dGhpcy5fcGFydGlhbHM7bGV0IHI9dGhpcy5fbixuLGksYSxzPTA7aWYocj4wKXtmb3Iocz1lWy0tcl07cj4wJiYobj1zLGk9ZVstLXJdLHM9bitpLGE9aS0ocy1uKSwhYSk7KTtyPjAmJihhPDAmJmVbci0xXTwwfHxhPjAmJmVbci0xXT4wKSYmKGk9YSoyLG49cytpLGk9PW4tcyYmKHM9bikpfXJldHVybiBzfX1mdW5jdGlvbiBxUih0LGUpe2NvbnN0IHI9bmV3IF9yO2lmKGU9PT12b2lkIDApZm9yKGxldCBuIG9mIHQpKG49K24pJiZyLmFkZChuKTtlbHNle2xldCBuPS0xO2ZvcihsZXQgaSBvZiB0KShpPStlKGksKytuLHQpKSYmci5hZGQoaSl9cmV0dXJuK3J9ZnVuY3Rpb24gVlIodCxlKXtjb25zdCByPW5ldyBfcjtsZXQgbj0tMTtyZXR1cm4gRmxvYXQ2NEFycmF5LmZyb20odCxlPT09dm9pZCAwP2k9PnIuYWRkKCtpfHwwKTppPT5yLmFkZCgrZShpLCsrbix0KXx8MCkpfWNsYXNzIGtsIGV4dGVuZHMgTWFwe2NvbnN0cnVjdG9yKGUscj1BXyl7aWYoc3VwZXIoKSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0aGlzLHtfaW50ZXJuOnt2YWx1ZTpuZXcgTWFwfSxfa2V5Ont2YWx1ZTpyfX0pLGUhPW51bGwpZm9yKGNvbnN0W24saV1vZiBlKXRoaXMuc2V0KG4saSl9Z2V0KGUpe3JldHVybiBzdXBlci5nZXQoUDAodGhpcyxlKSl9aGFzKGUpe3JldHVybiBzdXBlci5oYXMoUDAodGhpcyxlKSl9c2V0KGUscil7cmV0dXJuIHN1cGVyLnNldChDXyh0aGlzLGUpLHIpfWRlbGV0ZShlKXtyZXR1cm4gc3VwZXIuZGVsZXRlKFNfKHRoaXMsZSkpfX1jbGFzcyB1cyBleHRlbmRzIFNldHtjb25zdHJ1Y3RvcihlLHI9QV8pe2lmKHN1cGVyKCksT2JqZWN0LmRlZmluZVByb3BlcnRpZXModGhpcyx7X2ludGVybjp7dmFsdWU6bmV3IE1hcH0sX2tleTp7dmFsdWU6cn19KSxlIT1udWxsKWZvcihjb25zdCBuIG9mIGUpdGhpcy5hZGQobil9aGFzKGUpe3JldHVybiBzdXBlci5oYXMoUDAodGhpcyxlKSl9YWRkKGUpe3JldHVybiBzdXBlci5hZGQoQ18odGhpcyxlKSl9ZGVsZXRlKGUpe3JldHVybiBzdXBlci5kZWxldGUoU18odGhpcyxlKSl9fWZ1bmN0aW9uIFAwKHtfaW50ZXJuOnQsX2tleTplfSxyKXtjb25zdCBuPWUocik7cmV0dXJuIHQuaGFzKG4pP3QuZ2V0KG4pOnJ9ZnVuY3Rpb24gQ18oe19pbnRlcm46dCxfa2V5OmV9LHIpe2NvbnN0IG49ZShyKTtyZXR1cm4gdC5oYXMobik/dC5nZXQobik6KHQuc2V0KG4scikscil9ZnVuY3Rpb24gU18oe19pbnRlcm46dCxfa2V5OmV9LHIpe2NvbnN0IG49ZShyKTtyZXR1cm4gdC5oYXMobikmJihyPXQuZ2V0KG4pLHQuZGVsZXRlKG4pKSxyfWZ1bmN0aW9uIEFfKHQpe3JldHVybiB0IT09bnVsbCYmdHlwZW9mIHQ9PSJvYmplY3QiP3QudmFsdWVPZigpOnR9ZnVuY3Rpb24gaW8odCl7cmV0dXJuIHR9ZnVuY3Rpb24gTV8odCwuLi5lKXtyZXR1cm4gYW8odCxpbyxpbyxlKX1mdW5jdGlvbiBMXyh0LC4uLmUpe3JldHVybiBhbyh0LEFycmF5LmZyb20saW8sZSl9ZnVuY3Rpb24gUl8odCxlKXtmb3IobGV0IHI9MSxuPWUubGVuZ3RoO3I8bjsrK3IpdD10LmZsYXRNYXAoaT0+aS5wb3AoKS5tYXAoKFthLHNdKT0+Wy4uLmksYSxzXSkpO3JldHVybiB0fWZ1bmN0aW9uIHpSKHQsLi4uZSl7cmV0dXJuIFJfKExfKHQsLi4uZSksZSl9ZnVuY3Rpb24gWVIodCxlLC4uLnIpe3JldHVybiBSXyhOXyh0LGUsLi4ucikscil9ZnVuY3Rpb24gSV8odCxlLC4uLnIpe3JldHVybiBhbyh0LGlvLGUscil9ZnVuY3Rpb24gTl8odCxlLC4uLnIpe3JldHVybiBhbyh0LEFycmF5LmZyb20sZSxyKX1mdW5jdGlvbiBVUih0LC4uLmUpe3JldHVybiBhbyh0LGlvLEJfLGUpfWZ1bmN0aW9uIFdSKHQsLi4uZSl7cmV0dXJuIGFvKHQsQXJyYXkuZnJvbSxCXyxlKX1mdW5jdGlvbiBCXyh0KXtpZih0Lmxlbmd0aCE9PTEpdGhyb3cgbmV3IEVycm9yKCJkdXBsaWNhdGUga2V5Iik7cmV0dXJuIHRbMF19ZnVuY3Rpb24gYW8odCxlLHIsbil7cmV0dXJuIGZ1bmN0aW9uIGkoYSxzKXtpZihzPj1uLmxlbmd0aClyZXR1cm4gcihhKTtjb25zdCBvPW5ldyBrbCxsPW5bcysrXTtsZXQgdT0tMTtmb3IoY29uc3QgaCBvZiBhKXtjb25zdCBkPWwoaCwrK3UsYSksZj1vLmdldChkKTtmP2YucHVzaChoKTpvLnNldChkLFtoXSl9Zm9yKGNvbnN0W2gsZF1vZiBvKW8uc2V0KGgsaShkLHMpKTtyZXR1cm4gZShvKX0odCwwKX1mdW5jdGlvbiBEXyh0LGUpe3JldHVybiBBcnJheS5mcm9tKGUscj0+dFtyXSl9ZnVuY3Rpb24gcTAodCwuLi5lKXtpZih0eXBlb2YgdFtTeW1ib2wuaXRlcmF0b3JdIT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoInZhbHVlcyBpcyBub3QgaXRlcmFibGUiKTt0PUFycmF5LmZyb20odCk7bGV0W3JdPWU7aWYociYmci5sZW5ndGghPT0yfHxlLmxlbmd0aD4xKXtjb25zdCBuPVVpbnQzMkFycmF5LmZyb20odCwoaSxhKT0+YSk7cmV0dXJuIGUubGVuZ3RoPjE/KGU9ZS5tYXAoaT0+dC5tYXAoaSkpLG4uc29ydCgoaSxhKT0+e2Zvcihjb25zdCBzIG9mIGUpe2NvbnN0IG89c28oc1tpXSxzW2FdKTtpZihvKXJldHVybiBvfX0pKToocj10Lm1hcChyKSxuLnNvcnQoKGksYSk9PnNvKHJbaV0sclthXSkpKSxEXyh0LG4pfXJldHVybiB0LnNvcnQoVjAocikpfWZ1bmN0aW9uIFYwKHQ9UWUpe2lmKHQ9PT1RZSlyZXR1cm4gc287aWYodHlwZW9mIHQhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigiY29tcGFyZSBpcyBub3QgYSBmdW5jdGlvbiIpO3JldHVybihlLHIpPT57Y29uc3Qgbj10KGUscik7cmV0dXJuIG58fG49PT0wP246KHQocixyKT09PTApLSh0KGUsZSk9PT0wKX19ZnVuY3Rpb24gc28odCxlKXtyZXR1cm4odD09bnVsbHx8ISh0Pj10KSktKGU9PW51bGx8fCEoZT49ZSkpfHwodDxlPy0xOnQ+ZT8xOjApfWZ1bmN0aW9uIEhSKHQsZSxyKXtyZXR1cm4oZS5sZW5ndGghPT0yP3EwKElfKHQsZSxyKSwoW24saV0sW2Esc10pPT5RZShpLHMpfHxRZShuLGEpKTpxMChNXyh0LHIpLChbbixpXSxbYSxzXSk9PmUoaSxzKXx8UWUobixhKSkpLm1hcCgoW25dKT0+bil9dmFyIEdSPUFycmF5LnByb3RvdHlwZSxqUj1HUi5zbGljZTtmdW5jdGlvbiBUdSh0KXtyZXR1cm4oKT0+dH12YXIgejA9TWF0aC5zcXJ0KDUwKSxZMD1NYXRoLnNxcnQoMTApLFUwPU1hdGguc3FydCgyKTtmdW5jdGlvbiBocyh0LGUscil7dmFyIG4saT0tMSxhLHMsbztpZihlPStlLHQ9K3Qscj0rcix0PT09ZSYmcj4wKXJldHVyblt0XTtpZigobj1lPHQpJiYoYT10LHQ9ZSxlPWEpLChvPW9vKHQsZSxyKSk9PT0wfHwhaXNGaW5pdGUobykpcmV0dXJuW107aWYobz4wKXtsZXQgbD1NYXRoLnJvdW5kKHQvbyksdT1NYXRoLnJvdW5kKGUvbyk7Zm9yKGwqbzx0JiYrK2wsdSpvPmUmJi0tdSxzPW5ldyBBcnJheShhPXUtbCsxKTsrK2k8YTspc1tpXT0obCtpKSpvfWVsc2V7bz0tbztsZXQgbD1NYXRoLnJvdW5kKHQqbyksdT1NYXRoLnJvdW5kKGUqbyk7Zm9yKGwvbzx0JiYrK2wsdS9vPmUmJi0tdSxzPW5ldyBBcnJheShhPXUtbCsxKTsrK2k8YTspc1tpXT0obCtpKS9vfXJldHVybiBuJiZzLnJldmVyc2UoKSxzfWZ1bmN0aW9uIG9vKHQsZSxyKXt2YXIgbj0oZS10KS9NYXRoLm1heCgwLHIpLGk9TWF0aC5mbG9vcihNYXRoLmxvZyhuKS9NYXRoLkxOMTApLGE9bi9NYXRoLnBvdygxMCxpKTtyZXR1cm4gaT49MD8oYT49ejA/MTA6YT49WTA/NTphPj1VMD8yOjEpKk1hdGgucG93KDEwLGkpOi1NYXRoLnBvdygxMCwtaSkvKGE+PXowPzEwOmE+PVkwPzU6YT49VTA/MjoxKX1mdW5jdGlvbiB3bCh0LGUscil7dmFyIG49TWF0aC5hYnMoZS10KS9NYXRoLm1heCgwLHIpLGk9TWF0aC5wb3coMTAsTWF0aC5mbG9vcihNYXRoLmxvZyhuKS9NYXRoLkxOMTApKSxhPW4vaTtyZXR1cm4gYT49ejA/aSo9MTA6YT49WTA/aSo9NTphPj1VMCYmKGkqPTIpLGU8dD8taTppfWZ1bmN0aW9uIE9fKHQsZSxyKXtsZXQgbjtmb3IoOzspe2NvbnN0IGk9b28odCxlLHIpO2lmKGk9PT1ufHxpPT09MHx8IWlzRmluaXRlKGkpKXJldHVyblt0LGVdO2k+MD8odD1NYXRoLmZsb29yKHQvaSkqaSxlPU1hdGguY2VpbChlL2kpKmkpOmk8MCYmKHQ9TWF0aC5jZWlsKHQqaSkvaSxlPU1hdGguZmxvb3IoZSppKS9pKSxuPWl9fWZ1bmN0aW9uIFcwKHQpe3JldHVybiBNYXRoLmNlaWwoTWF0aC5sb2cod3UodCkpL01hdGguTE4yKSsxfWZ1bmN0aW9uIEZfKCl7dmFyIHQ9aW8sZT14bCxyPVcwO2Z1bmN0aW9uIG4oaSl7QXJyYXkuaXNBcnJheShpKXx8KGk9QXJyYXkuZnJvbShpKSk7dmFyIGEscz1pLmxlbmd0aCxvLGwsdT1uZXcgQXJyYXkocyk7Zm9yKGE9MDthPHM7KythKXVbYV09dChpW2FdLGEsaSk7dmFyIGg9ZSh1KSxkPWhbMF0sZj1oWzFdLHA9cih1LGQsZik7aWYoIUFycmF5LmlzQXJyYXkocCkpe2NvbnN0IGI9Zix4PStwO2lmKGU9PT14bCYmKFtkLGZdPU9fKGQsZix4KSkscD1ocyhkLGYseCkscFswXTw9ZCYmKGw9b28oZCxmLHgpKSxwW3AubGVuZ3RoLTFdPj1mKWlmKGI+PWYmJmU9PT14bCl7Y29uc3Qgaz1vbyhkLGYseCk7aXNGaW5pdGUoaykmJihrPjA/Zj0oTWF0aC5mbG9vcihmL2spKzEpKms6azwwJiYoZj0oTWF0aC5jZWlsKGYqLWspKzEpLy1rKSl9ZWxzZSBwLnBvcCgpfWZvcih2YXIgbT1wLmxlbmd0aDtwWzBdPD1kOylwLnNoaWZ0KCksLS1tO2Zvcig7cFttLTFdPmY7KXAucG9wKCksLS1tO3ZhciBfPW5ldyBBcnJheShtKzEpLHk7Zm9yKGE9MDthPD1tOysrYSl5PV9bYV09W10seS54MD1hPjA/cFthLTFdOmQseS54MT1hPG0/cFthXTpmO2lmKGlzRmluaXRlKGwpKXtpZihsPjApZm9yKGE9MDthPHM7KythKShvPXVbYV0pIT1udWxsJiZkPD1vJiZvPD1mJiZfW01hdGgubWluKG0sTWF0aC5mbG9vcigoby1kKS9sKSldLnB1c2goaVthXSk7ZWxzZSBpZihsPDApe2ZvcihhPTA7YTxzOysrYSlpZigobz11W2FdKSE9bnVsbCYmZDw9byYmbzw9Zil7Y29uc3QgYj1NYXRoLmZsb29yKChkLW8pKmwpO19bTWF0aC5taW4obSxiKyhwW2JdPD1vKSldLnB1c2goaVthXSl9fX1lbHNlIGZvcihhPTA7YTxzOysrYSkobz11W2FdKSE9bnVsbCYmZDw9byYmbzw9ZiYmX1tjcyhwLG8sMCxtKV0ucHVzaChpW2FdKTtyZXR1cm4gX31yZXR1cm4gbi52YWx1ZT1mdW5jdGlvbihpKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD10eXBlb2YgaT09ImZ1bmN0aW9uIj9pOlR1KGkpLG4pOnR9LG4uZG9tYWluPWZ1bmN0aW9uKGkpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXR5cGVvZiBpPT0iZnVuY3Rpb24iP2k6VHUoW2lbMF0saVsxXV0pLG4pOmV9LG4udGhyZXNob2xkcz1mdW5jdGlvbihpKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10eXBlb2YgaT09ImZ1bmN0aW9uIj9pOkFycmF5LmlzQXJyYXkoaSk/VHUoalIuY2FsbChpKSk6VHUoaSksbik6cn0sbn1mdW5jdGlvbiBsbyh0LGUpe2xldCByO2lmKGU9PT12b2lkIDApZm9yKGNvbnN0IG4gb2YgdCluIT1udWxsJiYocjxufHxyPT09dm9pZCAwJiZuPj1uKSYmKHI9bik7ZWxzZXtsZXQgbj0tMTtmb3IobGV0IGkgb2YgdCkoaT1lKGksKytuLHQpKSE9bnVsbCYmKHI8aXx8cj09PXZvaWQgMCYmaT49aSkmJihyPWkpfXJldHVybiByfWZ1bmN0aW9uIEgwKHQsZSl7bGV0IHIsbj0tMSxpPS0xO2lmKGU9PT12b2lkIDApZm9yKGNvbnN0IGEgb2YgdCkrK2ksYSE9bnVsbCYmKHI8YXx8cj09PXZvaWQgMCYmYT49YSkmJihyPWEsbj1pKTtlbHNlIGZvcihsZXQgYSBvZiB0KShhPWUoYSwrK2ksdCkpIT1udWxsJiYocjxhfHxyPT09dm9pZCAwJiZhPj1hKSYmKHI9YSxuPWkpO3JldHVybiBufWZ1bmN0aW9uIFRsKHQsZSl7bGV0IHI7aWYoZT09PXZvaWQgMClmb3IoY29uc3QgbiBvZiB0KW4hPW51bGwmJihyPm58fHI9PT12b2lkIDAmJm4+PW4pJiYocj1uKTtlbHNle2xldCBuPS0xO2ZvcihsZXQgaSBvZiB0KShpPWUoaSwrK24sdCkpIT1udWxsJiYocj5pfHxyPT09dm9pZCAwJiZpPj1pKSYmKHI9aSl9cmV0dXJuIHJ9ZnVuY3Rpb24gRzAodCxlKXtsZXQgcixuPS0xLGk9LTE7aWYoZT09PXZvaWQgMClmb3IoY29uc3QgYSBvZiB0KSsraSxhIT1udWxsJiYocj5hfHxyPT09dm9pZCAwJiZhPj1hKSYmKHI9YSxuPWkpO2Vsc2UgZm9yKGxldCBhIG9mIHQpKGE9ZShhLCsraSx0KSkhPW51bGwmJihyPmF8fHI9PT12b2lkIDAmJmE+PWEpJiYocj1hLG49aSk7cmV0dXJuIG59ZnVuY3Rpb24gRXUodCxlLHI9MCxuPXQubGVuZ3RoLTEsaSl7Zm9yKGk9aT09PXZvaWQgMD9zbzpWMChpKTtuPnI7KXtpZihuLXI+NjAwKXtjb25zdCBsPW4tcisxLHU9ZS1yKzEsaD1NYXRoLmxvZyhsKSxkPS41Kk1hdGguZXhwKDIqaC8zKSxmPS41Kk1hdGguc3FydChoKmQqKGwtZCkvbCkqKHUtbC8yPDA/LTE6MSkscD1NYXRoLm1heChyLE1hdGguZmxvb3IoZS11KmQvbCtmKSksbT1NYXRoLm1pbihuLE1hdGguZmxvb3IoZSsobC11KSpkL2wrZikpO0V1KHQsZSxwLG0saSl9Y29uc3QgYT10W2VdO2xldCBzPXIsbz1uO2ZvcihFbCh0LHIsZSksaSh0W25dLGEpPjAmJkVsKHQscixuKTtzPG87KXtmb3IoRWwodCxzLG8pLCsrcywtLW87aSh0W3NdLGEpPDA7KSsrcztmb3IoO2kodFtvXSxhKT4wOyktLW99aSh0W3JdLGEpPT09MD9FbCh0LHIsbyk6KCsrbyxFbCh0LG8sbikpLG88PWUmJihyPW8rMSksZTw9byYmKG49by0xKX1yZXR1cm4gdH1mdW5jdGlvbiBFbCh0LGUscil7Y29uc3Qgbj10W2VdO3RbZV09dFtyXSx0W3JdPW59ZnVuY3Rpb24gUF8odCxlPVFlKXtsZXQgcixuPSExO2lmKGUubGVuZ3RoPT09MSl7bGV0IGk7Zm9yKGNvbnN0IGEgb2YgdCl7Y29uc3Qgcz1lKGEpOyhuP1FlKHMsaSk+MDpRZShzLHMpPT09MCkmJihyPWEsaT1zLG49ITApfX1lbHNlIGZvcihjb25zdCBpIG9mIHQpKG4/ZShpLHIpPjA6ZShpLGkpPT09MCkmJihyPWksbj0hMCk7cmV0dXJuIHJ9ZnVuY3Rpb24gQ2wodCxlLHIpe2lmKHQ9RmxvYXQ2NEFycmF5LmZyb20oX18odCxyKSksISEobj10Lmxlbmd0aCkpe2lmKChlPStlKTw9MHx8bjwyKXJldHVybiBUbCh0KTtpZihlPj0xKXJldHVybiBsbyh0KTt2YXIgbixpPShuLTEpKmUsYT1NYXRoLmZsb29yKGkpLHM9bG8oRXUodCxhKS5zdWJhcnJheSgwLGErMSkpLG89VGwodC5zdWJhcnJheShhKzEpKTtyZXR1cm4gcysoby1zKSooaS1hKX19ZnVuY3Rpb24gcV8odCxlLHI9Yl8pe2lmKCEhKG49dC5sZW5ndGgpKXtpZigoZT0rZSk8PTB8fG48MilyZXR1cm4rcih0WzBdLDAsdCk7aWYoZT49MSlyZXR1cm4rcih0W24tMV0sbi0xLHQpO3ZhciBuLGk9KG4tMSkqZSxhPU1hdGguZmxvb3IoaSkscz0rcih0W2FdLGEsdCksbz0rcih0W2ErMV0sYSsxLHQpO3JldHVybiBzKyhvLXMpKihpLWEpfX1mdW5jdGlvbiBWXyh0LGUscil7aWYodD1GbG9hdDY0QXJyYXkuZnJvbShfXyh0LHIpKSwhIShuPXQubGVuZ3RoKSl7aWYoKGU9K2UpPD0wfHxuPDIpcmV0dXJuIEcwKHQpO2lmKGU+PTEpcmV0dXJuIEgwKHQpO3ZhciBuLGk9TWF0aC5mbG9vcigobi0xKSplKSxhPShvLGwpPT5zbyh0W29dLHRbbF0pLHM9RXUoVWludDMyQXJyYXkuZnJvbSh0LChvLGwpPT5sKSxpLDAsbi0xLGEpO3JldHVybiBQXyhzLnN1YmFycmF5KDAsaSsxKSxvPT50W29dKX19ZnVuY3Rpb24gJFIodCxlLHIpe3JldHVybiBNYXRoLmNlaWwoKHItZSkvKDIqKENsKHQsLjc1KS1DbCh0LC4yNSkpKk1hdGgucG93KHd1KHQpLC0xLzMpKSl9ZnVuY3Rpb24gWFIodCxlLHIpe3JldHVybiBNYXRoLmNlaWwoKHItZSkqTWF0aC5jYnJ0KHd1KHQpKS8oMy40OSpFXyh0KSkpfWZ1bmN0aW9uIEtSKHQsZSl7bGV0IHI9MCxuPTA7aWYoZT09PXZvaWQgMClmb3IobGV0IGkgb2YgdClpIT1udWxsJiYoaT0raSk+PWkmJigrK3Isbis9aSk7ZWxzZXtsZXQgaT0tMTtmb3IobGV0IGEgb2YgdCkoYT1lKGEsKytpLHQpKSE9bnVsbCYmKGE9K2EpPj1hJiYoKytyLG4rPWEpfWlmKHIpcmV0dXJuIG4vcn1mdW5jdGlvbiBaUih0LGUpe3JldHVybiBDbCh0LC41LGUpfWZ1bmN0aW9uIFFSKHQsZSl7cmV0dXJuIFZfKHQsLjUsZSl9ZnVuY3Rpb24qSlIodCl7Zm9yKGNvbnN0IGUgb2YgdCl5aWVsZCplfWZ1bmN0aW9uIGowKHQpe3JldHVybiBBcnJheS5mcm9tKEpSKHQpKX1mdW5jdGlvbiB0SSh0LGUpe2NvbnN0IHI9bmV3IGtsO2lmKGU9PT12b2lkIDApZm9yKGxldCBhIG9mIHQpYSE9bnVsbCYmYT49YSYmci5zZXQoYSwoci5nZXQoYSl8fDApKzEpO2Vsc2V7bGV0IGE9LTE7Zm9yKGxldCBzIG9mIHQpKHM9ZShzLCsrYSx0KSkhPW51bGwmJnM+PXMmJnIuc2V0KHMsKHIuZ2V0KHMpfHwwKSsxKX1sZXQgbixpPTA7Zm9yKGNvbnN0W2Esc11vZiByKXM+aSYmKGk9cyxuPWEpO3JldHVybiBufWZ1bmN0aW9uIGVJKHQsZT1ySSl7Y29uc3Qgcj1bXTtsZXQgbixpPSExO2Zvcihjb25zdCBhIG9mIHQpaSYmci5wdXNoKGUobixhKSksbj1hLGk9ITA7cmV0dXJuIHJ9ZnVuY3Rpb24gckkodCxlKXtyZXR1cm5bdCxlXX1mdW5jdGlvbiBDYSh0LGUscil7dD0rdCxlPStlLHI9KGk9YXJndW1lbnRzLmxlbmd0aCk8Mj8oZT10LHQ9MCwxKTppPDM/MTorcjtmb3IodmFyIG49LTEsaT1NYXRoLm1heCgwLE1hdGguY2VpbCgoZS10KS9yKSl8MCxhPW5ldyBBcnJheShpKTsrK248aTspYVtuXT10K24qcjtyZXR1cm4gYX1mdW5jdGlvbiBuSSh0LGU9UWUpe2lmKHR5cGVvZiB0W1N5bWJvbC5pdGVyYXRvcl0hPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigidmFsdWVzIGlzIG5vdCBpdGVyYWJsZSIpO2xldCByPUFycmF5LmZyb20odCk7Y29uc3Qgbj1uZXcgRmxvYXQ2NEFycmF5KHIubGVuZ3RoKTtlLmxlbmd0aCE9PTImJihyPXIubWFwKGUpLGU9UWUpO2NvbnN0IGk9KG8sbCk9PmUocltvXSxyW2xdKTtsZXQgYSxzO3JldHVybiBVaW50MzJBcnJheS5mcm9tKHIsKG8sbCk9PmwpLnNvcnQoZT09PVFlPyhvLGwpPT5zbyhyW29dLHJbbF0pOlYwKGkpKS5mb3JFYWNoKChvLGwpPT57Y29uc3QgdT1pKG8sYT09PXZvaWQgMD9vOmEpO3U+PTA/KChhPT09dm9pZCAwfHx1PjApJiYoYT1vLHM9bCksbltvXT1zKTpuW29dPU5hTn0pLG59ZnVuY3Rpb24gaUkodCxlPVFlKXtsZXQgcixuPSExO2lmKGUubGVuZ3RoPT09MSl7bGV0IGk7Zm9yKGNvbnN0IGEgb2YgdCl7Y29uc3Qgcz1lKGEpOyhuP1FlKHMsaSk8MDpRZShzLHMpPT09MCkmJihyPWEsaT1zLG49ITApfX1lbHNlIGZvcihjb25zdCBpIG9mIHQpKG4/ZShpLHIpPDA6ZShpLGkpPT09MCkmJihyPWksbj0hMCk7cmV0dXJuIHJ9ZnVuY3Rpb24gel8odCxlPVFlKXtpZihlLmxlbmd0aD09PTEpcmV0dXJuIEcwKHQsZSk7bGV0IHIsbj0tMSxpPS0xO2Zvcihjb25zdCBhIG9mIHQpKytpLChuPDA/ZShhLGEpPT09MDplKGEscik8MCkmJihyPWEsbj1pKTtyZXR1cm4gbn1mdW5jdGlvbiBhSSh0LGU9UWUpe2lmKGUubGVuZ3RoPT09MSlyZXR1cm4gSDAodCxlKTtsZXQgcixuPS0xLGk9LTE7Zm9yKGNvbnN0IGEgb2YgdCkrK2ksKG48MD9lKGEsYSk9PT0wOmUoYSxyKT4wKSYmKHI9YSxuPWkpO3JldHVybiBufWZ1bmN0aW9uIHNJKHQsZSl7Y29uc3Qgcj16Xyh0LGUpO3JldHVybiByPDA/dm9pZCAwOnJ9Y29uc3Qgb0k9WV8oTWF0aC5yYW5kb20pO2Z1bmN0aW9uIFlfKHQpe3JldHVybiBmdW5jdGlvbihyLG49MCxpPXIubGVuZ3RoKXtsZXQgYT1pLShuPStuKTtmb3IoO2E7KXtjb25zdCBzPXQoKSphLS18MCxvPXJbYStuXTtyW2Erbl09cltzK25dLHJbcytuXT1vfXJldHVybiByfX1mdW5jdGlvbiBsSSh0LGUpe2xldCByPTA7aWYoZT09PXZvaWQgMClmb3IobGV0IG4gb2YgdCkobj0rbikmJihyKz1uKTtlbHNle2xldCBuPS0xO2ZvcihsZXQgaSBvZiB0KShpPStlKGksKytuLHQpKSYmKHIrPWkpfXJldHVybiByfWZ1bmN0aW9uIFVfKHQpe2lmKCEoYT10Lmxlbmd0aCkpcmV0dXJuW107Zm9yKHZhciBlPS0xLHI9VGwodCxjSSksbj1uZXcgQXJyYXkocik7KytlPHI7KWZvcih2YXIgaT0tMSxhLHM9bltlXT1uZXcgQXJyYXkoYSk7KytpPGE7KXNbaV09dFtpXVtlXTtyZXR1cm4gbn1mdW5jdGlvbiBjSSh0KXtyZXR1cm4gdC5sZW5ndGh9ZnVuY3Rpb24gdUkoKXtyZXR1cm4gVV8oYXJndW1lbnRzKX1mdW5jdGlvbiBoSSh0LGUpe2lmKHR5cGVvZiBlIT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoInRlc3QgaXMgbm90IGEgZnVuY3Rpb24iKTtsZXQgcj0tMTtmb3IoY29uc3QgbiBvZiB0KWlmKCFlKG4sKytyLHQpKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIGZJKHQsZSl7aWYodHlwZW9mIGUhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigidGVzdCBpcyBub3QgYSBmdW5jdGlvbiIpO2xldCByPS0xO2Zvcihjb25zdCBuIG9mIHQpaWYoZShuLCsrcix0KSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiBkSSh0LGUpe2lmKHR5cGVvZiBlIT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoInRlc3QgaXMgbm90IGEgZnVuY3Rpb24iKTtjb25zdCByPVtdO2xldCBuPS0xO2Zvcihjb25zdCBpIG9mIHQpZShpLCsrbix0KSYmci5wdXNoKGkpO3JldHVybiByfWZ1bmN0aW9uIHBJKHQsZSl7aWYodHlwZW9mIHRbU3ltYm9sLml0ZXJhdG9yXSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJ2YWx1ZXMgaXMgbm90IGl0ZXJhYmxlIik7aWYodHlwZW9mIGUhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigibWFwcGVyIGlzIG5vdCBhIGZ1bmN0aW9uIik7cmV0dXJuIEFycmF5LmZyb20odCwocixuKT0+ZShyLG4sdCkpfWZ1bmN0aW9uIGdJKHQsZSxyKXtpZih0eXBlb2YgZSE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgVHlwZUVycm9yKCJyZWR1Y2VyIGlzIG5vdCBhIGZ1bmN0aW9uIik7Y29uc3Qgbj10W1N5bWJvbC5pdGVyYXRvcl0oKTtsZXQgaSxhLHM9LTE7aWYoYXJndW1lbnRzLmxlbmd0aDwzKXtpZih7ZG9uZTppLHZhbHVlOnJ9PW4ubmV4dCgpLGkpcmV0dXJuOysrc31mb3IoO3tkb25lOmksdmFsdWU6YX09bi5uZXh0KCksIWk7KXI9ZShyLGEsKytzLHQpO3JldHVybiByfWZ1bmN0aW9uIHlJKHQpe2lmKHR5cGVvZiB0W1N5bWJvbC5pdGVyYXRvcl0hPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcigidmFsdWVzIGlzIG5vdCBpdGVyYWJsZSIpO3JldHVybiBBcnJheS5mcm9tKHQpLnJldmVyc2UoKX1mdW5jdGlvbiBtSSh0LC4uLmUpe3Q9bmV3IHVzKHQpO2Zvcihjb25zdCByIG9mIGUpZm9yKGNvbnN0IG4gb2Ygcil0LmRlbGV0ZShuKTtyZXR1cm4gdH1mdW5jdGlvbiBiSSh0LGUpe2NvbnN0IHI9ZVtTeW1ib2wuaXRlcmF0b3JdKCksbj1uZXcgdXM7Zm9yKGNvbnN0IGkgb2YgdCl7aWYobi5oYXMoaSkpcmV0dXJuITE7bGV0IGEscztmb3IoOyh7dmFsdWU6YSxkb25lOnN9PXIubmV4dCgpKSYmIXM7KXtpZihPYmplY3QuaXMoaSxhKSlyZXR1cm4hMTtuLmFkZChhKX19cmV0dXJuITB9ZnVuY3Rpb24gX0kodCwuLi5lKXt0PW5ldyB1cyh0KSxlPWUubWFwKHZJKTt0OmZvcihjb25zdCByIG9mIHQpZm9yKGNvbnN0IG4gb2YgZSlpZighbi5oYXMocikpe3QuZGVsZXRlKHIpO2NvbnRpbnVlIHR9cmV0dXJuIHR9ZnVuY3Rpb24gdkkodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiB1cz90Om5ldyB1cyh0KX1mdW5jdGlvbiBXXyh0LGUpe2NvbnN0IHI9dFtTeW1ib2wuaXRlcmF0b3JdKCksbj1uZXcgU2V0O2Zvcihjb25zdCBpIG9mIGUpe2NvbnN0IGE9SF8oaSk7aWYobi5oYXMoYSkpY29udGludWU7bGV0IHMsbztmb3IoO3t2YWx1ZTpzLGRvbmU6b309ci5uZXh0KCk7KXtpZihvKXJldHVybiExO2NvbnN0IGw9SF8ocyk7aWYobi5hZGQobCksT2JqZWN0LmlzKGEsbCkpYnJlYWt9fXJldHVybiEwfWZ1bmN0aW9uIEhfKHQpe3JldHVybiB0IT09bnVsbCYmdHlwZW9mIHQ9PSJvYmplY3QiP3QudmFsdWVPZigpOnR9ZnVuY3Rpb24geEkodCxlKXtyZXR1cm4gV18oZSx0KX1mdW5jdGlvbiBrSSguLi50KXtjb25zdCBlPW5ldyB1cztmb3IoY29uc3QgciBvZiB0KWZvcihjb25zdCBuIG9mIHIpZS5hZGQobik7cmV0dXJuIGV9ZnVuY3Rpb24gd0kodCl7cmV0dXJuIHR9dmFyIEN1PTEsU3U9MiwkMD0zLFNsPTQsR189MWUtNjtmdW5jdGlvbiBUSSh0KXtyZXR1cm4idHJhbnNsYXRlKCIrdCsiLDApIn1mdW5jdGlvbiBFSSh0KXtyZXR1cm4idHJhbnNsYXRlKDAsIit0KyIpIn1mdW5jdGlvbiBDSSh0KXtyZXR1cm4gZT0+K3QoZSl9ZnVuY3Rpb24gU0kodCxlKXtyZXR1cm4gZT1NYXRoLm1heCgwLHQuYmFuZHdpZHRoKCktZSoyKS8yLHQucm91bmQoKSYmKGU9TWF0aC5yb3VuZChlKSkscj0+K3QocikrZX1mdW5jdGlvbiBBSSgpe3JldHVybiF0aGlzLl9fYXhpc31mdW5jdGlvbiBBdSh0LGUpe3ZhciByPVtdLG49bnVsbCxpPW51bGwsYT02LHM9NixvPTMsbD10eXBlb2Ygd2luZG93PCJ1IiYmd2luZG93LmRldmljZVBpeGVsUmF0aW8+MT8wOi41LHU9dD09PUN1fHx0PT09U2w/LTE6MSxoPXQ9PT1TbHx8dD09PVN1PyJ4IjoieSIsZD10PT09Q3V8fHQ9PT0kMD9USTpFSTtmdW5jdGlvbiBmKHApe3ZhciBtPW49PW51bGw/ZS50aWNrcz9lLnRpY2tzLmFwcGx5KGUscik6ZS5kb21haW4oKTpuLF89aT09bnVsbD9lLnRpY2tGb3JtYXQ/ZS50aWNrRm9ybWF0LmFwcGx5KGUscik6d0k6aSx5PU1hdGgubWF4KGEsMCkrbyxiPWUucmFuZ2UoKSx4PStiWzBdK2wsaz0rYltiLmxlbmd0aC0xXStsLFQ9KGUuYmFuZHdpZHRoP1NJOkNJKShlLmNvcHkoKSxsKSxDPXAuc2VsZWN0aW9uP3Auc2VsZWN0aW9uKCk6cCxNPUMuc2VsZWN0QWxsKCIuZG9tYWluIikuZGF0YShbbnVsbF0pLFM9Qy5zZWxlY3RBbGwoIi50aWNrIikuZGF0YShtLGUpLm9yZGVyKCksUj1TLmV4aXQoKSxBPVMuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsInRpY2siKSxMPVMuc2VsZWN0KCJsaW5lIiksdj1TLnNlbGVjdCgidGV4dCIpO009TS5tZXJnZShNLmVudGVyKCkuaW5zZXJ0KCJwYXRoIiwiLnRpY2siKS5hdHRyKCJjbGFzcyIsImRvbWFpbiIpLmF0dHIoInN0cm9rZSIsImN1cnJlbnRDb2xvciIpKSxTPVMubWVyZ2UoQSksTD1MLm1lcmdlKEEuYXBwZW5kKCJsaW5lIikuYXR0cigic3Ryb2tlIiwiY3VycmVudENvbG9yIikuYXR0cihoKyIyIix1KmEpKSx2PXYubWVyZ2UoQS5hcHBlbmQoInRleHQiKS5hdHRyKCJmaWxsIiwiY3VycmVudENvbG9yIikuYXR0cihoLHUqeSkuYXR0cigiZHkiLHQ9PT1DdT8iMGVtIjp0PT09JDA/IjAuNzFlbSI6IjAuMzJlbSIpKSxwIT09QyYmKE09TS50cmFuc2l0aW9uKHApLFM9Uy50cmFuc2l0aW9uKHApLEw9TC50cmFuc2l0aW9uKHApLHY9di50cmFuc2l0aW9uKHApLFI9Ui50cmFuc2l0aW9uKHApLmF0dHIoIm9wYWNpdHkiLEdfKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKEIpe3JldHVybiBpc0Zpbml0ZShCPVQoQikpP2QoQitsKTp0aGlzLmdldEF0dHJpYnV0ZSgidHJhbnNmb3JtIil9KSxBLmF0dHIoIm9wYWNpdHkiLEdfKS5hdHRyKCJ0cmFuc2Zvcm0iLGZ1bmN0aW9uKEIpe3ZhciB3PXRoaXMucGFyZW50Tm9kZS5fX2F4aXM7cmV0dXJuIGQoKHcmJmlzRmluaXRlKHc9dyhCKSk/dzpUKEIpKStsKX0pKSxSLnJlbW92ZSgpLE0uYXR0cigiZCIsdD09PVNsfHx0PT09U3U/cz8iTSIrdSpzKyIsIit4KyJIIitsKyJWIitrKyJIIit1KnM6Ik0iK2wrIiwiK3grIlYiK2s6cz8iTSIreCsiLCIrdSpzKyJWIitsKyJIIitrKyJWIit1KnM6Ik0iK3grIiwiK2wrIkgiK2spLFMuYXR0cigib3BhY2l0eSIsMSkuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihCKXtyZXR1cm4gZChUKEIpK2wpfSksTC5hdHRyKGgrIjIiLHUqYSksdi5hdHRyKGgsdSp5KS50ZXh0KF8pLEMuZmlsdGVyKEFJKS5hdHRyKCJmaWxsIiwibm9uZSIpLmF0dHIoImZvbnQtc2l6ZSIsMTApLmF0dHIoImZvbnQtZmFtaWx5Iiwic2Fucy1zZXJpZiIpLmF0dHIoInRleHQtYW5jaG9yIix0PT09U3U/InN0YXJ0Ijp0PT09U2w/ImVuZCI6Im1pZGRsZSIpLEMuZWFjaChmdW5jdGlvbigpe3RoaXMuX19heGlzPVR9KX1yZXR1cm4gZi5zY2FsZT1mdW5jdGlvbihwKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1wLGYpOmV9LGYudGlja3M9ZnVuY3Rpb24oKXtyZXR1cm4gcj1BcnJheS5mcm9tKGFyZ3VtZW50cyksZn0sZi50aWNrQXJndW1lbnRzPWZ1bmN0aW9uKHApe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXA9PW51bGw/W106QXJyYXkuZnJvbShwKSxmKTpyLnNsaWNlKCl9LGYudGlja1ZhbHVlcz1mdW5jdGlvbihwKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1wPT1udWxsP251bGw6QXJyYXkuZnJvbShwKSxmKTpuJiZuLnNsaWNlKCl9LGYudGlja0Zvcm1hdD1mdW5jdGlvbihwKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT1wLGYpOml9LGYudGlja1NpemU9ZnVuY3Rpb24ocCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9cz0rcCxmKTphfSxmLnRpY2tTaXplSW5uZXI9ZnVuY3Rpb24ocCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9K3AsZik6YX0sZi50aWNrU2l6ZU91dGVyPWZ1bmN0aW9uKHApe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPStwLGYpOnN9LGYudGlja1BhZGRpbmc9ZnVuY3Rpb24ocCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89K3AsZik6b30sZi5vZmZzZXQ9ZnVuY3Rpb24ocCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9K3AsZik6bH0sZn1mdW5jdGlvbiBqXyh0KXtyZXR1cm4gQXUoQ3UsdCl9ZnVuY3Rpb24gTUkodCl7cmV0dXJuIEF1KFN1LHQpfWZ1bmN0aW9uICRfKHQpe3JldHVybiBBdSgkMCx0KX1mdW5jdGlvbiBMSSh0KXtyZXR1cm4gQXUoU2wsdCl9dmFyIFJJPXt2YWx1ZTooKT0+e319O2Z1bmN0aW9uIGZzKCl7Zm9yKHZhciB0PTAsZT1hcmd1bWVudHMubGVuZ3RoLHI9e30sbjt0PGU7Kyt0KXtpZighKG49YXJndW1lbnRzW3RdKyIiKXx8biBpbiByfHwvW1xzLl0vLnRlc3QobikpdGhyb3cgbmV3IEVycm9yKCJpbGxlZ2FsIHR5cGU6ICIrbik7cltuXT1bXX1yZXR1cm4gbmV3IE11KHIpfWZ1bmN0aW9uIE11KHQpe3RoaXMuXz10fWZ1bmN0aW9uIElJKHQsZSl7cmV0dXJuIHQudHJpbSgpLnNwbGl0KC9efFxzKy8pLm1hcChmdW5jdGlvbihyKXt2YXIgbj0iIixpPXIuaW5kZXhPZigiLiIpO2lmKGk+PTAmJihuPXIuc2xpY2UoaSsxKSxyPXIuc2xpY2UoMCxpKSksciYmIWUuaGFzT3duUHJvcGVydHkocikpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrcik7cmV0dXJue3R5cGU6cixuYW1lOm59fSl9TXUucHJvdG90eXBlPWZzLnByb3RvdHlwZT17Y29uc3RydWN0b3I6TXUsb246ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLl8sbj1JSSh0KyIiLHIpLGksYT0tMSxzPW4ubGVuZ3RoO2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7Zm9yKDsrK2E8czspaWYoKGk9KHQ9blthXSkudHlwZSkmJihpPU5JKHJbaV0sdC5uYW1lKSkpcmV0dXJuIGk7cmV0dXJufWlmKGUhPW51bGwmJnR5cGVvZiBlIT0iZnVuY3Rpb24iKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBjYWxsYmFjazogIitlKTtmb3IoOysrYTxzOylpZihpPSh0PW5bYV0pLnR5cGUpcltpXT1YXyhyW2ldLHQubmFtZSxlKTtlbHNlIGlmKGU9PW51bGwpZm9yKGkgaW4gcilyW2ldPVhfKHJbaV0sdC5uYW1lLG51bGwpO3JldHVybiB0aGlzfSxjb3B5OmZ1bmN0aW9uKCl7dmFyIHQ9e30sZT10aGlzLl87Zm9yKHZhciByIGluIGUpdFtyXT1lW3JdLnNsaWNlKCk7cmV0dXJuIG5ldyBNdSh0KX0sY2FsbDpmdW5jdGlvbih0LGUpe2lmKChpPWFyZ3VtZW50cy5sZW5ndGgtMik+MClmb3IodmFyIHI9bmV3IEFycmF5KGkpLG49MCxpLGE7bjxpOysrbilyW25dPWFyZ3VtZW50c1tuKzJdO2lmKCF0aGlzLl8uaGFzT3duUHJvcGVydHkodCkpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHR5cGU6ICIrdCk7Zm9yKGE9dGhpcy5fW3RdLG49MCxpPWEubGVuZ3RoO248aTsrK24pYVtuXS52YWx1ZS5hcHBseShlLHIpfSxhcHBseTpmdW5jdGlvbih0LGUscil7aWYoIXRoaXMuXy5oYXNPd25Qcm9wZXJ0eSh0KSl0aHJvdyBuZXcgRXJyb3IoInVua25vd24gdHlwZTogIit0KTtmb3IodmFyIG49dGhpcy5fW3RdLGk9MCxhPW4ubGVuZ3RoO2k8YTsrK2kpbltpXS52YWx1ZS5hcHBseShlLHIpfX07ZnVuY3Rpb24gTkkodCxlKXtmb3IodmFyIHI9MCxuPXQubGVuZ3RoLGk7cjxuOysrcilpZigoaT10W3JdKS5uYW1lPT09ZSlyZXR1cm4gaS52YWx1ZX1mdW5jdGlvbiBYXyh0LGUscil7Zm9yKHZhciBuPTAsaT10Lmxlbmd0aDtuPGk7KytuKWlmKHRbbl0ubmFtZT09PWUpe3Rbbl09UkksdD10LnNsaWNlKDAsbikuY29uY2F0KHQuc2xpY2UobisxKSk7YnJlYWt9cmV0dXJuIHIhPW51bGwmJnQucHVzaCh7bmFtZTplLHZhbHVlOnJ9KSx0fXZhciBYMD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI7Y29uc3QgSzA9e3N2ZzoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHhodG1sOlgwLHhsaW5rOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIix4bWw6Imh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSIseG1sbnM6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvIn07ZnVuY3Rpb24gQWwodCl7dmFyIGU9dCs9IiIscj1lLmluZGV4T2YoIjoiKTtyZXR1cm4gcj49MCYmKGU9dC5zbGljZSgwLHIpKSE9PSJ4bWxucyImJih0PXQuc2xpY2UocisxKSksSzAuaGFzT3duUHJvcGVydHkoZSk/e3NwYWNlOkswW2VdLGxvY2FsOnR9OnR9ZnVuY3Rpb24gQkkodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vd25lckRvY3VtZW50LHI9dGhpcy5uYW1lc3BhY2VVUkk7cmV0dXJuIHI9PT1YMCYmZS5kb2N1bWVudEVsZW1lbnQubmFtZXNwYWNlVVJJPT09WDA/ZS5jcmVhdGVFbGVtZW50KHQpOmUuY3JlYXRlRWxlbWVudE5TKHIsdCl9fWZ1bmN0aW9uIERJKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIEx1KHQpe3ZhciBlPUFsKHQpO3JldHVybihlLmxvY2FsP0RJOkJJKShlKX1mdW5jdGlvbiBPSSgpe31mdW5jdGlvbiBSdSh0KXtyZXR1cm4gdD09bnVsbD9PSTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3IodCl9fWZ1bmN0aW9uIEZJKHQpe3R5cGVvZiB0IT0iZnVuY3Rpb24iJiYodD1SdSh0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxyPWUubGVuZ3RoLG49bmV3IEFycmF5KHIpLGk9MDtpPHI7KytpKWZvcih2YXIgYT1lW2ldLHM9YS5sZW5ndGgsbz1uW2ldPW5ldyBBcnJheShzKSxsLHUsaD0wO2g8czsrK2gpKGw9YVtoXSkmJih1PXQuY2FsbChsLGwuX19kYXRhX18saCxhKSkmJigiX19kYXRhX18iaW4gbCYmKHUuX19kYXRhX189bC5fX2RhdGFfXyksb1toXT11KTtyZXR1cm4gbmV3ICRyKG4sdGhpcy5fcGFyZW50cyl9ZnVuY3Rpb24gS18odCl7cmV0dXJuIHQ9PW51bGw/W106QXJyYXkuaXNBcnJheSh0KT90OkFycmF5LmZyb20odCl9ZnVuY3Rpb24gUEkoKXtyZXR1cm5bXX1mdW5jdGlvbiBaMCh0KXtyZXR1cm4gdD09bnVsbD9QSTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnF1ZXJ5U2VsZWN0b3JBbGwodCl9fWZ1bmN0aW9uIHFJKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBLXyh0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9fWZ1bmN0aW9uIFZJKHQpe3R5cGVvZiB0PT0iZnVuY3Rpb24iP3Q9cUkodCk6dD1aMCh0KTtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLHI9ZS5sZW5ndGgsbj1bXSxpPVtdLGE9MDthPHI7KythKWZvcih2YXIgcz1lW2FdLG89cy5sZW5ndGgsbCx1PTA7dTxvOysrdSkobD1zW3VdKSYmKG4ucHVzaCh0LmNhbGwobCxsLl9fZGF0YV9fLHUscykpLGkucHVzaChsKSk7cmV0dXJuIG5ldyAkcihuLGkpfWZ1bmN0aW9uIFEwKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hdGNoZXModCl9fWZ1bmN0aW9uIFpfKHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZS5tYXRjaGVzKHQpfX12YXIgekk9QXJyYXkucHJvdG90eXBlLmZpbmQ7ZnVuY3Rpb24gWUkodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHpJLmNhbGwodGhpcy5jaGlsZHJlbix0KX19ZnVuY3Rpb24gVUkoKXtyZXR1cm4gdGhpcy5maXJzdEVsZW1lbnRDaGlsZH1mdW5jdGlvbiBXSSh0KXtyZXR1cm4gdGhpcy5zZWxlY3QodD09bnVsbD9VSTpZSSh0eXBlb2YgdD09ImZ1bmN0aW9uIj90OlpfKHQpKSl9dmFyIEhJPUFycmF5LnByb3RvdHlwZS5maWx0ZXI7ZnVuY3Rpb24gR0koKXtyZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmNoaWxkcmVuKX1mdW5jdGlvbiBqSSh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gSEkuY2FsbCh0aGlzLmNoaWxkcmVuLHQpfX1mdW5jdGlvbiAkSSh0KXtyZXR1cm4gdGhpcy5zZWxlY3RBbGwodD09bnVsbD9HSTpqSSh0eXBlb2YgdD09ImZ1bmN0aW9uIj90OlpfKHQpKSl9ZnVuY3Rpb24gWEkodCl7dHlwZW9mIHQhPSJmdW5jdGlvbiImJih0PVEwKHQpKTtmb3IodmFyIGU9dGhpcy5fZ3JvdXBzLHI9ZS5sZW5ndGgsbj1uZXcgQXJyYXkociksaT0wO2k8cjsrK2kpZm9yKHZhciBhPWVbaV0scz1hLmxlbmd0aCxvPW5baV09W10sbCx1PTA7dTxzOysrdSkobD1hW3VdKSYmdC5jYWxsKGwsbC5fX2RhdGFfXyx1LGEpJiZvLnB1c2gobCk7cmV0dXJuIG5ldyAkcihuLHRoaXMuX3BhcmVudHMpfWZ1bmN0aW9uIFFfKHQpe3JldHVybiBuZXcgQXJyYXkodC5sZW5ndGgpfWZ1bmN0aW9uIEtJKCl7cmV0dXJuIG5ldyAkcih0aGlzLl9lbnRlcnx8dGhpcy5fZ3JvdXBzLm1hcChRXyksdGhpcy5fcGFyZW50cyl9ZnVuY3Rpb24gSXUodCxlKXt0aGlzLm93bmVyRG9jdW1lbnQ9dC5vd25lckRvY3VtZW50LHRoaXMubmFtZXNwYWNlVVJJPXQubmFtZXNwYWNlVVJJLHRoaXMuX25leHQ9bnVsbCx0aGlzLl9wYXJlbnQ9dCx0aGlzLl9fZGF0YV9fPWV9SXUucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpJdSxhcHBlbmRDaGlsZDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGFyZW50Lmluc2VydEJlZm9yZSh0LHRoaXMuX25leHQpfSxpbnNlcnRCZWZvcmU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5fcGFyZW50Lmluc2VydEJlZm9yZSh0LGUpfSxxdWVyeVNlbGVjdG9yOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9wYXJlbnQucXVlcnlTZWxlY3Rvcih0KX0scXVlcnlTZWxlY3RvckFsbDpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fcGFyZW50LnF1ZXJ5U2VsZWN0b3JBbGwodCl9fTtmdW5jdGlvbiBaSSh0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gUUkodCxlLHIsbixpLGEpe2Zvcih2YXIgcz0wLG8sbD1lLmxlbmd0aCx1PWEubGVuZ3RoO3M8dTsrK3MpKG89ZVtzXSk/KG8uX19kYXRhX189YVtzXSxuW3NdPW8pOnJbc109bmV3IEl1KHQsYVtzXSk7Zm9yKDtzPGw7KytzKShvPWVbc10pJiYoaVtzXT1vKX1mdW5jdGlvbiBKSSh0LGUscixuLGksYSxzKXt2YXIgbyxsLHU9bmV3IE1hcCxoPWUubGVuZ3RoLGQ9YS5sZW5ndGgsZj1uZXcgQXJyYXkoaCkscDtmb3Iobz0wO288aDsrK28pKGw9ZVtvXSkmJihmW29dPXA9cy5jYWxsKGwsbC5fX2RhdGFfXyxvLGUpKyIiLHUuaGFzKHApP2lbb109bDp1LnNldChwLGwpKTtmb3Iobz0wO288ZDsrK28pcD1zLmNhbGwodCxhW29dLG8sYSkrIiIsKGw9dS5nZXQocCkpPyhuW29dPWwsbC5fX2RhdGFfXz1hW29dLHUuZGVsZXRlKHApKTpyW29dPW5ldyBJdSh0LGFbb10pO2ZvcihvPTA7bzxoOysrbykobD1lW29dKSYmdS5nZXQoZltvXSk9PT1sJiYoaVtvXT1sKX1mdW5jdGlvbiB0Tih0KXtyZXR1cm4gdC5fX2RhdGFfX31mdW5jdGlvbiBlTih0LGUpe2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBBcnJheS5mcm9tKHRoaXMsdE4pO3ZhciByPWU/Skk6UUksbj10aGlzLl9wYXJlbnRzLGk9dGhpcy5fZ3JvdXBzO3R5cGVvZiB0IT0iZnVuY3Rpb24iJiYodD1aSSh0KSk7Zm9yKHZhciBhPWkubGVuZ3RoLHM9bmV3IEFycmF5KGEpLG89bmV3IEFycmF5KGEpLGw9bmV3IEFycmF5KGEpLHU9MDt1PGE7Kyt1KXt2YXIgaD1uW3VdLGQ9aVt1XSxmPWQubGVuZ3RoLHA9ck4odC5jYWxsKGgsaCYmaC5fX2RhdGFfXyx1LG4pKSxtPXAubGVuZ3RoLF89b1t1XT1uZXcgQXJyYXkobSkseT1zW3VdPW5ldyBBcnJheShtKSxiPWxbdV09bmV3IEFycmF5KGYpO3IoaCxkLF8seSxiLHAsZSk7Zm9yKHZhciB4PTAsaz0wLFQsQzt4PG07Kyt4KWlmKFQ9X1t4XSl7Zm9yKHg+PWsmJihrPXgrMSk7IShDPXlba10pJiYrK2s8bTspO1QuX25leHQ9Q3x8bnVsbH19cmV0dXJuIHM9bmV3ICRyKHMsbikscy5fZW50ZXI9byxzLl9leGl0PWwsc31mdW5jdGlvbiByTih0KXtyZXR1cm4gdHlwZW9mIHQ9PSJvYmplY3QiJiYibGVuZ3RoImluIHQ/dDpBcnJheS5mcm9tKHQpfWZ1bmN0aW9uIG5OKCl7cmV0dXJuIG5ldyAkcih0aGlzLl9leGl0fHx0aGlzLl9ncm91cHMubWFwKFFfKSx0aGlzLl9wYXJlbnRzKX1mdW5jdGlvbiBpTih0LGUscil7dmFyIG49dGhpcy5lbnRlcigpLGk9dGhpcyxhPXRoaXMuZXhpdCgpO3JldHVybiB0eXBlb2YgdD09ImZ1bmN0aW9uIj8obj10KG4pLG4mJihuPW4uc2VsZWN0aW9uKCkpKTpuPW4uYXBwZW5kKHQrIiIpLGUhPW51bGwmJihpPWUoaSksaSYmKGk9aS5zZWxlY3Rpb24oKSkpLHI9PW51bGw/YS5yZW1vdmUoKTpyKGEpLG4mJmk/bi5tZXJnZShpKS5vcmRlcigpOml9ZnVuY3Rpb24gYU4odCl7Zm9yKHZhciBlPXQuc2VsZWN0aW9uP3Quc2VsZWN0aW9uKCk6dCxyPXRoaXMuX2dyb3VwcyxuPWUuX2dyb3VwcyxpPXIubGVuZ3RoLGE9bi5sZW5ndGgscz1NYXRoLm1pbihpLGEpLG89bmV3IEFycmF5KGkpLGw9MDtsPHM7KytsKWZvcih2YXIgdT1yW2xdLGg9bltsXSxkPXUubGVuZ3RoLGY9b1tsXT1uZXcgQXJyYXkoZCkscCxtPTA7bTxkOysrbSkocD11W21dfHxoW21dKSYmKGZbbV09cCk7Zm9yKDtsPGk7KytsKW9bbF09cltsXTtyZXR1cm4gbmV3ICRyKG8sdGhpcy5fcGFyZW50cyl9ZnVuY3Rpb24gc04oKXtmb3IodmFyIHQ9dGhpcy5fZ3JvdXBzLGU9LTEscj10Lmxlbmd0aDsrK2U8cjspZm9yKHZhciBuPXRbZV0saT1uLmxlbmd0aC0xLGE9bltpXSxzOy0taT49MDspKHM9bltpXSkmJihhJiZzLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGEpXjQmJmEucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocyxhKSxhPXMpO3JldHVybiB0aGlzfWZ1bmN0aW9uIG9OKHQpe3R8fCh0PWxOKTtmdW5jdGlvbiBlKGQsZil7cmV0dXJuIGQmJmY/dChkLl9fZGF0YV9fLGYuX19kYXRhX18pOiFkLSFmfWZvcih2YXIgcj10aGlzLl9ncm91cHMsbj1yLmxlbmd0aCxpPW5ldyBBcnJheShuKSxhPTA7YTxuOysrYSl7Zm9yKHZhciBzPXJbYV0sbz1zLmxlbmd0aCxsPWlbYV09bmV3IEFycmF5KG8pLHUsaD0wO2g8bzsrK2gpKHU9c1toXSkmJihsW2hdPXUpO2wuc29ydChlKX1yZXR1cm4gbmV3ICRyKGksdGhpcy5fcGFyZW50cykub3JkZXIoKX1mdW5jdGlvbiBsTih0LGUpe3JldHVybiB0PGU/LTE6dD5lPzE6dD49ZT8wOk5hTn1mdW5jdGlvbiBjTigpe3ZhciB0PWFyZ3VtZW50c1swXTtyZXR1cm4gYXJndW1lbnRzWzBdPXRoaXMsdC5hcHBseShudWxsLGFyZ3VtZW50cyksdGhpc31mdW5jdGlvbiB1Tigpe3JldHVybiBBcnJheS5mcm9tKHRoaXMpfWZ1bmN0aW9uIGhOKCl7Zm9yKHZhciB0PXRoaXMuX2dyb3VwcyxlPTAscj10Lmxlbmd0aDtlPHI7KytlKWZvcih2YXIgbj10W2VdLGk9MCxhPW4ubGVuZ3RoO2k8YTsrK2kpe3ZhciBzPW5baV07aWYocylyZXR1cm4gc31yZXR1cm4gbnVsbH1mdW5jdGlvbiBmTigpe2xldCB0PTA7Zm9yKGNvbnN0IGUgb2YgdGhpcykrK3Q7cmV0dXJuIHR9ZnVuY3Rpb24gZE4oKXtyZXR1cm4hdGhpcy5ub2RlKCl9ZnVuY3Rpb24gcE4odCl7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxyPTAsbj1lLmxlbmd0aDtyPG47KytyKWZvcih2YXIgaT1lW3JdLGE9MCxzPWkubGVuZ3RoLG87YTxzOysrYSkobz1pW2FdKSYmdC5jYWxsKG8sby5fX2RhdGFfXyxhLGkpO3JldHVybiB0aGlzfWZ1bmN0aW9uIGdOKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpfX1mdW5jdGlvbiB5Tih0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCl9fWZ1bmN0aW9uIG1OKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5zZXRBdHRyaWJ1dGUodCxlKX19ZnVuY3Rpb24gYk4odCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnNldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCxlKX19ZnVuY3Rpb24gX04odCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyPT1udWxsP3RoaXMucmVtb3ZlQXR0cmlidXRlKHQpOnRoaXMuc2V0QXR0cmlidXRlKHQscil9fWZ1bmN0aW9uIHZOKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHI9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cj09bnVsbD90aGlzLnJlbW92ZUF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCk6dGhpcy5zZXRBdHRyaWJ1dGVOUyh0LnNwYWNlLHQubG9jYWwscil9fWZ1bmN0aW9uIHhOKHQsZSl7dmFyIHI9QWwodCk7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXt2YXIgbj10aGlzLm5vZGUoKTtyZXR1cm4gci5sb2NhbD9uLmdldEF0dHJpYnV0ZU5TKHIuc3BhY2Usci5sb2NhbCk6bi5nZXRBdHRyaWJ1dGUocil9cmV0dXJuIHRoaXMuZWFjaCgoZT09bnVsbD9yLmxvY2FsP3lOOmdOOnR5cGVvZiBlPT0iZnVuY3Rpb24iP3IubG9jYWw/dk46X046ci5sb2NhbD9iTjptTikocixlKSl9ZnVuY3Rpb24gSjAodCl7cmV0dXJuIHQub3duZXJEb2N1bWVudCYmdC5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3fHx0LmRvY3VtZW50JiZ0fHx0LmRlZmF1bHRWaWV3fWZ1bmN0aW9uIGtOKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCl9fWZ1bmN0aW9uIHdOKHQsZSxyKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQsZSxyKX19ZnVuY3Rpb24gVE4odCxlLHIpe3JldHVybiBmdW5jdGlvbigpe3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO249PW51bGw/dGhpcy5zdHlsZS5yZW1vdmVQcm9wZXJ0eSh0KTp0aGlzLnN0eWxlLnNldFByb3BlcnR5KHQsbixyKX19ZnVuY3Rpb24gRU4odCxlLHIpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPjE/dGhpcy5lYWNoKChlPT1udWxsP2tOOnR5cGVvZiBlPT0iZnVuY3Rpb24iP1ROOndOKSh0LGUscj09bnVsbD8iIjpyKSk6ZHModGhpcy5ub2RlKCksdCl9ZnVuY3Rpb24gZHModCxlKXtyZXR1cm4gdC5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKGUpfHxKMCh0KS5nZXRDb21wdXRlZFN0eWxlKHQsbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZShlKX1mdW5jdGlvbiBDTih0KXtyZXR1cm4gZnVuY3Rpb24oKXtkZWxldGUgdGhpc1t0XX19ZnVuY3Rpb24gU04odCxlKXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzW3RdPWV9fWZ1bmN0aW9uIEFOKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHI9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cj09bnVsbD9kZWxldGUgdGhpc1t0XTp0aGlzW3RdPXJ9fWZ1bmN0aW9uIE1OKHQsZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MT90aGlzLmVhY2goKGU9PW51bGw/Q046dHlwZW9mIGU9PSJmdW5jdGlvbiI/QU46U04pKHQsZSkpOnRoaXMubm9kZSgpW3RdfWZ1bmN0aW9uIEpfKHQpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKX1mdW5jdGlvbiB0ZCh0KXtyZXR1cm4gdC5jbGFzc0xpc3R8fG5ldyB0NSh0KX1mdW5jdGlvbiB0NSh0KXt0aGlzLl9ub2RlPXQsdGhpcy5fbmFtZXM9Sl8odC5nZXRBdHRyaWJ1dGUoImNsYXNzIil8fCIiKX10NS5wcm90b3R5cGU9e2FkZDpmdW5jdGlvbih0KXt2YXIgZT10aGlzLl9uYW1lcy5pbmRleE9mKHQpO2U8MCYmKHRoaXMuX25hbWVzLnB1c2godCksdGhpcy5fbm9kZS5zZXRBdHRyaWJ1dGUoImNsYXNzIix0aGlzLl9uYW1lcy5qb2luKCIgIikpKX0scmVtb3ZlOmZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMuX25hbWVzLmluZGV4T2YodCk7ZT49MCYmKHRoaXMuX25hbWVzLnNwbGljZShlLDEpLHRoaXMuX25vZGUuc2V0QXR0cmlidXRlKCJjbGFzcyIsdGhpcy5fbmFtZXMuam9pbigiICIpKSl9LGNvbnRhaW5zOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9uYW1lcy5pbmRleE9mKHQpPj0wfX07ZnVuY3Rpb24gZTUodCxlKXtmb3IodmFyIHI9dGQodCksbj0tMSxpPWUubGVuZ3RoOysrbjxpOylyLmFkZChlW25dKX1mdW5jdGlvbiByNSh0LGUpe2Zvcih2YXIgcj10ZCh0KSxuPS0xLGk9ZS5sZW5ndGg7KytuPGk7KXIucmVtb3ZlKGVbbl0pfWZ1bmN0aW9uIExOKHQpe3JldHVybiBmdW5jdGlvbigpe2U1KHRoaXMsdCl9fWZ1bmN0aW9uIFJOKHQpe3JldHVybiBmdW5jdGlvbigpe3I1KHRoaXMsdCl9fWZ1bmN0aW9uIElOKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7KGUuYXBwbHkodGhpcyxhcmd1bWVudHMpP2U1OnI1KSh0aGlzLHQpfX1mdW5jdGlvbiBOTih0LGUpe3ZhciByPUpfKHQrIiIpO2lmKGFyZ3VtZW50cy5sZW5ndGg8Mil7Zm9yKHZhciBuPXRkKHRoaXMubm9kZSgpKSxpPS0xLGE9ci5sZW5ndGg7KytpPGE7KWlmKCFuLmNvbnRhaW5zKHJbaV0pKXJldHVybiExO3JldHVybiEwfXJldHVybiB0aGlzLmVhY2goKHR5cGVvZiBlPT0iZnVuY3Rpb24iP0lOOmU/TE46Uk4pKHIsZSkpfWZ1bmN0aW9uIEJOKCl7dGhpcy50ZXh0Q29udGVudD0iIn1mdW5jdGlvbiBETih0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnRleHRDb250ZW50PXR9fWZ1bmN0aW9uIE9OKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMudGV4dENvbnRlbnQ9ZT09bnVsbD8iIjplfX1mdW5jdGlvbiBGTih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2godD09bnVsbD9CTjoodHlwZW9mIHQ9PSJmdW5jdGlvbiI/T046RE4pKHQpKTp0aGlzLm5vZGUoKS50ZXh0Q29udGVudH1mdW5jdGlvbiBQTigpe3RoaXMuaW5uZXJIVE1MPSIifWZ1bmN0aW9uIHFOKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMuaW5uZXJIVE1MPXR9fWZ1bmN0aW9uIFZOKHQpe3JldHVybiBmdW5jdGlvbigpe3ZhciBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMuaW5uZXJIVE1MPWU9PW51bGw/IiI6ZX19ZnVuY3Rpb24gek4odCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/dGhpcy5lYWNoKHQ9PW51bGw/UE46KHR5cGVvZiB0PT0iZnVuY3Rpb24iP1ZOOnFOKSh0KSk6dGhpcy5ub2RlKCkuaW5uZXJIVE1MfWZ1bmN0aW9uIFlOKCl7dGhpcy5uZXh0U2libGluZyYmdGhpcy5wYXJlbnROb2RlLmFwcGVuZENoaWxkKHRoaXMpfWZ1bmN0aW9uIFVOKCl7cmV0dXJuIHRoaXMuZWFjaChZTil9ZnVuY3Rpb24gV04oKXt0aGlzLnByZXZpb3VzU2libGluZyYmdGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLHRoaXMucGFyZW50Tm9kZS5maXJzdENoaWxkKX1mdW5jdGlvbiBITigpe3JldHVybiB0aGlzLmVhY2goV04pfWZ1bmN0aW9uIEdOKHQpe3ZhciBlPXR5cGVvZiB0PT0iZnVuY3Rpb24iP3Q6THUodCk7cmV0dXJuIHRoaXMuc2VsZWN0KGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYXBwZW5kQ2hpbGQoZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfSl9ZnVuY3Rpb24gak4oKXtyZXR1cm4gbnVsbH1mdW5jdGlvbiAkTih0LGUpe3ZhciByPXR5cGVvZiB0PT0iZnVuY3Rpb24iP3Q6THUodCksbj1lPT1udWxsP2pOOnR5cGVvZiBlPT0iZnVuY3Rpb24iP2U6UnUoZSk7cmV0dXJuIHRoaXMuc2VsZWN0KGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5zZXJ0QmVmb3JlKHIuYXBwbHkodGhpcyxhcmd1bWVudHMpLG4uYXBwbHkodGhpcyxhcmd1bWVudHMpfHxudWxsKX0pfWZ1bmN0aW9uIFhOKCl7dmFyIHQ9dGhpcy5wYXJlbnROb2RlO3QmJnQucmVtb3ZlQ2hpbGQodGhpcyl9ZnVuY3Rpb24gS04oKXtyZXR1cm4gdGhpcy5lYWNoKFhOKX1mdW5jdGlvbiBaTigpe3ZhciB0PXRoaXMuY2xvbmVOb2RlKCExKSxlPXRoaXMucGFyZW50Tm9kZTtyZXR1cm4gZT9lLmluc2VydEJlZm9yZSh0LHRoaXMubmV4dFNpYmxpbmcpOnR9ZnVuY3Rpb24gUU4oKXt2YXIgdD10aGlzLmNsb25lTm9kZSghMCksZT10aGlzLnBhcmVudE5vZGU7cmV0dXJuIGU/ZS5pbnNlcnRCZWZvcmUodCx0aGlzLm5leHRTaWJsaW5nKTp0fWZ1bmN0aW9uIEpOKHQpe3JldHVybiB0aGlzLnNlbGVjdCh0P1FOOlpOKX1mdW5jdGlvbiB0Qih0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLnByb3BlcnR5KCJfX2RhdGFfXyIsdCk6dGhpcy5ub2RlKCkuX19kYXRhX199ZnVuY3Rpb24gZUIodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3QuY2FsbCh0aGlzLGUsdGhpcy5fX2RhdGFfXyl9fWZ1bmN0aW9uIHJCKHQpe3JldHVybiB0LnRyaW0oKS5zcGxpdCgvXnxccysvKS5tYXAoZnVuY3Rpb24oZSl7dmFyIHI9IiIsbj1lLmluZGV4T2YoIi4iKTtyZXR1cm4gbj49MCYmKHI9ZS5zbGljZShuKzEpLGU9ZS5zbGljZSgwLG4pKSx7dHlwZTplLG5hbWU6cn19KX1mdW5jdGlvbiBuQih0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9fb247aWYoISFlKXtmb3IodmFyIHI9MCxuPS0xLGk9ZS5sZW5ndGgsYTtyPGk7KytyKWE9ZVtyXSwoIXQudHlwZXx8YS50eXBlPT09dC50eXBlKSYmYS5uYW1lPT09dC5uYW1lP3RoaXMucmVtb3ZlRXZlbnRMaXN0ZW5lcihhLnR5cGUsYS5saXN0ZW5lcixhLm9wdGlvbnMpOmVbKytuXT1hOysrbj9lLmxlbmd0aD1uOmRlbGV0ZSB0aGlzLl9fb259fX1mdW5jdGlvbiBpQih0LGUscil7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49dGhpcy5fX29uLGksYT1lQihlKTtpZihuKXtmb3IodmFyIHM9MCxvPW4ubGVuZ3RoO3M8bzsrK3MpaWYoKGk9bltzXSkudHlwZT09PXQudHlwZSYmaS5uYW1lPT09dC5uYW1lKXt0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoaS50eXBlLGkubGlzdGVuZXIsaS5vcHRpb25zKSx0aGlzLmFkZEV2ZW50TGlzdGVuZXIoaS50eXBlLGkubGlzdGVuZXI9YSxpLm9wdGlvbnM9ciksaS52YWx1ZT1lO3JldHVybn19dGhpcy5hZGRFdmVudExpc3RlbmVyKHQudHlwZSxhLHIpLGk9e3R5cGU6dC50eXBlLG5hbWU6dC5uYW1lLHZhbHVlOmUsbGlzdGVuZXI6YSxvcHRpb25zOnJ9LG4/bi5wdXNoKGkpOnRoaXMuX19vbj1baV19fWZ1bmN0aW9uIGFCKHQsZSxyKXt2YXIgbj1yQih0KyIiKSxpLGE9bi5sZW5ndGgscztpZihhcmd1bWVudHMubGVuZ3RoPDIpe3ZhciBvPXRoaXMubm9kZSgpLl9fb247aWYobyl7Zm9yKHZhciBsPTAsdT1vLmxlbmd0aCxoO2w8dTsrK2wpZm9yKGk9MCxoPW9bbF07aTxhOysraSlpZigocz1uW2ldKS50eXBlPT09aC50eXBlJiZzLm5hbWU9PT1oLm5hbWUpcmV0dXJuIGgudmFsdWV9cmV0dXJufWZvcihvPWU/aUI6bkIsaT0wO2k8YTsrK2kpdGhpcy5lYWNoKG8obltpXSxlLHIpKTtyZXR1cm4gdGhpc31mdW5jdGlvbiBuNSh0LGUscil7dmFyIG49SjAodCksaT1uLkN1c3RvbUV2ZW50O3R5cGVvZiBpPT0iZnVuY3Rpb24iP2k9bmV3IGkoZSxyKTooaT1uLmRvY3VtZW50LmNyZWF0ZUV2ZW50KCJFdmVudCIpLHI/KGkuaW5pdEV2ZW50KGUsci5idWJibGVzLHIuY2FuY2VsYWJsZSksaS5kZXRhaWw9ci5kZXRhaWwpOmkuaW5pdEV2ZW50KGUsITEsITEpKSx0LmRpc3BhdGNoRXZlbnQoaSl9ZnVuY3Rpb24gc0IodCxlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gbjUodGhpcyx0LGUpfX1mdW5jdGlvbiBvQih0LGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBuNSh0aGlzLHQsZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfX1mdW5jdGlvbiBsQih0LGUpe3JldHVybiB0aGlzLmVhY2goKHR5cGVvZiBlPT0iZnVuY3Rpb24iP29COnNCKSh0LGUpKX1mdW5jdGlvbipjQigpe2Zvcih2YXIgdD10aGlzLl9ncm91cHMsZT0wLHI9dC5sZW5ndGg7ZTxyOysrZSlmb3IodmFyIG49dFtlXSxpPTAsYT1uLmxlbmd0aCxzO2k8YTsrK2kpKHM9bltpXSkmJih5aWVsZCBzKX12YXIgZWQ9W251bGxdO2Z1bmN0aW9uICRyKHQsZSl7dGhpcy5fZ3JvdXBzPXQsdGhpcy5fcGFyZW50cz1lfWZ1bmN0aW9uIHBzKCl7cmV0dXJuIG5ldyAkcihbW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudF1dLGVkKX1mdW5jdGlvbiB1Qigpe3JldHVybiB0aGlzfSRyLnByb3RvdHlwZT1wcy5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOiRyLHNlbGVjdDpGSSxzZWxlY3RBbGw6Vkksc2VsZWN0Q2hpbGQ6V0ksc2VsZWN0Q2hpbGRyZW46JEksZmlsdGVyOlhJLGRhdGE6ZU4sZW50ZXI6S0ksZXhpdDpuTixqb2luOmlOLG1lcmdlOmFOLHNlbGVjdGlvbjp1QixvcmRlcjpzTixzb3J0Om9OLGNhbGw6Y04sbm9kZXM6dU4sbm9kZTpoTixzaXplOmZOLGVtcHR5OmROLGVhY2g6cE4sYXR0cjp4TixzdHlsZTpFTixwcm9wZXJ0eTpNTixjbGFzc2VkOk5OLHRleHQ6Rk4saHRtbDp6TixyYWlzZTpVTixsb3dlcjpITixhcHBlbmQ6R04saW5zZXJ0OiROLHJlbW92ZTpLTixjbG9uZTpKTixkYXR1bTp0QixvbjphQixkaXNwYXRjaDpsQixbU3ltYm9sLml0ZXJhdG9yXTpjQn07ZnVuY3Rpb24gU3QodCl7cmV0dXJuIHR5cGVvZiB0PT0ic3RyaW5nIj9uZXcgJHIoW1tkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHQpXV0sW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudF0pOm5ldyAkcihbW3RdXSxlZCl9ZnVuY3Rpb24gaEIodCl7cmV0dXJuIFN0KEx1KHQpLmNhbGwoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSl9dmFyIGZCPTA7ZnVuY3Rpb24gaTUoKXtyZXR1cm4gbmV3IHJkfWZ1bmN0aW9uIHJkKCl7dGhpcy5fPSJAIisoKytmQikudG9TdHJpbmcoMzYpfXJkLnByb3RvdHlwZT1pNS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOnJkLGdldDpmdW5jdGlvbih0KXtmb3IodmFyIGU9dGhpcy5fOyEoZSBpbiB0KTspaWYoISh0PXQucGFyZW50Tm9kZSkpcmV0dXJuO3JldHVybiB0W2VdfSxzZXQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdFt0aGlzLl9dPWV9LHJlbW92ZTpmdW5jdGlvbih0KXtyZXR1cm4gdGhpcy5fIGluIHQmJmRlbGV0ZSB0W3RoaXMuX119LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX319O2Z1bmN0aW9uIGE1KHQpe2xldCBlO2Zvcig7ZT10LnNvdXJjZUV2ZW50Oyl0PWU7cmV0dXJuIHR9ZnVuY3Rpb24gVG4odCxlKXtpZih0PWE1KHQpLGU9PT12b2lkIDAmJihlPXQuY3VycmVudFRhcmdldCksZSl7dmFyIHI9ZS5vd25lclNWR0VsZW1lbnR8fGU7aWYoci5jcmVhdGVTVkdQb2ludCl7dmFyIG49ci5jcmVhdGVTVkdQb2ludCgpO3JldHVybiBuLng9dC5jbGllbnRYLG4ueT10LmNsaWVudFksbj1uLm1hdHJpeFRyYW5zZm9ybShlLmdldFNjcmVlbkNUTSgpLmludmVyc2UoKSksW24ueCxuLnldfWlmKGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KXt2YXIgaT1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3JldHVyblt0LmNsaWVudFgtaS5sZWZ0LWUuY2xpZW50TGVmdCx0LmNsaWVudFktaS50b3AtZS5jbGllbnRUb3BdfX1yZXR1cm5bdC5wYWdlWCx0LnBhZ2VZXX1mdW5jdGlvbiBkQih0LGUpe3JldHVybiB0LnRhcmdldCYmKHQ9YTUodCksZT09PXZvaWQgMCYmKGU9dC5jdXJyZW50VGFyZ2V0KSx0PXQudG91Y2hlc3x8W3RdKSxBcnJheS5mcm9tKHQscj0+VG4ocixlKSl9ZnVuY3Rpb24gTnUodCl7cmV0dXJuIHR5cGVvZiB0PT0ic3RyaW5nIj9uZXcgJHIoW2RvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwodCldLFtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdKTpuZXcgJHIoW0tfKHQpXSxlZCl9Y29uc3QgcEI9e3Bhc3NpdmU6ITF9LE1sPXtjYXB0dXJlOiEwLHBhc3NpdmU6ITF9O2Z1bmN0aW9uIG5kKHQpe3Quc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gY28odCl7dC5wcmV2ZW50RGVmYXVsdCgpLHQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gQnUodCl7dmFyIGU9dC5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQscj1TdCh0KS5vbigiZHJhZ3N0YXJ0LmRyYWciLGNvLE1sKTsib25zZWxlY3RzdGFydCJpbiBlP3Iub24oInNlbGVjdHN0YXJ0LmRyYWciLGNvLE1sKTooZS5fX25vc2VsZWN0PWUuc3R5bGUuTW96VXNlclNlbGVjdCxlLnN0eWxlLk1velVzZXJTZWxlY3Q9Im5vbmUiKX1mdW5jdGlvbiBEdSh0LGUpe3ZhciByPXQuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LG49U3QodCkub24oImRyYWdzdGFydC5kcmFnIixudWxsKTtlJiYobi5vbigiY2xpY2suZHJhZyIsY28sTWwpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtuLm9uKCJjbGljay5kcmFnIixudWxsKX0sMCkpLCJvbnNlbGVjdHN0YXJ0ImluIHI/bi5vbigic2VsZWN0c3RhcnQuZHJhZyIsbnVsbCk6KHIuc3R5bGUuTW96VXNlclNlbGVjdD1yLl9fbm9zZWxlY3QsZGVsZXRlIHIuX19ub3NlbGVjdCl9Y29uc3QgT3U9dD0+KCk9PnQ7ZnVuY3Rpb24gaWQodCx7c291cmNlRXZlbnQ6ZSxzdWJqZWN0OnIsdGFyZ2V0Om4saWRlbnRpZmllcjppLGFjdGl2ZTphLHg6cyx5Om8sZHg6bCxkeTp1LGRpc3BhdGNoOmh9KXtPYmplY3QuZGVmaW5lUHJvcGVydGllcyh0aGlzLHt0eXBlOnt2YWx1ZTp0LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSxzb3VyY2VFdmVudDp7dmFsdWU6ZSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0sc3ViamVjdDp7dmFsdWU6cixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0sdGFyZ2V0Ont2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSxpZGVudGlmaWVyOnt2YWx1ZTppLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSxhY3RpdmU6e3ZhbHVlOmEsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9LHg6e3ZhbHVlOnMsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9LHk6e3ZhbHVlOm8sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9LGR4Ont2YWx1ZTpsLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSxkeTp7dmFsdWU6dSxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0sXzp7dmFsdWU6aH19KX1pZC5wcm90b3R5cGUub249ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl8ub24uYXBwbHkodGhpcy5fLGFyZ3VtZW50cyk7cmV0dXJuIHQ9PT10aGlzLl8/dGhpczp0fTtmdW5jdGlvbiBnQih0KXtyZXR1cm4hdC5jdHJsS2V5JiYhdC5idXR0b259ZnVuY3Rpb24geUIoKXtyZXR1cm4gdGhpcy5wYXJlbnROb2RlfWZ1bmN0aW9uIG1CKHQsZSl7cmV0dXJuIGU9PW51bGw/e3g6dC54LHk6dC55fTplfWZ1bmN0aW9uIGJCKCl7cmV0dXJuIG5hdmlnYXRvci5tYXhUb3VjaFBvaW50c3x8Im9udG91Y2hzdGFydCJpbiB0aGlzfWZ1bmN0aW9uIF9CKCl7dmFyIHQ9Z0IsZT15QixyPW1CLG49YkIsaT17fSxhPWZzKCJzdGFydCIsImRyYWciLCJlbmQiKSxzPTAsbyxsLHUsaCxkPTA7ZnVuY3Rpb24gZihUKXtULm9uKCJtb3VzZWRvd24uZHJhZyIscCkuZmlsdGVyKG4pLm9uKCJ0b3VjaHN0YXJ0LmRyYWciLHkpLm9uKCJ0b3VjaG1vdmUuZHJhZyIsYixwQikub24oInRvdWNoZW5kLmRyYWcgdG91Y2hjYW5jZWwuZHJhZyIseCkuc3R5bGUoInRvdWNoLWFjdGlvbiIsIm5vbmUiKS5zdHlsZSgiLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yIiwicmdiYSgwLDAsMCwwKSIpfWZ1bmN0aW9uIHAoVCxDKXtpZighKGh8fCF0LmNhbGwodGhpcyxULEMpKSl7dmFyIE09ayh0aGlzLGUuY2FsbCh0aGlzLFQsQyksVCxDLCJtb3VzZSIpOyFNfHwoU3QoVC52aWV3KS5vbigibW91c2Vtb3ZlLmRyYWciLG0sTWwpLm9uKCJtb3VzZXVwLmRyYWciLF8sTWwpLEJ1KFQudmlldyksbmQoVCksdT0hMSxvPVQuY2xpZW50WCxsPVQuY2xpZW50WSxNKCJzdGFydCIsVCkpfX1mdW5jdGlvbiBtKFQpe2lmKGNvKFQpLCF1KXt2YXIgQz1ULmNsaWVudFgtbyxNPVQuY2xpZW50WS1sO3U9QypDK00qTT5kfWkubW91c2UoImRyYWciLFQpfWZ1bmN0aW9uIF8oVCl7U3QoVC52aWV3KS5vbigibW91c2Vtb3ZlLmRyYWcgbW91c2V1cC5kcmFnIixudWxsKSxEdShULnZpZXcsdSksY28oVCksaS5tb3VzZSgiZW5kIixUKX1mdW5jdGlvbiB5KFQsQyl7aWYoISF0LmNhbGwodGhpcyxULEMpKXt2YXIgTT1ULmNoYW5nZWRUb3VjaGVzLFM9ZS5jYWxsKHRoaXMsVCxDKSxSPU0ubGVuZ3RoLEEsTDtmb3IoQT0wO0E8UjsrK0EpKEw9ayh0aGlzLFMsVCxDLE1bQV0uaWRlbnRpZmllcixNW0FdKSkmJihuZChUKSxMKCJzdGFydCIsVCxNW0FdKSl9fWZ1bmN0aW9uIGIoVCl7dmFyIEM9VC5jaGFuZ2VkVG91Y2hlcyxNPUMubGVuZ3RoLFMsUjtmb3IoUz0wO1M8TTsrK1MpKFI9aVtDW1NdLmlkZW50aWZpZXJdKSYmKGNvKFQpLFIoImRyYWciLFQsQ1tTXSkpfWZ1bmN0aW9uIHgoVCl7dmFyIEM9VC5jaGFuZ2VkVG91Y2hlcyxNPUMubGVuZ3RoLFMsUjtmb3IoaCYmY2xlYXJUaW1lb3V0KGgpLGg9c2V0VGltZW91dChmdW5jdGlvbigpe2g9bnVsbH0sNTAwKSxTPTA7UzxNOysrUykoUj1pW0NbU10uaWRlbnRpZmllcl0pJiYobmQoVCksUigiZW5kIixULENbU10pKX1mdW5jdGlvbiBrKFQsQyxNLFMsUixBKXt2YXIgTD1hLmNvcHkoKSx2PVRuKEF8fE0sQyksQix3LEQ7aWYoKEQ9ci5jYWxsKFQsbmV3IGlkKCJiZWZvcmVzdGFydCIse3NvdXJjZUV2ZW50Ok0sdGFyZ2V0OmYsaWRlbnRpZmllcjpSLGFjdGl2ZTpzLHg6dlswXSx5OnZbMV0sZHg6MCxkeTowLGRpc3BhdGNoOkx9KSxTKSkhPW51bGwpcmV0dXJuIEI9RC54LXZbMF18fDAsdz1ELnktdlsxXXx8MCxmdW5jdGlvbiBOKHosWCxjdCl7dmFyIEo9dixZO3N3aXRjaCh6KXtjYXNlInN0YXJ0IjppW1JdPU4sWT1zKys7YnJlYWs7Y2FzZSJlbmQiOmRlbGV0ZSBpW1JdLC0tcztjYXNlImRyYWciOnY9VG4oY3R8fFgsQyksWT1zO2JyZWFrfUwuY2FsbCh6LFQsbmV3IGlkKHose3NvdXJjZUV2ZW50Olgsc3ViamVjdDpELHRhcmdldDpmLGlkZW50aWZpZXI6UixhY3RpdmU6WSx4OnZbMF0rQix5OnZbMV0rdyxkeDp2WzBdLUpbMF0sZHk6dlsxXS1KWzFdLGRpc3BhdGNoOkx9KSxTKX19cmV0dXJuIGYuZmlsdGVyPWZ1bmN0aW9uKFQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PXR5cGVvZiBUPT0iZnVuY3Rpb24iP1Q6T3UoISFUKSxmKTp0fSxmLmNvbnRhaW5lcj1mdW5jdGlvbihUKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10eXBlb2YgVD09ImZ1bmN0aW9uIj9UOk91KFQpLGYpOmV9LGYuc3ViamVjdD1mdW5jdGlvbihUKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10eXBlb2YgVD09ImZ1bmN0aW9uIj9UOk91KFQpLGYpOnJ9LGYudG91Y2hhYmxlPWZ1bmN0aW9uKFQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXR5cGVvZiBUPT0iZnVuY3Rpb24iP1Q6T3UoISFUKSxmKTpufSxmLm9uPWZ1bmN0aW9uKCl7dmFyIFQ9YS5vbi5hcHBseShhLGFyZ3VtZW50cyk7cmV0dXJuIFQ9PT1hP2Y6VH0sZi5jbGlja0Rpc3RhbmNlPWZ1bmN0aW9uKFQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhkPShUPStUKSpULGYpOk1hdGguc3FydChkKX0sZn1mdW5jdGlvbiB1byh0LGUscil7dC5wcm90b3R5cGU9ZS5wcm90b3R5cGU9cixyLmNvbnN0cnVjdG9yPXR9ZnVuY3Rpb24gTGwodCxlKXt2YXIgcj1PYmplY3QuY3JlYXRlKHQucHJvdG90eXBlKTtmb3IodmFyIG4gaW4gZSlyW25dPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gU2EoKXt9dmFyIGdzPS43LGhvPTEvZ3MsZm89IlxccyooWystXT9cXGQrKVxccyoiLFJsPSJcXHMqKFsrLV0/KD86XFxkKlxcLik/XFxkKyg/OltlRV1bKy1dP1xcZCspPylcXHMqIix3aT0iXFxzKihbKy1dPyg/OlxcZCpcXC4pP1xcZCsoPzpbZUVdWystXT9cXGQrKT8pJVxccyoiLHZCPS9eIyhbMC05YS1mXXszLDh9KSQvLHhCPW5ldyBSZWdFeHAoYF5yZ2JcXCgke2ZvfSwke2ZvfSwke2ZvfVxcKSRgKSxrQj1uZXcgUmVnRXhwKGBecmdiXFwoJHt3aX0sJHt3aX0sJHt3aX1cXCkkYCksd0I9bmV3IFJlZ0V4cChgXnJnYmFcXCgke2ZvfSwke2ZvfSwke2ZvfSwke1JsfVxcKSRgKSxUQj1uZXcgUmVnRXhwKGBecmdiYVxcKCR7d2l9LCR7d2l9LCR7d2l9LCR7Umx9XFwpJGApLEVCPW5ldyBSZWdFeHAoYF5oc2xcXCgke1JsfSwke3dpfSwke3dpfVxcKSRgKSxDQj1uZXcgUmVnRXhwKGBeaHNsYVxcKCR7Umx9LCR7d2l9LCR7d2l9LCR7Umx9XFwpJGApLHM1PXthbGljZWJsdWU6MTU3OTIzODMsYW50aXF1ZXdoaXRlOjE2NDQ0Mzc1LGFxdWE6NjU1MzUsYXF1YW1hcmluZTo4Mzg4NTY0LGF6dXJlOjE1Nzk0MTc1LGJlaWdlOjE2MTE5MjYwLGJpc3F1ZToxNjc3MDI0NCxibGFjazowLGJsYW5jaGVkYWxtb25kOjE2NzcyMDQ1LGJsdWU6MjU1LGJsdWV2aW9sZXQ6OTA1NTIwMixicm93bjoxMDgyNDIzNCxidXJseXdvb2Q6MTQ1OTYyMzEsY2FkZXRibHVlOjYyNjY1MjgsY2hhcnRyZXVzZTo4Mzg4MzUyLGNob2NvbGF0ZToxMzc4OTQ3MCxjb3JhbDoxNjc0NDI3Mixjb3JuZmxvd2VyYmx1ZTo2NTkxOTgxLGNvcm5zaWxrOjE2Nzc1Mzg4LGNyaW1zb246MTQ0MjMxMDAsY3lhbjo2NTUzNSxkYXJrYmx1ZToxMzksZGFya2N5YW46MzU3MjMsZGFya2dvbGRlbnJvZDoxMjA5MjkzOSxkYXJrZ3JheToxMTExOTAxNyxkYXJrZ3JlZW46MjU2MDAsZGFya2dyZXk6MTExMTkwMTcsZGFya2toYWtpOjEyNDMzMjU5LGRhcmttYWdlbnRhOjkxMDk2NDMsZGFya29saXZlZ3JlZW46NTU5Nzk5OSxkYXJrb3JhbmdlOjE2NzQ3NTIwLGRhcmtvcmNoaWQ6MTAwNDAwMTIsZGFya3JlZDo5MTA5NTA0LGRhcmtzYWxtb246MTUzMDg0MTAsZGFya3NlYWdyZWVuOjk0MTk5MTksZGFya3NsYXRlYmx1ZTo0NzM0MzQ3LGRhcmtzbGF0ZWdyYXk6MzEwMDQ5NSxkYXJrc2xhdGVncmV5OjMxMDA0OTUsZGFya3R1cnF1b2lzZTo1Mjk0NSxkYXJrdmlvbGV0Ojk2OTk1MzksZGVlcHBpbms6MTY3MTY5NDcsZGVlcHNreWJsdWU6NDkxNTEsZGltZ3JheTo2OTA4MjY1LGRpbWdyZXk6NjkwODI2NSxkb2RnZXJibHVlOjIwMDMxOTksZmlyZWJyaWNrOjExNjc0MTQ2LGZsb3JhbHdoaXRlOjE2Nzc1OTIwLGZvcmVzdGdyZWVuOjIyNjM4NDIsZnVjaHNpYToxNjcxMTkzNSxnYWluc2Jvcm86MTQ0NzQ0NjAsZ2hvc3R3aGl0ZToxNjMxNjY3MSxnb2xkOjE2NzY2NzIwLGdvbGRlbnJvZDoxNDMyOTEyMCxncmF5Ojg0MjE1MDQsZ3JlZW46MzI3NjgsZ3JlZW55ZWxsb3c6MTE0MDMwNTUsZ3JleTo4NDIxNTA0LGhvbmV5ZGV3OjE1Nzk0MTYwLGhvdHBpbms6MTY3Mzg3NDAsaW5kaWFucmVkOjEzNDU4NTI0LGluZGlnbzo0OTE1MzMwLGl2b3J5OjE2Nzc3MjAwLGtoYWtpOjE1Nzg3NjYwLGxhdmVuZGVyOjE1MTMyNDEwLGxhdmVuZGVyYmx1c2g6MTY3NzMzNjUsbGF3bmdyZWVuOjgxOTA5NzYsbGVtb25jaGlmZm9uOjE2Nzc1ODg1LGxpZ2h0Ymx1ZToxMTM5MzI1NCxsaWdodGNvcmFsOjE1NzYxNTM2LGxpZ2h0Y3lhbjoxNDc0NTU5OSxsaWdodGdvbGRlbnJvZHllbGxvdzoxNjQ0ODIxMCxsaWdodGdyYXk6MTM4ODIzMjMsbGlnaHRncmVlbjo5NDk4MjU2LGxpZ2h0Z3JleToxMzg4MjMyMyxsaWdodHBpbms6MTY3NTg0NjUsbGlnaHRzYWxtb246MTY3NTI3NjIsbGlnaHRzZWFncmVlbjoyMTQyODkwLGxpZ2h0c2t5Ymx1ZTo4OTAwMzQ2LGxpZ2h0c2xhdGVncmF5Ojc4MzM3NTMsbGlnaHRzbGF0ZWdyZXk6NzgzMzc1MyxsaWdodHN0ZWVsYmx1ZToxMTU4NDczNCxsaWdodHllbGxvdzoxNjc3NzE4NCxsaW1lOjY1MjgwLGxpbWVncmVlbjozMzI5MzMwLGxpbmVuOjE2NDQ1NjcwLG1hZ2VudGE6MTY3MTE5MzUsbWFyb29uOjgzODg2MDgsbWVkaXVtYXF1YW1hcmluZTo2NzM3MzIyLG1lZGl1bWJsdWU6MjA1LG1lZGl1bW9yY2hpZDoxMjIxMTY2NyxtZWRpdW1wdXJwbGU6OTY2MjY4MyxtZWRpdW1zZWFncmVlbjozOTc4MDk3LG1lZGl1bXNsYXRlYmx1ZTo4MDg3NzkwLG1lZGl1bXNwcmluZ2dyZWVuOjY0MTU0LG1lZGl1bXR1cnF1b2lzZTo0NzcyMzAwLG1lZGl1bXZpb2xldHJlZDoxMzA0NzE3MyxtaWRuaWdodGJsdWU6MTY0NDkxMixtaW50Y3JlYW06MTYxMjE4NTAsbWlzdHlyb3NlOjE2NzcwMjczLG1vY2Nhc2luOjE2NzcwMjI5LG5hdmFqb3doaXRlOjE2NzY4Njg1LG5hdnk6MTI4LG9sZGxhY2U6MTY2NDM1NTgsb2xpdmU6ODQyMTM3NixvbGl2ZWRyYWI6NzA0ODczOSxvcmFuZ2U6MTY3NTM5MjAsb3JhbmdlcmVkOjE2NzI5MzQ0LG9yY2hpZDoxNDMxNTczNCxwYWxlZ29sZGVucm9kOjE1NjU3MTMwLHBhbGVncmVlbjoxMDAyNTg4MCxwYWxldHVycXVvaXNlOjExNTI5OTY2LHBhbGV2aW9sZXRyZWQ6MTQzODEyMDMscGFwYXlhd2hpcDoxNjc3MzA3NyxwZWFjaHB1ZmY6MTY3Njc2NzMscGVydToxMzQ2ODk5MSxwaW5rOjE2NzYxMDM1LHBsdW06MTQ1MjQ2MzcscG93ZGVyYmx1ZToxMTU5MTkxMCxwdXJwbGU6ODM4ODczNixyZWJlY2NhcHVycGxlOjY2OTc4ODEscmVkOjE2NzExNjgwLHJvc3licm93bjoxMjM1NzUxOSxyb3lhbGJsdWU6NDI4Njk0NSxzYWRkbGVicm93bjo5MTI3MTg3LHNhbG1vbjoxNjQxNjg4MixzYW5keWJyb3duOjE2MDMyODY0LHNlYWdyZWVuOjMwNTAzMjcsc2Vhc2hlbGw6MTY3NzQ2Mzgsc2llbm5hOjEwNTA2Nzk3LHNpbHZlcjoxMjYzMjI1Nixza3libHVlOjg5MDAzMzEsc2xhdGVibHVlOjY5NzAwNjEsc2xhdGVncmF5OjczNzI5NDQsc2xhdGVncmV5OjczNzI5NDQsc25vdzoxNjc3NTkzMCxzcHJpbmdncmVlbjo2NTQwNyxzdGVlbGJsdWU6NDYyMDk4MCx0YW46MTM4MDg3ODAsdGVhbDozMjg5Nix0aGlzdGxlOjE0MjA0ODg4LHRvbWF0bzoxNjczNzA5NSx0dXJxdW9pc2U6NDI1MTg1Nix2aW9sZXQ6MTU2MzEwODYsd2hlYXQ6MTYxMTMzMzEsd2hpdGU6MTY3NzcyMTUsd2hpdGVzbW9rZToxNjExOTI4NSx5ZWxsb3c6MTY3NzY5NjAseWVsbG93Z3JlZW46MTAxNDUwNzR9O3VvKFNhLEFhLHtjb3B5KHQpe3JldHVybiBPYmplY3QuYXNzaWduKG5ldyB0aGlzLmNvbnN0cnVjdG9yLHRoaXMsdCl9LGRpc3BsYXlhYmxlKCl7cmV0dXJuIHRoaXMucmdiKCkuZGlzcGxheWFibGUoKX0saGV4Om81LGZvcm1hdEhleDpvNSxmb3JtYXRIZXg4OlNCLGZvcm1hdEhzbDpBQixmb3JtYXRSZ2I6bDUsdG9TdHJpbmc6bDV9KTtmdW5jdGlvbiBvNSgpe3JldHVybiB0aGlzLnJnYigpLmZvcm1hdEhleCgpfWZ1bmN0aW9uIFNCKCl7cmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0SGV4OCgpfWZ1bmN0aW9uIEFCKCl7cmV0dXJuIGQ1KHRoaXMpLmZvcm1hdEhzbCgpfWZ1bmN0aW9uIGw1KCl7cmV0dXJuIHRoaXMucmdiKCkuZm9ybWF0UmdiKCl9ZnVuY3Rpb24gQWEodCl7dmFyIGUscjtyZXR1cm4gdD0odCsiIikudHJpbSgpLnRvTG93ZXJDYXNlKCksKGU9dkIuZXhlYyh0KSk/KHI9ZVsxXS5sZW5ndGgsZT1wYXJzZUludChlWzFdLDE2KSxyPT09Nj9jNShlKTpyPT09Mz9uZXcgRXIoZT4+OCYxNXxlPj40JjI0MCxlPj40JjE1fGUmMjQwLChlJjE1KTw8NHxlJjE1LDEpOnI9PT04P0Z1KGU+PjI0JjI1NSxlPj4xNiYyNTUsZT4+OCYyNTUsKGUmMjU1KS8yNTUpOnI9PT00P0Z1KGU+PjEyJjE1fGU+PjgmMjQwLGU+PjgmMTV8ZT4+NCYyNDAsZT4+NCYxNXxlJjI0MCwoKGUmMTUpPDw0fGUmMTUpLzI1NSk6bnVsbCk6KGU9eEIuZXhlYyh0KSk/bmV3IEVyKGVbMV0sZVsyXSxlWzNdLDEpOihlPWtCLmV4ZWModCkpP25ldyBFcihlWzFdKjI1NS8xMDAsZVsyXSoyNTUvMTAwLGVbM10qMjU1LzEwMCwxKTooZT13Qi5leGVjKHQpKT9GdShlWzFdLGVbMl0sZVszXSxlWzRdKTooZT1UQi5leGVjKHQpKT9GdShlWzFdKjI1NS8xMDAsZVsyXSoyNTUvMTAwLGVbM10qMjU1LzEwMCxlWzRdKTooZT1FQi5leGVjKHQpKT9mNShlWzFdLGVbMl0vMTAwLGVbM10vMTAwLDEpOihlPUNCLmV4ZWModCkpP2Y1KGVbMV0sZVsyXS8xMDAsZVszXS8xMDAsZVs0XSk6czUuaGFzT3duUHJvcGVydHkodCk/YzUoczVbdF0pOnQ9PT0idHJhbnNwYXJlbnQiP25ldyBFcihOYU4sTmFOLE5hTiwwKTpudWxsfWZ1bmN0aW9uIGM1KHQpe3JldHVybiBuZXcgRXIodD4+MTYmMjU1LHQ+PjgmMjU1LHQmMjU1LDEpfWZ1bmN0aW9uIEZ1KHQsZSxyLG4pe3JldHVybiBuPD0wJiYodD1lPXI9TmFOKSxuZXcgRXIodCxlLHIsbil9ZnVuY3Rpb24gYWQodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBTYXx8KHQ9QWEodCkpLHQ/KHQ9dC5yZ2IoKSxuZXcgRXIodC5yLHQuZyx0LmIsdC5vcGFjaXR5KSk6bmV3IEVyfWZ1bmN0aW9uIHBvKHQsZSxyLG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPT09MT9hZCh0KTpuZXcgRXIodCxlLHIsbj09bnVsbD8xOm4pfWZ1bmN0aW9uIEVyKHQsZSxyLG4pe3RoaXMucj0rdCx0aGlzLmc9K2UsdGhpcy5iPStyLHRoaXMub3BhY2l0eT0rbn11byhFcixwbyxMbChTYSx7YnJpZ2h0ZXIodCl7cmV0dXJuIHQ9dD09bnVsbD9obzpNYXRoLnBvdyhobyx0KSxuZXcgRXIodGhpcy5yKnQsdGhpcy5nKnQsdGhpcy5iKnQsdGhpcy5vcGFjaXR5KX0sZGFya2VyKHQpe3JldHVybiB0PXQ9PW51bGw/Z3M6TWF0aC5wb3coZ3MsdCksbmV3IEVyKHRoaXMucip0LHRoaXMuZyp0LHRoaXMuYip0LHRoaXMub3BhY2l0eSl9LHJnYigpe3JldHVybiB0aGlzfSxjbGFtcCgpe3JldHVybiBuZXcgRXIoeXModGhpcy5yKSx5cyh0aGlzLmcpLHlzKHRoaXMuYiksUHUodGhpcy5vcGFjaXR5KSl9LGRpc3BsYXlhYmxlKCl7cmV0dXJuLS41PD10aGlzLnImJnRoaXMucjwyNTUuNSYmLS41PD10aGlzLmcmJnRoaXMuZzwyNTUuNSYmLS41PD10aGlzLmImJnRoaXMuYjwyNTUuNSYmMDw9dGhpcy5vcGFjaXR5JiZ0aGlzLm9wYWNpdHk8PTF9LGhleDp1NSxmb3JtYXRIZXg6dTUsZm9ybWF0SGV4ODpNQixmb3JtYXRSZ2I6aDUsdG9TdHJpbmc6aDV9KSk7ZnVuY3Rpb24gdTUoKXtyZXR1cm5gIyR7bXModGhpcy5yKX0ke21zKHRoaXMuZyl9JHttcyh0aGlzLmIpfWB9ZnVuY3Rpb24gTUIoKXtyZXR1cm5gIyR7bXModGhpcy5yKX0ke21zKHRoaXMuZyl9JHttcyh0aGlzLmIpfSR7bXMoKGlzTmFOKHRoaXMub3BhY2l0eSk/MTp0aGlzLm9wYWNpdHkpKjI1NSl9YH1mdW5jdGlvbiBoNSgpe2NvbnN0IHQ9UHUodGhpcy5vcGFjaXR5KTtyZXR1cm5gJHt0PT09MT8icmdiKCI6InJnYmEoIn0ke3lzKHRoaXMucil9LCAke3lzKHRoaXMuZyl9LCAke3lzKHRoaXMuYil9JHt0PT09MT8iKSI6YCwgJHt0fSlgfWB9ZnVuY3Rpb24gUHUodCl7cmV0dXJuIGlzTmFOKHQpPzE6TWF0aC5tYXgoMCxNYXRoLm1pbigxLHQpKX1mdW5jdGlvbiB5cyh0KXtyZXR1cm4gTWF0aC5tYXgoMCxNYXRoLm1pbigyNTUsTWF0aC5yb3VuZCh0KXx8MCkpfWZ1bmN0aW9uIG1zKHQpe3JldHVybiB0PXlzKHQpLCh0PDE2PyIwIjoiIikrdC50b1N0cmluZygxNil9ZnVuY3Rpb24gZjUodCxlLHIsbil7cmV0dXJuIG48PTA/dD1lPXI9TmFOOnI8PTB8fHI+PTE/dD1lPU5hTjplPD0wJiYodD1OYU4pLG5ldyBLbih0LGUscixuKX1mdW5jdGlvbiBkNSh0KXtpZih0IGluc3RhbmNlb2YgS24pcmV0dXJuIG5ldyBLbih0LmgsdC5zLHQubCx0Lm9wYWNpdHkpO2lmKHQgaW5zdGFuY2VvZiBTYXx8KHQ9QWEodCkpLCF0KXJldHVybiBuZXcgS247aWYodCBpbnN0YW5jZW9mIEtuKXJldHVybiB0O3Q9dC5yZ2IoKTt2YXIgZT10LnIvMjU1LHI9dC5nLzI1NSxuPXQuYi8yNTUsaT1NYXRoLm1pbihlLHIsbiksYT1NYXRoLm1heChlLHIsbikscz1OYU4sbz1hLWksbD0oYStpKS8yO3JldHVybiBvPyhlPT09YT9zPShyLW4pL28rKHI8bikqNjpyPT09YT9zPShuLWUpL28rMjpzPShlLXIpL28rNCxvLz1sPC41P2EraToyLWEtaSxzKj02MCk6bz1sPjAmJmw8MT8wOnMsbmV3IEtuKHMsbyxsLHQub3BhY2l0eSl9ZnVuY3Rpb24gcXUodCxlLHIsbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg9PT0xP2Q1KHQpOm5ldyBLbih0LGUscixuPT1udWxsPzE6bil9ZnVuY3Rpb24gS24odCxlLHIsbil7dGhpcy5oPSt0LHRoaXMucz0rZSx0aGlzLmw9K3IsdGhpcy5vcGFjaXR5PStufXVvKEtuLHF1LExsKFNhLHticmlnaHRlcih0KXtyZXR1cm4gdD10PT1udWxsP2hvOk1hdGgucG93KGhvLHQpLG5ldyBLbih0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LGRhcmtlcih0KXtyZXR1cm4gdD10PT1udWxsP2dzOk1hdGgucG93KGdzLHQpLG5ldyBLbih0aGlzLmgsdGhpcy5zLHRoaXMubCp0LHRoaXMub3BhY2l0eSl9LHJnYigpe3ZhciB0PXRoaXMuaCUzNjArKHRoaXMuaDwwKSozNjAsZT1pc05hTih0KXx8aXNOYU4odGhpcy5zKT8wOnRoaXMucyxyPXRoaXMubCxuPXIrKHI8LjU/cjoxLXIpKmUsaT0yKnItbjtyZXR1cm4gbmV3IEVyKHNkKHQ+PTI0MD90LTI0MDp0KzEyMCxpLG4pLHNkKHQsaSxuKSxzZCh0PDEyMD90KzI0MDp0LTEyMCxpLG4pLHRoaXMub3BhY2l0eSl9LGNsYW1wKCl7cmV0dXJuIG5ldyBLbihwNSh0aGlzLmgpLFZ1KHRoaXMucyksVnUodGhpcy5sKSxQdSh0aGlzLm9wYWNpdHkpKX0sZGlzcGxheWFibGUoKXtyZXR1cm4oMDw9dGhpcy5zJiZ0aGlzLnM8PTF8fGlzTmFOKHRoaXMucykpJiYwPD10aGlzLmwmJnRoaXMubDw9MSYmMDw9dGhpcy5vcGFjaXR5JiZ0aGlzLm9wYWNpdHk8PTF9LGZvcm1hdEhzbCgpe2NvbnN0IHQ9UHUodGhpcy5vcGFjaXR5KTtyZXR1cm5gJHt0PT09MT8iaHNsKCI6ImhzbGEoIn0ke3A1KHRoaXMuaCl9LCAke1Z1KHRoaXMucykqMTAwfSUsICR7VnUodGhpcy5sKSoxMDB9JSR7dD09PTE/IikiOmAsICR7dH0pYH1gfX0pKTtmdW5jdGlvbiBwNSh0KXtyZXR1cm4gdD0odHx8MCklMzYwLHQ8MD90KzM2MDp0fWZ1bmN0aW9uIFZ1KHQpe3JldHVybiBNYXRoLm1heCgwLE1hdGgubWluKDEsdHx8MCkpfWZ1bmN0aW9uIHNkKHQsZSxyKXtyZXR1cm4odDw2MD9lKyhyLWUpKnQvNjA6dDwxODA/cjp0PDI0MD9lKyhyLWUpKigyNDAtdCkvNjA6ZSkqMjU1fWNvbnN0IGc1PU1hdGguUEkvMTgwLHk1PTE4MC9NYXRoLlBJLHp1PTE4LG01PS45NjQyMixiNT0xLF81PS44MjUyMSx2NT00LzI5LGdvPTYvMjkseDU9MypnbypnbyxMQj1nbypnbypnbztmdW5jdGlvbiBrNSh0KXtpZih0IGluc3RhbmNlb2YgWm4pcmV0dXJuIG5ldyBabih0LmwsdC5hLHQuYix0Lm9wYWNpdHkpO2lmKHQgaW5zdGFuY2VvZiBUaSlyZXR1cm4gVDUodCk7dCBpbnN0YW5jZW9mIEVyfHwodD1hZCh0KSk7dmFyIGU9dWQodC5yKSxyPXVkKHQuZyksbj11ZCh0LmIpLGk9b2QoKC4yMjI1MDQ1KmUrLjcxNjg3ODYqcisuMDYwNjE2OSpuKS9iNSksYSxzO3JldHVybiBlPT09ciYmcj09PW4/YT1zPWk6KGE9b2QoKC40MzYwNzQ3KmUrLjM4NTA2NDkqcisuMTQzMDgwNCpuKS9tNSkscz1vZCgoLjAxMzkzMjIqZSsuMDk3MTA0NSpyKy43MTQxNzMzKm4pL181KSksbmV3IFpuKDExNippLTE2LDUwMCooYS1pKSwyMDAqKGktcyksdC5vcGFjaXR5KX1mdW5jdGlvbiBSQih0LGUpe3JldHVybiBuZXcgWm4odCwwLDAsZT09bnVsbD8xOmUpfWZ1bmN0aW9uIFl1KHQsZSxyLG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPT09MT9rNSh0KTpuZXcgWm4odCxlLHIsbj09bnVsbD8xOm4pfWZ1bmN0aW9uIFpuKHQsZSxyLG4pe3RoaXMubD0rdCx0aGlzLmE9K2UsdGhpcy5iPStyLHRoaXMub3BhY2l0eT0rbn11byhabixZdSxMbChTYSx7YnJpZ2h0ZXIodCl7cmV0dXJuIG5ldyBabih0aGlzLmwrenUqKHQ9PW51bGw/MTp0KSx0aGlzLmEsdGhpcy5iLHRoaXMub3BhY2l0eSl9LGRhcmtlcih0KXtyZXR1cm4gbmV3IFpuKHRoaXMubC16dSoodD09bnVsbD8xOnQpLHRoaXMuYSx0aGlzLmIsdGhpcy5vcGFjaXR5KX0scmdiKCl7dmFyIHQ9KHRoaXMubCsxNikvMTE2LGU9aXNOYU4odGhpcy5hKT90OnQrdGhpcy5hLzUwMCxyPWlzTmFOKHRoaXMuYik/dDp0LXRoaXMuYi8yMDA7cmV0dXJuIGU9bTUqbGQoZSksdD1iNSpsZCh0KSxyPV81KmxkKHIpLG5ldyBFcihjZCgzLjEzMzg1NjEqZS0xLjYxNjg2NjcqdC0uNDkwNjE0NipyKSxjZCgtLjk3ODc2ODQqZSsxLjkxNjE0MTUqdCsuMDMzNDU0KnIpLGNkKC4wNzE5NDUzKmUtLjIyODk5MTQqdCsxLjQwNTI0MjcqciksdGhpcy5vcGFjaXR5KX19KSk7ZnVuY3Rpb24gb2QodCl7cmV0dXJuIHQ+TEI/TWF0aC5wb3codCwxLzMpOnQveDUrdjV9ZnVuY3Rpb24gbGQodCl7cmV0dXJuIHQ+Z28/dCp0KnQ6eDUqKHQtdjUpfWZ1bmN0aW9uIGNkKHQpe3JldHVybiAyNTUqKHQ8PS4wMDMxMzA4PzEyLjkyKnQ6MS4wNTUqTWF0aC5wb3codCwxLzIuNCktLjA1NSl9ZnVuY3Rpb24gdWQodCl7cmV0dXJuKHQvPTI1NSk8PS4wNDA0NT90LzEyLjkyOk1hdGgucG93KCh0Ky4wNTUpLzEuMDU1LDIuNCl9ZnVuY3Rpb24gdzUodCl7aWYodCBpbnN0YW5jZW9mIFRpKXJldHVybiBuZXcgVGkodC5oLHQuYyx0LmwsdC5vcGFjaXR5KTtpZih0IGluc3RhbmNlb2YgWm58fCh0PWs1KHQpKSx0LmE9PT0wJiZ0LmI9PT0wKXJldHVybiBuZXcgVGkoTmFOLDA8dC5sJiZ0Lmw8MTAwPzA6TmFOLHQubCx0Lm9wYWNpdHkpO3ZhciBlPU1hdGguYXRhbjIodC5iLHQuYSkqeTU7cmV0dXJuIG5ldyBUaShlPDA/ZSszNjA6ZSxNYXRoLnNxcnQodC5hKnQuYSt0LmIqdC5iKSx0LmwsdC5vcGFjaXR5KX1mdW5jdGlvbiBJQih0LGUscixuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD09PTE/dzUodCk6bmV3IFRpKHIsZSx0LG49PW51bGw/MTpuKX1mdW5jdGlvbiBVdSh0LGUscixuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD09PTE/dzUodCk6bmV3IFRpKHQsZSxyLG49PW51bGw/MTpuKX1mdW5jdGlvbiBUaSh0LGUscixuKXt0aGlzLmg9K3QsdGhpcy5jPStlLHRoaXMubD0rcix0aGlzLm9wYWNpdHk9K259ZnVuY3Rpb24gVDUodCl7aWYoaXNOYU4odC5oKSlyZXR1cm4gbmV3IFpuKHQubCwwLDAsdC5vcGFjaXR5KTt2YXIgZT10LmgqZzU7cmV0dXJuIG5ldyBabih0LmwsTWF0aC5jb3MoZSkqdC5jLE1hdGguc2luKGUpKnQuYyx0Lm9wYWNpdHkpfXVvKFRpLFV1LExsKFNhLHticmlnaHRlcih0KXtyZXR1cm4gbmV3IFRpKHRoaXMuaCx0aGlzLmMsdGhpcy5sK3p1Kih0PT1udWxsPzE6dCksdGhpcy5vcGFjaXR5KX0sZGFya2VyKHQpe3JldHVybiBuZXcgVGkodGhpcy5oLHRoaXMuYyx0aGlzLmwtenUqKHQ9PW51bGw/MTp0KSx0aGlzLm9wYWNpdHkpfSxyZ2IoKXtyZXR1cm4gVDUodGhpcykucmdiKCl9fSkpO3ZhciBFNT0tLjE0ODYxLGhkPTEuNzgyNzcsZmQ9LS4yOTIyNyxXdT0tLjkwNjQ5LElsPTEuOTcyOTQsQzU9SWwqV3UsUzU9SWwqaGQsQTU9aGQqZmQtV3UqRTU7ZnVuY3Rpb24gTkIodCl7aWYodCBpbnN0YW5jZW9mIGJzKXJldHVybiBuZXcgYnModC5oLHQucyx0LmwsdC5vcGFjaXR5KTt0IGluc3RhbmNlb2YgRXJ8fCh0PWFkKHQpKTt2YXIgZT10LnIvMjU1LHI9dC5nLzI1NSxuPXQuYi8yNTUsaT0oQTUqbitDNSplLVM1KnIpLyhBNStDNS1TNSksYT1uLWkscz0oSWwqKHItaSktZmQqYSkvV3Usbz1NYXRoLnNxcnQocypzK2EqYSkvKElsKmkqKDEtaSkpLGw9bz9NYXRoLmF0YW4yKHMsYSkqeTUtMTIwOk5hTjtyZXR1cm4gbmV3IGJzKGw8MD9sKzM2MDpsLG8saSx0Lm9wYWNpdHkpfWZ1bmN0aW9uIFFuKHQsZSxyLG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPT09MT9OQih0KTpuZXcgYnModCxlLHIsbj09bnVsbD8xOm4pfWZ1bmN0aW9uIGJzKHQsZSxyLG4pe3RoaXMuaD0rdCx0aGlzLnM9K2UsdGhpcy5sPStyLHRoaXMub3BhY2l0eT0rbn11byhicyxRbixMbChTYSx7YnJpZ2h0ZXIodCl7cmV0dXJuIHQ9dD09bnVsbD9obzpNYXRoLnBvdyhobyx0KSxuZXcgYnModGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxkYXJrZXIodCl7cmV0dXJuIHQ9dD09bnVsbD9nczpNYXRoLnBvdyhncyx0KSxuZXcgYnModGhpcy5oLHRoaXMucyx0aGlzLmwqdCx0aGlzLm9wYWNpdHkpfSxyZ2IoKXt2YXIgdD1pc05hTih0aGlzLmgpPzA6KHRoaXMuaCsxMjApKmc1LGU9K3RoaXMubCxyPWlzTmFOKHRoaXMucyk/MDp0aGlzLnMqZSooMS1lKSxuPU1hdGguY29zKHQpLGk9TWF0aC5zaW4odCk7cmV0dXJuIG5ldyBFcigyNTUqKGUrciooRTUqbitoZCppKSksMjU1KihlK3IqKGZkKm4rV3UqaSkpLDI1NSooZStyKihJbCpuKSksdGhpcy5vcGFjaXR5KX19KSk7ZnVuY3Rpb24gTTUodCxlLHIsbixpKXt2YXIgYT10KnQscz1hKnQ7cmV0dXJuKCgxLTMqdCszKmEtcykqZSsoNC02KmErMypzKSpyKygxKzMqdCszKmEtMypzKSpuK3MqaSkvNn1mdW5jdGlvbiBMNSh0KXt2YXIgZT10Lmxlbmd0aC0xO3JldHVybiBmdW5jdGlvbihyKXt2YXIgbj1yPD0wP3I9MDpyPj0xPyhyPTEsZS0xKTpNYXRoLmZsb29yKHIqZSksaT10W25dLGE9dFtuKzFdLHM9bj4wP3Rbbi0xXToyKmktYSxvPW48ZS0xP3RbbisyXToyKmEtaTtyZXR1cm4gTTUoKHItbi9lKSplLHMsaSxhLG8pfX1mdW5jdGlvbiBSNSh0KXt2YXIgZT10Lmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24ocil7dmFyIG49TWF0aC5mbG9vcigoKHIlPTEpPDA/KytyOnIpKmUpLGk9dFsobitlLTEpJWVdLGE9dFtuJWVdLHM9dFsobisxKSVlXSxvPXRbKG4rMiklZV07cmV0dXJuIE01KChyLW4vZSkqZSxpLGEscyxvKX19Y29uc3QgSHU9dD0+KCk9PnQ7ZnVuY3Rpb24gSTUodCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIHQrciplfX1mdW5jdGlvbiBCQih0LGUscil7cmV0dXJuIHQ9TWF0aC5wb3codCxyKSxlPU1hdGgucG93KGUsciktdCxyPTEvcixmdW5jdGlvbihuKXtyZXR1cm4gTWF0aC5wb3codCtuKmUscil9fWZ1bmN0aW9uIEd1KHQsZSl7dmFyIHI9ZS10O3JldHVybiByP0k1KHQscj4xODB8fHI8LTE4MD9yLTM2MCpNYXRoLnJvdW5kKHIvMzYwKTpyKTpIdShpc05hTih0KT9lOnQpfWZ1bmN0aW9uIERCKHQpe3JldHVybih0PSt0KT09MT9DcjpmdW5jdGlvbihlLHIpe3JldHVybiByLWU/QkIoZSxyLHQpOkh1KGlzTmFOKGUpP3I6ZSl9fWZ1bmN0aW9uIENyKHQsZSl7dmFyIHI9ZS10O3JldHVybiByP0k1KHQscik6SHUoaXNOYU4odCk/ZTp0KX1jb25zdCBObD1mdW5jdGlvbiB0KGUpe3ZhciByPURCKGUpO2Z1bmN0aW9uIG4oaSxhKXt2YXIgcz1yKChpPXBvKGkpKS5yLChhPXBvKGEpKS5yKSxvPXIoaS5nLGEuZyksbD1yKGkuYixhLmIpLHU9Q3IoaS5vcGFjaXR5LGEub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKGgpe3JldHVybiBpLnI9cyhoKSxpLmc9byhoKSxpLmI9bChoKSxpLm9wYWNpdHk9dShoKSxpKyIifX1yZXR1cm4gbi5nYW1tYT10LG59KDEpO2Z1bmN0aW9uIE41KHQpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgcj1lLmxlbmd0aCxuPW5ldyBBcnJheShyKSxpPW5ldyBBcnJheShyKSxhPW5ldyBBcnJheShyKSxzLG87Zm9yKHM9MDtzPHI7KytzKW89cG8oZVtzXSksbltzXT1vLnJ8fDAsaVtzXT1vLmd8fDAsYVtzXT1vLmJ8fDA7cmV0dXJuIG49dChuKSxpPXQoaSksYT10KGEpLG8ub3BhY2l0eT0xLGZ1bmN0aW9uKGwpe3JldHVybiBvLnI9bihsKSxvLmc9aShsKSxvLmI9YShsKSxvKyIifX19dmFyIEI1PU41KEw1KSxPQj1ONShSNSk7ZnVuY3Rpb24gZGQodCxlKXtlfHwoZT1bXSk7dmFyIHI9dD9NYXRoLm1pbihlLmxlbmd0aCx0Lmxlbmd0aCk6MCxuPWUuc2xpY2UoKSxpO3JldHVybiBmdW5jdGlvbihhKXtmb3IoaT0wO2k8cjsrK2kpbltpXT10W2ldKigxLWEpK2VbaV0qYTtyZXR1cm4gbn19ZnVuY3Rpb24gRDUodCl7cmV0dXJuIEFycmF5QnVmZmVyLmlzVmlldyh0KSYmISh0IGluc3RhbmNlb2YgRGF0YVZpZXcpfWZ1bmN0aW9uIEZCKHQsZSl7cmV0dXJuKEQ1KGUpP2RkOk81KSh0LGUpfWZ1bmN0aW9uIE81KHQsZSl7dmFyIHI9ZT9lLmxlbmd0aDowLG49dD9NYXRoLm1pbihyLHQubGVuZ3RoKTowLGk9bmV3IEFycmF5KG4pLGE9bmV3IEFycmF5KHIpLHM7Zm9yKHM9MDtzPG47KytzKWlbc109TWEodFtzXSxlW3NdKTtmb3IoO3M8cjsrK3MpYVtzXT1lW3NdO3JldHVybiBmdW5jdGlvbihvKXtmb3Iocz0wO3M8bjsrK3MpYVtzXT1pW3NdKG8pO3JldHVybiBhfX1mdW5jdGlvbiBGNSh0LGUpe3ZhciByPW5ldyBEYXRlO3JldHVybiB0PSt0LGU9K2UsZnVuY3Rpb24obil7cmV0dXJuIHIuc2V0VGltZSh0KigxLW4pK2Uqbikscn19ZnVuY3Rpb24gQm4odCxlKXtyZXR1cm4gdD0rdCxlPStlLGZ1bmN0aW9uKHIpe3JldHVybiB0KigxLXIpK2Uqcn19ZnVuY3Rpb24gUDUodCxlKXt2YXIgcj17fSxuPXt9LGk7KHQ9PT1udWxsfHx0eXBlb2YgdCE9Im9iamVjdCIpJiYodD17fSksKGU9PT1udWxsfHx0eXBlb2YgZSE9Im9iamVjdCIpJiYoZT17fSk7Zm9yKGkgaW4gZSlpIGluIHQ/cltpXT1NYSh0W2ldLGVbaV0pOm5baV09ZVtpXTtyZXR1cm4gZnVuY3Rpb24oYSl7Zm9yKGkgaW4gciluW2ldPXJbaV0oYSk7cmV0dXJuIG59fXZhciBwZD0vWy0rXT8oPzpcZCtcLj9cZCp8XC4/XGQrKSg/OltlRV1bLStdP1xkKyk/L2csZ2Q9bmV3IFJlZ0V4cChwZC5zb3VyY2UsImciKTtmdW5jdGlvbiBQQih0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdH19ZnVuY3Rpb24gcUIodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiB0KGUpKyIifX1mdW5jdGlvbiB5ZCh0LGUpe3ZhciByPXBkLmxhc3RJbmRleD1nZC5sYXN0SW5kZXg9MCxuLGksYSxzPS0xLG89W10sbD1bXTtmb3IodD10KyIiLGU9ZSsiIjsobj1wZC5leGVjKHQpKSYmKGk9Z2QuZXhlYyhlKSk7KShhPWkuaW5kZXgpPnImJihhPWUuc2xpY2UocixhKSxvW3NdP29bc10rPWE6b1srK3NdPWEpLChuPW5bMF0pPT09KGk9aVswXSk/b1tzXT9vW3NdKz1pOm9bKytzXT1pOihvWysrc109bnVsbCxsLnB1c2goe2k6cyx4OkJuKG4saSl9KSkscj1nZC5sYXN0SW5kZXg7cmV0dXJuIHI8ZS5sZW5ndGgmJihhPWUuc2xpY2Uociksb1tzXT9vW3NdKz1hOm9bKytzXT1hKSxvLmxlbmd0aDwyP2xbMF0/cUIobFswXS54KTpQQihlKTooZT1sLmxlbmd0aCxmdW5jdGlvbih1KXtmb3IodmFyIGg9MCxkO2g8ZTsrK2gpb1soZD1sW2hdKS5pXT1kLngodSk7cmV0dXJuIG8uam9pbigiIil9KX1mdW5jdGlvbiBNYSh0LGUpe3ZhciByPXR5cGVvZiBlLG47cmV0dXJuIGU9PW51bGx8fHI9PT0iYm9vbGVhbiI/SHUoZSk6KHI9PT0ibnVtYmVyIj9CbjpyPT09InN0cmluZyI/KG49QWEoZSkpPyhlPW4sTmwpOnlkOmUgaW5zdGFuY2VvZiBBYT9ObDplIGluc3RhbmNlb2YgRGF0ZT9GNTpENShlKT9kZDpBcnJheS5pc0FycmF5KGUpP081OnR5cGVvZiBlLnZhbHVlT2YhPSJmdW5jdGlvbiImJnR5cGVvZiBlLnRvU3RyaW5nIT0iZnVuY3Rpb24ifHxpc05hTihlKT9QNTpCbikodCxlKX1mdW5jdGlvbiBWQih0KXt2YXIgZT10Lmxlbmd0aDtyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIHRbTWF0aC5tYXgoMCxNYXRoLm1pbihlLTEsTWF0aC5mbG9vcihyKmUpKSldfX1mdW5jdGlvbiB6Qih0LGUpe3ZhciByPUd1KCt0LCtlKTtyZXR1cm4gZnVuY3Rpb24obil7dmFyIGk9cihuKTtyZXR1cm4gaS0zNjAqTWF0aC5mbG9vcihpLzM2MCl9fWZ1bmN0aW9uIGp1KHQsZSl7cmV0dXJuIHQ9K3QsZT0rZSxmdW5jdGlvbihyKXtyZXR1cm4gTWF0aC5yb3VuZCh0KigxLXIpK2Uqcil9fXZhciBxNT0xODAvTWF0aC5QSSxtZD17dHJhbnNsYXRlWDowLHRyYW5zbGF0ZVk6MCxyb3RhdGU6MCxza2V3WDowLHNjYWxlWDoxLHNjYWxlWToxfTtmdW5jdGlvbiBWNSh0LGUscixuLGksYSl7dmFyIHMsbyxsO3JldHVybihzPU1hdGguc3FydCh0KnQrZSplKSkmJih0Lz1zLGUvPXMpLChsPXQqcitlKm4pJiYoci09dCpsLG4tPWUqbCksKG89TWF0aC5zcXJ0KHIqcituKm4pKSYmKHIvPW8sbi89byxsLz1vKSx0Km48ZSpyJiYodD0tdCxlPS1lLGw9LWwscz0tcykse3RyYW5zbGF0ZVg6aSx0cmFuc2xhdGVZOmEscm90YXRlOk1hdGguYXRhbjIoZSx0KSpxNSxza2V3WDpNYXRoLmF0YW4obCkqcTUsc2NhbGVYOnMsc2NhbGVZOm99fXZhciAkdTtmdW5jdGlvbiBZQih0KXtjb25zdCBlPW5ldyh0eXBlb2YgRE9NTWF0cml4PT0iZnVuY3Rpb24iP0RPTU1hdHJpeDpXZWJLaXRDU1NNYXRyaXgpKHQrIiIpO3JldHVybiBlLmlzSWRlbnRpdHk/bWQ6VjUoZS5hLGUuYixlLmMsZS5kLGUuZSxlLmYpfWZ1bmN0aW9uIFVCKHQpe3JldHVybiB0PT1udWxsfHwoJHV8fCgkdT1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwiZyIpKSwkdS5zZXRBdHRyaWJ1dGUoInRyYW5zZm9ybSIsdCksISh0PSR1LnRyYW5zZm9ybS5iYXNlVmFsLmNvbnNvbGlkYXRlKCkpKT9tZDoodD10Lm1hdHJpeCxWNSh0LmEsdC5iLHQuYyx0LmQsdC5lLHQuZikpfWZ1bmN0aW9uIHo1KHQsZSxyLG4pe2Z1bmN0aW9uIGkodSl7cmV0dXJuIHUubGVuZ3RoP3UucG9wKCkrIiAiOiIifWZ1bmN0aW9uIGEodSxoLGQsZixwLG0pe2lmKHUhPT1kfHxoIT09Zil7dmFyIF89cC5wdXNoKCJ0cmFuc2xhdGUoIixudWxsLGUsbnVsbCxyKTttLnB1c2goe2k6Xy00LHg6Qm4odSxkKX0se2k6Xy0yLHg6Qm4oaCxmKX0pfWVsc2UoZHx8ZikmJnAucHVzaCgidHJhbnNsYXRlKCIrZCtlK2Yrcil9ZnVuY3Rpb24gcyh1LGgsZCxmKXt1IT09aD8odS1oPjE4MD9oKz0zNjA6aC11PjE4MCYmKHUrPTM2MCksZi5wdXNoKHtpOmQucHVzaChpKGQpKyJyb3RhdGUoIixudWxsLG4pLTIseDpCbih1LGgpfSkpOmgmJmQucHVzaChpKGQpKyJyb3RhdGUoIitoK24pfWZ1bmN0aW9uIG8odSxoLGQsZil7dSE9PWg/Zi5wdXNoKHtpOmQucHVzaChpKGQpKyJza2V3WCgiLG51bGwsbiktMix4OkJuKHUsaCl9KTpoJiZkLnB1c2goaShkKSsic2tld1goIitoK24pfWZ1bmN0aW9uIGwodSxoLGQsZixwLG0pe2lmKHUhPT1kfHxoIT09Zil7dmFyIF89cC5wdXNoKGkocCkrInNjYWxlKCIsbnVsbCwiLCIsbnVsbCwiKSIpO20ucHVzaCh7aTpfLTQseDpCbih1LGQpfSx7aTpfLTIseDpCbihoLGYpfSl9ZWxzZShkIT09MXx8ZiE9PTEpJiZwLnB1c2goaShwKSsic2NhbGUoIitkKyIsIitmKyIpIil9cmV0dXJuIGZ1bmN0aW9uKHUsaCl7dmFyIGQ9W10sZj1bXTtyZXR1cm4gdT10KHUpLGg9dChoKSxhKHUudHJhbnNsYXRlWCx1LnRyYW5zbGF0ZVksaC50cmFuc2xhdGVYLGgudHJhbnNsYXRlWSxkLGYpLHModS5yb3RhdGUsaC5yb3RhdGUsZCxmKSxvKHUuc2tld1gsaC5za2V3WCxkLGYpLGwodS5zY2FsZVgsdS5zY2FsZVksaC5zY2FsZVgsaC5zY2FsZVksZCxmKSx1PWg9bnVsbCxmdW5jdGlvbihwKXtmb3IodmFyIG09LTEsXz1mLmxlbmd0aCx5OysrbTxfOylkWyh5PWZbbV0pLmldPXkueChwKTtyZXR1cm4gZC5qb2luKCIiKX19fXZhciBZNT16NShZQiwicHgsICIsInB4KSIsImRlZykiKSxVNT16NShVQiwiLCAiLCIpIiwiKSIpLFdCPTFlLTEyO2Z1bmN0aW9uIFc1KHQpe3JldHVybigodD1NYXRoLmV4cCh0KSkrMS90KS8yfWZ1bmN0aW9uIEhCKHQpe3JldHVybigodD1NYXRoLmV4cCh0KSktMS90KS8yfWZ1bmN0aW9uIEdCKHQpe3JldHVybigodD1NYXRoLmV4cCgyKnQpKS0xKS8odCsxKX1jb25zdCBINT1mdW5jdGlvbiB0KGUscixuKXtmdW5jdGlvbiBpKGEscyl7dmFyIG89YVswXSxsPWFbMV0sdT1hWzJdLGg9c1swXSxkPXNbMV0sZj1zWzJdLHA9aC1vLG09ZC1sLF89cCpwK20qbSx5LGI7aWYoXzxXQiliPU1hdGgubG9nKGYvdSkvZSx5PWZ1bmN0aW9uKFMpe3JldHVybltvK1MqcCxsK1MqbSx1Kk1hdGguZXhwKGUqUypiKV19O2Vsc2V7dmFyIHg9TWF0aC5zcXJ0KF8pLGs9KGYqZi11KnUrbipfKS8oMip1KnIqeCksVD0oZipmLXUqdS1uKl8pLygyKmYqcip4KSxDPU1hdGgubG9nKE1hdGguc3FydChrKmsrMSktayksTT1NYXRoLmxvZyhNYXRoLnNxcnQoVCpUKzEpLVQpO2I9KE0tQykvZSx5PWZ1bmN0aW9uKFMpe3ZhciBSPVMqYixBPVc1KEMpLEw9dS8ocip4KSooQSpHQihlKlIrQyktSEIoQykpO3JldHVybltvK0wqcCxsK0wqbSx1KkEvVzUoZSpSK0MpXX19cmV0dXJuIHkuZHVyYXRpb249YioxZTMqZS9NYXRoLlNRUlQyLHl9cmV0dXJuIGkucmhvPWZ1bmN0aW9uKGEpe3ZhciBzPU1hdGgubWF4KC4wMDEsK2EpLG89cypzLGw9bypvO3JldHVybiB0KHMsbyxsKX0saX0oTWF0aC5TUVJUMiwyLDQpO2Z1bmN0aW9uIEc1KHQpe3JldHVybiBmdW5jdGlvbihlLHIpe3ZhciBuPXQoKGU9cXUoZSkpLmgsKHI9cXUocikpLmgpLGk9Q3IoZS5zLHIucyksYT1DcihlLmwsci5sKSxzPUNyKGUub3BhY2l0eSxyLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbihvKXtyZXR1cm4gZS5oPW4obyksZS5zPWkobyksZS5sPWEobyksZS5vcGFjaXR5PXMobyksZSsiIn19fWNvbnN0IGpCPUc1KEd1KTt2YXIgJEI9RzUoQ3IpO2Z1bmN0aW9uIFhCKHQsZSl7dmFyIHI9Q3IoKHQ9WXUodCkpLmwsKGU9WXUoZSkpLmwpLG49Q3IodC5hLGUuYSksaT1Dcih0LmIsZS5iKSxhPUNyKHQub3BhY2l0eSxlLm9wYWNpdHkpO3JldHVybiBmdW5jdGlvbihzKXtyZXR1cm4gdC5sPXIocyksdC5hPW4ocyksdC5iPWkocyksdC5vcGFjaXR5PWEocyksdCsiIn19ZnVuY3Rpb24gajUodCl7cmV0dXJuIGZ1bmN0aW9uKGUscil7dmFyIG49dCgoZT1VdShlKSkuaCwocj1VdShyKSkuaCksaT1DcihlLmMsci5jKSxhPUNyKGUubCxyLmwpLHM9Q3IoZS5vcGFjaXR5LHIub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKG8pe3JldHVybiBlLmg9bihvKSxlLmM9aShvKSxlLmw9YShvKSxlLm9wYWNpdHk9cyhvKSxlKyIifX19Y29uc3QgJDU9ajUoR3UpO3ZhciBLQj1qNShDcik7ZnVuY3Rpb24gWDUodCl7cmV0dXJuIGZ1bmN0aW9uIGUocil7cj0rcjtmdW5jdGlvbiBuKGksYSl7dmFyIHM9dCgoaT1RbihpKSkuaCwoYT1RbihhKSkuaCksbz1DcihpLnMsYS5zKSxsPUNyKGkubCxhLmwpLHU9Q3IoaS5vcGFjaXR5LGEub3BhY2l0eSk7cmV0dXJuIGZ1bmN0aW9uKGgpe3JldHVybiBpLmg9cyhoKSxpLnM9byhoKSxpLmw9bChNYXRoLnBvdyhoLHIpKSxpLm9wYWNpdHk9dShoKSxpKyIifX1yZXR1cm4gbi5nYW1tYT1lLG59KDEpfWNvbnN0IFpCPVg1KEd1KTt2YXIgWHU9WDUoQ3IpO2Z1bmN0aW9uIEs1KHQsZSl7ZT09PXZvaWQgMCYmKGU9dCx0PU1hKTtmb3IodmFyIHI9MCxuPWUubGVuZ3RoLTEsaT1lWzBdLGE9bmV3IEFycmF5KG48MD8wOm4pO3I8bjspYVtyXT10KGksaT1lWysrcl0pO3JldHVybiBmdW5jdGlvbihzKXt2YXIgbz1NYXRoLm1heCgwLE1hdGgubWluKG4tMSxNYXRoLmZsb29yKHMqPW4pKSk7cmV0dXJuIGFbb10ocy1vKX19ZnVuY3Rpb24gUUIodCxlKXtmb3IodmFyIHI9bmV3IEFycmF5KGUpLG49MDtuPGU7KytuKXJbbl09dChuLyhlLTEpKTtyZXR1cm4gcn12YXIgeW89MCxCbD0wLERsPTAsWjU9MWUzLEt1LE9sLFp1PTAsX3M9MCxRdT0wLEZsPXR5cGVvZiBwZXJmb3JtYW5jZT09Im9iamVjdCImJnBlcmZvcm1hbmNlLm5vdz9wZXJmb3JtYW5jZTpEYXRlLFE1PXR5cGVvZiB3aW5kb3c9PSJvYmplY3QiJiZ3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lP3dpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUuYmluZCh3aW5kb3cpOmZ1bmN0aW9uKHQpe3NldFRpbWVvdXQodCwxNyl9O2Z1bmN0aW9uIFBsKCl7cmV0dXJuIF9zfHwoUTUoSkIpLF9zPUZsLm5vdygpK1F1KX1mdW5jdGlvbiBKQigpe19zPTB9ZnVuY3Rpb24gcWwoKXt0aGlzLl9jYWxsPXRoaXMuX3RpbWU9dGhpcy5fbmV4dD1udWxsfXFsLnByb3RvdHlwZT1KdS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOnFsLHJlc3RhcnQ6ZnVuY3Rpb24odCxlLHIpe2lmKHR5cGVvZiB0IT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoImNhbGxiYWNrIGlzIG5vdCBhIGZ1bmN0aW9uIik7cj0ocj09bnVsbD9QbCgpOityKSsoZT09bnVsbD8wOitlKSwhdGhpcy5fbmV4dCYmT2whPT10aGlzJiYoT2w/T2wuX25leHQ9dGhpczpLdT10aGlzLE9sPXRoaXMpLHRoaXMuX2NhbGw9dCx0aGlzLl90aW1lPXIsYmQoKX0sc3RvcDpmdW5jdGlvbigpe3RoaXMuX2NhbGwmJih0aGlzLl9jYWxsPW51bGwsdGhpcy5fdGltZT0xLzAsYmQoKSl9fTtmdW5jdGlvbiBKdSh0LGUscil7dmFyIG49bmV3IHFsO3JldHVybiBuLnJlc3RhcnQodCxlLHIpLG59ZnVuY3Rpb24gSjUoKXtQbCgpLCsreW87Zm9yKHZhciB0PUt1LGU7dDspKGU9X3MtdC5fdGltZSk+PTAmJnQuX2NhbGwuY2FsbCh2b2lkIDAsZSksdD10Ll9uZXh0Oy0teW99ZnVuY3Rpb24gdHYoKXtfcz0oWnU9Rmwubm93KCkpK1F1LHlvPUJsPTA7dHJ5e0o1KCl9ZmluYWxseXt5bz0wLGVEKCksX3M9MH19ZnVuY3Rpb24gdEQoKXt2YXIgdD1GbC5ub3coKSxlPXQtWnU7ZT5aNSYmKFF1LT1lLFp1PXQpfWZ1bmN0aW9uIGVEKCl7Zm9yKHZhciB0LGU9S3UscixuPTEvMDtlOyllLl9jYWxsPyhuPmUuX3RpbWUmJihuPWUuX3RpbWUpLHQ9ZSxlPWUuX25leHQpOihyPWUuX25leHQsZS5fbmV4dD1udWxsLGU9dD90Ll9uZXh0PXI6S3U9cik7T2w9dCxiZChuKX1mdW5jdGlvbiBiZCh0KXtpZigheW8pe0JsJiYoQmw9Y2xlYXJUaW1lb3V0KEJsKSk7dmFyIGU9dC1fcztlPjI0Pyh0PDEvMCYmKEJsPXNldFRpbWVvdXQodHYsdC1GbC5ub3coKS1RdSkpLERsJiYoRGw9Y2xlYXJJbnRlcnZhbChEbCkpKTooRGx8fChadT1GbC5ub3coKSxEbD1zZXRJbnRlcnZhbCh0RCxaNSkpLHlvPTEsUTUodHYpKX19ZnVuY3Rpb24gX2QodCxlLHIpe3ZhciBuPW5ldyBxbDtyZXR1cm4gZT1lPT1udWxsPzA6K2Usbi5yZXN0YXJ0KGk9PntuLnN0b3AoKSx0KGkrZSl9LGUsciksbn1mdW5jdGlvbiByRCh0LGUscil7dmFyIG49bmV3IHFsLGk9ZTtyZXR1cm4gZT09bnVsbD8obi5yZXN0YXJ0KHQsZSxyKSxuKToobi5fcmVzdGFydD1uLnJlc3RhcnQsbi5yZXN0YXJ0PWZ1bmN0aW9uKGEscyxvKXtzPStzLG89bz09bnVsbD9QbCgpOitvLG4uX3Jlc3RhcnQoZnVuY3Rpb24gbCh1KXt1Kz1pLG4uX3Jlc3RhcnQobCxpKz1zLG8pLGEodSl9LHMsbyl9LG4ucmVzdGFydCh0LGUsciksbil9dmFyIG5EPWZzKCJzdGFydCIsImVuZCIsImNhbmNlbCIsImludGVycnVwdCIpLGlEPVtdLGV2PTAsdmQ9MSx4ZD0yLHRoPTMscnY9NCxrZD01LGVoPTY7ZnVuY3Rpb24gcmgodCxlLHIsbixpLGEpe3ZhciBzPXQuX190cmFuc2l0aW9uO2lmKCFzKXQuX190cmFuc2l0aW9uPXt9O2Vsc2UgaWYociBpbiBzKXJldHVybjthRCh0LHIse25hbWU6ZSxpbmRleDpuLGdyb3VwOmksb246bkQsdHdlZW46aUQsdGltZTphLnRpbWUsZGVsYXk6YS5kZWxheSxkdXJhdGlvbjphLmR1cmF0aW9uLGVhc2U6YS5lYXNlLHRpbWVyOm51bGwsc3RhdGU6ZXZ9KX1mdW5jdGlvbiB3ZCh0LGUpe3ZhciByPUpuKHQsZSk7aWYoci5zdGF0ZT5ldil0aHJvdyBuZXcgRXJyb3IoInRvbyBsYXRlOyBhbHJlYWR5IHNjaGVkdWxlZCIpO3JldHVybiByfWZ1bmN0aW9uIEVpKHQsZSl7dmFyIHI9Sm4odCxlKTtpZihyLnN0YXRlPnRoKXRocm93IG5ldyBFcnJvcigidG9vIGxhdGU7IGFscmVhZHkgcnVubmluZyIpO3JldHVybiByfWZ1bmN0aW9uIEpuKHQsZSl7dmFyIHI9dC5fX3RyYW5zaXRpb247aWYoIXJ8fCEocj1yW2VdKSl0aHJvdyBuZXcgRXJyb3IoInRyYW5zaXRpb24gbm90IGZvdW5kIik7cmV0dXJuIHJ9ZnVuY3Rpb24gYUQodCxlLHIpe3ZhciBuPXQuX190cmFuc2l0aW9uLGk7bltlXT1yLHIudGltZXI9SnUoYSwwLHIudGltZSk7ZnVuY3Rpb24gYSh1KXtyLnN0YXRlPXZkLHIudGltZXIucmVzdGFydChzLHIuZGVsYXksci50aW1lKSxyLmRlbGF5PD11JiZzKHUtci5kZWxheSl9ZnVuY3Rpb24gcyh1KXt2YXIgaCxkLGYscDtpZihyLnN0YXRlIT09dmQpcmV0dXJuIGwoKTtmb3IoaCBpbiBuKWlmKHA9bltoXSxwLm5hbWU9PT1yLm5hbWUpe2lmKHAuc3RhdGU9PT10aClyZXR1cm4gX2Qocyk7cC5zdGF0ZT09PXJ2PyhwLnN0YXRlPWVoLHAudGltZXIuc3RvcCgpLHAub24uY2FsbCgiaW50ZXJydXB0Iix0LHQuX19kYXRhX18scC5pbmRleCxwLmdyb3VwKSxkZWxldGUgbltoXSk6K2g8ZSYmKHAuc3RhdGU9ZWgscC50aW1lci5zdG9wKCkscC5vbi5jYWxsKCJjYW5jZWwiLHQsdC5fX2RhdGFfXyxwLmluZGV4LHAuZ3JvdXApLGRlbGV0ZSBuW2hdKX1pZihfZChmdW5jdGlvbigpe3Iuc3RhdGU9PT10aCYmKHIuc3RhdGU9cnYsci50aW1lci5yZXN0YXJ0KG8sci5kZWxheSxyLnRpbWUpLG8odSkpfSksci5zdGF0ZT14ZCxyLm9uLmNhbGwoInN0YXJ0Iix0LHQuX19kYXRhX18sci5pbmRleCxyLmdyb3VwKSxyLnN0YXRlPT09eGQpe2ZvcihyLnN0YXRlPXRoLGk9bmV3IEFycmF5KGY9ci50d2Vlbi5sZW5ndGgpLGg9MCxkPS0xO2g8ZjsrK2gpKHA9ci50d2VlbltoXS52YWx1ZS5jYWxsKHQsdC5fX2RhdGFfXyxyLmluZGV4LHIuZ3JvdXApKSYmKGlbKytkXT1wKTtpLmxlbmd0aD1kKzF9fWZ1bmN0aW9uIG8odSl7Zm9yKHZhciBoPXU8ci5kdXJhdGlvbj9yLmVhc2UuY2FsbChudWxsLHUvci5kdXJhdGlvbik6KHIudGltZXIucmVzdGFydChsKSxyLnN0YXRlPWtkLDEpLGQ9LTEsZj1pLmxlbmd0aDsrK2Q8ZjspaVtkXS5jYWxsKHQsaCk7ci5zdGF0ZT09PWtkJiYoci5vbi5jYWxsKCJlbmQiLHQsdC5fX2RhdGFfXyxyLmluZGV4LHIuZ3JvdXApLGwoKSl9ZnVuY3Rpb24gbCgpe3Iuc3RhdGU9ZWgsci50aW1lci5zdG9wKCksZGVsZXRlIG5bZV07Zm9yKHZhciB1IGluIG4pcmV0dXJuO2RlbGV0ZSB0Ll9fdHJhbnNpdGlvbn19ZnVuY3Rpb24gdnModCxlKXt2YXIgcj10Ll9fdHJhbnNpdGlvbixuLGksYT0hMCxzO2lmKCEhcil7ZT1lPT1udWxsP251bGw6ZSsiIjtmb3IocyBpbiByKXtpZigobj1yW3NdKS5uYW1lIT09ZSl7YT0hMTtjb250aW51ZX1pPW4uc3RhdGU+eGQmJm4uc3RhdGU8a2Qsbi5zdGF0ZT1laCxuLnRpbWVyLnN0b3AoKSxuLm9uLmNhbGwoaT8iaW50ZXJydXB0IjoiY2FuY2VsIix0LHQuX19kYXRhX18sbi5pbmRleCxuLmdyb3VwKSxkZWxldGUgcltzXX1hJiZkZWxldGUgdC5fX3RyYW5zaXRpb259fWZ1bmN0aW9uIHNEKHQpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2cyh0aGlzLHQpfSl9ZnVuY3Rpb24gb0QodCxlKXt2YXIgcixuO3JldHVybiBmdW5jdGlvbigpe3ZhciBpPUVpKHRoaXMsdCksYT1pLnR3ZWVuO2lmKGEhPT1yKXtuPXI9YTtmb3IodmFyIHM9MCxvPW4ubGVuZ3RoO3M8bzsrK3MpaWYobltzXS5uYW1lPT09ZSl7bj1uLnNsaWNlKCksbi5zcGxpY2UocywxKTticmVha319aS50d2Vlbj1ufX1mdW5jdGlvbiBsRCh0LGUscil7dmFyIG4saTtpZih0eXBlb2YgciE9ImZ1bmN0aW9uIil0aHJvdyBuZXcgRXJyb3I7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9RWkodGhpcyx0KSxzPWEudHdlZW47aWYocyE9PW4pe2k9KG49cykuc2xpY2UoKTtmb3IodmFyIG89e25hbWU6ZSx2YWx1ZTpyfSxsPTAsdT1pLmxlbmd0aDtsPHU7KytsKWlmKGlbbF0ubmFtZT09PWUpe2lbbF09bzticmVha31sPT09dSYmaS5wdXNoKG8pfWEudHdlZW49aX19ZnVuY3Rpb24gY0QodCxlKXt2YXIgcj10aGlzLl9pZDtpZih0Kz0iIixhcmd1bWVudHMubGVuZ3RoPDIpe2Zvcih2YXIgbj1Kbih0aGlzLm5vZGUoKSxyKS50d2VlbixpPTAsYT1uLmxlbmd0aCxzO2k8YTsrK2kpaWYoKHM9bltpXSkubmFtZT09PXQpcmV0dXJuIHMudmFsdWU7cmV0dXJuIG51bGx9cmV0dXJuIHRoaXMuZWFjaCgoZT09bnVsbD9vRDpsRCkocix0LGUpKX1mdW5jdGlvbiBUZCh0LGUscil7dmFyIG49dC5faWQ7cmV0dXJuIHQuZWFjaChmdW5jdGlvbigpe3ZhciBpPUVpKHRoaXMsbik7KGkudmFsdWV8fChpLnZhbHVlPXt9KSlbZV09ci5hcHBseSh0aGlzLGFyZ3VtZW50cyl9KSxmdW5jdGlvbihpKXtyZXR1cm4gSm4oaSxuKS52YWx1ZVtlXX19ZnVuY3Rpb24gbnYodCxlKXt2YXIgcjtyZXR1cm4odHlwZW9mIGU9PSJudW1iZXIiP0JuOmUgaW5zdGFuY2VvZiBBYT9ObDoocj1BYShlKSk/KGU9cixObCk6eWQpKHQsZSl9ZnVuY3Rpb24gdUQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5yZW1vdmVBdHRyaWJ1dGUodCl9fWZ1bmN0aW9uIGhEKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKX19ZnVuY3Rpb24gZkQodCxlLHIpe3ZhciBuLGk9cisiIixhO3JldHVybiBmdW5jdGlvbigpe3ZhciBzPXRoaXMuZ2V0QXR0cmlidXRlKHQpO3JldHVybiBzPT09aT9udWxsOnM9PT1uP2E6YT1lKG49cyxyKX19ZnVuY3Rpb24gZEQodCxlLHIpe3ZhciBuLGk9cisiIixhO3JldHVybiBmdW5jdGlvbigpe3ZhciBzPXRoaXMuZ2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKTtyZXR1cm4gcz09PWk/bnVsbDpzPT09bj9hOmE9ZShuPXMscil9fWZ1bmN0aW9uIHBEKHQsZSxyKXt2YXIgbixpLGE7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHMsbz1yKHRoaXMpLGw7cmV0dXJuIG89PW51bGw/dm9pZCB0aGlzLnJlbW92ZUF0dHJpYnV0ZSh0KToocz10aGlzLmdldEF0dHJpYnV0ZSh0KSxsPW8rIiIscz09PWw/bnVsbDpzPT09biYmbD09PWk/YTooaT1sLGE9ZShuPXMsbykpKX19ZnVuY3Rpb24gZ0QodCxlLHIpe3ZhciBuLGksYTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgcyxvPXIodGhpcyksbDtyZXR1cm4gbz09bnVsbD92b2lkIHRoaXMucmVtb3ZlQXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsKToocz10aGlzLmdldEF0dHJpYnV0ZU5TKHQuc3BhY2UsdC5sb2NhbCksbD1vKyIiLHM9PT1sP251bGw6cz09PW4mJmw9PT1pP2E6KGk9bCxhPWUobj1zLG8pKSl9fWZ1bmN0aW9uIHlEKHQsZSl7dmFyIHI9QWwodCksbj1yPT09InRyYW5zZm9ybSI/VTU6bnY7cmV0dXJuIHRoaXMuYXR0clR3ZWVuKHQsdHlwZW9mIGU9PSJmdW5jdGlvbiI/KHIubG9jYWw/Z0Q6cEQpKHIsbixUZCh0aGlzLCJhdHRyLiIrdCxlKSk6ZT09bnVsbD8oci5sb2NhbD9oRDp1RCkocik6KHIubG9jYWw/ZEQ6ZkQpKHIsbixlKSl9ZnVuY3Rpb24gbUQodCxlKXtyZXR1cm4gZnVuY3Rpb24ocil7dGhpcy5zZXRBdHRyaWJ1dGUodCxlLmNhbGwodGhpcyxyKSl9fWZ1bmN0aW9uIGJEKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKHIpe3RoaXMuc2V0QXR0cmlidXRlTlModC5zcGFjZSx0LmxvY2FsLGUuY2FsbCh0aGlzLHIpKX19ZnVuY3Rpb24gX0QodCxlKXt2YXIgcixuO2Z1bmN0aW9uIGkoKXt2YXIgYT1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gYSE9PW4mJihyPShuPWEpJiZiRCh0LGEpKSxyfXJldHVybiBpLl92YWx1ZT1lLGl9ZnVuY3Rpb24gdkQodCxlKXt2YXIgcixuO2Z1bmN0aW9uIGkoKXt2YXIgYT1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gYSE9PW4mJihyPShuPWEpJiZtRCh0LGEpKSxyfXJldHVybiBpLl92YWx1ZT1lLGl9ZnVuY3Rpb24geEQodCxlKXt2YXIgcj0iYXR0ci4iK3Q7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXJldHVybihyPXRoaXMudHdlZW4ocikpJiZyLl92YWx1ZTtpZihlPT1udWxsKXJldHVybiB0aGlzLnR3ZWVuKHIsbnVsbCk7aWYodHlwZW9mIGUhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IEVycm9yO3ZhciBuPUFsKHQpO3JldHVybiB0aGlzLnR3ZWVuKHIsKG4ubG9jYWw/X0Q6dkQpKG4sZSkpfWZ1bmN0aW9uIGtEKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7d2QodGhpcyx0KS5kZWxheT0rZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIHdEKHQsZSl7cmV0dXJuIGU9K2UsZnVuY3Rpb24oKXt3ZCh0aGlzLHQpLmRlbGF5PWV9fWZ1bmN0aW9uIFREKHQpe3ZhciBlPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaCgodHlwZW9mIHQ9PSJmdW5jdGlvbiI/a0Q6d0QpKGUsdCkpOkpuKHRoaXMubm9kZSgpLGUpLmRlbGF5fWZ1bmN0aW9uIEVEKHQsZSl7cmV0dXJuIGZ1bmN0aW9uKCl7RWkodGhpcyx0KS5kdXJhdGlvbj0rZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fWZ1bmN0aW9uIENEKHQsZSl7cmV0dXJuIGU9K2UsZnVuY3Rpb24oKXtFaSh0aGlzLHQpLmR1cmF0aW9uPWV9fWZ1bmN0aW9uIFNEKHQpe3ZhciBlPXRoaXMuX2lkO3JldHVybiBhcmd1bWVudHMubGVuZ3RoP3RoaXMuZWFjaCgodHlwZW9mIHQ9PSJmdW5jdGlvbiI/RUQ6Q0QpKGUsdCkpOkpuKHRoaXMubm9kZSgpLGUpLmR1cmF0aW9ufWZ1bmN0aW9uIEFEKHQsZSl7aWYodHlwZW9mIGUhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IEVycm9yO3JldHVybiBmdW5jdGlvbigpe0VpKHRoaXMsdCkuZWFzZT1lfX1mdW5jdGlvbiBNRCh0KXt2YXIgZT10aGlzLl9pZDtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmVhY2goQUQoZSx0KSk6Sm4odGhpcy5ub2RlKCksZSkuZWFzZX1mdW5jdGlvbiBMRCh0LGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciByPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKHR5cGVvZiByIT0iZnVuY3Rpb24iKXRocm93IG5ldyBFcnJvcjtFaSh0aGlzLHQpLmVhc2U9cn19ZnVuY3Rpb24gUkQodCl7aWYodHlwZW9mIHQhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IEVycm9yO3JldHVybiB0aGlzLmVhY2goTEQodGhpcy5faWQsdCkpfWZ1bmN0aW9uIElEKHQpe3R5cGVvZiB0IT0iZnVuY3Rpb24iJiYodD1RMCh0KSk7Zm9yKHZhciBlPXRoaXMuX2dyb3VwcyxyPWUubGVuZ3RoLG49bmV3IEFycmF5KHIpLGk9MDtpPHI7KytpKWZvcih2YXIgYT1lW2ldLHM9YS5sZW5ndGgsbz1uW2ldPVtdLGwsdT0wO3U8czsrK3UpKGw9YVt1XSkmJnQuY2FsbChsLGwuX19kYXRhX18sdSxhKSYmby5wdXNoKGwpO3JldHVybiBuZXcgQ2kobix0aGlzLl9wYXJlbnRzLHRoaXMuX25hbWUsdGhpcy5faWQpfWZ1bmN0aW9uIE5EKHQpe2lmKHQuX2lkIT09dGhpcy5faWQpdGhyb3cgbmV3IEVycm9yO2Zvcih2YXIgZT10aGlzLl9ncm91cHMscj10Ll9ncm91cHMsbj1lLmxlbmd0aCxpPXIubGVuZ3RoLGE9TWF0aC5taW4obixpKSxzPW5ldyBBcnJheShuKSxvPTA7bzxhOysrbylmb3IodmFyIGw9ZVtvXSx1PXJbb10saD1sLmxlbmd0aCxkPXNbb109bmV3IEFycmF5KGgpLGYscD0wO3A8aDsrK3ApKGY9bFtwXXx8dVtwXSkmJihkW3BdPWYpO2Zvcig7bzxuOysrbylzW29dPWVbb107cmV0dXJuIG5ldyBDaShzLHRoaXMuX3BhcmVudHMsdGhpcy5fbmFtZSx0aGlzLl9pZCl9ZnVuY3Rpb24gQkQodCl7cmV0dXJuKHQrIiIpLnRyaW0oKS5zcGxpdCgvXnxccysvKS5ldmVyeShmdW5jdGlvbihlKXt2YXIgcj1lLmluZGV4T2YoIi4iKTtyZXR1cm4gcj49MCYmKGU9ZS5zbGljZSgwLHIpKSwhZXx8ZT09PSJzdGFydCJ9KX1mdW5jdGlvbiBERCh0LGUscil7dmFyIG4saSxhPUJEKGUpP3dkOkVpO3JldHVybiBmdW5jdGlvbigpe3ZhciBzPWEodGhpcyx0KSxvPXMub247byE9PW4mJihpPShuPW8pLmNvcHkoKSkub24oZSxyKSxzLm9uPWl9fWZ1bmN0aW9uIE9EKHQsZSl7dmFyIHI9dGhpcy5faWQ7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj9Kbih0aGlzLm5vZGUoKSxyKS5vbi5vbih0KTp0aGlzLmVhY2goREQocix0LGUpKX1mdW5jdGlvbiBGRCh0KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZT10aGlzLnBhcmVudE5vZGU7Zm9yKHZhciByIGluIHRoaXMuX190cmFuc2l0aW9uKWlmKCtyIT09dClyZXR1cm47ZSYmZS5yZW1vdmVDaGlsZCh0aGlzKX19ZnVuY3Rpb24gUEQoKXtyZXR1cm4gdGhpcy5vbigiZW5kLnJlbW92ZSIsRkQodGhpcy5faWQpKX1mdW5jdGlvbiBxRCh0KXt2YXIgZT10aGlzLl9uYW1lLHI9dGhpcy5faWQ7dHlwZW9mIHQhPSJmdW5jdGlvbiImJih0PVJ1KHQpKTtmb3IodmFyIG49dGhpcy5fZ3JvdXBzLGk9bi5sZW5ndGgsYT1uZXcgQXJyYXkoaSkscz0wO3M8aTsrK3MpZm9yKHZhciBvPW5bc10sbD1vLmxlbmd0aCx1PWFbc109bmV3IEFycmF5KGwpLGgsZCxmPTA7ZjxsOysrZikoaD1vW2ZdKSYmKGQ9dC5jYWxsKGgsaC5fX2RhdGFfXyxmLG8pKSYmKCJfX2RhdGFfXyJpbiBoJiYoZC5fX2RhdGFfXz1oLl9fZGF0YV9fKSx1W2ZdPWQscmgodVtmXSxlLHIsZix1LEpuKGgscikpKTtyZXR1cm4gbmV3IENpKGEsdGhpcy5fcGFyZW50cyxlLHIpfWZ1bmN0aW9uIFZEKHQpe3ZhciBlPXRoaXMuX25hbWUscj10aGlzLl9pZDt0eXBlb2YgdCE9ImZ1bmN0aW9uIiYmKHQ9WjAodCkpO2Zvcih2YXIgbj10aGlzLl9ncm91cHMsaT1uLmxlbmd0aCxhPVtdLHM9W10sbz0wO288aTsrK28pZm9yKHZhciBsPW5bb10sdT1sLmxlbmd0aCxoLGQ9MDtkPHU7KytkKWlmKGg9bFtkXSl7Zm9yKHZhciBmPXQuY2FsbChoLGguX19kYXRhX18sZCxsKSxwLG09Sm4oaCxyKSxfPTAseT1mLmxlbmd0aDtfPHk7KytfKShwPWZbX10pJiZyaChwLGUscixfLGYsbSk7YS5wdXNoKGYpLHMucHVzaChoKX1yZXR1cm4gbmV3IENpKGEscyxlLHIpfXZhciB6RD1wcy5wcm90b3R5cGUuY29uc3RydWN0b3I7ZnVuY3Rpb24gWUQoKXtyZXR1cm4gbmV3IHpEKHRoaXMuX2dyb3Vwcyx0aGlzLl9wYXJlbnRzKX1mdW5jdGlvbiBVRCh0LGUpe3ZhciByLG4saTtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYT1kcyh0aGlzLHQpLHM9KHRoaXMuc3R5bGUucmVtb3ZlUHJvcGVydHkodCksZHModGhpcyx0KSk7cmV0dXJuIGE9PT1zP251bGw6YT09PXImJnM9PT1uP2k6aT1lKHI9YSxuPXMpfX1mdW5jdGlvbiBpdih0KXtyZXR1cm4gZnVuY3Rpb24oKXt0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpfX1mdW5jdGlvbiBXRCh0LGUscil7dmFyIG4saT1yKyIiLGE7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHM9ZHModGhpcyx0KTtyZXR1cm4gcz09PWk/bnVsbDpzPT09bj9hOmE9ZShuPXMscil9fWZ1bmN0aW9uIEhEKHQsZSxyKXt2YXIgbixpLGE7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHM9ZHModGhpcyx0KSxvPXIodGhpcyksbD1vKyIiO3JldHVybiBvPT1udWxsJiYobD1vPSh0aGlzLnN0eWxlLnJlbW92ZVByb3BlcnR5KHQpLGRzKHRoaXMsdCkpKSxzPT09bD9udWxsOnM9PT1uJiZsPT09aT9hOihpPWwsYT1lKG49cyxvKSl9fWZ1bmN0aW9uIEdEKHQsZSl7dmFyIHIsbixpLGE9InN0eWxlLiIrZSxzPSJlbmQuIithLG87cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGw9RWkodGhpcyx0KSx1PWwub24saD1sLnZhbHVlW2FdPT1udWxsP298fChvPWl2KGUpKTp2b2lkIDA7KHUhPT1yfHxpIT09aCkmJihuPShyPXUpLmNvcHkoKSkub24ocyxpPWgpLGwub249bn19ZnVuY3Rpb24gakQodCxlLHIpe3ZhciBuPSh0Kz0iIik9PSJ0cmFuc2Zvcm0iP1k1Om52O3JldHVybiBlPT1udWxsP3RoaXMuc3R5bGVUd2Vlbih0LFVEKHQsbikpLm9uKCJlbmQuc3R5bGUuIit0LGl2KHQpKTp0eXBlb2YgZT09ImZ1bmN0aW9uIj90aGlzLnN0eWxlVHdlZW4odCxIRCh0LG4sVGQodGhpcywic3R5bGUuIit0LGUpKSkuZWFjaChHRCh0aGlzLl9pZCx0KSk6dGhpcy5zdHlsZVR3ZWVuKHQsV0QodCxuLGUpLHIpLm9uKCJlbmQuc3R5bGUuIit0LG51bGwpfWZ1bmN0aW9uICREKHQsZSxyKXtyZXR1cm4gZnVuY3Rpb24obil7dGhpcy5zdHlsZS5zZXRQcm9wZXJ0eSh0LGUuY2FsbCh0aGlzLG4pLHIpfX1mdW5jdGlvbiBYRCh0LGUscil7dmFyIG4saTtmdW5jdGlvbiBhKCl7dmFyIHM9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIHMhPT1pJiYobj0oaT1zKSYmJEQodCxzLHIpKSxufXJldHVybiBhLl92YWx1ZT1lLGF9ZnVuY3Rpb24gS0QodCxlLHIpe3ZhciBuPSJzdHlsZS4iKyh0Kz0iIik7aWYoYXJndW1lbnRzLmxlbmd0aDwyKXJldHVybihuPXRoaXMudHdlZW4obikpJiZuLl92YWx1ZTtpZihlPT1udWxsKXJldHVybiB0aGlzLnR3ZWVuKG4sbnVsbCk7aWYodHlwZW9mIGUhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IEVycm9yO3JldHVybiB0aGlzLnR3ZWVuKG4sWEQodCxlLHI9PW51bGw/IiI6cikpfWZ1bmN0aW9uIFpEKHQpe3JldHVybiBmdW5jdGlvbigpe3RoaXMudGV4dENvbnRlbnQ9dH19ZnVuY3Rpb24gUUQodCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGU9dCh0aGlzKTt0aGlzLnRleHRDb250ZW50PWU9PW51bGw/IiI6ZX19ZnVuY3Rpb24gSkQodCl7cmV0dXJuIHRoaXMudHdlZW4oInRleHQiLHR5cGVvZiB0PT0iZnVuY3Rpb24iP1FEKFRkKHRoaXMsInRleHQiLHQpKTpaRCh0PT1udWxsPyIiOnQrIiIpKX1mdW5jdGlvbiB0Tyh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7dGhpcy50ZXh0Q29udGVudD10LmNhbGwodGhpcyxlKX19ZnVuY3Rpb24gZU8odCl7dmFyIGUscjtmdW5jdGlvbiBuKCl7dmFyIGk9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIGkhPT1yJiYoZT0ocj1pKSYmdE8oaSkpLGV9cmV0dXJuIG4uX3ZhbHVlPXQsbn1mdW5jdGlvbiByTyh0KXt2YXIgZT0idGV4dCI7aWYoYXJndW1lbnRzLmxlbmd0aDwxKXJldHVybihlPXRoaXMudHdlZW4oZSkpJiZlLl92YWx1ZTtpZih0PT1udWxsKXJldHVybiB0aGlzLnR3ZWVuKGUsbnVsbCk7aWYodHlwZW9mIHQhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IEVycm9yO3JldHVybiB0aGlzLnR3ZWVuKGUsZU8odCkpfWZ1bmN0aW9uIG5PKCl7Zm9yKHZhciB0PXRoaXMuX25hbWUsZT10aGlzLl9pZCxyPXN2KCksbj10aGlzLl9ncm91cHMsaT1uLmxlbmd0aCxhPTA7YTxpOysrYSlmb3IodmFyIHM9blthXSxvPXMubGVuZ3RoLGwsdT0wO3U8bzsrK3UpaWYobD1zW3VdKXt2YXIgaD1KbihsLGUpO3JoKGwsdCxyLHUscyx7dGltZTpoLnRpbWUraC5kZWxheStoLmR1cmF0aW9uLGRlbGF5OjAsZHVyYXRpb246aC5kdXJhdGlvbixlYXNlOmguZWFzZX0pfXJldHVybiBuZXcgQ2kobix0aGlzLl9wYXJlbnRzLHQscil9ZnVuY3Rpb24gaU8oKXt2YXIgdCxlLHI9dGhpcyxuPXIuX2lkLGk9ci5zaXplKCk7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGEscyl7dmFyIG89e3ZhbHVlOnN9LGw9e3ZhbHVlOmZ1bmN0aW9uKCl7LS1pPT09MCYmYSgpfX07ci5lYWNoKGZ1bmN0aW9uKCl7dmFyIHU9RWkodGhpcyxuKSxoPXUub247aCE9PXQmJihlPSh0PWgpLmNvcHkoKSxlLl8uY2FuY2VsLnB1c2gobyksZS5fLmludGVycnVwdC5wdXNoKG8pLGUuXy5lbmQucHVzaChsKSksdS5vbj1lfSksaT09PTAmJmEoKX0pfXZhciBhTz0wO2Z1bmN0aW9uIENpKHQsZSxyLG4pe3RoaXMuX2dyb3Vwcz10LHRoaXMuX3BhcmVudHM9ZSx0aGlzLl9uYW1lPXIsdGhpcy5faWQ9bn1mdW5jdGlvbiBhdih0KXtyZXR1cm4gcHMoKS50cmFuc2l0aW9uKHQpfWZ1bmN0aW9uIHN2KCl7cmV0dXJuKythT312YXIgJGk9cHMucHJvdG90eXBlO0NpLnByb3RvdHlwZT1hdi5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOkNpLHNlbGVjdDpxRCxzZWxlY3RBbGw6VkQsc2VsZWN0Q2hpbGQ6JGkuc2VsZWN0Q2hpbGQsc2VsZWN0Q2hpbGRyZW46JGkuc2VsZWN0Q2hpbGRyZW4sZmlsdGVyOklELG1lcmdlOk5ELHNlbGVjdGlvbjpZRCx0cmFuc2l0aW9uOm5PLGNhbGw6JGkuY2FsbCxub2RlczokaS5ub2Rlcyxub2RlOiRpLm5vZGUsc2l6ZTokaS5zaXplLGVtcHR5OiRpLmVtcHR5LGVhY2g6JGkuZWFjaCxvbjpPRCxhdHRyOnlELGF0dHJUd2Vlbjp4RCxzdHlsZTpqRCxzdHlsZVR3ZWVuOktELHRleHQ6SkQsdGV4dFR3ZWVuOnJPLHJlbW92ZTpQRCx0d2VlbjpjRCxkZWxheTpURCxkdXJhdGlvbjpTRCxlYXNlOk1ELGVhc2VWYXJ5aW5nOlJELGVuZDppTyxbU3ltYm9sLml0ZXJhdG9yXTokaVtTeW1ib2wuaXRlcmF0b3JdfTtjb25zdCBzTz10PT4rdDtmdW5jdGlvbiBvTyh0KXtyZXR1cm4gdCp0fWZ1bmN0aW9uIGxPKHQpe3JldHVybiB0KigyLXQpfWZ1bmN0aW9uIG92KHQpe3JldHVybigodCo9Mik8PTE/dCp0Oi0tdCooMi10KSsxKS8yfWZ1bmN0aW9uIGNPKHQpe3JldHVybiB0KnQqdH1mdW5jdGlvbiB1Tyh0KXtyZXR1cm4tLXQqdCp0KzF9ZnVuY3Rpb24gRWQodCl7cmV0dXJuKCh0Kj0yKTw9MT90KnQqdDoodC09MikqdCp0KzIpLzJ9dmFyIENkPTMsaE89ZnVuY3Rpb24gdChlKXtlPStlO2Z1bmN0aW9uIHIobil7cmV0dXJuIE1hdGgucG93KG4sZSl9cmV0dXJuIHIuZXhwb25lbnQ9dCxyfShDZCksZk89ZnVuY3Rpb24gdChlKXtlPStlO2Z1bmN0aW9uIHIobil7cmV0dXJuIDEtTWF0aC5wb3coMS1uLGUpfXJldHVybiByLmV4cG9uZW50PXQscn0oQ2QpLGx2PWZ1bmN0aW9uIHQoZSl7ZT0rZTtmdW5jdGlvbiByKG4pe3JldHVybigobio9Mik8PTE/TWF0aC5wb3cobixlKToyLU1hdGgucG93KDItbixlKSkvMn1yZXR1cm4gci5leHBvbmVudD10LHJ9KENkKSxjdj1NYXRoLlBJLHV2PWN2LzI7ZnVuY3Rpb24gZE8odCl7cmV0dXJuK3Q9PTE/MToxLU1hdGguY29zKHQqdXYpfWZ1bmN0aW9uIHBPKHQpe3JldHVybiBNYXRoLnNpbih0KnV2KX1mdW5jdGlvbiBodih0KXtyZXR1cm4oMS1NYXRoLmNvcyhjdip0KSkvMn1mdW5jdGlvbiBMYSh0KXtyZXR1cm4oTWF0aC5wb3coMiwtMTAqdCktLjAwMDk3NjU2MjUpKjEuMDAwOTc3NTE3MTA2NTQ5NH1mdW5jdGlvbiBnTyh0KXtyZXR1cm4gTGEoMS0rdCl9ZnVuY3Rpb24geU8odCl7cmV0dXJuIDEtTGEodCl9ZnVuY3Rpb24gZnYodCl7cmV0dXJuKCh0Kj0yKTw9MT9MYSgxLXQpOjItTGEodC0xKSkvMn1mdW5jdGlvbiBtTyh0KXtyZXR1cm4gMS1NYXRoLnNxcnQoMS10KnQpfWZ1bmN0aW9uIGJPKHQpe3JldHVybiBNYXRoLnNxcnQoMS0gLS10KnQpfWZ1bmN0aW9uIGR2KHQpe3JldHVybigodCo9Mik8PTE/MS1NYXRoLnNxcnQoMS10KnQpOk1hdGguc3FydCgxLSh0LT0yKSp0KSsxKS8yfXZhciBTZD00LzExLF9PPTYvMTEsdk89OC8xMSx4Tz0zLzQsa089OS8xMSx3Tz0xMC8xMSxUTz0xNS8xNixFTz0yMS8yMixDTz02My82NCxuaD0xL1NkL1NkO2Z1bmN0aW9uIFNPKHQpe3JldHVybiAxLVZsKDEtdCl9ZnVuY3Rpb24gVmwodCl7cmV0dXJuKHQ9K3QpPFNkP25oKnQqdDp0PHZPP25oKih0LT1fTykqdCt4Tzp0PHdPP25oKih0LT1rTykqdCtUTzpuaCoodC09RU8pKnQrQ099ZnVuY3Rpb24gQU8odCl7cmV0dXJuKCh0Kj0yKTw9MT8xLVZsKDEtdCk6VmwodC0xKSsxKS8yfXZhciBBZD0xLjcwMTU4LE1PPWZ1bmN0aW9uIHQoZSl7ZT0rZTtmdW5jdGlvbiByKG4pe3JldHVybihuPStuKSpuKihlKihuLTEpK24pfXJldHVybiByLm92ZXJzaG9vdD10LHJ9KEFkKSxMTz1mdW5jdGlvbiB0KGUpe2U9K2U7ZnVuY3Rpb24gcihuKXtyZXR1cm4tLW4qbiooKG4rMSkqZStuKSsxfXJldHVybiByLm92ZXJzaG9vdD10LHJ9KEFkKSxwdj1mdW5jdGlvbiB0KGUpe2U9K2U7ZnVuY3Rpb24gcihuKXtyZXR1cm4oKG4qPTIpPDE/bipuKigoZSsxKSpuLWUpOihuLT0yKSpuKigoZSsxKSpuK2UpKzIpLzJ9cmV0dXJuIHIub3ZlcnNob290PXQscn0oQWQpLG1vPTIqTWF0aC5QSSxNZD0xLExkPS4zLFJPPWZ1bmN0aW9uIHQoZSxyKXt2YXIgbj1NYXRoLmFzaW4oMS8oZT1NYXRoLm1heCgxLGUpKSkqKHIvPW1vKTtmdW5jdGlvbiBpKGEpe3JldHVybiBlKkxhKC0gLS1hKSpNYXRoLnNpbigobi1hKS9yKX1yZXR1cm4gaS5hbXBsaXR1ZGU9ZnVuY3Rpb24oYSl7cmV0dXJuIHQoYSxyKm1vKX0saS5wZXJpb2Q9ZnVuY3Rpb24oYSl7cmV0dXJuIHQoZSxhKX0saX0oTWQsTGQpLGd2PWZ1bmN0aW9uIHQoZSxyKXt2YXIgbj1NYXRoLmFzaW4oMS8oZT1NYXRoLm1heCgxLGUpKSkqKHIvPW1vKTtmdW5jdGlvbiBpKGEpe3JldHVybiAxLWUqTGEoYT0rYSkqTWF0aC5zaW4oKGErbikvcil9cmV0dXJuIGkuYW1wbGl0dWRlPWZ1bmN0aW9uKGEpe3JldHVybiB0KGEsciptbyl9LGkucGVyaW9kPWZ1bmN0aW9uKGEpe3JldHVybiB0KGUsYSl9LGl9KE1kLExkKSxJTz1mdW5jdGlvbiB0KGUscil7dmFyIG49TWF0aC5hc2luKDEvKGU9TWF0aC5tYXgoMSxlKSkpKihyLz1tbyk7ZnVuY3Rpb24gaShhKXtyZXR1cm4oKGE9YSoyLTEpPDA/ZSpMYSgtYSkqTWF0aC5zaW4oKG4tYSkvcik6Mi1lKkxhKGEpKk1hdGguc2luKChuK2EpL3IpKS8yfXJldHVybiBpLmFtcGxpdHVkZT1mdW5jdGlvbihhKXtyZXR1cm4gdChhLHIqbW8pfSxpLnBlcmlvZD1mdW5jdGlvbihhKXtyZXR1cm4gdChlLGEpfSxpfShNZCxMZCksTk89e3RpbWU6bnVsbCxkZWxheTowLGR1cmF0aW9uOjI1MCxlYXNlOkVkfTtmdW5jdGlvbiBCTyh0LGUpe2Zvcih2YXIgcjshKHI9dC5fX3RyYW5zaXRpb24pfHwhKHI9cltlXSk7KWlmKCEodD10LnBhcmVudE5vZGUpKXRocm93IG5ldyBFcnJvcihgdHJhbnNpdGlvbiAke2V9IG5vdCBmb3VuZGApO3JldHVybiByfWZ1bmN0aW9uIERPKHQpe3ZhciBlLHI7dCBpbnN0YW5jZW9mIENpPyhlPXQuX2lkLHQ9dC5fbmFtZSk6KGU9c3YoKSwocj1OTykudGltZT1QbCgpLHQ9dD09bnVsbD9udWxsOnQrIiIpO2Zvcih2YXIgbj10aGlzLl9ncm91cHMsaT1uLmxlbmd0aCxhPTA7YTxpOysrYSlmb3IodmFyIHM9blthXSxvPXMubGVuZ3RoLGwsdT0wO3U8bzsrK3UpKGw9c1t1XSkmJnJoKGwsdCxlLHUscyxyfHxCTyhsLGUpKTtyZXR1cm4gbmV3IENpKG4sdGhpcy5fcGFyZW50cyx0LGUpfXBzLnByb3RvdHlwZS5pbnRlcnJ1cHQ9c0QscHMucHJvdG90eXBlLnRyYW5zaXRpb249RE87dmFyIE9PPVtudWxsXTtmdW5jdGlvbiBGTyh0LGUpe3ZhciByPXQuX190cmFuc2l0aW9uLG4saTtpZihyKXtlPWU9PW51bGw/bnVsbDplKyIiO2ZvcihpIGluIHIpaWYoKG49cltpXSkuc3RhdGU+dmQmJm4ubmFtZT09PWUpcmV0dXJuIG5ldyBDaShbW3RdXSxPTyxlLCtpKX1yZXR1cm4gbnVsbH1jb25zdCBSZD10PT4oKT0+dDtmdW5jdGlvbiBQTyh0LHtzb3VyY2VFdmVudDplLHRhcmdldDpyLHNlbGVjdGlvbjpuLG1vZGU6aSxkaXNwYXRjaDphfSl7T2JqZWN0LmRlZmluZVByb3BlcnRpZXModGhpcyx7dHlwZTp7dmFsdWU6dCxlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0sc291cmNlRXZlbnQ6e3ZhbHVlOmUsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9LHRhcmdldDp7dmFsdWU6cixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0sc2VsZWN0aW9uOnt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSxtb2RlOnt2YWx1ZTppLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSxfOnt2YWx1ZTphfX0pfWZ1bmN0aW9uIHFPKHQpe3Quc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9ZnVuY3Rpb24gSWQodCl7dC5wcmV2ZW50RGVmYXVsdCgpLHQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9dmFyIHl2PXtuYW1lOiJkcmFnIn0sTmQ9e25hbWU6InNwYWNlIn0sYm89e25hbWU6ImhhbmRsZSJ9LF9vPXtuYW1lOiJjZW50ZXIifTtjb25zdHthYnM6bXYsbWF4Ok9yLG1pbjpGcn09TWF0aDtmdW5jdGlvbiBidih0KXtyZXR1cm5bK3RbMF0sK3RbMV1dfWZ1bmN0aW9uIEJkKHQpe3JldHVybltidih0WzBdKSxidih0WzFdKV19dmFyIGloPXtuYW1lOiJ4IixoYW5kbGVzOlsidyIsImUiXS5tYXAoemwpLGlucHV0OmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQ9PW51bGw/bnVsbDpbWyt0WzBdLGVbMF1bMV1dLFsrdFsxXSxlWzFdWzFdXV19LG91dHB1dDpmdW5jdGlvbih0KXtyZXR1cm4gdCYmW3RbMF1bMF0sdFsxXVswXV19fSxhaD17bmFtZToieSIsaGFuZGxlczpbIm4iLCJzIl0ubWFwKHpsKSxpbnB1dDpmdW5jdGlvbih0LGUpe3JldHVybiB0PT1udWxsP251bGw6W1tlWzBdWzBdLCt0WzBdXSxbZVsxXVswXSwrdFsxXV1dfSxvdXRwdXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHQmJlt0WzBdWzFdLHRbMV1bMV1dfX0sVk89e25hbWU6Inh5IixoYW5kbGVzOlsibiIsInciLCJlIiwicyIsIm53IiwibmUiLCJzdyIsInNlIl0ubWFwKHpsKSxpbnB1dDpmdW5jdGlvbih0KXtyZXR1cm4gdD09bnVsbD9udWxsOkJkKHQpfSxvdXRwdXQ6ZnVuY3Rpb24odCl7cmV0dXJuIHR9fSxYaT17b3ZlcmxheToiY3Jvc3NoYWlyIixzZWxlY3Rpb246Im1vdmUiLG46Im5zLXJlc2l6ZSIsZToiZXctcmVzaXplIixzOiJucy1yZXNpemUiLHc6ImV3LXJlc2l6ZSIsbnc6Im53c2UtcmVzaXplIixuZToibmVzdy1yZXNpemUiLHNlOiJud3NlLXJlc2l6ZSIsc3c6Im5lc3ctcmVzaXplIn0sX3Y9e2U6InciLHc6ImUiLG53OiJuZSIsbmU6Im53IixzZToic3ciLHN3OiJzZSJ9LHZ2PXtuOiJzIixzOiJuIixudzoic3ciLG5lOiJzZSIsc2U6Im5lIixzdzoibncifSx6Tz17b3ZlcmxheToxLHNlbGVjdGlvbjoxLG46bnVsbCxlOjEsczpudWxsLHc6LTEsbnc6LTEsbmU6MSxzZToxLHN3Oi0xfSxZTz17b3ZlcmxheToxLHNlbGVjdGlvbjoxLG46LTEsZTpudWxsLHM6MSx3Om51bGwsbnc6LTEsbmU6LTEsc2U6MSxzdzoxfTtmdW5jdGlvbiB6bCh0KXtyZXR1cm57dHlwZTp0fX1mdW5jdGlvbiBVTyh0KXtyZXR1cm4hdC5jdHJsS2V5JiYhdC5idXR0b259ZnVuY3Rpb24gV08oKXt2YXIgdD10aGlzLm93bmVyU1ZHRWxlbWVudHx8dGhpcztyZXR1cm4gdC5oYXNBdHRyaWJ1dGUoInZpZXdCb3giKT8odD10LnZpZXdCb3guYmFzZVZhbCxbW3QueCx0LnldLFt0LngrdC53aWR0aCx0LnkrdC5oZWlnaHRdXSk6W1swLDBdLFt0LndpZHRoLmJhc2VWYWwudmFsdWUsdC5oZWlnaHQuYmFzZVZhbC52YWx1ZV1dfWZ1bmN0aW9uIEhPKCl7cmV0dXJuIG5hdmlnYXRvci5tYXhUb3VjaFBvaW50c3x8Im9udG91Y2hzdGFydCJpbiB0aGlzfWZ1bmN0aW9uIERkKHQpe2Zvcig7IXQuX19icnVzaDspaWYoISh0PXQucGFyZW50Tm9kZSkpcmV0dXJuO3JldHVybiB0Ll9fYnJ1c2h9ZnVuY3Rpb24gR08odCl7cmV0dXJuIHRbMF1bMF09PT10WzFdWzBdfHx0WzBdWzFdPT09dFsxXVsxXX1mdW5jdGlvbiBqTyh0KXt2YXIgZT10Ll9fYnJ1c2g7cmV0dXJuIGU/ZS5kaW0ub3V0cHV0KGUuc2VsZWN0aW9uKTpudWxsfWZ1bmN0aW9uICRPKCl7cmV0dXJuIE9kKGloKX1mdW5jdGlvbiBYTygpe3JldHVybiBPZChhaCl9ZnVuY3Rpb24gS08oKXtyZXR1cm4gT2QoVk8pfWZ1bmN0aW9uIE9kKHQpe3ZhciBlPVdPLHI9VU8sbj1ITyxpPSEwLGE9ZnMoInN0YXJ0IiwiYnJ1c2giLCJlbmQiKSxzPTYsbztmdW5jdGlvbiBsKHkpe3ZhciBiPXkucHJvcGVydHkoIl9fYnJ1c2giLF8pLnNlbGVjdEFsbCgiLm92ZXJsYXkiKS5kYXRhKFt6bCgib3ZlcmxheSIpXSk7Yi5lbnRlcigpLmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIiwib3ZlcmxheSIpLmF0dHIoInBvaW50ZXItZXZlbnRzIiwiYWxsIikuYXR0cigiY3Vyc29yIixYaS5vdmVybGF5KS5tZXJnZShiKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGs9RGQodGhpcykuZXh0ZW50O1N0KHRoaXMpLmF0dHIoIngiLGtbMF1bMF0pLmF0dHIoInkiLGtbMF1bMV0pLmF0dHIoIndpZHRoIixrWzFdWzBdLWtbMF1bMF0pLmF0dHIoImhlaWdodCIsa1sxXVsxXS1rWzBdWzFdKX0pLHkuc2VsZWN0QWxsKCIuc2VsZWN0aW9uIikuZGF0YShbemwoInNlbGVjdGlvbiIpXSkuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJjbGFzcyIsInNlbGVjdGlvbiIpLmF0dHIoImN1cnNvciIsWGkuc2VsZWN0aW9uKS5hdHRyKCJmaWxsIiwiIzc3NyIpLmF0dHIoImZpbGwtb3BhY2l0eSIsLjMpLmF0dHIoInN0cm9rZSIsIiNmZmYiKS5hdHRyKCJzaGFwZS1yZW5kZXJpbmciLCJjcmlzcEVkZ2VzIik7dmFyIHg9eS5zZWxlY3RBbGwoIi5oYW5kbGUiKS5kYXRhKHQuaGFuZGxlcyxmdW5jdGlvbihrKXtyZXR1cm4gay50eXBlfSk7eC5leGl0KCkucmVtb3ZlKCkseC5lbnRlcigpLmFwcGVuZCgicmVjdCIpLmF0dHIoImNsYXNzIixmdW5jdGlvbihrKXtyZXR1cm4iaGFuZGxlIGhhbmRsZS0tIitrLnR5cGV9KS5hdHRyKCJjdXJzb3IiLGZ1bmN0aW9uKGspe3JldHVybiBYaVtrLnR5cGVdfSkseS5lYWNoKHUpLmF0dHIoImZpbGwiLCJub25lIikuYXR0cigicG9pbnRlci1ldmVudHMiLCJhbGwiKS5vbigibW91c2Vkb3duLmJydXNoIixmKS5maWx0ZXIobikub24oInRvdWNoc3RhcnQuYnJ1c2giLGYpLm9uKCJ0b3VjaG1vdmUuYnJ1c2giLHApLm9uKCJ0b3VjaGVuZC5icnVzaCB0b3VjaGNhbmNlbC5icnVzaCIsbSkuc3R5bGUoInRvdWNoLWFjdGlvbiIsIm5vbmUiKS5zdHlsZSgiLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yIiwicmdiYSgwLDAsMCwwKSIpfWwubW92ZT1mdW5jdGlvbih5LGIseCl7eS50d2Vlbj95Lm9uKCJzdGFydC5icnVzaCIsZnVuY3Rpb24oayl7aCh0aGlzLGFyZ3VtZW50cykuYmVmb3Jlc3RhcnQoKS5zdGFydChrKX0pLm9uKCJpbnRlcnJ1cHQuYnJ1c2ggZW5kLmJydXNoIixmdW5jdGlvbihrKXtoKHRoaXMsYXJndW1lbnRzKS5lbmQoayl9KS50d2VlbigiYnJ1c2giLGZ1bmN0aW9uKCl7dmFyIGs9dGhpcyxUPWsuX19icnVzaCxDPWgoayxhcmd1bWVudHMpLE09VC5zZWxlY3Rpb24sUz10LmlucHV0KHR5cGVvZiBiPT0iZnVuY3Rpb24iP2IuYXBwbHkodGhpcyxhcmd1bWVudHMpOmIsVC5leHRlbnQpLFI9TWEoTSxTKTtmdW5jdGlvbiBBKEwpe1Quc2VsZWN0aW9uPUw9PT0xJiZTPT09bnVsbD9udWxsOlIoTCksdS5jYWxsKGspLEMuYnJ1c2goKX1yZXR1cm4gTSE9PW51bGwmJlMhPT1udWxsP0E6QSgxKX0pOnkuZWFjaChmdW5jdGlvbigpe3ZhciBrPXRoaXMsVD1hcmd1bWVudHMsQz1rLl9fYnJ1c2gsTT10LmlucHV0KHR5cGVvZiBiPT0iZnVuY3Rpb24iP2IuYXBwbHkoayxUKTpiLEMuZXh0ZW50KSxTPWgoayxUKS5iZWZvcmVzdGFydCgpO3ZzKGspLEMuc2VsZWN0aW9uPU09PT1udWxsP251bGw6TSx1LmNhbGwoayksUy5zdGFydCh4KS5icnVzaCh4KS5lbmQoeCl9KX0sbC5jbGVhcj1mdW5jdGlvbih5LGIpe2wubW92ZSh5LG51bGwsYil9O2Z1bmN0aW9uIHUoKXt2YXIgeT1TdCh0aGlzKSxiPURkKHRoaXMpLnNlbGVjdGlvbjtiPyh5LnNlbGVjdEFsbCgiLnNlbGVjdGlvbiIpLnN0eWxlKCJkaXNwbGF5IixudWxsKS5hdHRyKCJ4IixiWzBdWzBdKS5hdHRyKCJ5IixiWzBdWzFdKS5hdHRyKCJ3aWR0aCIsYlsxXVswXS1iWzBdWzBdKS5hdHRyKCJoZWlnaHQiLGJbMV1bMV0tYlswXVsxXSkseS5zZWxlY3RBbGwoIi5oYW5kbGUiKS5zdHlsZSgiZGlzcGxheSIsbnVsbCkuYXR0cigieCIsZnVuY3Rpb24oeCl7cmV0dXJuIHgudHlwZVt4LnR5cGUubGVuZ3RoLTFdPT09ImUiP2JbMV1bMF0tcy8yOmJbMF1bMF0tcy8yfSkuYXR0cigieSIsZnVuY3Rpb24oeCl7cmV0dXJuIHgudHlwZVswXT09PSJzIj9iWzFdWzFdLXMvMjpiWzBdWzFdLXMvMn0pLmF0dHIoIndpZHRoIixmdW5jdGlvbih4KXtyZXR1cm4geC50eXBlPT09Im4ifHx4LnR5cGU9PT0icyI/YlsxXVswXS1iWzBdWzBdK3M6c30pLmF0dHIoImhlaWdodCIsZnVuY3Rpb24oeCl7cmV0dXJuIHgudHlwZT09PSJlInx8eC50eXBlPT09InciP2JbMV1bMV0tYlswXVsxXStzOnN9KSk6eS5zZWxlY3RBbGwoIi5zZWxlY3Rpb24sLmhhbmRsZSIpLnN0eWxlKCJkaXNwbGF5Iiwibm9uZSIpLmF0dHIoIngiLG51bGwpLmF0dHIoInkiLG51bGwpLmF0dHIoIndpZHRoIixudWxsKS5hdHRyKCJoZWlnaHQiLG51bGwpfWZ1bmN0aW9uIGgoeSxiLHgpe3ZhciBrPXkuX19icnVzaC5lbWl0dGVyO3JldHVybiBrJiYoIXh8fCFrLmNsZWFuKT9rOm5ldyBkKHksYix4KX1mdW5jdGlvbiBkKHksYix4KXt0aGlzLnRoYXQ9eSx0aGlzLmFyZ3M9Yix0aGlzLnN0YXRlPXkuX19icnVzaCx0aGlzLmFjdGl2ZT0wLHRoaXMuY2xlYW49eH1kLnByb3RvdHlwZT17YmVmb3Jlc3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4rK3RoaXMuYWN0aXZlPT09MSYmKHRoaXMuc3RhdGUuZW1pdHRlcj10aGlzLHRoaXMuc3RhcnRpbmc9ITApLHRoaXN9LHN0YXJ0OmZ1bmN0aW9uKHksYil7cmV0dXJuIHRoaXMuc3RhcnRpbmc/KHRoaXMuc3RhcnRpbmc9ITEsdGhpcy5lbWl0KCJzdGFydCIseSxiKSk6dGhpcy5lbWl0KCJicnVzaCIseSksdGhpc30sYnJ1c2g6ZnVuY3Rpb24oeSxiKXtyZXR1cm4gdGhpcy5lbWl0KCJicnVzaCIseSxiKSx0aGlzfSxlbmQ6ZnVuY3Rpb24oeSxiKXtyZXR1cm4tLXRoaXMuYWN0aXZlPT09MCYmKGRlbGV0ZSB0aGlzLnN0YXRlLmVtaXR0ZXIsdGhpcy5lbWl0KCJlbmQiLHksYikpLHRoaXN9LGVtaXQ6ZnVuY3Rpb24oeSxiLHgpe3ZhciBrPVN0KHRoaXMudGhhdCkuZGF0dW0oKTthLmNhbGwoeSx0aGlzLnRoYXQsbmV3IFBPKHkse3NvdXJjZUV2ZW50OmIsdGFyZ2V0Omwsc2VsZWN0aW9uOnQub3V0cHV0KHRoaXMuc3RhdGUuc2VsZWN0aW9uKSxtb2RlOngsZGlzcGF0Y2g6YX0pLGspfX07ZnVuY3Rpb24gZih5KXtpZihvJiYheS50b3VjaGVzfHwhci5hcHBseSh0aGlzLGFyZ3VtZW50cykpcmV0dXJuO3ZhciBiPXRoaXMseD15LnRhcmdldC5fX2RhdGFfXy50eXBlLGs9KGkmJnkubWV0YUtleT94PSJvdmVybGF5Ijp4KT09PSJzZWxlY3Rpb24iP3l2OmkmJnkuYWx0S2V5P19vOmJvLFQ9dD09PWFoP251bGw6ek9beF0sQz10PT09aWg/bnVsbDpZT1t4XSxNPURkKGIpLFM9TS5leHRlbnQsUj1NLnNlbGVjdGlvbixBPVNbMF1bMF0sTCx2LEI9U1swXVsxXSx3LEQsTj1TWzFdWzBdLHosWCxjdD1TWzFdWzFdLEosWSwkPTAsbHQ9MCx1dCxXPVQmJkMmJmkmJnkuc2hpZnRLZXksdHQsSyxpdD1BcnJheS5mcm9tKHkudG91Y2hlc3x8W3ldLGF0PT57Y29uc3QgSXQ9YXQuaWRlbnRpZmllcjtyZXR1cm4gYXQ9VG4oYXQsYiksYXQucG9pbnQwPWF0LnNsaWNlKCksYXQuaWRlbnRpZmllcj1JdCxhdH0pO3ZzKGIpO3ZhciBaPWgoYixhcmd1bWVudHMsITApLmJlZm9yZXN0YXJ0KCk7aWYoeD09PSJvdmVybGF5Iil7UiYmKHV0PSEwKTtjb25zdCBhdD1baXRbMF0saXRbMV18fGl0WzBdXTtNLnNlbGVjdGlvbj1SPVtbTD10PT09YWg/QTpGcihhdFswXVswXSxhdFsxXVswXSksdz10PT09aWg/QjpGcihhdFswXVsxXSxhdFsxXVsxXSldLFt6PXQ9PT1haD9OOk9yKGF0WzBdWzBdLGF0WzFdWzBdKSxKPXQ9PT1paD9jdDpPcihhdFswXVsxXSxhdFsxXVsxXSldXSxpdC5sZW5ndGg+MSYmRih5KX1lbHNlIEw9UlswXVswXSx3PVJbMF1bMV0sej1SWzFdWzBdLEo9UlsxXVsxXTt2PUwsRD13LFg9eixZPUo7dmFyIFY9U3QoYikuYXR0cigicG9pbnRlci1ldmVudHMiLCJub25lIiksUT1WLnNlbGVjdEFsbCgiLm92ZXJsYXkiKS5hdHRyKCJjdXJzb3IiLFhpW3hdKTtpZih5LnRvdWNoZXMpWi5tb3ZlZD1VLFouZW5kZWQ9ajtlbHNle3ZhciBxPVN0KHkudmlldykub24oIm1vdXNlbW92ZS5icnVzaCIsVSwhMCkub24oIm1vdXNldXAuYnJ1c2giLGosITApO2kmJnEub24oImtleWRvd24uYnJ1c2giLFAsITApLm9uKCJrZXl1cC5icnVzaCIsZXQsITApLEJ1KHkudmlldyl9dS5jYWxsKGIpLFouc3RhcnQoeSxrLm5hbWUpO2Z1bmN0aW9uIFUoYXQpe2Zvcihjb25zdCBJdCBvZiBhdC5jaGFuZ2VkVG91Y2hlc3x8W2F0XSlmb3IoY29uc3QgTHQgb2YgaXQpTHQuaWRlbnRpZmllcj09PUl0LmlkZW50aWZpZXImJihMdC5jdXI9VG4oSXQsYikpO2lmKFcmJiF0dCYmIUsmJml0Lmxlbmd0aD09PTEpe2NvbnN0IEl0PWl0WzBdO212KEl0LmN1clswXS1JdFswXSk+bXYoSXQuY3VyWzFdLUl0WzFdKT9LPSEwOnR0PSEwfWZvcihjb25zdCBJdCBvZiBpdClJdC5jdXImJihJdFswXT1JdC5jdXJbMF0sSXRbMV09SXQuY3VyWzFdKTt1dD0hMCxJZChhdCksRihhdCl9ZnVuY3Rpb24gRihhdCl7Y29uc3QgSXQ9aXRbMF0sTHQ9SXQucG9pbnQwO3ZhciBSdDtzd2l0Y2goJD1JdFswXS1MdFswXSxsdD1JdFsxXS1MdFsxXSxrKXtjYXNlIE5kOmNhc2UgeXY6e1QmJigkPU9yKEEtTCxGcihOLXosJCkpLHY9TCskLFg9eiskKSxDJiYobHQ9T3IoQi13LEZyKGN0LUosbHQpKSxEPXcrbHQsWT1KK2x0KTticmVha31jYXNlIGJvOntpdFsxXT8oVCYmKHY9T3IoQSxGcihOLGl0WzBdWzBdKSksWD1PcihBLEZyKE4saXRbMV1bMF0pKSxUPTEpLEMmJihEPU9yKEIsRnIoY3QsaXRbMF1bMV0pKSxZPU9yKEIsRnIoY3QsaXRbMV1bMV0pKSxDPTEpKTooVDwwPygkPU9yKEEtTCxGcihOLUwsJCkpLHY9TCskLFg9eik6VD4wJiYoJD1PcihBLXosRnIoTi16LCQpKSx2PUwsWD16KyQpLEM8MD8obHQ9T3IoQi13LEZyKGN0LXcsbHQpKSxEPXcrbHQsWT1KKTpDPjAmJihsdD1PcihCLUosRnIoY3QtSixsdCkpLEQ9dyxZPUorbHQpKTticmVha31jYXNlIF9vOntUJiYodj1PcihBLEZyKE4sTC0kKlQpKSxYPU9yKEEsRnIoTix6KyQqVCkpKSxDJiYoRD1PcihCLEZyKGN0LHctbHQqQykpLFk9T3IoQixGcihjdCxKK2x0KkMpKSk7YnJlYWt9fVg8diYmKFQqPS0xLFJ0PUwsTD16LHo9UnQsUnQ9dix2PVgsWD1SdCx4IGluIF92JiZRLmF0dHIoImN1cnNvciIsWGlbeD1fdlt4XV0pKSxZPEQmJihDKj0tMSxSdD13LHc9SixKPVJ0LFJ0PUQsRD1ZLFk9UnQseCBpbiB2diYmUS5hdHRyKCJjdXJzb3IiLFhpW3g9dnZbeF1dKSksTS5zZWxlY3Rpb24mJihSPU0uc2VsZWN0aW9uKSx0dCYmKHY9UlswXVswXSxYPVJbMV1bMF0pLEsmJihEPVJbMF1bMV0sWT1SWzFdWzFdKSwoUlswXVswXSE9PXZ8fFJbMF1bMV0hPT1EfHxSWzFdWzBdIT09WHx8UlsxXVsxXSE9PVkpJiYoTS5zZWxlY3Rpb249W1t2LERdLFtYLFldXSx1LmNhbGwoYiksWi5icnVzaChhdCxrLm5hbWUpKX1mdW5jdGlvbiBqKGF0KXtpZihxTyhhdCksYXQudG91Y2hlcyl7aWYoYXQudG91Y2hlcy5sZW5ndGgpcmV0dXJuO28mJmNsZWFyVGltZW91dChvKSxvPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtvPW51bGx9LDUwMCl9ZWxzZSBEdShhdC52aWV3LHV0KSxxLm9uKCJrZXlkb3duLmJydXNoIGtleXVwLmJydXNoIG1vdXNlbW92ZS5icnVzaCBtb3VzZXVwLmJydXNoIixudWxsKTtWLmF0dHIoInBvaW50ZXItZXZlbnRzIiwiYWxsIiksUS5hdHRyKCJjdXJzb3IiLFhpLm92ZXJsYXkpLE0uc2VsZWN0aW9uJiYoUj1NLnNlbGVjdGlvbiksR08oUikmJihNLnNlbGVjdGlvbj1udWxsLHUuY2FsbChiKSksWi5lbmQoYXQsay5uYW1lKX1mdW5jdGlvbiBQKGF0KXtzd2l0Y2goYXQua2V5Q29kZSl7Y2FzZSAxNjp7Vz1UJiZDO2JyZWFrfWNhc2UgMTg6e2s9PT1ibyYmKFQmJih6PVgtJCpULEw9diskKlQpLEMmJihKPVktbHQqQyx3PUQrbHQqQyksaz1fbyxGKGF0KSk7YnJlYWt9Y2FzZSAzMjp7KGs9PT1ib3x8az09PV9vKSYmKFQ8MD96PVgtJDpUPjAmJihMPXYtJCksQzwwP0o9WS1sdDpDPjAmJih3PUQtbHQpLGs9TmQsUS5hdHRyKCJjdXJzb3IiLFhpLnNlbGVjdGlvbiksRihhdCkpO2JyZWFrfWRlZmF1bHQ6cmV0dXJufUlkKGF0KX1mdW5jdGlvbiBldChhdCl7c3dpdGNoKGF0LmtleUNvZGUpe2Nhc2UgMTY6e1cmJih0dD1LPVc9ITEsRihhdCkpO2JyZWFrfWNhc2UgMTg6e2s9PT1fbyYmKFQ8MD96PVg6VD4wJiYoTD12KSxDPDA/Sj1ZOkM+MCYmKHc9RCksaz1ibyxGKGF0KSk7YnJlYWt9Y2FzZSAzMjp7az09PU5kJiYoYXQuYWx0S2V5PyhUJiYoej1YLSQqVCxMPXYrJCpUKSxDJiYoSj1ZLWx0KkMsdz1EK2x0KkMpLGs9X28pOihUPDA/ej1YOlQ+MCYmKEw9diksQzwwP0o9WTpDPjAmJih3PUQpLGs9Ym8pLFEuYXR0cigiY3Vyc29yIixYaVt4XSksRihhdCkpO2JyZWFrfWRlZmF1bHQ6cmV0dXJufUlkKGF0KX19ZnVuY3Rpb24gcCh5KXtoKHRoaXMsYXJndW1lbnRzKS5tb3ZlZCh5KX1mdW5jdGlvbiBtKHkpe2godGhpcyxhcmd1bWVudHMpLmVuZGVkKHkpfWZ1bmN0aW9uIF8oKXt2YXIgeT10aGlzLl9fYnJ1c2h8fHtzZWxlY3Rpb246bnVsbH07cmV0dXJuIHkuZXh0ZW50PUJkKGUuYXBwbHkodGhpcyxhcmd1bWVudHMpKSx5LmRpbT10LHl9cmV0dXJuIGwuZXh0ZW50PWZ1bmN0aW9uKHkpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXR5cGVvZiB5PT0iZnVuY3Rpb24iP3k6UmQoQmQoeSkpLGwpOmV9LGwuZmlsdGVyPWZ1bmN0aW9uKHkpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXR5cGVvZiB5PT0iZnVuY3Rpb24iP3k6UmQoISF5KSxsKTpyfSxsLnRvdWNoYWJsZT1mdW5jdGlvbih5KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj10eXBlb2YgeT09ImZ1bmN0aW9uIj95OlJkKCEheSksbCk6bn0sbC5oYW5kbGVTaXplPWZ1bmN0aW9uKHkpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPSt5LGwpOnN9LGwua2V5TW9kaWZpZXJzPWZ1bmN0aW9uKHkpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPSEheSxsKTppfSxsLm9uPWZ1bmN0aW9uKCl7dmFyIHk9YS5vbi5hcHBseShhLGFyZ3VtZW50cyk7cmV0dXJuIHk9PT1hP2w6eX0sbH12YXIgeHY9TWF0aC5hYnMsdm89TWF0aC5jb3MseG89TWF0aC5zaW4sa3Y9TWF0aC5QSSxzaD1rdi8yLHd2PWt2KjIsVHY9TWF0aC5tYXgsRmQ9MWUtMTI7ZnVuY3Rpb24gUGQodCxlKXtyZXR1cm4gQXJyYXkuZnJvbSh7bGVuZ3RoOmUtdH0sKHIsbik9PnQrbil9ZnVuY3Rpb24gWk8odCl7cmV0dXJuIGZ1bmN0aW9uKGUscil7cmV0dXJuIHQoZS5zb3VyY2UudmFsdWUrZS50YXJnZXQudmFsdWUsci5zb3VyY2UudmFsdWUrci50YXJnZXQudmFsdWUpfX1mdW5jdGlvbiBRTygpe3JldHVybiBxZCghMSwhMSl9ZnVuY3Rpb24gSk8oKXtyZXR1cm4gcWQoITEsITApfWZ1bmN0aW9uIHRGKCl7cmV0dXJuIHFkKCEwLCExKX1mdW5jdGlvbiBxZCh0LGUpe3ZhciByPTAsbj1udWxsLGk9bnVsbCxhPW51bGw7ZnVuY3Rpb24gcyhvKXt2YXIgbD1vLmxlbmd0aCx1PW5ldyBBcnJheShsKSxoPVBkKDAsbCksZD1uZXcgQXJyYXkobCpsKSxmPW5ldyBBcnJheShsKSxwPTAsbTtvPUZsb2F0NjRBcnJheS5mcm9tKHtsZW5ndGg6bCpsfSxlPyhfLHkpPT5vW3klbF1beS9sfDBdOihfLHkpPT5vW3kvbHwwXVt5JWxdKTtmb3IobGV0IF89MDtfPGw7KytfKXtsZXQgeT0wO2ZvcihsZXQgYj0wO2I8bDsrK2IpeSs9b1tfKmwrYl0rdCpvW2IqbCtfXTtwKz11W19dPXl9cD1UdigwLHd2LXIqbCkvcCxtPXA/cjp3di9sO3tsZXQgXz0wO24mJmguc29ydCgoeSxiKT0+bih1W3ldLHVbYl0pKTtmb3IoY29uc3QgeSBvZiBoKXtjb25zdCBiPV87aWYodCl7Y29uc3QgeD1QZCh+bCsxLGwpLmZpbHRlcihrPT5rPDA/b1t+aypsK3ldOm9beSpsK2tdKTtpJiZ4LnNvcnQoKGssVCk9PmkoazwwPy1vW35rKmwreV06b1t5Kmwra10sVDwwPy1vW35UKmwreV06b1t5KmwrVF0pKTtmb3IoY29uc3QgayBvZiB4KWlmKGs8MCl7Y29uc3QgVD1kW35rKmwreV18fChkW35rKmwreV09e3NvdXJjZTpudWxsLHRhcmdldDpudWxsfSk7VC50YXJnZXQ9e2luZGV4Onksc3RhcnRBbmdsZTpfLGVuZEFuZ2xlOl8rPW9bfmsqbCt5XSpwLHZhbHVlOm9bfmsqbCt5XX19ZWxzZXtjb25zdCBUPWRbeSpsK2tdfHwoZFt5Kmwra109e3NvdXJjZTpudWxsLHRhcmdldDpudWxsfSk7VC5zb3VyY2U9e2luZGV4Onksc3RhcnRBbmdsZTpfLGVuZEFuZ2xlOl8rPW9beSpsK2tdKnAsdmFsdWU6b1t5Kmwra119fWZbeV09e2luZGV4Onksc3RhcnRBbmdsZTpiLGVuZEFuZ2xlOl8sdmFsdWU6dVt5XX19ZWxzZXtjb25zdCB4PVBkKDAsbCkuZmlsdGVyKGs9Pm9beSpsK2tdfHxvW2sqbCt5XSk7aSYmeC5zb3J0KChrLFQpPT5pKG9beSpsK2tdLG9beSpsK1RdKSk7Zm9yKGNvbnN0IGsgb2YgeCl7bGV0IFQ7aWYoeTxrPyhUPWRbeSpsK2tdfHwoZFt5Kmwra109e3NvdXJjZTpudWxsLHRhcmdldDpudWxsfSksVC5zb3VyY2U9e2luZGV4Onksc3RhcnRBbmdsZTpfLGVuZEFuZ2xlOl8rPW9beSpsK2tdKnAsdmFsdWU6b1t5Kmwra119KTooVD1kW2sqbCt5XXx8KGRbaypsK3ldPXtzb3VyY2U6bnVsbCx0YXJnZXQ6bnVsbH0pLFQudGFyZ2V0PXtpbmRleDp5LHN0YXJ0QW5nbGU6XyxlbmRBbmdsZTpfKz1vW3kqbCtrXSpwLHZhbHVlOm9beSpsK2tdfSx5PT09ayYmKFQuc291cmNlPVQudGFyZ2V0KSksVC5zb3VyY2UmJlQudGFyZ2V0JiZULnNvdXJjZS52YWx1ZTxULnRhcmdldC52YWx1ZSl7Y29uc3QgQz1ULnNvdXJjZTtULnNvdXJjZT1ULnRhcmdldCxULnRhcmdldD1DfX1mW3ldPXtpbmRleDp5LHN0YXJ0QW5nbGU6YixlbmRBbmdsZTpfLHZhbHVlOnVbeV19fV8rPW19fXJldHVybiBkPU9iamVjdC52YWx1ZXMoZCksZC5ncm91cHM9ZixhP2Quc29ydChhKTpkfXJldHVybiBzLnBhZEFuZ2xlPWZ1bmN0aW9uKG8pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPVR2KDAsbykscyk6cn0scy5zb3J0R3JvdXBzPWZ1bmN0aW9uKG8pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPW8scyk6bn0scy5zb3J0U3ViZ3JvdXBzPWZ1bmN0aW9uKG8pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPW8scyk6aX0scy5zb3J0Q2hvcmRzPWZ1bmN0aW9uKG8pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPT1udWxsP2E9bnVsbDooYT1aTyhvKSkuXz1vLHMpOmEmJmEuX30sc31jb25zdCBWZD1NYXRoLlBJLHpkPTIqVmQseHM9MWUtNixlRj16ZC14cztmdW5jdGlvbiBZZCgpe3RoaXMuX3gwPXRoaXMuX3kwPXRoaXMuX3gxPXRoaXMuX3kxPW51bGwsdGhpcy5fPSIifWZ1bmN0aW9uIFJhKCl7cmV0dXJuIG5ldyBZZH1ZZC5wcm90b3R5cGU9UmEucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpZZCxtb3ZlVG86ZnVuY3Rpb24odCxlKXt0aGlzLl8rPSJNIisodGhpcy5feDA9dGhpcy5feDE9K3QpKyIsIisodGhpcy5feTA9dGhpcy5feTE9K2UpfSxjbG9zZVBhdGg6ZnVuY3Rpb24oKXt0aGlzLl94MSE9PW51bGwmJih0aGlzLl94MT10aGlzLl94MCx0aGlzLl95MT10aGlzLl95MCx0aGlzLl8rPSJaIil9LGxpbmVUbzpmdW5jdGlvbih0LGUpe3RoaXMuXys9IkwiKyh0aGlzLl94MT0rdCkrIiwiKyh0aGlzLl95MT0rZSl9LHF1YWRyYXRpY0N1cnZlVG86ZnVuY3Rpb24odCxlLHIsbil7dGhpcy5fKz0iUSIrICt0KyIsIisgK2UrIiwiKyh0aGlzLl94MT0rcikrIiwiKyh0aGlzLl95MT0rbil9LGJlemllckN1cnZlVG86ZnVuY3Rpb24odCxlLHIsbixpLGEpe3RoaXMuXys9IkMiKyArdCsiLCIrICtlKyIsIisgK3IrIiwiKyArbisiLCIrKHRoaXMuX3gxPStpKSsiLCIrKHRoaXMuX3kxPSthKX0sYXJjVG86ZnVuY3Rpb24odCxlLHIsbixpKXt0PSt0LGU9K2Uscj0rcixuPStuLGk9K2k7dmFyIGE9dGhpcy5feDEscz10aGlzLl95MSxvPXItdCxsPW4tZSx1PWEtdCxoPXMtZSxkPXUqdStoKmg7aWYoaTwwKXRocm93IG5ldyBFcnJvcigibmVnYXRpdmUgcmFkaXVzOiAiK2kpO2lmKHRoaXMuX3gxPT09bnVsbCl0aGlzLl8rPSJNIisodGhpcy5feDE9dCkrIiwiKyh0aGlzLl95MT1lKTtlbHNlIGlmKGQ+eHMpaWYoIShNYXRoLmFicyhoKm8tbCp1KT54cyl8fCFpKXRoaXMuXys9IkwiKyh0aGlzLl94MT10KSsiLCIrKHRoaXMuX3kxPWUpO2Vsc2V7dmFyIGY9ci1hLHA9bi1zLG09bypvK2wqbCxfPWYqZitwKnAseT1NYXRoLnNxcnQobSksYj1NYXRoLnNxcnQoZCkseD1pKk1hdGgudGFuKChWZC1NYXRoLmFjb3MoKG0rZC1fKS8oMip5KmIpKSkvMiksaz14L2IsVD14L3k7TWF0aC5hYnMoay0xKT54cyYmKHRoaXMuXys9IkwiKyh0K2sqdSkrIiwiKyhlK2sqaCkpLHRoaXMuXys9IkEiK2krIiwiK2krIiwwLDAsIisgKyhoKmY+dSpwKSsiLCIrKHRoaXMuX3gxPXQrVCpvKSsiLCIrKHRoaXMuX3kxPWUrVCpsKX19LGFyYzpmdW5jdGlvbih0LGUscixuLGksYSl7dD0rdCxlPStlLHI9K3IsYT0hIWE7dmFyIHM9cipNYXRoLmNvcyhuKSxvPXIqTWF0aC5zaW4obiksbD10K3MsdT1lK28saD0xXmEsZD1hP24taTppLW47aWYocjwwKXRocm93IG5ldyBFcnJvcigibmVnYXRpdmUgcmFkaXVzOiAiK3IpO3RoaXMuX3gxPT09bnVsbD90aGlzLl8rPSJNIitsKyIsIit1OihNYXRoLmFicyh0aGlzLl94MS1sKT54c3x8TWF0aC5hYnModGhpcy5feTEtdSk+eHMpJiYodGhpcy5fKz0iTCIrbCsiLCIrdSksciYmKGQ8MCYmKGQ9ZCV6ZCt6ZCksZD5lRj90aGlzLl8rPSJBIityKyIsIityKyIsMCwxLCIraCsiLCIrKHQtcykrIiwiKyhlLW8pKyJBIityKyIsIityKyIsMCwxLCIraCsiLCIrKHRoaXMuX3gxPWwpKyIsIisodGhpcy5feTE9dSk6ZD54cyYmKHRoaXMuXys9IkEiK3IrIiwiK3IrIiwwLCIrICsoZD49VmQpKyIsIitoKyIsIisodGhpcy5feDE9dCtyKk1hdGguY29zKGkpKSsiLCIrKHRoaXMuX3kxPWUrcipNYXRoLnNpbihpKSkpKX0scmVjdDpmdW5jdGlvbih0LGUscixuKXt0aGlzLl8rPSJNIisodGhpcy5feDA9dGhpcy5feDE9K3QpKyIsIisodGhpcy5feTA9dGhpcy5feTE9K2UpKyJoIisgK3IrInYiKyArbisiaCIrLXIrIloifSx0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiB0aGlzLl99fTt2YXIgckY9QXJyYXkucHJvdG90eXBlLnNsaWNlO2Z1bmN0aW9uIGtzKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiBuRih0KXtyZXR1cm4gdC5zb3VyY2V9ZnVuY3Rpb24gaUYodCl7cmV0dXJuIHQudGFyZ2V0fWZ1bmN0aW9uIEV2KHQpe3JldHVybiB0LnJhZGl1c31mdW5jdGlvbiBhRih0KXtyZXR1cm4gdC5zdGFydEFuZ2xlfWZ1bmN0aW9uIHNGKHQpe3JldHVybiB0LmVuZEFuZ2xlfWZ1bmN0aW9uIG9GKCl7cmV0dXJuIDB9ZnVuY3Rpb24gbEYoKXtyZXR1cm4gMTB9ZnVuY3Rpb24gQ3YodCl7dmFyIGU9bkYscj1pRixuPUV2LGk9RXYsYT1hRixzPXNGLG89b0YsbD1udWxsO2Z1bmN0aW9uIHUoKXt2YXIgaCxkPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpLGY9ci5hcHBseSh0aGlzLGFyZ3VtZW50cykscD1vLmFwcGx5KHRoaXMsYXJndW1lbnRzKS8yLG09ckYuY2FsbChhcmd1bWVudHMpLF89K24uYXBwbHkodGhpcywobVswXT1kLG0pKSx5PWEuYXBwbHkodGhpcyxtKS1zaCxiPXMuYXBwbHkodGhpcyxtKS1zaCx4PStpLmFwcGx5KHRoaXMsKG1bMF09ZixtKSksaz1hLmFwcGx5KHRoaXMsbSktc2gsVD1zLmFwcGx5KHRoaXMsbSktc2g7aWYobHx8KGw9aD1SYSgpKSxwPkZkJiYoeHYoYi15KT5wKjIrRmQ/Yj55Pyh5Kz1wLGItPXApOih5LT1wLGIrPXApOnk9Yj0oeStiKS8yLHh2KFQtayk+cCoyK0ZkP1Q+az8oays9cCxULT1wKTooay09cCxUKz1wKTprPVQ9KGsrVCkvMiksbC5tb3ZlVG8oXyp2byh5KSxfKnhvKHkpKSxsLmFyYygwLDAsXyx5LGIpLHkhPT1rfHxiIT09VClpZih0KXt2YXIgQz0rdC5hcHBseSh0aGlzLGFyZ3VtZW50cyksTT14LUMsUz0oaytUKS8yO2wucXVhZHJhdGljQ3VydmVUbygwLDAsTSp2byhrKSxNKnhvKGspKSxsLmxpbmVUbyh4KnZvKFMpLHgqeG8oUykpLGwubGluZVRvKE0qdm8oVCksTSp4byhUKSl9ZWxzZSBsLnF1YWRyYXRpY0N1cnZlVG8oMCwwLHgqdm8oaykseCp4byhrKSksbC5hcmMoMCwwLHgsayxUKTtpZihsLnF1YWRyYXRpY0N1cnZlVG8oMCwwLF8qdm8oeSksXyp4byh5KSksbC5jbG9zZVBhdGgoKSxoKXJldHVybiBsPW51bGwsaCsiInx8bnVsbH1yZXR1cm4gdCYmKHUuaGVhZFJhZGl1cz1mdW5jdGlvbihoKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD10eXBlb2YgaD09ImZ1bmN0aW9uIj9oOmtzKCtoKSx1KTp0fSksdS5yYWRpdXM9ZnVuY3Rpb24oaCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49aT10eXBlb2YgaD09ImZ1bmN0aW9uIj9oOmtzKCtoKSx1KTpufSx1LnNvdXJjZVJhZGl1cz1mdW5jdGlvbihoKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj10eXBlb2YgaD09ImZ1bmN0aW9uIj9oOmtzKCtoKSx1KTpufSx1LnRhcmdldFJhZGl1cz1mdW5jdGlvbihoKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT10eXBlb2YgaD09ImZ1bmN0aW9uIj9oOmtzKCtoKSx1KTppfSx1LnN0YXJ0QW5nbGU9ZnVuY3Rpb24oaCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9dHlwZW9mIGg9PSJmdW5jdGlvbiI/aDprcygraCksdSk6YX0sdS5lbmRBbmdsZT1mdW5jdGlvbihoKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz10eXBlb2YgaD09ImZ1bmN0aW9uIj9oOmtzKCtoKSx1KTpzfSx1LnBhZEFuZ2xlPWZ1bmN0aW9uKGgpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPXR5cGVvZiBoPT0iZnVuY3Rpb24iP2g6a3MoK2gpLHUpOm99LHUuc291cmNlPWZ1bmN0aW9uKGgpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPWgsdSk6ZX0sdS50YXJnZXQ9ZnVuY3Rpb24oaCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9aCx1KTpyfSx1LmNvbnRleHQ9ZnVuY3Rpb24oaCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9aD09bnVsbD9udWxsOmgsdSk6bH0sdX1mdW5jdGlvbiBjRigpe3JldHVybiBDdigpfWZ1bmN0aW9uIHVGKCl7cmV0dXJuIEN2KGxGKX12YXIgaEY9QXJyYXkucHJvdG90eXBlLFN2PWhGLnNsaWNlO2Z1bmN0aW9uIGZGKHQsZSl7cmV0dXJuIHQtZX1mdW5jdGlvbiBkRih0KXtmb3IodmFyIGU9MCxyPXQubGVuZ3RoLG49dFtyLTFdWzFdKnRbMF1bMF0tdFtyLTFdWzBdKnRbMF1bMV07KytlPHI7KW4rPXRbZS0xXVsxXSp0W2VdWzBdLXRbZS0xXVswXSp0W2VdWzFdO3JldHVybiBufWNvbnN0IElhPXQ9PigpPT50O2Z1bmN0aW9uIHBGKHQsZSl7Zm9yKHZhciByPS0xLG49ZS5sZW5ndGgsaTsrK3I8bjspaWYoaT1nRih0LGVbcl0pKXJldHVybiBpO3JldHVybiAwfWZ1bmN0aW9uIGdGKHQsZSl7Zm9yKHZhciByPWVbMF0sbj1lWzFdLGk9LTEsYT0wLHM9dC5sZW5ndGgsbz1zLTE7YTxzO289YSsrKXt2YXIgbD10W2FdLHU9bFswXSxoPWxbMV0sZD10W29dLGY9ZFswXSxwPWRbMV07aWYoeUYobCxkLGUpKXJldHVybiAwO2g+biE9cD5uJiZyPChmLXUpKihuLWgpLyhwLWgpK3UmJihpPS1pKX1yZXR1cm4gaX1mdW5jdGlvbiB5Rih0LGUscil7dmFyIG47cmV0dXJuIG1GKHQsZSxyKSYmYkYodFtuPSsodFswXT09PWVbMF0pXSxyW25dLGVbbl0pfWZ1bmN0aW9uIG1GKHQsZSxyKXtyZXR1cm4oZVswXS10WzBdKSooclsxXS10WzFdKT09PShyWzBdLXRbMF0pKihlWzFdLXRbMV0pfWZ1bmN0aW9uIGJGKHQsZSxyKXtyZXR1cm4gdDw9ZSYmZTw9cnx8cjw9ZSYmZTw9dH1mdW5jdGlvbiBfRigpe312YXIgS2k9W1tdLFtbWzEsMS41XSxbLjUsMV1dXSxbW1sxLjUsMV0sWzEsMS41XV1dLFtbWzEuNSwxXSxbLjUsMV1dXSxbW1sxLC41XSxbMS41LDFdXV0sW1tbMSwxLjVdLFsuNSwxXV0sW1sxLC41XSxbMS41LDFdXV0sW1tbMSwuNV0sWzEsMS41XV1dLFtbWzEsLjVdLFsuNSwxXV1dLFtbWy41LDFdLFsxLC41XV1dLFtbWzEsMS41XSxbMSwuNV1dXSxbW1suNSwxXSxbMSwuNV1dLFtbMS41LDFdLFsxLDEuNV1dXSxbW1sxLjUsMV0sWzEsLjVdXV0sW1tbLjUsMV0sWzEuNSwxXV1dLFtbWzEsMS41XSxbMS41LDFdXV0sW1tbLjUsMV0sWzEsMS41XV1dLFtdXTtmdW5jdGlvbiBVZCgpe3ZhciB0PTEsZT0xLHI9VzAsbj1sO2Z1bmN0aW9uIGkodSl7dmFyIGg9cih1KTtpZihBcnJheS5pc0FycmF5KGgpKWg9aC5zbGljZSgpLnNvcnQoZkYpO2Vsc2V7Y29uc3QgZD14bCh1KSxmPXdsKGRbMF0sZFsxXSxoKTtoPWhzKE1hdGguZmxvb3IoZFswXS9mKSpmLE1hdGguZmxvb3IoZFsxXS9mLTEpKmYsaCl9cmV0dXJuIGgubWFwKGQ9PmEodSxkKSl9ZnVuY3Rpb24gYSh1LGgpe3ZhciBkPVtdLGY9W107cmV0dXJuIHModSxoLGZ1bmN0aW9uKHApe24ocCx1LGgpLGRGKHApPjA/ZC5wdXNoKFtwXSk6Zi5wdXNoKHApfSksZi5mb3JFYWNoKGZ1bmN0aW9uKHApe2Zvcih2YXIgbT0wLF89ZC5sZW5ndGgseTttPF87KyttKWlmKHBGKCh5PWRbbV0pWzBdLHApIT09LTEpe3kucHVzaChwKTtyZXR1cm59fSkse3R5cGU6Ik11bHRpUG9seWdvbiIsdmFsdWU6aCxjb29yZGluYXRlczpkfX1mdW5jdGlvbiBzKHUsaCxkKXt2YXIgZj1uZXcgQXJyYXkscD1uZXcgQXJyYXksbSxfLHksYix4LGs7Zm9yKG09Xz0tMSxiPXVbMF0+PWgsS2lbYjw8MV0uZm9yRWFjaChUKTsrK208dC0xOyl5PWIsYj11W20rMV0+PWgsS2lbeXxiPDwxXS5mb3JFYWNoKFQpO2ZvcihLaVtiPDwwXS5mb3JFYWNoKFQpOysrXzxlLTE7KXtmb3IobT0tMSxiPXVbXyp0K3RdPj1oLHg9dVtfKnRdPj1oLEtpW2I8PDF8eDw8Ml0uZm9yRWFjaChUKTsrK208dC0xOyl5PWIsYj11W18qdCt0K20rMV0+PWgsaz14LHg9dVtfKnQrbSsxXT49aCxLaVt5fGI8PDF8eDw8MnxrPDwzXS5mb3JFYWNoKFQpO0tpW2J8eDw8M10uZm9yRWFjaChUKX1mb3IobT0tMSx4PXVbXyp0XT49aCxLaVt4PDwyXS5mb3JFYWNoKFQpOysrbTx0LTE7KWs9eCx4PXVbXyp0K20rMV0+PWgsS2lbeDw8MnxrPDwzXS5mb3JFYWNoKFQpO0tpW3g8PDNdLmZvckVhY2goVCk7ZnVuY3Rpb24gVChDKXt2YXIgTT1bQ1swXVswXSttLENbMF1bMV0rX10sUz1bQ1sxXVswXSttLENbMV1bMV0rX10sUj1vKE0pLEE9byhTKSxMLHY7KEw9cFtSXSk/KHY9ZltBXSk/KGRlbGV0ZSBwW0wuZW5kXSxkZWxldGUgZlt2LnN0YXJ0XSxMPT09dj8oTC5yaW5nLnB1c2goUyksZChMLnJpbmcpKTpmW0wuc3RhcnRdPXBbdi5lbmRdPXtzdGFydDpMLnN0YXJ0LGVuZDp2LmVuZCxyaW5nOkwucmluZy5jb25jYXQodi5yaW5nKX0pOihkZWxldGUgcFtMLmVuZF0sTC5yaW5nLnB1c2goUykscFtMLmVuZD1BXT1MKTooTD1mW0FdKT8odj1wW1JdKT8oZGVsZXRlIGZbTC5zdGFydF0sZGVsZXRlIHBbdi5lbmRdLEw9PT12PyhMLnJpbmcucHVzaChTKSxkKEwucmluZykpOmZbdi5zdGFydF09cFtMLmVuZF09e3N0YXJ0OnYuc3RhcnQsZW5kOkwuZW5kLHJpbmc6di5yaW5nLmNvbmNhdChMLnJpbmcpfSk6KGRlbGV0ZSBmW0wuc3RhcnRdLEwucmluZy51bnNoaWZ0KE0pLGZbTC5zdGFydD1SXT1MKTpmW1JdPXBbQV09e3N0YXJ0OlIsZW5kOkEscmluZzpbTSxTXX19fWZ1bmN0aW9uIG8odSl7cmV0dXJuIHVbMF0qMit1WzFdKih0KzEpKjR9ZnVuY3Rpb24gbCh1LGgsZCl7dS5mb3JFYWNoKGZ1bmN0aW9uKGYpe3ZhciBwPWZbMF0sbT1mWzFdLF89cHwwLHk9bXwwLGIseD1oW3kqdCtfXTtwPjAmJnA8dCYmXz09PXAmJihiPWhbeSp0K18tMV0sZlswXT1wKyhkLWIpLyh4LWIpLS41KSxtPjAmJm08ZSYmeT09PW0mJihiPWhbKHktMSkqdCtfXSxmWzFdPW0rKGQtYikvKHgtYiktLjUpfSl9cmV0dXJuIGkuY29udG91cj1hLGkuc2l6ZT1mdW5jdGlvbih1KXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm5bdCxlXTt2YXIgaD1NYXRoLmZsb29yKHVbMF0pLGQ9TWF0aC5mbG9vcih1WzFdKTtpZighKGg+PTAmJmQ+PTApKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBzaXplIik7cmV0dXJuIHQ9aCxlPWQsaX0saS50aHJlc2hvbGRzPWZ1bmN0aW9uKHUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXR5cGVvZiB1PT0iZnVuY3Rpb24iP3U6QXJyYXkuaXNBcnJheSh1KT9JYShTdi5jYWxsKHUpKTpJYSh1KSxpKTpyfSxpLnNtb290aD1mdW5jdGlvbih1KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj11P2w6X0YsaSk6bj09PWx9LGl9ZnVuY3Rpb24gdkYodCl7cmV0dXJuIHRbMF19ZnVuY3Rpb24geEYodCl7cmV0dXJuIHRbMV19ZnVuY3Rpb24ga0YoKXtyZXR1cm4gMX1mdW5jdGlvbiB3Rigpe3ZhciB0PXZGLGU9eEYscj1rRixuPTk2MCxpPTUwMCxhPTIwLHM9MixvPWEqMyxsPW4rbyoyPj5zLHU9aStvKjI+PnMsaD1JYSgyMCk7ZnVuY3Rpb24gZCh4KXt2YXIgaz1uZXcgRmxvYXQzMkFycmF5KGwqdSksVD1NYXRoLnBvdygyLC1zKSxDPS0xO2Zvcihjb25zdCB3IG9mIHgpe3ZhciBNPSh0KHcsKytDLHgpK28pKlQsUz0oZSh3LEMseCkrbykqVCxSPStyKHcsQyx4KTtpZihNPj0wJiZNPGwmJlM+PTAmJlM8dSl7dmFyIEE9TWF0aC5mbG9vcihNKSxMPU1hdGguZmxvb3IoUyksdj1NLUEtLjUsQj1TLUwtLjU7a1tBK0wqbF0rPSgxLXYpKigxLUIpKlIsa1tBKzErTCpsXSs9diooMS1CKSpSLGtbQSsxKyhMKzEpKmxdKz12KkIqUixrW0ErKEwrMSkqbF0rPSgxLXYpKkIqUn19cmV0dXJuIGtfKHtkYXRhOmssd2lkdGg6bCxoZWlnaHQ6dX0sYSpUKSxrfWZ1bmN0aW9uIGYoeCl7dmFyIGs9ZCh4KSxUPWgoayksQz1NYXRoLnBvdygyLDIqcyk7cmV0dXJuIEFycmF5LmlzQXJyYXkoVCl8fChUPWhzKE51bWJlci5NSU5fVkFMVUUsbG8oaykvQyxUKSksVWQoKS5zaXplKFtsLHVdKS50aHJlc2hvbGRzKFQubWFwKE09Pk0qQykpKGspLm1hcCgoTSxTKT0+KE0udmFsdWU9K1RbU10scChNKSkpfWYuY29udG91cnM9ZnVuY3Rpb24oeCl7dmFyIGs9ZCh4KSxUPVVkKCkuc2l6ZShbbCx1XSksQz1NYXRoLnBvdygyLDIqcyksTT1TPT57Uz0rUzt2YXIgUj1wKFQuY29udG91cihrLFMqQykpO3JldHVybiBSLnZhbHVlPVMsUn07cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShNLCJtYXgiLHtnZXQ6KCk9PmxvKGspL0N9KSxNfTtmdW5jdGlvbiBwKHgpe3JldHVybiB4LmNvb3JkaW5hdGVzLmZvckVhY2gobSkseH1mdW5jdGlvbiBtKHgpe3guZm9yRWFjaChfKX1mdW5jdGlvbiBfKHgpe3guZm9yRWFjaCh5KX1mdW5jdGlvbiB5KHgpe3hbMF09eFswXSpNYXRoLnBvdygyLHMpLW8seFsxXT14WzFdKk1hdGgucG93KDIscyktb31mdW5jdGlvbiBiKCl7cmV0dXJuIG89YSozLGw9bitvKjI+PnMsdT1pK28qMj4+cyxmfXJldHVybiBmLng9ZnVuY3Rpb24oeCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9dHlwZW9mIHg9PSJmdW5jdGlvbiI/eDpJYSgreCksZik6dH0sZi55PWZ1bmN0aW9uKHgpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXR5cGVvZiB4PT0iZnVuY3Rpb24iP3g6SWEoK3gpLGYpOmV9LGYud2VpZ2h0PWZ1bmN0aW9uKHgpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXR5cGVvZiB4PT0iZnVuY3Rpb24iP3g6SWEoK3gpLGYpOnJ9LGYuc2l6ZT1mdW5jdGlvbih4KXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm5bbixpXTt2YXIgaz0reFswXSxUPSt4WzFdO2lmKCEoaz49MCYmVD49MCkpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHNpemUiKTtyZXR1cm4gbj1rLGk9VCxiKCl9LGYuY2VsbFNpemU9ZnVuY3Rpb24oeCl7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIDE8PHM7aWYoISgoeD0reCk+PTEpKXRocm93IG5ldyBFcnJvcigiaW52YWxpZCBjZWxsIHNpemUiKTtyZXR1cm4gcz1NYXRoLmZsb29yKE1hdGgubG9nKHgpL01hdGguTE4yKSxiKCl9LGYudGhyZXNob2xkcz1mdW5jdGlvbih4KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD10eXBlb2YgeD09ImZ1bmN0aW9uIj94OkFycmF5LmlzQXJyYXkoeCk/SWEoU3YuY2FsbCh4KSk6SWEoeCksZik6aH0sZi5iYW5kd2lkdGg9ZnVuY3Rpb24oeCl7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIE1hdGguc3FydChhKihhKzEpKTtpZighKCh4PSt4KT49MCkpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGJhbmR3aWR0aCIpO3JldHVybiBhPShNYXRoLnNxcnQoNCp4KngrMSktMSkvMixiKCl9LGZ9Y29uc3QgWmk9MTExMDIyMzAyNDYyNTE1NjVlLTMyLFByPTEzNDIxNzcyOSxURj0oMys4KlppKSpaaTtmdW5jdGlvbiBXZCh0LGUscixuLGkpe2xldCBhLHMsbyxsLHU9ZVswXSxoPW5bMF0sZD0wLGY9MDtoPnU9PWg+LXU/KGE9dSx1PWVbKytkXSk6KGE9aCxoPW5bKytmXSk7bGV0IHA9MDtpZihkPHQmJmY8cilmb3IoaD51PT1oPi11PyhzPXUrYSxvPWEtKHMtdSksdT1lWysrZF0pOihzPWgrYSxvPWEtKHMtaCksaD1uWysrZl0pLGE9cyxvIT09MCYmKGlbcCsrXT1vKTtkPHQmJmY8cjspaD51PT1oPi11PyhzPWErdSxsPXMtYSxvPWEtKHMtbCkrKHUtbCksdT1lWysrZF0pOihzPWEraCxsPXMtYSxvPWEtKHMtbCkrKGgtbCksaD1uWysrZl0pLGE9cyxvIT09MCYmKGlbcCsrXT1vKTtmb3IoO2Q8dDspcz1hK3UsbD1zLWEsbz1hLShzLWwpKyh1LWwpLHU9ZVsrK2RdLGE9cyxvIT09MCYmKGlbcCsrXT1vKTtmb3IoO2Y8cjspcz1hK2gsbD1zLWEsbz1hLShzLWwpKyhoLWwpLGg9blsrK2ZdLGE9cyxvIT09MCYmKGlbcCsrXT1vKTtyZXR1cm4oYSE9PTB8fHA9PT0wKSYmKGlbcCsrXT1hKSxwfWZ1bmN0aW9uIEVGKHQsZSl7bGV0IHI9ZVswXTtmb3IobGV0IG49MTtuPHQ7bisrKXIrPWVbbl07cmV0dXJuIHJ9ZnVuY3Rpb24gWWwodCl7cmV0dXJuIG5ldyBGbG9hdDY0QXJyYXkodCl9Y29uc3QgQ0Y9KDMrMTYqWmkpKlppLFNGPSgyKzEyKlppKSpaaSxBRj0oOSs2NCpaaSkqWmkqWmksa289WWwoNCksQXY9WWwoOCksTXY9WWwoMTIpLEx2PVlsKDE2KSxYcj1ZbCg0KTtmdW5jdGlvbiBNRih0LGUscixuLGksYSxzKXtsZXQgbyxsLHUsaCxkLGYscCxtLF8seSxiLHgsayxULEMsTSxTLFI7Y29uc3QgQT10LWksTD1yLWksdj1lLWEsQj1uLWE7VD1BKkIsZj1QcipBLHA9Zi0oZi1BKSxtPUEtcCxmPVByKkIsXz1mLShmLUIpLHk9Qi1fLEM9bSp5LShULXAqXy1tKl8tcCp5KSxNPXYqTCxmPVByKnYscD1mLShmLXYpLG09di1wLGY9UHIqTCxfPWYtKGYtTCkseT1MLV8sUz1tKnktKE0tcCpfLW0qXy1wKnkpLGI9Qy1TLGQ9Qy1iLGtvWzBdPUMtKGIrZCkrKGQtUykseD1UK2IsZD14LVQsaz1ULSh4LWQpKyhiLWQpLGI9ay1NLGQ9ay1iLGtvWzFdPWstKGIrZCkrKGQtTSksUj14K2IsZD1SLXgsa29bMl09eC0oUi1kKSsoYi1kKSxrb1szXT1SO2xldCB3PUVGKDQsa28pLEQ9U0YqcztpZih3Pj1EfHwtdz49RHx8KGQ9dC1BLG89dC0oQStkKSsoZC1pKSxkPXItTCx1PXItKEwrZCkrKGQtaSksZD1lLXYsbD1lLSh2K2QpKyhkLWEpLGQ9bi1CLGg9bi0oQitkKSsoZC1hKSxvPT09MCYmbD09PTAmJnU9PT0wJiZoPT09MCl8fChEPUFGKnMrVEYqTWF0aC5hYnModyksdys9QSpoK0Iqby0odip1K0wqbCksdz49RHx8LXc+PUQpKXJldHVybiB3O1Q9bypCLGY9UHIqbyxwPWYtKGYtbyksbT1vLXAsZj1QcipCLF89Zi0oZi1CKSx5PUItXyxDPW0qeS0oVC1wKl8tbSpfLXAqeSksTT1sKkwsZj1QcipsLHA9Zi0oZi1sKSxtPWwtcCxmPVByKkwsXz1mLShmLUwpLHk9TC1fLFM9bSp5LShNLXAqXy1tKl8tcCp5KSxiPUMtUyxkPUMtYixYclswXT1DLShiK2QpKyhkLVMpLHg9VCtiLGQ9eC1ULGs9VC0oeC1kKSsoYi1kKSxiPWstTSxkPWstYixYclsxXT1rLShiK2QpKyhkLU0pLFI9eCtiLGQ9Ui14LFhyWzJdPXgtKFItZCkrKGItZCksWHJbM109Ujtjb25zdCBOPVdkKDQsa28sNCxYcixBdik7VD1BKmgsZj1QcipBLHA9Zi0oZi1BKSxtPUEtcCxmPVByKmgsXz1mLShmLWgpLHk9aC1fLEM9bSp5LShULXAqXy1tKl8tcCp5KSxNPXYqdSxmPVByKnYscD1mLShmLXYpLG09di1wLGY9UHIqdSxfPWYtKGYtdSkseT11LV8sUz1tKnktKE0tcCpfLW0qXy1wKnkpLGI9Qy1TLGQ9Qy1iLFhyWzBdPUMtKGIrZCkrKGQtUykseD1UK2IsZD14LVQsaz1ULSh4LWQpKyhiLWQpLGI9ay1NLGQ9ay1iLFhyWzFdPWstKGIrZCkrKGQtTSksUj14K2IsZD1SLXgsWHJbMl09eC0oUi1kKSsoYi1kKSxYclszXT1SO2NvbnN0IHo9V2QoTixBdiw0LFhyLE12KTtUPW8qaCxmPVByKm8scD1mLShmLW8pLG09by1wLGY9UHIqaCxfPWYtKGYtaCkseT1oLV8sQz1tKnktKFQtcCpfLW0qXy1wKnkpLE09bCp1LGY9UHIqbCxwPWYtKGYtbCksbT1sLXAsZj1Qcip1LF89Zi0oZi11KSx5PXUtXyxTPW0qeS0oTS1wKl8tbSpfLXAqeSksYj1DLVMsZD1DLWIsWHJbMF09Qy0oYitkKSsoZC1TKSx4PVQrYixkPXgtVCxrPVQtKHgtZCkrKGItZCksYj1rLU0sZD1rLWIsWHJbMV09ay0oYitkKSsoZC1NKSxSPXgrYixkPVIteCxYclsyXT14LShSLWQpKyhiLWQpLFhyWzNdPVI7Y29uc3QgWD1XZCh6LE12LDQsWHIsTHYpO3JldHVybiBMdltYLTFdfWZ1bmN0aW9uIG9oKHQsZSxyLG4saSxhKXtjb25zdCBzPShlLWEpKihyLWkpLG89KHQtaSkqKG4tYSksbD1zLW87aWYocz09PTB8fG89PT0wfHxzPjAhPW8+MClyZXR1cm4gbDtjb25zdCB1PU1hdGguYWJzKHMrbyk7cmV0dXJuIE1hdGguYWJzKGwpPj1DRip1P2w6LU1GKHQsZSxyLG4saSxhLHUpfWNvbnN0IFJ2PU1hdGgucG93KDIsLTUyKSxsaD1uZXcgVWludDMyQXJyYXkoNTEyKTtjbGFzcyBjaHtzdGF0aWMgZnJvbShlLHI9QkYsbj1ERil7Y29uc3QgaT1lLmxlbmd0aCxhPW5ldyBGbG9hdDY0QXJyYXkoaSoyKTtmb3IobGV0IHM9MDtzPGk7cysrKXtjb25zdCBvPWVbc107YVsyKnNdPXIobyksYVsyKnMrMV09bihvKX1yZXR1cm4gbmV3IGNoKGEpfWNvbnN0cnVjdG9yKGUpe2NvbnN0IHI9ZS5sZW5ndGg+PjE7aWYocj4wJiZ0eXBlb2YgZVswXSE9Im51bWJlciIpdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCBjb29yZHMgdG8gY29udGFpbiBudW1iZXJzLiIpO3RoaXMuY29vcmRzPWU7Y29uc3Qgbj1NYXRoLm1heCgyKnItNSwwKTt0aGlzLl90cmlhbmdsZXM9bmV3IFVpbnQzMkFycmF5KG4qMyksdGhpcy5faGFsZmVkZ2VzPW5ldyBJbnQzMkFycmF5KG4qMyksdGhpcy5faGFzaFNpemU9TWF0aC5jZWlsKE1hdGguc3FydChyKSksdGhpcy5faHVsbFByZXY9bmV3IFVpbnQzMkFycmF5KHIpLHRoaXMuX2h1bGxOZXh0PW5ldyBVaW50MzJBcnJheShyKSx0aGlzLl9odWxsVHJpPW5ldyBVaW50MzJBcnJheShyKSx0aGlzLl9odWxsSGFzaD1uZXcgSW50MzJBcnJheSh0aGlzLl9oYXNoU2l6ZSkuZmlsbCgtMSksdGhpcy5faWRzPW5ldyBVaW50MzJBcnJheShyKSx0aGlzLl9kaXN0cz1uZXcgRmxvYXQ2NEFycmF5KHIpLHRoaXMudXBkYXRlKCl9dXBkYXRlKCl7Y29uc3R7Y29vcmRzOmUsX2h1bGxQcmV2OnIsX2h1bGxOZXh0Om4sX2h1bGxUcmk6aSxfaHVsbEhhc2g6YX09dGhpcyxzPWUubGVuZ3RoPj4xO2xldCBvPTEvMCxsPTEvMCx1PS0xLzAsaD0tMS8wO2ZvcihsZXQgTD0wO0w8cztMKyspe2NvbnN0IHY9ZVsyKkxdLEI9ZVsyKkwrMV07djxvJiYobz12KSxCPGwmJihsPUIpLHY+dSYmKHU9diksQj5oJiYoaD1CKSx0aGlzLl9pZHNbTF09TH1jb25zdCBkPShvK3UpLzIsZj0obCtoKS8yO2xldCBwPTEvMCxtLF8seTtmb3IobGV0IEw9MDtMPHM7TCsrKXtjb25zdCB2PUhkKGQsZixlWzIqTF0sZVsyKkwrMV0pO3Y8cCYmKG09TCxwPXYpfWNvbnN0IGI9ZVsyKm1dLHg9ZVsyKm0rMV07cD0xLzA7Zm9yKGxldCBMPTA7TDxzO0wrKyl7aWYoTD09PW0pY29udGludWU7Y29uc3Qgdj1IZChiLHgsZVsyKkxdLGVbMipMKzFdKTt2PHAmJnY+MCYmKF89TCxwPXYpfWxldCBrPWVbMipfXSxUPWVbMipfKzFdLEM9MS8wO2ZvcihsZXQgTD0wO0w8cztMKyspe2lmKEw9PT1tfHxMPT09Xyljb250aW51ZTtjb25zdCB2PUlGKGIseCxrLFQsZVsyKkxdLGVbMipMKzFdKTt2PEMmJih5PUwsQz12KX1sZXQgTT1lWzIqeV0sUz1lWzIqeSsxXTtpZihDPT09MS8wKXtmb3IobGV0IEI9MDtCPHM7QisrKXRoaXMuX2Rpc3RzW0JdPWVbMipCXS1lWzBdfHxlWzIqQisxXS1lWzFdO3dvKHRoaXMuX2lkcyx0aGlzLl9kaXN0cywwLHMtMSk7Y29uc3QgTD1uZXcgVWludDMyQXJyYXkocyk7bGV0IHY9MDtmb3IobGV0IEI9MCx3PS0xLzA7QjxzO0IrKyl7Y29uc3QgRD10aGlzLl9pZHNbQl07dGhpcy5fZGlzdHNbRF0+dyYmKExbdisrXT1ELHc9dGhpcy5fZGlzdHNbRF0pfXRoaXMuaHVsbD1MLnN1YmFycmF5KDAsdiksdGhpcy50cmlhbmdsZXM9bmV3IFVpbnQzMkFycmF5KDApLHRoaXMuaGFsZmVkZ2VzPW5ldyBVaW50MzJBcnJheSgwKTtyZXR1cm59aWYob2goYix4LGssVCxNLFMpPDApe2NvbnN0IEw9Xyx2PWssQj1UO189eSxrPU0sVD1TLHk9TCxNPXYsUz1CfWNvbnN0IFI9TkYoYix4LGssVCxNLFMpO3RoaXMuX2N4PVIueCx0aGlzLl9jeT1SLnk7Zm9yKGxldCBMPTA7TDxzO0wrKyl0aGlzLl9kaXN0c1tMXT1IZChlWzIqTF0sZVsyKkwrMV0sUi54LFIueSk7d28odGhpcy5faWRzLHRoaXMuX2Rpc3RzLDAscy0xKSx0aGlzLl9odWxsU3RhcnQ9bTtsZXQgQT0zO25bbV09clt5XT1fLG5bX109clttXT15LG5beV09cltfXT1tLGlbbV09MCxpW19dPTEsaVt5XT0yLGEuZmlsbCgtMSksYVt0aGlzLl9oYXNoS2V5KGIseCldPW0sYVt0aGlzLl9oYXNoS2V5KGssVCldPV8sYVt0aGlzLl9oYXNoS2V5KE0sUyldPXksdGhpcy50cmlhbmdsZXNMZW49MCx0aGlzLl9hZGRUcmlhbmdsZShtLF8seSwtMSwtMSwtMSk7Zm9yKGxldCBMPTAsdixCO0w8dGhpcy5faWRzLmxlbmd0aDtMKyspe2NvbnN0IHc9dGhpcy5faWRzW0xdLEQ9ZVsyKnddLE49ZVsyKncrMV07aWYoTD4wJiZNYXRoLmFicyhELXYpPD1SdiYmTWF0aC5hYnMoTi1CKTw9UnZ8fCh2PUQsQj1OLHc9PT1tfHx3PT09X3x8dz09PXkpKWNvbnRpbnVlO2xldCB6PTA7Zm9yKGxldCAkPTAsbHQ9dGhpcy5faGFzaEtleShELE4pOyQ8dGhpcy5faGFzaFNpemUmJih6PWFbKGx0KyQpJXRoaXMuX2hhc2hTaXplXSwhKHohPT0tMSYmeiE9PW5bel0pKTskKyspO3o9clt6XTtsZXQgWD16LGN0O2Zvcig7Y3Q9bltYXSxvaChELE4sZVsyKlhdLGVbMipYKzFdLGVbMipjdF0sZVsyKmN0KzFdKT49MDspaWYoWD1jdCxYPT09eil7WD0tMTticmVha31pZihYPT09LTEpY29udGludWU7bGV0IEo9dGhpcy5fYWRkVHJpYW5nbGUoWCx3LG5bWF0sLTEsLTEsaVtYXSk7aVt3XT10aGlzLl9sZWdhbGl6ZShKKzIpLGlbWF09SixBKys7bGV0IFk9bltYXTtmb3IoO2N0PW5bWV0sb2goRCxOLGVbMipZXSxlWzIqWSsxXSxlWzIqY3RdLGVbMipjdCsxXSk8MDspSj10aGlzLl9hZGRUcmlhbmdsZShZLHcsY3QsaVt3XSwtMSxpW1ldKSxpW3ddPXRoaXMuX2xlZ2FsaXplKEorMiksbltZXT1ZLEEtLSxZPWN0O2lmKFg9PT16KWZvcig7Y3Q9cltYXSxvaChELE4sZVsyKmN0XSxlWzIqY3QrMV0sZVsyKlhdLGVbMipYKzFdKTwwOylKPXRoaXMuX2FkZFRyaWFuZ2xlKGN0LHcsWCwtMSxpW1hdLGlbY3RdKSx0aGlzLl9sZWdhbGl6ZShKKzIpLGlbY3RdPUosbltYXT1YLEEtLSxYPWN0O3RoaXMuX2h1bGxTdGFydD1yW3ddPVgsbltYXT1yW1ldPXcsblt3XT1ZLGFbdGhpcy5faGFzaEtleShELE4pXT13LGFbdGhpcy5faGFzaEtleShlWzIqWF0sZVsyKlgrMV0pXT1YfXRoaXMuaHVsbD1uZXcgVWludDMyQXJyYXkoQSk7Zm9yKGxldCBMPTAsdj10aGlzLl9odWxsU3RhcnQ7TDxBO0wrKyl0aGlzLmh1bGxbTF09dix2PW5bdl07dGhpcy50cmlhbmdsZXM9dGhpcy5fdHJpYW5nbGVzLnN1YmFycmF5KDAsdGhpcy50cmlhbmdsZXNMZW4pLHRoaXMuaGFsZmVkZ2VzPXRoaXMuX2hhbGZlZGdlcy5zdWJhcnJheSgwLHRoaXMudHJpYW5nbGVzTGVuKX1faGFzaEtleShlLHIpe3JldHVybiBNYXRoLmZsb29yKExGKGUtdGhpcy5fY3gsci10aGlzLl9jeSkqdGhpcy5faGFzaFNpemUpJXRoaXMuX2hhc2hTaXplfV9sZWdhbGl6ZShlKXtjb25zdHtfdHJpYW5nbGVzOnIsX2hhbGZlZGdlczpuLGNvb3JkczppfT10aGlzO2xldCBhPTAscz0wO2Zvcig7Oyl7Y29uc3Qgbz1uW2VdLGw9ZS1lJTM7aWYocz1sKyhlKzIpJTMsbz09PS0xKXtpZihhPT09MClicmVhaztlPWxoWy0tYV07Y29udGludWV9Y29uc3QgdT1vLW8lMyxoPWwrKGUrMSklMyxkPXUrKG8rMiklMyxmPXJbc10scD1yW2VdLG09cltoXSxfPXJbZF07aWYoUkYoaVsyKmZdLGlbMipmKzFdLGlbMipwXSxpWzIqcCsxXSxpWzIqbV0saVsyKm0rMV0saVsyKl9dLGlbMipfKzFdKSl7cltlXT1fLHJbb109Zjtjb25zdCBiPW5bZF07aWYoYj09PS0xKXtsZXQgaz10aGlzLl9odWxsU3RhcnQ7ZG97aWYodGhpcy5faHVsbFRyaVtrXT09PWQpe3RoaXMuX2h1bGxUcmlba109ZTticmVha31rPXRoaXMuX2h1bGxQcmV2W2tdfXdoaWxlKGshPT10aGlzLl9odWxsU3RhcnQpfXRoaXMuX2xpbmsoZSxiKSx0aGlzLl9saW5rKG8sbltzXSksdGhpcy5fbGluayhzLGQpO2NvbnN0IHg9dSsobysxKSUzO2E8bGgubGVuZ3RoJiYobGhbYSsrXT14KX1lbHNle2lmKGE9PT0wKWJyZWFrO2U9bGhbLS1hXX19cmV0dXJuIHN9X2xpbmsoZSxyKXt0aGlzLl9oYWxmZWRnZXNbZV09cixyIT09LTEmJih0aGlzLl9oYWxmZWRnZXNbcl09ZSl9X2FkZFRyaWFuZ2xlKGUscixuLGksYSxzKXtjb25zdCBvPXRoaXMudHJpYW5nbGVzTGVuO3JldHVybiB0aGlzLl90cmlhbmdsZXNbb109ZSx0aGlzLl90cmlhbmdsZXNbbysxXT1yLHRoaXMuX3RyaWFuZ2xlc1tvKzJdPW4sdGhpcy5fbGluayhvLGkpLHRoaXMuX2xpbmsobysxLGEpLHRoaXMuX2xpbmsobysyLHMpLHRoaXMudHJpYW5nbGVzTGVuKz0zLG99fWZ1bmN0aW9uIExGKHQsZSl7Y29uc3Qgcj10LyhNYXRoLmFicyh0KStNYXRoLmFicyhlKSk7cmV0dXJuKGU+MD8zLXI6MStyKS80fWZ1bmN0aW9uIEhkKHQsZSxyLG4pe2NvbnN0IGk9dC1yLGE9ZS1uO3JldHVybiBpKmkrYSphfWZ1bmN0aW9uIFJGKHQsZSxyLG4saSxhLHMsbyl7Y29uc3QgbD10LXMsdT1lLW8saD1yLXMsZD1uLW8sZj1pLXMscD1hLW8sbT1sKmwrdSp1LF89aCpoK2QqZCx5PWYqZitwKnA7cmV0dXJuIGwqKGQqeS1fKnApLXUqKGgqeS1fKmYpK20qKGgqcC1kKmYpPDB9ZnVuY3Rpb24gSUYodCxlLHIsbixpLGEpe2NvbnN0IHM9ci10LG89bi1lLGw9aS10LHU9YS1lLGg9cypzK28qbyxkPWwqbCt1KnUsZj0uNS8ocyp1LW8qbCkscD0odSpoLW8qZCkqZixtPShzKmQtbCpoKSpmO3JldHVybiBwKnArbSptfWZ1bmN0aW9uIE5GKHQsZSxyLG4saSxhKXtjb25zdCBzPXItdCxvPW4tZSxsPWktdCx1PWEtZSxoPXMqcytvKm8sZD1sKmwrdSp1LGY9LjUvKHMqdS1vKmwpLHA9dCsodSpoLW8qZCkqZixtPWUrKHMqZC1sKmgpKmY7cmV0dXJue3g6cCx5Om19fWZ1bmN0aW9uIHdvKHQsZSxyLG4pe2lmKG4tcjw9MjApZm9yKGxldCBpPXIrMTtpPD1uO2krKyl7Y29uc3QgYT10W2ldLHM9ZVthXTtsZXQgbz1pLTE7Zm9yKDtvPj1yJiZlW3Rbb11dPnM7KXRbbysxXT10W28tLV07dFtvKzFdPWF9ZWxzZXtjb25zdCBpPXIrbj4+MTtsZXQgYT1yKzEscz1uO1VsKHQsaSxhKSxlW3Rbcl1dPmVbdFtuXV0mJlVsKHQscixuKSxlW3RbYV1dPmVbdFtuXV0mJlVsKHQsYSxuKSxlW3Rbcl1dPmVbdFthXV0mJlVsKHQscixhKTtjb25zdCBvPXRbYV0sbD1lW29dO2Zvcig7Oyl7ZG8gYSsrO3doaWxlKGVbdFthXV08bCk7ZG8gcy0tO3doaWxlKGVbdFtzXV0+bCk7aWYoczxhKWJyZWFrO1VsKHQsYSxzKX10W3IrMV09dFtzXSx0W3NdPW8sbi1hKzE+PXMtcj8od28odCxlLGEsbiksd28odCxlLHIscy0xKSk6KHdvKHQsZSxyLHMtMSksd28odCxlLGEsbikpfX1mdW5jdGlvbiBVbCh0LGUscil7Y29uc3Qgbj10W2VdO3RbZV09dFtyXSx0W3JdPW59ZnVuY3Rpb24gQkYodCl7cmV0dXJuIHRbMF19ZnVuY3Rpb24gREYodCl7cmV0dXJuIHRbMV19Y29uc3QgSXY9MWUtNjtjbGFzcyB3c3tjb25zdHJ1Y3Rvcigpe3RoaXMuX3gwPXRoaXMuX3kwPXRoaXMuX3gxPXRoaXMuX3kxPW51bGwsdGhpcy5fPSIifW1vdmVUbyhlLHIpe3RoaXMuXys9YE0ke3RoaXMuX3gwPXRoaXMuX3gxPStlfSwke3RoaXMuX3kwPXRoaXMuX3kxPStyfWB9Y2xvc2VQYXRoKCl7dGhpcy5feDEhPT1udWxsJiYodGhpcy5feDE9dGhpcy5feDAsdGhpcy5feTE9dGhpcy5feTAsdGhpcy5fKz0iWiIpfWxpbmVUbyhlLHIpe3RoaXMuXys9YEwke3RoaXMuX3gxPStlfSwke3RoaXMuX3kxPStyfWB9YXJjKGUscixuKXtlPStlLHI9K3Isbj0rbjtjb25zdCBpPWUrbixhPXI7aWYobjwwKXRocm93IG5ldyBFcnJvcigibmVnYXRpdmUgcmFkaXVzIik7dGhpcy5feDE9PT1udWxsP3RoaXMuXys9YE0ke2l9LCR7YX1gOihNYXRoLmFicyh0aGlzLl94MS1pKT5Jdnx8TWF0aC5hYnModGhpcy5feTEtYSk+SXYpJiYodGhpcy5fKz0iTCIraSsiLCIrYSksbiYmKHRoaXMuXys9YEEke259LCR7bn0sMCwxLDEsJHtlLW59LCR7cn1BJHtufSwke259LDAsMSwxLCR7dGhpcy5feDE9aX0sJHt0aGlzLl95MT1hfWApfXJlY3QoZSxyLG4saSl7dGhpcy5fKz1gTSR7dGhpcy5feDA9dGhpcy5feDE9K2V9LCR7dGhpcy5feTA9dGhpcy5feTE9K3J9aCR7K259diR7K2l9aCR7LW59WmB9dmFsdWUoKXtyZXR1cm4gdGhpcy5ffHxudWxsfX1jbGFzcyBHZHtjb25zdHJ1Y3Rvcigpe3RoaXMuXz1bXX1tb3ZlVG8oZSxyKXt0aGlzLl8ucHVzaChbZSxyXSl9Y2xvc2VQYXRoKCl7dGhpcy5fLnB1c2godGhpcy5fWzBdLnNsaWNlKCkpfWxpbmVUbyhlLHIpe3RoaXMuXy5wdXNoKFtlLHJdKX12YWx1ZSgpe3JldHVybiB0aGlzLl8ubGVuZ3RoP3RoaXMuXzpudWxsfX1jbGFzcyBOdntjb25zdHJ1Y3RvcihlLFtyLG4saSxhXT1bMCwwLDk2MCw1MDBdKXtpZighKChpPStpKT49KHI9K3IpKXx8ISgoYT0rYSk+PShuPStuKSkpdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIGJvdW5kcyIpO3RoaXMuZGVsYXVuYXk9ZSx0aGlzLl9jaXJjdW1jZW50ZXJzPW5ldyBGbG9hdDY0QXJyYXkoZS5wb2ludHMubGVuZ3RoKjIpLHRoaXMudmVjdG9ycz1uZXcgRmxvYXQ2NEFycmF5KGUucG9pbnRzLmxlbmd0aCoyKSx0aGlzLnhtYXg9aSx0aGlzLnhtaW49cix0aGlzLnltYXg9YSx0aGlzLnltaW49bix0aGlzLl9pbml0KCl9dXBkYXRlKCl7cmV0dXJuIHRoaXMuZGVsYXVuYXkudXBkYXRlKCksdGhpcy5faW5pdCgpLHRoaXN9X2luaXQoKXtjb25zdHtkZWxhdW5heTp7cG9pbnRzOmUsaHVsbDpyLHRyaWFuZ2xlczpufSx2ZWN0b3JzOml9PXRoaXMsYT10aGlzLmNpcmN1bWNlbnRlcnM9dGhpcy5fY2lyY3VtY2VudGVycy5zdWJhcnJheSgwLG4ubGVuZ3RoLzMqMik7Zm9yKGxldCBwPTAsbT0wLF89bi5sZW5ndGgseSxiO3A8XztwKz0zLG0rPTIpe2NvbnN0IHg9bltwXSoyLGs9bltwKzFdKjIsVD1uW3ArMl0qMixDPWVbeF0sTT1lW3grMV0sUz1lW2tdLFI9ZVtrKzFdLEE9ZVtUXSxMPWVbVCsxXSx2PVMtQyxCPVItTSx3PUEtQyxEPUwtTSxOPSh2KkQtQip3KSoyO2lmKE1hdGguYWJzKE4pPDFlLTkpe2xldCB6PTFlOTtjb25zdCBYPW5bMF0qMjt6Kj1NYXRoLnNpZ24oKGVbWF0tQykqRC0oZVtYKzFdLU0pKncpLHk9KEMrQSkvMi16KkQsYj0oTStMKS8yK3oqd31lbHNle2NvbnN0IHo9MS9OLFg9dip2K0IqQixjdD13KncrRCpEO3k9QysoRCpYLUIqY3QpKnosYj1NKyh2KmN0LXcqWCkqen1hW21dPXksYVttKzFdPWJ9bGV0IHM9cltyLmxlbmd0aC0xXSxvLGw9cyo0LHUsaD1lWzIqc10sZCxmPWVbMipzKzFdO2kuZmlsbCgwKTtmb3IobGV0IHA9MDtwPHIubGVuZ3RoOysrcClzPXJbcF0sbz1sLHU9aCxkPWYsbD1zKjQsaD1lWzIqc10sZj1lWzIqcysxXSxpW28rMl09aVtsXT1kLWYsaVtvKzNdPWlbbCsxXT1oLXV9cmVuZGVyKGUpe2NvbnN0IHI9ZT09bnVsbD9lPW5ldyB3czp2b2lkIDAse2RlbGF1bmF5OntoYWxmZWRnZXM6bixpbmVkZ2VzOmksaHVsbDphfSxjaXJjdW1jZW50ZXJzOnMsdmVjdG9yczpvfT10aGlzO2lmKGEubGVuZ3RoPD0xKXJldHVybiBudWxsO2ZvcihsZXQgaD0wLGQ9bi5sZW5ndGg7aDxkOysraCl7Y29uc3QgZj1uW2hdO2lmKGY8aCljb250aW51ZTtjb25zdCBwPU1hdGguZmxvb3IoaC8zKSoyLG09TWF0aC5mbG9vcihmLzMpKjIsXz1zW3BdLHk9c1twKzFdLGI9c1ttXSx4PXNbbSsxXTt0aGlzLl9yZW5kZXJTZWdtZW50KF8seSxiLHgsZSl9bGV0IGwsdT1hW2EubGVuZ3RoLTFdO2ZvcihsZXQgaD0wO2g8YS5sZW5ndGg7KytoKXtsPXUsdT1hW2hdO2NvbnN0IGQ9TWF0aC5mbG9vcihpW3VdLzMpKjIsZj1zW2RdLHA9c1tkKzFdLG09bCo0LF89dGhpcy5fcHJvamVjdChmLHAsb1ttKzJdLG9bbSszXSk7XyYmdGhpcy5fcmVuZGVyU2VnbWVudChmLHAsX1swXSxfWzFdLGUpfXJldHVybiByJiZyLnZhbHVlKCl9cmVuZGVyQm91bmRzKGUpe2NvbnN0IHI9ZT09bnVsbD9lPW5ldyB3czp2b2lkIDA7cmV0dXJuIGUucmVjdCh0aGlzLnhtaW4sdGhpcy55bWluLHRoaXMueG1heC10aGlzLnhtaW4sdGhpcy55bWF4LXRoaXMueW1pbiksciYmci52YWx1ZSgpfXJlbmRlckNlbGwoZSxyKXtjb25zdCBuPXI9PW51bGw/cj1uZXcgd3M6dm9pZCAwLGk9dGhpcy5fY2xpcChlKTtpZihpPT09bnVsbHx8IWkubGVuZ3RoKXJldHVybjtyLm1vdmVUbyhpWzBdLGlbMV0pO2xldCBhPWkubGVuZ3RoO2Zvcig7aVswXT09PWlbYS0yXSYmaVsxXT09PWlbYS0xXSYmYT4xOylhLT0yO2ZvcihsZXQgcz0yO3M8YTtzKz0yKShpW3NdIT09aVtzLTJdfHxpW3MrMV0hPT1pW3MtMV0pJiZyLmxpbmVUbyhpW3NdLGlbcysxXSk7cmV0dXJuIHIuY2xvc2VQYXRoKCksbiYmbi52YWx1ZSgpfSpjZWxsUG9seWdvbnMoKXtjb25zdHtkZWxhdW5heTp7cG9pbnRzOmV9fT10aGlzO2ZvcihsZXQgcj0wLG49ZS5sZW5ndGgvMjtyPG47KytyKXtjb25zdCBpPXRoaXMuY2VsbFBvbHlnb24ocik7aSYmKGkuaW5kZXg9cix5aWVsZCBpKX19Y2VsbFBvbHlnb24oZSl7Y29uc3Qgcj1uZXcgR2Q7cmV0dXJuIHRoaXMucmVuZGVyQ2VsbChlLHIpLHIudmFsdWUoKX1fcmVuZGVyU2VnbWVudChlLHIsbixpLGEpe2xldCBzO2NvbnN0IG89dGhpcy5fcmVnaW9uY29kZShlLHIpLGw9dGhpcy5fcmVnaW9uY29kZShuLGkpO289PT0wJiZsPT09MD8oYS5tb3ZlVG8oZSxyKSxhLmxpbmVUbyhuLGkpKToocz10aGlzLl9jbGlwU2VnbWVudChlLHIsbixpLG8sbCkpJiYoYS5tb3ZlVG8oc1swXSxzWzFdKSxhLmxpbmVUbyhzWzJdLHNbM10pKX1jb250YWlucyhlLHIsbil7cmV0dXJuIHI9K3IsciE9PXJ8fChuPStuLG4hPT1uKT8hMTp0aGlzLmRlbGF1bmF5Ll9zdGVwKGUscixuKT09PWV9Km5laWdoYm9ycyhlKXtjb25zdCByPXRoaXMuX2NsaXAoZSk7aWYocilmb3IoY29uc3QgbiBvZiB0aGlzLmRlbGF1bmF5Lm5laWdoYm9ycyhlKSl7Y29uc3QgaT10aGlzLl9jbGlwKG4pO2lmKGkpe3Q6Zm9yKGxldCBhPTAscz1yLmxlbmd0aDthPHM7YSs9Milmb3IobGV0IG89MCxsPWkubGVuZ3RoO288bDtvKz0yKWlmKHJbYV09PWlbb10mJnJbYSsxXT09aVtvKzFdJiZyWyhhKzIpJXNdPT1pWyhvK2wtMiklbF0mJnJbKGErMyklc109PWlbKG8rbC0xKSVsXSl7eWllbGQgbjticmVhayB0fX19fV9jZWxsKGUpe2NvbnN0e2NpcmN1bWNlbnRlcnM6cixkZWxhdW5heTp7aW5lZGdlczpuLGhhbGZlZGdlczppLHRyaWFuZ2xlczphfX09dGhpcyxzPW5bZV07aWYocz09PS0xKXJldHVybiBudWxsO2NvbnN0IG89W107bGV0IGw9cztkb3tjb25zdCB1PU1hdGguZmxvb3IobC8zKTtpZihvLnB1c2goclt1KjJdLHJbdSoyKzFdKSxsPWwlMz09PTI/bC0yOmwrMSxhW2xdIT09ZSlicmVhaztsPWlbbF19d2hpbGUobCE9PXMmJmwhPT0tMSk7cmV0dXJuIG99X2NsaXAoZSl7aWYoZT09PTAmJnRoaXMuZGVsYXVuYXkuaHVsbC5sZW5ndGg9PT0xKXJldHVyblt0aGlzLnhtYXgsdGhpcy55bWluLHRoaXMueG1heCx0aGlzLnltYXgsdGhpcy54bWluLHRoaXMueW1heCx0aGlzLnhtaW4sdGhpcy55bWluXTtjb25zdCByPXRoaXMuX2NlbGwoZSk7aWYocj09PW51bGwpcmV0dXJuIG51bGw7Y29uc3R7dmVjdG9yczpufT10aGlzLGk9ZSo0O3JldHVybiBuW2ldfHxuW2krMV0/dGhpcy5fY2xpcEluZmluaXRlKGUscixuW2ldLG5baSsxXSxuW2krMl0sbltpKzNdKTp0aGlzLl9jbGlwRmluaXRlKGUscil9X2NsaXBGaW5pdGUoZSxyKXtjb25zdCBuPXIubGVuZ3RoO2xldCBpPW51bGwsYSxzLG89cltuLTJdLGw9cltuLTFdLHUsaD10aGlzLl9yZWdpb25jb2RlKG8sbCksZCxmPTA7Zm9yKGxldCBwPTA7cDxuO3ArPTIpaWYoYT1vLHM9bCxvPXJbcF0sbD1yW3ArMV0sdT1oLGg9dGhpcy5fcmVnaW9uY29kZShvLGwpLHU9PT0wJiZoPT09MClkPWYsZj0wLGk/aS5wdXNoKG8sbCk6aT1bbyxsXTtlbHNle2xldCBtLF8seSxiLHg7aWYodT09PTApe2lmKChtPXRoaXMuX2NsaXBTZWdtZW50KGEscyxvLGwsdSxoKSk9PT1udWxsKWNvbnRpbnVlO1tfLHksYix4XT1tfWVsc2V7aWYoKG09dGhpcy5fY2xpcFNlZ21lbnQobyxsLGEscyxoLHUpKT09PW51bGwpY29udGludWU7W2IseCxfLHldPW0sZD1mLGY9dGhpcy5fZWRnZWNvZGUoXyx5KSxkJiZmJiZ0aGlzLl9lZGdlKGUsZCxmLGksaS5sZW5ndGgpLGk/aS5wdXNoKF8seSk6aT1bXyx5XX1kPWYsZj10aGlzLl9lZGdlY29kZShiLHgpLGQmJmYmJnRoaXMuX2VkZ2UoZSxkLGYsaSxpLmxlbmd0aCksaT9pLnB1c2goYix4KTppPVtiLHhdfWlmKGkpZD1mLGY9dGhpcy5fZWRnZWNvZGUoaVswXSxpWzFdKSxkJiZmJiZ0aGlzLl9lZGdlKGUsZCxmLGksaS5sZW5ndGgpO2Vsc2UgaWYodGhpcy5jb250YWlucyhlLCh0aGlzLnhtaW4rdGhpcy54bWF4KS8yLCh0aGlzLnltaW4rdGhpcy55bWF4KS8yKSlyZXR1cm5bdGhpcy54bWF4LHRoaXMueW1pbix0aGlzLnhtYXgsdGhpcy55bWF4LHRoaXMueG1pbix0aGlzLnltYXgsdGhpcy54bWluLHRoaXMueW1pbl07cmV0dXJuIGl9X2NsaXBTZWdtZW50KGUscixuLGksYSxzKXtmb3IoOzspe2lmKGE9PT0wJiZzPT09MClyZXR1cm5bZSxyLG4saV07aWYoYSZzKXJldHVybiBudWxsO2xldCBvLGwsdT1hfHxzO3UmOD8obz1lKyhuLWUpKih0aGlzLnltYXgtcikvKGktciksbD10aGlzLnltYXgpOnUmND8obz1lKyhuLWUpKih0aGlzLnltaW4tcikvKGktciksbD10aGlzLnltaW4pOnUmMj8obD1yKyhpLXIpKih0aGlzLnhtYXgtZSkvKG4tZSksbz10aGlzLnhtYXgpOihsPXIrKGktcikqKHRoaXMueG1pbi1lKS8obi1lKSxvPXRoaXMueG1pbiksYT8oZT1vLHI9bCxhPXRoaXMuX3JlZ2lvbmNvZGUoZSxyKSk6KG49byxpPWwscz10aGlzLl9yZWdpb25jb2RlKG4saSkpfX1fY2xpcEluZmluaXRlKGUscixuLGksYSxzKXtsZXQgbz1BcnJheS5mcm9tKHIpLGw7aWYoKGw9dGhpcy5fcHJvamVjdChvWzBdLG9bMV0sbixpKSkmJm8udW5zaGlmdChsWzBdLGxbMV0pLChsPXRoaXMuX3Byb2plY3Qob1tvLmxlbmd0aC0yXSxvW28ubGVuZ3RoLTFdLGEscykpJiZvLnB1c2gobFswXSxsWzFdKSxvPXRoaXMuX2NsaXBGaW5pdGUoZSxvKSlmb3IobGV0IHU9MCxoPW8ubGVuZ3RoLGQsZj10aGlzLl9lZGdlY29kZShvW2gtMl0sb1toLTFdKTt1PGg7dSs9MilkPWYsZj10aGlzLl9lZGdlY29kZShvW3VdLG9bdSsxXSksZCYmZiYmKHU9dGhpcy5fZWRnZShlLGQsZixvLHUpLGg9by5sZW5ndGgpO2Vsc2UgdGhpcy5jb250YWlucyhlLCh0aGlzLnhtaW4rdGhpcy54bWF4KS8yLCh0aGlzLnltaW4rdGhpcy55bWF4KS8yKSYmKG89W3RoaXMueG1pbix0aGlzLnltaW4sdGhpcy54bWF4LHRoaXMueW1pbix0aGlzLnhtYXgsdGhpcy55bWF4LHRoaXMueG1pbix0aGlzLnltYXhdKTtyZXR1cm4gb31fZWRnZShlLHIsbixpLGEpe2Zvcig7ciE9PW47KXtsZXQgcyxvO3N3aXRjaChyKXtjYXNlIDU6cj00O2NvbnRpbnVlO2Nhc2UgNDpyPTYscz10aGlzLnhtYXgsbz10aGlzLnltaW47YnJlYWs7Y2FzZSA2OnI9Mjtjb250aW51ZTtjYXNlIDI6cj0xMCxzPXRoaXMueG1heCxvPXRoaXMueW1heDticmVhaztjYXNlIDEwOnI9ODtjb250aW51ZTtjYXNlIDg6cj05LHM9dGhpcy54bWluLG89dGhpcy55bWF4O2JyZWFrO2Nhc2UgOTpyPTE7Y29udGludWU7Y2FzZSAxOnI9NSxzPXRoaXMueG1pbixvPXRoaXMueW1pbjticmVha30oaVthXSE9PXN8fGlbYSsxXSE9PW8pJiZ0aGlzLmNvbnRhaW5zKGUscyxvKSYmKGkuc3BsaWNlKGEsMCxzLG8pLGErPTIpfWlmKGkubGVuZ3RoPjQpZm9yKGxldCBzPTA7czxpLmxlbmd0aDtzKz0yKXtjb25zdCBvPShzKzIpJWkubGVuZ3RoLGw9KHMrNCklaS5sZW5ndGg7KGlbc109PT1pW29dJiZpW29dPT09aVtsXXx8aVtzKzFdPT09aVtvKzFdJiZpW28rMV09PT1pW2wrMV0pJiYoaS5zcGxpY2UobywyKSxzLT0yKX1yZXR1cm4gYX1fcHJvamVjdChlLHIsbixpKXtsZXQgYT0xLzAscyxvLGw7aWYoaTwwKXtpZihyPD10aGlzLnltaW4pcmV0dXJuIG51bGw7KHM9KHRoaXMueW1pbi1yKS9pKTxhJiYobD10aGlzLnltaW4sbz1lKyhhPXMpKm4pfWVsc2UgaWYoaT4wKXtpZihyPj10aGlzLnltYXgpcmV0dXJuIG51bGw7KHM9KHRoaXMueW1heC1yKS9pKTxhJiYobD10aGlzLnltYXgsbz1lKyhhPXMpKm4pfWlmKG4+MCl7aWYoZT49dGhpcy54bWF4KXJldHVybiBudWxsOyhzPSh0aGlzLnhtYXgtZSkvbik8YSYmKG89dGhpcy54bWF4LGw9cisoYT1zKSppKX1lbHNlIGlmKG48MCl7aWYoZTw9dGhpcy54bWluKXJldHVybiBudWxsOyhzPSh0aGlzLnhtaW4tZSkvbik8YSYmKG89dGhpcy54bWluLGw9cisoYT1zKSppKX1yZXR1cm5bbyxsXX1fZWRnZWNvZGUoZSxyKXtyZXR1cm4oZT09PXRoaXMueG1pbj8xOmU9PT10aGlzLnhtYXg/MjowKXwocj09PXRoaXMueW1pbj80OnI9PT10aGlzLnltYXg/ODowKX1fcmVnaW9uY29kZShlLHIpe3JldHVybihlPHRoaXMueG1pbj8xOmU+dGhpcy54bWF4PzI6MCl8KHI8dGhpcy55bWluPzQ6cj50aGlzLnltYXg/ODowKX19Y29uc3QgT0Y9MipNYXRoLlBJLFRvPU1hdGgucG93O2Z1bmN0aW9uIEZGKHQpe3JldHVybiB0WzBdfWZ1bmN0aW9uIFBGKHQpe3JldHVybiB0WzFdfWZ1bmN0aW9uIHFGKHQpe2NvbnN0e3RyaWFuZ2xlczplLGNvb3JkczpyfT10O2ZvcihsZXQgbj0wO248ZS5sZW5ndGg7bis9Myl7Y29uc3QgaT0yKmVbbl0sYT0yKmVbbisxXSxzPTIqZVtuKzJdO2lmKChyW3NdLXJbaV0pKihyW2ErMV0tcltpKzFdKS0oclthXS1yW2ldKSoocltzKzFdLXJbaSsxXSk+MWUtMTApcmV0dXJuITF9cmV0dXJuITB9ZnVuY3Rpb24gVkYodCxlLHIpe3JldHVyblt0K01hdGguc2luKHQrZSkqcixlK01hdGguY29zKHQtZSkqcl19Y2xhc3MgamR7c3RhdGljIGZyb20oZSxyPUZGLG49UEYsaSl7cmV0dXJuIG5ldyBqZCgibGVuZ3RoImluIGU/ekYoZSxyLG4saSk6RmxvYXQ2NEFycmF5LmZyb20oWUYoZSxyLG4saSkpKX1jb25zdHJ1Y3RvcihlKXt0aGlzLl9kZWxhdW5hdG9yPW5ldyBjaChlKSx0aGlzLmluZWRnZXM9bmV3IEludDMyQXJyYXkoZS5sZW5ndGgvMiksdGhpcy5faHVsbEluZGV4PW5ldyBJbnQzMkFycmF5KGUubGVuZ3RoLzIpLHRoaXMucG9pbnRzPXRoaXMuX2RlbGF1bmF0b3IuY29vcmRzLHRoaXMuX2luaXQoKX11cGRhdGUoKXtyZXR1cm4gdGhpcy5fZGVsYXVuYXRvci51cGRhdGUoKSx0aGlzLl9pbml0KCksdGhpc31faW5pdCgpe2NvbnN0IGU9dGhpcy5fZGVsYXVuYXRvcixyPXRoaXMucG9pbnRzO2lmKGUuaHVsbCYmZS5odWxsLmxlbmd0aD4yJiZxRihlKSl7dGhpcy5jb2xsaW5lYXI9SW50MzJBcnJheS5mcm9tKHtsZW5ndGg6ci5sZW5ndGgvMn0sKGYscCk9PnApLnNvcnQoKGYscCk9PnJbMipmXS1yWzIqcF18fHJbMipmKzFdLXJbMipwKzFdKTtjb25zdCBsPXRoaXMuY29sbGluZWFyWzBdLHU9dGhpcy5jb2xsaW5lYXJbdGhpcy5jb2xsaW5lYXIubGVuZ3RoLTFdLGg9W3JbMipsXSxyWzIqbCsxXSxyWzIqdV0sclsyKnUrMV1dLGQ9MWUtOCpNYXRoLmh5cG90KGhbM10taFsxXSxoWzJdLWhbMF0pO2ZvcihsZXQgZj0wLHA9ci5sZW5ndGgvMjtmPHA7KytmKXtjb25zdCBtPVZGKHJbMipmXSxyWzIqZisxXSxkKTtyWzIqZl09bVswXSxyWzIqZisxXT1tWzFdfXRoaXMuX2RlbGF1bmF0b3I9bmV3IGNoKHIpfWVsc2UgZGVsZXRlIHRoaXMuY29sbGluZWFyO2NvbnN0IG49dGhpcy5oYWxmZWRnZXM9dGhpcy5fZGVsYXVuYXRvci5oYWxmZWRnZXMsaT10aGlzLmh1bGw9dGhpcy5fZGVsYXVuYXRvci5odWxsLGE9dGhpcy50cmlhbmdsZXM9dGhpcy5fZGVsYXVuYXRvci50cmlhbmdsZXMscz10aGlzLmluZWRnZXMuZmlsbCgtMSksbz10aGlzLl9odWxsSW5kZXguZmlsbCgtMSk7Zm9yKGxldCBsPTAsdT1uLmxlbmd0aDtsPHU7KytsKXtjb25zdCBoPWFbbCUzPT09Mj9sLTI6bCsxXTsobltsXT09PS0xfHxzW2hdPT09LTEpJiYoc1toXT1sKX1mb3IobGV0IGw9MCx1PWkubGVuZ3RoO2w8dTsrK2wpb1tpW2xdXT1sO2kubGVuZ3RoPD0yJiZpLmxlbmd0aD4wJiYodGhpcy50cmlhbmdsZXM9bmV3IEludDMyQXJyYXkoMykuZmlsbCgtMSksdGhpcy5oYWxmZWRnZXM9bmV3IEludDMyQXJyYXkoMykuZmlsbCgtMSksdGhpcy50cmlhbmdsZXNbMF09aVswXSxzW2lbMF1dPTEsaS5sZW5ndGg9PT0yJiYoc1tpWzFdXT0wLHRoaXMudHJpYW5nbGVzWzFdPWlbMV0sdGhpcy50cmlhbmdsZXNbMl09aVsxXSkpfXZvcm9ub2koZSl7cmV0dXJuIG5ldyBOdih0aGlzLGUpfSpuZWlnaGJvcnMoZSl7Y29uc3R7aW5lZGdlczpyLGh1bGw6bixfaHVsbEluZGV4OmksaGFsZmVkZ2VzOmEsdHJpYW5nbGVzOnMsY29sbGluZWFyOm99PXRoaXM7aWYobyl7Y29uc3QgZD1vLmluZGV4T2YoZSk7ZD4wJiYoeWllbGQgb1tkLTFdKSxkPG8ubGVuZ3RoLTEmJih5aWVsZCBvW2QrMV0pO3JldHVybn1jb25zdCBsPXJbZV07aWYobD09PS0xKXJldHVybjtsZXQgdT1sLGg9LTE7ZG97aWYoeWllbGQgaD1zW3VdLHU9dSUzPT09Mj91LTI6dSsxLHNbdV0hPT1lKXJldHVybjtpZih1PWFbdV0sdT09PS0xKXtjb25zdCBkPW5bKGlbZV0rMSklbi5sZW5ndGhdO2QhPT1oJiYoeWllbGQgZCk7cmV0dXJufX13aGlsZSh1IT09bCl9ZmluZChlLHIsbj0wKXtpZihlPStlLGUhPT1lfHwocj0rcixyIT09cikpcmV0dXJuLTE7Y29uc3QgaT1uO2xldCBhO2Zvcig7KGE9dGhpcy5fc3RlcChuLGUscikpPj0wJiZhIT09biYmYSE9PWk7KW49YTtyZXR1cm4gYX1fc3RlcChlLHIsbil7Y29uc3R7aW5lZGdlczppLGh1bGw6YSxfaHVsbEluZGV4OnMsaGFsZmVkZ2VzOm8sdHJpYW5nbGVzOmwscG9pbnRzOnV9PXRoaXM7aWYoaVtlXT09PS0xfHwhdS5sZW5ndGgpcmV0dXJuKGUrMSklKHUubGVuZ3RoPj4xKTtsZXQgaD1lLGQ9VG8oci11W2UqMl0sMikrVG8obi11W2UqMisxXSwyKTtjb25zdCBmPWlbZV07bGV0IHA9Zjtkb3tsZXQgbT1sW3BdO2NvbnN0IF89VG8oci11W20qMl0sMikrVG8obi11W20qMisxXSwyKTtpZihfPGQmJihkPV8saD1tKSxwPXAlMz09PTI/cC0yOnArMSxsW3BdIT09ZSlicmVhaztpZihwPW9bcF0scD09PS0xKXtpZihwPWFbKHNbZV0rMSklYS5sZW5ndGhdLHAhPT1tJiZUbyhyLXVbcCoyXSwyKStUbyhuLXVbcCoyKzFdLDIpPGQpcmV0dXJuIHA7YnJlYWt9fXdoaWxlKHAhPT1mKTtyZXR1cm4gaH1yZW5kZXIoZSl7Y29uc3Qgcj1lPT1udWxsP2U9bmV3IHdzOnZvaWQgMCx7cG9pbnRzOm4saGFsZmVkZ2VzOmksdHJpYW5nbGVzOmF9PXRoaXM7Zm9yKGxldCBzPTAsbz1pLmxlbmd0aDtzPG87KytzKXtjb25zdCBsPWlbc107aWYobDxzKWNvbnRpbnVlO2NvbnN0IHU9YVtzXSoyLGg9YVtsXSoyO2UubW92ZVRvKG5bdV0sblt1KzFdKSxlLmxpbmVUbyhuW2hdLG5baCsxXSl9cmV0dXJuIHRoaXMucmVuZGVySHVsbChlKSxyJiZyLnZhbHVlKCl9cmVuZGVyUG9pbnRzKGUscil7cj09PXZvaWQgMCYmKCFlfHx0eXBlb2YgZS5tb3ZlVG8hPSJmdW5jdGlvbiIpJiYocj1lLGU9bnVsbCkscj1yPT1udWxsPzI6K3I7Y29uc3Qgbj1lPT1udWxsP2U9bmV3IHdzOnZvaWQgMCx7cG9pbnRzOml9PXRoaXM7Zm9yKGxldCBhPTAscz1pLmxlbmd0aDthPHM7YSs9Mil7Y29uc3Qgbz1pW2FdLGw9aVthKzFdO2UubW92ZVRvKG8rcixsKSxlLmFyYyhvLGwsciwwLE9GKX1yZXR1cm4gbiYmbi52YWx1ZSgpfXJlbmRlckh1bGwoZSl7Y29uc3Qgcj1lPT1udWxsP2U9bmV3IHdzOnZvaWQgMCx7aHVsbDpuLHBvaW50czppfT10aGlzLGE9blswXSoyLHM9bi5sZW5ndGg7ZS5tb3ZlVG8oaVthXSxpW2ErMV0pO2ZvcihsZXQgbz0xO288czsrK28pe2NvbnN0IGw9MipuW29dO2UubGluZVRvKGlbbF0saVtsKzFdKX1yZXR1cm4gZS5jbG9zZVBhdGgoKSxyJiZyLnZhbHVlKCl9aHVsbFBvbHlnb24oKXtjb25zdCBlPW5ldyBHZDtyZXR1cm4gdGhpcy5yZW5kZXJIdWxsKGUpLGUudmFsdWUoKX1yZW5kZXJUcmlhbmdsZShlLHIpe2NvbnN0IG49cj09bnVsbD9yPW5ldyB3czp2b2lkIDAse3BvaW50czppLHRyaWFuZ2xlczphfT10aGlzLHM9YVtlKj0zXSoyLG89YVtlKzFdKjIsbD1hW2UrMl0qMjtyZXR1cm4gci5tb3ZlVG8oaVtzXSxpW3MrMV0pLHIubGluZVRvKGlbb10saVtvKzFdKSxyLmxpbmVUbyhpW2xdLGlbbCsxXSksci5jbG9zZVBhdGgoKSxuJiZuLnZhbHVlKCl9KnRyaWFuZ2xlUG9seWdvbnMoKXtjb25zdHt0cmlhbmdsZXM6ZX09dGhpcztmb3IobGV0IHI9MCxuPWUubGVuZ3RoLzM7cjxuOysrcil5aWVsZCB0aGlzLnRyaWFuZ2xlUG9seWdvbihyKX10cmlhbmdsZVBvbHlnb24oZSl7Y29uc3Qgcj1uZXcgR2Q7cmV0dXJuIHRoaXMucmVuZGVyVHJpYW5nbGUoZSxyKSxyLnZhbHVlKCl9fWZ1bmN0aW9uIHpGKHQsZSxyLG4pe2NvbnN0IGk9dC5sZW5ndGgsYT1uZXcgRmxvYXQ2NEFycmF5KGkqMik7Zm9yKGxldCBzPTA7czxpOysrcyl7Y29uc3Qgbz10W3NdO2FbcyoyXT1lLmNhbGwobixvLHMsdCksYVtzKjIrMV09ci5jYWxsKG4sbyxzLHQpfXJldHVybiBhfWZ1bmN0aW9uKllGKHQsZSxyLG4pe2xldCBpPTA7Zm9yKGNvbnN0IGEgb2YgdCl5aWVsZCBlLmNhbGwobixhLGksdCkseWllbGQgci5jYWxsKG4sYSxpLHQpLCsraX12YXIgQnY9e30sJGQ9e30sWGQ9MzQsV2w9MTAsS2Q9MTM7ZnVuY3Rpb24gRHYodCl7cmV0dXJuIG5ldyBGdW5jdGlvbigiZCIsInJldHVybiB7Iit0Lm1hcChmdW5jdGlvbihlLHIpe3JldHVybiBKU09OLnN0cmluZ2lmeShlKSsiOiBkWyIrcisnXSB8fCAiIid9KS5qb2luKCIsIikrIn0iKX1mdW5jdGlvbiBVRih0LGUpe3ZhciByPUR2KHQpO3JldHVybiBmdW5jdGlvbihuLGkpe3JldHVybiBlKHIobiksaSx0KX19ZnVuY3Rpb24gT3YodCl7dmFyIGU9T2JqZWN0LmNyZWF0ZShudWxsKSxyPVtdO3JldHVybiB0LmZvckVhY2goZnVuY3Rpb24obil7Zm9yKHZhciBpIGluIG4paSBpbiBlfHxyLnB1c2goZVtpXT1pKX0pLHJ9ZnVuY3Rpb24gZG4odCxlKXt2YXIgcj10KyIiLG49ci5sZW5ndGg7cmV0dXJuIG48ZT9uZXcgQXJyYXkoZS1uKzEpLmpvaW4oMCkrcjpyfWZ1bmN0aW9uIFdGKHQpe3JldHVybiB0PDA/Ii0iK2RuKC10LDYpOnQ+OTk5OT8iKyIrZG4odCw2KTpkbih0LDQpfWZ1bmN0aW9uIEhGKHQpe3ZhciBlPXQuZ2V0VVRDSG91cnMoKSxyPXQuZ2V0VVRDTWludXRlcygpLG49dC5nZXRVVENTZWNvbmRzKCksaT10LmdldFVUQ01pbGxpc2Vjb25kcygpO3JldHVybiBpc05hTih0KT8iSW52YWxpZCBEYXRlIjpXRih0LmdldFVUQ0Z1bGxZZWFyKCkpKyItIitkbih0LmdldFVUQ01vbnRoKCkrMSwyKSsiLSIrZG4odC5nZXRVVENEYXRlKCksMikrKGk/IlQiK2RuKGUsMikrIjoiK2RuKHIsMikrIjoiK2RuKG4sMikrIi4iK2RuKGksMykrIloiOm4/IlQiK2RuKGUsMikrIjoiK2RuKHIsMikrIjoiK2RuKG4sMikrIloiOnJ8fGU/IlQiK2RuKGUsMikrIjoiK2RuKHIsMikrIloiOiIiKX1mdW5jdGlvbiB1aCh0KXt2YXIgZT1uZXcgUmVnRXhwKCdbIicrdCtgClxyXWApLHI9dC5jaGFyQ29kZUF0KDApO2Z1bmN0aW9uIG4oZCxmKXt2YXIgcCxtLF89aShkLGZ1bmN0aW9uKHksYil7aWYocClyZXR1cm4gcCh5LGItMSk7bT15LHA9Zj9VRih5LGYpOkR2KHkpfSk7cmV0dXJuIF8uY29sdW1ucz1tfHxbXSxffWZ1bmN0aW9uIGkoZCxmKXt2YXIgcD1bXSxtPWQubGVuZ3RoLF89MCx5PTAsYix4PW08PTAsaz0hMTtkLmNoYXJDb2RlQXQobS0xKT09PVdsJiYtLW0sZC5jaGFyQ29kZUF0KG0tMSk9PT1LZCYmLS1tO2Z1bmN0aW9uIFQoKXtpZih4KXJldHVybiAkZDtpZihrKXJldHVybiBrPSExLEJ2O3ZhciBNLFM9XyxSO2lmKGQuY2hhckNvZGVBdChTKT09PVhkKXtmb3IoO18rKzxtJiZkLmNoYXJDb2RlQXQoXykhPT1YZHx8ZC5jaGFyQ29kZUF0KCsrXyk9PT1YZDspO3JldHVybihNPV8pPj1tP3g9ITA6KFI9ZC5jaGFyQ29kZUF0KF8rKykpPT09V2w/az0hMDpSPT09S2QmJihrPSEwLGQuY2hhckNvZGVBdChfKT09PVdsJiYrK18pLGQuc2xpY2UoUysxLE0tMSkucmVwbGFjZSgvIiIvZywnIicpfWZvcig7XzxtOyl7aWYoKFI9ZC5jaGFyQ29kZUF0KE09XysrKSk9PT1XbClrPSEwO2Vsc2UgaWYoUj09PUtkKWs9ITAsZC5jaGFyQ29kZUF0KF8pPT09V2wmJisrXztlbHNlIGlmKFIhPT1yKWNvbnRpbnVlO3JldHVybiBkLnNsaWNlKFMsTSl9cmV0dXJuIHg9ITAsZC5zbGljZShTLG0pfWZvcig7KGI9VCgpKSE9PSRkOyl7Zm9yKHZhciBDPVtdO2IhPT1CdiYmYiE9PSRkOylDLnB1c2goYiksYj1UKCk7ZiYmKEM9ZihDLHkrKykpPT1udWxsfHxwLnB1c2goQyl9cmV0dXJuIHB9ZnVuY3Rpb24gYShkLGYpe3JldHVybiBkLm1hcChmdW5jdGlvbihwKXtyZXR1cm4gZi5tYXAoZnVuY3Rpb24obSl7cmV0dXJuIGgocFttXSl9KS5qb2luKHQpfSl9ZnVuY3Rpb24gcyhkLGYpe3JldHVybiBmPT1udWxsJiYoZj1PdihkKSksW2YubWFwKGgpLmpvaW4odCldLmNvbmNhdChhKGQsZikpLmpvaW4oYApgKX1mdW5jdGlvbiBvKGQsZil7cmV0dXJuIGY9PW51bGwmJihmPU92KGQpKSxhKGQsZikuam9pbihgCmApfWZ1bmN0aW9uIGwoZCl7cmV0dXJuIGQubWFwKHUpLmpvaW4oYApgKX1mdW5jdGlvbiB1KGQpe3JldHVybiBkLm1hcChoKS5qb2luKHQpfWZ1bmN0aW9uIGgoZCl7cmV0dXJuIGQ9PW51bGw/IiI6ZCBpbnN0YW5jZW9mIERhdGU/SEYoZCk6ZS50ZXN0KGQrPSIiKT8nIicrZC5yZXBsYWNlKC8iL2csJyIiJykrJyInOmR9cmV0dXJue3BhcnNlOm4scGFyc2VSb3dzOmksZm9ybWF0OnMsZm9ybWF0Qm9keTpvLGZvcm1hdFJvd3M6bCxmb3JtYXRSb3c6dSxmb3JtYXRWYWx1ZTpofX12YXIgVHM9dWgoIiwiKSxGdj1Ucy5wYXJzZSxHRj1Ucy5wYXJzZVJvd3MsakY9VHMuZm9ybWF0LCRGPVRzLmZvcm1hdEJvZHksWEY9VHMuZm9ybWF0Um93cyxLRj1Ucy5mb3JtYXRSb3csWkY9VHMuZm9ybWF0VmFsdWUsRXM9dWgoIgkiKSxQdj1Fcy5wYXJzZSxRRj1Fcy5wYXJzZVJvd3MsSkY9RXMuZm9ybWF0LHRQPUVzLmZvcm1hdEJvZHksZVA9RXMuZm9ybWF0Um93cyxyUD1Fcy5mb3JtYXRSb3csblA9RXMuZm9ybWF0VmFsdWU7ZnVuY3Rpb24gaVAodCl7Zm9yKHZhciBlIGluIHQpe3ZhciByPXRbZV0udHJpbSgpLG4saTtpZighcilyPW51bGw7ZWxzZSBpZihyPT09InRydWUiKXI9ITA7ZWxzZSBpZihyPT09ImZhbHNlIilyPSExO2Vsc2UgaWYocj09PSJOYU4iKXI9TmFOO2Vsc2UgaWYoIWlzTmFOKG49K3IpKXI9bjtlbHNlIGlmKGk9ci5tYXRjaCgvXihbLStdXGR7Mn0pP1xkezR9KC1cZHsyfSgtXGR7Mn0pPyk/KFRcZHsyfTpcZHsyfSg6XGR7Mn0oXC5cZHszfSk/KT8oWnxbLStdXGR7Mn06XGR7Mn0pPyk/JC8pKWFQJiYhIWlbNF0mJiFpWzddJiYocj1yLnJlcGxhY2UoLy0vZywiLyIpLnJlcGxhY2UoL1QvLCIgIikpLHI9bmV3IERhdGUocik7ZWxzZSBjb250aW51ZTt0W2VdPXJ9cmV0dXJuIHR9Y29uc3QgYVA9bmV3IERhdGUoIjIwMTktMDEtMDFUMDA6MDAiKS5nZXRIb3VycygpfHxuZXcgRGF0ZSgiMjAxOS0wNy0wMVQwMDowMCIpLmdldEhvdXJzKCk7ZnVuY3Rpb24gc1AodCl7aWYoIXQub2spdGhyb3cgbmV3IEVycm9yKHQuc3RhdHVzKyIgIit0LnN0YXR1c1RleHQpO3JldHVybiB0LmJsb2IoKX1mdW5jdGlvbiBvUCh0LGUpe3JldHVybiBmZXRjaCh0LGUpLnRoZW4oc1ApfWZ1bmN0aW9uIGxQKHQpe2lmKCF0Lm9rKXRocm93IG5ldyBFcnJvcih0LnN0YXR1cysiICIrdC5zdGF0dXNUZXh0KTtyZXR1cm4gdC5hcnJheUJ1ZmZlcigpfWZ1bmN0aW9uIGNQKHQsZSl7cmV0dXJuIGZldGNoKHQsZSkudGhlbihsUCl9ZnVuY3Rpb24gdVAodCl7aWYoIXQub2spdGhyb3cgbmV3IEVycm9yKHQuc3RhdHVzKyIgIit0LnN0YXR1c1RleHQpO3JldHVybiB0LnRleHQoKX1mdW5jdGlvbiBoaCh0LGUpe3JldHVybiBmZXRjaCh0LGUpLnRoZW4odVApfWZ1bmN0aW9uIHF2KHQpe3JldHVybiBmdW5jdGlvbihlLHIsbil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg9PT0yJiZ0eXBlb2Ygcj09ImZ1bmN0aW9uIiYmKG49cixyPXZvaWQgMCksaGgoZSxyKS50aGVuKGZ1bmN0aW9uKGkpe3JldHVybiB0KGksbil9KX19ZnVuY3Rpb24gaFAodCxlLHIsbil7YXJndW1lbnRzLmxlbmd0aD09PTMmJnR5cGVvZiByPT0iZnVuY3Rpb24iJiYobj1yLHI9dm9pZCAwKTt2YXIgaT11aCh0KTtyZXR1cm4gaGgoZSxyKS50aGVuKGZ1bmN0aW9uKGEpe3JldHVybiBpLnBhcnNlKGEsbil9KX12YXIgZlA9cXYoRnYpLGRQPXF2KFB2KTtmdW5jdGlvbiBwUCh0LGUpe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyLG4pe3ZhciBpPW5ldyBJbWFnZTtmb3IodmFyIGEgaW4gZSlpW2FdPWVbYV07aS5vbmVycm9yPW4saS5vbmxvYWQ9ZnVuY3Rpb24oKXtyKGkpfSxpLnNyYz10fSl9ZnVuY3Rpb24gZ1AodCl7aWYoIXQub2spdGhyb3cgbmV3IEVycm9yKHQuc3RhdHVzKyIgIit0LnN0YXR1c1RleHQpO2lmKCEodC5zdGF0dXM9PT0yMDR8fHQuc3RhdHVzPT09MjA1KSlyZXR1cm4gdC5qc29uKCl9ZnVuY3Rpb24geVAodCxlKXtyZXR1cm4gZmV0Y2godCxlKS50aGVuKGdQKX1mdW5jdGlvbiBaZCh0KXtyZXR1cm4oZSxyKT0+aGgoZSxyKS50aGVuKG49Pm5ldyBET01QYXJzZXIoKS5wYXJzZUZyb21TdHJpbmcobix0KSl9Y29uc3QgbVA9WmQoImFwcGxpY2F0aW9uL3htbCIpO3ZhciBiUD1aZCgidGV4dC9odG1sIiksX1A9WmQoImltYWdlL3N2Zyt4bWwiKTtmdW5jdGlvbiB2UCh0LGUpe3ZhciByLG49MTt0PT1udWxsJiYodD0wKSxlPT1udWxsJiYoZT0wKTtmdW5jdGlvbiBpKCl7dmFyIGEscz1yLmxlbmd0aCxvLGw9MCx1PTA7Zm9yKGE9MDthPHM7KythKW89clthXSxsKz1vLngsdSs9by55O2ZvcihsPShsL3MtdCkqbix1PSh1L3MtZSkqbixhPTA7YTxzOysrYSlvPXJbYV0sby54LT1sLG8ueS09dX1yZXR1cm4gaS5pbml0aWFsaXplPWZ1bmN0aW9uKGEpe3I9YX0saS54PWZ1bmN0aW9uKGEpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PSthLGkpOnR9LGkueT1mdW5jdGlvbihhKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0rYSxpKTplfSxpLnN0cmVuZ3RoPWZ1bmN0aW9uKGEpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSthLGkpOm59LGl9ZnVuY3Rpb24geFAodCl7Y29uc3QgZT0rdGhpcy5feC5jYWxsKG51bGwsdCkscj0rdGhpcy5feS5jYWxsKG51bGwsdCk7cmV0dXJuIFZ2KHRoaXMuY292ZXIoZSxyKSxlLHIsdCl9ZnVuY3Rpb24gVnYodCxlLHIsbil7aWYoaXNOYU4oZSl8fGlzTmFOKHIpKXJldHVybiB0O3ZhciBpLGE9dC5fcm9vdCxzPXtkYXRhOm59LG89dC5feDAsbD10Ll95MCx1PXQuX3gxLGg9dC5feTEsZCxmLHAsbSxfLHksYix4O2lmKCFhKXJldHVybiB0Ll9yb290PXMsdDtmb3IoO2EubGVuZ3RoOylpZigoXz1lPj0oZD0obyt1KS8yKSk/bz1kOnU9ZCwoeT1yPj0oZj0obCtoKS8yKSk/bD1mOmg9ZixpPWEsIShhPWFbYj15PDwxfF9dKSlyZXR1cm4gaVtiXT1zLHQ7aWYocD0rdC5feC5jYWxsKG51bGwsYS5kYXRhKSxtPSt0Ll95LmNhbGwobnVsbCxhLmRhdGEpLGU9PT1wJiZyPT09bSlyZXR1cm4gcy5uZXh0PWEsaT9pW2JdPXM6dC5fcm9vdD1zLHQ7ZG8gaT1pP2lbYl09bmV3IEFycmF5KDQpOnQuX3Jvb3Q9bmV3IEFycmF5KDQpLChfPWU+PShkPShvK3UpLzIpKT9vPWQ6dT1kLCh5PXI+PShmPShsK2gpLzIpKT9sPWY6aD1mO3doaWxlKChiPXk8PDF8Xyk9PT0oeD0obT49Zik8PDF8cD49ZCkpO3JldHVybiBpW3hdPWEsaVtiXT1zLHR9ZnVuY3Rpb24ga1AodCl7dmFyIGUscixuPXQubGVuZ3RoLGksYSxzPW5ldyBBcnJheShuKSxvPW5ldyBBcnJheShuKSxsPTEvMCx1PTEvMCxoPS0xLzAsZD0tMS8wO2ZvcihyPTA7cjxuOysrcilpc05hTihpPSt0aGlzLl94LmNhbGwobnVsbCxlPXRbcl0pKXx8aXNOYU4oYT0rdGhpcy5feS5jYWxsKG51bGwsZSkpfHwoc1tyXT1pLG9bcl09YSxpPGwmJihsPWkpLGk+aCYmKGg9aSksYTx1JiYodT1hKSxhPmQmJihkPWEpKTtpZihsPmh8fHU+ZClyZXR1cm4gdGhpcztmb3IodGhpcy5jb3ZlcihsLHUpLmNvdmVyKGgsZCkscj0wO3I8bjsrK3IpVnYodGhpcyxzW3JdLG9bcl0sdFtyXSk7cmV0dXJuIHRoaXN9ZnVuY3Rpb24gd1AodCxlKXtpZihpc05hTih0PSt0KXx8aXNOYU4oZT0rZSkpcmV0dXJuIHRoaXM7dmFyIHI9dGhpcy5feDAsbj10aGlzLl95MCxpPXRoaXMuX3gxLGE9dGhpcy5feTE7aWYoaXNOYU4ocikpaT0ocj1NYXRoLmZsb29yKHQpKSsxLGE9KG49TWF0aC5mbG9vcihlKSkrMTtlbHNle2Zvcih2YXIgcz1pLXJ8fDEsbz10aGlzLl9yb290LGwsdTtyPnR8fHQ+PWl8fG4+ZXx8ZT49YTspc3dpdGNoKHU9KGU8bik8PDF8dDxyLGw9bmV3IEFycmF5KDQpLGxbdV09byxvPWwscyo9Mix1KXtjYXNlIDA6aT1yK3MsYT1uK3M7YnJlYWs7Y2FzZSAxOnI9aS1zLGE9bitzO2JyZWFrO2Nhc2UgMjppPXIrcyxuPWEtczticmVhaztjYXNlIDM6cj1pLXMsbj1hLXM7YnJlYWt9dGhpcy5fcm9vdCYmdGhpcy5fcm9vdC5sZW5ndGgmJih0aGlzLl9yb290PW8pfXJldHVybiB0aGlzLl94MD1yLHRoaXMuX3kwPW4sdGhpcy5feDE9aSx0aGlzLl95MT1hLHRoaXN9ZnVuY3Rpb24gVFAoKXt2YXIgdD1bXTtyZXR1cm4gdGhpcy52aXNpdChmdW5jdGlvbihlKXtpZighZS5sZW5ndGgpZG8gdC5wdXNoKGUuZGF0YSk7d2hpbGUoZT1lLm5leHQpfSksdH1mdW5jdGlvbiBFUCh0KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90aGlzLmNvdmVyKCt0WzBdWzBdLCt0WzBdWzFdKS5jb3ZlcigrdFsxXVswXSwrdFsxXVsxXSk6aXNOYU4odGhpcy5feDApP3ZvaWQgMDpbW3RoaXMuX3gwLHRoaXMuX3kwXSxbdGhpcy5feDEsdGhpcy5feTFdXX1mdW5jdGlvbiBLcih0LGUscixuLGkpe3RoaXMubm9kZT10LHRoaXMueDA9ZSx0aGlzLnkwPXIsdGhpcy54MT1uLHRoaXMueTE9aX1mdW5jdGlvbiBDUCh0LGUscil7dmFyIG4saT10aGlzLl94MCxhPXRoaXMuX3kwLHMsbyxsLHUsaD10aGlzLl94MSxkPXRoaXMuX3kxLGY9W10scD10aGlzLl9yb290LG0sXztmb3IocCYmZi5wdXNoKG5ldyBLcihwLGksYSxoLGQpKSxyPT1udWxsP3I9MS8wOihpPXQtcixhPWUtcixoPXQrcixkPWUrcixyKj1yKTttPWYucG9wKCk7KWlmKCEoIShwPW0ubm9kZSl8fChzPW0ueDApPmh8fChvPW0ueTApPmR8fChsPW0ueDEpPGl8fCh1PW0ueTEpPGEpKWlmKHAubGVuZ3RoKXt2YXIgeT0ocytsKS8yLGI9KG8rdSkvMjtmLnB1c2gobmV3IEtyKHBbM10seSxiLGwsdSksbmV3IEtyKHBbMl0scyxiLHksdSksbmV3IEtyKHBbMV0seSxvLGwsYiksbmV3IEtyKHBbMF0scyxvLHksYikpLChfPShlPj1iKTw8MXx0Pj15KSYmKG09ZltmLmxlbmd0aC0xXSxmW2YubGVuZ3RoLTFdPWZbZi5sZW5ndGgtMS1fXSxmW2YubGVuZ3RoLTEtX109bSl9ZWxzZXt2YXIgeD10LSt0aGlzLl94LmNhbGwobnVsbCxwLmRhdGEpLGs9ZS0rdGhpcy5feS5jYWxsKG51bGwscC5kYXRhKSxUPXgqeCtrKms7aWYoVDxyKXt2YXIgQz1NYXRoLnNxcnQocj1UKTtpPXQtQyxhPWUtQyxoPXQrQyxkPWUrQyxuPXAuZGF0YX19cmV0dXJuIG59ZnVuY3Rpb24gU1AodCl7aWYoaXNOYU4oaD0rdGhpcy5feC5jYWxsKG51bGwsdCkpfHxpc05hTihkPSt0aGlzLl95LmNhbGwobnVsbCx0KSkpcmV0dXJuIHRoaXM7dmFyIGUscj10aGlzLl9yb290LG4saSxhLHM9dGhpcy5feDAsbz10aGlzLl95MCxsPXRoaXMuX3gxLHU9dGhpcy5feTEsaCxkLGYscCxtLF8seSxiO2lmKCFyKXJldHVybiB0aGlzO2lmKHIubGVuZ3RoKWZvcig7Oyl7aWYoKG09aD49KGY9KHMrbCkvMikpP3M9ZjpsPWYsKF89ZD49KHA9KG8rdSkvMikpP289cDp1PXAsZT1yLCEocj1yW3k9Xzw8MXxtXSkpcmV0dXJuIHRoaXM7aWYoIXIubGVuZ3RoKWJyZWFrOyhlW3krMSYzXXx8ZVt5KzImM118fGVbeSszJjNdKSYmKG49ZSxiPXkpfWZvcig7ci5kYXRhIT09dDspaWYoaT1yLCEocj1yLm5leHQpKXJldHVybiB0aGlzO3JldHVybihhPXIubmV4dCkmJmRlbGV0ZSByLm5leHQsaT8oYT9pLm5leHQ9YTpkZWxldGUgaS5uZXh0LHRoaXMpOmU/KGE/ZVt5XT1hOmRlbGV0ZSBlW3ldLChyPWVbMF18fGVbMV18fGVbMl18fGVbM10pJiZyPT09KGVbM118fGVbMl18fGVbMV18fGVbMF0pJiYhci5sZW5ndGgmJihuP25bYl09cjp0aGlzLl9yb290PXIpLHRoaXMpOih0aGlzLl9yb290PWEsdGhpcyl9ZnVuY3Rpb24gQVAodCl7Zm9yKHZhciBlPTAscj10Lmxlbmd0aDtlPHI7KytlKXRoaXMucmVtb3ZlKHRbZV0pO3JldHVybiB0aGlzfWZ1bmN0aW9uIE1QKCl7cmV0dXJuIHRoaXMuX3Jvb3R9ZnVuY3Rpb24gTFAoKXt2YXIgdD0wO3JldHVybiB0aGlzLnZpc2l0KGZ1bmN0aW9uKGUpe2lmKCFlLmxlbmd0aClkbysrdDt3aGlsZShlPWUubmV4dCl9KSx0fWZ1bmN0aW9uIFJQKHQpe3ZhciBlPVtdLHIsbj10aGlzLl9yb290LGksYSxzLG8sbDtmb3IobiYmZS5wdXNoKG5ldyBLcihuLHRoaXMuX3gwLHRoaXMuX3kwLHRoaXMuX3gxLHRoaXMuX3kxKSk7cj1lLnBvcCgpOylpZighdChuPXIubm9kZSxhPXIueDAscz1yLnkwLG89ci54MSxsPXIueTEpJiZuLmxlbmd0aCl7dmFyIHU9KGErbykvMixoPShzK2wpLzI7KGk9blszXSkmJmUucHVzaChuZXcgS3IoaSx1LGgsbyxsKSksKGk9blsyXSkmJmUucHVzaChuZXcgS3IoaSxhLGgsdSxsKSksKGk9blsxXSkmJmUucHVzaChuZXcgS3IoaSx1LHMsbyxoKSksKGk9blswXSkmJmUucHVzaChuZXcgS3IoaSxhLHMsdSxoKSl9cmV0dXJuIHRoaXN9ZnVuY3Rpb24gSVAodCl7dmFyIGU9W10scj1bXSxuO2Zvcih0aGlzLl9yb290JiZlLnB1c2gobmV3IEtyKHRoaXMuX3Jvb3QsdGhpcy5feDAsdGhpcy5feTAsdGhpcy5feDEsdGhpcy5feTEpKTtuPWUucG9wKCk7KXt2YXIgaT1uLm5vZGU7aWYoaS5sZW5ndGgpe3ZhciBhLHM9bi54MCxvPW4ueTAsbD1uLngxLHU9bi55MSxoPShzK2wpLzIsZD0obyt1KS8yOyhhPWlbMF0pJiZlLnB1c2gobmV3IEtyKGEscyxvLGgsZCkpLChhPWlbMV0pJiZlLnB1c2gobmV3IEtyKGEsaCxvLGwsZCkpLChhPWlbMl0pJiZlLnB1c2gobmV3IEtyKGEscyxkLGgsdSkpLChhPWlbM10pJiZlLnB1c2gobmV3IEtyKGEsaCxkLGwsdSkpfXIucHVzaChuKX1mb3IoO249ci5wb3AoKTspdChuLm5vZGUsbi54MCxuLnkwLG4ueDEsbi55MSk7cmV0dXJuIHRoaXN9ZnVuY3Rpb24gTlAodCl7cmV0dXJuIHRbMF19ZnVuY3Rpb24gQlAodCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHRoaXMuX3g9dCx0aGlzKTp0aGlzLl94fWZ1bmN0aW9uIERQKHQpe3JldHVybiB0WzFdfWZ1bmN0aW9uIE9QKHQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0aGlzLl95PXQsdGhpcyk6dGhpcy5feX1mdW5jdGlvbiBmaCh0LGUscil7dmFyIG49bmV3IFFkKGU9PW51bGw/TlA6ZSxyPT1udWxsP0RQOnIsTmFOLE5hTixOYU4sTmFOKTtyZXR1cm4gdD09bnVsbD9uOm4uYWRkQWxsKHQpfWZ1bmN0aW9uIFFkKHQsZSxyLG4saSxhKXt0aGlzLl94PXQsdGhpcy5feT1lLHRoaXMuX3gwPXIsdGhpcy5feTA9bix0aGlzLl94MT1pLHRoaXMuX3kxPWEsdGhpcy5fcm9vdD12b2lkIDB9ZnVuY3Rpb24genYodCl7Zm9yKHZhciBlPXtkYXRhOnQuZGF0YX0scj1lO3Q9dC5uZXh0OylyPXIubmV4dD17ZGF0YTp0LmRhdGF9O3JldHVybiBlfXZhciBacj1maC5wcm90b3R5cGU9UWQucHJvdG90eXBlO1pyLmNvcHk9ZnVuY3Rpb24oKXt2YXIgdD1uZXcgUWQodGhpcy5feCx0aGlzLl95LHRoaXMuX3gwLHRoaXMuX3kwLHRoaXMuX3gxLHRoaXMuX3kxKSxlPXRoaXMuX3Jvb3QscixuO2lmKCFlKXJldHVybiB0O2lmKCFlLmxlbmd0aClyZXR1cm4gdC5fcm9vdD16dihlKSx0O2ZvcihyPVt7c291cmNlOmUsdGFyZ2V0OnQuX3Jvb3Q9bmV3IEFycmF5KDQpfV07ZT1yLnBvcCgpOylmb3IodmFyIGk9MDtpPDQ7KytpKShuPWUuc291cmNlW2ldKSYmKG4ubGVuZ3RoP3IucHVzaCh7c291cmNlOm4sdGFyZ2V0OmUudGFyZ2V0W2ldPW5ldyBBcnJheSg0KX0pOmUudGFyZ2V0W2ldPXp2KG4pKTtyZXR1cm4gdH0sWnIuYWRkPXhQLFpyLmFkZEFsbD1rUCxaci5jb3Zlcj13UCxaci5kYXRhPVRQLFpyLmV4dGVudD1FUCxaci5maW5kPUNQLFpyLnJlbW92ZT1TUCxaci5yZW1vdmVBbGw9QVAsWnIucm9vdD1NUCxaci5zaXplPUxQLFpyLnZpc2l0PVJQLFpyLnZpc2l0QWZ0ZXI9SVAsWnIueD1CUCxaci55PU9QO2Z1bmN0aW9uIHZyKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiBOYSh0KXtyZXR1cm4odCgpLS41KSoxZS02fWZ1bmN0aW9uIEZQKHQpe3JldHVybiB0LngrdC52eH1mdW5jdGlvbiBQUCh0KXtyZXR1cm4gdC55K3Qudnl9ZnVuY3Rpb24gcVAodCl7dmFyIGUscixuLGk9MSxhPTE7dHlwZW9mIHQhPSJmdW5jdGlvbiImJih0PXZyKHQ9PW51bGw/MTordCkpO2Z1bmN0aW9uIHMoKXtmb3IodmFyIHUsaD1lLmxlbmd0aCxkLGYscCxtLF8seSxiPTA7YjxhOysrYilmb3IoZD1maChlLEZQLFBQKS52aXNpdEFmdGVyKG8pLHU9MDt1PGg7Kyt1KWY9ZVt1XSxfPXJbZi5pbmRleF0seT1fKl8scD1mLngrZi52eCxtPWYueStmLnZ5LGQudmlzaXQoeCk7ZnVuY3Rpb24geChrLFQsQyxNLFMpe3ZhciBSPWsuZGF0YSxBPWsucixMPV8rQTtpZihSKXtpZihSLmluZGV4PmYuaW5kZXgpe3ZhciB2PXAtUi54LVIudngsQj1tLVIueS1SLnZ5LHc9dip2K0IqQjt3PEwqTCYmKHY9PT0wJiYodj1OYShuKSx3Kz12KnYpLEI9PT0wJiYoQj1OYShuKSx3Kz1CKkIpLHc9KEwtKHc9TWF0aC5zcXJ0KHcpKSkvdyppLGYudngrPSh2Kj13KSooTD0oQSo9QSkvKHkrQSkpLGYudnkrPShCKj13KSpMLFIudngtPXYqKEw9MS1MKSxSLnZ5LT1CKkwpfXJldHVybn1yZXR1cm4gVD5wK0x8fE08cC1MfHxDPm0rTHx8UzxtLUx9fWZ1bmN0aW9uIG8odSl7aWYodS5kYXRhKXJldHVybiB1LnI9clt1LmRhdGEuaW5kZXhdO2Zvcih2YXIgaD11LnI9MDtoPDQ7KytoKXVbaF0mJnVbaF0ucj51LnImJih1LnI9dVtoXS5yKX1mdW5jdGlvbiBsKCl7aWYoISFlKXt2YXIgdSxoPWUubGVuZ3RoLGQ7Zm9yKHI9bmV3IEFycmF5KGgpLHU9MDt1PGg7Kyt1KWQ9ZVt1XSxyW2QuaW5kZXhdPSt0KGQsdSxlKX19cmV0dXJuIHMuaW5pdGlhbGl6ZT1mdW5jdGlvbih1LGgpe2U9dSxuPWgsbCgpfSxzLml0ZXJhdGlvbnM9ZnVuY3Rpb24odSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9K3Uscyk6YX0scy5zdHJlbmd0aD1mdW5jdGlvbih1KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0rdSxzKTppfSxzLnJhZGl1cz1mdW5jdGlvbih1KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD10eXBlb2YgdT09ImZ1bmN0aW9uIj91OnZyKCt1KSxsKCkscyk6dH0sc31mdW5jdGlvbiBWUCh0KXtyZXR1cm4gdC5pbmRleH1mdW5jdGlvbiBZdih0LGUpe3ZhciByPXQuZ2V0KGUpO2lmKCFyKXRocm93IG5ldyBFcnJvcigibm9kZSBub3QgZm91bmQ6ICIrZSk7cmV0dXJuIHJ9ZnVuY3Rpb24gelAodCl7dmFyIGU9VlAscj1kLG4saT12cigzMCksYSxzLG8sbCx1LGg9MTt0PT1udWxsJiYodD1bXSk7ZnVuY3Rpb24gZCh5KXtyZXR1cm4gMS9NYXRoLm1pbihvW3kuc291cmNlLmluZGV4XSxvW3kudGFyZ2V0LmluZGV4XSl9ZnVuY3Rpb24gZih5KXtmb3IodmFyIGI9MCx4PXQubGVuZ3RoO2I8aDsrK2IpZm9yKHZhciBrPTAsVCxDLE0sUyxSLEEsTDtrPHg7KytrKVQ9dFtrXSxDPVQuc291cmNlLE09VC50YXJnZXQsUz1NLngrTS52eC1DLngtQy52eHx8TmEodSksUj1NLnkrTS52eS1DLnktQy52eXx8TmEodSksQT1NYXRoLnNxcnQoUypTK1IqUiksQT0oQS1hW2tdKS9BKnkqbltrXSxTKj1BLFIqPUEsTS52eC09UyooTD1sW2tdKSxNLnZ5LT1SKkwsQy52eCs9UyooTD0xLUwpLEMudnkrPVIqTH1mdW5jdGlvbiBwKCl7aWYoISFzKXt2YXIgeSxiPXMubGVuZ3RoLHg9dC5sZW5ndGgsaz1uZXcgTWFwKHMubWFwKChDLE0pPT5bZShDLE0scyksQ10pKSxUO2Zvcih5PTAsbz1uZXcgQXJyYXkoYik7eTx4OysreSlUPXRbeV0sVC5pbmRleD15LHR5cGVvZiBULnNvdXJjZSE9Im9iamVjdCImJihULnNvdXJjZT1ZdihrLFQuc291cmNlKSksdHlwZW9mIFQudGFyZ2V0IT0ib2JqZWN0IiYmKFQudGFyZ2V0PVl2KGssVC50YXJnZXQpKSxvW1Quc291cmNlLmluZGV4XT0ob1tULnNvdXJjZS5pbmRleF18fDApKzEsb1tULnRhcmdldC5pbmRleF09KG9bVC50YXJnZXQuaW5kZXhdfHwwKSsxO2Zvcih5PTAsbD1uZXcgQXJyYXkoeCk7eTx4OysreSlUPXRbeV0sbFt5XT1vW1Quc291cmNlLmluZGV4XS8ob1tULnNvdXJjZS5pbmRleF0rb1tULnRhcmdldC5pbmRleF0pO249bmV3IEFycmF5KHgpLG0oKSxhPW5ldyBBcnJheSh4KSxfKCl9fWZ1bmN0aW9uIG0oKXtpZighIXMpZm9yKHZhciB5PTAsYj10Lmxlbmd0aDt5PGI7Kyt5KW5beV09K3IodFt5XSx5LHQpfWZ1bmN0aW9uIF8oKXtpZighIXMpZm9yKHZhciB5PTAsYj10Lmxlbmd0aDt5PGI7Kyt5KWFbeV09K2kodFt5XSx5LHQpfXJldHVybiBmLmluaXRpYWxpemU9ZnVuY3Rpb24oeSxiKXtzPXksdT1iLHAoKX0sZi5saW5rcz1mdW5jdGlvbih5KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD15LHAoKSxmKTp0fSxmLmlkPWZ1bmN0aW9uKHkpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXksZik6ZX0sZi5pdGVyYXRpb25zPWZ1bmN0aW9uKHkpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPSt5LGYpOmh9LGYuc3RyZW5ndGg9ZnVuY3Rpb24oeSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dHlwZW9mIHk9PSJmdW5jdGlvbiI/eTp2cigreSksbSgpLGYpOnJ9LGYuZGlzdGFuY2U9ZnVuY3Rpb24oeSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9dHlwZW9mIHk9PSJmdW5jdGlvbiI/eTp2cigreSksXygpLGYpOml9LGZ9Y29uc3QgWVA9MTY2NDUyNSxVUD0xMDEzOTA0MjIzLFV2PTQyOTQ5NjcyOTY7ZnVuY3Rpb24gV1AoKXtsZXQgdD0xO3JldHVybigpPT4odD0oWVAqdCtVUCklVXYpL1V2fWZ1bmN0aW9uIEhQKHQpe3JldHVybiB0Lnh9ZnVuY3Rpb24gR1AodCl7cmV0dXJuIHQueX12YXIgalA9MTAsJFA9TWF0aC5QSSooMy1NYXRoLnNxcnQoNSkpO2Z1bmN0aW9uIFhQKHQpe3ZhciBlLHI9MSxuPS4wMDEsaT0xLU1hdGgucG93KG4sMS8zMDApLGE9MCxzPS42LG89bmV3IE1hcCxsPUp1KGQpLHU9ZnMoInRpY2siLCJlbmQiKSxoPVdQKCk7dD09bnVsbCYmKHQ9W10pO2Z1bmN0aW9uIGQoKXtmKCksdS5jYWxsKCJ0aWNrIixlKSxyPG4mJihsLnN0b3AoKSx1LmNhbGwoImVuZCIsZSkpfWZ1bmN0aW9uIGYoXyl7dmFyIHksYj10Lmxlbmd0aCx4O189PT12b2lkIDAmJihfPTEpO2Zvcih2YXIgaz0wO2s8XzsrK2spZm9yKHIrPShhLXIpKmksby5mb3JFYWNoKGZ1bmN0aW9uKFQpe1Qocil9KSx5PTA7eTxiOysreSl4PXRbeV0seC5meD09bnVsbD94LngrPXgudngqPXM6KHgueD14LmZ4LHgudng9MCkseC5meT09bnVsbD94LnkrPXgudnkqPXM6KHgueT14LmZ5LHgudnk9MCk7cmV0dXJuIGV9ZnVuY3Rpb24gcCgpe2Zvcih2YXIgXz0wLHk9dC5sZW5ndGgsYjtfPHk7KytfKXtpZihiPXRbX10sYi5pbmRleD1fLGIuZnghPW51bGwmJihiLng9Yi5meCksYi5meSE9bnVsbCYmKGIueT1iLmZ5KSxpc05hTihiLngpfHxpc05hTihiLnkpKXt2YXIgeD1qUCpNYXRoLnNxcnQoLjUrXyksaz1fKiRQO2IueD14Kk1hdGguY29zKGspLGIueT14Kk1hdGguc2luKGspfShpc05hTihiLnZ4KXx8aXNOYU4oYi52eSkpJiYoYi52eD1iLnZ5PTApfX1mdW5jdGlvbiBtKF8pe3JldHVybiBfLmluaXRpYWxpemUmJl8uaW5pdGlhbGl6ZSh0LGgpLF99cmV0dXJuIHAoKSxlPXt0aWNrOmYscmVzdGFydDpmdW5jdGlvbigpe3JldHVybiBsLnJlc3RhcnQoZCksZX0sc3RvcDpmdW5jdGlvbigpe3JldHVybiBsLnN0b3AoKSxlfSxub2RlczpmdW5jdGlvbihfKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1fLHAoKSxvLmZvckVhY2gobSksZSk6dH0sYWxwaGE6ZnVuY3Rpb24oXyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9K18sZSk6cn0sYWxwaGFNaW46ZnVuY3Rpb24oXyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49K18sZSk6bn0sYWxwaGFEZWNheTpmdW5jdGlvbihfKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT0rXyxlKToraX0sYWxwaGFUYXJnZXQ6ZnVuY3Rpb24oXyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9K18sZSk6YX0sdmVsb2NpdHlEZWNheTpmdW5jdGlvbihfKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz0xLV8sZSk6MS1zfSxyYW5kb21Tb3VyY2U6ZnVuY3Rpb24oXyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9XyxvLmZvckVhY2gobSksZSk6aH0sZm9yY2U6ZnVuY3Rpb24oXyx5KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xPyh5PT1udWxsP28uZGVsZXRlKF8pOm8uc2V0KF8sbSh5KSksZSk6by5nZXQoXyl9LGZpbmQ6ZnVuY3Rpb24oXyx5LGIpe3ZhciB4PTAsaz10Lmxlbmd0aCxULEMsTSxTLFI7Zm9yKGI9PW51bGw/Yj0xLzA6Yio9Yix4PTA7eDxrOysreClTPXRbeF0sVD1fLVMueCxDPXktUy55LE09VCpUK0MqQyxNPGImJihSPVMsYj1NKTtyZXR1cm4gUn0sb246ZnVuY3Rpb24oXyx5KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD4xPyh1Lm9uKF8seSksZSk6dS5vbihfKX19fWZ1bmN0aW9uIEtQKCl7dmFyIHQsZSxyLG4saT12cigtMzApLGEscz0xLG89MS8wLGw9LjgxO2Z1bmN0aW9uIHUocCl7dmFyIG0sXz10Lmxlbmd0aCx5PWZoKHQsSFAsR1ApLnZpc2l0QWZ0ZXIoZCk7Zm9yKG49cCxtPTA7bTxfOysrbSllPXRbbV0seS52aXNpdChmKX1mdW5jdGlvbiBoKCl7aWYoISF0KXt2YXIgcCxtPXQubGVuZ3RoLF87Zm9yKGE9bmV3IEFycmF5KG0pLHA9MDtwPG07KytwKV89dFtwXSxhW18uaW5kZXhdPStpKF8scCx0KX19ZnVuY3Rpb24gZChwKXt2YXIgbT0wLF8seSxiPTAseCxrLFQ7aWYocC5sZW5ndGgpe2Zvcih4PWs9VD0wO1Q8NDsrK1QpKF89cFtUXSkmJih5PU1hdGguYWJzKF8udmFsdWUpKSYmKG0rPV8udmFsdWUsYis9eSx4Kz15Kl8ueCxrKz15Kl8ueSk7cC54PXgvYixwLnk9ay9ifWVsc2V7Xz1wLF8ueD1fLmRhdGEueCxfLnk9Xy5kYXRhLnk7ZG8gbSs9YVtfLmRhdGEuaW5kZXhdO3doaWxlKF89Xy5uZXh0KX1wLnZhbHVlPW19ZnVuY3Rpb24gZihwLG0sXyx5KXtpZighcC52YWx1ZSlyZXR1cm4hMDt2YXIgYj1wLngtZS54LHg9cC55LWUueSxrPXktbSxUPWIqYit4Kng7aWYoayprL2w8VClyZXR1cm4gVDxvJiYoYj09PTAmJihiPU5hKHIpLFQrPWIqYikseD09PTAmJih4PU5hKHIpLFQrPXgqeCksVDxzJiYoVD1NYXRoLnNxcnQocypUKSksZS52eCs9YipwLnZhbHVlKm4vVCxlLnZ5Kz14KnAudmFsdWUqbi9UKSwhMDtpZihwLmxlbmd0aHx8VD49bylyZXR1cm47KHAuZGF0YSE9PWV8fHAubmV4dCkmJihiPT09MCYmKGI9TmEociksVCs9YipiKSx4PT09MCYmKHg9TmEociksVCs9eCp4KSxUPHMmJihUPU1hdGguc3FydChzKlQpKSk7ZG8gcC5kYXRhIT09ZSYmKGs9YVtwLmRhdGEuaW5kZXhdKm4vVCxlLnZ4Kz1iKmssZS52eSs9eCprKTt3aGlsZShwPXAubmV4dCl9cmV0dXJuIHUuaW5pdGlhbGl6ZT1mdW5jdGlvbihwLG0pe3Q9cCxyPW0saCgpfSx1LnN0cmVuZ3RoPWZ1bmN0aW9uKHApe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPXR5cGVvZiBwPT0iZnVuY3Rpb24iP3A6dnIoK3ApLGgoKSx1KTppfSx1LmRpc3RhbmNlTWluPWZ1bmN0aW9uKHApe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPXAqcCx1KTpNYXRoLnNxcnQocyl9LHUuZGlzdGFuY2VNYXg9ZnVuY3Rpb24ocCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89cCpwLHUpOk1hdGguc3FydChvKX0sdS50aGV0YT1mdW5jdGlvbihwKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD1wKnAsdSk6TWF0aC5zcXJ0KGwpfSx1fWZ1bmN0aW9uIFpQKHQsZSxyKXt2YXIgbixpPXZyKC4xKSxhLHM7dHlwZW9mIHQhPSJmdW5jdGlvbiImJih0PXZyKCt0KSksZT09bnVsbCYmKGU9MCkscj09bnVsbCYmKHI9MCk7ZnVuY3Rpb24gbyh1KXtmb3IodmFyIGg9MCxkPW4ubGVuZ3RoO2g8ZDsrK2gpe3ZhciBmPW5baF0scD1mLngtZXx8MWUtNixtPWYueS1yfHwxZS02LF89TWF0aC5zcXJ0KHAqcCttKm0pLHk9KHNbaF0tXykqYVtoXSp1L187Zi52eCs9cCp5LGYudnkrPW0qeX19ZnVuY3Rpb24gbCgpe2lmKCEhbil7dmFyIHUsaD1uLmxlbmd0aDtmb3IoYT1uZXcgQXJyYXkoaCkscz1uZXcgQXJyYXkoaCksdT0wO3U8aDsrK3Upc1t1XT0rdChuW3VdLHUsbiksYVt1XT1pc05hTihzW3VdKT8wOitpKG5bdV0sdSxuKX19cmV0dXJuIG8uaW5pdGlhbGl6ZT1mdW5jdGlvbih1KXtuPXUsbCgpfSxvLnN0cmVuZ3RoPWZ1bmN0aW9uKHUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPXR5cGVvZiB1PT0iZnVuY3Rpb24iP3U6dnIoK3UpLGwoKSxvKTppfSxvLnJhZGl1cz1mdW5jdGlvbih1KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD10eXBlb2YgdT09ImZ1bmN0aW9uIj91OnZyKCt1KSxsKCksbyk6dH0sby54PWZ1bmN0aW9uKHUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSt1LG8pOmV9LG8ueT1mdW5jdGlvbih1KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0rdSxvKTpyfSxvfWZ1bmN0aW9uIFFQKHQpe3ZhciBlPXZyKC4xKSxyLG4saTt0eXBlb2YgdCE9ImZ1bmN0aW9uIiYmKHQ9dnIodD09bnVsbD8wOit0KSk7ZnVuY3Rpb24gYShvKXtmb3IodmFyIGw9MCx1PXIubGVuZ3RoLGg7bDx1OysrbCloPXJbbF0saC52eCs9KGlbbF0taC54KSpuW2xdKm99ZnVuY3Rpb24gcygpe2lmKCEhcil7dmFyIG8sbD1yLmxlbmd0aDtmb3Iobj1uZXcgQXJyYXkobCksaT1uZXcgQXJyYXkobCksbz0wO288bDsrK28pbltvXT1pc05hTihpW29dPSt0KHJbb10sbyxyKSk/MDorZShyW29dLG8scil9fXJldHVybiBhLmluaXRpYWxpemU9ZnVuY3Rpb24obyl7cj1vLHMoKX0sYS5zdHJlbmd0aD1mdW5jdGlvbihvKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10eXBlb2Ygbz09ImZ1bmN0aW9uIj9vOnZyKCtvKSxzKCksYSk6ZX0sYS54PWZ1bmN0aW9uKG8pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PXR5cGVvZiBvPT0iZnVuY3Rpb24iP286dnIoK28pLHMoKSxhKTp0fSxhfWZ1bmN0aW9uIEpQKHQpe3ZhciBlPXZyKC4xKSxyLG4saTt0eXBlb2YgdCE9ImZ1bmN0aW9uIiYmKHQ9dnIodD09bnVsbD8wOit0KSk7ZnVuY3Rpb24gYShvKXtmb3IodmFyIGw9MCx1PXIubGVuZ3RoLGg7bDx1OysrbCloPXJbbF0saC52eSs9KGlbbF0taC55KSpuW2xdKm99ZnVuY3Rpb24gcygpe2lmKCEhcil7dmFyIG8sbD1yLmxlbmd0aDtmb3Iobj1uZXcgQXJyYXkobCksaT1uZXcgQXJyYXkobCksbz0wO288bDsrK28pbltvXT1pc05hTihpW29dPSt0KHJbb10sbyxyKSk/MDorZShyW29dLG8scil9fXJldHVybiBhLmluaXRpYWxpemU9ZnVuY3Rpb24obyl7cj1vLHMoKX0sYS5zdHJlbmd0aD1mdW5jdGlvbihvKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10eXBlb2Ygbz09ImZ1bmN0aW9uIj9vOnZyKCtvKSxzKCksYSk6ZX0sYS55PWZ1bmN0aW9uKG8pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PXR5cGVvZiBvPT0iZnVuY3Rpb24iP286dnIoK28pLHMoKSxhKTp0fSxhfWZ1bmN0aW9uIHRxKHQpe3JldHVybiBNYXRoLmFicyh0PU1hdGgucm91bmQodCkpPj0xZTIxP3QudG9Mb2NhbGVTdHJpbmcoImVuIikucmVwbGFjZSgvLC9nLCIiKTp0LnRvU3RyaW5nKDEwKX1mdW5jdGlvbiBkaCh0LGUpe2lmKChyPSh0PWU/dC50b0V4cG9uZW50aWFsKGUtMSk6dC50b0V4cG9uZW50aWFsKCkpLmluZGV4T2YoImUiKSk8MClyZXR1cm4gbnVsbDt2YXIgcixuPXQuc2xpY2UoMCxyKTtyZXR1cm5bbi5sZW5ndGg+MT9uWzBdK24uc2xpY2UoMik6biwrdC5zbGljZShyKzEpXX1mdW5jdGlvbiBFbyh0KXtyZXR1cm4gdD1kaChNYXRoLmFicyh0KSksdD90WzFdOk5hTn1mdW5jdGlvbiBlcSh0LGUpe3JldHVybiBmdW5jdGlvbihyLG4pe2Zvcih2YXIgaT1yLmxlbmd0aCxhPVtdLHM9MCxvPXRbMF0sbD0wO2k+MCYmbz4wJiYobCtvKzE+biYmKG89TWF0aC5tYXgoMSxuLWwpKSxhLnB1c2goci5zdWJzdHJpbmcoaS09byxpK28pKSwhKChsKz1vKzEpPm4pKTspbz10W3M9KHMrMSkldC5sZW5ndGhdO3JldHVybiBhLnJldmVyc2UoKS5qb2luKGUpfX1mdW5jdGlvbiBycSh0KXtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvWzAtOV0vZyxmdW5jdGlvbihyKXtyZXR1cm4gdFsrcl19KX19dmFyIG5xPS9eKD86KC4pPyhbPD49Xl0pKT8oWytcLSggXSk/KFskI10pPygwKT8oXGQrKT8oLCk/KFwuXGQrKT8ofik/KFthLXolXSk/JC9pO2Z1bmN0aW9uIENvKHQpe2lmKCEoZT1ucS5leGVjKHQpKSl0aHJvdyBuZXcgRXJyb3IoImludmFsaWQgZm9ybWF0OiAiK3QpO3ZhciBlO3JldHVybiBuZXcgcGgoe2ZpbGw6ZVsxXSxhbGlnbjplWzJdLHNpZ246ZVszXSxzeW1ib2w6ZVs0XSx6ZXJvOmVbNV0sd2lkdGg6ZVs2XSxjb21tYTplWzddLHByZWNpc2lvbjplWzhdJiZlWzhdLnNsaWNlKDEpLHRyaW06ZVs5XSx0eXBlOmVbMTBdfSl9Q28ucHJvdG90eXBlPXBoLnByb3RvdHlwZTtmdW5jdGlvbiBwaCh0KXt0aGlzLmZpbGw9dC5maWxsPT09dm9pZCAwPyIgIjp0LmZpbGwrIiIsdGhpcy5hbGlnbj10LmFsaWduPT09dm9pZCAwPyI+Ijp0LmFsaWduKyIiLHRoaXMuc2lnbj10LnNpZ249PT12b2lkIDA/Ii0iOnQuc2lnbisiIix0aGlzLnN5bWJvbD10LnN5bWJvbD09PXZvaWQgMD8iIjp0LnN5bWJvbCsiIix0aGlzLnplcm89ISF0Lnplcm8sdGhpcy53aWR0aD10LndpZHRoPT09dm9pZCAwP3ZvaWQgMDordC53aWR0aCx0aGlzLmNvbW1hPSEhdC5jb21tYSx0aGlzLnByZWNpc2lvbj10LnByZWNpc2lvbj09PXZvaWQgMD92b2lkIDA6K3QucHJlY2lzaW9uLHRoaXMudHJpbT0hIXQudHJpbSx0aGlzLnR5cGU9dC50eXBlPT09dm9pZCAwPyIiOnQudHlwZSsiIn1waC5wcm90b3R5cGUudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5maWxsK3RoaXMuYWxpZ24rdGhpcy5zaWduK3RoaXMuc3ltYm9sKyh0aGlzLnplcm8/IjAiOiIiKSsodGhpcy53aWR0aD09PXZvaWQgMD8iIjpNYXRoLm1heCgxLHRoaXMud2lkdGh8MCkpKyh0aGlzLmNvbW1hPyIsIjoiIikrKHRoaXMucHJlY2lzaW9uPT09dm9pZCAwPyIiOiIuIitNYXRoLm1heCgwLHRoaXMucHJlY2lzaW9ufDApKSsodGhpcy50cmltPyJ+IjoiIikrdGhpcy50eXBlfTtmdW5jdGlvbiBpcSh0KXt0OmZvcih2YXIgZT10Lmxlbmd0aCxyPTEsbj0tMSxpO3I8ZTsrK3Ipc3dpdGNoKHRbcl0pe2Nhc2UiLiI6bj1pPXI7YnJlYWs7Y2FzZSIwIjpuPT09MCYmKG49ciksaT1yO2JyZWFrO2RlZmF1bHQ6aWYoISt0W3JdKWJyZWFrIHQ7bj4wJiYobj0wKTticmVha31yZXR1cm4gbj4wP3Quc2xpY2UoMCxuKSt0LnNsaWNlKGkrMSk6dH12YXIgV3Y7ZnVuY3Rpb24gYXEodCxlKXt2YXIgcj1kaCh0LGUpO2lmKCFyKXJldHVybiB0KyIiO3ZhciBuPXJbMF0saT1yWzFdLGE9aS0oV3Y9TWF0aC5tYXgoLTgsTWF0aC5taW4oOCxNYXRoLmZsb29yKGkvMykpKSozKSsxLHM9bi5sZW5ndGg7cmV0dXJuIGE9PT1zP246YT5zP24rbmV3IEFycmF5KGEtcysxKS5qb2luKCIwIik6YT4wP24uc2xpY2UoMCxhKSsiLiIrbi5zbGljZShhKToiMC4iK25ldyBBcnJheSgxLWEpLmpvaW4oIjAiKStkaCh0LE1hdGgubWF4KDAsZSthLTEpKVswXX1mdW5jdGlvbiBIdih0LGUpe3ZhciByPWRoKHQsZSk7aWYoIXIpcmV0dXJuIHQrIiI7dmFyIG49clswXSxpPXJbMV07cmV0dXJuIGk8MD8iMC4iK25ldyBBcnJheSgtaSkuam9pbigiMCIpK246bi5sZW5ndGg+aSsxP24uc2xpY2UoMCxpKzEpKyIuIituLnNsaWNlKGkrMSk6bituZXcgQXJyYXkoaS1uLmxlbmd0aCsyKS5qb2luKCIwIil9Y29uc3QgR3Y9eyIlIjoodCxlKT0+KHQqMTAwKS50b0ZpeGVkKGUpLGI6dD0+TWF0aC5yb3VuZCh0KS50b1N0cmluZygyKSxjOnQ9PnQrIiIsZDp0cSxlOih0LGUpPT50LnRvRXhwb25lbnRpYWwoZSksZjoodCxlKT0+dC50b0ZpeGVkKGUpLGc6KHQsZSk9PnQudG9QcmVjaXNpb24oZSksbzp0PT5NYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDgpLHA6KHQsZSk9Pkh2KHQqMTAwLGUpLHI6SHYsczphcSxYOnQ9Pk1hdGgucm91bmQodCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCkseDp0PT5NYXRoLnJvdW5kKHQpLnRvU3RyaW5nKDE2KX07ZnVuY3Rpb24ganYodCl7cmV0dXJuIHR9dmFyICR2PUFycmF5LnByb3RvdHlwZS5tYXAsWHY9WyJ5IiwieiIsImEiLCJmIiwicCIsIm4iLCJceEI1IiwibSIsIiIsImsiLCJNIiwiRyIsIlQiLCJQIiwiRSIsIloiLCJZIl07ZnVuY3Rpb24gS3YodCl7dmFyIGU9dC5ncm91cGluZz09PXZvaWQgMHx8dC50aG91c2FuZHM9PT12b2lkIDA/anY6ZXEoJHYuY2FsbCh0Lmdyb3VwaW5nLE51bWJlciksdC50aG91c2FuZHMrIiIpLHI9dC5jdXJyZW5jeT09PXZvaWQgMD8iIjp0LmN1cnJlbmN5WzBdKyIiLG49dC5jdXJyZW5jeT09PXZvaWQgMD8iIjp0LmN1cnJlbmN5WzFdKyIiLGk9dC5kZWNpbWFsPT09dm9pZCAwPyIuIjp0LmRlY2ltYWwrIiIsYT10Lm51bWVyYWxzPT09dm9pZCAwP2p2OnJxKCR2LmNhbGwodC5udW1lcmFscyxTdHJpbmcpKSxzPXQucGVyY2VudD09PXZvaWQgMD8iJSI6dC5wZXJjZW50KyIiLG89dC5taW51cz09PXZvaWQgMD8iXHUyMjEyIjp0Lm1pbnVzKyIiLGw9dC5uYW49PT12b2lkIDA/Ik5hTiI6dC5uYW4rIiI7ZnVuY3Rpb24gdShkKXtkPUNvKGQpO3ZhciBmPWQuZmlsbCxwPWQuYWxpZ24sbT1kLnNpZ24sXz1kLnN5bWJvbCx5PWQuemVybyxiPWQud2lkdGgseD1kLmNvbW1hLGs9ZC5wcmVjaXNpb24sVD1kLnRyaW0sQz1kLnR5cGU7Qz09PSJuIj8oeD0hMCxDPSJnIik6R3ZbQ118fChrPT09dm9pZCAwJiYoaz0xMiksVD0hMCxDPSJnIiksKHl8fGY9PT0iMCImJnA9PT0iPSIpJiYoeT0hMCxmPSIwIixwPSI9Iik7dmFyIE09Xz09PSIkIj9yOl89PT0iIyImJi9bYm94WF0vLnRlc3QoQyk/IjAiK0MudG9Mb3dlckNhc2UoKToiIixTPV89PT0iJCI/bjovWyVwXS8udGVzdChDKT9zOiIiLFI9R3ZbQ10sQT0vW2RlZmdwcnMlXS8udGVzdChDKTtrPWs9PT12b2lkIDA/NjovW2dwcnNdLy50ZXN0KEMpP01hdGgubWF4KDEsTWF0aC5taW4oMjEsaykpOk1hdGgubWF4KDAsTWF0aC5taW4oMjAsaykpO2Z1bmN0aW9uIEwodil7dmFyIEI9TSx3PVMsRCxOLHo7aWYoQz09PSJjIil3PVIodikrdyx2PSIiO2Vsc2V7dj0rdjt2YXIgWD12PDB8fDEvdjwwO2lmKHY9aXNOYU4odik/bDpSKE1hdGguYWJzKHYpLGspLFQmJih2PWlxKHYpKSxYJiYrdj09MCYmbSE9PSIrIiYmKFg9ITEpLEI9KFg/bT09PSIoIj9tOm86bT09PSItInx8bT09PSIoIj8iIjptKStCLHc9KEM9PT0icyI/WHZbOCtXdi8zXToiIikrdysoWCYmbT09PSIoIj8iKSI6IiIpLEEpe2ZvcihEPS0xLE49di5sZW5ndGg7KytEPE47KWlmKHo9di5jaGFyQ29kZUF0KEQpLDQ4Pnp8fHo+NTcpe3c9KHo9PT00Nj9pK3Yuc2xpY2UoRCsxKTp2LnNsaWNlKEQpKSt3LHY9di5zbGljZSgwLEQpO2JyZWFrfX19eCYmIXkmJih2PWUodiwxLzApKTt2YXIgY3Q9Qi5sZW5ndGgrdi5sZW5ndGgrdy5sZW5ndGgsSj1jdDxiP25ldyBBcnJheShiLWN0KzEpLmpvaW4oZik6IiI7c3dpdGNoKHgmJnkmJih2PWUoSit2LEoubGVuZ3RoP2Itdy5sZW5ndGg6MS8wKSxKPSIiKSxwKXtjYXNlIjwiOnY9Qit2K3crSjticmVhaztjYXNlIj0iOnY9QitKK3YrdzticmVhaztjYXNlIl4iOnY9Si5zbGljZSgwLGN0PUoubGVuZ3RoPj4xKStCK3YrdytKLnNsaWNlKGN0KTticmVhaztkZWZhdWx0OnY9SitCK3YrdzticmVha31yZXR1cm4gYSh2KX1yZXR1cm4gTC50b1N0cmluZz1mdW5jdGlvbigpe3JldHVybiBkKyIifSxMfWZ1bmN0aW9uIGgoZCxmKXt2YXIgcD11KChkPUNvKGQpLGQudHlwZT0iZiIsZCkpLG09TWF0aC5tYXgoLTgsTWF0aC5taW4oOCxNYXRoLmZsb29yKEVvKGYpLzMpKSkqMyxfPU1hdGgucG93KDEwLC1tKSx5PVh2WzgrbS8zXTtyZXR1cm4gZnVuY3Rpb24oYil7cmV0dXJuIHAoXypiKSt5fX1yZXR1cm57Zm9ybWF0OnUsZm9ybWF0UHJlZml4Omh9fXZhciBnaCx5aCxKZDtadih7dGhvdXNhbmRzOiIsIixncm91cGluZzpbM10sY3VycmVuY3k6WyIkIiwiIl19KTtmdW5jdGlvbiBadih0KXtyZXR1cm4gZ2g9S3YodCkseWg9Z2guZm9ybWF0LEpkPWdoLmZvcm1hdFByZWZpeCxnaH1mdW5jdGlvbiBRdih0KXtyZXR1cm4gTWF0aC5tYXgoMCwtRW8oTWF0aC5hYnModCkpKX1mdW5jdGlvbiBKdih0LGUpe3JldHVybiBNYXRoLm1heCgwLE1hdGgubWF4KC04LE1hdGgubWluKDgsTWF0aC5mbG9vcihFbyhlKS8zKSkpKjMtRW8oTWF0aC5hYnModCkpKX1mdW5jdGlvbiB0Nih0LGUpe3JldHVybiB0PU1hdGguYWJzKHQpLGU9TWF0aC5hYnMoZSktdCxNYXRoLm1heCgwLEVvKGUpLUVvKHQpKSsxfXZhciB0ZT0xZS02LEhsPTFlLTEyLEFlPU1hdGguUEkscnI9QWUvMixtaD1BZS80LFFyPUFlKjIsVWU9MTgwL0FlLHJlPUFlLzE4MCxOZT1NYXRoLmFicyxTbz1NYXRoLmF0YW4sSnI9TWF0aC5hdGFuMixLdD1NYXRoLmNvcyxiaD1NYXRoLmNlaWwsZTY9TWF0aC5leHAsdDI9TWF0aC5oeXBvdCxfaD1NYXRoLmxvZyxlMj1NYXRoLnBvdyxIdD1NYXRoLnNpbixEbj1NYXRoLnNpZ258fGZ1bmN0aW9uKHQpe3JldHVybiB0PjA/MTp0PDA/LTE6MH0sU3I9TWF0aC5zcXJ0LHIyPU1hdGgudGFuO2Z1bmN0aW9uIHI2KHQpe3JldHVybiB0PjE/MDp0PC0xP0FlOk1hdGguYWNvcyh0KX1mdW5jdGlvbiB0bih0KXtyZXR1cm4gdD4xP3JyOnQ8LTE/LXJyOk1hdGguYXNpbih0KX1mdW5jdGlvbiBuNih0KXtyZXR1cm4odD1IdCh0LzIpKSp0fWZ1bmN0aW9uIEplKCl7fWZ1bmN0aW9uIHZoKHQsZSl7dCYmYTYuaGFzT3duUHJvcGVydHkodC50eXBlKSYmYTZbdC50eXBlXSh0LGUpfXZhciBpNj17RmVhdHVyZTpmdW5jdGlvbih0LGUpe3ZoKHQuZ2VvbWV0cnksZSl9LEZlYXR1cmVDb2xsZWN0aW9uOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPXQuZmVhdHVyZXMsbj0tMSxpPXIubGVuZ3RoOysrbjxpOyl2aChyW25dLmdlb21ldHJ5LGUpfX0sYTY9e1NwaGVyZTpmdW5jdGlvbih0LGUpe2Uuc3BoZXJlKCl9LFBvaW50OmZ1bmN0aW9uKHQsZSl7dD10LmNvb3JkaW5hdGVzLGUucG9pbnQodFswXSx0WzFdLHRbMl0pfSxNdWx0aVBvaW50OmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPXQuY29vcmRpbmF0ZXMsbj0tMSxpPXIubGVuZ3RoOysrbjxpOyl0PXJbbl0sZS5wb2ludCh0WzBdLHRbMV0sdFsyXSl9LExpbmVTdHJpbmc6ZnVuY3Rpb24odCxlKXtuMih0LmNvb3JkaW5hdGVzLGUsMCl9LE11bHRpTGluZVN0cmluZzpmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj10LmNvb3JkaW5hdGVzLG49LTEsaT1yLmxlbmd0aDsrK248aTspbjIocltuXSxlLDApfSxQb2x5Z29uOmZ1bmN0aW9uKHQsZSl7czYodC5jb29yZGluYXRlcyxlKX0sTXVsdGlQb2x5Z29uOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPXQuY29vcmRpbmF0ZXMsbj0tMSxpPXIubGVuZ3RoOysrbjxpOylzNihyW25dLGUpfSxHZW9tZXRyeUNvbGxlY3Rpb246ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5nZW9tZXRyaWVzLG49LTEsaT1yLmxlbmd0aDsrK248aTspdmgocltuXSxlKX19O2Z1bmN0aW9uIG4yKHQsZSxyKXt2YXIgbj0tMSxpPXQubGVuZ3RoLXIsYTtmb3IoZS5saW5lU3RhcnQoKTsrK248aTspYT10W25dLGUucG9pbnQoYVswXSxhWzFdLGFbMl0pO2UubGluZUVuZCgpfWZ1bmN0aW9uIHM2KHQsZSl7dmFyIHI9LTEsbj10Lmxlbmd0aDtmb3IoZS5wb2x5Z29uU3RhcnQoKTsrK3I8bjspbjIodFtyXSxlLDEpO2UucG9seWdvbkVuZCgpfWZ1bmN0aW9uIHRpKHQsZSl7dCYmaTYuaGFzT3duUHJvcGVydHkodC50eXBlKT9pNlt0LnR5cGVdKHQsZSk6dmgodCxlKX12YXIgeGg9bmV3IF9yLGtoPW5ldyBfcixvNixsNixpMixhMixzMixTaT17cG9pbnQ6SmUsbGluZVN0YXJ0OkplLGxpbmVFbmQ6SmUscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7eGg9bmV3IF9yLFNpLmxpbmVTdGFydD1zcSxTaS5saW5lRW5kPW9xfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dmFyIHQ9K3hoO2toLmFkZCh0PDA/UXIrdDp0KSx0aGlzLmxpbmVTdGFydD10aGlzLmxpbmVFbmQ9dGhpcy5wb2ludD1KZX0sc3BoZXJlOmZ1bmN0aW9uKCl7a2guYWRkKFFyKX19O2Z1bmN0aW9uIHNxKCl7U2kucG9pbnQ9bHF9ZnVuY3Rpb24gb3EoKXtjNihvNixsNil9ZnVuY3Rpb24gbHEodCxlKXtTaS5wb2ludD1jNixvNj10LGw2PWUsdCo9cmUsZSo9cmUsaTI9dCxhMj1LdChlPWUvMittaCksczI9SHQoZSl9ZnVuY3Rpb24gYzYodCxlKXt0Kj1yZSxlKj1yZSxlPWUvMittaDt2YXIgcj10LWkyLG49cj49MD8xOi0xLGk9bipyLGE9S3QoZSkscz1IdChlKSxvPXMyKnMsbD1hMiphK28qS3QoaSksdT1vKm4qSHQoaSk7eGguYWRkKEpyKHUsbCkpLGkyPXQsYTI9YSxzMj1zfWZ1bmN0aW9uIGNxKHQpe3JldHVybiBraD1uZXcgX3IsdGkodCxTaSksa2gqMn1mdW5jdGlvbiB3aCh0KXtyZXR1cm5bSnIodFsxXSx0WzBdKSx0bih0WzJdKV19ZnVuY3Rpb24gQ3ModCl7dmFyIGU9dFswXSxyPXRbMV0sbj1LdChyKTtyZXR1cm5bbipLdChlKSxuKkh0KGUpLEh0KHIpXX1mdW5jdGlvbiBUaCh0LGUpe3JldHVybiB0WzBdKmVbMF0rdFsxXSplWzFdK3RbMl0qZVsyXX1mdW5jdGlvbiBBbyh0LGUpe3JldHVyblt0WzFdKmVbMl0tdFsyXSplWzFdLHRbMl0qZVswXS10WzBdKmVbMl0sdFswXSplWzFdLXRbMV0qZVswXV19ZnVuY3Rpb24gbzIodCxlKXt0WzBdKz1lWzBdLHRbMV0rPWVbMV0sdFsyXSs9ZVsyXX1mdW5jdGlvbiBFaCh0LGUpe3JldHVyblt0WzBdKmUsdFsxXSplLHRbMl0qZV19ZnVuY3Rpb24gQ2godCl7dmFyIGU9U3IodFswXSp0WzBdK3RbMV0qdFsxXSt0WzJdKnRbMl0pO3RbMF0vPWUsdFsxXS89ZSx0WzJdLz1lfXZhciB0cixwbixucixFbixTcyx1NixoNixNbyxHbCxCYSxRaSxKaT17cG9pbnQ6bDIsbGluZVN0YXJ0OmQ2LGxpbmVFbmQ6cDYscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7SmkucG9pbnQ9ZzYsSmkubGluZVN0YXJ0PXVxLEppLmxpbmVFbmQ9aHEsR2w9bmV3IF9yLFNpLnBvbHlnb25TdGFydCgpfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7U2kucG9seWdvbkVuZCgpLEppLnBvaW50PWwyLEppLmxpbmVTdGFydD1kNixKaS5saW5lRW5kPXA2LHhoPDA/KHRyPS0obnI9MTgwKSxwbj0tKEVuPTkwKSk6R2w+dGU/RW49OTA6R2w8LXRlJiYocG49LTkwKSxRaVswXT10cixRaVsxXT1ucn0sc3BoZXJlOmZ1bmN0aW9uKCl7dHI9LShucj0xODApLHBuPS0oRW49OTApfX07ZnVuY3Rpb24gbDIodCxlKXtCYS5wdXNoKFFpPVt0cj10LG5yPXRdKSxlPHBuJiYocG49ZSksZT5FbiYmKEVuPWUpfWZ1bmN0aW9uIGY2KHQsZSl7dmFyIHI9Q3MoW3QqcmUsZSpyZV0pO2lmKE1vKXt2YXIgbj1BbyhNbyxyKSxpPVtuWzFdLC1uWzBdLDBdLGE9QW8oaSxuKTtDaChhKSxhPXdoKGEpO3ZhciBzPXQtU3Msbz1zPjA/MTotMSxsPWFbMF0qVWUqbyx1LGg9TmUocyk+MTgwO2heKG8qU3M8bCYmbDxvKnQpPyh1PWFbMV0qVWUsdT5FbiYmKEVuPXUpKToobD0obCszNjApJTM2MC0xODAsaF4obypTczxsJiZsPG8qdCk/KHU9LWFbMV0qVWUsdTxwbiYmKHBuPXUpKTooZTxwbiYmKHBuPWUpLGU+RW4mJihFbj1lKSkpLGg/dDxTcz9Dbih0cix0KT5Dbih0cixucikmJihucj10KTpDbih0LG5yKT5Dbih0cixucikmJih0cj10KTpucj49dHI/KHQ8dHImJih0cj10KSx0Pm5yJiYobnI9dCkpOnQ+U3M/Q24odHIsdCk+Q24odHIsbnIpJiYobnI9dCk6Q24odCxucik+Q24odHIsbnIpJiYodHI9dCl9ZWxzZSBCYS5wdXNoKFFpPVt0cj10LG5yPXRdKTtlPHBuJiYocG49ZSksZT5FbiYmKEVuPWUpLE1vPXIsU3M9dH1mdW5jdGlvbiBkNigpe0ppLnBvaW50PWY2fWZ1bmN0aW9uIHA2KCl7UWlbMF09dHIsUWlbMV09bnIsSmkucG9pbnQ9bDIsTW89bnVsbH1mdW5jdGlvbiBnNih0LGUpe2lmKE1vKXt2YXIgcj10LVNzO0dsLmFkZChOZShyKT4xODA/cisocj4wPzM2MDotMzYwKTpyKX1lbHNlIHU2PXQsaDY9ZTtTaS5wb2ludCh0LGUpLGY2KHQsZSl9ZnVuY3Rpb24gdXEoKXtTaS5saW5lU3RhcnQoKX1mdW5jdGlvbiBocSgpe2c2KHU2LGg2KSxTaS5saW5lRW5kKCksTmUoR2wpPnRlJiYodHI9LShucj0xODApKSxRaVswXT10cixRaVsxXT1ucixNbz1udWxsfWZ1bmN0aW9uIENuKHQsZSl7cmV0dXJuKGUtPXQpPDA/ZSszNjA6ZX1mdW5jdGlvbiBmcSh0LGUpe3JldHVybiB0WzBdLWVbMF19ZnVuY3Rpb24geTYodCxlKXtyZXR1cm4gdFswXTw9dFsxXT90WzBdPD1lJiZlPD10WzFdOmU8dFswXXx8dFsxXTxlfWZ1bmN0aW9uIGRxKHQpe3ZhciBlLHIsbixpLGEscyxvO2lmKEVuPW5yPS0odHI9cG49MS8wKSxCYT1bXSx0aSh0LEppKSxyPUJhLmxlbmd0aCl7Zm9yKEJhLnNvcnQoZnEpLGU9MSxuPUJhWzBdLGE9W25dO2U8cjsrK2UpaT1CYVtlXSx5NihuLGlbMF0pfHx5NihuLGlbMV0pPyhDbihuWzBdLGlbMV0pPkNuKG5bMF0sblsxXSkmJihuWzFdPWlbMV0pLENuKGlbMF0sblsxXSk+Q24oblswXSxuWzFdKSYmKG5bMF09aVswXSkpOmEucHVzaChuPWkpO2ZvcihzPS0xLzAscj1hLmxlbmd0aC0xLGU9MCxuPWFbcl07ZTw9cjtuPWksKytlKWk9YVtlXSwobz1DbihuWzFdLGlbMF0pKT5zJiYocz1vLHRyPWlbMF0sbnI9blsxXSl9cmV0dXJuIEJhPVFpPW51bGwsdHI9PT0xLzB8fHBuPT09MS8wP1tbTmFOLE5hTl0sW05hTixOYU5dXTpbW3RyLHBuXSxbbnIsRW5dXX12YXIgamwsU2gsQWgsTWgsTGgsUmgsSWgsTmgsYzIsdTIsaDIsbTYsYjYsZW4scm4sbm4sZWk9e3NwaGVyZTpKZSxwb2ludDpmMixsaW5lU3RhcnQ6XzYsbGluZUVuZDp2Nixwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtlaS5saW5lU3RhcnQ9eXEsZWkubGluZUVuZD1tcX0scG9seWdvbkVuZDpmdW5jdGlvbigpe2VpLmxpbmVTdGFydD1fNixlaS5saW5lRW5kPXY2fX07ZnVuY3Rpb24gZjIodCxlKXt0Kj1yZSxlKj1yZTt2YXIgcj1LdChlKTskbChyKkt0KHQpLHIqSHQodCksSHQoZSkpfWZ1bmN0aW9uICRsKHQsZSxyKXsrK2psLEFoKz0odC1BaCkvamwsTWgrPShlLU1oKS9qbCxMaCs9KHItTGgpL2psfWZ1bmN0aW9uIF82KCl7ZWkucG9pbnQ9cHF9ZnVuY3Rpb24gcHEodCxlKXt0Kj1yZSxlKj1yZTt2YXIgcj1LdChlKTtlbj1yKkt0KHQpLHJuPXIqSHQodCksbm49SHQoZSksZWkucG9pbnQ9Z3EsJGwoZW4scm4sbm4pfWZ1bmN0aW9uIGdxKHQsZSl7dCo9cmUsZSo9cmU7dmFyIHI9S3QoZSksbj1yKkt0KHQpLGk9cipIdCh0KSxhPUh0KGUpLHM9SnIoU3IoKHM9cm4qYS1ubippKSpzKyhzPW5uKm4tZW4qYSkqcysocz1lbippLXJuKm4pKnMpLGVuKm4rcm4qaStubiphKTtTaCs9cyxSaCs9cyooZW4rKGVuPW4pKSxJaCs9cyoocm4rKHJuPWkpKSxOaCs9cyoobm4rKG5uPWEpKSwkbChlbixybixubil9ZnVuY3Rpb24gdjYoKXtlaS5wb2ludD1mMn1mdW5jdGlvbiB5cSgpe2VpLnBvaW50PWJxfWZ1bmN0aW9uIG1xKCl7eDYobTYsYjYpLGVpLnBvaW50PWYyfWZ1bmN0aW9uIGJxKHQsZSl7bTY9dCxiNj1lLHQqPXJlLGUqPXJlLGVpLnBvaW50PXg2O3ZhciByPUt0KGUpO2VuPXIqS3QodCkscm49cipIdCh0KSxubj1IdChlKSwkbChlbixybixubil9ZnVuY3Rpb24geDYodCxlKXt0Kj1yZSxlKj1yZTt2YXIgcj1LdChlKSxuPXIqS3QodCksaT1yKkh0KHQpLGE9SHQoZSkscz1ybiphLW5uKmksbz1ubipuLWVuKmEsbD1lbippLXJuKm4sdT10MihzLG8sbCksaD10bih1KSxkPXUmJi1oL3U7YzIuYWRkKGQqcyksdTIuYWRkKGQqbyksaDIuYWRkKGQqbCksU2grPWgsUmgrPWgqKGVuKyhlbj1uKSksSWgrPWgqKHJuKyhybj1pKSksTmgrPWgqKG5uKyhubj1hKSksJGwoZW4scm4sbm4pfWZ1bmN0aW9uIF9xKHQpe2psPVNoPUFoPU1oPUxoPVJoPUloPU5oPTAsYzI9bmV3IF9yLHUyPW5ldyBfcixoMj1uZXcgX3IsdGkodCxlaSk7dmFyIGU9K2MyLHI9K3UyLG49K2gyLGk9dDIoZSxyLG4pO3JldHVybiBpPEhsJiYoZT1SaCxyPUloLG49TmgsU2g8dGUmJihlPUFoLHI9TWgsbj1MaCksaT10MihlLHIsbiksaTxIbCk/W05hTixOYU5dOltKcihyLGUpKlVlLHRuKG4vaSkqVWVdfWZ1bmN0aW9uIExvKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiBkMih0LGUpe2Z1bmN0aW9uIHIobixpKXtyZXR1cm4gbj10KG4saSksZShuWzBdLG5bMV0pfXJldHVybiB0LmludmVydCYmZS5pbnZlcnQmJihyLmludmVydD1mdW5jdGlvbihuLGkpe3JldHVybiBuPWUuaW52ZXJ0KG4saSksbiYmdC5pbnZlcnQoblswXSxuWzFdKX0pLHJ9ZnVuY3Rpb24gcDIodCxlKXtyZXR1cm5bTmUodCk+QWU/dCtNYXRoLnJvdW5kKC10L1FyKSpRcjp0LGVdfXAyLmludmVydD1wMjtmdW5jdGlvbiBnMih0LGUscil7cmV0dXJuKHQlPVFyKT9lfHxyP2QyKHc2KHQpLFQ2KGUscikpOnc2KHQpOmV8fHI/VDYoZSxyKTpwMn1mdW5jdGlvbiBrNih0KXtyZXR1cm4gZnVuY3Rpb24oZSxyKXtyZXR1cm4gZSs9dCxbZT5BZT9lLVFyOmU8LUFlP2UrUXI6ZSxyXX19ZnVuY3Rpb24gdzYodCl7dmFyIGU9azYodCk7cmV0dXJuIGUuaW52ZXJ0PWs2KC10KSxlfWZ1bmN0aW9uIFQ2KHQsZSl7dmFyIHI9S3QodCksbj1IdCh0KSxpPUt0KGUpLGE9SHQoZSk7ZnVuY3Rpb24gcyhvLGwpe3ZhciB1PUt0KGwpLGg9S3QobykqdSxkPUh0KG8pKnUsZj1IdChsKSxwPWYqcitoKm47cmV0dXJuW0pyKGQqaS1wKmEsaCpyLWYqbiksdG4ocCppK2QqYSldfXJldHVybiBzLmludmVydD1mdW5jdGlvbihvLGwpe3ZhciB1PUt0KGwpLGg9S3QobykqdSxkPUh0KG8pKnUsZj1IdChsKSxwPWYqaS1kKmE7cmV0dXJuW0pyKGQqaStmKmEsaCpyK3AqbiksdG4ocCpyLWgqbildfSxzfWZ1bmN0aW9uIEU2KHQpe3Q9ZzIodFswXSpyZSx0WzFdKnJlLHQubGVuZ3RoPjI/dFsyXSpyZTowKTtmdW5jdGlvbiBlKHIpe3JldHVybiByPXQoclswXSpyZSxyWzFdKnJlKSxyWzBdKj1VZSxyWzFdKj1VZSxyfXJldHVybiBlLmludmVydD1mdW5jdGlvbihyKXtyZXR1cm4gcj10LmludmVydChyWzBdKnJlLHJbMV0qcmUpLHJbMF0qPVVlLHJbMV0qPVVlLHJ9LGV9ZnVuY3Rpb24gQzYodCxlLHIsbixpLGEpe2lmKCEhcil7dmFyIHM9S3QoZSksbz1IdChlKSxsPW4qcjtpPT1udWxsPyhpPWUrbipRcixhPWUtbC8yKTooaT1TNihzLGkpLGE9UzYocyxhKSwobj4wP2k8YTppPmEpJiYoaSs9bipRcikpO2Zvcih2YXIgdSxoPWk7bj4wP2g+YTpoPGE7aC09bCl1PXdoKFtzLC1vKkt0KGgpLC1vKkh0KGgpXSksdC5wb2ludCh1WzBdLHVbMV0pfX1mdW5jdGlvbiBTNih0LGUpe2U9Q3MoZSksZVswXS09dCxDaChlKTt2YXIgcj1yNigtZVsxXSk7cmV0dXJuKCgtZVsyXTwwPy1yOnIpK1FyLXRlKSVRcn1mdW5jdGlvbiB2cSgpe3ZhciB0PUxvKFswLDBdKSxlPUxvKDkwKSxyPUxvKDYpLG4saSxhPXtwb2ludDpzfTtmdW5jdGlvbiBzKGwsdSl7bi5wdXNoKGw9aShsLHUpKSxsWzBdKj1VZSxsWzFdKj1VZX1mdW5jdGlvbiBvKCl7dmFyIGw9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyksdT1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKSpyZSxoPXIuYXBwbHkodGhpcyxhcmd1bWVudHMpKnJlO3JldHVybiBuPVtdLGk9ZzIoLWxbMF0qcmUsLWxbMV0qcmUsMCkuaW52ZXJ0LEM2KGEsdSxoLDEpLGw9e3R5cGU6IlBvbHlnb24iLGNvb3JkaW5hdGVzOltuXX0sbj1pPW51bGwsbH1yZXR1cm4gby5jZW50ZXI9ZnVuY3Rpb24obCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9dHlwZW9mIGw9PSJmdW5jdGlvbiI/bDpMbyhbK2xbMF0sK2xbMV1dKSxvKTp0fSxvLnJhZGl1cz1mdW5jdGlvbihsKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10eXBlb2YgbD09ImZ1bmN0aW9uIj9sOkxvKCtsKSxvKTplfSxvLnByZWNpc2lvbj1mdW5jdGlvbihsKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj10eXBlb2YgbD09ImZ1bmN0aW9uIj9sOkxvKCtsKSxvKTpyfSxvfWZ1bmN0aW9uIEE2KCl7dmFyIHQ9W10sZTtyZXR1cm57cG9pbnQ6ZnVuY3Rpb24ocixuLGkpe2UucHVzaChbcixuLGldKX0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dC5wdXNoKGU9W10pfSxsaW5lRW5kOkplLHJlam9pbjpmdW5jdGlvbigpe3QubGVuZ3RoPjEmJnQucHVzaCh0LnBvcCgpLmNvbmNhdCh0LnNoaWZ0KCkpKX0scmVzdWx0OmZ1bmN0aW9uKCl7dmFyIHI9dDtyZXR1cm4gdD1bXSxlPW51bGwscn19fWZ1bmN0aW9uIEJoKHQsZSl7cmV0dXJuIE5lKHRbMF0tZVswXSk8dGUmJk5lKHRbMV0tZVsxXSk8dGV9ZnVuY3Rpb24gRGgodCxlLHIsbil7dGhpcy54PXQsdGhpcy56PWUsdGhpcy5vPXIsdGhpcy5lPW4sdGhpcy52PSExLHRoaXMubj10aGlzLnA9bnVsbH1mdW5jdGlvbiBNNih0LGUscixuLGkpe3ZhciBhPVtdLHM9W10sbyxsO2lmKHQuZm9yRWFjaChmdW5jdGlvbihtKXtpZighKChfPW0ubGVuZ3RoLTEpPD0wKSl7dmFyIF8seT1tWzBdLGI9bVtfXSx4O2lmKEJoKHksYikpe2lmKCF5WzJdJiYhYlsyXSl7Zm9yKGkubGluZVN0YXJ0KCksbz0wO288XzsrK28paS5wb2ludCgoeT1tW29dKVswXSx5WzFdKTtpLmxpbmVFbmQoKTtyZXR1cm59YlswXSs9Mip0ZX1hLnB1c2goeD1uZXcgRGgoeSxtLG51bGwsITApKSxzLnB1c2goeC5vPW5ldyBEaCh5LG51bGwseCwhMSkpLGEucHVzaCh4PW5ldyBEaChiLG0sbnVsbCwhMSkpLHMucHVzaCh4Lm89bmV3IERoKGIsbnVsbCx4LCEwKSl9fSksISFhLmxlbmd0aCl7Zm9yKHMuc29ydChlKSxMNihhKSxMNihzKSxvPTAsbD1zLmxlbmd0aDtvPGw7KytvKXNbb10uZT1yPSFyO2Zvcih2YXIgdT1hWzBdLGgsZDs7KXtmb3IodmFyIGY9dSxwPSEwO2YudjspaWYoKGY9Zi5uKT09PXUpcmV0dXJuO2g9Zi56LGkubGluZVN0YXJ0KCk7ZG97aWYoZi52PWYuby52PSEwLGYuZSl7aWYocClmb3Iobz0wLGw9aC5sZW5ndGg7bzxsOysrbylpLnBvaW50KChkPWhbb10pWzBdLGRbMV0pO2Vsc2UgbihmLngsZi5uLngsMSxpKTtmPWYubn1lbHNle2lmKHApZm9yKGg9Zi5wLnosbz1oLmxlbmd0aC0xO28+PTA7LS1vKWkucG9pbnQoKGQ9aFtvXSlbMF0sZFsxXSk7ZWxzZSBuKGYueCxmLnAueCwtMSxpKTtmPWYucH1mPWYubyxoPWYueixwPSFwfXdoaWxlKCFmLnYpO2kubGluZUVuZCgpfX19ZnVuY3Rpb24gTDYodCl7aWYoISEoZT10Lmxlbmd0aCkpe2Zvcih2YXIgZSxyPTAsbj10WzBdLGk7KytyPGU7KW4ubj1pPXRbcl0saS5wPW4sbj1pO24ubj1pPXRbMF0saS5wPW59fWZ1bmN0aW9uIHkyKHQpe3JldHVybiBOZSh0WzBdKTw9QWU/dFswXTpEbih0WzBdKSooKE5lKHRbMF0pK0FlKSVRci1BZSl9ZnVuY3Rpb24gUjYodCxlKXt2YXIgcj15MihlKSxuPWVbMV0saT1IdChuKSxhPVtIdChyKSwtS3QociksMF0scz0wLG89MCxsPW5ldyBfcjtpPT09MT9uPXJyK3RlOmk9PT0tMSYmKG49LXJyLXRlKTtmb3IodmFyIHU9MCxoPXQubGVuZ3RoO3U8aDsrK3UpaWYoISEoZj0oZD10W3VdKS5sZW5ndGgpKWZvcih2YXIgZCxmLHA9ZFtmLTFdLG09eTIocCksXz1wWzFdLzIrbWgseT1IdChfKSxiPUt0KF8pLHg9MDt4PGY7Kyt4LG09VCx5PU0sYj1TLHA9ayl7dmFyIGs9ZFt4XSxUPXkyKGspLEM9a1sxXS8yK21oLE09SHQoQyksUz1LdChDKSxSPVQtbSxBPVI+PTA/MTotMSxMPUEqUix2PUw+QWUsQj15Kk07aWYobC5hZGQoSnIoQipBKkh0KEwpLGIqUytCKkt0KEwpKSkscys9dj9SK0EqUXI6Uix2Xm0+PXJeVD49cil7dmFyIHc9QW8oQ3MocCksQ3MoaykpO0NoKHcpO3ZhciBEPUFvKGEsdyk7Q2goRCk7dmFyIE49KHZeUj49MD8tMToxKSp0bihEWzJdKTsobj5OfHxuPT09TiYmKHdbMF18fHdbMV0pKSYmKG8rPXZeUj49MD8xOi0xKX19cmV0dXJuKHM8LXRlfHxzPHRlJiZsPC1IbClebyYxfWZ1bmN0aW9uIEk2KHQsZSxyLG4pe3JldHVybiBmdW5jdGlvbihpKXt2YXIgYT1lKGkpLHM9QTYoKSxvPWUocyksbD0hMSx1LGgsZCxmPXtwb2ludDpwLGxpbmVTdGFydDpfLGxpbmVFbmQ6eSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtmLnBvaW50PWIsZi5saW5lU3RhcnQ9eCxmLmxpbmVFbmQ9ayxoPVtdLHU9W119LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtmLnBvaW50PXAsZi5saW5lU3RhcnQ9XyxmLmxpbmVFbmQ9eSxoPWowKGgpO3ZhciBUPVI2KHUsbik7aC5sZW5ndGg/KGx8fChpLnBvbHlnb25TdGFydCgpLGw9ITApLE02KGgsa3EsVCxyLGkpKTpUJiYobHx8KGkucG9seWdvblN0YXJ0KCksbD0hMCksaS5saW5lU3RhcnQoKSxyKG51bGwsbnVsbCwxLGkpLGkubGluZUVuZCgpKSxsJiYoaS5wb2x5Z29uRW5kKCksbD0hMSksaD11PW51bGx9LHNwaGVyZTpmdW5jdGlvbigpe2kucG9seWdvblN0YXJ0KCksaS5saW5lU3RhcnQoKSxyKG51bGwsbnVsbCwxLGkpLGkubGluZUVuZCgpLGkucG9seWdvbkVuZCgpfX07ZnVuY3Rpb24gcChULEMpe3QoVCxDKSYmaS5wb2ludChULEMpfWZ1bmN0aW9uIG0oVCxDKXthLnBvaW50KFQsQyl9ZnVuY3Rpb24gXygpe2YucG9pbnQ9bSxhLmxpbmVTdGFydCgpfWZ1bmN0aW9uIHkoKXtmLnBvaW50PXAsYS5saW5lRW5kKCl9ZnVuY3Rpb24gYihULEMpe2QucHVzaChbVCxDXSksby5wb2ludChULEMpfWZ1bmN0aW9uIHgoKXtvLmxpbmVTdGFydCgpLGQ9W119ZnVuY3Rpb24gaygpe2IoZFswXVswXSxkWzBdWzFdKSxvLmxpbmVFbmQoKTt2YXIgVD1vLmNsZWFuKCksQz1zLnJlc3VsdCgpLE0sUz1DLmxlbmd0aCxSLEEsTDtpZihkLnBvcCgpLHUucHVzaChkKSxkPW51bGwsISFTKXtpZihUJjEpe2lmKEE9Q1swXSwoUj1BLmxlbmd0aC0xKT4wKXtmb3IobHx8KGkucG9seWdvblN0YXJ0KCksbD0hMCksaS5saW5lU3RhcnQoKSxNPTA7TTxSOysrTSlpLnBvaW50KChMPUFbTV0pWzBdLExbMV0pO2kubGluZUVuZCgpfXJldHVybn1TPjEmJlQmMiYmQy5wdXNoKEMucG9wKCkuY29uY2F0KEMuc2hpZnQoKSkpLGgucHVzaChDLmZpbHRlcih4cSkpfX1yZXR1cm4gZn19ZnVuY3Rpb24geHEodCl7cmV0dXJuIHQubGVuZ3RoPjF9ZnVuY3Rpb24ga3EodCxlKXtyZXR1cm4oKHQ9dC54KVswXTwwP3RbMV0tcnItdGU6cnItdFsxXSktKChlPWUueClbMF08MD9lWzFdLXJyLXRlOnJyLWVbMV0pfWNvbnN0IG0yPUk2KGZ1bmN0aW9uKCl7cmV0dXJuITB9LHdxLEVxLFstQWUsLXJyXSk7ZnVuY3Rpb24gd3EodCl7dmFyIGU9TmFOLHI9TmFOLG49TmFOLGk7cmV0dXJue2xpbmVTdGFydDpmdW5jdGlvbigpe3QubGluZVN0YXJ0KCksaT0xfSxwb2ludDpmdW5jdGlvbihhLHMpe3ZhciBvPWE+MD9BZTotQWUsbD1OZShhLWUpO05lKGwtQWUpPHRlPyh0LnBvaW50KGUscj0ocitzKS8yPjA/cnI6LXJyKSx0LnBvaW50KG4sciksdC5saW5lRW5kKCksdC5saW5lU3RhcnQoKSx0LnBvaW50KG8sciksdC5wb2ludChhLHIpLGk9MCk6biE9PW8mJmw+PUFlJiYoTmUoZS1uKTx0ZSYmKGUtPW4qdGUpLE5lKGEtbyk8dGUmJihhLT1vKnRlKSxyPVRxKGUscixhLHMpLHQucG9pbnQobixyKSx0LmxpbmVFbmQoKSx0LmxpbmVTdGFydCgpLHQucG9pbnQobyxyKSxpPTApLHQucG9pbnQoZT1hLHI9cyksbj1vfSxsaW5lRW5kOmZ1bmN0aW9uKCl7dC5saW5lRW5kKCksZT1yPU5hTn0sY2xlYW46ZnVuY3Rpb24oKXtyZXR1cm4gMi1pfX19ZnVuY3Rpb24gVHEodCxlLHIsbil7dmFyIGksYSxzPUh0KHQtcik7cmV0dXJuIE5lKHMpPnRlP1NvKChIdChlKSooYT1LdChuKSkqSHQociktSHQobikqKGk9S3QoZSkpKkh0KHQpKS8oaSphKnMpKTooZStuKS8yfWZ1bmN0aW9uIEVxKHQsZSxyLG4pe3ZhciBpO2lmKHQ9PW51bGwpaT1yKnJyLG4ucG9pbnQoLUFlLGkpLG4ucG9pbnQoMCxpKSxuLnBvaW50KEFlLGkpLG4ucG9pbnQoQWUsMCksbi5wb2ludChBZSwtaSksbi5wb2ludCgwLC1pKSxuLnBvaW50KC1BZSwtaSksbi5wb2ludCgtQWUsMCksbi5wb2ludCgtQWUsaSk7ZWxzZSBpZihOZSh0WzBdLWVbMF0pPnRlKXt2YXIgYT10WzBdPGVbMF0/QWU6LUFlO2k9ciphLzIsbi5wb2ludCgtYSxpKSxuLnBvaW50KDAsaSksbi5wb2ludChhLGkpfWVsc2Ugbi5wb2ludChlWzBdLGVbMV0pfWZ1bmN0aW9uIE42KHQpe3ZhciBlPUt0KHQpLHI9NipyZSxuPWU+MCxpPU5lKGUpPnRlO2Z1bmN0aW9uIGEoaCxkLGYscCl7QzYocCx0LHIsZixoLGQpfWZ1bmN0aW9uIHMoaCxkKXtyZXR1cm4gS3QoaCkqS3QoZCk+ZX1mdW5jdGlvbiBvKGgpe3ZhciBkLGYscCxtLF87cmV0dXJue2xpbmVTdGFydDpmdW5jdGlvbigpe209cD0hMSxfPTF9LHBvaW50OmZ1bmN0aW9uKHksYil7dmFyIHg9W3ksYl0sayxUPXMoeSxiKSxDPW4/VD8wOnUoeSxiKTpUP3UoeSsoeTwwP0FlOi1BZSksYik6MDtpZighZCYmKG09cD1UKSYmaC5saW5lU3RhcnQoKSxUIT09cCYmKGs9bChkLHgpLCgha3x8QmgoZCxrKXx8QmgoeCxrKSkmJih4WzJdPTEpKSxUIT09cClfPTAsVD8oaC5saW5lU3RhcnQoKSxrPWwoeCxkKSxoLnBvaW50KGtbMF0sa1sxXSkpOihrPWwoZCx4KSxoLnBvaW50KGtbMF0sa1sxXSwyKSxoLmxpbmVFbmQoKSksZD1rO2Vsc2UgaWYoaSYmZCYmbl5UKXt2YXIgTTshKEMmZikmJihNPWwoeCxkLCEwKSkmJihfPTAsbj8oaC5saW5lU3RhcnQoKSxoLnBvaW50KE1bMF1bMF0sTVswXVsxXSksaC5wb2ludChNWzFdWzBdLE1bMV1bMV0pLGgubGluZUVuZCgpKTooaC5wb2ludChNWzFdWzBdLE1bMV1bMV0pLGgubGluZUVuZCgpLGgubGluZVN0YXJ0KCksaC5wb2ludChNWzBdWzBdLE1bMF1bMV0sMykpKX1UJiYoIWR8fCFCaChkLHgpKSYmaC5wb2ludCh4WzBdLHhbMV0pLGQ9eCxwPVQsZj1DfSxsaW5lRW5kOmZ1bmN0aW9uKCl7cCYmaC5saW5lRW5kKCksZD1udWxsfSxjbGVhbjpmdW5jdGlvbigpe3JldHVybiBffChtJiZwKTw8MX19fWZ1bmN0aW9uIGwoaCxkLGYpe3ZhciBwPUNzKGgpLG09Q3MoZCksXz1bMSwwLDBdLHk9QW8ocCxtKSxiPVRoKHkseSkseD15WzBdLGs9Yi14Kng7aWYoIWspcmV0dXJuIWYmJmg7dmFyIFQ9ZSpiL2ssQz0tZSp4L2ssTT1BbyhfLHkpLFM9RWgoXyxUKSxSPUVoKHksQyk7bzIoUyxSKTt2YXIgQT1NLEw9VGgoUyxBKSx2PVRoKEEsQSksQj1MKkwtdiooVGgoUyxTKS0xKTtpZighKEI8MCkpe3ZhciB3PVNyKEIpLEQ9RWgoQSwoLUwtdykvdik7aWYobzIoRCxTKSxEPXdoKEQpLCFmKXJldHVybiBEO3ZhciBOPWhbMF0sej1kWzBdLFg9aFsxXSxjdD1kWzFdLEo7ejxOJiYoSj1OLE49eix6PUopO3ZhciBZPXotTiwkPU5lKFktQWUpPHRlLGx0PSR8fFk8dGU7aWYoISQmJmN0PFgmJihKPVgsWD1jdCxjdD1KKSxsdD8kP1grY3Q+MF5EWzFdPChOZShEWzBdLU4pPHRlP1g6Y3QpOlg8PURbMV0mJkRbMV08PWN0Olk+QWVeKE48PURbMF0mJkRbMF08PXopKXt2YXIgdXQ9RWgoQSwoLUwrdykvdik7cmV0dXJuIG8yKHV0LFMpLFtELHdoKHV0KV19fX1mdW5jdGlvbiB1KGgsZCl7dmFyIGY9bj90OkFlLXQscD0wO3JldHVybiBoPC1mP3B8PTE6aD5mJiYocHw9MiksZDwtZj9wfD00OmQ+ZiYmKHB8PTgpLHB9cmV0dXJuIEk2KHMsbyxhLG4/WzAsLXRdOlstQWUsdC1BZV0pfWZ1bmN0aW9uIENxKHQsZSxyLG4saSxhKXt2YXIgcz10WzBdLG89dFsxXSxsPWVbMF0sdT1lWzFdLGg9MCxkPTEsZj1sLXMscD11LW8sbTtpZihtPXItcywhKCFmJiZtPjApKXtpZihtLz1mLGY8MCl7aWYobTxoKXJldHVybjttPGQmJihkPW0pfWVsc2UgaWYoZj4wKXtpZihtPmQpcmV0dXJuO20+aCYmKGg9bSl9aWYobT1pLXMsISghZiYmbTwwKSl7aWYobS89ZixmPDApe2lmKG0+ZClyZXR1cm47bT5oJiYoaD1tKX1lbHNlIGlmKGY+MCl7aWYobTxoKXJldHVybjttPGQmJihkPW0pfWlmKG09bi1vLCEoIXAmJm0+MCkpe2lmKG0vPXAscDwwKXtpZihtPGgpcmV0dXJuO208ZCYmKGQ9bSl9ZWxzZSBpZihwPjApe2lmKG0+ZClyZXR1cm47bT5oJiYoaD1tKX1pZihtPWEtbywhKCFwJiZtPDApKXtpZihtLz1wLHA8MCl7aWYobT5kKXJldHVybjttPmgmJihoPW0pfWVsc2UgaWYocD4wKXtpZihtPGgpcmV0dXJuO208ZCYmKGQ9bSl9cmV0dXJuIGg+MCYmKHRbMF09cytoKmYsdFsxXT1vK2gqcCksZDwxJiYoZVswXT1zK2QqZixlWzFdPW8rZCpwKSwhMH19fX19dmFyIFhsPTFlOSxPaD0tWGw7ZnVuY3Rpb24gRmgodCxlLHIsbil7ZnVuY3Rpb24gaSh1LGgpe3JldHVybiB0PD11JiZ1PD1yJiZlPD1oJiZoPD1ufWZ1bmN0aW9uIGEodSxoLGQsZil7dmFyIHA9MCxtPTA7aWYodT09bnVsbHx8KHA9cyh1LGQpKSE9PShtPXMoaCxkKSl8fGwodSxoKTwwXmQ+MClkbyBmLnBvaW50KHA9PT0wfHxwPT09Mz90OnIscD4xP246ZSk7d2hpbGUoKHA9KHArZCs0KSU0KSE9PW0pO2Vsc2UgZi5wb2ludChoWzBdLGhbMV0pfWZ1bmN0aW9uIHModSxoKXtyZXR1cm4gTmUodVswXS10KTx0ZT9oPjA/MDozOk5lKHVbMF0tcik8dGU/aD4wPzI6MTpOZSh1WzFdLWUpPHRlP2g+MD8xOjA6aD4wPzM6Mn1mdW5jdGlvbiBvKHUsaCl7cmV0dXJuIGwodS54LGgueCl9ZnVuY3Rpb24gbCh1LGgpe3ZhciBkPXModSwxKSxmPXMoaCwxKTtyZXR1cm4gZCE9PWY/ZC1mOmQ9PT0wP2hbMV0tdVsxXTpkPT09MT91WzBdLWhbMF06ZD09PTI/dVsxXS1oWzFdOmhbMF0tdVswXX1yZXR1cm4gZnVuY3Rpb24odSl7dmFyIGg9dSxkPUE2KCksZixwLG0sXyx5LGIseCxrLFQsQyxNLFM9e3BvaW50OlIsbGluZVN0YXJ0OkIsbGluZUVuZDp3LHBvbHlnb25TdGFydDpMLHBvbHlnb25FbmQ6dn07ZnVuY3Rpb24gUihOLHope2koTix6KSYmaC5wb2ludChOLHopfWZ1bmN0aW9uIEEoKXtmb3IodmFyIE49MCx6PTAsWD1wLmxlbmd0aDt6PFg7Kyt6KWZvcih2YXIgY3Q9cFt6XSxKPTEsWT1jdC5sZW5ndGgsJD1jdFswXSxsdCx1dCxXPSRbMF0sdHQ9JFsxXTtKPFk7KytKKWx0PVcsdXQ9dHQsJD1jdFtKXSxXPSRbMF0sdHQ9JFsxXSx1dDw9bj90dD5uJiYoVy1sdCkqKG4tdXQpPih0dC11dCkqKHQtbHQpJiYrK046dHQ8PW4mJihXLWx0KSoobi11dCk8KHR0LXV0KSoodC1sdCkmJi0tTjtyZXR1cm4gTn1mdW5jdGlvbiBMKCl7aD1kLGY9W10scD1bXSxNPSEwfWZ1bmN0aW9uIHYoKXt2YXIgTj1BKCksej1NJiZOLFg9KGY9ajAoZikpLmxlbmd0aDsoenx8WCkmJih1LnBvbHlnb25TdGFydCgpLHomJih1LmxpbmVTdGFydCgpLGEobnVsbCxudWxsLDEsdSksdS5saW5lRW5kKCkpLFgmJk02KGYsbyxOLGEsdSksdS5wb2x5Z29uRW5kKCkpLGg9dSxmPXA9bT1udWxsfWZ1bmN0aW9uIEIoKXtTLnBvaW50PUQscCYmcC5wdXNoKG09W10pLEM9ITAsVD0hMSx4PWs9TmFOfWZ1bmN0aW9uIHcoKXtmJiYoRChfLHkpLGImJlQmJmQucmVqb2luKCksZi5wdXNoKGQucmVzdWx0KCkpKSxTLnBvaW50PVIsVCYmaC5saW5lRW5kKCl9ZnVuY3Rpb24gRChOLHope3ZhciBYPWkoTix6KTtpZihwJiZtLnB1c2goW04sel0pLEMpXz1OLHk9eixiPVgsQz0hMSxYJiYoaC5saW5lU3RhcnQoKSxoLnBvaW50KE4seikpO2Vsc2UgaWYoWCYmVCloLnBvaW50KE4seik7ZWxzZXt2YXIgY3Q9W3g9TWF0aC5tYXgoT2gsTWF0aC5taW4oWGwseCkpLGs9TWF0aC5tYXgoT2gsTWF0aC5taW4oWGwsaykpXSxKPVtOPU1hdGgubWF4KE9oLE1hdGgubWluKFhsLE4pKSx6PU1hdGgubWF4KE9oLE1hdGgubWluKFhsLHopKV07Q3EoY3QsSix0LGUscixuKT8oVHx8KGgubGluZVN0YXJ0KCksaC5wb2ludChjdFswXSxjdFsxXSkpLGgucG9pbnQoSlswXSxKWzFdKSxYfHxoLmxpbmVFbmQoKSxNPSExKTpYJiYoaC5saW5lU3RhcnQoKSxoLnBvaW50KE4seiksTT0hMSl9eD1OLGs9eixUPVh9cmV0dXJuIFN9fWZ1bmN0aW9uIFNxKCl7dmFyIHQ9MCxlPTAscj05NjAsbj01MDAsaSxhLHM7cmV0dXJuIHM9e3N0cmVhbTpmdW5jdGlvbihvKXtyZXR1cm4gaSYmYT09PW8/aTppPUZoKHQsZSxyLG4pKGE9byl9LGV4dGVudDpmdW5jdGlvbihvKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD0rb1swXVswXSxlPStvWzBdWzFdLHI9K29bMV1bMF0sbj0rb1sxXVsxXSxpPWE9bnVsbCxzKTpbW3QsZV0sW3Isbl1dfX19dmFyIGIyLF8yLFBoLHFoLFJvPXtzcGhlcmU6SmUscG9pbnQ6SmUsbGluZVN0YXJ0OkFxLGxpbmVFbmQ6SmUscG9seWdvblN0YXJ0OkplLHBvbHlnb25FbmQ6SmV9O2Z1bmN0aW9uIEFxKCl7Um8ucG9pbnQ9THEsUm8ubGluZUVuZD1NcX1mdW5jdGlvbiBNcSgpe1JvLnBvaW50PVJvLmxpbmVFbmQ9SmV9ZnVuY3Rpb24gTHEodCxlKXt0Kj1yZSxlKj1yZSxfMj10LFBoPUh0KGUpLHFoPUt0KGUpLFJvLnBvaW50PVJxfWZ1bmN0aW9uIFJxKHQsZSl7dCo9cmUsZSo9cmU7dmFyIHI9SHQoZSksbj1LdChlKSxpPU5lKHQtXzIpLGE9S3QoaSkscz1IdChpKSxvPW4qcyxsPXFoKnItUGgqbiphLHU9UGgqcitxaCpuKmE7YjIuYWRkKEpyKFNyKG8qbytsKmwpLHUpKSxfMj10LFBoPXIscWg9bn1mdW5jdGlvbiBCNih0KXtyZXR1cm4gYjI9bmV3IF9yLHRpKHQsUm8pLCtiMn12YXIgdjI9W251bGwsbnVsbF0sSXE9e3R5cGU6IkxpbmVTdHJpbmciLGNvb3JkaW5hdGVzOnYyfTtmdW5jdGlvbiBWaCh0LGUpe3JldHVybiB2MlswXT10LHYyWzFdPWUsQjYoSXEpfXZhciBENj17RmVhdHVyZTpmdW5jdGlvbih0LGUpe3JldHVybiB6aCh0Lmdlb21ldHJ5LGUpfSxGZWF0dXJlQ29sbGVjdGlvbjpmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj10LmZlYXR1cmVzLG49LTEsaT1yLmxlbmd0aDsrK248aTspaWYoemgocltuXS5nZW9tZXRyeSxlKSlyZXR1cm4hMDtyZXR1cm4hMX19LE82PXtTcGhlcmU6ZnVuY3Rpb24oKXtyZXR1cm4hMH0sUG9pbnQ6ZnVuY3Rpb24odCxlKXtyZXR1cm4gRjYodC5jb29yZGluYXRlcyxlKX0sTXVsdGlQb2ludDpmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj10LmNvb3JkaW5hdGVzLG49LTEsaT1yLmxlbmd0aDsrK248aTspaWYoRjYocltuXSxlKSlyZXR1cm4hMDtyZXR1cm4hMX0sTGluZVN0cmluZzpmdW5jdGlvbih0LGUpe3JldHVybiBQNih0LmNvb3JkaW5hdGVzLGUpfSxNdWx0aUxpbmVTdHJpbmc6ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5jb29yZGluYXRlcyxuPS0xLGk9ci5sZW5ndGg7KytuPGk7KWlmKFA2KHJbbl0sZSkpcmV0dXJuITA7cmV0dXJuITF9LFBvbHlnb246ZnVuY3Rpb24odCxlKXtyZXR1cm4gcTYodC5jb29yZGluYXRlcyxlKX0sTXVsdGlQb2x5Z29uOmZ1bmN0aW9uKHQsZSl7Zm9yKHZhciByPXQuY29vcmRpbmF0ZXMsbj0tMSxpPXIubGVuZ3RoOysrbjxpOylpZihxNihyW25dLGUpKXJldHVybiEwO3JldHVybiExfSxHZW9tZXRyeUNvbGxlY3Rpb246ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dC5nZW9tZXRyaWVzLG49LTEsaT1yLmxlbmd0aDsrK248aTspaWYoemgocltuXSxlKSlyZXR1cm4hMDtyZXR1cm4hMX19O2Z1bmN0aW9uIHpoKHQsZSl7cmV0dXJuIHQmJk82Lmhhc093blByb3BlcnR5KHQudHlwZSk/TzZbdC50eXBlXSh0LGUpOiExfWZ1bmN0aW9uIEY2KHQsZSl7cmV0dXJuIFZoKHQsZSk9PT0wfWZ1bmN0aW9uIFA2KHQsZSl7Zm9yKHZhciByLG4saSxhPTAscz10Lmxlbmd0aDthPHM7YSsrKXtpZihuPVZoKHRbYV0sZSksbj09PTB8fGE+MCYmKGk9VmgodFthXSx0W2EtMV0pLGk+MCYmcjw9aSYmbjw9aSYmKHIrbi1pKSooMS1NYXRoLnBvdygoci1uKS9pLDIpKTxIbCppKSlyZXR1cm4hMDtyPW59cmV0dXJuITF9ZnVuY3Rpb24gcTYodCxlKXtyZXR1cm4hIVI2KHQubWFwKE5xKSxWNihlKSl9ZnVuY3Rpb24gTnEodCl7cmV0dXJuIHQ9dC5tYXAoVjYpLHQucG9wKCksdH1mdW5jdGlvbiBWNih0KXtyZXR1cm5bdFswXSpyZSx0WzFdKnJlXX1mdW5jdGlvbiBCcSh0LGUpe3JldHVybih0JiZENi5oYXNPd25Qcm9wZXJ0eSh0LnR5cGUpP0Q2W3QudHlwZV06emgpKHQsZSl9ZnVuY3Rpb24gejYodCxlLHIpe3ZhciBuPUNhKHQsZS10ZSxyKS5jb25jYXQoZSk7cmV0dXJuIGZ1bmN0aW9uKGkpe3JldHVybiBuLm1hcChmdW5jdGlvbihhKXtyZXR1cm5baSxhXX0pfX1mdW5jdGlvbiBZNih0LGUscil7dmFyIG49Q2EodCxlLXRlLHIpLmNvbmNhdChlKTtyZXR1cm4gZnVuY3Rpb24oaSl7cmV0dXJuIG4ubWFwKGZ1bmN0aW9uKGEpe3JldHVyblthLGldfSl9fWZ1bmN0aW9uIFU2KCl7dmFyIHQsZSxyLG4saSxhLHMsbyxsPTEwLHU9bCxoPTkwLGQ9MzYwLGYscCxtLF8seT0yLjU7ZnVuY3Rpb24gYigpe3JldHVybnt0eXBlOiJNdWx0aUxpbmVTdHJpbmciLGNvb3JkaW5hdGVzOngoKX19ZnVuY3Rpb24geCgpe3JldHVybiBDYShiaChuL2gpKmgscixoKS5tYXAobSkuY29uY2F0KENhKGJoKG8vZCkqZCxzLGQpLm1hcChfKSkuY29uY2F0KENhKGJoKGUvbCkqbCx0LGwpLmZpbHRlcihmdW5jdGlvbihrKXtyZXR1cm4gTmUoayVoKT50ZX0pLm1hcChmKSkuY29uY2F0KENhKGJoKGEvdSkqdSxpLHUpLmZpbHRlcihmdW5jdGlvbihrKXtyZXR1cm4gTmUoayVkKT50ZX0pLm1hcChwKSl9cmV0dXJuIGIubGluZXM9ZnVuY3Rpb24oKXtyZXR1cm4geCgpLm1hcChmdW5jdGlvbihrKXtyZXR1cm57dHlwZToiTGluZVN0cmluZyIsY29vcmRpbmF0ZXM6a319KX0sYi5vdXRsaW5lPWZ1bmN0aW9uKCl7cmV0dXJue3R5cGU6IlBvbHlnb24iLGNvb3JkaW5hdGVzOlttKG4pLmNvbmNhdChfKHMpLnNsaWNlKDEpLG0ocikucmV2ZXJzZSgpLnNsaWNlKDEpLF8obykucmV2ZXJzZSgpLnNsaWNlKDEpKV19fSxiLmV4dGVudD1mdW5jdGlvbihrKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9iLmV4dGVudE1ham9yKGspLmV4dGVudE1pbm9yKGspOmIuZXh0ZW50TWlub3IoKX0sYi5leHRlbnRNYWpvcj1mdW5jdGlvbihrKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0ra1swXVswXSxyPStrWzFdWzBdLG89K2tbMF1bMV0scz0ra1sxXVsxXSxuPnImJihrPW4sbj1yLHI9ayksbz5zJiYoaz1vLG89cyxzPWspLGIucHJlY2lzaW9uKHkpKTpbW24sb10sW3Isc11dfSxiLmV4dGVudE1pbm9yPWZ1bmN0aW9uKGspe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPStrWzBdWzBdLHQ9K2tbMV1bMF0sYT0ra1swXVsxXSxpPStrWzFdWzFdLGU+dCYmKGs9ZSxlPXQsdD1rKSxhPmkmJihrPWEsYT1pLGk9ayksYi5wcmVjaXNpb24oeSkpOltbZSxhXSxbdCxpXV19LGIuc3RlcD1mdW5jdGlvbihrKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9iLnN0ZXBNYWpvcihrKS5zdGVwTWlub3Ioayk6Yi5zdGVwTWlub3IoKX0sYi5zdGVwTWFqb3I9ZnVuY3Rpb24oayl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGg9K2tbMF0sZD0ra1sxXSxiKTpbaCxkXX0sYi5zdGVwTWlub3I9ZnVuY3Rpb24oayl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9K2tbMF0sdT0ra1sxXSxiKTpbbCx1XX0sYi5wcmVjaXNpb249ZnVuY3Rpb24oayl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHk9K2ssZj16NihhLGksOTApLHA9WTYoZSx0LHkpLG09ejYobyxzLDkwKSxfPVk2KG4scix5KSxiKTp5fSxiLmV4dGVudE1ham9yKFtbLTE4MCwtOTArdGVdLFsxODAsOTAtdGVdXSkuZXh0ZW50TWlub3IoW1stMTgwLC04MC10ZV0sWzE4MCw4MCt0ZV1dKX1mdW5jdGlvbiBEcSgpe3JldHVybiBVNigpKCl9ZnVuY3Rpb24gT3EodCxlKXt2YXIgcj10WzBdKnJlLG49dFsxXSpyZSxpPWVbMF0qcmUsYT1lWzFdKnJlLHM9S3Qobiksbz1IdChuKSxsPUt0KGEpLHU9SHQoYSksaD1zKkt0KHIpLGQ9cypIdChyKSxmPWwqS3QoaSkscD1sKkh0KGkpLG09Mip0bihTcihuNihhLW4pK3MqbCpuNihpLXIpKSksXz1IdChtKSx5PW0/ZnVuY3Rpb24oYil7dmFyIHg9SHQoYio9bSkvXyxrPUh0KG0tYikvXyxUPWsqaCt4KmYsQz1rKmQreCpwLE09aypvK3gqdTtyZXR1cm5bSnIoQyxUKSpVZSxKcihNLFNyKFQqVCtDKkMpKSpVZV19OmZ1bmN0aW9uKCl7cmV0dXJuW3IqVWUsbipVZV19O3JldHVybiB5LmRpc3RhbmNlPW0seX1jb25zdCBLbD10PT50O3ZhciB4Mj1uZXcgX3IsazI9bmV3IF9yLFc2LEg2LHcyLFQyLERhPXtwb2ludDpKZSxsaW5lU3RhcnQ6SmUsbGluZUVuZDpKZSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtEYS5saW5lU3RhcnQ9RnEsRGEubGluZUVuZD1xcX0scG9seWdvbkVuZDpmdW5jdGlvbigpe0RhLmxpbmVTdGFydD1EYS5saW5lRW5kPURhLnBvaW50PUplLHgyLmFkZChOZShrMikpLGsyPW5ldyBfcn0scmVzdWx0OmZ1bmN0aW9uKCl7dmFyIHQ9eDIvMjtyZXR1cm4geDI9bmV3IF9yLHR9fTtmdW5jdGlvbiBGcSgpe0RhLnBvaW50PVBxfWZ1bmN0aW9uIFBxKHQsZSl7RGEucG9pbnQ9RzYsVzY9dzI9dCxINj1UMj1lfWZ1bmN0aW9uIEc2KHQsZSl7azIuYWRkKFQyKnQtdzIqZSksdzI9dCxUMj1lfWZ1bmN0aW9uIHFxKCl7RzYoVzYsSDYpfWNvbnN0IGo2PURhO3ZhciBJbz0xLzAsWWg9SW8sWmw9LUlvLFVoPVpsLFZxPXtwb2ludDp6cSxsaW5lU3RhcnQ6SmUsbGluZUVuZDpKZSxwb2x5Z29uU3RhcnQ6SmUscG9seWdvbkVuZDpKZSxyZXN1bHQ6ZnVuY3Rpb24oKXt2YXIgdD1bW0lvLFloXSxbWmwsVWhdXTtyZXR1cm4gWmw9VWg9LShZaD1Jbz0xLzApLHR9fTtmdW5jdGlvbiB6cSh0LGUpe3Q8SW8mJihJbz10KSx0PlpsJiYoWmw9dCksZTxZaCYmKFloPWUpLGU+VWgmJihVaD1lKX1jb25zdCBXaD1WcTt2YXIgRTI9MCxDMj0wLFFsPTAsSGg9MCxHaD0wLE5vPTAsUzI9MCxBMj0wLEpsPTAsJDYsWDYsQWksTWkscmk9e3BvaW50OkFzLGxpbmVTdGFydDpLNixsaW5lRW5kOlo2LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe3JpLmxpbmVTdGFydD1XcSxyaS5saW5lRW5kPUhxfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7cmkucG9pbnQ9QXMscmkubGluZVN0YXJ0PUs2LHJpLmxpbmVFbmQ9WjZ9LHJlc3VsdDpmdW5jdGlvbigpe3ZhciB0PUpsP1tTMi9KbCxBMi9KbF06Tm8/W0hoL05vLEdoL05vXTpRbD9bRTIvUWwsQzIvUWxdOltOYU4sTmFOXTtyZXR1cm4gRTI9QzI9UWw9SGg9R2g9Tm89UzI9QTI9Smw9MCx0fX07ZnVuY3Rpb24gQXModCxlKXtFMis9dCxDMis9ZSwrK1FsfWZ1bmN0aW9uIEs2KCl7cmkucG9pbnQ9WXF9ZnVuY3Rpb24gWXEodCxlKXtyaS5wb2ludD1VcSxBcyhBaT10LE1pPWUpfWZ1bmN0aW9uIFVxKHQsZSl7dmFyIHI9dC1BaSxuPWUtTWksaT1TcihyKnIrbipuKTtIaCs9aSooQWkrdCkvMixHaCs9aSooTWkrZSkvMixObys9aSxBcyhBaT10LE1pPWUpfWZ1bmN0aW9uIFo2KCl7cmkucG9pbnQ9QXN9ZnVuY3Rpb24gV3EoKXtyaS5wb2ludD1HcX1mdW5jdGlvbiBIcSgpe1E2KCQ2LFg2KX1mdW5jdGlvbiBHcSh0LGUpe3JpLnBvaW50PVE2LEFzKCQ2PUFpPXQsWDY9TWk9ZSl9ZnVuY3Rpb24gUTYodCxlKXt2YXIgcj10LUFpLG49ZS1NaSxpPVNyKHIqcituKm4pO0hoKz1pKihBaSt0KS8yLEdoKz1pKihNaStlKS8yLE5vKz1pLGk9TWkqdC1BaSplLFMyKz1pKihBaSt0KSxBMis9aSooTWkrZSksSmwrPWkqMyxBcyhBaT10LE1pPWUpfWNvbnN0IEo2PXJpO2Z1bmN0aW9uIHR4KHQpe3RoaXMuX2NvbnRleHQ9dH10eC5wcm90b3R5cGU9e19yYWRpdXM6NC41LHBvaW50UmFkaXVzOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9yYWRpdXM9dCx0aGlzfSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9PT0wJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX3BvaW50PU5hTn0scG9pbnQ6ZnVuY3Rpb24odCxlKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMDp7dGhpcy5fY29udGV4dC5tb3ZlVG8odCxlKSx0aGlzLl9wb2ludD0xO2JyZWFrfWNhc2UgMTp7dGhpcy5fY29udGV4dC5saW5lVG8odCxlKTticmVha31kZWZhdWx0Ont0aGlzLl9jb250ZXh0Lm1vdmVUbyh0K3RoaXMuX3JhZGl1cyxlKSx0aGlzLl9jb250ZXh0LmFyYyh0LGUsdGhpcy5fcmFkaXVzLDAsUXIpO2JyZWFrfX19LHJlc3VsdDpKZX07dmFyIE0yPW5ldyBfcixMMixleCxyeCx0YyxlYyxqaD17cG9pbnQ6SmUsbGluZVN0YXJ0OmZ1bmN0aW9uKCl7amgucG9pbnQ9anF9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtMMiYmbngoZXgscngpLGpoLnBvaW50PUplfSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtMMj0hMH0scG9seWdvbkVuZDpmdW5jdGlvbigpe0wyPW51bGx9LHJlc3VsdDpmdW5jdGlvbigpe3ZhciB0PStNMjtyZXR1cm4gTTI9bmV3IF9yLHR9fTtmdW5jdGlvbiBqcSh0LGUpe2poLnBvaW50PW54LGV4PXRjPXQscng9ZWM9ZX1mdW5jdGlvbiBueCh0LGUpe3RjLT10LGVjLT1lLE0yLmFkZChTcih0Yyp0YytlYyplYykpLHRjPXQsZWM9ZX1jb25zdCBpeD1qaDtmdW5jdGlvbiBheCgpe3RoaXMuX3N0cmluZz1bXX1heC5wcm90b3R5cGU9e19yYWRpdXM6NC41LF9jaXJjbGU6c3goNC41KSxwb2ludFJhZGl1czpmdW5jdGlvbih0KXtyZXR1cm4odD0rdCkhPT10aGlzLl9yYWRpdXMmJih0aGlzLl9yYWRpdXM9dCx0aGlzLl9jaXJjbGU9bnVsbCksdGhpc30scG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPT09MCYmdGhpcy5fc3RyaW5nLnB1c2goIloiKSx0aGlzLl9wb2ludD1OYU59LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6e3RoaXMuX3N0cmluZy5wdXNoKCJNIix0LCIsIixlKSx0aGlzLl9wb2ludD0xO2JyZWFrfWNhc2UgMTp7dGhpcy5fc3RyaW5nLnB1c2goIkwiLHQsIiwiLGUpO2JyZWFrfWRlZmF1bHQ6e3RoaXMuX2NpcmNsZT09bnVsbCYmKHRoaXMuX2NpcmNsZT1zeCh0aGlzLl9yYWRpdXMpKSx0aGlzLl9zdHJpbmcucHVzaCgiTSIsdCwiLCIsZSx0aGlzLl9jaXJjbGUpO2JyZWFrfX19LHJlc3VsdDpmdW5jdGlvbigpe2lmKHRoaXMuX3N0cmluZy5sZW5ndGgpe3ZhciB0PXRoaXMuX3N0cmluZy5qb2luKCIiKTtyZXR1cm4gdGhpcy5fc3RyaW5nPVtdLHR9ZWxzZSByZXR1cm4gbnVsbH19O2Z1bmN0aW9uIHN4KHQpe3JldHVybiJtMCwiK3QrImEiK3QrIiwiK3QrIiAwIDEsMSAwLCIrLTIqdCsiYSIrdCsiLCIrdCsiIDAgMSwxIDAsIisyKnQrInoifWZ1bmN0aW9uICRxKHQsZSl7dmFyIHI9NC41LG4saTtmdW5jdGlvbiBhKHMpe3JldHVybiBzJiYodHlwZW9mIHI9PSJmdW5jdGlvbiImJmkucG9pbnRSYWRpdXMoK3IuYXBwbHkodGhpcyxhcmd1bWVudHMpKSx0aShzLG4oaSkpKSxpLnJlc3VsdCgpfXJldHVybiBhLmFyZWE9ZnVuY3Rpb24ocyl7cmV0dXJuIHRpKHMsbihqNikpLGo2LnJlc3VsdCgpfSxhLm1lYXN1cmU9ZnVuY3Rpb24ocyl7cmV0dXJuIHRpKHMsbihpeCkpLGl4LnJlc3VsdCgpfSxhLmJvdW5kcz1mdW5jdGlvbihzKXtyZXR1cm4gdGkocyxuKFdoKSksV2gucmVzdWx0KCl9LGEuY2VudHJvaWQ9ZnVuY3Rpb24ocyl7cmV0dXJuIHRpKHMsbihKNikpLEo2LnJlc3VsdCgpfSxhLnByb2plY3Rpb249ZnVuY3Rpb24ocyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49cz09bnVsbD8odD1udWxsLEtsKToodD1zKS5zdHJlYW0sYSk6dH0sYS5jb250ZXh0PWZ1bmN0aW9uKHMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPXM9PW51bGw/KGU9bnVsbCxuZXcgYXgpOm5ldyB0eChlPXMpLHR5cGVvZiByIT0iZnVuY3Rpb24iJiZpLnBvaW50UmFkaXVzKHIpLGEpOmV9LGEucG9pbnRSYWRpdXM9ZnVuY3Rpb24ocyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dHlwZW9mIHM9PSJmdW5jdGlvbiI/czooaS5wb2ludFJhZGl1cygrcyksK3MpLGEpOnJ9LGEucHJvamVjdGlvbih0KS5jb250ZXh0KGUpfWZ1bmN0aW9uIFhxKHQpe3JldHVybntzdHJlYW06cmModCl9fWZ1bmN0aW9uIHJjKHQpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgcj1uZXcgUjI7Zm9yKHZhciBuIGluIHQpcltuXT10W25dO3JldHVybiByLnN0cmVhbT1lLHJ9fWZ1bmN0aW9uIFIyKCl7fVIyLnByb3RvdHlwZT17Y29uc3RydWN0b3I6UjIscG9pbnQ6ZnVuY3Rpb24odCxlKXt0aGlzLnN0cmVhbS5wb2ludCh0LGUpfSxzcGhlcmU6ZnVuY3Rpb24oKXt0aGlzLnN0cmVhbS5zcGhlcmUoKX0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0ubGluZVN0YXJ0KCl9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt0aGlzLnN0cmVhbS5saW5lRW5kKCl9LHBvbHlnb25TdGFydDpmdW5jdGlvbigpe3RoaXMuc3RyZWFtLnBvbHlnb25TdGFydCgpfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7dGhpcy5zdHJlYW0ucG9seWdvbkVuZCgpfX07ZnVuY3Rpb24gSTIodCxlLHIpe3ZhciBuPXQuY2xpcEV4dGVudCYmdC5jbGlwRXh0ZW50KCk7cmV0dXJuIHQuc2NhbGUoMTUwKS50cmFuc2xhdGUoWzAsMF0pLG4hPW51bGwmJnQuY2xpcEV4dGVudChudWxsKSx0aShyLHQuc3RyZWFtKFdoKSksZShXaC5yZXN1bHQoKSksbiE9bnVsbCYmdC5jbGlwRXh0ZW50KG4pLHR9ZnVuY3Rpb24gJGgodCxlLHIpe3JldHVybiBJMih0LGZ1bmN0aW9uKG4pe3ZhciBpPWVbMV1bMF0tZVswXVswXSxhPWVbMV1bMV0tZVswXVsxXSxzPU1hdGgubWluKGkvKG5bMV1bMF0tblswXVswXSksYS8oblsxXVsxXS1uWzBdWzFdKSksbz0rZVswXVswXSsoaS1zKihuWzFdWzBdK25bMF1bMF0pKS8yLGw9K2VbMF1bMV0rKGEtcyooblsxXVsxXStuWzBdWzFdKSkvMjt0LnNjYWxlKDE1MCpzKS50cmFuc2xhdGUoW28sbF0pfSxyKX1mdW5jdGlvbiBOMih0LGUscil7cmV0dXJuICRoKHQsW1swLDBdLGVdLHIpfWZ1bmN0aW9uIEIyKHQsZSxyKXtyZXR1cm4gSTIodCxmdW5jdGlvbihuKXt2YXIgaT0rZSxhPWkvKG5bMV1bMF0tblswXVswXSkscz0oaS1hKihuWzFdWzBdK25bMF1bMF0pKS8yLG89LWEqblswXVsxXTt0LnNjYWxlKDE1MCphKS50cmFuc2xhdGUoW3Msb10pfSxyKX1mdW5jdGlvbiBEMih0LGUscil7cmV0dXJuIEkyKHQsZnVuY3Rpb24obil7dmFyIGk9K2UsYT1pLyhuWzFdWzFdLW5bMF1bMV0pLHM9LWEqblswXVswXSxvPShpLWEqKG5bMV1bMV0rblswXVsxXSkpLzI7dC5zY2FsZSgxNTAqYSkudHJhbnNsYXRlKFtzLG9dKX0scil9dmFyIG94PTE2LEtxPUt0KDMwKnJlKTtmdW5jdGlvbiBseCh0LGUpe3JldHVybitlP1FxKHQsZSk6WnEodCl9ZnVuY3Rpb24gWnEodCl7cmV0dXJuIHJjKHtwb2ludDpmdW5jdGlvbihlLHIpe2U9dChlLHIpLHRoaXMuc3RyZWFtLnBvaW50KGVbMF0sZVsxXSl9fSl9ZnVuY3Rpb24gUXEodCxlKXtmdW5jdGlvbiByKG4saSxhLHMsbyxsLHUsaCxkLGYscCxtLF8seSl7dmFyIGI9dS1uLHg9aC1pLGs9YipiK3gqeDtpZihrPjQqZSYmXy0tKXt2YXIgVD1zK2YsQz1vK3AsTT1sK20sUz1TcihUKlQrQypDK00qTSksUj10bihNLz1TKSxBPU5lKE5lKE0pLTEpPHRlfHxOZShhLWQpPHRlPyhhK2QpLzI6SnIoQyxUKSxMPXQoQSxSKSx2PUxbMF0sQj1MWzFdLHc9di1uLEQ9Qi1pLE49eCp3LWIqRDsoTipOL2s+ZXx8TmUoKGIqdyt4KkQpL2stLjUpPi4zfHxzKmYrbypwK2wqbTxLcSkmJihyKG4saSxhLHMsbyxsLHYsQixBLFQvPVMsQy89UyxNLF8seSkseS5wb2ludCh2LEIpLHIodixCLEEsVCxDLE0sdSxoLGQsZixwLG0sXyx5KSl9fXJldHVybiBmdW5jdGlvbihuKXt2YXIgaSxhLHMsbyxsLHUsaCxkLGYscCxtLF8seT17cG9pbnQ6YixsaW5lU3RhcnQ6eCxsaW5lRW5kOlQscG9seWdvblN0YXJ0OmZ1bmN0aW9uKCl7bi5wb2x5Z29uU3RhcnQoKSx5LmxpbmVTdGFydD1DfSxwb2x5Z29uRW5kOmZ1bmN0aW9uKCl7bi5wb2x5Z29uRW5kKCkseS5saW5lU3RhcnQ9eH19O2Z1bmN0aW9uIGIoUixBKXtSPXQoUixBKSxuLnBvaW50KFJbMF0sUlsxXSl9ZnVuY3Rpb24geCgpe2Q9TmFOLHkucG9pbnQ9ayxuLmxpbmVTdGFydCgpfWZ1bmN0aW9uIGsoUixBKXt2YXIgTD1DcyhbUixBXSksdj10KFIsQSk7cihkLGYsaCxwLG0sXyxkPXZbMF0sZj12WzFdLGg9UixwPUxbMF0sbT1MWzFdLF89TFsyXSxveCxuKSxuLnBvaW50KGQsZil9ZnVuY3Rpb24gVCgpe3kucG9pbnQ9YixuLmxpbmVFbmQoKX1mdW5jdGlvbiBDKCl7eCgpLHkucG9pbnQ9TSx5LmxpbmVFbmQ9U31mdW5jdGlvbiBNKFIsQSl7ayhpPVIsQSksYT1kLHM9ZixvPXAsbD1tLHU9Xyx5LnBvaW50PWt9ZnVuY3Rpb24gUygpe3IoZCxmLGgscCxtLF8sYSxzLGksbyxsLHUsb3gsbikseS5saW5lRW5kPVQsVCgpfXJldHVybiB5fX12YXIgSnE9cmMoe3BvaW50OmZ1bmN0aW9uKHQsZSl7dGhpcy5zdHJlYW0ucG9pbnQodCpyZSxlKnJlKX19KTtmdW5jdGlvbiB0Vih0KXtyZXR1cm4gcmMoe3BvaW50OmZ1bmN0aW9uKGUscil7dmFyIG49dChlLHIpO3JldHVybiB0aGlzLnN0cmVhbS5wb2ludChuWzBdLG5bMV0pfX0pfWZ1bmN0aW9uIGVWKHQsZSxyLG4saSl7ZnVuY3Rpb24gYShzLG8pe3JldHVybiBzKj1uLG8qPWksW2UrdCpzLHItdCpvXX1yZXR1cm4gYS5pbnZlcnQ9ZnVuY3Rpb24ocyxvKXtyZXR1cm5bKHMtZSkvdCpuLChyLW8pL3QqaV19LGF9ZnVuY3Rpb24gY3godCxlLHIsbixpLGEpe2lmKCFhKXJldHVybiBlVih0LGUscixuLGkpO3ZhciBzPUt0KGEpLG89SHQoYSksbD1zKnQsdT1vKnQsaD1zL3QsZD1vL3QsZj0obypyLXMqZSkvdCxwPShvKmUrcypyKS90O2Z1bmN0aW9uIG0oXyx5KXtyZXR1cm4gXyo9bix5Kj1pLFtsKl8tdSp5K2Usci11Kl8tbCp5XX1yZXR1cm4gbS5pbnZlcnQ9ZnVuY3Rpb24oXyx5KXtyZXR1cm5bbiooaCpfLWQqeStmKSxpKihwLWQqXy1oKnkpXX0sbX1mdW5jdGlvbiBMaSh0KXtyZXR1cm4gTzIoZnVuY3Rpb24oKXtyZXR1cm4gdH0pKCl9ZnVuY3Rpb24gTzIodCl7dmFyIGUscj0xNTAsbj00ODAsaT0yNTAsYT0wLHM9MCxvPTAsbD0wLHU9MCxoLGQ9MCxmPTEscD0xLG09bnVsbCxfPW0yLHk9bnVsbCxiLHgsayxUPUtsLEM9LjUsTSxTLFIsQSxMO2Z1bmN0aW9uIHYoTil7cmV0dXJuIFIoTlswXSpyZSxOWzFdKnJlKX1mdW5jdGlvbiBCKE4pe3JldHVybiBOPVIuaW52ZXJ0KE5bMF0sTlsxXSksTiYmW05bMF0qVWUsTlsxXSpVZV19di5zdHJlYW09ZnVuY3Rpb24oTil7cmV0dXJuIEEmJkw9PT1OP0E6QT1KcSh0VihoKShfKE0oVChMPU4pKSkpKX0sdi5wcmVjbGlwPWZ1bmN0aW9uKE4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhfPU4sbT12b2lkIDAsRCgpKTpffSx2LnBvc3RjbGlwPWZ1bmN0aW9uKE4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhUPU4seT1iPXg9az1udWxsLEQoKSk6VH0sdi5jbGlwQW5nbGU9ZnVuY3Rpb24oTil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KF89K04/TjYobT1OKnJlKToobT1udWxsLG0yKSxEKCkpOm0qVWV9LHYuY2xpcEV4dGVudD1mdW5jdGlvbihOKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oVD1OPT1udWxsPyh5PWI9eD1rPW51bGwsS2wpOkZoKHk9K05bMF1bMF0sYj0rTlswXVsxXSx4PStOWzFdWzBdLGs9K05bMV1bMV0pLEQoKSk6eT09bnVsbD9udWxsOltbeSxiXSxbeCxrXV19LHYuc2NhbGU9ZnVuY3Rpb24oTil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9K04sdygpKTpyfSx2LnRyYW5zbGF0ZT1mdW5jdGlvbihOKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0rTlswXSxpPStOWzFdLHcoKSk6W24saV19LHYuY2VudGVyPWZ1bmN0aW9uKE4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPU5bMF0lMzYwKnJlLHM9TlsxXSUzNjAqcmUsdygpKTpbYSpVZSxzKlVlXX0sdi5yb3RhdGU9ZnVuY3Rpb24oTil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89TlswXSUzNjAqcmUsbD1OWzFdJTM2MCpyZSx1PU4ubGVuZ3RoPjI/TlsyXSUzNjAqcmU6MCx3KCkpOltvKlVlLGwqVWUsdSpVZV19LHYuYW5nbGU9ZnVuY3Rpb24oTil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGQ9TiUzNjAqcmUsdygpKTpkKlVlfSx2LnJlZmxlY3RYPWZ1bmN0aW9uKE4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhmPU4/LTE6MSx3KCkpOmY8MH0sdi5yZWZsZWN0WT1mdW5jdGlvbihOKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocD1OPy0xOjEsdygpKTpwPDB9LHYucHJlY2lzaW9uPWZ1bmN0aW9uKE4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhNPWx4KFMsQz1OKk4pLEQoKSk6U3IoQyl9LHYuZml0RXh0ZW50PWZ1bmN0aW9uKE4seil7cmV0dXJuICRoKHYsTix6KX0sdi5maXRTaXplPWZ1bmN0aW9uKE4seil7cmV0dXJuIE4yKHYsTix6KX0sdi5maXRXaWR0aD1mdW5jdGlvbihOLHope3JldHVybiBCMih2LE4seil9LHYuZml0SGVpZ2h0PWZ1bmN0aW9uKE4seil7cmV0dXJuIEQyKHYsTix6KX07ZnVuY3Rpb24gdygpe3ZhciBOPWN4KHIsMCwwLGYscCxkKS5hcHBseShudWxsLGUoYSxzKSksej1jeChyLG4tTlswXSxpLU5bMV0sZixwLGQpO3JldHVybiBoPWcyKG8sbCx1KSxTPWQyKGUseiksUj1kMihoLFMpLE09bHgoUyxDKSxEKCl9ZnVuY3Rpb24gRCgpe3JldHVybiBBPUw9bnVsbCx2fXJldHVybiBmdW5jdGlvbigpe3JldHVybiBlPXQuYXBwbHkodGhpcyxhcmd1bWVudHMpLHYuaW52ZXJ0PWUuaW52ZXJ0JiZCLHcoKX19ZnVuY3Rpb24gRjIodCl7dmFyIGU9MCxyPUFlLzMsbj1PMih0KSxpPW4oZSxyKTtyZXR1cm4gaS5wYXJhbGxlbHM9ZnVuY3Rpb24oYSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/bihlPWFbMF0qcmUscj1hWzFdKnJlKTpbZSpVZSxyKlVlXX0saX1mdW5jdGlvbiByVih0KXt2YXIgZT1LdCh0KTtmdW5jdGlvbiByKG4saSl7cmV0dXJuW24qZSxIdChpKS9lXX1yZXR1cm4gci5pbnZlcnQ9ZnVuY3Rpb24obixpKXtyZXR1cm5bbi9lLHRuKGkqZSldfSxyfWZ1bmN0aW9uIHV4KHQsZSl7dmFyIHI9SHQodCksbj0ocitIdChlKSkvMjtpZihOZShuKTx0ZSlyZXR1cm4gclYodCk7dmFyIGk9MStyKigyKm4tciksYT1TcihpKS9uO2Z1bmN0aW9uIHMobyxsKXt2YXIgdT1TcihpLTIqbipIdChsKSkvbjtyZXR1cm5bdSpIdChvKj1uKSxhLXUqS3QobyldfXJldHVybiBzLmludmVydD1mdW5jdGlvbihvLGwpe3ZhciB1PWEtbCxoPUpyKG8sTmUodSkpKkRuKHUpO3JldHVybiB1Km48MCYmKGgtPUFlKkRuKG8pKkRuKHUpKSxbaC9uLHRuKChpLShvKm8rdSp1KSpuKm4pLygyKm4pKV19LHN9ZnVuY3Rpb24gWGgoKXtyZXR1cm4gRjIodXgpLnNjYWxlKDE1NS40MjQpLmNlbnRlcihbMCwzMy42NDQyXSl9ZnVuY3Rpb24gaHgoKXtyZXR1cm4gWGgoKS5wYXJhbGxlbHMoWzI5LjUsNDUuNV0pLnNjYWxlKDEwNzApLnRyYW5zbGF0ZShbNDgwLDI1MF0pLnJvdGF0ZShbOTYsMF0pLmNlbnRlcihbLS42LDM4LjddKX1mdW5jdGlvbiBuVih0KXt2YXIgZT10Lmxlbmd0aDtyZXR1cm57cG9pbnQ6ZnVuY3Rpb24ocixuKXtmb3IodmFyIGk9LTE7KytpPGU7KXRbaV0ucG9pbnQocixuKX0sc3BoZXJlOmZ1bmN0aW9uKCl7Zm9yKHZhciByPS0xOysrcjxlOyl0W3JdLnNwaGVyZSgpfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXtmb3IodmFyIHI9LTE7KytyPGU7KXRbcl0ubGluZVN0YXJ0KCl9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtmb3IodmFyIHI9LTE7KytyPGU7KXRbcl0ubGluZUVuZCgpfSxwb2x5Z29uU3RhcnQ6ZnVuY3Rpb24oKXtmb3IodmFyIHI9LTE7KytyPGU7KXRbcl0ucG9seWdvblN0YXJ0KCl9LHBvbHlnb25FbmQ6ZnVuY3Rpb24oKXtmb3IodmFyIHI9LTE7KytyPGU7KXRbcl0ucG9seWdvbkVuZCgpfX19ZnVuY3Rpb24gaVYoKXt2YXIgdCxlLHI9aHgoKSxuLGk9WGgoKS5yb3RhdGUoWzE1NCwwXSkuY2VudGVyKFstMiw1OC41XSkucGFyYWxsZWxzKFs1NSw2NV0pLGEscz1YaCgpLnJvdGF0ZShbMTU3LDBdKS5jZW50ZXIoWy0zLDE5LjldKS5wYXJhbGxlbHMoWzgsMThdKSxvLGwsdT17cG9pbnQ6ZnVuY3Rpb24oZixwKXtsPVtmLHBdfX07ZnVuY3Rpb24gaChmKXt2YXIgcD1mWzBdLG09ZlsxXTtyZXR1cm4gbD1udWxsLG4ucG9pbnQocCxtKSxsfHwoYS5wb2ludChwLG0pLGwpfHwoby5wb2ludChwLG0pLGwpfWguaW52ZXJ0PWZ1bmN0aW9uKGYpe3ZhciBwPXIuc2NhbGUoKSxtPXIudHJhbnNsYXRlKCksXz0oZlswXS1tWzBdKS9wLHk9KGZbMV0tbVsxXSkvcDtyZXR1cm4oeT49LjEyJiZ5PC4yMzQmJl8+PS0uNDI1JiZfPC0uMjE0P2k6eT49LjE2NiYmeTwuMjM0JiZfPj0tLjIxNCYmXzwtLjExNT9zOnIpLmludmVydChmKX0saC5zdHJlYW09ZnVuY3Rpb24oZil7cmV0dXJuIHQmJmU9PT1mP3Q6dD1uVihbci5zdHJlYW0oZT1mKSxpLnN0cmVhbShmKSxzLnN0cmVhbShmKV0pfSxoLnByZWNpc2lvbj1mdW5jdGlvbihmKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oci5wcmVjaXNpb24oZiksaS5wcmVjaXNpb24oZikscy5wcmVjaXNpb24oZiksZCgpKTpyLnByZWNpc2lvbigpfSxoLnNjYWxlPWZ1bmN0aW9uKGYpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyLnNjYWxlKGYpLGkuc2NhbGUoZiouMzUpLHMuc2NhbGUoZiksaC50cmFuc2xhdGUoci50cmFuc2xhdGUoKSkpOnIuc2NhbGUoKX0saC50cmFuc2xhdGU9ZnVuY3Rpb24oZil7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHIudHJhbnNsYXRlKCk7dmFyIHA9ci5zY2FsZSgpLG09K2ZbMF0sXz0rZlsxXTtyZXR1cm4gbj1yLnRyYW5zbGF0ZShmKS5jbGlwRXh0ZW50KFtbbS0uNDU1KnAsXy0uMjM4KnBdLFttKy40NTUqcCxfKy4yMzgqcF1dKS5zdHJlYW0odSksYT1pLnRyYW5zbGF0ZShbbS0uMzA3KnAsXysuMjAxKnBdKS5jbGlwRXh0ZW50KFtbbS0uNDI1KnArdGUsXysuMTIqcCt0ZV0sW20tLjIxNCpwLXRlLF8rLjIzNCpwLXRlXV0pLnN0cmVhbSh1KSxvPXMudHJhbnNsYXRlKFttLS4yMDUqcCxfKy4yMTIqcF0pLmNsaXBFeHRlbnQoW1ttLS4yMTQqcCt0ZSxfKy4xNjYqcCt0ZV0sW20tLjExNSpwLXRlLF8rLjIzNCpwLXRlXV0pLnN0cmVhbSh1KSxkKCl9LGguZml0RXh0ZW50PWZ1bmN0aW9uKGYscCl7cmV0dXJuICRoKGgsZixwKX0saC5maXRTaXplPWZ1bmN0aW9uKGYscCl7cmV0dXJuIE4yKGgsZixwKX0saC5maXRXaWR0aD1mdW5jdGlvbihmLHApe3JldHVybiBCMihoLGYscCl9LGguZml0SGVpZ2h0PWZ1bmN0aW9uKGYscCl7cmV0dXJuIEQyKGgsZixwKX07ZnVuY3Rpb24gZCgpe3JldHVybiB0PWU9bnVsbCxofXJldHVybiBoLnNjYWxlKDEwNzApfWZ1bmN0aW9uIGZ4KHQpe3JldHVybiBmdW5jdGlvbihlLHIpe3ZhciBuPUt0KGUpLGk9S3QociksYT10KG4qaSk7cmV0dXJuIGE9PT0xLzA/WzIsMF06W2EqaSpIdChlKSxhKkh0KHIpXX19ZnVuY3Rpb24gbmModCl7cmV0dXJuIGZ1bmN0aW9uKGUscil7dmFyIG49U3IoZSplK3IqciksaT10KG4pLGE9SHQoaSkscz1LdChpKTtyZXR1cm5bSnIoZSphLG4qcyksdG4obiYmciphL24pXX19dmFyIFAyPWZ4KGZ1bmN0aW9uKHQpe3JldHVybiBTcigyLygxK3QpKX0pO1AyLmludmVydD1uYyhmdW5jdGlvbih0KXtyZXR1cm4gMip0bih0LzIpfSk7ZnVuY3Rpb24gYVYoKXtyZXR1cm4gTGkoUDIpLnNjYWxlKDEyNC43NSkuY2xpcEFuZ2xlKDE4MC0uMDAxKX12YXIgcTI9ZngoZnVuY3Rpb24odCl7cmV0dXJuKHQ9cjYodCkpJiZ0L0h0KHQpfSk7cTIuaW52ZXJ0PW5jKGZ1bmN0aW9uKHQpe3JldHVybiB0fSk7ZnVuY3Rpb24gc1YoKXtyZXR1cm4gTGkocTIpLnNjYWxlKDc5LjQxODgpLmNsaXBBbmdsZSgxODAtLjAwMSl9ZnVuY3Rpb24gaWModCxlKXtyZXR1cm5bdCxfaChyMigocnIrZSkvMikpXX1pYy5pbnZlcnQ9ZnVuY3Rpb24odCxlKXtyZXR1cm5bdCwyKlNvKGU2KGUpKS1ycl19O2Z1bmN0aW9uIG9WKCl7cmV0dXJuIGR4KGljKS5zY2FsZSg5NjEvUXIpfWZ1bmN0aW9uIGR4KHQpe3ZhciBlPUxpKHQpLHI9ZS5jZW50ZXIsbj1lLnNjYWxlLGk9ZS50cmFuc2xhdGUsYT1lLmNsaXBFeHRlbnQscz1udWxsLG8sbCx1O2Uuc2NhbGU9ZnVuY3Rpb24oZCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG4oZCksaCgpKTpuKCl9LGUudHJhbnNsYXRlPWZ1bmN0aW9uKGQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpKGQpLGgoKSk6aSgpfSxlLmNlbnRlcj1mdW5jdGlvbihkKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocihkKSxoKCkpOnIoKX0sZS5jbGlwRXh0ZW50PWZ1bmN0aW9uKGQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhkPT1udWxsP3M9bz1sPXU9bnVsbDoocz0rZFswXVswXSxvPStkWzBdWzFdLGw9K2RbMV1bMF0sdT0rZFsxXVsxXSksaCgpKTpzPT1udWxsP251bGw6W1tzLG9dLFtsLHVdXX07ZnVuY3Rpb24gaCgpe3ZhciBkPUFlKm4oKSxmPWUoRTYoZS5yb3RhdGUoKSkuaW52ZXJ0KFswLDBdKSk7cmV0dXJuIGEocz09bnVsbD9bW2ZbMF0tZCxmWzFdLWRdLFtmWzBdK2QsZlsxXStkXV06dD09PWljP1tbTWF0aC5tYXgoZlswXS1kLHMpLG9dLFtNYXRoLm1pbihmWzBdK2QsbCksdV1dOltbcyxNYXRoLm1heChmWzFdLWQsbyldLFtsLE1hdGgubWluKGZbMV0rZCx1KV1dKX1yZXR1cm4gaCgpfWZ1bmN0aW9uIEtoKHQpe3JldHVybiByMigocnIrdCkvMil9ZnVuY3Rpb24gcHgodCxlKXt2YXIgcj1LdCh0KSxuPXQ9PT1lP0h0KHQpOl9oKHIvS3QoZSkpL19oKEtoKGUpL0toKHQpKSxpPXIqZTIoS2godCksbikvbjtpZighbilyZXR1cm4gaWM7ZnVuY3Rpb24gYShzLG8pe2k+MD9vPC1ycit0ZSYmKG89LXJyK3RlKTpvPnJyLXRlJiYobz1yci10ZSk7dmFyIGw9aS9lMihLaChvKSxuKTtyZXR1cm5bbCpIdChuKnMpLGktbCpLdChuKnMpXX1yZXR1cm4gYS5pbnZlcnQ9ZnVuY3Rpb24ocyxvKXt2YXIgbD1pLW8sdT1EbihuKSpTcihzKnMrbCpsKSxoPUpyKHMsTmUobCkpKkRuKGwpO3JldHVybiBsKm48MCYmKGgtPUFlKkRuKHMpKkRuKGwpKSxbaC9uLDIqU28oZTIoaS91LDEvbikpLXJyXX0sYX1mdW5jdGlvbiBsVigpe3JldHVybiBGMihweCkuc2NhbGUoMTA5LjUpLnBhcmFsbGVscyhbMzAsMzBdKX1mdW5jdGlvbiBhYyh0LGUpe3JldHVyblt0LGVdfWFjLmludmVydD1hYztmdW5jdGlvbiBjVigpe3JldHVybiBMaShhYykuc2NhbGUoMTUyLjYzKX1mdW5jdGlvbiBneCh0LGUpe3ZhciByPUt0KHQpLG49dD09PWU/SHQodCk6KHItS3QoZSkpLyhlLXQpLGk9ci9uK3Q7aWYoTmUobik8dGUpcmV0dXJuIGFjO2Z1bmN0aW9uIGEocyxvKXt2YXIgbD1pLW8sdT1uKnM7cmV0dXJuW2wqSHQodSksaS1sKkt0KHUpXX1yZXR1cm4gYS5pbnZlcnQ9ZnVuY3Rpb24ocyxvKXt2YXIgbD1pLW8sdT1KcihzLE5lKGwpKSpEbihsKTtyZXR1cm4gbCpuPDAmJih1LT1BZSpEbihzKSpEbihsKSksW3UvbixpLURuKG4pKlNyKHMqcytsKmwpXX0sYX1mdW5jdGlvbiB1Vigpe3JldHVybiBGMihneCkuc2NhbGUoMTMxLjE1NCkuY2VudGVyKFswLDEzLjkzODldKX12YXIgc2M9MS4zNDAyNjQsb2M9LS4wODExMDYsbGM9ODkzZS02LGNjPS4wMDM3OTYsWmg9U3IoMykvMixoVj0xMjtmdW5jdGlvbiBWMih0LGUpe3ZhciByPXRuKFpoKkh0KGUpKSxuPXIqcixpPW4qbipuO3JldHVyblt0Kkt0KHIpLyhaaCooc2MrMypvYypuK2kqKDcqbGMrOSpjYypuKSkpLHIqKHNjK29jKm4raSoobGMrY2MqbikpXX1WMi5pbnZlcnQ9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9ZSxuPXIqcixpPW4qbipuLGE9MCxzLG8sbDthPGhWJiYobz1yKihzYytvYypuK2kqKGxjK2NjKm4pKS1lLGw9c2MrMypvYypuK2kqKDcqbGMrOSpjYypuKSxyLT1zPW8vbCxuPXIqcixpPW4qbipuLCEoTmUocyk8SGwpKTsrK2EpO3JldHVybltaaCp0KihzYyszKm9jKm4raSooNypsYys5KmNjKm4pKS9LdChyKSx0bihIdChyKS9aaCldfTtmdW5jdGlvbiBmVigpe3JldHVybiBMaShWMikuc2NhbGUoMTc3LjE1OCl9ZnVuY3Rpb24gejIodCxlKXt2YXIgcj1LdChlKSxuPUt0KHQpKnI7cmV0dXJuW3IqSHQodCkvbixIdChlKS9uXX16Mi5pbnZlcnQ9bmMoU28pO2Z1bmN0aW9uIGRWKCl7cmV0dXJuIExpKHoyKS5zY2FsZSgxNDQuMDQ5KS5jbGlwQW5nbGUoNjApfWZ1bmN0aW9uIHBWKCl7dmFyIHQ9MSxlPTAscj0wLG49MSxpPTEsYT0wLHMsbyxsPW51bGwsdSxoLGQsZj0xLHA9MSxtPXJjKHtwb2ludDpmdW5jdGlvbihULEMpe3ZhciBNPWsoW1QsQ10pO3RoaXMuc3RyZWFtLnBvaW50KE1bMF0sTVsxXSl9fSksXz1LbCx5LGI7ZnVuY3Rpb24geCgpe3JldHVybiBmPXQqbixwPXQqaSx5PWI9bnVsbCxrfWZ1bmN0aW9uIGsoVCl7dmFyIEM9VFswXSpmLE09VFsxXSpwO2lmKGEpe3ZhciBTPU0qcy1DKm87Qz1DKnMrTSpvLE09U31yZXR1cm5bQytlLE0rcl19cmV0dXJuIGsuaW52ZXJ0PWZ1bmN0aW9uKFQpe3ZhciBDPVRbMF0tZSxNPVRbMV0tcjtpZihhKXt2YXIgUz1NKnMrQypvO0M9QypzLU0qbyxNPVN9cmV0dXJuW0MvZixNL3BdfSxrLnN0cmVhbT1mdW5jdGlvbihUKXtyZXR1cm4geSYmYj09PVQ/eTp5PW0oXyhiPVQpKX0say5wb3N0Y2xpcD1mdW5jdGlvbihUKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oXz1ULGw9dT1oPWQ9bnVsbCx4KCkpOl99LGsuY2xpcEV4dGVudD1mdW5jdGlvbihUKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oXz1UPT1udWxsPyhsPXU9aD1kPW51bGwsS2wpOkZoKGw9K1RbMF1bMF0sdT0rVFswXVsxXSxoPStUWzFdWzBdLGQ9K1RbMV1bMV0pLHgoKSk6bD09bnVsbD9udWxsOltbbCx1XSxbaCxkXV19LGsuc2NhbGU9ZnVuY3Rpb24oVCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9K1QseCgpKTp0fSxrLnRyYW5zbGF0ZT1mdW5jdGlvbihUKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT0rVFswXSxyPStUWzFdLHgoKSk6W2Uscl19LGsuYW5nbGU9ZnVuY3Rpb24oVCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9VCUzNjAqcmUsbz1IdChhKSxzPUt0KGEpLHgoKSk6YSpVZX0say5yZWZsZWN0WD1mdW5jdGlvbihUKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1UPy0xOjEseCgpKTpuPDB9LGsucmVmbGVjdFk9ZnVuY3Rpb24oVCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9VD8tMToxLHgoKSk6aTwwfSxrLmZpdEV4dGVudD1mdW5jdGlvbihULEMpe3JldHVybiAkaChrLFQsQyl9LGsuZml0U2l6ZT1mdW5jdGlvbihULEMpe3JldHVybiBOMihrLFQsQyl9LGsuZml0V2lkdGg9ZnVuY3Rpb24oVCxDKXtyZXR1cm4gQjIoayxULEMpfSxrLmZpdEhlaWdodD1mdW5jdGlvbihULEMpe3JldHVybiBEMihrLFQsQyl9LGt9ZnVuY3Rpb24gWTIodCxlKXt2YXIgcj1lKmUsbj1yKnI7cmV0dXJuW3QqKC44NzA3LS4xMzE5NzkqcituKigtLjAxMzc5MStuKiguMDAzOTcxKnItLjAwMTUyOSpuKSkpLGUqKDEuMDA3MjI2K3IqKC4wMTUwODUrbiooLS4wNDQ0NzUrLjAyODg3NCpyLS4wMDU5MTYqbikpKV19WTIuaW52ZXJ0PWZ1bmN0aW9uKHQsZSl7dmFyIHI9ZSxuPTI1LGk7ZG97dmFyIGE9cipyLHM9YSphO3ItPWk9KHIqKDEuMDA3MjI2K2EqKC4wMTUwODUrcyooLS4wNDQ0NzUrLjAyODg3NCphLS4wMDU5MTYqcykpKS1lKS8oMS4wMDcyMjYrYSooLjAxNTA4NSozK3MqKC0uMDQ0NDc1KjcrLjAyODg3NCo5KmEtLjAwNTkxNioxMSpzKSkpfXdoaWxlKE5lKGkpPnRlJiYtLW4+MCk7cmV0dXJuW3QvKC44NzA3KyhhPXIqcikqKC0uMTMxOTc5K2EqKC0uMDEzNzkxK2EqYSphKiguMDAzOTcxLS4wMDE1MjkqYSkpKSkscl19O2Z1bmN0aW9uIGdWKCl7cmV0dXJuIExpKFkyKS5zY2FsZSgxNzUuMjk1KX1mdW5jdGlvbiBVMih0LGUpe3JldHVybltLdChlKSpIdCh0KSxIdChlKV19VTIuaW52ZXJ0PW5jKHRuKTtmdW5jdGlvbiB5Vigpe3JldHVybiBMaShVMikuc2NhbGUoMjQ5LjUpLmNsaXBBbmdsZSg5MCt0ZSl9ZnVuY3Rpb24gVzIodCxlKXt2YXIgcj1LdChlKSxuPTErS3QodCkqcjtyZXR1cm5bcipIdCh0KS9uLEh0KGUpL25dfVcyLmludmVydD1uYyhmdW5jdGlvbih0KXtyZXR1cm4gMipTbyh0KX0pO2Z1bmN0aW9uIG1WKCl7cmV0dXJuIExpKFcyKS5zY2FsZSgyNTApLmNsaXBBbmdsZSgxNDIpfWZ1bmN0aW9uIEgyKHQsZSl7cmV0dXJuW19oKHIyKChycitlKS8yKSksLXRdfUgyLmludmVydD1mdW5jdGlvbih0LGUpe3JldHVyblstZSwyKlNvKGU2KHQpKS1ycl19O2Z1bmN0aW9uIGJWKCl7dmFyIHQ9ZHgoSDIpLGU9dC5jZW50ZXIscj10LnJvdGF0ZTtyZXR1cm4gdC5jZW50ZXI9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/ZShbLW5bMV0sblswXV0pOihuPWUoKSxbblsxXSwtblswXV0pfSx0LnJvdGF0ZT1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9yKFtuWzBdLG5bMV0sbi5sZW5ndGg+Mj9uWzJdKzkwOjkwXSk6KG49cigpLFtuWzBdLG5bMV0sblsyXS05MF0pfSxyKFswLDAsOTBdKS5zY2FsZSgxNTkuMTU1KX1mdW5jdGlvbiBfVih0LGUpe3JldHVybiB0LnBhcmVudD09PWUucGFyZW50PzE6Mn1mdW5jdGlvbiB2Vih0KXtyZXR1cm4gdC5yZWR1Y2UoeFYsMCkvdC5sZW5ndGh9ZnVuY3Rpb24geFYodCxlKXtyZXR1cm4gdCtlLnh9ZnVuY3Rpb24ga1YodCl7cmV0dXJuIDErdC5yZWR1Y2Uod1YsMCl9ZnVuY3Rpb24gd1YodCxlKXtyZXR1cm4gTWF0aC5tYXgodCxlLnkpfWZ1bmN0aW9uIFRWKHQpe2Zvcih2YXIgZTtlPXQuY2hpbGRyZW47KXQ9ZVswXTtyZXR1cm4gdH1mdW5jdGlvbiBFVih0KXtmb3IodmFyIGU7ZT10LmNoaWxkcmVuOyl0PWVbZS5sZW5ndGgtMV07cmV0dXJuIHR9ZnVuY3Rpb24gQ1YoKXt2YXIgdD1fVixlPTEscj0xLG49ITE7ZnVuY3Rpb24gaShhKXt2YXIgcyxvPTA7YS5lYWNoQWZ0ZXIoZnVuY3Rpb24oZil7dmFyIHA9Zi5jaGlsZHJlbjtwPyhmLng9dlYocCksZi55PWtWKHApKTooZi54PXM/bys9dChmLHMpOjAsZi55PTAscz1mKX0pO3ZhciBsPVRWKGEpLHU9RVYoYSksaD1sLngtdChsLHUpLzIsZD11LngrdCh1LGwpLzI7cmV0dXJuIGEuZWFjaEFmdGVyKG4/ZnVuY3Rpb24oZil7Zi54PShmLngtYS54KSplLGYueT0oYS55LWYueSkqcn06ZnVuY3Rpb24oZil7Zi54PShmLngtaCkvKGQtaCkqZSxmLnk9KDEtKGEueT9mLnkvYS55OjEpKSpyfSl9cmV0dXJuIGkuc2VwYXJhdGlvbj1mdW5jdGlvbihhKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1hLGkpOnR9LGkuc2l6ZT1mdW5jdGlvbihhKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0hMSxlPSthWzBdLHI9K2FbMV0saSk6bj9udWxsOltlLHJdfSxpLm5vZGVTaXplPWZ1bmN0aW9uKGEpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSEwLGU9K2FbMF0scj0rYVsxXSxpKTpuP1tlLHJdOm51bGx9LGl9ZnVuY3Rpb24gU1YodCl7dmFyIGU9MCxyPXQuY2hpbGRyZW4sbj1yJiZyLmxlbmd0aDtpZighbillPTE7ZWxzZSBmb3IoOy0tbj49MDspZSs9cltuXS52YWx1ZTt0LnZhbHVlPWV9ZnVuY3Rpb24gQVYoKXtyZXR1cm4gdGhpcy5lYWNoQWZ0ZXIoU1YpfWZ1bmN0aW9uIE1WKHQsZSl7bGV0IHI9LTE7Zm9yKGNvbnN0IG4gb2YgdGhpcyl0LmNhbGwoZSxuLCsrcix0aGlzKTtyZXR1cm4gdGhpc31mdW5jdGlvbiBMVih0LGUpe2Zvcih2YXIgcj10aGlzLG49W3JdLGksYSxzPS0xO3I9bi5wb3AoKTspaWYodC5jYWxsKGUsciwrK3MsdGhpcyksaT1yLmNoaWxkcmVuKWZvcihhPWkubGVuZ3RoLTE7YT49MDstLWEpbi5wdXNoKGlbYV0pO3JldHVybiB0aGlzfWZ1bmN0aW9uIFJWKHQsZSl7Zm9yKHZhciByPXRoaXMsbj1bcl0saT1bXSxhLHMsbyxsPS0xO3I9bi5wb3AoKTspaWYoaS5wdXNoKHIpLGE9ci5jaGlsZHJlbilmb3Iocz0wLG89YS5sZW5ndGg7czxvOysrcyluLnB1c2goYVtzXSk7Zm9yKDtyPWkucG9wKCk7KXQuY2FsbChlLHIsKytsLHRoaXMpO3JldHVybiB0aGlzfWZ1bmN0aW9uIElWKHQsZSl7bGV0IHI9LTE7Zm9yKGNvbnN0IG4gb2YgdGhpcylpZih0LmNhbGwoZSxuLCsrcix0aGlzKSlyZXR1cm4gbn1mdW5jdGlvbiBOVih0KXtyZXR1cm4gdGhpcy5lYWNoQWZ0ZXIoZnVuY3Rpb24oZSl7Zm9yKHZhciByPSt0KGUuZGF0YSl8fDAsbj1lLmNoaWxkcmVuLGk9biYmbi5sZW5ndGg7LS1pPj0wOylyKz1uW2ldLnZhbHVlO2UudmFsdWU9cn0pfWZ1bmN0aW9uIEJWKHQpe3JldHVybiB0aGlzLmVhY2hCZWZvcmUoZnVuY3Rpb24oZSl7ZS5jaGlsZHJlbiYmZS5jaGlsZHJlbi5zb3J0KHQpfSl9ZnVuY3Rpb24gRFYodCl7Zm9yKHZhciBlPXRoaXMscj1PVihlLHQpLG49W2VdO2UhPT1yOyllPWUucGFyZW50LG4ucHVzaChlKTtmb3IodmFyIGk9bi5sZW5ndGg7dCE9PXI7KW4uc3BsaWNlKGksMCx0KSx0PXQucGFyZW50O3JldHVybiBufWZ1bmN0aW9uIE9WKHQsZSl7aWYodD09PWUpcmV0dXJuIHQ7dmFyIHI9dC5hbmNlc3RvcnMoKSxuPWUuYW5jZXN0b3JzKCksaT1udWxsO2Zvcih0PXIucG9wKCksZT1uLnBvcCgpO3Q9PT1lOylpPXQsdD1yLnBvcCgpLGU9bi5wb3AoKTtyZXR1cm4gaX1mdW5jdGlvbiBGVigpe2Zvcih2YXIgdD10aGlzLGU9W3RdO3Q9dC5wYXJlbnQ7KWUucHVzaCh0KTtyZXR1cm4gZX1mdW5jdGlvbiBQVigpe3JldHVybiBBcnJheS5mcm9tKHRoaXMpfWZ1bmN0aW9uIHFWKCl7dmFyIHQ9W107cmV0dXJuIHRoaXMuZWFjaEJlZm9yZShmdW5jdGlvbihlKXtlLmNoaWxkcmVufHx0LnB1c2goZSl9KSx0fWZ1bmN0aW9uIFZWKCl7dmFyIHQ9dGhpcyxlPVtdO3JldHVybiB0LmVhY2goZnVuY3Rpb24ocil7ciE9PXQmJmUucHVzaCh7c291cmNlOnIucGFyZW50LHRhcmdldDpyfSl9KSxlfWZ1bmN0aW9uKnpWKCl7dmFyIHQ9dGhpcyxlLHI9W3RdLG4saSxhO2RvIGZvcihlPXIucmV2ZXJzZSgpLHI9W107dD1lLnBvcCgpOylpZih5aWVsZCB0LG49dC5jaGlsZHJlbilmb3IoaT0wLGE9bi5sZW5ndGg7aTxhOysraSlyLnB1c2gobltpXSk7d2hpbGUoci5sZW5ndGgpfWZ1bmN0aW9uIEcyKHQsZSl7dCBpbnN0YW5jZW9mIE1hcD8odD1bdm9pZCAwLHRdLGU9PT12b2lkIDAmJihlPVdWKSk6ZT09PXZvaWQgMCYmKGU9VVYpO2Zvcih2YXIgcj1uZXcgTXModCksbixpPVtyXSxhLHMsbyxsO249aS5wb3AoKTspaWYoKHM9ZShuLmRhdGEpKSYmKGw9KHM9QXJyYXkuZnJvbShzKSkubGVuZ3RoKSlmb3Iobi5jaGlsZHJlbj1zLG89bC0xO28+PTA7LS1vKWkucHVzaChhPXNbb109bmV3IE1zKHNbb10pKSxhLnBhcmVudD1uLGEuZGVwdGg9bi5kZXB0aCsxO3JldHVybiByLmVhY2hCZWZvcmUoeXgpfWZ1bmN0aW9uIFlWKCl7cmV0dXJuIEcyKHRoaXMpLmVhY2hCZWZvcmUoSFYpfWZ1bmN0aW9uIFVWKHQpe3JldHVybiB0LmNoaWxkcmVufWZ1bmN0aW9uIFdWKHQpe3JldHVybiBBcnJheS5pc0FycmF5KHQpP3RbMV06bnVsbH1mdW5jdGlvbiBIVih0KXt0LmRhdGEudmFsdWUhPT12b2lkIDAmJih0LnZhbHVlPXQuZGF0YS52YWx1ZSksdC5kYXRhPXQuZGF0YS5kYXRhfWZ1bmN0aW9uIHl4KHQpe3ZhciBlPTA7ZG8gdC5oZWlnaHQ9ZTt3aGlsZSgodD10LnBhcmVudCkmJnQuaGVpZ2h0PCsrZSl9ZnVuY3Rpb24gTXModCl7dGhpcy5kYXRhPXQsdGhpcy5kZXB0aD10aGlzLmhlaWdodD0wLHRoaXMucGFyZW50PW51bGx9TXMucHJvdG90eXBlPUcyLnByb3RvdHlwZT17Y29uc3RydWN0b3I6TXMsY291bnQ6QVYsZWFjaDpNVixlYWNoQWZ0ZXI6UlYsZWFjaEJlZm9yZTpMVixmaW5kOklWLHN1bTpOVixzb3J0OkJWLHBhdGg6RFYsYW5jZXN0b3JzOkZWLGRlc2NlbmRhbnRzOlBWLGxlYXZlczpxVixsaW5rczpWVixjb3B5OllWLFtTeW1ib2wuaXRlcmF0b3JdOnpWfTtmdW5jdGlvbiBRaCh0KXtyZXR1cm4gdD09bnVsbD9udWxsOm14KHQpfWZ1bmN0aW9uIG14KHQpe2lmKHR5cGVvZiB0IT0iZnVuY3Rpb24iKXRocm93IG5ldyBFcnJvcjtyZXR1cm4gdH1mdW5jdGlvbiBMcygpe3JldHVybiAwfWZ1bmN0aW9uIEJvKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1jb25zdCBHVj0xNjY0NTI1LGpWPTEwMTM5MDQyMjMsYng9NDI5NDk2NzI5NjtmdW5jdGlvbiBqMigpe2xldCB0PTE7cmV0dXJuKCk9Pih0PShHVip0K2pWKSVieCkvYnh9ZnVuY3Rpb24gJFYodCl7cmV0dXJuIHR5cGVvZiB0PT0ib2JqZWN0IiYmImxlbmd0aCJpbiB0P3Q6QXJyYXkuZnJvbSh0KX1mdW5jdGlvbiBYVih0LGUpe2xldCByPXQubGVuZ3RoLG4saTtmb3IoO3I7KWk9ZSgpKnItLXwwLG49dFtyXSx0W3JdPXRbaV0sdFtpXT1uO3JldHVybiB0fWZ1bmN0aW9uIEtWKHQpe3JldHVybiBfeCh0LGoyKCkpfWZ1bmN0aW9uIF94KHQsZSl7Zm9yKHZhciByPTAsbj0odD1YVihBcnJheS5mcm9tKHQpLGUpKS5sZW5ndGgsaT1bXSxhLHM7cjxuOylhPXRbcl0scyYmdngocyxhKT8rK3I6KHM9UVYoaT1aVihpLGEpKSxyPTApO3JldHVybiBzfWZ1bmN0aW9uIFpWKHQsZSl7dmFyIHIsbjtpZigkMihlLHQpKXJldHVybltlXTtmb3Iocj0wO3I8dC5sZW5ndGg7KytyKWlmKEpoKGUsdFtyXSkmJiQyKHVjKHRbcl0sZSksdCkpcmV0dXJuW3Rbcl0sZV07Zm9yKHI9MDtyPHQubGVuZ3RoLTE7KytyKWZvcihuPXIrMTtuPHQubGVuZ3RoOysrbilpZihKaCh1Yyh0W3JdLHRbbl0pLGUpJiZKaCh1Yyh0W3JdLGUpLHRbbl0pJiZKaCh1Yyh0W25dLGUpLHRbcl0pJiYkMih4eCh0W3JdLHRbbl0sZSksdCkpcmV0dXJuW3Rbcl0sdFtuXSxlXTt0aHJvdyBuZXcgRXJyb3J9ZnVuY3Rpb24gSmgodCxlKXt2YXIgcj10LnItZS5yLG49ZS54LXQueCxpPWUueS10Lnk7cmV0dXJuIHI8MHx8cipyPG4qbitpKml9ZnVuY3Rpb24gdngodCxlKXt2YXIgcj10LnItZS5yK01hdGgubWF4KHQucixlLnIsMSkqMWUtOSxuPWUueC10LngsaT1lLnktdC55O3JldHVybiByPjAmJnIqcj5uKm4raSppfWZ1bmN0aW9uICQyKHQsZSl7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDsrK3IpaWYoIXZ4KHQsZVtyXSkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gUVYodCl7c3dpdGNoKHQubGVuZ3RoKXtjYXNlIDE6cmV0dXJuIEpWKHRbMF0pO2Nhc2UgMjpyZXR1cm4gdWModFswXSx0WzFdKTtjYXNlIDM6cmV0dXJuIHh4KHRbMF0sdFsxXSx0WzJdKX19ZnVuY3Rpb24gSlYodCl7cmV0dXJue3g6dC54LHk6dC55LHI6dC5yfX1mdW5jdGlvbiB1Yyh0LGUpe3ZhciByPXQueCxuPXQueSxpPXQucixhPWUueCxzPWUueSxvPWUucixsPWEtcix1PXMtbixoPW8taSxkPU1hdGguc3FydChsKmwrdSp1KTtyZXR1cm57eDoocithK2wvZCpoKS8yLHk6KG4rcyt1L2QqaCkvMixyOihkK2krbykvMn19ZnVuY3Rpb24geHgodCxlLHIpe3ZhciBuPXQueCxpPXQueSxhPXQucixzPWUueCxvPWUueSxsPWUucix1PXIueCxoPXIueSxkPXIucixmPW4tcyxwPW4tdSxtPWktbyxfPWktaCx5PWwtYSxiPWQtYSx4PW4qbitpKmktYSphLGs9eC1zKnMtbypvK2wqbCxUPXgtdSp1LWgqaCtkKmQsQz1wKm0tZipfLE09KG0qVC1fKmspLyhDKjIpLW4sUz0oXyp5LW0qYikvQyxSPShwKmstZipUKS8oQyoyKS1pLEE9KGYqYi1wKnkpL0MsTD1TKlMrQSpBLTEsdj0yKihhK00qUytSKkEpLEI9TSpNK1IqUi1hKmEsdz0tKE1hdGguYWJzKEwpPjFlLTY/KHYrTWF0aC5zcXJ0KHYqdi00KkwqQikpLygyKkwpOkIvdik7cmV0dXJue3g6bitNK1Mqdyx5OmkrUitBKncscjp3fX1mdW5jdGlvbiBreCh0LGUscil7dmFyIG49dC54LWUueCxpLGEscz10LnktZS55LG8sbCx1PW4qbitzKnM7dT8oYT1lLnIrci5yLGEqPWEsbD10LnIrci5yLGwqPWwsYT5sPyhpPSh1K2wtYSkvKDIqdSksbz1NYXRoLnNxcnQoTWF0aC5tYXgoMCxsL3UtaSppKSksci54PXQueC1pKm4tbypzLHIueT10LnktaSpzK28qbik6KGk9KHUrYS1sKS8oMip1KSxvPU1hdGguc3FydChNYXRoLm1heCgwLGEvdS1pKmkpKSxyLng9ZS54K2kqbi1vKnMsci55PWUueStpKnMrbypuKSk6KHIueD1lLngrci5yLHIueT1lLnkpfWZ1bmN0aW9uIHd4KHQsZSl7dmFyIHI9dC5yK2Uuci0xZS02LG49ZS54LXQueCxpPWUueS10Lnk7cmV0dXJuIHI+MCYmcipyPm4qbitpKml9ZnVuY3Rpb24gVHgodCl7dmFyIGU9dC5fLHI9dC5uZXh0Ll8sbj1lLnIrci5yLGk9KGUueCpyLnIrci54KmUucikvbixhPShlLnkqci5yK3IueSplLnIpL247cmV0dXJuIGkqaSthKmF9ZnVuY3Rpb24gdGYodCl7dGhpcy5fPXQsdGhpcy5uZXh0PW51bGwsdGhpcy5wcmV2aW91cz1udWxsfWZ1bmN0aW9uIEV4KHQsZSl7aWYoIShhPSh0PSRWKHQpKS5sZW5ndGgpKXJldHVybiAwO3ZhciByLG4saSxhLHMsbyxsLHUsaCxkLGY7aWYocj10WzBdLHIueD0wLHIueT0wLCEoYT4xKSlyZXR1cm4gci5yO2lmKG49dFsxXSxyLng9LW4ucixuLng9ci5yLG4ueT0wLCEoYT4yKSlyZXR1cm4gci5yK24ucjtreChuLHIsaT10WzJdKSxyPW5ldyB0ZihyKSxuPW5ldyB0ZihuKSxpPW5ldyB0ZihpKSxyLm5leHQ9aS5wcmV2aW91cz1uLG4ubmV4dD1yLnByZXZpb3VzPWksaS5uZXh0PW4ucHJldmlvdXM9cjt0OmZvcihsPTM7bDxhOysrbCl7a3goci5fLG4uXyxpPXRbbF0pLGk9bmV3IHRmKGkpLHU9bi5uZXh0LGg9ci5wcmV2aW91cyxkPW4uXy5yLGY9ci5fLnI7ZG8gaWYoZDw9Zil7aWYod3godS5fLGkuXykpe249dSxyLm5leHQ9bixuLnByZXZpb3VzPXIsLS1sO2NvbnRpbnVlIHR9ZCs9dS5fLnIsdT11Lm5leHR9ZWxzZXtpZih3eChoLl8saS5fKSl7cj1oLHIubmV4dD1uLG4ucHJldmlvdXM9ciwtLWw7Y29udGludWUgdH1mKz1oLl8ucixoPWgucHJldmlvdXN9d2hpbGUodSE9PWgubmV4dCk7Zm9yKGkucHJldmlvdXM9cixpLm5leHQ9bixyLm5leHQ9bi5wcmV2aW91cz1uPWkscz1UeChyKTsoaT1pLm5leHQpIT09bjspKG89VHgoaSkpPHMmJihyPWkscz1vKTtuPXIubmV4dH1mb3Iocj1bbi5fXSxpPW47KGk9aS5uZXh0KSE9PW47KXIucHVzaChpLl8pO2ZvcihpPV94KHIsZSksbD0wO2w8YTsrK2wpcj10W2xdLHIueC09aS54LHIueS09aS55O3JldHVybiBpLnJ9ZnVuY3Rpb24gdHoodCl7cmV0dXJuIEV4KHQsajIoKSksdH1mdW5jdGlvbiBleih0KXtyZXR1cm4gTWF0aC5zcXJ0KHQudmFsdWUpfWZ1bmN0aW9uIHJ6KCl7dmFyIHQ9bnVsbCxlPTEscj0xLG49THM7ZnVuY3Rpb24gaShhKXtjb25zdCBzPWoyKCk7cmV0dXJuIGEueD1lLzIsYS55PXIvMix0P2EuZWFjaEJlZm9yZShDeCh0KSkuZWFjaEFmdGVyKFgyKG4sLjUscykpLmVhY2hCZWZvcmUoU3goMSkpOmEuZWFjaEJlZm9yZShDeChleikpLmVhY2hBZnRlcihYMihMcywxLHMpKS5lYWNoQWZ0ZXIoWDIobixhLnIvTWF0aC5taW4oZSxyKSxzKSkuZWFjaEJlZm9yZShTeChNYXRoLm1pbihlLHIpLygyKmEucikpKSxhfXJldHVybiBpLnJhZGl1cz1mdW5jdGlvbihhKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1RaChhKSxpKTp0fSxpLnNpemU9ZnVuY3Rpb24oYSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9K2FbMF0scj0rYVsxXSxpKTpbZSxyXX0saS5wYWRkaW5nPWZ1bmN0aW9uKGEpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXR5cGVvZiBhPT0iZnVuY3Rpb24iP2E6Qm8oK2EpLGkpOm59LGl9ZnVuY3Rpb24gQ3godCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2UuY2hpbGRyZW58fChlLnI9TWF0aC5tYXgoMCwrdChlKXx8MCkpfX1mdW5jdGlvbiBYMih0LGUscil7cmV0dXJuIGZ1bmN0aW9uKG4pe2lmKGk9bi5jaGlsZHJlbil7dmFyIGksYSxzPWkubGVuZ3RoLG89dChuKSplfHwwLGw7aWYobylmb3IoYT0wO2E8czsrK2EpaVthXS5yKz1vO2lmKGw9RXgoaSxyKSxvKWZvcihhPTA7YTxzOysrYSlpW2FdLnItPW87bi5yPWwrb319fWZ1bmN0aW9uIFN4KHQpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgcj1lLnBhcmVudDtlLnIqPXQsciYmKGUueD1yLngrdCplLngsZS55PXIueSt0KmUueSl9fWZ1bmN0aW9uIEF4KHQpe3QueDA9TWF0aC5yb3VuZCh0LngwKSx0LnkwPU1hdGgucm91bmQodC55MCksdC54MT1NYXRoLnJvdW5kKHQueDEpLHQueTE9TWF0aC5yb3VuZCh0LnkxKX1mdW5jdGlvbiBoYyh0LGUscixuLGkpe2Zvcih2YXIgYT10LmNoaWxkcmVuLHMsbz0tMSxsPWEubGVuZ3RoLHU9dC52YWx1ZSYmKG4tZSkvdC52YWx1ZTsrK288bDspcz1hW29dLHMueTA9cixzLnkxPWkscy54MD1lLHMueDE9ZSs9cy52YWx1ZSp1fWZ1bmN0aW9uIG56KCl7dmFyIHQ9MSxlPTEscj0wLG49ITE7ZnVuY3Rpb24gaShzKXt2YXIgbz1zLmhlaWdodCsxO3JldHVybiBzLngwPXMueTA9cixzLngxPXQscy55MT1lL28scy5lYWNoQmVmb3JlKGEoZSxvKSksbiYmcy5lYWNoQmVmb3JlKEF4KSxzfWZ1bmN0aW9uIGEocyxvKXtyZXR1cm4gZnVuY3Rpb24obCl7bC5jaGlsZHJlbiYmaGMobCxsLngwLHMqKGwuZGVwdGgrMSkvbyxsLngxLHMqKGwuZGVwdGgrMikvbyk7dmFyIHU9bC54MCxoPWwueTAsZD1sLngxLXIsZj1sLnkxLXI7ZDx1JiYodT1kPSh1K2QpLzIpLGY8aCYmKGg9Zj0oaCtmKS8yKSxsLngwPXUsbC55MD1oLGwueDE9ZCxsLnkxPWZ9fXJldHVybiBpLnJvdW5kPWZ1bmN0aW9uKHMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSEhcyxpKTpufSxpLnNpemU9ZnVuY3Rpb24ocyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9K3NbMF0sZT0rc1sxXSxpKTpbdCxlXX0saS5wYWRkaW5nPWZ1bmN0aW9uKHMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPStzLGkpOnJ9LGl9dmFyIGl6PXtkZXB0aDotMX0sTXg9e30sSzI9e307ZnVuY3Rpb24gYXoodCl7cmV0dXJuIHQuaWR9ZnVuY3Rpb24gc3oodCl7cmV0dXJuIHQucGFyZW50SWR9ZnVuY3Rpb24gb3ooKXt2YXIgdD1heixlPXN6LHI7ZnVuY3Rpb24gbihpKXt2YXIgYT1BcnJheS5mcm9tKGkpLHM9dCxvPWUsbCx1LGgsZCxmLHAsbSxfLHk9bmV3IE1hcDtpZihyIT1udWxsKXtjb25zdCBiPWEubWFwKChULEMpPT5seihyKFQsQyxpKSkpLHg9Yi5tYXAoTHgpLGs9bmV3IFNldChiKS5hZGQoIiIpO2Zvcihjb25zdCBUIG9mIHgpay5oYXMoVCl8fChrLmFkZChUKSxiLnB1c2goVCkseC5wdXNoKEx4KFQpKSxhLnB1c2goSzIpKTtzPShULEMpPT5iW0NdLG89KFQsQyk9PnhbQ119Zm9yKGg9MCxsPWEubGVuZ3RoO2g8bDsrK2gpdT1hW2hdLHA9YVtoXT1uZXcgTXModSksKG09cyh1LGgsaSkpIT1udWxsJiYobSs9IiIpJiYoXz1wLmlkPW0seS5zZXQoXyx5LmhhcyhfKT9NeDpwKSksKG09byh1LGgsaSkpIT1udWxsJiYobSs9IiIpJiYocC5wYXJlbnQ9bSk7Zm9yKGg9MDtoPGw7KytoKWlmKHA9YVtoXSxtPXAucGFyZW50KXtpZihmPXkuZ2V0KG0pLCFmKXRocm93IG5ldyBFcnJvcigibWlzc2luZzogIittKTtpZihmPT09TXgpdGhyb3cgbmV3IEVycm9yKCJhbWJpZ3VvdXM6ICIrbSk7Zi5jaGlsZHJlbj9mLmNoaWxkcmVuLnB1c2gocCk6Zi5jaGlsZHJlbj1bcF0scC5wYXJlbnQ9Zn1lbHNle2lmKGQpdGhyb3cgbmV3IEVycm9yKCJtdWx0aXBsZSByb290cyIpO2Q9cH1pZighZCl0aHJvdyBuZXcgRXJyb3IoIm5vIHJvb3QiKTtpZihyIT1udWxsKXtmb3IoO2QuZGF0YT09PUsyJiZkLmNoaWxkcmVuLmxlbmd0aD09PTE7KWQ9ZC5jaGlsZHJlblswXSwtLWw7Zm9yKGxldCBiPWEubGVuZ3RoLTE7Yj49MCYmKHA9YVtiXSxwLmRhdGE9PT1LMik7LS1iKXAuZGF0YT1udWxsfWlmKGQucGFyZW50PWl6LGQuZWFjaEJlZm9yZShmdW5jdGlvbihiKXtiLmRlcHRoPWIucGFyZW50LmRlcHRoKzEsLS1sfSkuZWFjaEJlZm9yZSh5eCksZC5wYXJlbnQ9bnVsbCxsPjApdGhyb3cgbmV3IEVycm9yKCJjeWNsZSIpO3JldHVybiBkfXJldHVybiBuLmlkPWZ1bmN0aW9uKGkpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PVFoKGkpLG4pOnR9LG4ucGFyZW50SWQ9ZnVuY3Rpb24oaSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9UWgoaSksbik6ZX0sbi5wYXRoPWZ1bmN0aW9uKGkpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPVFoKGkpLG4pOnJ9LG59ZnVuY3Rpb24gbHoodCl7dD1gJHt0fWA7bGV0IGU9dC5sZW5ndGg7cmV0dXJuIFoyKHQsZS0xKSYmIVoyKHQsZS0yKSYmKHQ9dC5zbGljZSgwLC0xKSksdFswXT09PSIvIj90OmAvJHt0fWB9ZnVuY3Rpb24gTHgodCl7bGV0IGU9dC5sZW5ndGg7aWYoZTwyKXJldHVybiIiO2Zvcig7LS1lPjEmJiFaMih0LGUpOyk7cmV0dXJuIHQuc2xpY2UoMCxlKX1mdW5jdGlvbiBaMih0LGUpe2lmKHRbZV09PT0iLyIpe2xldCByPTA7Zm9yKDtlPjAmJnRbLS1lXT09PSJcXCI7KSsrcjtpZigociYxKT09PTApcmV0dXJuITB9cmV0dXJuITF9ZnVuY3Rpb24gY3oodCxlKXtyZXR1cm4gdC5wYXJlbnQ9PT1lLnBhcmVudD8xOjJ9ZnVuY3Rpb24gUTIodCl7dmFyIGU9dC5jaGlsZHJlbjtyZXR1cm4gZT9lWzBdOnQudH1mdW5jdGlvbiBKMih0KXt2YXIgZT10LmNoaWxkcmVuO3JldHVybiBlP2VbZS5sZW5ndGgtMV06dC50fWZ1bmN0aW9uIHV6KHQsZSxyKXt2YXIgbj1yLyhlLmktdC5pKTtlLmMtPW4sZS5zKz1yLHQuYys9bixlLnorPXIsZS5tKz1yfWZ1bmN0aW9uIGh6KHQpe2Zvcih2YXIgZT0wLHI9MCxuPXQuY2hpbGRyZW4saT1uLmxlbmd0aCxhOy0taT49MDspYT1uW2ldLGEueis9ZSxhLm0rPWUsZSs9YS5zKyhyKz1hLmMpfWZ1bmN0aW9uIGZ6KHQsZSxyKXtyZXR1cm4gdC5hLnBhcmVudD09PWUucGFyZW50P3QuYTpyfWZ1bmN0aW9uIGVmKHQsZSl7dGhpcy5fPXQsdGhpcy5wYXJlbnQ9bnVsbCx0aGlzLmNoaWxkcmVuPW51bGwsdGhpcy5BPW51bGwsdGhpcy5hPXRoaXMsdGhpcy56PTAsdGhpcy5tPTAsdGhpcy5jPTAsdGhpcy5zPTAsdGhpcy50PW51bGwsdGhpcy5pPWV9ZWYucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoTXMucHJvdG90eXBlKTtmdW5jdGlvbiBkeih0KXtmb3IodmFyIGU9bmV3IGVmKHQsMCkscixuPVtlXSxpLGEscyxvO3I9bi5wb3AoKTspaWYoYT1yLl8uY2hpbGRyZW4pZm9yKHIuY2hpbGRyZW49bmV3IEFycmF5KG89YS5sZW5ndGgpLHM9by0xO3M+PTA7LS1zKW4ucHVzaChpPXIuY2hpbGRyZW5bc109bmV3IGVmKGFbc10scykpLGkucGFyZW50PXI7cmV0dXJuKGUucGFyZW50PW5ldyBlZihudWxsLDApKS5jaGlsZHJlbj1bZV0sZX1mdW5jdGlvbiBweigpe3ZhciB0PWN6LGU9MSxyPTEsbj1udWxsO2Z1bmN0aW9uIGkodSl7dmFyIGg9ZHoodSk7aWYoaC5lYWNoQWZ0ZXIoYSksaC5wYXJlbnQubT0taC56LGguZWFjaEJlZm9yZShzKSxuKXUuZWFjaEJlZm9yZShsKTtlbHNle3ZhciBkPXUsZj11LHA9dTt1LmVhY2hCZWZvcmUoZnVuY3Rpb24oeCl7eC54PGQueCYmKGQ9eCkseC54PmYueCYmKGY9eCkseC5kZXB0aD5wLmRlcHRoJiYocD14KX0pO3ZhciBtPWQ9PT1mPzE6dChkLGYpLzIsXz1tLWQueCx5PWUvKGYueCttK18pLGI9ci8ocC5kZXB0aHx8MSk7dS5lYWNoQmVmb3JlKGZ1bmN0aW9uKHgpe3gueD0oeC54K18pKnkseC55PXguZGVwdGgqYn0pfXJldHVybiB1fWZ1bmN0aW9uIGEodSl7dmFyIGg9dS5jaGlsZHJlbixkPXUucGFyZW50LmNoaWxkcmVuLGY9dS5pP2RbdS5pLTFdOm51bGw7aWYoaCl7aHoodSk7dmFyIHA9KGhbMF0ueitoW2gubGVuZ3RoLTFdLnopLzI7Zj8odS56PWYueit0KHUuXyxmLl8pLHUubT11LnotcCk6dS56PXB9ZWxzZSBmJiYodS56PWYueit0KHUuXyxmLl8pKTt1LnBhcmVudC5BPW8odSxmLHUucGFyZW50LkF8fGRbMF0pfWZ1bmN0aW9uIHModSl7dS5fLng9dS56K3UucGFyZW50Lm0sdS5tKz11LnBhcmVudC5tfWZ1bmN0aW9uIG8odSxoLGQpe2lmKGgpe2Zvcih2YXIgZj11LHA9dSxtPWgsXz1mLnBhcmVudC5jaGlsZHJlblswXSx5PWYubSxiPXAubSx4PW0ubSxrPV8ubSxUO209SjIobSksZj1RMihmKSxtJiZmOylfPVEyKF8pLHA9SjIocCkscC5hPXUsVD1tLnoreC1mLnoteSt0KG0uXyxmLl8pLFQ+MCYmKHV6KGZ6KG0sdSxkKSx1LFQpLHkrPVQsYis9VCkseCs9bS5tLHkrPWYubSxrKz1fLm0sYis9cC5tO20mJiFKMihwKSYmKHAudD1tLHAubSs9eC1iKSxmJiYhUTIoXykmJihfLnQ9ZixfLm0rPXktayxkPXUpfXJldHVybiBkfWZ1bmN0aW9uIGwodSl7dS54Kj1lLHUueT11LmRlcHRoKnJ9cmV0dXJuIGkuc2VwYXJhdGlvbj1mdW5jdGlvbih1KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD11LGkpOnR9LGkuc2l6ZT1mdW5jdGlvbih1KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0hMSxlPSt1WzBdLHI9K3VbMV0saSk6bj9udWxsOltlLHJdfSxpLm5vZGVTaXplPWZ1bmN0aW9uKHUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPSEwLGU9K3VbMF0scj0rdVsxXSxpKTpuP1tlLHJdOm51bGx9LGl9ZnVuY3Rpb24gcmYodCxlLHIsbixpKXtmb3IodmFyIGE9dC5jaGlsZHJlbixzLG89LTEsbD1hLmxlbmd0aCx1PXQudmFsdWUmJihpLXIpL3QudmFsdWU7KytvPGw7KXM9YVtvXSxzLngwPWUscy54MT1uLHMueTA9cixzLnkxPXIrPXMudmFsdWUqdX12YXIgUng9KDErTWF0aC5zcXJ0KDUpKS8yO2Z1bmN0aW9uIEl4KHQsZSxyLG4saSxhKXtmb3IodmFyIHM9W10sbz1lLmNoaWxkcmVuLGwsdSxoPTAsZD0wLGY9by5sZW5ndGgscCxtLF89ZS52YWx1ZSx5LGIseCxrLFQsQyxNO2g8Zjspe3A9aS1yLG09YS1uO2RvIHk9b1tkKytdLnZhbHVlO3doaWxlKCF5JiZkPGYpO2ZvcihiPXg9eSxDPU1hdGgubWF4KG0vcCxwL20pLyhfKnQpLE09eSp5KkMsVD1NYXRoLm1heCh4L00sTS9iKTtkPGY7KytkKXtpZih5Kz11PW9bZF0udmFsdWUsdTxiJiYoYj11KSx1PngmJih4PXUpLE09eSp5KkMsaz1NYXRoLm1heCh4L00sTS9iKSxrPlQpe3ktPXU7YnJlYWt9VD1rfXMucHVzaChsPXt2YWx1ZTp5LGRpY2U6cDxtLGNoaWxkcmVuOm8uc2xpY2UoaCxkKX0pLGwuZGljZT9oYyhsLHIsbixpLF8/bis9bSp5L186YSk6cmYobCxyLG4sXz9yKz1wKnkvXzppLGEpLF8tPXksaD1kfXJldHVybiBzfWNvbnN0IE54PWZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gcihuLGksYSxzLG8pe0l4KGUsbixpLGEscyxvKX1yZXR1cm4gci5yYXRpbz1mdW5jdGlvbihuKXtyZXR1cm4gdCgobj0rbik+MT9uOjEpfSxyfShSeCk7ZnVuY3Rpb24gZ3ooKXt2YXIgdD1OeCxlPSExLHI9MSxuPTEsaT1bMF0sYT1McyxzPUxzLG89THMsbD1Mcyx1PUxzO2Z1bmN0aW9uIGgoZil7cmV0dXJuIGYueDA9Zi55MD0wLGYueDE9cixmLnkxPW4sZi5lYWNoQmVmb3JlKGQpLGk9WzBdLGUmJmYuZWFjaEJlZm9yZShBeCksZn1mdW5jdGlvbiBkKGYpe3ZhciBwPWlbZi5kZXB0aF0sbT1mLngwK3AsXz1mLnkwK3AseT1mLngxLXAsYj1mLnkxLXA7eTxtJiYobT15PShtK3kpLzIpLGI8XyYmKF89Yj0oXytiKS8yKSxmLngwPW0sZi55MD1fLGYueDE9eSxmLnkxPWIsZi5jaGlsZHJlbiYmKHA9aVtmLmRlcHRoKzFdPWEoZikvMixtKz11KGYpLXAsXys9cyhmKS1wLHktPW8oZiktcCxiLT1sKGYpLXAseTxtJiYobT15PShtK3kpLzIpLGI8XyYmKF89Yj0oXytiKS8yKSx0KGYsbSxfLHksYikpfXJldHVybiBoLnJvdW5kPWZ1bmN0aW9uKGYpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPSEhZixoKTplfSxoLnNpemU9ZnVuY3Rpb24oZil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9K2ZbMF0sbj0rZlsxXSxoKTpbcixuXX0saC50aWxlPWZ1bmN0aW9uKGYpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PW14KGYpLGgpOnR9LGgucGFkZGluZz1mdW5jdGlvbihmKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD9oLnBhZGRpbmdJbm5lcihmKS5wYWRkaW5nT3V0ZXIoZik6aC5wYWRkaW5nSW5uZXIoKX0saC5wYWRkaW5nSW5uZXI9ZnVuY3Rpb24oZil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9dHlwZW9mIGY9PSJmdW5jdGlvbiI/ZjpCbygrZiksaCk6YX0saC5wYWRkaW5nT3V0ZXI9ZnVuY3Rpb24oZil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/aC5wYWRkaW5nVG9wKGYpLnBhZGRpbmdSaWdodChmKS5wYWRkaW5nQm90dG9tKGYpLnBhZGRpbmdMZWZ0KGYpOmgucGFkZGluZ1RvcCgpfSxoLnBhZGRpbmdUb3A9ZnVuY3Rpb24oZil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9dHlwZW9mIGY9PSJmdW5jdGlvbiI/ZjpCbygrZiksaCk6c30saC5wYWRkaW5nUmlnaHQ9ZnVuY3Rpb24oZil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89dHlwZW9mIGY9PSJmdW5jdGlvbiI/ZjpCbygrZiksaCk6b30saC5wYWRkaW5nQm90dG9tPWZ1bmN0aW9uKGYpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPXR5cGVvZiBmPT0iZnVuY3Rpb24iP2Y6Qm8oK2YpLGgpOmx9LGgucGFkZGluZ0xlZnQ9ZnVuY3Rpb24oZil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9dHlwZW9mIGY9PSJmdW5jdGlvbiI/ZjpCbygrZiksaCk6dX0saH1mdW5jdGlvbiB5eih0LGUscixuLGkpe3ZhciBhPXQuY2hpbGRyZW4scyxvPWEubGVuZ3RoLGwsdT1uZXcgQXJyYXkobysxKTtmb3IodVswXT1sPXM9MDtzPG87KytzKXVbcysxXT1sKz1hW3NdLnZhbHVlO2goMCxvLHQudmFsdWUsZSxyLG4saSk7ZnVuY3Rpb24gaChkLGYscCxtLF8seSxiKXtpZihkPj1mLTEpe3ZhciB4PWFbZF07eC54MD1tLHgueTA9Xyx4LngxPXkseC55MT1iO3JldHVybn1mb3IodmFyIGs9dVtkXSxUPXAvMitrLEM9ZCsxLE09Zi0xO0M8TTspe3ZhciBTPUMrTT4+PjE7dVtTXTxUP0M9UysxOk09U31ULXVbQy0xXTx1W0NdLVQmJmQrMTxDJiYtLUM7dmFyIFI9dVtDXS1rLEE9cC1SO2lmKHktbT5iLV8pe3ZhciBMPXA/KG0qQSt5KlIpL3A6eTtoKGQsQyxSLG0sXyxMLGIpLGgoQyxmLEEsTCxfLHksYil9ZWxzZXt2YXIgdj1wPyhfKkErYipSKS9wOmI7aChkLEMsUixtLF8seSx2KSxoKEMsZixBLG0sdix5LGIpfX19ZnVuY3Rpb24gbXoodCxlLHIsbixpKXsodC5kZXB0aCYxP3JmOmhjKSh0LGUscixuLGkpfWNvbnN0IGJ6PWZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gcihuLGksYSxzLG8pe2lmKChsPW4uX3NxdWFyaWZ5KSYmbC5yYXRpbz09PWUpZm9yKHZhciBsLHUsaCxkLGY9LTEscCxtPWwubGVuZ3RoLF89bi52YWx1ZTsrK2Y8bTspe2Zvcih1PWxbZl0saD11LmNoaWxkcmVuLGQ9dS52YWx1ZT0wLHA9aC5sZW5ndGg7ZDxwOysrZCl1LnZhbHVlKz1oW2RdLnZhbHVlO3UuZGljZT9oYyh1LGksYSxzLF8/YSs9KG8tYSkqdS52YWx1ZS9fOm8pOnJmKHUsaSxhLF8/aSs9KHMtaSkqdS52YWx1ZS9fOnMsbyksXy09dS52YWx1ZX1lbHNlIG4uX3NxdWFyaWZ5PWw9SXgoZSxuLGksYSxzLG8pLGwucmF0aW89ZX1yZXR1cm4gci5yYXRpbz1mdW5jdGlvbihuKXtyZXR1cm4gdCgobj0rbik+MT9uOjEpfSxyfShSeCk7ZnVuY3Rpb24gX3oodCl7Zm9yKHZhciBlPS0xLHI9dC5sZW5ndGgsbixpPXRbci0xXSxhPTA7KytlPHI7KW49aSxpPXRbZV0sYSs9blsxXSppWzBdLW5bMF0qaVsxXTtyZXR1cm4gYS8yfWZ1bmN0aW9uIHZ6KHQpe2Zvcih2YXIgZT0tMSxyPXQubGVuZ3RoLG49MCxpPTAsYSxzPXRbci0xXSxvLGw9MDsrK2U8cjspYT1zLHM9dFtlXSxsKz1vPWFbMF0qc1sxXS1zWzBdKmFbMV0sbis9KGFbMF0rc1swXSkqbyxpKz0oYVsxXStzWzFdKSpvO3JldHVybiBsKj0zLFtuL2wsaS9sXX1mdW5jdGlvbiB4eih0LGUscil7cmV0dXJuKGVbMF0tdFswXSkqKHJbMV0tdFsxXSktKGVbMV0tdFsxXSkqKHJbMF0tdFswXSl9ZnVuY3Rpb24ga3oodCxlKXtyZXR1cm4gdFswXS1lWzBdfHx0WzFdLWVbMV19ZnVuY3Rpb24gQngodCl7Y29uc3QgZT10Lmxlbmd0aCxyPVswLDFdO2xldCBuPTIsaTtmb3IoaT0yO2k8ZTsrK2kpe2Zvcig7bj4xJiZ4eih0W3Jbbi0yXV0sdFtyW24tMV1dLHRbaV0pPD0wOyktLW47cltuKytdPWl9cmV0dXJuIHIuc2xpY2UoMCxuKX1mdW5jdGlvbiB3eih0KXtpZigocj10Lmxlbmd0aCk8MylyZXR1cm4gbnVsbDt2YXIgZSxyLG49bmV3IEFycmF5KHIpLGk9bmV3IEFycmF5KHIpO2ZvcihlPTA7ZTxyOysrZSluW2VdPVsrdFtlXVswXSwrdFtlXVsxXSxlXTtmb3Iobi5zb3J0KGt6KSxlPTA7ZTxyOysrZSlpW2VdPVtuW2VdWzBdLC1uW2VdWzFdXTt2YXIgYT1CeChuKSxzPUJ4KGkpLG89c1swXT09PWFbMF0sbD1zW3MubGVuZ3RoLTFdPT09YVthLmxlbmd0aC0xXSx1PVtdO2ZvcihlPWEubGVuZ3RoLTE7ZT49MDstLWUpdS5wdXNoKHRbblthW2VdXVsyXV0pO2ZvcihlPStvO2U8cy5sZW5ndGgtbDsrK2UpdS5wdXNoKHRbbltzW2VdXVsyXV0pO3JldHVybiB1fWZ1bmN0aW9uIFR6KHQsZSl7Zm9yKHZhciByPXQubGVuZ3RoLG49dFtyLTFdLGk9ZVswXSxhPWVbMV0scz1uWzBdLG89blsxXSxsLHUsaD0hMSxkPTA7ZDxyOysrZCluPXRbZF0sbD1uWzBdLHU9blsxXSx1PmEhPW8+YSYmaTwocy1sKSooYS11KS8oby11KStsJiYoaD0haCkscz1sLG89dTtyZXR1cm4gaH1mdW5jdGlvbiBFeih0KXtmb3IodmFyIGU9LTEscj10Lmxlbmd0aCxuPXRbci0xXSxpLGEscz1uWzBdLG89blsxXSxsPTA7KytlPHI7KWk9cyxhPW8sbj10W2VdLHM9blswXSxvPW5bMV0saS09cyxhLT1vLGwrPU1hdGguaHlwb3QoaSxhKTtyZXR1cm4gbH1jb25zdCBJcj1NYXRoLnJhbmRvbSxDej1mdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIHIobixpKXtyZXR1cm4gbj1uPT1udWxsPzA6K24saT1pPT1udWxsPzE6K2ksYXJndW1lbnRzLmxlbmd0aD09PTE/KGk9bixuPTApOmktPW4sZnVuY3Rpb24oKXtyZXR1cm4gZSgpKmkrbn19cmV0dXJuIHIuc291cmNlPXQscn0oSXIpLFN6PWZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gcihuLGkpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPDImJihpPW4sbj0wKSxuPU1hdGguZmxvb3IobiksaT1NYXRoLmZsb29yKGkpLW4sZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5mbG9vcihlKCkqaStuKX19cmV0dXJuIHIuc291cmNlPXQscn0oSXIpLHRwPWZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gcihuLGkpe3ZhciBhLHM7cmV0dXJuIG49bj09bnVsbD8wOituLGk9aT09bnVsbD8xOitpLGZ1bmN0aW9uKCl7dmFyIG87aWYoYSE9bnVsbClvPWEsYT1udWxsO2Vsc2UgZG8gYT1lKCkqMi0xLG89ZSgpKjItMSxzPWEqYStvKm87d2hpbGUoIXN8fHM+MSk7cmV0dXJuIG4raSpvKk1hdGguc3FydCgtMipNYXRoLmxvZyhzKS9zKX19cmV0dXJuIHIuc291cmNlPXQscn0oSXIpLEF6PWZ1bmN0aW9uIHQoZSl7dmFyIHI9dHAuc291cmNlKGUpO2Z1bmN0aW9uIG4oKXt2YXIgaT1yLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5leHAoaSgpKX19cmV0dXJuIG4uc291cmNlPXQsbn0oSXIpLER4PWZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gcihuKXtyZXR1cm4obj0rbik8PTA/KCk9PjA6ZnVuY3Rpb24oKXtmb3IodmFyIGk9MCxhPW47YT4xOy0tYSlpKz1lKCk7cmV0dXJuIGkrYSplKCl9fXJldHVybiByLnNvdXJjZT10LHJ9KElyKSxNej1mdW5jdGlvbiB0KGUpe3ZhciByPUR4LnNvdXJjZShlKTtmdW5jdGlvbiBuKGkpe2lmKChpPStpKT09MClyZXR1cm4gZTt2YXIgYT1yKGkpO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBhKCkvaX19cmV0dXJuIG4uc291cmNlPXQsbn0oSXIpLEx6PWZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gcihuKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4tTWF0aC5sb2cxcCgtZSgpKS9ufX1yZXR1cm4gci5zb3VyY2U9dCxyfShJciksUno9ZnVuY3Rpb24gdChlKXtmdW5jdGlvbiByKG4pe2lmKChuPStuKTwwKXRocm93IG5ldyBSYW5nZUVycm9yKCJpbnZhbGlkIGFscGhhIik7cmV0dXJuIG49MS8tbixmdW5jdGlvbigpe3JldHVybiBNYXRoLnBvdygxLWUoKSxuKX19cmV0dXJuIHIuc291cmNlPXQscn0oSXIpLEl6PWZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gcihuKXtpZigobj0rbik8MHx8bj4xKXRocm93IG5ldyBSYW5nZUVycm9yKCJpbnZhbGlkIHAiKTtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5mbG9vcihlKCkrbil9fXJldHVybiByLnNvdXJjZT10LHJ9KElyKSxPeD1mdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIHIobil7aWYoKG49K24pPDB8fG4+MSl0aHJvdyBuZXcgUmFuZ2VFcnJvcigiaW52YWxpZCBwIik7cmV0dXJuIG49PT0wPygpPT4xLzA6bj09PTE/KCk9PjE6KG49TWF0aC5sb2cxcCgtbiksZnVuY3Rpb24oKXtyZXR1cm4gMStNYXRoLmZsb29yKE1hdGgubG9nMXAoLWUoKSkvbil9KX1yZXR1cm4gci5zb3VyY2U9dCxyfShJciksZXA9ZnVuY3Rpb24gdChlKXt2YXIgcj10cC5zb3VyY2UoZSkoKTtmdW5jdGlvbiBuKGksYSl7aWYoKGk9K2kpPDApdGhyb3cgbmV3IFJhbmdlRXJyb3IoImludmFsaWQgayIpO2lmKGk9PT0wKXJldHVybigpPT4wO2lmKGE9YT09bnVsbD8xOithLGk9PT0xKXJldHVybigpPT4tTWF0aC5sb2cxcCgtZSgpKSphO3ZhciBzPShpPDE/aSsxOmkpLTEvMyxvPTEvKDMqTWF0aC5zcXJ0KHMpKSxsPWk8MT8oKT0+TWF0aC5wb3coZSgpLDEvaSk6KCk9PjE7cmV0dXJuIGZ1bmN0aW9uKCl7ZG97ZG8gdmFyIHU9cigpLGg9MStvKnU7d2hpbGUoaDw9MCk7aCo9aCpoO3ZhciBkPTEtZSgpfXdoaWxlKGQ+PTEtLjAzMzEqdSp1KnUqdSYmTWF0aC5sb2coZCk+PS41KnUqdStzKigxLWgrTWF0aC5sb2coaCkpKTtyZXR1cm4gcypoKmwoKSphfX1yZXR1cm4gbi5zb3VyY2U9dCxufShJciksRng9ZnVuY3Rpb24gdChlKXt2YXIgcj1lcC5zb3VyY2UoZSk7ZnVuY3Rpb24gbihpLGEpe3ZhciBzPXIoaSksbz1yKGEpO3JldHVybiBmdW5jdGlvbigpe3ZhciBsPXMoKTtyZXR1cm4gbD09PTA/MDpsLyhsK28oKSl9fXJldHVybiBuLnNvdXJjZT10LG59KElyKSxQeD1mdW5jdGlvbiB0KGUpe3ZhciByPU94LnNvdXJjZShlKSxuPUZ4LnNvdXJjZShlKTtmdW5jdGlvbiBpKGEscyl7cmV0dXJuIGE9K2EsKHM9K3MpPj0xPygpPT5hOnM8PTA/KCk9PjA6ZnVuY3Rpb24oKXtmb3IodmFyIG89MCxsPWEsdT1zO2wqdT4xNiYmbCooMS11KT4xNjspe3ZhciBoPU1hdGguZmxvb3IoKGwrMSkqdSksZD1uKGgsbC1oKzEpKCk7ZDw9dT8obys9aCxsLT1oLHU9KHUtZCkvKDEtZCkpOihsPWgtMSx1Lz1kKX1mb3IodmFyIGY9dTwuNSxwPWY/dToxLXUsbT1yKHApLF89bSgpLHk9MDtfPD1sOysreSlfKz1tKCk7cmV0dXJuIG8rKGY/eTpsLXkpfX1yZXR1cm4gaS5zb3VyY2U9dCxpfShJciksTno9ZnVuY3Rpb24gdChlKXtmdW5jdGlvbiByKG4saSxhKXt2YXIgcztyZXR1cm4obj0rbik9PTA/cz1vPT4tTWF0aC5sb2cobyk6KG49MS9uLHM9bz0+TWF0aC5wb3cobyxuKSksaT1pPT1udWxsPzA6K2ksYT1hPT1udWxsPzE6K2EsZnVuY3Rpb24oKXtyZXR1cm4gaSthKnMoLU1hdGgubG9nMXAoLWUoKSkpfX1yZXR1cm4gci5zb3VyY2U9dCxyfShJciksQno9ZnVuY3Rpb24gdChlKXtmdW5jdGlvbiByKG4saSl7cmV0dXJuIG49bj09bnVsbD8wOituLGk9aT09bnVsbD8xOitpLGZ1bmN0aW9uKCl7cmV0dXJuIG4raSpNYXRoLnRhbihNYXRoLlBJKmUoKSl9fXJldHVybiByLnNvdXJjZT10LHJ9KElyKSxEej1mdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIHIobixpKXtyZXR1cm4gbj1uPT1udWxsPzA6K24saT1pPT1udWxsPzE6K2ksZnVuY3Rpb24oKXt2YXIgYT1lKCk7cmV0dXJuIG4raSpNYXRoLmxvZyhhLygxLWEpKX19cmV0dXJuIHIuc291cmNlPXQscn0oSXIpLE96PWZ1bmN0aW9uIHQoZSl7dmFyIHI9ZXAuc291cmNlKGUpLG49UHguc291cmNlKGUpO2Z1bmN0aW9uIGkoYSl7cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciBzPTAsbz1hO28+MTY7KXt2YXIgbD1NYXRoLmZsb29yKC44NzUqbyksdT1yKGwpKCk7aWYodT5vKXJldHVybiBzK24obC0xLG8vdSkoKTtzKz1sLG8tPXV9Zm9yKHZhciBoPS1NYXRoLmxvZzFwKC1lKCkpLGQ9MDtoPD1vOysrZCloLT1NYXRoLmxvZzFwKC1lKCkpO3JldHVybiBzK2R9fXJldHVybiBpLnNvdXJjZT10LGl9KElyKSxGej0xNjY0NTI1LFB6PTEwMTM5MDQyMjMscXg9MS80Mjk0OTY3Mjk2O2Z1bmN0aW9uIHF6KHQ9TWF0aC5yYW5kb20oKSl7bGV0IGU9KDA8PXQmJnQ8MT90L3F4Ok1hdGguYWJzKHQpKXwwO3JldHVybigpPT4oZT1GeiplK1B6fDAscXgqKGU+Pj4wKSl9ZnVuY3Rpb24gT24odCxlKXtzd2l0Y2goYXJndW1lbnRzLmxlbmd0aCl7Y2FzZSAwOmJyZWFrO2Nhc2UgMTp0aGlzLnJhbmdlKHQpO2JyZWFrO2RlZmF1bHQ6dGhpcy5yYW5nZShlKS5kb21haW4odCk7YnJlYWt9cmV0dXJuIHRoaXN9ZnVuY3Rpb24gdGEodCxlKXtzd2l0Y2goYXJndW1lbnRzLmxlbmd0aCl7Y2FzZSAwOmJyZWFrO2Nhc2UgMTp7dHlwZW9mIHQ9PSJmdW5jdGlvbiI/dGhpcy5pbnRlcnBvbGF0b3IodCk6dGhpcy5yYW5nZSh0KTticmVha31kZWZhdWx0Ont0aGlzLmRvbWFpbih0KSx0eXBlb2YgZT09ImZ1bmN0aW9uIj90aGlzLmludGVycG9sYXRvcihlKTp0aGlzLnJhbmdlKGUpO2JyZWFrfX1yZXR1cm4gdGhpc31jb25zdCBycD1TeW1ib2woImltcGxpY2l0Iik7ZnVuY3Rpb24gbmYoKXt2YXIgdD1uZXcga2wsZT1bXSxyPVtdLG49cnA7ZnVuY3Rpb24gaShhKXtsZXQgcz10LmdldChhKTtpZihzPT09dm9pZCAwKXtpZihuIT09cnApcmV0dXJuIG47dC5zZXQoYSxzPWUucHVzaChhKS0xKX1yZXR1cm4gcltzJXIubGVuZ3RoXX1yZXR1cm4gaS5kb21haW49ZnVuY3Rpb24oYSl7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIGUuc2xpY2UoKTtlPVtdLHQ9bmV3IGtsO2Zvcihjb25zdCBzIG9mIGEpdC5oYXMocyl8fHQuc2V0KHMsZS5wdXNoKHMpLTEpO3JldHVybiBpfSxpLnJhbmdlPWZ1bmN0aW9uKGEpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPUFycmF5LmZyb20oYSksaSk6ci5zbGljZSgpfSxpLnVua25vd249ZnVuY3Rpb24oYSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49YSxpKTpufSxpLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gbmYoZSxyKS51bmtub3duKG4pfSxPbi5hcHBseShpLGFyZ3VtZW50cyksaX1mdW5jdGlvbiBucCgpe3ZhciB0PW5mKCkudW5rbm93bih2b2lkIDApLGU9dC5kb21haW4scj10LnJhbmdlLG49MCxpPTEsYSxzLG89ITEsbD0wLHU9MCxoPS41O2RlbGV0ZSB0LnVua25vd247ZnVuY3Rpb24gZCgpe3ZhciBmPWUoKS5sZW5ndGgscD1pPG4sbT1wP2k6bixfPXA/bjppO2E9KF8tbSkvTWF0aC5tYXgoMSxmLWwrdSoyKSxvJiYoYT1NYXRoLmZsb29yKGEpKSxtKz0oXy1tLWEqKGYtbCkpKmgscz1hKigxLWwpLG8mJihtPU1hdGgucm91bmQobSkscz1NYXRoLnJvdW5kKHMpKTt2YXIgeT1DYShmKS5tYXAoZnVuY3Rpb24oYil7cmV0dXJuIG0rYSpifSk7cmV0dXJuIHIocD95LnJldmVyc2UoKTp5KX1yZXR1cm4gdC5kb21haW49ZnVuY3Rpb24oZil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGUoZiksZCgpKTplKCl9LHQucmFuZ2U9ZnVuY3Rpb24oZil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KFtuLGldPWYsbj0rbixpPStpLGQoKSk6W24saV19LHQucmFuZ2VSb3VuZD1mdW5jdGlvbihmKXtyZXR1cm5bbixpXT1mLG49K24saT0raSxvPSEwLGQoKX0sdC5iYW5kd2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4gc30sdC5zdGVwPWZ1bmN0aW9uKCl7cmV0dXJuIGF9LHQucm91bmQ9ZnVuY3Rpb24oZil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89ISFmLGQoKSk6b30sdC5wYWRkaW5nPWZ1bmN0aW9uKGYpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPU1hdGgubWluKDEsdT0rZiksZCgpKTpsfSx0LnBhZGRpbmdJbm5lcj1mdW5jdGlvbihmKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD1NYXRoLm1pbigxLGYpLGQoKSk6bH0sdC5wYWRkaW5nT3V0ZXI9ZnVuY3Rpb24oZil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHU9K2YsZCgpKTp1fSx0LmFsaWduPWZ1bmN0aW9uKGYpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhoPU1hdGgubWF4KDAsTWF0aC5taW4oMSxmKSksZCgpKTpofSx0LmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gbnAoZSgpLFtuLGldKS5yb3VuZChvKS5wYWRkaW5nSW5uZXIobCkucGFkZGluZ091dGVyKHUpLmFsaWduKGgpfSxPbi5hcHBseShkKCksYXJndW1lbnRzKX1mdW5jdGlvbiBWeCh0KXt2YXIgZT10LmNvcHk7cmV0dXJuIHQucGFkZGluZz10LnBhZGRpbmdPdXRlcixkZWxldGUgdC5wYWRkaW5nSW5uZXIsZGVsZXRlIHQucGFkZGluZ091dGVyLHQuY29weT1mdW5jdGlvbigpe3JldHVybiBWeChlKCkpfSx0fWZ1bmN0aW9uIFZ6KCl7cmV0dXJuIFZ4KG5wLmFwcGx5KG51bGwsYXJndW1lbnRzKS5wYWRkaW5nSW5uZXIoMSkpfWZ1bmN0aW9uIHp6KHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiB0fX1mdW5jdGlvbiBhZih0KXtyZXR1cm4rdH12YXIgeng9WzAsMV07ZnVuY3Rpb24gYW4odCl7cmV0dXJuIHR9ZnVuY3Rpb24gaXAodCxlKXtyZXR1cm4oZS09dD0rdCk/ZnVuY3Rpb24ocil7cmV0dXJuKHItdCkvZX06enooaXNOYU4oZSk/TmFOOi41KX1mdW5jdGlvbiBZeih0LGUpe3ZhciByO3JldHVybiB0PmUmJihyPXQsdD1lLGU9ciksZnVuY3Rpb24obil7cmV0dXJuIE1hdGgubWF4KHQsTWF0aC5taW4oZSxuKSl9fWZ1bmN0aW9uIFV6KHQsZSxyKXt2YXIgbj10WzBdLGk9dFsxXSxhPWVbMF0scz1lWzFdO3JldHVybiBpPG4/KG49aXAoaSxuKSxhPXIocyxhKSk6KG49aXAobixpKSxhPXIoYSxzKSksZnVuY3Rpb24obyl7cmV0dXJuIGEobihvKSl9fWZ1bmN0aW9uIFd6KHQsZSxyKXt2YXIgbj1NYXRoLm1pbih0Lmxlbmd0aCxlLmxlbmd0aCktMSxpPW5ldyBBcnJheShuKSxhPW5ldyBBcnJheShuKSxzPS0xO2Zvcih0W25dPHRbMF0mJih0PXQuc2xpY2UoKS5yZXZlcnNlKCksZT1lLnNsaWNlKCkucmV2ZXJzZSgpKTsrK3M8bjspaVtzXT1pcCh0W3NdLHRbcysxXSksYVtzXT1yKGVbc10sZVtzKzFdKTtyZXR1cm4gZnVuY3Rpb24obyl7dmFyIGw9Y3ModCxvLDEsbiktMTtyZXR1cm4gYVtsXShpW2xdKG8pKX19ZnVuY3Rpb24gZmModCxlKXtyZXR1cm4gZS5kb21haW4odC5kb21haW4oKSkucmFuZ2UodC5yYW5nZSgpKS5pbnRlcnBvbGF0ZSh0LmludGVycG9sYXRlKCkpLmNsYW1wKHQuY2xhbXAoKSkudW5rbm93bih0LnVua25vd24oKSl9ZnVuY3Rpb24gc2YoKXt2YXIgdD16eCxlPXp4LHI9TWEsbixpLGEscz1hbixvLGwsdTtmdW5jdGlvbiBoKCl7dmFyIGY9TWF0aC5taW4odC5sZW5ndGgsZS5sZW5ndGgpO3JldHVybiBzIT09YW4mJihzPVl6KHRbMF0sdFtmLTFdKSksbz1mPjI/V3o6VXosbD11PW51bGwsZH1mdW5jdGlvbiBkKGYpe3JldHVybiBmPT1udWxsfHxpc05hTihmPStmKT9hOihsfHwobD1vKHQubWFwKG4pLGUscikpKShuKHMoZikpKX1yZXR1cm4gZC5pbnZlcnQ9ZnVuY3Rpb24oZil7cmV0dXJuIHMoaSgodXx8KHU9byhlLHQubWFwKG4pLEJuKSkpKGYpKSl9LGQuZG9tYWluPWZ1bmN0aW9uKGYpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PUFycmF5LmZyb20oZixhZiksaCgpKTp0LnNsaWNlKCl9LGQucmFuZ2U9ZnVuY3Rpb24oZil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9QXJyYXkuZnJvbShmKSxoKCkpOmUuc2xpY2UoKX0sZC5yYW5nZVJvdW5kPWZ1bmN0aW9uKGYpe3JldHVybiBlPUFycmF5LmZyb20oZikscj1qdSxoKCl9LGQuY2xhbXA9ZnVuY3Rpb24oZil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHM9Zj8hMDphbixoKCkpOnMhPT1hbn0sZC5pbnRlcnBvbGF0ZT1mdW5jdGlvbihmKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1mLGgoKSk6cn0sZC51bmtub3duPWZ1bmN0aW9uKGYpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhhPWYsZCk6YX0sZnVuY3Rpb24oZixwKXtyZXR1cm4gbj1mLGk9cCxoKCl9fWZ1bmN0aW9uIGFwKCl7cmV0dXJuIHNmKCkoYW4sYW4pfWZ1bmN0aW9uIFl4KHQsZSxyLG4pe3ZhciBpPXdsKHQsZSxyKSxhO3N3aXRjaChuPUNvKG49PW51bGw/IixmIjpuKSxuLnR5cGUpe2Nhc2UicyI6e3ZhciBzPU1hdGgubWF4KE1hdGguYWJzKHQpLE1hdGguYWJzKGUpKTtyZXR1cm4gbi5wcmVjaXNpb249PW51bGwmJiFpc05hTihhPUp2KGkscykpJiYobi5wcmVjaXNpb249YSksSmQobixzKX1jYXNlIiI6Y2FzZSJlIjpjYXNlImciOmNhc2UicCI6Y2FzZSJyIjp7bi5wcmVjaXNpb249PW51bGwmJiFpc05hTihhPXQ2KGksTWF0aC5tYXgoTWF0aC5hYnModCksTWF0aC5hYnMoZSkpKSkmJihuLnByZWNpc2lvbj1hLShuLnR5cGU9PT0iZSIpKTticmVha31jYXNlImYiOmNhc2UiJSI6e24ucHJlY2lzaW9uPT1udWxsJiYhaXNOYU4oYT1RdihpKSkmJihuLnByZWNpc2lvbj1hLShuLnR5cGU9PT0iJSIpKjIpO2JyZWFrfX1yZXR1cm4geWgobil9ZnVuY3Rpb24gT2EodCl7dmFyIGU9dC5kb21haW47cmV0dXJuIHQudGlja3M9ZnVuY3Rpb24ocil7dmFyIG49ZSgpO3JldHVybiBocyhuWzBdLG5bbi5sZW5ndGgtMV0scj09bnVsbD8xMDpyKX0sdC50aWNrRm9ybWF0PWZ1bmN0aW9uKHIsbil7dmFyIGk9ZSgpO3JldHVybiBZeChpWzBdLGlbaS5sZW5ndGgtMV0scj09bnVsbD8xMDpyLG4pfSx0Lm5pY2U9ZnVuY3Rpb24ocil7cj09bnVsbCYmKHI9MTApO3ZhciBuPWUoKSxpPTAsYT1uLmxlbmd0aC0xLHM9bltpXSxvPW5bYV0sbCx1LGg9MTA7Zm9yKG88cyYmKHU9cyxzPW8sbz11LHU9aSxpPWEsYT11KTtoLS0gPjA7KXtpZih1PW9vKHMsbyxyKSx1PT09bClyZXR1cm4gbltpXT1zLG5bYV09byxlKG4pO2lmKHU+MClzPU1hdGguZmxvb3Iocy91KSp1LG89TWF0aC5jZWlsKG8vdSkqdTtlbHNlIGlmKHU8MClzPU1hdGguY2VpbChzKnUpL3Usbz1NYXRoLmZsb29yKG8qdSkvdTtlbHNlIGJyZWFrO2w9dX1yZXR1cm4gdH0sdH1mdW5jdGlvbiBzcCgpe3ZhciB0PWFwKCk7cmV0dXJuIHQuY29weT1mdW5jdGlvbigpe3JldHVybiBmYyh0LHNwKCkpfSxPbi5hcHBseSh0LGFyZ3VtZW50cyksT2EodCl9ZnVuY3Rpb24gVXgodCl7dmFyIGU7ZnVuY3Rpb24gcihuKXtyZXR1cm4gbj09bnVsbHx8aXNOYU4obj0rbik/ZTpufXJldHVybiByLmludmVydD1yLHIuZG9tYWluPXIucmFuZ2U9ZnVuY3Rpb24obil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9QXJyYXkuZnJvbShuLGFmKSxyKTp0LnNsaWNlKCl9LHIudW5rbm93bj1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT1uLHIpOmV9LHIuY29weT1mdW5jdGlvbigpe3JldHVybiBVeCh0KS51bmtub3duKGUpfSx0PWFyZ3VtZW50cy5sZW5ndGg/QXJyYXkuZnJvbSh0LGFmKTpbMCwxXSxPYShyKX1mdW5jdGlvbiBXeCh0LGUpe3Q9dC5zbGljZSgpO3ZhciByPTAsbj10Lmxlbmd0aC0xLGk9dFtyXSxhPXRbbl0scztyZXR1cm4gYTxpJiYocz1yLHI9bixuPXMscz1pLGk9YSxhPXMpLHRbcl09ZS5mbG9vcihpKSx0W25dPWUuY2VpbChhKSx0fWZ1bmN0aW9uIEh4KHQpe3JldHVybiBNYXRoLmxvZyh0KX1mdW5jdGlvbiBHeCh0KXtyZXR1cm4gTWF0aC5leHAodCl9ZnVuY3Rpb24gSHoodCl7cmV0dXJuLU1hdGgubG9nKC10KX1mdW5jdGlvbiBHeih0KXtyZXR1cm4tTWF0aC5leHAoLXQpfWZ1bmN0aW9uIGp6KHQpe3JldHVybiBpc0Zpbml0ZSh0KT8rKCIxZSIrdCk6dDwwPzA6dH1mdW5jdGlvbiAkeih0KXtyZXR1cm4gdD09PTEwP2p6OnQ9PT1NYXRoLkU/TWF0aC5leHA6ZT0+TWF0aC5wb3codCxlKX1mdW5jdGlvbiBYeih0KXtyZXR1cm4gdD09PU1hdGguRT9NYXRoLmxvZzp0PT09MTAmJk1hdGgubG9nMTB8fHQ9PT0yJiZNYXRoLmxvZzJ8fCh0PU1hdGgubG9nKHQpLGU9Pk1hdGgubG9nKGUpL3QpfWZ1bmN0aW9uIGp4KHQpe3JldHVybihlLHIpPT4tdCgtZSxyKX1mdW5jdGlvbiBvcCh0KXtjb25zdCBlPXQoSHgsR3gpLHI9ZS5kb21haW47bGV0IG49MTAsaSxhO2Z1bmN0aW9uIHMoKXtyZXR1cm4gaT1YeihuKSxhPSR6KG4pLHIoKVswXTwwPyhpPWp4KGkpLGE9angoYSksdChIeixHeikpOnQoSHgsR3gpLGV9cmV0dXJuIGUuYmFzZT1mdW5jdGlvbihvKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj0rbyxzKCkpOm59LGUuZG9tYWluPWZ1bmN0aW9uKG8pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyKG8pLHMoKSk6cigpfSxlLnRpY2tzPW89Pntjb25zdCBsPXIoKTtsZXQgdT1sWzBdLGg9bFtsLmxlbmd0aC0xXTtjb25zdCBkPWg8dTtkJiYoW3UsaF09W2gsdV0pO2xldCBmPWkodSkscD1pKGgpLG0sXztjb25zdCB5PW89PW51bGw/MTA6K287bGV0IGI9W107aWYoIShuJTEpJiZwLWY8eSl7aWYoZj1NYXRoLmZsb29yKGYpLHA9TWF0aC5jZWlsKHApLHU+MCl7Zm9yKDtmPD1wOysrZilmb3IobT0xO208bjsrK20paWYoXz1mPDA/bS9hKC1mKTptKmEoZiksIShfPHUpKXtpZihfPmgpYnJlYWs7Yi5wdXNoKF8pfX1lbHNlIGZvcig7Zjw9cDsrK2YpZm9yKG09bi0xO20+PTE7LS1tKWlmKF89Zj4wP20vYSgtZik6bSphKGYpLCEoXzx1KSl7aWYoXz5oKWJyZWFrO2IucHVzaChfKX1iLmxlbmd0aCoyPHkmJihiPWhzKHUsaCx5KSl9ZWxzZSBiPWhzKGYscCxNYXRoLm1pbihwLWYseSkpLm1hcChhKTtyZXR1cm4gZD9iLnJldmVyc2UoKTpifSxlLnRpY2tGb3JtYXQ9KG8sbCk9PntpZihvPT1udWxsJiYobz0xMCksbD09bnVsbCYmKGw9bj09PTEwPyJzIjoiLCIpLHR5cGVvZiBsIT0iZnVuY3Rpb24iJiYoIShuJTEpJiYobD1DbyhsKSkucHJlY2lzaW9uPT1udWxsJiYobC50cmltPSEwKSxsPXloKGwpKSxvPT09MS8wKXJldHVybiBsO2NvbnN0IHU9TWF0aC5tYXgoMSxuKm8vZS50aWNrcygpLmxlbmd0aCk7cmV0dXJuIGg9PntsZXQgZD1oL2EoTWF0aC5yb3VuZChpKGgpKSk7cmV0dXJuIGQqbjxuLS41JiYoZCo9biksZDw9dT9sKGgpOiIifX0sZS5uaWNlPSgpPT5yKFd4KHIoKSx7Zmxvb3I6bz0+YShNYXRoLmZsb29yKGkobykpKSxjZWlsOm89PmEoTWF0aC5jZWlsKGkobykpKX0pKSxlfWZ1bmN0aW9uICR4KCl7Y29uc3QgdD1vcChzZigpKS5kb21haW4oWzEsMTBdKTtyZXR1cm4gdC5jb3B5PSgpPT5mYyh0LCR4KCkpLmJhc2UodC5iYXNlKCkpLE9uLmFwcGx5KHQsYXJndW1lbnRzKSx0fWZ1bmN0aW9uIFh4KHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5zaWduKGUpKk1hdGgubG9nMXAoTWF0aC5hYnMoZS90KSl9fWZ1bmN0aW9uIEt4KHQpe3JldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5zaWduKGUpKk1hdGguZXhwbTEoTWF0aC5hYnMoZSkpKnR9fWZ1bmN0aW9uIGxwKHQpe3ZhciBlPTEscj10KFh4KGUpLEt4KGUpKTtyZXR1cm4gci5jb25zdGFudD1mdW5jdGlvbihuKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD90KFh4KGU9K24pLEt4KGUpKTplfSxPYShyKX1mdW5jdGlvbiBaeCgpe3ZhciB0PWxwKHNmKCkpO3JldHVybiB0LmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gZmModCxaeCgpKS5jb25zdGFudCh0LmNvbnN0YW50KCkpfSxPbi5hcHBseSh0LGFyZ3VtZW50cyl9ZnVuY3Rpb24gUXgodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBlPDA/LU1hdGgucG93KC1lLHQpOk1hdGgucG93KGUsdCl9fWZ1bmN0aW9uIEt6KHQpe3JldHVybiB0PDA/LU1hdGguc3FydCgtdCk6TWF0aC5zcXJ0KHQpfWZ1bmN0aW9uIFp6KHQpe3JldHVybiB0PDA/LXQqdDp0KnR9ZnVuY3Rpb24gY3AodCl7dmFyIGU9dChhbixhbikscj0xO2Z1bmN0aW9uIG4oKXtyZXR1cm4gcj09PTE/dChhbixhbik6cj09PS41P3QoS3osWnopOnQoUXgociksUXgoMS9yKSl9cmV0dXJuIGUuZXhwb25lbnQ9ZnVuY3Rpb24oaSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9K2ksbigpKTpyfSxPYShlKX1mdW5jdGlvbiB1cCgpe3ZhciB0PWNwKHNmKCkpO3JldHVybiB0LmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gZmModCx1cCgpKS5leHBvbmVudCh0LmV4cG9uZW50KCkpfSxPbi5hcHBseSh0LGFyZ3VtZW50cyksdH1mdW5jdGlvbiBReigpe3JldHVybiB1cC5hcHBseShudWxsLGFyZ3VtZW50cykuZXhwb25lbnQoLjUpfWZ1bmN0aW9uIEp4KHQpe3JldHVybiBNYXRoLnNpZ24odCkqdCp0fWZ1bmN0aW9uIEp6KHQpe3JldHVybiBNYXRoLnNpZ24odCkqTWF0aC5zcXJ0KE1hdGguYWJzKHQpKX1mdW5jdGlvbiB0OCgpe3ZhciB0PWFwKCksZT1bMCwxXSxyPSExLG47ZnVuY3Rpb24gaShhKXt2YXIgcz1Keih0KGEpKTtyZXR1cm4gaXNOYU4ocyk/bjpyP01hdGgucm91bmQocyk6c31yZXR1cm4gaS5pbnZlcnQ9ZnVuY3Rpb24oYSl7cmV0dXJuIHQuaW52ZXJ0KEp4KGEpKX0saS5kb21haW49ZnVuY3Rpb24oYSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQuZG9tYWluKGEpLGkpOnQuZG9tYWluKCl9LGkucmFuZ2U9ZnVuY3Rpb24oYSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQucmFuZ2UoKGU9QXJyYXkuZnJvbShhLGFmKSkubWFwKEp4KSksaSk6ZS5zbGljZSgpfSxpLnJhbmdlUm91bmQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGkucmFuZ2UoYSkucm91bmQoITApfSxpLnJvdW5kPWZ1bmN0aW9uKGEpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPSEhYSxpKTpyfSxpLmNsYW1wPWZ1bmN0aW9uKGEpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0LmNsYW1wKGEpLGkpOnQuY2xhbXAoKX0saS51bmtub3duPWZ1bmN0aW9uKGEpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPWEsaSk6bn0saS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIHQ4KHQuZG9tYWluKCksZSkucm91bmQocikuY2xhbXAodC5jbGFtcCgpKS51bmtub3duKG4pfSxPbi5hcHBseShpLGFyZ3VtZW50cyksT2EoaSl9ZnVuY3Rpb24gZTgoKXt2YXIgdD1bXSxlPVtdLHI9W10sbjtmdW5jdGlvbiBpKCl7dmFyIHM9MCxvPU1hdGgubWF4KDEsZS5sZW5ndGgpO2ZvcihyPW5ldyBBcnJheShvLTEpOysrczxvOylyW3MtMV09cV8odCxzL28pO3JldHVybiBhfWZ1bmN0aW9uIGEocyl7cmV0dXJuIHM9PW51bGx8fGlzTmFOKHM9K3MpP246ZVtjcyhyLHMpXX1yZXR1cm4gYS5pbnZlcnRFeHRlbnQ9ZnVuY3Rpb24ocyl7dmFyIG89ZS5pbmRleE9mKHMpO3JldHVybiBvPDA/W05hTixOYU5dOltvPjA/cltvLTFdOnRbMF0sbzxyLmxlbmd0aD9yW29dOnRbdC5sZW5ndGgtMV1dfSxhLmRvbWFpbj1mdW5jdGlvbihzKXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdC5zbGljZSgpO3Q9W107Zm9yKGxldCBvIG9mIHMpbyE9bnVsbCYmIWlzTmFOKG89K28pJiZ0LnB1c2gobyk7cmV0dXJuIHQuc29ydChRZSksaSgpfSxhLnJhbmdlPWZ1bmN0aW9uKHMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPUFycmF5LmZyb20ocyksaSgpKTplLnNsaWNlKCl9LGEudW5rbm93bj1mdW5jdGlvbihzKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1zLGEpOm59LGEucXVhbnRpbGVzPWZ1bmN0aW9uKCl7cmV0dXJuIHIuc2xpY2UoKX0sYS5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIGU4KCkuZG9tYWluKHQpLnJhbmdlKGUpLnVua25vd24obil9LE9uLmFwcGx5KGEsYXJndW1lbnRzKX1mdW5jdGlvbiByOCgpe3ZhciB0PTAsZT0xLHI9MSxuPVsuNV0saT1bMCwxXSxhO2Z1bmN0aW9uIHMobCl7cmV0dXJuIGwhPW51bGwmJmw8PWw/aVtjcyhuLGwsMCxyKV06YX1mdW5jdGlvbiBvKCl7dmFyIGw9LTE7Zm9yKG49bmV3IEFycmF5KHIpOysrbDxyOyluW2xdPSgobCsxKSplLShsLXIpKnQpLyhyKzEpO3JldHVybiBzfXJldHVybiBzLmRvbWFpbj1mdW5jdGlvbihsKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oW3QsZV09bCx0PSt0LGU9K2UsbygpKTpbdCxlXX0scy5yYW5nZT1mdW5jdGlvbihsKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj0oaT1BcnJheS5mcm9tKGwpKS5sZW5ndGgtMSxvKCkpOmkuc2xpY2UoKX0scy5pbnZlcnRFeHRlbnQ9ZnVuY3Rpb24obCl7dmFyIHU9aS5pbmRleE9mKGwpO3JldHVybiB1PDA/W05hTixOYU5dOnU8MT9bdCxuWzBdXTp1Pj1yP1tuW3ItMV0sZV06W25bdS0xXSxuW3VdXX0scy51bmtub3duPWZ1bmN0aW9uKGwpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoJiYoYT1sKSxzfSxzLnRocmVzaG9sZHM9ZnVuY3Rpb24oKXtyZXR1cm4gbi5zbGljZSgpfSxzLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gcjgoKS5kb21haW4oW3QsZV0pLnJhbmdlKGkpLnVua25vd24oYSl9LE9uLmFwcGx5KE9hKHMpLGFyZ3VtZW50cyl9ZnVuY3Rpb24gbjgoKXt2YXIgdD1bLjVdLGU9WzAsMV0scixuPTE7ZnVuY3Rpb24gaShhKXtyZXR1cm4gYSE9bnVsbCYmYTw9YT9lW2NzKHQsYSwwLG4pXTpyfXJldHVybiBpLmRvbWFpbj1mdW5jdGlvbihhKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD1BcnJheS5mcm9tKGEpLG49TWF0aC5taW4odC5sZW5ndGgsZS5sZW5ndGgtMSksaSk6dC5zbGljZSgpfSxpLnJhbmdlPWZ1bmN0aW9uKGEpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPUFycmF5LmZyb20oYSksbj1NYXRoLm1pbih0Lmxlbmd0aCxlLmxlbmd0aC0xKSxpKTplLnNsaWNlKCl9LGkuaW52ZXJ0RXh0ZW50PWZ1bmN0aW9uKGEpe3ZhciBzPWUuaW5kZXhPZihhKTtyZXR1cm5bdFtzLTFdLHRbc11dfSxpLnVua25vd249ZnVuY3Rpb24oYSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9YSxpKTpyfSxpLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gbjgoKS5kb21haW4odCkucmFuZ2UoZSkudW5rbm93bihyKX0sT24uYXBwbHkoaSxhcmd1bWVudHMpfXZhciBocD1uZXcgRGF0ZSxmcD1uZXcgRGF0ZTtmdW5jdGlvbiB4cih0LGUscixuKXtmdW5jdGlvbiBpKGEpe3JldHVybiB0KGE9YXJndW1lbnRzLmxlbmd0aD09PTA/bmV3IERhdGU6bmV3IERhdGUoK2EpKSxhfXJldHVybiBpLmZsb29yPWZ1bmN0aW9uKGEpe3JldHVybiB0KGE9bmV3IERhdGUoK2EpKSxhfSxpLmNlaWw9ZnVuY3Rpb24oYSl7cmV0dXJuIHQoYT1uZXcgRGF0ZShhLTEpKSxlKGEsMSksdChhKSxhfSxpLnJvdW5kPWZ1bmN0aW9uKGEpe3ZhciBzPWkoYSksbz1pLmNlaWwoYSk7cmV0dXJuIGEtczxvLWE/czpvfSxpLm9mZnNldD1mdW5jdGlvbihhLHMpe3JldHVybiBlKGE9bmV3IERhdGUoK2EpLHM9PW51bGw/MTpNYXRoLmZsb29yKHMpKSxhfSxpLnJhbmdlPWZ1bmN0aW9uKGEscyxvKXt2YXIgbD1bXSx1O2lmKGE9aS5jZWlsKGEpLG89bz09bnVsbD8xOk1hdGguZmxvb3IobyksIShhPHMpfHwhKG8+MCkpcmV0dXJuIGw7ZG8gbC5wdXNoKHU9bmV3IERhdGUoK2EpKSxlKGEsbyksdChhKTt3aGlsZSh1PGEmJmE8cyk7cmV0dXJuIGx9LGkuZmlsdGVyPWZ1bmN0aW9uKGEpe3JldHVybiB4cihmdW5jdGlvbihzKXtpZihzPj1zKWZvcig7dChzKSwhYShzKTspcy5zZXRUaW1lKHMtMSl9LGZ1bmN0aW9uKHMsbyl7aWYocz49cylpZihvPDApZm9yKDsrK288PTA7KWZvcig7ZShzLC0xKSwhYShzKTspO2Vsc2UgZm9yKDstLW8+PTA7KWZvcig7ZShzLDEpLCFhKHMpOyk7fSl9LHImJihpLmNvdW50PWZ1bmN0aW9uKGEscyl7cmV0dXJuIGhwLnNldFRpbWUoK2EpLGZwLnNldFRpbWUoK3MpLHQoaHApLHQoZnApLE1hdGguZmxvb3IocihocCxmcCkpfSxpLmV2ZXJ5PWZ1bmN0aW9uKGEpe3JldHVybiBhPU1hdGguZmxvb3IoYSksIWlzRmluaXRlKGEpfHwhKGE+MCk/bnVsbDphPjE/aS5maWx0ZXIobj9mdW5jdGlvbihzKXtyZXR1cm4gbihzKSVhPT09MH06ZnVuY3Rpb24ocyl7cmV0dXJuIGkuY291bnQoMCxzKSVhPT09MH0pOml9KSxpfXZhciBvZj14cihmdW5jdGlvbigpe30sZnVuY3Rpb24odCxlKXt0LnNldFRpbWUoK3QrZSl9LGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUtdH0pO29mLmV2ZXJ5PWZ1bmN0aW9uKHQpe3JldHVybiB0PU1hdGguZmxvb3IodCksIWlzRmluaXRlKHQpfHwhKHQ+MCk/bnVsbDp0PjE/eHIoZnVuY3Rpb24oZSl7ZS5zZXRUaW1lKE1hdGguZmxvb3IoZS90KSp0KX0sZnVuY3Rpb24oZSxyKXtlLnNldFRpbWUoK2Urcip0KX0sZnVuY3Rpb24oZSxyKXtyZXR1cm4oci1lKS90fSk6b2Z9O2NvbnN0IGRwPW9mO3ZhciBpOD1vZi5yYW5nZTtjb25zdCBlYT0xZTMsRm49ZWEqNjAscmE9Rm4qNjAsUnM9cmEqMjQscHA9UnMqNyxhOD1ScyozMCxncD1ScyozNjU7dmFyIHM4PXhyKGZ1bmN0aW9uKHQpe3Quc2V0VGltZSh0LXQuZ2V0TWlsbGlzZWNvbmRzKCkpfSxmdW5jdGlvbih0LGUpe3Quc2V0VGltZSgrdCtlKmVhKX0sZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS9lYX0sZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDU2Vjb25kcygpfSk7Y29uc3QgRmE9czg7dmFyIG84PXM4LnJhbmdlLGw4PXhyKGZ1bmN0aW9uKHQpe3Quc2V0VGltZSh0LXQuZ2V0TWlsbGlzZWNvbmRzKCktdC5nZXRTZWNvbmRzKCkqZWEpfSxmdW5jdGlvbih0LGUpe3Quc2V0VGltZSgrdCtlKkZuKX0sZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS9Gbn0sZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0TWludXRlcygpfSk7Y29uc3QgeXA9bDg7dmFyIHRZPWw4LnJhbmdlLGM4PXhyKGZ1bmN0aW9uKHQpe3Quc2V0VGltZSh0LXQuZ2V0TWlsbGlzZWNvbmRzKCktdC5nZXRTZWNvbmRzKCkqZWEtdC5nZXRNaW51dGVzKCkqRm4pfSxmdW5jdGlvbih0LGUpe3Quc2V0VGltZSgrdCtlKnJhKX0sZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS9yYX0sZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0SG91cnMoKX0pO2NvbnN0IG1wPWM4O3ZhciBlWT1jOC5yYW5nZSx1OD14cih0PT50LnNldEhvdXJzKDAsMCwwLDApLCh0LGUpPT50LnNldERhdGUodC5nZXREYXRlKCkrZSksKHQsZSk9PihlLXQtKGUuZ2V0VGltZXpvbmVPZmZzZXQoKS10LmdldFRpbWV6b25lT2Zmc2V0KCkpKkZuKS9Scyx0PT50LmdldERhdGUoKS0xKTtjb25zdCBkYz11ODt2YXIgclk9dTgucmFuZ2U7ZnVuY3Rpb24gSXModCl7cmV0dXJuIHhyKGZ1bmN0aW9uKGUpe2Uuc2V0RGF0ZShlLmdldERhdGUoKS0oZS5nZXREYXkoKSs3LXQpJTcpLGUuc2V0SG91cnMoMCwwLDAsMCl9LGZ1bmN0aW9uKGUscil7ZS5zZXREYXRlKGUuZ2V0RGF0ZSgpK3IqNyl9LGZ1bmN0aW9uKGUscil7cmV0dXJuKHItZS0oci5nZXRUaW1lem9uZU9mZnNldCgpLWUuZ2V0VGltZXpvbmVPZmZzZXQoKSkqRm4pL3BwfSl9dmFyIERvPUlzKDApLHBjPUlzKDEpLGg4PUlzKDIpLGY4PUlzKDMpLE5zPUlzKDQpLGQ4PUlzKDUpLHA4PUlzKDYpLGc4PURvLnJhbmdlLG5ZPXBjLnJhbmdlLGlZPWg4LnJhbmdlLGFZPWY4LnJhbmdlLHNZPU5zLnJhbmdlLG9ZPWQ4LnJhbmdlLGxZPXA4LnJhbmdlLHk4PXhyKGZ1bmN0aW9uKHQpe3Quc2V0RGF0ZSgxKSx0LnNldEhvdXJzKDAsMCwwLDApfSxmdW5jdGlvbih0LGUpe3Quc2V0TW9udGgodC5nZXRNb250aCgpK2UpfSxmdW5jdGlvbih0LGUpe3JldHVybiBlLmdldE1vbnRoKCktdC5nZXRNb250aCgpKyhlLmdldEZ1bGxZZWFyKCktdC5nZXRGdWxsWWVhcigpKSoxMn0sZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0TW9udGgoKX0pO2NvbnN0IGJwPXk4O3ZhciBjWT15OC5yYW5nZSxfcD14cihmdW5jdGlvbih0KXt0LnNldE1vbnRoKDAsMSksdC5zZXRIb3VycygwLDAsMCwwKX0sZnVuY3Rpb24odCxlKXt0LnNldEZ1bGxZZWFyKHQuZ2V0RnVsbFllYXIoKStlKX0sZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5nZXRGdWxsWWVhcigpLXQuZ2V0RnVsbFllYXIoKX0sZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0RnVsbFllYXIoKX0pO19wLmV2ZXJ5PWZ1bmN0aW9uKHQpe3JldHVybiFpc0Zpbml0ZSh0PU1hdGguZmxvb3IodCkpfHwhKHQ+MCk/bnVsbDp4cihmdW5jdGlvbihlKXtlLnNldEZ1bGxZZWFyKE1hdGguZmxvb3IoZS5nZXRGdWxsWWVhcigpL3QpKnQpLGUuc2V0TW9udGgoMCwxKSxlLnNldEhvdXJzKDAsMCwwLDApfSxmdW5jdGlvbihlLHIpe2Uuc2V0RnVsbFllYXIoZS5nZXRGdWxsWWVhcigpK3IqdCl9KX07Y29uc3QgUGE9X3A7dmFyIHVZPV9wLnJhbmdlLG04PXhyKGZ1bmN0aW9uKHQpe3Quc2V0VVRDU2Vjb25kcygwLDApfSxmdW5jdGlvbih0LGUpe3Quc2V0VGltZSgrdCtlKkZuKX0sZnVuY3Rpb24odCxlKXtyZXR1cm4oZS10KS9Gbn0sZnVuY3Rpb24odCl7cmV0dXJuIHQuZ2V0VVRDTWludXRlcygpfSk7Y29uc3QgdnA9bTg7dmFyIGhZPW04LnJhbmdlLGI4PXhyKGZ1bmN0aW9uKHQpe3Quc2V0VVRDTWludXRlcygwLDAsMCl9LGZ1bmN0aW9uKHQsZSl7dC5zZXRUaW1lKCt0K2UqcmEpfSxmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL3JhfSxmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENIb3VycygpfSk7Y29uc3QgeHA9Yjg7dmFyIGZZPWI4LnJhbmdlLF84PXhyKGZ1bmN0aW9uKHQpe3Quc2V0VVRDSG91cnMoMCwwLDAsMCl9LGZ1bmN0aW9uKHQsZSl7dC5zZXRVVENEYXRlKHQuZ2V0VVRDRGF0ZSgpK2UpfSxmdW5jdGlvbih0LGUpe3JldHVybihlLXQpL1JzfSxmdW5jdGlvbih0KXtyZXR1cm4gdC5nZXRVVENEYXRlKCktMX0pO2NvbnN0IGdjPV84O3ZhciBkWT1fOC5yYW5nZTtmdW5jdGlvbiBCcyh0KXtyZXR1cm4geHIoZnVuY3Rpb24oZSl7ZS5zZXRVVENEYXRlKGUuZ2V0VVRDRGF0ZSgpLShlLmdldFVUQ0RheSgpKzctdCklNyksZS5zZXRVVENIb3VycygwLDAsMCwwKX0sZnVuY3Rpb24oZSxyKXtlLnNldFVUQ0RhdGUoZS5nZXRVVENEYXRlKCkrcio3KX0sZnVuY3Rpb24oZSxyKXtyZXR1cm4oci1lKS9wcH0pfXZhciBPbz1CcygwKSx5Yz1CcygxKSx2OD1CcygyKSx4OD1CcygzKSxEcz1Ccyg0KSxrOD1Ccyg1KSx3OD1Ccyg2KSxUOD1Pby5yYW5nZSxwWT15Yy5yYW5nZSxnWT12OC5yYW5nZSx5WT14OC5yYW5nZSxtWT1Ecy5yYW5nZSxiWT1rOC5yYW5nZSxfWT13OC5yYW5nZSxFOD14cihmdW5jdGlvbih0KXt0LnNldFVUQ0RhdGUoMSksdC5zZXRVVENIb3VycygwLDAsMCwwKX0sZnVuY3Rpb24odCxlKXt0LnNldFVUQ01vbnRoKHQuZ2V0VVRDTW9udGgoKStlKX0sZnVuY3Rpb24odCxlKXtyZXR1cm4gZS5nZXRVVENNb250aCgpLXQuZ2V0VVRDTW9udGgoKSsoZS5nZXRVVENGdWxsWWVhcigpLXQuZ2V0VVRDRnVsbFllYXIoKSkqMTJ9LGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ01vbnRoKCl9KTtjb25zdCBrcD1FODt2YXIgdlk9RTgucmFuZ2Usd3A9eHIoZnVuY3Rpb24odCl7dC5zZXRVVENNb250aCgwLDEpLHQuc2V0VVRDSG91cnMoMCwwLDAsMCl9LGZ1bmN0aW9uKHQsZSl7dC5zZXRVVENGdWxsWWVhcih0LmdldFVUQ0Z1bGxZZWFyKCkrZSl9LGZ1bmN0aW9uKHQsZSl7cmV0dXJuIGUuZ2V0VVRDRnVsbFllYXIoKS10LmdldFVUQ0Z1bGxZZWFyKCl9LGZ1bmN0aW9uKHQpe3JldHVybiB0LmdldFVUQ0Z1bGxZZWFyKCl9KTt3cC5ldmVyeT1mdW5jdGlvbih0KXtyZXR1cm4haXNGaW5pdGUodD1NYXRoLmZsb29yKHQpKXx8ISh0PjApP251bGw6eHIoZnVuY3Rpb24oZSl7ZS5zZXRVVENGdWxsWWVhcihNYXRoLmZsb29yKGUuZ2V0VVRDRnVsbFllYXIoKS90KSp0KSxlLnNldFVUQ01vbnRoKDAsMSksZS5zZXRVVENIb3VycygwLDAsMCwwKX0sZnVuY3Rpb24oZSxyKXtlLnNldFVUQ0Z1bGxZZWFyKGUuZ2V0VVRDRnVsbFllYXIoKStyKnQpfSl9O2NvbnN0IHFhPXdwO3ZhciB4WT13cC5yYW5nZTtmdW5jdGlvbiBDOCh0LGUscixuLGksYSl7Y29uc3Qgcz1bW0ZhLDEsZWFdLFtGYSw1LDUqZWFdLFtGYSwxNSwxNSplYV0sW0ZhLDMwLDMwKmVhXSxbYSwxLEZuXSxbYSw1LDUqRm5dLFthLDE1LDE1KkZuXSxbYSwzMCwzMCpGbl0sW2ksMSxyYV0sW2ksMywzKnJhXSxbaSw2LDYqcmFdLFtpLDEyLDEyKnJhXSxbbiwxLFJzXSxbbiwyLDIqUnNdLFtyLDEscHBdLFtlLDEsYThdLFtlLDMsMyphOF0sW3QsMSxncF1dO2Z1bmN0aW9uIG8odSxoLGQpe2NvbnN0IGY9aDx1O2YmJihbdSxoXT1baCx1XSk7Y29uc3QgcD1kJiZ0eXBlb2YgZC5yYW5nZT09ImZ1bmN0aW9uIj9kOmwodSxoLGQpLG09cD9wLnJhbmdlKHUsK2grMSk6W107cmV0dXJuIGY/bS5yZXZlcnNlKCk6bX1mdW5jdGlvbiBsKHUsaCxkKXtjb25zdCBmPU1hdGguYWJzKGgtdSkvZCxwPWt1KChbLCx5XSk9PnkpLnJpZ2h0KHMsZik7aWYocD09PXMubGVuZ3RoKXJldHVybiB0LmV2ZXJ5KHdsKHUvZ3AsaC9ncCxkKSk7aWYocD09PTApcmV0dXJuIGRwLmV2ZXJ5KE1hdGgubWF4KHdsKHUsaCxkKSwxKSk7Y29uc3RbbSxfXT1zW2Yvc1twLTFdWzJdPHNbcF1bMl0vZj9wLTE6cF07cmV0dXJuIG0uZXZlcnkoXyl9cmV0dXJuW28sbF19Y29uc3RbUzgsQThdPUM4KHFhLGtwLE9vLGdjLHhwLHZwKSxbTTgsTDhdPUM4KFBhLGJwLERvLGRjLG1wLHlwKTtmdW5jdGlvbiBUcCh0KXtpZigwPD10LnkmJnQueTwxMDApe3ZhciBlPW5ldyBEYXRlKC0xLHQubSx0LmQsdC5ILHQuTSx0LlMsdC5MKTtyZXR1cm4gZS5zZXRGdWxsWWVhcih0LnkpLGV9cmV0dXJuIG5ldyBEYXRlKHQueSx0Lm0sdC5kLHQuSCx0Lk0sdC5TLHQuTCl9ZnVuY3Rpb24gRXAodCl7aWYoMDw9dC55JiZ0Lnk8MTAwKXt2YXIgZT1uZXcgRGF0ZShEYXRlLlVUQygtMSx0Lm0sdC5kLHQuSCx0Lk0sdC5TLHQuTCkpO3JldHVybiBlLnNldFVUQ0Z1bGxZZWFyKHQueSksZX1yZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEModC55LHQubSx0LmQsdC5ILHQuTSx0LlMsdC5MKSl9ZnVuY3Rpb24gbWModCxlLHIpe3JldHVybnt5OnQsbTplLGQ6cixIOjAsTTowLFM6MCxMOjB9fWZ1bmN0aW9uIFI4KHQpe3ZhciBlPXQuZGF0ZVRpbWUscj10LmRhdGUsbj10LnRpbWUsaT10LnBlcmlvZHMsYT10LmRheXMscz10LnNob3J0RGF5cyxvPXQubW9udGhzLGw9dC5zaG9ydE1vbnRocyx1PWJjKGkpLGg9X2MoaSksZD1iYyhhKSxmPV9jKGEpLHA9YmMocyksbT1fYyhzKSxfPWJjKG8pLHk9X2MobyksYj1iYyhsKSx4PV9jKGwpLGs9e2E6WCxBOmN0LGI6SixCOlksYzpudWxsLGQ6RjgsZTpGOCxmOldZLGc6dFUsRzpyVSxIOnpZLEk6WVksajpVWSxMOlA4LG06SFksTTpHWSxwOiQscTpsdCxROlc4LHM6SDgsUzpqWSx1OiRZLFU6WFksVjpLWSx3OlpZLFc6UVkseDpudWxsLFg6bnVsbCx5OkpZLFk6ZVUsWjpuVSwiJSI6VTh9LFQ9e2E6dXQsQTpXLGI6dHQsQjpLLGM6bnVsbCxkOlY4LGU6VjgsZjpvVSxnOm1VLEc6X1UsSDppVSxJOmFVLGo6c1UsTDp6OCxtOmxVLE06Y1UscDppdCxxOlosUTpXOCxzOkg4LFM6dVUsdTpoVSxVOmZVLFY6ZFUsdzpwVSxXOmdVLHg6bnVsbCxYOm51bGwseTp5VSxZOmJVLFo6dlUsIiUiOlU4fSxDPXthOkwsQTp2LGI6QixCOncsYzpELGQ6RDgsZTpEOCxmOkZZLGc6QjgsRzpOOCxIOk84LEk6TzgsajpOWSxMOk9ZLG06SVksTTpCWSxwOkEscTpSWSxROnFZLHM6VlksUzpEWSx1OkNZLFU6U1ksVjpBWSx3OkVZLFc6TVkseDpOLFg6eix5OkI4LFk6TjgsWjpMWSwiJSI6UFl9O2sueD1NKHIsayksay5YPU0obixrKSxrLmM9TShlLGspLFQueD1NKHIsVCksVC5YPU0obixUKSxULmM9TShlLFQpO2Z1bmN0aW9uIE0oVixRKXtyZXR1cm4gZnVuY3Rpb24ocSl7dmFyIFU9W10sRj0tMSxqPTAsUD1WLmxlbmd0aCxldCxhdCxJdDtmb3IocSBpbnN0YW5jZW9mIERhdGV8fChxPW5ldyBEYXRlKCtxKSk7KytGPFA7KVYuY2hhckNvZGVBdChGKT09PTM3JiYoVS5wdXNoKFYuc2xpY2UoaixGKSksKGF0PUk4W2V0PVYuY2hhckF0KCsrRildKSE9bnVsbD9ldD1WLmNoYXJBdCgrK0YpOmF0PWV0PT09ImUiPyIgIjoiMCIsKEl0PVFbZXRdKSYmKGV0PUl0KHEsYXQpKSxVLnB1c2goZXQpLGo9RisxKTtyZXR1cm4gVS5wdXNoKFYuc2xpY2UoaixGKSksVS5qb2luKCIiKX19ZnVuY3Rpb24gUyhWLFEpe3JldHVybiBmdW5jdGlvbihxKXt2YXIgVT1tYygxOTAwLHZvaWQgMCwxKSxGPVIoVSxWLHErPSIiLDApLGosUDtpZihGIT1xLmxlbmd0aClyZXR1cm4gbnVsbDtpZigiUSJpbiBVKXJldHVybiBuZXcgRGF0ZShVLlEpO2lmKCJzImluIFUpcmV0dXJuIG5ldyBEYXRlKFUucyoxZTMrKCJMImluIFU/VS5MOjApKTtpZihRJiYhKCJaImluIFUpJiYoVS5aPTApLCJwImluIFUmJihVLkg9VS5IJTEyK1UucCoxMiksVS5tPT09dm9pZCAwJiYoVS5tPSJxImluIFU/VS5xOjApLCJWImluIFUpe2lmKFUuVjwxfHxVLlY+NTMpcmV0dXJuIG51bGw7InciaW4gVXx8KFUudz0xKSwiWiJpbiBVPyhqPUVwKG1jKFUueSwwLDEpKSxQPWouZ2V0VVRDRGF5KCksaj1QPjR8fFA9PT0wP3ljLmNlaWwoaik6eWMoaiksaj1nYy5vZmZzZXQoaiwoVS5WLTEpKjcpLFUueT1qLmdldFVUQ0Z1bGxZZWFyKCksVS5tPWouZ2V0VVRDTW9udGgoKSxVLmQ9ai5nZXRVVENEYXRlKCkrKFUudys2KSU3KTooaj1UcChtYyhVLnksMCwxKSksUD1qLmdldERheSgpLGo9UD40fHxQPT09MD9wYy5jZWlsKGopOnBjKGopLGo9ZGMub2Zmc2V0KGosKFUuVi0xKSo3KSxVLnk9ai5nZXRGdWxsWWVhcigpLFUubT1qLmdldE1vbnRoKCksVS5kPWouZ2V0RGF0ZSgpKyhVLncrNiklNyl9ZWxzZSgiVyJpbiBVfHwiVSJpbiBVKSYmKCJ3ImluIFV8fChVLnc9InUiaW4gVT9VLnUlNzoiVyJpbiBVPzE6MCksUD0iWiJpbiBVP0VwKG1jKFUueSwwLDEpKS5nZXRVVENEYXkoKTpUcChtYyhVLnksMCwxKSkuZ2V0RGF5KCksVS5tPTAsVS5kPSJXImluIFU/KFUudys2KSU3K1UuVyo3LShQKzUpJTc6VS53K1UuVSo3LShQKzYpJTcpO3JldHVybiJaImluIFU/KFUuSCs9VS5aLzEwMHwwLFUuTSs9VS5aJTEwMCxFcChVKSk6VHAoVSl9fWZ1bmN0aW9uIFIoVixRLHEsVSl7Zm9yKHZhciBGPTAsaj1RLmxlbmd0aCxQPXEubGVuZ3RoLGV0LGF0O0Y8ajspe2lmKFU+PVApcmV0dXJuLTE7aWYoZXQ9US5jaGFyQ29kZUF0KEYrKyksZXQ9PT0zNyl7aWYoZXQ9US5jaGFyQXQoRisrKSxhdD1DW2V0IGluIEk4P1EuY2hhckF0KEYrKyk6ZXRdLCFhdHx8KFU9YXQoVixxLFUpKTwwKXJldHVybi0xfWVsc2UgaWYoZXQhPXEuY2hhckNvZGVBdChVKyspKXJldHVybi0xfXJldHVybiBVfWZ1bmN0aW9uIEEoVixRLHEpe3ZhciBVPXUuZXhlYyhRLnNsaWNlKHEpKTtyZXR1cm4gVT8oVi5wPWguZ2V0KFVbMF0udG9Mb3dlckNhc2UoKSkscStVWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gTChWLFEscSl7dmFyIFU9cC5leGVjKFEuc2xpY2UocSkpO3JldHVybiBVPyhWLnc9bS5nZXQoVVswXS50b0xvd2VyQ2FzZSgpKSxxK1VbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiB2KFYsUSxxKXt2YXIgVT1kLmV4ZWMoUS5zbGljZShxKSk7cmV0dXJuIFU/KFYudz1mLmdldChVWzBdLnRvTG93ZXJDYXNlKCkpLHErVVswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIEIoVixRLHEpe3ZhciBVPWIuZXhlYyhRLnNsaWNlKHEpKTtyZXR1cm4gVT8oVi5tPXguZ2V0KFVbMF0udG9Mb3dlckNhc2UoKSkscStVWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gdyhWLFEscSl7dmFyIFU9Xy5leGVjKFEuc2xpY2UocSkpO3JldHVybiBVPyhWLm09eS5nZXQoVVswXS50b0xvd2VyQ2FzZSgpKSxxK1VbMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBEKFYsUSxxKXtyZXR1cm4gUihWLGUsUSxxKX1mdW5jdGlvbiBOKFYsUSxxKXtyZXR1cm4gUihWLHIsUSxxKX1mdW5jdGlvbiB6KFYsUSxxKXtyZXR1cm4gUihWLG4sUSxxKX1mdW5jdGlvbiBYKFYpe3JldHVybiBzW1YuZ2V0RGF5KCldfWZ1bmN0aW9uIGN0KFYpe3JldHVybiBhW1YuZ2V0RGF5KCldfWZ1bmN0aW9uIEooVil7cmV0dXJuIGxbVi5nZXRNb250aCgpXX1mdW5jdGlvbiBZKFYpe3JldHVybiBvW1YuZ2V0TW9udGgoKV19ZnVuY3Rpb24gJChWKXtyZXR1cm4gaVsrKFYuZ2V0SG91cnMoKT49MTIpXX1mdW5jdGlvbiBsdChWKXtyZXR1cm4gMSt+fihWLmdldE1vbnRoKCkvMyl9ZnVuY3Rpb24gdXQoVil7cmV0dXJuIHNbVi5nZXRVVENEYXkoKV19ZnVuY3Rpb24gVyhWKXtyZXR1cm4gYVtWLmdldFVUQ0RheSgpXX1mdW5jdGlvbiB0dChWKXtyZXR1cm4gbFtWLmdldFVUQ01vbnRoKCldfWZ1bmN0aW9uIEsoVil7cmV0dXJuIG9bVi5nZXRVVENNb250aCgpXX1mdW5jdGlvbiBpdChWKXtyZXR1cm4gaVsrKFYuZ2V0VVRDSG91cnMoKT49MTIpXX1mdW5jdGlvbiBaKFYpe3JldHVybiAxK35+KFYuZ2V0VVRDTW9udGgoKS8zKX1yZXR1cm57Zm9ybWF0OmZ1bmN0aW9uKFYpe3ZhciBRPU0oVis9IiIsayk7cmV0dXJuIFEudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gVn0sUX0scGFyc2U6ZnVuY3Rpb24oVil7dmFyIFE9UyhWKz0iIiwhMSk7cmV0dXJuIFEudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gVn0sUX0sdXRjRm9ybWF0OmZ1bmN0aW9uKFYpe3ZhciBRPU0oVis9IiIsVCk7cmV0dXJuIFEudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gVn0sUX0sdXRjUGFyc2U6ZnVuY3Rpb24oVil7dmFyIFE9UyhWKz0iIiwhMCk7cmV0dXJuIFEudG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gVn0sUX19fXZhciBJOD17Ii0iOiIiLF86IiAiLDA6IjAifSxBcj0vXlxzKlxkKy8sa1k9L14lLyx3WT0vW1xcXiQqKz98W1xdKCkue31dL2c7ZnVuY3Rpb24gT2UodCxlLHIpe3ZhciBuPXQ8MD8iLSI6IiIsaT0obj8tdDp0KSsiIixhPWkubGVuZ3RoO3JldHVybiBuKyhhPHI/bmV3IEFycmF5KHItYSsxKS5qb2luKGUpK2k6aSl9ZnVuY3Rpb24gVFkodCl7cmV0dXJuIHQucmVwbGFjZSh3WSwiXFwkJiIpfWZ1bmN0aW9uIGJjKHQpe3JldHVybiBuZXcgUmVnRXhwKCJeKD86Iit0Lm1hcChUWSkuam9pbigifCIpKyIpIiwiaSIpfWZ1bmN0aW9uIF9jKHQpe3JldHVybiBuZXcgTWFwKHQubWFwKChlLHIpPT5bZS50b0xvd2VyQ2FzZSgpLHJdKSl9ZnVuY3Rpb24gRVkodCxlLHIpe3ZhciBuPUFyLmV4ZWMoZS5zbGljZShyLHIrMSkpO3JldHVybiBuPyh0Lnc9K25bMF0scituWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gQ1kodCxlLHIpe3ZhciBuPUFyLmV4ZWMoZS5zbGljZShyLHIrMSkpO3JldHVybiBuPyh0LnU9K25bMF0scituWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gU1kodCxlLHIpe3ZhciBuPUFyLmV4ZWMoZS5zbGljZShyLHIrMikpO3JldHVybiBuPyh0LlU9K25bMF0scituWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gQVkodCxlLHIpe3ZhciBuPUFyLmV4ZWMoZS5zbGljZShyLHIrMikpO3JldHVybiBuPyh0LlY9K25bMF0scituWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gTVkodCxlLHIpe3ZhciBuPUFyLmV4ZWMoZS5zbGljZShyLHIrMikpO3JldHVybiBuPyh0Llc9K25bMF0scituWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gTjgodCxlLHIpe3ZhciBuPUFyLmV4ZWMoZS5zbGljZShyLHIrNCkpO3JldHVybiBuPyh0Lnk9K25bMF0scituWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gQjgodCxlLHIpe3ZhciBuPUFyLmV4ZWMoZS5zbGljZShyLHIrMikpO3JldHVybiBuPyh0Lnk9K25bMF0rKCtuWzBdPjY4PzE5MDA6MmUzKSxyK25bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBMWSh0LGUscil7dmFyIG49L14oWil8KFsrLV1cZFxkKSg/Ojo/KFxkXGQpKT8vLmV4ZWMoZS5zbGljZShyLHIrNikpO3JldHVybiBuPyh0Llo9blsxXT8wOi0oblsyXSsoblszXXx8IjAwIikpLHIrblswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFJZKHQsZSxyKXt2YXIgbj1Bci5leGVjKGUuc2xpY2UocixyKzEpKTtyZXR1cm4gbj8odC5xPW5bMF0qMy0zLHIrblswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIElZKHQsZSxyKXt2YXIgbj1Bci5leGVjKGUuc2xpY2UocixyKzIpKTtyZXR1cm4gbj8odC5tPW5bMF0tMSxyK25bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBEOCh0LGUscil7dmFyIG49QXIuZXhlYyhlLnNsaWNlKHIscisyKSk7cmV0dXJuIG4/KHQuZD0rblswXSxyK25bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBOWSh0LGUscil7dmFyIG49QXIuZXhlYyhlLnNsaWNlKHIsciszKSk7cmV0dXJuIG4/KHQubT0wLHQuZD0rblswXSxyK25bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBPOCh0LGUscil7dmFyIG49QXIuZXhlYyhlLnNsaWNlKHIscisyKSk7cmV0dXJuIG4/KHQuSD0rblswXSxyK25bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBCWSh0LGUscil7dmFyIG49QXIuZXhlYyhlLnNsaWNlKHIscisyKSk7cmV0dXJuIG4/KHQuTT0rblswXSxyK25bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBEWSh0LGUscil7dmFyIG49QXIuZXhlYyhlLnNsaWNlKHIscisyKSk7cmV0dXJuIG4/KHQuUz0rblswXSxyK25bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBPWSh0LGUscil7dmFyIG49QXIuZXhlYyhlLnNsaWNlKHIsciszKSk7cmV0dXJuIG4/KHQuTD0rblswXSxyK25bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBGWSh0LGUscil7dmFyIG49QXIuZXhlYyhlLnNsaWNlKHIscis2KSk7cmV0dXJuIG4/KHQuTD1NYXRoLmZsb29yKG5bMF0vMWUzKSxyK25bMF0ubGVuZ3RoKTotMX1mdW5jdGlvbiBQWSh0LGUscil7dmFyIG49a1kuZXhlYyhlLnNsaWNlKHIscisxKSk7cmV0dXJuIG4/cituWzBdLmxlbmd0aDotMX1mdW5jdGlvbiBxWSh0LGUscil7dmFyIG49QXIuZXhlYyhlLnNsaWNlKHIpKTtyZXR1cm4gbj8odC5RPStuWzBdLHIrblswXS5sZW5ndGgpOi0xfWZ1bmN0aW9uIFZZKHQsZSxyKXt2YXIgbj1Bci5leGVjKGUuc2xpY2UocikpO3JldHVybiBuPyh0LnM9K25bMF0scituWzBdLmxlbmd0aCk6LTF9ZnVuY3Rpb24gRjgodCxlKXtyZXR1cm4gT2UodC5nZXREYXRlKCksZSwyKX1mdW5jdGlvbiB6WSh0LGUpe3JldHVybiBPZSh0LmdldEhvdXJzKCksZSwyKX1mdW5jdGlvbiBZWSh0LGUpe3JldHVybiBPZSh0LmdldEhvdXJzKCklMTJ8fDEyLGUsMil9ZnVuY3Rpb24gVVkodCxlKXtyZXR1cm4gT2UoMStkYy5jb3VudChQYSh0KSx0KSxlLDMpfWZ1bmN0aW9uIFA4KHQsZSl7cmV0dXJuIE9lKHQuZ2V0TWlsbGlzZWNvbmRzKCksZSwzKX1mdW5jdGlvbiBXWSh0LGUpe3JldHVybiBQOCh0LGUpKyIwMDAifWZ1bmN0aW9uIEhZKHQsZSl7cmV0dXJuIE9lKHQuZ2V0TW9udGgoKSsxLGUsMil9ZnVuY3Rpb24gR1kodCxlKXtyZXR1cm4gT2UodC5nZXRNaW51dGVzKCksZSwyKX1mdW5jdGlvbiBqWSh0LGUpe3JldHVybiBPZSh0LmdldFNlY29uZHMoKSxlLDIpfWZ1bmN0aW9uICRZKHQpe3ZhciBlPXQuZ2V0RGF5KCk7cmV0dXJuIGU9PT0wPzc6ZX1mdW5jdGlvbiBYWSh0LGUpe3JldHVybiBPZShEby5jb3VudChQYSh0KS0xLHQpLGUsMil9ZnVuY3Rpb24gcTgodCl7dmFyIGU9dC5nZXREYXkoKTtyZXR1cm4gZT49NHx8ZT09PTA/TnModCk6TnMuY2VpbCh0KX1mdW5jdGlvbiBLWSh0LGUpe3JldHVybiB0PXE4KHQpLE9lKE5zLmNvdW50KFBhKHQpLHQpKyhQYSh0KS5nZXREYXkoKT09PTQpLGUsMil9ZnVuY3Rpb24gWlkodCl7cmV0dXJuIHQuZ2V0RGF5KCl9ZnVuY3Rpb24gUVkodCxlKXtyZXR1cm4gT2UocGMuY291bnQoUGEodCktMSx0KSxlLDIpfWZ1bmN0aW9uIEpZKHQsZSl7cmV0dXJuIE9lKHQuZ2V0RnVsbFllYXIoKSUxMDAsZSwyKX1mdW5jdGlvbiB0VSh0LGUpe3JldHVybiB0PXE4KHQpLE9lKHQuZ2V0RnVsbFllYXIoKSUxMDAsZSwyKX1mdW5jdGlvbiBlVSh0LGUpe3JldHVybiBPZSh0LmdldEZ1bGxZZWFyKCklMWU0LGUsNCl9ZnVuY3Rpb24gclUodCxlKXt2YXIgcj10LmdldERheSgpO3JldHVybiB0PXI+PTR8fHI9PT0wP05zKHQpOk5zLmNlaWwodCksT2UodC5nZXRGdWxsWWVhcigpJTFlNCxlLDQpfWZ1bmN0aW9uIG5VKHQpe3ZhciBlPXQuZ2V0VGltZXpvbmVPZmZzZXQoKTtyZXR1cm4oZT4wPyItIjooZSo9LTEsIisiKSkrT2UoZS82MHwwLCIwIiwyKStPZShlJTYwLCIwIiwyKX1mdW5jdGlvbiBWOCh0LGUpe3JldHVybiBPZSh0LmdldFVUQ0RhdGUoKSxlLDIpfWZ1bmN0aW9uIGlVKHQsZSl7cmV0dXJuIE9lKHQuZ2V0VVRDSG91cnMoKSxlLDIpfWZ1bmN0aW9uIGFVKHQsZSl7cmV0dXJuIE9lKHQuZ2V0VVRDSG91cnMoKSUxMnx8MTIsZSwyKX1mdW5jdGlvbiBzVSh0LGUpe3JldHVybiBPZSgxK2djLmNvdW50KHFhKHQpLHQpLGUsMyl9ZnVuY3Rpb24gejgodCxlKXtyZXR1cm4gT2UodC5nZXRVVENNaWxsaXNlY29uZHMoKSxlLDMpfWZ1bmN0aW9uIG9VKHQsZSl7cmV0dXJuIHo4KHQsZSkrIjAwMCJ9ZnVuY3Rpb24gbFUodCxlKXtyZXR1cm4gT2UodC5nZXRVVENNb250aCgpKzEsZSwyKX1mdW5jdGlvbiBjVSh0LGUpe3JldHVybiBPZSh0LmdldFVUQ01pbnV0ZXMoKSxlLDIpfWZ1bmN0aW9uIHVVKHQsZSl7cmV0dXJuIE9lKHQuZ2V0VVRDU2Vjb25kcygpLGUsMil9ZnVuY3Rpb24gaFUodCl7dmFyIGU9dC5nZXRVVENEYXkoKTtyZXR1cm4gZT09PTA/NzplfWZ1bmN0aW9uIGZVKHQsZSl7cmV0dXJuIE9lKE9vLmNvdW50KHFhKHQpLTEsdCksZSwyKX1mdW5jdGlvbiBZOCh0KXt2YXIgZT10LmdldFVUQ0RheSgpO3JldHVybiBlPj00fHxlPT09MD9Ecyh0KTpEcy5jZWlsKHQpfWZ1bmN0aW9uIGRVKHQsZSl7cmV0dXJuIHQ9WTgodCksT2UoRHMuY291bnQocWEodCksdCkrKHFhKHQpLmdldFVUQ0RheSgpPT09NCksZSwyKX1mdW5jdGlvbiBwVSh0KXtyZXR1cm4gdC5nZXRVVENEYXkoKX1mdW5jdGlvbiBnVSh0LGUpe3JldHVybiBPZSh5Yy5jb3VudChxYSh0KS0xLHQpLGUsMil9ZnVuY3Rpb24geVUodCxlKXtyZXR1cm4gT2UodC5nZXRVVENGdWxsWWVhcigpJTEwMCxlLDIpfWZ1bmN0aW9uIG1VKHQsZSl7cmV0dXJuIHQ9WTgodCksT2UodC5nZXRVVENGdWxsWWVhcigpJTEwMCxlLDIpfWZ1bmN0aW9uIGJVKHQsZSl7cmV0dXJuIE9lKHQuZ2V0VVRDRnVsbFllYXIoKSUxZTQsZSw0KX1mdW5jdGlvbiBfVSh0LGUpe3ZhciByPXQuZ2V0VVRDRGF5KCk7cmV0dXJuIHQ9cj49NHx8cj09PTA/RHModCk6RHMuY2VpbCh0KSxPZSh0LmdldFVUQ0Z1bGxZZWFyKCklMWU0LGUsNCl9ZnVuY3Rpb24gdlUoKXtyZXR1cm4iKzAwMDAifWZ1bmN0aW9uIFU4KCl7cmV0dXJuIiUifWZ1bmN0aW9uIFc4KHQpe3JldHVybit0fWZ1bmN0aW9uIEg4KHQpe3JldHVybiBNYXRoLmZsb29yKCt0LzFlMyl9dmFyIEZvLHZjLEc4LGxmLENwO2o4KHtkYXRlVGltZToiJXgsICVYIixkYXRlOiIlLW0vJS1kLyVZIix0aW1lOiIlLUk6JU06JVMgJXAiLHBlcmlvZHM6WyJBTSIsIlBNIl0sZGF5czpbIlN1bmRheSIsIk1vbmRheSIsIlR1ZXNkYXkiLCJXZWRuZXNkYXkiLCJUaHVyc2RheSIsIkZyaWRheSIsIlNhdHVyZGF5Il0sc2hvcnREYXlzOlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sbW9udGhzOlsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXSxzaG9ydE1vbnRoczpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdfSk7ZnVuY3Rpb24gajgodCl7cmV0dXJuIEZvPVI4KHQpLHZjPUZvLmZvcm1hdCxHOD1Gby5wYXJzZSxsZj1Gby51dGNGb3JtYXQsQ3A9Rm8udXRjUGFyc2UsRm99dmFyICQ4PSIlWS0lbS0lZFQlSDolTTolUy4lTFoiO2Z1bmN0aW9uIHhVKHQpe3JldHVybiB0LnRvSVNPU3RyaW5nKCl9dmFyIGtVPURhdGUucHJvdG90eXBlLnRvSVNPU3RyaW5nP3hVOmxmKCQ4KTtjb25zdCB3VT1rVTtmdW5jdGlvbiBUVSh0KXt2YXIgZT1uZXcgRGF0ZSh0KTtyZXR1cm4gaXNOYU4oZSk/bnVsbDplfXZhciBFVT0rbmV3IERhdGUoIjIwMDAtMDEtMDFUMDA6MDA6MDAuMDAwWiIpP1RVOkNwKCQ4KTtjb25zdCBDVT1FVTtmdW5jdGlvbiBTVSh0KXtyZXR1cm4gbmV3IERhdGUodCl9ZnVuY3Rpb24gQVUodCl7cmV0dXJuIHQgaW5zdGFuY2VvZiBEYXRlPyt0OituZXcgRGF0ZSgrdCl9ZnVuY3Rpb24gU3AodCxlLHIsbixpLGEscyxvLGwsdSl7dmFyIGg9YXAoKSxkPWguaW52ZXJ0LGY9aC5kb21haW4scD11KCIuJUwiKSxtPXUoIjolUyIpLF89dSgiJUk6JU0iKSx5PXUoIiVJICVwIiksYj11KCIlYSAlZCIpLHg9dSgiJWIgJWQiKSxrPXUoIiVCIiksVD11KCIlWSIpO2Z1bmN0aW9uIEMoTSl7cmV0dXJuKGwoTSk8TT9wOm8oTSk8TT9tOnMoTSk8TT9fOmEoTSk8TT95Om4oTSk8TT9pKE0pPE0/Yjp4OnIoTSk8TT9rOlQpKE0pfXJldHVybiBoLmludmVydD1mdW5jdGlvbihNKXtyZXR1cm4gbmV3IERhdGUoZChNKSl9LGguZG9tYWluPWZ1bmN0aW9uKE0pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP2YoQXJyYXkuZnJvbShNLEFVKSk6ZigpLm1hcChTVSl9LGgudGlja3M9ZnVuY3Rpb24oTSl7dmFyIFM9ZigpO3JldHVybiB0KFNbMF0sU1tTLmxlbmd0aC0xXSxNPT1udWxsPzEwOk0pfSxoLnRpY2tGb3JtYXQ9ZnVuY3Rpb24oTSxTKXtyZXR1cm4gUz09bnVsbD9DOnUoUyl9LGgubmljZT1mdW5jdGlvbihNKXt2YXIgUz1mKCk7cmV0dXJuKCFNfHx0eXBlb2YgTS5yYW5nZSE9ImZ1bmN0aW9uIikmJihNPWUoU1swXSxTW1MubGVuZ3RoLTFdLE09PW51bGw/MTA6TSkpLE0/ZihXeChTLE0pKTpofSxoLmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gZmMoaCxTcCh0LGUscixuLGksYSxzLG8sbCx1KSl9LGh9ZnVuY3Rpb24gWDgoKXtyZXR1cm4gT24uYXBwbHkoU3AoTTgsTDgsUGEsYnAsRG8sZGMsbXAseXAsRmEsdmMpLmRvbWFpbihbbmV3IERhdGUoMmUzLDAsMSksbmV3IERhdGUoMmUzLDAsMildKSxhcmd1bWVudHMpfWZ1bmN0aW9uIE1VKCl7cmV0dXJuIE9uLmFwcGx5KFNwKFM4LEE4LHFhLGtwLE9vLGdjLHhwLHZwLEZhLGxmKS5kb21haW4oW0RhdGUuVVRDKDJlMywwLDEpLERhdGUuVVRDKDJlMywwLDIpXSksYXJndW1lbnRzKX1mdW5jdGlvbiBjZigpe3ZhciB0PTAsZT0xLHIsbixpLGEscz1hbixvPSExLGw7ZnVuY3Rpb24gdShkKXtyZXR1cm4gZD09bnVsbHx8aXNOYU4oZD0rZCk/bDpzKGk9PT0wPy41OihkPShhKGQpLXIpKmksbz9NYXRoLm1heCgwLE1hdGgubWluKDEsZCkpOmQpKX11LmRvbWFpbj1mdW5jdGlvbihkKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oW3QsZV09ZCxyPWEodD0rdCksbj1hKGU9K2UpLGk9cj09PW4/MDoxLyhuLXIpLHUpOlt0LGVdfSx1LmNsYW1wPWZ1bmN0aW9uKGQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhvPSEhZCx1KTpvfSx1LmludGVycG9sYXRvcj1mdW5jdGlvbihkKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1kLHUpOnN9O2Z1bmN0aW9uIGgoZCl7cmV0dXJuIGZ1bmN0aW9uKGYpe3ZhciBwLG07cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KFtwLG1dPWYscz1kKHAsbSksdSk6W3MoMCkscygxKV19fXJldHVybiB1LnJhbmdlPWgoTWEpLHUucmFuZ2VSb3VuZD1oKGp1KSx1LnVua25vd249ZnVuY3Rpb24oZCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGw9ZCx1KTpsfSxmdW5jdGlvbihkKXtyZXR1cm4gYT1kLHI9ZCh0KSxuPWQoZSksaT1yPT09bj8wOjEvKG4tciksdX19ZnVuY3Rpb24gVmEodCxlKXtyZXR1cm4gZS5kb21haW4odC5kb21haW4oKSkuaW50ZXJwb2xhdG9yKHQuaW50ZXJwb2xhdG9yKCkpLmNsYW1wKHQuY2xhbXAoKSkudW5rbm93bih0LnVua25vd24oKSl9ZnVuY3Rpb24gSzgoKXt2YXIgdD1PYShjZigpKGFuKSk7cmV0dXJuIHQuY29weT1mdW5jdGlvbigpe3JldHVybiBWYSh0LEs4KCkpfSx0YS5hcHBseSh0LGFyZ3VtZW50cyl9ZnVuY3Rpb24gWjgoKXt2YXIgdD1vcChjZigpKS5kb21haW4oWzEsMTBdKTtyZXR1cm4gdC5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIFZhKHQsWjgoKSkuYmFzZSh0LmJhc2UoKSl9LHRhLmFwcGx5KHQsYXJndW1lbnRzKX1mdW5jdGlvbiBROCgpe3ZhciB0PWxwKGNmKCkpO3JldHVybiB0LmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gVmEodCxROCgpKS5jb25zdGFudCh0LmNvbnN0YW50KCkpfSx0YS5hcHBseSh0LGFyZ3VtZW50cyl9ZnVuY3Rpb24gQXAoKXt2YXIgdD1jcChjZigpKTtyZXR1cm4gdC5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIFZhKHQsQXAoKSkuZXhwb25lbnQodC5leHBvbmVudCgpKX0sdGEuYXBwbHkodCxhcmd1bWVudHMpfWZ1bmN0aW9uIExVKCl7cmV0dXJuIEFwLmFwcGx5KG51bGwsYXJndW1lbnRzKS5leHBvbmVudCguNSl9ZnVuY3Rpb24gSjgoKXt2YXIgdD1bXSxlPWFuO2Z1bmN0aW9uIHIobil7aWYobiE9bnVsbCYmIWlzTmFOKG49K24pKXJldHVybiBlKChjcyh0LG4sMSktMSkvKHQubGVuZ3RoLTEpKX1yZXR1cm4gci5kb21haW49ZnVuY3Rpb24obil7aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHQuc2xpY2UoKTt0PVtdO2ZvcihsZXQgaSBvZiBuKWkhPW51bGwmJiFpc05hTihpPStpKSYmdC5wdXNoKGkpO3JldHVybiB0LnNvcnQoUWUpLHJ9LHIuaW50ZXJwb2xhdG9yPWZ1bmN0aW9uKG4pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPW4scik6ZX0sci5yYW5nZT1mdW5jdGlvbigpe3JldHVybiB0Lm1hcCgobixpKT0+ZShpLyh0Lmxlbmd0aC0xKSkpfSxyLnF1YW50aWxlcz1mdW5jdGlvbihuKXtyZXR1cm4gQXJyYXkuZnJvbSh7bGVuZ3RoOm4rMX0sKGksYSk9PkNsKHQsYS9uKSl9LHIuY29weT1mdW5jdGlvbigpe3JldHVybiBKOChlKS5kb21haW4odCl9LHRhLmFwcGx5KHIsYXJndW1lbnRzKX1mdW5jdGlvbiB1Zigpe3ZhciB0PTAsZT0uNSxyPTEsbj0xLGksYSxzLG8sbCx1PWFuLGgsZD0hMSxmO2Z1bmN0aW9uIHAoXyl7cmV0dXJuIGlzTmFOKF89K18pP2Y6KF89LjUrKChfPStoKF8pKS1hKSoobipfPG4qYT9vOmwpLHUoZD9NYXRoLm1heCgwLE1hdGgubWluKDEsXykpOl8pKX1wLmRvbWFpbj1mdW5jdGlvbihfKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oW3QsZSxyXT1fLGk9aCh0PSt0KSxhPWgoZT0rZSkscz1oKHI9K3IpLG89aT09PWE/MDouNS8oYS1pKSxsPWE9PT1zPzA6LjUvKHMtYSksbj1hPGk/LTE6MSxwKTpbdCxlLHJdfSxwLmNsYW1wPWZ1bmN0aW9uKF8pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhkPSEhXyxwKTpkfSxwLmludGVycG9sYXRvcj1mdW5jdGlvbihfKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odT1fLHApOnV9O2Z1bmN0aW9uIG0oXyl7cmV0dXJuIGZ1bmN0aW9uKHkpe3ZhciBiLHgsaztyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oW2IseCxrXT15LHU9SzUoXyxbYix4LGtdKSxwKTpbdSgwKSx1KC41KSx1KDEpXX19cmV0dXJuIHAucmFuZ2U9bShNYSkscC5yYW5nZVJvdW5kPW0oanUpLHAudW5rbm93bj1mdW5jdGlvbihfKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZj1fLHApOmZ9LGZ1bmN0aW9uKF8pe3JldHVybiBoPV8saT1fKHQpLGE9XyhlKSxzPV8ociksbz1pPT09YT8wOi41LyhhLWkpLGw9YT09PXM/MDouNS8ocy1hKSxuPWE8aT8tMToxLHB9fWZ1bmN0aW9uIHQ3KCl7dmFyIHQ9T2EodWYoKShhbikpO3JldHVybiB0LmNvcHk9ZnVuY3Rpb24oKXtyZXR1cm4gVmEodCx0NygpKX0sdGEuYXBwbHkodCxhcmd1bWVudHMpfWZ1bmN0aW9uIGU3KCl7dmFyIHQ9b3AodWYoKSkuZG9tYWluKFsuMSwxLDEwXSk7cmV0dXJuIHQuY29weT1mdW5jdGlvbigpe3JldHVybiBWYSh0LGU3KCkpLmJhc2UodC5iYXNlKCkpfSx0YS5hcHBseSh0LGFyZ3VtZW50cyl9ZnVuY3Rpb24gcjcoKXt2YXIgdD1scCh1ZigpKTtyZXR1cm4gdC5jb3B5PWZ1bmN0aW9uKCl7cmV0dXJuIFZhKHQscjcoKSkuY29uc3RhbnQodC5jb25zdGFudCgpKX0sdGEuYXBwbHkodCxhcmd1bWVudHMpfWZ1bmN0aW9uIE1wKCl7dmFyIHQ9Y3AodWYoKSk7cmV0dXJuIHQuY29weT1mdW5jdGlvbigpe3JldHVybiBWYSh0LE1wKCkpLmV4cG9uZW50KHQuZXhwb25lbnQoKSl9LHRhLmFwcGx5KHQsYXJndW1lbnRzKX1mdW5jdGlvbiBSVSgpe3JldHVybiBNcC5hcHBseShudWxsLGFyZ3VtZW50cykuZXhwb25lbnQoLjUpfWZ1bmN0aW9uIEVlKHQpe2Zvcih2YXIgZT10Lmxlbmd0aC82fDAscj1uZXcgQXJyYXkoZSksbj0wO248ZTspcltuXT0iIyIrdC5zbGljZShuKjYsKytuKjYpO3JldHVybiByfWNvbnN0IElVPUVlKCIxZjc3YjRmZjdmMGUyY2EwMmNkNjI3Mjg5NDY3YmQ4YzU2NGJlMzc3YzI3ZjdmN2ZiY2JkMjIxN2JlY2YiKSxOVT1FZSgiN2ZjOTdmYmVhZWQ0ZmRjMDg2ZmZmZjk5Mzg2Y2IwZjAwMjdmYmY1YjE3NjY2NjY2IiksQlU9RWUoIjFiOWU3N2Q5NWYwMjc1NzBiM2U3Mjk4YTY2YTYxZWU2YWIwMmE2NzYxZDY2NjY2NiIpLERVPUVlKCJhNmNlZTMxZjc4YjRiMmRmOGEzM2EwMmNmYjlhOTllMzFhMWNmZGJmNmZmZjdmMDBjYWIyZDY2YTNkOWFmZmZmOTliMTU5MjgiKSxPVT1FZSgiZmJiNGFlYjNjZGUzY2NlYmM1ZGVjYmU0ZmVkOWE2ZmZmZmNjZTVkOGJkZmRkYWVjZjJmMmYyIiksRlU9RWUoImIzZTJjZGZkY2RhY2NiZDVlOGY0Y2FlNGU2ZjVjOWZmZjJhZWYxZTJjY2NjY2NjYyIpLFBVPUVlKCJlNDFhMWMzNzdlYjg0ZGFmNGE5ODRlYTNmZjdmMDBmZmZmMzNhNjU2MjhmNzgxYmY5OTk5OTkiKSxxVT1FZSgiNjZjMmE1ZmM4ZDYyOGRhMGNiZTc4YWMzYTZkODU0ZmZkOTJmZTVjNDk0YjNiM2IzIiksVlU9RWUoIjhkZDNjN2ZmZmZiM2JlYmFkYWZiODA3MjgwYjFkM2ZkYjQ2MmIzZGU2OWZjY2RlNWQ5ZDlkOWJjODBiZGNjZWJjNWZmZWQ2ZiIpLHpVPUVlKCI0ZTc5YTdmMjhlMmNlMTU3NTk3NmI3YjI1OWExNGZlZGM5NDlhZjdhYTFmZjlkYTc5Yzc1NWZiYWIwYWIiKSxXZT10PT5CNSh0W3QubGVuZ3RoLTFdKTt2YXIgbjc9bmV3IEFycmF5KDMpLmNvbmNhdCgiZDhiMzY1ZjVmNWY1NWFiNGFjIiwiYTY2MTFhZGZjMjdkODBjZGMxMDE4NTcxIiwiYTY2MTFhZGZjMjdkZjVmNWY1ODBjZGMxMDE4NTcxIiwiOGM1MTBhZDhiMzY1ZjZlOGMzYzdlYWU1NWFiNGFjMDE2NjVlIiwiOGM1MTBhZDhiMzY1ZjZlOGMzZjVmNWY1YzdlYWU1NWFiNGFjMDE2NjVlIiwiOGM1MTBhYmY4MTJkZGZjMjdkZjZlOGMzYzdlYWU1ODBjZGMxMzU5NzhmMDE2NjVlIiwiOGM1MTBhYmY4MTJkZGZjMjdkZjZlOGMzZjVmNWY1YzdlYWU1ODBjZGMxMzU5NzhmMDE2NjVlIiwiNTQzMDA1OGM1MTBhYmY4MTJkZGZjMjdkZjZlOGMzYzdlYWU1ODBjZGMxMzU5NzhmMDE2NjVlMDAzYzMwIiwiNTQzMDA1OGM1MTBhYmY4MTJkZGZjMjdkZjZlOGMzZjVmNWY1YzdlYWU1ODBjZGMxMzU5NzhmMDE2NjVlMDAzYzMwIikubWFwKEVlKTtjb25zdCBZVT1XZShuNyk7dmFyIGk3PW5ldyBBcnJheSgzKS5jb25jYXQoImFmOGRjM2Y3ZjdmNzdmYmY3YiIsIjdiMzI5NGMyYTVjZmE2ZGJhMDAwODgzNyIsIjdiMzI5NGMyYTVjZmY3ZjdmN2E2ZGJhMDAwODgzNyIsIjc2MmE4M2FmOGRjM2U3ZDRlOGQ5ZjBkMzdmYmY3YjFiNzgzNyIsIjc2MmE4M2FmOGRjM2U3ZDRlOGY3ZjdmN2Q5ZjBkMzdmYmY3YjFiNzgzNyIsIjc2MmE4Mzk5NzBhYmMyYTVjZmU3ZDRlOGQ5ZjBkM2E2ZGJhMDVhYWU2MTFiNzgzNyIsIjc2MmE4Mzk5NzBhYmMyYTVjZmU3ZDRlOGY3ZjdmN2Q5ZjBkM2E2ZGJhMDVhYWU2MTFiNzgzNyIsIjQwMDA0Yjc2MmE4Mzk5NzBhYmMyYTVjZmU3ZDRlOGQ5ZjBkM2E2ZGJhMDVhYWU2MTFiNzgzNzAwNDQxYiIsIjQwMDA0Yjc2MmE4Mzk5NzBhYmMyYTVjZmU3ZDRlOGY3ZjdmN2Q5ZjBkM2E2ZGJhMDVhYWU2MTFiNzgzNzAwNDQxYiIpLm1hcChFZSk7Y29uc3QgVVU9V2UoaTcpO3ZhciBhNz1uZXcgQXJyYXkoMykuY29uY2F0KCJlOWEzYzlmN2Y3ZjdhMWQ3NmEiLCJkMDFjOGJmMWI2ZGFiOGUxODY0ZGFjMjYiLCJkMDFjOGJmMWI2ZGFmN2Y3ZjdiOGUxODY0ZGFjMjYiLCJjNTFiN2RlOWEzYzlmZGUwZWZlNmY1ZDBhMWQ3NmE0ZDkyMjEiLCJjNTFiN2RlOWEzYzlmZGUwZWZmN2Y3ZjdlNmY1ZDBhMWQ3NmE0ZDkyMjEiLCJjNTFiN2RkZTc3YWVmMWI2ZGFmZGUwZWZlNmY1ZDBiOGUxODY3ZmJjNDE0ZDkyMjEiLCJjNTFiN2RkZTc3YWVmMWI2ZGFmZGUwZWZmN2Y3ZjdlNmY1ZDBiOGUxODY3ZmJjNDE0ZDkyMjEiLCI4ZTAxNTJjNTFiN2RkZTc3YWVmMWI2ZGFmZGUwZWZlNmY1ZDBiOGUxODY3ZmJjNDE0ZDkyMjEyNzY0MTkiLCI4ZTAxNTJjNTFiN2RkZTc3YWVmMWI2ZGFmZGUwZWZmN2Y3ZjdlNmY1ZDBiOGUxODY3ZmJjNDE0ZDkyMjEyNzY0MTkiKS5tYXAoRWUpO2NvbnN0IFdVPVdlKGE3KTt2YXIgczc9bmV3IEFycmF5KDMpLmNvbmNhdCgiOTk4ZWMzZjdmN2Y3ZjFhMzQwIiwiNWUzYzk5YjJhYmQyZmRiODYzZTY2MTAxIiwiNWUzYzk5YjJhYmQyZjdmN2Y3ZmRiODYzZTY2MTAxIiwiNTQyNzg4OTk4ZWMzZDhkYWViZmVlMGI2ZjFhMzQwYjM1ODA2IiwiNTQyNzg4OTk4ZWMzZDhkYWViZjdmN2Y3ZmVlMGI2ZjFhMzQwYjM1ODA2IiwiNTQyNzg4ODA3M2FjYjJhYmQyZDhkYWViZmVlMGI2ZmRiODYzZTA4MjE0YjM1ODA2IiwiNTQyNzg4ODA3M2FjYjJhYmQyZDhkYWViZjdmN2Y3ZmVlMGI2ZmRiODYzZTA4MjE0YjM1ODA2IiwiMmQwMDRiNTQyNzg4ODA3M2FjYjJhYmQyZDhkYWViZmVlMGI2ZmRiODYzZTA4MjE0YjM1ODA2N2YzYjA4IiwiMmQwMDRiNTQyNzg4ODA3M2FjYjJhYmQyZDhkYWViZjdmN2Y3ZmVlMGI2ZmRiODYzZTA4MjE0YjM1ODA2N2YzYjA4IikubWFwKEVlKTtjb25zdCBIVT1XZShzNyk7dmFyIG83PW5ldyBBcnJheSgzKS5jb25jYXQoImVmOGE2MmY3ZjdmNzY3YTljZiIsImNhMDAyMGY0YTU4MjkyYzVkZTA1NzFiMCIsImNhMDAyMGY0YTU4MmY3ZjdmNzkyYzVkZTA1NzFiMCIsImIyMTgyYmVmOGE2MmZkZGJjN2QxZTVmMDY3YTljZjIxNjZhYyIsImIyMTgyYmVmOGE2MmZkZGJjN2Y3ZjdmN2QxZTVmMDY3YTljZjIxNjZhYyIsImIyMTgyYmQ2NjA0ZGY0YTU4MmZkZGJjN2QxZTVmMDkyYzVkZTQzOTNjMzIxNjZhYyIsImIyMTgyYmQ2NjA0ZGY0YTU4MmZkZGJjN2Y3ZjdmN2QxZTVmMDkyYzVkZTQzOTNjMzIxNjZhYyIsIjY3MDAxZmIyMTgyYmQ2NjA0ZGY0YTU4MmZkZGJjN2QxZTVmMDkyYzVkZTQzOTNjMzIxNjZhYzA1MzA2MSIsIjY3MDAxZmIyMTgyYmQ2NjA0ZGY0YTU4MmZkZGJjN2Y3ZjdmN2QxZTVmMDkyYzVkZTQzOTNjMzIxNjZhYzA1MzA2MSIpLm1hcChFZSk7Y29uc3QgR1U9V2UobzcpO3ZhciBsNz1uZXcgQXJyYXkoMykuY29uY2F0KCJlZjhhNjJmZmZmZmY5OTk5OTkiLCJjYTAwMjBmNGE1ODJiYWJhYmE0MDQwNDAiLCJjYTAwMjBmNGE1ODJmZmZmZmZiYWJhYmE0MDQwNDAiLCJiMjE4MmJlZjhhNjJmZGRiYzdlMGUwZTA5OTk5OTk0ZDRkNGQiLCJiMjE4MmJlZjhhNjJmZGRiYzdmZmZmZmZlMGUwZTA5OTk5OTk0ZDRkNGQiLCJiMjE4MmJkNjYwNGRmNGE1ODJmZGRiYzdlMGUwZTBiYWJhYmE4Nzg3ODc0ZDRkNGQiLCJiMjE4MmJkNjYwNGRmNGE1ODJmZGRiYzdmZmZmZmZlMGUwZTBiYWJhYmE4Nzg3ODc0ZDRkNGQiLCI2NzAwMWZiMjE4MmJkNjYwNGRmNGE1ODJmZGRiYzdlMGUwZTBiYWJhYmE4Nzg3ODc0ZDRkNGQxYTFhMWEiLCI2NzAwMWZiMjE4MmJkNjYwNGRmNGE1ODJmZGRiYzdmZmZmZmZlMGUwZTBiYWJhYmE4Nzg3ODc0ZDRkNGQxYTFhMWEiKS5tYXAoRWUpO2NvbnN0IGpVPVdlKGw3KTt2YXIgYzc9bmV3IEFycmF5KDMpLmNvbmNhdCgiZmM4ZDU5ZmZmZmJmOTFiZmRiIiwiZDcxOTFjZmRhZTYxYWJkOWU5MmM3YmI2IiwiZDcxOTFjZmRhZTYxZmZmZmJmYWJkOWU5MmM3YmI2IiwiZDczMDI3ZmM4ZDU5ZmVlMDkwZTBmM2Y4OTFiZmRiNDU3NWI0IiwiZDczMDI3ZmM4ZDU5ZmVlMDkwZmZmZmJmZTBmM2Y4OTFiZmRiNDU3NWI0IiwiZDczMDI3ZjQ2ZDQzZmRhZTYxZmVlMDkwZTBmM2Y4YWJkOWU5NzRhZGQxNDU3NWI0IiwiZDczMDI3ZjQ2ZDQzZmRhZTYxZmVlMDkwZmZmZmJmZTBmM2Y4YWJkOWU5NzRhZGQxNDU3NWI0IiwiYTUwMDI2ZDczMDI3ZjQ2ZDQzZmRhZTYxZmVlMDkwZTBmM2Y4YWJkOWU5NzRhZGQxNDU3NWI0MzEzNjk1IiwiYTUwMDI2ZDczMDI3ZjQ2ZDQzZmRhZTYxZmVlMDkwZmZmZmJmZTBmM2Y4YWJkOWU5NzRhZGQxNDU3NWI0MzEzNjk1IikubWFwKEVlKTtjb25zdCAkVT1XZShjNyk7dmFyIHU3PW5ldyBBcnJheSgzKS5jb25jYXQoImZjOGQ1OWZmZmZiZjkxY2Y2MCIsImQ3MTkxY2ZkYWU2MWE2ZDk2YTFhOTY0MSIsImQ3MTkxY2ZkYWU2MWZmZmZiZmE2ZDk2YTFhOTY0MSIsImQ3MzAyN2ZjOGQ1OWZlZTA4YmQ5ZWY4YjkxY2Y2MDFhOTg1MCIsImQ3MzAyN2ZjOGQ1OWZlZTA4YmZmZmZiZmQ5ZWY4YjkxY2Y2MDFhOTg1MCIsImQ3MzAyN2Y0NmQ0M2ZkYWU2MWZlZTA4YmQ5ZWY4YmE2ZDk2YTY2YmQ2MzFhOTg1MCIsImQ3MzAyN2Y0NmQ0M2ZkYWU2MWZlZTA4YmZmZmZiZmQ5ZWY4YmE2ZDk2YTY2YmQ2MzFhOTg1MCIsImE1MDAyNmQ3MzAyN2Y0NmQ0M2ZkYWU2MWZlZTA4YmQ5ZWY4YmE2ZDk2YTY2YmQ2MzFhOTg1MDAwNjgzNyIsImE1MDAyNmQ3MzAyN2Y0NmQ0M2ZkYWU2MWZlZTA4YmZmZmZiZmQ5ZWY4YmE2ZDk2YTY2YmQ2MzFhOTg1MDAwNjgzNyIpLm1hcChFZSk7Y29uc3QgWFU9V2UodTcpO3ZhciBoNz1uZXcgQXJyYXkoMykuY29uY2F0KCJmYzhkNTlmZmZmYmY5OWQ1OTQiLCJkNzE5MWNmZGFlNjFhYmRkYTQyYjgzYmEiLCJkNzE5MWNmZGFlNjFmZmZmYmZhYmRkYTQyYjgzYmEiLCJkNTNlNGZmYzhkNTlmZWUwOGJlNmY1OTg5OWQ1OTQzMjg4YmQiLCJkNTNlNGZmYzhkNTlmZWUwOGJmZmZmYmZlNmY1OTg5OWQ1OTQzMjg4YmQiLCJkNTNlNGZmNDZkNDNmZGFlNjFmZWUwOGJlNmY1OThhYmRkYTQ2NmMyYTUzMjg4YmQiLCJkNTNlNGZmNDZkNDNmZGFlNjFmZWUwOGJmZmZmYmZlNmY1OThhYmRkYTQ2NmMyYTUzMjg4YmQiLCI5ZTAxNDJkNTNlNGZmNDZkNDNmZGFlNjFmZWUwOGJlNmY1OThhYmRkYTQ2NmMyYTUzMjg4YmQ1ZTRmYTIiLCI5ZTAxNDJkNTNlNGZmNDZkNDNmZGFlNjFmZWUwOGJmZmZmYmZlNmY1OThhYmRkYTQ2NmMyYTUzMjg4YmQ1ZTRmYTIiKS5tYXAoRWUpO2NvbnN0IEtVPVdlKGg3KTt2YXIgZjc9bmV3IEFycmF5KDMpLmNvbmNhdCgiZTVmNWY5OTlkOGM5MmNhMjVmIiwiZWRmOGZiYjJlMmUyNjZjMmE0MjM4YjQ1IiwiZWRmOGZiYjJlMmUyNjZjMmE0MmNhMjVmMDA2ZDJjIiwiZWRmOGZiY2NlY2U2OTlkOGM5NjZjMmE0MmNhMjVmMDA2ZDJjIiwiZWRmOGZiY2NlY2U2OTlkOGM5NjZjMmE0NDFhZTc2MjM4YjQ1MDA1ODI0IiwiZjdmY2ZkZTVmNWY5Y2NlY2U2OTlkOGM5NjZjMmE0NDFhZTc2MjM4YjQ1MDA1ODI0IiwiZjdmY2ZkZTVmNWY5Y2NlY2U2OTlkOGM5NjZjMmE0NDFhZTc2MjM4YjQ1MDA2ZDJjMDA0NDFiIikubWFwKEVlKTtjb25zdCBaVT1XZShmNyk7dmFyIGQ3PW5ldyBBcnJheSgzKS5jb25jYXQoImUwZWNmNDllYmNkYTg4NTZhNyIsImVkZjhmYmIzY2RlMzhjOTZjNjg4NDE5ZCIsImVkZjhmYmIzY2RlMzhjOTZjNjg4NTZhNzgxMGY3YyIsImVkZjhmYmJmZDNlNjllYmNkYThjOTZjNjg4NTZhNzgxMGY3YyIsImVkZjhmYmJmZDNlNjllYmNkYThjOTZjNjhjNmJiMTg4NDE5ZDZlMDE2YiIsImY3ZmNmZGUwZWNmNGJmZDNlNjllYmNkYThjOTZjNjhjNmJiMTg4NDE5ZDZlMDE2YiIsImY3ZmNmZGUwZWNmNGJmZDNlNjllYmNkYThjOTZjNjhjNmJiMTg4NDE5ZDgxMGY3YzRkMDA0YiIpLm1hcChFZSk7Y29uc3QgUVU9V2UoZDcpO3ZhciBwNz1uZXcgQXJyYXkoMykuY29uY2F0KCJlMGYzZGJhOGRkYjU0M2EyY2EiLCJmMGY5ZThiYWU0YmM3YmNjYzQyYjhjYmUiLCJmMGY5ZThiYWU0YmM3YmNjYzQ0M2EyY2EwODY4YWMiLCJmMGY5ZThjY2ViYzVhOGRkYjU3YmNjYzQ0M2EyY2EwODY4YWMiLCJmMGY5ZThjY2ViYzVhOGRkYjU3YmNjYzQ0ZWIzZDMyYjhjYmUwODU4OWUiLCJmN2ZjZjBlMGYzZGJjY2ViYzVhOGRkYjU3YmNjYzQ0ZWIzZDMyYjhjYmUwODU4OWUiLCJmN2ZjZjBlMGYzZGJjY2ViYzVhOGRkYjU3YmNjYzQ0ZWIzZDMyYjhjYmUwODY4YWMwODQwODEiKS5tYXAoRWUpO2NvbnN0IEpVPVdlKHA3KTt2YXIgZzc9bmV3IEFycmF5KDMpLmNvbmNhdCgiZmVlOGM4ZmRiYjg0ZTM0YTMzIiwiZmVmMGQ5ZmRjYzhhZmM4ZDU5ZDczMDFmIiwiZmVmMGQ5ZmRjYzhhZmM4ZDU5ZTM0YTMzYjMwMDAwIiwiZmVmMGQ5ZmRkNDllZmRiYjg0ZmM4ZDU5ZTM0YTMzYjMwMDAwIiwiZmVmMGQ5ZmRkNDllZmRiYjg0ZmM4ZDU5ZWY2NTQ4ZDczMDFmOTkwMDAwIiwiZmZmN2VjZmVlOGM4ZmRkNDllZmRiYjg0ZmM4ZDU5ZWY2NTQ4ZDczMDFmOTkwMDAwIiwiZmZmN2VjZmVlOGM4ZmRkNDllZmRiYjg0ZmM4ZDU5ZWY2NTQ4ZDczMDFmYjMwMDAwN2YwMDAwIikubWFwKEVlKTtjb25zdCB0Vz1XZShnNyk7dmFyIHk3PW5ldyBBcnJheSgzKS5jb25jYXQoImVjZTJmMGE2YmRkYjFjOTA5OSIsImY2ZWZmN2JkYzllMTY3YTljZjAyODE4YSIsImY2ZWZmN2JkYzllMTY3YTljZjFjOTA5OTAxNmM1OSIsImY2ZWZmN2QwZDFlNmE2YmRkYjY3YTljZjFjOTA5OTAxNmM1OSIsImY2ZWZmN2QwZDFlNmE2YmRkYjY3YTljZjM2OTBjMDAyODE4YTAxNjQ1MCIsImZmZjdmYmVjZTJmMGQwZDFlNmE2YmRkYjY3YTljZjM2OTBjMDAyODE4YTAxNjQ1MCIsImZmZjdmYmVjZTJmMGQwZDFlNmE2YmRkYjY3YTljZjM2OTBjMDAyODE4YTAxNmM1OTAxNDYzNiIpLm1hcChFZSk7Y29uc3QgZVc9V2UoeTcpO3ZhciBtNz1uZXcgQXJyYXkoMykuY29uY2F0KCJlY2U3ZjJhNmJkZGIyYjhjYmUiLCJmMWVlZjZiZGM5ZTE3NGE5Y2YwNTcwYjAiLCJmMWVlZjZiZGM5ZTE3NGE5Y2YyYjhjYmUwNDVhOGQiLCJmMWVlZjZkMGQxZTZhNmJkZGI3NGE5Y2YyYjhjYmUwNDVhOGQiLCJmMWVlZjZkMGQxZTZhNmJkZGI3NGE5Y2YzNjkwYzAwNTcwYjAwMzRlN2IiLCJmZmY3ZmJlY2U3ZjJkMGQxZTZhNmJkZGI3NGE5Y2YzNjkwYzAwNTcwYjAwMzRlN2IiLCJmZmY3ZmJlY2U3ZjJkMGQxZTZhNmJkZGI3NGE5Y2YzNjkwYzAwNTcwYjAwNDVhOGQwMjM4NTgiKS5tYXAoRWUpO2NvbnN0IHJXPVdlKG03KTt2YXIgYjc9bmV3IEFycmF5KDMpLmNvbmNhdCgiZTdlMWVmYzk5NGM3ZGQxYzc3IiwiZjFlZWY2ZDdiNWQ4ZGY2NWIwY2UxMjU2IiwiZjFlZWY2ZDdiNWQ4ZGY2NWIwZGQxYzc3OTgwMDQzIiwiZjFlZWY2ZDRiOWRhYzk5NGM3ZGY2NWIwZGQxYzc3OTgwMDQzIiwiZjFlZWY2ZDRiOWRhYzk5NGM3ZGY2NWIwZTcyOThhY2UxMjU2OTEwMDNmIiwiZjdmNGY5ZTdlMWVmZDRiOWRhYzk5NGM3ZGY2NWIwZTcyOThhY2UxMjU2OTEwMDNmIiwiZjdmNGY5ZTdlMWVmZDRiOWRhYzk5NGM3ZGY2NWIwZTcyOThhY2UxMjU2OTgwMDQzNjcwMDFmIikubWFwKEVlKTtjb25zdCBuVz1XZShiNyk7dmFyIF83PW5ldyBBcnJheSgzKS5jb25jYXQoImZkZTBkZGZhOWZiNWM1MWI4YSIsImZlZWJlMmZiYjRiOWY3NjhhMWFlMDE3ZSIsImZlZWJlMmZiYjRiOWY3NjhhMWM1MWI4YTdhMDE3NyIsImZlZWJlMmZjYzVjMGZhOWZiNWY3NjhhMWM1MWI4YTdhMDE3NyIsImZlZWJlMmZjYzVjMGZhOWZiNWY3NjhhMWRkMzQ5N2FlMDE3ZTdhMDE3NyIsImZmZjdmM2ZkZTBkZGZjYzVjMGZhOWZiNWY3NjhhMWRkMzQ5N2FlMDE3ZTdhMDE3NyIsImZmZjdmM2ZkZTBkZGZjYzVjMGZhOWZiNWY3NjhhMWRkMzQ5N2FlMDE3ZTdhMDE3NzQ5MDA2YSIpLm1hcChFZSk7Y29uc3QgaVc9V2UoXzcpO3ZhciB2Nz1uZXcgQXJyYXkoMykuY29uY2F0KCJlZGY4YjE3ZmNkYmIyYzdmYjgiLCJmZmZmY2NhMWRhYjQ0MWI2YzQyMjVlYTgiLCJmZmZmY2NhMWRhYjQ0MWI2YzQyYzdmYjgyNTM0OTQiLCJmZmZmY2NjN2U5YjQ3ZmNkYmI0MWI2YzQyYzdmYjgyNTM0OTQiLCJmZmZmY2NjN2U5YjQ3ZmNkYmI0MWI2YzQxZDkxYzAyMjVlYTgwYzJjODQiLCJmZmZmZDllZGY4YjFjN2U5YjQ3ZmNkYmI0MWI2YzQxZDkxYzAyMjVlYTgwYzJjODQiLCJmZmZmZDllZGY4YjFjN2U5YjQ3ZmNkYmI0MWI2YzQxZDkxYzAyMjVlYTgyNTM0OTQwODFkNTgiKS5tYXAoRWUpO2NvbnN0IGFXPVdlKHY3KTt2YXIgeDc9bmV3IEFycmF5KDMpLmNvbmNhdCgiZjdmY2I5YWRkZDhlMzFhMzU0IiwiZmZmZmNjYzJlNjk5NzhjNjc5MjM4NDQzIiwiZmZmZmNjYzJlNjk5NzhjNjc5MzFhMzU0MDA2ODM3IiwiZmZmZmNjZDlmMGEzYWRkZDhlNzhjNjc5MzFhMzU0MDA2ODM3IiwiZmZmZmNjZDlmMGEzYWRkZDhlNzhjNjc5NDFhYjVkMjM4NDQzMDA1YTMyIiwiZmZmZmU1ZjdmY2I5ZDlmMGEzYWRkZDhlNzhjNjc5NDFhYjVkMjM4NDQzMDA1YTMyIiwiZmZmZmU1ZjdmY2I5ZDlmMGEzYWRkZDhlNzhjNjc5NDFhYjVkMjM4NDQzMDA2ODM3MDA0NTI5IikubWFwKEVlKTtjb25zdCBzVz1XZSh4Nyk7dmFyIGs3PW5ldyBBcnJheSgzKS5jb25jYXQoImZmZjdiY2ZlYzQ0ZmQ5NWYwZSIsImZmZmZkNGZlZDk4ZWZlOTkyOWNjNGMwMiIsImZmZmZkNGZlZDk4ZWZlOTkyOWQ5NWYwZTk5MzQwNCIsImZmZmZkNGZlZTM5MWZlYzQ0ZmZlOTkyOWQ5NWYwZTk5MzQwNCIsImZmZmZkNGZlZTM5MWZlYzQ0ZmZlOTkyOWVjNzAxNGNjNGMwMjhjMmQwNCIsImZmZmZlNWZmZjdiY2ZlZTM5MWZlYzQ0ZmZlOTkyOWVjNzAxNGNjNGMwMjhjMmQwNCIsImZmZmZlNWZmZjdiY2ZlZTM5MWZlYzQ0ZmZlOTkyOWVjNzAxNGNjNGMwMjk5MzQwNDY2MjUwNiIpLm1hcChFZSk7Y29uc3Qgb1c9V2UoazcpO3ZhciB3Nz1uZXcgQXJyYXkoMykuY29uY2F0KCJmZmVkYTBmZWIyNGNmMDNiMjAiLCJmZmZmYjJmZWNjNWNmZDhkM2NlMzFhMWMiLCJmZmZmYjJmZWNjNWNmZDhkM2NmMDNiMjBiZDAwMjYiLCJmZmZmYjJmZWQ5NzZmZWIyNGNmZDhkM2NmMDNiMjBiZDAwMjYiLCJmZmZmYjJmZWQ5NzZmZWIyNGNmZDhkM2NmYzRlMmFlMzFhMWNiMTAwMjYiLCJmZmZmY2NmZmVkYTBmZWQ5NzZmZWIyNGNmZDhkM2NmYzRlMmFlMzFhMWNiMTAwMjYiLCJmZmZmY2NmZmVkYTBmZWQ5NzZmZWIyNGNmZDhkM2NmYzRlMmFlMzFhMWNiZDAwMjY4MDAwMjYiKS5tYXAoRWUpO2NvbnN0IGxXPVdlKHc3KTt2YXIgVDc9bmV3IEFycmF5KDMpLmNvbmNhdCgiZGVlYmY3OWVjYWUxMzE4MmJkIiwiZWZmM2ZmYmRkN2U3NmJhZWQ2MjE3MWI1IiwiZWZmM2ZmYmRkN2U3NmJhZWQ2MzE4MmJkMDg1MTljIiwiZWZmM2ZmYzZkYmVmOWVjYWUxNmJhZWQ2MzE4MmJkMDg1MTljIiwiZWZmM2ZmYzZkYmVmOWVjYWUxNmJhZWQ2NDI5MmM2MjE3MWI1MDg0NTk0IiwiZjdmYmZmZGVlYmY3YzZkYmVmOWVjYWUxNmJhZWQ2NDI5MmM2MjE3MWI1MDg0NTk0IiwiZjdmYmZmZGVlYmY3YzZkYmVmOWVjYWUxNmJhZWQ2NDI5MmM2MjE3MWI1MDg1MTljMDgzMDZiIikubWFwKEVlKTtjb25zdCBjVz1XZShUNyk7dmFyIEU3PW5ldyBBcnJheSgzKS5jb25jYXQoImU1ZjVlMGExZDk5YjMxYTM1NCIsImVkZjhlOWJhZTRiMzc0YzQ3NjIzOGI0NSIsImVkZjhlOWJhZTRiMzc0YzQ3NjMxYTM1NDAwNmQyYyIsImVkZjhlOWM3ZTljMGExZDk5Yjc0YzQ3NjMxYTM1NDAwNmQyYyIsImVkZjhlOWM3ZTljMGExZDk5Yjc0YzQ3NjQxYWI1ZDIzOGI0NTAwNWEzMiIsImY3ZmNmNWU1ZjVlMGM3ZTljMGExZDk5Yjc0YzQ3NjQxYWI1ZDIzOGI0NTAwNWEzMiIsImY3ZmNmNWU1ZjVlMGM3ZTljMGExZDk5Yjc0YzQ3NjQxYWI1ZDIzOGI0NTAwNmQyYzAwNDQxYiIpLm1hcChFZSk7Y29uc3QgdVc9V2UoRTcpO3ZhciBDNz1uZXcgQXJyYXkoMykuY29uY2F0KCJmMGYwZjBiZGJkYmQ2MzYzNjMiLCJmN2Y3ZjdjY2NjY2M5Njk2OTY1MjUyNTIiLCJmN2Y3ZjdjY2NjY2M5Njk2OTY2MzYzNjMyNTI1MjUiLCJmN2Y3ZjdkOWQ5ZDliZGJkYmQ5Njk2OTY2MzYzNjMyNTI1MjUiLCJmN2Y3ZjdkOWQ5ZDliZGJkYmQ5Njk2OTY3MzczNzM1MjUyNTIyNTI1MjUiLCJmZmZmZmZmMGYwZjBkOWQ5ZDliZGJkYmQ5Njk2OTY3MzczNzM1MjUyNTIyNTI1MjUiLCJmZmZmZmZmMGYwZjBkOWQ5ZDliZGJkYmQ5Njk2OTY3MzczNzM1MjUyNTIyNTI1MjUwMDAwMDAiKS5tYXAoRWUpO2NvbnN0IGhXPVdlKEM3KTt2YXIgUzc9bmV3IEFycmF5KDMpLmNvbmNhdCgiZWZlZGY1YmNiZGRjNzU2YmIxIiwiZjJmMGY3Y2JjOWUyOWU5YWM4NmE1MWEzIiwiZjJmMGY3Y2JjOWUyOWU5YWM4NzU2YmIxNTQyNzhmIiwiZjJmMGY3ZGFkYWViYmNiZGRjOWU5YWM4NzU2YmIxNTQyNzhmIiwiZjJmMGY3ZGFkYWViYmNiZGRjOWU5YWM4ODA3ZGJhNmE1MWEzNGExNDg2IiwiZmNmYmZkZWZlZGY1ZGFkYWViYmNiZGRjOWU5YWM4ODA3ZGJhNmE1MWEzNGExNDg2IiwiZmNmYmZkZWZlZGY1ZGFkYWViYmNiZGRjOWU5YWM4ODA3ZGJhNmE1MWEzNTQyNzhmM2YwMDdkIikubWFwKEVlKTtjb25zdCBmVz1XZShTNyk7dmFyIEE3PW5ldyBBcnJheSgzKS5jb25jYXQoImZlZTBkMmZjOTI3MmRlMmQyNiIsImZlZTVkOWZjYWU5MWZiNmE0YWNiMTgxZCIsImZlZTVkOWZjYWU5MWZiNmE0YWRlMmQyNmE1MGYxNSIsImZlZTVkOWZjYmJhMWZjOTI3MmZiNmE0YWRlMmQyNmE1MGYxNSIsImZlZTVkOWZjYmJhMWZjOTI3MmZiNmE0YWVmM2IyY2NiMTgxZDk5MDAwZCIsImZmZjVmMGZlZTBkMmZjYmJhMWZjOTI3MmZiNmE0YWVmM2IyY2NiMTgxZDk5MDAwZCIsImZmZjVmMGZlZTBkMmZjYmJhMWZjOTI3MmZiNmE0YWVmM2IyY2NiMTgxZGE1MGYxNTY3MDAwZCIpLm1hcChFZSk7Y29uc3QgZFc9V2UoQTcpO3ZhciBNNz1uZXcgQXJyYXkoMykuY29uY2F0KCJmZWU2Y2VmZGFlNmJlNjU1MGQiLCJmZWVkZGVmZGJlODVmZDhkM2NkOTQ3MDEiLCJmZWVkZGVmZGJlODVmZDhkM2NlNjU1MGRhNjM2MDMiLCJmZWVkZGVmZGQwYTJmZGFlNmJmZDhkM2NlNjU1MGRhNjM2MDMiLCJmZWVkZGVmZGQwYTJmZGFlNmJmZDhkM2NmMTY5MTNkOTQ4MDE4YzJkMDQiLCJmZmY1ZWJmZWU2Y2VmZGQwYTJmZGFlNmJmZDhkM2NmMTY5MTNkOTQ4MDE4YzJkMDQiLCJmZmY1ZWJmZWU2Y2VmZGQwYTJmZGFlNmJmZDhkM2NmMTY5MTNkOTQ4MDFhNjM2MDM3ZjI3MDQiKS5tYXAoRWUpO2NvbnN0IHBXPVdlKE03KTtmdW5jdGlvbiBnVyh0KXtyZXR1cm4gdD1NYXRoLm1heCgwLE1hdGgubWluKDEsdCkpLCJyZ2IoIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKC00LjU0LXQqKDM1LjM0LXQqKDIzODEuNzMtdCooNjQwMi43LXQqKDcwMjQuNzItdCoyNzEwLjU3KSkpKSkpKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQoMzIuNDkrdCooMTcwLjczK3QqKDUyLjgyLXQqKDEzMS40Ni10KigxNzYuNTgtdCo2Ny4zNykpKSkpKSkrIiwgIitNYXRoLm1heCgwLE1hdGgubWluKDI1NSxNYXRoLnJvdW5kKDgxLjI0K3QqKDQ0Mi4zNi10KigyNDgyLjQzLXQqKDYxNjcuMjQtdCooNjYxNC45NC10KjI0NzUuNjcpKSkpKSkpKyIpIn1jb25zdCB5Vz1YdShRbigzMDAsLjUsMCksUW4oLTI0MCwuNSwxKSk7dmFyIG1XPVh1KFFuKC0xMDAsLjc1LC4zNSksUW4oODAsMS41LC44KSksYlc9WHUoUW4oMjYwLC43NSwuMzUpLFFuKDgwLDEuNSwuOCkpLGhmPVFuKCk7ZnVuY3Rpb24gX1codCl7KHQ8MHx8dD4xKSYmKHQtPU1hdGguZmxvb3IodCkpO3ZhciBlPU1hdGguYWJzKHQtLjUpO3JldHVybiBoZi5oPTM2MCp0LTEwMCxoZi5zPTEuNS0xLjUqZSxoZi5sPS44LS45KmUsaGYrIiJ9dmFyIGZmPXBvKCksdlc9TWF0aC5QSS8zLHhXPU1hdGguUEkqMi8zO2Z1bmN0aW9uIGtXKHQpe3ZhciBlO3JldHVybiB0PSguNS10KSpNYXRoLlBJLGZmLnI9MjU1KihlPU1hdGguc2luKHQpKSplLGZmLmc9MjU1KihlPU1hdGguc2luKHQrdlcpKSplLGZmLmI9MjU1KihlPU1hdGguc2luKHQreFcpKSplLGZmKyIifWZ1bmN0aW9uIHdXKHQpe3JldHVybiB0PU1hdGgubWF4KDAsTWF0aC5taW4oMSx0KSksInJnYigiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQoMzQuNjErdCooMTE3Mi4zMy10KigxMDc5My41Ni10KigzMzMwMC4xMi10KigzODM5NC40OS10KjE0ODI1LjA1KSkpKSkpKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQoMjMuMzErdCooNTU3LjMzK3QqKDEyMjUuMzMtdCooMzU3NC45Ni10KigxMDczLjc3K3QqNzA3LjU2KSkpKSkpKSsiLCAiK01hdGgubWF4KDAsTWF0aC5taW4oMjU1LE1hdGgucm91bmQoMjcuMit0KigzMjExLjEtdCooMTUzMjcuOTctdCooMjc4MTQtdCooMjI1NjkuMTgtdCo2ODM4LjY2KSkpKSkpKSsiKSJ9ZnVuY3Rpb24gZGYodCl7dmFyIGU9dC5sZW5ndGg7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiB0W01hdGgubWF4KDAsTWF0aC5taW4oZS0xLE1hdGguZmxvb3IociplKSkpXX19Y29uc3QgVFc9ZGYoRWUoIjQ0MDE1NDQ0MDI1NjQ1MDQ1NzQ1MDU1OTQ2MDc1YTQ2MDg1YzQ2MGE1ZDQ2MGI1ZTQ3MGQ2MDQ3MGU2MTQ3MTA2MzQ3MTE2NDQ3MTM2NTQ4MTQ2NzQ4MTY2ODQ4MTc2OTQ4MTg2YTQ4MWE2YzQ4MWI2ZDQ4MWM2ZTQ4MWQ2ZjQ4MWY3MDQ4MjA3MTQ4MjE3MzQ4MjM3NDQ4MjQ3NTQ4MjU3NjQ4MjY3NzQ4Mjg3ODQ4Mjk3OTQ3MmE3YTQ3MmM3YTQ3MmQ3YjQ3MmU3YzQ3MmY3ZDQ2MzA3ZTQ2MzI3ZTQ2MzM3ZjQ2MzQ4MDQ1MzU4MTQ1Mzc4MTQ1Mzg4MjQ0Mzk4MzQ0M2E4MzQ0M2I4NDQzM2Q4NDQzM2U4NTQyM2Y4NTQyNDA4NjQyNDE4NjQxNDI4NzQxNDQ4NzQwNDU4ODQwNDY4ODNmNDc4ODNmNDg4OTNlNDk4OTNlNGE4OTNlNGM4YTNkNGQ4YTNkNGU4YTNjNGY4YTNjNTA4YjNiNTE4YjNiNTI4YjNhNTM4YjNhNTQ4YzM5NTU4YzM5NTY4YzM4NTg4YzM4NTk4YzM3NWE4YzM3NWI4ZDM2NWM4ZDM2NWQ4ZDM1NWU4ZDM1NWY4ZDM0NjA4ZDM0NjE4ZDMzNjI4ZDMzNjM4ZDMyNjQ4ZTMyNjU4ZTMxNjY4ZTMxNjc4ZTMxNjg4ZTMwNjk4ZTMwNmE4ZTJmNmI4ZTJmNmM4ZTJlNmQ4ZTJlNmU4ZTJlNmY4ZTJkNzA4ZTJkNzE4ZTJjNzE4ZTJjNzI4ZTJjNzM4ZTJiNzQ4ZTJiNzU4ZTJhNzY4ZTJhNzc4ZTJhNzg4ZTI5Nzk4ZTI5N2E4ZTI5N2I4ZTI4N2M4ZTI4N2Q4ZTI3N2U4ZTI3N2Y4ZTI3ODA4ZTI2ODE4ZTI2ODI4ZTI2ODI4ZTI1ODM4ZTI1ODQ4ZTI1ODU4ZTI0ODY4ZTI0ODc4ZTIzODg4ZTIzODk4ZTIzOGE4ZDIyOGI4ZDIyOGM4ZDIyOGQ4ZDIxOGU4ZDIxOGY4ZDIxOTA4ZDIxOTE4YzIwOTI4YzIwOTI4YzIwOTM4YzFmOTQ4YzFmOTU4YjFmOTY4YjFmOTc4YjFmOTg4YjFmOTk4YTFmOWE4YTFlOWI4YTFlOWM4OTFlOWQ4OTFmOWU4OTFmOWY4ODFmYTA4ODFmYTE4ODFmYTE4NzFmYTI4NzIwYTM4NjIwYTQ4NjIxYTU4NTIxYTY4NTIyYTc4NTIyYTg4NDIzYTk4MzI0YWE4MzI1YWI4MjI1YWM4MjI2YWQ4MTI3YWQ4MTI4YWU4MDI5YWY3ZjJhYjA3ZjJjYjE3ZTJkYjI3ZDJlYjM3YzJmYjQ3YzMxYjU3YjMyYjY3YTM0YjY3OTM1Yjc3OTM3Yjg3ODM4Yjk3NzNhYmE3NjNiYmI3NTNkYmM3NDNmYmM3MzQwYmQ3MjQyYmU3MTQ0YmY3MDQ2YzA2ZjQ4YzE2ZTRhYzE2ZDRjYzI2YzRlYzM2YjUwYzQ2YTUyYzU2OTU0YzU2ODU2YzY2NzU4Yzc2NTVhYzg2NDVjYzg2MzVlYzk2MjYwY2E2MDYzY2I1ZjY1Y2I1ZTY3Y2M1YzY5Y2Q1YjZjY2Q1YTZlY2U1ODcwY2Y1NzczZDA1Njc1ZDA1NDc3ZDE1MzdhZDE1MTdjZDI1MDdmZDM0ZTgxZDM0ZDg0ZDQ0Yjg2ZDU0OTg5ZDU0ODhiZDY0NjhlZDY0NTkwZDc0MzkzZDc0MTk1ZDg0MDk4ZDgzZTliZDkzYzlkZDkzYmEwZGEzOWEyZGEzN2E1ZGIzNmE4ZGIzNGFhZGMzMmFkZGMzMGIwZGQyZmIyZGQyZGI1ZGUyYmI4ZGUyOWJhZGUyOGJkZGYyNmMwZGYyNWMyZGYyM2M1ZTAyMWM4ZTAyMGNhZTExZmNkZTExZGQwZTExY2QyZTIxYmQ1ZTIxYWQ4ZTIxOWRhZTMxOWRkZTMxOGRmZTMxOGUyZTQxOGU1ZTQxOWU3ZTQxOWVhZTUxYWVjZTUxYmVmZTUxY2YxZTUxZGY0ZTYxZWY2ZTYyMGY4ZTYyMWZiZTcyM2ZkZTcyNSIpKTt2YXIgRVc9ZGYoRWUoIjAwMDAwNDAxMDAwNTAxMDEwNjAxMDEwODAyMDEwOTAyMDIwYjAyMDIwZDAzMDMwZjAzMDMxMjA0MDQxNDA1MDQxNjA2MDUxODA2MDUxYTA3MDYxYzA4MDcxZTA5MDcyMDBhMDgyMjBiMDkyNDBjMDkyNjBkMGEyOTBlMGIyYjEwMGIyZDExMGMyZjEyMGQzMTEzMGQzNDE0MGUzNjE1MGUzODE2MGYzYjE4MGYzZDE5MTAzZjFhMTA0MjFjMTA0NDFkMTE0NzFlMTE0OTIwMTE0YjIxMTE0ZTIyMTE1MDI0MTI1MzI1MTI1NTI3MTI1ODI5MTE1YTJhMTE1YzJjMTE1ZjJkMTE2MTJmMTE2MzMxMTE2NTMzMTA2NzM0MTA2OTM2MTA2YjM4MTA2YzM5MGY2ZTNiMGY3MDNkMGY3MTNmMGY3MjQwMGY3NDQyMGY3NTQ0MGY3NjQ1MTA3NzQ3MTA3ODQ5MTA3ODRhMTA3OTRjMTE3YTRlMTE3YjRmMTI3YjUxMTI3YzUyMTM3YzU0MTM3ZDU2MTQ3ZDU3MTU3ZTU5MTU3ZTVhMTY3ZTVjMTY3ZjVkMTc3ZjVmMTg3ZjYwMTg4MDYyMTk4MDY0MWE4MDY1MWE4MDY3MWI4MDY4MWM4MTZhMWM4MTZiMWQ4MTZkMWQ4MTZlMWU4MTcwMWY4MTcyMWY4MTczMjA4MTc1MjE4MTc2MjE4MTc4MjI4MTc5MjI4MjdiMjM4MjdjMjM4MjdlMjQ4MjgwMjU4MjgxMjU4MTgzMjY4MTg0MjY4MTg2Mjc4MTg4Mjc4MTg5Mjg4MThiMjk4MThjMjk4MThlMmE4MTkwMmE4MTkxMmI4MTkzMmI4MDk0MmM4MDk2MmM4MDk4MmQ4MDk5MmQ4MDliMmU3ZjljMmU3ZjllMmY3ZmEwMmY3ZmExMzA3ZWEzMzA3ZWE1MzE3ZWE2MzE3ZGE4MzI3ZGFhMzM3ZGFiMzM3Y2FkMzQ3Y2FlMzQ3YmIwMzU3YmIyMzU3YmIzMzY3YWI1MzY3YWI3Mzc3OWI4Mzc3OWJhMzg3OGJjMzk3OGJkMzk3N2JmM2E3N2MwM2E3NmMyM2I3NWM0M2M3NWM1M2M3NGM3M2Q3M2M4M2U3M2NhM2U3MmNjM2Y3MWNkNDA3MWNmNDA3MGQwNDE2ZmQyNDI2ZmQzNDM2ZWQ1NDQ2ZGQ2NDU2Y2Q4NDU2Y2Q5NDY2YmRiNDc2YWRjNDg2OWRlNDk2OGRmNGE2OGUwNGM2N2UyNGQ2NmUzNGU2NWU0NGY2NGU1NTA2NGU3NTI2M2U4NTM2MmU5NTQ2MmVhNTY2MWViNTc2MGVjNTg2MGVkNWE1ZmVlNWI1ZWVmNWQ1ZWYwNWY1ZWYxNjA1ZGYyNjI1ZGYyNjQ1Y2YzNjU1Y2Y0Njc1Y2Y0Njk1Y2Y1NmI1Y2Y2NmM1Y2Y2NmU1Y2Y3NzA1Y2Y3NzI1Y2Y4NzQ1Y2Y4NzY1Y2Y5Nzg1ZGY5Nzk1ZGY5N2I1ZGZhN2Q1ZWZhN2Y1ZWZhODE1ZmZiODM1ZmZiODU2MGZiODc2MWZjODk2MWZjOGE2MmZjOGM2M2ZjOGU2NGZjOTA2NWZkOTI2NmZkOTQ2N2ZkOTY2OGZkOTg2OWZkOWE2YWZkOWI2YmZlOWQ2Y2ZlOWY2ZGZlYTE2ZWZlYTM2ZmZlYTU3MWZlYTc3MmZlYTk3M2ZlYWE3NGZlYWM3NmZlYWU3N2ZlYjA3OGZlYjI3YWZlYjQ3YmZlYjY3Y2ZlYjc3ZWZlYjk3ZmZlYmI4MWZlYmQ4MmZlYmY4NGZlYzE4NWZlYzI4N2ZlYzQ4OGZlYzY4YWZlYzg4Y2ZlY2E4ZGZlY2M4ZmZlY2Q5MGZlY2Y5MmZlZDE5NGZlZDM5NWZlZDU5N2ZlZDc5OWZlZDg5YWZkZGE5Y2ZkZGM5ZWZkZGVhMGZkZTBhMWZkZTJhM2ZkZTNhNWZkZTVhN2ZkZTdhOWZkZTlhYWZkZWJhY2ZjZWNhZWZjZWViMGZjZjBiMmZjZjJiNGZjZjRiNmZjZjZiOGZjZjdiOWZjZjliYmZjZmJiZGZjZmRiZiIpKSxDVz1kZihFZSgiMDAwMDA0MDEwMDA1MDEwMTA2MDEwMTA4MDIwMTBhMDIwMjBjMDIwMjBlMDMwMjEwMDQwMzEyMDQwMzE0MDUwNDE3MDYwNDE5MDcwNTFiMDgwNTFkMDkwNjFmMGEwNzIyMGIwNzI0MGMwODI2MGQwODI5MGUwOTJiMTAwOTJkMTEwYTMwMTIwYTMyMTQwYjM0MTUwYjM3MTYwYjM5MTgwYzNjMTkwYzNlMWIwYzQxMWMwYzQzMWUwYzQ1MWYwYzQ4MjEwYzRhMjMwYzRjMjQwYzRmMjYwYzUxMjgwYjUzMjkwYjU1MmIwYjU3MmQwYjU5MmYwYTViMzEwYTVjMzIwYTVlMzQwYTVmMzYwOTYxMzgwOTYyMzkwOTYzM2IwOTY0M2QwOTY1M2UwOTY2NDAwYTY3NDIwYTY4NDQwYTY4NDUwYTY5NDcwYjZhNDkwYjZhNGEwYzZiNGMwYzZiNGQwZDZjNGYwZDZjNTEwZTZjNTIwZTZkNTQwZjZkNTUwZjZkNTcxMDZlNTkxMDZlNWExMTZlNWMxMjZlNWQxMjZlNWYxMzZlNjExMzZlNjIxNDZlNjQxNTZlNjUxNTZlNjcxNjZlNjkxNjZlNmExNzZlNmMxODZlNmQxODZlNmYxOTZlNzExOTZlNzIxYTZlNzQxYTZlNzUxYjZlNzcxYzZkNzgxYzZkN2ExZDZkN2MxZDZkN2QxZTZkN2YxZTZjODAxZjZjODIyMDZjODQyMDZiODUyMTZiODcyMTZiODgyMjZhOGEyMjZhOGMyMzY5OGQyMzY5OGYyNDY5OTAyNTY4OTIyNTY4OTMyNjY3OTUyNjY3OTcyNzY2OTgyNzY2OWEyODY1OWIyOTY0OWQyOTY0OWYyYTYzYTAyYTYzYTIyYjYyYTMyYzYxYTUyYzYwYTYyZDYwYTgyZTVmYTkyZTVlYWIyZjVlYWQzMDVkYWUzMDVjYjAzMTViYjEzMjVhYjMzMjVhYjQzMzU5YjYzNDU4YjczNTU3YjkzNTU2YmEzNjU1YmMzNzU0YmQzODUzYmYzOTUyYzAzYTUxYzEzYTUwYzMzYjRmYzQzYzRlYzYzZDRkYzczZTRjYzgzZjRiY2E0MDRhY2I0MTQ5Y2M0MjQ4Y2U0MzQ3Y2Y0NDQ2ZDA0NTQ1ZDI0NjQ0ZDM0NzQzZDQ0ODQyZDU0YTQxZDc0YjNmZDg0YzNlZDk0ZDNkZGE0ZTNjZGI1MDNiZGQ1MTNhZGU1MjM4ZGY1MzM3ZTA1NTM2ZTE1NjM1ZTI1NzM0ZTM1OTMzZTQ1YTMxZTU1YzMwZTY1ZDJmZTc1ZTJlZTg2MDJkZTk2MTJiZWE2MzJhZWI2NDI5ZWI2NjI4ZWM2NzI2ZWQ2OTI1ZWU2YTI0ZWY2YzIzZWY2ZTIxZjA2ZjIwZjE3MTFmZjE3MzFkZjI3NDFjZjM3NjFiZjM3ODE5ZjQ3OTE4ZjU3YjE3ZjU3ZDE1ZjY3ZTE0ZjY4MDEzZjc4MjEyZjc4NDEwZjg4NTBmZjg4NzBlZjg4OTBjZjk4YjBiZjk4YzBhZjk4ZTA5ZmE5MDA4ZmE5MjA3ZmE5NDA3ZmI5NjA2ZmI5NzA2ZmI5OTA2ZmI5YjA2ZmI5ZDA3ZmM5ZjA3ZmNhMTA4ZmNhMzA5ZmNhNTBhZmNhNjBjZmNhODBkZmNhYTBmZmNhYzExZmNhZTEyZmNiMDE0ZmNiMjE2ZmNiNDE4ZmJiNjFhZmJiODFkZmJiYTFmZmJiYzIxZmJiZTIzZmFjMDI2ZmFjMjI4ZmFjNDJhZmFjNjJkZjljNzJmZjljOTMyZjljYjM1ZjhjZDM3ZjhjZjNhZjdkMTNkZjdkMzQwZjZkNTQzZjZkNzQ2ZjVkOTQ5ZjVkYjRjZjRkZDRmZjRkZjUzZjRlMTU2ZjNlMzVhZjNlNTVkZjJlNjYxZjJlODY1ZjJlYTY5ZjFlYzZkZjFlZDcxZjFlZjc1ZjFmMTc5ZjJmMjdkZjJmNDgyZjNmNTg2ZjNmNjhhZjRmODhlZjVmOTkyZjZmYTk2ZjhmYjlhZjlmYzlkZmFmZGExZmNmZmE0IikpLFNXPWRmKEVlKCIwZDA4ODcxMDA3ODgxMzA3ODkxNjA3OGExOTA2OGMxYjA2OGQxZDA2OGUyMDA2OGYyMjA2OTAyNDA2OTEyNjA1OTEyODA1OTIyYTA1OTMyYzA1OTQyZTA1OTUyZjA1OTYzMTA1OTczMzA1OTczNTA0OTgzNzA0OTkzODA0OWEzYTA0OWEzYzA0OWIzZTA0OWMzZjA0OWM0MTA0OWQ0MzAzOWU0NDAzOWU0NjAzOWY0ODAzOWY0OTAzYTA0YjAzYTE0YzAyYTE0ZTAyYTI1MDAyYTI1MTAyYTM1MzAyYTM1NTAyYTQ1NjAxYTQ1ODAxYTQ1OTAxYTU1YjAxYTU1YzAxYTY1ZTAxYTY2MDAxYTY2MTAwYTc2MzAwYTc2NDAwYTc2NjAwYTc2NzAwYTg2OTAwYTg2YTAwYTg2YzAwYTg2ZTAwYTg2ZjAwYTg3MTAwYTg3MjAxYTg3NDAxYTg3NTAxYTg3NzAxYTg3ODAxYTg3YTAyYTg3YjAyYTg3ZDAzYTg3ZTAzYTg4MDA0YTg4MTA0YTc4MzA1YTc4NDA1YTc4NjA2YTY4NzA3YTY4ODA4YTY4YTA5YTU4YjBhYTU4ZDBiYTU4ZTBjYTQ4ZjBkYTQ5MTBlYTM5MjBmYTM5NDEwYTI5NTExYTE5NjEzYTE5ODE0YTA5OTE1OWY5YTE2OWY5YzE3OWU5ZDE4OWQ5ZTE5OWRhMDFhOWNhMTFiOWJhMjFkOWFhMzFlOWFhNTFmOTlhNjIwOThhNzIxOTdhODIyOTZhYTIzOTVhYjI0OTRhYzI2OTRhZDI3OTNhZTI4OTJiMDI5OTFiMTJhOTBiMjJiOGZiMzJjOGViNDJlOGRiNTJmOGNiNjMwOGJiNzMxOGFiODMyODliYTMzODhiYjM0ODhiYzM1ODdiZDM3ODZiZTM4ODViZjM5ODRjMDNhODNjMTNiODJjMjNjODFjMzNkODBjNDNlN2ZjNTQwN2VjNjQxN2RjNzQyN2NjODQzN2JjOTQ0N2FjYTQ1N2FjYjQ2NzljYzQ3NzhjYzQ5NzdjZDRhNzZjZTRiNzVjZjRjNzRkMDRkNzNkMTRlNzJkMjRmNzFkMzUxNzFkNDUyNzBkNTUzNmZkNTU0NmVkNjU1NmRkNzU2NmNkODU3NmJkOTU4NmFkYTVhNmFkYTViNjlkYjVjNjhkYzVkNjdkZDVlNjZkZTVmNjVkZTYxNjRkZjYyNjNlMDYzNjNlMTY0NjJlMjY1NjFlMjY2NjBlMzY4NWZlNDY5NWVlNTZhNWRlNTZiNWRlNjZjNWNlNzZlNWJlNzZmNWFlODcwNTllOTcxNThlOTcyNTdlYTc0NTdlYjc1NTZlYjc2NTVlYzc3NTRlZDc5NTNlZDdhNTJlZTdiNTFlZjdjNTFlZjdlNTBmMDdmNGZmMDgwNGVmMTgxNGRmMTgzNGNmMjg0NGJmMzg1NGJmMzg3NGFmNDg4NDlmNDg5NDhmNThiNDdmNThjNDZmNjhkNDVmNjhmNDRmNzkwNDRmNzkxNDNmNzkzNDJmODk0NDFmODk1NDBmOTk3M2ZmOTk4M2VmOTlhM2VmYTliM2RmYTljM2NmYTllM2JmYjlmM2FmYmExMzlmYmEyMzhmY2EzMzhmY2E1MzdmY2E2MzZmY2E4MzVmY2E5MzRmZGFiMzNmZGFjMzNmZGFlMzJmZGFmMzFmZGIxMzBmZGIyMmZmZGI0MmZmZGI1MmVmZWI3MmRmZWI4MmNmZWJhMmNmZWJiMmJmZWJkMmFmZWJlMmFmZWMwMjlmZGMyMjlmZGMzMjhmZGM1MjdmZGM2MjdmZGM4MjdmZGNhMjZmZGNiMjZmY2NkMjVmY2NlMjVmY2QwMjVmY2QyMjVmYmQzMjRmYmQ1MjRmYmQ3MjRmYWQ4MjRmYWRhMjRmOWRjMjRmOWRkMjVmOGRmMjVmOGUxMjVmN2UyMjVmN2U0MjVmNmU2MjZmNmU4MjZmNWU5MjZmNWViMjdmNGVkMjdmM2VlMjdmM2YwMjdmMmYyMjdmMWY0MjZmMWY1MjVmMGY3MjRmMGY5MjEiKSk7ZnVuY3Rpb24geGUodCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIHR9fWNvbnN0IEw3PU1hdGguYWJzLHFyPU1hdGguYXRhbjIsbmE9TWF0aC5jb3MsQVc9TWF0aC5tYXgsUG89TWF0aC5taW4sZ249TWF0aC5zaW4sSGU9TWF0aC5zcXJ0LFZyPTFlLTEyLHphPU1hdGguUEkscGY9emEvMixZYT0yKnphO2Z1bmN0aW9uIE1XKHQpe3JldHVybiB0PjE/MDp0PC0xP3phOk1hdGguYWNvcyh0KX1mdW5jdGlvbiBSNyh0KXtyZXR1cm4gdD49MT9wZjp0PD0tMT8tcGY6TWF0aC5hc2luKHQpfWZ1bmN0aW9uIExXKHQpe3JldHVybiB0LmlubmVyUmFkaXVzfWZ1bmN0aW9uIFJXKHQpe3JldHVybiB0Lm91dGVyUmFkaXVzfWZ1bmN0aW9uIElXKHQpe3JldHVybiB0LnN0YXJ0QW5nbGV9ZnVuY3Rpb24gTlcodCl7cmV0dXJuIHQuZW5kQW5nbGV9ZnVuY3Rpb24gQlcodCl7cmV0dXJuIHQmJnQucGFkQW5nbGV9ZnVuY3Rpb24gRFcodCxlLHIsbixpLGEscyxvKXt2YXIgbD1yLXQsdT1uLWUsaD1zLWksZD1vLWEsZj1kKmwtaCp1O2lmKCEoZipmPFZyKSlyZXR1cm4gZj0oaCooZS1hKS1kKih0LWkpKS9mLFt0K2YqbCxlK2YqdV19ZnVuY3Rpb24gZ2YodCxlLHIsbixpLGEscyl7dmFyIG89dC1yLGw9ZS1uLHU9KHM/YTotYSkvSGUobypvK2wqbCksaD11KmwsZD0tdSpvLGY9dCtoLHA9ZStkLG09citoLF89bitkLHk9KGYrbSkvMixiPShwK18pLzIseD1tLWYsaz1fLXAsVD14KngrayprLEM9aS1hLE09ZipfLW0qcCxTPShrPDA/LTE6MSkqSGUoQVcoMCxDKkMqVC1NKk0pKSxSPShNKmsteCpTKS9ULEE9KC1NKngtaypTKS9ULEw9KE0qayt4KlMpL1Qsdj0oLU0qeCtrKlMpL1QsQj1SLXksdz1BLWIsRD1MLXksTj12LWI7cmV0dXJuIEIqQit3Knc+RCpEK04qTiYmKFI9TCxBPXYpLHtjeDpSLGN5OkEseDAxOi1oLHkwMTotZCx4MTE6UiooaS9DLTEpLHkxMTpBKihpL0MtMSl9fWZ1bmN0aW9uIHlmKCl7dmFyIHQ9TFcsZT1SVyxyPXhlKDApLG49bnVsbCxpPUlXLGE9Tlcscz1CVyxvPW51bGw7ZnVuY3Rpb24gbCgpe3ZhciB1LGgsZD0rdC5hcHBseSh0aGlzLGFyZ3VtZW50cyksZj0rZS5hcHBseSh0aGlzLGFyZ3VtZW50cykscD1pLmFwcGx5KHRoaXMsYXJndW1lbnRzKS1wZixtPWEuYXBwbHkodGhpcyxhcmd1bWVudHMpLXBmLF89TDcobS1wKSx5PW0+cDtpZihvfHwobz11PVJhKCkpLGY8ZCYmKGg9ZixmPWQsZD1oKSwhKGY+VnIpKW8ubW92ZVRvKDAsMCk7ZWxzZSBpZihfPllhLVZyKW8ubW92ZVRvKGYqbmEocCksZipnbihwKSksby5hcmMoMCwwLGYscCxtLCF5KSxkPlZyJiYoby5tb3ZlVG8oZCpuYShtKSxkKmduKG0pKSxvLmFyYygwLDAsZCxtLHAseSkpO2Vsc2V7dmFyIGI9cCx4PW0saz1wLFQ9bSxDPV8sTT1fLFM9cy5hcHBseSh0aGlzLGFyZ3VtZW50cykvMixSPVM+VnImJihuPytuLmFwcGx5KHRoaXMsYXJndW1lbnRzKTpIZShkKmQrZipmKSksQT1QbyhMNyhmLWQpLzIsK3IuYXBwbHkodGhpcyxhcmd1bWVudHMpKSxMPUEsdj1BLEIsdztpZihSPlZyKXt2YXIgRD1SNyhSL2QqZ24oUykpLE49UjcoUi9mKmduKFMpKTsoQy09RCoyKT5Wcj8oRCo9eT8xOi0xLGsrPUQsVC09RCk6KEM9MCxrPVQ9KHArbSkvMiksKE0tPU4qMik+VnI/KE4qPXk/MTotMSxiKz1OLHgtPU4pOihNPTAsYj14PShwK20pLzIpfXZhciB6PWYqbmEoYiksWD1mKmduKGIpLGN0PWQqbmEoVCksSj1kKmduKFQpO2lmKEE+VnIpe3ZhciBZPWYqbmEoeCksJD1mKmduKHgpLGx0PWQqbmEoayksdXQ9ZCpnbihrKSxXO2lmKF88emEmJihXPURXKHosWCxsdCx1dCxZLCQsY3QsSikpKXt2YXIgdHQ9ei1XWzBdLEs9WC1XWzFdLGl0PVktV1swXSxaPSQtV1sxXSxWPTEvZ24oTVcoKHR0Kml0K0sqWikvKEhlKHR0KnR0K0sqSykqSGUoaXQqaXQrWipaKSkpLzIpLFE9SGUoV1swXSpXWzBdK1dbMV0qV1sxXSk7TD1QbyhBLChkLVEpLyhWLTEpKSx2PVBvKEEsKGYtUSkvKFYrMSkpfX1NPlZyP3Y+VnI/KEI9Z2YobHQsdXQseixYLGYsdix5KSx3PWdmKFksJCxjdCxKLGYsdix5KSxvLm1vdmVUbyhCLmN4K0IueDAxLEIuY3krQi55MDEpLHY8QT9vLmFyYyhCLmN4LEIuY3ksdixxcihCLnkwMSxCLngwMSkscXIody55MDEsdy54MDEpLCF5KTooby5hcmMoQi5jeCxCLmN5LHYscXIoQi55MDEsQi54MDEpLHFyKEIueTExLEIueDExKSwheSksby5hcmMoMCwwLGYscXIoQi5jeStCLnkxMSxCLmN4K0IueDExKSxxcih3LmN5K3cueTExLHcuY3grdy54MTEpLCF5KSxvLmFyYyh3LmN4LHcuY3ksdixxcih3LnkxMSx3LngxMSkscXIody55MDEsdy54MDEpLCF5KSkpOihvLm1vdmVUbyh6LFgpLG8uYXJjKDAsMCxmLGIseCwheSkpOm8ubW92ZVRvKHosWCksIShkPlZyKXx8IShDPlZyKT9vLmxpbmVUbyhjdCxKKTpMPlZyPyhCPWdmKGN0LEosWSwkLGQsLUwseSksdz1nZih6LFgsbHQsdXQsZCwtTCx5KSxvLmxpbmVUbyhCLmN4K0IueDAxLEIuY3krQi55MDEpLEw8QT9vLmFyYyhCLmN4LEIuY3ksTCxxcihCLnkwMSxCLngwMSkscXIody55MDEsdy54MDEpLCF5KTooby5hcmMoQi5jeCxCLmN5LEwscXIoQi55MDEsQi54MDEpLHFyKEIueTExLEIueDExKSwheSksby5hcmMoMCwwLGQscXIoQi5jeStCLnkxMSxCLmN4K0IueDExKSxxcih3LmN5K3cueTExLHcuY3grdy54MTEpLHkpLG8uYXJjKHcuY3gsdy5jeSxMLHFyKHcueTExLHcueDExKSxxcih3LnkwMSx3LngwMSksIXkpKSk6by5hcmMoMCwwLGQsVCxrLHkpfWlmKG8uY2xvc2VQYXRoKCksdSlyZXR1cm4gbz1udWxsLHUrIiJ8fG51bGx9cmV0dXJuIGwuY2VudHJvaWQ9ZnVuY3Rpb24oKXt2YXIgdT0oK3QuYXBwbHkodGhpcyxhcmd1bWVudHMpKyArZS5hcHBseSh0aGlzLGFyZ3VtZW50cykpLzIsaD0oK2kuYXBwbHkodGhpcyxhcmd1bWVudHMpKyArYS5hcHBseSh0aGlzLGFyZ3VtZW50cykpLzItemEvMjtyZXR1cm5bbmEoaCkqdSxnbihoKSp1XX0sbC5pbm5lclJhZGl1cz1mdW5jdGlvbih1KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD10eXBlb2YgdT09ImZ1bmN0aW9uIj91OnhlKCt1KSxsKTp0fSxsLm91dGVyUmFkaXVzPWZ1bmN0aW9uKHUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXR5cGVvZiB1PT0iZnVuY3Rpb24iP3U6eGUoK3UpLGwpOmV9LGwuY29ybmVyUmFkaXVzPWZ1bmN0aW9uKHUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPXR5cGVvZiB1PT0iZnVuY3Rpb24iP3U6eGUoK3UpLGwpOnJ9LGwucGFkUmFkaXVzPWZ1bmN0aW9uKHUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXU9PW51bGw/bnVsbDp0eXBlb2YgdT09ImZ1bmN0aW9uIj91OnhlKCt1KSxsKTpufSxsLnN0YXJ0QW5nbGU9ZnVuY3Rpb24odSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9dHlwZW9mIHU9PSJmdW5jdGlvbiI/dTp4ZSgrdSksbCk6aX0sbC5lbmRBbmdsZT1mdW5jdGlvbih1KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYT10eXBlb2YgdT09ImZ1bmN0aW9uIj91OnhlKCt1KSxsKTphfSxsLnBhZEFuZ2xlPWZ1bmN0aW9uKHUpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhzPXR5cGVvZiB1PT0iZnVuY3Rpb24iP3U6eGUoK3UpLGwpOnN9LGwuY29udGV4dD1mdW5jdGlvbih1KXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz11PT1udWxsP251bGw6dSxsKTpvfSxsfXZhciBPVz1BcnJheS5wcm90b3R5cGUuc2xpY2U7ZnVuY3Rpb24gbWYodCl7cmV0dXJuIHR5cGVvZiB0PT0ib2JqZWN0IiYmImxlbmd0aCJpbiB0P3Q6QXJyYXkuZnJvbSh0KX1mdW5jdGlvbiBJNyh0KXt0aGlzLl9jb250ZXh0PXR9STcucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpeyh0aGlzLl9saW5lfHx0aGlzLl9saW5lIT09MCYmdGhpcy5fcG9pbnQ9PT0xKSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtzd2l0Y2godD0rdCxlPStlLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsZSk6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxlKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjtkZWZhdWx0OnRoaXMuX2NvbnRleHQubGluZVRvKHQsZSk7YnJlYWt9fX07ZnVuY3Rpb24geW4odCl7cmV0dXJuIG5ldyBJNyh0KX1mdW5jdGlvbiBMcCh0KXtyZXR1cm4gdFswXX1mdW5jdGlvbiBScCh0KXtyZXR1cm4gdFsxXX1mdW5jdGlvbiBVYSh0LGUpe3ZhciByPXhlKCEwKSxuPW51bGwsaT15bixhPW51bGw7dD10eXBlb2YgdD09ImZ1bmN0aW9uIj90OnQ9PT12b2lkIDA/THA6eGUodCksZT10eXBlb2YgZT09ImZ1bmN0aW9uIj9lOmU9PT12b2lkIDA/UnA6eGUoZSk7ZnVuY3Rpb24gcyhvKXt2YXIgbCx1PShvPW1mKG8pKS5sZW5ndGgsaCxkPSExLGY7Zm9yKG49PW51bGwmJihhPWkoZj1SYSgpKSksbD0wO2w8PXU7KytsKSEobDx1JiZyKGg9b1tsXSxsLG8pKT09PWQmJigoZD0hZCk/YS5saW5lU3RhcnQoKTphLmxpbmVFbmQoKSksZCYmYS5wb2ludCgrdChoLGwsbyksK2UoaCxsLG8pKTtpZihmKXJldHVybiBhPW51bGwsZisiInx8bnVsbH1yZXR1cm4gcy54PWZ1bmN0aW9uKG8pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PXR5cGVvZiBvPT0iZnVuY3Rpb24iP286eGUoK28pLHMpOnR9LHMueT1mdW5jdGlvbihvKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oZT10eXBlb2Ygbz09ImZ1bmN0aW9uIj9vOnhlKCtvKSxzKTplfSxzLmRlZmluZWQ9ZnVuY3Rpb24obyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9dHlwZW9mIG89PSJmdW5jdGlvbiI/bzp4ZSghIW8pLHMpOnJ9LHMuY3VydmU9ZnVuY3Rpb24obyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9byxuIT1udWxsJiYoYT1pKG4pKSxzKTppfSxzLmNvbnRleHQ9ZnVuY3Rpb24obyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89PW51bGw/bj1hPW51bGw6YT1pKG49bykscyk6bn0sc31mdW5jdGlvbiBONyh0LGUscil7dmFyIG49bnVsbCxpPXhlKCEwKSxhPW51bGwscz15bixvPW51bGw7dD10eXBlb2YgdD09ImZ1bmN0aW9uIj90OnQ9PT12b2lkIDA/THA6eGUoK3QpLGU9dHlwZW9mIGU9PSJmdW5jdGlvbiI/ZTp4ZShlPT09dm9pZCAwPzA6K2UpLHI9dHlwZW9mIHI9PSJmdW5jdGlvbiI/cjpyPT09dm9pZCAwP1JwOnhlKCtyKTtmdW5jdGlvbiBsKGgpe3ZhciBkLGYscCxtPShoPW1mKGgpKS5sZW5ndGgsXyx5PSExLGIseD1uZXcgQXJyYXkobSksaz1uZXcgQXJyYXkobSk7Zm9yKGE9PW51bGwmJihvPXMoYj1SYSgpKSksZD0wO2Q8PW07KytkKXtpZighKGQ8bSYmaShfPWhbZF0sZCxoKSk9PT15KWlmKHk9IXkpZj1kLG8uYXJlYVN0YXJ0KCksby5saW5lU3RhcnQoKTtlbHNle2ZvcihvLmxpbmVFbmQoKSxvLmxpbmVTdGFydCgpLHA9ZC0xO3A+PWY7LS1wKW8ucG9pbnQoeFtwXSxrW3BdKTtvLmxpbmVFbmQoKSxvLmFyZWFFbmQoKX15JiYoeFtkXT0rdChfLGQsaCksa1tkXT0rZShfLGQsaCksby5wb2ludChuPytuKF8sZCxoKTp4W2RdLHI/K3IoXyxkLGgpOmtbZF0pKX1pZihiKXJldHVybiBvPW51bGwsYisiInx8bnVsbH1mdW5jdGlvbiB1KCl7cmV0dXJuIFVhKCkuZGVmaW5lZChpKS5jdXJ2ZShzKS5jb250ZXh0KGEpfXJldHVybiBsLng9ZnVuY3Rpb24oaCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9dHlwZW9mIGg9PSJmdW5jdGlvbiI/aDp4ZSgraCksbj1udWxsLGwpOnR9LGwueDA9ZnVuY3Rpb24oaCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9dHlwZW9mIGg9PSJmdW5jdGlvbiI/aDp4ZSgraCksbCk6dH0sbC54MT1mdW5jdGlvbihoKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj1oPT1udWxsP251bGw6dHlwZW9mIGg9PSJmdW5jdGlvbiI/aDp4ZSgraCksbCk6bn0sbC55PWZ1bmN0aW9uKGgpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXR5cGVvZiBoPT0iZnVuY3Rpb24iP2g6eGUoK2gpLHI9bnVsbCxsKTplfSxsLnkwPWZ1bmN0aW9uKGgpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXR5cGVvZiBoPT0iZnVuY3Rpb24iP2g6eGUoK2gpLGwpOmV9LGwueTE9ZnVuY3Rpb24oaCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHI9aD09bnVsbD9udWxsOnR5cGVvZiBoPT0iZnVuY3Rpb24iP2g6eGUoK2gpLGwpOnJ9LGwubGluZVgwPWwubGluZVkwPWZ1bmN0aW9uKCl7cmV0dXJuIHUoKS54KHQpLnkoZSl9LGwubGluZVkxPWZ1bmN0aW9uKCl7cmV0dXJuIHUoKS54KHQpLnkocil9LGwubGluZVgxPWZ1bmN0aW9uKCl7cmV0dXJuIHUoKS54KG4pLnkoZSl9LGwuZGVmaW5lZD1mdW5jdGlvbihoKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT10eXBlb2YgaD09ImZ1bmN0aW9uIj9oOnhlKCEhaCksbCk6aX0sbC5jdXJ2ZT1mdW5jdGlvbihoKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocz1oLGEhPW51bGwmJihvPXMoYSkpLGwpOnN9LGwuY29udGV4dD1mdW5jdGlvbihoKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaD09bnVsbD9hPW89bnVsbDpvPXMoYT1oKSxsKTphfSxsfWZ1bmN0aW9uIEZXKHQsZSl7cmV0dXJuIGU8dD8tMTplPnQ/MTplPj10PzA6TmFOfWZ1bmN0aW9uIFBXKHQpe3JldHVybiB0fWZ1bmN0aW9uIEI3KCl7dmFyIHQ9UFcsZT1GVyxyPW51bGwsbj14ZSgwKSxpPXhlKFlhKSxhPXhlKDApO2Z1bmN0aW9uIHMobyl7dmFyIGwsdT0obz1tZihvKSkubGVuZ3RoLGgsZCxmPTAscD1uZXcgQXJyYXkodSksbT1uZXcgQXJyYXkodSksXz0rbi5hcHBseSh0aGlzLGFyZ3VtZW50cykseT1NYXRoLm1pbihZYSxNYXRoLm1heCgtWWEsaS5hcHBseSh0aGlzLGFyZ3VtZW50cyktXykpLGIseD1NYXRoLm1pbihNYXRoLmFicyh5KS91LGEuYXBwbHkodGhpcyxhcmd1bWVudHMpKSxrPXgqKHk8MD8tMToxKSxUO2ZvcihsPTA7bDx1OysrbCkoVD1tW3BbbF09bF09K3Qob1tsXSxsLG8pKT4wJiYoZis9VCk7Zm9yKGUhPW51bGw/cC5zb3J0KGZ1bmN0aW9uKEMsTSl7cmV0dXJuIGUobVtDXSxtW01dKX0pOnIhPW51bGwmJnAuc29ydChmdW5jdGlvbihDLE0pe3JldHVybiByKG9bQ10sb1tNXSl9KSxsPTAsZD1mPyh5LXUqaykvZjowO2w8dTsrK2wsXz1iKWg9cFtsXSxUPW1baF0sYj1fKyhUPjA/VCpkOjApK2ssbVtoXT17ZGF0YTpvW2hdLGluZGV4OmwsdmFsdWU6VCxzdGFydEFuZ2xlOl8sZW5kQW5nbGU6YixwYWRBbmdsZTp4fTtyZXR1cm4gbX1yZXR1cm4gcy52YWx1ZT1mdW5jdGlvbihvKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8odD10eXBlb2Ygbz09ImZ1bmN0aW9uIj9vOnhlKCtvKSxzKTp0fSxzLnNvcnRWYWx1ZXM9ZnVuY3Rpb24obyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9byxyPW51bGwscyk6ZX0scy5zb3J0PWZ1bmN0aW9uKG8pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPW8sZT1udWxsLHMpOnJ9LHMuc3RhcnRBbmdsZT1mdW5jdGlvbihvKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj10eXBlb2Ygbz09ImZ1bmN0aW9uIj9vOnhlKCtvKSxzKTpufSxzLmVuZEFuZ2xlPWZ1bmN0aW9uKG8pe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhpPXR5cGVvZiBvPT0iZnVuY3Rpb24iP286eGUoK28pLHMpOml9LHMucGFkQW5nbGU9ZnVuY3Rpb24obyl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGE9dHlwZW9mIG89PSJmdW5jdGlvbiI/bzp4ZSgrbykscyk6YX0sc312YXIgRDc9SXAoeW4pO2Z1bmN0aW9uIE83KHQpe3RoaXMuX2N1cnZlPXR9TzcucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9jdXJ2ZS5hcmVhU3RhcnQoKX0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2N1cnZlLmFyZWFFbmQoKX0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fY3VydmUubGluZVN0YXJ0KCl9LGxpbmVFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9jdXJ2ZS5saW5lRW5kKCl9LHBvaW50OmZ1bmN0aW9uKHQsZSl7dGhpcy5fY3VydmUucG9pbnQoZSpNYXRoLnNpbih0KSxlKi1NYXRoLmNvcyh0KSl9fTtmdW5jdGlvbiBJcCh0KXtmdW5jdGlvbiBlKHIpe3JldHVybiBuZXcgTzcodChyKSl9cmV0dXJuIGUuX2N1cnZlPXQsZX1mdW5jdGlvbiB4Yyh0KXt2YXIgZT10LmN1cnZlO3JldHVybiB0LmFuZ2xlPXQueCxkZWxldGUgdC54LHQucmFkaXVzPXQueSxkZWxldGUgdC55LHQuY3VydmU9ZnVuY3Rpb24ocil7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/ZShJcChyKSk6ZSgpLl9jdXJ2ZX0sdH1mdW5jdGlvbiBGNygpe3JldHVybiB4YyhVYSgpLmN1cnZlKEQ3KSl9ZnVuY3Rpb24gUDcoKXt2YXIgdD1ONygpLmN1cnZlKEQ3KSxlPXQuY3VydmUscj10LmxpbmVYMCxuPXQubGluZVgxLGk9dC5saW5lWTAsYT10LmxpbmVZMTtyZXR1cm4gdC5hbmdsZT10LngsZGVsZXRlIHQueCx0LnN0YXJ0QW5nbGU9dC54MCxkZWxldGUgdC54MCx0LmVuZEFuZ2xlPXQueDEsZGVsZXRlIHQueDEsdC5yYWRpdXM9dC55LGRlbGV0ZSB0LnksdC5pbm5lclJhZGl1cz10LnkwLGRlbGV0ZSB0LnkwLHQub3V0ZXJSYWRpdXM9dC55MSxkZWxldGUgdC55MSx0LmxpbmVTdGFydEFuZ2xlPWZ1bmN0aW9uKCl7cmV0dXJuIHhjKHIoKSl9LGRlbGV0ZSB0LmxpbmVYMCx0LmxpbmVFbmRBbmdsZT1mdW5jdGlvbigpe3JldHVybiB4YyhuKCkpfSxkZWxldGUgdC5saW5lWDEsdC5saW5lSW5uZXJSYWRpdXM9ZnVuY3Rpb24oKXtyZXR1cm4geGMoaSgpKX0sZGVsZXRlIHQubGluZVkwLHQubGluZU91dGVyUmFkaXVzPWZ1bmN0aW9uKCl7cmV0dXJuIHhjKGEoKSl9LGRlbGV0ZSB0LmxpbmVZMSx0LmN1cnZlPWZ1bmN0aW9uKHMpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoP2UoSXAocykpOmUoKS5fY3VydmV9LHR9ZnVuY3Rpb24ga2ModCxlKXtyZXR1cm5bKGU9K2UpKk1hdGguY29zKHQtPU1hdGguUEkvMiksZSpNYXRoLnNpbih0KV19Y2xhc3MgcTd7Y29uc3RydWN0b3IoZSxyKXt0aGlzLl9jb250ZXh0PWUsdGhpcy5feD1yfWFyZWFTdGFydCgpe3RoaXMuX2xpbmU9MH1hcmVhRW5kKCl7dGhpcy5fbGluZT1OYU59bGluZVN0YXJ0KCl7dGhpcy5fcG9pbnQ9MH1saW5lRW5kKCl7KHRoaXMuX2xpbmV8fHRoaXMuX2xpbmUhPT0wJiZ0aGlzLl9wb2ludD09PTEpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfXBvaW50KGUscil7c3dpdGNoKGU9K2Uscj0rcix0aGlzLl9wb2ludCl7Y2FzZSAwOnt0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8oZSxyKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyhlLHIpO2JyZWFrfWNhc2UgMTp0aGlzLl9wb2ludD0yO2RlZmF1bHQ6e3RoaXMuX3g/dGhpcy5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKHRoaXMuX3gwPSh0aGlzLl94MCtlKS8yLHRoaXMuX3kwLHRoaXMuX3gwLHIsZSxyKTp0aGlzLl9jb250ZXh0LmJlemllckN1cnZlVG8odGhpcy5feDAsdGhpcy5feTA9KHRoaXMuX3kwK3IpLzIsZSx0aGlzLl95MCxlLHIpO2JyZWFrfX10aGlzLl94MD1lLHRoaXMuX3kwPXJ9fWNsYXNzIHFXe2NvbnN0cnVjdG9yKGUpe3RoaXMuX2NvbnRleHQ9ZX1saW5lU3RhcnQoKXt0aGlzLl9wb2ludD0wfWxpbmVFbmQoKXt9cG9pbnQoZSxyKXtpZihlPStlLHI9K3IsdGhpcy5fcG9pbnQrKz09PTApdGhpcy5feDA9ZSx0aGlzLl95MD1yO2Vsc2V7Y29uc3Qgbj1rYyh0aGlzLl94MCx0aGlzLl95MCksaT1rYyh0aGlzLl94MCx0aGlzLl95MD0odGhpcy5feTArcikvMiksYT1rYyhlLHRoaXMuX3kwKSxzPWtjKGUscik7dGhpcy5fY29udGV4dC5tb3ZlVG8oLi4ubiksdGhpcy5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKC4uLmksLi4uYSwuLi5zKX19fWZ1bmN0aW9uIFY3KHQpe3JldHVybiBuZXcgcTcodCwhMCl9ZnVuY3Rpb24gejcodCl7cmV0dXJuIG5ldyBxNyh0LCExKX1mdW5jdGlvbiBWVyh0KXtyZXR1cm4gbmV3IHFXKHQpfWZ1bmN0aW9uIHpXKHQpe3JldHVybiB0LnNvdXJjZX1mdW5jdGlvbiBZVyh0KXtyZXR1cm4gdC50YXJnZXR9ZnVuY3Rpb24gYmYodCl7bGV0IGU9elcscj1ZVyxuPUxwLGk9UnAsYT1udWxsLHM9bnVsbDtmdW5jdGlvbiBvKCl7bGV0IGw7Y29uc3QgdT1PVy5jYWxsKGFyZ3VtZW50cyksaD1lLmFwcGx5KHRoaXMsdSksZD1yLmFwcGx5KHRoaXMsdSk7aWYoYT09bnVsbCYmKHM9dChsPVJhKCkpKSxzLmxpbmVTdGFydCgpLHVbMF09aCxzLnBvaW50KCtuLmFwcGx5KHRoaXMsdSksK2kuYXBwbHkodGhpcyx1KSksdVswXT1kLHMucG9pbnQoK24uYXBwbHkodGhpcyx1KSwraS5hcHBseSh0aGlzLHUpKSxzLmxpbmVFbmQoKSxsKXJldHVybiBzPW51bGwsbCsiInx8bnVsbH1yZXR1cm4gby5zb3VyY2U9ZnVuY3Rpb24obCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9bCxvKTplfSxvLnRhcmdldD1mdW5jdGlvbihsKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1sLG8pOnJ9LG8ueD1mdW5jdGlvbihsKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obj10eXBlb2YgbD09ImZ1bmN0aW9uIj9sOnhlKCtsKSxvKTpufSxvLnk9ZnVuY3Rpb24obCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGk9dHlwZW9mIGw9PSJmdW5jdGlvbiI/bDp4ZSgrbCksbyk6aX0sby5jb250ZXh0PWZ1bmN0aW9uKGwpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPT1udWxsP2E9cz1udWxsOnM9dChhPWwpLG8pOmF9LG99ZnVuY3Rpb24gVVcoKXtyZXR1cm4gYmYoVjcpfWZ1bmN0aW9uIFdXKCl7cmV0dXJuIGJmKHo3KX1mdW5jdGlvbiBIVygpe2NvbnN0IHQ9YmYoVlcpO3JldHVybiB0LmFuZ2xlPXQueCxkZWxldGUgdC54LHQucmFkaXVzPXQueSxkZWxldGUgdC55LHR9Y29uc3QgR1c9SGUoMyksWTc9e2RyYXcodCxlKXtjb25zdCByPUhlKGUrUG8oZS8yOCwuNzUpKSouNTk0MzYsbj1yLzIsaT1uKkdXO3QubW92ZVRvKDAsciksdC5saW5lVG8oMCwtciksdC5tb3ZlVG8oLWksLW4pLHQubGluZVRvKGksbiksdC5tb3ZlVG8oLWksbiksdC5saW5lVG8oaSwtbil9fSxfZj17ZHJhdyh0LGUpe2NvbnN0IHI9SGUoZS96YSk7dC5tb3ZlVG8ociwwKSx0LmFyYygwLDAsciwwLFlhKX19LFU3PXtkcmF3KHQsZSl7Y29uc3Qgcj1IZShlLzUpLzI7dC5tb3ZlVG8oLTMqciwtciksdC5saW5lVG8oLXIsLXIpLHQubGluZVRvKC1yLC0zKnIpLHQubGluZVRvKHIsLTMqciksdC5saW5lVG8ociwtciksdC5saW5lVG8oMypyLC1yKSx0LmxpbmVUbygzKnIsciksdC5saW5lVG8ocixyKSx0LmxpbmVUbyhyLDMqciksdC5saW5lVG8oLXIsMypyKSx0LmxpbmVUbygtcixyKSx0LmxpbmVUbygtMypyLHIpLHQuY2xvc2VQYXRoKCl9fSxXNz1IZSgxLzMpLGpXPVc3KjIsSDc9e2RyYXcodCxlKXtjb25zdCByPUhlKGUvalcpLG49cipXNzt0Lm1vdmVUbygwLC1yKSx0LmxpbmVUbyhuLDApLHQubGluZVRvKDAsciksdC5saW5lVG8oLW4sMCksdC5jbG9zZVBhdGgoKX19LEc3PXtkcmF3KHQsZSl7Y29uc3Qgcj1IZShlKSouNjI2MjU7dC5tb3ZlVG8oMCwtciksdC5saW5lVG8ociwwKSx0LmxpbmVUbygwLHIpLHQubGluZVRvKC1yLDApLHQuY2xvc2VQYXRoKCl9fSxqNz17ZHJhdyh0LGUpe2NvbnN0IHI9SGUoZS1QbyhlLzcsMikpKi44NzU1OTt0Lm1vdmVUbygtciwwKSx0LmxpbmVUbyhyLDApLHQubW92ZVRvKDAsciksdC5saW5lVG8oMCwtcil9fSwkNz17ZHJhdyh0LGUpe2NvbnN0IHI9SGUoZSksbj0tci8yO3QucmVjdChuLG4scixyKX19LFg3PXtkcmF3KHQsZSl7Y29uc3Qgcj1IZShlKSouNDQzMTt0Lm1vdmVUbyhyLHIpLHQubGluZVRvKHIsLXIpLHQubGluZVRvKC1yLC1yKSx0LmxpbmVUbygtcixyKSx0LmNsb3NlUGF0aCgpfX0sJFc9Ljg5MDgxMzA5MTUyOTI4NTIsSzc9Z24oemEvMTApL2duKDcqemEvMTApLFhXPWduKFlhLzEwKSpLNyxLVz0tbmEoWWEvMTApKks3LFo3PXtkcmF3KHQsZSl7Y29uc3Qgcj1IZShlKiRXKSxuPVhXKnIsaT1LVypyO3QubW92ZVRvKDAsLXIpLHQubGluZVRvKG4saSk7Zm9yKGxldCBhPTE7YTw1OysrYSl7Y29uc3Qgcz1ZYSphLzUsbz1uYShzKSxsPWduKHMpO3QubGluZVRvKGwqciwtbypyKSx0LmxpbmVUbyhvKm4tbCppLGwqbitvKmkpfXQuY2xvc2VQYXRoKCl9fSxOcD1IZSgzKSxRNz17ZHJhdyh0LGUpe2NvbnN0IHI9LUhlKGUvKE5wKjMpKTt0Lm1vdmVUbygwLHIqMiksdC5saW5lVG8oLU5wKnIsLXIpLHQubGluZVRvKE5wKnIsLXIpLHQuY2xvc2VQYXRoKCl9fSxaVz1IZSgzKSxKNz17ZHJhdyh0LGUpe2NvbnN0IHI9SGUoZSkqLjY4MjQsbj1yLzIsaT1yKlpXLzI7dC5tb3ZlVG8oMCwtciksdC5saW5lVG8oaSxuKSx0LmxpbmVUbygtaSxuKSx0LmNsb3NlUGF0aCgpfX0sUG49LS41LHFuPUhlKDMpLzIsQnA9MS9IZSgxMiksUVc9KEJwLzIrMSkqMyx0az17ZHJhdyh0LGUpe2NvbnN0IHI9SGUoZS9RVyksbj1yLzIsaT1yKkJwLGE9bixzPXIqQnArcixvPS1hLGw9czt0Lm1vdmVUbyhuLGkpLHQubGluZVRvKGEscyksdC5saW5lVG8obyxsKSx0LmxpbmVUbyhQbipuLXFuKmkscW4qbitQbippKSx0LmxpbmVUbyhQbiphLXFuKnMscW4qYStQbipzKSx0LmxpbmVUbyhQbipvLXFuKmwscW4qbytQbipsKSx0LmxpbmVUbyhQbipuK3FuKmksUG4qaS1xbipuKSx0LmxpbmVUbyhQbiphK3FuKnMsUG4qcy1xbiphKSx0LmxpbmVUbyhQbipvK3FuKmwsUG4qbC1xbipvKSx0LmNsb3NlUGF0aCgpfX0sZWs9e2RyYXcodCxlKXtjb25zdCByPUhlKGUtUG8oZS82LDEuNykpKi42MTg5O3QubW92ZVRvKC1yLC1yKSx0LmxpbmVUbyhyLHIpLHQubW92ZVRvKC1yLHIpLHQubGluZVRvKHIsLXIpfX0scms9W19mLFU3LEg3LCQ3LFo3LFE3LHRrXSxKVz1bX2YsajcsZWssSjcsWTcsWDcsRzddO2Z1bmN0aW9uIHRIKHQsZSl7bGV0IHI9bnVsbDt0PXR5cGVvZiB0PT0iZnVuY3Rpb24iP3Q6eGUodHx8X2YpLGU9dHlwZW9mIGU9PSJmdW5jdGlvbiI/ZTp4ZShlPT09dm9pZCAwPzY0OitlKTtmdW5jdGlvbiBuKCl7bGV0IGk7aWYocnx8KHI9aT1SYSgpKSx0LmFwcGx5KHRoaXMsYXJndW1lbnRzKS5kcmF3KHIsK2UuYXBwbHkodGhpcyxhcmd1bWVudHMpKSxpKXJldHVybiByPW51bGwsaSsiInx8bnVsbH1yZXR1cm4gbi50eXBlPWZ1bmN0aW9uKGkpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PXR5cGVvZiBpPT0iZnVuY3Rpb24iP2k6eGUoaSksbik6dH0sbi5zaXplPWZ1bmN0aW9uKGkpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPXR5cGVvZiBpPT0iZnVuY3Rpb24iP2k6eGUoK2kpLG4pOmV9LG4uY29udGV4dD1mdW5jdGlvbihpKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1pPT1udWxsP251bGw6aSxuKTpyfSxufWZ1bmN0aW9uIFdhKCl7fWZ1bmN0aW9uIHZmKHQsZSxyKXt0Ll9jb250ZXh0LmJlemllckN1cnZlVG8oKDIqdC5feDArdC5feDEpLzMsKDIqdC5feTArdC5feTEpLzMsKHQuX3gwKzIqdC5feDEpLzMsKHQuX3kwKzIqdC5feTEpLzMsKHQuX3gwKzQqdC5feDErZSkvNiwodC5feTArNCp0Ll95MStyKS82KX1mdW5jdGlvbiB4Zih0KXt0aGlzLl9jb250ZXh0PXR9eGYucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feTA9dGhpcy5feTE9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMzp2Zih0aGlzLHRoaXMuX3gxLHRoaXMuX3kxKTtjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDEsdGhpcy5feTEpO2JyZWFrfSh0aGlzLl9saW5lfHx0aGlzLl9saW5lIT09MCYmdGhpcy5fcG9pbnQ9PT0xKSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtzd2l0Y2godD0rdCxlPStlLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsZSk6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxlKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Myx0aGlzLl9jb250ZXh0LmxpbmVUbygoNSp0aGlzLl94MCt0aGlzLl94MSkvNiwoNSp0aGlzLl95MCt0aGlzLl95MSkvNik7ZGVmYXVsdDp2Zih0aGlzLHQsZSk7YnJlYWt9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT1lfX07ZnVuY3Rpb24gT3ModCl7cmV0dXJuIG5ldyB4Zih0KX1mdW5jdGlvbiBuayh0KXt0aGlzLl9jb250ZXh0PXR9bmsucHJvdG90eXBlPXthcmVhU3RhcnQ6V2EsYXJlYUVuZDpXYSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl94Mz10aGlzLl94ND10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj10aGlzLl95Mz10aGlzLl95ND1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpe3N3aXRjaCh0aGlzLl9wb2ludCl7Y2FzZSAxOnt0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94Mix0aGlzLl95MiksdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTticmVha31jYXNlIDI6e3RoaXMuX2NvbnRleHQubW92ZVRvKCh0aGlzLl94MisyKnRoaXMuX3gzKS8zLCh0aGlzLl95MisyKnRoaXMuX3kzKS8zKSx0aGlzLl9jb250ZXh0LmxpbmVUbygodGhpcy5feDMrMip0aGlzLl94MikvMywodGhpcy5feTMrMip0aGlzLl95MikvMyksdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTticmVha31jYXNlIDM6e3RoaXMucG9pbnQodGhpcy5feDIsdGhpcy5feTIpLHRoaXMucG9pbnQodGhpcy5feDMsdGhpcy5feTMpLHRoaXMucG9pbnQodGhpcy5feDQsdGhpcy5feTQpO2JyZWFrfX19LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5feDI9dCx0aGlzLl95Mj1lO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yLHRoaXMuX3gzPXQsdGhpcy5feTM9ZTticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Myx0aGlzLl94ND10LHRoaXMuX3k0PWUsdGhpcy5fY29udGV4dC5tb3ZlVG8oKHRoaXMuX3gwKzQqdGhpcy5feDErdCkvNiwodGhpcy5feTArNCp0aGlzLl95MStlKS82KTticmVhaztkZWZhdWx0OnZmKHRoaXMsdCxlKTticmVha310aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPWV9fTtmdW5jdGlvbiBpayh0KXtyZXR1cm4gbmV3IG5rKHQpfWZ1bmN0aW9uIGFrKHQpe3RoaXMuX2NvbnRleHQ9dH1hay5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl95MD10aGlzLl95MT1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpeyh0aGlzLl9saW5lfHx0aGlzLl9saW5lIT09MCYmdGhpcy5fcG9pbnQ9PT0zKSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtzd2l0Y2godD0rdCxlPStlLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Mzt2YXIgcj0odGhpcy5feDArNCp0aGlzLl94MSt0KS82LG49KHRoaXMuX3kwKzQqdGhpcy5feTErZSkvNjt0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHIsbik6dGhpcy5fY29udGV4dC5tb3ZlVG8ocixuKTticmVhaztjYXNlIDM6dGhpcy5fcG9pbnQ9NDtkZWZhdWx0OnZmKHRoaXMsdCxlKTticmVha310aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPWV9fTtmdW5jdGlvbiBzayh0KXtyZXR1cm4gbmV3IGFrKHQpfWZ1bmN0aW9uIG9rKHQsZSl7dGhpcy5fYmFzaXM9bmV3IHhmKHQpLHRoaXMuX2JldGE9ZX1vay5wcm90b3R5cGU9e2xpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3g9W10sdGhpcy5feT1bXSx0aGlzLl9iYXNpcy5saW5lU3RhcnQoKX0sbGluZUVuZDpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX3gsZT10aGlzLl95LHI9dC5sZW5ndGgtMTtpZihyPjApZm9yKHZhciBuPXRbMF0saT1lWzBdLGE9dFtyXS1uLHM9ZVtyXS1pLG89LTEsbDsrK288PXI7KWw9by9yLHRoaXMuX2Jhc2lzLnBvaW50KHRoaXMuX2JldGEqdFtvXSsoMS10aGlzLl9iZXRhKSoobitsKmEpLHRoaXMuX2JldGEqZVtvXSsoMS10aGlzLl9iZXRhKSooaStsKnMpKTt0aGlzLl94PXRoaXMuX3k9bnVsbCx0aGlzLl9iYXNpcy5saW5lRW5kKCl9LHBvaW50OmZ1bmN0aW9uKHQsZSl7dGhpcy5feC5wdXNoKCt0KSx0aGlzLl95LnB1c2goK2UpfX07Y29uc3QgZUg9ZnVuY3Rpb24gdChlKXtmdW5jdGlvbiByKG4pe3JldHVybiBlPT09MT9uZXcgeGYobik6bmV3IG9rKG4sZSl9cmV0dXJuIHIuYmV0YT1mdW5jdGlvbihuKXtyZXR1cm4gdCgrbil9LHJ9KC44NSk7ZnVuY3Rpb24ga2YodCxlLHIpe3QuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyh0Ll94MSt0Ll9rKih0Ll94Mi10Ll94MCksdC5feTErdC5fayoodC5feTItdC5feTApLHQuX3gyK3QuX2sqKHQuX3gxLWUpLHQuX3kyK3QuX2sqKHQuX3kxLXIpLHQuX3gyLHQuX3kyKX1mdW5jdGlvbiBEcCh0LGUpe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl9rPSgxLWUpLzZ9RHAucHJvdG90eXBlPXthcmVhU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPTB9LGFyZWFFbmQ6ZnVuY3Rpb24oKXt0aGlzLl9saW5lPU5hTn0sbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feDI9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5feTI9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMjp0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94Mix0aGlzLl95Mik7YnJlYWs7Y2FzZSAzOmtmKHRoaXMsdGhpcy5feDEsdGhpcy5feTEpO2JyZWFrfSh0aGlzLl9saW5lfHx0aGlzLl9saW5lIT09MCYmdGhpcy5fcG9pbnQ9PT0xKSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtzd2l0Y2godD0rdCxlPStlLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsZSk6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxlKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9Mix0aGlzLl94MT10LHRoaXMuX3kxPWU7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTM7ZGVmYXVsdDprZih0aGlzLHQsZSk7YnJlYWt9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhpcy5feDI9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0aGlzLl95Mj1lfX07Y29uc3Qgckg9ZnVuY3Rpb24gdChlKXtmdW5jdGlvbiByKG4pe3JldHVybiBuZXcgRHAobixlKX1yZXR1cm4gci50ZW5zaW9uPWZ1bmN0aW9uKG4pe3JldHVybiB0KCtuKX0scn0oMCk7ZnVuY3Rpb24gT3AodCxlKXt0aGlzLl9jb250ZXh0PXQsdGhpcy5faz0oMS1lKS82fU9wLnByb3RvdHlwZT17YXJlYVN0YXJ0OldhLGFyZWFFbmQ6V2EsbGluZVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5feDA9dGhpcy5feDE9dGhpcy5feDI9dGhpcy5feDM9dGhpcy5feDQ9dGhpcy5feDU9dGhpcy5feTA9dGhpcy5feTE9dGhpcy5feTI9dGhpcy5feTM9dGhpcy5feTQ9dGhpcy5feTU9TmFOLHRoaXMuX3BvaW50PTB9LGxpbmVFbmQ6ZnVuY3Rpb24oKXtzd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMTp7dGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDMsdGhpcy5feTMpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7YnJlYWt9Y2FzZSAyOnt0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94Myx0aGlzLl95MyksdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKTticmVha31jYXNlIDM6e3RoaXMucG9pbnQodGhpcy5feDMsdGhpcy5feTMpLHRoaXMucG9pbnQodGhpcy5feDQsdGhpcy5feTQpLHRoaXMucG9pbnQodGhpcy5feDUsdGhpcy5feTUpO2JyZWFrfX19LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5feDM9dCx0aGlzLl95Mz1lO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yLHRoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3g0PXQsdGhpcy5feTQ9ZSk7YnJlYWs7Y2FzZSAyOnRoaXMuX3BvaW50PTMsdGhpcy5feDU9dCx0aGlzLl95NT1lO2JyZWFrO2RlZmF1bHQ6a2YodGhpcyx0LGUpO2JyZWFrfXRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9ZX19O2NvbnN0IG5IPWZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gcihuKXtyZXR1cm4gbmV3IE9wKG4sZSl9cmV0dXJuIHIudGVuc2lvbj1mdW5jdGlvbihuKXtyZXR1cm4gdCgrbil9LHJ9KDApO2Z1bmN0aW9uIEZwKHQsZSl7dGhpcy5fY29udGV4dD10LHRoaXMuX2s9KDEtZSkvNn1GcC5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94MD10aGlzLl94MT10aGlzLl94Mj10aGlzLl95MD10aGlzLl95MT10aGlzLl95Mj1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpeyh0aGlzLl9saW5lfHx0aGlzLl9saW5lIT09MCYmdGhpcy5fcG9pbnQ9PT0zKSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZX0scG9pbnQ6ZnVuY3Rpb24odCxlKXtzd2l0Y2godD0rdCxlPStlLHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Myx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gyLHRoaXMuX3kyKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94Mix0aGlzLl95Mik7YnJlYWs7Y2FzZSAzOnRoaXMuX3BvaW50PTQ7ZGVmYXVsdDprZih0aGlzLHQsZSk7YnJlYWt9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dGhpcy5feDIsdGhpcy5feDI9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT10aGlzLl95Mix0aGlzLl95Mj1lfX07Y29uc3QgaUg9ZnVuY3Rpb24gdChlKXtmdW5jdGlvbiByKG4pe3JldHVybiBuZXcgRnAobixlKX1yZXR1cm4gci50ZW5zaW9uPWZ1bmN0aW9uKG4pe3JldHVybiB0KCtuKX0scn0oMCk7ZnVuY3Rpb24gUHAodCxlLHIpe3ZhciBuPXQuX3gxLGk9dC5feTEsYT10Ll94MixzPXQuX3kyO2lmKHQuX2wwMV9hPlZyKXt2YXIgbz0yKnQuX2wwMV8yYSszKnQuX2wwMV9hKnQuX2wxMl9hK3QuX2wxMl8yYSxsPTMqdC5fbDAxX2EqKHQuX2wwMV9hK3QuX2wxMl9hKTtuPShuKm8tdC5feDAqdC5fbDEyXzJhK3QuX3gyKnQuX2wwMV8yYSkvbCxpPShpKm8tdC5feTAqdC5fbDEyXzJhK3QuX3kyKnQuX2wwMV8yYSkvbH1pZih0Ll9sMjNfYT5Wcil7dmFyIHU9Mip0Ll9sMjNfMmErMyp0Ll9sMjNfYSp0Ll9sMTJfYSt0Ll9sMTJfMmEsaD0zKnQuX2wyM19hKih0Ll9sMjNfYSt0Ll9sMTJfYSk7YT0oYSp1K3QuX3gxKnQuX2wyM18yYS1lKnQuX2wxMl8yYSkvaCxzPShzKnUrdC5feTEqdC5fbDIzXzJhLXIqdC5fbDEyXzJhKS9ofXQuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyhuLGksYSxzLHQuX3gyLHQuX3kyKX1mdW5jdGlvbiBsayh0LGUpe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl9hbHBoYT1lfWxrLnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPU5hTix0aGlzLl9sMDFfYT10aGlzLl9sMTJfYT10aGlzLl9sMjNfYT10aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhPXRoaXMuX2wyM18yYT10aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDIsdGhpcy5feTIpO2JyZWFrO2Nhc2UgMzp0aGlzLnBvaW50KHRoaXMuX3gyLHRoaXMuX3kyKTticmVha30odGhpcy5fbGluZXx8dGhpcy5fbGluZSE9PTAmJnRoaXMuX3BvaW50PT09MSkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsZSl7aWYodD0rdCxlPStlLHRoaXMuX3BvaW50KXt2YXIgcj10aGlzLl94Mi10LG49dGhpcy5feTItZTt0aGlzLl9sMjNfYT1NYXRoLnNxcnQodGhpcy5fbDIzXzJhPU1hdGgucG93KHIqcituKm4sdGhpcy5fYWxwaGEpKX1zd2l0Y2godGhpcy5fcG9pbnQpe2Nhc2UgMDp0aGlzLl9wb2ludD0xLHRoaXMuX2xpbmU/dGhpcy5fY29udGV4dC5saW5lVG8odCxlKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0LGUpO2JyZWFrO2Nhc2UgMTp0aGlzLl9wb2ludD0yO2JyZWFrO2Nhc2UgMjp0aGlzLl9wb2ludD0zO2RlZmF1bHQ6UHAodGhpcyx0LGUpO2JyZWFrfXRoaXMuX2wwMV9hPXRoaXMuX2wxMl9hLHRoaXMuX2wxMl9hPXRoaXMuX2wyM19hLHRoaXMuX2wwMV8yYT10aGlzLl9sMTJfMmEsdGhpcy5fbDEyXzJhPXRoaXMuX2wyM18yYSx0aGlzLl94MD10aGlzLl94MSx0aGlzLl94MT10aGlzLl94Mix0aGlzLl94Mj10LHRoaXMuX3kwPXRoaXMuX3kxLHRoaXMuX3kxPXRoaXMuX3kyLHRoaXMuX3kyPWV9fTtjb25zdCBhSD1mdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIHIobil7cmV0dXJuIGU/bmV3IGxrKG4sZSk6bmV3IERwKG4sMCl9cmV0dXJuIHIuYWxwaGE9ZnVuY3Rpb24obil7cmV0dXJuIHQoK24pfSxyfSguNSk7ZnVuY3Rpb24gY2sodCxlKXt0aGlzLl9jb250ZXh0PXQsdGhpcy5fYWxwaGE9ZX1jay5wcm90b3R5cGU9e2FyZWFTdGFydDpXYSxhcmVhRW5kOldhLGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3gzPXRoaXMuX3g0PXRoaXMuX3g1PXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPXRoaXMuX3kzPXRoaXMuX3k0PXRoaXMuX3k1PU5hTix0aGlzLl9sMDFfYT10aGlzLl9sMTJfYT10aGlzLl9sMjNfYT10aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhPXRoaXMuX2wyM18yYT10aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDE6e3RoaXMuX2NvbnRleHQubW92ZVRvKHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpO2JyZWFrfWNhc2UgMjp7dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDMsdGhpcy5feTMpLHRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCk7YnJlYWt9Y2FzZSAzOnt0aGlzLnBvaW50KHRoaXMuX3gzLHRoaXMuX3kzKSx0aGlzLnBvaW50KHRoaXMuX3g0LHRoaXMuX3k0KSx0aGlzLnBvaW50KHRoaXMuX3g1LHRoaXMuX3k1KTticmVha319fSxwb2ludDpmdW5jdGlvbih0LGUpe2lmKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7dmFyIHI9dGhpcy5feDItdCxuPXRoaXMuX3kyLWU7dGhpcy5fbDIzX2E9TWF0aC5zcXJ0KHRoaXMuX2wyM18yYT1NYXRoLnBvdyhyKnIrbipuLHRoaXMuX2FscGhhKSl9c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl94Mz10LHRoaXMuX3kzPWU7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTIsdGhpcy5fY29udGV4dC5tb3ZlVG8odGhpcy5feDQ9dCx0aGlzLl95ND1lKTticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Myx0aGlzLl94NT10LHRoaXMuX3k1PWU7YnJlYWs7ZGVmYXVsdDpQcCh0aGlzLHQsZSk7YnJlYWt9dGhpcy5fbDAxX2E9dGhpcy5fbDEyX2EsdGhpcy5fbDEyX2E9dGhpcy5fbDIzX2EsdGhpcy5fbDAxXzJhPXRoaXMuX2wxMl8yYSx0aGlzLl9sMTJfMmE9dGhpcy5fbDIzXzJhLHRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9ZX19O2NvbnN0IHNIPWZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gcihuKXtyZXR1cm4gZT9uZXcgY2sobixlKTpuZXcgT3AobiwwKX1yZXR1cm4gci5hbHBoYT1mdW5jdGlvbihuKXtyZXR1cm4gdCgrbil9LHJ9KC41KTtmdW5jdGlvbiB1ayh0LGUpe3RoaXMuX2NvbnRleHQ9dCx0aGlzLl9hbHBoYT1lfXVrLnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3gyPXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3kyPU5hTix0aGlzLl9sMDFfYT10aGlzLl9sMTJfYT10aGlzLl9sMjNfYT10aGlzLl9sMDFfMmE9dGhpcy5fbDEyXzJhPXRoaXMuX2wyM18yYT10aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7KHRoaXMuX2xpbmV8fHRoaXMuX2xpbmUhPT0wJiZ0aGlzLl9wb2ludD09PTMpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU9MS10aGlzLl9saW5lfSxwb2ludDpmdW5jdGlvbih0LGUpe2lmKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7dmFyIHI9dGhpcy5feDItdCxuPXRoaXMuX3kyLWU7dGhpcy5fbDIzX2E9TWF0aC5zcXJ0KHRoaXMuX2wyM18yYT1NYXRoLnBvdyhyKnIrbipuLHRoaXMuX2FscGhhKSl9c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9Myx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gyLHRoaXMuX3kyKTp0aGlzLl9jb250ZXh0Lm1vdmVUbyh0aGlzLl94Mix0aGlzLl95Mik7YnJlYWs7Y2FzZSAzOnRoaXMuX3BvaW50PTQ7ZGVmYXVsdDpQcCh0aGlzLHQsZSk7YnJlYWt9dGhpcy5fbDAxX2E9dGhpcy5fbDEyX2EsdGhpcy5fbDEyX2E9dGhpcy5fbDIzX2EsdGhpcy5fbDAxXzJhPXRoaXMuX2wxMl8yYSx0aGlzLl9sMTJfMmE9dGhpcy5fbDIzXzJhLHRoaXMuX3gwPXRoaXMuX3gxLHRoaXMuX3gxPXRoaXMuX3gyLHRoaXMuX3gyPXQsdGhpcy5feTA9dGhpcy5feTEsdGhpcy5feTE9dGhpcy5feTIsdGhpcy5feTI9ZX19O2NvbnN0IG9IPWZ1bmN0aW9uIHQoZSl7ZnVuY3Rpb24gcihuKXtyZXR1cm4gZT9uZXcgdWsobixlKTpuZXcgRnAobiwwKX1yZXR1cm4gci5hbHBoYT1mdW5jdGlvbihuKXtyZXR1cm4gdCgrbil9LHJ9KC41KTtmdW5jdGlvbiBoayh0KXt0aGlzLl9jb250ZXh0PXR9aGsucHJvdG90eXBlPXthcmVhU3RhcnQ6V2EsYXJlYUVuZDpXYSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7dGhpcy5fcG9pbnQmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCl9LHBvaW50OmZ1bmN0aW9uKHQsZSl7dD0rdCxlPStlLHRoaXMuX3BvaW50P3RoaXMuX2NvbnRleHQubGluZVRvKHQsZSk6KHRoaXMuX3BvaW50PTEsdGhpcy5fY29udGV4dC5tb3ZlVG8odCxlKSl9fTtmdW5jdGlvbiBmayh0KXtyZXR1cm4gbmV3IGhrKHQpfWZ1bmN0aW9uIGRrKHQpe3JldHVybiB0PDA/LTE6MX1mdW5jdGlvbiBwayh0LGUscil7dmFyIG49dC5feDEtdC5feDAsaT1lLXQuX3gxLGE9KHQuX3kxLXQuX3kwKS8obnx8aTwwJiYtMCkscz0oci10Ll95MSkvKGl8fG48MCYmLTApLG89KGEqaStzKm4pLyhuK2kpO3JldHVybihkayhhKStkayhzKSkqTWF0aC5taW4oTWF0aC5hYnMoYSksTWF0aC5hYnMocyksLjUqTWF0aC5hYnMobykpfHwwfWZ1bmN0aW9uIGdrKHQsZSl7dmFyIHI9dC5feDEtdC5feDA7cmV0dXJuIHI/KDMqKHQuX3kxLXQuX3kwKS9yLWUpLzI6ZX1mdW5jdGlvbiBxcCh0LGUscil7dmFyIG49dC5feDAsaT10Ll95MCxhPXQuX3gxLHM9dC5feTEsbz0oYS1uKS8zO3QuX2NvbnRleHQuYmV6aWVyQ3VydmVUbyhuK28saStvKmUsYS1vLHMtbypyLGEscyl9ZnVuY3Rpb24gd2YodCl7dGhpcy5fY29udGV4dD10fXdmLnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3gwPXRoaXMuX3gxPXRoaXMuX3kwPXRoaXMuX3kxPXRoaXMuX3QwPU5hTix0aGlzLl9wb2ludD0wfSxsaW5lRW5kOmZ1bmN0aW9uKCl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDI6dGhpcy5fY29udGV4dC5saW5lVG8odGhpcy5feDEsdGhpcy5feTEpO2JyZWFrO2Nhc2UgMzpxcCh0aGlzLHRoaXMuX3QwLGdrKHRoaXMsdGhpcy5fdDApKTticmVha30odGhpcy5fbGluZXx8dGhpcy5fbGluZSE9PTAmJnRoaXMuX3BvaW50PT09MSkmJnRoaXMuX2NvbnRleHQuY2xvc2VQYXRoKCksdGhpcy5fbGluZT0xLXRoaXMuX2xpbmV9LHBvaW50OmZ1bmN0aW9uKHQsZSl7dmFyIHI9TmFOO2lmKHQ9K3QsZT0rZSwhKHQ9PT10aGlzLl94MSYmZT09PXRoaXMuX3kxKSl7c3dpdGNoKHRoaXMuX3BvaW50KXtjYXNlIDA6dGhpcy5fcG9pbnQ9MSx0aGlzLl9saW5lP3RoaXMuX2NvbnRleHQubGluZVRvKHQsZSk6dGhpcy5fY29udGV4dC5tb3ZlVG8odCxlKTticmVhaztjYXNlIDE6dGhpcy5fcG9pbnQ9MjticmVhaztjYXNlIDI6dGhpcy5fcG9pbnQ9MyxxcCh0aGlzLGdrKHRoaXMscj1wayh0aGlzLHQsZSkpLHIpO2JyZWFrO2RlZmF1bHQ6cXAodGhpcyx0aGlzLl90MCxyPXBrKHRoaXMsdCxlKSk7YnJlYWt9dGhpcy5feDA9dGhpcy5feDEsdGhpcy5feDE9dCx0aGlzLl95MD10aGlzLl95MSx0aGlzLl95MT1lLHRoaXMuX3QwPXJ9fX07ZnVuY3Rpb24geWsodCl7dGhpcy5fY29udGV4dD1uZXcgbWsodCl9KHlrLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHdmLnByb3RvdHlwZSkpLnBvaW50PWZ1bmN0aW9uKHQsZSl7d2YucHJvdG90eXBlLnBvaW50LmNhbGwodGhpcyxlLHQpfTtmdW5jdGlvbiBtayh0KXt0aGlzLl9jb250ZXh0PXR9bWsucHJvdG90eXBlPXttb3ZlVG86ZnVuY3Rpb24odCxlKXt0aGlzLl9jb250ZXh0Lm1vdmVUbyhlLHQpfSxjbG9zZVBhdGg6ZnVuY3Rpb24oKXt0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpfSxsaW5lVG86ZnVuY3Rpb24odCxlKXt0aGlzLl9jb250ZXh0LmxpbmVUbyhlLHQpfSxiZXppZXJDdXJ2ZVRvOmZ1bmN0aW9uKHQsZSxyLG4saSxhKXt0aGlzLl9jb250ZXh0LmJlemllckN1cnZlVG8oZSx0LG4scixhLGkpfX07ZnVuY3Rpb24gYmsodCl7cmV0dXJuIG5ldyB3Zih0KX1mdW5jdGlvbiBfayh0KXtyZXR1cm4gbmV3IHlrKHQpfWZ1bmN0aW9uIHZrKHQpe3RoaXMuX2NvbnRleHQ9dH12ay5wcm90b3R5cGU9e2FyZWFTdGFydDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9MH0sYXJlYUVuZDpmdW5jdGlvbigpe3RoaXMuX2xpbmU9TmFOfSxsaW5lU3RhcnQ6ZnVuY3Rpb24oKXt0aGlzLl94PVtdLHRoaXMuX3k9W119LGxpbmVFbmQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLl94LGU9dGhpcy5feSxyPXQubGVuZ3RoO2lmKHIpaWYodGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0WzBdLGVbMF0pOnRoaXMuX2NvbnRleHQubW92ZVRvKHRbMF0sZVswXSkscj09PTIpdGhpcy5fY29udGV4dC5saW5lVG8odFsxXSxlWzFdKTtlbHNlIGZvcih2YXIgbj14ayh0KSxpPXhrKGUpLGE9MCxzPTE7czxyOysrYSwrK3MpdGhpcy5fY29udGV4dC5iZXppZXJDdXJ2ZVRvKG5bMF1bYV0saVswXVthXSxuWzFdW2FdLGlbMV1bYV0sdFtzXSxlW3NdKTsodGhpcy5fbGluZXx8dGhpcy5fbGluZSE9PTAmJnI9PT0xKSYmdGhpcy5fY29udGV4dC5jbG9zZVBhdGgoKSx0aGlzLl9saW5lPTEtdGhpcy5fbGluZSx0aGlzLl94PXRoaXMuX3k9bnVsbH0scG9pbnQ6ZnVuY3Rpb24odCxlKXt0aGlzLl94LnB1c2goK3QpLHRoaXMuX3kucHVzaCgrZSl9fTtmdW5jdGlvbiB4ayh0KXt2YXIgZSxyPXQubGVuZ3RoLTEsbixpPW5ldyBBcnJheShyKSxhPW5ldyBBcnJheShyKSxzPW5ldyBBcnJheShyKTtmb3IoaVswXT0wLGFbMF09MixzWzBdPXRbMF0rMip0WzFdLGU9MTtlPHItMTsrK2UpaVtlXT0xLGFbZV09NCxzW2VdPTQqdFtlXSsyKnRbZSsxXTtmb3IoaVtyLTFdPTIsYVtyLTFdPTcsc1tyLTFdPTgqdFtyLTFdK3Rbcl0sZT0xO2U8cjsrK2Upbj1pW2VdL2FbZS0xXSxhW2VdLT1uLHNbZV0tPW4qc1tlLTFdO2ZvcihpW3ItMV09c1tyLTFdL2Fbci0xXSxlPXItMjtlPj0wOy0tZSlpW2VdPShzW2VdLWlbZSsxXSkvYVtlXTtmb3IoYVtyLTFdPSh0W3JdK2lbci0xXSkvMixlPTA7ZTxyLTE7KytlKWFbZV09Mip0W2UrMV0taVtlKzFdO3JldHVybltpLGFdfWZ1bmN0aW9uIGtrKHQpe3JldHVybiBuZXcgdmsodCl9ZnVuY3Rpb24gVGYodCxlKXt0aGlzLl9jb250ZXh0PXQsdGhpcy5fdD1lfVRmLnByb3RvdHlwZT17YXJlYVN0YXJ0OmZ1bmN0aW9uKCl7dGhpcy5fbGluZT0wfSxhcmVhRW5kOmZ1bmN0aW9uKCl7dGhpcy5fbGluZT1OYU59LGxpbmVTdGFydDpmdW5jdGlvbigpe3RoaXMuX3g9dGhpcy5feT1OYU4sdGhpcy5fcG9pbnQ9MH0sbGluZUVuZDpmdW5jdGlvbigpezA8dGhpcy5fdCYmdGhpcy5fdDwxJiZ0aGlzLl9wb2ludD09PTImJnRoaXMuX2NvbnRleHQubGluZVRvKHRoaXMuX3gsdGhpcy5feSksKHRoaXMuX2xpbmV8fHRoaXMuX2xpbmUhPT0wJiZ0aGlzLl9wb2ludD09PTEpJiZ0aGlzLl9jb250ZXh0LmNsb3NlUGF0aCgpLHRoaXMuX2xpbmU+PTAmJih0aGlzLl90PTEtdGhpcy5fdCx0aGlzLl9saW5lPTEtdGhpcy5fbGluZSl9LHBvaW50OmZ1bmN0aW9uKHQsZSl7c3dpdGNoKHQ9K3QsZT0rZSx0aGlzLl9wb2ludCl7Y2FzZSAwOnRoaXMuX3BvaW50PTEsdGhpcy5fbGluZT90aGlzLl9jb250ZXh0LmxpbmVUbyh0LGUpOnRoaXMuX2NvbnRleHQubW92ZVRvKHQsZSk7YnJlYWs7Y2FzZSAxOnRoaXMuX3BvaW50PTI7ZGVmYXVsdDp7aWYodGhpcy5fdDw9MCl0aGlzLl9jb250ZXh0LmxpbmVUbyh0aGlzLl94LGUpLHRoaXMuX2NvbnRleHQubGluZVRvKHQsZSk7ZWxzZXt2YXIgcj10aGlzLl94KigxLXRoaXMuX3QpK3QqdGhpcy5fdDt0aGlzLl9jb250ZXh0LmxpbmVUbyhyLHRoaXMuX3kpLHRoaXMuX2NvbnRleHQubGluZVRvKHIsZSl9YnJlYWt9fXRoaXMuX3g9dCx0aGlzLl95PWV9fTtmdW5jdGlvbiB3ayh0KXtyZXR1cm4gbmV3IFRmKHQsLjUpfWZ1bmN0aW9uIFRrKHQpe3JldHVybiBuZXcgVGYodCwwKX1mdW5jdGlvbiBFayh0KXtyZXR1cm4gbmV3IFRmKHQsMSl9ZnVuY3Rpb24gcW8odCxlKXtpZigocz10Lmxlbmd0aCk+MSlmb3IodmFyIHI9MSxuLGksYT10W2VbMF1dLHMsbz1hLmxlbmd0aDtyPHM7KytyKWZvcihpPWEsYT10W2Vbcl1dLG49MDtuPG87KytuKWFbbl1bMV0rPWFbbl1bMF09aXNOYU4oaVtuXVsxXSk/aVtuXVswXTppW25dWzFdfWZ1bmN0aW9uIFZvKHQpe2Zvcih2YXIgZT10Lmxlbmd0aCxyPW5ldyBBcnJheShlKTstLWU+PTA7KXJbZV09ZTtyZXR1cm4gcn1mdW5jdGlvbiBsSCh0LGUpe3JldHVybiB0W2VdfWZ1bmN0aW9uIGNIKHQpe2NvbnN0IGU9W107cmV0dXJuIGUua2V5PXQsZX1mdW5jdGlvbiB1SCgpe3ZhciB0PXhlKFtdKSxlPVZvLHI9cW8sbj1sSDtmdW5jdGlvbiBpKGEpe3ZhciBzPUFycmF5LmZyb20odC5hcHBseSh0aGlzLGFyZ3VtZW50cyksY0gpLG8sbD1zLmxlbmd0aCx1PS0xLGg7Zm9yKGNvbnN0IGQgb2YgYSlmb3Iobz0wLCsrdTtvPGw7KytvKShzW29dW3VdPVswLCtuKGQsc1tvXS5rZXksdSxhKV0pLmRhdGE9ZDtmb3Iobz0wLGg9bWYoZShzKSk7bzxsOysrbylzW2hbb11dLmluZGV4PW87cmV0dXJuIHIocyxoKSxzfXJldHVybiBpLmtleXM9ZnVuY3Rpb24oYSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9dHlwZW9mIGE9PSJmdW5jdGlvbiI/YTp4ZShBcnJheS5mcm9tKGEpKSxpKTp0fSxpLnZhbHVlPWZ1bmN0aW9uKGEpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXR5cGVvZiBhPT0iZnVuY3Rpb24iP2E6eGUoK2EpLGkpOm59LGkub3JkZXI9ZnVuY3Rpb24oYSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9YT09bnVsbD9Wbzp0eXBlb2YgYT09ImZ1bmN0aW9uIj9hOnhlKEFycmF5LmZyb20oYSkpLGkpOmV9LGkub2Zmc2V0PWZ1bmN0aW9uKGEpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPWE9PW51bGw/cW86YSxpKTpyfSxpfWZ1bmN0aW9uIGhIKHQsZSl7aWYoKG49dC5sZW5ndGgpPjApe2Zvcih2YXIgcixuLGk9MCxhPXRbMF0ubGVuZ3RoLHM7aTxhOysraSl7Zm9yKHM9cj0wO3I8bjsrK3Ipcys9dFtyXVtpXVsxXXx8MDtpZihzKWZvcihyPTA7cjxuOysrcil0W3JdW2ldWzFdLz1zfXFvKHQsZSl9fWZ1bmN0aW9uIGZIKHQsZSl7aWYoKGw9dC5sZW5ndGgpPjApZm9yKHZhciByLG49MCxpLGEscyxvLGwsdT10W2VbMF1dLmxlbmd0aDtuPHU7KytuKWZvcihzPW89MCxyPTA7cjxsOysrcikoYT0oaT10W2Vbcl1dW25dKVsxXS1pWzBdKT4wPyhpWzBdPXMsaVsxXT1zKz1hKTphPDA/KGlbMV09byxpWzBdPW8rPWEpOihpWzBdPTAsaVsxXT1hKX1mdW5jdGlvbiBkSCh0LGUpe2lmKChpPXQubGVuZ3RoKT4wKXtmb3IodmFyIHI9MCxuPXRbZVswXV0saSxhPW4ubGVuZ3RoO3I8YTsrK3Ipe2Zvcih2YXIgcz0wLG89MDtzPGk7KytzKW8rPXRbc11bcl1bMV18fDA7bltyXVsxXSs9bltyXVswXT0tby8yfXFvKHQsZSl9fWZ1bmN0aW9uIHBIKHQsZSl7aWYoISghKChzPXQubGVuZ3RoKT4wKXx8ISgoYT0oaT10W2VbMF1dKS5sZW5ndGgpPjApKSl7Zm9yKHZhciByPTAsbj0xLGksYSxzO248YTsrK24pe2Zvcih2YXIgbz0wLGw9MCx1PTA7bzxzOysrbyl7Zm9yKHZhciBoPXRbZVtvXV0sZD1oW25dWzFdfHwwLGY9aFtuLTFdWzFdfHwwLHA9KGQtZikvMixtPTA7bTxvOysrbSl7dmFyIF89dFtlW21dXSx5PV9bbl1bMV18fDAsYj1fW24tMV1bMV18fDA7cCs9eS1ifWwrPWQsdSs9cCpkfWlbbi0xXVsxXSs9aVtuLTFdWzBdPXIsbCYmKHItPXUvbCl9aVtuLTFdWzFdKz1pW24tMV1bMF09cixxbyh0LGUpfX1mdW5jdGlvbiBDayh0KXt2YXIgZT10Lm1hcChnSCk7cmV0dXJuIFZvKHQpLnNvcnQoZnVuY3Rpb24ocixuKXtyZXR1cm4gZVtyXS1lW25dfSl9ZnVuY3Rpb24gZ0godCl7Zm9yKHZhciBlPS0xLHI9MCxuPXQubGVuZ3RoLGksYT0tMS8wOysrZTxuOykoaT0rdFtlXVsxXSk+YSYmKGE9aSxyPWUpO3JldHVybiByfWZ1bmN0aW9uIFNrKHQpe3ZhciBlPXQubWFwKEFrKTtyZXR1cm4gVm8odCkuc29ydChmdW5jdGlvbihyLG4pe3JldHVybiBlW3JdLWVbbl19KX1mdW5jdGlvbiBBayh0KXtmb3IodmFyIGU9MCxyPS0xLG49dC5sZW5ndGgsaTsrK3I8bjspKGk9K3Rbcl1bMV0pJiYoZSs9aSk7cmV0dXJuIGV9ZnVuY3Rpb24geUgodCl7cmV0dXJuIFNrKHQpLnJldmVyc2UoKX1mdW5jdGlvbiBtSCh0KXt2YXIgZT10Lmxlbmd0aCxyLG4saT10Lm1hcChBayksYT1Dayh0KSxzPTAsbz0wLGw9W10sdT1bXTtmb3Iocj0wO3I8ZTsrK3Ipbj1hW3JdLHM8bz8ocys9aVtuXSxsLnB1c2gobikpOihvKz1pW25dLHUucHVzaChuKSk7cmV0dXJuIHUucmV2ZXJzZSgpLmNvbmNhdChsKX1mdW5jdGlvbiBiSCh0KXtyZXR1cm4gVm8odCkucmV2ZXJzZSgpfWNvbnN0IEVmPXQ9PigpPT50O2Z1bmN0aW9uIF9IKHQse3NvdXJjZUV2ZW50OmUsdGFyZ2V0OnIsdHJhbnNmb3JtOm4sZGlzcGF0Y2g6aX0pe09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHRoaXMse3R5cGU6e3ZhbHVlOnQsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9LHNvdXJjZUV2ZW50Ont2YWx1ZTplLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwfSx0YXJnZXQ6e3ZhbHVlOnIsZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITB9LHRyYW5zZm9ybTp7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH0sXzp7dmFsdWU6aX19KX1mdW5jdGlvbiBSaSh0LGUscil7dGhpcy5rPXQsdGhpcy54PWUsdGhpcy55PXJ9UmkucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjpSaSxzY2FsZTpmdW5jdGlvbih0KXtyZXR1cm4gdD09PTE/dGhpczpuZXcgUmkodGhpcy5rKnQsdGhpcy54LHRoaXMueSl9LHRyYW5zbGF0ZTpmdW5jdGlvbih0LGUpe3JldHVybiB0PT09MCZlPT09MD90aGlzOm5ldyBSaSh0aGlzLmssdGhpcy54K3RoaXMuayp0LHRoaXMueSt0aGlzLmsqZSl9LGFwcGx5OmZ1bmN0aW9uKHQpe3JldHVyblt0WzBdKnRoaXMuayt0aGlzLngsdFsxXSp0aGlzLmsrdGhpcy55XX0sYXBwbHlYOmZ1bmN0aW9uKHQpe3JldHVybiB0KnRoaXMuayt0aGlzLnh9LGFwcGx5WTpmdW5jdGlvbih0KXtyZXR1cm4gdCp0aGlzLmsrdGhpcy55fSxpbnZlcnQ6ZnVuY3Rpb24odCl7cmV0dXJuWyh0WzBdLXRoaXMueCkvdGhpcy5rLCh0WzFdLXRoaXMueSkvdGhpcy5rXX0saW52ZXJ0WDpmdW5jdGlvbih0KXtyZXR1cm4odC10aGlzLngpL3RoaXMua30saW52ZXJ0WTpmdW5jdGlvbih0KXtyZXR1cm4odC10aGlzLnkpL3RoaXMua30scmVzY2FsZVg6ZnVuY3Rpb24odCl7cmV0dXJuIHQuY29weSgpLmRvbWFpbih0LnJhbmdlKCkubWFwKHRoaXMuaW52ZXJ0WCx0aGlzKS5tYXAodC5pbnZlcnQsdCkpfSxyZXNjYWxlWTpmdW5jdGlvbih0KXtyZXR1cm4gdC5jb3B5KCkuZG9tYWluKHQucmFuZ2UoKS5tYXAodGhpcy5pbnZlcnRZLHRoaXMpLm1hcCh0LmludmVydCx0KSl9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7cmV0dXJuInRyYW5zbGF0ZSgiK3RoaXMueCsiLCIrdGhpcy55KyIpIHNjYWxlKCIrdGhpcy5rKyIpIn19O3ZhciBDZj1uZXcgUmkoMSwwLDApO01rLnByb3RvdHlwZT1SaS5wcm90b3R5cGU7ZnVuY3Rpb24gTWsodCl7Zm9yKDshdC5fX3pvb207KWlmKCEodD10LnBhcmVudE5vZGUpKXJldHVybiBDZjtyZXR1cm4gdC5fX3pvb219ZnVuY3Rpb24gVnAodCl7dC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX1mdW5jdGlvbiB3Yyh0KXt0LnByZXZlbnREZWZhdWx0KCksdC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKX1mdW5jdGlvbiB2SCh0KXtyZXR1cm4oIXQuY3RybEtleXx8dC50eXBlPT09IndoZWVsIikmJiF0LmJ1dHRvbn1mdW5jdGlvbiB4SCgpe3ZhciB0PXRoaXM7cmV0dXJuIHQgaW5zdGFuY2VvZiBTVkdFbGVtZW50Pyh0PXQub3duZXJTVkdFbGVtZW50fHx0LHQuaGFzQXR0cmlidXRlKCJ2aWV3Qm94Iik/KHQ9dC52aWV3Qm94LmJhc2VWYWwsW1t0LngsdC55XSxbdC54K3Qud2lkdGgsdC55K3QuaGVpZ2h0XV0pOltbMCwwXSxbdC53aWR0aC5iYXNlVmFsLnZhbHVlLHQuaGVpZ2h0LmJhc2VWYWwudmFsdWVdXSk6W1swLDBdLFt0LmNsaWVudFdpZHRoLHQuY2xpZW50SGVpZ2h0XV19ZnVuY3Rpb24gTGsoKXtyZXR1cm4gdGhpcy5fX3pvb218fENmfWZ1bmN0aW9uIGtIKHQpe3JldHVybi10LmRlbHRhWSoodC5kZWx0YU1vZGU9PT0xPy4wNTp0LmRlbHRhTW9kZT8xOi4wMDIpKih0LmN0cmxLZXk/MTA6MSl9ZnVuY3Rpb24gd0goKXtyZXR1cm4gbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzfHwib250b3VjaHN0YXJ0ImluIHRoaXN9ZnVuY3Rpb24gVEgodCxlLHIpe3ZhciBuPXQuaW52ZXJ0WChlWzBdWzBdKS1yWzBdWzBdLGk9dC5pbnZlcnRYKGVbMV1bMF0pLXJbMV1bMF0sYT10LmludmVydFkoZVswXVsxXSktclswXVsxXSxzPXQuaW52ZXJ0WShlWzFdWzFdKS1yWzFdWzFdO3JldHVybiB0LnRyYW5zbGF0ZShpPm4/KG4raSkvMjpNYXRoLm1pbigwLG4pfHxNYXRoLm1heCgwLGkpLHM+YT8oYStzKS8yOk1hdGgubWluKDAsYSl8fE1hdGgubWF4KDAscykpfWZ1bmN0aW9uIEVIKCl7dmFyIHQ9dkgsZT14SCxyPVRILG49a0gsaT13SCxhPVswLDEvMF0scz1bWy0xLzAsLTEvMF0sWzEvMCwxLzBdXSxvPTI1MCxsPUg1LHU9ZnMoInN0YXJ0Iiwiem9vbSIsImVuZCIpLGgsZCxmLHA9NTAwLG09MTUwLF89MCx5PTEwO2Z1bmN0aW9uIGIoRCl7RC5wcm9wZXJ0eSgiX196b29tIixMaykub24oIndoZWVsLnpvb20iLFIse3Bhc3NpdmU6ITF9KS5vbigibW91c2Vkb3duLnpvb20iLEEpLm9uKCJkYmxjbGljay56b29tIixMKS5maWx0ZXIoaSkub24oInRvdWNoc3RhcnQuem9vbSIsdikub24oInRvdWNobW92ZS56b29tIixCKS5vbigidG91Y2hlbmQuem9vbSB0b3VjaGNhbmNlbC56b29tIix3KS5zdHlsZSgiLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yIiwicmdiYSgwLDAsMCwwKSIpfWIudHJhbnNmb3JtPWZ1bmN0aW9uKEQsTix6LFgpe3ZhciBjdD1ELnNlbGVjdGlvbj9ELnNlbGVjdGlvbigpOkQ7Y3QucHJvcGVydHkoIl9fem9vbSIsTGspLEQhPT1jdD9DKEQsTix6LFgpOmN0LmludGVycnVwdCgpLmVhY2goZnVuY3Rpb24oKXtNKHRoaXMsYXJndW1lbnRzKS5ldmVudChYKS5zdGFydCgpLnpvb20obnVsbCx0eXBlb2YgTj09ImZ1bmN0aW9uIj9OLmFwcGx5KHRoaXMsYXJndW1lbnRzKTpOKS5lbmQoKX0pfSxiLnNjYWxlQnk9ZnVuY3Rpb24oRCxOLHosWCl7Yi5zY2FsZVRvKEQsZnVuY3Rpb24oKXt2YXIgY3Q9dGhpcy5fX3pvb20uayxKPXR5cGVvZiBOPT0iZnVuY3Rpb24iP04uYXBwbHkodGhpcyxhcmd1bWVudHMpOk47cmV0dXJuIGN0Kkp9LHosWCl9LGIuc2NhbGVUbz1mdW5jdGlvbihELE4seixYKXtiLnRyYW5zZm9ybShELGZ1bmN0aW9uKCl7dmFyIGN0PWUuYXBwbHkodGhpcyxhcmd1bWVudHMpLEo9dGhpcy5fX3pvb20sWT16PT1udWxsP1QoY3QpOnR5cGVvZiB6PT0iZnVuY3Rpb24iP3ouYXBwbHkodGhpcyxhcmd1bWVudHMpOnosJD1KLmludmVydChZKSxsdD10eXBlb2YgTj09ImZ1bmN0aW9uIj9OLmFwcGx5KHRoaXMsYXJndW1lbnRzKTpOO3JldHVybiByKGsoeChKLGx0KSxZLCQpLGN0LHMpfSx6LFgpfSxiLnRyYW5zbGF0ZUJ5PWZ1bmN0aW9uKEQsTix6LFgpe2IudHJhbnNmb3JtKEQsZnVuY3Rpb24oKXtyZXR1cm4gcih0aGlzLl9fem9vbS50cmFuc2xhdGUodHlwZW9mIE49PSJmdW5jdGlvbiI/Ti5hcHBseSh0aGlzLGFyZ3VtZW50cyk6Tix0eXBlb2Ygej09ImZ1bmN0aW9uIj96LmFwcGx5KHRoaXMsYXJndW1lbnRzKTp6KSxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxzKX0sbnVsbCxYKX0sYi50cmFuc2xhdGVUbz1mdW5jdGlvbihELE4seixYLGN0KXtiLnRyYW5zZm9ybShELGZ1bmN0aW9uKCl7dmFyIEo9ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyksWT10aGlzLl9fem9vbSwkPVg9PW51bGw/VChKKTp0eXBlb2YgWD09ImZ1bmN0aW9uIj9YLmFwcGx5KHRoaXMsYXJndW1lbnRzKTpYO3JldHVybiByKENmLnRyYW5zbGF0ZSgkWzBdLCRbMV0pLnNjYWxlKFkuaykudHJhbnNsYXRlKHR5cGVvZiBOPT0iZnVuY3Rpb24iPy1OLmFwcGx5KHRoaXMsYXJndW1lbnRzKTotTix0eXBlb2Ygej09ImZ1bmN0aW9uIj8tei5hcHBseSh0aGlzLGFyZ3VtZW50cyk6LXopLEoscyl9LFgsY3QpfTtmdW5jdGlvbiB4KEQsTil7cmV0dXJuIE49TWF0aC5tYXgoYVswXSxNYXRoLm1pbihhWzFdLE4pKSxOPT09RC5rP0Q6bmV3IFJpKE4sRC54LEQueSl9ZnVuY3Rpb24gayhELE4seil7dmFyIFg9TlswXS16WzBdKkQuayxjdD1OWzFdLXpbMV0qRC5rO3JldHVybiBYPT09RC54JiZjdD09PUQueT9EOm5ldyBSaShELmssWCxjdCl9ZnVuY3Rpb24gVChEKXtyZXR1cm5bKCtEWzBdWzBdKyArRFsxXVswXSkvMiwoK0RbMF1bMV0rICtEWzFdWzFdKS8yXX1mdW5jdGlvbiBDKEQsTix6LFgpe0Qub24oInN0YXJ0Lnpvb20iLGZ1bmN0aW9uKCl7TSh0aGlzLGFyZ3VtZW50cykuZXZlbnQoWCkuc3RhcnQoKX0pLm9uKCJpbnRlcnJ1cHQuem9vbSBlbmQuem9vbSIsZnVuY3Rpb24oKXtNKHRoaXMsYXJndW1lbnRzKS5ldmVudChYKS5lbmQoKX0pLnR3ZWVuKCJ6b29tIixmdW5jdGlvbigpe3ZhciBjdD10aGlzLEo9YXJndW1lbnRzLFk9TShjdCxKKS5ldmVudChYKSwkPWUuYXBwbHkoY3QsSiksbHQ9ej09bnVsbD9UKCQpOnR5cGVvZiB6PT0iZnVuY3Rpb24iP3ouYXBwbHkoY3QsSik6eix1dD1NYXRoLm1heCgkWzFdWzBdLSRbMF1bMF0sJFsxXVsxXS0kWzBdWzFdKSxXPWN0Ll9fem9vbSx0dD10eXBlb2YgTj09ImZ1bmN0aW9uIj9OLmFwcGx5KGN0LEopOk4sSz1sKFcuaW52ZXJ0KGx0KS5jb25jYXQodXQvVy5rKSx0dC5pbnZlcnQobHQpLmNvbmNhdCh1dC90dC5rKSk7cmV0dXJuIGZ1bmN0aW9uKGl0KXtpZihpdD09PTEpaXQ9dHQ7ZWxzZXt2YXIgWj1LKGl0KSxWPXV0L1pbMl07aXQ9bmV3IFJpKFYsbHRbMF0tWlswXSpWLGx0WzFdLVpbMV0qVil9WS56b29tKG51bGwsaXQpfX0pfWZ1bmN0aW9uIE0oRCxOLHope3JldHVybiF6JiZELl9fem9vbWluZ3x8bmV3IFMoRCxOKX1mdW5jdGlvbiBTKEQsTil7dGhpcy50aGF0PUQsdGhpcy5hcmdzPU4sdGhpcy5hY3RpdmU9MCx0aGlzLnNvdXJjZUV2ZW50PW51bGwsdGhpcy5leHRlbnQ9ZS5hcHBseShELE4pLHRoaXMudGFwcz0wfVMucHJvdG90eXBlPXtldmVudDpmdW5jdGlvbihEKXtyZXR1cm4gRCYmKHRoaXMuc291cmNlRXZlbnQ9RCksdGhpc30sc3RhcnQ6ZnVuY3Rpb24oKXtyZXR1cm4rK3RoaXMuYWN0aXZlPT09MSYmKHRoaXMudGhhdC5fX3pvb21pbmc9dGhpcyx0aGlzLmVtaXQoInN0YXJ0IikpLHRoaXN9LHpvb206ZnVuY3Rpb24oRCxOKXtyZXR1cm4gdGhpcy5tb3VzZSYmRCE9PSJtb3VzZSImJih0aGlzLm1vdXNlWzFdPU4uaW52ZXJ0KHRoaXMubW91c2VbMF0pKSx0aGlzLnRvdWNoMCYmRCE9PSJ0b3VjaCImJih0aGlzLnRvdWNoMFsxXT1OLmludmVydCh0aGlzLnRvdWNoMFswXSkpLHRoaXMudG91Y2gxJiZEIT09InRvdWNoIiYmKHRoaXMudG91Y2gxWzFdPU4uaW52ZXJ0KHRoaXMudG91Y2gxWzBdKSksdGhpcy50aGF0Ll9fem9vbT1OLHRoaXMuZW1pdCgiem9vbSIpLHRoaXN9LGVuZDpmdW5jdGlvbigpe3JldHVybi0tdGhpcy5hY3RpdmU9PT0wJiYoZGVsZXRlIHRoaXMudGhhdC5fX3pvb21pbmcsdGhpcy5lbWl0KCJlbmQiKSksdGhpc30sZW1pdDpmdW5jdGlvbihEKXt2YXIgTj1TdCh0aGlzLnRoYXQpLmRhdHVtKCk7dS5jYWxsKEQsdGhpcy50aGF0LG5ldyBfSChELHtzb3VyY2VFdmVudDp0aGlzLnNvdXJjZUV2ZW50LHRhcmdldDpiLHR5cGU6RCx0cmFuc2Zvcm06dGhpcy50aGF0Ll9fem9vbSxkaXNwYXRjaDp1fSksTil9fTtmdW5jdGlvbiBSKEQsLi4uTil7aWYoIXQuYXBwbHkodGhpcyxhcmd1bWVudHMpKXJldHVybjt2YXIgej1NKHRoaXMsTikuZXZlbnQoRCksWD10aGlzLl9fem9vbSxjdD1NYXRoLm1heChhWzBdLE1hdGgubWluKGFbMV0sWC5rKk1hdGgucG93KDIsbi5hcHBseSh0aGlzLGFyZ3VtZW50cykpKSksSj1UbihEKTtpZih6LndoZWVsKSh6Lm1vdXNlWzBdWzBdIT09SlswXXx8ei5tb3VzZVswXVsxXSE9PUpbMV0pJiYoei5tb3VzZVsxXT1YLmludmVydCh6Lm1vdXNlWzBdPUopKSxjbGVhclRpbWVvdXQoei53aGVlbCk7ZWxzZXtpZihYLms9PT1jdClyZXR1cm47ei5tb3VzZT1bSixYLmludmVydChKKV0sdnModGhpcyksei5zdGFydCgpfXdjKEQpLHoud2hlZWw9c2V0VGltZW91dChZLG0pLHouem9vbSgibW91c2UiLHIoayh4KFgsY3QpLHoubW91c2VbMF0sei5tb3VzZVsxXSksei5leHRlbnQscykpO2Z1bmN0aW9uIFkoKXt6LndoZWVsPW51bGwsei5lbmQoKX19ZnVuY3Rpb24gQShELC4uLk4pe2lmKGZ8fCF0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSlyZXR1cm47dmFyIHo9RC5jdXJyZW50VGFyZ2V0LFg9TSh0aGlzLE4sITApLmV2ZW50KEQpLGN0PVN0KEQudmlldykub24oIm1vdXNlbW92ZS56b29tIixsdCwhMCkub24oIm1vdXNldXAuem9vbSIsdXQsITApLEo9VG4oRCx6KSxZPUQuY2xpZW50WCwkPUQuY2xpZW50WTtCdShELnZpZXcpLFZwKEQpLFgubW91c2U9W0osdGhpcy5fX3pvb20uaW52ZXJ0KEopXSx2cyh0aGlzKSxYLnN0YXJ0KCk7ZnVuY3Rpb24gbHQoVyl7aWYod2MoVyksIVgubW92ZWQpe3ZhciB0dD1XLmNsaWVudFgtWSxLPVcuY2xpZW50WS0kO1gubW92ZWQ9dHQqdHQrSypLPl99WC5ldmVudChXKS56b29tKCJtb3VzZSIscihrKFgudGhhdC5fX3pvb20sWC5tb3VzZVswXT1UbihXLHopLFgubW91c2VbMV0pLFguZXh0ZW50LHMpKX1mdW5jdGlvbiB1dChXKXtjdC5vbigibW91c2Vtb3ZlLnpvb20gbW91c2V1cC56b29tIixudWxsKSxEdShXLnZpZXcsWC5tb3ZlZCksd2MoVyksWC5ldmVudChXKS5lbmQoKX19ZnVuY3Rpb24gTChELC4uLk4pe2lmKCEhdC5hcHBseSh0aGlzLGFyZ3VtZW50cykpe3ZhciB6PXRoaXMuX196b29tLFg9VG4oRC5jaGFuZ2VkVG91Y2hlcz9ELmNoYW5nZWRUb3VjaGVzWzBdOkQsdGhpcyksY3Q9ei5pbnZlcnQoWCksSj16LmsqKEQuc2hpZnRLZXk/LjU6MiksWT1yKGsoeCh6LEopLFgsY3QpLGUuYXBwbHkodGhpcyxOKSxzKTt3YyhEKSxvPjA/U3QodGhpcykudHJhbnNpdGlvbigpLmR1cmF0aW9uKG8pLmNhbGwoQyxZLFgsRCk6U3QodGhpcykuY2FsbChiLnRyYW5zZm9ybSxZLFgsRCl9fWZ1bmN0aW9uIHYoRCwuLi5OKXtpZighIXQuYXBwbHkodGhpcyxhcmd1bWVudHMpKXt2YXIgej1ELnRvdWNoZXMsWD16Lmxlbmd0aCxjdD1NKHRoaXMsTixELmNoYW5nZWRUb3VjaGVzLmxlbmd0aD09PVgpLmV2ZW50KEQpLEosWSwkLGx0O2ZvcihWcChEKSxZPTA7WTxYOysrWSkkPXpbWV0sbHQ9VG4oJCx0aGlzKSxsdD1bbHQsdGhpcy5fX3pvb20uaW52ZXJ0KGx0KSwkLmlkZW50aWZpZXJdLGN0LnRvdWNoMD8hY3QudG91Y2gxJiZjdC50b3VjaDBbMl0hPT1sdFsyXSYmKGN0LnRvdWNoMT1sdCxjdC50YXBzPTApOihjdC50b3VjaDA9bHQsSj0hMCxjdC50YXBzPTErISFoKTtoJiYoaD1jbGVhclRpbWVvdXQoaCkpLEomJihjdC50YXBzPDImJihkPWx0WzBdLGg9c2V0VGltZW91dChmdW5jdGlvbigpe2g9bnVsbH0scCkpLHZzKHRoaXMpLGN0LnN0YXJ0KCkpfX1mdW5jdGlvbiBCKEQsLi4uTil7aWYoISF0aGlzLl9fem9vbWluZyl7dmFyIHo9TSh0aGlzLE4pLmV2ZW50KEQpLFg9RC5jaGFuZ2VkVG91Y2hlcyxjdD1YLmxlbmd0aCxKLFksJCxsdDtmb3Iod2MoRCksSj0wO0o8Y3Q7KytKKVk9WFtKXSwkPVRuKFksdGhpcyksei50b3VjaDAmJnoudG91Y2gwWzJdPT09WS5pZGVudGlmaWVyP3oudG91Y2gwWzBdPSQ6ei50b3VjaDEmJnoudG91Y2gxWzJdPT09WS5pZGVudGlmaWVyJiYoei50b3VjaDFbMF09JCk7aWYoWT16LnRoYXQuX196b29tLHoudG91Y2gxKXt2YXIgdXQ9ei50b3VjaDBbMF0sVz16LnRvdWNoMFsxXSx0dD16LnRvdWNoMVswXSxLPXoudG91Y2gxWzFdLGl0PShpdD10dFswXS11dFswXSkqaXQrKGl0PXR0WzFdLXV0WzFdKSppdCxaPShaPUtbMF0tV1swXSkqWisoWj1LWzFdLVdbMV0pKlo7WT14KFksTWF0aC5zcXJ0KGl0L1opKSwkPVsodXRbMF0rdHRbMF0pLzIsKHV0WzFdK3R0WzFdKS8yXSxsdD1bKFdbMF0rS1swXSkvMiwoV1sxXStLWzFdKS8yXX1lbHNlIGlmKHoudG91Y2gwKSQ9ei50b3VjaDBbMF0sbHQ9ei50b3VjaDBbMV07ZWxzZSByZXR1cm47ei56b29tKCJ0b3VjaCIscihrKFksJCxsdCksei5leHRlbnQscykpfX1mdW5jdGlvbiB3KEQsLi4uTil7aWYoISF0aGlzLl9fem9vbWluZyl7dmFyIHo9TSh0aGlzLE4pLmV2ZW50KEQpLFg9RC5jaGFuZ2VkVG91Y2hlcyxjdD1YLmxlbmd0aCxKLFk7Zm9yKFZwKEQpLGYmJmNsZWFyVGltZW91dChmKSxmPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtmPW51bGx9LHApLEo9MDtKPGN0OysrSilZPVhbSl0sei50b3VjaDAmJnoudG91Y2gwWzJdPT09WS5pZGVudGlmaWVyP2RlbGV0ZSB6LnRvdWNoMDp6LnRvdWNoMSYmei50b3VjaDFbMl09PT1ZLmlkZW50aWZpZXImJmRlbGV0ZSB6LnRvdWNoMTtpZih6LnRvdWNoMSYmIXoudG91Y2gwJiYoei50b3VjaDA9ei50b3VjaDEsZGVsZXRlIHoudG91Y2gxKSx6LnRvdWNoMCl6LnRvdWNoMFsxXT10aGlzLl9fem9vbS5pbnZlcnQoei50b3VjaDBbMF0pO2Vsc2UgaWYoei5lbmQoKSx6LnRhcHM9PT0yJiYoWT1UbihZLHRoaXMpLE1hdGguaHlwb3QoZFswXS1ZWzBdLGRbMV0tWVsxXSk8eSkpe3ZhciAkPVN0KHRoaXMpLm9uKCJkYmxjbGljay56b29tIik7JCYmJC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fX1yZXR1cm4gYi53aGVlbERlbHRhPWZ1bmN0aW9uKEQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhuPXR5cGVvZiBEPT0iZnVuY3Rpb24iP0Q6RWYoK0QpLGIpOm59LGIuZmlsdGVyPWZ1bmN0aW9uKEQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh0PXR5cGVvZiBEPT0iZnVuY3Rpb24iP0Q6RWYoISFEKSxiKTp0fSxiLnRvdWNoYWJsZT1mdW5jdGlvbihEKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oaT10eXBlb2YgRD09ImZ1bmN0aW9uIj9EOkVmKCEhRCksYik6aX0sYi5leHRlbnQ9ZnVuY3Rpb24oRCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KGU9dHlwZW9mIEQ9PSJmdW5jdGlvbiI/RDpFZihbWytEWzBdWzBdLCtEWzBdWzFdXSxbK0RbMV1bMF0sK0RbMV1bMV1dXSksYik6ZX0sYi5zY2FsZUV4dGVudD1mdW5jdGlvbihEKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oYVswXT0rRFswXSxhWzFdPStEWzFdLGIpOlthWzBdLGFbMV1dfSxiLnRyYW5zbGF0ZUV4dGVudD1mdW5jdGlvbihEKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8oc1swXVswXT0rRFswXVswXSxzWzFdWzBdPStEWzFdWzBdLHNbMF1bMV09K0RbMF1bMV0sc1sxXVsxXT0rRFsxXVsxXSxiKTpbW3NbMF1bMF0sc1swXVsxXV0sW3NbMV1bMF0sc1sxXVsxXV1dfSxiLmNvbnN0cmFpbj1mdW5jdGlvbihEKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8ocj1ELGIpOnJ9LGIuZHVyYXRpb249ZnVuY3Rpb24oRCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG89K0QsYik6b30sYi5pbnRlcnBvbGF0ZT1mdW5jdGlvbihEKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obD1ELGIpOmx9LGIub249ZnVuY3Rpb24oKXt2YXIgRD11Lm9uLmFwcGx5KHUsYXJndW1lbnRzKTtyZXR1cm4gRD09PXU/YjpEfSxiLmNsaWNrRGlzdGFuY2U9ZnVuY3Rpb24oRCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KF89KEQ9K0QpKkQsYik6TWF0aC5zcXJ0KF8pfSxiLnRhcERpc3RhbmNlPWZ1bmN0aW9uKEQpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyh5PStELGIpOnl9LGJ9Y29uc3QgQ0g9T2JqZWN0LmZyZWV6ZShPYmplY3QuZGVmaW5lUHJvcGVydHkoe19fcHJvdG9fXzpudWxsLGJpc2VjdDpjcyxiaXNlY3RSaWdodDp4XyxiaXNlY3RMZWZ0OlNSLGJpc2VjdENlbnRlcjpBUixhc2NlbmRpbmc6UWUsYmlzZWN0b3I6a3UsYmx1cjpNUixibHVyMjprXyxibHVySW1hZ2U6TFIsY291bnQ6d3UsY3Jvc3M6RlIsY3Vtc3VtOlBSLGRlc2NlbmRpbmc6bV8sZGV2aWF0aW9uOkVfLGV4dGVudDp4bCxBZGRlcjpfcixmc3VtOnFSLGZjdW1zdW06VlIsZ3JvdXA6TV8sZmxhdEdyb3VwOnpSLGZsYXRSb2xsdXA6WVIsZ3JvdXBzOkxfLGluZGV4OlVSLGluZGV4ZXM6V1Iscm9sbHVwOklfLHJvbGx1cHM6Tl8sZ3JvdXBTb3J0OkhSLGJpbjpGXyxoaXN0b2dyYW06Rl8sdGhyZXNob2xkRnJlZWRtYW5EaWFjb25pczokUix0aHJlc2hvbGRTY290dDpYUix0aHJlc2hvbGRTdHVyZ2VzOlcwLG1heDpsbyxtYXhJbmRleDpIMCxtZWFuOktSLG1lZGlhbjpaUixtZWRpYW5JbmRleDpRUixtZXJnZTpqMCxtaW46VGwsbWluSW5kZXg6RzAsbW9kZTp0SSxuaWNlOk9fLHBhaXJzOmVJLHBlcm11dGU6RF8scXVhbnRpbGU6Q2wscXVhbnRpbGVJbmRleDpWXyxxdWFudGlsZVNvcnRlZDpxXyxxdWlja3NlbGVjdDpFdSxyYW5nZTpDYSxyYW5rOm5JLGxlYXN0OmlJLGxlYXN0SW5kZXg6el8sZ3JlYXRlc3Q6UF8sZ3JlYXRlc3RJbmRleDphSSxzY2FuOnNJLHNodWZmbGU6b0ksc2h1ZmZsZXI6WV8sc3VtOmxJLHRpY2tzOmhzLHRpY2tJbmNyZW1lbnQ6b28sdGlja1N0ZXA6d2wsdHJhbnNwb3NlOlVfLHZhcmlhbmNlOlRfLHppcDp1SSxldmVyeTpoSSxzb21lOmZJLGZpbHRlcjpkSSxtYXA6cEkscmVkdWNlOmdJLHJldmVyc2U6eUksc29ydDpxMCxkaWZmZXJlbmNlOm1JLGRpc2pvaW50OmJJLGludGVyc2VjdGlvbjpfSSxzdWJzZXQ6eEksc3VwZXJzZXQ6V18sdW5pb246a0ksSW50ZXJuTWFwOmtsLEludGVyblNldDp1cyxheGlzVG9wOmpfLGF4aXNSaWdodDpNSSxheGlzQm90dG9tOiRfLGF4aXNMZWZ0OkxJLGJydXNoOktPLGJydXNoWDokTyxicnVzaFk6WE8sYnJ1c2hTZWxlY3Rpb246ak8sY2hvcmQ6UU8sY2hvcmRUcmFuc3Bvc2U6Sk8sY2hvcmREaXJlY3RlZDp0RixyaWJib246Y0YscmliYm9uQXJyb3c6dUYsY29sb3I6QWEscmdiOnBvLGhzbDpxdSxsYWI6WXUsaGNsOlV1LGxjaDpJQixncmF5OlJCLGN1YmVoZWxpeDpRbixjb250b3VyczpVZCxjb250b3VyRGVuc2l0eTp3RixEZWxhdW5heTpqZCxWb3Jvbm9pOk52LGRpc3BhdGNoOmZzLGRyYWc6X0IsZHJhZ0Rpc2FibGU6QnUsZHJhZ0VuYWJsZTpEdSxkc3ZGb3JtYXQ6dWgsY3N2UGFyc2U6RnYsY3N2UGFyc2VSb3dzOkdGLGNzdkZvcm1hdDpqRixjc3ZGb3JtYXRCb2R5OiRGLGNzdkZvcm1hdFJvd3M6WEYsY3N2Rm9ybWF0Um93OktGLGNzdkZvcm1hdFZhbHVlOlpGLHRzdlBhcnNlOlB2LHRzdlBhcnNlUm93czpRRix0c3ZGb3JtYXQ6SkYsdHN2Rm9ybWF0Qm9keTp0UCx0c3ZGb3JtYXRSb3dzOmVQLHRzdkZvcm1hdFJvdzpyUCx0c3ZGb3JtYXRWYWx1ZTpuUCxhdXRvVHlwZTppUCxlYXNlTGluZWFyOnNPLGVhc2VRdWFkOm92LGVhc2VRdWFkSW46b08sZWFzZVF1YWRPdXQ6bE8sZWFzZVF1YWRJbk91dDpvdixlYXNlQ3ViaWM6RWQsZWFzZUN1YmljSW46Y08sZWFzZUN1YmljT3V0OnVPLGVhc2VDdWJpY0luT3V0OkVkLGVhc2VQb2x5Omx2LGVhc2VQb2x5SW46aE8sZWFzZVBvbHlPdXQ6Zk8sZWFzZVBvbHlJbk91dDpsdixlYXNlU2luOmh2LGVhc2VTaW5JbjpkTyxlYXNlU2luT3V0OnBPLGVhc2VTaW5Jbk91dDpodixlYXNlRXhwOmZ2LGVhc2VFeHBJbjpnTyxlYXNlRXhwT3V0OnlPLGVhc2VFeHBJbk91dDpmdixlYXNlQ2lyY2xlOmR2LGVhc2VDaXJjbGVJbjptTyxlYXNlQ2lyY2xlT3V0OmJPLGVhc2VDaXJjbGVJbk91dDpkdixlYXNlQm91bmNlOlZsLGVhc2VCb3VuY2VJbjpTTyxlYXNlQm91bmNlT3V0OlZsLGVhc2VCb3VuY2VJbk91dDpBTyxlYXNlQmFjazpwdixlYXNlQmFja0luOk1PLGVhc2VCYWNrT3V0OkxPLGVhc2VCYWNrSW5PdXQ6cHYsZWFzZUVsYXN0aWM6Z3YsZWFzZUVsYXN0aWNJbjpSTyxlYXNlRWxhc3RpY091dDpndixlYXNlRWxhc3RpY0luT3V0OklPLGJsb2I6b1AsYnVmZmVyOmNQLGRzdjpoUCxjc3Y6ZlAsdHN2OmRQLGltYWdlOnBQLGpzb246eVAsdGV4dDpoaCx4bWw6bVAsaHRtbDpiUCxzdmc6X1AsZm9yY2VDZW50ZXI6dlAsZm9yY2VDb2xsaWRlOnFQLGZvcmNlTGluazp6UCxmb3JjZU1hbnlCb2R5OktQLGZvcmNlUmFkaWFsOlpQLGZvcmNlU2ltdWxhdGlvbjpYUCxmb3JjZVg6UVAsZm9yY2VZOkpQLGZvcm1hdERlZmF1bHRMb2NhbGU6WnYsZ2V0IGZvcm1hdCgpe3JldHVybiB5aH0sZ2V0IGZvcm1hdFByZWZpeCgpe3JldHVybiBKZH0sZm9ybWF0TG9jYWxlOkt2LGZvcm1hdFNwZWNpZmllcjpDbyxGb3JtYXRTcGVjaWZpZXI6cGgscHJlY2lzaW9uRml4ZWQ6UXYscHJlY2lzaW9uUHJlZml4Okp2LHByZWNpc2lvblJvdW5kOnQ2LGdlb0FyZWE6Y3EsZ2VvQm91bmRzOmRxLGdlb0NlbnRyb2lkOl9xLGdlb0NpcmNsZTp2cSxnZW9DbGlwQW50aW1lcmlkaWFuOm0yLGdlb0NsaXBDaXJjbGU6TjYsZ2VvQ2xpcEV4dGVudDpTcSxnZW9DbGlwUmVjdGFuZ2xlOkZoLGdlb0NvbnRhaW5zOkJxLGdlb0Rpc3RhbmNlOlZoLGdlb0dyYXRpY3VsZTpVNixnZW9HcmF0aWN1bGUxMDpEcSxnZW9JbnRlcnBvbGF0ZTpPcSxnZW9MZW5ndGg6QjYsZ2VvUGF0aDokcSxnZW9BbGJlcnM6aHgsZ2VvQWxiZXJzVXNhOmlWLGdlb0F6aW11dGhhbEVxdWFsQXJlYTphVixnZW9BemltdXRoYWxFcXVhbEFyZWFSYXc6UDIsZ2VvQXppbXV0aGFsRXF1aWRpc3RhbnQ6c1YsZ2VvQXppbXV0aGFsRXF1aWRpc3RhbnRSYXc6cTIsZ2VvQ29uaWNDb25mb3JtYWw6bFYsZ2VvQ29uaWNDb25mb3JtYWxSYXc6cHgsZ2VvQ29uaWNFcXVhbEFyZWE6WGgsZ2VvQ29uaWNFcXVhbEFyZWFSYXc6dXgsZ2VvQ29uaWNFcXVpZGlzdGFudDp1VixnZW9Db25pY0VxdWlkaXN0YW50UmF3Omd4LGdlb0VxdWFsRWFydGg6ZlYsZ2VvRXF1YWxFYXJ0aFJhdzpWMixnZW9FcXVpcmVjdGFuZ3VsYXI6Y1YsZ2VvRXF1aXJlY3Rhbmd1bGFyUmF3OmFjLGdlb0dub21vbmljOmRWLGdlb0dub21vbmljUmF3OnoyLGdlb0lkZW50aXR5OnBWLGdlb1Byb2plY3Rpb246TGksZ2VvUHJvamVjdGlvbk11dGF0b3I6TzIsZ2VvTWVyY2F0b3I6b1YsZ2VvTWVyY2F0b3JSYXc6aWMsZ2VvTmF0dXJhbEVhcnRoMTpnVixnZW9OYXR1cmFsRWFydGgxUmF3OlkyLGdlb09ydGhvZ3JhcGhpYzp5VixnZW9PcnRob2dyYXBoaWNSYXc6VTIsZ2VvU3RlcmVvZ3JhcGhpYzptVixnZW9TdGVyZW9ncmFwaGljUmF3OlcyLGdlb1RyYW5zdmVyc2VNZXJjYXRvcjpiVixnZW9UcmFuc3ZlcnNlTWVyY2F0b3JSYXc6SDIsZ2VvUm90YXRpb246RTYsZ2VvU3RyZWFtOnRpLGdlb1RyYW5zZm9ybTpYcSxjbHVzdGVyOkNWLGhpZXJhcmNoeTpHMixOb2RlOk1zLHBhY2s6cnoscGFja1NpYmxpbmdzOnR6LHBhY2tFbmNsb3NlOktWLHBhcnRpdGlvbjpueixzdHJhdGlmeTpveix0cmVlOnB6LHRyZWVtYXA6Z3osdHJlZW1hcEJpbmFyeTp5eix0cmVlbWFwRGljZTpoYyx0cmVlbWFwU2xpY2U6cmYsdHJlZW1hcFNsaWNlRGljZTpteix0cmVlbWFwU3F1YXJpZnk6TngsdHJlZW1hcFJlc3F1YXJpZnk6YnosaW50ZXJwb2xhdGU6TWEsaW50ZXJwb2xhdGVBcnJheTpGQixpbnRlcnBvbGF0ZUJhc2lzOkw1LGludGVycG9sYXRlQmFzaXNDbG9zZWQ6UjUsaW50ZXJwb2xhdGVEYXRlOkY1LGludGVycG9sYXRlRGlzY3JldGU6VkIsaW50ZXJwb2xhdGVIdWU6ekIsaW50ZXJwb2xhdGVOdW1iZXI6Qm4saW50ZXJwb2xhdGVOdW1iZXJBcnJheTpkZCxpbnRlcnBvbGF0ZU9iamVjdDpQNSxpbnRlcnBvbGF0ZVJvdW5kOmp1LGludGVycG9sYXRlU3RyaW5nOnlkLGludGVycG9sYXRlVHJhbnNmb3JtQ3NzOlk1LGludGVycG9sYXRlVHJhbnNmb3JtU3ZnOlU1LGludGVycG9sYXRlWm9vbTpINSxpbnRlcnBvbGF0ZVJnYjpObCxpbnRlcnBvbGF0ZVJnYkJhc2lzOkI1LGludGVycG9sYXRlUmdiQmFzaXNDbG9zZWQ6T0IsaW50ZXJwb2xhdGVIc2w6akIsaW50ZXJwb2xhdGVIc2xMb25nOiRCLGludGVycG9sYXRlTGFiOlhCLGludGVycG9sYXRlSGNsOiQ1LGludGVycG9sYXRlSGNsTG9uZzpLQixpbnRlcnBvbGF0ZUN1YmVoZWxpeDpaQixpbnRlcnBvbGF0ZUN1YmVoZWxpeExvbmc6WHUscGllY2V3aXNlOks1LHF1YW50aXplOlFCLHBhdGg6UmEscG9seWdvbkFyZWE6X3oscG9seWdvbkNlbnRyb2lkOnZ6LHBvbHlnb25IdWxsOnd6LHBvbHlnb25Db250YWluczpUeixwb2x5Z29uTGVuZ3RoOkV6LHF1YWR0cmVlOmZoLHJhbmRvbVVuaWZvcm06Q3oscmFuZG9tSW50OlN6LHJhbmRvbU5vcm1hbDp0cCxyYW5kb21Mb2dOb3JtYWw6QXoscmFuZG9tQmF0ZXM6TXoscmFuZG9tSXJ3aW5IYWxsOkR4LHJhbmRvbUV4cG9uZW50aWFsOkx6LHJhbmRvbVBhcmV0bzpSeixyYW5kb21CZXJub3VsbGk6SXoscmFuZG9tR2VvbWV0cmljOk94LHJhbmRvbUJpbm9taWFsOlB4LHJhbmRvbUdhbW1hOmVwLHJhbmRvbUJldGE6RngscmFuZG9tV2VpYnVsbDpOeixyYW5kb21DYXVjaHk6QnoscmFuZG9tTG9naXN0aWM6RHoscmFuZG9tUG9pc3NvbjpPeixyYW5kb21MY2c6cXosc2NhbGVCYW5kOm5wLHNjYWxlUG9pbnQ6Vnosc2NhbGVJZGVudGl0eTpVeCxzY2FsZUxpbmVhcjpzcCxzY2FsZUxvZzokeCxzY2FsZVN5bWxvZzpaeCxzY2FsZU9yZGluYWw6bmYsc2NhbGVJbXBsaWNpdDpycCxzY2FsZVBvdzp1cCxzY2FsZVNxcnQ6UXosc2NhbGVSYWRpYWw6dDgsc2NhbGVRdWFudGlsZTplOCxzY2FsZVF1YW50aXplOnI4LHNjYWxlVGhyZXNob2xkOm44LHNjYWxlVGltZTpYOCxzY2FsZVV0YzpNVSxzY2FsZVNlcXVlbnRpYWw6Szgsc2NhbGVTZXF1ZW50aWFsTG9nOlo4LHNjYWxlU2VxdWVudGlhbFBvdzpBcCxzY2FsZVNlcXVlbnRpYWxTcXJ0OkxVLHNjYWxlU2VxdWVudGlhbFN5bWxvZzpROCxzY2FsZVNlcXVlbnRpYWxRdWFudGlsZTpKOCxzY2FsZURpdmVyZ2luZzp0NyxzY2FsZURpdmVyZ2luZ0xvZzplNyxzY2FsZURpdmVyZ2luZ1BvdzpNcCxzY2FsZURpdmVyZ2luZ1NxcnQ6UlUsc2NhbGVEaXZlcmdpbmdTeW1sb2c6cjcsdGlja0Zvcm1hdDpZeCxzY2hlbWVDYXRlZ29yeTEwOklVLHNjaGVtZUFjY2VudDpOVSxzY2hlbWVEYXJrMjpCVSxzY2hlbWVQYWlyZWQ6RFUsc2NoZW1lUGFzdGVsMTpPVSxzY2hlbWVQYXN0ZWwyOkZVLHNjaGVtZVNldDE6UFUsc2NoZW1lU2V0MjpxVSxzY2hlbWVTZXQzOlZVLHNjaGVtZVRhYmxlYXUxMDp6VSxpbnRlcnBvbGF0ZUJyQkc6WVUsc2NoZW1lQnJCRzpuNyxpbnRlcnBvbGF0ZVBSR246VVUsc2NoZW1lUFJHbjppNyxpbnRlcnBvbGF0ZVBpWUc6V1Usc2NoZW1lUGlZRzphNyxpbnRlcnBvbGF0ZVB1T3I6SFUsc2NoZW1lUHVPcjpzNyxpbnRlcnBvbGF0ZVJkQnU6R1Usc2NoZW1lUmRCdTpvNyxpbnRlcnBvbGF0ZVJkR3k6alUsc2NoZW1lUmRHeTpsNyxpbnRlcnBvbGF0ZVJkWWxCdTokVSxzY2hlbWVSZFlsQnU6YzcsaW50ZXJwb2xhdGVSZFlsR246WFUsc2NoZW1lUmRZbEduOnU3LGludGVycG9sYXRlU3BlY3RyYWw6S1Usc2NoZW1lU3BlY3RyYWw6aDcsaW50ZXJwb2xhdGVCdUduOlpVLHNjaGVtZUJ1R246ZjcsaW50ZXJwb2xhdGVCdVB1OlFVLHNjaGVtZUJ1UHU6ZDcsaW50ZXJwb2xhdGVHbkJ1OkpVLHNjaGVtZUduQnU6cDcsaW50ZXJwb2xhdGVPclJkOnRXLHNjaGVtZU9yUmQ6ZzcsaW50ZXJwb2xhdGVQdUJ1R246ZVcsc2NoZW1lUHVCdUduOnk3LGludGVycG9sYXRlUHVCdTpyVyxzY2hlbWVQdUJ1Om03LGludGVycG9sYXRlUHVSZDpuVyxzY2hlbWVQdVJkOmI3LGludGVycG9sYXRlUmRQdTppVyxzY2hlbWVSZFB1Ol83LGludGVycG9sYXRlWWxHbkJ1OmFXLHNjaGVtZVlsR25CdTp2NyxpbnRlcnBvbGF0ZVlsR246c1csc2NoZW1lWWxHbjp4NyxpbnRlcnBvbGF0ZVlsT3JCcjpvVyxzY2hlbWVZbE9yQnI6azcsaW50ZXJwb2xhdGVZbE9yUmQ6bFcsc2NoZW1lWWxPclJkOnc3LGludGVycG9sYXRlQmx1ZXM6Y1csc2NoZW1lQmx1ZXM6VDcsaW50ZXJwb2xhdGVHcmVlbnM6dVcsc2NoZW1lR3JlZW5zOkU3LGludGVycG9sYXRlR3JleXM6aFcsc2NoZW1lR3JleXM6QzcsaW50ZXJwb2xhdGVQdXJwbGVzOmZXLHNjaGVtZVB1cnBsZXM6UzcsaW50ZXJwb2xhdGVSZWRzOmRXLHNjaGVtZVJlZHM6QTcsaW50ZXJwb2xhdGVPcmFuZ2VzOnBXLHNjaGVtZU9yYW5nZXM6TTcsaW50ZXJwb2xhdGVDaXZpZGlzOmdXLGludGVycG9sYXRlQ3ViZWhlbGl4RGVmYXVsdDp5VyxpbnRlcnBvbGF0ZVJhaW5ib3c6X1csaW50ZXJwb2xhdGVXYXJtOm1XLGludGVycG9sYXRlQ29vbDpiVyxpbnRlcnBvbGF0ZVNpbmVib3c6a1csaW50ZXJwb2xhdGVUdXJibzp3VyxpbnRlcnBvbGF0ZVZpcmlkaXM6VFcsaW50ZXJwb2xhdGVNYWdtYTpFVyxpbnRlcnBvbGF0ZUluZmVybm86Q1csaW50ZXJwb2xhdGVQbGFzbWE6U1csY3JlYXRlOmhCLGNyZWF0b3I6THUsbG9jYWw6aTUsbWF0Y2hlcjpRMCxuYW1lc3BhY2U6QWwsbmFtZXNwYWNlczpLMCxwb2ludGVyOlRuLHBvaW50ZXJzOmRCLHNlbGVjdDpTdCxzZWxlY3RBbGw6TnUsc2VsZWN0aW9uOnBzLHNlbGVjdG9yOlJ1LHNlbGVjdG9yQWxsOlowLHN0eWxlOmRzLHdpbmRvdzpKMCxhcmM6eWYsYXJlYTpONyxsaW5lOlVhLHBpZTpCNyxhcmVhUmFkaWFsOlA3LHJhZGlhbEFyZWE6UDcsbGluZVJhZGlhbDpGNyxyYWRpYWxMaW5lOkY3LHBvaW50UmFkaWFsOmtjLGxpbms6YmYsbGlua0hvcml6b250YWw6VVcsbGlua1ZlcnRpY2FsOldXLGxpbmtSYWRpYWw6SFcsc3ltYm9sOnRILHN5bWJvbHNTdHJva2U6Slcsc3ltYm9sc0ZpbGw6cmssc3ltYm9sczpyayxzeW1ib2xBc3RlcmlzazpZNyxzeW1ib2xDaXJjbGU6X2Ysc3ltYm9sQ3Jvc3M6VTcsc3ltYm9sRGlhbW9uZDpINyxzeW1ib2xEaWFtb25kMjpHNyxzeW1ib2xQbHVzOmo3LHN5bWJvbFNxdWFyZTokNyxzeW1ib2xTcXVhcmUyOlg3LHN5bWJvbFN0YXI6Wjcsc3ltYm9sVHJpYW5nbGU6UTcsc3ltYm9sVHJpYW5nbGUyOko3LHN5bWJvbFd5ZTp0ayxzeW1ib2xYOmVrLGN1cnZlQmFzaXNDbG9zZWQ6aWssY3VydmVCYXNpc09wZW46c2ssY3VydmVCYXNpczpPcyxjdXJ2ZUJ1bXBYOlY3LGN1cnZlQnVtcFk6ejcsY3VydmVCdW5kbGU6ZUgsY3VydmVDYXJkaW5hbENsb3NlZDpuSCxjdXJ2ZUNhcmRpbmFsT3BlbjppSCxjdXJ2ZUNhcmRpbmFsOnJILGN1cnZlQ2F0bXVsbFJvbUNsb3NlZDpzSCxjdXJ2ZUNhdG11bGxSb21PcGVuOm9ILGN1cnZlQ2F0bXVsbFJvbTphSCxjdXJ2ZUxpbmVhckNsb3NlZDpmayxjdXJ2ZUxpbmVhcjp5bixjdXJ2ZU1vbm90b25lWDpiayxjdXJ2ZU1vbm90b25lWTpfayxjdXJ2ZU5hdHVyYWw6a2ssY3VydmVTdGVwOndrLGN1cnZlU3RlcEFmdGVyOkVrLGN1cnZlU3RlcEJlZm9yZTpUayxzdGFjazp1SCxzdGFja09mZnNldEV4cGFuZDpoSCxzdGFja09mZnNldERpdmVyZ2luZzpmSCxzdGFja09mZnNldE5vbmU6cW8sc3RhY2tPZmZzZXRTaWxob3VldHRlOmRILHN0YWNrT2Zmc2V0V2lnZ2xlOnBILHN0YWNrT3JkZXJBcHBlYXJhbmNlOkNrLHN0YWNrT3JkZXJBc2NlbmRpbmc6U2ssc3RhY2tPcmRlckRlc2NlbmRpbmc6eUgsc3RhY2tPcmRlckluc2lkZU91dDptSCxzdGFja09yZGVyTm9uZTpWbyxzdGFja09yZGVyUmV2ZXJzZTpiSCx0aW1lSW50ZXJ2YWw6eHIsdGltZU1pbGxpc2Vjb25kOmRwLHRpbWVNaWxsaXNlY29uZHM6aTgsdXRjTWlsbGlzZWNvbmQ6ZHAsdXRjTWlsbGlzZWNvbmRzOmk4LHRpbWVTZWNvbmQ6RmEsdGltZVNlY29uZHM6bzgsdXRjU2Vjb25kOkZhLHV0Y1NlY29uZHM6bzgsdGltZU1pbnV0ZTp5cCx0aW1lTWludXRlczp0WSx0aW1lSG91cjptcCx0aW1lSG91cnM6ZVksdGltZURheTpkYyx0aW1lRGF5czpyWSx0aW1lV2VlazpEbyx0aW1lV2Vla3M6ZzgsdGltZVN1bmRheTpEbyx0aW1lU3VuZGF5czpnOCx0aW1lTW9uZGF5OnBjLHRpbWVNb25kYXlzOm5ZLHRpbWVUdWVzZGF5Omg4LHRpbWVUdWVzZGF5czppWSx0aW1lV2VkbmVzZGF5OmY4LHRpbWVXZWRuZXNkYXlzOmFZLHRpbWVUaHVyc2RheTpOcyx0aW1lVGh1cnNkYXlzOnNZLHRpbWVGcmlkYXk6ZDgsdGltZUZyaWRheXM6b1ksdGltZVNhdHVyZGF5OnA4LHRpbWVTYXR1cmRheXM6bFksdGltZU1vbnRoOmJwLHRpbWVNb250aHM6Y1ksdGltZVllYXI6UGEsdGltZVllYXJzOnVZLHV0Y01pbnV0ZTp2cCx1dGNNaW51dGVzOmhZLHV0Y0hvdXI6eHAsdXRjSG91cnM6ZlksdXRjRGF5OmdjLHV0Y0RheXM6ZFksdXRjV2VlazpPbyx1dGNXZWVrczpUOCx1dGNTdW5kYXk6T28sdXRjU3VuZGF5czpUOCx1dGNNb25kYXk6eWMsdXRjTW9uZGF5czpwWSx1dGNUdWVzZGF5OnY4LHV0Y1R1ZXNkYXlzOmdZLHV0Y1dlZG5lc2RheTp4OCx1dGNXZWRuZXNkYXlzOnlZLHV0Y1RodXJzZGF5OkRzLHV0Y1RodXJzZGF5czptWSx1dGNGcmlkYXk6azgsdXRjRnJpZGF5czpiWSx1dGNTYXR1cmRheTp3OCx1dGNTYXR1cmRheXM6X1ksdXRjTW9udGg6a3AsdXRjTW9udGhzOnZZLHV0Y1llYXI6cWEsdXRjWWVhcnM6eFksdXRjVGlja3M6UzgsdXRjVGlja0ludGVydmFsOkE4LHRpbWVUaWNrczpNOCx0aW1lVGlja0ludGVydmFsOkw4LHRpbWVGb3JtYXREZWZhdWx0TG9jYWxlOmo4LGdldCB0aW1lRm9ybWF0KCl7cmV0dXJuIHZjfSxnZXQgdGltZVBhcnNlKCl7cmV0dXJuIEc4fSxnZXQgdXRjRm9ybWF0KCl7cmV0dXJuIGxmfSxnZXQgdXRjUGFyc2UoKXtyZXR1cm4gQ3B9LHRpbWVGb3JtYXRMb2NhbGU6UjgsaXNvRm9ybWF0OndVLGlzb1BhcnNlOkNVLG5vdzpQbCx0aW1lcjpKdSx0aW1lckZsdXNoOko1LHRpbWVvdXQ6X2QsaW50ZXJ2YWw6ckQsdHJhbnNpdGlvbjphdixhY3RpdmU6Rk8saW50ZXJydXB0OnZzLHpvb206RUgsem9vbVRyYW5zZm9ybTpNayx6b29tSWRlbnRpdHk6Q2YsWm9vbVRyYW5zZm9ybTpSaX0sU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZToiTW9kdWxlIn0pKTsvKiEgQGxpY2Vuc2UgRE9NUHVyaWZ5IDIuNC4wIHwgKGMpIEN1cmU1MyBhbmQgb3RoZXIgY29udHJpYnV0b3JzIHwgUmVsZWFzZWQgdW5kZXIgdGhlIEFwYWNoZSBsaWNlbnNlIDIuMCBhbmQgTW96aWxsYSBQdWJsaWMgTGljZW5zZSAyLjAgfCBnaXRodWIuY29tL2N1cmU1My9ET01QdXJpZnkvYmxvYi8yLjQuMC9MSUNFTlNFICovZnVuY3Rpb24gSGEodCl7cmV0dXJuIEhhPXR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJnR5cGVvZiBTeW1ib2wuaXRlcmF0b3I9PSJzeW1ib2wiP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJnR5cGVvZiBTeW1ib2w9PSJmdW5jdGlvbiImJmUuY29uc3RydWN0b3I9PT1TeW1ib2wmJmUhPT1TeW1ib2wucHJvdG90eXBlPyJzeW1ib2wiOnR5cGVvZiBlfSxIYSh0KX1mdW5jdGlvbiB6cCh0LGUpe3JldHVybiB6cD1PYmplY3Quc2V0UHJvdG90eXBlT2Z8fGZ1bmN0aW9uKG4saSl7cmV0dXJuIG4uX19wcm90b19fPWksbn0senAodCxlKX1mdW5jdGlvbiBTSCgpe2lmKHR5cGVvZiBSZWZsZWN0PiJ1Inx8IVJlZmxlY3QuY29uc3RydWN0fHxSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKHR5cGVvZiBQcm94eT09ImZ1bmN0aW9uIilyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLGZ1bmN0aW9uKCl7fSkpLCEwfWNhdGNoe3JldHVybiExfX1mdW5jdGlvbiBTZih0LGUscil7cmV0dXJuIFNIKCk/U2Y9UmVmbGVjdC5jb25zdHJ1Y3Q6U2Y9ZnVuY3Rpb24oaSxhLHMpe3ZhciBvPVtudWxsXTtvLnB1c2guYXBwbHkobyxhKTt2YXIgbD1GdW5jdGlvbi5iaW5kLmFwcGx5KGksbyksdT1uZXcgbDtyZXR1cm4gcyYmenAodSxzLnByb3RvdHlwZSksdX0sU2YuYXBwbHkobnVsbCxhcmd1bWVudHMpfWZ1bmN0aW9uIG5pKHQpe3JldHVybiBBSCh0KXx8TUgodCl8fExIKHQpfHxSSCgpfWZ1bmN0aW9uIEFIKHQpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIFlwKHQpfWZ1bmN0aW9uIE1IKHQpe2lmKHR5cGVvZiBTeW1ib2w8InUiJiZ0W1N5bWJvbC5pdGVyYXRvcl0hPW51bGx8fHRbIkBAaXRlcmF0b3IiXSE9bnVsbClyZXR1cm4gQXJyYXkuZnJvbSh0KX1mdW5jdGlvbiBMSCh0LGUpe2lmKCEhdCl7aWYodHlwZW9mIHQ9PSJzdHJpbmciKXJldHVybiBZcCh0LGUpO3ZhciByPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KS5zbGljZSg4LC0xKTtpZihyPT09Ik9iamVjdCImJnQuY29uc3RydWN0b3ImJihyPXQuY29uc3RydWN0b3IubmFtZSkscj09PSJNYXAifHxyPT09IlNldCIpcmV0dXJuIEFycmF5LmZyb20odCk7aWYocj09PSJBcmd1bWVudHMifHwvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChyKSlyZXR1cm4gWXAodCxlKX19ZnVuY3Rpb24gWXAodCxlKXsoZT09bnVsbHx8ZT50Lmxlbmd0aCkmJihlPXQubGVuZ3RoKTtmb3IodmFyIHI9MCxuPW5ldyBBcnJheShlKTtyPGU7cisrKW5bcl09dFtyXTtyZXR1cm4gbn1mdW5jdGlvbiBSSCgpe3Rocm93IG5ldyBUeXBlRXJyb3IoYEludmFsaWQgYXR0ZW1wdCB0byBzcHJlYWQgbm9uLWl0ZXJhYmxlIGluc3RhbmNlLgpJbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuYCl9dmFyIElIPU9iamVjdC5oYXNPd25Qcm9wZXJ0eSxSaz1PYmplY3Quc2V0UHJvdG90eXBlT2YsTkg9T2JqZWN0LmlzRnJvemVuLEJIPU9iamVjdC5nZXRQcm90b3R5cGVPZixESD1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yLHNuPU9iamVjdC5mcmVlemUsSWk9T2JqZWN0LnNlYWwsT0g9T2JqZWN0LmNyZWF0ZSxJaz10eXBlb2YgUmVmbGVjdDwidSImJlJlZmxlY3QsQWY9SWsuYXBwbHksVXA9SWsuY29uc3RydWN0O0FmfHwoQWY9ZnVuY3Rpb24oZSxyLG4pe3JldHVybiBlLmFwcGx5KHIsbil9KSxzbnx8KHNuPWZ1bmN0aW9uKGUpe3JldHVybiBlfSksSWl8fChJaT1mdW5jdGlvbihlKXtyZXR1cm4gZX0pLFVwfHwoVXA9ZnVuY3Rpb24oZSxyKXtyZXR1cm4gU2YoZSxuaShyKSl9KTt2YXIgRkg9aWkoQXJyYXkucHJvdG90eXBlLmZvckVhY2gpLE5rPWlpKEFycmF5LnByb3RvdHlwZS5wb3ApLFRjPWlpKEFycmF5LnByb3RvdHlwZS5wdXNoKSxNZj1paShTdHJpbmcucHJvdG90eXBlLnRvTG93ZXJDYXNlKSxQSD1paShTdHJpbmcucHJvdG90eXBlLm1hdGNoKSxHYT1paShTdHJpbmcucHJvdG90eXBlLnJlcGxhY2UpLHFIPWlpKFN0cmluZy5wcm90b3R5cGUuaW5kZXhPZiksVkg9aWkoU3RyaW5nLnByb3RvdHlwZS50cmltKSxvbj1paShSZWdFeHAucHJvdG90eXBlLnRlc3QpLFdwPXpIKFR5cGVFcnJvcik7ZnVuY3Rpb24gaWkodCl7cmV0dXJuIGZ1bmN0aW9uKGUpe2Zvcih2YXIgcj1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KHI+MT9yLTE6MCksaT0xO2k8cjtpKyspbltpLTFdPWFyZ3VtZW50c1tpXTtyZXR1cm4gQWYodCxlLG4pfX1mdW5jdGlvbiB6SCh0KXtyZXR1cm4gZnVuY3Rpb24oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCxyPW5ldyBBcnJheShlKSxuPTA7bjxlO24rKylyW25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gVXAodCxyKX19ZnVuY3Rpb24gTWUodCxlLHIpe3I9cnx8TWYsUmsmJlJrKHQsbnVsbCk7Zm9yKHZhciBuPWUubGVuZ3RoO24tLTspe3ZhciBpPWVbbl07aWYodHlwZW9mIGk9PSJzdHJpbmciKXt2YXIgYT1yKGkpO2EhPT1pJiYoTkgoZSl8fChlW25dPWEpLGk9YSl9dFtpXT0hMH1yZXR1cm4gdH1mdW5jdGlvbiBGcyh0KXt2YXIgZT1PSChudWxsKSxyO2ZvcihyIGluIHQpQWYoSUgsdCxbcl0pJiYoZVtyXT10W3JdKTtyZXR1cm4gZX1mdW5jdGlvbiBMZih0LGUpe2Zvcig7dCE9PW51bGw7KXt2YXIgcj1ESCh0LGUpO2lmKHIpe2lmKHIuZ2V0KXJldHVybiBpaShyLmdldCk7aWYodHlwZW9mIHIudmFsdWU9PSJmdW5jdGlvbiIpcmV0dXJuIGlpKHIudmFsdWUpfXQ9QkgodCl9ZnVuY3Rpb24gbihpKXtyZXR1cm4gY29uc29sZS53YXJuKCJmYWxsYmFjayB2YWx1ZSBmb3IiLGkpLG51bGx9cmV0dXJuIG59dmFyIEJrPXNuKFsiYSIsImFiYnIiLCJhY3JvbnltIiwiYWRkcmVzcyIsImFyZWEiLCJhcnRpY2xlIiwiYXNpZGUiLCJhdWRpbyIsImIiLCJiZGkiLCJiZG8iLCJiaWciLCJibGluayIsImJsb2NrcXVvdGUiLCJib2R5IiwiYnIiLCJidXR0b24iLCJjYW52YXMiLCJjYXB0aW9uIiwiY2VudGVyIiwiY2l0ZSIsImNvZGUiLCJjb2wiLCJjb2xncm91cCIsImNvbnRlbnQiLCJkYXRhIiwiZGF0YWxpc3QiLCJkZCIsImRlY29yYXRvciIsImRlbCIsImRldGFpbHMiLCJkZm4iLCJkaWFsb2ciLCJkaXIiLCJkaXYiLCJkbCIsImR0IiwiZWxlbWVudCIsImVtIiwiZmllbGRzZXQiLCJmaWdjYXB0aW9uIiwiZmlndXJlIiwiZm9udCIsImZvb3RlciIsImZvcm0iLCJoMSIsImgyIiwiaDMiLCJoNCIsImg1IiwiaDYiLCJoZWFkIiwiaGVhZGVyIiwiaGdyb3VwIiwiaHIiLCJodG1sIiwiaSIsImltZyIsImlucHV0IiwiaW5zIiwia2JkIiwibGFiZWwiLCJsZWdlbmQiLCJsaSIsIm1haW4iLCJtYXAiLCJtYXJrIiwibWFycXVlZSIsIm1lbnUiLCJtZW51aXRlbSIsIm1ldGVyIiwibmF2Iiwibm9iciIsIm9sIiwib3B0Z3JvdXAiLCJvcHRpb24iLCJvdXRwdXQiLCJwIiwicGljdHVyZSIsInByZSIsInByb2dyZXNzIiwicSIsInJwIiwicnQiLCJydWJ5IiwicyIsInNhbXAiLCJzZWN0aW9uIiwic2VsZWN0Iiwic2hhZG93Iiwic21hbGwiLCJzb3VyY2UiLCJzcGFjZXIiLCJzcGFuIiwic3RyaWtlIiwic3Ryb25nIiwic3R5bGUiLCJzdWIiLCJzdW1tYXJ5Iiwic3VwIiwidGFibGUiLCJ0Ym9keSIsInRkIiwidGVtcGxhdGUiLCJ0ZXh0YXJlYSIsInRmb290IiwidGgiLCJ0aGVhZCIsInRpbWUiLCJ0ciIsInRyYWNrIiwidHQiLCJ1IiwidWwiLCJ2YXIiLCJ2aWRlbyIsIndiciJdKSxIcD1zbihbInN2ZyIsImEiLCJhbHRnbHlwaCIsImFsdGdseXBoZGVmIiwiYWx0Z2x5cGhpdGVtIiwiYW5pbWF0ZWNvbG9yIiwiYW5pbWF0ZW1vdGlvbiIsImFuaW1hdGV0cmFuc2Zvcm0iLCJjaXJjbGUiLCJjbGlwcGF0aCIsImRlZnMiLCJkZXNjIiwiZWxsaXBzZSIsImZpbHRlciIsImZvbnQiLCJnIiwiZ2x5cGgiLCJnbHlwaHJlZiIsImhrZXJuIiwiaW1hZ2UiLCJsaW5lIiwibGluZWFyZ3JhZGllbnQiLCJtYXJrZXIiLCJtYXNrIiwibWV0YWRhdGEiLCJtcGF0aCIsInBhdGgiLCJwYXR0ZXJuIiwicG9seWdvbiIsInBvbHlsaW5lIiwicmFkaWFsZ3JhZGllbnQiLCJyZWN0Iiwic3RvcCIsInN0eWxlIiwic3dpdGNoIiwic3ltYm9sIiwidGV4dCIsInRleHRwYXRoIiwidGl0bGUiLCJ0cmVmIiwidHNwYW4iLCJ2aWV3Iiwidmtlcm4iXSksR3A9c24oWyJmZUJsZW5kIiwiZmVDb2xvck1hdHJpeCIsImZlQ29tcG9uZW50VHJhbnNmZXIiLCJmZUNvbXBvc2l0ZSIsImZlQ29udm9sdmVNYXRyaXgiLCJmZURpZmZ1c2VMaWdodGluZyIsImZlRGlzcGxhY2VtZW50TWFwIiwiZmVEaXN0YW50TGlnaHQiLCJmZUZsb29kIiwiZmVGdW5jQSIsImZlRnVuY0IiLCJmZUZ1bmNHIiwiZmVGdW5jUiIsImZlR2F1c3NpYW5CbHVyIiwiZmVJbWFnZSIsImZlTWVyZ2UiLCJmZU1lcmdlTm9kZSIsImZlTW9ycGhvbG9neSIsImZlT2Zmc2V0IiwiZmVQb2ludExpZ2h0IiwiZmVTcGVjdWxhckxpZ2h0aW5nIiwiZmVTcG90TGlnaHQiLCJmZVRpbGUiLCJmZVR1cmJ1bGVuY2UiXSksWUg9c24oWyJhbmltYXRlIiwiY29sb3ItcHJvZmlsZSIsImN1cnNvciIsImRpc2NhcmQiLCJmZWRyb3BzaGFkb3ciLCJmb250LWZhY2UiLCJmb250LWZhY2UtZm9ybWF0IiwiZm9udC1mYWNlLW5hbWUiLCJmb250LWZhY2Utc3JjIiwiZm9udC1mYWNlLXVyaSIsImZvcmVpZ25vYmplY3QiLCJoYXRjaCIsImhhdGNocGF0aCIsIm1lc2giLCJtZXNoZ3JhZGllbnQiLCJtZXNocGF0Y2giLCJtZXNocm93IiwibWlzc2luZy1nbHlwaCIsInNjcmlwdCIsInNldCIsInNvbGlkY29sb3IiLCJ1bmtub3duIiwidXNlIl0pLGpwPXNuKFsibWF0aCIsIm1lbmNsb3NlIiwibWVycm9yIiwibWZlbmNlZCIsIm1mcmFjIiwibWdseXBoIiwibWkiLCJtbGFiZWxlZHRyIiwibW11bHRpc2NyaXB0cyIsIm1uIiwibW8iLCJtb3ZlciIsIm1wYWRkZWQiLCJtcGhhbnRvbSIsIm1yb290IiwibXJvdyIsIm1zIiwibXNwYWNlIiwibXNxcnQiLCJtc3R5bGUiLCJtc3ViIiwibXN1cCIsIm1zdWJzdXAiLCJtdGFibGUiLCJtdGQiLCJtdGV4dCIsIm10ciIsIm11bmRlciIsIm11bmRlcm92ZXIiXSksVUg9c24oWyJtYWN0aW9uIiwibWFsaWduZ3JvdXAiLCJtYWxpZ25tYXJrIiwibWxvbmdkaXYiLCJtc2NhcnJpZXMiLCJtc2NhcnJ5IiwibXNncm91cCIsIm1zdGFjayIsIm1zbGluZSIsIm1zcm93Iiwic2VtYW50aWNzIiwiYW5ub3RhdGlvbiIsImFubm90YXRpb24teG1sIiwibXByZXNjcmlwdHMiLCJub25lIl0pLERrPXNuKFsiI3RleHQiXSksT2s9c24oWyJhY2NlcHQiLCJhY3Rpb24iLCJhbGlnbiIsImFsdCIsImF1dG9jYXBpdGFsaXplIiwiYXV0b2NvbXBsZXRlIiwiYXV0b3BpY3R1cmVpbnBpY3R1cmUiLCJhdXRvcGxheSIsImJhY2tncm91bmQiLCJiZ2NvbG9yIiwiYm9yZGVyIiwiY2FwdHVyZSIsImNlbGxwYWRkaW5nIiwiY2VsbHNwYWNpbmciLCJjaGVja2VkIiwiY2l0ZSIsImNsYXNzIiwiY2xlYXIiLCJjb2xvciIsImNvbHMiLCJjb2xzcGFuIiwiY29udHJvbHMiLCJjb250cm9sc2xpc3QiLCJjb29yZHMiLCJjcm9zc29yaWdpbiIsImRhdGV0aW1lIiwiZGVjb2RpbmciLCJkZWZhdWx0IiwiZGlyIiwiZGlzYWJsZWQiLCJkaXNhYmxlcGljdHVyZWlucGljdHVyZSIsImRpc2FibGVyZW1vdGVwbGF5YmFjayIsImRvd25sb2FkIiwiZHJhZ2dhYmxlIiwiZW5jdHlwZSIsImVudGVya2V5aGludCIsImZhY2UiLCJmb3IiLCJoZWFkZXJzIiwiaGVpZ2h0IiwiaGlkZGVuIiwiaGlnaCIsImhyZWYiLCJocmVmbGFuZyIsImlkIiwiaW5wdXRtb2RlIiwiaW50ZWdyaXR5IiwiaXNtYXAiLCJraW5kIiwibGFiZWwiLCJsYW5nIiwibGlzdCIsImxvYWRpbmciLCJsb29wIiwibG93IiwibWF4IiwibWF4bGVuZ3RoIiwibWVkaWEiLCJtZXRob2QiLCJtaW4iLCJtaW5sZW5ndGgiLCJtdWx0aXBsZSIsIm11dGVkIiwibmFtZSIsIm5vbmNlIiwibm9zaGFkZSIsIm5vdmFsaWRhdGUiLCJub3dyYXAiLCJvcGVuIiwib3B0aW11bSIsInBhdHRlcm4iLCJwbGFjZWhvbGRlciIsInBsYXlzaW5saW5lIiwicG9zdGVyIiwicHJlbG9hZCIsInB1YmRhdGUiLCJyYWRpb2dyb3VwIiwicmVhZG9ubHkiLCJyZWwiLCJyZXF1aXJlZCIsInJldiIsInJldmVyc2VkIiwicm9sZSIsInJvd3MiLCJyb3dzcGFuIiwic3BlbGxjaGVjayIsInNjb3BlIiwic2VsZWN0ZWQiLCJzaGFwZSIsInNpemUiLCJzaXplcyIsInNwYW4iLCJzcmNsYW5nIiwic3RhcnQiLCJzcmMiLCJzcmNzZXQiLCJzdGVwIiwic3R5bGUiLCJzdW1tYXJ5IiwidGFiaW5kZXgiLCJ0aXRsZSIsInRyYW5zbGF0ZSIsInR5cGUiLCJ1c2VtYXAiLCJ2YWxpZ24iLCJ2YWx1ZSIsIndpZHRoIiwieG1sbnMiLCJzbG90Il0pLCRwPXNuKFsiYWNjZW50LWhlaWdodCIsImFjY3VtdWxhdGUiLCJhZGRpdGl2ZSIsImFsaWdubWVudC1iYXNlbGluZSIsImFzY2VudCIsImF0dHJpYnV0ZW5hbWUiLCJhdHRyaWJ1dGV0eXBlIiwiYXppbXV0aCIsImJhc2VmcmVxdWVuY3kiLCJiYXNlbGluZS1zaGlmdCIsImJlZ2luIiwiYmlhcyIsImJ5IiwiY2xhc3MiLCJjbGlwIiwiY2xpcHBhdGh1bml0cyIsImNsaXAtcGF0aCIsImNsaXAtcnVsZSIsImNvbG9yIiwiY29sb3ItaW50ZXJwb2xhdGlvbiIsImNvbG9yLWludGVycG9sYXRpb24tZmlsdGVycyIsImNvbG9yLXByb2ZpbGUiLCJjb2xvci1yZW5kZXJpbmciLCJjeCIsImN5IiwiZCIsImR4IiwiZHkiLCJkaWZmdXNlY29uc3RhbnQiLCJkaXJlY3Rpb24iLCJkaXNwbGF5IiwiZGl2aXNvciIsImR1ciIsImVkZ2Vtb2RlIiwiZWxldmF0aW9uIiwiZW5kIiwiZmlsbCIsImZpbGwtb3BhY2l0eSIsImZpbGwtcnVsZSIsImZpbHRlciIsImZpbHRlcnVuaXRzIiwiZmxvb2QtY29sb3IiLCJmbG9vZC1vcGFjaXR5IiwiZm9udC1mYW1pbHkiLCJmb250LXNpemUiLCJmb250LXNpemUtYWRqdXN0IiwiZm9udC1zdHJldGNoIiwiZm9udC1zdHlsZSIsImZvbnQtdmFyaWFudCIsImZvbnQtd2VpZ2h0IiwiZngiLCJmeSIsImcxIiwiZzIiLCJnbHlwaC1uYW1lIiwiZ2x5cGhyZWYiLCJncmFkaWVudHVuaXRzIiwiZ3JhZGllbnR0cmFuc2Zvcm0iLCJoZWlnaHQiLCJocmVmIiwiaWQiLCJpbWFnZS1yZW5kZXJpbmciLCJpbiIsImluMiIsImsiLCJrMSIsImsyIiwiazMiLCJrNCIsImtlcm5pbmciLCJrZXlwb2ludHMiLCJrZXlzcGxpbmVzIiwia2V5dGltZXMiLCJsYW5nIiwibGVuZ3RoYWRqdXN0IiwibGV0dGVyLXNwYWNpbmciLCJrZXJuZWxtYXRyaXgiLCJrZXJuZWx1bml0bGVuZ3RoIiwibGlnaHRpbmctY29sb3IiLCJsb2NhbCIsIm1hcmtlci1lbmQiLCJtYXJrZXItbWlkIiwibWFya2VyLXN0YXJ0IiwibWFya2VyaGVpZ2h0IiwibWFya2VydW5pdHMiLCJtYXJrZXJ3aWR0aCIsIm1hc2tjb250ZW50dW5pdHMiLCJtYXNrdW5pdHMiLCJtYXgiLCJtYXNrIiwibWVkaWEiLCJtZXRob2QiLCJtb2RlIiwibWluIiwibmFtZSIsIm51bW9jdGF2ZXMiLCJvZmZzZXQiLCJvcGVyYXRvciIsIm9wYWNpdHkiLCJvcmRlciIsIm9yaWVudCIsIm9yaWVudGF0aW9uIiwib3JpZ2luIiwib3ZlcmZsb3ciLCJwYWludC1vcmRlciIsInBhdGgiLCJwYXRobGVuZ3RoIiwicGF0dGVybmNvbnRlbnR1bml0cyIsInBhdHRlcm50cmFuc2Zvcm0iLCJwYXR0ZXJudW5pdHMiLCJwb2ludHMiLCJwcmVzZXJ2ZWFscGhhIiwicHJlc2VydmVhc3BlY3RyYXRpbyIsInByaW1pdGl2ZXVuaXRzIiwiciIsInJ4IiwicnkiLCJyYWRpdXMiLCJyZWZ4IiwicmVmeSIsInJlcGVhdGNvdW50IiwicmVwZWF0ZHVyIiwicmVzdGFydCIsInJlc3VsdCIsInJvdGF0ZSIsInNjYWxlIiwic2VlZCIsInNoYXBlLXJlbmRlcmluZyIsInNwZWN1bGFyY29uc3RhbnQiLCJzcGVjdWxhcmV4cG9uZW50Iiwic3ByZWFkbWV0aG9kIiwic3RhcnRvZmZzZXQiLCJzdGRkZXZpYXRpb24iLCJzdGl0Y2h0aWxlcyIsInN0b3AtY29sb3IiLCJzdG9wLW9wYWNpdHkiLCJzdHJva2UtZGFzaGFycmF5Iiwic3Ryb2tlLWRhc2hvZmZzZXQiLCJzdHJva2UtbGluZWNhcCIsInN0cm9rZS1saW5lam9pbiIsInN0cm9rZS1taXRlcmxpbWl0Iiwic3Ryb2tlLW9wYWNpdHkiLCJzdHJva2UiLCJzdHJva2Utd2lkdGgiLCJzdHlsZSIsInN1cmZhY2VzY2FsZSIsInN5c3RlbWxhbmd1YWdlIiwidGFiaW5kZXgiLCJ0YXJnZXR4IiwidGFyZ2V0eSIsInRyYW5zZm9ybSIsInRyYW5zZm9ybS1vcmlnaW4iLCJ0ZXh0LWFuY2hvciIsInRleHQtZGVjb3JhdGlvbiIsInRleHQtcmVuZGVyaW5nIiwidGV4dGxlbmd0aCIsInR5cGUiLCJ1MSIsInUyIiwidW5pY29kZSIsInZhbHVlcyIsInZpZXdib3giLCJ2aXNpYmlsaXR5IiwidmVyc2lvbiIsInZlcnQtYWR2LXkiLCJ2ZXJ0LW9yaWdpbi14IiwidmVydC1vcmlnaW4teSIsIndpZHRoIiwid29yZC1zcGFjaW5nIiwid3JhcCIsIndyaXRpbmctbW9kZSIsInhjaGFubmVsc2VsZWN0b3IiLCJ5Y2hhbm5lbHNlbGVjdG9yIiwieCIsIngxIiwieDIiLCJ4bWxucyIsInkiLCJ5MSIsInkyIiwieiIsInpvb21hbmRwYW4iXSksRms9c24oWyJhY2NlbnQiLCJhY2NlbnR1bmRlciIsImFsaWduIiwiYmV2ZWxsZWQiLCJjbG9zZSIsImNvbHVtbnNhbGlnbiIsImNvbHVtbmxpbmVzIiwiY29sdW1uc3BhbiIsImRlbm9tYWxpZ24iLCJkZXB0aCIsImRpciIsImRpc3BsYXkiLCJkaXNwbGF5c3R5bGUiLCJlbmNvZGluZyIsImZlbmNlIiwiZnJhbWUiLCJoZWlnaHQiLCJocmVmIiwiaWQiLCJsYXJnZW9wIiwibGVuZ3RoIiwibGluZXRoaWNrbmVzcyIsImxzcGFjZSIsImxxdW90ZSIsIm1hdGhiYWNrZ3JvdW5kIiwibWF0aGNvbG9yIiwibWF0aHNpemUiLCJtYXRodmFyaWFudCIsIm1heHNpemUiLCJtaW5zaXplIiwibW92YWJsZWxpbWl0cyIsIm5vdGF0aW9uIiwibnVtYWxpZ24iLCJvcGVuIiwicm93YWxpZ24iLCJyb3dsaW5lcyIsInJvd3NwYWNpbmciLCJyb3dzcGFuIiwicnNwYWNlIiwicnF1b3RlIiwic2NyaXB0bGV2ZWwiLCJzY3JpcHRtaW5zaXplIiwic2NyaXB0c2l6ZW11bHRpcGxpZXIiLCJzZWxlY3Rpb24iLCJzZXBhcmF0b3IiLCJzZXBhcmF0b3JzIiwic3RyZXRjaHkiLCJzdWJzY3JpcHRzaGlmdCIsInN1cHNjcmlwdHNoaWZ0Iiwic3ltbWV0cmljIiwidm9mZnNldCIsIndpZHRoIiwieG1sbnMiXSksUmY9c24oWyJ4bGluazpocmVmIiwieG1sOmlkIiwieGxpbms6dGl0bGUiLCJ4bWw6c3BhY2UiLCJ4bWxuczp4bGluayJdKSxXSD1JaSgvXHtce1tcd1xXXSp8W1x3XFddKlx9XH0vZ20pLEhIPUlpKC88JVtcd1xXXSp8W1x3XFddKiU+L2dtKSxHSD1JaSgvXmRhdGEtW1wtXHcuXHUwMEI3LVx1RkZGRl0vKSxqSD1JaSgvXmFyaWEtW1wtXHddKyQvKSwkSD1JaSgvXig/Oig/Oig/OmZ8aHQpdHBzP3xtYWlsdG98dGVsfGNhbGx0b3xjaWR8eG1wcCk6fFteYS16XXxbYS16Ky5cLV0rKD86W15hLXorLlwtOl18JCkpL2kpLFhIPUlpKC9eKD86XHcrc2NyaXB0fGRhdGEpOi9pKSxLSD1JaSgvW1x1MDAwMC1cdTAwMjBcdTAwQTBcdTE2ODBcdTE4MEVcdTIwMDAtXHUyMDI5XHUyMDVGXHUzMDAwXS9nKSxaSD1JaSgvXmh0bWwkL2kpLFFIPWZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVvZiB3aW5kb3c+InUiP251bGw6d2luZG93fSxKSD1mdW5jdGlvbihlLHIpe2lmKEhhKGUpIT09Im9iamVjdCJ8fHR5cGVvZiBlLmNyZWF0ZVBvbGljeSE9ImZ1bmN0aW9uIilyZXR1cm4gbnVsbDt2YXIgbj1udWxsLGk9ImRhdGEtdHQtcG9saWN5LXN1ZmZpeCI7ci5jdXJyZW50U2NyaXB0JiZyLmN1cnJlbnRTY3JpcHQuaGFzQXR0cmlidXRlKGkpJiYobj1yLmN1cnJlbnRTY3JpcHQuZ2V0QXR0cmlidXRlKGkpKTt2YXIgYT0iZG9tcHVyaWZ5Iisobj8iIyIrbjoiIik7dHJ5e3JldHVybiBlLmNyZWF0ZVBvbGljeShhLHtjcmVhdGVIVE1MOmZ1bmN0aW9uKG8pe3JldHVybiBvfSxjcmVhdGVTY3JpcHRVUkw6ZnVuY3Rpb24obyl7cmV0dXJuIG99fSl9Y2F0Y2h7cmV0dXJuIGNvbnNvbGUud2FybigiVHJ1c3RlZFR5cGVzIHBvbGljeSAiK2ErIiBjb3VsZCBub3QgYmUgY3JlYXRlZC4iKSxudWxsfX07ZnVuY3Rpb24gUGsoKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJmFyZ3VtZW50c1swXSE9PXZvaWQgMD9hcmd1bWVudHNbMF06UUgoKSxlPWZ1bmN0aW9uKHN0KXtyZXR1cm4gUGsoc3QpfTtpZihlLnZlcnNpb249IjIuNC4wIixlLnJlbW92ZWQ9W10sIXR8fCF0LmRvY3VtZW50fHx0LmRvY3VtZW50Lm5vZGVUeXBlIT09OSlyZXR1cm4gZS5pc1N1cHBvcnRlZD0hMSxlO3ZhciByPXQuZG9jdW1lbnQsbj10LmRvY3VtZW50LGk9dC5Eb2N1bWVudEZyYWdtZW50LGE9dC5IVE1MVGVtcGxhdGVFbGVtZW50LHM9dC5Ob2RlLG89dC5FbGVtZW50LGw9dC5Ob2RlRmlsdGVyLHU9dC5OYW1lZE5vZGVNYXAsaD11PT09dm9pZCAwP3QuTmFtZWROb2RlTWFwfHx0Lk1vek5hbWVkQXR0ck1hcDp1LGQ9dC5IVE1MRm9ybUVsZW1lbnQsZj10LkRPTVBhcnNlcixwPXQudHJ1c3RlZFR5cGVzLG09by5wcm90b3R5cGUsXz1MZihtLCJjbG9uZU5vZGUiKSx5PUxmKG0sIm5leHRTaWJsaW5nIiksYj1MZihtLCJjaGlsZE5vZGVzIikseD1MZihtLCJwYXJlbnROb2RlIik7aWYodHlwZW9mIGE9PSJmdW5jdGlvbiIpe3ZhciBrPW4uY3JlYXRlRWxlbWVudCgidGVtcGxhdGUiKTtrLmNvbnRlbnQmJmsuY29udGVudC5vd25lckRvY3VtZW50JiYobj1rLmNvbnRlbnQub3duZXJEb2N1bWVudCl9dmFyIFQ9SkgocCxyKSxDPVQ/VC5jcmVhdGVIVE1MKCIiKToiIixNPW4sUz1NLmltcGxlbWVudGF0aW9uLFI9TS5jcmVhdGVOb2RlSXRlcmF0b3IsQT1NLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQsTD1NLmdldEVsZW1lbnRzQnlUYWdOYW1lLHY9ci5pbXBvcnROb2RlLEI9e307dHJ5e0I9RnMobikuZG9jdW1lbnRNb2RlP24uZG9jdW1lbnRNb2RlOnt9fWNhdGNoe312YXIgdz17fTtlLmlzU3VwcG9ydGVkPXR5cGVvZiB4PT0iZnVuY3Rpb24iJiZTJiZ0eXBlb2YgUy5jcmVhdGVIVE1MRG9jdW1lbnQ8InUiJiZCIT09OTt2YXIgRD1XSCxOPUhILHo9R0gsWD1qSCxjdD1YSCxKPUtILFk9JEgsJD1udWxsLGx0PU1lKHt9LFtdLmNvbmNhdChuaShCayksbmkoSHApLG5pKEdwKSxuaShqcCksbmkoRGspKSksdXQ9bnVsbCxXPU1lKHt9LFtdLmNvbmNhdChuaShPayksbmkoJHApLG5pKEZrKSxuaShSZikpKSx0dD1PYmplY3Quc2VhbChPYmplY3QuY3JlYXRlKG51bGwse3RhZ05hbWVDaGVjazp7d3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiExLGVudW1lcmFibGU6ITAsdmFsdWU6bnVsbH0sYXR0cmlidXRlTmFtZUNoZWNrOnt3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMCx2YWx1ZTpudWxsfSxhbGxvd0N1c3RvbWl6ZWRCdWlsdEluRWxlbWVudHM6e3dyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMSxlbnVtZXJhYmxlOiEwLHZhbHVlOiExfX0pKSxLPW51bGwsaXQ9bnVsbCxaPSEwLFY9ITAsUT0hMSxxPSExLFU9ITEsRj0hMSxqPSExLFA9ITEsZXQ9ITEsYXQ9ITEsSXQ9ITAsTHQ9ITEsUnQ9InVzZXItY29udGVudC0iLEN0PSEwLHB0PSExLG10PXt9LHZ0PW51bGwsVHQ9TWUoe30sWyJhbm5vdGF0aW9uLXhtbCIsImF1ZGlvIiwiY29sZ3JvdXAiLCJkZXNjIiwiZm9yZWlnbm9iamVjdCIsImhlYWQiLCJpZnJhbWUiLCJtYXRoIiwibWkiLCJtbiIsIm1vIiwibXMiLCJtdGV4dCIsIm5vZW1iZWQiLCJub2ZyYW1lcyIsIm5vc2NyaXB0IiwicGxhaW50ZXh0Iiwic2NyaXB0Iiwic3R5bGUiLCJzdmciLCJ0ZW1wbGF0ZSIsInRoZWFkIiwidGl0bGUiLCJ2aWRlbyIsInhtcCJdKSxmdD1udWxsLGxlPU1lKHt9LFsiYXVkaW8iLCJ2aWRlbyIsImltZyIsInNvdXJjZSIsImltYWdlIiwidHJhY2siXSksRHQ9bnVsbCxHdD1NZSh7fSxbImFsdCIsImNsYXNzIiwiZm9yIiwiaWQiLCJsYWJlbCIsIm5hbWUiLCJwYXR0ZXJuIiwicGxhY2Vob2xkZXIiLCJyb2xlIiwic3VtbWFyeSIsInRpdGxlIiwidmFsdWUiLCJzdHlsZSIsInhtbG5zIl0pLCR0PSJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MIixRdD0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLHdlPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIixqdD13ZSxGdD0hMSx6dCx3dD1bImFwcGxpY2F0aW9uL3hodG1sK3htbCIsInRleHQvaHRtbCJdLGJ0PSJ0ZXh0L2h0bWwiLEV0LGt0PW51bGwsVXQ9bi5jcmVhdGVFbGVtZW50KCJmb3JtIiksZ3Q9ZnVuY3Rpb24oc3Qpe3JldHVybiBzdCBpbnN0YW5jZW9mIFJlZ0V4cHx8c3QgaW5zdGFuY2VvZiBGdW5jdGlvbn0saGU9ZnVuY3Rpb24oc3Qpe2t0JiZrdD09PXN0fHwoKCFzdHx8SGEoc3QpIT09Im9iamVjdCIpJiYoc3Q9e30pLHN0PUZzKHN0KSx6dD13dC5pbmRleE9mKHN0LlBBUlNFUl9NRURJQV9UWVBFKT09PS0xP3p0PWJ0Onp0PXN0LlBBUlNFUl9NRURJQV9UWVBFLEV0PXp0PT09ImFwcGxpY2F0aW9uL3hodG1sK3htbCI/ZnVuY3Rpb24oQXQpe3JldHVybiBBdH06TWYsJD0iQUxMT1dFRF9UQUdTImluIHN0P01lKHt9LHN0LkFMTE9XRURfVEFHUyxFdCk6bHQsdXQ9IkFMTE9XRURfQVRUUiJpbiBzdD9NZSh7fSxzdC5BTExPV0VEX0FUVFIsRXQpOlcsRHQ9IkFERF9VUklfU0FGRV9BVFRSImluIHN0P01lKEZzKEd0KSxzdC5BRERfVVJJX1NBRkVfQVRUUixFdCk6R3QsZnQ9IkFERF9EQVRBX1VSSV9UQUdTImluIHN0P01lKEZzKGxlKSxzdC5BRERfREFUQV9VUklfVEFHUyxFdCk6bGUsdnQ9IkZPUkJJRF9DT05URU5UUyJpbiBzdD9NZSh7fSxzdC5GT1JCSURfQ09OVEVOVFMsRXQpOlR0LEs9IkZPUkJJRF9UQUdTImluIHN0P01lKHt9LHN0LkZPUkJJRF9UQUdTLEV0KTp7fSxpdD0iRk9SQklEX0FUVFIiaW4gc3Q/TWUoe30sc3QuRk9SQklEX0FUVFIsRXQpOnt9LG10PSJVU0VfUFJPRklMRVMiaW4gc3Q/c3QuVVNFX1BST0ZJTEVTOiExLFo9c3QuQUxMT1dfQVJJQV9BVFRSIT09ITEsVj1zdC5BTExPV19EQVRBX0FUVFIhPT0hMSxRPXN0LkFMTE9XX1VOS05PV05fUFJPVE9DT0xTfHwhMSxxPXN0LlNBRkVfRk9SX1RFTVBMQVRFU3x8ITEsVT1zdC5XSE9MRV9ET0NVTUVOVHx8ITEsUD1zdC5SRVRVUk5fRE9NfHwhMSxldD1zdC5SRVRVUk5fRE9NX0ZSQUdNRU5UfHwhMSxhdD1zdC5SRVRVUk5fVFJVU1RFRF9UWVBFfHwhMSxqPXN0LkZPUkNFX0JPRFl8fCExLEl0PXN0LlNBTklUSVpFX0RPTSE9PSExLEx0PXN0LlNBTklUSVpFX05BTUVEX1BST1BTfHwhMSxDdD1zdC5LRUVQX0NPTlRFTlQhPT0hMSxwdD1zdC5JTl9QTEFDRXx8ITEsWT1zdC5BTExPV0VEX1VSSV9SRUdFWFB8fFksanQ9c3QuTkFNRVNQQUNFfHx3ZSxzdC5DVVNUT01fRUxFTUVOVF9IQU5ETElORyYmZ3Qoc3QuQ1VTVE9NX0VMRU1FTlRfSEFORExJTkcudGFnTmFtZUNoZWNrKSYmKHR0LnRhZ05hbWVDaGVjaz1zdC5DVVNUT01fRUxFTUVOVF9IQU5ETElORy50YWdOYW1lQ2hlY2spLHN0LkNVU1RPTV9FTEVNRU5UX0hBTkRMSU5HJiZndChzdC5DVVNUT01fRUxFTUVOVF9IQU5ETElORy5hdHRyaWJ1dGVOYW1lQ2hlY2spJiYodHQuYXR0cmlidXRlTmFtZUNoZWNrPXN0LkNVU1RPTV9FTEVNRU5UX0hBTkRMSU5HLmF0dHJpYnV0ZU5hbWVDaGVjayksc3QuQ1VTVE9NX0VMRU1FTlRfSEFORExJTkcmJnR5cGVvZiBzdC5DVVNUT01fRUxFTUVOVF9IQU5ETElORy5hbGxvd0N1c3RvbWl6ZWRCdWlsdEluRWxlbWVudHM9PSJib29sZWFuIiYmKHR0LmFsbG93Q3VzdG9taXplZEJ1aWx0SW5FbGVtZW50cz1zdC5DVVNUT01fRUxFTUVOVF9IQU5ETElORy5hbGxvd0N1c3RvbWl6ZWRCdWlsdEluRWxlbWVudHMpLHEmJihWPSExKSxldCYmKFA9ITApLG10JiYoJD1NZSh7fSxuaShEaykpLHV0PVtdLG10Lmh0bWw9PT0hMCYmKE1lKCQsQmspLE1lKHV0LE9rKSksbXQuc3ZnPT09ITAmJihNZSgkLEhwKSxNZSh1dCwkcCksTWUodXQsUmYpKSxtdC5zdmdGaWx0ZXJzPT09ITAmJihNZSgkLEdwKSxNZSh1dCwkcCksTWUodXQsUmYpKSxtdC5tYXRoTWw9PT0hMCYmKE1lKCQsanApLE1lKHV0LEZrKSxNZSh1dCxSZikpKSxzdC5BRERfVEFHUyYmKCQ9PT1sdCYmKCQ9RnMoJCkpLE1lKCQsc3QuQUREX1RBR1MsRXQpKSxzdC5BRERfQVRUUiYmKHV0PT09VyYmKHV0PUZzKHV0KSksTWUodXQsc3QuQUREX0FUVFIsRXQpKSxzdC5BRERfVVJJX1NBRkVfQVRUUiYmTWUoRHQsc3QuQUREX1VSSV9TQUZFX0FUVFIsRXQpLHN0LkZPUkJJRF9DT05URU5UUyYmKHZ0PT09VHQmJih2dD1Gcyh2dCkpLE1lKHZ0LHN0LkZPUkJJRF9DT05URU5UUyxFdCkpLEN0JiYoJFsiI3RleHQiXT0hMCksVSYmTWUoJCxbImh0bWwiLCJoZWFkIiwiYm9keSJdKSwkLnRhYmxlJiYoTWUoJCxbInRib2R5Il0pLGRlbGV0ZSBLLnRib2R5KSxzbiYmc24oc3QpLGt0PXN0KX0seXQ9TWUoe30sWyJtaSIsIm1vIiwibW4iLCJtcyIsIm10ZXh0Il0pLG5lPU1lKHt9LFsiZm9yZWlnbm9iamVjdCIsImRlc2MiLCJ0aXRsZSIsImFubm90YXRpb24teG1sIl0pLHZlPU1lKHt9LFsidGl0bGUiLCJzdHlsZSIsImZvbnQiLCJhIiwic2NyaXB0Il0pLHllPU1lKHt9LEhwKTtNZSh5ZSxHcCksTWUoeWUsWUgpO3ZhciBiZT1NZSh7fSxqcCk7TWUoYmUsVUgpO3ZhciBUZT1mdW5jdGlvbihzdCl7dmFyIEF0PXgoc3QpOyghQXR8fCFBdC50YWdOYW1lKSYmKEF0PXtuYW1lc3BhY2VVUkk6d2UsdGFnTmFtZToidGVtcGxhdGUifSk7dmFyIE50PU1mKHN0LnRhZ05hbWUpLEp0PU1mKEF0LnRhZ05hbWUpO3JldHVybiBzdC5uYW1lc3BhY2VVUkk9PT1RdD9BdC5uYW1lc3BhY2VVUkk9PT13ZT9OdD09PSJzdmciOkF0Lm5hbWVzcGFjZVVSST09PSR0P050PT09InN2ZyImJihKdD09PSJhbm5vdGF0aW9uLXhtbCJ8fHl0W0p0XSk6Qm9vbGVhbih5ZVtOdF0pOnN0Lm5hbWVzcGFjZVVSST09PSR0P0F0Lm5hbWVzcGFjZVVSST09PXdlP050PT09Im1hdGgiOkF0Lm5hbWVzcGFjZVVSST09PVF0P050PT09Im1hdGgiJiZuZVtKdF06Qm9vbGVhbihiZVtOdF0pOnN0Lm5hbWVzcGFjZVVSST09PXdlP0F0Lm5hbWVzcGFjZVVSST09PVF0JiYhbmVbSnRdfHxBdC5uYW1lc3BhY2VVUkk9PT0kdCYmIXl0W0p0XT8hMTohYmVbTnRdJiYodmVbTnRdfHwheWVbTnRdKTohMX0sV3Q9ZnVuY3Rpb24oc3Qpe1RjKGUucmVtb3ZlZCx7ZWxlbWVudDpzdH0pO3RyeXtzdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHN0KX1jYXRjaHt0cnl7c3Qub3V0ZXJIVE1MPUN9Y2F0Y2h7c3QucmVtb3ZlKCl9fX0sc2U9ZnVuY3Rpb24oc3QsQXQpe3RyeXtUYyhlLnJlbW92ZWQse2F0dHJpYnV0ZTpBdC5nZXRBdHRyaWJ1dGVOb2RlKHN0KSxmcm9tOkF0fSl9Y2F0Y2h7VGMoZS5yZW1vdmVkLHthdHRyaWJ1dGU6bnVsbCxmcm9tOkF0fSl9aWYoQXQucmVtb3ZlQXR0cmlidXRlKHN0KSxzdD09PSJpcyImJiF1dFtzdF0paWYoUHx8ZXQpdHJ5e1d0KEF0KX1jYXRjaHt9ZWxzZSB0cnl7QXQuc2V0QXR0cmlidXRlKHN0LCIiKX1jYXRjaHt9fSxtZT1mdW5jdGlvbihzdCl7dmFyIEF0LE50O2lmKGopc3Q9IjxyZW1vdmU+PC9yZW1vdmU+IitzdDtlbHNle3ZhciBKdD1QSChzdCwvXltcclxuXHQgXSsvKTtOdD1KdCYmSnRbMF19enQ9PT0iYXBwbGljYXRpb24veGh0bWwreG1sIiYmKHN0PSc8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+PGhlYWQ+PC9oZWFkPjxib2R5Picrc3QrIjwvYm9keT48L2h0bWw+Iik7dmFyIHplPVQ/VC5jcmVhdGVIVE1MKHN0KTpzdDtpZihqdD09PXdlKXRyeXtBdD1uZXcgZigpLnBhcnNlRnJvbVN0cmluZyh6ZSx6dCl9Y2F0Y2h7fWlmKCFBdHx8IUF0LmRvY3VtZW50RWxlbWVudCl7QXQ9Uy5jcmVhdGVEb2N1bWVudChqdCwidGVtcGxhdGUiLG51bGwpO3RyeXtBdC5kb2N1bWVudEVsZW1lbnQuaW5uZXJIVE1MPUZ0PyIiOnplfWNhdGNoe319dmFyIFBlPUF0LmJvZHl8fEF0LmRvY3VtZW50RWxlbWVudDtyZXR1cm4gc3QmJk50JiZQZS5pbnNlcnRCZWZvcmUobi5jcmVhdGVUZXh0Tm9kZShOdCksUGUuY2hpbGROb2Rlc1swXXx8bnVsbCksanQ9PT13ZT9MLmNhbGwoQXQsVT8iaHRtbCI6ImJvZHkiKVswXTpVP0F0LmRvY3VtZW50RWxlbWVudDpQZX0sdWU9ZnVuY3Rpb24oc3Qpe3JldHVybiBSLmNhbGwoc3Qub3duZXJEb2N1bWVudHx8c3Qsc3QsbC5TSE9XX0VMRU1FTlR8bC5TSE9XX0NPTU1FTlR8bC5TSE9XX1RFWFQsbnVsbCwhMSl9LF9hPWZ1bmN0aW9uKHN0KXtyZXR1cm4gc3QgaW5zdGFuY2VvZiBkJiYodHlwZW9mIHN0Lm5vZGVOYW1lIT0ic3RyaW5nInx8dHlwZW9mIHN0LnRleHRDb250ZW50IT0ic3RyaW5nInx8dHlwZW9mIHN0LnJlbW92ZUNoaWxkIT0iZnVuY3Rpb24ifHwhKHN0LmF0dHJpYnV0ZXMgaW5zdGFuY2VvZiBoKXx8dHlwZW9mIHN0LnJlbW92ZUF0dHJpYnV0ZSE9ImZ1bmN0aW9uInx8dHlwZW9mIHN0LnNldEF0dHJpYnV0ZSE9ImZ1bmN0aW9uInx8dHlwZW9mIHN0Lm5hbWVzcGFjZVVSSSE9InN0cmluZyJ8fHR5cGVvZiBzdC5pbnNlcnRCZWZvcmUhPSJmdW5jdGlvbiIpfSxIcj1mdW5jdGlvbihzdCl7cmV0dXJuIEhhKHMpPT09Im9iamVjdCI/c3QgaW5zdGFuY2VvZiBzOnN0JiZIYShzdCk9PT0ib2JqZWN0IiYmdHlwZW9mIHN0Lm5vZGVUeXBlPT0ibnVtYmVyIiYmdHlwZW9mIHN0Lm5vZGVOYW1lPT0ic3RyaW5nIn0sSWU9ZnVuY3Rpb24oc3QsQXQsTnQpeyF3W3N0XXx8Rkgod1tzdF0sZnVuY3Rpb24oSnQpe0p0LmNhbGwoZSxBdCxOdCxrdCl9KX0sb2U9ZnVuY3Rpb24oc3Qpe3ZhciBBdDtpZihJZSgiYmVmb3JlU2FuaXRpemVFbGVtZW50cyIsc3QsbnVsbCksX2Eoc3QpfHxvbigvW1x1MDA4MC1cdUZGRkZdLyxzdC5ub2RlTmFtZSkpcmV0dXJuIFd0KHN0KSwhMDt2YXIgTnQ9RXQoc3Qubm9kZU5hbWUpO2lmKEllKCJ1cG9uU2FuaXRpemVFbGVtZW50IixzdCx7dGFnTmFtZTpOdCxhbGxvd2VkVGFnczokfSksc3QuaGFzQ2hpbGROb2RlcygpJiYhSHIoc3QuZmlyc3RFbGVtZW50Q2hpbGQpJiYoIUhyKHN0LmNvbnRlbnQpfHwhSHIoc3QuY29udGVudC5maXJzdEVsZW1lbnRDaGlsZCkpJiZvbigvPFsvXHddL2csc3QuaW5uZXJIVE1MKSYmb24oLzxbL1x3XS9nLHN0LnRleHRDb250ZW50KXx8TnQ9PT0ic2VsZWN0IiYmb24oLzx0ZW1wbGF0ZS9pLHN0LmlubmVySFRNTCkpcmV0dXJuIFd0KHN0KSwhMDtpZighJFtOdF18fEtbTnRdKXtpZighS1tOdF0mJndyKE50KSYmKHR0LnRhZ05hbWVDaGVjayBpbnN0YW5jZW9mIFJlZ0V4cCYmb24odHQudGFnTmFtZUNoZWNrLE50KXx8dHQudGFnTmFtZUNoZWNrIGluc3RhbmNlb2YgRnVuY3Rpb24mJnR0LnRhZ05hbWVDaGVjayhOdCkpKXJldHVybiExO2lmKEN0JiYhdnRbTnRdKXt2YXIgSnQ9eChzdCl8fHN0LnBhcmVudE5vZGUsemU9YihzdCl8fHN0LmNoaWxkTm9kZXM7aWYoemUmJkp0KWZvcih2YXIgUGU9emUubGVuZ3RoLHFlPVBlLTE7cWU+PTA7LS1xZSlKdC5pbnNlcnRCZWZvcmUoXyh6ZVtxZV0sITApLHkoc3QpKX1yZXR1cm4gV3Qoc3QpLCEwfXJldHVybiBzdCBpbnN0YW5jZW9mIG8mJiFUZShzdCl8fChOdD09PSJub3NjcmlwdCJ8fE50PT09Im5vZW1iZWQiKSYmb24oLzxcL25vKHNjcmlwdHxlbWJlZCkvaSxzdC5pbm5lckhUTUwpPyhXdChzdCksITApOihxJiZzdC5ub2RlVHlwZT09PTMmJihBdD1zdC50ZXh0Q29udGVudCxBdD1HYShBdCxELCIgIiksQXQ9R2EoQXQsTiwiICIpLHN0LnRleHRDb250ZW50IT09QXQmJihUYyhlLnJlbW92ZWQse2VsZW1lbnQ6c3QuY2xvbmVOb2RlKCl9KSxzdC50ZXh0Q29udGVudD1BdCkpLEllKCJhZnRlclNhbml0aXplRWxlbWVudHMiLHN0LG51bGwpLCExKX0sS2U9ZnVuY3Rpb24oc3QsQXQsTnQpe2lmKEl0JiYoQXQ9PT0iaWQifHxBdD09PSJuYW1lIikmJihOdCBpbiBufHxOdCBpbiBVdCkpcmV0dXJuITE7aWYoIShWJiYhaXRbQXRdJiZvbih6LEF0KSkpe2lmKCEoWiYmb24oWCxBdCkpKXtpZighdXRbQXRdfHxpdFtBdF0pe2lmKCEod3Ioc3QpJiYodHQudGFnTmFtZUNoZWNrIGluc3RhbmNlb2YgUmVnRXhwJiZvbih0dC50YWdOYW1lQ2hlY2ssc3QpfHx0dC50YWdOYW1lQ2hlY2sgaW5zdGFuY2VvZiBGdW5jdGlvbiYmdHQudGFnTmFtZUNoZWNrKHN0KSkmJih0dC5hdHRyaWJ1dGVOYW1lQ2hlY2sgaW5zdGFuY2VvZiBSZWdFeHAmJm9uKHR0LmF0dHJpYnV0ZU5hbWVDaGVjayxBdCl8fHR0LmF0dHJpYnV0ZU5hbWVDaGVjayBpbnN0YW5jZW9mIEZ1bmN0aW9uJiZ0dC5hdHRyaWJ1dGVOYW1lQ2hlY2soQXQpKXx8QXQ9PT0iaXMiJiZ0dC5hbGxvd0N1c3RvbWl6ZWRCdWlsdEluRWxlbWVudHMmJih0dC50YWdOYW1lQ2hlY2sgaW5zdGFuY2VvZiBSZWdFeHAmJm9uKHR0LnRhZ05hbWVDaGVjayxOdCl8fHR0LnRhZ05hbWVDaGVjayBpbnN0YW5jZW9mIEZ1bmN0aW9uJiZ0dC50YWdOYW1lQ2hlY2soTnQpKSkpcmV0dXJuITF9ZWxzZSBpZighRHRbQXRdKXtpZighb24oWSxHYShOdCxKLCIiKSkpe2lmKCEoKEF0PT09InNyYyJ8fEF0PT09InhsaW5rOmhyZWYifHxBdD09PSJocmVmIikmJnN0IT09InNjcmlwdCImJnFIKE50LCJkYXRhOiIpPT09MCYmZnRbc3RdKSl7aWYoIShRJiYhb24oY3QsR2EoTnQsSiwiIikpKSl7aWYoTnQpcmV0dXJuITF9fX19fX1yZXR1cm4hMH0sd3I9ZnVuY3Rpb24oc3Qpe3JldHVybiBzdC5pbmRleE9mKCItIik+MH0sR2U9ZnVuY3Rpb24oc3Qpe3ZhciBBdCxOdCxKdCx6ZTtJZSgiYmVmb3JlU2FuaXRpemVBdHRyaWJ1dGVzIixzdCxudWxsKTt2YXIgUGU9c3QuYXR0cmlidXRlcztpZighIVBlKXt2YXIgcWU9e2F0dHJOYW1lOiIiLGF0dHJWYWx1ZToiIixrZWVwQXR0cjohMCxhbGxvd2VkQXR0cmlidXRlczp1dH07Zm9yKHplPVBlLmxlbmd0aDt6ZS0tOyl7QXQ9UGVbemVdO3ZhciBUcj1BdCxWZT1Uci5uYW1lLHZhPVRyLm5hbWVzcGFjZVVSSTtpZihOdD1WZT09PSJ2YWx1ZSI/QXQudmFsdWU6VkgoQXQudmFsdWUpLEp0PUV0KFZlKSxxZS5hdHRyTmFtZT1KdCxxZS5hdHRyVmFsdWU9TnQscWUua2VlcEF0dHI9ITAscWUuZm9yY2VLZWVwQXR0cj12b2lkIDAsSWUoInVwb25TYW5pdGl6ZUF0dHJpYnV0ZSIsc3QscWUpLE50PXFlLmF0dHJWYWx1ZSwhcWUuZm9yY2VLZWVwQXR0ciYmKHNlKFZlLHN0KSwhIXFlLmtlZXBBdHRyKSl7aWYob24oL1wvPi9pLE50KSl7c2UoVmUsc3QpO2NvbnRpbnVlfXEmJihOdD1HYShOdCxELCIgIiksTnQ9R2EoTnQsTiwiICIpKTt2YXIgQ2U9RXQoc3Qubm9kZU5hbWUpO2lmKCEhS2UoQ2UsSnQsTnQpKXtpZihMdCYmKEp0PT09ImlkInx8SnQ9PT0ibmFtZSIpJiYoc2UoVmUsc3QpLE50PVJ0K050KSxUJiZIYShwKT09PSJvYmplY3QiJiZ0eXBlb2YgcC5nZXRBdHRyaWJ1dGVUeXBlPT0iZnVuY3Rpb24iJiYhdmEpc3dpdGNoKHAuZ2V0QXR0cmlidXRlVHlwZShDZSxKdCkpe2Nhc2UiVHJ1c3RlZEhUTUwiOk50PVQuY3JlYXRlSFRNTChOdCk7YnJlYWs7Y2FzZSJUcnVzdGVkU2NyaXB0VVJMIjpOdD1ULmNyZWF0ZVNjcmlwdFVSTChOdCk7YnJlYWt9dHJ5e3ZhP3N0LnNldEF0dHJpYnV0ZU5TKHZhLFZlLE50KTpzdC5zZXRBdHRyaWJ1dGUoVmUsTnQpLE5rKGUucmVtb3ZlZCl9Y2F0Y2h7fX19fUllKCJhZnRlclNhbml0aXplQXR0cmlidXRlcyIsc3QsbnVsbCl9fSxaZT1mdW5jdGlvbiBxdChzdCl7dmFyIEF0LE50PXVlKHN0KTtmb3IoSWUoImJlZm9yZVNhbml0aXplU2hhZG93RE9NIixzdCxudWxsKTtBdD1OdC5uZXh0Tm9kZSgpOylJZSgidXBvblNhbml0aXplU2hhZG93Tm9kZSIsQXQsbnVsbCksIW9lKEF0KSYmKEF0LmNvbnRlbnQgaW5zdGFuY2VvZiBpJiZxdChBdC5jb250ZW50KSxHZShBdCkpO0llKCJhZnRlclNhbml0aXplU2hhZG93RE9NIixzdCxudWxsKX07cmV0dXJuIGUuc2FuaXRpemU9ZnVuY3Rpb24ocXQpe3ZhciBzdD1hcmd1bWVudHMubGVuZ3RoPjEmJmFyZ3VtZW50c1sxXSE9PXZvaWQgMD9hcmd1bWVudHNbMV06e30sQXQsTnQsSnQsemUsUGU7aWYoRnQ9IXF0LEZ0JiYocXQ9IjwhLS0+IiksdHlwZW9mIHF0IT0ic3RyaW5nIiYmIUhyKHF0KSl7aWYodHlwZW9mIHF0LnRvU3RyaW5nIT0iZnVuY3Rpb24iKXRocm93IFdwKCJ0b1N0cmluZyBpcyBub3QgYSBmdW5jdGlvbiIpO2lmKHF0PXF0LnRvU3RyaW5nKCksdHlwZW9mIHF0IT0ic3RyaW5nIil0aHJvdyBXcCgiZGlydHkgaXMgbm90IGEgc3RyaW5nLCBhYm9ydGluZyIpfWlmKCFlLmlzU3VwcG9ydGVkKXtpZihIYSh0LnRvU3RhdGljSFRNTCk9PT0ib2JqZWN0Inx8dHlwZW9mIHQudG9TdGF0aWNIVE1MPT0iZnVuY3Rpb24iKXtpZih0eXBlb2YgcXQ9PSJzdHJpbmciKXJldHVybiB0LnRvU3RhdGljSFRNTChxdCk7aWYoSHIocXQpKXJldHVybiB0LnRvU3RhdGljSFRNTChxdC5vdXRlckhUTUwpfXJldHVybiBxdH1pZihGfHxoZShzdCksZS5yZW1vdmVkPVtdLHR5cGVvZiBxdD09InN0cmluZyImJihwdD0hMSkscHQpe2lmKHF0Lm5vZGVOYW1lKXt2YXIgcWU9RXQocXQubm9kZU5hbWUpO2lmKCEkW3FlXXx8S1txZV0pdGhyb3cgV3AoInJvb3Qgbm9kZSBpcyBmb3JiaWRkZW4gYW5kIGNhbm5vdCBiZSBzYW5pdGl6ZWQgaW4tcGxhY2UiKX19ZWxzZSBpZihxdCBpbnN0YW5jZW9mIHMpQXQ9bWUoIjwhLS0tLT4iKSxOdD1BdC5vd25lckRvY3VtZW50LmltcG9ydE5vZGUocXQsITApLE50Lm5vZGVUeXBlPT09MSYmTnQubm9kZU5hbWU9PT0iQk9EWSJ8fE50Lm5vZGVOYW1lPT09IkhUTUwiP0F0PU50OkF0LmFwcGVuZENoaWxkKE50KTtlbHNle2lmKCFQJiYhcSYmIVUmJnF0LmluZGV4T2YoIjwiKT09PS0xKXJldHVybiBUJiZhdD9ULmNyZWF0ZUhUTUwocXQpOnF0O2lmKEF0PW1lKHF0KSwhQXQpcmV0dXJuIFA/bnVsbDphdD9DOiIifUF0JiZqJiZXdChBdC5maXJzdENoaWxkKTtmb3IodmFyIFRyPXVlKHB0P3F0OkF0KTtKdD1Uci5uZXh0Tm9kZSgpOylKdC5ub2RlVHlwZT09PTMmJkp0PT09emV8fG9lKEp0KXx8KEp0LmNvbnRlbnQgaW5zdGFuY2VvZiBpJiZaZShKdC5jb250ZW50KSxHZShKdCksemU9SnQpO2lmKHplPW51bGwscHQpcmV0dXJuIHF0O2lmKFApe2lmKGV0KWZvcihQZT1BLmNhbGwoQXQub3duZXJEb2N1bWVudCk7QXQuZmlyc3RDaGlsZDspUGUuYXBwZW5kQ2hpbGQoQXQuZmlyc3RDaGlsZCk7ZWxzZSBQZT1BdDtyZXR1cm4gdXQuc2hhZG93cm9vdCYmKFBlPXYuY2FsbChyLFBlLCEwKSksUGV9dmFyIFZlPVU/QXQub3V0ZXJIVE1MOkF0LmlubmVySFRNTDtyZXR1cm4gVSYmJFsiIWRvY3R5cGUiXSYmQXQub3duZXJEb2N1bWVudCYmQXQub3duZXJEb2N1bWVudC5kb2N0eXBlJiZBdC5vd25lckRvY3VtZW50LmRvY3R5cGUubmFtZSYmb24oWkgsQXQub3duZXJEb2N1bWVudC5kb2N0eXBlLm5hbWUpJiYoVmU9IjwhRE9DVFlQRSAiK0F0Lm93bmVyRG9jdW1lbnQuZG9jdHlwZS5uYW1lK2A+CmArVmUpLHEmJihWZT1HYShWZSxELCIgIiksVmU9R2EoVmUsTiwiICIpKSxUJiZhdD9ULmNyZWF0ZUhUTUwoVmUpOlZlfSxlLnNldENvbmZpZz1mdW5jdGlvbihxdCl7aGUocXQpLEY9ITB9LGUuY2xlYXJDb25maWc9ZnVuY3Rpb24oKXtrdD1udWxsLEY9ITF9LGUuaXNWYWxpZEF0dHJpYnV0ZT1mdW5jdGlvbihxdCxzdCxBdCl7a3R8fGhlKHt9KTt2YXIgTnQ9RXQocXQpLEp0PUV0KHN0KTtyZXR1cm4gS2UoTnQsSnQsQXQpfSxlLmFkZEhvb2s9ZnVuY3Rpb24ocXQsc3Qpe3R5cGVvZiBzdD09ImZ1bmN0aW9uIiYmKHdbcXRdPXdbcXRdfHxbXSxUYyh3W3F0XSxzdCkpfSxlLnJlbW92ZUhvb2s9ZnVuY3Rpb24ocXQpe2lmKHdbcXRdKXJldHVybiBOayh3W3F0XSl9LGUucmVtb3ZlSG9va3M9ZnVuY3Rpb24ocXQpe3dbcXRdJiYod1txdF09W10pfSxlLnJlbW92ZUFsbEhvb2tzPWZ1bmN0aW9uKCl7dz17fX0sZX12YXIgRWM9UGsoKTtjb25zdCB0Rz10PT50P3prKHQpLnJlcGxhY2UoL1xcbi9nLCIjYnIjIikuc3BsaXQoIiNiciMiKTpbIiJdLHFrPXQ9PkVjLnNhbml0aXplKHQpLFZrPSh0LGUpPT57dmFyIHI7aWYoKChyPWUuZmxvd2NoYXJ0KT09bnVsbD92b2lkIDA6ci5odG1sTGFiZWxzKSE9PSExKXtjb25zdCBuPWUuc2VjdXJpdHlMZXZlbDtuPT09ImFudGlzY3JpcHQifHxuPT09InN0cmljdCI/dD1xayh0KTpuIT09Imxvb3NlIiYmKHQ9emsodCksdD10LnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpLHQ9dC5yZXBsYWNlKC89L2csIiZlcXVhbHM7IiksdD1pRyh0KSl9cmV0dXJuIHR9LGFpPSh0LGUpPT50JiYoZS5kb21wdXJpZnlDb25maWc/dD1FYy5zYW5pdGl6ZShWayh0LGUpLGUuZG9tcHVyaWZ5Q29uZmlnKS50b1N0cmluZygpOnQ9RWMuc2FuaXRpemUoVmsodCxlKSksdCksZUc9KHQsZSk9PnR5cGVvZiB0PT0ic3RyaW5nIj9haSh0LGUpOnQuZmxhdCgpLm1hcChyPT5haShyLGUpKSxJZj0vPGJyXHMqXC8/Pi9naSxyRz10PT5JZi50ZXN0KHQpLG5HPXQ9PnQuc3BsaXQoSWYpLGlHPXQ9PnQucmVwbGFjZSgvI2JyIy9nLCI8YnIvPiIpLHprPXQ9PnQucmVwbGFjZShJZiwiI2JyIyIpLGFHPXQ9PntsZXQgZT0iIjtyZXR1cm4gdCYmKGU9d2luZG93LmxvY2F0aW9uLnByb3RvY29sKyIvLyIrd2luZG93LmxvY2F0aW9uLmhvc3Qrd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lK3dpbmRvdy5sb2NhdGlvbi5zZWFyY2gsZT1lLnJlcGxhY2VBbGwoL1woL2csIlxcKCIpLGU9ZS5yZXBsYWNlQWxsKC9cKS9nLCJcXCkiKSksZX0sTXI9dD0+ISh0PT09ITF8fFsiZmFsc2UiLCJudWxsIiwiMCJdLmluY2x1ZGVzKFN0cmluZyh0KS50cmltKCkudG9Mb3dlckNhc2UoKSkpLGphPWZ1bmN0aW9uKHQpe2xldCBlPXQ7cmV0dXJuIHQuaW5kZXhPZigifiIpIT09LTE/KGU9ZS5yZXBsYWNlKC9+KFtefl0uKikvLCI8JDEiKSxlPWUucmVwbGFjZSgvfihbXn5dKikkLywiPiQxIiksamEoZSkpOmV9LHBlPXtnZXRSb3dzOnRHLHNhbml0aXplVGV4dDphaSxzYW5pdGl6ZVRleHRPckFycmF5OmVHLGhhc0JyZWFrczpyRyxzcGxpdEJyZWFrczpuRyxsaW5lQnJlYWtSZWdleDpJZixyZW1vdmVTY3JpcHQ6cWssZ2V0VXJsOmFHLGV2YWx1YXRlOk1yfSxOZj17bWluOntyOjAsZzowLGI6MCxzOjAsbDowLGE6MH0sbWF4OntyOjI1NSxnOjI1NSxiOjI1NSxoOjM2MCxzOjEwMCxsOjEwMCxhOjF9LGNsYW1wOntyOnQ9PnQ+PTI1NT8yNTU6dDwwPzA6dCxnOnQ9PnQ+PTI1NT8yNTU6dDwwPzA6dCxiOnQ9PnQ+PTI1NT8yNTU6dDwwPzA6dCxoOnQ9PnQlMzYwLHM6dD0+dD49MTAwPzEwMDp0PDA/MDp0LGw6dD0+dD49MTAwPzEwMDp0PDA/MDp0LGE6dD0+dD49MT8xOnQ8MD8wOnR9LHRvTGluZWFyOnQ9Pntjb25zdCBlPXQvMjU1O3JldHVybiB0Pi4wMzkyOD9NYXRoLnBvdygoZSsuMDU1KS8xLjA1NSwyLjQpOmUvMTIuOTJ9LGh1ZTJyZ2I6KHQsZSxyKT0+KHI8MCYmKHIrPTEpLHI+MSYmKHItPTEpLHI8MS82P3QrKGUtdCkqNipyOnI8MS8yP2U6cjwyLzM/dCsoZS10KSooMi8zLXIpKjY6dCksaHNsMnJnYjooe2g6dCxzOmUsbDpyfSxuKT0+e2lmKCFlKXJldHVybiByKjIuNTU7dC89MzYwLGUvPTEwMCxyLz0xMDA7Y29uc3QgaT1yPC41P3IqKDErZSk6citlLXIqZSxhPTIqci1pO3N3aXRjaChuKXtjYXNlInIiOnJldHVybiBOZi5odWUycmdiKGEsaSx0KzEvMykqMjU1O2Nhc2UiZyI6cmV0dXJuIE5mLmh1ZTJyZ2IoYSxpLHQpKjI1NTtjYXNlImIiOnJldHVybiBOZi5odWUycmdiKGEsaSx0LTEvMykqMjU1fX0scmdiMmhzbDooe3I6dCxnOmUsYjpyfSxuKT0+e3QvPTI1NSxlLz0yNTUsci89MjU1O2NvbnN0IGk9TWF0aC5tYXgodCxlLHIpLGE9TWF0aC5taW4odCxlLHIpLHM9KGkrYSkvMjtpZihuPT09ImwiKXJldHVybiBzKjEwMDtpZihpPT09YSlyZXR1cm4gMDtjb25zdCBvPWktYSxsPXM+LjU/by8oMi1pLWEpOm8vKGkrYSk7aWYobj09PSJzIilyZXR1cm4gbCoxMDA7c3dpdGNoKGkpe2Nhc2UgdDpyZXR1cm4oKGUtcikvbysoZTxyPzY6MCkpKjYwO2Nhc2UgZTpyZXR1cm4oKHItdCkvbysyKSo2MDtjYXNlIHI6cmV0dXJuKCh0LWUpL28rNCkqNjA7ZGVmYXVsdDpyZXR1cm4tMX19fSxrZT17Y2hhbm5lbDpOZixsYW5nOntjbGFtcDoodCxlLHIpPT5lPnI/TWF0aC5taW4oZSxNYXRoLm1heChyLHQpKTpNYXRoLm1pbihyLE1hdGgubWF4KGUsdCkpLHJvdW5kOnQ9Pk1hdGgucm91bmQodCoxZTEwKS8xZTEwfSx1bml0OntkZWMyaGV4OnQ9Pntjb25zdCBlPU1hdGgucm91bmQodCkudG9TdHJpbmcoMTYpO3JldHVybiBlLmxlbmd0aD4xP2U6YDAke2V9YH19fSwkYT17fTtmb3IobGV0IHQ9MDt0PD0yNTU7dCsrKSRhW3RdPWtlLnVuaXQuZGVjMmhleCh0KTtjb25zdCB6cj17QUxMOjAsUkdCOjEsSFNMOjJ9O2NsYXNzIHNHe2NvbnN0cnVjdG9yKCl7dGhpcy50eXBlPXpyLkFMTH1nZXQoKXtyZXR1cm4gdGhpcy50eXBlfXNldChlKXtpZih0aGlzLnR5cGUmJnRoaXMudHlwZSE9PWUpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgY2hhbmdlIGJvdGggUkdCIGFuZCBIU0wgY2hhbm5lbHMgYXQgdGhlIHNhbWUgdGltZSIpO3RoaXMudHlwZT1lfXJlc2V0KCl7dGhpcy50eXBlPXpyLkFMTH1pcyhlKXtyZXR1cm4gdGhpcy50eXBlPT09ZX19Y29uc3Qgb0c9c0c7Y2xhc3MgbEd7Y29uc3RydWN0b3IoZSxyKXt0aGlzLmNvbG9yPXIsdGhpcy5jaGFuZ2VkPSExLHRoaXMuZGF0YT1lLHRoaXMudHlwZT1uZXcgb0d9c2V0KGUscil7cmV0dXJuIHRoaXMuY29sb3I9cix0aGlzLmNoYW5nZWQ9ITEsdGhpcy5kYXRhPWUsdGhpcy50eXBlLnR5cGU9enIuQUxMLHRoaXN9X2Vuc3VyZUhTTCgpe2NvbnN0IGU9dGhpcy5kYXRhLHtoOnIsczpuLGw6aX09ZTtyPT09dm9pZCAwJiYoZS5oPWtlLmNoYW5uZWwucmdiMmhzbChlLCJoIikpLG49PT12b2lkIDAmJihlLnM9a2UuY2hhbm5lbC5yZ2IyaHNsKGUsInMiKSksaT09PXZvaWQgMCYmKGUubD1rZS5jaGFubmVsLnJnYjJoc2woZSwibCIpKX1fZW5zdXJlUkdCKCl7Y29uc3QgZT10aGlzLmRhdGEse3IsZzpuLGI6aX09ZTtyPT09dm9pZCAwJiYoZS5yPWtlLmNoYW5uZWwuaHNsMnJnYihlLCJyIikpLG49PT12b2lkIDAmJihlLmc9a2UuY2hhbm5lbC5oc2wycmdiKGUsImciKSksaT09PXZvaWQgMCYmKGUuYj1rZS5jaGFubmVsLmhzbDJyZ2IoZSwiYiIpKX1nZXQgcigpe2NvbnN0IGU9dGhpcy5kYXRhLHI9ZS5yO3JldHVybiF0aGlzLnR5cGUuaXMoenIuSFNMKSYmciE9PXZvaWQgMD9yOih0aGlzLl9lbnN1cmVIU0woKSxrZS5jaGFubmVsLmhzbDJyZ2IoZSwiciIpKX1nZXQgZygpe2NvbnN0IGU9dGhpcy5kYXRhLHI9ZS5nO3JldHVybiF0aGlzLnR5cGUuaXMoenIuSFNMKSYmciE9PXZvaWQgMD9yOih0aGlzLl9lbnN1cmVIU0woKSxrZS5jaGFubmVsLmhzbDJyZ2IoZSwiZyIpKX1nZXQgYigpe2NvbnN0IGU9dGhpcy5kYXRhLHI9ZS5iO3JldHVybiF0aGlzLnR5cGUuaXMoenIuSFNMKSYmciE9PXZvaWQgMD9yOih0aGlzLl9lbnN1cmVIU0woKSxrZS5jaGFubmVsLmhzbDJyZ2IoZSwiYiIpKX1nZXQgaCgpe2NvbnN0IGU9dGhpcy5kYXRhLHI9ZS5oO3JldHVybiF0aGlzLnR5cGUuaXMoenIuUkdCKSYmciE9PXZvaWQgMD9yOih0aGlzLl9lbnN1cmVSR0IoKSxrZS5jaGFubmVsLnJnYjJoc2woZSwiaCIpKX1nZXQgcygpe2NvbnN0IGU9dGhpcy5kYXRhLHI9ZS5zO3JldHVybiF0aGlzLnR5cGUuaXMoenIuUkdCKSYmciE9PXZvaWQgMD9yOih0aGlzLl9lbnN1cmVSR0IoKSxrZS5jaGFubmVsLnJnYjJoc2woZSwicyIpKX1nZXQgbCgpe2NvbnN0IGU9dGhpcy5kYXRhLHI9ZS5sO3JldHVybiF0aGlzLnR5cGUuaXMoenIuUkdCKSYmciE9PXZvaWQgMD9yOih0aGlzLl9lbnN1cmVSR0IoKSxrZS5jaGFubmVsLnJnYjJoc2woZSwibCIpKX1nZXQgYSgpe3JldHVybiB0aGlzLmRhdGEuYX1zZXQgcihlKXt0aGlzLnR5cGUuc2V0KHpyLlJHQiksdGhpcy5jaGFuZ2VkPSEwLHRoaXMuZGF0YS5yPWV9c2V0IGcoZSl7dGhpcy50eXBlLnNldCh6ci5SR0IpLHRoaXMuY2hhbmdlZD0hMCx0aGlzLmRhdGEuZz1lfXNldCBiKGUpe3RoaXMudHlwZS5zZXQoenIuUkdCKSx0aGlzLmNoYW5nZWQ9ITAsdGhpcy5kYXRhLmI9ZX1zZXQgaChlKXt0aGlzLnR5cGUuc2V0KHpyLkhTTCksdGhpcy5jaGFuZ2VkPSEwLHRoaXMuZGF0YS5oPWV9c2V0IHMoZSl7dGhpcy50eXBlLnNldCh6ci5IU0wpLHRoaXMuY2hhbmdlZD0hMCx0aGlzLmRhdGEucz1lfXNldCBsKGUpe3RoaXMudHlwZS5zZXQoenIuSFNMKSx0aGlzLmNoYW5nZWQ9ITAsdGhpcy5kYXRhLmw9ZX1zZXQgYShlKXt0aGlzLmNoYW5nZWQ9ITAsdGhpcy5kYXRhLmE9ZX19Y29uc3QgY0c9bEcsQmY9bmV3IGNHKHtyOjAsZzowLGI6MCxhOjB9LCJ0cmFuc3BhcmVudCIpLFlrPXtyZTovXiMoKD86W2EtZjAtOV17Mn0pezIsNH18W2EtZjAtOV17M30pJC9pLHBhcnNlOnQ9PntpZih0LmNoYXJDb2RlQXQoMCkhPT0zNSlyZXR1cm47Y29uc3QgZT10Lm1hdGNoKFlrLnJlKTtpZighZSlyZXR1cm47Y29uc3Qgcj1lWzFdLG49cGFyc2VJbnQociwxNiksaT1yLmxlbmd0aCxhPWklND09PTAscz1pPjQsbz1zPzE6MTcsbD1zPzg6NCx1PWE/MDotMSxoPXM/MjU1OjE1O3JldHVybiBCZi5zZXQoe3I6KG4+PmwqKHUrMykmaCkqbyxnOihuPj5sKih1KzIpJmgpKm8sYjoobj4+bCoodSsxKSZoKSpvLGE6YT8obiZoKSpvLzI1NToxfSx0KX0sc3RyaW5naWZ5OnQ9Pntjb25zdHtyOmUsZzpyLGI6bixhOml9PXQ7cmV0dXJuIGk8MT9gIyR7JGFbTWF0aC5yb3VuZChlKV19JHskYVtNYXRoLnJvdW5kKHIpXX0keyRhW01hdGgucm91bmQobildfSR7JGFbTWF0aC5yb3VuZChpKjI1NSldfWA6YCMkeyRhW01hdGgucm91bmQoZSldfSR7JGFbTWF0aC5yb3VuZChyKV19JHskYVtNYXRoLnJvdW5kKG4pXX1gfX0sQ2M9WWssRGY9e3JlOi9eaHNsYT9cKFxzKj8oLT8oPzpcZCsoPzpcLlxkKyk/fCg/OlwuXGQrKSkoPzplLT9cZCspPyg/OmRlZ3xncmFkfHJhZHx0dXJuKT8pXHMqPyg/Oix8XHMpXHMqPygtPyg/OlxkKyg/OlwuXGQrKT98KD86XC5cZCspKSg/OmUtP1xkKyk/JSlccyo/KD86LHxccylccyo/KC0/KD86XGQrKD86XC5cZCspP3woPzpcLlxkKykpKD86ZS0/XGQrKT8lKSg/OlxzKj8oPzosfFwvKVxzKj9cKz8oLT8oPzpcZCsoPzpcLlxkKyk/fCg/OlwuXGQrKSkoPzplLT9cZCspPyglKT8pKT9ccyo/XCkkL2ksaHVlUmU6L14oLis/KShkZWd8Z3JhZHxyYWR8dHVybikkL2ksX2h1ZTJkZWc6dD0+e2NvbnN0IGU9dC5tYXRjaChEZi5odWVSZSk7aWYoZSl7Y29uc3RbLHIsbl09ZTtzd2l0Y2gobil7Y2FzZSJncmFkIjpyZXR1cm4ga2UuY2hhbm5lbC5jbGFtcC5oKHBhcnNlRmxvYXQocikqLjkpO2Nhc2UicmFkIjpyZXR1cm4ga2UuY2hhbm5lbC5jbGFtcC5oKHBhcnNlRmxvYXQocikqMTgwL01hdGguUEkpO2Nhc2UidHVybiI6cmV0dXJuIGtlLmNoYW5uZWwuY2xhbXAuaChwYXJzZUZsb2F0KHIpKjM2MCl9fXJldHVybiBrZS5jaGFubmVsLmNsYW1wLmgocGFyc2VGbG9hdCh0KSl9LHBhcnNlOnQ9Pntjb25zdCBlPXQuY2hhckNvZGVBdCgwKTtpZihlIT09MTA0JiZlIT09NzIpcmV0dXJuO2NvbnN0IHI9dC5tYXRjaChEZi5yZSk7aWYoIXIpcmV0dXJuO2NvbnN0WyxuLGksYSxzLG9dPXI7cmV0dXJuIEJmLnNldCh7aDpEZi5faHVlMmRlZyhuKSxzOmtlLmNoYW5uZWwuY2xhbXAucyhwYXJzZUZsb2F0KGkpKSxsOmtlLmNoYW5uZWwuY2xhbXAubChwYXJzZUZsb2F0KGEpKSxhOnM/a2UuY2hhbm5lbC5jbGFtcC5hKG8/cGFyc2VGbG9hdChzKS8xMDA6cGFyc2VGbG9hdChzKSk6MX0sdCl9LHN0cmluZ2lmeTp0PT57Y29uc3R7aDplLHM6cixsOm4sYTppfT10O3JldHVybiBpPDE/YGhzbGEoJHtrZS5sYW5nLnJvdW5kKGUpfSwgJHtrZS5sYW5nLnJvdW5kKHIpfSUsICR7a2UubGFuZy5yb3VuZChuKX0lLCAke2l9KWA6YGhzbCgke2tlLmxhbmcucm91bmQoZSl9LCAke2tlLmxhbmcucm91bmQocil9JSwgJHtrZS5sYW5nLnJvdW5kKG4pfSUpYH19LE9mPURmLEZmPXtjb2xvcnM6e2FsaWNlYmx1ZToiI2YwZjhmZiIsYW50aXF1ZXdoaXRlOiIjZmFlYmQ3IixhcXVhOiIjMDBmZmZmIixhcXVhbWFyaW5lOiIjN2ZmZmQ0IixhenVyZToiI2YwZmZmZiIsYmVpZ2U6IiNmNWY1ZGMiLGJpc3F1ZToiI2ZmZTRjNCIsYmxhY2s6IiMwMDAwMDAiLGJsYW5jaGVkYWxtb25kOiIjZmZlYmNkIixibHVlOiIjMDAwMGZmIixibHVldmlvbGV0OiIjOGEyYmUyIixicm93bjoiI2E1MmEyYSIsYnVybHl3b29kOiIjZGViODg3IixjYWRldGJsdWU6IiM1ZjllYTAiLGNoYXJ0cmV1c2U6IiM3ZmZmMDAiLGNob2NvbGF0ZToiI2QyNjkxZSIsY29yYWw6IiNmZjdmNTAiLGNvcm5mbG93ZXJibHVlOiIjNjQ5NWVkIixjb3Juc2lsazoiI2ZmZjhkYyIsY3JpbXNvbjoiI2RjMTQzYyIsY3lhbmFxdWE6IiMwMGZmZmYiLGRhcmtibHVlOiIjMDAwMDhiIixkYXJrY3lhbjoiIzAwOGI4YiIsZGFya2dvbGRlbnJvZDoiI2I4ODYwYiIsZGFya2dyYXk6IiNhOWE5YTkiLGRhcmtncmVlbjoiIzAwNjQwMCIsZGFya2dyZXk6IiNhOWE5YTkiLGRhcmtraGFraToiI2JkYjc2YiIsZGFya21hZ2VudGE6IiM4YjAwOGIiLGRhcmtvbGl2ZWdyZWVuOiIjNTU2YjJmIixkYXJrb3JhbmdlOiIjZmY4YzAwIixkYXJrb3JjaGlkOiIjOTkzMmNjIixkYXJrcmVkOiIjOGIwMDAwIixkYXJrc2FsbW9uOiIjZTk5NjdhIixkYXJrc2VhZ3JlZW46IiM4ZmJjOGYiLGRhcmtzbGF0ZWJsdWU6IiM0ODNkOGIiLGRhcmtzbGF0ZWdyYXk6IiMyZjRmNGYiLGRhcmtzbGF0ZWdyZXk6IiMyZjRmNGYiLGRhcmt0dXJxdW9pc2U6IiMwMGNlZDEiLGRhcmt2aW9sZXQ6IiM5NDAwZDMiLGRlZXBwaW5rOiIjZmYxNDkzIixkZWVwc2t5Ymx1ZToiIzAwYmZmZiIsZGltZ3JheToiIzY5Njk2OSIsZGltZ3JleToiIzY5Njk2OSIsZG9kZ2VyYmx1ZToiIzFlOTBmZiIsZmlyZWJyaWNrOiIjYjIyMjIyIixmbG9yYWx3aGl0ZToiI2ZmZmFmMCIsZm9yZXN0Z3JlZW46IiMyMjhiMjIiLGZ1Y2hzaWE6IiNmZjAwZmYiLGdhaW5zYm9ybzoiI2RjZGNkYyIsZ2hvc3R3aGl0ZToiI2Y4ZjhmZiIsZ29sZDoiI2ZmZDcwMCIsZ29sZGVucm9kOiIjZGFhNTIwIixncmF5OiIjODA4MDgwIixncmVlbjoiIzAwODAwMCIsZ3JlZW55ZWxsb3c6IiNhZGZmMmYiLGdyZXk6IiM4MDgwODAiLGhvbmV5ZGV3OiIjZjBmZmYwIixob3RwaW5rOiIjZmY2OWI0IixpbmRpYW5yZWQ6IiNjZDVjNWMiLGluZGlnbzoiIzRiMDA4MiIsaXZvcnk6IiNmZmZmZjAiLGtoYWtpOiIjZjBlNjhjIixsYXZlbmRlcjoiI2U2ZTZmYSIsbGF2ZW5kZXJibHVzaDoiI2ZmZjBmNSIsbGF3bmdyZWVuOiIjN2NmYzAwIixsZW1vbmNoaWZmb246IiNmZmZhY2QiLGxpZ2h0Ymx1ZToiI2FkZDhlNiIsbGlnaHRjb3JhbDoiI2YwODA4MCIsbGlnaHRjeWFuOiIjZTBmZmZmIixsaWdodGdvbGRlbnJvZHllbGxvdzoiI2ZhZmFkMiIsbGlnaHRncmF5OiIjZDNkM2QzIixsaWdodGdyZWVuOiIjOTBlZTkwIixsaWdodGdyZXk6IiNkM2QzZDMiLGxpZ2h0cGluazoiI2ZmYjZjMSIsbGlnaHRzYWxtb246IiNmZmEwN2EiLGxpZ2h0c2VhZ3JlZW46IiMyMGIyYWEiLGxpZ2h0c2t5Ymx1ZToiIzg3Y2VmYSIsbGlnaHRzbGF0ZWdyYXk6IiM3Nzg4OTkiLGxpZ2h0c2xhdGVncmV5OiIjNzc4ODk5IixsaWdodHN0ZWVsYmx1ZToiI2IwYzRkZSIsbGlnaHR5ZWxsb3c6IiNmZmZmZTAiLGxpbWU6IiMwMGZmMDAiLGxpbWVncmVlbjoiIzMyY2QzMiIsbGluZW46IiNmYWYwZTYiLG1hZ2VudGE6IiNmZjAwZmYiLG1hcm9vbjoiIzgwMDAwMCIsbWVkaXVtYXF1YW1hcmluZToiIzY2Y2RhYSIsbWVkaXVtYmx1ZToiIzAwMDBjZCIsbWVkaXVtb3JjaGlkOiIjYmE1NWQzIixtZWRpdW1wdXJwbGU6IiM5MzcwZGIiLG1lZGl1bXNlYWdyZWVuOiIjM2NiMzcxIixtZWRpdW1zbGF0ZWJsdWU6IiM3YjY4ZWUiLG1lZGl1bXNwcmluZ2dyZWVuOiIjMDBmYTlhIixtZWRpdW10dXJxdW9pc2U6IiM0OGQxY2MiLG1lZGl1bXZpb2xldHJlZDoiI2M3MTU4NSIsbWlkbmlnaHRibHVlOiIjMTkxOTcwIixtaW50Y3JlYW06IiNmNWZmZmEiLG1pc3R5cm9zZToiI2ZmZTRlMSIsbW9jY2FzaW46IiNmZmU0YjUiLG5hdmFqb3doaXRlOiIjZmZkZWFkIixuYXZ5OiIjMDAwMDgwIixvbGRsYWNlOiIjZmRmNWU2IixvbGl2ZToiIzgwODAwMCIsb2xpdmVkcmFiOiIjNmI4ZTIzIixvcmFuZ2U6IiNmZmE1MDAiLG9yYW5nZXJlZDoiI2ZmNDUwMCIsb3JjaGlkOiIjZGE3MGQ2IixwYWxlZ29sZGVucm9kOiIjZWVlOGFhIixwYWxlZ3JlZW46IiM5OGZiOTgiLHBhbGV0dXJxdW9pc2U6IiNhZmVlZWUiLHBhbGV2aW9sZXRyZWQ6IiNkYjcwOTMiLHBhcGF5YXdoaXA6IiNmZmVmZDUiLHBlYWNocHVmZjoiI2ZmZGFiOSIscGVydToiI2NkODUzZiIscGluazoiI2ZmYzBjYiIscGx1bToiI2RkYTBkZCIscG93ZGVyYmx1ZToiI2IwZTBlNiIscHVycGxlOiIjODAwMDgwIixyZWJlY2NhcHVycGxlOiIjNjYzMzk5IixyZWQ6IiNmZjAwMDAiLHJvc3licm93bjoiI2JjOGY4ZiIscm95YWxibHVlOiIjNDE2OWUxIixzYWRkbGVicm93bjoiIzhiNDUxMyIsc2FsbW9uOiIjZmE4MDcyIixzYW5keWJyb3duOiIjZjRhNDYwIixzZWFncmVlbjoiIzJlOGI1NyIsc2Vhc2hlbGw6IiNmZmY1ZWUiLHNpZW5uYToiI2EwNTIyZCIsc2lsdmVyOiIjYzBjMGMwIixza3libHVlOiIjODdjZWViIixzbGF0ZWJsdWU6IiM2YTVhY2QiLHNsYXRlZ3JheToiIzcwODA5MCIsc2xhdGVncmV5OiIjNzA4MDkwIixzbm93OiIjZmZmYWZhIixzcHJpbmdncmVlbjoiIzAwZmY3ZiIsdGFuOiIjZDJiNDhjIix0ZWFsOiIjMDA4MDgwIix0aGlzdGxlOiIjZDhiZmQ4Iix0cmFuc3BhcmVudDoiIzAwMDAwMDAwIix0dXJxdW9pc2U6IiM0MGUwZDAiLHZpb2xldDoiI2VlODJlZSIsd2hlYXQ6IiNmNWRlYjMiLHdoaXRlOiIjZmZmZmZmIix3aGl0ZXNtb2tlOiIjZjVmNWY1Iix5ZWxsb3c6IiNmZmZmMDAiLHllbGxvd2dyZWVuOiIjOWFjZDMyIn0scGFyc2U6dD0+e3Q9dC50b0xvd2VyQ2FzZSgpO2NvbnN0IGU9RmYuY29sb3JzW3RdO2lmKCEhZSlyZXR1cm4gQ2MucGFyc2UoZSl9LHN0cmluZ2lmeTp0PT57Y29uc3QgZT1DYy5zdHJpbmdpZnkodCk7Zm9yKGNvbnN0IHIgaW4gRmYuY29sb3JzKWlmKEZmLmNvbG9yc1tyXT09PWUpcmV0dXJuIHJ9fSxVaz1GZixXaz17cmU6L15yZ2JhP1woXHMqPygtPyg/OlxkKyg/OlwuXGQrKT98KD86XC5cZCspKSg/OmVcZCspPyglPykpXHMqPyg/Oix8XHMpXHMqPygtPyg/OlxkKyg/OlwuXGQrKT98KD86XC5cZCspKSg/OmVcZCspPyglPykpXHMqPyg/Oix8XHMpXHMqPygtPyg/OlxkKyg/OlwuXGQrKT98KD86XC5cZCspKSg/OmVcZCspPyglPykpKD86XHMqPyg/Oix8XC8pXHMqP1wrPygtPyg/OlxkKyg/OlwuXGQrKT98KD86XC5cZCspKSg/OmVcZCspPyglPykpKT9ccyo/XCkkL2kscGFyc2U6dD0+e2NvbnN0IGU9dC5jaGFyQ29kZUF0KDApO2lmKGUhPT0xMTQmJmUhPT04MilyZXR1cm47Y29uc3Qgcj10Lm1hdGNoKFdrLnJlKTtpZighcilyZXR1cm47Y29uc3RbLG4saSxhLHMsbyxsLHUsaF09cjtyZXR1cm4gQmYuc2V0KHtyOmtlLmNoYW5uZWwuY2xhbXAucihpP3BhcnNlRmxvYXQobikqMi41NTpwYXJzZUZsb2F0KG4pKSxnOmtlLmNoYW5uZWwuY2xhbXAuZyhzP3BhcnNlRmxvYXQoYSkqMi41NTpwYXJzZUZsb2F0KGEpKSxiOmtlLmNoYW5uZWwuY2xhbXAuYihsP3BhcnNlRmxvYXQobykqMi41NTpwYXJzZUZsb2F0KG8pKSxhOnU/a2UuY2hhbm5lbC5jbGFtcC5hKGg/cGFyc2VGbG9hdCh1KS8xMDA6cGFyc2VGbG9hdCh1KSk6MX0sdCl9LHN0cmluZ2lmeTp0PT57Y29uc3R7cjplLGc6cixiOm4sYTppfT10O3JldHVybiBpPDE/YHJnYmEoJHtrZS5sYW5nLnJvdW5kKGUpfSwgJHtrZS5sYW5nLnJvdW5kKHIpfSwgJHtrZS5sYW5nLnJvdW5kKG4pfSwgJHtrZS5sYW5nLnJvdW5kKGkpfSlgOmByZ2IoJHtrZS5sYW5nLnJvdW5kKGUpfSwgJHtrZS5sYW5nLnJvdW5kKHIpfSwgJHtrZS5sYW5nLnJvdW5kKG4pfSlgfX0sUGY9V2ssaWE9e2Zvcm1hdDp7a2V5d29yZDpVayxoZXg6Q2MscmdiOlBmLHJnYmE6UGYsaHNsOk9mLGhzbGE6T2Z9LHBhcnNlOnQ9PntpZih0eXBlb2YgdCE9InN0cmluZyIpcmV0dXJuIHQ7Y29uc3QgZT1DYy5wYXJzZSh0KXx8UGYucGFyc2UodCl8fE9mLnBhcnNlKHQpfHxVay5wYXJzZSh0KTtpZihlKXJldHVybiBlO3Rocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgY29sb3IgZm9ybWF0OiAiJHt0fSJgKX0sc3RyaW5naWZ5OnQ9PiF0LmNoYW5nZWQmJnQuY29sb3I/dC5jb2xvcjp0LnR5cGUuaXMoenIuSFNMKXx8dC5kYXRhLnI9PT12b2lkIDA/T2Yuc3RyaW5naWZ5KHQpOnQuYTwxfHwhTnVtYmVyLmlzSW50ZWdlcih0LnIpfHwhTnVtYmVyLmlzSW50ZWdlcih0LmcpfHwhTnVtYmVyLmlzSW50ZWdlcih0LmIpP1BmLnN0cmluZ2lmeSh0KTpDYy5zdHJpbmdpZnkodCl9LEhrPSh0LGUpPT57Y29uc3Qgcj1pYS5wYXJzZSh0KTtmb3IoY29uc3QgbiBpbiBlKXJbbl09a2UuY2hhbm5lbC5jbGFtcFtuXShlW25dKTtyZXR1cm4gaWEuc3RyaW5naWZ5KHIpfSxTYz0odCxlLHI9MCxuPTEpPT57aWYodHlwZW9mIHQhPSJudW1iZXIiKXJldHVybiBIayh0LHthOmV9KTtjb25zdCBpPUJmLnNldCh7cjprZS5jaGFubmVsLmNsYW1wLnIodCksZzprZS5jaGFubmVsLmNsYW1wLmcoZSksYjprZS5jaGFubmVsLmNsYW1wLmIociksYTprZS5jaGFubmVsLmNsYW1wLmEobil9KTtyZXR1cm4gaWEuc3RyaW5naWZ5KGkpfSxHaz0odCxlLHIpPT57Y29uc3Qgbj1pYS5wYXJzZSh0KSxpPW5bZV0sYT1rZS5jaGFubmVsLmNsYW1wW2VdKGkrcik7cmV0dXJuIGkhPT1hJiYobltlXT1hKSxpYS5zdHJpbmdpZnkobil9LGFlPSh0LGUpPT5Hayh0LCJsIixlKSxnZT0odCxlKT0+R2sodCwibCIsLWUpLF90PSh0LGUpPT57Y29uc3Qgcj1pYS5wYXJzZSh0KSxuPXt9O2Zvcihjb25zdCBpIGluIGUpIWVbaV18fChuW2ldPXJbaV0rZVtpXSk7cmV0dXJuIEhrKHQsbil9LHVHPSh0LGUscj01MCk9Pntjb25zdHtyOm4sZzppLGI6YSxhOnN9PWlhLnBhcnNlKHQpLHtyOm8sZzpsLGI6dSxhOmh9PWlhLnBhcnNlKGUpLGQ9ci8xMDAsZj1kKjItMSxwPXMtaCxfPSgoZipwPT09LTE/ZjooZitwKS8oMStmKnApKSsxKS8yLHk9MS1fLGI9bipfK28qeSx4PWkqXytsKnksaz1hKl8rdSp5LFQ9cypkK2gqKDEtZCk7cmV0dXJuIFNjKGIseCxrLFQpfSxZdD0odCxlPTEwMCk9Pntjb25zdCByPWlhLnBhcnNlKHQpO3JldHVybiByLnI9MjU1LXIucixyLmc9MjU1LXIuZyxyLmI9MjU1LXIuYix1RyhyLHQsZSl9LGxuPSh0LGUpPT5lP190KHQse3M6LTQwLGw6MTB9KTpfdCh0LHtzOi00MCxsOi0xMH0pLHFmPSIjZmZmZmZmIixWZj0iI2YyZjJmMiI7Y2xhc3MgaEd7Y29uc3RydWN0b3IoKXt0aGlzLmJhY2tncm91bmQ9IiNmNGY0ZjQiLHRoaXMuZGFya01vZGU9ITEsdGhpcy5wcmltYXJ5Q29sb3I9IiNmZmY0ZGQiLHRoaXMubm90ZUJrZ0NvbG9yPSIjZmZmNWFkIix0aGlzLm5vdGVUZXh0Q29sb3I9IiMzMzMiLHRoaXMuVEhFTUVfQ09MT1JfTElNSVQ9MTIsdGhpcy5mb250RmFtaWx5PScidHJlYnVjaGV0IG1zIiwgdmVyZGFuYSwgYXJpYWwsIHNhbnMtc2VyaWYnLHRoaXMuZm9udFNpemU9IjE2cHgifXVwZGF0ZUNvbG9ycygpe2lmKHRoaXMucHJpbWFyeVRleHRDb2xvcj10aGlzLnByaW1hcnlUZXh0Q29sb3J8fCh0aGlzLmRhcmtNb2RlPyIjZWVlIjoiIzMzMyIpLHRoaXMuc2Vjb25kYXJ5Q29sb3I9dGhpcy5zZWNvbmRhcnlDb2xvcnx8X3QodGhpcy5wcmltYXJ5Q29sb3Ise2g6LTEyMH0pLHRoaXMudGVydGlhcnlDb2xvcj10aGlzLnRlcnRpYXJ5Q29sb3J8fF90KHRoaXMucHJpbWFyeUNvbG9yLHtoOjE4MCxsOjV9KSx0aGlzLnByaW1hcnlCb3JkZXJDb2xvcj10aGlzLnByaW1hcnlCb3JkZXJDb2xvcnx8bG4odGhpcy5wcmltYXJ5Q29sb3IsdGhpcy5kYXJrTW9kZSksdGhpcy5zZWNvbmRhcnlCb3JkZXJDb2xvcj10aGlzLnNlY29uZGFyeUJvcmRlckNvbG9yfHxsbih0aGlzLnNlY29uZGFyeUNvbG9yLHRoaXMuZGFya01vZGUpLHRoaXMudGVydGlhcnlCb3JkZXJDb2xvcj10aGlzLnRlcnRpYXJ5Qm9yZGVyQ29sb3J8fGxuKHRoaXMudGVydGlhcnlDb2xvcix0aGlzLmRhcmtNb2RlKSx0aGlzLm5vdGVCb3JkZXJDb2xvcj10aGlzLm5vdGVCb3JkZXJDb2xvcnx8bG4odGhpcy5ub3RlQmtnQ29sb3IsdGhpcy5kYXJrTW9kZSksdGhpcy5ub3RlQmtnQ29sb3I9dGhpcy5ub3RlQmtnQ29sb3J8fCIjZmZmNWFkIix0aGlzLm5vdGVUZXh0Q29sb3I9dGhpcy5ub3RlVGV4dENvbG9yfHwiIzMzMyIsdGhpcy5zZWNvbmRhcnlUZXh0Q29sb3I9dGhpcy5zZWNvbmRhcnlUZXh0Q29sb3J8fFl0KHRoaXMuc2Vjb25kYXJ5Q29sb3IpLHRoaXMudGVydGlhcnlUZXh0Q29sb3I9dGhpcy50ZXJ0aWFyeVRleHRDb2xvcnx8WXQodGhpcy50ZXJ0aWFyeUNvbG9yKSx0aGlzLmxpbmVDb2xvcj10aGlzLmxpbmVDb2xvcnx8WXQodGhpcy5iYWNrZ3JvdW5kKSx0aGlzLnRleHRDb2xvcj10aGlzLnRleHRDb2xvcnx8dGhpcy5wcmltYXJ5VGV4dENvbG9yLHRoaXMubm9kZUJrZz10aGlzLm5vZGVCa2d8fHRoaXMucHJpbWFyeUNvbG9yLHRoaXMubWFpbkJrZz10aGlzLm1haW5Ca2d8fHRoaXMucHJpbWFyeUNvbG9yLHRoaXMubm9kZUJvcmRlcj10aGlzLm5vZGVCb3JkZXJ8fHRoaXMucHJpbWFyeUJvcmRlckNvbG9yLHRoaXMuY2x1c3RlckJrZz10aGlzLmNsdXN0ZXJCa2d8fHRoaXMudGVydGlhcnlDb2xvcix0aGlzLmNsdXN0ZXJCb3JkZXI9dGhpcy5jbHVzdGVyQm9yZGVyfHx0aGlzLnRlcnRpYXJ5Qm9yZGVyQ29sb3IsdGhpcy5kZWZhdWx0TGlua0NvbG9yPXRoaXMuZGVmYXVsdExpbmtDb2xvcnx8dGhpcy5saW5lQ29sb3IsdGhpcy50aXRsZUNvbG9yPXRoaXMudGl0bGVDb2xvcnx8dGhpcy50ZXJ0aWFyeVRleHRDb2xvcix0aGlzLmVkZ2VMYWJlbEJhY2tncm91bmQ9dGhpcy5lZGdlTGFiZWxCYWNrZ3JvdW5kfHwodGhpcy5kYXJrTW9kZT9nZSh0aGlzLnNlY29uZGFyeUNvbG9yLDMwKTp0aGlzLnNlY29uZGFyeUNvbG9yKSx0aGlzLm5vZGVUZXh0Q29sb3I9dGhpcy5ub2RlVGV4dENvbG9yfHx0aGlzLnByaW1hcnlUZXh0Q29sb3IsdGhpcy5hY3RvckJvcmRlcj10aGlzLmFjdG9yQm9yZGVyfHx0aGlzLnByaW1hcnlCb3JkZXJDb2xvcix0aGlzLmFjdG9yQmtnPXRoaXMuYWN0b3JCa2d8fHRoaXMubWFpbkJrZyx0aGlzLmFjdG9yVGV4dENvbG9yPXRoaXMuYWN0b3JUZXh0Q29sb3J8fHRoaXMucHJpbWFyeVRleHRDb2xvcix0aGlzLmFjdG9yTGluZUNvbG9yPXRoaXMuYWN0b3JMaW5lQ29sb3J8fCJncmV5Iix0aGlzLmxhYmVsQm94QmtnQ29sb3I9dGhpcy5sYWJlbEJveEJrZ0NvbG9yfHx0aGlzLmFjdG9yQmtnLHRoaXMuc2lnbmFsQ29sb3I9dGhpcy5zaWduYWxDb2xvcnx8dGhpcy50ZXh0Q29sb3IsdGhpcy5zaWduYWxUZXh0Q29sb3I9dGhpcy5zaWduYWxUZXh0Q29sb3J8fHRoaXMudGV4dENvbG9yLHRoaXMubGFiZWxCb3hCb3JkZXJDb2xvcj10aGlzLmxhYmVsQm94Qm9yZGVyQ29sb3J8fHRoaXMuYWN0b3JCb3JkZXIsdGhpcy5sYWJlbFRleHRDb2xvcj10aGlzLmxhYmVsVGV4dENvbG9yfHx0aGlzLmFjdG9yVGV4dENvbG9yLHRoaXMubG9vcFRleHRDb2xvcj10aGlzLmxvb3BUZXh0Q29sb3J8fHRoaXMuYWN0b3JUZXh0Q29sb3IsdGhpcy5hY3RpdmF0aW9uQm9yZGVyQ29sb3I9dGhpcy5hY3RpdmF0aW9uQm9yZGVyQ29sb3J8fGdlKHRoaXMuc2Vjb25kYXJ5Q29sb3IsMTApLHRoaXMuYWN0aXZhdGlvbkJrZ0NvbG9yPXRoaXMuYWN0aXZhdGlvbkJrZ0NvbG9yfHx0aGlzLnNlY29uZGFyeUNvbG9yLHRoaXMuc2VxdWVuY2VOdW1iZXJDb2xvcj10aGlzLnNlcXVlbmNlTnVtYmVyQ29sb3J8fFl0KHRoaXMubGluZUNvbG9yKSx0aGlzLnNlY3Rpb25Ca2dDb2xvcj10aGlzLnNlY3Rpb25Ca2dDb2xvcnx8dGhpcy50ZXJ0aWFyeUNvbG9yLHRoaXMuYWx0U2VjdGlvbkJrZ0NvbG9yPXRoaXMuYWx0U2VjdGlvbkJrZ0NvbG9yfHwid2hpdGUiLHRoaXMuc2VjdGlvbkJrZ0NvbG9yPXRoaXMuc2VjdGlvbkJrZ0NvbG9yfHx0aGlzLnNlY29uZGFyeUNvbG9yLHRoaXMuc2VjdGlvbkJrZ0NvbG9yMj10aGlzLnNlY3Rpb25Ca2dDb2xvcjJ8fHRoaXMucHJpbWFyeUNvbG9yLHRoaXMuZXhjbHVkZUJrZ0NvbG9yPXRoaXMuZXhjbHVkZUJrZ0NvbG9yfHwiI2VlZWVlZSIsdGhpcy50YXNrQm9yZGVyQ29sb3I9dGhpcy50YXNrQm9yZGVyQ29sb3J8fHRoaXMucHJpbWFyeUJvcmRlckNvbG9yLHRoaXMudGFza0JrZ0NvbG9yPXRoaXMudGFza0JrZ0NvbG9yfHx0aGlzLnByaW1hcnlDb2xvcix0aGlzLmFjdGl2ZVRhc2tCb3JkZXJDb2xvcj10aGlzLmFjdGl2ZVRhc2tCb3JkZXJDb2xvcnx8dGhpcy5wcmltYXJ5Q29sb3IsdGhpcy5hY3RpdmVUYXNrQmtnQ29sb3I9dGhpcy5hY3RpdmVUYXNrQmtnQ29sb3J8fGFlKHRoaXMucHJpbWFyeUNvbG9yLDIzKSx0aGlzLmdyaWRDb2xvcj10aGlzLmdyaWRDb2xvcnx8ImxpZ2h0Z3JleSIsdGhpcy5kb25lVGFza0JrZ0NvbG9yPXRoaXMuZG9uZVRhc2tCa2dDb2xvcnx8ImxpZ2h0Z3JleSIsdGhpcy5kb25lVGFza0JvcmRlckNvbG9yPXRoaXMuZG9uZVRhc2tCb3JkZXJDb2xvcnx8ImdyZXkiLHRoaXMuY3JpdEJvcmRlckNvbG9yPXRoaXMuY3JpdEJvcmRlckNvbG9yfHwiI2ZmODg4OCIsdGhpcy5jcml0QmtnQ29sb3I9dGhpcy5jcml0QmtnQ29sb3J8fCJyZWQiLHRoaXMudG9kYXlMaW5lQ29sb3I9dGhpcy50b2RheUxpbmVDb2xvcnx8InJlZCIsdGhpcy50YXNrVGV4dENvbG9yPXRoaXMudGFza1RleHRDb2xvcnx8dGhpcy50ZXh0Q29sb3IsdGhpcy50YXNrVGV4dE91dHNpZGVDb2xvcj10aGlzLnRhc2tUZXh0T3V0c2lkZUNvbG9yfHx0aGlzLnRleHRDb2xvcix0aGlzLnRhc2tUZXh0TGlnaHRDb2xvcj10aGlzLnRhc2tUZXh0TGlnaHRDb2xvcnx8dGhpcy50ZXh0Q29sb3IsdGhpcy50YXNrVGV4dENvbG9yPXRoaXMudGFza1RleHRDb2xvcnx8dGhpcy5wcmltYXJ5VGV4dENvbG9yLHRoaXMudGFza1RleHREYXJrQ29sb3I9dGhpcy50YXNrVGV4dERhcmtDb2xvcnx8dGhpcy50ZXh0Q29sb3IsdGhpcy50YXNrVGV4dENsaWNrYWJsZUNvbG9yPXRoaXMudGFza1RleHRDbGlja2FibGVDb2xvcnx8IiMwMDMxNjMiLHRoaXMucGVyc29uQm9yZGVyPXRoaXMucGVyc29uQm9yZGVyfHx0aGlzLnByaW1hcnlCb3JkZXJDb2xvcix0aGlzLnBlcnNvbkJrZz10aGlzLnBlcnNvbkJrZ3x8dGhpcy5tYWluQmtnLHRoaXMudHJhbnNpdGlvbkNvbG9yPXRoaXMudHJhbnNpdGlvbkNvbG9yfHx0aGlzLmxpbmVDb2xvcix0aGlzLnRyYW5zaXRpb25MYWJlbENvbG9yPXRoaXMudHJhbnNpdGlvbkxhYmVsQ29sb3J8fHRoaXMudGV4dENvbG9yLHRoaXMuc3RhdGVMYWJlbENvbG9yPXRoaXMuc3RhdGVMYWJlbENvbG9yfHx0aGlzLnN0YXRlQmtnfHx0aGlzLnByaW1hcnlUZXh0Q29sb3IsdGhpcy5zdGF0ZUJrZz10aGlzLnN0YXRlQmtnfHx0aGlzLm1haW5Ca2csdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvcj10aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yfHx0aGlzLnN0YXRlQmtnLHRoaXMuY29tcG9zaXRlQmFja2dyb3VuZD10aGlzLmNvbXBvc2l0ZUJhY2tncm91bmR8fHRoaXMuYmFja2dyb3VuZHx8dGhpcy50ZXJ0aWFyeUNvbG9yLHRoaXMuYWx0QmFja2dyb3VuZD10aGlzLmFsdEJhY2tncm91bmR8fHRoaXMudGVydGlhcnlDb2xvcix0aGlzLmNvbXBvc2l0ZVRpdGxlQmFja2dyb3VuZD10aGlzLmNvbXBvc2l0ZVRpdGxlQmFja2dyb3VuZHx8dGhpcy5tYWluQmtnLHRoaXMuY29tcG9zaXRlQm9yZGVyPXRoaXMuY29tcG9zaXRlQm9yZGVyfHx0aGlzLm5vZGVCb3JkZXIsdGhpcy5pbm5lckVuZEJhY2tncm91bmQ9dGhpcy5ub2RlQm9yZGVyLHRoaXMuZXJyb3JCa2dDb2xvcj10aGlzLmVycm9yQmtnQ29sb3J8fHRoaXMudGVydGlhcnlDb2xvcix0aGlzLmVycm9yVGV4dENvbG9yPXRoaXMuZXJyb3JUZXh0Q29sb3J8fHRoaXMudGVydGlhcnlUZXh0Q29sb3IsdGhpcy50cmFuc2l0aW9uQ29sb3I9dGhpcy50cmFuc2l0aW9uQ29sb3J8fHRoaXMubGluZUNvbG9yLHRoaXMuc3BlY2lhbFN0YXRlQ29sb3I9dGhpcy5saW5lQ29sb3IsdGhpcy5jU2NhbGUwPXRoaXMuY1NjYWxlMHx8dGhpcy5wcmltYXJ5Q29sb3IsdGhpcy5jU2NhbGUxPXRoaXMuY1NjYWxlMXx8dGhpcy5zZWNvbmRhcnlDb2xvcix0aGlzLmNTY2FsZTI9dGhpcy5jU2NhbGUyfHx0aGlzLnRlcnRpYXJ5Q29sb3IsdGhpcy5jU2NhbGUzPXRoaXMuY1NjYWxlM3x8X3QodGhpcy5wcmltYXJ5Q29sb3Ise2g6MzB9KSx0aGlzLmNTY2FsZTQ9dGhpcy5jU2NhbGU0fHxfdCh0aGlzLnByaW1hcnlDb2xvcix7aDo2MH0pLHRoaXMuY1NjYWxlNT10aGlzLmNTY2FsZTV8fF90KHRoaXMucHJpbWFyeUNvbG9yLHtoOjkwfSksdGhpcy5jU2NhbGU2PXRoaXMuY1NjYWxlNnx8X3QodGhpcy5wcmltYXJ5Q29sb3Ise2g6MTIwfSksdGhpcy5jU2NhbGU3PXRoaXMuY1NjYWxlN3x8X3QodGhpcy5wcmltYXJ5Q29sb3Ise2g6MTUwfSksdGhpcy5jU2NhbGU4PXRoaXMuY1NjYWxlOHx8X3QodGhpcy5wcmltYXJ5Q29sb3Ise2g6MjEwLGw6MTUwfSksdGhpcy5jU2NhbGU5PXRoaXMuY1NjYWxlOXx8X3QodGhpcy5wcmltYXJ5Q29sb3Ise2g6MjcwfSksdGhpcy5jU2NhbGUxMD10aGlzLmNTY2FsZTEwfHxfdCh0aGlzLnByaW1hcnlDb2xvcix7aDozMDB9KSx0aGlzLmNTY2FsZTExPXRoaXMuY1NjYWxlMTF8fF90KHRoaXMucHJpbWFyeUNvbG9yLHtoOjMzMH0pLHRoaXMuZGFya01vZGUpZm9yKGxldCBlPTA7ZTx0aGlzLlRIRU1FX0NPTE9SX0xJTUlUO2UrKyl0aGlzWyJjU2NhbGUiK2VdPWdlKHRoaXNbImNTY2FsZSIrZV0sNzUpO2Vsc2UgZm9yKGxldCBlPTA7ZTx0aGlzLlRIRU1FX0NPTE9SX0xJTUlUO2UrKyl0aGlzWyJjU2NhbGUiK2VdPWdlKHRoaXNbImNTY2FsZSIrZV0sMjUpO2ZvcihsZXQgZT0wO2U8dGhpcy5USEVNRV9DT0xPUl9MSU1JVDtlKyspdGhpc1siY1NjYWxlSW52IitlXT10aGlzWyJjU2NhbGVJbnYiK2VdfHxZdCh0aGlzWyJjU2NhbGUiK2VdKTtmb3IobGV0IGU9MDtlPHRoaXMuVEhFTUVfQ09MT1JfTElNSVQ7ZSsrKXRoaXMuZGFya01vZGU/dGhpc1siY1NjYWxlUGVlciIrZV09dGhpc1siY1NjYWxlUGVlciIrZV18fGFlKHRoaXNbImNTY2FsZSIrZV0sMTApOnRoaXNbImNTY2FsZVBlZXIiK2VdPXRoaXNbImNTY2FsZVBlZXIiK2VdfHxnZSh0aGlzWyJjU2NhbGUiK2VdLDEwKTt0aGlzLnNjYWxlTGFiZWxDb2xvcj10aGlzLnNjYWxlTGFiZWxDb2xvcnx8dGhpcy5sYWJlbFRleHRDb2xvcjtmb3IobGV0IGU9MDtlPHRoaXMuVEhFTUVfQ09MT1JfTElNSVQ7ZSsrKXRoaXNbImNTY2FsZUxhYmVsIitlXT10aGlzWyJjU2NhbGVMYWJlbCIrZV18fHRoaXMuc2NhbGVMYWJlbENvbG9yO3RoaXMuY2xhc3NUZXh0PXRoaXMuY2xhc3NUZXh0fHx0aGlzLnRleHRDb2xvcix0aGlzLmZpbGxUeXBlMD10aGlzLmZpbGxUeXBlMHx8dGhpcy5wcmltYXJ5Q29sb3IsdGhpcy5maWxsVHlwZTE9dGhpcy5maWxsVHlwZTF8fHRoaXMuc2Vjb25kYXJ5Q29sb3IsdGhpcy5maWxsVHlwZTI9dGhpcy5maWxsVHlwZTJ8fF90KHRoaXMucHJpbWFyeUNvbG9yLHtoOjY0fSksdGhpcy5maWxsVHlwZTM9dGhpcy5maWxsVHlwZTN8fF90KHRoaXMuc2Vjb25kYXJ5Q29sb3Ise2g6NjR9KSx0aGlzLmZpbGxUeXBlND10aGlzLmZpbGxUeXBlNHx8X3QodGhpcy5wcmltYXJ5Q29sb3Ise2g6LTY0fSksdGhpcy5maWxsVHlwZTU9dGhpcy5maWxsVHlwZTV8fF90KHRoaXMuc2Vjb25kYXJ5Q29sb3Ise2g6LTY0fSksdGhpcy5maWxsVHlwZTY9dGhpcy5maWxsVHlwZTZ8fF90KHRoaXMucHJpbWFyeUNvbG9yLHtoOjEyOH0pLHRoaXMuZmlsbFR5cGU3PXRoaXMuZmlsbFR5cGU3fHxfdCh0aGlzLnNlY29uZGFyeUNvbG9yLHtoOjEyOH0pLHRoaXMucGllMT10aGlzLnBpZTF8fHRoaXMucHJpbWFyeUNvbG9yLHRoaXMucGllMj10aGlzLnBpZTJ8fHRoaXMuc2Vjb25kYXJ5Q29sb3IsdGhpcy5waWUzPXRoaXMucGllM3x8dGhpcy50ZXJ0aWFyeUNvbG9yLHRoaXMucGllND10aGlzLnBpZTR8fF90KHRoaXMucHJpbWFyeUNvbG9yLHtsOi0xMH0pLHRoaXMucGllNT10aGlzLnBpZTV8fF90KHRoaXMuc2Vjb25kYXJ5Q29sb3Ise2w6LTEwfSksdGhpcy5waWU2PXRoaXMucGllNnx8X3QodGhpcy50ZXJ0aWFyeUNvbG9yLHtsOi0xMH0pLHRoaXMucGllNz10aGlzLnBpZTd8fF90KHRoaXMucHJpbWFyeUNvbG9yLHtoOjYwLGw6LTEwfSksdGhpcy5waWU4PXRoaXMucGllOHx8X3QodGhpcy5wcmltYXJ5Q29sb3Ise2g6LTYwLGw6LTEwfSksdGhpcy5waWU5PXRoaXMucGllOXx8X3QodGhpcy5wcmltYXJ5Q29sb3Ise2g6MTIwLGw6MH0pLHRoaXMucGllMTA9dGhpcy5waWUxMHx8X3QodGhpcy5wcmltYXJ5Q29sb3Ise2g6NjAsbDotMjB9KSx0aGlzLnBpZTExPXRoaXMucGllMTF8fF90KHRoaXMucHJpbWFyeUNvbG9yLHtoOi02MCxsOi0yMH0pLHRoaXMucGllMTI9dGhpcy5waWUxMnx8X3QodGhpcy5wcmltYXJ5Q29sb3Ise2g6MTIwLGw6LTEwfSksdGhpcy5waWVUaXRsZVRleHRTaXplPXRoaXMucGllVGl0bGVUZXh0U2l6ZXx8IjI1cHgiLHRoaXMucGllVGl0bGVUZXh0Q29sb3I9dGhpcy5waWVUaXRsZVRleHRDb2xvcnx8dGhpcy50YXNrVGV4dERhcmtDb2xvcix0aGlzLnBpZVNlY3Rpb25UZXh0U2l6ZT10aGlzLnBpZVNlY3Rpb25UZXh0U2l6ZXx8IjE3cHgiLHRoaXMucGllU2VjdGlvblRleHRDb2xvcj10aGlzLnBpZVNlY3Rpb25UZXh0Q29sb3J8fHRoaXMudGV4dENvbG9yLHRoaXMucGllTGVnZW5kVGV4dFNpemU9dGhpcy5waWVMZWdlbmRUZXh0U2l6ZXx8IjE3cHgiLHRoaXMucGllTGVnZW5kVGV4dENvbG9yPXRoaXMucGllTGVnZW5kVGV4dENvbG9yfHx0aGlzLnRhc2tUZXh0RGFya0NvbG9yLHRoaXMucGllU3Ryb2tlQ29sb3I9dGhpcy5waWVTdHJva2VDb2xvcnx8ImJsYWNrIix0aGlzLnBpZVN0cm9rZVdpZHRoPXRoaXMucGllU3Ryb2tlV2lkdGh8fCIycHgiLHRoaXMucGllT3BhY2l0eT10aGlzLnBpZU9wYWNpdHl8fCIwLjciLHRoaXMucmVxdWlyZW1lbnRCYWNrZ3JvdW5kPXRoaXMucmVxdWlyZW1lbnRCYWNrZ3JvdW5kfHx0aGlzLnByaW1hcnlDb2xvcix0aGlzLnJlcXVpcmVtZW50Qm9yZGVyQ29sb3I9dGhpcy5yZXF1aXJlbWVudEJvcmRlckNvbG9yfHx0aGlzLnByaW1hcnlCb3JkZXJDb2xvcix0aGlzLnJlcXVpcmVtZW50Qm9yZGVyU2l6ZT10aGlzLnJlcXVpcmVtZW50Qm9yZGVyU2l6ZXx8dGhpcy5wcmltYXJ5Qm9yZGVyQ29sb3IsdGhpcy5yZXF1aXJlbWVudFRleHRDb2xvcj10aGlzLnJlcXVpcmVtZW50VGV4dENvbG9yfHx0aGlzLnByaW1hcnlUZXh0Q29sb3IsdGhpcy5yZWxhdGlvbkNvbG9yPXRoaXMucmVsYXRpb25Db2xvcnx8dGhpcy5saW5lQ29sb3IsdGhpcy5yZWxhdGlvbkxhYmVsQmFja2dyb3VuZD10aGlzLnJlbGF0aW9uTGFiZWxCYWNrZ3JvdW5kfHwodGhpcy5kYXJrTW9kZT9nZSh0aGlzLnNlY29uZGFyeUNvbG9yLDMwKTp0aGlzLnNlY29uZGFyeUNvbG9yKSx0aGlzLnJlbGF0aW9uTGFiZWxDb2xvcj10aGlzLnJlbGF0aW9uTGFiZWxDb2xvcnx8dGhpcy5hY3RvclRleHRDb2xvcix0aGlzLmdpdDA9dGhpcy5naXQwfHx0aGlzLnByaW1hcnlDb2xvcix0aGlzLmdpdDE9dGhpcy5naXQxfHx0aGlzLnNlY29uZGFyeUNvbG9yLHRoaXMuZ2l0Mj10aGlzLmdpdDJ8fHRoaXMudGVydGlhcnlDb2xvcix0aGlzLmdpdDM9dGhpcy5naXQzfHxfdCh0aGlzLnByaW1hcnlDb2xvcix7aDotMzB9KSx0aGlzLmdpdDQ9dGhpcy5naXQ0fHxfdCh0aGlzLnByaW1hcnlDb2xvcix7aDotNjB9KSx0aGlzLmdpdDU9dGhpcy5naXQ1fHxfdCh0aGlzLnByaW1hcnlDb2xvcix7aDotOTB9KSx0aGlzLmdpdDY9dGhpcy5naXQ2fHxfdCh0aGlzLnByaW1hcnlDb2xvcix7aDo2MH0pLHRoaXMuZ2l0Nz10aGlzLmdpdDd8fF90KHRoaXMucHJpbWFyeUNvbG9yLHtoOjEyMH0pLHRoaXMuZGFya01vZGU/KHRoaXMuZ2l0MD1hZSh0aGlzLmdpdDAsMjUpLHRoaXMuZ2l0MT1hZSh0aGlzLmdpdDEsMjUpLHRoaXMuZ2l0Mj1hZSh0aGlzLmdpdDIsMjUpLHRoaXMuZ2l0Mz1hZSh0aGlzLmdpdDMsMjUpLHRoaXMuZ2l0ND1hZSh0aGlzLmdpdDQsMjUpLHRoaXMuZ2l0NT1hZSh0aGlzLmdpdDUsMjUpLHRoaXMuZ2l0Nj1hZSh0aGlzLmdpdDYsMjUpLHRoaXMuZ2l0Nz1hZSh0aGlzLmdpdDcsMjUpKToodGhpcy5naXQwPWdlKHRoaXMuZ2l0MCwyNSksdGhpcy5naXQxPWdlKHRoaXMuZ2l0MSwyNSksdGhpcy5naXQyPWdlKHRoaXMuZ2l0MiwyNSksdGhpcy5naXQzPWdlKHRoaXMuZ2l0MywyNSksdGhpcy5naXQ0PWdlKHRoaXMuZ2l0NCwyNSksdGhpcy5naXQ1PWdlKHRoaXMuZ2l0NSwyNSksdGhpcy5naXQ2PWdlKHRoaXMuZ2l0NiwyNSksdGhpcy5naXQ3PWdlKHRoaXMuZ2l0NywyNSkpLHRoaXMuZ2l0SW52MD10aGlzLmdpdEludjB8fFl0KHRoaXMuZ2l0MCksdGhpcy5naXRJbnYxPXRoaXMuZ2l0SW52MXx8WXQodGhpcy5naXQxKSx0aGlzLmdpdEludjI9dGhpcy5naXRJbnYyfHxZdCh0aGlzLmdpdDIpLHRoaXMuZ2l0SW52Mz10aGlzLmdpdEludjN8fFl0KHRoaXMuZ2l0MyksdGhpcy5naXRJbnY0PXRoaXMuZ2l0SW52NHx8WXQodGhpcy5naXQ0KSx0aGlzLmdpdEludjU9dGhpcy5naXRJbnY1fHxZdCh0aGlzLmdpdDUpLHRoaXMuZ2l0SW52Nj10aGlzLmdpdEludjZ8fFl0KHRoaXMuZ2l0NiksdGhpcy5naXRJbnY3PXRoaXMuZ2l0SW52N3x8WXQodGhpcy5naXQ3KSx0aGlzLmJyYW5jaExhYmVsQ29sb3I9dGhpcy5icmFuY2hMYWJlbENvbG9yfHwodGhpcy5kYXJrTW9kZT8iYmxhY2siOnRoaXMubGFiZWxUZXh0Q29sb3IpLHRoaXMuZ2l0QnJhbmNoTGFiZWwwPXRoaXMuZ2l0QnJhbmNoTGFiZWwwfHx0aGlzLmJyYW5jaExhYmVsQ29sb3IsdGhpcy5naXRCcmFuY2hMYWJlbDE9dGhpcy5naXRCcmFuY2hMYWJlbDF8fHRoaXMuYnJhbmNoTGFiZWxDb2xvcix0aGlzLmdpdEJyYW5jaExhYmVsMj10aGlzLmdpdEJyYW5jaExhYmVsMnx8dGhpcy5icmFuY2hMYWJlbENvbG9yLHRoaXMuZ2l0QnJhbmNoTGFiZWwzPXRoaXMuZ2l0QnJhbmNoTGFiZWwzfHx0aGlzLmJyYW5jaExhYmVsQ29sb3IsdGhpcy5naXRCcmFuY2hMYWJlbDQ9dGhpcy5naXRCcmFuY2hMYWJlbDR8fHRoaXMuYnJhbmNoTGFiZWxDb2xvcix0aGlzLmdpdEJyYW5jaExhYmVsNT10aGlzLmdpdEJyYW5jaExhYmVsNXx8dGhpcy5icmFuY2hMYWJlbENvbG9yLHRoaXMuZ2l0QnJhbmNoTGFiZWw2PXRoaXMuZ2l0QnJhbmNoTGFiZWw2fHx0aGlzLmJyYW5jaExhYmVsQ29sb3IsdGhpcy5naXRCcmFuY2hMYWJlbDc9dGhpcy5naXRCcmFuY2hMYWJlbDd8fHRoaXMuYnJhbmNoTGFiZWxDb2xvcix0aGlzLnRhZ0xhYmVsQ29sb3I9dGhpcy50YWdMYWJlbENvbG9yfHx0aGlzLnByaW1hcnlUZXh0Q29sb3IsdGhpcy50YWdMYWJlbEJhY2tncm91bmQ9dGhpcy50YWdMYWJlbEJhY2tncm91bmR8fHRoaXMucHJpbWFyeUNvbG9yLHRoaXMudGFnTGFiZWxCb3JkZXI9dGhpcy50YWdCb3JkZXJ8fHRoaXMucHJpbWFyeUJvcmRlckNvbG9yLHRoaXMudGFnTGFiZWxGb250U2l6ZT10aGlzLnRhZ0xhYmVsRm9udFNpemV8fCIxMHB4Iix0aGlzLmNvbW1pdExhYmVsQ29sb3I9dGhpcy5jb21taXRMYWJlbENvbG9yfHx0aGlzLnNlY29uZGFyeVRleHRDb2xvcix0aGlzLmNvbW1pdExhYmVsQmFja2dyb3VuZD10aGlzLmNvbW1pdExhYmVsQmFja2dyb3VuZHx8dGhpcy5zZWNvbmRhcnlDb2xvcix0aGlzLmNvbW1pdExhYmVsRm9udFNpemU9dGhpcy5jb21taXRMYWJlbEZvbnRTaXplfHwiMTBweCIsdGhpcy5hdHRyaWJ1dGVCYWNrZ3JvdW5kQ29sb3JPZGQ9dGhpcy5hdHRyaWJ1dGVCYWNrZ3JvdW5kQ29sb3JPZGR8fHFmLHRoaXMuYXR0cmlidXRlQmFja2dyb3VuZENvbG9yRXZlbj10aGlzLmF0dHJpYnV0ZUJhY2tncm91bmRDb2xvckV2ZW58fFZmfWNhbGN1bGF0ZShlKXtpZih0eXBlb2YgZSE9Im9iamVjdCIpe3RoaXMudXBkYXRlQ29sb3JzKCk7cmV0dXJufWNvbnN0IHI9T2JqZWN0LmtleXMoZSk7ci5mb3JFYWNoKG49Pnt0aGlzW25dPWVbbl19KSx0aGlzLnVwZGF0ZUNvbG9ycygpLHIuZm9yRWFjaChuPT57dGhpc1tuXT1lW25dfSl9fWNvbnN0IGZHPXQ9Pntjb25zdCBlPW5ldyBoRztyZXR1cm4gZS5jYWxjdWxhdGUodCksZX07Y2xhc3MgZEd7Y29uc3RydWN0b3IoKXt0aGlzLmJhY2tncm91bmQ9IiMzMzMiLHRoaXMucHJpbWFyeUNvbG9yPSIjMWYyMDIwIix0aGlzLnNlY29uZGFyeUNvbG9yPWFlKHRoaXMucHJpbWFyeUNvbG9yLDE2KSx0aGlzLnRlcnRpYXJ5Q29sb3I9X3QodGhpcy5wcmltYXJ5Q29sb3Ise2g6LTE2MH0pLHRoaXMucHJpbWFyeUJvcmRlckNvbG9yPVl0KHRoaXMuYmFja2dyb3VuZCksdGhpcy5zZWNvbmRhcnlCb3JkZXJDb2xvcj1sbih0aGlzLnNlY29uZGFyeUNvbG9yLHRoaXMuZGFya01vZGUpLHRoaXMudGVydGlhcnlCb3JkZXJDb2xvcj1sbih0aGlzLnRlcnRpYXJ5Q29sb3IsdGhpcy5kYXJrTW9kZSksdGhpcy5wcmltYXJ5VGV4dENvbG9yPVl0KHRoaXMucHJpbWFyeUNvbG9yKSx0aGlzLnNlY29uZGFyeVRleHRDb2xvcj1ZdCh0aGlzLnNlY29uZGFyeUNvbG9yKSx0aGlzLnRlcnRpYXJ5VGV4dENvbG9yPVl0KHRoaXMudGVydGlhcnlDb2xvciksdGhpcy5saW5lQ29sb3I9WXQodGhpcy5iYWNrZ3JvdW5kKSx0aGlzLnRleHRDb2xvcj1ZdCh0aGlzLmJhY2tncm91bmQpLHRoaXMubWFpbkJrZz0iIzFmMjAyMCIsdGhpcy5zZWNvbmRCa2c9ImNhbGN1bGF0ZWQiLHRoaXMubWFpbkNvbnRyYXN0Q29sb3I9ImxpZ2h0Z3JleSIsdGhpcy5kYXJrVGV4dENvbG9yPWFlKFl0KCIjMzIzRDQ3IiksMTApLHRoaXMubGluZUNvbG9yPSJjYWxjdWxhdGVkIix0aGlzLmJvcmRlcjE9IiM4MUIxREIiLHRoaXMuYm9yZGVyMj1TYygyNTUsMjU1LDI1NSwuMjUpLHRoaXMuYXJyb3doZWFkQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMuZm9udEZhbWlseT0nInRyZWJ1Y2hldCBtcyIsIHZlcmRhbmEsIGFyaWFsLCBzYW5zLXNlcmlmJyx0aGlzLmZvbnRTaXplPSIxNnB4Iix0aGlzLmxhYmVsQmFja2dyb3VuZD0iIzE4MTgxOCIsdGhpcy50ZXh0Q29sb3I9IiNjY2MiLHRoaXMuVEhFTUVfQ09MT1JfTElNSVQ9MTIsdGhpcy5ub2RlQmtnPSJjYWxjdWxhdGVkIix0aGlzLm5vZGVCb3JkZXI9ImNhbGN1bGF0ZWQiLHRoaXMuY2x1c3RlckJrZz0iY2FsY3VsYXRlZCIsdGhpcy5jbHVzdGVyQm9yZGVyPSJjYWxjdWxhdGVkIix0aGlzLmRlZmF1bHRMaW5rQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMudGl0bGVDb2xvcj0iI0Y5RkZGRSIsdGhpcy5lZGdlTGFiZWxCYWNrZ3JvdW5kPSJjYWxjdWxhdGVkIix0aGlzLmFjdG9yQm9yZGVyPSJjYWxjdWxhdGVkIix0aGlzLmFjdG9yQmtnPSJjYWxjdWxhdGVkIix0aGlzLmFjdG9yVGV4dENvbG9yPSJjYWxjdWxhdGVkIix0aGlzLmFjdG9yTGluZUNvbG9yPSJjYWxjdWxhdGVkIix0aGlzLnNpZ25hbENvbG9yPSJjYWxjdWxhdGVkIix0aGlzLnNpZ25hbFRleHRDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5sYWJlbEJveEJrZ0NvbG9yPSJjYWxjdWxhdGVkIix0aGlzLmxhYmVsQm94Qm9yZGVyQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMubGFiZWxUZXh0Q29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMubG9vcFRleHRDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5ub3RlQm9yZGVyQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMubm90ZUJrZ0NvbG9yPSIjZmZmNWFkIix0aGlzLm5vdGVUZXh0Q29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMuYWN0aXZhdGlvbkJvcmRlckNvbG9yPSJjYWxjdWxhdGVkIix0aGlzLmFjdGl2YXRpb25Ca2dDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5zZXF1ZW5jZU51bWJlckNvbG9yPSJibGFjayIsdGhpcy5zZWN0aW9uQmtnQ29sb3I9Z2UoIiNFQUU4RDkiLDMwKSx0aGlzLmFsdFNlY3Rpb25Ca2dDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5zZWN0aW9uQmtnQ29sb3IyPSIjRUFFOEQ5Iix0aGlzLnRhc2tCb3JkZXJDb2xvcj1TYygyNTUsMjU1LDI1NSw3MCksdGhpcy50YXNrQmtnQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMudGFza1RleHRDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy50YXNrVGV4dExpZ2h0Q29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMudGFza1RleHRPdXRzaWRlQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMudGFza1RleHRDbGlja2FibGVDb2xvcj0iIzAwMzE2MyIsdGhpcy5hY3RpdmVUYXNrQm9yZGVyQ29sb3I9U2MoMjU1LDI1NSwyNTUsNTApLHRoaXMuYWN0aXZlVGFza0JrZ0NvbG9yPSIjODFCMURCIix0aGlzLmdyaWRDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5kb25lVGFza0JrZ0NvbG9yPSJjYWxjdWxhdGVkIix0aGlzLmRvbmVUYXNrQm9yZGVyQ29sb3I9ImdyZXkiLHRoaXMuY3JpdEJvcmRlckNvbG9yPSIjRTgzNzM3Iix0aGlzLmNyaXRCa2dDb2xvcj0iI0U4MzczNyIsdGhpcy50YXNrVGV4dERhcmtDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy50b2RheUxpbmVDb2xvcj0iI0RCNTc1NyIsdGhpcy5wZXJzb25Cb3JkZXI9ImNhbGN1bGF0ZWQiLHRoaXMucGVyc29uQmtnPSJjYWxjdWxhdGVkIix0aGlzLmxhYmVsQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMuZXJyb3JCa2dDb2xvcj0iI2E0NDE0MSIsdGhpcy5lcnJvclRleHRDb2xvcj0iI2RkZCJ9dXBkYXRlQ29sb3JzKCl7dGhpcy5zZWNvbmRCa2c9YWUodGhpcy5tYWluQmtnLDE2KSx0aGlzLmxpbmVDb2xvcj10aGlzLm1haW5Db250cmFzdENvbG9yLHRoaXMuYXJyb3doZWFkQ29sb3I9dGhpcy5tYWluQ29udHJhc3RDb2xvcix0aGlzLm5vZGVCa2c9dGhpcy5tYWluQmtnLHRoaXMubm9kZUJvcmRlcj10aGlzLmJvcmRlcjEsdGhpcy5jbHVzdGVyQmtnPXRoaXMuc2Vjb25kQmtnLHRoaXMuY2x1c3RlckJvcmRlcj10aGlzLmJvcmRlcjIsdGhpcy5kZWZhdWx0TGlua0NvbG9yPXRoaXMubGluZUNvbG9yLHRoaXMuZWRnZUxhYmVsQmFja2dyb3VuZD1hZSh0aGlzLmxhYmVsQmFja2dyb3VuZCwyNSksdGhpcy5hY3RvckJvcmRlcj10aGlzLmJvcmRlcjEsdGhpcy5hY3RvckJrZz10aGlzLm1haW5Ca2csdGhpcy5hY3RvclRleHRDb2xvcj10aGlzLm1haW5Db250cmFzdENvbG9yLHRoaXMuYWN0b3JMaW5lQ29sb3I9dGhpcy5tYWluQ29udHJhc3RDb2xvcix0aGlzLnNpZ25hbENvbG9yPXRoaXMubWFpbkNvbnRyYXN0Q29sb3IsdGhpcy5zaWduYWxUZXh0Q29sb3I9dGhpcy5tYWluQ29udHJhc3RDb2xvcix0aGlzLmxhYmVsQm94QmtnQ29sb3I9dGhpcy5hY3RvckJrZyx0aGlzLmxhYmVsQm94Qm9yZGVyQ29sb3I9dGhpcy5hY3RvckJvcmRlcix0aGlzLmxhYmVsVGV4dENvbG9yPXRoaXMubWFpbkNvbnRyYXN0Q29sb3IsdGhpcy5sb29wVGV4dENvbG9yPXRoaXMubWFpbkNvbnRyYXN0Q29sb3IsdGhpcy5ub3RlQm9yZGVyQ29sb3I9dGhpcy5zZWNvbmRhcnlCb3JkZXJDb2xvcix0aGlzLm5vdGVCa2dDb2xvcj10aGlzLnNlY29uZEJrZyx0aGlzLm5vdGVUZXh0Q29sb3I9dGhpcy5zZWNvbmRhcnlUZXh0Q29sb3IsdGhpcy5hY3RpdmF0aW9uQm9yZGVyQ29sb3I9dGhpcy5ib3JkZXIxLHRoaXMuYWN0aXZhdGlvbkJrZ0NvbG9yPXRoaXMuc2Vjb25kQmtnLHRoaXMuYWx0U2VjdGlvbkJrZ0NvbG9yPXRoaXMuYmFja2dyb3VuZCx0aGlzLnRhc2tCa2dDb2xvcj1hZSh0aGlzLm1haW5Ca2csMjMpLHRoaXMudGFza1RleHRDb2xvcj10aGlzLmRhcmtUZXh0Q29sb3IsdGhpcy50YXNrVGV4dExpZ2h0Q29sb3I9dGhpcy5tYWluQ29udHJhc3RDb2xvcix0aGlzLnRhc2tUZXh0T3V0c2lkZUNvbG9yPXRoaXMudGFza1RleHRMaWdodENvbG9yLHRoaXMuZ3JpZENvbG9yPXRoaXMubWFpbkNvbnRyYXN0Q29sb3IsdGhpcy5kb25lVGFza0JrZ0NvbG9yPXRoaXMubWFpbkNvbnRyYXN0Q29sb3IsdGhpcy50YXNrVGV4dERhcmtDb2xvcj10aGlzLmRhcmtUZXh0Q29sb3IsdGhpcy50cmFuc2l0aW9uQ29sb3I9dGhpcy50cmFuc2l0aW9uQ29sb3J8fHRoaXMubGluZUNvbG9yLHRoaXMudHJhbnNpdGlvbkxhYmVsQ29sb3I9dGhpcy50cmFuc2l0aW9uTGFiZWxDb2xvcnx8dGhpcy50ZXh0Q29sb3IsdGhpcy5zdGF0ZUxhYmVsQ29sb3I9dGhpcy5zdGF0ZUxhYmVsQ29sb3J8fHRoaXMuc3RhdGVCa2d8fHRoaXMucHJpbWFyeVRleHRDb2xvcix0aGlzLnN0YXRlQmtnPXRoaXMuc3RhdGVCa2d8fHRoaXMubWFpbkJrZyx0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yPXRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3J8fHRoaXMuc3RhdGVCa2csdGhpcy5jb21wb3NpdGVCYWNrZ3JvdW5kPXRoaXMuY29tcG9zaXRlQmFja2dyb3VuZHx8dGhpcy5iYWNrZ3JvdW5kfHx0aGlzLnRlcnRpYXJ5Q29sb3IsdGhpcy5hbHRCYWNrZ3JvdW5kPXRoaXMuYWx0QmFja2dyb3VuZHx8IiM1NTUiLHRoaXMuY29tcG9zaXRlVGl0bGVCYWNrZ3JvdW5kPXRoaXMuY29tcG9zaXRlVGl0bGVCYWNrZ3JvdW5kfHx0aGlzLm1haW5Ca2csdGhpcy5jb21wb3NpdGVCb3JkZXI9dGhpcy5jb21wb3NpdGVCb3JkZXJ8fHRoaXMubm9kZUJvcmRlcix0aGlzLmlubmVyRW5kQmFja2dyb3VuZD10aGlzLnByaW1hcnlCb3JkZXJDb2xvcix0aGlzLnNwZWNpYWxTdGF0ZUNvbG9yPSIjZjRmNGY0Iix0aGlzLmVycm9yQmtnQ29sb3I9dGhpcy5lcnJvckJrZ0NvbG9yfHx0aGlzLnRlcnRpYXJ5Q29sb3IsdGhpcy5lcnJvclRleHRDb2xvcj10aGlzLmVycm9yVGV4dENvbG9yfHx0aGlzLnRlcnRpYXJ5VGV4dENvbG9yLHRoaXMuZmlsbFR5cGUwPXRoaXMucHJpbWFyeUNvbG9yLHRoaXMuZmlsbFR5cGUxPXRoaXMuc2Vjb25kYXJ5Q29sb3IsdGhpcy5maWxsVHlwZTI9X3QodGhpcy5wcmltYXJ5Q29sb3Ise2g6NjR9KSx0aGlzLmZpbGxUeXBlMz1fdCh0aGlzLnNlY29uZGFyeUNvbG9yLHtoOjY0fSksdGhpcy5maWxsVHlwZTQ9X3QodGhpcy5wcmltYXJ5Q29sb3Ise2g6LTY0fSksdGhpcy5maWxsVHlwZTU9X3QodGhpcy5zZWNvbmRhcnlDb2xvcix7aDotNjR9KSx0aGlzLmZpbGxUeXBlNj1fdCh0aGlzLnByaW1hcnlDb2xvcix7aDoxMjh9KSx0aGlzLmZpbGxUeXBlNz1fdCh0aGlzLnNlY29uZGFyeUNvbG9yLHtoOjEyOH0pLHRoaXMuY1NjYWxlMT10aGlzLmNTY2FsZTF8fCIjMGIwMDAwIix0aGlzLmNTY2FsZTI9dGhpcy5jU2NhbGUyfHwiIzRkMTAzNyIsdGhpcy5jU2NhbGUzPXRoaXMuY1NjYWxlM3x8IiMzZjUyNTgiLHRoaXMuY1NjYWxlND10aGlzLmNTY2FsZTR8fCIjNGYyZjFiIix0aGlzLmNTY2FsZTU9dGhpcy5jU2NhbGU1fHwiIzZlMGEwYSIsdGhpcy5jU2NhbGU2PXRoaXMuY1NjYWxlNnx8IiMzYjAwNDgiLHRoaXMuY1NjYWxlNz10aGlzLmNTY2FsZTd8fCIjOTk1YTAxIix0aGlzLmNTY2FsZTg9dGhpcy5jU2NhbGU4fHwiIzE1NDcwNiIsdGhpcy5jU2NhbGU5PXRoaXMuY1NjYWxlOXx8IiMxNjE3MjIiLHRoaXMuY1NjYWxlMTA9dGhpcy5jU2NhbGUxMHx8IiMwMDI5NmYiLHRoaXMuY1NjYWxlMTE9dGhpcy5jU2NhbGUxMXx8IiMwMTYyOWMiLHRoaXMuY1NjYWxlMTI9dGhpcy5jU2NhbGUxMnx8IiMwMTAwMjkiLHRoaXMuY1NjYWxlMD10aGlzLmNTY2FsZTB8fHRoaXMucHJpbWFyeUNvbG9yLHRoaXMuY1NjYWxlMT10aGlzLmNTY2FsZTF8fHRoaXMuc2Vjb25kYXJ5Q29sb3IsdGhpcy5jU2NhbGUyPXRoaXMuY1NjYWxlMnx8dGhpcy50ZXJ0aWFyeUNvbG9yLHRoaXMuY1NjYWxlMz10aGlzLmNTY2FsZTN8fF90KHRoaXMucHJpbWFyeUNvbG9yLHtoOjMwfSksdGhpcy5jU2NhbGU0PXRoaXMuY1NjYWxlNHx8X3QodGhpcy5wcmltYXJ5Q29sb3Ise2g6NjB9KSx0aGlzLmNTY2FsZTU9dGhpcy5jU2NhbGU1fHxfdCh0aGlzLnByaW1hcnlDb2xvcix7aDo5MH0pLHRoaXMuY1NjYWxlNj10aGlzLmNTY2FsZTZ8fF90KHRoaXMucHJpbWFyeUNvbG9yLHtoOjEyMH0pLHRoaXMuY1NjYWxlNz10aGlzLmNTY2FsZTd8fF90KHRoaXMucHJpbWFyeUNvbG9yLHtoOjE1MH0pLHRoaXMuY1NjYWxlOD10aGlzLmNTY2FsZTh8fF90KHRoaXMucHJpbWFyeUNvbG9yLHtoOjIxMH0pLHRoaXMuY1NjYWxlOT10aGlzLmNTY2FsZTl8fF90KHRoaXMucHJpbWFyeUNvbG9yLHtoOjI3MH0pLHRoaXMuY1NjYWxlMTA9dGhpcy5jU2NhbGUxMHx8X3QodGhpcy5wcmltYXJ5Q29sb3Ise2g6MzAwfSksdGhpcy5jU2NhbGUxMT10aGlzLmNTY2FsZTExfHxfdCh0aGlzLnByaW1hcnlDb2xvcix7aDozMzB9KTtmb3IobGV0IGU9MDtlPHRoaXMuVEhFTUVfQ09MT1JfTElNSVQ7ZSsrKXRoaXNbImNTY2FsZUludiIrZV09dGhpc1siY1NjYWxlSW52IitlXXx8WXQodGhpc1siY1NjYWxlIitlXSk7Zm9yKGxldCBlPTA7ZTx0aGlzLlRIRU1FX0NPTE9SX0xJTUlUO2UrKyl0aGlzWyJjU2NhbGVQZWVyIitlXT10aGlzWyJjU2NhbGVQZWVyIitlXXx8YWUodGhpc1siY1NjYWxlIitlXSwxMCk7dGhpcy5zY2FsZUxhYmVsQ29sb3I9dGhpcy5zY2FsZUxhYmVsQ29sb3J8fCh0aGlzLmRhcmtNb2RlPyJibGFjayI6dGhpcy5sYWJlbFRleHRDb2xvcik7Zm9yKGxldCBlPTA7ZTx0aGlzLlRIRU1FX0NPTE9SX0xJTUlUO2UrKyl0aGlzWyJjU2NhbGVMYWJlbCIrZV09dGhpc1siY1NjYWxlTGFiZWwiK2VdfHx0aGlzLnNjYWxlTGFiZWxDb2xvcjtmb3IobGV0IGU9MDtlPHRoaXMuVEhFTUVfQ09MT1JfTElNSVQ7ZSsrKXRoaXNbInBpZSIrZV09dGhpc1siY1NjYWxlIitlXTt0aGlzLnBpZVRpdGxlVGV4dFNpemU9dGhpcy5waWVUaXRsZVRleHRTaXplfHwiMjVweCIsdGhpcy5waWVUaXRsZVRleHRDb2xvcj10aGlzLnBpZVRpdGxlVGV4dENvbG9yfHx0aGlzLnRhc2tUZXh0RGFya0NvbG9yLHRoaXMucGllU2VjdGlvblRleHRTaXplPXRoaXMucGllU2VjdGlvblRleHRTaXplfHwiMTdweCIsdGhpcy5waWVTZWN0aW9uVGV4dENvbG9yPXRoaXMucGllU2VjdGlvblRleHRDb2xvcnx8dGhpcy50ZXh0Q29sb3IsdGhpcy5waWVMZWdlbmRUZXh0U2l6ZT10aGlzLnBpZUxlZ2VuZFRleHRTaXplfHwiMTdweCIsdGhpcy5waWVMZWdlbmRUZXh0Q29sb3I9dGhpcy5waWVMZWdlbmRUZXh0Q29sb3J8fHRoaXMudGFza1RleHREYXJrQ29sb3IsdGhpcy5waWVTdHJva2VDb2xvcj10aGlzLnBpZVN0cm9rZUNvbG9yfHwiYmxhY2siLHRoaXMucGllU3Ryb2tlV2lkdGg9dGhpcy5waWVTdHJva2VXaWR0aHx8IjJweCIsdGhpcy5waWVPcGFjaXR5PXRoaXMucGllT3BhY2l0eXx8IjAuNyIsdGhpcy5jbGFzc1RleHQ9dGhpcy5wcmltYXJ5VGV4dENvbG9yLHRoaXMucmVxdWlyZW1lbnRCYWNrZ3JvdW5kPXRoaXMucmVxdWlyZW1lbnRCYWNrZ3JvdW5kfHx0aGlzLnByaW1hcnlDb2xvcix0aGlzLnJlcXVpcmVtZW50Qm9yZGVyQ29sb3I9dGhpcy5yZXF1aXJlbWVudEJvcmRlckNvbG9yfHx0aGlzLnByaW1hcnlCb3JkZXJDb2xvcix0aGlzLnJlcXVpcmVtZW50Qm9yZGVyU2l6ZT10aGlzLnJlcXVpcmVtZW50Qm9yZGVyU2l6ZXx8dGhpcy5wcmltYXJ5Qm9yZGVyQ29sb3IsdGhpcy5yZXF1aXJlbWVudFRleHRDb2xvcj10aGlzLnJlcXVpcmVtZW50VGV4dENvbG9yfHx0aGlzLnByaW1hcnlUZXh0Q29sb3IsdGhpcy5yZWxhdGlvbkNvbG9yPXRoaXMucmVsYXRpb25Db2xvcnx8dGhpcy5saW5lQ29sb3IsdGhpcy5yZWxhdGlvbkxhYmVsQmFja2dyb3VuZD10aGlzLnJlbGF0aW9uTGFiZWxCYWNrZ3JvdW5kfHwodGhpcy5kYXJrTW9kZT9nZSh0aGlzLnNlY29uZGFyeUNvbG9yLDMwKTp0aGlzLnNlY29uZGFyeUNvbG9yKSx0aGlzLnJlbGF0aW9uTGFiZWxDb2xvcj10aGlzLnJlbGF0aW9uTGFiZWxDb2xvcnx8dGhpcy5hY3RvclRleHRDb2xvcix0aGlzLmdpdDA9YWUodGhpcy5zZWNvbmRhcnlDb2xvciwyMCksdGhpcy5naXQxPWFlKHRoaXMucGllMnx8dGhpcy5zZWNvbmRhcnlDb2xvciwyMCksdGhpcy5naXQyPWFlKHRoaXMucGllM3x8dGhpcy50ZXJ0aWFyeUNvbG9yLDIwKSx0aGlzLmdpdDM9YWUodGhpcy5waWU0fHxfdCh0aGlzLnByaW1hcnlDb2xvcix7aDotMzB9KSwyMCksdGhpcy5naXQ0PWFlKHRoaXMucGllNXx8X3QodGhpcy5wcmltYXJ5Q29sb3Ise2g6LTYwfSksMjApLHRoaXMuZ2l0NT1hZSh0aGlzLnBpZTZ8fF90KHRoaXMucHJpbWFyeUNvbG9yLHtoOi05MH0pLDEwKSx0aGlzLmdpdDY9YWUodGhpcy5waWU3fHxfdCh0aGlzLnByaW1hcnlDb2xvcix7aDo2MH0pLDEwKSx0aGlzLmdpdDc9YWUodGhpcy5waWU4fHxfdCh0aGlzLnByaW1hcnlDb2xvcix7aDoxMjB9KSwyMCksdGhpcy5naXRJbnYwPXRoaXMuZ2l0SW52MHx8WXQodGhpcy5naXQwKSx0aGlzLmdpdEludjE9dGhpcy5naXRJbnYxfHxZdCh0aGlzLmdpdDEpLHRoaXMuZ2l0SW52Mj10aGlzLmdpdEludjJ8fFl0KHRoaXMuZ2l0MiksdGhpcy5naXRJbnYzPXRoaXMuZ2l0SW52M3x8WXQodGhpcy5naXQzKSx0aGlzLmdpdEludjQ9dGhpcy5naXRJbnY0fHxZdCh0aGlzLmdpdDQpLHRoaXMuZ2l0SW52NT10aGlzLmdpdEludjV8fFl0KHRoaXMuZ2l0NSksdGhpcy5naXRJbnY2PXRoaXMuZ2l0SW52Nnx8WXQodGhpcy5naXQ2KSx0aGlzLmdpdEludjc9dGhpcy5naXRJbnY3fHxZdCh0aGlzLmdpdDcpLHRoaXMudGFnTGFiZWxDb2xvcj10aGlzLnRhZ0xhYmVsQ29sb3J8fHRoaXMucHJpbWFyeVRleHRDb2xvcix0aGlzLnRhZ0xhYmVsQmFja2dyb3VuZD10aGlzLnRhZ0xhYmVsQmFja2dyb3VuZHx8dGhpcy5wcmltYXJ5Q29sb3IsdGhpcy50YWdMYWJlbEJvcmRlcj10aGlzLnRhZ0JvcmRlcnx8dGhpcy5wcmltYXJ5Qm9yZGVyQ29sb3IsdGhpcy50YWdMYWJlbEZvbnRTaXplPXRoaXMudGFnTGFiZWxGb250U2l6ZXx8IjEwcHgiLHRoaXMuY29tbWl0TGFiZWxDb2xvcj10aGlzLmNvbW1pdExhYmVsQ29sb3J8fHRoaXMuc2Vjb25kYXJ5VGV4dENvbG9yLHRoaXMuY29tbWl0TGFiZWxCYWNrZ3JvdW5kPXRoaXMuY29tbWl0TGFiZWxCYWNrZ3JvdW5kfHx0aGlzLnNlY29uZGFyeUNvbG9yLHRoaXMuY29tbWl0TGFiZWxGb250U2l6ZT10aGlzLmNvbW1pdExhYmVsRm9udFNpemV8fCIxMHB4Iix0aGlzLmF0dHJpYnV0ZUJhY2tncm91bmRDb2xvck9kZD10aGlzLmF0dHJpYnV0ZUJhY2tncm91bmRDb2xvck9kZHx8YWUodGhpcy5iYWNrZ3JvdW5kLDEyKSx0aGlzLmF0dHJpYnV0ZUJhY2tncm91bmRDb2xvckV2ZW49dGhpcy5hdHRyaWJ1dGVCYWNrZ3JvdW5kQ29sb3JFdmVufHxhZSh0aGlzLmJhY2tncm91bmQsMil9Y2FsY3VsYXRlKGUpe2lmKHR5cGVvZiBlIT0ib2JqZWN0Iil7dGhpcy51cGRhdGVDb2xvcnMoKTtyZXR1cm59Y29uc3Qgcj1PYmplY3Qua2V5cyhlKTtyLmZvckVhY2gobj0+e3RoaXNbbl09ZVtuXX0pLHRoaXMudXBkYXRlQ29sb3JzKCksci5mb3JFYWNoKG49Pnt0aGlzW25dPWVbbl19KX19Y29uc3QgcEc9dD0+e2NvbnN0IGU9bmV3IGRHO3JldHVybiBlLmNhbGN1bGF0ZSh0KSxlfTtjbGFzcyBnR3tjb25zdHJ1Y3Rvcigpe3RoaXMuYmFja2dyb3VuZD0iI2Y0ZjRmNCIsdGhpcy5wcmltYXJ5Q29sb3I9IiNFQ0VDRkYiLHRoaXMuc2Vjb25kYXJ5Q29sb3I9X3QodGhpcy5wcmltYXJ5Q29sb3Ise2g6MTIwfSksdGhpcy5zZWNvbmRhcnlDb2xvcj0iI2ZmZmZkZSIsdGhpcy50ZXJ0aWFyeUNvbG9yPV90KHRoaXMucHJpbWFyeUNvbG9yLHtoOi0xNjB9KSx0aGlzLnByaW1hcnlCb3JkZXJDb2xvcj1sbih0aGlzLnByaW1hcnlDb2xvcix0aGlzLmRhcmtNb2RlKSx0aGlzLnNlY29uZGFyeUJvcmRlckNvbG9yPWxuKHRoaXMuc2Vjb25kYXJ5Q29sb3IsdGhpcy5kYXJrTW9kZSksdGhpcy50ZXJ0aWFyeUJvcmRlckNvbG9yPWxuKHRoaXMudGVydGlhcnlDb2xvcix0aGlzLmRhcmtNb2RlKSx0aGlzLnByaW1hcnlUZXh0Q29sb3I9WXQodGhpcy5wcmltYXJ5Q29sb3IpLHRoaXMuc2Vjb25kYXJ5VGV4dENvbG9yPVl0KHRoaXMuc2Vjb25kYXJ5Q29sb3IpLHRoaXMudGVydGlhcnlUZXh0Q29sb3I9WXQodGhpcy50ZXJ0aWFyeUNvbG9yKSx0aGlzLmxpbmVDb2xvcj1ZdCh0aGlzLmJhY2tncm91bmQpLHRoaXMudGV4dENvbG9yPVl0KHRoaXMuYmFja2dyb3VuZCksdGhpcy5iYWNrZ3JvdW5kPSJ3aGl0ZSIsdGhpcy5tYWluQmtnPSIjRUNFQ0ZGIix0aGlzLnNlY29uZEJrZz0iI2ZmZmZkZSIsdGhpcy5saW5lQ29sb3I9IiMzMzMzMzMiLHRoaXMuYm9yZGVyMT0iIzkzNzBEQiIsdGhpcy5ib3JkZXIyPSIjYWFhYTMzIix0aGlzLmFycm93aGVhZENvbG9yPSIjMzMzMzMzIix0aGlzLmZvbnRGYW1pbHk9JyJ0cmVidWNoZXQgbXMiLCB2ZXJkYW5hLCBhcmlhbCwgc2Fucy1zZXJpZicsdGhpcy5mb250U2l6ZT0iMTZweCIsdGhpcy5sYWJlbEJhY2tncm91bmQ9IiNlOGU4ZTgiLHRoaXMudGV4dENvbG9yPSIjMzMzIix0aGlzLlRIRU1FX0NPTE9SX0xJTUlUPTEyLHRoaXMubm9kZUJrZz0iY2FsY3VsYXRlZCIsdGhpcy5ub2RlQm9yZGVyPSJjYWxjdWxhdGVkIix0aGlzLmNsdXN0ZXJCa2c9ImNhbGN1bGF0ZWQiLHRoaXMuY2x1c3RlckJvcmRlcj0iY2FsY3VsYXRlZCIsdGhpcy5kZWZhdWx0TGlua0NvbG9yPSJjYWxjdWxhdGVkIix0aGlzLnRpdGxlQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMuZWRnZUxhYmVsQmFja2dyb3VuZD0iY2FsY3VsYXRlZCIsdGhpcy5hY3RvckJvcmRlcj0iY2FsY3VsYXRlZCIsdGhpcy5hY3RvckJrZz0iY2FsY3VsYXRlZCIsdGhpcy5hY3RvclRleHRDb2xvcj0iYmxhY2siLHRoaXMuYWN0b3JMaW5lQ29sb3I9ImdyZXkiLHRoaXMuc2lnbmFsQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMuc2lnbmFsVGV4dENvbG9yPSJjYWxjdWxhdGVkIix0aGlzLmxhYmVsQm94QmtnQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMubGFiZWxCb3hCb3JkZXJDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5sYWJlbFRleHRDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5sb29wVGV4dENvbG9yPSJjYWxjdWxhdGVkIix0aGlzLm5vdGVCb3JkZXJDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5ub3RlQmtnQ29sb3I9IiNmZmY1YWQiLHRoaXMubm90ZVRleHRDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5hY3RpdmF0aW9uQm9yZGVyQ29sb3I9IiM2NjYiLHRoaXMuYWN0aXZhdGlvbkJrZ0NvbG9yPSIjZjRmNGY0Iix0aGlzLnNlcXVlbmNlTnVtYmVyQ29sb3I9IndoaXRlIix0aGlzLnNlY3Rpb25Ca2dDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5hbHRTZWN0aW9uQmtnQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMuc2VjdGlvbkJrZ0NvbG9yMj0iY2FsY3VsYXRlZCIsdGhpcy5leGNsdWRlQmtnQ29sb3I9IiNlZWVlZWUiLHRoaXMudGFza0JvcmRlckNvbG9yPSJjYWxjdWxhdGVkIix0aGlzLnRhc2tCa2dDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy50YXNrVGV4dExpZ2h0Q29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMudGFza1RleHRDb2xvcj10aGlzLnRhc2tUZXh0TGlnaHRDb2xvcix0aGlzLnRhc2tUZXh0RGFya0NvbG9yPSJjYWxjdWxhdGVkIix0aGlzLnRhc2tUZXh0T3V0c2lkZUNvbG9yPXRoaXMudGFza1RleHREYXJrQ29sb3IsdGhpcy50YXNrVGV4dENsaWNrYWJsZUNvbG9yPSJjYWxjdWxhdGVkIix0aGlzLmFjdGl2ZVRhc2tCb3JkZXJDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5hY3RpdmVUYXNrQmtnQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMuZ3JpZENvbG9yPSJjYWxjdWxhdGVkIix0aGlzLmRvbmVUYXNrQmtnQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMuZG9uZVRhc2tCb3JkZXJDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5jcml0Qm9yZGVyQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMuY3JpdEJrZ0NvbG9yPSJjYWxjdWxhdGVkIix0aGlzLnRvZGF5TGluZUNvbG9yPSJjYWxjdWxhdGVkIix0aGlzLnNlY3Rpb25Ca2dDb2xvcj1TYygxMDIsMTAyLDI1NSwuNDkpLHRoaXMuYWx0U2VjdGlvbkJrZ0NvbG9yPSJ3aGl0ZSIsdGhpcy5zZWN0aW9uQmtnQ29sb3IyPSIjZmZmNDAwIix0aGlzLnRhc2tCb3JkZXJDb2xvcj0iIzUzNGZiYyIsdGhpcy50YXNrQmtnQ29sb3I9IiM4YTkwZGQiLHRoaXMudGFza1RleHRMaWdodENvbG9yPSJ3aGl0ZSIsdGhpcy50YXNrVGV4dENvbG9yPSJjYWxjdWxhdGVkIix0aGlzLnRhc2tUZXh0RGFya0NvbG9yPSJibGFjayIsdGhpcy50YXNrVGV4dE91dHNpZGVDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy50YXNrVGV4dENsaWNrYWJsZUNvbG9yPSIjMDAzMTYzIix0aGlzLmFjdGl2ZVRhc2tCb3JkZXJDb2xvcj0iIzUzNGZiYyIsdGhpcy5hY3RpdmVUYXNrQmtnQ29sb3I9IiNiZmM3ZmYiLHRoaXMuZ3JpZENvbG9yPSJsaWdodGdyZXkiLHRoaXMuZG9uZVRhc2tCa2dDb2xvcj0ibGlnaHRncmV5Iix0aGlzLmRvbmVUYXNrQm9yZGVyQ29sb3I9ImdyZXkiLHRoaXMuY3JpdEJvcmRlckNvbG9yPSIjZmY4ODg4Iix0aGlzLmNyaXRCa2dDb2xvcj0icmVkIix0aGlzLnRvZGF5TGluZUNvbG9yPSJyZWQiLHRoaXMucGVyc29uQm9yZGVyPSJjYWxjdWxhdGVkIix0aGlzLnBlcnNvbkJrZz0iY2FsY3VsYXRlZCIsdGhpcy5sYWJlbENvbG9yPSJibGFjayIsdGhpcy5lcnJvckJrZ0NvbG9yPSIjNTUyMjIyIix0aGlzLmVycm9yVGV4dENvbG9yPSIjNTUyMjIyIix0aGlzLnVwZGF0ZUNvbG9ycygpfXVwZGF0ZUNvbG9ycygpe3RoaXMuY1NjYWxlMD10aGlzLmNTY2FsZTB8fHRoaXMucHJpbWFyeUNvbG9yLHRoaXMuY1NjYWxlMT10aGlzLmNTY2FsZTF8fHRoaXMuc2Vjb25kYXJ5Q29sb3IsdGhpcy5jU2NhbGUyPXRoaXMuY1NjYWxlMnx8dGhpcy50ZXJ0aWFyeUNvbG9yLHRoaXMuY1NjYWxlMz10aGlzLmNTY2FsZTN8fF90KHRoaXMucHJpbWFyeUNvbG9yLHtoOjMwfSksdGhpcy5jU2NhbGU0PXRoaXMuY1NjYWxlNHx8X3QodGhpcy5wcmltYXJ5Q29sb3Ise2g6NjB9KSx0aGlzLmNTY2FsZTU9dGhpcy5jU2NhbGU1fHxfdCh0aGlzLnByaW1hcnlDb2xvcix7aDo5MH0pLHRoaXMuY1NjYWxlNj10aGlzLmNTY2FsZTZ8fF90KHRoaXMucHJpbWFyeUNvbG9yLHtoOjEyMH0pLHRoaXMuY1NjYWxlNz10aGlzLmNTY2FsZTd8fF90KHRoaXMucHJpbWFyeUNvbG9yLHtoOjE1MH0pLHRoaXMuY1NjYWxlOD10aGlzLmNTY2FsZTh8fF90KHRoaXMucHJpbWFyeUNvbG9yLHtoOjIxMH0pLHRoaXMuY1NjYWxlOT10aGlzLmNTY2FsZTl8fF90KHRoaXMucHJpbWFyeUNvbG9yLHtoOjI3MH0pLHRoaXMuY1NjYWxlMTA9dGhpcy5jU2NhbGUxMHx8X3QodGhpcy5wcmltYXJ5Q29sb3Ise2g6MzAwfSksdGhpcy5jU2NhbGUxMT10aGlzLmNTY2FsZTExfHxfdCh0aGlzLnByaW1hcnlDb2xvcix7aDozMzB9KSx0aGlzWyJjU2NhbGVQZWVyIisxXT10aGlzWyJjU2NhbGVQZWVyIisxXXx8Z2UodGhpcy5zZWNvbmRhcnlDb2xvciw0NSksdGhpc1siY1NjYWxlUGVlciIrMl09dGhpc1siY1NjYWxlUGVlciIrMl18fGdlKHRoaXMudGVydGlhcnlDb2xvciw0MCk7Zm9yKGxldCBlPTA7ZTx0aGlzLlRIRU1FX0NPTE9SX0xJTUlUO2UrKyl0aGlzWyJjU2NhbGUiK2VdPWdlKHRoaXNbImNTY2FsZSIrZV0sMTApLHRoaXNbImNTY2FsZVBlZXIiK2VdPXRoaXNbImNTY2FsZVBlZXIiK2VdfHxnZSh0aGlzWyJjU2NhbGUiK2VdLDI1KTtmb3IobGV0IGU9MDtlPHRoaXMuVEhFTUVfQ09MT1JfTElNSVQ7ZSsrKXRoaXNbImNTY2FsZUludiIrZV09dGhpc1siY1NjYWxlSW52IitlXXx8X3QodGhpc1siY1NjYWxlIitlXSx7aDoxODB9KTtpZih0aGlzLnNjYWxlTGFiZWxDb2xvcj10aGlzLnNjYWxlTGFiZWxDb2xvciE9PSJjYWxjdWxhdGVkIiYmdGhpcy5zY2FsZUxhYmVsQ29sb3I/dGhpcy5zY2FsZUxhYmVsQ29sb3I6dGhpcy5sYWJlbFRleHRDb2xvcix0aGlzLmxhYmVsVGV4dENvbG9yIT09ImNhbGN1bGF0ZWQiKXt0aGlzLmNTY2FsZUxhYmVsMD10aGlzLmNTY2FsZUxhYmVsMHx8WXQodGhpcy5sYWJlbFRleHRDb2xvciksdGhpcy5jU2NhbGVMYWJlbDM9dGhpcy5jU2NhbGVMYWJlbDN8fFl0KHRoaXMubGFiZWxUZXh0Q29sb3IpO2ZvcihsZXQgZT0wO2U8dGhpcy5USEVNRV9DT0xPUl9MSU1JVDtlKyspdGhpc1siY1NjYWxlTGFiZWwiK2VdPXRoaXNbImNTY2FsZUxhYmVsIitlXXx8dGhpcy5sYWJlbFRleHRDb2xvcn10aGlzLm5vZGVCa2c9dGhpcy5tYWluQmtnLHRoaXMubm9kZUJvcmRlcj10aGlzLmJvcmRlcjEsdGhpcy5jbHVzdGVyQmtnPXRoaXMuc2Vjb25kQmtnLHRoaXMuY2x1c3RlckJvcmRlcj10aGlzLmJvcmRlcjIsdGhpcy5kZWZhdWx0TGlua0NvbG9yPXRoaXMubGluZUNvbG9yLHRoaXMudGl0bGVDb2xvcj10aGlzLnRleHRDb2xvcix0aGlzLmVkZ2VMYWJlbEJhY2tncm91bmQ9dGhpcy5sYWJlbEJhY2tncm91bmQsdGhpcy5hY3RvckJvcmRlcj1hZSh0aGlzLmJvcmRlcjEsMjMpLHRoaXMuYWN0b3JCa2c9dGhpcy5tYWluQmtnLHRoaXMubGFiZWxCb3hCa2dDb2xvcj10aGlzLmFjdG9yQmtnLHRoaXMuc2lnbmFsQ29sb3I9dGhpcy50ZXh0Q29sb3IsdGhpcy5zaWduYWxUZXh0Q29sb3I9dGhpcy50ZXh0Q29sb3IsdGhpcy5sYWJlbEJveEJvcmRlckNvbG9yPXRoaXMuYWN0b3JCb3JkZXIsdGhpcy5sYWJlbFRleHRDb2xvcj10aGlzLmFjdG9yVGV4dENvbG9yLHRoaXMubG9vcFRleHRDb2xvcj10aGlzLmFjdG9yVGV4dENvbG9yLHRoaXMubm90ZUJvcmRlckNvbG9yPXRoaXMuYm9yZGVyMix0aGlzLm5vdGVUZXh0Q29sb3I9dGhpcy5hY3RvclRleHRDb2xvcix0aGlzLnRhc2tUZXh0Q29sb3I9dGhpcy50YXNrVGV4dExpZ2h0Q29sb3IsdGhpcy50YXNrVGV4dE91dHNpZGVDb2xvcj10aGlzLnRhc2tUZXh0RGFya0NvbG9yLHRoaXMudHJhbnNpdGlvbkNvbG9yPXRoaXMudHJhbnNpdGlvbkNvbG9yfHx0aGlzLmxpbmVDb2xvcix0aGlzLnRyYW5zaXRpb25MYWJlbENvbG9yPXRoaXMudHJhbnNpdGlvbkxhYmVsQ29sb3J8fHRoaXMudGV4dENvbG9yLHRoaXMuc3RhdGVMYWJlbENvbG9yPXRoaXMuc3RhdGVMYWJlbENvbG9yfHx0aGlzLnN0YXRlQmtnfHx0aGlzLnByaW1hcnlUZXh0Q29sb3IsdGhpcy5zdGF0ZUJrZz10aGlzLnN0YXRlQmtnfHx0aGlzLm1haW5Ca2csdGhpcy5sYWJlbEJhY2tncm91bmRDb2xvcj10aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yfHx0aGlzLnN0YXRlQmtnLHRoaXMuY29tcG9zaXRlQmFja2dyb3VuZD10aGlzLmNvbXBvc2l0ZUJhY2tncm91bmR8fHRoaXMuYmFja2dyb3VuZHx8dGhpcy50ZXJ0aWFyeUNvbG9yLHRoaXMuYWx0QmFja2dyb3VuZD10aGlzLmFsdEJhY2tncm91bmR8fCIjZjBmMGYwIix0aGlzLmNvbXBvc2l0ZVRpdGxlQmFja2dyb3VuZD10aGlzLmNvbXBvc2l0ZVRpdGxlQmFja2dyb3VuZHx8dGhpcy5tYWluQmtnLHRoaXMuY29tcG9zaXRlQm9yZGVyPXRoaXMuY29tcG9zaXRlQm9yZGVyfHx0aGlzLm5vZGVCb3JkZXIsdGhpcy5pbm5lckVuZEJhY2tncm91bmQ9dGhpcy5ub2RlQm9yZGVyLHRoaXMuc3BlY2lhbFN0YXRlQ29sb3I9dGhpcy5saW5lQ29sb3IsdGhpcy5lcnJvckJrZ0NvbG9yPXRoaXMuZXJyb3JCa2dDb2xvcnx8dGhpcy50ZXJ0aWFyeUNvbG9yLHRoaXMuZXJyb3JUZXh0Q29sb3I9dGhpcy5lcnJvclRleHRDb2xvcnx8dGhpcy50ZXJ0aWFyeVRleHRDb2xvcix0aGlzLnRyYW5zaXRpb25Db2xvcj10aGlzLnRyYW5zaXRpb25Db2xvcnx8dGhpcy5saW5lQ29sb3IsdGhpcy5jbGFzc1RleHQ9dGhpcy5wcmltYXJ5VGV4dENvbG9yLHRoaXMuZmlsbFR5cGUwPXRoaXMucHJpbWFyeUNvbG9yLHRoaXMuZmlsbFR5cGUxPXRoaXMuc2Vjb25kYXJ5Q29sb3IsdGhpcy5maWxsVHlwZTI9X3QodGhpcy5wcmltYXJ5Q29sb3Ise2g6NjR9KSx0aGlzLmZpbGxUeXBlMz1fdCh0aGlzLnNlY29uZGFyeUNvbG9yLHtoOjY0fSksdGhpcy5maWxsVHlwZTQ9X3QodGhpcy5wcmltYXJ5Q29sb3Ise2g6LTY0fSksdGhpcy5maWxsVHlwZTU9X3QodGhpcy5zZWNvbmRhcnlDb2xvcix7aDotNjR9KSx0aGlzLmZpbGxUeXBlNj1fdCh0aGlzLnByaW1hcnlDb2xvcix7aDoxMjh9KSx0aGlzLmZpbGxUeXBlNz1fdCh0aGlzLnNlY29uZGFyeUNvbG9yLHtoOjEyOH0pLHRoaXMucGllMT10aGlzLnBpZTF8fHRoaXMucHJpbWFyeUNvbG9yLHRoaXMucGllMj10aGlzLnBpZTJ8fHRoaXMuc2Vjb25kYXJ5Q29sb3IsdGhpcy5waWUzPXRoaXMucGllM3x8X3QodGhpcy50ZXJ0aWFyeUNvbG9yLHtsOi00MH0pLHRoaXMucGllND10aGlzLnBpZTR8fF90KHRoaXMucHJpbWFyeUNvbG9yLHtsOi0xMH0pLHRoaXMucGllNT10aGlzLnBpZTV8fF90KHRoaXMuc2Vjb25kYXJ5Q29sb3Ise2w6LTMwfSksdGhpcy5waWU2PXRoaXMucGllNnx8X3QodGhpcy50ZXJ0aWFyeUNvbG9yLHtsOi0yMH0pLHRoaXMucGllNz10aGlzLnBpZTd8fF90KHRoaXMucHJpbWFyeUNvbG9yLHtoOjYwLGw6LTIwfSksdGhpcy5waWU4PXRoaXMucGllOHx8X3QodGhpcy5wcmltYXJ5Q29sb3Ise2g6LTYwLGw6LTQwfSksdGhpcy5waWU5PXRoaXMucGllOXx8X3QodGhpcy5wcmltYXJ5Q29sb3Ise2g6MTIwLGw6LTQwfSksdGhpcy5waWUxMD10aGlzLnBpZTEwfHxfdCh0aGlzLnByaW1hcnlDb2xvcix7aDo2MCxsOi00MH0pLHRoaXMucGllMTE9dGhpcy5waWUxMXx8X3QodGhpcy5wcmltYXJ5Q29sb3Ise2g6LTkwLGw6LTQwfSksdGhpcy5waWUxMj10aGlzLnBpZTEyfHxfdCh0aGlzLnByaW1hcnlDb2xvcix7aDoxMjAsbDotMzB9KSx0aGlzLnBpZVRpdGxlVGV4dFNpemU9dGhpcy5waWVUaXRsZVRleHRTaXplfHwiMjVweCIsdGhpcy5waWVUaXRsZVRleHRDb2xvcj10aGlzLnBpZVRpdGxlVGV4dENvbG9yfHx0aGlzLnRhc2tUZXh0RGFya0NvbG9yLHRoaXMucGllU2VjdGlvblRleHRTaXplPXRoaXMucGllU2VjdGlvblRleHRTaXplfHwiMTdweCIsdGhpcy5waWVTZWN0aW9uVGV4dENvbG9yPXRoaXMucGllU2VjdGlvblRleHRDb2xvcnx8dGhpcy50ZXh0Q29sb3IsdGhpcy5waWVMZWdlbmRUZXh0U2l6ZT10aGlzLnBpZUxlZ2VuZFRleHRTaXplfHwiMTdweCIsdGhpcy5waWVMZWdlbmRUZXh0Q29sb3I9dGhpcy5waWVMZWdlbmRUZXh0Q29sb3J8fHRoaXMudGFza1RleHREYXJrQ29sb3IsdGhpcy5waWVTdHJva2VDb2xvcj10aGlzLnBpZVN0cm9rZUNvbG9yfHwiYmxhY2siLHRoaXMucGllU3Ryb2tlV2lkdGg9dGhpcy5waWVTdHJva2VXaWR0aHx8IjJweCIsdGhpcy5waWVPcGFjaXR5PXRoaXMucGllT3BhY2l0eXx8IjAuNyIsdGhpcy5yZXF1aXJlbWVudEJhY2tncm91bmQ9dGhpcy5yZXF1aXJlbWVudEJhY2tncm91bmR8fHRoaXMucHJpbWFyeUNvbG9yLHRoaXMucmVxdWlyZW1lbnRCb3JkZXJDb2xvcj10aGlzLnJlcXVpcmVtZW50Qm9yZGVyQ29sb3J8fHRoaXMucHJpbWFyeUJvcmRlckNvbG9yLHRoaXMucmVxdWlyZW1lbnRCb3JkZXJTaXplPXRoaXMucmVxdWlyZW1lbnRCb3JkZXJTaXplfHx0aGlzLnByaW1hcnlCb3JkZXJDb2xvcix0aGlzLnJlcXVpcmVtZW50VGV4dENvbG9yPXRoaXMucmVxdWlyZW1lbnRUZXh0Q29sb3J8fHRoaXMucHJpbWFyeVRleHRDb2xvcix0aGlzLnJlbGF0aW9uQ29sb3I9dGhpcy5yZWxhdGlvbkNvbG9yfHx0aGlzLmxpbmVDb2xvcix0aGlzLnJlbGF0aW9uTGFiZWxCYWNrZ3JvdW5kPXRoaXMucmVsYXRpb25MYWJlbEJhY2tncm91bmR8fHRoaXMubGFiZWxCYWNrZ3JvdW5kLHRoaXMucmVsYXRpb25MYWJlbENvbG9yPXRoaXMucmVsYXRpb25MYWJlbENvbG9yfHx0aGlzLmFjdG9yVGV4dENvbG9yLHRoaXMuZ2l0MD10aGlzLmdpdDB8fHRoaXMucHJpbWFyeUNvbG9yLHRoaXMuZ2l0MT10aGlzLmdpdDF8fHRoaXMuc2Vjb25kYXJ5Q29sb3IsdGhpcy5naXQyPXRoaXMuZ2l0Mnx8dGhpcy50ZXJ0aWFyeUNvbG9yLHRoaXMuZ2l0Mz10aGlzLmdpdDN8fF90KHRoaXMucHJpbWFyeUNvbG9yLHtoOi0zMH0pLHRoaXMuZ2l0ND10aGlzLmdpdDR8fF90KHRoaXMucHJpbWFyeUNvbG9yLHtoOi02MH0pLHRoaXMuZ2l0NT10aGlzLmdpdDV8fF90KHRoaXMucHJpbWFyeUNvbG9yLHtoOi05MH0pLHRoaXMuZ2l0Nj10aGlzLmdpdDZ8fF90KHRoaXMucHJpbWFyeUNvbG9yLHtoOjYwfSksdGhpcy5naXQ3PXRoaXMuZ2l0N3x8X3QodGhpcy5wcmltYXJ5Q29sb3Ise2g6MTIwfSksdGhpcy5kYXJrTW9kZT8odGhpcy5naXQwPWFlKHRoaXMuZ2l0MCwyNSksdGhpcy5naXQxPWFlKHRoaXMuZ2l0MSwyNSksdGhpcy5naXQyPWFlKHRoaXMuZ2l0MiwyNSksdGhpcy5naXQzPWFlKHRoaXMuZ2l0MywyNSksdGhpcy5naXQ0PWFlKHRoaXMuZ2l0NCwyNSksdGhpcy5naXQ1PWFlKHRoaXMuZ2l0NSwyNSksdGhpcy5naXQ2PWFlKHRoaXMuZ2l0NiwyNSksdGhpcy5naXQ3PWFlKHRoaXMuZ2l0NywyNSkpOih0aGlzLmdpdDA9Z2UodGhpcy5naXQwLDI1KSx0aGlzLmdpdDE9Z2UodGhpcy5naXQxLDI1KSx0aGlzLmdpdDI9Z2UodGhpcy5naXQyLDI1KSx0aGlzLmdpdDM9Z2UodGhpcy5naXQzLDI1KSx0aGlzLmdpdDQ9Z2UodGhpcy5naXQ0LDI1KSx0aGlzLmdpdDU9Z2UodGhpcy5naXQ1LDI1KSx0aGlzLmdpdDY9Z2UodGhpcy5naXQ2LDI1KSx0aGlzLmdpdDc9Z2UodGhpcy5naXQ3LDI1KSksdGhpcy5naXRJbnYwPXRoaXMuZ2l0SW52MHx8Z2UoWXQodGhpcy5naXQwKSwyNSksdGhpcy5naXRJbnYxPXRoaXMuZ2l0SW52MXx8WXQodGhpcy5naXQxKSx0aGlzLmdpdEludjI9dGhpcy5naXRJbnYyfHxZdCh0aGlzLmdpdDIpLHRoaXMuZ2l0SW52Mz10aGlzLmdpdEludjN8fFl0KHRoaXMuZ2l0MyksdGhpcy5naXRJbnY0PXRoaXMuZ2l0SW52NHx8WXQodGhpcy5naXQ0KSx0aGlzLmdpdEludjU9dGhpcy5naXRJbnY1fHxZdCh0aGlzLmdpdDUpLHRoaXMuZ2l0SW52Nj10aGlzLmdpdEludjZ8fFl0KHRoaXMuZ2l0NiksdGhpcy5naXRJbnY3PXRoaXMuZ2l0SW52N3x8WXQodGhpcy5naXQ3KSx0aGlzLmdpdEJyYW5jaExhYmVsMD10aGlzLmdpdEJyYW5jaExhYmVsMHx8WXQodGhpcy5sYWJlbFRleHRDb2xvciksdGhpcy5naXRCcmFuY2hMYWJlbDE9dGhpcy5naXRCcmFuY2hMYWJlbDF8fHRoaXMubGFiZWxUZXh0Q29sb3IsdGhpcy5naXRCcmFuY2hMYWJlbDI9dGhpcy5naXRCcmFuY2hMYWJlbDJ8fHRoaXMubGFiZWxUZXh0Q29sb3IsdGhpcy5naXRCcmFuY2hMYWJlbDM9dGhpcy5naXRCcmFuY2hMYWJlbDN8fFl0KHRoaXMubGFiZWxUZXh0Q29sb3IpLHRoaXMuZ2l0QnJhbmNoTGFiZWw0PXRoaXMuZ2l0QnJhbmNoTGFiZWw0fHx0aGlzLmxhYmVsVGV4dENvbG9yLHRoaXMuZ2l0QnJhbmNoTGFiZWw1PXRoaXMuZ2l0QnJhbmNoTGFiZWw1fHx0aGlzLmxhYmVsVGV4dENvbG9yLHRoaXMuZ2l0QnJhbmNoTGFiZWw2PXRoaXMuZ2l0QnJhbmNoTGFiZWw2fHx0aGlzLmxhYmVsVGV4dENvbG9yLHRoaXMuZ2l0QnJhbmNoTGFiZWw3PXRoaXMuZ2l0QnJhbmNoTGFiZWw3fHx0aGlzLmxhYmVsVGV4dENvbG9yLHRoaXMudGFnTGFiZWxDb2xvcj10aGlzLnRhZ0xhYmVsQ29sb3J8fHRoaXMucHJpbWFyeVRleHRDb2xvcix0aGlzLnRhZ0xhYmVsQmFja2dyb3VuZD10aGlzLnRhZ0xhYmVsQmFja2dyb3VuZHx8dGhpcy5wcmltYXJ5Q29sb3IsdGhpcy50YWdMYWJlbEJvcmRlcj10aGlzLnRhZ0JvcmRlcnx8dGhpcy5wcmltYXJ5Qm9yZGVyQ29sb3IsdGhpcy50YWdMYWJlbEZvbnRTaXplPXRoaXMudGFnTGFiZWxGb250U2l6ZXx8IjEwcHgiLHRoaXMuY29tbWl0TGFiZWxDb2xvcj10aGlzLmNvbW1pdExhYmVsQ29sb3J8fHRoaXMuc2Vjb25kYXJ5VGV4dENvbG9yLHRoaXMuY29tbWl0TGFiZWxCYWNrZ3JvdW5kPXRoaXMuY29tbWl0TGFiZWxCYWNrZ3JvdW5kfHx0aGlzLnNlY29uZGFyeUNvbG9yLHRoaXMuY29tbWl0TGFiZWxGb250U2l6ZT10aGlzLmNvbW1pdExhYmVsRm9udFNpemV8fCIxMHB4Iix0aGlzLmF0dHJpYnV0ZUJhY2tncm91bmRDb2xvck9kZD10aGlzLmF0dHJpYnV0ZUJhY2tncm91bmRDb2xvck9kZHx8cWYsdGhpcy5hdHRyaWJ1dGVCYWNrZ3JvdW5kQ29sb3JFdmVuPXRoaXMuYXR0cmlidXRlQmFja2dyb3VuZENvbG9yRXZlbnx8VmZ9Y2FsY3VsYXRlKGUpe2lmKHR5cGVvZiBlIT0ib2JqZWN0Iil7dGhpcy51cGRhdGVDb2xvcnMoKTtyZXR1cm59Y29uc3Qgcj1PYmplY3Qua2V5cyhlKTtyLmZvckVhY2gobj0+e3RoaXNbbl09ZVtuXX0pLHRoaXMudXBkYXRlQ29sb3JzKCksci5mb3JFYWNoKG49Pnt0aGlzW25dPWVbbl19KX19Y29uc3QgeUc9dD0+e2NvbnN0IGU9bmV3IGdHO3JldHVybiBlLmNhbGN1bGF0ZSh0KSxlfTtjbGFzcyBtR3tjb25zdHJ1Y3Rvcigpe3RoaXMuYmFja2dyb3VuZD0iI2Y0ZjRmNCIsdGhpcy5wcmltYXJ5Q29sb3I9IiNjZGU0OTgiLHRoaXMuc2Vjb25kYXJ5Q29sb3I9IiNjZGZmYjIiLHRoaXMuYmFja2dyb3VuZD0id2hpdGUiLHRoaXMubWFpbkJrZz0iI2NkZTQ5OCIsdGhpcy5zZWNvbmRCa2c9IiNjZGZmYjIiLHRoaXMubGluZUNvbG9yPSJncmVlbiIsdGhpcy5ib3JkZXIxPSIjMTM1NDBjIix0aGlzLmJvcmRlcjI9IiM2ZWFhNDkiLHRoaXMuYXJyb3doZWFkQ29sb3I9ImdyZWVuIix0aGlzLmZvbnRGYW1pbHk9JyJ0cmVidWNoZXQgbXMiLCB2ZXJkYW5hLCBhcmlhbCwgc2Fucy1zZXJpZicsdGhpcy5mb250U2l6ZT0iMTZweCIsdGhpcy50ZXJ0aWFyeUNvbG9yPWFlKCIjY2RlNDk4IiwxMCksdGhpcy5wcmltYXJ5Qm9yZGVyQ29sb3I9bG4odGhpcy5wcmltYXJ5Q29sb3IsdGhpcy5kYXJrTW9kZSksdGhpcy5zZWNvbmRhcnlCb3JkZXJDb2xvcj1sbih0aGlzLnNlY29uZGFyeUNvbG9yLHRoaXMuZGFya01vZGUpLHRoaXMudGVydGlhcnlCb3JkZXJDb2xvcj1sbih0aGlzLnRlcnRpYXJ5Q29sb3IsdGhpcy5kYXJrTW9kZSksdGhpcy5wcmltYXJ5VGV4dENvbG9yPVl0KHRoaXMucHJpbWFyeUNvbG9yKSx0aGlzLnNlY29uZGFyeVRleHRDb2xvcj1ZdCh0aGlzLnNlY29uZGFyeUNvbG9yKSx0aGlzLnRlcnRpYXJ5VGV4dENvbG9yPVl0KHRoaXMucHJpbWFyeUNvbG9yKSx0aGlzLmxpbmVDb2xvcj1ZdCh0aGlzLmJhY2tncm91bmQpLHRoaXMudGV4dENvbG9yPVl0KHRoaXMuYmFja2dyb3VuZCksdGhpcy5USEVNRV9DT0xPUl9MSU1JVD0xMix0aGlzLm5vZGVCa2c9ImNhbGN1bGF0ZWQiLHRoaXMubm9kZUJvcmRlcj0iY2FsY3VsYXRlZCIsdGhpcy5jbHVzdGVyQmtnPSJjYWxjdWxhdGVkIix0aGlzLmNsdXN0ZXJCb3JkZXI9ImNhbGN1bGF0ZWQiLHRoaXMuZGVmYXVsdExpbmtDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy50aXRsZUNvbG9yPSIjMzMzIix0aGlzLmVkZ2VMYWJlbEJhY2tncm91bmQ9IiNlOGU4ZTgiLHRoaXMuYWN0b3JCb3JkZXI9ImNhbGN1bGF0ZWQiLHRoaXMuYWN0b3JCa2c9ImNhbGN1bGF0ZWQiLHRoaXMuYWN0b3JUZXh0Q29sb3I9ImJsYWNrIix0aGlzLmFjdG9yTGluZUNvbG9yPSJncmV5Iix0aGlzLnNpZ25hbENvbG9yPSIjMzMzIix0aGlzLnNpZ25hbFRleHRDb2xvcj0iIzMzMyIsdGhpcy5sYWJlbEJveEJrZ0NvbG9yPSJjYWxjdWxhdGVkIix0aGlzLmxhYmVsQm94Qm9yZGVyQ29sb3I9IiMzMjY5MzIiLHRoaXMubGFiZWxUZXh0Q29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMubG9vcFRleHRDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5ub3RlQm9yZGVyQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMubm90ZUJrZ0NvbG9yPSIjZmZmNWFkIix0aGlzLm5vdGVUZXh0Q29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMuYWN0aXZhdGlvbkJvcmRlckNvbG9yPSIjNjY2Iix0aGlzLmFjdGl2YXRpb25Ca2dDb2xvcj0iI2Y0ZjRmNCIsdGhpcy5zZXF1ZW5jZU51bWJlckNvbG9yPSJ3aGl0ZSIsdGhpcy5zZWN0aW9uQmtnQ29sb3I9IiM2ZWFhNDkiLHRoaXMuYWx0U2VjdGlvbkJrZ0NvbG9yPSJ3aGl0ZSIsdGhpcy5zZWN0aW9uQmtnQ29sb3IyPSIjNmVhYTQ5Iix0aGlzLmV4Y2x1ZGVCa2dDb2xvcj0iI2VlZWVlZSIsdGhpcy50YXNrQm9yZGVyQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMudGFza0JrZ0NvbG9yPSIjNDg3ZTNhIix0aGlzLnRhc2tUZXh0TGlnaHRDb2xvcj0id2hpdGUiLHRoaXMudGFza1RleHRDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy50YXNrVGV4dERhcmtDb2xvcj0iYmxhY2siLHRoaXMudGFza1RleHRPdXRzaWRlQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMudGFza1RleHRDbGlja2FibGVDb2xvcj0iIzAwMzE2MyIsdGhpcy5hY3RpdmVUYXNrQm9yZGVyQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMuYWN0aXZlVGFza0JrZ0NvbG9yPSJjYWxjdWxhdGVkIix0aGlzLmdyaWRDb2xvcj0ibGlnaHRncmV5Iix0aGlzLmRvbmVUYXNrQmtnQ29sb3I9ImxpZ2h0Z3JleSIsdGhpcy5kb25lVGFza0JvcmRlckNvbG9yPSJncmV5Iix0aGlzLmNyaXRCb3JkZXJDb2xvcj0iI2ZmODg4OCIsdGhpcy5jcml0QmtnQ29sb3I9InJlZCIsdGhpcy50b2RheUxpbmVDb2xvcj0icmVkIix0aGlzLnBlcnNvbkJvcmRlcj0iY2FsY3VsYXRlZCIsdGhpcy5wZXJzb25Ca2c9ImNhbGN1bGF0ZWQiLHRoaXMubGFiZWxDb2xvcj0iYmxhY2siLHRoaXMuZXJyb3JCa2dDb2xvcj0iIzU1MjIyMiIsdGhpcy5lcnJvclRleHRDb2xvcj0iIzU1MjIyMiJ9dXBkYXRlQ29sb3JzKCl7dGhpcy5jU2NhbGUwPXRoaXMuY1NjYWxlMHx8dGhpcy5wcmltYXJ5Q29sb3IsdGhpcy5jU2NhbGUxPXRoaXMuY1NjYWxlMXx8dGhpcy5zZWNvbmRhcnlDb2xvcix0aGlzLmNTY2FsZTI9dGhpcy5jU2NhbGUyfHx0aGlzLnRlcnRpYXJ5Q29sb3IsdGhpcy5jU2NhbGUzPXRoaXMuY1NjYWxlM3x8X3QodGhpcy5wcmltYXJ5Q29sb3Ise2g6MzB9KSx0aGlzLmNTY2FsZTQ9dGhpcy5jU2NhbGU0fHxfdCh0aGlzLnByaW1hcnlDb2xvcix7aDo2MH0pLHRoaXMuY1NjYWxlNT10aGlzLmNTY2FsZTV8fF90KHRoaXMucHJpbWFyeUNvbG9yLHtoOjkwfSksdGhpcy5jU2NhbGU2PXRoaXMuY1NjYWxlNnx8X3QodGhpcy5wcmltYXJ5Q29sb3Ise2g6MTIwfSksdGhpcy5jU2NhbGU3PXRoaXMuY1NjYWxlN3x8X3QodGhpcy5wcmltYXJ5Q29sb3Ise2g6MTUwfSksdGhpcy5jU2NhbGU4PXRoaXMuY1NjYWxlOHx8X3QodGhpcy5wcmltYXJ5Q29sb3Ise2g6MjEwfSksdGhpcy5jU2NhbGU5PXRoaXMuY1NjYWxlOXx8X3QodGhpcy5wcmltYXJ5Q29sb3Ise2g6MjcwfSksdGhpcy5jU2NhbGUxMD10aGlzLmNTY2FsZTEwfHxfdCh0aGlzLnByaW1hcnlDb2xvcix7aDozMDB9KSx0aGlzLmNTY2FsZTExPXRoaXMuY1NjYWxlMTF8fF90KHRoaXMucHJpbWFyeUNvbG9yLHtoOjMzMH0pLHRoaXNbImNTY2FsZVBlZXIiKzFdPXRoaXNbImNTY2FsZVBlZXIiKzFdfHxnZSh0aGlzLnNlY29uZGFyeUNvbG9yLDQ1KSx0aGlzWyJjU2NhbGVQZWVyIisyXT10aGlzWyJjU2NhbGVQZWVyIisyXXx8Z2UodGhpcy50ZXJ0aWFyeUNvbG9yLDQwKTtmb3IobGV0IGU9MDtlPHRoaXMuVEhFTUVfQ09MT1JfTElNSVQ7ZSsrKXRoaXNbImNTY2FsZSIrZV09Z2UodGhpc1siY1NjYWxlIitlXSwxMCksdGhpc1siY1NjYWxlUGVlciIrZV09dGhpc1siY1NjYWxlUGVlciIrZV18fGdlKHRoaXNbImNTY2FsZSIrZV0sMjUpO2ZvcihsZXQgZT0wO2U8dGhpcy5USEVNRV9DT0xPUl9MSU1JVDtlKyspdGhpc1siY1NjYWxlSW52IitlXT10aGlzWyJjU2NhbGVJbnYiK2VdfHxfdCh0aGlzWyJjU2NhbGUiK2VdLHtoOjE4MH0pO3RoaXMuc2NhbGVMYWJlbENvbG9yPXRoaXMuc2NhbGVMYWJlbENvbG9yIT09ImNhbGN1bGF0ZWQiJiZ0aGlzLnNjYWxlTGFiZWxDb2xvcj90aGlzLnNjYWxlTGFiZWxDb2xvcjp0aGlzLmxhYmVsVGV4dENvbG9yO2ZvcihsZXQgZT0wO2U8dGhpcy5USEVNRV9DT0xPUl9MSU1JVDtlKyspdGhpc1siY1NjYWxlTGFiZWwiK2VdPXRoaXNbImNTY2FsZUxhYmVsIitlXXx8dGhpcy5zY2FsZUxhYmVsQ29sb3I7dGhpcy5ub2RlQmtnPXRoaXMubWFpbkJrZyx0aGlzLm5vZGVCb3JkZXI9dGhpcy5ib3JkZXIxLHRoaXMuY2x1c3RlckJrZz10aGlzLnNlY29uZEJrZyx0aGlzLmNsdXN0ZXJCb3JkZXI9dGhpcy5ib3JkZXIyLHRoaXMuZGVmYXVsdExpbmtDb2xvcj10aGlzLmxpbmVDb2xvcix0aGlzLmFjdG9yQm9yZGVyPWdlKHRoaXMubWFpbkJrZywyMCksdGhpcy5hY3RvckJrZz10aGlzLm1haW5Ca2csdGhpcy5sYWJlbEJveEJrZ0NvbG9yPXRoaXMuYWN0b3JCa2csdGhpcy5sYWJlbFRleHRDb2xvcj10aGlzLmFjdG9yVGV4dENvbG9yLHRoaXMubG9vcFRleHRDb2xvcj10aGlzLmFjdG9yVGV4dENvbG9yLHRoaXMubm90ZUJvcmRlckNvbG9yPXRoaXMuYm9yZGVyMix0aGlzLm5vdGVUZXh0Q29sb3I9dGhpcy5hY3RvclRleHRDb2xvcix0aGlzLnRhc2tCb3JkZXJDb2xvcj10aGlzLmJvcmRlcjEsdGhpcy50YXNrVGV4dENvbG9yPXRoaXMudGFza1RleHRMaWdodENvbG9yLHRoaXMudGFza1RleHRPdXRzaWRlQ29sb3I9dGhpcy50YXNrVGV4dERhcmtDb2xvcix0aGlzLmFjdGl2ZVRhc2tCb3JkZXJDb2xvcj10aGlzLnRhc2tCb3JkZXJDb2xvcix0aGlzLmFjdGl2ZVRhc2tCa2dDb2xvcj10aGlzLm1haW5Ca2csdGhpcy50cmFuc2l0aW9uQ29sb3I9dGhpcy50cmFuc2l0aW9uQ29sb3J8fHRoaXMubGluZUNvbG9yLHRoaXMudHJhbnNpdGlvbkxhYmVsQ29sb3I9dGhpcy50cmFuc2l0aW9uTGFiZWxDb2xvcnx8dGhpcy50ZXh0Q29sb3IsdGhpcy5zdGF0ZUxhYmVsQ29sb3I9dGhpcy5zdGF0ZUxhYmVsQ29sb3J8fHRoaXMuc3RhdGVCa2d8fHRoaXMucHJpbWFyeVRleHRDb2xvcix0aGlzLnN0YXRlQmtnPXRoaXMuc3RhdGVCa2d8fHRoaXMubWFpbkJrZyx0aGlzLmxhYmVsQmFja2dyb3VuZENvbG9yPXRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3J8fHRoaXMuc3RhdGVCa2csdGhpcy5jb21wb3NpdGVCYWNrZ3JvdW5kPXRoaXMuY29tcG9zaXRlQmFja2dyb3VuZHx8dGhpcy5iYWNrZ3JvdW5kfHx0aGlzLnRlcnRpYXJ5Q29sb3IsdGhpcy5hbHRCYWNrZ3JvdW5kPXRoaXMuYWx0QmFja2dyb3VuZHx8IiNmMGYwZjAiLHRoaXMuY29tcG9zaXRlVGl0bGVCYWNrZ3JvdW5kPXRoaXMuY29tcG9zaXRlVGl0bGVCYWNrZ3JvdW5kfHx0aGlzLm1haW5Ca2csdGhpcy5jb21wb3NpdGVCb3JkZXI9dGhpcy5jb21wb3NpdGVCb3JkZXJ8fHRoaXMubm9kZUJvcmRlcix0aGlzLmlubmVyRW5kQmFja2dyb3VuZD10aGlzLnByaW1hcnlCb3JkZXJDb2xvcix0aGlzLnNwZWNpYWxTdGF0ZUNvbG9yPXRoaXMubGluZUNvbG9yLHRoaXMuZXJyb3JCa2dDb2xvcj10aGlzLmVycm9yQmtnQ29sb3J8fHRoaXMudGVydGlhcnlDb2xvcix0aGlzLmVycm9yVGV4dENvbG9yPXRoaXMuZXJyb3JUZXh0Q29sb3J8fHRoaXMudGVydGlhcnlUZXh0Q29sb3IsdGhpcy50cmFuc2l0aW9uQ29sb3I9dGhpcy50cmFuc2l0aW9uQ29sb3J8fHRoaXMubGluZUNvbG9yLHRoaXMuY2xhc3NUZXh0PXRoaXMucHJpbWFyeVRleHRDb2xvcix0aGlzLmZpbGxUeXBlMD10aGlzLnByaW1hcnlDb2xvcix0aGlzLmZpbGxUeXBlMT10aGlzLnNlY29uZGFyeUNvbG9yLHRoaXMuZmlsbFR5cGUyPV90KHRoaXMucHJpbWFyeUNvbG9yLHtoOjY0fSksdGhpcy5maWxsVHlwZTM9X3QodGhpcy5zZWNvbmRhcnlDb2xvcix7aDo2NH0pLHRoaXMuZmlsbFR5cGU0PV90KHRoaXMucHJpbWFyeUNvbG9yLHtoOi02NH0pLHRoaXMuZmlsbFR5cGU1PV90KHRoaXMuc2Vjb25kYXJ5Q29sb3Ise2g6LTY0fSksdGhpcy5maWxsVHlwZTY9X3QodGhpcy5wcmltYXJ5Q29sb3Ise2g6MTI4fSksdGhpcy5maWxsVHlwZTc9X3QodGhpcy5zZWNvbmRhcnlDb2xvcix7aDoxMjh9KSx0aGlzLnBpZTE9dGhpcy5waWUxfHx0aGlzLnByaW1hcnlDb2xvcix0aGlzLnBpZTI9dGhpcy5waWUyfHx0aGlzLnNlY29uZGFyeUNvbG9yLHRoaXMucGllMz10aGlzLnBpZTN8fHRoaXMudGVydGlhcnlDb2xvcix0aGlzLnBpZTQ9dGhpcy5waWU0fHxfdCh0aGlzLnByaW1hcnlDb2xvcix7bDotMzB9KSx0aGlzLnBpZTU9dGhpcy5waWU1fHxfdCh0aGlzLnNlY29uZGFyeUNvbG9yLHtsOi0zMH0pLHRoaXMucGllNj10aGlzLnBpZTZ8fF90KHRoaXMudGVydGlhcnlDb2xvcix7aDo0MCxsOi00MH0pLHRoaXMucGllNz10aGlzLnBpZTd8fF90KHRoaXMucHJpbWFyeUNvbG9yLHtoOjYwLGw6LTEwfSksdGhpcy5waWU4PXRoaXMucGllOHx8X3QodGhpcy5wcmltYXJ5Q29sb3Ise2g6LTYwLGw6LTEwfSksdGhpcy5waWU5PXRoaXMucGllOXx8X3QodGhpcy5wcmltYXJ5Q29sb3Ise2g6MTIwLGw6MH0pLHRoaXMucGllMTA9dGhpcy5waWUxMHx8X3QodGhpcy5wcmltYXJ5Q29sb3Ise2g6NjAsbDotNTB9KSx0aGlzLnBpZTExPXRoaXMucGllMTF8fF90KHRoaXMucHJpbWFyeUNvbG9yLHtoOi02MCxsOi01MH0pLHRoaXMucGllMTI9dGhpcy5waWUxMnx8X3QodGhpcy5wcmltYXJ5Q29sb3Ise2g6MTIwLGw6LTUwfSksdGhpcy5waWVUaXRsZVRleHRTaXplPXRoaXMucGllVGl0bGVUZXh0U2l6ZXx8IjI1cHgiLHRoaXMucGllVGl0bGVUZXh0Q29sb3I9dGhpcy5waWVUaXRsZVRleHRDb2xvcnx8dGhpcy50YXNrVGV4dERhcmtDb2xvcix0aGlzLnBpZVNlY3Rpb25UZXh0U2l6ZT10aGlzLnBpZVNlY3Rpb25UZXh0U2l6ZXx8IjE3cHgiLHRoaXMucGllU2VjdGlvblRleHRDb2xvcj10aGlzLnBpZVNlY3Rpb25UZXh0Q29sb3J8fHRoaXMudGV4dENvbG9yLHRoaXMucGllTGVnZW5kVGV4dFNpemU9dGhpcy5waWVMZWdlbmRUZXh0U2l6ZXx8IjE3cHgiLHRoaXMucGllTGVnZW5kVGV4dENvbG9yPXRoaXMucGllTGVnZW5kVGV4dENvbG9yfHx0aGlzLnRhc2tUZXh0RGFya0NvbG9yLHRoaXMucGllU3Ryb2tlQ29sb3I9dGhpcy5waWVTdHJva2VDb2xvcnx8ImJsYWNrIix0aGlzLnBpZVN0cm9rZVdpZHRoPXRoaXMucGllU3Ryb2tlV2lkdGh8fCIycHgiLHRoaXMucGllT3BhY2l0eT10aGlzLnBpZU9wYWNpdHl8fCIwLjciLHRoaXMucmVxdWlyZW1lbnRCYWNrZ3JvdW5kPXRoaXMucmVxdWlyZW1lbnRCYWNrZ3JvdW5kfHx0aGlzLnByaW1hcnlDb2xvcix0aGlzLnJlcXVpcmVtZW50Qm9yZGVyQ29sb3I9dGhpcy5yZXF1aXJlbWVudEJvcmRlckNvbG9yfHx0aGlzLnByaW1hcnlCb3JkZXJDb2xvcix0aGlzLnJlcXVpcmVtZW50Qm9yZGVyU2l6ZT10aGlzLnJlcXVpcmVtZW50Qm9yZGVyU2l6ZXx8dGhpcy5wcmltYXJ5Qm9yZGVyQ29sb3IsdGhpcy5yZXF1aXJlbWVudFRleHRDb2xvcj10aGlzLnJlcXVpcmVtZW50VGV4dENvbG9yfHx0aGlzLnByaW1hcnlUZXh0Q29sb3IsdGhpcy5yZWxhdGlvbkNvbG9yPXRoaXMucmVsYXRpb25Db2xvcnx8dGhpcy5saW5lQ29sb3IsdGhpcy5yZWxhdGlvbkxhYmVsQmFja2dyb3VuZD10aGlzLnJlbGF0aW9uTGFiZWxCYWNrZ3JvdW5kfHx0aGlzLmVkZ2VMYWJlbEJhY2tncm91bmQsdGhpcy5yZWxhdGlvbkxhYmVsQ29sb3I9dGhpcy5yZWxhdGlvbkxhYmVsQ29sb3J8fHRoaXMuYWN0b3JUZXh0Q29sb3IsdGhpcy5naXQwPXRoaXMuZ2l0MHx8dGhpcy5wcmltYXJ5Q29sb3IsdGhpcy5naXQxPXRoaXMuZ2l0MXx8dGhpcy5zZWNvbmRhcnlDb2xvcix0aGlzLmdpdDI9dGhpcy5naXQyfHx0aGlzLnRlcnRpYXJ5Q29sb3IsdGhpcy5naXQzPXRoaXMuZ2l0M3x8X3QodGhpcy5wcmltYXJ5Q29sb3Ise2g6LTMwfSksdGhpcy5naXQ0PXRoaXMuZ2l0NHx8X3QodGhpcy5wcmltYXJ5Q29sb3Ise2g6LTYwfSksdGhpcy5naXQ1PXRoaXMuZ2l0NXx8X3QodGhpcy5wcmltYXJ5Q29sb3Ise2g6LTkwfSksdGhpcy5naXQ2PXRoaXMuZ2l0Nnx8X3QodGhpcy5wcmltYXJ5Q29sb3Ise2g6NjB9KSx0aGlzLmdpdDc9dGhpcy5naXQ3fHxfdCh0aGlzLnByaW1hcnlDb2xvcix7aDoxMjB9KSx0aGlzLmRhcmtNb2RlPyh0aGlzLmdpdDA9YWUodGhpcy5naXQwLDI1KSx0aGlzLmdpdDE9YWUodGhpcy5naXQxLDI1KSx0aGlzLmdpdDI9YWUodGhpcy5naXQyLDI1KSx0aGlzLmdpdDM9YWUodGhpcy5naXQzLDI1KSx0aGlzLmdpdDQ9YWUodGhpcy5naXQ0LDI1KSx0aGlzLmdpdDU9YWUodGhpcy5naXQ1LDI1KSx0aGlzLmdpdDY9YWUodGhpcy5naXQ2LDI1KSx0aGlzLmdpdDc9YWUodGhpcy5naXQ3LDI1KSk6KHRoaXMuZ2l0MD1nZSh0aGlzLmdpdDAsMjUpLHRoaXMuZ2l0MT1nZSh0aGlzLmdpdDEsMjUpLHRoaXMuZ2l0Mj1nZSh0aGlzLmdpdDIsMjUpLHRoaXMuZ2l0Mz1nZSh0aGlzLmdpdDMsMjUpLHRoaXMuZ2l0ND1nZSh0aGlzLmdpdDQsMjUpLHRoaXMuZ2l0NT1nZSh0aGlzLmdpdDUsMjUpLHRoaXMuZ2l0Nj1nZSh0aGlzLmdpdDYsMjUpLHRoaXMuZ2l0Nz1nZSh0aGlzLmdpdDcsMjUpKSx0aGlzLmdpdEludjA9dGhpcy5naXRJbnYwfHxZdCh0aGlzLmdpdDApLHRoaXMuZ2l0SW52MT10aGlzLmdpdEludjF8fFl0KHRoaXMuZ2l0MSksdGhpcy5naXRJbnYyPXRoaXMuZ2l0SW52Mnx8WXQodGhpcy5naXQyKSx0aGlzLmdpdEludjM9dGhpcy5naXRJbnYzfHxZdCh0aGlzLmdpdDMpLHRoaXMuZ2l0SW52ND10aGlzLmdpdEludjR8fFl0KHRoaXMuZ2l0NCksdGhpcy5naXRJbnY1PXRoaXMuZ2l0SW52NXx8WXQodGhpcy5naXQ1KSx0aGlzLmdpdEludjY9dGhpcy5naXRJbnY2fHxZdCh0aGlzLmdpdDYpLHRoaXMuZ2l0SW52Nz10aGlzLmdpdEludjd8fFl0KHRoaXMuZ2l0NyksdGhpcy50YWdMYWJlbENvbG9yPXRoaXMudGFnTGFiZWxDb2xvcnx8dGhpcy5wcmltYXJ5VGV4dENvbG9yLHRoaXMudGFnTGFiZWxCYWNrZ3JvdW5kPXRoaXMudGFnTGFiZWxCYWNrZ3JvdW5kfHx0aGlzLnByaW1hcnlDb2xvcix0aGlzLnRhZ0xhYmVsQm9yZGVyPXRoaXMudGFnQm9yZGVyfHx0aGlzLnByaW1hcnlCb3JkZXJDb2xvcix0aGlzLnRhZ0xhYmVsRm9udFNpemU9dGhpcy50YWdMYWJlbEZvbnRTaXplfHwiMTBweCIsdGhpcy5jb21taXRMYWJlbENvbG9yPXRoaXMuY29tbWl0TGFiZWxDb2xvcnx8dGhpcy5zZWNvbmRhcnlUZXh0Q29sb3IsdGhpcy5jb21taXRMYWJlbEJhY2tncm91bmQ9dGhpcy5jb21taXRMYWJlbEJhY2tncm91bmR8fHRoaXMuc2Vjb25kYXJ5Q29sb3IsdGhpcy5jb21taXRMYWJlbEZvbnRTaXplPXRoaXMuY29tbWl0TGFiZWxGb250U2l6ZXx8IjEwcHgiLHRoaXMuYXR0cmlidXRlQmFja2dyb3VuZENvbG9yT2RkPXRoaXMuYXR0cmlidXRlQmFja2dyb3VuZENvbG9yT2RkfHxxZix0aGlzLmF0dHJpYnV0ZUJhY2tncm91bmRDb2xvckV2ZW49dGhpcy5hdHRyaWJ1dGVCYWNrZ3JvdW5kQ29sb3JFdmVufHxWZn1jYWxjdWxhdGUoZSl7aWYodHlwZW9mIGUhPSJvYmplY3QiKXt0aGlzLnVwZGF0ZUNvbG9ycygpO3JldHVybn1jb25zdCByPU9iamVjdC5rZXlzKGUpO3IuZm9yRWFjaChuPT57dGhpc1tuXT1lW25dfSksdGhpcy51cGRhdGVDb2xvcnMoKSxyLmZvckVhY2gobj0+e3RoaXNbbl09ZVtuXX0pfX1jb25zdCBiRz10PT57Y29uc3QgZT1uZXcgbUc7cmV0dXJuIGUuY2FsY3VsYXRlKHQpLGV9O2NsYXNzIF9He2NvbnN0cnVjdG9yKCl7dGhpcy5wcmltYXJ5Q29sb3I9IiNlZWUiLHRoaXMuY29udHJhc3Q9IiM3MDcwNzAiLHRoaXMuc2Vjb25kYXJ5Q29sb3I9YWUodGhpcy5jb250cmFzdCw1NSksdGhpcy5iYWNrZ3JvdW5kPSIjZmZmZmZmIix0aGlzLnRlcnRpYXJ5Q29sb3I9X3QodGhpcy5wcmltYXJ5Q29sb3Ise2g6LTE2MH0pLHRoaXMucHJpbWFyeUJvcmRlckNvbG9yPWxuKHRoaXMucHJpbWFyeUNvbG9yLHRoaXMuZGFya01vZGUpLHRoaXMuc2Vjb25kYXJ5Qm9yZGVyQ29sb3I9bG4odGhpcy5zZWNvbmRhcnlDb2xvcix0aGlzLmRhcmtNb2RlKSx0aGlzLnRlcnRpYXJ5Qm9yZGVyQ29sb3I9bG4odGhpcy50ZXJ0aWFyeUNvbG9yLHRoaXMuZGFya01vZGUpLHRoaXMucHJpbWFyeVRleHRDb2xvcj1ZdCh0aGlzLnByaW1hcnlDb2xvciksdGhpcy5zZWNvbmRhcnlUZXh0Q29sb3I9WXQodGhpcy5zZWNvbmRhcnlDb2xvciksdGhpcy50ZXJ0aWFyeVRleHRDb2xvcj1ZdCh0aGlzLnRlcnRpYXJ5Q29sb3IpLHRoaXMubGluZUNvbG9yPVl0KHRoaXMuYmFja2dyb3VuZCksdGhpcy50ZXh0Q29sb3I9WXQodGhpcy5iYWNrZ3JvdW5kKSx0aGlzLm1haW5Ca2c9IiNlZWUiLHRoaXMuc2Vjb25kQmtnPSJjYWxjdWxhdGVkIix0aGlzLmxpbmVDb2xvcj0iIzY2NiIsdGhpcy5ib3JkZXIxPSIjOTk5Iix0aGlzLmJvcmRlcjI9ImNhbGN1bGF0ZWQiLHRoaXMubm90ZT0iI2ZmYSIsdGhpcy50ZXh0PSIjMzMzIix0aGlzLmNyaXRpY2FsPSIjZDQyIix0aGlzLmRvbmU9IiNiYmIiLHRoaXMuYXJyb3doZWFkQ29sb3I9IiMzMzMzMzMiLHRoaXMuZm9udEZhbWlseT0nInRyZWJ1Y2hldCBtcyIsIHZlcmRhbmEsIGFyaWFsLCBzYW5zLXNlcmlmJyx0aGlzLmZvbnRTaXplPSIxNnB4Iix0aGlzLlRIRU1FX0NPTE9SX0xJTUlUPTEyLHRoaXMubm9kZUJrZz0iY2FsY3VsYXRlZCIsdGhpcy5ub2RlQm9yZGVyPSJjYWxjdWxhdGVkIix0aGlzLmNsdXN0ZXJCa2c9ImNhbGN1bGF0ZWQiLHRoaXMuY2x1c3RlckJvcmRlcj0iY2FsY3VsYXRlZCIsdGhpcy5kZWZhdWx0TGlua0NvbG9yPSJjYWxjdWxhdGVkIix0aGlzLnRpdGxlQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMuZWRnZUxhYmVsQmFja2dyb3VuZD0id2hpdGUiLHRoaXMuYWN0b3JCb3JkZXI9ImNhbGN1bGF0ZWQiLHRoaXMuYWN0b3JCa2c9ImNhbGN1bGF0ZWQiLHRoaXMuYWN0b3JUZXh0Q29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMuYWN0b3JMaW5lQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMuc2lnbmFsQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMuc2lnbmFsVGV4dENvbG9yPSJjYWxjdWxhdGVkIix0aGlzLmxhYmVsQm94QmtnQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMubGFiZWxCb3hCb3JkZXJDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5sYWJlbFRleHRDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5sb29wVGV4dENvbG9yPSJjYWxjdWxhdGVkIix0aGlzLm5vdGVCb3JkZXJDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5ub3RlQmtnQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMubm90ZVRleHRDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5hY3RpdmF0aW9uQm9yZGVyQ29sb3I9IiM2NjYiLHRoaXMuYWN0aXZhdGlvbkJrZ0NvbG9yPSIjZjRmNGY0Iix0aGlzLnNlcXVlbmNlTnVtYmVyQ29sb3I9IndoaXRlIix0aGlzLnNlY3Rpb25Ca2dDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5hbHRTZWN0aW9uQmtnQ29sb3I9IndoaXRlIix0aGlzLnNlY3Rpb25Ca2dDb2xvcjI9ImNhbGN1bGF0ZWQiLHRoaXMuZXhjbHVkZUJrZ0NvbG9yPSIjZWVlZWVlIix0aGlzLnRhc2tCb3JkZXJDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy50YXNrQmtnQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMudGFza1RleHRMaWdodENvbG9yPSJ3aGl0ZSIsdGhpcy50YXNrVGV4dENvbG9yPSJjYWxjdWxhdGVkIix0aGlzLnRhc2tUZXh0RGFya0NvbG9yPSJjYWxjdWxhdGVkIix0aGlzLnRhc2tUZXh0T3V0c2lkZUNvbG9yPSJjYWxjdWxhdGVkIix0aGlzLnRhc2tUZXh0Q2xpY2thYmxlQ29sb3I9IiMwMDMxNjMiLHRoaXMuYWN0aXZlVGFza0JvcmRlckNvbG9yPSJjYWxjdWxhdGVkIix0aGlzLmFjdGl2ZVRhc2tCa2dDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5ncmlkQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMuZG9uZVRhc2tCa2dDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5kb25lVGFza0JvcmRlckNvbG9yPSJjYWxjdWxhdGVkIix0aGlzLmNyaXRCa2dDb2xvcj0iY2FsY3VsYXRlZCIsdGhpcy5jcml0Qm9yZGVyQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMudG9kYXlMaW5lQ29sb3I9ImNhbGN1bGF0ZWQiLHRoaXMucGVyc29uQm9yZGVyPSJjYWxjdWxhdGVkIix0aGlzLnBlcnNvbkJrZz0iY2FsY3VsYXRlZCIsdGhpcy5sYWJlbENvbG9yPSJibGFjayIsdGhpcy5lcnJvckJrZ0NvbG9yPSIjNTUyMjIyIix0aGlzLmVycm9yVGV4dENvbG9yPSIjNTUyMjIyIn11cGRhdGVDb2xvcnMoKXt0aGlzLnNlY29uZEJrZz1hZSh0aGlzLmNvbnRyYXN0LDU1KSx0aGlzLmJvcmRlcjI9dGhpcy5jb250cmFzdCx0aGlzLmNTY2FsZTA9dGhpcy5jU2NhbGUwfHwiIzU1NSIsdGhpcy5jU2NhbGUxPXRoaXMuY1NjYWxlMXx8IiNGNEY0RjQiLHRoaXMuY1NjYWxlMj10aGlzLmNTY2FsZTJ8fCIjNTU1Iix0aGlzLmNTY2FsZTM9dGhpcy5jU2NhbGUzfHwiI0JCQiIsdGhpcy5jU2NhbGU0PXRoaXMuY1NjYWxlNHx8IiM3NzciLHRoaXMuY1NjYWxlNT10aGlzLmNTY2FsZTV8fCIjOTk5Iix0aGlzLmNTY2FsZTY9dGhpcy5jU2NhbGU2fHwiI0RERCIsdGhpcy5jU2NhbGU3PXRoaXMuY1NjYWxlN3x8IiNGRkYiLHRoaXMuY1NjYWxlOD10aGlzLmNTY2FsZTh8fCIjREREIix0aGlzLmNTY2FsZTk9dGhpcy5jU2NhbGU5fHwiI0JCQiIsdGhpcy5jU2NhbGUxMD10aGlzLmNTY2FsZTEwfHwiIzk5OSIsdGhpcy5jU2NhbGUxMT10aGlzLmNTY2FsZTExfHwiIzc3NyI7Zm9yKGxldCBlPTA7ZTx0aGlzLlRIRU1FX0NPTE9SX0xJTUlUO2UrKyl0aGlzWyJjU2NhbGVJbnYiK2VdPXRoaXNbImNTY2FsZUludiIrZV18fFl0KHRoaXNbImNTY2FsZSIrZV0pO2ZvcihsZXQgZT0wO2U8dGhpcy5USEVNRV9DT0xPUl9MSU1JVDtlKyspdGhpcy5kYXJrTW9kZT90aGlzWyJjU2NhbGVQZWVyIitlXT10aGlzWyJjU2NhbGVQZWVyIitlXXx8YWUodGhpc1siY1NjYWxlIitlXSwxMCk6dGhpc1siY1NjYWxlUGVlciIrZV09dGhpc1siY1NjYWxlUGVlciIrZV18fGdlKHRoaXNbImNTY2FsZSIrZV0sMTApO3RoaXMuc2NhbGVMYWJlbENvbG9yPXRoaXMuc2NhbGVMYWJlbENvbG9yfHwodGhpcy5kYXJrTW9kZT8iYmxhY2siOnRoaXMubGFiZWxUZXh0Q29sb3IpLHRoaXMuY1NjYWxlTGFiZWwwPXRoaXMuY1NjYWxlTGFiZWwwfHx0aGlzLmNTY2FsZTEsdGhpcy5jU2NhbGVMYWJlbDI9dGhpcy5jU2NhbGVMYWJlbDJ8fHRoaXMuY1NjYWxlMTtmb3IobGV0IGU9MDtlPHRoaXMuVEhFTUVfQ09MT1JfTElNSVQ7ZSsrKXRoaXNbImNTY2FsZUxhYmVsIitlXT10aGlzWyJjU2NhbGVMYWJlbCIrZV18fHRoaXMuc2NhbGVMYWJlbENvbG9yO3RoaXMubm9kZUJrZz10aGlzLm1haW5Ca2csdGhpcy5ub2RlQm9yZGVyPXRoaXMuYm9yZGVyMSx0aGlzLmNsdXN0ZXJCa2c9dGhpcy5zZWNvbmRCa2csdGhpcy5jbHVzdGVyQm9yZGVyPXRoaXMuYm9yZGVyMix0aGlzLmRlZmF1bHRMaW5rQ29sb3I9dGhpcy5saW5lQ29sb3IsdGhpcy50aXRsZUNvbG9yPXRoaXMudGV4dCx0aGlzLmFjdG9yQm9yZGVyPWFlKHRoaXMuYm9yZGVyMSwyMyksdGhpcy5hY3RvckJrZz10aGlzLm1haW5Ca2csdGhpcy5hY3RvclRleHRDb2xvcj10aGlzLnRleHQsdGhpcy5hY3RvckxpbmVDb2xvcj10aGlzLmxpbmVDb2xvcix0aGlzLnNpZ25hbENvbG9yPXRoaXMudGV4dCx0aGlzLnNpZ25hbFRleHRDb2xvcj10aGlzLnRleHQsdGhpcy5sYWJlbEJveEJrZ0NvbG9yPXRoaXMuYWN0b3JCa2csdGhpcy5sYWJlbEJveEJvcmRlckNvbG9yPXRoaXMuYWN0b3JCb3JkZXIsdGhpcy5sYWJlbFRleHRDb2xvcj10aGlzLnRleHQsdGhpcy5sb29wVGV4dENvbG9yPXRoaXMudGV4dCx0aGlzLm5vdGVCb3JkZXJDb2xvcj0iIzk5OSIsdGhpcy5ub3RlQmtnQ29sb3I9IiM2NjYiLHRoaXMubm90ZVRleHRDb2xvcj0iI2ZmZiIsdGhpcy5zZWN0aW9uQmtnQ29sb3I9YWUodGhpcy5jb250cmFzdCwzMCksdGhpcy5zZWN0aW9uQmtnQ29sb3IyPWFlKHRoaXMuY29udHJhc3QsMzApLHRoaXMudGFza0JvcmRlckNvbG9yPWdlKHRoaXMuY29udHJhc3QsMTApLHRoaXMudGFza0JrZ0NvbG9yPXRoaXMuY29udHJhc3QsdGhpcy50YXNrVGV4dENvbG9yPXRoaXMudGFza1RleHRMaWdodENvbG9yLHRoaXMudGFza1RleHREYXJrQ29sb3I9dGhpcy50ZXh0LHRoaXMudGFza1RleHRPdXRzaWRlQ29sb3I9dGhpcy50YXNrVGV4dERhcmtDb2xvcix0aGlzLmFjdGl2ZVRhc2tCb3JkZXJDb2xvcj10aGlzLnRhc2tCb3JkZXJDb2xvcix0aGlzLmFjdGl2ZVRhc2tCa2dDb2xvcj10aGlzLm1haW5Ca2csdGhpcy5ncmlkQ29sb3I9YWUodGhpcy5ib3JkZXIxLDMwKSx0aGlzLmRvbmVUYXNrQmtnQ29sb3I9dGhpcy5kb25lLHRoaXMuZG9uZVRhc2tCb3JkZXJDb2xvcj10aGlzLmxpbmVDb2xvcix0aGlzLmNyaXRCa2dDb2xvcj10aGlzLmNyaXRpY2FsLHRoaXMuY3JpdEJvcmRlckNvbG9yPWdlKHRoaXMuY3JpdEJrZ0NvbG9yLDEwKSx0aGlzLnRvZGF5TGluZUNvbG9yPXRoaXMuY3JpdEJrZ0NvbG9yLHRoaXMudHJhbnNpdGlvbkNvbG9yPXRoaXMudHJhbnNpdGlvbkNvbG9yfHwiIzAwMCIsdGhpcy50cmFuc2l0aW9uTGFiZWxDb2xvcj10aGlzLnRyYW5zaXRpb25MYWJlbENvbG9yfHx0aGlzLnRleHRDb2xvcix0aGlzLnN0YXRlTGFiZWxDb2xvcj10aGlzLnN0YXRlTGFiZWxDb2xvcnx8dGhpcy5zdGF0ZUJrZ3x8dGhpcy5wcmltYXJ5VGV4dENvbG9yLHRoaXMuc3RhdGVCa2c9dGhpcy5zdGF0ZUJrZ3x8dGhpcy5tYWluQmtnLHRoaXMubGFiZWxCYWNrZ3JvdW5kQ29sb3I9dGhpcy5sYWJlbEJhY2tncm91bmRDb2xvcnx8dGhpcy5zdGF0ZUJrZyx0aGlzLmNvbXBvc2l0ZUJhY2tncm91bmQ9dGhpcy5jb21wb3NpdGVCYWNrZ3JvdW5kfHx0aGlzLmJhY2tncm91bmR8fHRoaXMudGVydGlhcnlDb2xvcix0aGlzLmFsdEJhY2tncm91bmQ9dGhpcy5hbHRCYWNrZ3JvdW5kfHwiI2Y0ZjRmNCIsdGhpcy5jb21wb3NpdGVUaXRsZUJhY2tncm91bmQ9dGhpcy5jb21wb3NpdGVUaXRsZUJhY2tncm91bmR8fHRoaXMubWFpbkJrZyx0aGlzLnN0YXRlQm9yZGVyPXRoaXMuc3RhdGVCb3JkZXJ8fCIjMDAwIix0aGlzLmlubmVyRW5kQmFja2dyb3VuZD10aGlzLnByaW1hcnlCb3JkZXJDb2xvcix0aGlzLnNwZWNpYWxTdGF0ZUNvbG9yPSIjMjIyIix0aGlzLmVycm9yQmtnQ29sb3I9dGhpcy5lcnJvckJrZ0NvbG9yfHx0aGlzLnRlcnRpYXJ5Q29sb3IsdGhpcy5lcnJvclRleHRDb2xvcj10aGlzLmVycm9yVGV4dENvbG9yfHx0aGlzLnRlcnRpYXJ5VGV4dENvbG9yLHRoaXMuY2xhc3NUZXh0PXRoaXMucHJpbWFyeVRleHRDb2xvcix0aGlzLmZpbGxUeXBlMD10aGlzLnByaW1hcnlDb2xvcix0aGlzLmZpbGxUeXBlMT10aGlzLnNlY29uZGFyeUNvbG9yLHRoaXMuZmlsbFR5cGUyPV90KHRoaXMucHJpbWFyeUNvbG9yLHtoOjY0fSksdGhpcy5maWxsVHlwZTM9X3QodGhpcy5zZWNvbmRhcnlDb2xvcix7aDo2NH0pLHRoaXMuZmlsbFR5cGU0PV90KHRoaXMucHJpbWFyeUNvbG9yLHtoOi02NH0pLHRoaXMuZmlsbFR5cGU1PV90KHRoaXMuc2Vjb25kYXJ5Q29sb3Ise2g6LTY0fSksdGhpcy5maWxsVHlwZTY9X3QodGhpcy5wcmltYXJ5Q29sb3Ise2g6MTI4fSksdGhpcy5maWxsVHlwZTc9X3QodGhpcy5zZWNvbmRhcnlDb2xvcix7aDoxMjh9KTtmb3IobGV0IGU9MDtlPHRoaXMuVEhFTUVfQ09MT1JfTElNSVQ7ZSsrKXRoaXNbInBpZSIrZV09dGhpc1siY1NjYWxlIitlXTt0aGlzLnBpZTEyPXRoaXMucGllMCx0aGlzLnBpZVRpdGxlVGV4dFNpemU9dGhpcy5waWVUaXRsZVRleHRTaXplfHwiMjVweCIsdGhpcy5waWVUaXRsZVRleHRDb2xvcj10aGlzLnBpZVRpdGxlVGV4dENvbG9yfHx0aGlzLnRhc2tUZXh0RGFya0NvbG9yLHRoaXMucGllU2VjdGlvblRleHRTaXplPXRoaXMucGllU2VjdGlvblRleHRTaXplfHwiMTdweCIsdGhpcy5waWVTZWN0aW9uVGV4dENvbG9yPXRoaXMucGllU2VjdGlvblRleHRDb2xvcnx8dGhpcy50ZXh0Q29sb3IsdGhpcy5waWVMZWdlbmRUZXh0U2l6ZT10aGlzLnBpZUxlZ2VuZFRleHRTaXplfHwiMTdweCIsdGhpcy5waWVMZWdlbmRUZXh0Q29sb3I9dGhpcy5waWVMZWdlbmRUZXh0Q29sb3J8fHRoaXMudGFza1RleHREYXJrQ29sb3IsdGhpcy5waWVTdHJva2VDb2xvcj10aGlzLnBpZVN0cm9rZUNvbG9yfHwiYmxhY2siLHRoaXMucGllU3Ryb2tlV2lkdGg9dGhpcy5waWVTdHJva2VXaWR0aHx8IjJweCIsdGhpcy5waWVPcGFjaXR5PXRoaXMucGllT3BhY2l0eXx8IjAuNyIsdGhpcy5yZXF1aXJlbWVudEJhY2tncm91bmQ9dGhpcy5yZXF1aXJlbWVudEJhY2tncm91bmR8fHRoaXMucHJpbWFyeUNvbG9yLHRoaXMucmVxdWlyZW1lbnRCb3JkZXJDb2xvcj10aGlzLnJlcXVpcmVtZW50Qm9yZGVyQ29sb3J8fHRoaXMucHJpbWFyeUJvcmRlckNvbG9yLHRoaXMucmVxdWlyZW1lbnRCb3JkZXJTaXplPXRoaXMucmVxdWlyZW1lbnRCb3JkZXJTaXplfHx0aGlzLnByaW1hcnlCb3JkZXJDb2xvcix0aGlzLnJlcXVpcmVtZW50VGV4dENvbG9yPXRoaXMucmVxdWlyZW1lbnRUZXh0Q29sb3J8fHRoaXMucHJpbWFyeVRleHRDb2xvcix0aGlzLnJlbGF0aW9uQ29sb3I9dGhpcy5yZWxhdGlvbkNvbG9yfHx0aGlzLmxpbmVDb2xvcix0aGlzLnJlbGF0aW9uTGFiZWxCYWNrZ3JvdW5kPXRoaXMucmVsYXRpb25MYWJlbEJhY2tncm91bmR8fHRoaXMuZWRnZUxhYmVsQmFja2dyb3VuZCx0aGlzLnJlbGF0aW9uTGFiZWxDb2xvcj10aGlzLnJlbGF0aW9uTGFiZWxDb2xvcnx8dGhpcy5hY3RvclRleHRDb2xvcix0aGlzLmdpdDA9Z2UodGhpcy5waWUxLDI1KXx8dGhpcy5wcmltYXJ5Q29sb3IsdGhpcy5naXQxPXRoaXMucGllMnx8dGhpcy5zZWNvbmRhcnlDb2xvcix0aGlzLmdpdDI9dGhpcy5waWUzfHx0aGlzLnRlcnRpYXJ5Q29sb3IsdGhpcy5naXQzPXRoaXMucGllNHx8X3QodGhpcy5wcmltYXJ5Q29sb3Ise2g6LTMwfSksdGhpcy5naXQ0PXRoaXMucGllNXx8X3QodGhpcy5wcmltYXJ5Q29sb3Ise2g6LTYwfSksdGhpcy5naXQ1PXRoaXMucGllNnx8X3QodGhpcy5wcmltYXJ5Q29sb3Ise2g6LTkwfSksdGhpcy5naXQ2PXRoaXMucGllN3x8X3QodGhpcy5wcmltYXJ5Q29sb3Ise2g6NjB9KSx0aGlzLmdpdDc9dGhpcy5waWU4fHxfdCh0aGlzLnByaW1hcnlDb2xvcix7aDoxMjB9KSx0aGlzLmdpdEludjA9dGhpcy5naXRJbnYwfHxZdCh0aGlzLmdpdDApLHRoaXMuZ2l0SW52MT10aGlzLmdpdEludjF8fFl0KHRoaXMuZ2l0MSksdGhpcy5naXRJbnYyPXRoaXMuZ2l0SW52Mnx8WXQodGhpcy5naXQyKSx0aGlzLmdpdEludjM9dGhpcy5naXRJbnYzfHxZdCh0aGlzLmdpdDMpLHRoaXMuZ2l0SW52ND10aGlzLmdpdEludjR8fFl0KHRoaXMuZ2l0NCksdGhpcy5naXRJbnY1PXRoaXMuZ2l0SW52NXx8WXQodGhpcy5naXQ1KSx0aGlzLmdpdEludjY9dGhpcy5naXRJbnY2fHxZdCh0aGlzLmdpdDYpLHRoaXMuZ2l0SW52Nz10aGlzLmdpdEludjd8fFl0KHRoaXMuZ2l0NyksdGhpcy5icmFuY2hMYWJlbENvbG9yPXRoaXMuYnJhbmNoTGFiZWxDb2xvcnx8dGhpcy5sYWJlbFRleHRDb2xvcix0aGlzLmdpdEJyYW5jaExhYmVsMD10aGlzLmJyYW5jaExhYmVsQ29sb3IsdGhpcy5naXRCcmFuY2hMYWJlbDE9IndoaXRlIix0aGlzLmdpdEJyYW5jaExhYmVsMj10aGlzLmJyYW5jaExhYmVsQ29sb3IsdGhpcy5naXRCcmFuY2hMYWJlbDM9IndoaXRlIix0aGlzLmdpdEJyYW5jaExhYmVsND10aGlzLmJyYW5jaExhYmVsQ29sb3IsdGhpcy5naXRCcmFuY2hMYWJlbDU9dGhpcy5icmFuY2hMYWJlbENvbG9yLHRoaXMuZ2l0QnJhbmNoTGFiZWw2PXRoaXMuYnJhbmNoTGFiZWxDb2xvcix0aGlzLmdpdEJyYW5jaExhYmVsNz10aGlzLmJyYW5jaExhYmVsQ29sb3IsdGhpcy50YWdMYWJlbENvbG9yPXRoaXMudGFnTGFiZWxDb2xvcnx8dGhpcy5wcmltYXJ5VGV4dENvbG9yLHRoaXMudGFnTGFiZWxCYWNrZ3JvdW5kPXRoaXMudGFnTGFiZWxCYWNrZ3JvdW5kfHx0aGlzLnByaW1hcnlDb2xvcix0aGlzLnRhZ0xhYmVsQm9yZGVyPXRoaXMudGFnQm9yZGVyfHx0aGlzLnByaW1hcnlCb3JkZXJDb2xvcix0aGlzLnRhZ0xhYmVsRm9udFNpemU9dGhpcy50YWdMYWJlbEZvbnRTaXplfHwiMTBweCIsdGhpcy5jb21taXRMYWJlbENvbG9yPXRoaXMuY29tbWl0TGFiZWxDb2xvcnx8dGhpcy5zZWNvbmRhcnlUZXh0Q29sb3IsdGhpcy5jb21taXRMYWJlbEJhY2tncm91bmQ9dGhpcy5jb21taXRMYWJlbEJhY2tncm91bmR8fHRoaXMuc2Vjb25kYXJ5Q29sb3IsdGhpcy5jb21taXRMYWJlbEZvbnRTaXplPXRoaXMuY29tbWl0TGFiZWxGb250U2l6ZXx8IjEwcHgiLHRoaXMuYXR0cmlidXRlQmFja2dyb3VuZENvbG9yT2RkPXRoaXMuYXR0cmlidXRlQmFja2dyb3VuZENvbG9yT2RkfHxxZix0aGlzLmF0dHJpYnV0ZUJhY2tncm91bmRDb2xvckV2ZW49dGhpcy5hdHRyaWJ1dGVCYWNrZ3JvdW5kQ29sb3JFdmVufHxWZn1jYWxjdWxhdGUoZSl7aWYodHlwZW9mIGUhPSJvYmplY3QiKXt0aGlzLnVwZGF0ZUNvbG9ycygpO3JldHVybn1jb25zdCByPU9iamVjdC5rZXlzKGUpO3IuZm9yRWFjaChuPT57dGhpc1tuXT1lW25dfSksdGhpcy51cGRhdGVDb2xvcnMoKSxyLmZvckVhY2gobj0+e3RoaXNbbl09ZVtuXX0pfX1jb25zdCBhYT17YmFzZTp7Z2V0VGhlbWVWYXJpYWJsZXM6Zkd9LGRhcms6e2dldFRoZW1lVmFyaWFibGVzOnBHfSxkZWZhdWx0OntnZXRUaGVtZVZhcmlhYmxlczp5R30sZm9yZXN0OntnZXRUaGVtZVZhcmlhYmxlczpiR30sbmV1dHJhbDp7Z2V0VGhlbWVWYXJpYWJsZXM6dD0+e2NvbnN0IGU9bmV3IF9HO3JldHVybiBlLmNhbGN1bGF0ZSh0KSxlfX19LFhhPXt0aGVtZToiZGVmYXVsdCIsdGhlbWVWYXJpYWJsZXM6YWEuZGVmYXVsdC5nZXRUaGVtZVZhcmlhYmxlcygpLHRoZW1lQ1NTOnZvaWQgMCxtYXhUZXh0U2l6ZTo1ZTQsZGFya01vZGU6ITEsZm9udEZhbWlseTonInRyZWJ1Y2hldCBtcyIsIHZlcmRhbmEsIGFyaWFsLCBzYW5zLXNlcmlmOycsbG9nTGV2ZWw6NSxzZWN1cml0eUxldmVsOiJzdHJpY3QiLHN0YXJ0T25Mb2FkOiEwLGFycm93TWFya2VyQWJzb2x1dGU6ITEsc2VjdXJlOlsic2VjdXJlIiwic2VjdXJpdHlMZXZlbCIsInN0YXJ0T25Mb2FkIiwibWF4VGV4dFNpemUiXSxkZXRlcm1pbmlzdGljSWRzOiExLGRldGVybWluaXN0aWNJRFNlZWQ6dm9pZCAwLGZsb3djaGFydDp7ZGlhZ3JhbVBhZGRpbmc6OCxodG1sTGFiZWxzOiEwLG5vZGVTcGFjaW5nOjUwLHJhbmtTcGFjaW5nOjUwLGN1cnZlOiJiYXNpcyIscGFkZGluZzoxNSx1c2VNYXhXaWR0aDohMCxkZWZhdWx0UmVuZGVyZXI6ImRhZ3JlLXdyYXBwZXIifSxzZXF1ZW5jZTp7aGlkZVVudXNlZFBhcnRpY2lwYW50czohMSxhY3RpdmF0aW9uV2lkdGg6MTAsZGlhZ3JhbU1hcmdpblg6NTAsZGlhZ3JhbU1hcmdpblk6MTAsYWN0b3JNYXJnaW46NTAsd2lkdGg6MTUwLGhlaWdodDo2NSxib3hNYXJnaW46MTAsYm94VGV4dE1hcmdpbjo1LG5vdGVNYXJnaW46MTAsbWVzc2FnZU1hcmdpbjozNSxtZXNzYWdlQWxpZ246ImNlbnRlciIsbWlycm9yQWN0b3JzOiEwLGZvcmNlTWVudXM6ITEsYm90dG9tTWFyZ2luQWRqOjEsdXNlTWF4V2lkdGg6ITAscmlnaHRBbmdsZXM6ITEsc2hvd1NlcXVlbmNlTnVtYmVyczohMSxhY3RvckZvbnRTaXplOjE0LGFjdG9yRm9udEZhbWlseTonIk9wZW4gU2FucyIsIHNhbnMtc2VyaWYnLGFjdG9yRm9udFdlaWdodDo0MDAsbm90ZUZvbnRTaXplOjE0LG5vdGVGb250RmFtaWx5OicidHJlYnVjaGV0IG1zIiwgdmVyZGFuYSwgYXJpYWwsIHNhbnMtc2VyaWYnLG5vdGVGb250V2VpZ2h0OjQwMCxub3RlQWxpZ246ImNlbnRlciIsbWVzc2FnZUZvbnRTaXplOjE2LG1lc3NhZ2VGb250RmFtaWx5OicidHJlYnVjaGV0IG1zIiwgdmVyZGFuYSwgYXJpYWwsIHNhbnMtc2VyaWYnLG1lc3NhZ2VGb250V2VpZ2h0OjQwMCx3cmFwOiExLHdyYXBQYWRkaW5nOjEwLGxhYmVsQm94V2lkdGg6NTAsbGFiZWxCb3hIZWlnaHQ6MjAsbWVzc2FnZUZvbnQ6ZnVuY3Rpb24oKXtyZXR1cm57Zm9udEZhbWlseTp0aGlzLm1lc3NhZ2VGb250RmFtaWx5LGZvbnRTaXplOnRoaXMubWVzc2FnZUZvbnRTaXplLGZvbnRXZWlnaHQ6dGhpcy5tZXNzYWdlRm9udFdlaWdodH19LG5vdGVGb250OmZ1bmN0aW9uKCl7cmV0dXJue2ZvbnRGYW1pbHk6dGhpcy5ub3RlRm9udEZhbWlseSxmb250U2l6ZTp0aGlzLm5vdGVGb250U2l6ZSxmb250V2VpZ2h0OnRoaXMubm90ZUZvbnRXZWlnaHR9fSxhY3RvckZvbnQ6ZnVuY3Rpb24oKXtyZXR1cm57Zm9udEZhbWlseTp0aGlzLmFjdG9yRm9udEZhbWlseSxmb250U2l6ZTp0aGlzLmFjdG9yRm9udFNpemUsZm9udFdlaWdodDp0aGlzLmFjdG9yRm9udFdlaWdodH19fSxnYW50dDp7dGl0bGVUb3BNYXJnaW46MjUsYmFySGVpZ2h0OjIwLGJhckdhcDo0LHRvcFBhZGRpbmc6NTAscmlnaHRQYWRkaW5nOjc1LGxlZnRQYWRkaW5nOjc1LGdyaWRMaW5lU3RhcnRQYWRkaW5nOjM1LGZvbnRTaXplOjExLHNlY3Rpb25Gb250U2l6ZToxMSxudW1iZXJTZWN0aW9uU3R5bGVzOjQsYXhpc0Zvcm1hdDoiJVktJW0tJWQiLHVzZU1heFdpZHRoOiEwLHRvcEF4aXM6ITEsdXNlV2lkdGg6dm9pZCAwfSxqb3VybmV5OntkaWFncmFtTWFyZ2luWDo1MCxkaWFncmFtTWFyZ2luWToxMCxsZWZ0TWFyZ2luOjE1MCx3aWR0aDoxNTAsaGVpZ2h0OjUwLGJveE1hcmdpbjoxMCxib3hUZXh0TWFyZ2luOjUsbm90ZU1hcmdpbjoxMCxtZXNzYWdlTWFyZ2luOjM1LG1lc3NhZ2VBbGlnbjoiY2VudGVyIixib3R0b21NYXJnaW5BZGo6MSx1c2VNYXhXaWR0aDohMCxyaWdodEFuZ2xlczohMSx0YXNrRm9udFNpemU6MTQsdGFza0ZvbnRGYW1pbHk6JyJPcGVuIFNhbnMiLCBzYW5zLXNlcmlmJyx0YXNrTWFyZ2luOjUwLGFjdGl2YXRpb25XaWR0aDoxMCx0ZXh0UGxhY2VtZW50OiJmbyIsYWN0b3JDb2xvdXJzOlsiIzhGQkM4RiIsIiM3Q0ZDMDAiLCIjMDBGRkZGIiwiIzIwQjJBQSIsIiNCMEUwRTYiLCIjRkZGRkUwIl0sc2VjdGlvbkZpbGxzOlsiIzE5MTk3MCIsIiM4QjAwOEIiLCIjNEIwMDgyIiwiIzJGNEY0RiIsIiM4MDAwMDAiLCIjOEI0NTEzIiwiIzAwMDA4QiJdLHNlY3Rpb25Db2xvdXJzOlsiI2ZmZiJdfSxjbGFzczp7YXJyb3dNYXJrZXJBYnNvbHV0ZTohMSxkaXZpZGVyTWFyZ2luOjEwLHBhZGRpbmc6NSx0ZXh0SGVpZ2h0OjEwLHVzZU1heFdpZHRoOiEwLGRlZmF1bHRSZW5kZXJlcjoiZGFncmUtd3JhcHBlciJ9LHN0YXRlOntkaXZpZGVyTWFyZ2luOjEwLHNpemVVbml0OjUscGFkZGluZzo4LHRleHRIZWlnaHQ6MTAsdGl0bGVTaGlmdDotMTUsbm90ZU1hcmdpbjoxMCxmb3JrV2lkdGg6NzAsZm9ya0hlaWdodDo3LG1pbmlQYWRkaW5nOjIsZm9udFNpemVGYWN0b3I6NS4wMixmb250U2l6ZToyNCxsYWJlbEhlaWdodDoxNixlZGdlTGVuZ3RoRmFjdG9yOiIyMCIsY29tcG9zaXRUaXRsZVNpemU6MzUscmFkaXVzOjUsdXNlTWF4V2lkdGg6ITAsZGVmYXVsdFJlbmRlcmVyOiJkYWdyZS13cmFwcGVyIn0sZXI6e2RpYWdyYW1QYWRkaW5nOjIwLGxheW91dERpcmVjdGlvbjoiVEIiLG1pbkVudGl0eVdpZHRoOjEwMCxtaW5FbnRpdHlIZWlnaHQ6NzUsZW50aXR5UGFkZGluZzoxNSxzdHJva2U6ImdyYXkiLGZpbGw6ImhvbmV5ZGV3Iixmb250U2l6ZToxMix1c2VNYXhXaWR0aDohMH0scGllOnt1c2VXaWR0aDp2b2lkIDAsdXNlTWF4V2lkdGg6ITB9LHJlcXVpcmVtZW50Ont1c2VXaWR0aDp2b2lkIDAsdXNlTWF4V2lkdGg6ITAscmVjdF9maWxsOiIjZjlmOWY5Iix0ZXh0X2NvbG9yOiIjMzMzIixyZWN0X2JvcmRlcl9zaXplOiIwLjVweCIscmVjdF9ib3JkZXJfY29sb3I6IiNiYmIiLHJlY3RfbWluX3dpZHRoOjIwMCxyZWN0X21pbl9oZWlnaHQ6MjAwLGZvbnRTaXplOjE0LHJlY3RfcGFkZGluZzoxMCxsaW5lX2hlaWdodDoyMH0sZ2l0R3JhcGg6e2RpYWdyYW1QYWRkaW5nOjgsbm9kZUxhYmVsOnt3aWR0aDo3NSxoZWlnaHQ6MTAwLHg6LTI1LHk6MH0sbWFpbkJyYW5jaE5hbWU6Im1haW4iLG1haW5CcmFuY2hPcmRlcjowLHNob3dDb21taXRMYWJlbDohMCxzaG93QnJhbmNoZXM6ITAscm90YXRlQ29tbWl0TGFiZWw6ITB9LGM0Ont1c2VXaWR0aDp2b2lkIDAsZGlhZ3JhbU1hcmdpblg6NTAsZGlhZ3JhbU1hcmdpblk6MTAsYzRTaGFwZU1hcmdpbjo1MCxjNFNoYXBlUGFkZGluZzoyMCx3aWR0aDoyMTYsaGVpZ2h0OjYwLGJveE1hcmdpbjoxMCx1c2VNYXhXaWR0aDohMCxjNFNoYXBlSW5Sb3c6NCxuZXh0TGluZVBhZGRpbmdYOjAsYzRCb3VuZGFyeUluUm93OjIscGVyc29uRm9udFNpemU6MTQscGVyc29uRm9udEZhbWlseTonIk9wZW4gU2FucyIsIHNhbnMtc2VyaWYnLHBlcnNvbkZvbnRXZWlnaHQ6Im5vcm1hbCIsZXh0ZXJuYWxfcGVyc29uRm9udFNpemU6MTQsZXh0ZXJuYWxfcGVyc29uRm9udEZhbWlseTonIk9wZW4gU2FucyIsIHNhbnMtc2VyaWYnLGV4dGVybmFsX3BlcnNvbkZvbnRXZWlnaHQ6Im5vcm1hbCIsc3lzdGVtRm9udFNpemU6MTQsc3lzdGVtRm9udEZhbWlseTonIk9wZW4gU2FucyIsIHNhbnMtc2VyaWYnLHN5c3RlbUZvbnRXZWlnaHQ6Im5vcm1hbCIsZXh0ZXJuYWxfc3lzdGVtRm9udFNpemU6MTQsZXh0ZXJuYWxfc3lzdGVtRm9udEZhbWlseTonIk9wZW4gU2FucyIsIHNhbnMtc2VyaWYnLGV4dGVybmFsX3N5c3RlbUZvbnRXZWlnaHQ6Im5vcm1hbCIsc3lzdGVtX2RiRm9udFNpemU6MTQsc3lzdGVtX2RiRm9udEZhbWlseTonIk9wZW4gU2FucyIsIHNhbnMtc2VyaWYnLHN5c3RlbV9kYkZvbnRXZWlnaHQ6Im5vcm1hbCIsZXh0ZXJuYWxfc3lzdGVtX2RiRm9udFNpemU6MTQsZXh0ZXJuYWxfc3lzdGVtX2RiRm9udEZhbWlseTonIk9wZW4gU2FucyIsIHNhbnMtc2VyaWYnLGV4dGVybmFsX3N5c3RlbV9kYkZvbnRXZWlnaHQ6Im5vcm1hbCIsc3lzdGVtX3F1ZXVlRm9udFNpemU6MTQsc3lzdGVtX3F1ZXVlRm9udEZhbWlseTonIk9wZW4gU2FucyIsIHNhbnMtc2VyaWYnLHN5c3RlbV9xdWV1ZUZvbnRXZWlnaHQ6Im5vcm1hbCIsZXh0ZXJuYWxfc3lzdGVtX3F1ZXVlRm9udFNpemU6MTQsZXh0ZXJuYWxfc3lzdGVtX3F1ZXVlRm9udEZhbWlseTonIk9wZW4gU2FucyIsIHNhbnMtc2VyaWYnLGV4dGVybmFsX3N5c3RlbV9xdWV1ZUZvbnRXZWlnaHQ6Im5vcm1hbCIsYm91bmRhcnlGb250U2l6ZToxNCxib3VuZGFyeUZvbnRGYW1pbHk6JyJPcGVuIFNhbnMiLCBzYW5zLXNlcmlmJyxib3VuZGFyeUZvbnRXZWlnaHQ6Im5vcm1hbCIsbWVzc2FnZUZvbnRTaXplOjEyLG1lc3NhZ2VGb250RmFtaWx5OiciT3BlbiBTYW5zIiwgc2Fucy1zZXJpZicsbWVzc2FnZUZvbnRXZWlnaHQ6Im5vcm1hbCIsY29udGFpbmVyRm9udFNpemU6MTQsY29udGFpbmVyRm9udEZhbWlseTonIk9wZW4gU2FucyIsIHNhbnMtc2VyaWYnLGNvbnRhaW5lckZvbnRXZWlnaHQ6Im5vcm1hbCIsZXh0ZXJuYWxfY29udGFpbmVyRm9udFNpemU6MTQsZXh0ZXJuYWxfY29udGFpbmVyRm9udEZhbWlseTonIk9wZW4gU2FucyIsIHNhbnMtc2VyaWYnLGV4dGVybmFsX2NvbnRhaW5lckZvbnRXZWlnaHQ6Im5vcm1hbCIsY29udGFpbmVyX2RiRm9udFNpemU6MTQsY29udGFpbmVyX2RiRm9udEZhbWlseTonIk9wZW4gU2FucyIsIHNhbnMtc2VyaWYnLGNvbnRhaW5lcl9kYkZvbnRXZWlnaHQ6Im5vcm1hbCIsZXh0ZXJuYWxfY29udGFpbmVyX2RiRm9udFNpemU6MTQsZXh0ZXJuYWxfY29udGFpbmVyX2RiRm9udEZhbWlseTonIk9wZW4gU2FucyIsIHNhbnMtc2VyaWYnLGV4dGVybmFsX2NvbnRhaW5lcl9kYkZvbnRXZWlnaHQ6Im5vcm1hbCIsY29udGFpbmVyX3F1ZXVlRm9udFNpemU6MTQsY29udGFpbmVyX3F1ZXVlRm9udEZhbWlseTonIk9wZW4gU2FucyIsIHNhbnMtc2VyaWYnLGNvbnRhaW5lcl9xdWV1ZUZvbnRXZWlnaHQ6Im5vcm1hbCIsZXh0ZXJuYWxfY29udGFpbmVyX3F1ZXVlRm9udFNpemU6MTQsZXh0ZXJuYWxfY29udGFpbmVyX3F1ZXVlRm9udEZhbWlseTonIk9wZW4gU2FucyIsIHNhbnMtc2VyaWYnLGV4dGVybmFsX2NvbnRhaW5lcl9xdWV1ZUZvbnRXZWlnaHQ6Im5vcm1hbCIsY29tcG9uZW50Rm9udFNpemU6MTQsY29tcG9uZW50Rm9udEZhbWlseTonIk9wZW4gU2FucyIsIHNhbnMtc2VyaWYnLGNvbXBvbmVudEZvbnRXZWlnaHQ6Im5vcm1hbCIsZXh0ZXJuYWxfY29tcG9uZW50Rm9udFNpemU6MTQsZXh0ZXJuYWxfY29tcG9uZW50Rm9udEZhbWlseTonIk9wZW4gU2FucyIsIHNhbnMtc2VyaWYnLGV4dGVybmFsX2NvbXBvbmVudEZvbnRXZWlnaHQ6Im5vcm1hbCIsY29tcG9uZW50X2RiRm9udFNpemU6MTQsY29tcG9uZW50X2RiRm9udEZhbWlseTonIk9wZW4gU2FucyIsIHNhbnMtc2VyaWYnLGNvbXBvbmVudF9kYkZvbnRXZWlnaHQ6Im5vcm1hbCIsZXh0ZXJuYWxfY29tcG9uZW50X2RiRm9udFNpemU6MTQsZXh0ZXJuYWxfY29tcG9uZW50X2RiRm9udEZhbWlseTonIk9wZW4gU2FucyIsIHNhbnMtc2VyaWYnLGV4dGVybmFsX2NvbXBvbmVudF9kYkZvbnRXZWlnaHQ6Im5vcm1hbCIsY29tcG9uZW50X3F1ZXVlRm9udFNpemU6MTQsY29tcG9uZW50X3F1ZXVlRm9udEZhbWlseTonIk9wZW4gU2FucyIsIHNhbnMtc2VyaWYnLGNvbXBvbmVudF9xdWV1ZUZvbnRXZWlnaHQ6Im5vcm1hbCIsZXh0ZXJuYWxfY29tcG9uZW50X3F1ZXVlRm9udFNpemU6MTQsZXh0ZXJuYWxfY29tcG9uZW50X3F1ZXVlRm9udEZhbWlseTonIk9wZW4gU2FucyIsIHNhbnMtc2VyaWYnLGV4dGVybmFsX2NvbXBvbmVudF9xdWV1ZUZvbnRXZWlnaHQ6Im5vcm1hbCIsd3JhcDohMCx3cmFwUGFkZGluZzoxMCxwZXJzb25Gb250OmZ1bmN0aW9uKCl7cmV0dXJue2ZvbnRGYW1pbHk6dGhpcy5wZXJzb25Gb250RmFtaWx5LGZvbnRTaXplOnRoaXMucGVyc29uRm9udFNpemUsZm9udFdlaWdodDp0aGlzLnBlcnNvbkZvbnRXZWlnaHR9fSxleHRlcm5hbF9wZXJzb25Gb250OmZ1bmN0aW9uKCl7cmV0dXJue2ZvbnRGYW1pbHk6dGhpcy5leHRlcm5hbF9wZXJzb25Gb250RmFtaWx5LGZvbnRTaXplOnRoaXMuZXh0ZXJuYWxfcGVyc29uRm9udFNpemUsZm9udFdlaWdodDp0aGlzLmV4dGVybmFsX3BlcnNvbkZvbnRXZWlnaHR9fSxzeXN0ZW1Gb250OmZ1bmN0aW9uKCl7cmV0dXJue2ZvbnRGYW1pbHk6dGhpcy5zeXN0ZW1Gb250RmFtaWx5LGZvbnRTaXplOnRoaXMuc3lzdGVtRm9udFNpemUsZm9udFdlaWdodDp0aGlzLnN5c3RlbUZvbnRXZWlnaHR9fSxleHRlcm5hbF9zeXN0ZW1Gb250OmZ1bmN0aW9uKCl7cmV0dXJue2ZvbnRGYW1pbHk6dGhpcy5leHRlcm5hbF9zeXN0ZW1Gb250RmFtaWx5LGZvbnRTaXplOnRoaXMuZXh0ZXJuYWxfc3lzdGVtRm9udFNpemUsZm9udFdlaWdodDp0aGlzLmV4dGVybmFsX3N5c3RlbUZvbnRXZWlnaHR9fSxzeXN0ZW1fZGJGb250OmZ1bmN0aW9uKCl7cmV0dXJue2ZvbnRGYW1pbHk6dGhpcy5zeXN0ZW1fZGJGb250RmFtaWx5LGZvbnRTaXplOnRoaXMuc3lzdGVtX2RiRm9udFNpemUsZm9udFdlaWdodDp0aGlzLnN5c3RlbV9kYkZvbnRXZWlnaHR9fSxleHRlcm5hbF9zeXN0ZW1fZGJGb250OmZ1bmN0aW9uKCl7cmV0dXJue2ZvbnRGYW1pbHk6dGhpcy5leHRlcm5hbF9zeXN0ZW1fZGJGb250RmFtaWx5LGZvbnRTaXplOnRoaXMuZXh0ZXJuYWxfc3lzdGVtX2RiRm9udFNpemUsZm9udFdlaWdodDp0aGlzLmV4dGVybmFsX3N5c3RlbV9kYkZvbnRXZWlnaHR9fSxzeXN0ZW1fcXVldWVGb250OmZ1bmN0aW9uKCl7cmV0dXJue2ZvbnRGYW1pbHk6dGhpcy5zeXN0ZW1fcXVldWVGb250RmFtaWx5LGZvbnRTaXplOnRoaXMuc3lzdGVtX3F1ZXVlRm9udFNpemUsZm9udFdlaWdodDp0aGlzLnN5c3RlbV9xdWV1ZUZvbnRXZWlnaHR9fSxleHRlcm5hbF9zeXN0ZW1fcXVldWVGb250OmZ1bmN0aW9uKCl7cmV0dXJue2ZvbnRGYW1pbHk6dGhpcy5leHRlcm5hbF9zeXN0ZW1fcXVldWVGb250RmFtaWx5LGZvbnRTaXplOnRoaXMuZXh0ZXJuYWxfc3lzdGVtX3F1ZXVlRm9udFNpemUsZm9udFdlaWdodDp0aGlzLmV4dGVybmFsX3N5c3RlbV9xdWV1ZUZvbnRXZWlnaHR9fSxjb250YWluZXJGb250OmZ1bmN0aW9uKCl7cmV0dXJue2ZvbnRGYW1pbHk6dGhpcy5jb250YWluZXJGb250RmFtaWx5LGZvbnRTaXplOnRoaXMuY29udGFpbmVyRm9udFNpemUsZm9udFdlaWdodDp0aGlzLmNvbnRhaW5lckZvbnRXZWlnaHR9fSxleHRlcm5hbF9jb250YWluZXJGb250OmZ1bmN0aW9uKCl7cmV0dXJue2ZvbnRGYW1pbHk6dGhpcy5leHRlcm5hbF9jb250YWluZXJGb250RmFtaWx5LGZvbnRTaXplOnRoaXMuZXh0ZXJuYWxfY29udGFpbmVyRm9udFNpemUsZm9udFdlaWdodDp0aGlzLmV4dGVybmFsX2NvbnRhaW5lckZvbnRXZWlnaHR9fSxjb250YWluZXJfZGJGb250OmZ1bmN0aW9uKCl7cmV0dXJue2ZvbnRGYW1pbHk6dGhpcy5jb250YWluZXJfZGJGb250RmFtaWx5LGZvbnRTaXplOnRoaXMuY29udGFpbmVyX2RiRm9udFNpemUsZm9udFdlaWdodDp0aGlzLmNvbnRhaW5lcl9kYkZvbnRXZWlnaHR9fSxleHRlcm5hbF9jb250YWluZXJfZGJGb250OmZ1bmN0aW9uKCl7cmV0dXJue2ZvbnRGYW1pbHk6dGhpcy5leHRlcm5hbF9jb250YWluZXJfZGJGb250RmFtaWx5LGZvbnRTaXplOnRoaXMuZXh0ZXJuYWxfY29udGFpbmVyX2RiRm9udFNpemUsZm9udFdlaWdodDp0aGlzLmV4dGVybmFsX2NvbnRhaW5lcl9kYkZvbnRXZWlnaHR9fSxjb250YWluZXJfcXVldWVGb250OmZ1bmN0aW9uKCl7cmV0dXJue2ZvbnRGYW1pbHk6dGhpcy5jb250YWluZXJfcXVldWVGb250RmFtaWx5LGZvbnRTaXplOnRoaXMuY29udGFpbmVyX3F1ZXVlRm9udFNpemUsZm9udFdlaWdodDp0aGlzLmNvbnRhaW5lcl9xdWV1ZUZvbnRXZWlnaHR9fSxleHRlcm5hbF9jb250YWluZXJfcXVldWVGb250OmZ1bmN0aW9uKCl7cmV0dXJue2ZvbnRGYW1pbHk6dGhpcy5leHRlcm5hbF9jb250YWluZXJfcXVldWVGb250RmFtaWx5LGZvbnRTaXplOnRoaXMuZXh0ZXJuYWxfY29udGFpbmVyX3F1ZXVlRm9udFNpemUsZm9udFdlaWdodDp0aGlzLmV4dGVybmFsX2NvbnRhaW5lcl9xdWV1ZUZvbnRXZWlnaHR9fSxjb21wb25lbnRGb250OmZ1bmN0aW9uKCl7cmV0dXJue2ZvbnRGYW1pbHk6dGhpcy5jb21wb25lbnRGb250RmFtaWx5LGZvbnRTaXplOnRoaXMuY29tcG9uZW50Rm9udFNpemUsZm9udFdlaWdodDp0aGlzLmNvbXBvbmVudEZvbnRXZWlnaHR9fSxleHRlcm5hbF9jb21wb25lbnRGb250OmZ1bmN0aW9uKCl7cmV0dXJue2ZvbnRGYW1pbHk6dGhpcy5leHRlcm5hbF9jb21wb25lbnRGb250RmFtaWx5LGZvbnRTaXplOnRoaXMuZXh0ZXJuYWxfY29tcG9uZW50Rm9udFNpemUsZm9udFdlaWdodDp0aGlzLmV4dGVybmFsX2NvbXBvbmVudEZvbnRXZWlnaHR9fSxjb21wb25lbnRfZGJGb250OmZ1bmN0aW9uKCl7cmV0dXJue2ZvbnRGYW1pbHk6dGhpcy5jb21wb25lbnRfZGJGb250RmFtaWx5LGZvbnRTaXplOnRoaXMuY29tcG9uZW50X2RiRm9udFNpemUsZm9udFdlaWdodDp0aGlzLmNvbXBvbmVudF9kYkZvbnRXZWlnaHR9fSxleHRlcm5hbF9jb21wb25lbnRfZGJGb250OmZ1bmN0aW9uKCl7cmV0dXJue2ZvbnRGYW1pbHk6dGhpcy5leHRlcm5hbF9jb21wb25lbnRfZGJGb250RmFtaWx5LGZvbnRTaXplOnRoaXMuZXh0ZXJuYWxfY29tcG9uZW50X2RiRm9udFNpemUsZm9udFdlaWdodDp0aGlzLmV4dGVybmFsX2NvbXBvbmVudF9kYkZvbnRXZWlnaHR9fSxjb21wb25lbnRfcXVldWVGb250OmZ1bmN0aW9uKCl7cmV0dXJue2ZvbnRGYW1pbHk6dGhpcy5jb21wb25lbnRfcXVldWVGb250RmFtaWx5LGZvbnRTaXplOnRoaXMuY29tcG9uZW50X3F1ZXVlRm9udFNpemUsZm9udFdlaWdodDp0aGlzLmNvbXBvbmVudF9xdWV1ZUZvbnRXZWlnaHR9fSxleHRlcm5hbF9jb21wb25lbnRfcXVldWVGb250OmZ1bmN0aW9uKCl7cmV0dXJue2ZvbnRGYW1pbHk6dGhpcy5leHRlcm5hbF9jb21wb25lbnRfcXVldWVGb250RmFtaWx5LGZvbnRTaXplOnRoaXMuZXh0ZXJuYWxfY29tcG9uZW50X3F1ZXVlRm9udFNpemUsZm9udFdlaWdodDp0aGlzLmV4dGVybmFsX2NvbXBvbmVudF9xdWV1ZUZvbnRXZWlnaHR9fSxib3VuZGFyeUZvbnQ6ZnVuY3Rpb24oKXtyZXR1cm57Zm9udEZhbWlseTp0aGlzLmJvdW5kYXJ5Rm9udEZhbWlseSxmb250U2l6ZTp0aGlzLmJvdW5kYXJ5Rm9udFNpemUsZm9udFdlaWdodDp0aGlzLmJvdW5kYXJ5Rm9udFdlaWdodH19LG1lc3NhZ2VGb250OmZ1bmN0aW9uKCl7cmV0dXJue2ZvbnRGYW1pbHk6dGhpcy5tZXNzYWdlRm9udEZhbWlseSxmb250U2l6ZTp0aGlzLm1lc3NhZ2VGb250U2l6ZSxmb250V2VpZ2h0OnRoaXMubWVzc2FnZUZvbnRXZWlnaHR9fSxwZXJzb25fYmdfY29sb3I6IiMwODQyN0IiLHBlcnNvbl9ib3JkZXJfY29sb3I6IiMwNzNCNkYiLGV4dGVybmFsX3BlcnNvbl9iZ19jb2xvcjoiIzY4Njg2OCIsZXh0ZXJuYWxfcGVyc29uX2JvcmRlcl9jb2xvcjoiIzhBOEE4QSIsc3lzdGVtX2JnX2NvbG9yOiIjMTE2OEJEIixzeXN0ZW1fYm9yZGVyX2NvbG9yOiIjM0M3RkMwIixzeXN0ZW1fZGJfYmdfY29sb3I6IiMxMTY4QkQiLHN5c3RlbV9kYl9ib3JkZXJfY29sb3I6IiMzQzdGQzAiLHN5c3RlbV9xdWV1ZV9iZ19jb2xvcjoiIzExNjhCRCIsc3lzdGVtX3F1ZXVlX2JvcmRlcl9jb2xvcjoiIzNDN0ZDMCIsZXh0ZXJuYWxfc3lzdGVtX2JnX2NvbG9yOiIjOTk5OTk5IixleHRlcm5hbF9zeXN0ZW1fYm9yZGVyX2NvbG9yOiIjOEE4QThBIixleHRlcm5hbF9zeXN0ZW1fZGJfYmdfY29sb3I6IiM5OTk5OTkiLGV4dGVybmFsX3N5c3RlbV9kYl9ib3JkZXJfY29sb3I6IiM4QThBOEEiLGV4dGVybmFsX3N5c3RlbV9xdWV1ZV9iZ19jb2xvcjoiIzk5OTk5OSIsZXh0ZXJuYWxfc3lzdGVtX3F1ZXVlX2JvcmRlcl9jb2xvcjoiIzhBOEE4QSIsY29udGFpbmVyX2JnX2NvbG9yOiIjNDM4REQ1Iixjb250YWluZXJfYm9yZGVyX2NvbG9yOiIjM0M3RkMwIixjb250YWluZXJfZGJfYmdfY29sb3I6IiM0MzhERDUiLGNvbnRhaW5lcl9kYl9ib3JkZXJfY29sb3I6IiMzQzdGQzAiLGNvbnRhaW5lcl9xdWV1ZV9iZ19jb2xvcjoiIzQzOERENSIsY29udGFpbmVyX3F1ZXVlX2JvcmRlcl9jb2xvcjoiIzNDN0ZDMCIsZXh0ZXJuYWxfY29udGFpbmVyX2JnX2NvbG9yOiIjQjNCM0IzIixleHRlcm5hbF9jb250YWluZXJfYm9yZGVyX2NvbG9yOiIjQTZBNkE2IixleHRlcm5hbF9jb250YWluZXJfZGJfYmdfY29sb3I6IiNCM0IzQjMiLGV4dGVybmFsX2NvbnRhaW5lcl9kYl9ib3JkZXJfY29sb3I6IiNBNkE2QTYiLGV4dGVybmFsX2NvbnRhaW5lcl9xdWV1ZV9iZ19jb2xvcjoiI0IzQjNCMyIsZXh0ZXJuYWxfY29udGFpbmVyX3F1ZXVlX2JvcmRlcl9jb2xvcjoiI0E2QTZBNiIsY29tcG9uZW50X2JnX2NvbG9yOiIjODVCQkYwIixjb21wb25lbnRfYm9yZGVyX2NvbG9yOiIjNzhBOEQ4Iixjb21wb25lbnRfZGJfYmdfY29sb3I6IiM4NUJCRjAiLGNvbXBvbmVudF9kYl9ib3JkZXJfY29sb3I6IiM3OEE4RDgiLGNvbXBvbmVudF9xdWV1ZV9iZ19jb2xvcjoiIzg1QkJGMCIsY29tcG9uZW50X3F1ZXVlX2JvcmRlcl9jb2xvcjoiIzc4QThEOCIsZXh0ZXJuYWxfY29tcG9uZW50X2JnX2NvbG9yOiIjQ0NDQ0NDIixleHRlcm5hbF9jb21wb25lbnRfYm9yZGVyX2NvbG9yOiIjQkZCRkJGIixleHRlcm5hbF9jb21wb25lbnRfZGJfYmdfY29sb3I6IiNDQ0NDQ0MiLGV4dGVybmFsX2NvbXBvbmVudF9kYl9ib3JkZXJfY29sb3I6IiNCRkJGQkYiLGV4dGVybmFsX2NvbXBvbmVudF9xdWV1ZV9iZ19jb2xvcjoiI0NDQ0NDQyIsZXh0ZXJuYWxfY29tcG9uZW50X3F1ZXVlX2JvcmRlcl9jb2xvcjoiI0JGQkZCRiJ9LG1pbmRtYXA6e3VzZU1heFdpZHRoOiEwLHBhZGRpbmc6MTAsbWF4Tm9kZVdpZHRoOjIwMH0sZm9udFNpemU6MTZ9O1hhLmNsYXNzJiYoWGEuY2xhc3MuYXJyb3dNYXJrZXJBYnNvbHV0ZT1YYS5hcnJvd01hcmtlckFic29sdXRlKSxYYS5naXRHcmFwaCYmKFhhLmdpdEdyYXBoLmFycm93TWFya2VyQWJzb2x1dGU9WGEuYXJyb3dNYXJrZXJBYnNvbHV0ZSk7Y29uc3Qgams9KHQsZT0iIik9Pk9iamVjdC5rZXlzKHQpLnJlZHVjZSgocixuKT0+QXJyYXkuaXNBcnJheSh0W25dKT9yOnR5cGVvZiB0W25dPT0ib2JqZWN0IiYmdFtuXSE9PW51bGw/Wy4uLnIsZStuLC4uLmprKHRbbl0sIiIpXTpbLi4ucixlK25dLFtdKSx2Rz1qayhYYSwiIikseEc9L1slXXsyfVt7XVxzKig/Oig/OihcdyspXHMqOnwoXHcrKSlccyooPzooPzooXHcrKSl8KCg/Oig/IVt9XVslXXsyfSkufFxyP1xuKSopKT9ccyopKD86W31dWyVdezJ9KT8vZ2ksa0c9L1xzKiUlLipcbi9nbSx6Zj17fSxYcD1mdW5jdGlvbih0LGUpe3Q9dC5yZXBsYWNlKHhHLCIiKS5yZXBsYWNlKGtHLGAKYCk7Zm9yKGNvbnN0W3Ise2RldGVjdG9yOm59XW9mIE9iamVjdC5lbnRyaWVzKHpmKSlpZihuKHQsZSkpcmV0dXJuIHI7dGhyb3cgbmV3IEVycm9yKGBObyBkaWFncmFtIHR5cGUgZGV0ZWN0ZWQgZm9yIHRleHQ6ICR7dH1gKX0sJGs9KHQsZSxyKT0+e2lmKHpmW3RdKXRocm93IG5ldyBFcnJvcihgRGV0ZWN0b3Igd2l0aCBrZXkgJHt0fSBhbHJlYWR5IGV4aXN0c2ApO3pmW3RdPXtkZXRlY3RvcjplLGxvYWRlcjpyfSxILmRlYnVnKGBEZXRlY3RvciB3aXRoIGtleSAke3R9IGFkZGVkJHtyPyIgd2l0aCBsb2FkZXIiOiIifWApfSx3Rz10PT56Zlt0XS5sb2FkZXIsZnI9ZnVuY3Rpb24odCxlLHIpe2NvbnN0e2RlcHRoOm4sY2xvYmJlcjppfT1PYmplY3QuYXNzaWduKHtkZXB0aDoyLGNsb2JiZXI6ITF9LHIpO3JldHVybiBBcnJheS5pc0FycmF5KGUpJiYhQXJyYXkuaXNBcnJheSh0KT8oZS5mb3JFYWNoKGE9PmZyKHQsYSxyKSksdCk6QXJyYXkuaXNBcnJheShlKSYmQXJyYXkuaXNBcnJheSh0KT8oZS5mb3JFYWNoKGE9Pnt0LmluZGV4T2YoYSk9PT0tMSYmdC5wdXNoKGEpfSksdCk6dHlwZW9mIHQ+InUifHxuPD0wP3QhPW51bGwmJnR5cGVvZiB0PT0ib2JqZWN0IiYmdHlwZW9mIGU9PSJvYmplY3QiP09iamVjdC5hc3NpZ24odCxlKTplOih0eXBlb2YgZTwidSImJnR5cGVvZiB0PT0ib2JqZWN0IiYmdHlwZW9mIGU9PSJvYmplY3QiJiZPYmplY3Qua2V5cyhlKS5mb3JFYWNoKGE9Pnt0eXBlb2YgZVthXT09Im9iamVjdCImJih0W2FdPT09dm9pZCAwfHx0eXBlb2YgdFthXT09Im9iamVjdCIpPyh0W2FdPT09dm9pZCAwJiYodFthXT1BcnJheS5pc0FycmF5KGVbYV0pP1tdOnt9KSx0W2FdPWZyKHRbYV0sZVthXSx7ZGVwdGg6bi0xLGNsb2JiZXI6aX0pKTooaXx8dHlwZW9mIHRbYV0hPSJvYmplY3QiJiZ0eXBlb2YgZVthXSE9Im9iamVjdCIpJiYodFthXT1lW2FdKX0pLHQpfTt2YXIgVEc9dHlwZW9mIGpyPT0ib2JqZWN0IiYmanImJmpyLk9iamVjdD09PU9iamVjdCYmanIsWGs9VEcsRUc9WGssQ0c9dHlwZW9mIHNlbGY9PSJvYmplY3QiJiZzZWxmJiZzZWxmLk9iamVjdD09PU9iamVjdCYmc2VsZixTRz1FR3x8Q0d8fEZ1bmN0aW9uKCJyZXR1cm4gdGhpcyIpKCksc2k9U0csQUc9c2ksTUc9QUcuU3ltYm9sLHpvPU1HLEtrPXpvLFprPU9iamVjdC5wcm90b3R5cGUsTEc9WmsuaGFzT3duUHJvcGVydHksUkc9WmsudG9TdHJpbmcsQWM9S2s/S2sudG9TdHJpbmdUYWc6dm9pZCAwO2Z1bmN0aW9uIElHKHQpe3ZhciBlPUxHLmNhbGwodCxBYykscj10W0FjXTt0cnl7dFtBY109dm9pZCAwO3ZhciBuPSEwfWNhdGNoe312YXIgaT1SRy5jYWxsKHQpO3JldHVybiBuJiYoZT90W0FjXT1yOmRlbGV0ZSB0W0FjXSksaX12YXIgTkc9SUcsQkc9T2JqZWN0LnByb3RvdHlwZSxERz1CRy50b1N0cmluZztmdW5jdGlvbiBPRyh0KXtyZXR1cm4gREcuY2FsbCh0KX12YXIgRkc9T0csUWs9em8sUEc9TkcscUc9RkcsVkc9IltvYmplY3QgTnVsbF0iLHpHPSJbb2JqZWN0IFVuZGVmaW5lZF0iLEprPVFrP1FrLnRvU3RyaW5nVGFnOnZvaWQgMDtmdW5jdGlvbiBZRyh0KXtyZXR1cm4gdD09bnVsbD90PT09dm9pZCAwP3pHOlZHOkprJiZKayBpbiBPYmplY3QodCk/UEcodCk6cUcodCl9dmFyIFBzPVlHO2Z1bmN0aW9uIFVHKHQpe3ZhciBlPXR5cGVvZiB0O3JldHVybiB0IT1udWxsJiYoZT09Im9iamVjdCJ8fGU9PSJmdW5jdGlvbiIpfXZhciBWbj1VRyxXRz1QcyxIRz1WbixHRz0iW29iamVjdCBBc3luY0Z1bmN0aW9uXSIsakc9IltvYmplY3QgRnVuY3Rpb25dIiwkRz0iW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0iLFhHPSJbb2JqZWN0IFByb3h5XSI7ZnVuY3Rpb24gS0codCl7aWYoIUhHKHQpKXJldHVybiExO3ZhciBlPVdHKHQpO3JldHVybiBlPT1qR3x8ZT09JEd8fGU9PUdHfHxlPT1YR312YXIgWW89S0csWkc9c2ksUUc9WkdbIl9fY29yZS1qc19zaGFyZWRfXyJdLEpHPVFHLEtwPUpHLHR3PWZ1bmN0aW9uKCl7dmFyIHQ9L1teLl0rJC8uZXhlYyhLcCYmS3Aua2V5cyYmS3Aua2V5cy5JRV9QUk9UT3x8IiIpO3JldHVybiB0PyJTeW1ib2woc3JjKV8xLiIrdDoiIn0oKTtmdW5jdGlvbiB0aih0KXtyZXR1cm4hIXR3JiZ0dyBpbiB0fXZhciBlaj10aixyaj1GdW5jdGlvbi5wcm90b3R5cGUsbmo9cmoudG9TdHJpbmc7ZnVuY3Rpb24gaWoodCl7aWYodCE9bnVsbCl7dHJ5e3JldHVybiBuai5jYWxsKHQpfWNhdGNoe310cnl7cmV0dXJuIHQrIiJ9Y2F0Y2h7fX1yZXR1cm4iIn12YXIgZXc9aWosYWo9WW8sc2o9ZWosb2o9Vm4sbGo9ZXcsY2o9L1tcXF4kLiorPygpW1xde318XS9nLHVqPS9eXFtvYmplY3QgLis/Q29uc3RydWN0b3JcXSQvLGhqPUZ1bmN0aW9uLnByb3RvdHlwZSxmaj1PYmplY3QucHJvdG90eXBlLGRqPWhqLnRvU3RyaW5nLHBqPWZqLmhhc093blByb3BlcnR5LGdqPVJlZ0V4cCgiXiIrZGouY2FsbChwaikucmVwbGFjZShjaiwiXFwkJiIpLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFwoKXwgZm9yIC4rPyg/PVxcXF0pL2csIiQxLio/IikrIiQiKTtmdW5jdGlvbiB5aih0KXtpZighb2oodCl8fHNqKHQpKXJldHVybiExO3ZhciBlPWFqKHQpP2dqOnVqO3JldHVybiBlLnRlc3QobGoodCkpfXZhciBtaj15ajtmdW5jdGlvbiBiaih0LGUpe3JldHVybiB0PT1udWxsP3ZvaWQgMDp0W2VdfXZhciBfaj1iaix2aj1taix4aj1fajtmdW5jdGlvbiBraih0LGUpe3ZhciByPXhqKHQsZSk7cmV0dXJuIHZqKHIpP3I6dm9pZCAwfXZhciBxcz1raix3aj1xcyxUaj13aihPYmplY3QsImNyZWF0ZSIpLFlmPVRqLHJ3PVlmO2Z1bmN0aW9uIEVqKCl7dGhpcy5fX2RhdGFfXz1ydz9ydyhudWxsKTp7fSx0aGlzLnNpemU9MH12YXIgQ2o9RWo7ZnVuY3Rpb24gU2oodCl7dmFyIGU9dGhpcy5oYXModCkmJmRlbGV0ZSB0aGlzLl9fZGF0YV9fW3RdO3JldHVybiB0aGlzLnNpemUtPWU/MTowLGV9dmFyIEFqPVNqLE1qPVlmLExqPSJfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fIixSaj1PYmplY3QucHJvdG90eXBlLElqPVJqLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIE5qKHQpe3ZhciBlPXRoaXMuX19kYXRhX187aWYoTWope3ZhciByPWVbdF07cmV0dXJuIHI9PT1Maj92b2lkIDA6cn1yZXR1cm4gSWouY2FsbChlLHQpP2VbdF06dm9pZCAwfXZhciBCaj1OaixEaj1ZZixPaj1PYmplY3QucHJvdG90eXBlLEZqPU9qLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIFBqKHQpe3ZhciBlPXRoaXMuX19kYXRhX187cmV0dXJuIERqP2VbdF0hPT12b2lkIDA6RmouY2FsbChlLHQpfXZhciBxaj1QaixWaj1ZZix6aj0iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI7ZnVuY3Rpb24gWWoodCxlKXt2YXIgcj10aGlzLl9fZGF0YV9fO3JldHVybiB0aGlzLnNpemUrPXRoaXMuaGFzKHQpPzA6MSxyW3RdPVZqJiZlPT09dm9pZCAwP3pqOmUsdGhpc312YXIgVWo9WWosV2o9Q2osSGo9QWosR2o9Qmosamo9cWosJGo9VWo7ZnVuY3Rpb24gVW8odCl7dmFyIGU9LTEscj10PT1udWxsPzA6dC5sZW5ndGg7Zm9yKHRoaXMuY2xlYXIoKTsrK2U8cjspe3ZhciBuPXRbZV07dGhpcy5zZXQoblswXSxuWzFdKX19VW8ucHJvdG90eXBlLmNsZWFyPVdqLFVvLnByb3RvdHlwZS5kZWxldGU9SGosVW8ucHJvdG90eXBlLmdldD1HaixVby5wcm90b3R5cGUuaGFzPWpqLFVvLnByb3RvdHlwZS5zZXQ9JGo7dmFyIFhqPVVvO2Z1bmN0aW9uIEtqKCl7dGhpcy5fX2RhdGFfXz1bXSx0aGlzLnNpemU9MH12YXIgWmo9S2o7ZnVuY3Rpb24gUWoodCxlKXtyZXR1cm4gdD09PWV8fHQhPT10JiZlIT09ZX12YXIgV289UWosSmo9V287ZnVuY3Rpb24gdCQodCxlKXtmb3IodmFyIHI9dC5sZW5ndGg7ci0tOylpZihKaih0W3JdWzBdLGUpKXJldHVybiByO3JldHVybi0xfXZhciBVZj10JCxlJD1VZixyJD1BcnJheS5wcm90b3R5cGUsbiQ9ciQuc3BsaWNlO2Z1bmN0aW9uIGkkKHQpe3ZhciBlPXRoaXMuX19kYXRhX18scj1lJChlLHQpO2lmKHI8MClyZXR1cm4hMTt2YXIgbj1lLmxlbmd0aC0xO3JldHVybiByPT1uP2UucG9wKCk6biQuY2FsbChlLHIsMSksLS10aGlzLnNpemUsITB9dmFyIGEkPWkkLHMkPVVmO2Z1bmN0aW9uIG8kKHQpe3ZhciBlPXRoaXMuX19kYXRhX18scj1zJChlLHQpO3JldHVybiByPDA/dm9pZCAwOmVbcl1bMV19dmFyIGwkPW8kLGMkPVVmO2Z1bmN0aW9uIHUkKHQpe3JldHVybiBjJCh0aGlzLl9fZGF0YV9fLHQpPi0xfXZhciBoJD11JCxmJD1VZjtmdW5jdGlvbiBkJCh0LGUpe3ZhciByPXRoaXMuX19kYXRhX18sbj1mJChyLHQpO3JldHVybiBuPDA/KCsrdGhpcy5zaXplLHIucHVzaChbdCxlXSkpOnJbbl1bMV09ZSx0aGlzfXZhciBwJD1kJCxnJD1aaix5JD1hJCxtJD1sJCxiJD1oJCxfJD1wJDtmdW5jdGlvbiBIbyh0KXt2YXIgZT0tMSxyPXQ9PW51bGw/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1Iby5wcm90b3R5cGUuY2xlYXI9ZyQsSG8ucHJvdG90eXBlLmRlbGV0ZT15JCxIby5wcm90b3R5cGUuZ2V0PW0kLEhvLnByb3RvdHlwZS5oYXM9YiQsSG8ucHJvdG90eXBlLnNldD1fJDt2YXIgV2Y9SG8sdiQ9cXMseCQ9c2ksayQ9diQoeCQsIk1hcCIpLFpwPWskLG53PVhqLHckPVdmLFQkPVpwO2Z1bmN0aW9uIEUkKCl7dGhpcy5zaXplPTAsdGhpcy5fX2RhdGFfXz17aGFzaDpuZXcgbncsbWFwOm5ldyhUJHx8dyQpLHN0cmluZzpuZXcgbnd9fXZhciBDJD1FJDtmdW5jdGlvbiBTJCh0KXt2YXIgZT10eXBlb2YgdDtyZXR1cm4gZT09InN0cmluZyJ8fGU9PSJudW1iZXIifHxlPT0ic3ltYm9sInx8ZT09ImJvb2xlYW4iP3QhPT0iX19wcm90b19fIjp0PT09bnVsbH12YXIgQSQ9UyQsTSQ9QSQ7ZnVuY3Rpb24gTCQodCxlKXt2YXIgcj10Ll9fZGF0YV9fO3JldHVybiBNJChlKT9yW3R5cGVvZiBlPT0ic3RyaW5nIj8ic3RyaW5nIjoiaGFzaCJdOnIubWFwfXZhciBIZj1MJCxSJD1IZjtmdW5jdGlvbiBJJCh0KXt2YXIgZT1SJCh0aGlzLHQpLmRlbGV0ZSh0KTtyZXR1cm4gdGhpcy5zaXplLT1lPzE6MCxlfXZhciBOJD1JJCxCJD1IZjtmdW5jdGlvbiBEJCh0KXtyZXR1cm4gQiQodGhpcyx0KS5nZXQodCl9dmFyIE8kPUQkLEYkPUhmO2Z1bmN0aW9uIFAkKHQpe3JldHVybiBGJCh0aGlzLHQpLmhhcyh0KX12YXIgcSQ9UCQsViQ9SGY7ZnVuY3Rpb24geiQodCxlKXt2YXIgcj1WJCh0aGlzLHQpLG49ci5zaXplO3JldHVybiByLnNldCh0LGUpLHRoaXMuc2l6ZSs9ci5zaXplPT1uPzA6MSx0aGlzfXZhciBZJD16JCxVJD1DJCxXJD1OJCxIJD1PJCxHJD1xJCxqJD1ZJDtmdW5jdGlvbiBHbyh0KXt2YXIgZT0tMSxyPXQ9PW51bGw/MDp0Lmxlbmd0aDtmb3IodGhpcy5jbGVhcigpOysrZTxyOyl7dmFyIG49dFtlXTt0aGlzLnNldChuWzBdLG5bMV0pfX1Hby5wcm90b3R5cGUuY2xlYXI9VSQsR28ucHJvdG90eXBlLmRlbGV0ZT1XJCxHby5wcm90b3R5cGUuZ2V0PUgkLEdvLnByb3RvdHlwZS5oYXM9RyQsR28ucHJvdG90eXBlLnNldD1qJDt2YXIgUXA9R28saXc9UXAsJCQ9IkV4cGVjdGVkIGEgZnVuY3Rpb24iO2Z1bmN0aW9uIEpwKHQsZSl7aWYodHlwZW9mIHQhPSJmdW5jdGlvbiJ8fGUhPW51bGwmJnR5cGVvZiBlIT0iZnVuY3Rpb24iKXRocm93IG5ldyBUeXBlRXJyb3IoJCQpO3ZhciByPWZ1bmN0aW9uKCl7dmFyIG49YXJndW1lbnRzLGk9ZT9lLmFwcGx5KHRoaXMsbik6blswXSxhPXIuY2FjaGU7aWYoYS5oYXMoaSkpcmV0dXJuIGEuZ2V0KGkpO3ZhciBzPXQuYXBwbHkodGhpcyxuKTtyZXR1cm4gci5jYWNoZT1hLnNldChpLHMpfHxhLHN9O3JldHVybiByLmNhY2hlPW5ldyhKcC5DYWNoZXx8aXcpLHJ9SnAuQ2FjaGU9aXc7dmFyIEdmPUpwO2NvbnN0IFgkPXtjdXJ2ZUJhc2lzOk9zLGN1cnZlQmFzaXNDbG9zZWQ6aWssY3VydmVCYXNpc09wZW46c2ssY3VydmVMaW5lYXI6eW4sY3VydmVMaW5lYXJDbG9zZWQ6ZmssY3VydmVNb25vdG9uZVg6YmssY3VydmVNb25vdG9uZVk6X2ssY3VydmVOYXR1cmFsOmtrLGN1cnZlU3RlcDp3ayxjdXJ2ZVN0ZXBBZnRlcjpFayxjdXJ2ZVN0ZXBCZWZvcmU6VGt9LHRnPS9bJV17Mn1be11ccyooPzooPzooXHcrKVxzKjp8KFx3KykpXHMqKD86KD86KFx3KykpfCgoPzooPyFbfV1bJV17Mn0pLnxccj9cbikqKSk/XHMqKSg/Olt9XVslXXsyfSk/L2dpLEskPS9ccyooPzooPzooXHcrKSg/PTopOnwoXHcrKSlccyooPzooPzooXHcrKSl8KCg/Oig/IVt9XVslXXsyfSkufFxyP1xuKSopKT9ccyopKD86W31dWyVdezJ9KT8vZ2ksWiQ9ZnVuY3Rpb24odCxlKXtjb25zdCByPWF3KHQsLyg/OmluaXRcYil8KD86aW5pdGlhbGl6ZVxiKS8pO2xldCBuPXt9O2lmKEFycmF5LmlzQXJyYXkocikpe2NvbnN0IGk9ci5tYXAoYT0+YS5hcmdzKTtWcyhpKSxuPWZyKG4sWy4uLmldKX1lbHNlIG49ci5hcmdzO2lmKG4pe2xldCBpPVhwKHQsZSk7WyJjb25maWciXS5mb3JFYWNoKGE9Pnt0eXBlb2YgblthXTwidSImJihpPT09ImZsb3djaGFydC12MiImJihpPSJmbG93Y2hhcnQiKSxuW2ldPW5bYV0sZGVsZXRlIG5bYV0pfSl9cmV0dXJuIG59LGF3PWZ1bmN0aW9uKHQsZT1udWxsKXt0cnl7Y29uc3Qgcj1uZXcgUmVnRXhwKGBbJV17Mn0oPyFbe10ke0skLnNvdXJjZX0pKD89W31dWyVdezJ9KS4qCmAsImlnIik7dD10LnRyaW0oKS5yZXBsYWNlKHIsIiIpLnJlcGxhY2UoLycvZ20sJyInKSxILmRlYnVnKGBEZXRlY3RpbmcgZGlhZ3JhbSBkaXJlY3RpdmUke2UhPT1udWxsPyIgdHlwZToiK2U6IiJ9IGJhc2VkIG9uIHRoZSB0ZXh0OiR7dH1gKTtsZXQgbjtjb25zdCBpPVtdO2Zvcig7KG49dGcuZXhlYyh0KSkhPT1udWxsOylpZihuLmluZGV4PT09dGcubGFzdEluZGV4JiZ0Zy5sYXN0SW5kZXgrKyxuJiYhZXx8ZSYmblsxXSYmblsxXS5tYXRjaChlKXx8ZSYmblsyXSYmblsyXS5tYXRjaChlKSl7Y29uc3QgYT1uWzFdP25bMV06blsyXSxzPW5bM10/blszXS50cmltKCk6bls0XT9KU09OLnBhcnNlKG5bNF0udHJpbSgpKTpudWxsO2kucHVzaCh7dHlwZTphLGFyZ3M6c30pfXJldHVybiBpLmxlbmd0aD09PTAmJmkucHVzaCh7dHlwZTp0LGFyZ3M6bnVsbH0pLGkubGVuZ3RoPT09MT9pWzBdOml9Y2F0Y2gocil7cmV0dXJuIEguZXJyb3IoYEVSUk9SOiAke3IubWVzc2FnZX0gLSBVbmFibGUgdG8gcGFyc2UgZGlyZWN0aXZlCiAgICAgICR7ZSE9PW51bGw/IiB0eXBlOiIrZToiIn0gYmFzZWQgb24gdGhlIHRleHQ6JHt0fWApLHt0eXBlOm51bGwsYXJnczpudWxsfX19LFEkPWZ1bmN0aW9uKHQsZSl7Zm9yKGxldCByPTA7cjxlLmxlbmd0aDtyKyspaWYoZVtyXS5tYXRjaCh0KSlyZXR1cm4gcjtyZXR1cm4tMX0sTmk9KHQsZSk9PntpZighdClyZXR1cm4gZTtjb25zdCByPWBjdXJ2ZSR7dC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSt0LnNsaWNlKDEpfWA7cmV0dXJuIFgkW3JdfHxlfSxKJD0odCxlKT0+e2NvbnN0IHI9dC50cmltKCk7aWYocilyZXR1cm4gZS5zZWN1cml0eUxldmVsIT09Imxvb3NlIj9raShyKTpyfSx0WD0odCwuLi5lKT0+e2NvbnN0IHI9dC5zcGxpdCgiLiIpLG49ci5sZW5ndGgtMSxpPXJbbl07bGV0IGE9d2luZG93O2ZvcihsZXQgcz0wO3M8bjtzKyspaWYoYT1hW3Jbc11dLCFhKXJldHVybjthW2ldKC4uLmUpfSxNYz0odCxlKT0+dCYmZT9NYXRoLnNxcnQoTWF0aC5wb3coZS54LXQueCwyKStNYXRoLnBvdyhlLnktdC55LDIpKTowLGVYPXQ9PntsZXQgZSxyPTA7dC5mb3JFYWNoKGE9PntyKz1NYyhhLGUpLGU9YX0pO2xldCBuPXIvMixpO3JldHVybiBlPXZvaWQgMCx0LmZvckVhY2goYT0+e2lmKGUmJiFpKXtjb25zdCBzPU1jKGEsZSk7aWYoczxuKW4tPXM7ZWxzZXtjb25zdCBvPW4vcztvPD0wJiYoaT1lKSxvPj0xJiYoaT17eDphLngseTphLnl9KSxvPjAmJm88MSYmKGk9e3g6KDEtbykqZS54K28qYS54LHk6KDEtbykqZS55K28qYS55fSl9fWU9YX0pLGl9LHJYPXQ9PnQubGVuZ3RoPT09MT90WzBdOmVYKHQpLG5YPSh0LGUscik9PntsZXQgbjtILmluZm8oIm91ciBwb2ludHMiLGUpLGVbMF0hPT1yJiYoZT1lLnJldmVyc2UoKSksZS5mb3JFYWNoKGg9Pnt0b3RhbERpc3RhbmNlKz1NYyhoLG4pLG49aH0pO2xldCBhPTI1LHM7bj12b2lkIDAsZS5mb3JFYWNoKGg9PntpZihuJiYhcyl7Y29uc3QgZD1NYyhoLG4pO2lmKGQ8YSlhLT1kO2Vsc2V7Y29uc3QgZj1hL2Q7Zjw9MCYmKHM9biksZj49MSYmKHM9e3g6aC54LHk6aC55fSksZj4wJiZmPDEmJihzPXt4OigxLWYpKm4ueCtmKmgueCx5OigxLWYpKm4ueStmKmgueX0pfX1uPWh9KTtjb25zdCBvPXQ/MTA6NSxsPU1hdGguYXRhbjIoZVswXS55LXMueSxlWzBdLngtcy54KSx1PXt4OjAseTowfTtyZXR1cm4gdS54PU1hdGguc2luKGwpKm8rKGVbMF0ueCtzLngpLzIsdS55PS1NYXRoLmNvcyhsKSpvKyhlWzBdLnkrcy55KS8yLHV9LGlYPSh0LGUscik9PntsZXQgbj1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHIpKSxpO0guaW5mbygib3VyIHBvaW50cyIsbiksZSE9PSJzdGFydF9sZWZ0IiYmZSE9PSJzdGFydF9yaWdodCImJihuPW4ucmV2ZXJzZSgpKSxuLmZvckVhY2goZD0+e2k9ZH0pO2xldCBzPTI1K3QsbztpPXZvaWQgMCxuLmZvckVhY2goZD0+e2lmKGkmJiFvKXtjb25zdCBmPU1jKGQsaSk7aWYoZjxzKXMtPWY7ZWxzZXtjb25zdCBwPXMvZjtwPD0wJiYobz1pKSxwPj0xJiYobz17eDpkLngseTpkLnl9KSxwPjAmJnA8MSYmKG89e3g6KDEtcCkqaS54K3AqZC54LHk6KDEtcCkqaS55K3AqZC55fSl9fWk9ZH0pO2NvbnN0IGw9MTArdCouNSx1PU1hdGguYXRhbjIoblswXS55LW8ueSxuWzBdLngtby54KSxoPXt4OjAseTowfTtyZXR1cm4gaC54PU1hdGguc2luKHUpKmwrKG5bMF0ueCtvLngpLzIsaC55PS1NYXRoLmNvcyh1KSpsKyhuWzBdLnkrby55KS8yLGU9PT0ic3RhcnRfbGVmdCImJihoLng9TWF0aC5zaW4odStNYXRoLlBJKSpsKyhuWzBdLngrby54KS8yLGgueT0tTWF0aC5jb3ModStNYXRoLlBJKSpsKyhuWzBdLnkrby55KS8yKSxlPT09ImVuZF9yaWdodCImJihoLng9TWF0aC5zaW4odS1NYXRoLlBJKSpsKyhuWzBdLngrby54KS8yLTUsaC55PS1NYXRoLmNvcyh1LU1hdGguUEkpKmwrKG5bMF0ueStvLnkpLzItNSksZT09PSJlbmRfbGVmdCImJihoLng9TWF0aC5zaW4odSkqbCsoblswXS54K28ueCkvMi01LGgueT0tTWF0aC5jb3ModSkqbCsoblswXS55K28ueSkvMi01KSxofSxLYT10PT57bGV0IGU9IiIscj0iIjtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKyl0eXBlb2YgdFtuXTwidSImJih0W25dLnN0YXJ0c1dpdGgoImNvbG9yOiIpfHx0W25dLnN0YXJ0c1dpdGgoInRleHQtYWxpZ246Iik/cj1yK3Rbbl0rIjsiOmU9ZSt0W25dKyI7Iik7cmV0dXJue3N0eWxlOmUsbGFiZWxTdHlsZTpyfX07bGV0IHN3PTA7Y29uc3Qgb3c9KCk9PihzdysrLCJpZC0iK01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLDEyKSsiLSIrc3cpO2Z1bmN0aW9uIGFYKHQpe2xldCBlPSIiO2NvbnN0IHI9IjAxMjM0NTY3ODlhYmNkZWYiLG49ci5sZW5ndGg7Zm9yKGxldCBpPTA7aTx0O2krKyllKz1yLmNoYXJBdChNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqbikpO3JldHVybiBlfWNvbnN0IGx3PXQ9PmFYKHQubGVuZ3RoKSxzWD1mdW5jdGlvbigpe3JldHVybnt4OjAseTowLGZpbGw6dm9pZCAwLGFuY2hvcjoic3RhcnQiLHN0eWxlOiIjNjY2Iix3aWR0aDoxMDAsaGVpZ2h0OjEwMCx0ZXh0TWFyZ2luOjAscng6MCxyeTowLHZhbGlnbjp2b2lkIDB9fSxvWD1mdW5jdGlvbih0LGUpe2NvbnN0IHI9ZS50ZXh0LnJlcGxhY2UocGUubGluZUJyZWFrUmVnZXgsIiAiKSxuPXQuYXBwZW5kKCJ0ZXh0Iik7bi5hdHRyKCJ4IixlLngpLG4uYXR0cigieSIsZS55KSxuLnN0eWxlKCJ0ZXh0LWFuY2hvciIsZS5hbmNob3IpLG4uc3R5bGUoImZvbnQtZmFtaWx5IixlLmZvbnRGYW1pbHkpLG4uc3R5bGUoImZvbnQtc2l6ZSIsZS5mb250U2l6ZSksbi5zdHlsZSgiZm9udC13ZWlnaHQiLGUuZm9udFdlaWdodCksbi5hdHRyKCJmaWxsIixlLmZpbGwpLHR5cGVvZiBlLmNsYXNzPCJ1IiYmbi5hdHRyKCJjbGFzcyIsZS5jbGFzcyk7Y29uc3QgaT1uLmFwcGVuZCgidHNwYW4iKTtyZXR1cm4gaS5hdHRyKCJ4IixlLngrZS50ZXh0TWFyZ2luKjIpLGkuYXR0cigiZmlsbCIsZS5maWxsKSxpLnRleHQociksbn0sY3c9R2YoKHQsZSxyKT0+e2lmKCF0fHwocj1PYmplY3QuYXNzaWduKHtmb250U2l6ZToxMixmb250V2VpZ2h0OjQwMCxmb250RmFtaWx5OiJBcmlhbCIsam9pbldpdGg6Ijxici8+In0scikscGUubGluZUJyZWFrUmVnZXgudGVzdCh0KSkpcmV0dXJuIHQ7Y29uc3Qgbj10LnNwbGl0KCIgIiksaT1bXTtsZXQgYT0iIjtyZXR1cm4gbi5mb3JFYWNoKChzLG8pPT57Y29uc3QgbD1CaShgJHtzfSBgLHIpLHU9QmkoYSxyKTtpZihsPmUpe2NvbnN0e2h5cGhlbmF0ZWRTdHJpbmdzOmYscmVtYWluaW5nV29yZDpwfT1sWChzLGUsIi0iLHIpO2kucHVzaChhLC4uLmYpLGE9cH1lbHNlIHUrbD49ZT8oaS5wdXNoKGEpLGE9cyk6YT1bYSxzXS5maWx0ZXIoQm9vbGVhbikuam9pbigiICIpO28rMT09PW4ubGVuZ3RoJiZpLnB1c2goYSl9KSxpLmZpbHRlcihzPT5zIT09IiIpLmpvaW4oci5qb2luV2l0aCl9LCh0LGUscik9PmAke3R9JHtlfSR7ci5mb250U2l6ZX0ke3IuZm9udFdlaWdodH0ke3IuZm9udEZhbWlseX0ke3Iuam9pbldpdGh9YCksbFg9R2YoKHQsZSxyPSItIixuKT0+e249T2JqZWN0LmFzc2lnbih7Zm9udFNpemU6MTIsZm9udFdlaWdodDo0MDAsZm9udEZhbWlseToiQXJpYWwiLG1hcmdpbjowfSxuKTtjb25zdCBpPXQuc3BsaXQoIiIpLGE9W107bGV0IHM9IiI7cmV0dXJuIGkuZm9yRWFjaCgobyxsKT0+e2NvbnN0IHU9YCR7c30ke299YDtpZihCaSh1LG4pPj1lKXtjb25zdCBkPWwrMSxmPWkubGVuZ3RoPT09ZCxwPWAke3V9JHtyfWA7YS5wdXNoKGY/dTpwKSxzPSIifWVsc2Ugcz11fSkse2h5cGhlbmF0ZWRTdHJpbmdzOmEscmVtYWluaW5nV29yZDpzfX0sKHQsZSxyPSItIixuKT0+YCR7dH0ke2V9JHtyfSR7bi5mb250U2l6ZX0ke24uZm9udFdlaWdodH0ke24uZm9udEZhbWlseX1gKSxlZz1mdW5jdGlvbih0LGUpe3JldHVybiBlPU9iamVjdC5hc3NpZ24oe2ZvbnRTaXplOjEyLGZvbnRXZWlnaHQ6NDAwLGZvbnRGYW1pbHk6IkFyaWFsIixtYXJnaW46MTV9LGUpLHJnKHQsZSkuaGVpZ2h0fSxCaT1mdW5jdGlvbih0LGUpe3JldHVybiBlPU9iamVjdC5hc3NpZ24oe2ZvbnRTaXplOjEyLGZvbnRXZWlnaHQ6NDAwLGZvbnRGYW1pbHk6IkFyaWFsIn0sZSkscmcodCxlKS53aWR0aH0scmc9R2YoZnVuY3Rpb24odCxlKXtlPU9iamVjdC5hc3NpZ24oe2ZvbnRTaXplOjEyLGZvbnRXZWlnaHQ6NDAwLGZvbnRGYW1pbHk6IkFyaWFsIn0sZSk7Y29uc3R7Zm9udFNpemU6cixmb250RmFtaWx5Om4sZm9udFdlaWdodDppfT1lO2lmKCF0KXJldHVybnt3aWR0aDowLGhlaWdodDowfTtjb25zdCBhPVsic2Fucy1zZXJpZiIsbl0scz10LnNwbGl0KHBlLmxpbmVCcmVha1JlZ2V4KSxvPVtdLGw9U3QoImJvZHkiKTtpZighbC5yZW1vdmUpcmV0dXJue3dpZHRoOjAsaGVpZ2h0OjAsbGluZUhlaWdodDowfTtjb25zdCB1PWwuYXBwZW5kKCJzdmciKTtmb3IoY29uc3QgZCBvZiBhKXtsZXQgZj0wO2NvbnN0IHA9e3dpZHRoOjAsaGVpZ2h0OjAsbGluZUhlaWdodDowfTtmb3IoY29uc3QgbSBvZiBzKXtjb25zdCBfPXNYKCk7Xy50ZXh0PW07Y29uc3QgeT1vWCh1LF8pLnN0eWxlKCJmb250LXNpemUiLHIpLnN0eWxlKCJmb250LXdlaWdodCIsaSkuc3R5bGUoImZvbnQtZmFtaWx5IixkKSxiPSh5Ll9ncm91cHN8fHkpWzBdWzBdLmdldEJCb3goKTtwLndpZHRoPU1hdGgucm91bmQoTWF0aC5tYXgocC53aWR0aCxiLndpZHRoKSksZj1NYXRoLnJvdW5kKGIuaGVpZ2h0KSxwLmhlaWdodCs9ZixwLmxpbmVIZWlnaHQ9TWF0aC5yb3VuZChNYXRoLm1heChwLmxpbmVIZWlnaHQsZikpfW8ucHVzaChwKX11LnJlbW92ZSgpO2NvbnN0IGg9aXNOYU4ob1sxXS5oZWlnaHQpfHxpc05hTihvWzFdLndpZHRoKXx8aXNOYU4ob1sxXS5saW5lSGVpZ2h0KXx8b1swXS5oZWlnaHQ+b1sxXS5oZWlnaHQmJm9bMF0ud2lkdGg+b1sxXS53aWR0aCYmb1swXS5saW5lSGVpZ2h0Pm9bMV0ubGluZUhlaWdodD8wOjE7cmV0dXJuIG9baF19LCh0LGUpPT5gJHt0fSR7ZS5mb250U2l6ZX0ke2UuZm9udFdlaWdodH0ke2UuZm9udEZhbWlseX1gKSxjWD1jbGFzc3tjb25zdHJ1Y3RvcihlLHIpe3RoaXMuZGV0ZXJtaW5pc3RpYz1lLHRoaXMuc2VlZD1yLHRoaXMuY291bnQ9cj9yLmxlbmd0aDowfW5leHQoKXtyZXR1cm4gdGhpcy5kZXRlcm1pbmlzdGljP3RoaXMuY291bnQrKzpEYXRlLm5vdygpfX07bGV0IGpmO2NvbnN0IHVYPWZ1bmN0aW9uKHQpe3JldHVybiBqZj1qZnx8ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksdD1lc2NhcGUodCkucmVwbGFjZSgvJTI2L2csIiYiKS5yZXBsYWNlKC8lMjMvZywiIyIpLnJlcGxhY2UoLyUzQi9nLCI7IiksamYuaW5uZXJIVE1MPXQsdW5lc2NhcGUoamYudGV4dENvbnRlbnQpfSxWcz10PT57aWYoSC5kZWJ1ZygiZGlyZWN0aXZlU2FuaXRpemVyIGNhbGxlZCB3aXRoIix0KSx0eXBlb2YgdD09Im9iamVjdCImJih0Lmxlbmd0aD90LmZvckVhY2goZT0+VnMoZSkpOk9iamVjdC5rZXlzKHQpLmZvckVhY2goZT0+e0guZGVidWcoIkNoZWNraW5nIGtleSIsZSksZS5pbmRleE9mKCJfXyIpPT09MCYmKEguZGVidWcoInNhbml0aXplIGRlbGV0aW5nIF9fIG9wdGlvbiIsZSksZGVsZXRlIHRbZV0pLGUuaW5kZXhPZigicHJvdG8iKT49MCYmKEguZGVidWcoInNhbml0aXplIGRlbGV0aW5nIHByb3RvIG9wdGlvbiIsZSksZGVsZXRlIHRbZV0pLGUuaW5kZXhPZigiY29uc3RyIik+PTAmJihILmRlYnVnKCJzYW5pdGl6ZSBkZWxldGluZyBjb25zdHIgb3B0aW9uIixlKSxkZWxldGUgdFtlXSksZS5pbmRleE9mKCJ0aGVtZUNTUyIpPj0wJiYoSC5kZWJ1Zygic2FuaXRpemluZyB0aGVtZUNzcyBvcHRpb24iKSx0W2VdPSRmKHRbZV0pKSxlLmluZGV4T2YoImZvbnRGYW1pbHkiKT49MCYmKEguZGVidWcoInNhbml0aXppbmcgZm9udEZhbWlseSBvcHRpb24iKSx0W2VdPSRmKHRbZV0pKSxlLmluZGV4T2YoImFsdEZvbnRGYW1pbHkiKT49MCYmKEguZGVidWcoInNhbml0aXppbmcgYWx0Rm9udEZhbWlseSBvcHRpb24iKSx0W2VdPSRmKHRbZV0pKSx2Ry5pbmRleE9mKGUpPDA/KEguZGVidWcoInNhbml0aXplIGRlbGV0aW5nIG9wdGlvbiIsZSksZGVsZXRlIHRbZV0pOnR5cGVvZiB0W2VdPT0ib2JqZWN0IiYmKEguZGVidWcoInNhbml0aXplIGRlbGV0aW5nIG9iamVjdCIsZSksVnModFtlXSkpfSkpLHQudGhlbWVWYXJpYWJsZXMpe2NvbnN0IGU9T2JqZWN0LmtleXModC50aGVtZVZhcmlhYmxlcyk7Zm9yKGxldCByPTA7cjxlLmxlbmd0aDtyKyspe2NvbnN0IG49ZVtyXSxpPXQudGhlbWVWYXJpYWJsZXNbbl07aSYmaS5tYXRjaCYmIWkubWF0Y2goL15bYS16QS1aMC05IywiOygpJS4gXSskLykmJih0LnRoZW1lVmFyaWFibGVzW25dPSIiKX19SC5kZWJ1ZygiQWZ0ZXIgc2FuaXRpemF0aW9uIix0KX0sJGY9dD0+e2xldCBlPTAscj0wO2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bisrKXtpZihlPHIpcmV0dXJuInsgLyogRVJST1I6IFVuYmFsYW5jZWQgQ1NTICovIH0iO3Rbbl09PT0ieyI/ZSsrOnRbbl09PT0ifSImJnIrK31yZXR1cm4gZSE9PXI/InsgLyogRVJST1I6IFVuYmFsYW5jZWQgQ1NTICovIH0iOnR9O2Z1bmN0aW9uIG5nKHQpe3JldHVybiJzdHIiaW4gdH1mdW5jdGlvbiBoWCh0KXtyZXR1cm4gdCBpbnN0YW5jZW9mIEVycm9yP3QubWVzc2FnZTpTdHJpbmcodCl9Y29uc3QgU2U9e2Fzc2lnbldpdGhEZXB0aDpmcix3cmFwTGFiZWw6Y3csY2FsY3VsYXRlVGV4dEhlaWdodDplZyxjYWxjdWxhdGVUZXh0V2lkdGg6QmksY2FsY3VsYXRlVGV4dERpbWVuc2lvbnM6cmcsZGV0ZWN0SW5pdDpaJCxkZXRlY3REaXJlY3RpdmU6YXcsaXNTdWJzdHJpbmdJbkFycmF5OlEkLGludGVycG9sYXRlVG9DdXJ2ZTpOaSxjYWxjTGFiZWxQb3NpdGlvbjpyWCxjYWxjQ2FyZGluYWxpdHlQb3NpdGlvbjpuWCxjYWxjVGVybWluYWxMYWJlbFBvc2l0aW9uOmlYLGZvcm1hdFVybDpKJCxnZXRTdHlsZXNGcm9tQXJyYXk6S2EsZ2VuZXJhdGVJZDpvdyxyYW5kb206bHcscnVuRnVuYzp0WCxlbnRpdHlEZWNvZGU6dVgsaW5pdElkR2VuZXJhdG9yOmNYLGRpcmVjdGl2ZVNhbml0aXplcjpWcyxzYW5pdGl6ZUNzczokZn07dmFyIHV3PSJjb21tIixodz0icnVsZSIsZnc9ImRlY2wiLGZYPSJAaW1wb3J0IixkWD0iQGtleWZyYW1lcyIscFg9TWF0aC5hYnMsaWc9U3RyaW5nLmZyb21DaGFyQ29kZTtmdW5jdGlvbiBkdyh0KXtyZXR1cm4gdC50cmltKCl9ZnVuY3Rpb24gYWcodCxlLHIpe3JldHVybiB0LnJlcGxhY2UoZSxyKX1mdW5jdGlvbiBnWCh0LGUpe3JldHVybiB0LmluZGV4T2YoZSl9ZnVuY3Rpb24gWGYodCxlKXtyZXR1cm4gdC5jaGFyQ29kZUF0KGUpfDB9ZnVuY3Rpb24gTGModCxlLHIpe3JldHVybiB0LnNsaWNlKGUscil9ZnVuY3Rpb24gWmEodCl7cmV0dXJuIHQubGVuZ3RofWZ1bmN0aW9uIHB3KHQpe3JldHVybiB0Lmxlbmd0aH1mdW5jdGlvbiBLZih0LGUpe3JldHVybiBlLnB1c2godCksdH12YXIgWmY9MSxqbz0xLGd3PTAsem49MCxkcj0wLCRvPSIiO2Z1bmN0aW9uIHNnKHQsZSxyLG4saSxhLHMpe3JldHVybnt2YWx1ZTp0LHJvb3Q6ZSxwYXJlbnQ6cix0eXBlOm4scHJvcHM6aSxjaGlsZHJlbjphLGxpbmU6WmYsY29sdW1uOmpvLGxlbmd0aDpzLHJldHVybjoiIn19ZnVuY3Rpb24geVgoKXtyZXR1cm4gZHJ9ZnVuY3Rpb24gbVgoKXtyZXR1cm4gZHI9em4+MD9YZigkbywtLXpuKTowLGpvLS0sZHI9PT0xMCYmKGpvPTEsWmYtLSksZHJ9ZnVuY3Rpb24gb2koKXtyZXR1cm4gZHI9em48Z3c/WGYoJG8sem4rKyk6MCxqbysrLGRyPT09MTAmJihqbz0xLFpmKyspLGRyfWZ1bmN0aW9uIHpzKCl7cmV0dXJuIFhmKCRvLHpuKX1mdW5jdGlvbiBRZigpe3JldHVybiB6bn1mdW5jdGlvbiBKZih0LGUpe3JldHVybiBMYygkbyx0LGUpfWZ1bmN0aW9uIG9nKHQpe3N3aXRjaCh0KXtjYXNlIDA6Y2FzZSA5OmNhc2UgMTA6Y2FzZSAxMzpjYXNlIDMyOnJldHVybiA1O2Nhc2UgMzM6Y2FzZSA0MzpjYXNlIDQ0OmNhc2UgNDc6Y2FzZSA2MjpjYXNlIDY0OmNhc2UgMTI2OmNhc2UgNTk6Y2FzZSAxMjM6Y2FzZSAxMjU6cmV0dXJuIDQ7Y2FzZSA1ODpyZXR1cm4gMztjYXNlIDM0OmNhc2UgMzk6Y2FzZSA0MDpjYXNlIDkxOnJldHVybiAyO2Nhc2UgNDE6Y2FzZSA5MzpyZXR1cm4gMX1yZXR1cm4gMH1mdW5jdGlvbiBiWCh0KXtyZXR1cm4gWmY9am89MSxndz1aYSgkbz10KSx6bj0wLFtdfWZ1bmN0aW9uIF9YKHQpe3JldHVybiAkbz0iIix0fWZ1bmN0aW9uIGxnKHQpe3JldHVybiBkdyhKZih6bi0xLGNnKHQ9PT05MT90KzI6dD09PTQwP3QrMTp0KSkpfWZ1bmN0aW9uIHZYKHQpe2Zvcig7KGRyPXpzKCkpJiZkcjwzMzspb2koKTtyZXR1cm4gb2codCk+Mnx8b2coZHIpPjM/IiI6IiAifWZ1bmN0aW9uIHhYKHQsZSl7Zm9yKDstLWUmJm9pKCkmJiEoZHI8NDh8fGRyPjEwMnx8ZHI+NTcmJmRyPDY1fHxkcj43MCYmZHI8OTcpOyk7cmV0dXJuIEpmKHQsUWYoKSsoZTw2JiZ6cygpPT0zMiYmb2koKT09MzIpKX1mdW5jdGlvbiBjZyh0KXtmb3IoO29pKCk7KXN3aXRjaChkcil7Y2FzZSB0OnJldHVybiB6bjtjYXNlIDM0OmNhc2UgMzk6dCE9PTM0JiZ0IT09MzkmJmNnKGRyKTticmVhaztjYXNlIDQwOnQ9PT00MSYmY2codCk7YnJlYWs7Y2FzZSA5MjpvaSgpO2JyZWFrfXJldHVybiB6bn1mdW5jdGlvbiBrWCh0LGUpe2Zvcig7b2koKSYmdCtkciE9PTQ3KzEwOylpZih0K2RyPT09NDIrNDImJnpzKCk9PT00NylicmVhaztyZXR1cm4iLyoiK0pmKGUsem4tMSkrIioiK2lnKHQ9PT00Nz90Om9pKCkpfWZ1bmN0aW9uIHdYKHQpe2Zvcig7IW9nKHpzKCkpOylvaSgpO3JldHVybiBKZih0LHpuKX1mdW5jdGlvbiB5dyh0KXtyZXR1cm4gX1godDEoIiIsbnVsbCxudWxsLG51bGwsWyIiXSx0PWJYKHQpLDAsWzBdLHQpKX1mdW5jdGlvbiB0MSh0LGUscixuLGksYSxzLG8sbCl7Zm9yKHZhciB1PTAsaD0wLGQ9cyxmPTAscD0wLG09MCxfPTEseT0xLGI9MSx4PTAsaz0iIixUPWksQz1hLE09bixTPWs7eTspc3dpdGNoKG09eCx4PW9pKCkpe2Nhc2UgNDA6aWYobSE9MTA4JiZYZihTLGQtMSk9PTU4KXtnWChTKz1hZyhsZyh4KSwiJiIsIiZcZiIpLCImXGYiKSE9LTEmJihiPS0xKTticmVha31jYXNlIDM0OmNhc2UgMzk6Y2FzZSA5MTpTKz1sZyh4KTticmVhaztjYXNlIDk6Y2FzZSAxMDpjYXNlIDEzOmNhc2UgMzI6Uys9dlgobSk7YnJlYWs7Y2FzZSA5MjpTKz14WChRZigpLTEsNyk7Y29udGludWU7Y2FzZSA0Nzpzd2l0Y2goenMoKSl7Y2FzZSA0MjpjYXNlIDQ3OktmKFRYKGtYKG9pKCksUWYoKSksZSxyKSxsKTticmVhaztkZWZhdWx0OlMrPSIvIn1icmVhaztjYXNlIDEyMypfOm9bdSsrXT1aYShTKSpiO2Nhc2UgMTI1Kl86Y2FzZSA1OTpjYXNlIDA6c3dpdGNoKHgpe2Nhc2UgMDpjYXNlIDEyNTp5PTA7Y2FzZSA1OStoOnA+MCYmWmEoUyktZCYmS2YocD4zMj9idyhTKyI7IixuLHIsZC0xKTpidyhhZyhTLCIgIiwiIikrIjsiLG4scixkLTIpLGwpO2JyZWFrO2Nhc2UgNTk6Uys9IjsiO2RlZmF1bHQ6aWYoS2YoTT1tdyhTLGUscix1LGgsaSxvLGssVD1bXSxDPVtdLGQpLGEpLHg9PT0xMjMpaWYoaD09PTApdDEoUyxlLE0sTSxULGEsZCxvLEMpO2Vsc2Ugc3dpdGNoKGYpe2Nhc2UgMTAwOmNhc2UgMTA5OmNhc2UgMTE1OnQxKHQsTSxNLG4mJktmKG13KHQsTSxNLDAsMCxpLG8sayxpLFQ9W10sZCksQyksaSxDLGQsbyxuP1Q6Qyk7YnJlYWs7ZGVmYXVsdDp0MShTLE0sTSxNLFsiIl0sQywwLG8sQyl9fXU9aD1wPTAsXz1iPTEsaz1TPSIiLGQ9czticmVhaztjYXNlIDU4OmQ9MStaYShTKSxwPW07ZGVmYXVsdDppZihfPDEpe2lmKHg9PTEyMyktLV87ZWxzZSBpZih4PT0xMjUmJl8rKz09MCYmbVgoKT09MTI1KWNvbnRpbnVlfXN3aXRjaChTKz1pZyh4KSx4Kl8pe2Nhc2UgMzg6Yj1oPjA/MTooUys9IlxmIiwtMSk7YnJlYWs7Y2FzZSA0NDpvW3UrK109KFphKFMpLTEpKmIsYj0xO2JyZWFrO2Nhc2UgNjQ6enMoKT09PTQ1JiYoUys9bGcob2koKSkpLGY9enMoKSxoPWQ9WmEoaz1TKz13WChRZigpKSkseCsrO2JyZWFrO2Nhc2UgNDU6bT09PTQ1JiZaYShTKT09MiYmKF89MCl9fXJldHVybiBhfWZ1bmN0aW9uIG13KHQsZSxyLG4saSxhLHMsbyxsLHUsaCl7Zm9yKHZhciBkPWktMSxmPWk9PT0wP2E6WyIiXSxwPXB3KGYpLG09MCxfPTAseT0wO208bjsrK20pZm9yKHZhciBiPTAseD1MYyh0LGQrMSxkPXBYKF89c1ttXSkpLGs9dDtiPHA7KytiKShrPWR3KF8+MD9mW2JdKyIgIit4OmFnKHgsLyZcZi9nLGZbYl0pKSkmJihsW3krK109ayk7cmV0dXJuIHNnKHQsZSxyLGk9PT0wP2h3Om8sbCx1LGgpfWZ1bmN0aW9uIFRYKHQsZSxyKXtyZXR1cm4gc2codCxlLHIsdXcsaWcoeVgoKSksTGModCwyLC0yKSwwKX1mdW5jdGlvbiBidyh0LGUscixuKXtyZXR1cm4gc2codCxlLHIsZncsTGModCwwLG4pLExjKHQsbisxLC0xKSxuKX1mdW5jdGlvbiBlMSh0LGUpe2Zvcih2YXIgcj0iIixuPXB3KHQpLGk9MDtpPG47aSsrKXIrPWUodFtpXSxpLHQsZSl8fCIiO3JldHVybiByfWZ1bmN0aW9uIF93KHQsZSxyLG4pe3N3aXRjaCh0LnR5cGUpe2Nhc2UgZlg6Y2FzZSBmdzpyZXR1cm4gdC5yZXR1cm49dC5yZXR1cm58fHQudmFsdWU7Y2FzZSB1dzpyZXR1cm4iIjtjYXNlIGRYOnJldHVybiB0LnJldHVybj10LnZhbHVlKyJ7IitlMSh0LmNoaWxkcmVuLG4pKyJ9IjtjYXNlIGh3OnQudmFsdWU9dC5wcm9wcy5qb2luKCIsIil9cmV0dXJuIFphKHI9ZTEodC5jaGlsZHJlbixuKSk/dC5yZXR1cm49dC52YWx1ZSsieyIrcisifSI6IiJ9Y29uc3QgcjE9e25hbWU6Im1lcm1haWQiLHZlcnNpb246IjkuMi4yIixkZXNjcmlwdGlvbjoiTWFya2Rvd25pc2ggc3ludGF4IGZvciBnZW5lcmF0aW5nIGZsb3djaGFydHMsIHNlcXVlbmNlIGRpYWdyYW1zLCBjbGFzcyBkaWFncmFtcywgZ2FudHQgY2hhcnRzIGFuZCBnaXQgZ3JhcGhzLiIsbWFpbjoiLi9kaXN0L21lcm1haWQubWluLmpzIixtb2R1bGU6Ii4vZGlzdC9tZXJtYWlkLmNvcmUubWpzIix0eXBlczoiLi9kaXN0L21lcm1haWQuZC50cyIsdHlwZToiY29tbW9uanMiLGV4cG9ydHM6eyIuIjp7cmVxdWlyZToiLi9kaXN0L21lcm1haWQubWluLmpzIixpbXBvcnQ6Ii4vZGlzdC9tZXJtYWlkLmNvcmUubWpzIix0eXBlczoiLi9kaXN0L21lcm1haWQuZC50cyJ9LCIuLyoiOiIuLyoifSxrZXl3b3JkczpbImRpYWdyYW0iLCJtYXJrZG93biIsImZsb3djaGFydCIsInNlcXVlbmNlIGRpYWdyYW0iLCJnYW50dCIsImNsYXNzIGRpYWdyYW0iLCJnaXQgZ3JhcGgiXSxzY3JpcHRzOntjbGVhbjoicmltcmFmIGRpc3QiLCJidWlsZDpjb2RlIjoibm9kZSAuZXNidWlsZC9lc2J1aWxkLmNqcyIsImJ1aWxkOnR5cGVzIjoidHNjIC1wIC4vdHNjb25maWcuanNvbiAtLWVtaXREZWNsYXJhdGlvbk9ubHkiLCJidWlsZDp3YXRjaCI6Inlhcm4gYnVpbGQ6Y29kZSAtLXdhdGNoIiwiYnVpbGQ6ZXNidWlsZCI6J2NvbmN1cnJlbnRseSAieWFybiBidWlsZDpjb2RlIiAieWFybiBidWlsZDp0eXBlcyInLGJ1aWxkOiJ5YXJuIGNsZWFuOyB5YXJuIGJ1aWxkOmVzYnVpbGQiLGRldjoibm9kZSAuZXNidWlsZC9zZXJ2ZS5janMiLCJkb2NzOmJ1aWxkIjoidHMtbm9kZS1lc20gc3JjL2RvY3MubXRzIiwiZG9jczp2ZXJpZnkiOiJ5YXJuIGRvY3M6YnVpbGQgLS12ZXJpZnkiLCJ0b2RvLXBvc3RidWlsZCI6ImRvY3VtZW50YXRpb24gYnVpbGQgc3JjL21lcm1haWRBUEkudHMgc3JjL2NvbmZpZy50cyBzcmMvZGVmYXVsdENvbmZpZy50cyAtLXNoYWxsb3cgLWYgbWQgLS1tYXJrZG93bi10b2MgZmFsc2UgPiBzcmMvZG9jcy9TZXR1cC5tZCAmJiBwcmV0dGllciAtLXdyaXRlIHNyYy9kb2NzL1NldHVwLm1kIixyZWxlYXNlOiJ5YXJuIGJ1aWxkIixsaW50OiJlc2xpbnQgLS1jYWNoZSAtLWlnbm9yZS1wYXRoIC5naXRpZ25vcmUgLiAmJiB5YXJuIGxpbnQ6amlzb24gJiYgcHJldHRpZXIgLS1jaGVjayAuIiwibGludDpmaXgiOiJlc2xpbnQgLS1maXggLS1pZ25vcmUtcGF0aCAuZ2l0aWdub3JlIC4gJiYgcHJldHRpZXIgLS13cml0ZSAuIiwibGludDpqaXNvbiI6InRzLW5vZGUtZXNtIHNyYy9qaXNvbi9saW50Lm10cyIsY3lwcmVzczoiY3lwcmVzcyBydW4iLCJjeXByZXNzOm9wZW4iOiJjeXByZXNzIG9wZW4iLGUyZToic3RhcnQtc2VydmVyLWFuZC10ZXN0IGRldiBodHRwOi8vbG9jYWxob3N0OjkwMDAvIGN5cHJlc3MiLCJ0b2RvLXByZXBhcmUiOidjb25jdXJyZW50bHkgImh1c2t5IGluc3RhbGwiICJ5YXJuIGJ1aWxkIicsInByZS1jb21taXQiOiJsaW50LXN0YWdlZCJ9LHJlcG9zaXRvcnk6e3R5cGU6ImdpdCIsdXJsOiJodHRwczovL2dpdGh1Yi5jb20vbWVybWFpZC1qcy9tZXJtYWlkIn0sYXV0aG9yOiJLbnV0IFN2ZWlkcXZpc3QiLGxpY2Vuc2U6Ik1JVCIsc3RhbmRhcmQ6e2lnbm9yZTpbIioqL3BhcnNlci8qLmpzIiwiZGlzdC8qKi8qLmpzIiwiY3lwcmVzcy8qKi8qLmpzIl0sZ2xvYmFsczpbInBhZ2UiXX0sZGVwZW5kZW5jaWVzOnsiQGJyYWludHJlZS9zYW5pdGl6ZS11cmwiOiJeNi4wLjAiLGQzOiJeNy4wLjAiLGRhZ3JlOiJeMC44LjUiLCJkYWdyZS1kMyI6Il4wLjYuNCIsZG9tcHVyaWZ5OiIyLjQuMCIsImZhc3QtY2xvbmUiOiJeMS41LjEzIixncmFwaGxpYjoiXjIuMS44IixraHJvbWE6Il4yLjAuMCIsbG9kYXNoOiJeNC4xNy4yMSIsIm1vbWVudC1taW5pIjoiXjIuMjQuMCIsIm5vbi1sYXllcmVkLXRpZHktdHJlZS1sYXlvdXQiOiJeMi4wLjIiLHN0eWxpczoiXjQuMS4yIix1dWlkOiJeOS4wLjAifSxkZXZEZXBlbmRlbmNpZXM6eyJAYXBwbGl0b29scy9leWVzLWN5cHJlc3MiOiJeMy4yNS43IiwiQGNvbW1pdGxpbnQvY2xpIjoiXjE3LjEuMiIsIkBjb21taXRsaW50L2NvbmZpZy1jb252ZW50aW9uYWwiOiJeMTcuMC4wIiwiQHR5cGVzL2QzIjoiXjcuNC4wIiwiQHR5cGVzL2RvbXB1cmlmeSI6Il4yLjMuNCIsIkB0eXBlcy9lc2xpbnQiOiJeOC40LjYiLCJAdHlwZXMvZXhwcmVzcyI6Il40LjE3LjEzIiwiQHR5cGVzL2pzZG9tIjoiXjIwLjAuMCIsIkB0eXBlcy9sb2Rhc2giOiJeNC4xNC4xODUiLCJAdHlwZXMvcHJldHRpZXIiOiJeMi43LjAiLCJAdHlwZXMvc3R5bGlzIjoiXjQuMC4yIiwiQHR5cGVzL3V1aWQiOiJeOC4zLjQiLCJAdHlwZXNjcmlwdC1lc2xpbnQvZXNsaW50LXBsdWdpbiI6Il41LjM3LjAiLCJAdHlwZXNjcmlwdC1lc2xpbnQvcGFyc2VyIjoiXjUuMzcuMCIsY29uY3VycmVudGx5OiJeNy40LjAiLGNvdmVyYWxsczoiXjMuMS4xIixjeXByZXNzOiJeMTAuMC4wIiwiY3lwcmVzcy1pbWFnZS1zbmFwc2hvdCI6Il40LjAuMSIsZG9jdW1lbnRhdGlvbjoiMTMuMi4wIixlc2J1aWxkOiJeMC4xNS44Iixlc2xpbnQ6Il44LjIzLjEiLCJlc2xpbnQtY29uZmlnLXByZXR0aWVyIjoiXjguNS4wIiwiZXNsaW50LXBsdWdpbi1jeXByZXNzIjoiXjIuMTIuMSIsImVzbGludC1wbHVnaW4taHRtbCI6Il43LjEuMCIsImVzbGludC1wbHVnaW4tamVzdCI6Il4yNy4wLjQiLCJlc2xpbnQtcGx1Z2luLWpzZG9jIjoiXjM5LjMuNiIsImVzbGludC1wbHVnaW4tanNvbiI6Il4zLjEuMCIsImVzbGludC1wbHVnaW4tbWFya2Rvd24iOiJeMy4wLjAiLGV4cHJlc3M6Il40LjE4LjEiLGdsb2JieToiXjEzLjEuMiIsaHVza3k6Il44LjAuMCIsImlkZW50aXR5LW9iai1wcm94eSI6Il4zLjAuMCIsamlzb246Il4wLjQuMTgiLCJqcy1iYXNlNjQiOiIzLjcuMiIsanNkb206Il4yMC4wLjAiLCJsaW50LXN0YWdlZCI6Il4xMy4wLjAiLG1vbWVudDoiXjIuMjMuMCIsInBhdGgtYnJvd3NlcmlmeSI6Il4xLjAuMSIscHJldHRpZXI6Il4yLjcuMSIsInByZXR0aWVyLXBsdWdpbi1qc2RvYyI6Il4wLjQuMiIscmVtYXJrOiJeMTQuMC4yIixyaW1yYWY6Il4zLjAuMiIsInN0YXJ0LXNlcnZlci1hbmQtdGVzdCI6Il4xLjEyLjYiLCJ0cy1ub2RlIjoiXjEwLjkuMSIsdHlwZXNjcmlwdDoiXjQuOC4zIiwidW5pc3QtdXRpbC1mbGF0bWFwIjoiXjEuMC4wIn0scmVzb2x1dGlvbnM6e2QzOiJeNy4wLjAifSxmaWxlczpbImRpc3QiLCJSRUFETUUubWQiXSxzaWRlRWZmZWN0czpbIioqLyouY3NzIiwiKiovKi5zY3NzIl19LFhvPU9iamVjdC5mcmVlemUoWGEpO2xldCBtbj1mcih7fSxYbyksdncsS289W10sUmM9ZnIoe30sWG8pO2NvbnN0IG4xPSh0LGUpPT57bGV0IHI9ZnIoe30sdCksbj17fTtmb3IobGV0IGk9MDtpPGUubGVuZ3RoO2krKyl7Y29uc3QgYT1lW2ldO3d3KGEpLG49ZnIobixhKX1pZihyPWZyKHIsbiksbi50aGVtZSYmbi50aGVtZSBpbiBhYSl7Y29uc3QgaT1mcih7fSx2dyksYT1mcihpLnRoZW1lVmFyaWFibGVzfHx7fSxuLnRoZW1lVmFyaWFibGVzKTtyLnRoZW1lJiZyLnRoZW1lIGluIGFhJiYoci50aGVtZVZhcmlhYmxlcz1hYVtyLnRoZW1lXS5nZXRUaGVtZVZhcmlhYmxlcyhhKSl9cmV0dXJuIFJjPXIsQ3coUmMpLFJjfSxFWD10PT4obW49ZnIoe30sWG8pLG1uPWZyKG1uLHQpLHQudGhlbWUmJmFhW3QudGhlbWVdJiYobW4udGhlbWVWYXJpYWJsZXM9YWFbdC50aGVtZV0uZ2V0VGhlbWVWYXJpYWJsZXModC50aGVtZVZhcmlhYmxlcykpLG4xKG1uLEtvKSxtbiksQ1g9dD0+e3Z3PWZyKHt9LHQpfSxTWD10PT4obW49ZnIobW4sdCksbjEobW4sS28pLG1uKSx4dz0oKT0+ZnIoe30sbW4pLGt3PXQ9PihDdyh0KSxmcihSYyx0KSxudCgpKSxudD0oKT0+ZnIoe30sUmMpLHd3PXQ9Pnt2YXIgZTtbInNlY3VyZSIsLi4uKGU9bW4uc2VjdXJlKSE9bnVsbD9lOltdXS5mb3JFYWNoKHI9Pnt0eXBlb2YgdFtyXTwidSImJihILmRlYnVnKGBEZW5pZWQgYXR0ZW1wdCB0byBtb2RpZnkgYSBzZWN1cmUga2V5ICR7cn1gLHRbcl0pLGRlbGV0ZSB0W3JdKX0pLE9iamVjdC5rZXlzKHQpLmZvckVhY2gocj0+e3IuaW5kZXhPZigiX18iKT09PTAmJmRlbGV0ZSB0W3JdfSksT2JqZWN0LmtleXModCkuZm9yRWFjaChyPT57dHlwZW9mIHRbcl09PSJzdHJpbmciJiYodFtyXS5pbmRleE9mKCI8Iik+LTF8fHRbcl0uaW5kZXhPZigiPiIpPi0xfHx0W3JdLmluZGV4T2YoInVybChkYXRhOiIpPi0xKSYmZGVsZXRlIHRbcl0sdHlwZW9mIHRbcl09PSJvYmplY3QiJiZ3dyh0W3JdKX0pfSx1Zz10PT57dC5mb250RmFtaWx5JiYodC50aGVtZVZhcmlhYmxlcz90LnRoZW1lVmFyaWFibGVzLmZvbnRGYW1pbHl8fCh0LnRoZW1lVmFyaWFibGVzPXtmb250RmFtaWx5OnQuZm9udEZhbWlseX0pOnQudGhlbWVWYXJpYWJsZXM9e2ZvbnRGYW1pbHk6dC5mb250RmFtaWx5fSksS28ucHVzaCh0KSxuMShtbixLbyl9LEljPSh0PW1uKT0+e0tvPVtdLG4xKHQsS28pfTt2YXIgVHc9KHQ9Pih0LkxBWllfTE9BRF9ERVBSRUNBVEVEPSJUaGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGxhenlMb2FkZWREaWFncmFtcyBhbmQgbG9hZEV4dGVybmFsRGlhZ3JhbXNBdFN0YXJ0dXAgYXJlIGRlcHJlY2F0ZWQuIFBsZWFzZSB1c2UgcmVnaXN0ZXJFeHRlcm5hbERpYWdyYW1zIGluc3RlYWQuIix0KSkoVHd8fHt9KTtjb25zdCBFdz17fSxBWD10PT57RXdbdF18fChILndhcm4oVHdbdF0pLEV3W3RdPSEwKX0sQ3c9dD0+eyF0fHwodC5sYXp5TG9hZGVkRGlhZ3JhbXN8fHQubG9hZEV4dGVybmFsRGlhZ3JhbXNBdFN0YXJ0dXApJiZBWCgiTEFaWV9MT0FEX0RFUFJFQ0FURUQiKX0sTVg9ZnVuY3Rpb24odCxlKXtmb3IobGV0IHIgb2YgZSl0LmF0dHIoclswXSxyWzFdKX0sTFg9ZnVuY3Rpb24odCxlLHIpe2xldCBuPW5ldyBNYXA7cmV0dXJuIHI/KG4uc2V0KCJ3aWR0aCIsIjEwMCUiKSxuLnNldCgic3R5bGUiLGBtYXgtd2lkdGg6ICR7ZX1weDtgKSk6bi5zZXQoIndpZHRoIixlKSxufSxsaT1mdW5jdGlvbih0LGUscixuKXtjb25zdCBpPUxYKGUscixuKTtNWCh0LGkpfSxpMT1mdW5jdGlvbih0LGUscixuKXtjb25zdCBpPWUubm9kZSgpLmdldEJCb3goKSxhPWkud2lkdGgscz1pLmhlaWdodDtILmluZm8oYFNWRyBib3VuZHM6ICR7YX14JHtzfWAsaSk7bGV0IG89MCxsPTA7SC5pbmZvKGBHcmFwaCBib3VuZHM6ICR7b314JHtsfWAsdCksbz1hK3IqMixsPXMrcioyLEguaW5mbyhgQ2FsY3VsYXRlZCBib3VuZHM6ICR7b314JHtsfWApLGxpKGUsbCxvLG4pO2NvbnN0IHU9YCR7aS54LXJ9ICR7aS55LXJ9ICR7aS53aWR0aCsyKnJ9ICR7aS5oZWlnaHQrMipyfWA7ZS5hdHRyKCJ2aWV3Qm94Iix1KX0sTmM9dD0+YGcuY2xhc3NHcm91cCB0ZXh0IHsKICBmaWxsOiAke3Qubm9kZUJvcmRlcn07CiAgZmlsbDogJHt0LmNsYXNzVGV4dH07CiAgc3Ryb2tlOiBub25lOwogIGZvbnQtZmFtaWx5OiAke3QuZm9udEZhbWlseX07CiAgZm9udC1zaXplOiAxMHB4OwoKICAudGl0bGUgewogICAgZm9udC13ZWlnaHQ6IGJvbGRlcjsKICB9Cgp9Cgoubm9kZUxhYmVsLCAuZWRnZUxhYmVsIHsKICBjb2xvcjogJHt0LmNsYXNzVGV4dH07Cn0KLmVkZ2VMYWJlbCAubGFiZWwgcmVjdCB7CiAgZmlsbDogJHt0Lm1haW5Ca2d9Owp9Ci5sYWJlbCB0ZXh0IHsKICBmaWxsOiAke3QuY2xhc3NUZXh0fTsKfQouZWRnZUxhYmVsIC5sYWJlbCBzcGFuIHsKICBiYWNrZ3JvdW5kOiAke3QubWFpbkJrZ307Cn0KCi5jbGFzc1RpdGxlIHsKICBmb250LXdlaWdodDogYm9sZGVyOwp9Ci5ub2RlIHJlY3QsCiAgLm5vZGUgY2lyY2xlLAogIC5ub2RlIGVsbGlwc2UsCiAgLm5vZGUgcG9seWdvbiwKICAubm9kZSBwYXRoIHsKICAgIGZpbGw6ICR7dC5tYWluQmtnfTsKICAgIHN0cm9rZTogJHt0Lm5vZGVCb3JkZXJ9OwogICAgc3Ryb2tlLXdpZHRoOiAxcHg7CiAgfQoKCi5kaXZpZGVyIHsKICBzdHJva2U6ICR7dC5ub2RlQm9yZGVyfTsKICBzdHJva2U6IDE7Cn0KCmcuY2xpY2thYmxlIHsKICBjdXJzb3I6IHBvaW50ZXI7Cn0KCmcuY2xhc3NHcm91cCByZWN0IHsKICBmaWxsOiAke3QubWFpbkJrZ307CiAgc3Ryb2tlOiAke3Qubm9kZUJvcmRlcn07Cn0KCmcuY2xhc3NHcm91cCBsaW5lIHsKICBzdHJva2U6ICR7dC5ub2RlQm9yZGVyfTsKICBzdHJva2Utd2lkdGg6IDE7Cn0KCi5jbGFzc0xhYmVsIC5ib3ggewogIHN0cm9rZTogbm9uZTsKICBzdHJva2Utd2lkdGg6IDA7CiAgZmlsbDogJHt0Lm1haW5Ca2d9OwogIG9wYWNpdHk6IDAuNTsKfQoKLmNsYXNzTGFiZWwgLmxhYmVsIHsKICBmaWxsOiAke3Qubm9kZUJvcmRlcn07CiAgZm9udC1zaXplOiAxMHB4Owp9CgoucmVsYXRpb24gewogIHN0cm9rZTogJHt0LmxpbmVDb2xvcn07CiAgc3Ryb2tlLXdpZHRoOiAxOwogIGZpbGw6IG5vbmU7Cn0KCi5kYXNoZWQtbGluZXsKICBzdHJva2UtZGFzaGFycmF5OiAzOwp9CgojY29tcG9zaXRpb25TdGFydCwgLmNvbXBvc2l0aW9uIHsKICBmaWxsOiAke3QubGluZUNvbG9yfSAhaW1wb3J0YW50OwogIHN0cm9rZTogJHt0LmxpbmVDb2xvcn0gIWltcG9ydGFudDsKICBzdHJva2Utd2lkdGg6IDE7Cn0KCiNjb21wb3NpdGlvbkVuZCwgLmNvbXBvc2l0aW9uIHsKICBmaWxsOiAke3QubGluZUNvbG9yfSAhaW1wb3J0YW50OwogIHN0cm9rZTogJHt0LmxpbmVDb2xvcn0gIWltcG9ydGFudDsKICBzdHJva2Utd2lkdGg6IDE7Cn0KCiNkZXBlbmRlbmN5U3RhcnQsIC5kZXBlbmRlbmN5IHsKICBmaWxsOiAke3QubGluZUNvbG9yfSAhaW1wb3J0YW50OwogIHN0cm9rZTogJHt0LmxpbmVDb2xvcn0gIWltcG9ydGFudDsKICBzdHJva2Utd2lkdGg6IDE7Cn0KCiNkZXBlbmRlbmN5U3RhcnQsIC5kZXBlbmRlbmN5IHsKICBmaWxsOiAke3QubGluZUNvbG9yfSAhaW1wb3J0YW50OwogIHN0cm9rZTogJHt0LmxpbmVDb2xvcn0gIWltcG9ydGFudDsKICBzdHJva2Utd2lkdGg6IDE7Cn0KCiNleHRlbnNpb25TdGFydCwgLmV4dGVuc2lvbiB7CiAgZmlsbDogJHt0LmxpbmVDb2xvcn0gIWltcG9ydGFudDsKICBzdHJva2U6ICR7dC5saW5lQ29sb3J9ICFpbXBvcnRhbnQ7CiAgc3Ryb2tlLXdpZHRoOiAxOwp9CgojZXh0ZW5zaW9uRW5kLCAuZXh0ZW5zaW9uIHsKICBmaWxsOiAke3QubGluZUNvbG9yfSAhaW1wb3J0YW50OwogIHN0cm9rZTogJHt0LmxpbmVDb2xvcn0gIWltcG9ydGFudDsKICBzdHJva2Utd2lkdGg6IDE7Cn0KCiNhZ2dyZWdhdGlvblN0YXJ0LCAuYWdncmVnYXRpb24gewogIGZpbGw6ICR7dC5tYWluQmtnfSAhaW1wb3J0YW50OwogIHN0cm9rZTogJHt0LmxpbmVDb2xvcn0gIWltcG9ydGFudDsKICBzdHJva2Utd2lkdGg6IDE7Cn0KCiNhZ2dyZWdhdGlvbkVuZCwgLmFnZ3JlZ2F0aW9uIHsKICBmaWxsOiAke3QubWFpbkJrZ30gIWltcG9ydGFudDsKICBzdHJva2U6ICR7dC5saW5lQ29sb3J9ICFpbXBvcnRhbnQ7CiAgc3Ryb2tlLXdpZHRoOiAxOwp9CgojbG9sbGlwb3BTdGFydCwgLmxvbGxpcG9wIHsKICBmaWxsOiAke3QubWFpbkJrZ30gIWltcG9ydGFudDsKICBzdHJva2U6ICR7dC5saW5lQ29sb3J9ICFpbXBvcnRhbnQ7CiAgc3Ryb2tlLXdpZHRoOiAxOwp9CgojbG9sbGlwb3BFbmQsIC5sb2xsaXBvcCB7CiAgZmlsbDogJHt0Lm1haW5Ca2d9ICFpbXBvcnRhbnQ7CiAgc3Ryb2tlOiAke3QubGluZUNvbG9yfSAhaW1wb3J0YW50OwogIHN0cm9rZS13aWR0aDogMTsKfQoKLmVkZ2VUZXJtaW5hbHMgewogIGZvbnQtc2l6ZTogMTFweDsKfQoKYCxTdz10PT5gCiAgLmVudGl0eUJveCB7CiAgICBmaWxsOiAke3QubWFpbkJrZ307CiAgICBzdHJva2U6ICR7dC5ub2RlQm9yZGVyfTsKICB9CgogIC5hdHRyaWJ1dGVCb3hPZGQgewogICAgZmlsbDogJHt0LmF0dHJpYnV0ZUJhY2tncm91bmRDb2xvck9kZH07CiAgICBzdHJva2U6ICR7dC5ub2RlQm9yZGVyfTsKICB9CgogIC5hdHRyaWJ1dGVCb3hFdmVuIHsKICAgIGZpbGw6ICAke3QuYXR0cmlidXRlQmFja2dyb3VuZENvbG9yRXZlbn07CiAgICBzdHJva2U6ICR7dC5ub2RlQm9yZGVyfTsKICB9CgogIC5yZWxhdGlvbnNoaXBMYWJlbEJveCB7CiAgICBmaWxsOiAke3QudGVydGlhcnlDb2xvcn07CiAgICBvcGFjaXR5OiAwLjc7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke3QudGVydGlhcnlDb2xvcn07CiAgICAgIHJlY3QgewogICAgICAgIG9wYWNpdHk6IDAuNTsKICAgICAgfQogIH0KCiAgICAucmVsYXRpb25zaGlwTGluZSB7CiAgICAgIHN0cm9rZTogJHt0LmxpbmVDb2xvcn07CiAgICB9CmAsQXc9KCk9PiIiLGExPXQ9PmAubGFiZWwgewogICAgZm9udC1mYW1pbHk6ICR7dC5mb250RmFtaWx5fTsKICAgIGNvbG9yOiAke3Qubm9kZVRleHRDb2xvcnx8dC50ZXh0Q29sb3J9OwogIH0KICAuY2x1c3Rlci1sYWJlbCB0ZXh0IHsKICAgIGZpbGw6ICR7dC50aXRsZUNvbG9yfTsKICB9CiAgLmNsdXN0ZXItbGFiZWwgc3BhbiB7CiAgICBjb2xvcjogJHt0LnRpdGxlQ29sb3J9OwogIH0KCiAgLmxhYmVsIHRleHQsc3BhbiB7CiAgICBmaWxsOiAke3Qubm9kZVRleHRDb2xvcnx8dC50ZXh0Q29sb3J9OwogICAgY29sb3I6ICR7dC5ub2RlVGV4dENvbG9yfHx0LnRleHRDb2xvcn07CiAgfQoKICAubm9kZSByZWN0LAogIC5ub2RlIGNpcmNsZSwKICAubm9kZSBlbGxpcHNlLAogIC5ub2RlIHBvbHlnb24sCiAgLm5vZGUgcGF0aCB7CiAgICBmaWxsOiAke3QubWFpbkJrZ307CiAgICBzdHJva2U6ICR7dC5ub2RlQm9yZGVyfTsKICAgIHN0cm9rZS13aWR0aDogMXB4OwogIH0KCiAgLm5vZGUgLmxhYmVsIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICB9CiAgLm5vZGUuY2xpY2thYmxlIHsKICAgIGN1cnNvcjogcG9pbnRlcjsKICB9CgogIC5hcnJvd2hlYWRQYXRoIHsKICAgIGZpbGw6ICR7dC5hcnJvd2hlYWRDb2xvcn07CiAgfQoKICAuZWRnZVBhdGggLnBhdGggewogICAgc3Ryb2tlOiAke3QubGluZUNvbG9yfTsKICAgIHN0cm9rZS13aWR0aDogMi4wcHg7CiAgfQoKICAuZmxvd2NoYXJ0LWxpbmsgewogICAgc3Ryb2tlOiAke3QubGluZUNvbG9yfTsKICAgIGZpbGw6IG5vbmU7CiAgfQoKICAuZWRnZUxhYmVsIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICR7dC5lZGdlTGFiZWxCYWNrZ3JvdW5kfTsKICAgIHJlY3QgewogICAgICBvcGFjaXR5OiAwLjU7CiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7dC5lZGdlTGFiZWxCYWNrZ3JvdW5kfTsKICAgICAgZmlsbDogJHt0LmVkZ2VMYWJlbEJhY2tncm91bmR9OwogICAgfQogICAgdGV4dC1hbGlnbjogY2VudGVyOwogIH0KCiAgLmNsdXN0ZXIgcmVjdCB7CiAgICBmaWxsOiAke3QuY2x1c3RlckJrZ307CiAgICBzdHJva2U6ICR7dC5jbHVzdGVyQm9yZGVyfTsKICAgIHN0cm9rZS13aWR0aDogMXB4OwogIH0KCiAgLmNsdXN0ZXIgdGV4dCB7CiAgICBmaWxsOiAke3QudGl0bGVDb2xvcn07CiAgfQoKICAuY2x1c3RlciBzcGFuIHsKICAgIGNvbG9yOiAke3QudGl0bGVDb2xvcn07CiAgfQogIC8qIC5jbHVzdGVyIGRpdiB7CiAgICBjb2xvcjogJHt0LnRpdGxlQ29sb3J9OwogIH0gKi8KCiAgZGl2Lm1lcm1haWRUb29sdGlwIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIG1heC13aWR0aDogMjAwcHg7CiAgICBwYWRkaW5nOiAycHg7CiAgICBmb250LWZhbWlseTogJHt0LmZvbnRGYW1pbHl9OwogICAgZm9udC1zaXplOiAxMnB4OwogICAgYmFja2dyb3VuZDogJHt0LnRlcnRpYXJ5Q29sb3J9OwogICAgYm9yZGVyOiAxcHggc29saWQgJHt0LmJvcmRlcjJ9OwogICAgYm9yZGVyLXJhZGl1czogMnB4OwogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICB6LWluZGV4OiAxMDA7CiAgfQpgLE13PXQ9PmAKICAubWVybWFpZC1tYWluLWZvbnQgewogICAgZm9udC1mYW1pbHk6ICJ0cmVidWNoZXQgbXMiLCB2ZXJkYW5hLCBhcmlhbCwgc2Fucy1zZXJpZjsKICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1tZXJtYWlkLWZvbnQtZmFtaWx5KTsKICB9CiAgLmV4Y2x1ZGUtcmFuZ2UgewogICAgZmlsbDogJHt0LmV4Y2x1ZGVCa2dDb2xvcn07CiAgfQoKICAuc2VjdGlvbiB7CiAgICBzdHJva2U6IG5vbmU7CiAgICBvcGFjaXR5OiAwLjI7CiAgfQoKICAuc2VjdGlvbjAgewogICAgZmlsbDogJHt0LnNlY3Rpb25Ca2dDb2xvcn07CiAgfQoKICAuc2VjdGlvbjIgewogICAgZmlsbDogJHt0LnNlY3Rpb25Ca2dDb2xvcjJ9OwogIH0KCiAgLnNlY3Rpb24xLAogIC5zZWN0aW9uMyB7CiAgICBmaWxsOiAke3QuYWx0U2VjdGlvbkJrZ0NvbG9yfTsKICAgIG9wYWNpdHk6IDAuMjsKICB9CgogIC5zZWN0aW9uVGl0bGUwIHsKICAgIGZpbGw6ICR7dC50aXRsZUNvbG9yfTsKICB9CgogIC5zZWN0aW9uVGl0bGUxIHsKICAgIGZpbGw6ICR7dC50aXRsZUNvbG9yfTsKICB9CgogIC5zZWN0aW9uVGl0bGUyIHsKICAgIGZpbGw6ICR7dC50aXRsZUNvbG9yfTsKICB9CgogIC5zZWN0aW9uVGl0bGUzIHsKICAgIGZpbGw6ICR7dC50aXRsZUNvbG9yfTsKICB9CgogIC5zZWN0aW9uVGl0bGUgewogICAgdGV4dC1hbmNob3I6IHN0YXJ0OwogICAgLy8gZm9udC1zaXplOiAke3QuZ2FudHRGb250U2l6ZX07CiAgICAvLyB0ZXh0LWhlaWdodDogMTRweDsKICAgIGZvbnQtZmFtaWx5OiAndHJlYnVjaGV0IG1zJywgdmVyZGFuYSwgYXJpYWwsIHNhbnMtc2VyaWY7CiAgICBmb250LWZhbWlseTogdmFyKC0tbWVybWFpZC1mb250LWZhbWlseSk7CgogIH0KCgogIC8qIEdyaWQgYW5kIGF4aXMgKi8KCiAgLmdyaWQgLnRpY2sgewogICAgc3Ryb2tlOiAke3QuZ3JpZENvbG9yfTsKICAgIG9wYWNpdHk6IDAuODsKICAgIHNoYXBlLXJlbmRlcmluZzogY3Jpc3BFZGdlczsKICAgIHRleHQgewogICAgICBmb250LWZhbWlseTogJHt0LmZvbnRGYW1pbHl9OwogICAgICBmaWxsOiAke3QudGV4dENvbG9yfTsKICAgIH0KICB9CgogIC5ncmlkIHBhdGggewogICAgc3Ryb2tlLXdpZHRoOiAwOwogIH0KCgogIC8qIFRvZGF5IGxpbmUgKi8KCiAgLnRvZGF5IHsKICAgIGZpbGw6IG5vbmU7CiAgICBzdHJva2U6ICR7dC50b2RheUxpbmVDb2xvcn07CiAgICBzdHJva2Utd2lkdGg6IDJweDsKICB9CgoKICAvKiBUYXNrIHN0eWxpbmcgKi8KCiAgLyogRGVmYXVsdCB0YXNrICovCgogIC50YXNrIHsKICAgIHN0cm9rZS13aWR0aDogMjsKICB9CgogIC50YXNrVGV4dCB7CiAgICB0ZXh0LWFuY2hvcjogbWlkZGxlOwogICAgZm9udC1mYW1pbHk6ICd0cmVidWNoZXQgbXMnLCB2ZXJkYW5hLCBhcmlhbCwgc2Fucy1zZXJpZjsKICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1tZXJtYWlkLWZvbnQtZmFtaWx5KTsKICB9CgogIC8vIC50YXNrVGV4dDpub3QoW2ZvbnQtc2l6ZV0pIHsKICAvLyAgIGZvbnQtc2l6ZTogJHt0LmdhbnR0Rm9udFNpemV9OwogIC8vIH0KCiAgLnRhc2tUZXh0T3V0c2lkZVJpZ2h0IHsKICAgIGZpbGw6ICR7dC50YXNrVGV4dERhcmtDb2xvcn07CiAgICB0ZXh0LWFuY2hvcjogc3RhcnQ7CiAgICAvLyBmb250LXNpemU6ICR7dC5nYW50dEZvbnRTaXplfTsKICAgIGZvbnQtZmFtaWx5OiAndHJlYnVjaGV0IG1zJywgdmVyZGFuYSwgYXJpYWwsIHNhbnMtc2VyaWY7CiAgICBmb250LWZhbWlseTogdmFyKC0tbWVybWFpZC1mb250LWZhbWlseSk7CgogIH0KCiAgLnRhc2tUZXh0T3V0c2lkZUxlZnQgewogICAgZmlsbDogJHt0LnRhc2tUZXh0RGFya0NvbG9yfTsKICAgIHRleHQtYW5jaG9yOiBlbmQ7CiAgICAvLyBmb250LXNpemU6ICR7dC5nYW50dEZvbnRTaXplfTsKICB9CgogIC8qIFNwZWNpYWwgY2FzZSBjbGlja2FibGUgKi8KICAudGFzay5jbGlja2FibGUgewogICAgY3Vyc29yOiBwb2ludGVyOwogIH0KICAudGFza1RleHQuY2xpY2thYmxlIHsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIGZpbGw6ICR7dC50YXNrVGV4dENsaWNrYWJsZUNvbG9yfSAhaW1wb3J0YW50OwogICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgfQoKICAudGFza1RleHRPdXRzaWRlTGVmdC5jbGlja2FibGUgewogICAgY3Vyc29yOiBwb2ludGVyOwogICAgZmlsbDogJHt0LnRhc2tUZXh0Q2xpY2thYmxlQ29sb3J9ICFpbXBvcnRhbnQ7CiAgICBmb250LXdlaWdodDogYm9sZDsKICB9CgogIC50YXNrVGV4dE91dHNpZGVSaWdodC5jbGlja2FibGUgewogICAgY3Vyc29yOiBwb2ludGVyOwogICAgZmlsbDogJHt0LnRhc2tUZXh0Q2xpY2thYmxlQ29sb3J9ICFpbXBvcnRhbnQ7CiAgICBmb250LXdlaWdodDogYm9sZDsKICB9CgogIC8qIFNwZWNpZmljIHRhc2sgc2V0dGluZ3MgZm9yIHRoZSBzZWN0aW9ucyovCgogIC50YXNrVGV4dDAsCiAgLnRhc2tUZXh0MSwKICAudGFza1RleHQyLAogIC50YXNrVGV4dDMgewogICAgZmlsbDogJHt0LnRhc2tUZXh0Q29sb3J9OwogIH0KCiAgLnRhc2swLAogIC50YXNrMSwKICAudGFzazIsCiAgLnRhc2szIHsKICAgIGZpbGw6ICR7dC50YXNrQmtnQ29sb3J9OwogICAgc3Ryb2tlOiAke3QudGFza0JvcmRlckNvbG9yfTsKICB9CgogIC50YXNrVGV4dE91dHNpZGUwLAogIC50YXNrVGV4dE91dHNpZGUyCiAgewogICAgZmlsbDogJHt0LnRhc2tUZXh0T3V0c2lkZUNvbG9yfTsKICB9CgogIC50YXNrVGV4dE91dHNpZGUxLAogIC50YXNrVGV4dE91dHNpZGUzIHsKICAgIGZpbGw6ICR7dC50YXNrVGV4dE91dHNpZGVDb2xvcn07CiAgfQoKCiAgLyogQWN0aXZlIHRhc2sgKi8KCiAgLmFjdGl2ZTAsCiAgLmFjdGl2ZTEsCiAgLmFjdGl2ZTIsCiAgLmFjdGl2ZTMgewogICAgZmlsbDogJHt0LmFjdGl2ZVRhc2tCa2dDb2xvcn07CiAgICBzdHJva2U6ICR7dC5hY3RpdmVUYXNrQm9yZGVyQ29sb3J9OwogIH0KCiAgLmFjdGl2ZVRleHQwLAogIC5hY3RpdmVUZXh0MSwKICAuYWN0aXZlVGV4dDIsCiAgLmFjdGl2ZVRleHQzIHsKICAgIGZpbGw6ICR7dC50YXNrVGV4dERhcmtDb2xvcn0gIWltcG9ydGFudDsKICB9CgoKICAvKiBDb21wbGV0ZWQgdGFzayAqLwoKICAuZG9uZTAsCiAgLmRvbmUxLAogIC5kb25lMiwKICAuZG9uZTMgewogICAgc3Ryb2tlOiAke3QuZG9uZVRhc2tCb3JkZXJDb2xvcn07CiAgICBmaWxsOiAke3QuZG9uZVRhc2tCa2dDb2xvcn07CiAgICBzdHJva2Utd2lkdGg6IDI7CiAgfQoKICAuZG9uZVRleHQwLAogIC5kb25lVGV4dDEsCiAgLmRvbmVUZXh0MiwKICAuZG9uZVRleHQzIHsKICAgIGZpbGw6ICR7dC50YXNrVGV4dERhcmtDb2xvcn0gIWltcG9ydGFudDsKICB9CgoKICAvKiBUYXNrcyBvbiB0aGUgY3JpdGljYWwgbGluZSAqLwoKICAuY3JpdDAsCiAgLmNyaXQxLAogIC5jcml0MiwKICAuY3JpdDMgewogICAgc3Ryb2tlOiAke3QuY3JpdEJvcmRlckNvbG9yfTsKICAgIGZpbGw6ICR7dC5jcml0QmtnQ29sb3J9OwogICAgc3Ryb2tlLXdpZHRoOiAyOwogIH0KCiAgLmFjdGl2ZUNyaXQwLAogIC5hY3RpdmVDcml0MSwKICAuYWN0aXZlQ3JpdDIsCiAgLmFjdGl2ZUNyaXQzIHsKICAgIHN0cm9rZTogJHt0LmNyaXRCb3JkZXJDb2xvcn07CiAgICBmaWxsOiAke3QuYWN0aXZlVGFza0JrZ0NvbG9yfTsKICAgIHN0cm9rZS13aWR0aDogMjsKICB9CgogIC5kb25lQ3JpdDAsCiAgLmRvbmVDcml0MSwKICAuZG9uZUNyaXQyLAogIC5kb25lQ3JpdDMgewogICAgc3Ryb2tlOiAke3QuY3JpdEJvcmRlckNvbG9yfTsKICAgIGZpbGw6ICR7dC5kb25lVGFza0JrZ0NvbG9yfTsKICAgIHN0cm9rZS13aWR0aDogMjsKICAgIGN1cnNvcjogcG9pbnRlcjsKICAgIHNoYXBlLXJlbmRlcmluZzogY3Jpc3BFZGdlczsKICB9CgogIC5taWxlc3RvbmUgewogICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpIHNjYWxlKDAuOCwwLjgpOwogIH0KCiAgLm1pbGVzdG9uZVRleHQgewogICAgZm9udC1zdHlsZTogaXRhbGljOwogIH0KICAuZG9uZUNyaXRUZXh0MCwKICAuZG9uZUNyaXRUZXh0MSwKICAuZG9uZUNyaXRUZXh0MiwKICAuZG9uZUNyaXRUZXh0MyB7CiAgICBmaWxsOiAke3QudGFza1RleHREYXJrQ29sb3J9ICFpbXBvcnRhbnQ7CiAgfQoKICAuYWN0aXZlQ3JpdFRleHQwLAogIC5hY3RpdmVDcml0VGV4dDEsCiAgLmFjdGl2ZUNyaXRUZXh0MiwKICAuYWN0aXZlQ3JpdFRleHQzIHsKICAgIGZpbGw6ICR7dC50YXNrVGV4dERhcmtDb2xvcn0gIWltcG9ydGFudDsKICB9CgogIC50aXRsZVRleHQgewogICAgdGV4dC1hbmNob3I6IG1pZGRsZTsKICAgIGZvbnQtc2l6ZTogMThweDsKICAgIGZpbGw6ICR7dC50ZXh0Q29sb3J9ICAgIDsKICAgIGZvbnQtZmFtaWx5OiAndHJlYnVjaGV0IG1zJywgdmVyZGFuYSwgYXJpYWwsIHNhbnMtc2VyaWY7CiAgICBmb250LWZhbWlseTogdmFyKC0tbWVybWFpZC1mb250LWZhbWlseSk7CiAgfQpgLEx3PSgpPT4iIixSdz10PT5gCiAgLnBpZUNpcmNsZXsKICAgIHN0cm9rZTogJHt0LnBpZVN0cm9rZUNvbG9yfTsKICAgIHN0cm9rZS13aWR0aCA6ICR7dC5waWVTdHJva2VXaWR0aH07CiAgICBvcGFjaXR5IDogJHt0LnBpZU9wYWNpdHl9OwogIH0KICAucGllVGl0bGVUZXh0IHsKICAgIHRleHQtYW5jaG9yOiBtaWRkbGU7CiAgICBmb250LXNpemU6ICR7dC5waWVUaXRsZVRleHRTaXplfTsKICAgIGZpbGw6ICR7dC5waWVUaXRsZVRleHRDb2xvcn07CiAgICBmb250LWZhbWlseTogJHt0LmZvbnRGYW1pbHl9OwogIH0KICAuc2xpY2UgewogICAgZm9udC1mYW1pbHk6ICR7dC5mb250RmFtaWx5fTsKICAgIGZpbGw6ICR7dC5waWVTZWN0aW9uVGV4dENvbG9yfTsKICAgIGZvbnQtc2l6ZToke3QucGllU2VjdGlvblRleHRTaXplfTsKICAgIC8vIGZpbGw6IHdoaXRlOwogIH0KICAubGVnZW5kIHRleHQgewogICAgZmlsbDogJHt0LnBpZUxlZ2VuZFRleHRDb2xvcn07CiAgICBmb250LWZhbWlseTogJHt0LmZvbnRGYW1pbHl9OwogICAgZm9udC1zaXplOiAke3QucGllTGVnZW5kVGV4dFNpemV9OwogIH0KYCxJdz10PT5gCgogIG1hcmtlciB7CiAgICBmaWxsOiAke3QucmVsYXRpb25Db2xvcn07CiAgICBzdHJva2U6ICR7dC5yZWxhdGlvbkNvbG9yfTsKICB9CgogIG1hcmtlci5jcm9zcyB7CiAgICBzdHJva2U6ICR7dC5saW5lQ29sb3J9OwogIH0KCiAgc3ZnIHsKICAgIGZvbnQtZmFtaWx5OiAke3QuZm9udEZhbWlseX07CiAgICBmb250LXNpemU6ICR7dC5mb250U2l6ZX07CiAgfQoKICAucmVxQm94IHsKICAgIGZpbGw6ICR7dC5yZXF1aXJlbWVudEJhY2tncm91bmR9OwogICAgZmlsbC1vcGFjaXR5OiAxMDAlOwogICAgc3Ryb2tlOiAke3QucmVxdWlyZW1lbnRCb3JkZXJDb2xvcn07CiAgICBzdHJva2Utd2lkdGg6ICR7dC5yZXF1aXJlbWVudEJvcmRlclNpemV9OwogIH0KICAKICAucmVxVGl0bGUsIC5yZXFMYWJlbHsKICAgIGZpbGw6ICAke3QucmVxdWlyZW1lbnRUZXh0Q29sb3J9OwogIH0KICAucmVxTGFiZWxCb3ggewogICAgZmlsbDogJHt0LnJlbGF0aW9uTGFiZWxCYWNrZ3JvdW5kfTsKICAgIGZpbGwtb3BhY2l0eTogMTAwJTsKICB9CgogIC5yZXEtdGl0bGUtbGluZSB7CiAgICBzdHJva2U6ICR7dC5yZXF1aXJlbWVudEJvcmRlckNvbG9yfTsKICAgIHN0cm9rZS13aWR0aDogJHt0LnJlcXVpcmVtZW50Qm9yZGVyU2l6ZX07CiAgfQogIC5yZWxhdGlvbnNoaXBMaW5lIHsKICAgIHN0cm9rZTogJHt0LnJlbGF0aW9uQ29sb3J9OwogICAgc3Ryb2tlLXdpZHRoOiAxOwogIH0KICAucmVsYXRpb25zaGlwTGFiZWwgewogICAgZmlsbDogJHt0LnJlbGF0aW9uTGFiZWxDb2xvcn07CiAgfQoKYCxOdz10PT5gLmFjdG9yIHsKICAgIHN0cm9rZTogJHt0LmFjdG9yQm9yZGVyfTsKICAgIGZpbGw6ICR7dC5hY3RvckJrZ307CiAgfQoKICB0ZXh0LmFjdG9yID4gdHNwYW4gewogICAgZmlsbDogJHt0LmFjdG9yVGV4dENvbG9yfTsKICAgIHN0cm9rZTogbm9uZTsKICB9CgogIC5hY3Rvci1saW5lIHsKICAgIHN0cm9rZTogJHt0LmFjdG9yTGluZUNvbG9yfTsKICB9CgogIC5tZXNzYWdlTGluZTAgewogICAgc3Ryb2tlLXdpZHRoOiAxLjU7CiAgICBzdHJva2UtZGFzaGFycmF5OiBub25lOwogICAgc3Ryb2tlOiAke3Quc2lnbmFsQ29sb3J9OwogIH0KCiAgLm1lc3NhZ2VMaW5lMSB7CiAgICBzdHJva2Utd2lkdGg6IDEuNTsKICAgIHN0cm9rZS1kYXNoYXJyYXk6IDIsIDI7CiAgICBzdHJva2U6ICR7dC5zaWduYWxDb2xvcn07CiAgfQoKICAjYXJyb3doZWFkIHBhdGggewogICAgZmlsbDogJHt0LnNpZ25hbENvbG9yfTsKICAgIHN0cm9rZTogJHt0LnNpZ25hbENvbG9yfTsKICB9CgogIC5zZXF1ZW5jZU51bWJlciB7CiAgICBmaWxsOiAke3Quc2VxdWVuY2VOdW1iZXJDb2xvcn07CiAgfQoKICAjc2VxdWVuY2VudW1iZXIgewogICAgZmlsbDogJHt0LnNpZ25hbENvbG9yfTsKICB9CgogICNjcm9zc2hlYWQgcGF0aCB7CiAgICBmaWxsOiAke3Quc2lnbmFsQ29sb3J9OwogICAgc3Ryb2tlOiAke3Quc2lnbmFsQ29sb3J9OwogIH0KCiAgLm1lc3NhZ2VUZXh0IHsKICAgIGZpbGw6ICR7dC5zaWduYWxUZXh0Q29sb3J9OwogICAgc3Ryb2tlOiBub25lOwogIH0KCiAgLmxhYmVsQm94IHsKICAgIHN0cm9rZTogJHt0LmxhYmVsQm94Qm9yZGVyQ29sb3J9OwogICAgZmlsbDogJHt0LmxhYmVsQm94QmtnQ29sb3J9OwogIH0KCiAgLmxhYmVsVGV4dCwgLmxhYmVsVGV4dCA+IHRzcGFuIHsKICAgIGZpbGw6ICR7dC5sYWJlbFRleHRDb2xvcn07CiAgICBzdHJva2U6IG5vbmU7CiAgfQoKICAubG9vcFRleHQsIC5sb29wVGV4dCA+IHRzcGFuIHsKICAgIGZpbGw6ICR7dC5sb29wVGV4dENvbG9yfTsKICAgIHN0cm9rZTogbm9uZTsKICB9CgogIC5sb29wTGluZSB7CiAgICBzdHJva2Utd2lkdGg6IDJweDsKICAgIHN0cm9rZS1kYXNoYXJyYXk6IDIsIDI7CiAgICBzdHJva2U6ICR7dC5sYWJlbEJveEJvcmRlckNvbG9yfTsKICAgIGZpbGw6ICR7dC5sYWJlbEJveEJvcmRlckNvbG9yfTsKICB9CgogIC5ub3RlIHsKICAgIC8vc3Ryb2tlOiAjZGVjYzkzOwogICAgc3Ryb2tlOiAke3Qubm90ZUJvcmRlckNvbG9yfTsKICAgIGZpbGw6ICR7dC5ub3RlQmtnQ29sb3J9OwogIH0KCiAgLm5vdGVUZXh0LCAubm90ZVRleHQgPiB0c3BhbiB7CiAgICBmaWxsOiAke3Qubm90ZVRleHRDb2xvcn07CiAgICBzdHJva2U6IG5vbmU7CiAgfQoKICAuYWN0aXZhdGlvbjAgewogICAgZmlsbDogJHt0LmFjdGl2YXRpb25Ca2dDb2xvcn07CiAgICBzdHJva2U6ICR7dC5hY3RpdmF0aW9uQm9yZGVyQ29sb3J9OwogIH0KCiAgLmFjdGl2YXRpb24xIHsKICAgIGZpbGw6ICR7dC5hY3RpdmF0aW9uQmtnQ29sb3J9OwogICAgc3Ryb2tlOiAke3QuYWN0aXZhdGlvbkJvcmRlckNvbG9yfTsKICB9CgogIC5hY3RpdmF0aW9uMiB7CiAgICBmaWxsOiAke3QuYWN0aXZhdGlvbkJrZ0NvbG9yfTsKICAgIHN0cm9rZTogJHt0LmFjdGl2YXRpb25Cb3JkZXJDb2xvcn07CiAgfQoKICAuYWN0b3JQb3B1cE1lbnUgewogICAgcG9zaXRpb246IGFic29sdXRlOwogIH0KCiAgLmFjdG9yUG9wdXBNZW51UGFuZWwgewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgZmlsbDogJHt0LmFjdG9yQmtnfTsKICAgIGJveC1zaGFkb3c6IDBweCA4cHggMTZweCAwcHggcmdiYSgwLDAsMCwwLjIpOwogICAgZmlsdGVyOiBkcm9wLXNoYWRvdygzcHggNXB4IDJweCByZ2IoMCAwIDAgLyAwLjQpKTsKfQogIC5hY3Rvci1tYW4gbGluZSB7CiAgICBzdHJva2U6ICR7dC5hY3RvckJvcmRlcn07CiAgICBmaWxsOiAke3QuYWN0b3JCa2d9OwogIH0KICAuYWN0b3ItbWFuIGNpcmNsZSwgbGluZSB7CiAgICBzdHJva2U6ICR7dC5hY3RvckJvcmRlcn07CiAgICBmaWxsOiAke3QuYWN0b3JCa2d9OwogICAgc3Ryb2tlLXdpZHRoOiAycHg7CiAgfQpgLHMxPXQ9PmAKZGVmcyAjc3RhdGVkaWFncmFtLWJhcmJFbmQgewogICAgZmlsbDogJHt0LnRyYW5zaXRpb25Db2xvcn07CiAgICBzdHJva2U6ICR7dC50cmFuc2l0aW9uQ29sb3J9OwogIH0KZy5zdGF0ZUdyb3VwIHRleHQgewogIGZpbGw6ICR7dC5ub2RlQm9yZGVyfTsKICBzdHJva2U6IG5vbmU7CiAgZm9udC1zaXplOiAxMHB4Owp9Cmcuc3RhdGVHcm91cCB0ZXh0IHsKICBmaWxsOiAke3QudGV4dENvbG9yfTsKICBzdHJva2U6IG5vbmU7CiAgZm9udC1zaXplOiAxMHB4OwoKfQpnLnN0YXRlR3JvdXAgLnN0YXRlLXRpdGxlIHsKICBmb250LXdlaWdodDogYm9sZGVyOwogIGZpbGw6ICR7dC5zdGF0ZUxhYmVsQ29sb3J9Owp9CgpnLnN0YXRlR3JvdXAgcmVjdCB7CiAgZmlsbDogJHt0Lm1haW5Ca2d9OwogIHN0cm9rZTogJHt0Lm5vZGVCb3JkZXJ9Owp9CgpnLnN0YXRlR3JvdXAgbGluZSB7CiAgc3Ryb2tlOiAke3QubGluZUNvbG9yfTsKICBzdHJva2Utd2lkdGg6IDE7Cn0KCi50cmFuc2l0aW9uIHsKICBzdHJva2U6ICR7dC50cmFuc2l0aW9uQ29sb3J9OwogIHN0cm9rZS13aWR0aDogMTsKICBmaWxsOiBub25lOwp9Cgouc3RhdGVHcm91cCAuY29tcG9zaXQgewogIGZpbGw6ICR7dC5iYWNrZ3JvdW5kfTsKICBib3JkZXItYm90dG9tOiAxcHgKfQoKLnN0YXRlR3JvdXAgLmFsdC1jb21wb3NpdCB7CiAgZmlsbDogI2UwZTBlMDsKICBib3JkZXItYm90dG9tOiAxcHgKfQoKLnN0YXRlLW5vdGUgewogIHN0cm9rZTogJHt0Lm5vdGVCb3JkZXJDb2xvcn07CiAgZmlsbDogJHt0Lm5vdGVCa2dDb2xvcn07CgogIHRleHQgewogICAgZmlsbDogJHt0Lm5vdGVUZXh0Q29sb3J9OwogICAgc3Ryb2tlOiBub25lOwogICAgZm9udC1zaXplOiAxMHB4OwogIH0KfQoKLnN0YXRlTGFiZWwgLmJveCB7CiAgc3Ryb2tlOiBub25lOwogIHN0cm9rZS13aWR0aDogMDsKICBmaWxsOiAke3QubWFpbkJrZ307CiAgb3BhY2l0eTogMC41Owp9CgouZWRnZUxhYmVsIC5sYWJlbCByZWN0IHsKICBmaWxsOiAke3QubGFiZWxCYWNrZ3JvdW5kQ29sb3J9OwogIG9wYWNpdHk6IDAuNTsKfQouZWRnZUxhYmVsIC5sYWJlbCB0ZXh0IHsKICBmaWxsOiAke3QudHJhbnNpdGlvbkxhYmVsQ29sb3J8fHQudGVydGlhcnlUZXh0Q29sb3J9Owp9Ci5sYWJlbCBkaXYgLmVkZ2VMYWJlbCB7CiAgY29sb3I6ICR7dC50cmFuc2l0aW9uTGFiZWxDb2xvcnx8dC50ZXJ0aWFyeVRleHRDb2xvcn07Cn0KCi5zdGF0ZUxhYmVsIHRleHQgewogIGZpbGw6ICR7dC5zdGF0ZUxhYmVsQ29sb3J9OwogIGZvbnQtc2l6ZTogMTBweDsKICBmb250LXdlaWdodDogYm9sZDsKfQoKLm5vZGUgY2lyY2xlLnN0YXRlLXN0YXJ0IHsKICBmaWxsOiAke3Quc3BlY2lhbFN0YXRlQ29sb3J9OwogIHN0cm9rZTogJHt0LnNwZWNpYWxTdGF0ZUNvbG9yfTsKfQoKLm5vZGUgLmZvcmstam9pbiB7CiAgZmlsbDogJHt0LnNwZWNpYWxTdGF0ZUNvbG9yfTsKICBzdHJva2U6ICR7dC5zcGVjaWFsU3RhdGVDb2xvcn07Cn0KCi5ub2RlIGNpcmNsZS5zdGF0ZS1lbmQgewogIGZpbGw6ICR7dC5pbm5lckVuZEJhY2tncm91bmR9OwogIHN0cm9rZTogJHt0LmJhY2tncm91bmR9OwogIHN0cm9rZS13aWR0aDogMS41Cn0KLmVuZC1zdGF0ZS1pbm5lciB7CiAgZmlsbDogJHt0LmNvbXBvc2l0ZUJhY2tncm91bmR8fHQuYmFja2dyb3VuZH07CiAgLy8gc3Ryb2tlOiAke3QuYmFja2dyb3VuZH07CiAgc3Ryb2tlLXdpZHRoOiAxLjUKfQoKLm5vZGUgcmVjdCB7CiAgZmlsbDogJHt0LnN0YXRlQmtnfHx0Lm1haW5Ca2d9OwogIHN0cm9rZTogJHt0LnN0YXRlQm9yZGVyfHx0Lm5vZGVCb3JkZXJ9OwogIHN0cm9rZS13aWR0aDogMXB4Owp9Ci5ub2RlIHBvbHlnb24gewogIGZpbGw6ICR7dC5tYWluQmtnfTsKICBzdHJva2U6ICR7dC5zdGF0ZUJvcmRlcnx8dC5ub2RlQm9yZGVyfTs7CiAgc3Ryb2tlLXdpZHRoOiAxcHg7Cn0KI3N0YXRlZGlhZ3JhbS1iYXJiRW5kIHsKICBmaWxsOiAke3QubGluZUNvbG9yfTsKfQoKLnN0YXRlZGlhZ3JhbS1jbHVzdGVyIHJlY3QgewogIGZpbGw6ICR7dC5jb21wb3NpdGVUaXRsZUJhY2tncm91bmR9OwogIHN0cm9rZTogJHt0LnN0YXRlQm9yZGVyfHx0Lm5vZGVCb3JkZXJ9OwogIHN0cm9rZS13aWR0aDogMXB4Owp9CgouY2x1c3Rlci1sYWJlbCwgLm5vZGVMYWJlbCB7CiAgY29sb3I6ICR7dC5zdGF0ZUxhYmVsQ29sb3J9Owp9Cgouc3RhdGVkaWFncmFtLWNsdXN0ZXIgcmVjdC5vdXRlciB7CiAgcng6IDVweDsKICByeTogNXB4Owp9Ci5zdGF0ZWRpYWdyYW0tc3RhdGUgLmRpdmlkZXIgewogIHN0cm9rZTogJHt0LnN0YXRlQm9yZGVyfHx0Lm5vZGVCb3JkZXJ9Owp9Cgouc3RhdGVkaWFncmFtLXN0YXRlIC50aXRsZS1zdGF0ZSB7CiAgcng6IDVweDsKICByeTogNXB4Owp9Ci5zdGF0ZWRpYWdyYW0tY2x1c3Rlci5zdGF0ZWRpYWdyYW0tY2x1c3RlciAuaW5uZXIgewogIGZpbGw6ICR7dC5jb21wb3NpdGVCYWNrZ3JvdW5kfHx0LmJhY2tncm91bmR9Owp9Ci5zdGF0ZWRpYWdyYW0tY2x1c3Rlci5zdGF0ZWRpYWdyYW0tY2x1c3Rlci1hbHQgLmlubmVyIHsKICBmaWxsOiAke3QuYWx0QmFja2dyb3VuZD90LmFsdEJhY2tncm91bmQ6IiNlZmVmZWYifTsKfQoKLnN0YXRlZGlhZ3JhbS1jbHVzdGVyIC5pbm5lciB7CiAgcng6MDsKICByeTowOwp9Cgouc3RhdGVkaWFncmFtLXN0YXRlIHJlY3QuYmFzaWMgewogIHJ4OiA1cHg7CiAgcnk6IDVweDsKfQouc3RhdGVkaWFncmFtLXN0YXRlIHJlY3QuZGl2aWRlciB7CiAgc3Ryb2tlLWRhc2hhcnJheTogMTAsMTA7CiAgZmlsbDogJHt0LmFsdEJhY2tncm91bmQ/dC5hbHRCYWNrZ3JvdW5kOiIjZWZlZmVmIn07Cn0KCi5ub3RlLWVkZ2UgewogIHN0cm9rZS1kYXNoYXJyYXk6IDU7Cn0KCi5zdGF0ZWRpYWdyYW0tbm90ZSByZWN0IHsKICBmaWxsOiAke3Qubm90ZUJrZ0NvbG9yfTsKICBzdHJva2U6ICR7dC5ub3RlQm9yZGVyQ29sb3J9OwogIHN0cm9rZS13aWR0aDogMXB4OwogIHJ4OiAwOwogIHJ5OiAwOwp9Ci5zdGF0ZWRpYWdyYW0tbm90ZSByZWN0IHsKICBmaWxsOiAke3Qubm90ZUJrZ0NvbG9yfTsKICBzdHJva2U6ICR7dC5ub3RlQm9yZGVyQ29sb3J9OwogIHN0cm9rZS13aWR0aDogMXB4OwogIHJ4OiAwOwogIHJ5OiAwOwp9Cgouc3RhdGVkaWFncmFtLW5vdGUgdGV4dCB7CiAgZmlsbDogJHt0Lm5vdGVUZXh0Q29sb3J9Owp9Cgouc3RhdGVkaWFncmFtLW5vdGUgLm5vZGVMYWJlbCB7CiAgY29sb3I6ICR7dC5ub3RlVGV4dENvbG9yfTsKfQouc3RhdGVkaWFncmFtIC5lZGdlTGFiZWwgewogIGNvbG9yOiByZWQ7IC8vICR7dC5ub3RlVGV4dENvbG9yfTsKfQoKI2RlcGVuZGVuY3lTdGFydCwgI2RlcGVuZGVuY3lFbmQgewogIGZpbGw6ICR7dC5saW5lQ29sb3J9OwogIHN0cm9rZTogJHt0LmxpbmVDb2xvcn07CiAgc3Ryb2tlLXdpZHRoOiAxOwp9CmAsQnc9dD0+YC5sYWJlbCB7CiAgICBmb250LWZhbWlseTogJ3RyZWJ1Y2hldCBtcycsIHZlcmRhbmEsIGFyaWFsLCBzYW5zLXNlcmlmOwogICAgZm9udC1mYW1pbHk6IHZhcigtLW1lcm1haWQtZm9udC1mYW1pbHkpOwogICAgY29sb3I6ICR7dC50ZXh0Q29sb3J9OwogIH0KICAubW91dGggewogICAgc3Ryb2tlOiAjNjY2OwogIH0KCiAgbGluZSB7CiAgICBzdHJva2U6ICR7dC50ZXh0Q29sb3J9CiAgfQoKICAubGVnZW5kIHsKICAgIGZpbGw6ICR7dC50ZXh0Q29sb3J9OwogIH0KCiAgLmxhYmVsIHRleHQgewogICAgZmlsbDogIzMzMzsKICB9CiAgLmxhYmVsIHsKICAgIGNvbG9yOiAke3QudGV4dENvbG9yfQogIH0KCiAgLmZhY2UgewogICAgJHt0LmZhY2VDb2xvcj9gZmlsbDogJHt0LmZhY2VDb2xvcn1gOiJmaWxsOiAjRkZGOERDIn07CiAgICBzdHJva2U6ICM5OTk7CiAgfQoKICAubm9kZSByZWN0LAogIC5ub2RlIGNpcmNsZSwKICAubm9kZSBlbGxpcHNlLAogIC5ub2RlIHBvbHlnb24sCiAgLm5vZGUgcGF0aCB7CiAgICBmaWxsOiAke3QubWFpbkJrZ307CiAgICBzdHJva2U6ICR7dC5ub2RlQm9yZGVyfTsKICAgIHN0cm9rZS13aWR0aDogMXB4OwogIH0KCiAgLm5vZGUgLmxhYmVsIHsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICB9CiAgLm5vZGUuY2xpY2thYmxlIHsKICAgIGN1cnNvcjogcG9pbnRlcjsKICB9CgogIC5hcnJvd2hlYWRQYXRoIHsKICAgIGZpbGw6ICR7dC5hcnJvd2hlYWRDb2xvcn07CiAgfQoKICAuZWRnZVBhdGggLnBhdGggewogICAgc3Ryb2tlOiAke3QubGluZUNvbG9yfTsKICAgIHN0cm9rZS13aWR0aDogMS41cHg7CiAgfQoKICAuZmxvd2NoYXJ0LWxpbmsgewogICAgc3Ryb2tlOiAke3QubGluZUNvbG9yfTsKICAgIGZpbGw6IG5vbmU7CiAgfQoKICAuZWRnZUxhYmVsIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICR7dC5lZGdlTGFiZWxCYWNrZ3JvdW5kfTsKICAgIHJlY3QgewogICAgICBvcGFjaXR5OiAwLjU7CiAgICB9CiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgfQoKICAuY2x1c3RlciByZWN0IHsKICB9CgogIC5jbHVzdGVyIHRleHQgewogICAgZmlsbDogJHt0LnRpdGxlQ29sb3J9OwogIH0KCiAgZGl2Lm1lcm1haWRUb29sdGlwIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgIG1heC13aWR0aDogMjAwcHg7CiAgICBwYWRkaW5nOiAycHg7CiAgICBmb250LWZhbWlseTogJ3RyZWJ1Y2hldCBtcycsIHZlcmRhbmEsIGFyaWFsLCBzYW5zLXNlcmlmOwogICAgZm9udC1mYW1pbHk6IHZhcigtLW1lcm1haWQtZm9udC1mYW1pbHkpOwogICAgZm9udC1zaXplOiAxMnB4OwogICAgYmFja2dyb3VuZDogJHt0LnRlcnRpYXJ5Q29sb3J9OwogICAgYm9yZGVyOiAxcHggc29saWQgJHt0LmJvcmRlcjJ9OwogICAgYm9yZGVyLXJhZGl1czogMnB4OwogICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICB6LWluZGV4OiAxMDA7CiAgfQoKICAudGFzay10eXBlLTAsIC5zZWN0aW9uLXR5cGUtMCAgewogICAgJHt0LmZpbGxUeXBlMD9gZmlsbDogJHt0LmZpbGxUeXBlMH1gOiIifTsKICB9CiAgLnRhc2stdHlwZS0xLCAuc2VjdGlvbi10eXBlLTEgIHsKICAgICR7dC5maWxsVHlwZTA/YGZpbGw6ICR7dC5maWxsVHlwZTF9YDoiIn07CiAgfQogIC50YXNrLXR5cGUtMiwgLnNlY3Rpb24tdHlwZS0yICB7CiAgICAke3QuZmlsbFR5cGUwP2BmaWxsOiAke3QuZmlsbFR5cGUyfWA6IiJ9OwogIH0KICAudGFzay10eXBlLTMsIC5zZWN0aW9uLXR5cGUtMyAgewogICAgJHt0LmZpbGxUeXBlMD9gZmlsbDogJHt0LmZpbGxUeXBlM31gOiIifTsKICB9CiAgLnRhc2stdHlwZS00LCAuc2VjdGlvbi10eXBlLTQgIHsKICAgICR7dC5maWxsVHlwZTA/YGZpbGw6ICR7dC5maWxsVHlwZTR9YDoiIn07CiAgfQogIC50YXNrLXR5cGUtNSwgLnNlY3Rpb24tdHlwZS01ICB7CiAgICAke3QuZmlsbFR5cGUwP2BmaWxsOiAke3QuZmlsbFR5cGU1fWA6IiJ9OwogIH0KICAudGFzay10eXBlLTYsIC5zZWN0aW9uLXR5cGUtNiAgewogICAgJHt0LmZpbGxUeXBlMD9gZmlsbDogJHt0LmZpbGxUeXBlNn1gOiIifTsKICB9CiAgLnRhc2stdHlwZS03LCAuc2VjdGlvbi10eXBlLTcgIHsKICAgICR7dC5maWxsVHlwZTA/YGZpbGw6ICR7dC5maWxsVHlwZTd9YDoiIn07CiAgfQoKICAuYWN0b3ItMCB7CiAgICAke3QuYWN0b3IwP2BmaWxsOiAke3QuYWN0b3IwfWA6IiJ9OwogIH0KICAuYWN0b3ItMSB7CiAgICAke3QuYWN0b3IxP2BmaWxsOiAke3QuYWN0b3IxfWA6IiJ9OwogIH0KICAuYWN0b3ItMiB7CiAgICAke3QuYWN0b3IyP2BmaWxsOiAke3QuYWN0b3IyfWA6IiJ9OwogIH0KICAuYWN0b3ItMyB7CiAgICAke3QuYWN0b3IzP2BmaWxsOiAke3QuYWN0b3IzfWA6IiJ9OwogIH0KICAuYWN0b3ItNCB7CiAgICAke3QuYWN0b3I0P2BmaWxsOiAke3QuYWN0b3I0fWA6IiJ9OwogIH0KICAuYWN0b3ItNSB7CiAgICAke3QuYWN0b3I1P2BmaWxsOiAke3QuYWN0b3I1fWA6IiJ9OwogIH0KYCxEdz10PT5gLnBlcnNvbiB7CiAgICBzdHJva2U6ICR7dC5wZXJzb25Cb3JkZXJ9OwogICAgZmlsbDogJHt0LnBlcnNvbkJrZ307CiAgfQpgLG8xPXtmbG93Y2hhcnQ6YTEsImZsb3djaGFydC12MiI6YTEsc2VxdWVuY2U6TncsZ2FudHQ6TXcsY2xhc3NEaWFncmFtOk5jLCJjbGFzc0RpYWdyYW0tdjIiOk5jLGNsYXNzOk5jLHN0YXRlRGlhZ3JhbTpzMSxzdGF0ZTpzMSxpbmZvOkx3LHBpZTpSdyxlcjpTdyxlcnJvcjpBdyxqb3VybmV5OkJ3LHJlcXVpcmVtZW50Okl3LGM0OkR3fSxPdz0odCxlLHIpPT57bGV0IG49IiI7cmV0dXJuIHQgaW4gbzEmJm8xW3RdP249bzFbdF0ocik6SC53YXJuKGBObyB0aGVtZSBmb3VuZCBmb3IgJHt0fWApLGAgewogICAgZm9udC1mYW1pbHk6ICR7ci5mb250RmFtaWx5fTsKICAgIGZvbnQtc2l6ZTogJHtyLmZvbnRTaXplfTsKICAgIGZpbGw6ICR7ci50ZXh0Q29sb3J9CiAgfQoKICAvKiBDbGFzc2VzIGNvbW1vbiBmb3IgbXVsdGlwbGUgZGlhZ3JhbXMgKi8KCiAgLmVycm9yLWljb24gewogICAgZmlsbDogJHtyLmVycm9yQmtnQ29sb3J9OwogIH0KICAuZXJyb3ItdGV4dCB7CiAgICBmaWxsOiAke3IuZXJyb3JUZXh0Q29sb3J9OwogICAgc3Ryb2tlOiAke3IuZXJyb3JUZXh0Q29sb3J9OwogIH0KCiAgLmVkZ2UtdGhpY2tuZXNzLW5vcm1hbCB7CiAgICBzdHJva2Utd2lkdGg6IDJweDsKICB9CiAgLmVkZ2UtdGhpY2tuZXNzLXRoaWNrIHsKICAgIHN0cm9rZS13aWR0aDogMy41cHgKICB9CiAgLmVkZ2UtcGF0dGVybi1zb2xpZCB7CiAgICBzdHJva2UtZGFzaGFycmF5OiAwOwogIH0KCiAgLmVkZ2UtcGF0dGVybi1kYXNoZWR7CiAgICBzdHJva2UtZGFzaGFycmF5OiAzOwogIH0KICAuZWRnZS1wYXR0ZXJuLWRvdHRlZCB7CiAgICBzdHJva2UtZGFzaGFycmF5OiAyOwogIH0KCiAgLm1hcmtlciB7CiAgICBmaWxsOiAke3IubGluZUNvbG9yfTsKICAgIHN0cm9rZTogJHtyLmxpbmVDb2xvcn07CiAgfQogIC5tYXJrZXIuY3Jvc3MgewogICAgc3Ryb2tlOiAke3IubGluZUNvbG9yfTsKICB9CgogIHN2ZyB7CiAgICBmb250LWZhbWlseTogJHtyLmZvbnRGYW1pbHl9OwogICAgZm9udC1zaXplOiAke3IuZm9udFNpemV9OwogIH0KCiAgJHtufQoKICAke2V9CmB9LFJYPSh0LGUpPT57bzFbdF09ZX0sQmM9SCxJWD1EMCxabz1udCxOWD10PT5haSh0LFpvKCkpLEZ3PWkxLFFvPXt9LExyPSh0LGUscik9PntCYy5kZWJ1ZyhgUmVnaXN0ZXJpbmcgZGlhZ3JhbSAke3R9YCksUW9bdF0mJkJjLndhcm4oYERpYWdyYW0gJHt0fSBhbHJlYWR5IHJlZ2lzdGVyZWQuYCksUW9bdF09ZSxyJiYkayh0LHIpLFJYKHQsZS5zdHlsZXMpLGUuaW5qZWN0VXRpbHMmJmUuaW5qZWN0VXRpbHMoQmMsSVgsWm8sTlgsRncpLEJjLmRlYnVnKGBSZWdpc3RlcmVkIGRpYWdyYW0gJHt0fS4gJHtPYmplY3Qua2V5cyhRbykuam9pbigiLCAiKX0gZGlhZ3JhbXMgcmVnaXN0ZXJlZC5gKX0sUHc9dD0+e2lmKEJjLmRlYnVnKGBHZXR0aW5nIGRpYWdyYW0gJHt0fS4gJHtPYmplY3Qua2V5cyhRbykuam9pbigiLCAiKX0gZGlhZ3JhbXMgcmVnaXN0ZXJlZC5gKSx0IGluIFFvKXJldHVybiBRb1t0XTt0aHJvdyBuZXcgcXcodCl9O2NsYXNzIHF3IGV4dGVuZHMgRXJyb3J7Y29uc3RydWN0b3IoZSl7c3VwZXIoYERpYWdyYW0gJHtlfSBub3QgZm91bmQuYCl9fXZhciBoZz1mdW5jdGlvbigpe3ZhciB0PWZ1bmN0aW9uKEMsTSxTLFIpe2ZvcihTPVN8fHt9LFI9Qy5sZW5ndGg7Ui0tO1NbQ1tSXV09TSk7cmV0dXJuIFN9LGU9WzEsNF0scj1bMSw3XSxuPVsxLDVdLGk9WzEsOV0sYT1bMSw2XSxzPVsyLDZdLG89WzEsMTZdLGw9WzYsOCwxNCwyMCwyMiwyNCwyNSwyNywyOSwzMiwzNyw0MCw1MCw1NF0sdT1bOCwxNCwyMCwyMiwyNCwyNSwyNywyOSwzMiwzNyw0MF0saD1bOCwxMywxNCwyMCwyMiwyNCwyNSwyNywyOSwzMiwzNyw0MF0sZD1bMSwyNl0sZj1bNiw4LDE0LDUwLDU0XSxwPVs4LDE0LDU0XSxtPVsxLDY1XSxfPVsxLDY2XSx5PVsxLDY3XSxiPVs4LDE0LDMzLDM1LDQyLDU0XSx4PXt0cmFjZTpmdW5jdGlvbigpe30seXk6e30sc3ltYm9sc186e2Vycm9yOjIsc3RhcnQ6Myxlb2w6NCxkaXJlY3RpdmU6NSxHRzo2LGRvY3VtZW50OjcsRU9GOjgsIjoiOjksRElSOjEwLG9wdGlvbnM6MTEsYm9keToxMixPUFQ6MTMsTkw6MTQsbGluZToxNSxzdGF0ZW1lbnQ6MTYsY29tbWl0U3RhdGVtZW50OjE3LG1lcmdlU3RhdGVtZW50OjE4LGNoZXJyeVBpY2tTdGF0ZW1lbnQ6MTksYWNjX3RpdGxlOjIwLGFjY190aXRsZV92YWx1ZToyMSxhY2NfZGVzY3I6MjIsYWNjX2Rlc2NyX3ZhbHVlOjIzLGFjY19kZXNjcl9tdWx0aWxpbmVfdmFsdWU6MjQsc2VjdGlvbjoyNSxicmFuY2hTdGF0ZW1lbnQ6MjYsQ0hFQ0tPVVQ6MjcsSUQ6MjgsQlJBTkNIOjI5LE9SREVSOjMwLE5VTTozMSxDSEVSUllfUElDSzozMixDT01NSVRfSUQ6MzMsU1RSOjM0LENPTU1JVF9UQUc6MzUsRU1QVFlTVFI6MzYsTUVSR0U6MzcsQ09NTUlUX1RZUEU6MzgsY29tbWl0VHlwZTozOSxDT01NSVQ6NDAsY29tbWl0X2FyZzo0MSxDT01NSVRfTVNHOjQyLE5PUk1BTDo0MyxSRVZFUlNFOjQ0LEhJR0hMSUdIVDo0NSxvcGVuRGlyZWN0aXZlOjQ2LHR5cGVEaXJlY3RpdmU6NDcsY2xvc2VEaXJlY3RpdmU6NDgsYXJnRGlyZWN0aXZlOjQ5LG9wZW5fZGlyZWN0aXZlOjUwLHR5cGVfZGlyZWN0aXZlOjUxLGFyZ19kaXJlY3RpdmU6NTIsY2xvc2VfZGlyZWN0aXZlOjUzLCI7Ijo1NCwkYWNjZXB0OjAsJGVuZDoxfSx0ZXJtaW5hbHNfOnsyOiJlcnJvciIsNjoiR0ciLDg6IkVPRiIsOToiOiIsMTA6IkRJUiIsMTM6Ik9QVCIsMTQ6Ik5MIiwyMDoiYWNjX3RpdGxlIiwyMToiYWNjX3RpdGxlX3ZhbHVlIiwyMjoiYWNjX2Rlc2NyIiwyMzoiYWNjX2Rlc2NyX3ZhbHVlIiwyNDoiYWNjX2Rlc2NyX211bHRpbGluZV92YWx1ZSIsMjU6InNlY3Rpb24iLDI3OiJDSEVDS09VVCIsMjg6IklEIiwyOToiQlJBTkNIIiwzMDoiT1JERVIiLDMxOiJOVU0iLDMyOiJDSEVSUllfUElDSyIsMzM6IkNPTU1JVF9JRCIsMzQ6IlNUUiIsMzU6IkNPTU1JVF9UQUciLDM2OiJFTVBUWVNUUiIsMzc6Ik1FUkdFIiwzODoiQ09NTUlUX1RZUEUiLDQwOiJDT01NSVQiLDQyOiJDT01NSVRfTVNHIiw0MzoiTk9STUFMIiw0NDoiUkVWRVJTRSIsNDU6IkhJR0hMSUdIVCIsNTA6Im9wZW5fZGlyZWN0aXZlIiw1MToidHlwZV9kaXJlY3RpdmUiLDUyOiJhcmdfZGlyZWN0aXZlIiw1MzoiY2xvc2VfZGlyZWN0aXZlIiw1NDoiOyJ9LHByb2R1Y3Rpb25zXzpbMCxbMywyXSxbMywyXSxbMywzXSxbMyw0XSxbMyw1XSxbNywwXSxbNywyXSxbMTEsMl0sWzExLDFdLFsxMiwwXSxbMTIsMl0sWzE1LDJdLFsxNSwxXSxbMTYsMV0sWzE2LDFdLFsxNiwxXSxbMTYsMl0sWzE2LDJdLFsxNiwxXSxbMTYsMV0sWzE2LDFdLFsxNiwyXSxbMjYsMl0sWzI2LDRdLFsxOSwzXSxbMTksNV0sWzE5LDVdLFsxOSw1XSxbMTksNV0sWzE4LDJdLFsxOCw0XSxbMTgsNF0sWzE4LDRdLFsxOCw2XSxbMTgsNl0sWzE4LDZdLFsxOCw2XSxbMTgsNl0sWzE4LDZdLFsxOCw4XSxbMTgsOF0sWzE4LDhdLFsxOCw4XSxbMTgsOF0sWzE4LDhdLFsxNywyXSxbMTcsM10sWzE3LDNdLFsxNyw1XSxbMTcsNV0sWzE3LDNdLFsxNyw1XSxbMTcsNV0sWzE3LDVdLFsxNyw1XSxbMTcsN10sWzE3LDddLFsxNyw3XSxbMTcsN10sWzE3LDddLFsxNyw3XSxbMTcsM10sWzE3LDVdLFsxNyw1XSxbMTcsNV0sWzE3LDVdLFsxNyw1XSxbMTcsNV0sWzE3LDddLFsxNyw3XSxbMTcsN10sWzE3LDddLFsxNyw3XSxbMTcsN10sWzE3LDddLFsxNyw3XSxbMTcsN10sWzE3LDddLFsxNyw3XSxbMTcsN10sWzE3LDddLFsxNyw3XSxbMTcsN10sWzE3LDddLFsxNyw3XSxbMTcsN10sWzE3LDldLFsxNyw5XSxbMTcsOV0sWzE3LDldLFsxNyw5XSxbMTcsOV0sWzE3LDldLFsxNyw5XSxbMTcsOV0sWzE3LDldLFsxNyw5XSxbMTcsOV0sWzE3LDldLFsxNyw5XSxbMTcsOV0sWzE3LDldLFsxNyw5XSxbMTcsOV0sWzE3LDldLFsxNyw5XSxbMTcsOV0sWzE3LDldLFsxNyw5XSxbMTcsOV0sWzQxLDBdLFs0MSwxXSxbMzksMV0sWzM5LDFdLFszOSwxXSxbNSwzXSxbNSw1XSxbNDYsMV0sWzQ3LDFdLFs0OSwxXSxbNDgsMV0sWzQsMV0sWzQsMV0sWzQsMV1dLHBlcmZvcm1BY3Rpb246ZnVuY3Rpb24oTSxTLFIsQSxMLHYsQil7dmFyIHc9di5sZW5ndGgtMTtzd2l0Y2goTCl7Y2FzZSAzOnJldHVybiB2W3ddO2Nhc2UgNDpyZXR1cm4gdlt3LTFdO2Nhc2UgNTpyZXR1cm4gQS5zZXREaXJlY3Rpb24odlt3LTNdKSx2W3ctMV07Y2FzZSA3OkEuc2V0T3B0aW9ucyh2W3ctMV0pLHRoaXMuJD12W3ddO2JyZWFrO2Nhc2UgODp2W3ctMV0rPXZbd10sdGhpcy4kPXZbdy0xXTticmVhaztjYXNlIDEwOnRoaXMuJD1bXTticmVhaztjYXNlIDExOnZbdy0xXS5wdXNoKHZbd10pLHRoaXMuJD12W3ctMV07YnJlYWs7Y2FzZSAxMjp0aGlzLiQ9dlt3LTFdO2JyZWFrO2Nhc2UgMTc6dGhpcy4kPXZbd10udHJpbSgpLEEuc2V0QWNjVGl0bGUodGhpcy4kKTticmVhaztjYXNlIDE4OmNhc2UgMTk6dGhpcy4kPXZbd10udHJpbSgpLEEuc2V0QWNjRGVzY3JpcHRpb24odGhpcy4kKTticmVhaztjYXNlIDIwOkEuYWRkU2VjdGlvbih2W3ddLnN1YnN0cig4KSksdGhpcy4kPXZbd10uc3Vic3RyKDgpO2JyZWFrO2Nhc2UgMjI6QS5jaGVja291dCh2W3ddKTticmVhaztjYXNlIDIzOkEuYnJhbmNoKHZbd10pO2JyZWFrO2Nhc2UgMjQ6QS5icmFuY2godlt3LTJdLHZbd10pO2JyZWFrO2Nhc2UgMjU6QS5jaGVycnlQaWNrKHZbd10sIiIsdm9pZCAwKTticmVhaztjYXNlIDI2OkEuY2hlcnJ5UGljayh2W3ctMl0sIiIsdlt3XSk7YnJlYWs7Y2FzZSAyNzpjYXNlIDI5OkEuY2hlcnJ5UGljayh2W3ctMl0sIiIsIiIpO2JyZWFrO2Nhc2UgMjg6QS5jaGVycnlQaWNrKHZbd10sIiIsdlt3LTJdKTticmVhaztjYXNlIDMwOkEubWVyZ2Uodlt3XSwiIiwiIiwiIik7YnJlYWs7Y2FzZSAzMTpBLm1lcmdlKHZbdy0yXSx2W3ddLCIiLCIiKTticmVhaztjYXNlIDMyOkEubWVyZ2Uodlt3LTJdLCIiLHZbd10sIiIpO2JyZWFrO2Nhc2UgMzM6QS5tZXJnZSh2W3ctMl0sIiIsIiIsdlt3XSk7YnJlYWs7Y2FzZSAzNDpBLm1lcmdlKHZbdy00XSx2W3ddLCIiLHZbdy0yXSk7YnJlYWs7Y2FzZSAzNTpBLm1lcmdlKHZbdy00XSwiIix2W3ddLHZbdy0yXSk7YnJlYWs7Y2FzZSAzNjpBLm1lcmdlKHZbdy00XSwiIix2W3ctMl0sdlt3XSk7YnJlYWs7Y2FzZSAzNzpBLm1lcmdlKHZbdy00XSx2W3ctMl0sdlt3XSwiIik7YnJlYWs7Y2FzZSAzODpBLm1lcmdlKHZbdy00XSx2W3ctMl0sIiIsdlt3XSk7YnJlYWs7Y2FzZSAzOTpBLm1lcmdlKHZbdy00XSx2W3ddLHZbdy0yXSwiIik7YnJlYWs7Y2FzZSA0MDpBLm1lcmdlKHZbdy02XSx2W3ctNF0sdlt3LTJdLHZbd10pO2JyZWFrO2Nhc2UgNDE6QS5tZXJnZSh2W3ctNl0sdlt3XSx2W3ctNF0sdlt3LTJdKTticmVhaztjYXNlIDQyOkEubWVyZ2Uodlt3LTZdLHZbdy00XSx2W3ddLHZbdy0yXSk7YnJlYWs7Y2FzZSA0MzpBLm1lcmdlKHZbdy02XSx2W3ctMl0sdlt3LTRdLHZbd10pO2JyZWFrO2Nhc2UgNDQ6QS5tZXJnZSh2W3ctNl0sdlt3XSx2W3ctMl0sdlt3LTRdKTticmVhaztjYXNlIDQ1OkEubWVyZ2Uodlt3LTZdLHZbdy0yXSx2W3ddLHZbdy00XSk7YnJlYWs7Y2FzZSA0NjpBLmNvbW1pdCh2W3ddKTticmVhaztjYXNlIDQ3OkEuY29tbWl0KCIiLCIiLEEuY29tbWl0VHlwZS5OT1JNQUwsdlt3XSk7YnJlYWs7Y2FzZSA0ODpBLmNvbW1pdCgiIiwiIix2W3ddLCIiKTticmVhaztjYXNlIDQ5OkEuY29tbWl0KCIiLCIiLHZbd10sdlt3LTJdKTticmVhaztjYXNlIDUwOkEuY29tbWl0KCIiLCIiLHZbdy0yXSx2W3ddKTticmVhaztjYXNlIDUxOkEuY29tbWl0KCIiLHZbd10sQS5jb21taXRUeXBlLk5PUk1BTCwiIik7YnJlYWs7Y2FzZSA1MjpBLmNvbW1pdCgiIix2W3ctMl0sQS5jb21taXRUeXBlLk5PUk1BTCx2W3ddKTticmVhaztjYXNlIDUzOkEuY29tbWl0KCIiLHZbd10sQS5jb21taXRUeXBlLk5PUk1BTCx2W3ctMl0pO2JyZWFrO2Nhc2UgNTQ6QS5jb21taXQoIiIsdlt3LTJdLHZbd10sIiIpO2JyZWFrO2Nhc2UgNTU6QS5jb21taXQoIiIsdlt3XSx2W3ctMl0sIiIpO2JyZWFrO2Nhc2UgNTY6QS5jb21taXQoIiIsdlt3LTRdLHZbdy0yXSx2W3ddKTticmVhaztjYXNlIDU3OkEuY29tbWl0KCIiLHZbdy00XSx2W3ddLHZbdy0yXSk7YnJlYWs7Y2FzZSA1ODpBLmNvbW1pdCgiIix2W3ctMl0sdlt3LTRdLHZbd10pO2JyZWFrO2Nhc2UgNTk6QS5jb21taXQoIiIsdlt3XSx2W3ctNF0sdlt3LTJdKTticmVhaztjYXNlIDYwOkEuY29tbWl0KCIiLHZbd10sdlt3LTJdLHZbdy00XSk7YnJlYWs7Y2FzZSA2MTpBLmNvbW1pdCgiIix2W3ctMl0sdlt3XSx2W3ctNF0pO2JyZWFrO2Nhc2UgNjI6QS5jb21taXQodlt3XSwiIixBLmNvbW1pdFR5cGUuTk9STUFMLCIiKTticmVhaztjYXNlIDYzOkEuY29tbWl0KHZbd10sIiIsQS5jb21taXRUeXBlLk5PUk1BTCx2W3ctMl0pO2JyZWFrO2Nhc2UgNjQ6QS5jb21taXQodlt3LTJdLCIiLEEuY29tbWl0VHlwZS5OT1JNQUwsdlt3XSk7YnJlYWs7Y2FzZSA2NTpBLmNvbW1pdCh2W3ctMl0sIiIsdlt3XSwiIik7YnJlYWs7Y2FzZSA2NjpBLmNvbW1pdCh2W3ddLCIiLHZbdy0yXSwiIik7YnJlYWs7Y2FzZSA2NzpBLmNvbW1pdCh2W3ddLHZbdy0yXSxBLmNvbW1pdFR5cGUuTk9STUFMLCIiKTticmVhaztjYXNlIDY4OkEuY29tbWl0KHZbdy0yXSx2W3ddLEEuY29tbWl0VHlwZS5OT1JNQUwsIiIpO2JyZWFrO2Nhc2UgNjk6QS5jb21taXQodlt3LTRdLCIiLHZbdy0yXSx2W3ddKTticmVhaztjYXNlIDcwOkEuY29tbWl0KHZbdy00XSwiIix2W3ddLHZbdy0yXSk7YnJlYWs7Y2FzZSA3MTpBLmNvbW1pdCh2W3ctMl0sIiIsdlt3LTRdLHZbd10pO2JyZWFrO2Nhc2UgNzI6QS5jb21taXQodlt3XSwiIix2W3ctNF0sdlt3LTJdKTticmVhaztjYXNlIDczOkEuY29tbWl0KHZbd10sIiIsdlt3LTJdLHZbdy00XSk7YnJlYWs7Y2FzZSA3NDpBLmNvbW1pdCh2W3ctMl0sIiIsdlt3XSx2W3ctNF0pO2JyZWFrO2Nhc2UgNzU6QS5jb21taXQodlt3LTRdLHZbd10sdlt3LTJdLCIiKTticmVhaztjYXNlIDc2OkEuY29tbWl0KHZbdy00XSx2W3ctMl0sdlt3XSwiIik7YnJlYWs7Y2FzZSA3NzpBLmNvbW1pdCh2W3ctMl0sdlt3XSx2W3ctNF0sIiIpO2JyZWFrO2Nhc2UgNzg6QS5jb21taXQodlt3XSx2W3ctMl0sdlt3LTRdLCIiKTticmVhaztjYXNlIDc5OkEuY29tbWl0KHZbd10sdlt3LTRdLHZbdy0yXSwiIik7YnJlYWs7Y2FzZSA4MDpBLmNvbW1pdCh2W3ctMl0sdlt3LTRdLHZbd10sIiIpO2JyZWFrO2Nhc2UgODE6QS5jb21taXQodlt3LTRdLHZbd10sQS5jb21taXRUeXBlLk5PUk1BTCx2W3ctMl0pO2JyZWFrO2Nhc2UgODI6QS5jb21taXQodlt3LTRdLHZbdy0yXSxBLmNvbW1pdFR5cGUuTk9STUFMLHZbd10pO2JyZWFrO2Nhc2UgODM6QS5jb21taXQodlt3LTJdLHZbd10sQS5jb21taXRUeXBlLk5PUk1BTCx2W3ctNF0pO2JyZWFrO2Nhc2UgODQ6QS5jb21taXQodlt3XSx2W3ctMl0sQS5jb21taXRUeXBlLk5PUk1BTCx2W3ctNF0pO2JyZWFrO2Nhc2UgODU6QS5jb21taXQodlt3XSx2W3ctNF0sQS5jb21taXRUeXBlLk5PUk1BTCx2W3ctMl0pO2JyZWFrO2Nhc2UgODY6QS5jb21taXQodlt3LTJdLHZbdy00XSxBLmNvbW1pdFR5cGUuTk9STUFMLHZbd10pO2JyZWFrO2Nhc2UgODc6QS5jb21taXQodlt3LTZdLHZbdy00XSx2W3ctMl0sdlt3XSk7YnJlYWs7Y2FzZSA4ODpBLmNvbW1pdCh2W3ctNl0sdlt3LTRdLHZbd10sdlt3LTJdKTticmVhaztjYXNlIDg5OkEuY29tbWl0KHZbdy02XSx2W3ctMl0sdlt3LTRdLHZbd10pO2JyZWFrO2Nhc2UgOTA6QS5jb21taXQodlt3LTZdLHZbd10sdlt3LTRdLHZbdy0yXSk7YnJlYWs7Y2FzZSA5MTpBLmNvbW1pdCh2W3ctNl0sdlt3LTJdLHZbd10sdlt3LTRdKTticmVhaztjYXNlIDkyOkEuY29tbWl0KHZbdy02XSx2W3ddLHZbdy0yXSx2W3ctNF0pO2JyZWFrO2Nhc2UgOTM6QS5jb21taXQodlt3LTRdLHZbdy02XSx2W3ctMl0sdlt3XSk7YnJlYWs7Y2FzZSA5NDpBLmNvbW1pdCh2W3ctNF0sdlt3LTZdLHZbd10sdlt3LTJdKTticmVhaztjYXNlIDk1OkEuY29tbWl0KHZbdy0yXSx2W3ctNl0sdlt3LTRdLHZbd10pO2JyZWFrO2Nhc2UgOTY6QS5jb21taXQodlt3XSx2W3ctNl0sdlt3LTRdLHZbdy0yXSk7YnJlYWs7Y2FzZSA5NzpBLmNvbW1pdCh2W3ctMl0sdlt3LTZdLHZbd10sdlt3LTRdKTticmVhaztjYXNlIDk4OkEuY29tbWl0KHZbd10sdlt3LTZdLHZbdy0yXSx2W3ctNF0pO2JyZWFrO2Nhc2UgOTk6QS5jb21taXQodlt3XSx2W3ctNF0sdlt3LTJdLHZbdy02XSk7YnJlYWs7Y2FzZSAxMDA6QS5jb21taXQodlt3LTJdLHZbdy00XSx2W3ddLHZbdy02XSk7YnJlYWs7Y2FzZSAxMDE6QS5jb21taXQodlt3XSx2W3ctMl0sdlt3LTRdLHZbdy02XSk7YnJlYWs7Y2FzZSAxMDI6QS5jb21taXQodlt3LTJdLHZbd10sdlt3LTRdLHZbdy02XSk7YnJlYWs7Y2FzZSAxMDM6QS5jb21taXQodlt3LTRdLHZbdy0yXSx2W3ddLHZbdy02XSk7YnJlYWs7Y2FzZSAxMDQ6QS5jb21taXQodlt3LTRdLHZbd10sdlt3LTJdLHZbdy02XSk7YnJlYWs7Y2FzZSAxMDU6QS5jb21taXQodlt3LTJdLHZbdy00XSx2W3ctNl0sdlt3XSk7YnJlYWs7Y2FzZSAxMDY6QS5jb21taXQodlt3XSx2W3ctNF0sdlt3LTZdLHZbdy0yXSk7YnJlYWs7Y2FzZSAxMDc6QS5jb21taXQodlt3LTJdLHZbd10sdlt3LTZdLHZbdy00XSk7YnJlYWs7Y2FzZSAxMDg6QS5jb21taXQodlt3XSx2W3ctMl0sdlt3LTZdLHZbdy00XSk7YnJlYWs7Y2FzZSAxMDk6QS5jb21taXQodlt3LTRdLHZbdy0yXSx2W3ctNl0sdlt3XSk7YnJlYWs7Y2FzZSAxMTA6QS5jb21taXQodlt3LTRdLHZbd10sdlt3LTZdLHZbdy0yXSk7YnJlYWs7Y2FzZSAxMTE6dGhpcy4kPSIiO2JyZWFrO2Nhc2UgMTEyOnRoaXMuJD12W3ddO2JyZWFrO2Nhc2UgMTEzOnRoaXMuJD1BLmNvbW1pdFR5cGUuTk9STUFMO2JyZWFrO2Nhc2UgMTE0OnRoaXMuJD1BLmNvbW1pdFR5cGUuUkVWRVJTRTticmVhaztjYXNlIDExNTp0aGlzLiQ9QS5jb21taXRUeXBlLkhJR0hMSUdIVDticmVhaztjYXNlIDExODpBLnBhcnNlRGlyZWN0aXZlKCIlJXsiLCJvcGVuX2RpcmVjdGl2ZSIpO2JyZWFrO2Nhc2UgMTE5OkEucGFyc2VEaXJlY3RpdmUodlt3XSwidHlwZV9kaXJlY3RpdmUiKTticmVhaztjYXNlIDEyMDp2W3ddPXZbd10udHJpbSgpLnJlcGxhY2UoLycvZywnIicpLEEucGFyc2VEaXJlY3RpdmUodlt3XSwiYXJnX2RpcmVjdGl2ZSIpO2JyZWFrO2Nhc2UgMTIxOkEucGFyc2VEaXJlY3RpdmUoIn0lJSIsImNsb3NlX2RpcmVjdGl2ZSIsImdpdEdyYXBoIik7YnJlYWt9fSx0YWJsZTpbezM6MSw0OjIsNTozLDY6ZSw4OnIsMTQ6biw0Njo4LDUwOmksNTQ6YX0sezE6WzNdfSx7MzoxMCw0OjIsNTozLDY6ZSw4OnIsMTQ6biw0Njo4LDUwOmksNTQ6YX0sezM6MTEsNDoyLDU6Myw2OmUsODpyLDE0Om4sNDY6OCw1MDppLDU0OmF9LHs3OjEyLDg6cyw5OlsxLDEzXSwxMDpbMSwxNF0sMTE6MTUsMTQ6b30sdChsLFsyLDEyMl0pLHQobCxbMiwxMjNdKSx0KGwsWzIsMTI0XSksezQ3OjE3LDUxOlsxLDE4XX0sezUxOlsyLDExOF19LHsxOlsyLDFdfSx7MTpbMiwyXX0sezg6WzEsMTldfSx7NzoyMCw4OnMsMTE6MTUsMTQ6b30sezk6WzEsMjFdfSx0KHUsWzIsMTBdLHsxMjoyMiwxMzpbMSwyM119KSx0KGgsWzIsOV0pLHs5OlsxLDI1XSw0ODoyNCw1MzpkfSx0KFs5LDUzXSxbMiwxMTldKSx7MTpbMiwzXX0sezg6WzEsMjddfSx7NzoyOCw4OnMsMTE6MTUsMTQ6b30sezg6WzIsN10sMTQ6WzEsMzFdLDE1OjI5LDE2OjMwLDE3OjMyLDE4OjMzLDE5OjM0LDIwOlsxLDM1XSwyMjpbMSwzNl0sMjQ6WzEsMzddLDI1OlsxLDM4XSwyNjozOSwyNzpbMSw0MF0sMjk6WzEsNDRdLDMyOlsxLDQzXSwzNzpbMSw0Ml0sNDA6WzEsNDFdfSx0KGgsWzIsOF0pLHQoZixbMiwxMTZdKSx7NDk6NDUsNTI6WzEsNDZdfSx0KGYsWzIsMTIxXSksezE6WzIsNF19LHs4OlsxLDQ3XX0sdCh1LFsyLDExXSksezQ6NDgsODpyLDE0Om4sNTQ6YX0sdCh1LFsyLDEzXSksdChwLFsyLDE0XSksdChwLFsyLDE1XSksdChwLFsyLDE2XSksezIxOlsxLDQ5XX0sezIzOlsxLDUwXX0sdChwLFsyLDE5XSksdChwLFsyLDIwXSksdChwLFsyLDIxXSksezI4OlsxLDUxXX0sdChwLFsyLDExMV0sezQxOjUyLDMzOlsxLDU1XSwzNDpbMSw1N10sMzU6WzEsNTNdLDM4OlsxLDU0XSw0MjpbMSw1Nl19KSx7Mjg6WzEsNThdfSx7MzM6WzEsNTldLDM1OlsxLDYwXX0sezI4OlsxLDYxXX0sezQ4OjYyLDUzOmR9LHs1MzpbMiwxMjBdfSx7MTpbMiw1XX0sdCh1LFsyLDEyXSksdChwLFsyLDE3XSksdChwLFsyLDE4XSksdChwLFsyLDIyXSksdChwLFsyLDQ2XSksezM0OlsxLDYzXX0sezM5OjY0LDQzOm0sNDQ6Xyw0NTp5fSx7MzQ6WzEsNjhdfSx7MzQ6WzEsNjldfSx0KHAsWzIsMTEyXSksdChwLFsyLDMwXSx7MzM6WzEsNzBdLDM1OlsxLDcyXSwzODpbMSw3MV19KSx7MzQ6WzEsNzNdfSx7MzQ6WzEsNzRdLDM2OlsxLDc1XX0sdChwLFsyLDIzXSx7MzA6WzEsNzZdfSksdChmLFsyLDExN10pLHQocCxbMiw0N10sezMzOlsxLDc4XSwzODpbMSw3N10sNDI6WzEsNzldfSksdChwLFsyLDQ4XSx7MzM6WzEsODFdLDM1OlsxLDgwXSw0MjpbMSw4Ml19KSx0KGIsWzIsMTEzXSksdChiLFsyLDExNF0pLHQoYixbMiwxMTVdKSx0KHAsWzIsNTFdLHszNTpbMSw4M10sMzg6WzEsODRdLDQyOlsxLDg1XX0pLHQocCxbMiw2Ml0sezMzOlsxLDg4XSwzNTpbMSw4Nl0sMzg6WzEsODddfSksezM0OlsxLDg5XX0sezM5OjkwLDQzOm0sNDQ6Xyw0NTp5fSx7MzQ6WzEsOTFdfSx0KHAsWzIsMjVdLHszNTpbMSw5Ml19KSx7MzM6WzEsOTNdfSx7MzM6WzEsOTRdfSx7MzE6WzEsOTVdfSx7Mzk6OTYsNDM6bSw0NDpfLDQ1Onl9LHszNDpbMSw5N119LHszNDpbMSw5OF19LHszNDpbMSw5OV19LHszNDpbMSwxMDBdfSx7MzQ6WzEsMTAxXX0sezM0OlsxLDEwMl19LHszOToxMDMsNDM6bSw0NDpfLDQ1Onl9LHszNDpbMSwxMDRdfSx7MzQ6WzEsMTA1XX0sezM5OjEwNiw0MzptLDQ0Ol8sNDU6eX0sezM0OlsxLDEwN119LHQocCxbMiwzMV0sezM1OlsxLDEwOV0sMzg6WzEsMTA4XX0pLHQocCxbMiwzMl0sezMzOlsxLDExMV0sMzU6WzEsMTEwXX0pLHQocCxbMiwzM10sezMzOlsxLDExMl0sMzg6WzEsMTEzXX0pLHszNDpbMSwxMTRdLDM2OlsxLDExNV19LHszNDpbMSwxMTZdfSx7MzQ6WzEsMTE3XX0sdChwLFsyLDI0XSksdChwLFsyLDQ5XSx7MzM6WzEsMTE4XSw0MjpbMSwxMTldfSksdChwLFsyLDUzXSx7Mzg6WzEsMTIwXSw0MjpbMSwxMjFdfSksdChwLFsyLDYzXSx7MzM6WzEsMTIzXSwzODpbMSwxMjJdfSksdChwLFsyLDUwXSx7MzM6WzEsMTI0XSw0MjpbMSwxMjVdfSksdChwLFsyLDU1XSx7MzU6WzEsMTI2XSw0MjpbMSwxMjddfSksdChwLFsyLDY2XSx7MzM6WzEsMTI5XSwzNTpbMSwxMjhdfSksdChwLFsyLDUyXSx7Mzg6WzEsMTMwXSw0MjpbMSwxMzFdfSksdChwLFsyLDU0XSx7MzU6WzEsMTMyXSw0MjpbMSwxMzNdfSksdChwLFsyLDY3XSx7MzU6WzEsMTM1XSwzODpbMSwxMzRdfSksdChwLFsyLDY0XSx7MzM6WzEsMTM3XSwzODpbMSwxMzZdfSksdChwLFsyLDY1XSx7MzM6WzEsMTM5XSwzNTpbMSwxMzhdfSksdChwLFsyLDY4XSx7MzU6WzEsMTQxXSwzODpbMSwxNDBdfSksezM5OjE0Miw0MzptLDQ0Ol8sNDU6eX0sezM0OlsxLDE0M119LHszNDpbMSwxNDRdfSx7MzQ6WzEsMTQ1XX0sezM0OlsxLDE0Nl19LHszOToxNDcsNDM6bSw0NDpfLDQ1Onl9LHQocCxbMiwyNl0pLHQocCxbMiwyN10pLHQocCxbMiwyOF0pLHQocCxbMiwyOV0pLHszNDpbMSwxNDhdfSx7MzQ6WzEsMTQ5XX0sezM5OjE1MCw0MzptLDQ0Ol8sNDU6eX0sezM0OlsxLDE1MV19LHszOToxNTIsNDM6bSw0NDpfLDQ1Onl9LHszNDpbMSwxNTNdfSx7MzQ6WzEsMTU0XX0sezM0OlsxLDE1NV19LHszNDpbMSwxNTZdfSx7MzQ6WzEsMTU3XX0sezM0OlsxLDE1OF19LHszNDpbMSwxNTldfSx7Mzk6MTYwLDQzOm0sNDQ6Xyw0NTp5fSx7MzQ6WzEsMTYxXX0sezM0OlsxLDE2Ml19LHszNDpbMSwxNjNdfSx7Mzk6MTY0LDQzOm0sNDQ6Xyw0NTp5fSx7MzQ6WzEsMTY1XX0sezM5OjE2Niw0MzptLDQ0Ol8sNDU6eX0sezM0OlsxLDE2N119LHszNDpbMSwxNjhdfSx7MzQ6WzEsMTY5XX0sezM5OjE3MCw0MzptLDQ0Ol8sNDU6eX0sezM0OlsxLDE3MV19LHQocCxbMiwzN10sezM1OlsxLDE3Ml19KSx0KHAsWzIsMzhdLHszODpbMSwxNzNdfSksdChwLFsyLDM2XSx7MzM6WzEsMTc0XX0pLHQocCxbMiwzOV0sezM1OlsxLDE3NV19KSx0KHAsWzIsMzRdLHszODpbMSwxNzZdfSksdChwLFsyLDM1XSx7MzM6WzEsMTc3XX0pLHQocCxbMiw2MF0sezQyOlsxLDE3OF19KSx0KHAsWzIsNzNdLHszMzpbMSwxNzldfSksdChwLFsyLDYxXSx7NDI6WzEsMTgwXX0pLHQocCxbMiw4NF0sezM4OlsxLDE4MV19KSx0KHAsWzIsNzRdLHszMzpbMSwxODJdfSksdChwLFsyLDgzXSx7Mzg6WzEsMTgzXX0pLHQocCxbMiw1OV0sezQyOlsxLDE4NF19KSx0KHAsWzIsNzJdLHszMzpbMSwxODVdfSksdChwLFsyLDU4XSx7NDI6WzEsMTg2XX0pLHQocCxbMiw3OF0sezM1OlsxLDE4N119KSx0KHAsWzIsNzFdLHszMzpbMSwxODhdfSksdChwLFsyLDc3XSx7MzU6WzEsMTg5XX0pLHQocCxbMiw1N10sezQyOlsxLDE5MF19KSx0KHAsWzIsODVdLHszODpbMSwxOTFdfSksdChwLFsyLDU2XSx7NDI6WzEsMTkyXX0pLHQocCxbMiw3OV0sezM1OlsxLDE5M119KSx0KHAsWzIsODBdLHszNTpbMSwxOTRdfSksdChwLFsyLDg2XSx7Mzg6WzEsMTk1XX0pLHQocCxbMiw3MF0sezMzOlsxLDE5Nl19KSx0KHAsWzIsODFdLHszODpbMSwxOTddfSksdChwLFsyLDY5XSx7MzM6WzEsMTk4XX0pLHQocCxbMiw3NV0sezM1OlsxLDE5OV19KSx0KHAsWzIsNzZdLHszNTpbMSwyMDBdfSksdChwLFsyLDgyXSx7Mzg6WzEsMjAxXX0pLHszNDpbMSwyMDJdfSx7Mzk6MjAzLDQzOm0sNDQ6Xyw0NTp5fSx7MzQ6WzEsMjA0XX0sezM0OlsxLDIwNV19LHszOToyMDYsNDM6bSw0NDpfLDQ1Onl9LHszNDpbMSwyMDddfSx7MzQ6WzEsMjA4XX0sezM0OlsxLDIwOV19LHszNDpbMSwyMTBdfSx7Mzk6MjExLDQzOm0sNDQ6Xyw0NTp5fSx7MzQ6WzEsMjEyXX0sezM5OjIxMyw0MzptLDQ0Ol8sNDU6eX0sezM0OlsxLDIxNF19LHszNDpbMSwyMTVdfSx7MzQ6WzEsMjE2XX0sezM0OlsxLDIxN119LHszNDpbMSwyMThdfSx7MzQ6WzEsMjE5XX0sezM0OlsxLDIyMF19LHszOToyMjEsNDM6bSw0NDpfLDQ1Onl9LHszNDpbMSwyMjJdfSx7MzQ6WzEsMjIzXX0sezM0OlsxLDIyNF19LHszOToyMjUsNDM6bSw0NDpfLDQ1Onl9LHszNDpbMSwyMjZdfSx7Mzk6MjI3LDQzOm0sNDQ6Xyw0NTp5fSx7MzQ6WzEsMjI4XX0sezM0OlsxLDIyOV19LHszNDpbMSwyMzBdfSx7Mzk6MjMxLDQzOm0sNDQ6Xyw0NTp5fSx0KHAsWzIsNDBdKSx0KHAsWzIsNDJdKSx0KHAsWzIsNDFdKSx0KHAsWzIsNDNdKSx0KHAsWzIsNDVdKSx0KHAsWzIsNDRdKSx0KHAsWzIsMTAxXSksdChwLFsyLDEwMl0pLHQocCxbMiw5OV0pLHQocCxbMiwxMDBdKSx0KHAsWzIsMTA0XSksdChwLFsyLDEwM10pLHQocCxbMiwxMDhdKSx0KHAsWzIsMTA3XSksdChwLFsyLDEwNl0pLHQocCxbMiwxMDVdKSx0KHAsWzIsMTEwXSksdChwLFsyLDEwOV0pLHQocCxbMiw5OF0pLHQocCxbMiw5N10pLHQocCxbMiw5Nl0pLHQocCxbMiw5NV0pLHQocCxbMiw5M10pLHQocCxbMiw5NF0pLHQocCxbMiw5Ml0pLHQocCxbMiw5MV0pLHQocCxbMiw5MF0pLHQocCxbMiw4OV0pLHQocCxbMiw4N10pLHQocCxbMiw4OF0pXSxkZWZhdWx0QWN0aW9uczp7OTpbMiwxMThdLDEwOlsyLDFdLDExOlsyLDJdLDE5OlsyLDNdLDI3OlsyLDRdLDQ2OlsyLDEyMF0sNDc6WzIsNV19LHBhcnNlRXJyb3I6ZnVuY3Rpb24oTSxTKXtpZihTLnJlY292ZXJhYmxlKXRoaXMudHJhY2UoTSk7ZWxzZXt2YXIgUj1uZXcgRXJyb3IoTSk7dGhyb3cgUi5oYXNoPVMsUn19LHBhcnNlOmZ1bmN0aW9uKE0pe3ZhciBTPXRoaXMsUj1bMF0sQT1bXSxMPVtudWxsXSx2PVtdLEI9dGhpcy50YWJsZSx3PSIiLEQ9MCxOPTAsej0yLFg9MSxjdD12LnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpLEo9T2JqZWN0LmNyZWF0ZSh0aGlzLmxleGVyKSxZPXt5eTp7fX07Zm9yKHZhciAkIGluIHRoaXMueXkpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMueXksJCkmJihZLnl5WyRdPXRoaXMueXlbJF0pO0ouc2V0SW5wdXQoTSxZLnl5KSxZLnl5LmxleGVyPUosWS55eS5wYXJzZXI9dGhpcyx0eXBlb2YgSi55eWxsb2M+InUiJiYoSi55eWxsb2M9e30pO3ZhciBsdD1KLnl5bGxvYzt2LnB1c2gobHQpO3ZhciB1dD1KLm9wdGlvbnMmJkoub3B0aW9ucy5yYW5nZXM7dHlwZW9mIFkueXkucGFyc2VFcnJvcj09ImZ1bmN0aW9uIj90aGlzLnBhcnNlRXJyb3I9WS55eS5wYXJzZUVycm9yOnRoaXMucGFyc2VFcnJvcj1PYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykucGFyc2VFcnJvcjtmdW5jdGlvbiBXKCl7dmFyIFA7cmV0dXJuIFA9QS5wb3AoKXx8Si5sZXgoKXx8WCx0eXBlb2YgUCE9Im51bWJlciImJihQIGluc3RhbmNlb2YgQXJyYXkmJihBPVAsUD1BLnBvcCgpKSxQPVMuc3ltYm9sc19bUF18fFApLFB9Zm9yKHZhciB0dCxLLGl0LFosVj17fSxRLHEsVSxGOzspe2lmKEs9UltSLmxlbmd0aC0xXSx0aGlzLmRlZmF1bHRBY3Rpb25zW0tdP2l0PXRoaXMuZGVmYXVsdEFjdGlvbnNbS106KCh0dD09PW51bGx8fHR5cGVvZiB0dD4idSIpJiYodHQ9VygpKSxpdD1CW0tdJiZCW0tdW3R0XSksdHlwZW9mIGl0PiJ1Inx8IWl0Lmxlbmd0aHx8IWl0WzBdKXt2YXIgaj0iIjtGPVtdO2ZvcihRIGluIEJbS10pdGhpcy50ZXJtaW5hbHNfW1FdJiZRPnomJkYucHVzaCgiJyIrdGhpcy50ZXJtaW5hbHNfW1FdKyInIik7Si5zaG93UG9zaXRpb24/aj0iUGFyc2UgZXJyb3Igb24gbGluZSAiKyhEKzEpK2A6CmArSi5zaG93UG9zaXRpb24oKStgCkV4cGVjdGluZyBgK0Yuam9pbigiLCAiKSsiLCBnb3QgJyIrKHRoaXMudGVybWluYWxzX1t0dF18fHR0KSsiJyI6aj0iUGFyc2UgZXJyb3Igb24gbGluZSAiKyhEKzEpKyI6IFVuZXhwZWN0ZWQgIisodHQ9PVg/ImVuZCBvZiBpbnB1dCI6IiciKyh0aGlzLnRlcm1pbmFsc19bdHRdfHx0dCkrIiciKSx0aGlzLnBhcnNlRXJyb3Ioaix7dGV4dDpKLm1hdGNoLHRva2VuOnRoaXMudGVybWluYWxzX1t0dF18fHR0LGxpbmU6Si55eWxpbmVubyxsb2M6bHQsZXhwZWN0ZWQ6Rn0pfWlmKGl0WzBdaW5zdGFuY2VvZiBBcnJheSYmaXQubGVuZ3RoPjEpdGhyb3cgbmV3IEVycm9yKCJQYXJzZSBFcnJvcjogbXVsdGlwbGUgYWN0aW9ucyBwb3NzaWJsZSBhdCBzdGF0ZTogIitLKyIsIHRva2VuOiAiK3R0KTtzd2l0Y2goaXRbMF0pe2Nhc2UgMTpSLnB1c2godHQpLEwucHVzaChKLnl5dGV4dCksdi5wdXNoKEoueXlsbG9jKSxSLnB1c2goaXRbMV0pLHR0PW51bGwsTj1KLnl5bGVuZyx3PUoueXl0ZXh0LEQ9Si55eWxpbmVubyxsdD1KLnl5bGxvYzticmVhaztjYXNlIDI6aWYocT10aGlzLnByb2R1Y3Rpb25zX1tpdFsxXV1bMV0sVi4kPUxbTC5sZW5ndGgtcV0sVi5fJD17Zmlyc3RfbGluZTp2W3YubGVuZ3RoLShxfHwxKV0uZmlyc3RfbGluZSxsYXN0X2xpbmU6dlt2Lmxlbmd0aC0xXS5sYXN0X2xpbmUsZmlyc3RfY29sdW1uOnZbdi5sZW5ndGgtKHF8fDEpXS5maXJzdF9jb2x1bW4sbGFzdF9jb2x1bW46dlt2Lmxlbmd0aC0xXS5sYXN0X2NvbHVtbn0sdXQmJihWLl8kLnJhbmdlPVt2W3YubGVuZ3RoLShxfHwxKV0ucmFuZ2VbMF0sdlt2Lmxlbmd0aC0xXS5yYW5nZVsxXV0pLFo9dGhpcy5wZXJmb3JtQWN0aW9uLmFwcGx5KFYsW3csTixELFkueXksaXRbMV0sTCx2XS5jb25jYXQoY3QpKSx0eXBlb2YgWjwidSIpcmV0dXJuIFo7cSYmKFI9Ui5zbGljZSgwLC0xKnEqMiksTD1MLnNsaWNlKDAsLTEqcSksdj12LnNsaWNlKDAsLTEqcSkpLFIucHVzaCh0aGlzLnByb2R1Y3Rpb25zX1tpdFsxXV1bMF0pLEwucHVzaChWLiQpLHYucHVzaChWLl8kKSxVPUJbUltSLmxlbmd0aC0yXV1bUltSLmxlbmd0aC0xXV0sUi5wdXNoKFUpO2JyZWFrO2Nhc2UgMzpyZXR1cm4hMH19cmV0dXJuITB9fSxrPWZ1bmN0aW9uKCl7dmFyIEM9e0VPRjoxLHBhcnNlRXJyb3I6ZnVuY3Rpb24oUyxSKXtpZih0aGlzLnl5LnBhcnNlcil0aGlzLnl5LnBhcnNlci5wYXJzZUVycm9yKFMsUik7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoUyl9LHNldElucHV0OmZ1bmN0aW9uKE0sUyl7cmV0dXJuIHRoaXMueXk9U3x8dGhpcy55eXx8e30sdGhpcy5faW5wdXQ9TSx0aGlzLl9tb3JlPXRoaXMuX2JhY2t0cmFjaz10aGlzLmRvbmU9ITEsdGhpcy55eWxpbmVubz10aGlzLnl5bGVuZz0wLHRoaXMueXl0ZXh0PXRoaXMubWF0Y2hlZD10aGlzLm1hdGNoPSIiLHRoaXMuY29uZGl0aW9uU3RhY2s9WyJJTklUSUFMIl0sdGhpcy55eWxsb2M9e2ZpcnN0X2xpbmU6MSxmaXJzdF9jb2x1bW46MCxsYXN0X2xpbmU6MSxsYXN0X2NvbHVtbjowfSx0aGlzLm9wdGlvbnMucmFuZ2VzJiYodGhpcy55eWxsb2MucmFuZ2U9WzAsMF0pLHRoaXMub2Zmc2V0PTAsdGhpc30saW5wdXQ6ZnVuY3Rpb24oKXt2YXIgTT10aGlzLl9pbnB1dFswXTt0aGlzLnl5dGV4dCs9TSx0aGlzLnl5bGVuZysrLHRoaXMub2Zmc2V0KyssdGhpcy5tYXRjaCs9TSx0aGlzLm1hdGNoZWQrPU07dmFyIFM9TS5tYXRjaCgvKD86XHJcbj98XG4pLiovZyk7cmV0dXJuIFM/KHRoaXMueXlsaW5lbm8rKyx0aGlzLnl5bGxvYy5sYXN0X2xpbmUrKyk6dGhpcy55eWxsb2MubGFzdF9jb2x1bW4rKyx0aGlzLm9wdGlvbnMucmFuZ2VzJiZ0aGlzLnl5bGxvYy5yYW5nZVsxXSsrLHRoaXMuX2lucHV0PXRoaXMuX2lucHV0LnNsaWNlKDEpLE19LHVucHV0OmZ1bmN0aW9uKE0pe3ZhciBTPU0ubGVuZ3RoLFI9TS5zcGxpdCgvKD86XHJcbj98XG4pL2cpO3RoaXMuX2lucHV0PU0rdGhpcy5faW5wdXQsdGhpcy55eXRleHQ9dGhpcy55eXRleHQuc3Vic3RyKDAsdGhpcy55eXRleHQubGVuZ3RoLVMpLHRoaXMub2Zmc2V0LT1TO3ZhciBBPXRoaXMubWF0Y2guc3BsaXQoLyg/OlxyXG4/fFxuKS9nKTt0aGlzLm1hdGNoPXRoaXMubWF0Y2guc3Vic3RyKDAsdGhpcy5tYXRjaC5sZW5ndGgtMSksdGhpcy5tYXRjaGVkPXRoaXMubWF0Y2hlZC5zdWJzdHIoMCx0aGlzLm1hdGNoZWQubGVuZ3RoLTEpLFIubGVuZ3RoLTEmJih0aGlzLnl5bGluZW5vLT1SLmxlbmd0aC0xKTt2YXIgTD10aGlzLnl5bGxvYy5yYW5nZTtyZXR1cm4gdGhpcy55eWxsb2M9e2ZpcnN0X2xpbmU6dGhpcy55eWxsb2MuZmlyc3RfbGluZSxsYXN0X2xpbmU6dGhpcy55eWxpbmVubysxLGZpcnN0X2NvbHVtbjp0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4sbGFzdF9jb2x1bW46Uj8oUi5sZW5ndGg9PT1BLmxlbmd0aD90aGlzLnl5bGxvYy5maXJzdF9jb2x1bW46MCkrQVtBLmxlbmd0aC1SLmxlbmd0aF0ubGVuZ3RoLVJbMF0ubGVuZ3RoOnRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbi1TfSx0aGlzLm9wdGlvbnMucmFuZ2VzJiYodGhpcy55eWxsb2MucmFuZ2U9W0xbMF0sTFswXSt0aGlzLnl5bGVuZy1TXSksdGhpcy55eWxlbmc9dGhpcy55eXRleHQubGVuZ3RoLHRoaXN9LG1vcmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbW9yZT0hMCx0aGlzfSxyZWplY3Q6ZnVuY3Rpb24oKXtpZih0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyKXRoaXMuX2JhY2t0cmFjaz0hMDtlbHNlIHJldHVybiB0aGlzLnBhcnNlRXJyb3IoIkxleGljYWwgZXJyb3Igb24gbGluZSAiKyh0aGlzLnl5bGluZW5vKzEpK2AuIFlvdSBjYW4gb25seSBpbnZva2UgcmVqZWN0KCkgaW4gdGhlIGxleGVyIHdoZW4gdGhlIGxleGVyIGlzIG9mIHRoZSBiYWNrdHJhY2tpbmcgcGVyc3Vhc2lvbiAob3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIgPSB0cnVlKS4KYCt0aGlzLnNob3dQb3NpdGlvbigpLHt0ZXh0OiIiLHRva2VuOm51bGwsbGluZTp0aGlzLnl5bGluZW5vfSk7cmV0dXJuIHRoaXN9LGxlc3M6ZnVuY3Rpb24oTSl7dGhpcy51bnB1dCh0aGlzLm1hdGNoLnNsaWNlKE0pKX0scGFzdElucHV0OmZ1bmN0aW9uKCl7dmFyIE09dGhpcy5tYXRjaGVkLnN1YnN0cigwLHRoaXMubWF0Y2hlZC5sZW5ndGgtdGhpcy5tYXRjaC5sZW5ndGgpO3JldHVybihNLmxlbmd0aD4yMD8iLi4uIjoiIikrTS5zdWJzdHIoLTIwKS5yZXBsYWNlKC9cbi9nLCIiKX0sdXBjb21pbmdJbnB1dDpmdW5jdGlvbigpe3ZhciBNPXRoaXMubWF0Y2g7cmV0dXJuIE0ubGVuZ3RoPDIwJiYoTSs9dGhpcy5faW5wdXQuc3Vic3RyKDAsMjAtTS5sZW5ndGgpKSwoTS5zdWJzdHIoMCwyMCkrKE0ubGVuZ3RoPjIwPyIuLi4iOiIiKSkucmVwbGFjZSgvXG4vZywiIil9LHNob3dQb3NpdGlvbjpmdW5jdGlvbigpe3ZhciBNPXRoaXMucGFzdElucHV0KCksUz1uZXcgQXJyYXkoTS5sZW5ndGgrMSkuam9pbigiLSIpO3JldHVybiBNK3RoaXMudXBjb21pbmdJbnB1dCgpK2AKYCtTKyJeIn0sdGVzdF9tYXRjaDpmdW5jdGlvbihNLFMpe3ZhciBSLEEsTDtpZih0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyJiYoTD17eXlsaW5lbm86dGhpcy55eWxpbmVubyx5eWxsb2M6e2ZpcnN0X2xpbmU6dGhpcy55eWxsb2MuZmlyc3RfbGluZSxsYXN0X2xpbmU6dGhpcy5sYXN0X2xpbmUsZmlyc3RfY29sdW1uOnRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbixsYXN0X2NvbHVtbjp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbn0seXl0ZXh0OnRoaXMueXl0ZXh0LG1hdGNoOnRoaXMubWF0Y2gsbWF0Y2hlczp0aGlzLm1hdGNoZXMsbWF0Y2hlZDp0aGlzLm1hdGNoZWQseXlsZW5nOnRoaXMueXlsZW5nLG9mZnNldDp0aGlzLm9mZnNldCxfbW9yZTp0aGlzLl9tb3JlLF9pbnB1dDp0aGlzLl9pbnB1dCx5eTp0aGlzLnl5LGNvbmRpdGlvblN0YWNrOnRoaXMuY29uZGl0aW9uU3RhY2suc2xpY2UoMCksZG9uZTp0aGlzLmRvbmV9LHRoaXMub3B0aW9ucy5yYW5nZXMmJihMLnl5bGxvYy5yYW5nZT10aGlzLnl5bGxvYy5yYW5nZS5zbGljZSgwKSkpLEE9TVswXS5tYXRjaCgvKD86XHJcbj98XG4pLiovZyksQSYmKHRoaXMueXlsaW5lbm8rPUEubGVuZ3RoKSx0aGlzLnl5bGxvYz17Zmlyc3RfbGluZTp0aGlzLnl5bGxvYy5sYXN0X2xpbmUsbGFzdF9saW5lOnRoaXMueXlsaW5lbm8rMSxmaXJzdF9jb2x1bW46dGhpcy55eWxsb2MubGFzdF9jb2x1bW4sbGFzdF9jb2x1bW46QT9BW0EubGVuZ3RoLTFdLmxlbmd0aC1BW0EubGVuZ3RoLTFdLm1hdGNoKC9ccj9cbj8vKVswXS5sZW5ndGg6dGhpcy55eWxsb2MubGFzdF9jb2x1bW4rTVswXS5sZW5ndGh9LHRoaXMueXl0ZXh0Kz1NWzBdLHRoaXMubWF0Y2grPU1bMF0sdGhpcy5tYXRjaGVzPU0sdGhpcy55eWxlbmc9dGhpcy55eXRleHQubGVuZ3RoLHRoaXMub3B0aW9ucy5yYW5nZXMmJih0aGlzLnl5bGxvYy5yYW5nZT1bdGhpcy5vZmZzZXQsdGhpcy5vZmZzZXQrPXRoaXMueXlsZW5nXSksdGhpcy5fbW9yZT0hMSx0aGlzLl9iYWNrdHJhY2s9ITEsdGhpcy5faW5wdXQ9dGhpcy5faW5wdXQuc2xpY2UoTVswXS5sZW5ndGgpLHRoaXMubWF0Y2hlZCs9TVswXSxSPXRoaXMucGVyZm9ybUFjdGlvbi5jYWxsKHRoaXMsdGhpcy55eSx0aGlzLFMsdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXSksdGhpcy5kb25lJiZ0aGlzLl9pbnB1dCYmKHRoaXMuZG9uZT0hMSksUilyZXR1cm4gUjtpZih0aGlzLl9iYWNrdHJhY2spe2Zvcih2YXIgdiBpbiBMKXRoaXNbdl09TFt2XTtyZXR1cm4hMX1yZXR1cm4hMX0sbmV4dDpmdW5jdGlvbigpe2lmKHRoaXMuZG9uZSlyZXR1cm4gdGhpcy5FT0Y7dGhpcy5faW5wdXR8fCh0aGlzLmRvbmU9ITApO3ZhciBNLFMsUixBO3RoaXMuX21vcmV8fCh0aGlzLnl5dGV4dD0iIix0aGlzLm1hdGNoPSIiKTtmb3IodmFyIEw9dGhpcy5fY3VycmVudFJ1bGVzKCksdj0wO3Y8TC5sZW5ndGg7disrKWlmKFI9dGhpcy5faW5wdXQubWF0Y2godGhpcy5ydWxlc1tMW3ZdXSksUiYmKCFTfHxSWzBdLmxlbmd0aD5TWzBdLmxlbmd0aCkpe2lmKFM9UixBPXYsdGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlcil7aWYoTT10aGlzLnRlc3RfbWF0Y2goUixMW3ZdKSxNIT09ITEpcmV0dXJuIE07aWYodGhpcy5fYmFja3RyYWNrKXtTPSExO2NvbnRpbnVlfWVsc2UgcmV0dXJuITF9ZWxzZSBpZighdGhpcy5vcHRpb25zLmZsZXgpYnJlYWt9cmV0dXJuIFM/KE09dGhpcy50ZXN0X21hdGNoKFMsTFtBXSksTSE9PSExP006ITEpOnRoaXMuX2lucHV0PT09IiI/dGhpcy5FT0Y6dGhpcy5wYXJzZUVycm9yKCJMZXhpY2FsIGVycm9yIG9uIGxpbmUgIisodGhpcy55eWxpbmVubysxKStgLiBVbnJlY29nbml6ZWQgdGV4dC4KYCt0aGlzLnNob3dQb3NpdGlvbigpLHt0ZXh0OiIiLHRva2VuOm51bGwsbGluZTp0aGlzLnl5bGluZW5vfSl9LGxleDpmdW5jdGlvbigpe3ZhciBTPXRoaXMubmV4dCgpO3JldHVybiBTfHx0aGlzLmxleCgpfSxiZWdpbjpmdW5jdGlvbihTKXt0aGlzLmNvbmRpdGlvblN0YWNrLnB1c2goUyl9LHBvcFN0YXRlOmZ1bmN0aW9uKCl7dmFyIFM9dGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMTtyZXR1cm4gUz4wP3RoaXMuY29uZGl0aW9uU3RhY2sucG9wKCk6dGhpcy5jb25kaXRpb25TdGFja1swXX0sX2N1cnJlbnRSdWxlczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCYmdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXT90aGlzLmNvbmRpdGlvbnNbdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXV0ucnVsZXM6dGhpcy5jb25kaXRpb25zLklOSVRJQUwucnVsZXN9LHRvcFN0YXRlOmZ1bmN0aW9uKFMpe3JldHVybiBTPXRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTEtTWF0aC5hYnMoU3x8MCksUz49MD90aGlzLmNvbmRpdGlvblN0YWNrW1NdOiJJTklUSUFMIn0scHVzaFN0YXRlOmZ1bmN0aW9uKFMpe3RoaXMuYmVnaW4oUyl9LHN0YXRlU3RhY2tTaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RofSxvcHRpb25zOnsiY2FzZS1pbnNlbnNpdGl2ZSI6ITB9LHBlcmZvcm1BY3Rpb246ZnVuY3Rpb24oUyxSLEEsTCl7c3dpdGNoKEEpe2Nhc2UgMDpyZXR1cm4gdGhpcy5iZWdpbigib3Blbl9kaXJlY3RpdmUiKSw1MDtjYXNlIDE6cmV0dXJuIHRoaXMuYmVnaW4oInR5cGVfZGlyZWN0aXZlIiksNTE7Y2FzZSAyOnJldHVybiB0aGlzLnBvcFN0YXRlKCksdGhpcy5iZWdpbigiYXJnX2RpcmVjdGl2ZSIpLDk7Y2FzZSAzOnJldHVybiB0aGlzLnBvcFN0YXRlKCksdGhpcy5wb3BTdGF0ZSgpLDUzO2Nhc2UgNDpyZXR1cm4gNTI7Y2FzZSA1OnJldHVybiB0aGlzLmJlZ2luKCJhY2NfdGl0bGUiKSwyMDtjYXNlIDY6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSwiYWNjX3RpdGxlX3ZhbHVlIjtjYXNlIDc6cmV0dXJuIHRoaXMuYmVnaW4oImFjY19kZXNjciIpLDIyO2Nhc2UgODpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLCJhY2NfZGVzY3JfdmFsdWUiO2Nhc2UgOTp0aGlzLmJlZ2luKCJhY2NfZGVzY3JfbXVsdGlsaW5lIik7YnJlYWs7Y2FzZSAxMDp0aGlzLnBvcFN0YXRlKCk7YnJlYWs7Y2FzZSAxMTpyZXR1cm4iYWNjX2Rlc2NyX211bHRpbGluZV92YWx1ZSI7Y2FzZSAxMjpyZXR1cm4gMTQ7Y2FzZSAxMzpicmVhaztjYXNlIDE0OmJyZWFrO2Nhc2UgMTU6cmV0dXJuIDY7Y2FzZSAxNjpyZXR1cm4gNDA7Y2FzZSAxNzpyZXR1cm4gMzM7Y2FzZSAxODpyZXR1cm4gMzg7Y2FzZSAxOTpyZXR1cm4gNDI7Y2FzZSAyMDpyZXR1cm4gNDM7Y2FzZSAyMTpyZXR1cm4gNDQ7Y2FzZSAyMjpyZXR1cm4gNDU7Y2FzZSAyMzpyZXR1cm4gMzU7Y2FzZSAyNDpyZXR1cm4gMjk7Y2FzZSAyNTpyZXR1cm4gMzA7Y2FzZSAyNjpyZXR1cm4gMzc7Y2FzZSAyNzpyZXR1cm4gMzI7Y2FzZSAyODpyZXR1cm4gMjc7Y2FzZSAyOTpyZXR1cm4gMTA7Y2FzZSAzMDpyZXR1cm4gMTA7Y2FzZSAzMTpyZXR1cm4gOTtjYXNlIDMyOnJldHVybiJDQVJFVCI7Y2FzZSAzMzp0aGlzLmJlZ2luKCJvcHRpb25zIik7YnJlYWs7Y2FzZSAzNDp0aGlzLnBvcFN0YXRlKCk7YnJlYWs7Y2FzZSAzNTpyZXR1cm4gMTM7Y2FzZSAzNjpyZXR1cm4gMzY7Y2FzZSAzNzp0aGlzLmJlZ2luKCJzdHJpbmciKTticmVhaztjYXNlIDM4OnRoaXMucG9wU3RhdGUoKTticmVhaztjYXNlIDM5OnJldHVybiAzNDtjYXNlIDQwOnJldHVybiAzMTtjYXNlIDQxOnJldHVybiAyODtjYXNlIDQyOnJldHVybiA4fX0scnVsZXM6Wy9eKD86JSVceykvaSwvXig/OigoPzooPyFcfSUlKVteOi5dKSopKS9pLC9eKD86OikvaSwvXig/Olx9JSUpL2ksL14oPzooKD86KD8hXH0lJSkufFxuKSopKS9pLC9eKD86YWNjVGl0bGVccyo6XHMqKS9pLC9eKD86KD8hXG58fCkqW15cbl0qKS9pLC9eKD86YWNjRGVzY3Jccyo6XHMqKS9pLC9eKD86KD8hXG58fCkqW15cbl0qKS9pLC9eKD86YWNjRGVzY3Jccypce1xzKikvaSwvXig/OltcfV0pL2ksL14oPzpbXlx9XSopL2ksL14oPzooXHI/XG4pKykvaSwvXig/OiNbXlxuXSopL2ksL14oPzolW15cbl0qKS9pLC9eKD86Z2l0R3JhcGhcYikvaSwvXig/OmNvbW1pdCg/PVxzfCQpKS9pLC9eKD86aWQ6KS9pLC9eKD86dHlwZTopL2ksL14oPzptc2c6KS9pLC9eKD86Tk9STUFMXGIpL2ksL14oPzpSRVZFUlNFXGIpL2ksL14oPzpISUdITElHSFRcYikvaSwvXig/OnRhZzopL2ksL14oPzpicmFuY2goPz1cc3wkKSkvaSwvXig/Om9yZGVyOikvaSwvXig/Om1lcmdlKD89XHN8JCkpL2ksL14oPzpjaGVycnktcGljayg/PVxzfCQpKS9pLC9eKD86Y2hlY2tvdXQoPz1cc3wkKSkvaSwvXig/OkxSXGIpL2ksL14oPzpCVFxiKS9pLC9eKD86OikvaSwvXig/OlxeKS9pLC9eKD86b3B0aW9uc1xyP1xuKS9pLC9eKD86WyBcclxuXHRdK2VuZFxiKS9pLC9eKD86W1xzXFNdKyg/PVsgXHJcblx0XStlbmQpKS9pLC9eKD86WyJdWyJdKS9pLC9eKD86WyJdKS9pLC9eKD86WyJdKS9pLC9eKD86W14iXSopL2ksL14oPzpbMC05XSsoPz1cc3wkKSkvaSwvXig/Olx3KFstXC4vXHddKlstXHddKT8pL2ksL14oPzokKS9pLC9eKD86XHMrKS9pXSxjb25kaXRpb25zOnthY2NfZGVzY3JfbXVsdGlsaW5lOntydWxlczpbMTAsMTFdLGluY2x1c2l2ZTohMX0sYWNjX2Rlc2NyOntydWxlczpbOF0saW5jbHVzaXZlOiExfSxhY2NfdGl0bGU6e3J1bGVzOls2XSxpbmNsdXNpdmU6ITF9LGNsb3NlX2RpcmVjdGl2ZTp7cnVsZXM6W10saW5jbHVzaXZlOiExfSxhcmdfZGlyZWN0aXZlOntydWxlczpbMyw0XSxpbmNsdXNpdmU6ITF9LHR5cGVfZGlyZWN0aXZlOntydWxlczpbMiwzXSxpbmNsdXNpdmU6ITF9LG9wZW5fZGlyZWN0aXZlOntydWxlczpbMV0saW5jbHVzaXZlOiExfSxvcHRpb25zOntydWxlczpbMzQsMzVdLGluY2x1c2l2ZTohMX0sc3RyaW5nOntydWxlczpbMzgsMzldLGluY2x1c2l2ZTohMX0sSU5JVElBTDp7cnVsZXM6WzAsNSw3LDksMTIsMTMsMTQsMTUsMTYsMTcsMTgsMTksMjAsMjEsMjIsMjMsMjQsMjUsMjYsMjcsMjgsMjksMzAsMzEsMzIsMzMsMzYsMzcsNDAsNDEsNDIsNDNdLGluY2x1c2l2ZTohMH19fTtyZXR1cm4gQ30oKTt4LmxleGVyPWs7ZnVuY3Rpb24gVCgpe3RoaXMueXk9e319cmV0dXJuIFQucHJvdG90eXBlPXgseC5QYXJzZXI9VCxuZXcgVH0oKTtoZy5wYXJzZXI9aGc7Y29uc3QgQlg9dD0+dC5tYXRjaCgvXlxzKmdpdEdyYXBoLykhPT1udWxsO2xldCBmZz0iIixsMT0iIixkZz0iIjtjb25zdCBwZz10PT5haSh0LG50KCkpLGNpPWZ1bmN0aW9uKCl7Zmc9IiIsZGc9IiIsbDE9IiJ9LFluPWZ1bmN0aW9uKHQpe2ZnPXBnKHQpLnJlcGxhY2UoL15ccysvZywiIil9LHVpPWZ1bmN0aW9uKCl7cmV0dXJuIGZnfHxsMX0saGk9ZnVuY3Rpb24odCl7ZGc9cGcodCkucmVwbGFjZSgvXG5ccysvZyxgCmApfSxmaT1mdW5jdGlvbigpe3JldHVybiBkZ30sYzE9ZnVuY3Rpb24odCl7bDE9cGcodCl9LHUxPWZ1bmN0aW9uKCl7cmV0dXJuIGwxfTtsZXQgaDE9bnQoKS5naXRHcmFwaC5tYWluQnJhbmNoTmFtZSxEWD1udCgpLmdpdEdyYXBoLm1haW5CcmFuY2hPcmRlcixrcj17fSxjbj1udWxsLERjPXt9O0RjW2gxXT17bmFtZTpoMSxvcmRlcjpEWH07bGV0IHByPXt9O3ByW2gxXT1jbjtsZXQgUnI9aDEsVnc9IkxSIixZcz0wO2Z1bmN0aW9uIGdnKCl7cmV0dXJuIGx3KHtsZW5ndGg6N30pfWNvbnN0IE9YPWZ1bmN0aW9uKHQsZSxyKXtYZS5wYXJzZURpcmVjdGl2ZSh0aGlzLHQsZSxyKX07ZnVuY3Rpb24gRlgodCxlKXtjb25zdCByPU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIHQucmVkdWNlKChuLGkpPT57Y29uc3QgYT1lKGkpO3JldHVybiByW2FdfHwoclthXT0hMCxuLnB1c2goaSkpLG59LFtdKX1jb25zdCBQWD1mdW5jdGlvbih0KXtWdz10fTtsZXQgenc9e307Y29uc3QgcVg9ZnVuY3Rpb24odCl7SC5kZWJ1Zygib3B0aW9ucyBzdHIiLHQpLHQ9dCYmdC50cmltKCksdD10fHwie30iO3RyeXt6dz1KU09OLnBhcnNlKHQpfWNhdGNoKGUpe0guZXJyb3IoImVycm9yIHdoaWxlIHBhcnNpbmcgZ2l0R3JhcGggb3B0aW9ucyIsZS5tZXNzYWdlKX19LFZYPWZ1bmN0aW9uKCl7cmV0dXJuIHp3fSx6WD1mdW5jdGlvbih0LGUscixuKXtILmRlYnVnKCJFbnRlcmluZyBjb21taXQ6Iix0LGUscixuKSxlPXBlLnNhbml0aXplVGV4dChlLG50KCkpLHQ9cGUuc2FuaXRpemVUZXh0KHQsbnQoKSksbj1wZS5zYW5pdGl6ZVRleHQobixudCgpKTtjb25zdCBpPXtpZDplfHxZcysiLSIrZ2coKSxtZXNzYWdlOnQsc2VxOllzKyssdHlwZTpyfHxPYy5OT1JNQUwsdGFnOm58fCIiLHBhcmVudHM6Y249PW51bGw/W106W2NuLmlkXSxicmFuY2g6UnJ9O2NuPWksa3JbaS5pZF09aSxwcltScl09aS5pZCxILmRlYnVnKCJpbiBwdXNoQ29tbWl0ICIraS5pZCl9LFlYPWZ1bmN0aW9uKHQsZSl7aWYodD1wZS5zYW5pdGl6ZVRleHQodCxudCgpKSx0eXBlb2YgcHJbdF0+InUiKXByW3RdPWNuIT1udWxsP2NuLmlkOm51bGwsRGNbdF09e25hbWU6dCxvcmRlcjplP3BhcnNlSW50KGUsMTApOm51bGx9LFl3KHQpLEguZGVidWcoImluIGNyZWF0ZUJyYW5jaCIpO2Vsc2V7bGV0IHI9bmV3IEVycm9yKCdUcnlpbmcgdG8gY3JlYXRlIGFuIGV4aXN0aW5nIGJyYW5jaC4gKEhlbHA6IEVpdGhlciB1c2UgYSBuZXcgbmFtZSBpZiB5b3Ugd2FudCBjcmVhdGUgYSBuZXcgYnJhbmNoIG9yIHRyeSB1c2luZyAiY2hlY2tvdXQgJyt0KyciKScpO3Rocm93IHIuaGFzaD17dGV4dDoiYnJhbmNoICIrdCx0b2tlbjoiYnJhbmNoICIrdCxsaW5lOiIxIixsb2M6e2ZpcnN0X2xpbmU6MSxsYXN0X2xpbmU6MSxmaXJzdF9jb2x1bW46MSxsYXN0X2NvbHVtbjoxfSxleHBlY3RlZDpbJyJjaGVja291dCAnK3QrJyInXX0scn19LFVYPWZ1bmN0aW9uKHQsZSxyLG4pe3Q9cGUuc2FuaXRpemVUZXh0KHQsbnQoKSksZT1wZS5zYW5pdGl6ZVRleHQoZSxudCgpKTtjb25zdCBpPWtyW3ByW1JyXV0sYT1rcltwclt0XV07aWYoUnI9PT10KXtsZXQgbz1uZXcgRXJyb3IoJ0luY29ycmVjdCB1c2FnZSBvZiAibWVyZ2UiLiBDYW5ub3QgbWVyZ2UgYSBicmFuY2ggdG8gaXRzZWxmJyk7dGhyb3cgby5oYXNoPXt0ZXh0OiJtZXJnZSAiK3QsdG9rZW46Im1lcmdlICIrdCxsaW5lOiIxIixsb2M6e2ZpcnN0X2xpbmU6MSxsYXN0X2xpbmU6MSxmaXJzdF9jb2x1bW46MSxsYXN0X2NvbHVtbjoxfSxleHBlY3RlZDpbImJyYW5jaCBhYmMiXX0sb31lbHNlIGlmKHR5cGVvZiBpPiJ1Inx8IWkpe2xldCBvPW5ldyBFcnJvcignSW5jb3JyZWN0IHVzYWdlIG9mICJtZXJnZSIuIEN1cnJlbnQgYnJhbmNoICgnK1JyKyIpaGFzIG5vIGNvbW1pdHMiKTt0aHJvdyBvLmhhc2g9e3RleHQ6Im1lcmdlICIrdCx0b2tlbjoibWVyZ2UgIit0LGxpbmU6IjEiLGxvYzp7Zmlyc3RfbGluZToxLGxhc3RfbGluZToxLGZpcnN0X2NvbHVtbjoxLGxhc3RfY29sdW1uOjF9LGV4cGVjdGVkOlsiY29tbWl0Il19LG99ZWxzZSBpZih0eXBlb2YgcHJbdF0+InUiKXtsZXQgbz1uZXcgRXJyb3IoJ0luY29ycmVjdCB1c2FnZSBvZiAibWVyZ2UiLiBCcmFuY2ggdG8gYmUgbWVyZ2VkICgnK3QrIikgZG9lcyBub3QgZXhpc3QiKTt0aHJvdyBvLmhhc2g9e3RleHQ6Im1lcmdlICIrdCx0b2tlbjoibWVyZ2UgIit0LGxpbmU6IjEiLGxvYzp7Zmlyc3RfbGluZToxLGxhc3RfbGluZToxLGZpcnN0X2NvbHVtbjoxLGxhc3RfY29sdW1uOjF9LGV4cGVjdGVkOlsiYnJhbmNoICIrdF19LG99ZWxzZSBpZih0eXBlb2YgYT4idSJ8fCFhKXtsZXQgbz1uZXcgRXJyb3IoJ0luY29ycmVjdCB1c2FnZSBvZiAibWVyZ2UiLiBCcmFuY2ggdG8gYmUgbWVyZ2VkICgnK3QrIikgaGFzIG5vIGNvbW1pdHMiKTt0aHJvdyBvLmhhc2g9e3RleHQ6Im1lcmdlICIrdCx0b2tlbjoibWVyZ2UgIit0LGxpbmU6IjEiLGxvYzp7Zmlyc3RfbGluZToxLGxhc3RfbGluZToxLGZpcnN0X2NvbHVtbjoxLGxhc3RfY29sdW1uOjF9LGV4cGVjdGVkOlsnImNvbW1pdCInXX0sb31lbHNlIGlmKGk9PT1hKXtsZXQgbz1uZXcgRXJyb3IoJ0luY29ycmVjdCB1c2FnZSBvZiAibWVyZ2UiLiBCb3RoIGJyYW5jaGVzIGhhdmUgc2FtZSBoZWFkJyk7dGhyb3cgby5oYXNoPXt0ZXh0OiJtZXJnZSAiK3QsdG9rZW46Im1lcmdlICIrdCxsaW5lOiIxIixsb2M6e2ZpcnN0X2xpbmU6MSxsYXN0X2xpbmU6MSxmaXJzdF9jb2x1bW46MSxsYXN0X2NvbHVtbjoxfSxleHBlY3RlZDpbImJyYW5jaCBhYmMiXX0sb31lbHNlIGlmKGUmJnR5cGVvZiBrcltlXTwidSIpe2xldCBvPW5ldyBFcnJvcignSW5jb3JyZWN0IHVzYWdlIG9mICJtZXJnZSIuIENvbW1pdCB3aXRoIGlkOicrZSsiIGFscmVhZHkgZXhpc3RzLCB1c2UgZGlmZmVyZW50IGN1c3RvbSBJZCIpO3Rocm93IG8uaGFzaD17dGV4dDoibWVyZ2UgIit0K2UrcituLHRva2VuOiJtZXJnZSAiK3QrZStyK24sbGluZToiMSIsbG9jOntmaXJzdF9saW5lOjEsbGFzdF9saW5lOjEsZmlyc3RfY29sdW1uOjEsbGFzdF9jb2x1bW46MX0sZXhwZWN0ZWQ6WyJtZXJnZSAiK3QrIiAiK2UrIl9VTklRVUUgIityKyIgIituXX0sb31jb25zdCBzPXtpZDplfHxZcysiLSIrZ2coKSxtZXNzYWdlOiJtZXJnZWQgYnJhbmNoICIrdCsiIGludG8gIitScixzZXE6WXMrKyxwYXJlbnRzOltjbj09bnVsbD9udWxsOmNuLmlkLHByW3RdXSxicmFuY2g6UnIsdHlwZTpPYy5NRVJHRSxjdXN0b21UeXBlOnIsY3VzdG9tSWQ6ISFlLHRhZzpufHwiIn07Y249cyxrcltzLmlkXT1zLHByW1JyXT1zLmlkLEguZGVidWcocHIpLEguZGVidWcoImluIG1lcmdlQnJhbmNoIil9LFdYPWZ1bmN0aW9uKHQsZSxyKXtpZihILmRlYnVnKCJFbnRlcmluZyBjaGVycnlQaWNrOiIsdCxlLHIpLHQ9cGUuc2FuaXRpemVUZXh0KHQsbnQoKSksZT1wZS5zYW5pdGl6ZVRleHQoZSxudCgpKSxyPXBlLnNhbml0aXplVGV4dChyLG50KCkpLCF0fHx0eXBlb2Yga3JbdF0+InUiKXtsZXQgYT1uZXcgRXJyb3IoJ0luY29ycmVjdCB1c2FnZSBvZiAiY2hlcnJ5UGljayIuIFNvdXJjZSBjb21taXQgaWQgc2hvdWxkIGV4aXN0IGFuZCBwcm92aWRlZCcpO3Rocm93IGEuaGFzaD17dGV4dDoiY2hlcnJ5UGljayAiK3QrIiAiK2UsdG9rZW46ImNoZXJyeVBpY2sgIit0KyIgIitlLGxpbmU6IjEiLGxvYzp7Zmlyc3RfbGluZToxLGxhc3RfbGluZToxLGZpcnN0X2NvbHVtbjoxLGxhc3RfY29sdW1uOjF9LGV4cGVjdGVkOlsiY2hlcnJ5LXBpY2sgYWJjIl19LGF9bGV0IG49a3JbdF0saT1uLmJyYW5jaDtpZihuLnR5cGU9PT1PYy5NRVJHRSl7bGV0IGE9bmV3IEVycm9yKCdJbmNvcnJlY3QgdXNhZ2Ugb2YgImNoZXJyeVBpY2siLiBTb3VyY2UgY29tbWl0IHNob3VsZCBub3QgYmUgYSBtZXJnZSBjb21taXQnKTt0aHJvdyBhLmhhc2g9e3RleHQ6ImNoZXJyeVBpY2sgIit0KyIgIitlLHRva2VuOiJjaGVycnlQaWNrICIrdCsiICIrZSxsaW5lOiIxIixsb2M6e2ZpcnN0X2xpbmU6MSxsYXN0X2xpbmU6MSxmaXJzdF9jb2x1bW46MSxsYXN0X2NvbHVtbjoxfSxleHBlY3RlZDpbImNoZXJyeS1waWNrIGFiYyJdfSxhfWlmKCFlfHx0eXBlb2Yga3JbZV0+InUiKXtpZihpPT09UnIpe2xldCBvPW5ldyBFcnJvcignSW5jb3JyZWN0IHVzYWdlIG9mICJjaGVycnlQaWNrIi4gU291cmNlIGNvbW1pdCBpcyBhbHJlYWR5IG9uIGN1cnJlbnQgYnJhbmNoJyk7dGhyb3cgby5oYXNoPXt0ZXh0OiJjaGVycnlQaWNrICIrdCsiICIrZSx0b2tlbjoiY2hlcnJ5UGljayAiK3QrIiAiK2UsbGluZToiMSIsbG9jOntmaXJzdF9saW5lOjEsbGFzdF9saW5lOjEsZmlyc3RfY29sdW1uOjEsbGFzdF9jb2x1bW46MX0sZXhwZWN0ZWQ6WyJjaGVycnktcGljayBhYmMiXX0sb31jb25zdCBhPWtyW3ByW1JyXV07aWYodHlwZW9mIGE+InUifHwhYSl7bGV0IG89bmV3IEVycm9yKCdJbmNvcnJlY3QgdXNhZ2Ugb2YgImNoZXJyeS1waWNrIi4gQ3VycmVudCBicmFuY2ggKCcrUnIrIiloYXMgbm8gY29tbWl0cyIpO3Rocm93IG8uaGFzaD17dGV4dDoiY2hlcnJ5UGljayAiK3QrIiAiK2UsdG9rZW46ImNoZXJyeVBpY2sgIit0KyIgIitlLGxpbmU6IjEiLGxvYzp7Zmlyc3RfbGluZToxLGxhc3RfbGluZToxLGZpcnN0X2NvbHVtbjoxLGxhc3RfY29sdW1uOjF9LGV4cGVjdGVkOlsiY2hlcnJ5LXBpY2sgYWJjIl19LG99Y29uc3Qgcz17aWQ6WXMrIi0iK2dnKCksbWVzc2FnZToiY2hlcnJ5LXBpY2tlZCAiK24rIiBpbnRvICIrUnIsc2VxOllzKysscGFyZW50czpbY249PW51bGw/bnVsbDpjbi5pZCxuLmlkXSxicmFuY2g6UnIsdHlwZTpPYy5DSEVSUllfUElDSyx0YWc6ciE9bnVsbD9yOiJjaGVycnktcGljazoiK24uaWR9O2NuPXMsa3Jbcy5pZF09cyxwcltScl09cy5pZCxILmRlYnVnKHByKSxILmRlYnVnKCJpbiBjaGVycnlQaWNrIil9fSxZdz1mdW5jdGlvbih0KXtpZih0PXBlLnNhbml0aXplVGV4dCh0LG50KCkpLHR5cGVvZiBwclt0XT4idSIpe2xldCBlPW5ldyBFcnJvcignVHJ5aW5nIHRvIGNoZWNrb3V0IGJyYW5jaCB3aGljaCBpcyBub3QgeWV0IGNyZWF0ZWQuIChIZWxwIHRyeSB1c2luZyAiYnJhbmNoICcrdCsnIiknKTt0aHJvdyBlLmhhc2g9e3RleHQ6ImNoZWNrb3V0ICIrdCx0b2tlbjoiY2hlY2tvdXQgIit0LGxpbmU6IjEiLGxvYzp7Zmlyc3RfbGluZToxLGxhc3RfbGluZToxLGZpcnN0X2NvbHVtbjoxLGxhc3RfY29sdW1uOjF9LGV4cGVjdGVkOlsnImJyYW5jaCAnK3QrJyInXX0sZX1lbHNle1JyPXQ7Y29uc3QgZT1wcltScl07Y249a3JbZV19fTtmdW5jdGlvbiBVdyh0LGUscil7Y29uc3Qgbj10LmluZGV4T2YoZSk7bj09PS0xP3QucHVzaChyKTp0LnNwbGljZShuLDEscil9ZnVuY3Rpb24gV3codCl7Y29uc3QgZT10LnJlZHVjZSgoaSxhKT0+aS5zZXE+YS5zZXE/aTphLHRbMF0pO2xldCByPSIiO3QuZm9yRWFjaChmdW5jdGlvbihpKXtpPT09ZT9yKz0iCSoiOnIrPSIJfCJ9KTtjb25zdCBuPVtyLGUuaWQsZS5zZXFdO2ZvcihsZXQgaSBpbiBwcilwcltpXT09PWUuaWQmJm4ucHVzaChpKTtpZihILmRlYnVnKG4uam9pbigiICIpKSxlLnBhcmVudHMmJmUucGFyZW50cy5sZW5ndGg9PTIpe2NvbnN0IGk9a3JbZS5wYXJlbnRzWzBdXTtVdyh0LGUsaSksdC5wdXNoKGtyW2UucGFyZW50c1sxXV0pfWVsc2V7aWYoZS5wYXJlbnRzLmxlbmd0aD09MClyZXR1cm47e2NvbnN0IGk9a3JbZS5wYXJlbnRzXTtVdyh0LGUsaSl9fXQ9RlgodCxpPT5pLmlkKSxXdyh0KX1jb25zdCBIWD1mdW5jdGlvbigpe0guZGVidWcoa3IpO2NvbnN0IHQ9SHcoKVswXTtXdyhbdF0pfSxHWD1mdW5jdGlvbigpe2tyPXt9LGNuPW51bGw7bGV0IHQ9bnQoKS5naXRHcmFwaC5tYWluQnJhbmNoTmFtZSxlPW50KCkuZ2l0R3JhcGgubWFpbkJyYW5jaE9yZGVyO3ByPXt9LHByW3RdPW51bGwsRGM9e30sRGNbdF09e25hbWU6dCxvcmRlcjplfSxScj10LFlzPTAsY2koKX0salg9ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LnZhbHVlcyhEYykubWFwKChlLHIpPT5lLm9yZGVyIT09bnVsbD9lOnsuLi5lLG9yZGVyOnBhcnNlRmxvYXQoYDAuJHtyfWAsMTApfSkuc29ydCgoZSxyKT0+ZS5vcmRlci1yLm9yZGVyKS5tYXAoKHtuYW1lOmV9KT0+KHtuYW1lOmV9KSl9LCRYPWZ1bmN0aW9uKCl7cmV0dXJuIHByfSxYWD1mdW5jdGlvbigpe3JldHVybiBrcn0sSHc9ZnVuY3Rpb24oKXtjb25zdCB0PU9iamVjdC5rZXlzKGtyKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGtyW2VdfSk7cmV0dXJuIHQuZm9yRWFjaChmdW5jdGlvbihlKXtILmRlYnVnKGUuaWQpfSksdC5zb3J0KChlLHIpPT5lLnNlcS1yLnNlcSksdH0sS1g9ZnVuY3Rpb24oKXtyZXR1cm4gUnJ9LFpYPWZ1bmN0aW9uKCl7cmV0dXJuIFZ3fSxRWD1mdW5jdGlvbigpe3JldHVybiBjbn0sT2M9e05PUk1BTDowLFJFVkVSU0U6MSxISUdITElHSFQ6MixNRVJHRTozLENIRVJSWV9QSUNLOjR9LEpYPXtwYXJzZURpcmVjdGl2ZTpPWCxnZXRDb25maWc6KCk9Pm50KCkuZ2l0R3JhcGgsc2V0RGlyZWN0aW9uOlBYLHNldE9wdGlvbnM6cVgsZ2V0T3B0aW9uczpWWCxjb21taXQ6elgsYnJhbmNoOllYLG1lcmdlOlVYLGNoZXJyeVBpY2s6V1gsY2hlY2tvdXQ6WXcscHJldHR5UHJpbnQ6SFgsY2xlYXI6R1gsZ2V0QnJhbmNoZXNBc09iakFycmF5OmpYLGdldEJyYW5jaGVzOiRYLGdldENvbW1pdHM6WFgsZ2V0Q29tbWl0c0FycmF5Okh3LGdldEN1cnJlbnRCcmFuY2g6S1gsZ2V0RGlyZWN0aW9uOlpYLGdldEhlYWQ6UVgsc2V0QWNjVGl0bGU6WW4sZ2V0QWNjVGl0bGU6dWksZ2V0QWNjRGVzY3JpcHRpb246Zmksc2V0QWNjRGVzY3JpcHRpb246aGksY29tbWl0VHlwZTpPY307ZnVuY3Rpb24gYm4odCxlLHIpe2lmKHR5cGVvZiBlLmluc2VydD4idSIpcmV0dXJuO2xldCBuPXQuZ2V0QWNjVGl0bGUoKSxpPXQuZ2V0QWNjRGVzY3JpcHRpb24oKTtlLmF0dHIoInJvbGUiLCJpbWciKS5hdHRyKCJhcmlhLWxhYmVsbGVkYnkiLCJjaGFydC10aXRsZS0iK3IrIiBjaGFydC1kZXNjLSIrciksZS5pbnNlcnQoImRlc2MiLCI6Zmlyc3QtY2hpbGQiKS5hdHRyKCJpZCIsImNoYXJ0LWRlc2MtIityKS50ZXh0KGkpLGUuaW5zZXJ0KCJ0aXRsZSIsIjpmaXJzdC1jaGlsZCIpLmF0dHIoImlkIiwiY2hhcnQtdGl0bGUtIityKS50ZXh0KG4pfWxldCBGYz17fTtjb25zdCBTbj17Tk9STUFMOjAsUkVWRVJTRToxLEhJR0hMSUdIVDoyLE1FUkdFOjMsQ0hFUlJZX1BJQ0s6NH0sVXM9ODtsZXQgX249e30sZjE9e30sUGM9W10sZDE9MDtjb25zdCB0Sz0oKT0+e19uPXt9LGYxPXt9LEZjPXt9LGQxPTAsUGM9W119LGVLPXQ9Pntjb25zdCBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJ0ZXh0Iik7bGV0IHI9W107dHlwZW9mIHQ9PSJzdHJpbmciP3I9dC5zcGxpdCgvXFxufFxufDxiclxzKlwvPz4vZ2kpOkFycmF5LmlzQXJyYXkodCk/cj10OnI9W107Zm9yKGxldCBuPTA7bjxyLmxlbmd0aDtuKyspe2NvbnN0IGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsInRzcGFuIik7aS5zZXRBdHRyaWJ1dGVOUygiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIiwieG1sOnNwYWNlIiwicHJlc2VydmUiKSxpLnNldEF0dHJpYnV0ZSgiZHkiLCIxZW0iKSxpLnNldEF0dHJpYnV0ZSgieCIsIjAiKSxpLnNldEF0dHJpYnV0ZSgiY2xhc3MiLCJyb3ciKSxpLnRleHRDb250ZW50PXJbbl0udHJpbSgpLGUuYXBwZW5kQ2hpbGQoaSl9cmV0dXJuIGV9LEd3PSh0LGUscik9Pntjb25zdCBuPVpvKCkuZ2l0R3JhcGgsaT10LmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwiY29tbWl0LWJ1bGxldHMiKSxhPXQuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJjb21taXQtbGFiZWxzIik7bGV0IHM9MDtPYmplY3Qua2V5cyhlKS5zb3J0KCh1LGgpPT5lW3VdLnNlcS1lW2hdLnNlcSkuZm9yRWFjaCh1PT57Y29uc3QgaD1lW3VdLGQ9X25baC5icmFuY2hdLnBvcyxmPXMrMTA7aWYocil7bGV0IHAsbT10eXBlb2YgaC5jdXN0b21UeXBlPCJ1IiYmaC5jdXN0b21UeXBlIT09IiI/aC5jdXN0b21UeXBlOmgudHlwZTtzd2l0Y2gobSl7Y2FzZSBTbi5OT1JNQUw6cD0iY29tbWl0LW5vcm1hbCI7YnJlYWs7Y2FzZSBTbi5SRVZFUlNFOnA9ImNvbW1pdC1yZXZlcnNlIjticmVhaztjYXNlIFNuLkhJR0hMSUdIVDpwPSJjb21taXQtaGlnaGxpZ2h0IjticmVhaztjYXNlIFNuLk1FUkdFOnA9ImNvbW1pdC1tZXJnZSI7YnJlYWs7Y2FzZSBTbi5DSEVSUllfUElDSzpwPSJjb21taXQtY2hlcnJ5LXBpY2siO2JyZWFrO2RlZmF1bHQ6cD0iY29tbWl0LW5vcm1hbCJ9aWYobT09PVNuLkhJR0hMSUdIVCl7Y29uc3QgXz1pLmFwcGVuZCgicmVjdCIpO18uYXR0cigieCIsZi0xMCksXy5hdHRyKCJ5IixkLTEwKSxfLmF0dHIoImhlaWdodCIsMjApLF8uYXR0cigid2lkdGgiLDIwKSxfLmF0dHIoImNsYXNzIixgY29tbWl0ICR7aC5pZH0gY29tbWl0LWhpZ2hsaWdodCR7X25baC5icmFuY2hdLmluZGV4JVVzfSAke3B9LW91dGVyYCksaS5hcHBlbmQoInJlY3QiKS5hdHRyKCJ4IixmLTYpLmF0dHIoInkiLGQtNikuYXR0cigiaGVpZ2h0IiwxMikuYXR0cigid2lkdGgiLDEyKS5hdHRyKCJjbGFzcyIsYGNvbW1pdCAke2guaWR9IGNvbW1pdCR7X25baC5icmFuY2hdLmluZGV4JVVzfSAke3B9LWlubmVyYCl9ZWxzZSBpZihtPT09U24uQ0hFUlJZX1BJQ0spaS5hcHBlbmQoImNpcmNsZSIpLmF0dHIoImN4IixmKS5hdHRyKCJjeSIsZCkuYXR0cigiciIsMTApLmF0dHIoImNsYXNzIixgY29tbWl0ICR7aC5pZH0gJHtwfWApLGkuYXBwZW5kKCJjaXJjbGUiKS5hdHRyKCJjeCIsZi0zKS5hdHRyKCJjeSIsZCsyKS5hdHRyKCJyIiwyLjc1KS5hdHRyKCJmaWxsIiwiI2ZmZiIpLmF0dHIoImNsYXNzIixgY29tbWl0ICR7aC5pZH0gJHtwfWApLGkuYXBwZW5kKCJjaXJjbGUiKS5hdHRyKCJjeCIsZiszKS5hdHRyKCJjeSIsZCsyKS5hdHRyKCJyIiwyLjc1KS5hdHRyKCJmaWxsIiwiI2ZmZiIpLmF0dHIoImNsYXNzIixgY29tbWl0ICR7aC5pZH0gJHtwfWApLGkuYXBwZW5kKCJsaW5lIikuYXR0cigieDEiLGYrMykuYXR0cigieTEiLGQrMSkuYXR0cigieDIiLGYpLmF0dHIoInkyIixkLTUpLmF0dHIoInN0cm9rZSIsIiNmZmYiKS5hdHRyKCJjbGFzcyIsYGNvbW1pdCAke2guaWR9ICR7cH1gKSxpLmFwcGVuZCgibGluZSIpLmF0dHIoIngxIixmLTMpLmF0dHIoInkxIixkKzEpLmF0dHIoIngyIixmKS5hdHRyKCJ5MiIsZC01KS5hdHRyKCJzdHJva2UiLCIjZmZmIikuYXR0cigiY2xhc3MiLGBjb21taXQgJHtoLmlkfSAke3B9YCk7ZWxzZXtjb25zdCBfPWkuYXBwZW5kKCJjaXJjbGUiKTtpZihfLmF0dHIoImN4IixmKSxfLmF0dHIoImN5IixkKSxfLmF0dHIoInIiLGgudHlwZT09PVNuLk1FUkdFPzk6MTApLF8uYXR0cigiY2xhc3MiLGBjb21taXQgJHtoLmlkfSBjb21taXQke19uW2guYnJhbmNoXS5pbmRleCVVc31gKSxtPT09U24uTUVSR0Upe2NvbnN0IHk9aS5hcHBlbmQoImNpcmNsZSIpO3kuYXR0cigiY3giLGYpLHkuYXR0cigiY3kiLGQpLHkuYXR0cigiciIsNikseS5hdHRyKCJjbGFzcyIsYGNvbW1pdCAke3B9ICR7aC5pZH0gY29tbWl0JHtfbltoLmJyYW5jaF0uaW5kZXglVXN9YCl9bT09PVNuLlJFVkVSU0UmJmkuYXBwZW5kKCJwYXRoIikuYXR0cigiZCIsYE0gJHtmLTV9LCR7ZC01fUwke2YrNX0sJHtkKzV9TSR7Zi01fSwke2QrNX1MJHtmKzV9LCR7ZC01fWApLmF0dHIoImNsYXNzIixgY29tbWl0ICR7cH0gJHtoLmlkfSBjb21taXQke19uW2guYnJhbmNoXS5pbmRleCVVc31gKX19aWYoZjFbaC5pZF09e3g6cysxMCx5OmR9LHIpe2lmKGgudHlwZSE9PVNuLkNIRVJSWV9QSUNLJiYoaC5jdXN0b21JZCYmaC50eXBlPT09U24uTUVSR0V8fGgudHlwZSE9PVNuLk1FUkdFKSYmbi5zaG93Q29tbWl0TGFiZWwpe2NvbnN0IF89YS5hcHBlbmQoImciKSx5PV8uaW5zZXJ0KCJyZWN0IikuYXR0cigiY2xhc3MiLCJjb21taXQtbGFiZWwtYmtnIiksYj1fLmFwcGVuZCgidGV4dCIpLmF0dHIoIngiLHMpLmF0dHIoInkiLGQrMjUpLmF0dHIoImNsYXNzIiwiY29tbWl0LWxhYmVsIikudGV4dChoLmlkKTtsZXQgeD1iLm5vZGUoKS5nZXRCQm94KCk7aWYoeS5hdHRyKCJ4IixzKzEwLXgud2lkdGgvMi0yKS5hdHRyKCJ5IixkKzEzLjUpLmF0dHIoIndpZHRoIix4LndpZHRoKzIqMikuYXR0cigiaGVpZ2h0Iix4LmhlaWdodCsyKjIpLGIuYXR0cigieCIscysxMC14LndpZHRoLzIpLG4ucm90YXRlQ29tbWl0TGFiZWwpe2xldCBrPS03LjUtKHgud2lkdGgrMTApLzI1KjkuNSxUPTEwK3gud2lkdGgvMjUqOC41O18uYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIraysiLCAiK1QrIikgcm90YXRlKCIrLTQ1KyIsICIrcysiLCAiK2QrIikiKX19aWYoaC50YWcpe2NvbnN0IF89YS5pbnNlcnQoInBvbHlnb24iKSx5PWEuYXBwZW5kKCJjaXJjbGUiKSxiPWEuYXBwZW5kKCJ0ZXh0IikuYXR0cigieSIsZC0xNikuYXR0cigiY2xhc3MiLCJ0YWctbGFiZWwiKS50ZXh0KGgudGFnKTtsZXQgeD1iLm5vZGUoKS5nZXRCQm94KCk7Yi5hdHRyKCJ4IixzKzEwLXgud2lkdGgvMik7Y29uc3Qgaz14LmhlaWdodC8yLFQ9ZC0xOS4yO18uYXR0cigiY2xhc3MiLCJ0YWctbGFiZWwtYmtnIikuYXR0cigicG9pbnRzIixgCiAgICAgICAgICAke3MteC53aWR0aC8yLTQvMn0sJHtUKzJ9CiAgICAgICAgICAke3MteC53aWR0aC8yLTQvMn0sJHtULTJ9CiAgICAgICAgICAke3MrMTAteC53aWR0aC8yLTR9LCR7VC1rLTJ9CiAgICAgICAgICAke3MrMTAreC53aWR0aC8yKzR9LCR7VC1rLTJ9CiAgICAgICAgICAke3MrMTAreC53aWR0aC8yKzR9LCR7VCtrKzJ9CiAgICAgICAgICAke3MrMTAteC53aWR0aC8yLTR9LCR7VCtrKzJ9YCkseS5hdHRyKCJjeCIscy14LndpZHRoLzIrNC8yKS5hdHRyKCJjeSIsVCkuYXR0cigiciIsMS41KS5hdHRyKCJjbGFzcyIsInRhZy1ob2xlIil9fXMrPTUwLHM+ZDEmJihkMT1zKX0pfSxySz0odCxlLHIpPT5PYmplY3Qua2V5cyhyKS5maWx0ZXIoYT0+clthXS5icmFuY2g9PT1lLmJyYW5jaCYmclthXS5zZXE+dC5zZXEmJnJbYV0uc2VxPGUuc2VxKS5sZW5ndGg+MCx5Zz0odCxlLHIpPT57Y29uc3Qgbj1yfHwwLGk9dCtNYXRoLmFicyh0LWUpLzI7aWYobj41KXJldHVybiBpO2xldCBhPSEwO2ZvcihsZXQgbz0wO288UGMubGVuZ3RoO28rKylNYXRoLmFicyhQY1tvXS1pKTwxMCYmKGE9ITEpO2lmKGEpcmV0dXJuIFBjLnB1c2goaSksaTtjb25zdCBzPU1hdGguYWJzKHQtZSk7cmV0dXJuIHlnKHQsZS1zLzUsbisxKX0sbks9KHQsZSxyLG4pPT57Y29uc3QgaT1mMVtlLmlkXSxhPWYxW3IuaWRdLHM9cksoZSxyLG4pO2xldCBvPSIiLGw9IiIsdT0wLGg9MCxkPV9uW3IuYnJhbmNoXS5pbmRleCxmO2lmKHMpe289IkEgMTAgMTAsIDAsIDAsIDAsIixsPSJBIDEwIDEwLCAwLCAwLCAxLCIsdT0xMCxoPTEwLGQ9X25bci5icmFuY2hdLmluZGV4O2NvbnN0IHA9aS55PGEueT95ZyhpLnksYS55KTp5ZyhhLnksaS55KTtpLnk8YS55P2Y9YE0gJHtpLnh9ICR7aS55fSBMICR7aS54fSAke3AtdX0gJHtvfSAke2kueCtofSAke3B9IEwgJHthLngtdX0gJHtwfSAke2x9ICR7YS54fSAke3AraH0gTCAke2EueH0gJHthLnl9YDpmPWBNICR7aS54fSAke2kueX0gTCAke2kueH0gJHtwK3V9ICR7bH0gJHtpLngraH0gJHtwfSBMICR7YS54LXV9ICR7cH0gJHtvfSAke2EueH0gJHtwLWh9IEwgJHthLnh9ICR7YS55fWB9ZWxzZSBpLnk8YS55JiYobz0iQSAyMCAyMCwgMCwgMCwgMCwiLHU9MjAsaD0yMCxkPV9uW3IuYnJhbmNoXS5pbmRleCxmPWBNICR7aS54fSAke2kueX0gTCAke2kueH0gJHthLnktdX0gJHtvfSAke2kueCtofSAke2EueX0gTCAke2EueH0gJHthLnl9YCksaS55PmEueSYmKG89IkEgMjAgMjAsIDAsIDAsIDAsIix1PTIwLGg9MjAsZD1fbltlLmJyYW5jaF0uaW5kZXgsZj1gTSAke2kueH0gJHtpLnl9IEwgJHthLngtdX0gJHtpLnl9ICR7b30gJHthLnh9ICR7aS55LWh9IEwgJHthLnh9ICR7YS55fWApLGkueT09PWEueSYmKGQ9X25bZS5icmFuY2hdLmluZGV4LGY9YE0gJHtpLnh9ICR7aS55fSBMICR7aS54fSAke2EueS11fSAke299ICR7aS54K2h9ICR7YS55fSBMICR7YS54fSAke2EueX1gKTt0LmFwcGVuZCgicGF0aCIpLmF0dHIoImQiLGYpLmF0dHIoImNsYXNzIiwiYXJyb3cgYXJyb3ciK2QlVXMpfSxpSz0odCxlKT0+e2NvbnN0IHI9dC5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsImNvbW1pdC1hcnJvd3MiKTtPYmplY3Qua2V5cyhlKS5mb3JFYWNoKG49Pntjb25zdCBpPWVbbl07aS5wYXJlbnRzJiZpLnBhcmVudHMubGVuZ3RoPjAmJmkucGFyZW50cy5mb3JFYWNoKGE9PntuSyhyLGVbYV0saSxlKX0pfSl9LGFLPSh0LGUpPT57Y29uc3Qgcj1abygpLmdpdEdyYXBoLG49dC5hcHBlbmQoImciKTtlLmZvckVhY2goKGksYSk9Pntjb25zdCBzPWElVXMsbz1fbltpLm5hbWVdLnBvcyxsPW4uYXBwZW5kKCJsaW5lIik7bC5hdHRyKCJ4MSIsMCksbC5hdHRyKCJ5MSIsbyksbC5hdHRyKCJ4MiIsZDEpLGwuYXR0cigieTIiLG8pLGwuYXR0cigiY2xhc3MiLCJicmFuY2ggYnJhbmNoIitzKSxQYy5wdXNoKG8pO2xldCB1PWkubmFtZTtjb25zdCBoPWVLKHUpLGQ9bi5pbnNlcnQoInJlY3QiKSxwPW4uaW5zZXJ0KCJnIikuYXR0cigiY2xhc3MiLCJicmFuY2hMYWJlbCIpLmluc2VydCgiZyIpLmF0dHIoImNsYXNzIiwibGFiZWwgYnJhbmNoLWxhYmVsIitzKTtwLm5vZGUoKS5hcHBlbmRDaGlsZChoKTtsZXQgbT1oLmdldEJCb3goKTtkLmF0dHIoImNsYXNzIiwiYnJhbmNoTGFiZWxCa2cgbGFiZWwiK3MpLmF0dHIoInJ4Iiw0KS5hdHRyKCJyeSIsNCkuYXR0cigieCIsLW0ud2lkdGgtNC0oci5yb3RhdGVDb21taXRMYWJlbD09PSEwPzMwOjApKS5hdHRyKCJ5IiwtbS5oZWlnaHQvMis4KS5hdHRyKCJ3aWR0aCIsbS53aWR0aCsxOCkuYXR0cigiaGVpZ2h0IixtLmhlaWdodCs0KSxwLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKygtbS53aWR0aC0xNC0oci5yb3RhdGVDb21taXRMYWJlbD09PSEwPzMwOjApKSsiLCAiKyhvLW0uaGVpZ2h0LzItMSkrIikiKSxkLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKy0xOSsiLCAiKyhvLW0uaGVpZ2h0LzIpKyIpIil9KX0sc0s9e2RyYXc6ZnVuY3Rpb24odCxlLHIsbil7dEsoKTtjb25zdCBpPVpvKCksYT1abygpLmdpdEdyYXBoO0guZGVidWcoImluIGdpdGdyYXBoIHJlbmRlcmVyIix0K2AKYCwiaWQ6IixlLHIpLEZjPW4uZGIuZ2V0Q29tbWl0cygpO2NvbnN0IHM9bi5kYi5nZXRCcmFuY2hlc0FzT2JqQXJyYXkoKTtsZXQgbz0wO3MuZm9yRWFjaCgodSxoKT0+e19uW3UubmFtZV09e3BvczpvLGluZGV4Omh9LG8rPTUwKyhhLnJvdGF0ZUNvbW1pdExhYmVsPzQwOjApfSk7Y29uc3QgbD1TdChgW2lkPSIke2V9Il1gKTtibihuLmRiLGwsZSksR3cobCxGYywhMSksYS5zaG93QnJhbmNoZXMmJmFLKGwscyksaUsobCxGYyksR3cobCxGYywhMCksRncodm9pZCAwLGwsYS5kaWFncmFtUGFkZGluZyxpLnVzZU1heFdpZHRoKX19LG9LPXQ9PmAKICAuY29tbWl0LWlkLAogIC5jb21taXQtbXNnLAogIC5icmFuY2gtbGFiZWwgewogICAgZmlsbDogbGlnaHRncmV5OwogICAgY29sb3I6IGxpZ2h0Z3JleTsKICAgIGZvbnQtZmFtaWx5OiAndHJlYnVjaGV0IG1zJywgdmVyZGFuYSwgYXJpYWwsIHNhbnMtc2VyaWY7CiAgICBmb250LWZhbWlseTogdmFyKC0tbWVybWFpZC1mb250LWZhbWlseSk7CiAgfQogICR7WzAsMSwyLDMsNCw1LDYsN10ubWFwKGU9PmAKICAgICAgICAuYnJhbmNoLWxhYmVsJHtlfSB7IGZpbGw6ICR7dFsiZ2l0QnJhbmNoTGFiZWwiK2VdfTsgfQogICAgICAgIC5jb21taXQke2V9IHsgc3Ryb2tlOiAke3RbImdpdCIrZV19OyBmaWxsOiAke3RbImdpdCIrZV19OyB9CiAgICAgICAgLmNvbW1pdC1oaWdobGlnaHQke2V9IHsgc3Ryb2tlOiAke3RbImdpdEludiIrZV19OyBmaWxsOiAke3RbImdpdEludiIrZV19OyB9CiAgICAgICAgLmxhYmVsJHtlfSAgeyBmaWxsOiAke3RbImdpdCIrZV19OyB9CiAgICAgICAgLmFycm93JHtlfSB7IHN0cm9rZTogJHt0WyJnaXQiK2VdfTsgfQogICAgICAgIGApLmpvaW4oYApgKX0KCiAgLmJyYW5jaCB7CiAgICBzdHJva2Utd2lkdGg6IDE7CiAgICBzdHJva2U6ICR7dC5saW5lQ29sb3J9OwogICAgc3Ryb2tlLWRhc2hhcnJheTogMjsKICB9CiAgLmNvbW1pdC1sYWJlbCB7IGZvbnQtc2l6ZTogJHt0LmNvbW1pdExhYmVsRm9udFNpemV9OyBmaWxsOiAke3QuY29tbWl0TGFiZWxDb2xvcn07fQogIC5jb21taXQtbGFiZWwtYmtnIHsgZm9udC1zaXplOiAke3QuY29tbWl0TGFiZWxGb250U2l6ZX07IGZpbGw6ICR7dC5jb21taXRMYWJlbEJhY2tncm91bmR9OyBvcGFjaXR5OiAwLjU7IH0KICAudGFnLWxhYmVsIHsgZm9udC1zaXplOiAke3QudGFnTGFiZWxGb250U2l6ZX07IGZpbGw6ICR7dC50YWdMYWJlbENvbG9yfTt9CiAgLnRhZy1sYWJlbC1ia2cgeyBmaWxsOiAke3QudGFnTGFiZWxCYWNrZ3JvdW5kfTsgc3Ryb2tlOiAke3QudGFnTGFiZWxCb3JkZXJ9OyB9CiAgLnRhZy1ob2xlIHsgZmlsbDogJHt0LnRleHRDb2xvcn07IH0KCiAgLmNvbW1pdC1tZXJnZSB7CiAgICBzdHJva2U6ICR7dC5wcmltYXJ5Q29sb3J9OwogICAgZmlsbDogJHt0LnByaW1hcnlDb2xvcn07CiAgfQogIC5jb21taXQtcmV2ZXJzZSB7CiAgICBzdHJva2U6ICR7dC5wcmltYXJ5Q29sb3J9OwogICAgZmlsbDogJHt0LnByaW1hcnlDb2xvcn07CiAgICBzdHJva2Utd2lkdGg6IDM7CiAgfQogIC5jb21taXQtaGlnaGxpZ2h0LW91dGVyIHsKICB9CiAgLmNvbW1pdC1oaWdobGlnaHQtaW5uZXIgewogICAgc3Ryb2tlOiAke3QucHJpbWFyeUNvbG9yfTsKICAgIGZpbGw6ICR7dC5wcmltYXJ5Q29sb3J9OwogIH0KCiAgLmFycm93IHsgc3Ryb2tlLXdpZHRoOiA4OyBzdHJva2UtbGluZWNhcDogcm91bmQ7IGZpbGw6IG5vbmV9CiAgfQpgO3ZhciBxYz1mdW5jdGlvbigpe3ZhciB0PWZ1bmN0aW9uKHp0LHd0LGJ0LEV0KXtmb3IoYnQ9YnR8fHt9LEV0PXp0Lmxlbmd0aDtFdC0tO2J0W3p0W0V0XV09d3QpO3JldHVybiBidH0sZT1bMSw2XSxyPVsxLDddLG49WzEsOF0saT1bMSw5XSxhPVsxLDE2XSxzPVsxLDExXSxvPVsxLDEyXSxsPVsxLDEzXSx1PVsxLDE0XSxoPVsxLDE1XSxkPVsxLDI3XSxmPVsxLDMzXSxwPVsxLDM0XSxtPVsxLDM1XSxfPVsxLDM2XSx5PVsxLDM3XSxiPVsxLDcyXSx4PVsxLDczXSxrPVsxLDc0XSxUPVsxLDc1XSxDPVsxLDc2XSxNPVsxLDc3XSxTPVsxLDc4XSxSPVsxLDM4XSxBPVsxLDM5XSxMPVsxLDQwXSx2PVsxLDQxXSxCPVsxLDQyXSx3PVsxLDQzXSxEPVsxLDQ0XSxOPVsxLDQ1XSx6PVsxLDQ2XSxYPVsxLDQ3XSxjdD1bMSw0OF0sSj1bMSw0OV0sWT1bMSw1MF0sJD1bMSw1MV0sbHQ9WzEsNTJdLHV0PVsxLDUzXSxXPVsxLDU0XSx0dD1bMSw1NV0sSz1bMSw1Nl0saXQ9WzEsNTddLFo9WzEsNTldLFY9WzEsNjBdLFE9WzEsNjFdLHE9WzEsNjJdLFU9WzEsNjNdLEY9WzEsNjRdLGo9WzEsNjVdLFA9WzEsNjZdLGV0PVsxLDY3XSxhdD1bMSw2OF0sSXQ9WzEsNjldLEx0PVsyNCw1Ml0sUnQ9WzI0LDQ0LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDY0LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0XSxDdD1bMTUsMjQsNDQsNDYsNDcsNDgsNDksNTAsNTEsNTIsNTQsNTUsNTYsNTcsNTgsNTksNjAsNjEsNjIsNjMsNjQsNjUsNjYsNjcsNjgsNjksNzAsNzEsNzIsNzMsNzQsNzUsNzYsNzcsNzgsNzksODAsODEsODIsODMsODRdLHB0PVsxLDk0XSxtdD1bMSw5NV0sdnQ9WzEsOTZdLFR0PVsxLDk3XSxmdD1bMTUsMjQsNTJdLGxlPVs3LDgsOSwxMCwxOCwyMiwyNSwyNiwyNywyOF0sRHQ9WzE1LDI0LDQzLDUyXSxHdD1bMTUsMjQsNDMsNTIsODYsODcsODksOTBdLCR0PVsxNSw0M10sUXQ9WzQ0LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDY0LDY1LDY2LDY3LDY4LDY5LDcwLDcxLDcyLDczLDc0LDc1LDc2LDc3LDc4LDc5LDgwLDgxLDgyLDgzLDg0XSx3ZT17dHJhY2U6ZnVuY3Rpb24oKXt9LHl5Ont9LHN5bWJvbHNfOntlcnJvcjoyLHN0YXJ0OjMsbWVybWFpZERvYzo0LGRpcmVjdGlvbjo1LGRpcmVjdGl2ZTo2LGRpcmVjdGlvbl90Yjo3LGRpcmVjdGlvbl9idDo4LGRpcmVjdGlvbl9ybDo5LGRpcmVjdGlvbl9scjoxMCxncmFwaENvbmZpZzoxMSxvcGVuRGlyZWN0aXZlOjEyLHR5cGVEaXJlY3RpdmU6MTMsY2xvc2VEaXJlY3RpdmU6MTQsTkVXTElORToxNSwiOiI6MTYsYXJnRGlyZWN0aXZlOjE3LG9wZW5fZGlyZWN0aXZlOjE4LHR5cGVfZGlyZWN0aXZlOjE5LGFyZ19kaXJlY3RpdmU6MjAsY2xvc2VfZGlyZWN0aXZlOjIxLEM0X0NPTlRFWFQ6MjIsc3RhdGVtZW50czoyMyxFT0Y6MjQsQzRfQ09OVEFJTkVSOjI1LEM0X0NPTVBPTkVOVDoyNixDNF9EWU5BTUlDOjI3LEM0X0RFUExPWU1FTlQ6Mjgsb3RoZXJTdGF0ZW1lbnRzOjI5LGRpYWdyYW1TdGF0ZW1lbnRzOjMwLG90aGVyU3RhdGVtZW50OjMxLHRpdGxlOjMyLGFjY0Rlc2NyaXB0aW9uOjMzLGFjY190aXRsZTozNCxhY2NfdGl0bGVfdmFsdWU6MzUsYWNjX2Rlc2NyOjM2LGFjY19kZXNjcl92YWx1ZTozNyxhY2NfZGVzY3JfbXVsdGlsaW5lX3ZhbHVlOjM4LGJvdW5kYXJ5U3RhdGVtZW50OjM5LGJvdW5kYXJ5U3RhcnRTdGF0ZW1lbnQ6NDAsYm91bmRhcnlTdG9wU3RhdGVtZW50OjQxLGJvdW5kYXJ5U3RhcnQ6NDIsTEJSQUNFOjQzLEVOVEVSUFJJU0VfQk9VTkRBUlk6NDQsYXR0cmlidXRlczo0NSxTWVNURU1fQk9VTkRBUlk6NDYsQk9VTkRBUlk6NDcsQ09OVEFJTkVSX0JPVU5EQVJZOjQ4LE5PREU6NDksTk9ERV9MOjUwLE5PREVfUjo1MSxSQlJBQ0U6NTIsZGlhZ3JhbVN0YXRlbWVudDo1MyxQRVJTT046NTQsUEVSU09OX0VYVDo1NSxTWVNURU06NTYsU1lTVEVNX0RCOjU3LFNZU1RFTV9RVUVVRTo1OCxTWVNURU1fRVhUOjU5LFNZU1RFTV9FWFRfREI6NjAsU1lTVEVNX0VYVF9RVUVVRTo2MSxDT05UQUlORVI6NjIsQ09OVEFJTkVSX0RCOjYzLENPTlRBSU5FUl9RVUVVRTo2NCxDT05UQUlORVJfRVhUOjY1LENPTlRBSU5FUl9FWFRfREI6NjYsQ09OVEFJTkVSX0VYVF9RVUVVRTo2NyxDT01QT05FTlQ6NjgsQ09NUE9ORU5UX0RCOjY5LENPTVBPTkVOVF9RVUVVRTo3MCxDT01QT05FTlRfRVhUOjcxLENPTVBPTkVOVF9FWFRfREI6NzIsQ09NUE9ORU5UX0VYVF9RVUVVRTo3MyxSRUw6NzQsQklSRUw6NzUsUkVMX1U6NzYsUkVMX0Q6NzcsUkVMX0w6NzgsUkVMX1I6NzksUkVMX0I6ODAsUkVMX0lOREVYOjgxLFVQREFURV9FTF9TVFlMRTo4MixVUERBVEVfUkVMX1NUWUxFOjgzLFVQREFURV9MQVlPVVRfQ09ORklHOjg0LGF0dHJpYnV0ZTo4NSxTVFI6ODYsU1RSX0tFWTo4NyxTVFJfVkFMVUU6ODgsQVRUUklCVVRFOjg5LEFUVFJJQlVURV9FTVBUWTo5MCwkYWNjZXB0OjAsJGVuZDoxfSx0ZXJtaW5hbHNfOnsyOiJlcnJvciIsNzoiZGlyZWN0aW9uX3RiIiw4OiJkaXJlY3Rpb25fYnQiLDk6ImRpcmVjdGlvbl9ybCIsMTA6ImRpcmVjdGlvbl9sciIsMTU6Ik5FV0xJTkUiLDE2OiI6IiwxODoib3Blbl9kaXJlY3RpdmUiLDE5OiJ0eXBlX2RpcmVjdGl2ZSIsMjA6ImFyZ19kaXJlY3RpdmUiLDIxOiJjbG9zZV9kaXJlY3RpdmUiLDIyOiJDNF9DT05URVhUIiwyNDoiRU9GIiwyNToiQzRfQ09OVEFJTkVSIiwyNjoiQzRfQ09NUE9ORU5UIiwyNzoiQzRfRFlOQU1JQyIsMjg6IkM0X0RFUExPWU1FTlQiLDMyOiJ0aXRsZSIsMzM6ImFjY0Rlc2NyaXB0aW9uIiwzNDoiYWNjX3RpdGxlIiwzNToiYWNjX3RpdGxlX3ZhbHVlIiwzNjoiYWNjX2Rlc2NyIiwzNzoiYWNjX2Rlc2NyX3ZhbHVlIiwzODoiYWNjX2Rlc2NyX211bHRpbGluZV92YWx1ZSIsNDM6IkxCUkFDRSIsNDQ6IkVOVEVSUFJJU0VfQk9VTkRBUlkiLDQ2OiJTWVNURU1fQk9VTkRBUlkiLDQ3OiJCT1VOREFSWSIsNDg6IkNPTlRBSU5FUl9CT1VOREFSWSIsNDk6Ik5PREUiLDUwOiJOT0RFX0wiLDUxOiJOT0RFX1IiLDUyOiJSQlJBQ0UiLDU0OiJQRVJTT04iLDU1OiJQRVJTT05fRVhUIiw1NjoiU1lTVEVNIiw1NzoiU1lTVEVNX0RCIiw1ODoiU1lTVEVNX1FVRVVFIiw1OToiU1lTVEVNX0VYVCIsNjA6IlNZU1RFTV9FWFRfREIiLDYxOiJTWVNURU1fRVhUX1FVRVVFIiw2MjoiQ09OVEFJTkVSIiw2MzoiQ09OVEFJTkVSX0RCIiw2NDoiQ09OVEFJTkVSX1FVRVVFIiw2NToiQ09OVEFJTkVSX0VYVCIsNjY6IkNPTlRBSU5FUl9FWFRfREIiLDY3OiJDT05UQUlORVJfRVhUX1FVRVVFIiw2ODoiQ09NUE9ORU5UIiw2OToiQ09NUE9ORU5UX0RCIiw3MDoiQ09NUE9ORU5UX1FVRVVFIiw3MToiQ09NUE9ORU5UX0VYVCIsNzI6IkNPTVBPTkVOVF9FWFRfREIiLDczOiJDT01QT05FTlRfRVhUX1FVRVVFIiw3NDoiUkVMIiw3NToiQklSRUwiLDc2OiJSRUxfVSIsNzc6IlJFTF9EIiw3ODoiUkVMX0wiLDc5OiJSRUxfUiIsODA6IlJFTF9CIiw4MToiUkVMX0lOREVYIiw4MjoiVVBEQVRFX0VMX1NUWUxFIiw4MzoiVVBEQVRFX1JFTF9TVFlMRSIsODQ6IlVQREFURV9MQVlPVVRfQ09ORklHIiw4NjoiU1RSIiw4NzoiU1RSX0tFWSIsODg6IlNUUl9WQUxVRSIsODk6IkFUVFJJQlVURSIsOTA6IkFUVFJJQlVURV9FTVBUWSJ9LHByb2R1Y3Rpb25zXzpbMCxbMywxXSxbMywxXSxbMywyXSxbNSwxXSxbNSwxXSxbNSwxXSxbNSwxXSxbNCwxXSxbNiw0XSxbNiw2XSxbMTIsMV0sWzEzLDFdLFsxNywxXSxbMTQsMV0sWzExLDRdLFsxMSw0XSxbMTEsNF0sWzExLDRdLFsxMSw0XSxbMjMsMV0sWzIzLDFdLFsyMywyXSxbMjksMV0sWzI5LDJdLFsyOSwzXSxbMzEsMV0sWzMxLDFdLFszMSwyXSxbMzEsMl0sWzMxLDFdLFszOSwzXSxbNDAsM10sWzQwLDNdLFs0MCw0XSxbNDIsMl0sWzQyLDJdLFs0MiwyXSxbNDIsMl0sWzQyLDJdLFs0MiwyXSxbNDIsMl0sWzQxLDFdLFszMCwxXSxbMzAsMl0sWzMwLDNdLFs1MywyXSxbNTMsMl0sWzUzLDJdLFs1MywyXSxbNTMsMl0sWzUzLDJdLFs1MywyXSxbNTMsMl0sWzUzLDJdLFs1MywyXSxbNTMsMl0sWzUzLDJdLFs1MywyXSxbNTMsMl0sWzUzLDJdLFs1MywyXSxbNTMsMl0sWzUzLDJdLFs1MywyXSxbNTMsMl0sWzUzLDFdLFs1MywyXSxbNTMsMl0sWzUzLDJdLFs1MywyXSxbNTMsMl0sWzUzLDJdLFs1MywyXSxbNTMsMl0sWzUzLDJdLFs1MywyXSxbNTMsMl0sWzQ1LDFdLFs0NSwyXSxbODUsMV0sWzg1LDJdLFs4NSwxXSxbODUsMV1dLHBlcmZvcm1BY3Rpb246ZnVuY3Rpb24od3QsYnQsRXQsa3QsVXQsZ3QsaGUpe3ZhciB5dD1ndC5sZW5ndGgtMTtzd2l0Y2goVXQpe2Nhc2UgNDprdC5zZXREaXJlY3Rpb24oIlRCIik7YnJlYWs7Y2FzZSA1Omt0LnNldERpcmVjdGlvbigiQlQiKTticmVhaztjYXNlIDY6a3Quc2V0RGlyZWN0aW9uKCJSTCIpO2JyZWFrO2Nhc2UgNzprdC5zZXREaXJlY3Rpb24oIkxSIik7YnJlYWs7Y2FzZSAxMTprdC5wYXJzZURpcmVjdGl2ZSgiJSV7Iiwib3Blbl9kaXJlY3RpdmUiKTticmVhaztjYXNlIDEyOmJyZWFrO2Nhc2UgMTM6Z3RbeXRdPWd0W3l0XS50cmltKCkucmVwbGFjZSgvJy9nLCciJyksa3QucGFyc2VEaXJlY3RpdmUoZ3RbeXRdLCJhcmdfZGlyZWN0aXZlIik7YnJlYWs7Y2FzZSAxNDprdC5wYXJzZURpcmVjdGl2ZSgifSUlIiwiY2xvc2VfZGlyZWN0aXZlIiwiYzRDb250ZXh0Iik7YnJlYWs7Y2FzZSAxNTpjYXNlIDE2OmNhc2UgMTc6Y2FzZSAxODpjYXNlIDE5Omt0LnNldEM0VHlwZShndFt5dC0zXSk7YnJlYWs7Y2FzZSAyNjprdC5zZXRUaXRsZShndFt5dF0uc3Vic3RyaW5nKDYpKSx0aGlzLiQ9Z3RbeXRdLnN1YnN0cmluZyg2KTticmVhaztjYXNlIDI3Omt0LnNldEFjY0Rlc2NyaXB0aW9uKGd0W3l0XS5zdWJzdHJpbmcoMTUpKSx0aGlzLiQ9Z3RbeXRdLnN1YnN0cmluZygxNSk7YnJlYWs7Y2FzZSAyODp0aGlzLiQ9Z3RbeXRdLnRyaW0oKSxrdC5zZXRUaXRsZSh0aGlzLiQpO2JyZWFrO2Nhc2UgMjk6Y2FzZSAzMDp0aGlzLiQ9Z3RbeXRdLnRyaW0oKSxrdC5zZXRBY2NEZXNjcmlwdGlvbih0aGlzLiQpO2JyZWFrO2Nhc2UgMzU6Y2FzZSAzNjpndFt5dF0uc3BsaWNlKDIsMCwiRU5URVJQUklTRSIpLGt0LmFkZFBlcnNvbk9yU3lzdGVtQm91bmRhcnkoLi4uZ3RbeXRdKSx0aGlzLiQ9Z3RbeXRdO2JyZWFrO2Nhc2UgMzc6a3QuYWRkUGVyc29uT3JTeXN0ZW1Cb3VuZGFyeSguLi5ndFt5dF0pLHRoaXMuJD1ndFt5dF07YnJlYWs7Y2FzZSAzODpndFt5dF0uc3BsaWNlKDIsMCwiQ09OVEFJTkVSIiksa3QuYWRkQ29udGFpbmVyQm91bmRhcnkoLi4uZ3RbeXRdKSx0aGlzLiQ9Z3RbeXRdO2JyZWFrO2Nhc2UgMzk6a3QuYWRkRGVwbG95bWVudE5vZGUoIm5vZGUiLC4uLmd0W3l0XSksdGhpcy4kPWd0W3l0XTticmVhaztjYXNlIDQwOmt0LmFkZERlcGxveW1lbnROb2RlKCJub2RlTCIsLi4uZ3RbeXRdKSx0aGlzLiQ9Z3RbeXRdO2JyZWFrO2Nhc2UgNDE6a3QuYWRkRGVwbG95bWVudE5vZGUoIm5vZGVSIiwuLi5ndFt5dF0pLHRoaXMuJD1ndFt5dF07YnJlYWs7Y2FzZSA0MjprdC5wb3BCb3VuZGFyeVBhcnNlU3RhY2soKTticmVhaztjYXNlIDQ2Omt0LmFkZFBlcnNvbk9yU3lzdGVtKCJwZXJzb24iLC4uLmd0W3l0XSksdGhpcy4kPWd0W3l0XTticmVhaztjYXNlIDQ3Omt0LmFkZFBlcnNvbk9yU3lzdGVtKCJleHRlcm5hbF9wZXJzb24iLC4uLmd0W3l0XSksdGhpcy4kPWd0W3l0XTticmVhaztjYXNlIDQ4Omt0LmFkZFBlcnNvbk9yU3lzdGVtKCJzeXN0ZW0iLC4uLmd0W3l0XSksdGhpcy4kPWd0W3l0XTticmVhaztjYXNlIDQ5Omt0LmFkZFBlcnNvbk9yU3lzdGVtKCJzeXN0ZW1fZGIiLC4uLmd0W3l0XSksdGhpcy4kPWd0W3l0XTticmVhaztjYXNlIDUwOmt0LmFkZFBlcnNvbk9yU3lzdGVtKCJzeXN0ZW1fcXVldWUiLC4uLmd0W3l0XSksdGhpcy4kPWd0W3l0XTticmVhaztjYXNlIDUxOmt0LmFkZFBlcnNvbk9yU3lzdGVtKCJleHRlcm5hbF9zeXN0ZW0iLC4uLmd0W3l0XSksdGhpcy4kPWd0W3l0XTticmVhaztjYXNlIDUyOmt0LmFkZFBlcnNvbk9yU3lzdGVtKCJleHRlcm5hbF9zeXN0ZW1fZGIiLC4uLmd0W3l0XSksdGhpcy4kPWd0W3l0XTticmVhaztjYXNlIDUzOmt0LmFkZFBlcnNvbk9yU3lzdGVtKCJleHRlcm5hbF9zeXN0ZW1fcXVldWUiLC4uLmd0W3l0XSksdGhpcy4kPWd0W3l0XTticmVhaztjYXNlIDU0Omt0LmFkZENvbnRhaW5lcigiY29udGFpbmVyIiwuLi5ndFt5dF0pLHRoaXMuJD1ndFt5dF07YnJlYWs7Y2FzZSA1NTprdC5hZGRDb250YWluZXIoImNvbnRhaW5lcl9kYiIsLi4uZ3RbeXRdKSx0aGlzLiQ9Z3RbeXRdO2JyZWFrO2Nhc2UgNTY6a3QuYWRkQ29udGFpbmVyKCJjb250YWluZXJfcXVldWUiLC4uLmd0W3l0XSksdGhpcy4kPWd0W3l0XTticmVhaztjYXNlIDU3Omt0LmFkZENvbnRhaW5lcigiZXh0ZXJuYWxfY29udGFpbmVyIiwuLi5ndFt5dF0pLHRoaXMuJD1ndFt5dF07YnJlYWs7Y2FzZSA1ODprdC5hZGRDb250YWluZXIoImV4dGVybmFsX2NvbnRhaW5lcl9kYiIsLi4uZ3RbeXRdKSx0aGlzLiQ9Z3RbeXRdO2JyZWFrO2Nhc2UgNTk6a3QuYWRkQ29udGFpbmVyKCJleHRlcm5hbF9jb250YWluZXJfcXVldWUiLC4uLmd0W3l0XSksdGhpcy4kPWd0W3l0XTticmVhaztjYXNlIDYwOmt0LmFkZENvbXBvbmVudCgiY29tcG9uZW50IiwuLi5ndFt5dF0pLHRoaXMuJD1ndFt5dF07YnJlYWs7Y2FzZSA2MTprdC5hZGRDb21wb25lbnQoImNvbXBvbmVudF9kYiIsLi4uZ3RbeXRdKSx0aGlzLiQ9Z3RbeXRdO2JyZWFrO2Nhc2UgNjI6a3QuYWRkQ29tcG9uZW50KCJjb21wb25lbnRfcXVldWUiLC4uLmd0W3l0XSksdGhpcy4kPWd0W3l0XTticmVhaztjYXNlIDYzOmt0LmFkZENvbXBvbmVudCgiZXh0ZXJuYWxfY29tcG9uZW50IiwuLi5ndFt5dF0pLHRoaXMuJD1ndFt5dF07YnJlYWs7Y2FzZSA2NDprdC5hZGRDb21wb25lbnQoImV4dGVybmFsX2NvbXBvbmVudF9kYiIsLi4uZ3RbeXRdKSx0aGlzLiQ9Z3RbeXRdO2JyZWFrO2Nhc2UgNjU6a3QuYWRkQ29tcG9uZW50KCJleHRlcm5hbF9jb21wb25lbnRfcXVldWUiLC4uLmd0W3l0XSksdGhpcy4kPWd0W3l0XTticmVhaztjYXNlIDY3Omt0LmFkZFJlbCgicmVsIiwuLi5ndFt5dF0pLHRoaXMuJD1ndFt5dF07YnJlYWs7Y2FzZSA2ODprdC5hZGRSZWwoImJpcmVsIiwuLi5ndFt5dF0pLHRoaXMuJD1ndFt5dF07YnJlYWs7Y2FzZSA2OTprdC5hZGRSZWwoInJlbF91IiwuLi5ndFt5dF0pLHRoaXMuJD1ndFt5dF07YnJlYWs7Y2FzZSA3MDprdC5hZGRSZWwoInJlbF9kIiwuLi5ndFt5dF0pLHRoaXMuJD1ndFt5dF07YnJlYWs7Y2FzZSA3MTprdC5hZGRSZWwoInJlbF9sIiwuLi5ndFt5dF0pLHRoaXMuJD1ndFt5dF07YnJlYWs7Y2FzZSA3MjprdC5hZGRSZWwoInJlbF9yIiwuLi5ndFt5dF0pLHRoaXMuJD1ndFt5dF07YnJlYWs7Y2FzZSA3MzprdC5hZGRSZWwoInJlbF9iIiwuLi5ndFt5dF0pLHRoaXMuJD1ndFt5dF07YnJlYWs7Y2FzZSA3NDpndFt5dF0uc3BsaWNlKDAsMSksa3QuYWRkUmVsKCJyZWwiLC4uLmd0W3l0XSksdGhpcy4kPWd0W3l0XTticmVhaztjYXNlIDc1Omt0LnVwZGF0ZUVsU3R5bGUoInVwZGF0ZV9lbF9zdHlsZSIsLi4uZ3RbeXRdKSx0aGlzLiQ9Z3RbeXRdO2JyZWFrO2Nhc2UgNzY6a3QudXBkYXRlUmVsU3R5bGUoInVwZGF0ZV9yZWxfc3R5bGUiLC4uLmd0W3l0XSksdGhpcy4kPWd0W3l0XTticmVhaztjYXNlIDc3Omt0LnVwZGF0ZUxheW91dENvbmZpZygidXBkYXRlX2xheW91dF9jb25maWciLC4uLmd0W3l0XSksdGhpcy4kPWd0W3l0XTticmVhaztjYXNlIDc4OnRoaXMuJD1bZ3RbeXRdXTticmVhaztjYXNlIDc5Omd0W3l0XS51bnNoaWZ0KGd0W3l0LTFdKSx0aGlzLiQ9Z3RbeXRdO2JyZWFrO2Nhc2UgODA6Y2FzZSA4Mjp0aGlzLiQ9Z3RbeXRdLnRyaW0oKTticmVhaztjYXNlIDgxOmxldCBuZT17fTtuZVtndFt5dC0xXS50cmltKCldPWd0W3l0XS50cmltKCksdGhpcy4kPW5lO2JyZWFrO2Nhc2UgODM6dGhpcy4kPSIiO2JyZWFrfX0sdGFibGU6W3szOjEsNDoyLDU6Myw2OjQsNzplLDg6ciw5Om4sMTA6aSwxMTo1LDEyOjEwLDE4OmEsMjI6cywyNTpvLDI2OmwsMjc6dSwyODpofSx7MTpbM119LHsxOlsyLDFdfSx7MTpbMiwyXX0sezM6MTcsNDoyLDU6Myw2OjQsNzplLDg6ciw5Om4sMTA6aSwxMTo1LDEyOjEwLDE4OmEsMjI6cywyNTpvLDI2OmwsMjc6dSwyODpofSx7MTpbMiw4XX0sezE6WzIsNF19LHsxOlsyLDVdfSx7MTpbMiw2XX0sezE6WzIsN119LHsxMzoxOCwxOTpbMSwxOV19LHsxNTpbMSwyMF19LHsxNTpbMSwyMV19LHsxNTpbMSwyMl19LHsxNTpbMSwyM119LHsxNTpbMSwyNF19LHsxOTpbMiwxMV19LHsxOlsyLDNdfSx7MTQ6MjUsMTY6WzEsMjZdLDIxOmR9LHQoWzE2LDIxXSxbMiwxMl0pLHsyMzoyOCwyOToyOSwzMDozMCwzMTozMSwzMjpmLDMzOnAsMzQ6bSwzNjpfLDM4OnksMzk6NTgsNDA6NzAsNDI6NzEsNDQ6Yiw0Njp4LDQ3OmssNDg6VCw0OTpDLDUwOk0sNTE6Uyw1MzozMiw1NDpSLDU1OkEsNTY6TCw1Nzp2LDU4OkIsNTk6dyw2MDpELDYxOk4sNjI6eiw2MzpYLDY0OmN0LDY1OkosNjY6WSw2NzokLDY4Omx0LDY5OnV0LDcwOlcsNzE6dHQsNzI6Syw3MzppdCw3NDpaLDc1OlYsNzY6USw3NzpxLDc4OlUsNzk6Riw4MDpqLDgxOlAsODI6ZXQsODM6YXQsODQ6SXR9LHsyMzo3OSwyOToyOSwzMDozMCwzMTozMSwzMjpmLDMzOnAsMzQ6bSwzNjpfLDM4OnksMzk6NTgsNDA6NzAsNDI6NzEsNDQ6Yiw0Njp4LDQ3OmssNDg6VCw0OTpDLDUwOk0sNTE6Uyw1MzozMiw1NDpSLDU1OkEsNTY6TCw1Nzp2LDU4OkIsNTk6dyw2MDpELDYxOk4sNjI6eiw2MzpYLDY0OmN0LDY1OkosNjY6WSw2NzokLDY4Omx0LDY5OnV0LDcwOlcsNzE6dHQsNzI6Syw3MzppdCw3NDpaLDc1OlYsNzY6USw3NzpxLDc4OlUsNzk6Riw4MDpqLDgxOlAsODI6ZXQsODM6YXQsODQ6SXR9LHsyMzo4MCwyOToyOSwzMDozMCwzMTozMSwzMjpmLDMzOnAsMzQ6bSwzNjpfLDM4OnksMzk6NTgsNDA6NzAsNDI6NzEsNDQ6Yiw0Njp4LDQ3OmssNDg6VCw0OTpDLDUwOk0sNTE6Uyw1MzozMiw1NDpSLDU1OkEsNTY6TCw1Nzp2LDU4OkIsNTk6dyw2MDpELDYxOk4sNjI6eiw2MzpYLDY0OmN0LDY1OkosNjY6WSw2NzokLDY4Omx0LDY5OnV0LDcwOlcsNzE6dHQsNzI6Syw3MzppdCw3NDpaLDc1OlYsNzY6USw3NzpxLDc4OlUsNzk6Riw4MDpqLDgxOlAsODI6ZXQsODM6YXQsODQ6SXR9LHsyMzo4MSwyOToyOSwzMDozMCwzMTozMSwzMjpmLDMzOnAsMzQ6bSwzNjpfLDM4OnksMzk6NTgsNDA6NzAsNDI6NzEsNDQ6Yiw0Njp4LDQ3OmssNDg6VCw0OTpDLDUwOk0sNTE6Uyw1MzozMiw1NDpSLDU1OkEsNTY6TCw1Nzp2LDU4OkIsNTk6dyw2MDpELDYxOk4sNjI6eiw2MzpYLDY0OmN0LDY1OkosNjY6WSw2NzokLDY4Omx0LDY5OnV0LDcwOlcsNzE6dHQsNzI6Syw3MzppdCw3NDpaLDc1OlYsNzY6USw3NzpxLDc4OlUsNzk6Riw4MDpqLDgxOlAsODI6ZXQsODM6YXQsODQ6SXR9LHsyMzo4MiwyOToyOSwzMDozMCwzMTozMSwzMjpmLDMzOnAsMzQ6bSwzNjpfLDM4OnksMzk6NTgsNDA6NzAsNDI6NzEsNDQ6Yiw0Njp4LDQ3OmssNDg6VCw0OTpDLDUwOk0sNTE6Uyw1MzozMiw1NDpSLDU1OkEsNTY6TCw1Nzp2LDU4OkIsNTk6dyw2MDpELDYxOk4sNjI6eiw2MzpYLDY0OmN0LDY1OkosNjY6WSw2NzokLDY4Omx0LDY5OnV0LDcwOlcsNzE6dHQsNzI6Syw3MzppdCw3NDpaLDc1OlYsNzY6USw3NzpxLDc4OlUsNzk6Riw4MDpqLDgxOlAsODI6ZXQsODM6YXQsODQ6SXR9LHsxNTpbMSw4M119LHsxNzo4NCwyMDpbMSw4NV19LHsxNTpbMiwxNF19LHsyNDpbMSw4Nl19LHQoTHQsWzIsMjBdLHs1MzozMiwzOTo1OCw0MDo3MCw0Mjo3MSwzMDo4Nyw0NDpiLDQ2OngsNDc6ayw0ODpULDQ5OkMsNTA6TSw1MTpTLDU0OlIsNTU6QSw1NjpMLDU3OnYsNTg6Qiw1OTp3LDYwOkQsNjE6Tiw2Mjp6LDYzOlgsNjQ6Y3QsNjU6Siw2NjpZLDY3OiQsNjg6bHQsNjk6dXQsNzA6Vyw3MTp0dCw3MjpLLDczOml0LDc0OlosNzU6Viw3NjpRLDc3OnEsNzg6VSw3OTpGLDgwOmosODE6UCw4MjpldCw4MzphdCw4NDpJdH0pLHQoTHQsWzIsMjFdKSx0KFJ0LFsyLDIzXSx7MTU6WzEsODhdfSksdChMdCxbMiw0M10sezE1OlsxLDg5XX0pLHQoQ3QsWzIsMjZdKSx0KEN0LFsyLDI3XSksezM1OlsxLDkwXX0sezM3OlsxLDkxXX0sdChDdCxbMiwzMF0pLHs0NTo5Miw4NTo5Myw4NjpwdCw4NzptdCw4OTp2dCw5MDpUdH0sezQ1Ojk4LDg1OjkzLDg2OnB0LDg3Om10LDg5OnZ0LDkwOlR0fSx7NDU6OTksODU6OTMsODY6cHQsODc6bXQsODk6dnQsOTA6VHR9LHs0NToxMDAsODU6OTMsODY6cHQsODc6bXQsODk6dnQsOTA6VHR9LHs0NToxMDEsODU6OTMsODY6cHQsODc6bXQsODk6dnQsOTA6VHR9LHs0NToxMDIsODU6OTMsODY6cHQsODc6bXQsODk6dnQsOTA6VHR9LHs0NToxMDMsODU6OTMsODY6cHQsODc6bXQsODk6dnQsOTA6VHR9LHs0NToxMDQsODU6OTMsODY6cHQsODc6bXQsODk6dnQsOTA6VHR9LHs0NToxMDUsODU6OTMsODY6cHQsODc6bXQsODk6dnQsOTA6VHR9LHs0NToxMDYsODU6OTMsODY6cHQsODc6bXQsODk6dnQsOTA6VHR9LHs0NToxMDcsODU6OTMsODY6cHQsODc6bXQsODk6dnQsOTA6VHR9LHs0NToxMDgsODU6OTMsODY6cHQsODc6bXQsODk6dnQsOTA6VHR9LHs0NToxMDksODU6OTMsODY6cHQsODc6bXQsODk6dnQsOTA6VHR9LHs0NToxMTAsODU6OTMsODY6cHQsODc6bXQsODk6dnQsOTA6VHR9LHs0NToxMTEsODU6OTMsODY6cHQsODc6bXQsODk6dnQsOTA6VHR9LHs0NToxMTIsODU6OTMsODY6cHQsODc6bXQsODk6dnQsOTA6VHR9LHs0NToxMTMsODU6OTMsODY6cHQsODc6bXQsODk6dnQsOTA6VHR9LHs0NToxMTQsODU6OTMsODY6cHQsODc6bXQsODk6dnQsOTA6VHR9LHs0NToxMTUsODU6OTMsODY6cHQsODc6bXQsODk6dnQsOTA6VHR9LHs0NToxMTYsODU6OTMsODY6cHQsODc6bXQsODk6dnQsOTA6VHR9LHQoZnQsWzIsNjZdKSx7NDU6MTE3LDg1OjkzLDg2OnB0LDg3Om10LDg5OnZ0LDkwOlR0fSx7NDU6MTE4LDg1OjkzLDg2OnB0LDg3Om10LDg5OnZ0LDkwOlR0fSx7NDU6MTE5LDg1OjkzLDg2OnB0LDg3Om10LDg5OnZ0LDkwOlR0fSx7NDU6MTIwLDg1OjkzLDg2OnB0LDg3Om10LDg5OnZ0LDkwOlR0fSx7NDU6MTIxLDg1OjkzLDg2OnB0LDg3Om10LDg5OnZ0LDkwOlR0fSx7NDU6MTIyLDg1OjkzLDg2OnB0LDg3Om10LDg5OnZ0LDkwOlR0fSx7NDU6MTIzLDg1OjkzLDg2OnB0LDg3Om10LDg5OnZ0LDkwOlR0fSx7NDU6MTI0LDg1OjkzLDg2OnB0LDg3Om10LDg5OnZ0LDkwOlR0fSx7NDU6MTI1LDg1OjkzLDg2OnB0LDg3Om10LDg5OnZ0LDkwOlR0fSx7NDU6MTI2LDg1OjkzLDg2OnB0LDg3Om10LDg5OnZ0LDkwOlR0fSx7NDU6MTI3LDg1OjkzLDg2OnB0LDg3Om10LDg5OnZ0LDkwOlR0fSx7MzA6MTI4LDM5OjU4LDQwOjcwLDQyOjcxLDQ0OmIsNDY6eCw0NzprLDQ4OlQsNDk6Qyw1MDpNLDUxOlMsNTM6MzIsNTQ6Uiw1NTpBLDU2OkwsNTc6diw1ODpCLDU5OncsNjA6RCw2MTpOLDYyOnosNjM6WCw2NDpjdCw2NTpKLDY2OlksNjc6JCw2ODpsdCw2OTp1dCw3MDpXLDcxOnR0LDcyOkssNzM6aXQsNzQ6Wiw3NTpWLDc2OlEsNzc6cSw3ODpVLDc5OkYsODA6aiw4MTpQLDgyOmV0LDgzOmF0LDg0Okl0fSx7MTU6WzEsMTMwXSw0MzpbMSwxMjldfSx7NDU6MTMxLDg1OjkzLDg2OnB0LDg3Om10LDg5OnZ0LDkwOlR0fSx7NDU6MTMyLDg1OjkzLDg2OnB0LDg3Om10LDg5OnZ0LDkwOlR0fSx7NDU6MTMzLDg1OjkzLDg2OnB0LDg3Om10LDg5OnZ0LDkwOlR0fSx7NDU6MTM0LDg1OjkzLDg2OnB0LDg3Om10LDg5OnZ0LDkwOlR0fSx7NDU6MTM1LDg1OjkzLDg2OnB0LDg3Om10LDg5OnZ0LDkwOlR0fSx7NDU6MTM2LDg1OjkzLDg2OnB0LDg3Om10LDg5OnZ0LDkwOlR0fSx7NDU6MTM3LDg1OjkzLDg2OnB0LDg3Om10LDg5OnZ0LDkwOlR0fSx7MjQ6WzEsMTM4XX0sezI0OlsxLDEzOV19LHsyNDpbMSwxNDBdfSx7MjQ6WzEsMTQxXX0sdChsZSxbMiw5XSksezE0OjE0MiwyMTpkfSx7MjE6WzIsMTNdfSx7MTpbMiwxNV19LHQoTHQsWzIsMjJdKSx0KFJ0LFsyLDI0XSx7MzE6MzEsMjk6MTQzLDMyOmYsMzM6cCwzNDptLDM2Ol8sMzg6eX0pLHQoTHQsWzIsNDRdLHsyOToyOSwzMDozMCwzMTozMSw1MzozMiwzOTo1OCw0MDo3MCw0Mjo3MSwyMzoxNDQsMzI6ZiwzMzpwLDM0Om0sMzY6XywzODp5LDQ0OmIsNDY6eCw0NzprLDQ4OlQsNDk6Qyw1MDpNLDUxOlMsNTQ6Uiw1NTpBLDU2OkwsNTc6diw1ODpCLDU5OncsNjA6RCw2MTpOLDYyOnosNjM6WCw2NDpjdCw2NTpKLDY2OlksNjc6JCw2ODpsdCw2OTp1dCw3MDpXLDcxOnR0LDcyOkssNzM6aXQsNzQ6Wiw3NTpWLDc2OlEsNzc6cSw3ODpVLDc5OkYsODA6aiw4MTpQLDgyOmV0LDgzOmF0LDg0Okl0fSksdChDdCxbMiwyOF0pLHQoQ3QsWzIsMjldKSx0KGZ0LFsyLDQ2XSksdChEdCxbMiw3OF0sezg1OjkzLDQ1OjE0NSw4NjpwdCw4NzptdCw4OTp2dCw5MDpUdH0pLHQoR3QsWzIsODBdKSx7ODg6WzEsMTQ2XX0sdChHdCxbMiw4Ml0pLHQoR3QsWzIsODNdKSx0KGZ0LFsyLDQ3XSksdChmdCxbMiw0OF0pLHQoZnQsWzIsNDldKSx0KGZ0LFsyLDUwXSksdChmdCxbMiw1MV0pLHQoZnQsWzIsNTJdKSx0KGZ0LFsyLDUzXSksdChmdCxbMiw1NF0pLHQoZnQsWzIsNTVdKSx0KGZ0LFsyLDU2XSksdChmdCxbMiw1N10pLHQoZnQsWzIsNThdKSx0KGZ0LFsyLDU5XSksdChmdCxbMiw2MF0pLHQoZnQsWzIsNjFdKSx0KGZ0LFsyLDYyXSksdChmdCxbMiw2M10pLHQoZnQsWzIsNjRdKSx0KGZ0LFsyLDY1XSksdChmdCxbMiw2N10pLHQoZnQsWzIsNjhdKSx0KGZ0LFsyLDY5XSksdChmdCxbMiw3MF0pLHQoZnQsWzIsNzFdKSx0KGZ0LFsyLDcyXSksdChmdCxbMiw3M10pLHQoZnQsWzIsNzRdKSx0KGZ0LFsyLDc1XSksdChmdCxbMiw3Nl0pLHQoZnQsWzIsNzddKSx7NDE6MTQ3LDUyOlsxLDE0OF19LHsxNTpbMSwxNDldfSx7NDM6WzEsMTUwXX0sdCgkdCxbMiwzNV0pLHQoJHQsWzIsMzZdKSx0KCR0LFsyLDM3XSksdCgkdCxbMiwzOF0pLHQoJHQsWzIsMzldKSx0KCR0LFsyLDQwXSksdCgkdCxbMiw0MV0pLHsxOlsyLDE2XX0sezE6WzIsMTddfSx7MTpbMiwxOF19LHsxOlsyLDE5XX0sezE1OlsxLDE1MV19LHQoUnQsWzIsMjVdKSx0KEx0LFsyLDQ1XSksdChEdCxbMiw3OV0pLHQoR3QsWzIsODFdKSx0KGZ0LFsyLDMxXSksdChmdCxbMiw0Ml0pLHQoUXQsWzIsMzJdKSx0KFF0LFsyLDMzXSx7MTU6WzEsMTUyXX0pLHQobGUsWzIsMTBdKSx0KFF0LFsyLDM0XSldLGRlZmF1bHRBY3Rpb25zOnsyOlsyLDFdLDM6WzIsMl0sNTpbMiw4XSw2OlsyLDRdLDc6WzIsNV0sODpbMiw2XSw5OlsyLDddLDE2OlsyLDExXSwxNzpbMiwzXSwyNzpbMiwxNF0sODU6WzIsMTNdLDg2OlsyLDE1XSwxMzg6WzIsMTZdLDEzOTpbMiwxN10sMTQwOlsyLDE4XSwxNDE6WzIsMTldfSxwYXJzZUVycm9yOmZ1bmN0aW9uKHd0LGJ0KXtpZihidC5yZWNvdmVyYWJsZSl0aGlzLnRyYWNlKHd0KTtlbHNle3ZhciBFdD1uZXcgRXJyb3Iod3QpO3Rocm93IEV0Lmhhc2g9YnQsRXR9fSxwYXJzZTpmdW5jdGlvbih3dCl7dmFyIGJ0PXRoaXMsRXQ9WzBdLGt0PVtdLFV0PVtudWxsXSxndD1bXSxoZT10aGlzLnRhYmxlLHl0PSIiLG5lPTAsdmU9MCx5ZT0yLGJlPTEsVGU9Z3Quc2xpY2UuY2FsbChhcmd1bWVudHMsMSksV3Q9T2JqZWN0LmNyZWF0ZSh0aGlzLmxleGVyKSxzZT17eXk6e319O2Zvcih2YXIgbWUgaW4gdGhpcy55eSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy55eSxtZSkmJihzZS55eVttZV09dGhpcy55eVttZV0pO1d0LnNldElucHV0KHd0LHNlLnl5KSxzZS55eS5sZXhlcj1XdCxzZS55eS5wYXJzZXI9dGhpcyx0eXBlb2YgV3QueXlsbG9jPiJ1IiYmKFd0Lnl5bGxvYz17fSk7dmFyIHVlPVd0Lnl5bGxvYztndC5wdXNoKHVlKTt2YXIgX2E9V3Qub3B0aW9ucyYmV3Qub3B0aW9ucy5yYW5nZXM7dHlwZW9mIHNlLnl5LnBhcnNlRXJyb3I9PSJmdW5jdGlvbiI/dGhpcy5wYXJzZUVycm9yPXNlLnl5LnBhcnNlRXJyb3I6dGhpcy5wYXJzZUVycm9yPU9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKS5wYXJzZUVycm9yO2Z1bmN0aW9uIEhyKCl7dmFyIEp0O3JldHVybiBKdD1rdC5wb3AoKXx8V3QubGV4KCl8fGJlLHR5cGVvZiBKdCE9Im51bWJlciImJihKdCBpbnN0YW5jZW9mIEFycmF5JiYoa3Q9SnQsSnQ9a3QucG9wKCkpLEp0PWJ0LnN5bWJvbHNfW0p0XXx8SnQpLEp0fWZvcih2YXIgSWUsb2UsS2Usd3IsR2U9e30sWmUscXQsc3QsQXQ7Oyl7aWYob2U9RXRbRXQubGVuZ3RoLTFdLHRoaXMuZGVmYXVsdEFjdGlvbnNbb2VdP0tlPXRoaXMuZGVmYXVsdEFjdGlvbnNbb2VdOigoSWU9PT1udWxsfHx0eXBlb2YgSWU+InUiKSYmKEllPUhyKCkpLEtlPWhlW29lXSYmaGVbb2VdW0llXSksdHlwZW9mIEtlPiJ1Inx8IUtlLmxlbmd0aHx8IUtlWzBdKXt2YXIgTnQ9IiI7QXQ9W107Zm9yKFplIGluIGhlW29lXSl0aGlzLnRlcm1pbmFsc19bWmVdJiZaZT55ZSYmQXQucHVzaCgiJyIrdGhpcy50ZXJtaW5hbHNfW1plXSsiJyIpO1d0LnNob3dQb3NpdGlvbj9OdD0iUGFyc2UgZXJyb3Igb24gbGluZSAiKyhuZSsxKStgOgpgK1d0LnNob3dQb3NpdGlvbigpK2AKRXhwZWN0aW5nIGArQXQuam9pbigiLCAiKSsiLCBnb3QgJyIrKHRoaXMudGVybWluYWxzX1tJZV18fEllKSsiJyI6TnQ9IlBhcnNlIGVycm9yIG9uIGxpbmUgIisobmUrMSkrIjogVW5leHBlY3RlZCAiKyhJZT09YmU/ImVuZCBvZiBpbnB1dCI6IiciKyh0aGlzLnRlcm1pbmFsc19bSWVdfHxJZSkrIiciKSx0aGlzLnBhcnNlRXJyb3IoTnQse3RleHQ6V3QubWF0Y2gsdG9rZW46dGhpcy50ZXJtaW5hbHNfW0llXXx8SWUsbGluZTpXdC55eWxpbmVubyxsb2M6dWUsZXhwZWN0ZWQ6QXR9KX1pZihLZVswXWluc3RhbmNlb2YgQXJyYXkmJktlLmxlbmd0aD4xKXRocm93IG5ldyBFcnJvcigiUGFyc2UgRXJyb3I6IG11bHRpcGxlIGFjdGlvbnMgcG9zc2libGUgYXQgc3RhdGU6ICIrb2UrIiwgdG9rZW46ICIrSWUpO3N3aXRjaChLZVswXSl7Y2FzZSAxOkV0LnB1c2goSWUpLFV0LnB1c2goV3QueXl0ZXh0KSxndC5wdXNoKFd0Lnl5bGxvYyksRXQucHVzaChLZVsxXSksSWU9bnVsbCx2ZT1XdC55eWxlbmcseXQ9V3QueXl0ZXh0LG5lPVd0Lnl5bGluZW5vLHVlPVd0Lnl5bGxvYzticmVhaztjYXNlIDI6aWYocXQ9dGhpcy5wcm9kdWN0aW9uc19bS2VbMV1dWzFdLEdlLiQ9VXRbVXQubGVuZ3RoLXF0XSxHZS5fJD17Zmlyc3RfbGluZTpndFtndC5sZW5ndGgtKHF0fHwxKV0uZmlyc3RfbGluZSxsYXN0X2xpbmU6Z3RbZ3QubGVuZ3RoLTFdLmxhc3RfbGluZSxmaXJzdF9jb2x1bW46Z3RbZ3QubGVuZ3RoLShxdHx8MSldLmZpcnN0X2NvbHVtbixsYXN0X2NvbHVtbjpndFtndC5sZW5ndGgtMV0ubGFzdF9jb2x1bW59LF9hJiYoR2UuXyQucmFuZ2U9W2d0W2d0Lmxlbmd0aC0ocXR8fDEpXS5yYW5nZVswXSxndFtndC5sZW5ndGgtMV0ucmFuZ2VbMV1dKSx3cj10aGlzLnBlcmZvcm1BY3Rpb24uYXBwbHkoR2UsW3l0LHZlLG5lLHNlLnl5LEtlWzFdLFV0LGd0XS5jb25jYXQoVGUpKSx0eXBlb2Ygd3I8InUiKXJldHVybiB3cjtxdCYmKEV0PUV0LnNsaWNlKDAsLTEqcXQqMiksVXQ9VXQuc2xpY2UoMCwtMSpxdCksZ3Q9Z3Quc2xpY2UoMCwtMSpxdCkpLEV0LnB1c2godGhpcy5wcm9kdWN0aW9uc19bS2VbMV1dWzBdKSxVdC5wdXNoKEdlLiQpLGd0LnB1c2goR2UuXyQpLHN0PWhlW0V0W0V0Lmxlbmd0aC0yXV1bRXRbRXQubGVuZ3RoLTFdXSxFdC5wdXNoKHN0KTticmVhaztjYXNlIDM6cmV0dXJuITB9fXJldHVybiEwfX0sanQ9ZnVuY3Rpb24oKXt2YXIgenQ9e0VPRjoxLHBhcnNlRXJyb3I6ZnVuY3Rpb24oYnQsRXQpe2lmKHRoaXMueXkucGFyc2VyKXRoaXMueXkucGFyc2VyLnBhcnNlRXJyb3IoYnQsRXQpO2Vsc2UgdGhyb3cgbmV3IEVycm9yKGJ0KX0sc2V0SW5wdXQ6ZnVuY3Rpb24od3QsYnQpe3JldHVybiB0aGlzLnl5PWJ0fHx0aGlzLnl5fHx7fSx0aGlzLl9pbnB1dD13dCx0aGlzLl9tb3JlPXRoaXMuX2JhY2t0cmFjaz10aGlzLmRvbmU9ITEsdGhpcy55eWxpbmVubz10aGlzLnl5bGVuZz0wLHRoaXMueXl0ZXh0PXRoaXMubWF0Y2hlZD10aGlzLm1hdGNoPSIiLHRoaXMuY29uZGl0aW9uU3RhY2s9WyJJTklUSUFMIl0sdGhpcy55eWxsb2M9e2ZpcnN0X2xpbmU6MSxmaXJzdF9jb2x1bW46MCxsYXN0X2xpbmU6MSxsYXN0X2NvbHVtbjowfSx0aGlzLm9wdGlvbnMucmFuZ2VzJiYodGhpcy55eWxsb2MucmFuZ2U9WzAsMF0pLHRoaXMub2Zmc2V0PTAsdGhpc30saW5wdXQ6ZnVuY3Rpb24oKXt2YXIgd3Q9dGhpcy5faW5wdXRbMF07dGhpcy55eXRleHQrPXd0LHRoaXMueXlsZW5nKyssdGhpcy5vZmZzZXQrKyx0aGlzLm1hdGNoKz13dCx0aGlzLm1hdGNoZWQrPXd0O3ZhciBidD13dC5tYXRjaCgvKD86XHJcbj98XG4pLiovZyk7cmV0dXJuIGJ0Pyh0aGlzLnl5bGluZW5vKyssdGhpcy55eWxsb2MubGFzdF9saW5lKyspOnRoaXMueXlsbG9jLmxhc3RfY29sdW1uKyssdGhpcy5vcHRpb25zLnJhbmdlcyYmdGhpcy55eWxsb2MucmFuZ2VbMV0rKyx0aGlzLl9pbnB1dD10aGlzLl9pbnB1dC5zbGljZSgxKSx3dH0sdW5wdXQ6ZnVuY3Rpb24od3Qpe3ZhciBidD13dC5sZW5ndGgsRXQ9d3Quc3BsaXQoLyg/OlxyXG4/fFxuKS9nKTt0aGlzLl9pbnB1dD13dCt0aGlzLl9pbnB1dCx0aGlzLnl5dGV4dD10aGlzLnl5dGV4dC5zdWJzdHIoMCx0aGlzLnl5dGV4dC5sZW5ndGgtYnQpLHRoaXMub2Zmc2V0LT1idDt2YXIga3Q9dGhpcy5tYXRjaC5zcGxpdCgvKD86XHJcbj98XG4pL2cpO3RoaXMubWF0Y2g9dGhpcy5tYXRjaC5zdWJzdHIoMCx0aGlzLm1hdGNoLmxlbmd0aC0xKSx0aGlzLm1hdGNoZWQ9dGhpcy5tYXRjaGVkLnN1YnN0cigwLHRoaXMubWF0Y2hlZC5sZW5ndGgtMSksRXQubGVuZ3RoLTEmJih0aGlzLnl5bGluZW5vLT1FdC5sZW5ndGgtMSk7dmFyIFV0PXRoaXMueXlsbG9jLnJhbmdlO3JldHVybiB0aGlzLnl5bGxvYz17Zmlyc3RfbGluZTp0aGlzLnl5bGxvYy5maXJzdF9saW5lLGxhc3RfbGluZTp0aGlzLnl5bGluZW5vKzEsZmlyc3RfY29sdW1uOnRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbixsYXN0X2NvbHVtbjpFdD8oRXQubGVuZ3RoPT09a3QubGVuZ3RoP3RoaXMueXlsbG9jLmZpcnN0X2NvbHVtbjowKStrdFtrdC5sZW5ndGgtRXQubGVuZ3RoXS5sZW5ndGgtRXRbMF0ubGVuZ3RoOnRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbi1idH0sdGhpcy5vcHRpb25zLnJhbmdlcyYmKHRoaXMueXlsbG9jLnJhbmdlPVtVdFswXSxVdFswXSt0aGlzLnl5bGVuZy1idF0pLHRoaXMueXlsZW5nPXRoaXMueXl0ZXh0Lmxlbmd0aCx0aGlzfSxtb3JlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21vcmU9ITAsdGhpc30scmVqZWN0OmZ1bmN0aW9uKCl7aWYodGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlcil0aGlzLl9iYWNrdHJhY2s9ITA7ZWxzZSByZXR1cm4gdGhpcy5wYXJzZUVycm9yKCJMZXhpY2FsIGVycm9yIG9uIGxpbmUgIisodGhpcy55eWxpbmVubysxKStgLiBZb3UgY2FuIG9ubHkgaW52b2tlIHJlamVjdCgpIGluIHRoZSBsZXhlciB3aGVuIHRoZSBsZXhlciBpcyBvZiB0aGUgYmFja3RyYWNraW5nIHBlcnN1YXNpb24gKG9wdGlvbnMuYmFja3RyYWNrX2xleGVyID0gdHJ1ZSkuCmArdGhpcy5zaG93UG9zaXRpb24oKSx7dGV4dDoiIix0b2tlbjpudWxsLGxpbmU6dGhpcy55eWxpbmVub30pO3JldHVybiB0aGlzfSxsZXNzOmZ1bmN0aW9uKHd0KXt0aGlzLnVucHV0KHRoaXMubWF0Y2guc2xpY2Uod3QpKX0scGFzdElucHV0OmZ1bmN0aW9uKCl7dmFyIHd0PXRoaXMubWF0Y2hlZC5zdWJzdHIoMCx0aGlzLm1hdGNoZWQubGVuZ3RoLXRoaXMubWF0Y2gubGVuZ3RoKTtyZXR1cm4od3QubGVuZ3RoPjIwPyIuLi4iOiIiKSt3dC5zdWJzdHIoLTIwKS5yZXBsYWNlKC9cbi9nLCIiKX0sdXBjb21pbmdJbnB1dDpmdW5jdGlvbigpe3ZhciB3dD10aGlzLm1hdGNoO3JldHVybiB3dC5sZW5ndGg8MjAmJih3dCs9dGhpcy5faW5wdXQuc3Vic3RyKDAsMjAtd3QubGVuZ3RoKSksKHd0LnN1YnN0cigwLDIwKSsod3QubGVuZ3RoPjIwPyIuLi4iOiIiKSkucmVwbGFjZSgvXG4vZywiIil9LHNob3dQb3NpdGlvbjpmdW5jdGlvbigpe3ZhciB3dD10aGlzLnBhc3RJbnB1dCgpLGJ0PW5ldyBBcnJheSh3dC5sZW5ndGgrMSkuam9pbigiLSIpO3JldHVybiB3dCt0aGlzLnVwY29taW5nSW5wdXQoKStgCmArYnQrIl4ifSx0ZXN0X21hdGNoOmZ1bmN0aW9uKHd0LGJ0KXt2YXIgRXQsa3QsVXQ7aWYodGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlciYmKFV0PXt5eWxpbmVubzp0aGlzLnl5bGluZW5vLHl5bGxvYzp7Zmlyc3RfbGluZTp0aGlzLnl5bGxvYy5maXJzdF9saW5lLGxhc3RfbGluZTp0aGlzLmxhc3RfbGluZSxmaXJzdF9jb2x1bW46dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLGxhc3RfY29sdW1uOnRoaXMueXlsbG9jLmxhc3RfY29sdW1ufSx5eXRleHQ6dGhpcy55eXRleHQsbWF0Y2g6dGhpcy5tYXRjaCxtYXRjaGVzOnRoaXMubWF0Y2hlcyxtYXRjaGVkOnRoaXMubWF0Y2hlZCx5eWxlbmc6dGhpcy55eWxlbmcsb2Zmc2V0OnRoaXMub2Zmc2V0LF9tb3JlOnRoaXMuX21vcmUsX2lucHV0OnRoaXMuX2lucHV0LHl5OnRoaXMueXksY29uZGl0aW9uU3RhY2s6dGhpcy5jb25kaXRpb25TdGFjay5zbGljZSgwKSxkb25lOnRoaXMuZG9uZX0sdGhpcy5vcHRpb25zLnJhbmdlcyYmKFV0Lnl5bGxvYy5yYW5nZT10aGlzLnl5bGxvYy5yYW5nZS5zbGljZSgwKSkpLGt0PXd0WzBdLm1hdGNoKC8oPzpcclxuP3xcbikuKi9nKSxrdCYmKHRoaXMueXlsaW5lbm8rPWt0Lmxlbmd0aCksdGhpcy55eWxsb2M9e2ZpcnN0X2xpbmU6dGhpcy55eWxsb2MubGFzdF9saW5lLGxhc3RfbGluZTp0aGlzLnl5bGluZW5vKzEsZmlyc3RfY29sdW1uOnRoaXMueXlsbG9jLmxhc3RfY29sdW1uLGxhc3RfY29sdW1uOmt0P2t0W2t0Lmxlbmd0aC0xXS5sZW5ndGgta3Rba3QubGVuZ3RoLTFdLm1hdGNoKC9ccj9cbj8vKVswXS5sZW5ndGg6dGhpcy55eWxsb2MubGFzdF9jb2x1bW4rd3RbMF0ubGVuZ3RofSx0aGlzLnl5dGV4dCs9d3RbMF0sdGhpcy5tYXRjaCs9d3RbMF0sdGhpcy5tYXRjaGVzPXd0LHRoaXMueXlsZW5nPXRoaXMueXl0ZXh0Lmxlbmd0aCx0aGlzLm9wdGlvbnMucmFuZ2VzJiYodGhpcy55eWxsb2MucmFuZ2U9W3RoaXMub2Zmc2V0LHRoaXMub2Zmc2V0Kz10aGlzLnl5bGVuZ10pLHRoaXMuX21vcmU9ITEsdGhpcy5fYmFja3RyYWNrPSExLHRoaXMuX2lucHV0PXRoaXMuX2lucHV0LnNsaWNlKHd0WzBdLmxlbmd0aCksdGhpcy5tYXRjaGVkKz13dFswXSxFdD10aGlzLnBlcmZvcm1BY3Rpb24uY2FsbCh0aGlzLHRoaXMueXksdGhpcyxidCx0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTFdKSx0aGlzLmRvbmUmJnRoaXMuX2lucHV0JiYodGhpcy5kb25lPSExKSxFdClyZXR1cm4gRXQ7aWYodGhpcy5fYmFja3RyYWNrKXtmb3IodmFyIGd0IGluIFV0KXRoaXNbZ3RdPVV0W2d0XTtyZXR1cm4hMX1yZXR1cm4hMX0sbmV4dDpmdW5jdGlvbigpe2lmKHRoaXMuZG9uZSlyZXR1cm4gdGhpcy5FT0Y7dGhpcy5faW5wdXR8fCh0aGlzLmRvbmU9ITApO3ZhciB3dCxidCxFdCxrdDt0aGlzLl9tb3JlfHwodGhpcy55eXRleHQ9IiIsdGhpcy5tYXRjaD0iIik7Zm9yKHZhciBVdD10aGlzLl9jdXJyZW50UnVsZXMoKSxndD0wO2d0PFV0Lmxlbmd0aDtndCsrKWlmKEV0PXRoaXMuX2lucHV0Lm1hdGNoKHRoaXMucnVsZXNbVXRbZ3RdXSksRXQmJighYnR8fEV0WzBdLmxlbmd0aD5idFswXS5sZW5ndGgpKXtpZihidD1FdCxrdD1ndCx0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyKXtpZih3dD10aGlzLnRlc3RfbWF0Y2goRXQsVXRbZ3RdKSx3dCE9PSExKXJldHVybiB3dDtpZih0aGlzLl9iYWNrdHJhY2spe2J0PSExO2NvbnRpbnVlfWVsc2UgcmV0dXJuITF9ZWxzZSBpZighdGhpcy5vcHRpb25zLmZsZXgpYnJlYWt9cmV0dXJuIGJ0Pyh3dD10aGlzLnRlc3RfbWF0Y2goYnQsVXRba3RdKSx3dCE9PSExP3d0OiExKTp0aGlzLl9pbnB1dD09PSIiP3RoaXMuRU9GOnRoaXMucGFyc2VFcnJvcigiTGV4aWNhbCBlcnJvciBvbiBsaW5lICIrKHRoaXMueXlsaW5lbm8rMSkrYC4gVW5yZWNvZ25pemVkIHRleHQuCmArdGhpcy5zaG93UG9zaXRpb24oKSx7dGV4dDoiIix0b2tlbjpudWxsLGxpbmU6dGhpcy55eWxpbmVub30pfSxsZXg6ZnVuY3Rpb24oKXt2YXIgYnQ9dGhpcy5uZXh0KCk7cmV0dXJuIGJ0fHx0aGlzLmxleCgpfSxiZWdpbjpmdW5jdGlvbihidCl7dGhpcy5jb25kaXRpb25TdGFjay5wdXNoKGJ0KX0scG9wU3RhdGU6ZnVuY3Rpb24oKXt2YXIgYnQ9dGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMTtyZXR1cm4gYnQ+MD90aGlzLmNvbmRpdGlvblN0YWNrLnBvcCgpOnRoaXMuY29uZGl0aW9uU3RhY2tbMF19LF9jdXJyZW50UnVsZXM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgmJnRoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMV0/dGhpcy5jb25kaXRpb25zW3RoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMV1dLnJ1bGVzOnRoaXMuY29uZGl0aW9ucy5JTklUSUFMLnJ1bGVzfSx0b3BTdGF0ZTpmdW5jdGlvbihidCl7cmV0dXJuIGJ0PXRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTEtTWF0aC5hYnMoYnR8fDApLGJ0Pj0wP3RoaXMuY29uZGl0aW9uU3RhY2tbYnRdOiJJTklUSUFMIn0scHVzaFN0YXRlOmZ1bmN0aW9uKGJ0KXt0aGlzLmJlZ2luKGJ0KX0sc3RhdGVTdGFja1NpemU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGh9LG9wdGlvbnM6e30scGVyZm9ybUFjdGlvbjpmdW5jdGlvbihidCxFdCxrdCxVdCl7c3dpdGNoKGt0KXtjYXNlIDA6cmV0dXJuIHRoaXMuYmVnaW4oIm9wZW5fZGlyZWN0aXZlIiksMTg7Y2FzZSAxOnJldHVybiA3O2Nhc2UgMjpyZXR1cm4gODtjYXNlIDM6cmV0dXJuIDk7Y2FzZSA0OnJldHVybiAxMDtjYXNlIDU6cmV0dXJuIHRoaXMuYmVnaW4oInR5cGVfZGlyZWN0aXZlIiksMTk7Y2FzZSA2OnJldHVybiB0aGlzLnBvcFN0YXRlKCksdGhpcy5iZWdpbigiYXJnX2RpcmVjdGl2ZSIpLDE2O2Nhc2UgNzpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLHRoaXMucG9wU3RhdGUoKSwyMTtjYXNlIDg6cmV0dXJuIDIwO2Nhc2UgOTpyZXR1cm4gMzI7Y2FzZSAxMDpyZXR1cm4gMzM7Y2FzZSAxMTpyZXR1cm4gdGhpcy5iZWdpbigiYWNjX3RpdGxlIiksMzQ7Y2FzZSAxMjpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLCJhY2NfdGl0bGVfdmFsdWUiO2Nhc2UgMTM6cmV0dXJuIHRoaXMuYmVnaW4oImFjY19kZXNjciIpLDM2O2Nhc2UgMTQ6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSwiYWNjX2Rlc2NyX3ZhbHVlIjtjYXNlIDE1OnRoaXMuYmVnaW4oImFjY19kZXNjcl9tdWx0aWxpbmUiKTticmVhaztjYXNlIDE2OnRoaXMucG9wU3RhdGUoKTticmVhaztjYXNlIDE3OnJldHVybiJhY2NfZGVzY3JfbXVsdGlsaW5lX3ZhbHVlIjtjYXNlIDE4OmJyZWFrO2Nhc2UgMTk6YzticmVhaztjYXNlIDIwOnJldHVybiAxNTtjYXNlIDIxOmJyZWFrO2Nhc2UgMjI6cmV0dXJuIDIyO2Nhc2UgMjM6cmV0dXJuIDI1O2Nhc2UgMjQ6cmV0dXJuIDI2O2Nhc2UgMjU6cmV0dXJuIDI3O2Nhc2UgMjY6cmV0dXJuIDI4O2Nhc2UgMjc6cmV0dXJuIHRoaXMuYmVnaW4oInBlcnNvbl9leHQiKSw1NTtjYXNlIDI4OnJldHVybiB0aGlzLmJlZ2luKCJwZXJzb24iKSw1NDtjYXNlIDI5OnJldHVybiB0aGlzLmJlZ2luKCJzeXN0ZW1fZXh0X3F1ZXVlIiksNjE7Y2FzZSAzMDpyZXR1cm4gdGhpcy5iZWdpbigic3lzdGVtX2V4dF9kYiIpLDYwO2Nhc2UgMzE6cmV0dXJuIHRoaXMuYmVnaW4oInN5c3RlbV9leHQiKSw1OTtjYXNlIDMyOnJldHVybiB0aGlzLmJlZ2luKCJzeXN0ZW1fcXVldWUiKSw1ODtjYXNlIDMzOnJldHVybiB0aGlzLmJlZ2luKCJzeXN0ZW1fZGIiKSw1NztjYXNlIDM0OnJldHVybiB0aGlzLmJlZ2luKCJzeXN0ZW0iKSw1NjtjYXNlIDM1OnJldHVybiB0aGlzLmJlZ2luKCJib3VuZGFyeSIpLDQ3O2Nhc2UgMzY6cmV0dXJuIHRoaXMuYmVnaW4oImVudGVycHJpc2VfYm91bmRhcnkiKSw0NDtjYXNlIDM3OnJldHVybiB0aGlzLmJlZ2luKCJzeXN0ZW1fYm91bmRhcnkiKSw0NjtjYXNlIDM4OnJldHVybiB0aGlzLmJlZ2luKCJjb250YWluZXJfZXh0X3F1ZXVlIiksNjc7Y2FzZSAzOTpyZXR1cm4gdGhpcy5iZWdpbigiY29udGFpbmVyX2V4dF9kYiIpLDY2O2Nhc2UgNDA6cmV0dXJuIHRoaXMuYmVnaW4oImNvbnRhaW5lcl9leHQiKSw2NTtjYXNlIDQxOnJldHVybiB0aGlzLmJlZ2luKCJjb250YWluZXJfcXVldWUiKSw2NDtjYXNlIDQyOnJldHVybiB0aGlzLmJlZ2luKCJjb250YWluZXJfZGIiKSw2MztjYXNlIDQzOnJldHVybiB0aGlzLmJlZ2luKCJjb250YWluZXIiKSw2MjtjYXNlIDQ0OnJldHVybiB0aGlzLmJlZ2luKCJjb250YWluZXJfYm91bmRhcnkiKSw0ODtjYXNlIDQ1OnJldHVybiB0aGlzLmJlZ2luKCJjb21wb25lbnRfZXh0X3F1ZXVlIiksNzM7Y2FzZSA0NjpyZXR1cm4gdGhpcy5iZWdpbigiY29tcG9uZW50X2V4dF9kYiIpLDcyO2Nhc2UgNDc6cmV0dXJuIHRoaXMuYmVnaW4oImNvbXBvbmVudF9leHQiKSw3MTtjYXNlIDQ4OnJldHVybiB0aGlzLmJlZ2luKCJjb21wb25lbnRfcXVldWUiKSw3MDtjYXNlIDQ5OnJldHVybiB0aGlzLmJlZ2luKCJjb21wb25lbnRfZGIiKSw2OTtjYXNlIDUwOnJldHVybiB0aGlzLmJlZ2luKCJjb21wb25lbnQiKSw2ODtjYXNlIDUxOnJldHVybiB0aGlzLmJlZ2luKCJub2RlIiksNDk7Y2FzZSA1MjpyZXR1cm4gdGhpcy5iZWdpbigibm9kZSIpLDQ5O2Nhc2UgNTM6cmV0dXJuIHRoaXMuYmVnaW4oIm5vZGVfbCIpLDUwO2Nhc2UgNTQ6cmV0dXJuIHRoaXMuYmVnaW4oIm5vZGVfciIpLDUxO2Nhc2UgNTU6cmV0dXJuIHRoaXMuYmVnaW4oInJlbCIpLDc0O2Nhc2UgNTY6cmV0dXJuIHRoaXMuYmVnaW4oImJpcmVsIiksNzU7Y2FzZSA1NzpyZXR1cm4gdGhpcy5iZWdpbigicmVsX3UiKSw3NjtjYXNlIDU4OnJldHVybiB0aGlzLmJlZ2luKCJyZWxfdSIpLDc2O2Nhc2UgNTk6cmV0dXJuIHRoaXMuYmVnaW4oInJlbF9kIiksNzc7Y2FzZSA2MDpyZXR1cm4gdGhpcy5iZWdpbigicmVsX2QiKSw3NztjYXNlIDYxOnJldHVybiB0aGlzLmJlZ2luKCJyZWxfbCIpLDc4O2Nhc2UgNjI6cmV0dXJuIHRoaXMuYmVnaW4oInJlbF9sIiksNzg7Y2FzZSA2MzpyZXR1cm4gdGhpcy5iZWdpbigicmVsX3IiKSw3OTtjYXNlIDY0OnJldHVybiB0aGlzLmJlZ2luKCJyZWxfciIpLDc5O2Nhc2UgNjU6cmV0dXJuIHRoaXMuYmVnaW4oInJlbF9iIiksODA7Y2FzZSA2NjpyZXR1cm4gdGhpcy5iZWdpbigicmVsX2luZGV4IiksODE7Y2FzZSA2NzpyZXR1cm4gdGhpcy5iZWdpbigidXBkYXRlX2VsX3N0eWxlIiksODI7Y2FzZSA2ODpyZXR1cm4gdGhpcy5iZWdpbigidXBkYXRlX3JlbF9zdHlsZSIpLDgzO2Nhc2UgNjk6cmV0dXJuIHRoaXMuYmVnaW4oInVwZGF0ZV9sYXlvdXRfY29uZmlnIiksODQ7Y2FzZSA3MDpyZXR1cm4iRU9GX0lOX1NUUlVDVCI7Y2FzZSA3MTpyZXR1cm4gdGhpcy5iZWdpbigiYXR0cmlidXRlIiksIkFUVFJJQlVURV9FTVBUWSI7Y2FzZSA3Mjp0aGlzLmJlZ2luKCJhdHRyaWJ1dGUiKTticmVhaztjYXNlIDczOnRoaXMucG9wU3RhdGUoKSx0aGlzLnBvcFN0YXRlKCk7YnJlYWs7Y2FzZSA3NDpyZXR1cm4gOTA7Y2FzZSA3NTpicmVhaztjYXNlIDc2OnJldHVybiA5MDtjYXNlIDc3OnRoaXMuYmVnaW4oInN0cmluZyIpO2JyZWFrO2Nhc2UgNzg6dGhpcy5wb3BTdGF0ZSgpO2JyZWFrO2Nhc2UgNzk6cmV0dXJuIlNUUiI7Y2FzZSA4MDp0aGlzLmJlZ2luKCJzdHJpbmdfa3YiKTticmVhaztjYXNlIDgxOnJldHVybiB0aGlzLmJlZ2luKCJzdHJpbmdfa3Zfa2V5IiksIlNUUl9LRVkiO2Nhc2UgODI6dGhpcy5wb3BTdGF0ZSgpLHRoaXMuYmVnaW4oInN0cmluZ19rdl92YWx1ZSIpO2JyZWFrO2Nhc2UgODM6cmV0dXJuIlNUUl9WQUxVRSI7Y2FzZSA4NDp0aGlzLnBvcFN0YXRlKCksdGhpcy5wb3BTdGF0ZSgpO2JyZWFrO2Nhc2UgODU6cmV0dXJuIlNUUiI7Y2FzZSA4NjpyZXR1cm4iTEJSQUNFIjtjYXNlIDg3OnJldHVybiJSQlJBQ0UiO2Nhc2UgODg6cmV0dXJuIlNQQUNFIjtjYXNlIDg5OnJldHVybiJFT0wiO2Nhc2UgOTA6cmV0dXJuIDI0fX0scnVsZXM6Wy9eKD86JSVceykvLC9eKD86LipkaXJlY3Rpb25ccytUQlteXG5dKikvLC9eKD86LipkaXJlY3Rpb25ccytCVFteXG5dKikvLC9eKD86LipkaXJlY3Rpb25ccytSTFteXG5dKikvLC9eKD86LipkaXJlY3Rpb25ccytMUlteXG5dKikvLC9eKD86KCg/Oig/IVx9JSUpW146Ll0pKikpLywvXig/OjopLywvXig/Olx9JSUpLywvXig/OigoPzooPyFcfSUlKS58XG4pKikpLywvXig/OnRpdGxlXHNbXiNcbjtdKykvLC9eKD86YWNjRGVzY3JpcHRpb25cc1teI1xuO10rKS8sL14oPzphY2NUaXRsZVxzKjpccyopLywvXig/Oig/IVxufHwpKlteXG5dKikvLC9eKD86YWNjRGVzY3Jccyo6XHMqKS8sL14oPzooPyFcbnx8KSpbXlxuXSopLywvXig/OmFjY0Rlc2NyXHMqXHtccyopLywvXig/OltcfV0pLywvXig/OlteXH1dKikvLC9eKD86JSUoPyFceykqW15cbl0qKFxyP1xuPykrKS8sL14oPzolJVteXG5dKihccj9cbikqKS8sL14oPzpccyooXHI/XG4pKykvLC9eKD86XHMrKS8sL14oPzpDNENvbnRleHRcYikvLC9eKD86QzRDb250YWluZXJcYikvLC9eKD86QzRDb21wb25lbnRcYikvLC9eKD86QzREeW5hbWljXGIpLywvXig/OkM0RGVwbG95bWVudFxiKS8sL14oPzpQZXJzb25fRXh0XGIpLywvXig/OlBlcnNvblxiKS8sL14oPzpTeXN0ZW1RdWV1ZV9FeHRcYikvLC9eKD86U3lzdGVtRGJfRXh0XGIpLywvXig/OlN5c3RlbV9FeHRcYikvLC9eKD86U3lzdGVtUXVldWVcYikvLC9eKD86U3lzdGVtRGJcYikvLC9eKD86U3lzdGVtXGIpLywvXig/OkJvdW5kYXJ5XGIpLywvXig/OkVudGVycHJpc2VfQm91bmRhcnlcYikvLC9eKD86U3lzdGVtX0JvdW5kYXJ5XGIpLywvXig/OkNvbnRhaW5lclF1ZXVlX0V4dFxiKS8sL14oPzpDb250YWluZXJEYl9FeHRcYikvLC9eKD86Q29udGFpbmVyX0V4dFxiKS8sL14oPzpDb250YWluZXJRdWV1ZVxiKS8sL14oPzpDb250YWluZXJEYlxiKS8sL14oPzpDb250YWluZXJcYikvLC9eKD86Q29udGFpbmVyX0JvdW5kYXJ5XGIpLywvXig/OkNvbXBvbmVudFF1ZXVlX0V4dFxiKS8sL14oPzpDb21wb25lbnREYl9FeHRcYikvLC9eKD86Q29tcG9uZW50X0V4dFxiKS8sL14oPzpDb21wb25lbnRRdWV1ZVxiKS8sL14oPzpDb21wb25lbnREYlxiKS8sL14oPzpDb21wb25lbnRcYikvLC9eKD86RGVwbG95bWVudF9Ob2RlXGIpLywvXig/Ok5vZGVcYikvLC9eKD86Tm9kZV9MXGIpLywvXig/Ok5vZGVfUlxiKS8sL14oPzpSZWxcYikvLC9eKD86QmlSZWxcYikvLC9eKD86UmVsX1VwXGIpLywvXig/OlJlbF9VXGIpLywvXig/OlJlbF9Eb3duXGIpLywvXig/OlJlbF9EXGIpLywvXig/OlJlbF9MZWZ0XGIpLywvXig/OlJlbF9MXGIpLywvXig/OlJlbF9SaWdodFxiKS8sL14oPzpSZWxfUlxiKS8sL14oPzpSZWxfQmFja1xiKS8sL14oPzpSZWxJbmRleFxiKS8sL14oPzpVcGRhdGVFbGVtZW50U3R5bGVcYikvLC9eKD86VXBkYXRlUmVsU3R5bGVcYikvLC9eKD86VXBkYXRlTGF5b3V0Q29uZmlnXGIpLywvXig/OiQpLywvXig/OlsoXVsgXSpbLF0pLywvXig/OlsoXSkvLC9eKD86WyldKS8sL14oPzosLCkvLC9eKD86LCkvLC9eKD86WyBdKlsiXVsiXSkvLC9eKD86WyBdKlsiXSkvLC9eKD86WyJdKS8sL14oPzpbXiJdKikvLC9eKD86WyBdKltcJF0pLywvXig/OltePV0qKS8sL14oPzpbPV1bIF0qWyJdKS8sL14oPzpbXiJdKykvLC9eKD86WyJdKS8sL14oPzpbXixdKykvLC9eKD86XHspLywvXig/Olx9KS8sL14oPzpbXHNdKykvLC9eKD86W1xuXHJdKykvLC9eKD86JCkvXSxjb25kaXRpb25zOnthY2NfZGVzY3JfbXVsdGlsaW5lOntydWxlczpbMTYsMTddLGluY2x1c2l2ZTohMX0sYWNjX2Rlc2NyOntydWxlczpbMTRdLGluY2x1c2l2ZTohMX0sYWNjX3RpdGxlOntydWxlczpbMTJdLGluY2x1c2l2ZTohMX0sY2xvc2VfZGlyZWN0aXZlOntydWxlczpbXSxpbmNsdXNpdmU6ITF9LGFyZ19kaXJlY3RpdmU6e3J1bGVzOls3LDhdLGluY2x1c2l2ZTohMX0sdHlwZV9kaXJlY3RpdmU6e3J1bGVzOls2LDddLGluY2x1c2l2ZTohMX0sb3Blbl9kaXJlY3RpdmU6e3J1bGVzOls1XSxpbmNsdXNpdmU6ITF9LHN0cmluZ19rdl92YWx1ZTp7cnVsZXM6WzgzLDg0XSxpbmNsdXNpdmU6ITF9LHN0cmluZ19rdl9rZXk6e3J1bGVzOls4Ml0saW5jbHVzaXZlOiExfSxzdHJpbmdfa3Y6e3J1bGVzOls4MV0saW5jbHVzaXZlOiExfSxzdHJpbmc6e3J1bGVzOls3OCw3OV0saW5jbHVzaXZlOiExfSxhdHRyaWJ1dGU6e3J1bGVzOls3Myw3NCw3NSw3Niw3Nyw4MCw4NV0saW5jbHVzaXZlOiExfSx1cGRhdGVfbGF5b3V0X2NvbmZpZzp7cnVsZXM6WzcwLDcxLDcyLDczXSxpbmNsdXNpdmU6ITF9LHVwZGF0ZV9yZWxfc3R5bGU6e3J1bGVzOls3MCw3MSw3Miw3M10saW5jbHVzaXZlOiExfSx1cGRhdGVfZWxfc3R5bGU6e3J1bGVzOls3MCw3MSw3Miw3M10saW5jbHVzaXZlOiExfSxyZWxfYjp7cnVsZXM6WzcwLDcxLDcyLDczXSxpbmNsdXNpdmU6ITF9LHJlbF9yOntydWxlczpbNzAsNzEsNzIsNzNdLGluY2x1c2l2ZTohMX0scmVsX2w6e3J1bGVzOls3MCw3MSw3Miw3M10saW5jbHVzaXZlOiExfSxyZWxfZDp7cnVsZXM6WzcwLDcxLDcyLDczXSxpbmNsdXNpdmU6ITF9LHJlbF91OntydWxlczpbNzAsNzEsNzIsNzNdLGluY2x1c2l2ZTohMX0scmVsX2JpOntydWxlczpbXSxpbmNsdXNpdmU6ITF9LHJlbDp7cnVsZXM6WzcwLDcxLDcyLDczXSxpbmNsdXNpdmU6ITF9LG5vZGVfcjp7cnVsZXM6WzcwLDcxLDcyLDczXSxpbmNsdXNpdmU6ITF9LG5vZGVfbDp7cnVsZXM6WzcwLDcxLDcyLDczXSxpbmNsdXNpdmU6ITF9LG5vZGU6e3J1bGVzOls3MCw3MSw3Miw3M10saW5jbHVzaXZlOiExfSxpbmRleDp7cnVsZXM6W10saW5jbHVzaXZlOiExfSxyZWxfaW5kZXg6e3J1bGVzOls3MCw3MSw3Miw3M10saW5jbHVzaXZlOiExfSxjb21wb25lbnRfZXh0X3F1ZXVlOntydWxlczpbXSxpbmNsdXNpdmU6ITF9LGNvbXBvbmVudF9leHRfZGI6e3J1bGVzOls3MCw3MSw3Miw3M10saW5jbHVzaXZlOiExfSxjb21wb25lbnRfZXh0OntydWxlczpbNzAsNzEsNzIsNzNdLGluY2x1c2l2ZTohMX0sY29tcG9uZW50X3F1ZXVlOntydWxlczpbNzAsNzEsNzIsNzNdLGluY2x1c2l2ZTohMX0sY29tcG9uZW50X2RiOntydWxlczpbNzAsNzEsNzIsNzNdLGluY2x1c2l2ZTohMX0sY29tcG9uZW50OntydWxlczpbNzAsNzEsNzIsNzNdLGluY2x1c2l2ZTohMX0sY29udGFpbmVyX2JvdW5kYXJ5OntydWxlczpbNzAsNzEsNzIsNzNdLGluY2x1c2l2ZTohMX0sY29udGFpbmVyX2V4dF9xdWV1ZTp7cnVsZXM6W10saW5jbHVzaXZlOiExfSxjb250YWluZXJfZXh0X2RiOntydWxlczpbNzAsNzEsNzIsNzNdLGluY2x1c2l2ZTohMX0sY29udGFpbmVyX2V4dDp7cnVsZXM6WzcwLDcxLDcyLDczXSxpbmNsdXNpdmU6ITF9LGNvbnRhaW5lcl9xdWV1ZTp7cnVsZXM6WzcwLDcxLDcyLDczXSxpbmNsdXNpdmU6ITF9LGNvbnRhaW5lcl9kYjp7cnVsZXM6WzcwLDcxLDcyLDczXSxpbmNsdXNpdmU6ITF9LGNvbnRhaW5lcjp7cnVsZXM6WzcwLDcxLDcyLDczXSxpbmNsdXNpdmU6ITF9LGJpcmVsOntydWxlczpbNzAsNzEsNzIsNzNdLGluY2x1c2l2ZTohMX0sc3lzdGVtX2JvdW5kYXJ5OntydWxlczpbNzAsNzEsNzIsNzNdLGluY2x1c2l2ZTohMX0sZW50ZXJwcmlzZV9ib3VuZGFyeTp7cnVsZXM6WzcwLDcxLDcyLDczXSxpbmNsdXNpdmU6ITF9LGJvdW5kYXJ5OntydWxlczpbNzAsNzEsNzIsNzNdLGluY2x1c2l2ZTohMX0sc3lzdGVtX2V4dF9xdWV1ZTp7cnVsZXM6WzcwLDcxLDcyLDczXSxpbmNsdXNpdmU6ITF9LHN5c3RlbV9leHRfZGI6e3J1bGVzOls3MCw3MSw3Miw3M10saW5jbHVzaXZlOiExfSxzeXN0ZW1fZXh0OntydWxlczpbNzAsNzEsNzIsNzNdLGluY2x1c2l2ZTohMX0sc3lzdGVtX3F1ZXVlOntydWxlczpbNzAsNzEsNzIsNzNdLGluY2x1c2l2ZTohMX0sc3lzdGVtX2RiOntydWxlczpbNzAsNzEsNzIsNzNdLGluY2x1c2l2ZTohMX0sc3lzdGVtOntydWxlczpbNzAsNzEsNzIsNzNdLGluY2x1c2l2ZTohMX0scGVyc29uX2V4dDp7cnVsZXM6WzcwLDcxLDcyLDczXSxpbmNsdXNpdmU6ITF9LHBlcnNvbjp7cnVsZXM6WzcwLDcxLDcyLDczXSxpbmNsdXNpdmU6ITF9LElOSVRJQUw6e3J1bGVzOlswLDEsMiwzLDQsOSwxMCwxMSwxMywxNSwxOCwxOSwyMCwyMSwyMiwyMywyNCwyNSwyNiwyNywyOCwyOSwzMCwzMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Miw0Myw0NCw0NSw0Niw0Nyw0OCw0OSw1MCw1MSw1Miw1Myw1NCw1NSw1Niw1Nyw1OCw1OSw2MCw2MSw2Miw2Myw2NCw2NSw2Niw2Nyw2OCw2OSw4Niw4Nyw4OCw4OSw5MF0saW5jbHVzaXZlOiEwfX19O3JldHVybiB6dH0oKTt3ZS5sZXhlcj1qdDtmdW5jdGlvbiBGdCgpe3RoaXMueXk9e319cmV0dXJuIEZ0LnByb3RvdHlwZT13ZSx3ZS5QYXJzZXI9RnQsbmV3IEZ0fSgpO3FjLnBhcnNlcj1xYztjb25zdCBsSz10PT50Lm1hdGNoKC9eXHMqQzRDb250ZXh0fEM0Q29udGFpbmVyfEM0Q29tcG9uZW50fEM0RHluYW1pY3xDNERlcGxveW1lbnQvKSE9PW51bGw7bGV0IGRpPVtdLFFhPVsiIl0sdW49Imdsb2JhbCIscGk9IiIsRGk9W3thbGlhczoiZ2xvYmFsIixsYWJlbDp7dGV4dDoiZ2xvYmFsIn0sdHlwZTp7dGV4dDoiZ2xvYmFsIn0sdGFnczpudWxsLGxpbms6bnVsbCxwYXJlbnRCb3VuZGFyeToiIn1dLFZjPVtdLG1nPSIiLGJnPSExLHAxPTQsZzE9Mjt2YXIganc7Y29uc3QgY0s9ZnVuY3Rpb24oKXtyZXR1cm4gand9LHVLPWZ1bmN0aW9uKHQpe2p3PWFpKHQsbnQoKSl9LGhLPWZ1bmN0aW9uKHQsZSxyKXtYZS5wYXJzZURpcmVjdGl2ZSh0aGlzLHQsZSxyKX0sZks9ZnVuY3Rpb24odCxlLHIsbixpLGEscyxvLGwpe2lmKHQ9PW51bGx8fGU9PT12b2lkIDB8fGU9PT1udWxsfHxyPT09dm9pZCAwfHxyPT09bnVsbHx8bj09PXZvaWQgMHx8bj09PW51bGwpcmV0dXJuO2xldCB1PXt9O2NvbnN0IGg9VmMuZmluZChkPT5kLmZyb209PT1lJiZkLnRvPT09cik7aWYoaD91PWg6VmMucHVzaCh1KSx1LnR5cGU9dCx1LmZyb209ZSx1LnRvPXIsdS5sYWJlbD17dGV4dDpufSxpPT1udWxsKXUudGVjaG49e3RleHQ6IiJ9O2Vsc2UgaWYodHlwZW9mIGk9PSJvYmplY3QiKXtsZXRbZCxmXT1PYmplY3QuZW50cmllcyhpKVswXTt1W2RdPXt0ZXh0OmZ9fWVsc2UgdS50ZWNobj17dGV4dDppfTtpZihhPT1udWxsKXUuZGVzY3I9e3RleHQ6IiJ9O2Vsc2UgaWYodHlwZW9mIGE9PSJvYmplY3QiKXtsZXRbZCxmXT1PYmplY3QuZW50cmllcyhhKVswXTt1W2RdPXt0ZXh0OmZ9fWVsc2UgdS5kZXNjcj17dGV4dDphfTtpZih0eXBlb2Ygcz09Im9iamVjdCIpe2xldFtkLGZdPU9iamVjdC5lbnRyaWVzKHMpWzBdO3VbZF09Zn1lbHNlIHUuc3ByaXRlPXM7aWYodHlwZW9mIG89PSJvYmplY3QiKXtsZXRbZCxmXT1PYmplY3QuZW50cmllcyhvKVswXTt1W2RdPWZ9ZWxzZSB1LnRhZ3M9bztpZih0eXBlb2YgbD09Im9iamVjdCIpe2xldFtkLGZdPU9iamVjdC5lbnRyaWVzKGwpWzBdO3VbZF09Zn1lbHNlIHUubGluaz1sO3Uud3JhcD1KYSgpfSxkSz1mdW5jdGlvbih0LGUscixuLGksYSxzKXtpZihlPT09bnVsbHx8cj09PW51bGwpcmV0dXJuO2xldCBvPXt9O2NvbnN0IGw9ZGkuZmluZCh1PT51LmFsaWFzPT09ZSk7aWYobCYmZT09PWwuYWxpYXM/bz1sOihvLmFsaWFzPWUsZGkucHVzaChvKSkscj09bnVsbD9vLmxhYmVsPXt0ZXh0OiIifTpvLmxhYmVsPXt0ZXh0OnJ9LG49PW51bGwpby5kZXNjcj17dGV4dDoiIn07ZWxzZSBpZih0eXBlb2Ygbj09Im9iamVjdCIpe2xldFt1LGhdPU9iamVjdC5lbnRyaWVzKG4pWzBdO29bdV09e3RleHQ6aH19ZWxzZSBvLmRlc2NyPXt0ZXh0Om59O2lmKHR5cGVvZiBpPT0ib2JqZWN0Iil7bGV0W3UsaF09T2JqZWN0LmVudHJpZXMoaSlbMF07b1t1XT1ofWVsc2Ugby5zcHJpdGU9aTtpZih0eXBlb2YgYT09Im9iamVjdCIpe2xldFt1LGhdPU9iamVjdC5lbnRyaWVzKGEpWzBdO29bdV09aH1lbHNlIG8udGFncz1hO2lmKHR5cGVvZiBzPT0ib2JqZWN0Iil7bGV0W3UsaF09T2JqZWN0LmVudHJpZXMocylbMF07b1t1XT1ofWVsc2Ugby5saW5rPXM7by50eXBlQzRTaGFwZT17dGV4dDp0fSxvLnBhcmVudEJvdW5kYXJ5PXVuLG8ud3JhcD1KYSgpfSxwSz1mdW5jdGlvbih0LGUscixuLGksYSxzLG8pe2lmKGU9PT1udWxsfHxyPT09bnVsbClyZXR1cm47bGV0IGw9e307Y29uc3QgdT1kaS5maW5kKGg9PmguYWxpYXM9PT1lKTtpZih1JiZlPT09dS5hbGlhcz9sPXU6KGwuYWxpYXM9ZSxkaS5wdXNoKGwpKSxyPT1udWxsP2wubGFiZWw9e3RleHQ6IiJ9OmwubGFiZWw9e3RleHQ6cn0sbj09bnVsbClsLnRlY2huPXt0ZXh0OiIifTtlbHNlIGlmKHR5cGVvZiBuPT0ib2JqZWN0Iil7bGV0W2gsZF09T2JqZWN0LmVudHJpZXMobilbMF07bFtoXT17dGV4dDpkfX1lbHNlIGwudGVjaG49e3RleHQ6bn07aWYoaT09bnVsbClsLmRlc2NyPXt0ZXh0OiIifTtlbHNlIGlmKHR5cGVvZiBpPT0ib2JqZWN0Iil7bGV0W2gsZF09T2JqZWN0LmVudHJpZXMoaSlbMF07bFtoXT17dGV4dDpkfX1lbHNlIGwuZGVzY3I9e3RleHQ6aX07aWYodHlwZW9mIGE9PSJvYmplY3QiKXtsZXRbaCxkXT1PYmplY3QuZW50cmllcyhhKVswXTtsW2hdPWR9ZWxzZSBsLnNwcml0ZT1hO2lmKHR5cGVvZiBzPT0ib2JqZWN0Iil7bGV0W2gsZF09T2JqZWN0LmVudHJpZXMocylbMF07bFtoXT1kfWVsc2UgbC50YWdzPXM7aWYodHlwZW9mIG89PSJvYmplY3QiKXtsZXRbaCxkXT1PYmplY3QuZW50cmllcyhvKVswXTtsW2hdPWR9ZWxzZSBsLmxpbms9bztsLndyYXA9SmEoKSxsLnR5cGVDNFNoYXBlPXt0ZXh0OnR9LGwucGFyZW50Qm91bmRhcnk9dW59LGdLPWZ1bmN0aW9uKHQsZSxyLG4saSxhLHMsbyl7aWYoZT09PW51bGx8fHI9PT1udWxsKXJldHVybjtsZXQgbD17fTtjb25zdCB1PWRpLmZpbmQoaD0+aC5hbGlhcz09PWUpO2lmKHUmJmU9PT11LmFsaWFzP2w9dToobC5hbGlhcz1lLGRpLnB1c2gobCkpLHI9PW51bGw/bC5sYWJlbD17dGV4dDoiIn06bC5sYWJlbD17dGV4dDpyfSxuPT1udWxsKWwudGVjaG49e3RleHQ6IiJ9O2Vsc2UgaWYodHlwZW9mIG49PSJvYmplY3QiKXtsZXRbaCxkXT1PYmplY3QuZW50cmllcyhuKVswXTtsW2hdPXt0ZXh0OmR9fWVsc2UgbC50ZWNobj17dGV4dDpufTtpZihpPT1udWxsKWwuZGVzY3I9e3RleHQ6IiJ9O2Vsc2UgaWYodHlwZW9mIGk9PSJvYmplY3QiKXtsZXRbaCxkXT1PYmplY3QuZW50cmllcyhpKVswXTtsW2hdPXt0ZXh0OmR9fWVsc2UgbC5kZXNjcj17dGV4dDppfTtpZih0eXBlb2YgYT09Im9iamVjdCIpe2xldFtoLGRdPU9iamVjdC5lbnRyaWVzKGEpWzBdO2xbaF09ZH1lbHNlIGwuc3ByaXRlPWE7aWYodHlwZW9mIHM9PSJvYmplY3QiKXtsZXRbaCxkXT1PYmplY3QuZW50cmllcyhzKVswXTtsW2hdPWR9ZWxzZSBsLnRhZ3M9cztpZih0eXBlb2Ygbz09Im9iamVjdCIpe2xldFtoLGRdPU9iamVjdC5lbnRyaWVzKG8pWzBdO2xbaF09ZH1lbHNlIGwubGluaz1vO2wud3JhcD1KYSgpLGwudHlwZUM0U2hhcGU9e3RleHQ6dH0sbC5wYXJlbnRCb3VuZGFyeT11bn0seUs9ZnVuY3Rpb24odCxlLHIsbixpKXtpZih0PT09bnVsbHx8ZT09PW51bGwpcmV0dXJuO2xldCBhPXt9O2NvbnN0IHM9RGkuZmluZChvPT5vLmFsaWFzPT09dCk7aWYocyYmdD09PXMuYWxpYXM/YT1zOihhLmFsaWFzPXQsRGkucHVzaChhKSksZT09bnVsbD9hLmxhYmVsPXt0ZXh0OiIifTphLmxhYmVsPXt0ZXh0OmV9LHI9PW51bGwpYS50eXBlPXt0ZXh0OiJzeXN0ZW0ifTtlbHNlIGlmKHR5cGVvZiByPT0ib2JqZWN0Iil7bGV0W28sbF09T2JqZWN0LmVudHJpZXMocilbMF07YVtvXT17dGV4dDpsfX1lbHNlIGEudHlwZT17dGV4dDpyfTtpZih0eXBlb2Ygbj09Im9iamVjdCIpe2xldFtvLGxdPU9iamVjdC5lbnRyaWVzKG4pWzBdO2Fbb109bH1lbHNlIGEudGFncz1uO2lmKHR5cGVvZiBpPT0ib2JqZWN0Iil7bGV0W28sbF09T2JqZWN0LmVudHJpZXMoaSlbMF07YVtvXT1sfWVsc2UgYS5saW5rPWk7YS5wYXJlbnRCb3VuZGFyeT11bixhLndyYXA9SmEoKSxwaT11bix1bj10LFFhLnB1c2gocGkpfSxtSz1mdW5jdGlvbih0LGUscixuLGkpe2lmKHQ9PT1udWxsfHxlPT09bnVsbClyZXR1cm47bGV0IGE9e307Y29uc3Qgcz1EaS5maW5kKG89Pm8uYWxpYXM9PT10KTtpZihzJiZ0PT09cy5hbGlhcz9hPXM6KGEuYWxpYXM9dCxEaS5wdXNoKGEpKSxlPT1udWxsP2EubGFiZWw9e3RleHQ6IiJ9OmEubGFiZWw9e3RleHQ6ZX0scj09bnVsbClhLnR5cGU9e3RleHQ6ImNvbnRhaW5lciJ9O2Vsc2UgaWYodHlwZW9mIHI9PSJvYmplY3QiKXtsZXRbbyxsXT1PYmplY3QuZW50cmllcyhyKVswXTthW29dPXt0ZXh0Omx9fWVsc2UgYS50eXBlPXt0ZXh0OnJ9O2lmKHR5cGVvZiBuPT0ib2JqZWN0Iil7bGV0W28sbF09T2JqZWN0LmVudHJpZXMobilbMF07YVtvXT1sfWVsc2UgYS50YWdzPW47aWYodHlwZW9mIGk9PSJvYmplY3QiKXtsZXRbbyxsXT1PYmplY3QuZW50cmllcyhpKVswXTthW29dPWx9ZWxzZSBhLmxpbms9aTthLnBhcmVudEJvdW5kYXJ5PXVuLGEud3JhcD1KYSgpLHBpPXVuLHVuPXQsUWEucHVzaChwaSl9LGJLPWZ1bmN0aW9uKHQsZSxyLG4saSxhLHMsbyl7aWYoZT09PW51bGx8fHI9PT1udWxsKXJldHVybjtsZXQgbD17fTtjb25zdCB1PURpLmZpbmQoaD0+aC5hbGlhcz09PWUpO2lmKHUmJmU9PT11LmFsaWFzP2w9dToobC5hbGlhcz1lLERpLnB1c2gobCkpLHI9PW51bGw/bC5sYWJlbD17dGV4dDoiIn06bC5sYWJlbD17dGV4dDpyfSxuPT1udWxsKWwudHlwZT17dGV4dDoibm9kZSJ9O2Vsc2UgaWYodHlwZW9mIG49PSJvYmplY3QiKXtsZXRbaCxkXT1PYmplY3QuZW50cmllcyhuKVswXTtsW2hdPXt0ZXh0OmR9fWVsc2UgbC50eXBlPXt0ZXh0Om59O2lmKGk9PW51bGwpbC5kZXNjcj17dGV4dDoiIn07ZWxzZSBpZih0eXBlb2YgaT09Im9iamVjdCIpe2xldFtoLGRdPU9iamVjdC5lbnRyaWVzKGkpWzBdO2xbaF09e3RleHQ6ZH19ZWxzZSBsLmRlc2NyPXt0ZXh0Oml9O2lmKHR5cGVvZiBzPT0ib2JqZWN0Iil7bGV0W2gsZF09T2JqZWN0LmVudHJpZXMocylbMF07bFtoXT1kfWVsc2UgbC50YWdzPXM7aWYodHlwZW9mIG89PSJvYmplY3QiKXtsZXRbaCxkXT1PYmplY3QuZW50cmllcyhvKVswXTtsW2hdPWR9ZWxzZSBsLmxpbms9bztsLm5vZGVUeXBlPXQsbC5wYXJlbnRCb3VuZGFyeT11bixsLndyYXA9SmEoKSxwaT11bix1bj1lLFFhLnB1c2gocGkpfSxfSz1mdW5jdGlvbigpe3VuPXBpLFFhLnBvcCgpLHBpPVFhLnBvcCgpLFFhLnB1c2gocGkpfSx2Sz1mdW5jdGlvbih0LGUscixuLGksYSxzLG8sbCx1LGgpe2xldCBkPWRpLmZpbmQoZj0+Zi5hbGlhcz09PWUpO2lmKCEoZD09PXZvaWQgMCYmKGQ9RGkuZmluZChmPT5mLmFsaWFzPT09ZSksZD09PXZvaWQgMCkpKXtpZihyIT1udWxsKWlmKHR5cGVvZiByPT0ib2JqZWN0Iil7bGV0W2YscF09T2JqZWN0LmVudHJpZXMocilbMF07ZFtmXT1wfWVsc2UgZC5iZ0NvbG9yPXI7aWYobiE9bnVsbClpZih0eXBlb2Ygbj09Im9iamVjdCIpe2xldFtmLHBdPU9iamVjdC5lbnRyaWVzKG4pWzBdO2RbZl09cH1lbHNlIGQuZm9udENvbG9yPW47aWYoaSE9bnVsbClpZih0eXBlb2YgaT09Im9iamVjdCIpe2xldFtmLHBdPU9iamVjdC5lbnRyaWVzKGkpWzBdO2RbZl09cH1lbHNlIGQuYm9yZGVyQ29sb3I9aTtpZihhIT1udWxsKWlmKHR5cGVvZiBhPT0ib2JqZWN0Iil7bGV0W2YscF09T2JqZWN0LmVudHJpZXMoYSlbMF07ZFtmXT1wfWVsc2UgZC5zaGFkb3dpbmc9YTtpZihzIT1udWxsKWlmKHR5cGVvZiBzPT0ib2JqZWN0Iil7bGV0W2YscF09T2JqZWN0LmVudHJpZXMocylbMF07ZFtmXT1wfWVsc2UgZC5zaGFwZT1zO2lmKG8hPW51bGwpaWYodHlwZW9mIG89PSJvYmplY3QiKXtsZXRbZixwXT1PYmplY3QuZW50cmllcyhvKVswXTtkW2ZdPXB9ZWxzZSBkLnNwcml0ZT1vO2lmKGwhPW51bGwpaWYodHlwZW9mIGw9PSJvYmplY3QiKXtsZXRbZixwXT1PYmplY3QuZW50cmllcyhsKVswXTtkW2ZdPXB9ZWxzZSBkLnRlY2huPWw7aWYodSE9bnVsbClpZih0eXBlb2YgdT09Im9iamVjdCIpe2xldFtmLHBdPU9iamVjdC5lbnRyaWVzKHUpWzBdO2RbZl09cH1lbHNlIGQubGVnZW5kVGV4dD11O2lmKGghPW51bGwpaWYodHlwZW9mIGg9PSJvYmplY3QiKXtsZXRbZixwXT1PYmplY3QuZW50cmllcyhoKVswXTtkW2ZdPXB9ZWxzZSBkLmxlZ2VuZFNwcml0ZT1ofX0seEs9ZnVuY3Rpb24odCxlLHIsbixpLGEscyl7Y29uc3Qgbz1WYy5maW5kKGw9PmwuZnJvbT09PWUmJmwudG89PT1yKTtpZihvIT09dm9pZCAwKXtpZihuIT1udWxsKWlmKHR5cGVvZiBuPT0ib2JqZWN0Iil7bGV0W2wsdV09T2JqZWN0LmVudHJpZXMobilbMF07b1tsXT11fWVsc2Ugby50ZXh0Q29sb3I9bjtpZihpIT1udWxsKWlmKHR5cGVvZiBpPT0ib2JqZWN0Iil7bGV0W2wsdV09T2JqZWN0LmVudHJpZXMoaSlbMF07b1tsXT11fWVsc2Ugby5saW5lQ29sb3I9aTtpZihhIT1udWxsKWlmKHR5cGVvZiBhPT0ib2JqZWN0Iil7bGV0W2wsdV09T2JqZWN0LmVudHJpZXMoYSlbMF07b1tsXT1wYXJzZUludCh1KX1lbHNlIG8ub2Zmc2V0WD1wYXJzZUludChhKTtpZihzIT1udWxsKWlmKHR5cGVvZiBzPT0ib2JqZWN0Iil7bGV0W2wsdV09T2JqZWN0LmVudHJpZXMocylbMF07b1tsXT1wYXJzZUludCh1KX1lbHNlIG8ub2Zmc2V0WT1wYXJzZUludChzKX19LGtLPWZ1bmN0aW9uKHQsZSxyKXtsZXQgbj1wMSxpPWcxO2lmKHR5cGVvZiBlPT0ib2JqZWN0Iil7Y29uc3QgYT1PYmplY3QudmFsdWVzKGUpWzBdO249cGFyc2VJbnQoYSl9ZWxzZSBuPXBhcnNlSW50KGUpO2lmKHR5cGVvZiByPT0ib2JqZWN0Iil7Y29uc3QgYT1PYmplY3QudmFsdWVzKHIpWzBdO2k9cGFyc2VJbnQoYSl9ZWxzZSBpPXBhcnNlSW50KHIpO24+PTEmJihwMT1uKSxpPj0xJiYoZzE9aSl9LHdLPWZ1bmN0aW9uKCl7cmV0dXJuIHAxfSxUSz1mdW5jdGlvbigpe3JldHVybiBnMX0sRUs9ZnVuY3Rpb24oKXtyZXR1cm4gdW59LENLPWZ1bmN0aW9uKCl7cmV0dXJuIHBpfSwkdz1mdW5jdGlvbih0KXtyZXR1cm4gdD09bnVsbD9kaTpkaS5maWx0ZXIoZT0+ZS5wYXJlbnRCb3VuZGFyeT09PXQpfSxTSz1mdW5jdGlvbih0KXtyZXR1cm4gZGkuZmluZChlPT5lLmFsaWFzPT09dCl9LEFLPWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3Qua2V5cygkdyh0KSl9LE1LPWZ1bmN0aW9uKHQpe3JldHVybiB0PT1udWxsP0RpOkRpLmZpbHRlcihlPT5lLnBhcmVudEJvdW5kYXJ5PT09dCl9LExLPWZ1bmN0aW9uKCl7cmV0dXJuIFZjfSxSSz1mdW5jdGlvbigpe3JldHVybiBtZ30sSUs9ZnVuY3Rpb24odCl7Ymc9dH0sSmE9ZnVuY3Rpb24oKXtyZXR1cm4gYmd9LFh3PXthZGRQZXJzb25PclN5c3RlbTpkSyxhZGRQZXJzb25PclN5c3RlbUJvdW5kYXJ5OnlLLGFkZENvbnRhaW5lcjpwSyxhZGRDb250YWluZXJCb3VuZGFyeTptSyxhZGRDb21wb25lbnQ6Z0ssYWRkRGVwbG95bWVudE5vZGU6YksscG9wQm91bmRhcnlQYXJzZVN0YWNrOl9LLGFkZFJlbDpmSyx1cGRhdGVFbFN0eWxlOnZLLHVwZGF0ZVJlbFN0eWxlOnhLLHVwZGF0ZUxheW91dENvbmZpZzprSyxhdXRvV3JhcDpKYSxzZXRXcmFwOklLLGdldEM0U2hhcGVBcnJheTokdyxnZXRDNFNoYXBlOlNLLGdldEM0U2hhcGVLZXlzOkFLLGdldEJvdW5kYXJ5czpNSyxnZXRDdXJyZW50Qm91bmRhcnlQYXJzZTpFSyxnZXRQYXJlbnRCb3VuZGFyeVBhcnNlOkNLLGdldFJlbHM6TEssZ2V0VGl0bGU6UkssZ2V0QzRUeXBlOmNLLGdldEM0U2hhcGVJblJvdzp3SyxnZXRDNEJvdW5kYXJ5SW5Sb3c6VEssc2V0QWNjVGl0bGU6WW4sZ2V0QWNjVGl0bGU6dWksZ2V0QWNjRGVzY3JpcHRpb246Zmksc2V0QWNjRGVzY3JpcHRpb246aGkscGFyc2VEaXJlY3RpdmU6aEssZ2V0Q29uZmlnOigpPT5udCgpLmM0LGNsZWFyOmZ1bmN0aW9uKCl7ZGk9W10sRGk9W3thbGlhczoiZ2xvYmFsIixsYWJlbDp7dGV4dDoiZ2xvYmFsIn0sdHlwZTp7dGV4dDoiZ2xvYmFsIn0sdGFnczpudWxsLGxpbms6bnVsbCxwYXJlbnRCb3VuZGFyeToiIn1dLHBpPSIiLHVuPSJnbG9iYWwiLFFhPVsiIl0sVmM9W10sUWE9WyIiXSxtZz0iIixiZz0hMSxwMT00LGcxPTJ9LExJTkVUWVBFOntTT0xJRDowLERPVFRFRDoxLE5PVEU6MixTT0xJRF9DUk9TUzozLERPVFRFRF9DUk9TUzo0LFNPTElEX09QRU46NSxET1RURURfT1BFTjo2LExPT1BfU1RBUlQ6MTAsTE9PUF9FTkQ6MTEsQUxUX1NUQVJUOjEyLEFMVF9FTFNFOjEzLEFMVF9FTkQ6MTQsT1BUX1NUQVJUOjE1LE9QVF9FTkQ6MTYsQUNUSVZFX1NUQVJUOjE3LEFDVElWRV9FTkQ6MTgsUEFSX1NUQVJUOjE5LFBBUl9BTkQ6MjAsUEFSX0VORDoyMSxSRUNUX1NUQVJUOjIyLFJFQ1RfRU5EOjIzLFNPTElEX1BPSU5UOjI0LERPVFRFRF9QT0lOVDoyNX0sQVJST1dUWVBFOntGSUxMRUQ6MCxPUEVOOjF9LFBMQUNFTUVOVDp7TEVGVE9GOjAsUklHSFRPRjoxLE9WRVI6Mn0sc2V0VGl0bGU6ZnVuY3Rpb24odCl7bWc9YWkodCxudCgpKX0sc2V0QzRUeXBlOnVLfSxfZz1mdW5jdGlvbih0LGUpe2NvbnN0IHI9dC5hcHBlbmQoInJlY3QiKTtpZihyLmF0dHIoIngiLGUueCksci5hdHRyKCJ5IixlLnkpLHIuYXR0cigiZmlsbCIsZS5maWxsKSxyLmF0dHIoInN0cm9rZSIsZS5zdHJva2UpLHIuYXR0cigid2lkdGgiLGUud2lkdGgpLHIuYXR0cigiaGVpZ2h0IixlLmhlaWdodCksci5hdHRyKCJyeCIsZS5yeCksci5hdHRyKCJyeSIsZS5yeSksZS5hdHRycyE9PSJ1bmRlZmluZWQiJiZlLmF0dHJzIT09bnVsbClmb3IobGV0IG4gaW4gZS5hdHRycylyLmF0dHIobixlLmF0dHJzW25dKTtyZXR1cm4gZS5jbGFzcyE9PSJ1bmRlZmluZWQiJiZyLmF0dHIoImNsYXNzIixlLmNsYXNzKSxyfSxLdz1mdW5jdGlvbih0LGUscixuLGksYSl7Y29uc3Qgcz10LmFwcGVuZCgiaW1hZ2UiKTtzLmF0dHIoIndpZHRoIixlKSxzLmF0dHIoImhlaWdodCIscikscy5hdHRyKCJ4IixuKSxzLmF0dHIoInkiLGkpO2xldCBvPWEuc3RhcnRzV2l0aCgiZGF0YTppbWFnZS9wbmc7YmFzZTY0Iik/YTpraShhKTtzLmF0dHIoInhsaW5rOmhyZWYiLG8pfSxOSz1mdW5jdGlvbih0LGUscixuKXtjb25zdCBpPXQuYXBwZW5kKCJ1c2UiKTtpLmF0dHIoIngiLGUpLGkuYXR0cigieSIscik7dmFyIGE9a2kobik7aS5hdHRyKCJ4bGluazpocmVmIiwiIyIrYSl9LFp3PWZ1bmN0aW9uKHQsZSl7bGV0IHI9MCxuPTA7Y29uc3QgaT1lLnRleHQuc3BsaXQocGUubGluZUJyZWFrUmVnZXgpO2xldCBhPVtdLHM9MCxvPSgpPT5lLnk7aWYodHlwZW9mIGUudmFsaWduPCJ1IiYmdHlwZW9mIGUudGV4dE1hcmdpbjwidSImJmUudGV4dE1hcmdpbj4wKXN3aXRjaChlLnZhbGlnbil7Y2FzZSJ0b3AiOmNhc2Uic3RhcnQiOm89KCk9Pk1hdGgucm91bmQoZS55K2UudGV4dE1hcmdpbik7YnJlYWs7Y2FzZSJtaWRkbGUiOmNhc2UiY2VudGVyIjpvPSgpPT5NYXRoLnJvdW5kKGUueSsocituK2UudGV4dE1hcmdpbikvMik7YnJlYWs7Y2FzZSJib3R0b20iOmNhc2UiZW5kIjpvPSgpPT5NYXRoLnJvdW5kKGUueSsocituKzIqZS50ZXh0TWFyZ2luKS1lLnRleHRNYXJnaW4pO2JyZWFrfWlmKHR5cGVvZiBlLmFuY2hvcjwidSImJnR5cGVvZiBlLnRleHRNYXJnaW48InUiJiZ0eXBlb2YgZS53aWR0aDwidSIpc3dpdGNoKGUuYW5jaG9yKXtjYXNlImxlZnQiOmNhc2Uic3RhcnQiOmUueD1NYXRoLnJvdW5kKGUueCtlLnRleHRNYXJnaW4pLGUuYW5jaG9yPSJzdGFydCIsZS5kb21pbmFudEJhc2VsaW5lPSJ0ZXh0LWFmdGVyLWVkZ2UiLGUuYWxpZ25tZW50QmFzZWxpbmU9Im1pZGRsZSI7YnJlYWs7Y2FzZSJtaWRkbGUiOmNhc2UiY2VudGVyIjplLng9TWF0aC5yb3VuZChlLngrZS53aWR0aC8yKSxlLmFuY2hvcj0ibWlkZGxlIixlLmRvbWluYW50QmFzZWxpbmU9Im1pZGRsZSIsZS5hbGlnbm1lbnRCYXNlbGluZT0ibWlkZGxlIjticmVhaztjYXNlInJpZ2h0IjpjYXNlImVuZCI6ZS54PU1hdGgucm91bmQoZS54K2Uud2lkdGgtZS50ZXh0TWFyZ2luKSxlLmFuY2hvcj0iZW5kIixlLmRvbWluYW50QmFzZWxpbmU9InRleHQtYmVmb3JlLWVkZ2UiLGUuYWxpZ25tZW50QmFzZWxpbmU9Im1pZGRsZSI7YnJlYWt9Zm9yKGxldCBsPTA7bDxpLmxlbmd0aDtsKyspe2xldCB1PWlbbF07dHlwZW9mIGUudGV4dE1hcmdpbjwidSImJmUudGV4dE1hcmdpbj09PTAmJnR5cGVvZiBlLmZvbnRTaXplPCJ1IiYmKHM9bCplLmZvbnRTaXplKTtjb25zdCBoPXQuYXBwZW5kKCJ0ZXh0Iik7aWYoaC5hdHRyKCJ4IixlLngpLGguYXR0cigieSIsbygpKSx0eXBlb2YgZS5hbmNob3I8InUiJiZoLmF0dHIoInRleHQtYW5jaG9yIixlLmFuY2hvcikuYXR0cigiZG9taW5hbnQtYmFzZWxpbmUiLGUuZG9taW5hbnRCYXNlbGluZSkuYXR0cigiYWxpZ25tZW50LWJhc2VsaW5lIixlLmFsaWdubWVudEJhc2VsaW5lKSx0eXBlb2YgZS5mb250RmFtaWx5PCJ1IiYmaC5zdHlsZSgiZm9udC1mYW1pbHkiLGUuZm9udEZhbWlseSksdHlwZW9mIGUuZm9udFNpemU8InUiJiZoLnN0eWxlKCJmb250LXNpemUiLGUuZm9udFNpemUpLHR5cGVvZiBlLmZvbnRXZWlnaHQ8InUiJiZoLnN0eWxlKCJmb250LXdlaWdodCIsZS5mb250V2VpZ2h0KSx0eXBlb2YgZS5maWxsPCJ1IiYmaC5hdHRyKCJmaWxsIixlLmZpbGwpLHR5cGVvZiBlLmNsYXNzPCJ1IiYmaC5hdHRyKCJjbGFzcyIsZS5jbGFzcyksdHlwZW9mIGUuZHk8InUiP2guYXR0cigiZHkiLGUuZHkpOnMhPT0wJiZoLmF0dHIoImR5IixzKSxlLnRzcGFuKXtjb25zdCBkPWguYXBwZW5kKCJ0c3BhbiIpO2QuYXR0cigieCIsZS54KSx0eXBlb2YgZS5maWxsPCJ1IiYmZC5hdHRyKCJmaWxsIixlLmZpbGwpLGQudGV4dCh1KX1lbHNlIGgudGV4dCh1KTt0eXBlb2YgZS52YWxpZ248InUiJiZ0eXBlb2YgZS50ZXh0TWFyZ2luPCJ1IiYmZS50ZXh0TWFyZ2luPjAmJihuKz0oaC5fZ3JvdXBzfHxoKVswXVswXS5nZXRCQm94KCkuaGVpZ2h0LHI9biksYS5wdXNoKGgpfXJldHVybiBhfSxCSz1mdW5jdGlvbih0LGUpe2Z1bmN0aW9uIHIoaSxhLHMsbyxsKXtyZXR1cm4gaSsiLCIrYSsiICIrKGkrcykrIiwiK2ErIiAiKyhpK3MpKyIsIisoYStvLWwpKyIgIisoaStzLWwqMS4yKSsiLCIrKGErbykrIiAiK2krIiwiKyhhK28pfWNvbnN0IG49dC5hcHBlbmQoInBvbHlnb24iKTtyZXR1cm4gbi5hdHRyKCJwb2ludHMiLHIoZS54LGUueSxlLndpZHRoLGUuaGVpZ2h0LDcpKSxuLmF0dHIoImNsYXNzIiwibGFiZWxCb3giKSxlLnk9ZS55K2UuaGVpZ2h0LzIsWncodCxlKSxufSxESz0odCxlLHIpPT57Y29uc3Qgbj10LmFwcGVuZCgiZyIpO2xldCBpPTA7Zm9yKGxldCBhIG9mIGUpe2xldCBzPWEudGV4dENvbG9yP2EudGV4dENvbG9yOiIjNDQ0NDQ0IixvPWEubGluZUNvbG9yP2EubGluZUNvbG9yOiIjNDQ0NDQ0IixsPWEub2Zmc2V0WD9wYXJzZUludChhLm9mZnNldFgpOjAsdT1hLm9mZnNldFk/cGFyc2VJbnQoYS5vZmZzZXRZKTowLGg9IiI7aWYoaT09PTApe2xldCBmPW4uYXBwZW5kKCJsaW5lIik7Zi5hdHRyKCJ4MSIsYS5zdGFydFBvaW50LngpLGYuYXR0cigieTEiLGEuc3RhcnRQb2ludC55KSxmLmF0dHIoIngyIixhLmVuZFBvaW50LngpLGYuYXR0cigieTIiLGEuZW5kUG9pbnQueSksZi5hdHRyKCJzdHJva2Utd2lkdGgiLCIxIiksZi5hdHRyKCJzdHJva2UiLG8pLGYuc3R5bGUoImZpbGwiLCJub25lIiksYS50eXBlIT09InJlbF9iIiYmZi5hdHRyKCJtYXJrZXItZW5kIiwidXJsKCIraCsiI2Fycm93aGVhZCkiKSwoYS50eXBlPT09ImJpcmVsInx8YS50eXBlPT09InJlbF9iIikmJmYuYXR0cigibWFya2VyLXN0YXJ0IiwidXJsKCIraCsiI2Fycm93ZW5kKSIpLGk9LTF9ZWxzZXtsZXQgZj1uLmFwcGVuZCgicGF0aCIpO2YuYXR0cigiZmlsbCIsIm5vbmUiKS5hdHRyKCJzdHJva2Utd2lkdGgiLCIxIikuYXR0cigic3Ryb2tlIixvKS5hdHRyKCJkIiwiTXN0YXJ0eCxzdGFydHkgUWNvbnRyb2x4LGNvbnRyb2x5IHN0b3B4LHN0b3B5ICIucmVwbGFjZUFsbCgic3RhcnR4IixhLnN0YXJ0UG9pbnQueCkucmVwbGFjZUFsbCgic3RhcnR5IixhLnN0YXJ0UG9pbnQueSkucmVwbGFjZUFsbCgiY29udHJvbHgiLGEuc3RhcnRQb2ludC54KyhhLmVuZFBvaW50LngtYS5zdGFydFBvaW50LngpLzItKGEuZW5kUG9pbnQueC1hLnN0YXJ0UG9pbnQueCkvNCkucmVwbGFjZUFsbCgiY29udHJvbHkiLGEuc3RhcnRQb2ludC55KyhhLmVuZFBvaW50LnktYS5zdGFydFBvaW50LnkpLzIpLnJlcGxhY2VBbGwoInN0b3B4IixhLmVuZFBvaW50LngpLnJlcGxhY2VBbGwoInN0b3B5IixhLmVuZFBvaW50LnkpKSxhLnR5cGUhPT0icmVsX2IiJiZmLmF0dHIoIm1hcmtlci1lbmQiLCJ1cmwoIitoKyIjYXJyb3doZWFkKSIpLChhLnR5cGU9PT0iYmlyZWwifHxhLnR5cGU9PT0icmVsX2IiKSYmZi5hdHRyKCJtYXJrZXItc3RhcnQiLCJ1cmwoIitoKyIjYXJyb3dlbmQpIil9bGV0IGQ9ci5tZXNzYWdlRm9udCgpO3NhKHIpKGEubGFiZWwudGV4dCxuLE1hdGgubWluKGEuc3RhcnRQb2ludC54LGEuZW5kUG9pbnQueCkrTWF0aC5hYnMoYS5lbmRQb2ludC54LWEuc3RhcnRQb2ludC54KS8yK2wsTWF0aC5taW4oYS5zdGFydFBvaW50LnksYS5lbmRQb2ludC55KStNYXRoLmFicyhhLmVuZFBvaW50LnktYS5zdGFydFBvaW50LnkpLzIrdSxhLmxhYmVsLndpZHRoLGEubGFiZWwuaGVpZ2h0LHtmaWxsOnN9LGQpLGEudGVjaG4mJmEudGVjaG4udGV4dCE9PSIiJiYoZD1yLm1lc3NhZ2VGb250KCksc2EocikoIlsiK2EudGVjaG4udGV4dCsiXSIsbixNYXRoLm1pbihhLnN0YXJ0UG9pbnQueCxhLmVuZFBvaW50LngpK01hdGguYWJzKGEuZW5kUG9pbnQueC1hLnN0YXJ0UG9pbnQueCkvMitsLE1hdGgubWluKGEuc3RhcnRQb2ludC55LGEuZW5kUG9pbnQueSkrTWF0aC5hYnMoYS5lbmRQb2ludC55LWEuc3RhcnRQb2ludC55KS8yK3IubWVzc2FnZUZvbnRTaXplKzUrdSxNYXRoLm1heChhLmxhYmVsLndpZHRoLGEudGVjaG4ud2lkdGgpLGEudGVjaG4uaGVpZ2h0LHtmaWxsOnMsImZvbnQtc3R5bGUiOiJpdGFsaWMifSxkKSl9fSxPSz1mdW5jdGlvbih0LGUscil7Y29uc3Qgbj10LmFwcGVuZCgiZyIpO2xldCBpPWUuYmdDb2xvcj9lLmJnQ29sb3I6Im5vbmUiLGE9ZS5ib3JkZXJDb2xvcj9lLmJvcmRlckNvbG9yOiIjNDQ0NDQ0IixzPWUuZm9udENvbG9yP2UuZm9udENvbG9yOiJibGFjayIsbz17InN0cm9rZS13aWR0aCI6MSwic3Ryb2tlLWRhc2hhcnJheSI6IjcuMCw3LjAifTtlLm5vZGVUeXBlJiYobz17InN0cm9rZS13aWR0aCI6MX0pO2xldCBsPXt4OmUueCx5OmUueSxmaWxsOmksc3Ryb2tlOmEsd2lkdGg6ZS53aWR0aCxoZWlnaHQ6ZS5oZWlnaHQscng6Mi41LHJ5OjIuNSxhdHRyczpvfTtfZyhuLGwpO2xldCB1PXIuYm91bmRhcnlGb250KCk7dS5mb250V2VpZ2h0PSJib2xkIix1LmZvbnRTaXplPXUuZm9udFNpemUrMix1LmZvbnRDb2xvcj1zLHNhKHIpKGUubGFiZWwudGV4dCxuLGUueCxlLnkrZS5sYWJlbC5ZLGUud2lkdGgsZS5oZWlnaHQse2ZpbGw6IiM0NDQ0NDQifSx1KSxlLnR5cGUmJmUudHlwZS50ZXh0IT09IiImJih1PXIuYm91bmRhcnlGb250KCksdS5mb250Q29sb3I9cyxzYShyKShlLnR5cGUudGV4dCxuLGUueCxlLnkrZS50eXBlLlksZS53aWR0aCxlLmhlaWdodCx7ZmlsbDoiIzQ0NDQ0NCJ9LHUpKSxlLmRlc2NyJiZlLmRlc2NyLnRleHQhPT0iIiYmKHU9ci5ib3VuZGFyeUZvbnQoKSx1LmZvbnRTaXplPXUuZm9udFNpemUtMix1LmZvbnRDb2xvcj1zLHNhKHIpKGUuZGVzY3IudGV4dCxuLGUueCxlLnkrZS5kZXNjci5ZLGUud2lkdGgsZS5oZWlnaHQse2ZpbGw6IiM0NDQ0NDQifSx1KSl9LEZLPWZ1bmN0aW9uKHQsZSxyKXtsZXQgbj1lLmJnQ29sb3I/ZS5iZ0NvbG9yOnJbZS50eXBlQzRTaGFwZS50ZXh0KyJfYmdfY29sb3IiXSxpPWUuYm9yZGVyQ29sb3I/ZS5ib3JkZXJDb2xvcjpyW2UudHlwZUM0U2hhcGUudGV4dCsiX2JvcmRlcl9jb2xvciJdLGE9ZS5mb250Q29sb3I/ZS5mb250Q29sb3I6IiNGRkZGRkYiLHM9ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBREFBQUFBd0NBSUFBQURZWUc3UUFBQUNEMGxFUVZSNFh1MllvVTRFTVJDR1QrNGo4QWk4QWhhSDRRSGdBVWpRdUZNRUNVZ01JVWd3SkFnTWhnUXNBWVVpSkNpUUlCQlkrRUlUc2pmVGRtZTZWMjR2NGM4dnlHYmIrWmpPdE4wYk5jdmpRWG1rSDgzV3ZZQld0bzZQTG02djdwN3VIMS93MmZYRCtQQnljWDFQdjJsM0lkRG0vdm43eCtkWFFpQXViUnpvVVJhN2dSWldkMGlHUklpSmJPbmhuZllCUVpOSmpOYnV5WTJlSkc4ZmtERTNiYkc0ZXA2TUhVQXNnWXhtRTNuVnM2VnNCV0pTR2Njc09sRlBtTElWaU16TE9CN3BDVk8yQXRISk1vaEg3Rmg2enFpdFFLN20wckp2QVZZZ0djRXBlLy9QTGREejY1c000cEY5TjdJQ2NYREtJQjVOdjZqN3REME5vU2RNMlFyVTlHZzBld0UxTHFCaEhSM0JCZHZqMnZhcG5pZGpIeEQvcTZ2ZDdQdmhyMzFBd2NZOGVYTVRYQUtFQ1paSkZYdUVxMjdhTGdRSzV1TE1vaENlbkdHdUdld094U2pCdllCcWVHNkIrTnFpYmxnZ2RqbmMrWlhEeStGTkZwRnp3NzZPM1VCQVJPdVhoNkZvaUFjZjVnOWVUdlVnenkwbldnNkk4Y1hIUlVwZzViT1ZCQ28rS0RwRmFqT2YyM0dnUG1lN1JTUStsYWNJRU5VZ0o2Z2cxazZIamdPbHFuTHFpcDR0RXVodjBoTkVNWFVEMGNseVhFM3A2cFpBMFMybm52VGxYd0xKRVpXbGI3Y1RRSDErVVNnVE40VmhBZW5tL3dlYTFPQ0FPbXFvNmZFMVdDYjlXU0tCYWgrcmJVV1BXQW1FMlJ2azBBcGlCNDVlT3lOQXpVOHhjVHZqOEt2a0tFb09hSVllSE5BM1p1eWdBdkZNVU8wQUFBQUFTVVZPUks1Q1lJST0iO3N3aXRjaChlLnR5cGVDNFNoYXBlLnRleHQpe2Nhc2UicGVyc29uIjpzPSJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQURBQUFBQXdDQUlBQUFEWVlHN1FBQUFDRDBsRVFWUjRYdTJZb1U0RU1SQ0dUKzRqOEFpOEFoYUg0UUhnQVVqUXVGTUVDVWdNSVVnd0pBZ01oZ1FzQVlVaUpDaVFJQkJZK0VJVHNqZlRkbWU2VjI0djRjOHZ5R2JiK1pqT3ROMGJOY3ZqUVhta0g4M1d2WUJXdG82UExtNnY3cDd1SDEvdzJmWEQrUEJ5Y1gxUHYybDNJZERtL3ZuN3grZFhRaUF1YlJ6b1VSYTdnUlpXZDBpR1JJaUpiT25obmZZQlFaTkpqTmJ1eVkyZUpHOGZrREUzYmJHNGVwNk1IVUFzZ1l4bUUzblZzNlZzQldKU0djY3NPbEZQbUxJVmlNekxPQjdwQ1ZPMkF0SEpNb2hIN0ZoNnpxaXRRSzdtMHJKdkFWWWdHY0VwZS8vUExkRHo2NXNNNHBGOU43SUNjWERLSUI1TnY2ajd0RDBOb1NkTTJRclU5R2cwZXdFMUxxQmhIUjNCQmR2ajJ2YXBuaWRqSHhEL3E2dmQ3UHZocjMxQXdjWThlWE1UWEFLRUNaWkpGWHVFcTI3YUxnUUs1dUxNb2hDZW5HR3VHZXdPeFNqQnZZQnFlRzZCK05xaWJsZ2dkam5jK1pYRHkrRk5GcEZ6dzc2TzNVQkFST3VYaDZGb2lBY2Y1ZzllVHZVZ3p5MG5XZzZJOGNYSFJVcGc1Yk9WQkNvK0tEcEZhak9mMjNHZ1BtZTdSU1ErbGFjSUVOVWdKNmdnMWs2SGpnT2xxbkxxaXA0dEV1aHYwaE5FTVhVRDBjbHlYRTNwNnBaQTBTMm5udlRsWHdMSkVaV2xiN2NUUUgxK1VTZ1RONFZoQWVubS93ZWExT0NBT21xbzZmRTFXQ2I5V1NLQmFoK3JiVVdQV0FtRTJSdmswQXBpQjQ1ZU95TkF6VTh4Y1R2ajhLdmtLRW9PYUlZZUhOQTNadXlnQXZGTVVPMEFBQUFBU1VWT1JLNUNZSUk9IjticmVhaztjYXNlImV4dGVybmFsX3BlcnNvbiI6cz0iZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFEQUFBQUF3Q0FJQUFBRFlZRzdRQUFBQjZFbEVRVlI0WHUyWUxZK0VNQkNHOStkV3IwYWowV2cwR28xR28wK2o4WGR2MnVUQ3Z2MWdwdDBlYkhLUHVoRGFlVzQ2MDVaOW1Kdng0QWRYVXlUVWRkMDh6K3U2ZmxtV1pSbkhzV2thZms5RHB0QXdEUHUrZjBlQVl0dTJQRWFHV3VqNWZDSVpyQkFDMmVMQkFuUkNzRWtreG1lYUpwN2lESjJRTURkSHNMZzhTeEtGRUphQW84bEFYbm11T0ZJaFRNcHh4S0FUZWJvNFVpRmtudU5vNE9uaVNJWFF5UnhFQTNZc25qR0NWRWpWWEQ3eUxVQXF4QkdVeVB2L1k0VzJiZU1nR3VTN2tWUUlCeWNIMGZEK29pNXBlelFFVHhkSEttUUtHazFlUUVZbGRLK2p3NUd4UGZaOXo3TWswUW5oZjFXMW0zdy8vRVVuNUJEbVNac2JSNDRRUUxCRXFyQkhxT3JtU0thUUF4ZG5MQXJDcnhaY003QTdaS3M0aW9ScThMRkMrTnBDM1dDQkpzdnBWdzVlZG05aUVYRnV5TmZ4WEFnU3dmckZRMWMwaU5kYThBZGVqdlVnbmt0T3RKUVF4bWNmRnpHZ2xjNVdWQ2o3b0RnRnFVMThib2VGU3M1MkNVaDhMRThCSVZRRFQxQUJyQjBIdGdTRVlsWDVkb0puQ3d2OVRYb2NLQ2FLYm53aGRES1BxNGxmM1N3VTNITHE0Vi8rV1loSFZNYS8zYjRJbGZ5aWtBZHVDa2NCYzdtUTMvei9RcS9jVHVpa2hrekIxMkFlL21jSkM5VStWbzhFajFnV0F0Z2JlR2dGc0FNSHI1MEJJV09MQ2JlenZocEJGVWRZNkVKdUovUURXMFhvTVg2MHpaMEFBQUFBU1VWT1JLNUNZSUk9IjticmVha31jb25zdCBvPXQuYXBwZW5kKCJnIik7by5hdHRyKCJjbGFzcyIsInBlcnNvbi1tYW4iKTtjb25zdCBsPVF3KCk7c3dpdGNoKGUudHlwZUM0U2hhcGUudGV4dCl7Y2FzZSJwZXJzb24iOmNhc2UiZXh0ZXJuYWxfcGVyc29uIjpjYXNlInN5c3RlbSI6Y2FzZSJleHRlcm5hbF9zeXN0ZW0iOmNhc2UiY29udGFpbmVyIjpjYXNlImV4dGVybmFsX2NvbnRhaW5lciI6Y2FzZSJjb21wb25lbnQiOmNhc2UiZXh0ZXJuYWxfY29tcG9uZW50IjpsLng9ZS54LGwueT1lLnksbC5maWxsPW4sbC53aWR0aD1lLndpZHRoLGwuaGVpZ2h0PWUuaGVpZ2h0LGwuc3R5bGU9InN0cm9rZToiK2krIjtzdHJva2Utd2lkdGg6MC41OyIsbC5yeD0yLjUsbC5yeT0yLjUsX2cobyxsKTticmVhaztjYXNlInN5c3RlbV9kYiI6Y2FzZSJleHRlcm5hbF9zeXN0ZW1fZGIiOmNhc2UiY29udGFpbmVyX2RiIjpjYXNlImV4dGVybmFsX2NvbnRhaW5lcl9kYiI6Y2FzZSJjb21wb25lbnRfZGIiOmNhc2UiZXh0ZXJuYWxfY29tcG9uZW50X2RiIjpvLmFwcGVuZCgicGF0aCIpLmF0dHIoImZpbGwiLG4pLmF0dHIoInN0cm9rZS13aWR0aCIsIjAuNSIpLmF0dHIoInN0cm9rZSIsaSkuYXR0cigiZCIsIk1zdGFydHgsc3RhcnR5YzAsLTEwIGhhbGYsLTEwIGhhbGYsLTEwYzAsMCBoYWxmLDAgaGFsZiwxMGwwLGhlaWdodGMwLDEwIC1oYWxmLDEwIC1oYWxmLDEwYzAsMCAtaGFsZiwwIC1oYWxmLC0xMGwwLC1oZWlnaHQiLnJlcGxhY2VBbGwoInN0YXJ0eCIsZS54KS5yZXBsYWNlQWxsKCJzdGFydHkiLGUueSkucmVwbGFjZUFsbCgiaGFsZiIsZS53aWR0aC8yKS5yZXBsYWNlQWxsKCJoZWlnaHQiLGUuaGVpZ2h0KSksby5hcHBlbmQoInBhdGgiKS5hdHRyKCJmaWxsIiwibm9uZSIpLmF0dHIoInN0cm9rZS13aWR0aCIsIjAuNSIpLmF0dHIoInN0cm9rZSIsaSkuYXR0cigiZCIsIk1zdGFydHgsc3RhcnR5YzAsMTAgaGFsZiwxMCBoYWxmLDEwYzAsMCBoYWxmLDAgaGFsZiwtMTAiLnJlcGxhY2VBbGwoInN0YXJ0eCIsZS54KS5yZXBsYWNlQWxsKCJzdGFydHkiLGUueSkucmVwbGFjZUFsbCgiaGFsZiIsZS53aWR0aC8yKSk7YnJlYWs7Y2FzZSJzeXN0ZW1fcXVldWUiOmNhc2UiZXh0ZXJuYWxfc3lzdGVtX3F1ZXVlIjpjYXNlImNvbnRhaW5lcl9xdWV1ZSI6Y2FzZSJleHRlcm5hbF9jb250YWluZXJfcXVldWUiOmNhc2UiY29tcG9uZW50X3F1ZXVlIjpjYXNlImV4dGVybmFsX2NvbXBvbmVudF9xdWV1ZSI6by5hcHBlbmQoInBhdGgiKS5hdHRyKCJmaWxsIixuKS5hdHRyKCJzdHJva2Utd2lkdGgiLCIwLjUiKS5hdHRyKCJzdHJva2UiLGkpLmF0dHIoImQiLCJNc3RhcnR4LHN0YXJ0eWx3aWR0aCwwYzUsMCA1LGhhbGYgNSxoYWxmYzAsMCAwLGhhbGYgLTUsaGFsZmwtd2lkdGgsMGMtNSwwIC01LC1oYWxmIC01LC1oYWxmYzAsMCAwLC1oYWxmIDUsLWhhbGYiLnJlcGxhY2VBbGwoInN0YXJ0eCIsZS54KS5yZXBsYWNlQWxsKCJzdGFydHkiLGUueSkucmVwbGFjZUFsbCgid2lkdGgiLGUud2lkdGgpLnJlcGxhY2VBbGwoImhhbGYiLGUuaGVpZ2h0LzIpKSxvLmFwcGVuZCgicGF0aCIpLmF0dHIoImZpbGwiLCJub25lIikuYXR0cigic3Ryb2tlLXdpZHRoIiwiMC41IikuYXR0cigic3Ryb2tlIixpKS5hdHRyKCJkIiwiTXN0YXJ0eCxzdGFydHljLTUsMCAtNSxoYWxmIC01LGhhbGZjMCxoYWxmIDUsaGFsZiA1LGhhbGYiLnJlcGxhY2VBbGwoInN0YXJ0eCIsZS54K2Uud2lkdGgpLnJlcGxhY2VBbGwoInN0YXJ0eSIsZS55KS5yZXBsYWNlQWxsKCJoYWxmIixlLmhlaWdodC8yKSk7YnJlYWt9bGV0IHU9aksocixlLnR5cGVDNFNoYXBlLnRleHQpO3N3aXRjaChvLmFwcGVuZCgidGV4dCIpLmF0dHIoImZpbGwiLGEpLmF0dHIoImZvbnQtZmFtaWx5Iix1LmZvbnRGYW1pbHkpLmF0dHIoImZvbnQtc2l6ZSIsdS5mb250U2l6ZS0yKS5hdHRyKCJmb250LXN0eWxlIiwiaXRhbGljIikuYXR0cigibGVuZ3RoQWRqdXN0Iiwic3BhY2luZyIpLmF0dHIoInRleHRMZW5ndGgiLGUudHlwZUM0U2hhcGUud2lkdGgpLmF0dHIoIngiLGUueCtlLndpZHRoLzItZS50eXBlQzRTaGFwZS53aWR0aC8yKS5hdHRyKCJ5IixlLnkrZS50eXBlQzRTaGFwZS5ZKS50ZXh0KCI8PCIrZS50eXBlQzRTaGFwZS50ZXh0KyI+PiIpLGUudHlwZUM0U2hhcGUudGV4dCl7Y2FzZSJwZXJzb24iOmNhc2UiZXh0ZXJuYWxfcGVyc29uIjpLdyhvLDQ4LDQ4LGUueCtlLndpZHRoLzItMjQsZS55K2UuaW1hZ2UuWSxzKTticmVha31sZXQgaD1yW2UudHlwZUM0U2hhcGUudGV4dCsiRm9udCJdKCk7cmV0dXJuIGguZm9udFdlaWdodD0iYm9sZCIsaC5mb250U2l6ZT1oLmZvbnRTaXplKzIsaC5mb250Q29sb3I9YSxzYShyKShlLmxhYmVsLnRleHQsbyxlLngsZS55K2UubGFiZWwuWSxlLndpZHRoLGUuaGVpZ2h0LHtmaWxsOmF9LGgpLGg9cltlLnR5cGVDNFNoYXBlLnRleHQrIkZvbnQiXSgpLGguZm9udENvbG9yPWEsZS50aGNobiYmZS50aGNobi50ZXh0IT09IiI/c2EocikoZS50aGNobi50ZXh0LG8sZS54LGUueStlLnRoY2huLlksZS53aWR0aCxlLmhlaWdodCx7ZmlsbDphLCJmb250LXN0eWxlIjoiaXRhbGljIn0saCk6ZS50eXBlJiZlLnR5cGUudGV4dCE9PSIiJiZzYShyKShlLnR5cGUudGV4dCxvLGUueCxlLnkrZS50eXBlLlksZS53aWR0aCxlLmhlaWdodCx7ZmlsbDphLCJmb250LXN0eWxlIjoiaXRhbGljIn0saCksZS5kZXNjciYmZS5kZXNjci50ZXh0IT09IiImJihoPXIucGVyc29uRm9udCgpLGguZm9udENvbG9yPWEsc2EocikoZS5kZXNjci50ZXh0LG8sZS54LGUueStlLmRlc2NyLlksZS53aWR0aCxlLmhlaWdodCx7ZmlsbDphfSxoKSksZS5oZWlnaHR9LFBLPWZ1bmN0aW9uKHQpe3QuYXBwZW5kKCJkZWZzIikuYXBwZW5kKCJzeW1ib2wiKS5hdHRyKCJpZCIsImRhdGFiYXNlIikuYXR0cigiZmlsbC1ydWxlIiwiZXZlbm9kZCIpLmF0dHIoImNsaXAtcnVsZSIsImV2ZW5vZGQiKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJzY2FsZSguNSkiKS5hdHRyKCJkIiwiTTEyLjI1OC4wMDFsLjI1Ni4wMDQuMjU1LjAwNS4yNTMuMDA4LjI1MS4wMS4yNDkuMDEyLjI0Ny4wMTUuMjQ2LjAxNi4yNDIuMDE5LjI0MS4wMi4yMzkuMDIzLjIzNi4wMjQuMjMzLjAyNy4yMzEuMDI4LjIyOS4wMzEuMjI1LjAzMi4yMjMuMDM0LjIyLjAzNi4yMTcuMDM4LjIxNC4wNC4yMTEuMDQxLjIwOC4wNDMuMjA1LjA0NS4yMDEuMDQ2LjE5OC4wNDguMTk0LjA1LjE5MS4wNTEuMTg3LjA1My4xODMuMDU0LjE4LjA1Ni4xNzUuMDU3LjE3Mi4wNTkuMTY4LjA2LjE2My4wNjEuMTYuMDYzLjE1NS4wNjQuMTUuMDY2LjA3NC4wMzMuMDczLjAzMy4wNzEuMDM0LjA3LjAzNC4wNjkuMDM1LjA2OC4wMzUuMDY3LjAzNS4wNjYuMDM1LjA2NC4wMzYuMDY0LjAzNi4wNjIuMDM2LjA2LjAzNi4wNi4wMzcuMDU4LjAzNy4wNTguMDM3LjA1NS4wMzguMDU1LjAzOC4wNTMuMDM4LjA1Mi4wMzguMDUxLjAzOS4wNS4wMzkuMDQ4LjAzOS4wNDcuMDM5LjA0NS4wNC4wNDQuMDQuMDQzLjA0LjA0MS4wNC4wNC4wNDEuMDM5LjA0MS4wMzcuMDQxLjAzNi4wNDEuMDM0LjA0MS4wMzMuMDQyLjAzMi4wNDIuMDMuMDQyLjAyOS4wNDIuMDI3LjA0Mi4wMjYuMDQzLjAyNC4wNDMuMDIzLjA0My4wMjEuMDQzLjAyLjA0My4wMTguMDQ0LjAxNy4wNDMuMDE1LjA0NC4wMTMuMDQ0LjAxMi4wNDQuMDExLjA0NS4wMDkuMDQ0LjAwNy4wNDUuMDA2LjA0NS4wMDQuMDQ1LjAwMi4wNDUuMDAxLjA0NXYxN2wtLjAwMS4wNDUtLjAwMi4wNDUtLjAwNC4wNDUtLjAwNi4wNDUtLjAwNy4wNDUtLjAwOS4wNDQtLjAxMS4wNDUtLjAxMi4wNDQtLjAxMy4wNDQtLjAxNS4wNDQtLjAxNy4wNDMtLjAxOC4wNDQtLjAyLjA0My0uMDIxLjA0My0uMDIzLjA0My0uMDI0LjA0My0uMDI2LjA0My0uMDI3LjA0Mi0uMDI5LjA0Mi0uMDMuMDQyLS4wMzIuMDQyLS4wMzMuMDQyLS4wMzQuMDQxLS4wMzYuMDQxLS4wMzcuMDQxLS4wMzkuMDQxLS4wNC4wNDEtLjA0MS4wNC0uMDQzLjA0LS4wNDQuMDQtLjA0NS4wNC0uMDQ3LjAzOS0uMDQ4LjAzOS0uMDUuMDM5LS4wNTEuMDM5LS4wNTIuMDM4LS4wNTMuMDM4LS4wNTUuMDM4LS4wNTUuMDM4LS4wNTguMDM3LS4wNTguMDM3LS4wNi4wMzctLjA2LjAzNi0uMDYyLjAzNi0uMDY0LjAzNi0uMDY0LjAzNi0uMDY2LjAzNS0uMDY3LjAzNS0uMDY4LjAzNS0uMDY5LjAzNS0uMDcuMDM0LS4wNzEuMDM0LS4wNzMuMDMzLS4wNzQuMDMzLS4xNS4wNjYtLjE1NS4wNjQtLjE2LjA2My0uMTYzLjA2MS0uMTY4LjA2LS4xNzIuMDU5LS4xNzUuMDU3LS4xOC4wNTYtLjE4My4wNTQtLjE4Ny4wNTMtLjE5MS4wNTEtLjE5NC4wNS0uMTk4LjA0OC0uMjAxLjA0Ni0uMjA1LjA0NS0uMjA4LjA0My0uMjExLjA0MS0uMjE0LjA0LS4yMTcuMDM4LS4yMi4wMzYtLjIyMy4wMzQtLjIyNS4wMzItLjIyOS4wMzEtLjIzMS4wMjgtLjIzMy4wMjctLjIzNi4wMjQtLjIzOS4wMjMtLjI0MS4wMi0uMjQyLjAxOS0uMjQ2LjAxNi0uMjQ3LjAxNS0uMjQ5LjAxMi0uMjUxLjAxLS4yNTMuMDA4LS4yNTUuMDA1LS4yNTYuMDA0LS4yNTguMDAxLS4yNTgtLjAwMS0uMjU2LS4wMDQtLjI1NS0uMDA1LS4yNTMtLjAwOC0uMjUxLS4wMS0uMjQ5LS4wMTItLjI0Ny0uMDE1LS4yNDUtLjAxNi0uMjQzLS4wMTktLjI0MS0uMDItLjIzOC0uMDIzLS4yMzYtLjAyNC0uMjM0LS4wMjctLjIzMS0uMDI4LS4yMjgtLjAzMS0uMjI2LS4wMzItLjIyMy0uMDM0LS4yMi0uMDM2LS4yMTctLjAzOC0uMjE0LS4wNC0uMjExLS4wNDEtLjIwOC0uMDQzLS4yMDQtLjA0NS0uMjAxLS4wNDYtLjE5OC0uMDQ4LS4xOTUtLjA1LS4xOS0uMDUxLS4xODctLjA1My0uMTg0LS4wNTQtLjE3OS0uMDU2LS4xNzYtLjA1Ny0uMTcyLS4wNTktLjE2Ny0uMDYtLjE2NC0uMDYxLS4xNTktLjA2My0uMTU1LS4wNjQtLjE1MS0uMDY2LS4wNzQtLjAzMy0uMDcyLS4wMzMtLjA3Mi0uMDM0LS4wNy0uMDM0LS4wNjktLjAzNS0uMDY4LS4wMzUtLjA2Ny0uMDM1LS4wNjYtLjAzNS0uMDY0LS4wMzYtLjA2My0uMDM2LS4wNjItLjAzNi0uMDYxLS4wMzYtLjA2LS4wMzctLjA1OC0uMDM3LS4wNTctLjAzNy0uMDU2LS4wMzgtLjA1NS0uMDM4LS4wNTMtLjAzOC0uMDUyLS4wMzgtLjA1MS0uMDM5LS4wNDktLjAzOS0uMDQ5LS4wMzktLjA0Ni0uMDM5LS4wNDYtLjA0LS4wNDQtLjA0LS4wNDMtLjA0LS4wNDEtLjA0LS4wNC0uMDQxLS4wMzktLjA0MS0uMDM3LS4wNDEtLjAzNi0uMDQxLS4wMzQtLjA0MS0uMDMzLS4wNDItLjAzMi0uMDQyLS4wMy0uMDQyLS4wMjktLjA0Mi0uMDI3LS4wNDItLjAyNi0uMDQzLS4wMjQtLjA0My0uMDIzLS4wNDMtLjAyMS0uMDQzLS4wMi0uMDQzLS4wMTgtLjA0NC0uMDE3LS4wNDMtLjAxNS0uMDQ0LS4wMTMtLjA0NC0uMDEyLS4wNDQtLjAxMS0uMDQ1LS4wMDktLjA0NC0uMDA3LS4wNDUtLjAwNi0uMDQ1LS4wMDQtLjA0NS0uMDAyLS4wNDUtLjAwMS0uMDQ1di0xN2wuMDAxLS4wNDUuMDAyLS4wNDUuMDA0LS4wNDUuMDA2LS4wNDUuMDA3LS4wNDUuMDA5LS4wNDQuMDExLS4wNDUuMDEyLS4wNDQuMDEzLS4wNDQuMDE1LS4wNDQuMDE3LS4wNDMuMDE4LS4wNDQuMDItLjA0My4wMjEtLjA0My4wMjMtLjA0My4wMjQtLjA0My4wMjYtLjA0My4wMjctLjA0Mi4wMjktLjA0Mi4wMy0uMDQyLjAzMi0uMDQyLjAzMy0uMDQyLjAzNC0uMDQxLjAzNi0uMDQxLjAzNy0uMDQxLjAzOS0uMDQxLjA0LS4wNDEuMDQxLS4wNC4wNDMtLjA0LjA0NC0uMDQuMDQ2LS4wNC4wNDYtLjAzOS4wNDktLjAzOS4wNDktLjAzOS4wNTEtLjAzOS4wNTItLjAzOC4wNTMtLjAzOC4wNTUtLjAzOC4wNTYtLjAzOC4wNTctLjAzNy4wNTgtLjAzNy4wNi0uMDM3LjA2MS0uMDM2LjA2Mi0uMDM2LjA2My0uMDM2LjA2NC0uMDM2LjA2Ni0uMDM1LjA2Ny0uMDM1LjA2OC0uMDM1LjA2OS0uMDM1LjA3LS4wMzQuMDcyLS4wMzQuMDcyLS4wMzMuMDc0LS4wMzMuMTUxLS4wNjYuMTU1LS4wNjQuMTU5LS4wNjMuMTY0LS4wNjEuMTY3LS4wNi4xNzItLjA1OS4xNzYtLjA1Ny4xNzktLjA1Ni4xODQtLjA1NC4xODctLjA1My4xOS0uMDUxLjE5NS0uMDUuMTk4LS4wNDguMjAxLS4wNDYuMjA0LS4wNDUuMjA4LS4wNDMuMjExLS4wNDEuMjE0LS4wNC4yMTctLjAzOC4yMi0uMDM2LjIyMy0uMDM0LjIyNi0uMDMyLjIyOC0uMDMxLjIzMS0uMDI4LjIzNC0uMDI3LjIzNi0uMDI0LjIzOC0uMDIzLjI0MS0uMDIuMjQzLS4wMTkuMjQ1LS4wMTYuMjQ3LS4wMTUuMjQ5LS4wMTIuMjUxLS4wMS4yNTMtLjAwOC4yNTUtLjAwNS4yNTYtLjAwNC4yNTgtLjAwMS4yNTguMDAxem0tOS4yNTggMjAuNDk5di4wMWwuMDAxLjAyMS4wMDMuMDIxLjAwNC4wMjIuMDA1LjAyMS4wMDYuMDIyLjAwNy4wMjIuMDA5LjAyMy4wMS4wMjIuMDExLjAyMy4wMTIuMDIzLjAxMy4wMjMuMDE1LjAyMy4wMTYuMDI0LjAxNy4wMjMuMDE4LjAyNC4wMTkuMDI0LjAyMS4wMjQuMDIyLjAyNS4wMjMuMDI0LjAyNC4wMjUuMDUyLjA0OS4wNTYuMDUuMDYxLjA1MS4wNjYuMDUxLjA3LjA1MS4wNzUuMDUxLjA3OS4wNTIuMDg0LjA1Mi4wODguMDUyLjA5Mi4wNTIuMDk3LjA1Mi4xMDIuMDUxLjEwNS4wNTIuMTEuMDUyLjExNC4wNTEuMTE5LjA1MS4xMjMuMDUxLjEyNy4wNS4xMzEuMDUuMTM1LjA1LjEzOS4wNDguMTQ0LjA0OS4xNDcuMDQ3LjE1Mi4wNDcuMTU1LjA0Ny4xNi4wNDUuMTYzLjA0NS4xNjcuMDQzLjE3MS4wNDMuMTc2LjA0MS4xNzguMDQxLjE4My4wMzkuMTg3LjAzOS4xOS4wMzcuMTk0LjAzNS4xOTcuMDM1LjIwMi4wMzMuMjA0LjAzMS4yMDkuMDMuMjEyLjAyOS4yMTYuMDI3LjIxOS4wMjUuMjIyLjAyNC4yMjYuMDIxLjIzLjAyLjIzMy4wMTguMjM2LjAxNi4yNC4wMTUuMjQzLjAxMi4yNDYuMDEuMjQ5LjAwOC4yNTMuMDA1LjI1Ni4wMDQuMjU5LjAwMS4yNi0uMDAxLjI1Ny0uMDA0LjI1NC0uMDA1LjI1LS4wMDguMjQ3LS4wMTEuMjQ0LS4wMTIuMjQxLS4wMTQuMjM3LS4wMTYuMjMzLS4wMTguMjMxLS4wMjEuMjI2LS4wMjEuMjI0LS4wMjQuMjItLjAyNi4yMTYtLjAyNy4yMTItLjAyOC4yMS0uMDMxLjIwNS0uMDMxLjIwMi0uMDM0LjE5OC0uMDM0LjE5NC0uMDM2LjE5MS0uMDM3LjE4Ny0uMDM5LjE4My0uMDQuMTc5LS4wNC4xNzUtLjA0Mi4xNzItLjA0My4xNjgtLjA0NC4xNjMtLjA0NS4xNi0uMDQ2LjE1NS0uMDQ2LjE1Mi0uMDQ3LjE0OC0uMDQ4LjE0My0uMDQ5LjEzOS0uMDQ5LjEzNi0uMDUuMTMxLS4wNS4xMjYtLjA1LjEyMy0uMDUxLjExOC0uMDUyLjExNC0uMDUxLjExLS4wNTIuMTA2LS4wNTIuMTAxLS4wNTIuMDk2LS4wNTIuMDkyLS4wNTIuMDg4LS4wNTMuMDgzLS4wNTEuMDc5LS4wNTIuMDc0LS4wNTIuMDctLjA1MS4wNjUtLjA1MS4wNi0uMDUxLjA1Ni0uMDUuMDUxLS4wNS4wMjMtLjAyNC4wMjMtLjAyNS4wMjEtLjAyNC4wMi0uMDI0LjAxOS0uMDI0LjAxOC0uMDI0LjAxNy0uMDI0LjAxNS0uMDIzLjAxNC0uMDI0LjAxMy0uMDIzLjAxMi0uMDIzLjAxLS4wMjMuMDEtLjAyMi4wMDgtLjAyMi4wMDYtLjAyMi4wMDYtLjAyMi4wMDQtLjAyMi4wMDQtLjAyMS4wMDEtLjAyMS4wMDEtLjAyMXYtNC4xMjdsLS4wNzcuMDU1LS4wOC4wNTMtLjA4My4wNTQtLjA4NS4wNTMtLjA4Ny4wNTItLjA5LjA1Mi0uMDkzLjA1MS0uMDk1LjA1LS4wOTcuMDUtLjEuMDQ5LS4xMDIuMDQ5LS4xMDUuMDQ4LS4xMDYuMDQ3LS4xMDkuMDQ3LS4xMTEuMDQ2LS4xMTQuMDQ1LS4xMTUuMDQ1LS4xMTguMDQ0LS4xMi4wNDMtLjEyMi4wNDItLjEyNC4wNDItLjEyNi4wNDEtLjEyOC4wNC0uMTMuMDQtLjEzMi4wMzgtLjEzNC4wMzgtLjEzNS4wMzctLjEzOC4wMzctLjEzOS4wMzUtLjE0Mi4wMzUtLjE0My4wMzQtLjE0NC4wMzMtLjE0Ny4wMzItLjE0OC4wMzEtLjE1LjAzLS4xNTEuMDMtLjE1My4wMjktLjE1NC4wMjctLjE1Ni4wMjctLjE1OC4wMjYtLjE1OS4wMjUtLjE2MS4wMjQtLjE2Mi4wMjMtLjE2My4wMjItLjE2NS4wMjEtLjE2Ni4wMi0uMTY3LjAxOS0uMTY5LjAxOC0uMTY5LjAxNy0uMTcxLjAxNi0uMTczLjAxNS0uMTczLjAxNC0uMTc1LjAxMy0uMTc1LjAxMi0uMTc3LjAxMS0uMTc4LjAxLS4xNzkuMDA4LS4xNzkuMDA4LS4xODEuMDA2LS4xODIuMDA1LS4xODIuMDA0LS4xODQuMDAzLS4xODQuMDAyaC0uMzdsLS4xODQtLjAwMi0uMTg0LS4wMDMtLjE4Mi0uMDA0LS4xODItLjAwNS0uMTgxLS4wMDYtLjE3OS0uMDA4LS4xNzktLjAwOC0uMTc4LS4wMS0uMTc2LS4wMTEtLjE3Ni0uMDEyLS4xNzUtLjAxMy0uMTczLS4wMTQtLjE3Mi0uMDE1LS4xNzEtLjAxNi0uMTctLjAxNy0uMTY5LS4wMTgtLjE2Ny0uMDE5LS4xNjYtLjAyLS4xNjUtLjAyMS0uMTYzLS4wMjItLjE2Mi0uMDIzLS4xNjEtLjAyNC0uMTU5LS4wMjUtLjE1Ny0uMDI2LS4xNTYtLjAyNy0uMTU1LS4wMjctLjE1My0uMDI5LS4xNTEtLjAzLS4xNS0uMDMtLjE0OC0uMDMxLS4xNDYtLjAzMi0uMTQ1LS4wMzMtLjE0My0uMDM0LS4xNDEtLjAzNS0uMTQtLjAzNS0uMTM3LS4wMzctLjEzNi0uMDM3LS4xMzQtLjAzOC0uMTMyLS4wMzgtLjEzLS4wNC0uMTI4LS4wNC0uMTI2LS4wNDEtLjEyNC0uMDQyLS4xMjItLjA0Mi0uMTItLjA0NC0uMTE3LS4wNDMtLjExNi0uMDQ1LS4xMTMtLjA0NS0uMTEyLS4wNDYtLjEwOS0uMDQ3LS4xMDYtLjA0Ny0uMTA1LS4wNDgtLjEwMi0uMDQ5LS4xLS4wNDktLjA5Ny0uMDUtLjA5NS0uMDUtLjA5My0uMDUyLS4wOS0uMDUxLS4wODctLjA1Mi0uMDg1LS4wNTMtLjA4My0uMDU0LS4wOC0uMDU0LS4wNzctLjA1NHY0LjEyN3ptMC01LjY1NHYuMDExbC4wMDEuMDIxLjAwMy4wMjEuMDA0LjAyMS4wMDUuMDIyLjAwNi4wMjIuMDA3LjAyMi4wMDkuMDIyLjAxLjAyMi4wMTEuMDIzLjAxMi4wMjMuMDEzLjAyMy4wMTUuMDI0LjAxNi4wMjMuMDE3LjAyNC4wMTguMDI0LjAxOS4wMjQuMDIxLjAyNC4wMjIuMDI0LjAyMy4wMjUuMDI0LjAyNC4wNTIuMDUuMDU2LjA1LjA2MS4wNS4wNjYuMDUxLjA3LjA1MS4wNzUuMDUyLjA3OS4wNTEuMDg0LjA1Mi4wODguMDUyLjA5Mi4wNTIuMDk3LjA1Mi4xMDIuMDUyLjEwNS4wNTIuMTEuMDUxLjExNC4wNTEuMTE5LjA1Mi4xMjMuMDUuMTI3LjA1MS4xMzEuMDUuMTM1LjA0OS4xMzkuMDQ5LjE0NC4wNDguMTQ3LjA0OC4xNTIuMDQ3LjE1NS4wNDYuMTYuMDQ1LjE2My4wNDUuMTY3LjA0NC4xNzEuMDQyLjE3Ni4wNDIuMTc4LjA0LjE4My4wNC4xODcuMDM4LjE5LjAzNy4xOTQuMDM2LjE5Ny4wMzQuMjAyLjAzMy4yMDQuMDMyLjIwOS4wMy4yMTIuMDI4LjIxNi4wMjcuMjE5LjAyNS4yMjIuMDI0LjIyNi4wMjIuMjMuMDIuMjMzLjAxOC4yMzYuMDE2LjI0LjAxNC4yNDMuMDEyLjI0Ni4wMS4yNDkuMDA4LjI1My4wMDYuMjU2LjAwMy4yNTkuMDAxLjI2LS4wMDEuMjU3LS4wMDMuMjU0LS4wMDYuMjUtLjAwOC4yNDctLjAxLjI0NC0uMDEyLjI0MS0uMDE1LjIzNy0uMDE2LjIzMy0uMDE4LjIzMS0uMDIuMjI2LS4wMjIuMjI0LS4wMjQuMjItLjAyNS4yMTYtLjAyNy4yMTItLjAyOS4yMS0uMDMuMjA1LS4wMzIuMjAyLS4wMzMuMTk4LS4wMzUuMTk0LS4wMzYuMTkxLS4wMzcuMTg3LS4wMzkuMTgzLS4wMzkuMTc5LS4wNDEuMTc1LS4wNDIuMTcyLS4wNDMuMTY4LS4wNDQuMTYzLS4wNDUuMTYtLjA0NS4xNTUtLjA0Ny4xNTItLjA0Ny4xNDgtLjA0OC4xNDMtLjA0OC4xMzktLjA1LjEzNi0uMDQ5LjEzMS0uMDUuMTI2LS4wNTEuMTIzLS4wNTEuMTE4LS4wNTEuMTE0LS4wNTIuMTEtLjA1Mi4xMDYtLjA1Mi4xMDEtLjA1Mi4wOTYtLjA1Mi4wOTItLjA1Mi4wODgtLjA1Mi4wODMtLjA1Mi4wNzktLjA1Mi4wNzQtLjA1MS4wNy0uMDUyLjA2NS0uMDUxLjA2LS4wNS4wNTYtLjA1MS4wNTEtLjA0OS4wMjMtLjAyNS4wMjMtLjAyNC4wMjEtLjAyNS4wMi0uMDI0LjAxOS0uMDI0LjAxOC0uMDI0LjAxNy0uMDI0LjAxNS0uMDIzLjAxNC0uMDIzLjAxMy0uMDI0LjAxMi0uMDIyLjAxLS4wMjMuMDEtLjAyMy4wMDgtLjAyMi4wMDYtLjAyMi4wMDYtLjAyMi4wMDQtLjAyMS4wMDQtLjAyMi4wMDEtLjAyMS4wMDEtLjAyMXYtNC4xMzlsLS4wNzcuMDU0LS4wOC4wNTQtLjA4My4wNTQtLjA4NS4wNTItLjA4Ny4wNTMtLjA5LjA1MS0uMDkzLjA1MS0uMDk1LjA1MS0uMDk3LjA1LS4xLjA0OS0uMTAyLjA0OS0uMTA1LjA0OC0uMTA2LjA0Ny0uMTA5LjA0Ny0uMTExLjA0Ni0uMTE0LjA0NS0uMTE1LjA0NC0uMTE4LjA0NC0uMTIuMDQ0LS4xMjIuMDQyLS4xMjQuMDQyLS4xMjYuMDQxLS4xMjguMDQtLjEzLjAzOS0uMTMyLjAzOS0uMTM0LjAzOC0uMTM1LjAzNy0uMTM4LjAzNi0uMTM5LjAzNi0uMTQyLjAzNS0uMTQzLjAzMy0uMTQ0LjAzMy0uMTQ3LjAzMy0uMTQ4LjAzMS0uMTUuMDMtLjE1MS4wMy0uMTUzLjAyOC0uMTU0LjAyOC0uMTU2LjAyNy0uMTU4LjAyNi0uMTU5LjAyNS0uMTYxLjAyNC0uMTYyLjAyMy0uMTYzLjAyMi0uMTY1LjAyMS0uMTY2LjAyLS4xNjcuMDE5LS4xNjkuMDE4LS4xNjkuMDE3LS4xNzEuMDE2LS4xNzMuMDE1LS4xNzMuMDE0LS4xNzUuMDEzLS4xNzUuMDEyLS4xNzcuMDExLS4xNzguMDA5LS4xNzkuMDA5LS4xNzkuMDA3LS4xODEuMDA3LS4xODIuMDA1LS4xODIuMDA0LS4xODQuMDAzLS4xODQuMDAyaC0uMzdsLS4xODQtLjAwMi0uMTg0LS4wMDMtLjE4Mi0uMDA0LS4xODItLjAwNS0uMTgxLS4wMDctLjE3OS0uMDA3LS4xNzktLjAwOS0uMTc4LS4wMDktLjE3Ni0uMDExLS4xNzYtLjAxMi0uMTc1LS4wMTMtLjE3My0uMDE0LS4xNzItLjAxNS0uMTcxLS4wMTYtLjE3LS4wMTctLjE2OS0uMDE4LS4xNjctLjAxOS0uMTY2LS4wMi0uMTY1LS4wMjEtLjE2My0uMDIyLS4xNjItLjAyMy0uMTYxLS4wMjQtLjE1OS0uMDI1LS4xNTctLjAyNi0uMTU2LS4wMjctLjE1NS0uMDI4LS4xNTMtLjAyOC0uMTUxLS4wMy0uMTUtLjAzLS4xNDgtLjAzMS0uMTQ2LS4wMzMtLjE0NS0uMDMzLS4xNDMtLjAzMy0uMTQxLS4wMzUtLjE0LS4wMzYtLjEzNy0uMDM2LS4xMzYtLjAzNy0uMTM0LS4wMzgtLjEzMi0uMDM5LS4xMy0uMDM5LS4xMjgtLjA0LS4xMjYtLjA0MS0uMTI0LS4wNDItLjEyMi0uMDQzLS4xMi0uMDQzLS4xMTctLjA0NC0uMTE2LS4wNDQtLjExMy0uMDQ2LS4xMTItLjA0Ni0uMTA5LS4wNDYtLjEwNi0uMDQ3LS4xMDUtLjA0OC0uMTAyLS4wNDktLjEtLjA0OS0uMDk3LS4wNS0uMDk1LS4wNTEtLjA5My0uMDUxLS4wOS0uMDUxLS4wODctLjA1My0uMDg1LS4wNTItLjA4My0uMDU0LS4wOC0uMDU0LS4wNzctLjA1NHY0LjEzOXptMC01LjY2NnYuMDExbC4wMDEuMDIuMDAzLjAyMi4wMDQuMDIxLjAwNS4wMjIuMDA2LjAyMS4wMDcuMDIyLjAwOS4wMjMuMDEuMDIyLjAxMS4wMjMuMDEyLjAyMy4wMTMuMDIzLjAxNS4wMjMuMDE2LjAyNC4wMTcuMDI0LjAxOC4wMjMuMDE5LjAyNC4wMjEuMDI1LjAyMi4wMjQuMDIzLjAyNC4wMjQuMDI1LjA1Mi4wNS4wNTYuMDUuMDYxLjA1LjA2Ni4wNTEuMDcuMDUxLjA3NS4wNTIuMDc5LjA1MS4wODQuMDUyLjA4OC4wNTIuMDkyLjA1Mi4wOTcuMDUyLjEwMi4wNTIuMTA1LjA1MS4xMS4wNTIuMTE0LjA1MS4xMTkuMDUxLjEyMy4wNTEuMTI3LjA1LjEzMS4wNS4xMzUuMDUuMTM5LjA0OS4xNDQuMDQ4LjE0Ny4wNDguMTUyLjA0Ny4xNTUuMDQ2LjE2LjA0NS4xNjMuMDQ1LjE2Ny4wNDMuMTcxLjA0My4xNzYuMDQyLjE3OC4wNC4xODMuMDQuMTg3LjAzOC4xOS4wMzcuMTk0LjAzNi4xOTcuMDM0LjIwMi4wMzMuMjA0LjAzMi4yMDkuMDMuMjEyLjAyOC4yMTYuMDI3LjIxOS4wMjUuMjIyLjAyNC4yMjYuMDIxLjIzLjAyLjIzMy4wMTguMjM2LjAxNy4yNC4wMTQuMjQzLjAxMi4yNDYuMDEuMjQ5LjAwOC4yNTMuMDA2LjI1Ni4wMDMuMjU5LjAwMS4yNi0uMDAxLjI1Ny0uMDAzLjI1NC0uMDA2LjI1LS4wMDguMjQ3LS4wMS4yNDQtLjAxMy4yNDEtLjAxNC4yMzctLjAxNi4yMzMtLjAxOC4yMzEtLjAyLjIyNi0uMDIyLjIyNC0uMDI0LjIyLS4wMjUuMjE2LS4wMjcuMjEyLS4wMjkuMjEtLjAzLjIwNS0uMDMyLjIwMi0uMDMzLjE5OC0uMDM1LjE5NC0uMDM2LjE5MS0uMDM3LjE4Ny0uMDM5LjE4My0uMDM5LjE3OS0uMDQxLjE3NS0uMDQyLjE3Mi0uMDQzLjE2OC0uMDQ0LjE2My0uMDQ1LjE2LS4wNDUuMTU1LS4wNDcuMTUyLS4wNDcuMTQ4LS4wNDguMTQzLS4wNDkuMTM5LS4wNDkuMTM2LS4wNDkuMTMxLS4wNTEuMTI2LS4wNS4xMjMtLjA1MS4xMTgtLjA1Mi4xMTQtLjA1MS4xMS0uMDUyLjEwNi0uMDUyLjEwMS0uMDUyLjA5Ni0uMDUyLjA5Mi0uMDUyLjA4OC0uMDUyLjA4My0uMDUyLjA3OS0uMDUyLjA3NC0uMDUyLjA3LS4wNTEuMDY1LS4wNTEuMDYtLjA1MS4wNTYtLjA1LjA1MS0uMDQ5LjAyMy0uMDI1LjAyMy0uMDI1LjAyMS0uMDI0LjAyLS4wMjQuMDE5LS4wMjQuMDE4LS4wMjQuMDE3LS4wMjQuMDE1LS4wMjMuMDE0LS4wMjQuMDEzLS4wMjMuMDEyLS4wMjMuMDEtLjAyMi4wMS0uMDIzLjAwOC0uMDIyLjAwNi0uMDIyLjAwNi0uMDIyLjAwNC0uMDIyLjAwNC0uMDIxLjAwMS0uMDIxLjAwMS0uMDIxdi00LjE1M2wtLjA3Ny4wNTQtLjA4LjA1NC0uMDgzLjA1My0uMDg1LjA1My0uMDg3LjA1My0uMDkuMDUxLS4wOTMuMDUxLS4wOTUuMDUxLS4wOTcuMDUtLjEuMDQ5LS4xMDIuMDQ4LS4xMDUuMDQ4LS4xMDYuMDQ4LS4xMDkuMDQ2LS4xMTEuMDQ2LS4xMTQuMDQ2LS4xMTUuMDQ0LS4xMTguMDQ0LS4xMi4wNDMtLjEyMi4wNDMtLjEyNC4wNDItLjEyNi4wNDEtLjEyOC4wNC0uMTMuMDM5LS4xMzIuMDM5LS4xMzQuMDM4LS4xMzUuMDM3LS4xMzguMDM2LS4xMzkuMDM2LS4xNDIuMDM0LS4xNDMuMDM0LS4xNDQuMDMzLS4xNDcuMDMyLS4xNDguMDMyLS4xNS4wMy0uMTUxLjAzLS4xNTMuMDI4LS4xNTQuMDI4LS4xNTYuMDI3LS4xNTguMDI2LS4xNTkuMDI0LS4xNjEuMDI0LS4xNjIuMDIzLS4xNjMuMDIzLS4xNjUuMDIxLS4xNjYuMDItLjE2Ny4wMTktLjE2OS4wMTgtLjE2OS4wMTctLjE3MS4wMTYtLjE3My4wMTUtLjE3My4wMTQtLjE3NS4wMTMtLjE3NS4wMTItLjE3Ny4wMS0uMTc4LjAxLS4xNzkuMDA5LS4xNzkuMDA3LS4xODEuMDA2LS4xODIuMDA2LS4xODIuMDA0LS4xODQuMDAzLS4xODQuMDAxLS4xODUuMDAxLS4xODUtLjAwMS0uMTg0LS4wMDEtLjE4NC0uMDAzLS4xODItLjAwNC0uMTgyLS4wMDYtLjE4MS0uMDA2LS4xNzktLjAwNy0uMTc5LS4wMDktLjE3OC0uMDEtLjE3Ni0uMDEtLjE3Ni0uMDEyLS4xNzUtLjAxMy0uMTczLS4wMTQtLjE3Mi0uMDE1LS4xNzEtLjAxNi0uMTctLjAxNy0uMTY5LS4wMTgtLjE2Ny0uMDE5LS4xNjYtLjAyLS4xNjUtLjAyMS0uMTYzLS4wMjMtLjE2Mi0uMDIzLS4xNjEtLjAyNC0uMTU5LS4wMjQtLjE1Ny0uMDI2LS4xNTYtLjAyNy0uMTU1LS4wMjgtLjE1My0uMDI4LS4xNTEtLjAzLS4xNS0uMDMtLjE0OC0uMDMyLS4xNDYtLjAzMi0uMTQ1LS4wMzMtLjE0My0uMDM0LS4xNDEtLjAzNC0uMTQtLjAzNi0uMTM3LS4wMzYtLjEzNi0uMDM3LS4xMzQtLjAzOC0uMTMyLS4wMzktLjEzLS4wMzktLjEyOC0uMDQxLS4xMjYtLjA0MS0uMTI0LS4wNDEtLjEyMi0uMDQzLS4xMi0uMDQzLS4xMTctLjA0NC0uMTE2LS4wNDQtLjExMy0uMDQ2LS4xMTItLjA0Ni0uMTA5LS4wNDYtLjEwNi0uMDQ4LS4xMDUtLjA0OC0uMTAyLS4wNDgtLjEtLjA1LS4wOTctLjA0OS0uMDk1LS4wNTEtLjA5My0uMDUxLS4wOS0uMDUyLS4wODctLjA1Mi0uMDg1LS4wNTMtLjA4My0uMDUzLS4wOC0uMDU0LS4wNzctLjA1NHY0LjE1M3ptOC43NC04LjE3OWwtLjI1Ny4wMDQtLjI1NC4wMDUtLjI1LjAwOC0uMjQ3LjAxMS0uMjQ0LjAxMi0uMjQxLjAxNC0uMjM3LjAxNi0uMjMzLjAxOC0uMjMxLjAyMS0uMjI2LjAyMi0uMjI0LjAyMy0uMjIuMDI2LS4yMTYuMDI3LS4yMTIuMDI4LS4yMS4wMzEtLjIwNS4wMzItLjIwMi4wMzMtLjE5OC4wMzQtLjE5NC4wMzYtLjE5MS4wMzgtLjE4Ny4wMzgtLjE4My4wNC0uMTc5LjA0MS0uMTc1LjA0Mi0uMTcyLjA0My0uMTY4LjA0My0uMTYzLjA0NS0uMTYuMDQ2LS4xNTUuMDQ2LS4xNTIuMDQ4LS4xNDguMDQ4LS4xNDMuMDQ4LS4xMzkuMDQ5LS4xMzYuMDUtLjEzMS4wNS0uMTI2LjA1MS0uMTIzLjA1MS0uMTE4LjA1MS0uMTE0LjA1Mi0uMTEuMDUyLS4xMDYuMDUyLS4xMDEuMDUyLS4wOTYuMDUyLS4wOTIuMDUyLS4wODguMDUyLS4wODMuMDUyLS4wNzkuMDUyLS4wNzQuMDUxLS4wNy4wNTItLjA2NS4wNTEtLjA2LjA1LS4wNTYuMDUtLjA1MS4wNS0uMDIzLjAyNS0uMDIzLjAyNC0uMDIxLjAyNC0uMDIuMDI1LS4wMTkuMDI0LS4wMTguMDI0LS4wMTcuMDIzLS4wMTUuMDI0LS4wMTQuMDIzLS4wMTMuMDIzLS4wMTIuMDIzLS4wMS4wMjMtLjAxLjAyMi0uMDA4LjAyMi0uMDA2LjAyMy0uMDA2LjAyMS0uMDA0LjAyMi0uMDA0LjAyMS0uMDAxLjAyMS0uMDAxLjAyMS4wMDEuMDIxLjAwMS4wMjEuMDA0LjAyMS4wMDQuMDIyLjAwNi4wMjEuMDA2LjAyMy4wMDguMDIyLjAxLjAyMi4wMS4wMjMuMDEyLjAyMy4wMTMuMDIzLjAxNC4wMjMuMDE1LjAyNC4wMTcuMDIzLjAxOC4wMjQuMDE5LjAyNC4wMi4wMjUuMDIxLjAyNC4wMjMuMDI0LjAyMy4wMjUuMDUxLjA1LjA1Ni4wNS4wNi4wNS4wNjUuMDUxLjA3LjA1Mi4wNzQuMDUxLjA3OS4wNTIuMDgzLjA1Mi4wODguMDUyLjA5Mi4wNTIuMDk2LjA1Mi4xMDEuMDUyLjEwNi4wNTIuMTEuMDUyLjExNC4wNTIuMTE4LjA1MS4xMjMuMDUxLjEyNi4wNTEuMTMxLjA1LjEzNi4wNS4xMzkuMDQ5LjE0My4wNDguMTQ4LjA0OC4xNTIuMDQ4LjE1NS4wNDYuMTYuMDQ2LjE2My4wNDUuMTY4LjA0My4xNzIuMDQzLjE3NS4wNDIuMTc5LjA0MS4xODMuMDQuMTg3LjAzOC4xOTEuMDM4LjE5NC4wMzYuMTk4LjAzNC4yMDIuMDMzLjIwNS4wMzIuMjEuMDMxLjIxMi4wMjguMjE2LjAyNy4yMi4wMjYuMjI0LjAyMy4yMjYuMDIyLjIzMS4wMjEuMjMzLjAxOC4yMzcuMDE2LjI0MS4wMTQuMjQ0LjAxMi4yNDcuMDExLjI1LjAwOC4yNTQuMDA1LjI1Ny4wMDQuMjYuMDAxLjI2LS4wMDEuMjU3LS4wMDQuMjU0LS4wMDUuMjUtLjAwOC4yNDctLjAxMS4yNDQtLjAxMi4yNDEtLjAxNC4yMzctLjAxNi4yMzMtLjAxOC4yMzEtLjAyMS4yMjYtLjAyMi4yMjQtLjAyMy4yMi0uMDI2LjIxNi0uMDI3LjIxMi0uMDI4LjIxLS4wMzEuMjA1LS4wMzIuMjAyLS4wMzMuMTk4LS4wMzQuMTk0LS4wMzYuMTkxLS4wMzguMTg3LS4wMzguMTgzLS4wNC4xNzktLjA0MS4xNzUtLjA0Mi4xNzItLjA0My4xNjgtLjA0My4xNjMtLjA0NS4xNi0uMDQ2LjE1NS0uMDQ2LjE1Mi0uMDQ4LjE0OC0uMDQ4LjE0My0uMDQ4LjEzOS0uMDQ5LjEzNi0uMDUuMTMxLS4wNS4xMjYtLjA1MS4xMjMtLjA1MS4xMTgtLjA1MS4xMTQtLjA1Mi4xMS0uMDUyLjEwNi0uMDUyLjEwMS0uMDUyLjA5Ni0uMDUyLjA5Mi0uMDUyLjA4OC0uMDUyLjA4My0uMDUyLjA3OS0uMDUyLjA3NC0uMDUxLjA3LS4wNTIuMDY1LS4wNTEuMDYtLjA1LjA1Ni0uMDUuMDUxLS4wNS4wMjMtLjAyNS4wMjMtLjAyNC4wMjEtLjAyNC4wMi0uMDI1LjAxOS0uMDI0LjAxOC0uMDI0LjAxNy0uMDIzLjAxNS0uMDI0LjAxNC0uMDIzLjAxMy0uMDIzLjAxMi0uMDIzLjAxLS4wMjMuMDEtLjAyMi4wMDgtLjAyMi4wMDYtLjAyMy4wMDYtLjAyMS4wMDQtLjAyMi4wMDQtLjAyMS4wMDEtLjAyMS4wMDEtLjAyMS0uMDAxLS4wMjEtLjAwMS0uMDIxLS4wMDQtLjAyMS0uMDA0LS4wMjItLjAwNi0uMDIxLS4wMDYtLjAyMy0uMDA4LS4wMjItLjAxLS4wMjItLjAxLS4wMjMtLjAxMi0uMDIzLS4wMTMtLjAyMy0uMDE0LS4wMjMtLjAxNS0uMDI0LS4wMTctLjAyMy0uMDE4LS4wMjQtLjAxOS0uMDI0LS4wMi0uMDI1LS4wMjEtLjAyNC0uMDIzLS4wMjQtLjAyMy0uMDI1LS4wNTEtLjA1LS4wNTYtLjA1LS4wNi0uMDUtLjA2NS0uMDUxLS4wNy0uMDUyLS4wNzQtLjA1MS0uMDc5LS4wNTItLjA4My0uMDUyLS4wODgtLjA1Mi0uMDkyLS4wNTItLjA5Ni0uMDUyLS4xMDEtLjA1Mi0uMTA2LS4wNTItLjExLS4wNTItLjExNC0uMDUyLS4xMTgtLjA1MS0uMTIzLS4wNTEtLjEyNi0uMDUxLS4xMzEtLjA1LS4xMzYtLjA1LS4xMzktLjA0OS0uMTQzLS4wNDgtLjE0OC0uMDQ4LS4xNTItLjA0OC0uMTU1LS4wNDYtLjE2LS4wNDYtLjE2My0uMDQ1LS4xNjgtLjA0My0uMTcyLS4wNDMtLjE3NS0uMDQyLS4xNzktLjA0MS0uMTgzLS4wNC0uMTg3LS4wMzgtLjE5MS0uMDM4LS4xOTQtLjAzNi0uMTk4LS4wMzQtLjIwMi0uMDMzLS4yMDUtLjAzMi0uMjEtLjAzMS0uMjEyLS4wMjgtLjIxNi0uMDI3LS4yMi0uMDI2LS4yMjQtLjAyMy0uMjI2LS4wMjItLjIzMS0uMDIxLS4yMzMtLjAxOC0uMjM3LS4wMTYtLjI0MS0uMDE0LS4yNDQtLjAxMi0uMjQ3LS4wMTEtLjI1LS4wMDgtLjI1NC0uMDA1LS4yNTctLjAwNC0uMjYtLjAwMS0uMjYuMDAxeiIpfSxxSz1mdW5jdGlvbih0KXt0LmFwcGVuZCgiZGVmcyIpLmFwcGVuZCgic3ltYm9sIikuYXR0cigiaWQiLCJjb21wdXRlciIpLmF0dHIoIndpZHRoIiwiMjQiKS5hdHRyKCJoZWlnaHQiLCIyNCIpLmFwcGVuZCgicGF0aCIpLmF0dHIoInRyYW5zZm9ybSIsInNjYWxlKC41KSIpLmF0dHIoImQiLCJNMiAydjEzaDIwdi0xM2gtMjB6bTE4IDExaC0xNnYtOWgxNnY5em0tMTAuMjI4IDZsLjQ2Ni0xaDMuNTI0bC40NjcgMWgtNC40NTd6bTE0LjIyOCAzaC0yNGwyLTZoMi4xMDRsLTEuMzMgNGgxOC40NWwtMS4yOTctNGgyLjA3M2wyIDZ6bS01LTEwaC0xNHYtN2gxNHY3eiIpfSxWSz1mdW5jdGlvbih0KXt0LmFwcGVuZCgiZGVmcyIpLmFwcGVuZCgic3ltYm9sIikuYXR0cigiaWQiLCJjbG9jayIpLmF0dHIoIndpZHRoIiwiMjQiKS5hdHRyKCJoZWlnaHQiLCIyNCIpLmFwcGVuZCgicGF0aCIpLmF0dHIoInRyYW5zZm9ybSIsInNjYWxlKC41KSIpLmF0dHIoImQiLCJNMTIgMmM1LjUxNCAwIDEwIDQuNDg2IDEwIDEwcy00LjQ4NiAxMC0xMCAxMC0xMC00LjQ4Ni0xMC0xMCA0LjQ4Ni0xMCAxMC0xMHptMC0yYy02LjYyNyAwLTEyIDUuMzczLTEyIDEyczUuMzczIDEyIDEyIDEyIDEyLTUuMzczIDEyLTEyLTUuMzczLTEyLTEyLTEyem01Ljg0OCAxMi40NTljLjIwMi4wMzguMjAyLjMzMy4wMDEuMzcyLTEuOTA3LjM2MS02LjA0NSAxLjExMS02LjU0NyAxLjExMS0uNzE5IDAtMS4zMDEtLjU4Mi0xLjMwMS0xLjMwMSAwLS41MTIuNzctNS40NDcgMS4xMjUtNy40NDUuMDM0LS4xOTIuMzEyLS4xODEuMzQzLjAxNGwuOTg1IDYuMjM4IDUuMzk0IDEuMDExeiIpfSx6Sz1mdW5jdGlvbih0KXt0LmFwcGVuZCgiZGVmcyIpLmFwcGVuZCgibWFya2VyIikuYXR0cigiaWQiLCJhcnJvd2hlYWQiKS5hdHRyKCJyZWZYIiw5KS5hdHRyKCJyZWZZIiw1KS5hdHRyKCJtYXJrZXJVbml0cyIsInVzZXJTcGFjZU9uVXNlIikuYXR0cigibWFya2VyV2lkdGgiLDEyKS5hdHRyKCJtYXJrZXJIZWlnaHQiLDEyKS5hdHRyKCJvcmllbnQiLCJhdXRvIikuYXBwZW5kKCJwYXRoIikuYXR0cigiZCIsIk0gMCAwIEwgMTAgNSBMIDAgMTAgeiIpfSxZSz1mdW5jdGlvbih0KXt0LmFwcGVuZCgiZGVmcyIpLmFwcGVuZCgibWFya2VyIikuYXR0cigiaWQiLCJhcnJvd2VuZCIpLmF0dHIoInJlZlgiLDEpLmF0dHIoInJlZlkiLDUpLmF0dHIoIm1hcmtlclVuaXRzIiwidXNlclNwYWNlT25Vc2UiKS5hdHRyKCJtYXJrZXJXaWR0aCIsMTIpLmF0dHIoIm1hcmtlckhlaWdodCIsMTIpLmF0dHIoIm9yaWVudCIsImF1dG8iKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIiwiTSAxMCAwIEwgMCA1IEwgMTAgMTAgeiIpfSxVSz1mdW5jdGlvbih0KXt0LmFwcGVuZCgiZGVmcyIpLmFwcGVuZCgibWFya2VyIikuYXR0cigiaWQiLCJmaWxsZWQtaGVhZCIpLmF0dHIoInJlZlgiLDE4KS5hdHRyKCJyZWZZIiw3KS5hdHRyKCJtYXJrZXJXaWR0aCIsMjApLmF0dHIoIm1hcmtlckhlaWdodCIsMjgpLmF0dHIoIm9yaWVudCIsImF1dG8iKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIiwiTSAxOCw3IEw5LDEzIEwxNCw3IEw5LDEgWiIpfSxXSz1mdW5jdGlvbih0KXt0LmFwcGVuZCgiZGVmcyIpLmFwcGVuZCgibWFya2VyIikuYXR0cigiaWQiLCJzZXF1ZW5jZW51bWJlciIpLmF0dHIoInJlZlgiLDE1KS5hdHRyKCJyZWZZIiwxNSkuYXR0cigibWFya2VyV2lkdGgiLDYwKS5hdHRyKCJtYXJrZXJIZWlnaHQiLDQwKS5hdHRyKCJvcmllbnQiLCJhdXRvIikuYXBwZW5kKCJjaXJjbGUiKS5hdHRyKCJjeCIsMTUpLmF0dHIoImN5IiwxNSkuYXR0cigiciIsNil9LEhLPWZ1bmN0aW9uKHQpe2NvbnN0IHI9dC5hcHBlbmQoImRlZnMiKS5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIiwiY3Jvc3NoZWFkIikuYXR0cigibWFya2VyV2lkdGgiLDE1KS5hdHRyKCJtYXJrZXJIZWlnaHQiLDgpLmF0dHIoIm9yaWVudCIsImF1dG8iKS5hdHRyKCJyZWZYIiwxNikuYXR0cigicmVmWSIsNCk7ci5hcHBlbmQoInBhdGgiKS5hdHRyKCJmaWxsIiwiYmxhY2siKS5hdHRyKCJzdHJva2UiLCIjMDAwMDAwIikuc3R5bGUoInN0cm9rZS1kYXNoYXJyYXkiLCIwLCAwIikuYXR0cigic3Ryb2tlLXdpZHRoIiwiMXB4IikuYXR0cigiZCIsIk0gOSwyIFYgNiBMMTYsNCBaIiksci5hcHBlbmQoInBhdGgiKS5hdHRyKCJmaWxsIiwibm9uZSIpLmF0dHIoInN0cm9rZSIsIiMwMDAwMDAiKS5zdHlsZSgic3Ryb2tlLWRhc2hhcnJheSIsIjAsIDAiKS5hdHRyKCJzdHJva2Utd2lkdGgiLCIxcHgiKS5hdHRyKCJkIiwiTSAwLDEgTCA2LDcgTSA2LDEgTCAwLDciKX0sR0s9ZnVuY3Rpb24oKXtyZXR1cm57eDowLHk6MCxmaWxsOnZvaWQgMCxhbmNob3I6dm9pZCAwLHN0eWxlOiIjNjY2Iix3aWR0aDp2b2lkIDAsaGVpZ2h0OnZvaWQgMCx0ZXh0TWFyZ2luOjAscng6MCxyeTowLHRzcGFuOiEwLHZhbGlnbjp2b2lkIDB9fSxRdz1mdW5jdGlvbigpe3JldHVybnt4OjAseTowLGZpbGw6IiNFREYyQUUiLHN0cm9rZToiIzY2NiIsd2lkdGg6MTAwLGFuY2hvcjoic3RhcnQiLGhlaWdodDoxMDAscng6MCxyeTowfX0saks9KHQsZSk9Pih7Zm9udEZhbWlseTp0W2UrIkZvbnRGYW1pbHkiXSxmb250U2l6ZTp0W2UrIkZvbnRTaXplIl0sZm9udFdlaWdodDp0W2UrIkZvbnRXZWlnaHQiXX0pLHNhPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdChpLGEscyxvLGwsdSxoKXtjb25zdCBkPWEuYXBwZW5kKCJ0ZXh0IikuYXR0cigieCIscytsLzIpLmF0dHIoInkiLG8rdS8yKzUpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLnRleHQoaSk7bihkLGgpfWZ1bmN0aW9uIGUoaSxhLHMsbyxsLHUsaCxkKXtjb25zdHtmb250U2l6ZTpmLGZvbnRGYW1pbHk6cCxmb250V2VpZ2h0Om19PWQsXz1pLnNwbGl0KHBlLmxpbmVCcmVha1JlZ2V4KTtmb3IobGV0IHk9MDt5PF8ubGVuZ3RoO3krKyl7Y29uc3QgYj15KmYtZiooXy5sZW5ndGgtMSkvMix4PWEuYXBwZW5kKCJ0ZXh0IikuYXR0cigieCIscytsLzIpLmF0dHIoInkiLG8pLnN0eWxlKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLmF0dHIoImRvbWluYW50LWJhc2VsaW5lIiwibWlkZGxlIikuc3R5bGUoImZvbnQtc2l6ZSIsZikuc3R5bGUoImZvbnQtd2VpZ2h0IixtKS5zdHlsZSgiZm9udC1mYW1pbHkiLHApO3guYXBwZW5kKCJ0c3BhbiIpLmF0dHIoImR5IixiKS50ZXh0KF9beV0pLmF0dHIoImFsaWdubWVudC1iYXNlbGluZSIsIm1hdGhlbWF0aWNhbCIpLG4oeCxoKX19ZnVuY3Rpb24gcihpLGEscyxvLGwsdSxoLGQpe2NvbnN0IGY9YS5hcHBlbmQoInN3aXRjaCIpLG09Zi5hcHBlbmQoImZvcmVpZ25PYmplY3QiKS5hdHRyKCJ4IixzKS5hdHRyKCJ5IixvKS5hdHRyKCJ3aWR0aCIsbCkuYXR0cigiaGVpZ2h0Iix1KS5hcHBlbmQoInhodG1sOmRpdiIpLnN0eWxlKCJkaXNwbGF5IiwidGFibGUiKS5zdHlsZSgiaGVpZ2h0IiwiMTAwJSIpLnN0eWxlKCJ3aWR0aCIsIjEwMCUiKTttLmFwcGVuZCgiZGl2Iikuc3R5bGUoImRpc3BsYXkiLCJ0YWJsZS1jZWxsIikuc3R5bGUoInRleHQtYWxpZ24iLCJjZW50ZXIiKS5zdHlsZSgidmVydGljYWwtYWxpZ24iLCJtaWRkbGUiKS50ZXh0KGkpLGUoaSxmLHMsbyxsLHUsaCxkKSxuKG0saCl9ZnVuY3Rpb24gbihpLGEpe2Zvcihjb25zdCBzIGluIGEpYS5oYXNPd25Qcm9wZXJ0eShzKSYmaS5hdHRyKHMsYVtzXSl9cmV0dXJuIGZ1bmN0aW9uKGkpe3JldHVybiBpLnRleHRQbGFjZW1lbnQ9PT0iZm8iP3I6aS50ZXh0UGxhY2VtZW50PT09Im9sZCI/dDplfX0oKSxPaT17ZHJhd1JlY3Q6X2csZHJhd1RleHQ6WncsZHJhd0xhYmVsOkJLLGRyYXdCb3VuZGFyeTpPSyxkcmF3QzRTaGFwZTpGSyxkcmF3UmVsczpESyxkcmF3SW1hZ2U6S3csZHJhd0VtYmVkZGVkSW1hZ2U6TkssaW5zZXJ0QXJyb3dIZWFkOnpLLGluc2VydEFycm93RW5kOllLLGluc2VydEFycm93RmlsbGVkSGVhZDpVSyxpbnNlcnREeW5hbWljTnVtYmVyOldLLGluc2VydEFycm93Q3Jvc3NIZWFkOkhLLGluc2VydERhdGFiYXNlSWNvbjpQSyxpbnNlcnRDb21wdXRlckljb246cUssaW5zZXJ0Q2xvY2tJY29uOlZLLGdldFRleHRPYmo6R0ssZ2V0Tm90ZVJlY3Q6UXcsc2FuaXRpemVVcmw6a2l9O2xldCB5MT0wLG0xPTAsSnc9NCx2Zz0yO3FjLnl5PVh3O2xldCBadD17fTtjbGFzcyB0OXtjb25zdHJ1Y3RvcihlKXt0aGlzLm5hbWU9IiIsdGhpcy5kYXRhPXt9LHRoaXMuZGF0YS5zdGFydHg9dm9pZCAwLHRoaXMuZGF0YS5zdG9weD12b2lkIDAsdGhpcy5kYXRhLnN0YXJ0eT12b2lkIDAsdGhpcy5kYXRhLnN0b3B5PXZvaWQgMCx0aGlzLmRhdGEud2lkdGhMaW1pdD12b2lkIDAsdGhpcy5uZXh0RGF0YT17fSx0aGlzLm5leHREYXRhLnN0YXJ0eD12b2lkIDAsdGhpcy5uZXh0RGF0YS5zdG9weD12b2lkIDAsdGhpcy5uZXh0RGF0YS5zdGFydHk9dm9pZCAwLHRoaXMubmV4dERhdGEuc3RvcHk9dm9pZCAwLHRoaXMubmV4dERhdGEuY250PTAseGcoZS5kYi5nZXRDb25maWcoKSl9c2V0RGF0YShlLHIsbixpKXt0aGlzLm5leHREYXRhLnN0YXJ0eD10aGlzLmRhdGEuc3RhcnR4PWUsdGhpcy5uZXh0RGF0YS5zdG9weD10aGlzLmRhdGEuc3RvcHg9cix0aGlzLm5leHREYXRhLnN0YXJ0eT10aGlzLmRhdGEuc3RhcnR5PW4sdGhpcy5uZXh0RGF0YS5zdG9weT10aGlzLmRhdGEuc3RvcHk9aX11cGRhdGVWYWwoZSxyLG4saSl7dHlwZW9mIGVbcl0+InUiP2Vbcl09bjplW3JdPWkobixlW3JdKX1pbnNlcnQoZSl7dGhpcy5uZXh0RGF0YS5jbnQ9dGhpcy5uZXh0RGF0YS5jbnQrMTtsZXQgcj10aGlzLm5leHREYXRhLnN0YXJ0eD09PXRoaXMubmV4dERhdGEuc3RvcHg/dGhpcy5uZXh0RGF0YS5zdG9weCtlLm1hcmdpbjp0aGlzLm5leHREYXRhLnN0b3B4K2UubWFyZ2luKjIsbj1yK2Uud2lkdGgsaT10aGlzLm5leHREYXRhLnN0YXJ0eStlLm1hcmdpbioyLGE9aStlLmhlaWdodDsocj49dGhpcy5kYXRhLndpZHRoTGltaXR8fG4+PXRoaXMuZGF0YS53aWR0aExpbWl0fHx0aGlzLm5leHREYXRhLmNudD5KdykmJihyPXRoaXMubmV4dERhdGEuc3RhcnR4K2UubWFyZ2luK1p0Lm5leHRMaW5lUGFkZGluZ1gsaT10aGlzLm5leHREYXRhLnN0b3B5K2UubWFyZ2luKjIsdGhpcy5uZXh0RGF0YS5zdG9weD1uPXIrZS53aWR0aCx0aGlzLm5leHREYXRhLnN0YXJ0eT10aGlzLm5leHREYXRhLnN0b3B5LHRoaXMubmV4dERhdGEuc3RvcHk9YT1pK2UuaGVpZ2h0LHRoaXMubmV4dERhdGEuY250PTEpLGUueD1yLGUueT1pLHRoaXMudXBkYXRlVmFsKHRoaXMuZGF0YSwic3RhcnR4IixyLE1hdGgubWluKSx0aGlzLnVwZGF0ZVZhbCh0aGlzLmRhdGEsInN0YXJ0eSIsaSxNYXRoLm1pbiksdGhpcy51cGRhdGVWYWwodGhpcy5kYXRhLCJzdG9weCIsbixNYXRoLm1heCksdGhpcy51cGRhdGVWYWwodGhpcy5kYXRhLCJzdG9weSIsYSxNYXRoLm1heCksdGhpcy51cGRhdGVWYWwodGhpcy5uZXh0RGF0YSwic3RhcnR4IixyLE1hdGgubWluKSx0aGlzLnVwZGF0ZVZhbCh0aGlzLm5leHREYXRhLCJzdGFydHkiLGksTWF0aC5taW4pLHRoaXMudXBkYXRlVmFsKHRoaXMubmV4dERhdGEsInN0b3B4IixuLE1hdGgubWF4KSx0aGlzLnVwZGF0ZVZhbCh0aGlzLm5leHREYXRhLCJzdG9weSIsYSxNYXRoLm1heCl9aW5pdChlKXt0aGlzLm5hbWU9IiIsdGhpcy5kYXRhPXtzdGFydHg6dm9pZCAwLHN0b3B4OnZvaWQgMCxzdGFydHk6dm9pZCAwLHN0b3B5OnZvaWQgMCx3aWR0aExpbWl0OnZvaWQgMH0sdGhpcy5uZXh0RGF0YT17c3RhcnR4OnZvaWQgMCxzdG9weDp2b2lkIDAsc3RhcnR5OnZvaWQgMCxzdG9weTp2b2lkIDAsY250OjB9LHhnKGUuZGIuZ2V0Q29uZmlnKCkpfWJ1bXBMYXN0TWFyZ2luKGUpe3RoaXMuZGF0YS5zdG9weCs9ZSx0aGlzLmRhdGEuc3RvcHkrPWV9fWNvbnN0IHhnPWZ1bmN0aW9uKHQpe2ZyKFp0LHQpLHQuZm9udEZhbWlseSYmKFp0LnBlcnNvbkZvbnRGYW1pbHk9WnQuc3lzdGVtRm9udEZhbWlseT1adC5tZXNzYWdlRm9udEZhbWlseT10LmZvbnRGYW1pbHkpLHQuZm9udFNpemUmJihadC5wZXJzb25Gb250U2l6ZT1adC5zeXN0ZW1Gb250U2l6ZT1adC5tZXNzYWdlRm9udFNpemU9dC5mb250U2l6ZSksdC5mb250V2VpZ2h0JiYoWnQucGVyc29uRm9udFdlaWdodD1adC5zeXN0ZW1Gb250V2VpZ2h0PVp0Lm1lc3NhZ2VGb250V2VpZ2h0PXQuZm9udFdlaWdodCl9LHpjPSh0LGUpPT4oe2ZvbnRGYW1pbHk6dFtlKyJGb250RmFtaWx5Il0sZm9udFNpemU6dFtlKyJGb250U2l6ZSJdLGZvbnRXZWlnaHQ6dFtlKyJGb250V2VpZ2h0Il19KSxiMT10PT4oe2ZvbnRGYW1pbHk6dC5ib3VuZGFyeUZvbnRGYW1pbHksZm9udFNpemU6dC5ib3VuZGFyeUZvbnRTaXplLGZvbnRXZWlnaHQ6dC5ib3VuZGFyeUZvbnRXZWlnaHR9KSwkSz10PT4oe2ZvbnRGYW1pbHk6dC5tZXNzYWdlRm9udEZhbWlseSxmb250U2l6ZTp0Lm1lc3NhZ2VGb250U2l6ZSxmb250V2VpZ2h0OnQubWVzc2FnZUZvbnRXZWlnaHR9KTtmdW5jdGlvbiBnaSh0LGUscixuLGkpe2lmKCFlW3RdLndpZHRoKWlmKHIpZVt0XS50ZXh0PWN3KGVbdF0udGV4dCxpLG4pLGVbdF0udGV4dExpbmVzPWVbdF0udGV4dC5zcGxpdChwZS5saW5lQnJlYWtSZWdleCkubGVuZ3RoLGVbdF0ud2lkdGg9aSxlW3RdLmhlaWdodD1lZyhlW3RdLnRleHQsbik7ZWxzZXtsZXQgYT1lW3RdLnRleHQuc3BsaXQocGUubGluZUJyZWFrUmVnZXgpO2VbdF0udGV4dExpbmVzPWEubGVuZ3RoO2xldCBzPTA7ZVt0XS5oZWlnaHQ9MCxlW3RdLndpZHRoPTA7Zm9yKGxldCBvPTA7bzxhLmxlbmd0aDtvKyspZVt0XS53aWR0aD1NYXRoLm1heChCaShhW29dLG4pLGVbdF0ud2lkdGgpLHM9ZWcoYVtvXSxuKSxlW3RdLmhlaWdodD1lW3RdLmhlaWdodCtzfX1jb25zdCBlOT1mdW5jdGlvbih0LGUscil7ZS54PXIuZGF0YS5zdGFydHgsZS55PXIuZGF0YS5zdGFydHksZS53aWR0aD1yLmRhdGEuc3RvcHgtci5kYXRhLnN0YXJ0eCxlLmhlaWdodD1yLmRhdGEuc3RvcHktci5kYXRhLnN0YXJ0eSxlLmxhYmVsLnk9WnQuYzRTaGFwZU1hcmdpbi0zNTtsZXQgbj1lLndyYXAmJlp0LndyYXAsaT1iMShadCk7aS5mb250U2l6ZT1pLmZvbnRTaXplKzIsaS5mb250V2VpZ2h0PSJib2xkIjtsZXQgYT1CaShlLmxhYmVsLnRleHQsaSk7Z2koImxhYmVsIixlLG4saSxhKSxPaS5kcmF3Qm91bmRhcnkodCxlLFp0KX0scjk9ZnVuY3Rpb24odCxlLHIsbil7bGV0IGk9MDtmb3IobGV0IGE9MDthPG4ubGVuZ3RoO2ErKyl7aT0wO2NvbnN0IHM9cltuW2FdXTtsZXQgbz16YyhadCxzLnR5cGVDNFNoYXBlLnRleHQpO3N3aXRjaChvLmZvbnRTaXplPW8uZm9udFNpemUtMixzLnR5cGVDNFNoYXBlLndpZHRoPUJpKCI8PCIrcy50eXBlQzRTaGFwZS50ZXh0KyI+PiIsbykscy50eXBlQzRTaGFwZS5oZWlnaHQ9by5mb250U2l6ZSsyLHMudHlwZUM0U2hhcGUuWT1adC5jNFNoYXBlUGFkZGluZyxpPXMudHlwZUM0U2hhcGUuWStzLnR5cGVDNFNoYXBlLmhlaWdodC00LHMuaW1hZ2U9e3dpZHRoOjAsaGVpZ2h0OjAsWTowfSxzLnR5cGVDNFNoYXBlLnRleHQpe2Nhc2UicGVyc29uIjpjYXNlImV4dGVybmFsX3BlcnNvbiI6cy5pbWFnZS53aWR0aD00OCxzLmltYWdlLmhlaWdodD00OCxzLmltYWdlLlk9aSxpPXMuaW1hZ2UuWStzLmltYWdlLmhlaWdodDticmVha31zLnNwcml0ZSYmKHMuaW1hZ2Uud2lkdGg9NDgscy5pbWFnZS5oZWlnaHQ9NDgscy5pbWFnZS5ZPWksaT1zLmltYWdlLlkrcy5pbWFnZS5oZWlnaHQpO2xldCBsPXMud3JhcCYmWnQud3JhcCx1PVp0LndpZHRoLVp0LmM0U2hhcGVQYWRkaW5nKjIsaD16YyhadCxzLnR5cGVDNFNoYXBlLnRleHQpO2lmKGguZm9udFNpemU9aC5mb250U2l6ZSsyLGguZm9udFdlaWdodD0iYm9sZCIsZ2koImxhYmVsIixzLGwsaCx1KSxzLmxhYmVsLlk9aSs4LGk9cy5sYWJlbC5ZK3MubGFiZWwuaGVpZ2h0LHMudHlwZSYmcy50eXBlLnRleHQhPT0iIil7cy50eXBlLnRleHQ9IlsiK3MudHlwZS50ZXh0KyJdIjtsZXQgcD16YyhadCxzLnR5cGVDNFNoYXBlLnRleHQpO2dpKCJ0eXBlIixzLGwscCx1KSxzLnR5cGUuWT1pKzUsaT1zLnR5cGUuWStzLnR5cGUuaGVpZ2h0fWVsc2UgaWYocy50ZWNobiYmcy50ZWNobi50ZXh0IT09IiIpe3MudGVjaG4udGV4dD0iWyIrcy50ZWNobi50ZXh0KyJdIjtsZXQgcD16YyhadCxzLnRlY2huLnRleHQpO2dpKCJ0ZWNobiIscyxsLHAsdSkscy50ZWNobi5ZPWkrNSxpPXMudGVjaG4uWStzLnRlY2huLmhlaWdodH1sZXQgZD1pLGY9cy5sYWJlbC53aWR0aDtpZihzLmRlc2NyJiZzLmRlc2NyLnRleHQhPT0iIil7bGV0IHA9emMoWnQscy50eXBlQzRTaGFwZS50ZXh0KTtnaSgiZGVzY3IiLHMsbCxwLHUpLHMuZGVzY3IuWT1pKzIwLGk9cy5kZXNjci5ZK3MuZGVzY3IuaGVpZ2h0LGY9TWF0aC5tYXgocy5sYWJlbC53aWR0aCxzLmRlc2NyLndpZHRoKSxkPWktcy5kZXNjci50ZXh0TGluZXMqNX1mPWYrWnQuYzRTaGFwZVBhZGRpbmcscy53aWR0aD1NYXRoLm1heChzLndpZHRofHxadC53aWR0aCxmLFp0LndpZHRoKSxzLmhlaWdodD1NYXRoLm1heChzLmhlaWdodHx8WnQuaGVpZ2h0LGQsWnQuaGVpZ2h0KSxzLm1hcmdpbj1zLm1hcmdpbnx8WnQuYzRTaGFwZU1hcmdpbix0Lmluc2VydChzKSxPaS5kcmF3QzRTaGFwZShlLHMsWnQpfXQuYnVtcExhc3RNYXJnaW4oWnQuYzRTaGFwZU1hcmdpbil9O2NsYXNzIFVue2NvbnN0cnVjdG9yKGUscil7dGhpcy54PWUsdGhpcy55PXJ9fWxldCBuOT1mdW5jdGlvbih0LGUpe2xldCByPXQueCxuPXQueSxpPWUueCxhPWUueSxzPXIrdC53aWR0aC8yLG89bit0LmhlaWdodC8yLGw9TWF0aC5hYnMoci1pKSx1PU1hdGguYWJzKG4tYSksaD11L2wsZD10LmhlaWdodC90LndpZHRoLGY9bnVsbDtyZXR1cm4gbj09YSYmcjxpP2Y9bmV3IFVuKHIrdC53aWR0aCxvKTpuPT1hJiZyPmk/Zj1uZXcgVW4ocixvKTpyPT1pJiZuPGE/Zj1uZXcgVW4ocyxuK3QuaGVpZ2h0KTpyPT1pJiZuPmEmJihmPW5ldyBVbihzLG4pKSxyPmkmJm48YT9kPj1oP2Y9bmV3IFVuKHIsbytoKnQud2lkdGgvMik6Zj1uZXcgVW4ocy1sL3UqdC5oZWlnaHQvMixuK3QuaGVpZ2h0KTpyPGkmJm48YT9kPj1oP2Y9bmV3IFVuKHIrdC53aWR0aCxvK2gqdC53aWR0aC8yKTpmPW5ldyBVbihzK2wvdSp0LmhlaWdodC8yLG4rdC5oZWlnaHQpOnI8aSYmbj5hP2Q+PWg/Zj1uZXcgVW4ocit0LndpZHRoLG8taCp0LndpZHRoLzIpOmY9bmV3IFVuKHMrdC5oZWlnaHQvMipsL3Usbik6cj5pJiZuPmEmJihkPj1oP2Y9bmV3IFVuKHIsby10LndpZHRoLzIqaCk6Zj1uZXcgVW4ocy10LmhlaWdodC8yKmwvdSxuKSksZn0sWEs9ZnVuY3Rpb24odCxlKXtsZXQgcj17eDowLHk6MH07ci54PWUueCtlLndpZHRoLzIsci55PWUueStlLmhlaWdodC8yO2xldCBuPW45KHQscik7ci54PXQueCt0LndpZHRoLzIsci55PXQueSt0LmhlaWdodC8yO2xldCBpPW45KGUscik7cmV0dXJue3N0YXJ0UG9pbnQ6bixlbmRQb2ludDppfX07Y29uc3QgS0s9ZnVuY3Rpb24odCxlLHIsbil7bGV0IGk9MDtmb3IobGV0IGEgb2YgZSl7aT1pKzE7bGV0IHM9YS53cmFwJiZadC53cmFwLG89JEsoWnQpO24uZGIuZ2V0QzRUeXBlKCk9PT0iQzREeW5hbWljIiYmKGEubGFiZWwudGV4dD1pKyI6ICIrYS5sYWJlbC50ZXh0KTtsZXQgdT1CaShhLmxhYmVsLnRleHQsbyk7Z2koImxhYmVsIixhLHMsbyx1KSxhLnRlY2huJiZhLnRlY2huLnRleHQhPT0iIiYmKHU9QmkoYS50ZWNobi50ZXh0LG8pLGdpKCJ0ZWNobiIsYSxzLG8sdSkpLGEuZGVzY3ImJmEuZGVzY3IudGV4dCE9PSIiJiYodT1CaShhLmRlc2NyLnRleHQsbyksZ2koImRlc2NyIixhLHMsbyx1KSk7bGV0IGg9cihhLmZyb20pLGQ9cihhLnRvKSxmPVhLKGgsZCk7YS5zdGFydFBvaW50PWYuc3RhcnRQb2ludCxhLmVuZFBvaW50PWYuZW5kUG9pbnR9T2kuZHJhd1JlbHModCxlLFp0KX07ZnVuY3Rpb24gaTkodCxlLHIsbixpKXtsZXQgYT1uZXcgdDkoaSk7YS5kYXRhLndpZHRoTGltaXQ9ci5kYXRhLndpZHRoTGltaXQvTWF0aC5taW4odmcsbi5sZW5ndGgpO2ZvcihsZXQgcz0wO3M8bi5sZW5ndGg7cysrKXtsZXQgbz1uW3NdLGw9MDtvLmltYWdlPXt3aWR0aDowLGhlaWdodDowLFk6MH0sby5zcHJpdGUmJihvLmltYWdlLndpZHRoPTQ4LG8uaW1hZ2UuaGVpZ2h0PTQ4LG8uaW1hZ2UuWT1sLGw9by5pbWFnZS5ZK28uaW1hZ2UuaGVpZ2h0KTtsZXQgdT1vLndyYXAmJlp0LndyYXAsaD1iMShadCk7aWYoaC5mb250U2l6ZT1oLmZvbnRTaXplKzIsaC5mb250V2VpZ2h0PSJib2xkIixnaSgibGFiZWwiLG8sdSxoLGEuZGF0YS53aWR0aExpbWl0KSxvLmxhYmVsLlk9bCs4LGw9by5sYWJlbC5ZK28ubGFiZWwuaGVpZ2h0LG8udHlwZSYmby50eXBlLnRleHQhPT0iIil7by50eXBlLnRleHQ9IlsiK28udHlwZS50ZXh0KyJdIjtsZXQgbT1iMShadCk7Z2koInR5cGUiLG8sdSxtLGEuZGF0YS53aWR0aExpbWl0KSxvLnR5cGUuWT1sKzUsbD1vLnR5cGUuWStvLnR5cGUuaGVpZ2h0fWlmKG8uZGVzY3ImJm8uZGVzY3IudGV4dCE9PSIiKXtsZXQgbT1iMShadCk7bS5mb250U2l6ZT1tLmZvbnRTaXplLTIsZ2koImRlc2NyIixvLHUsbSxhLmRhdGEud2lkdGhMaW1pdCksby5kZXNjci5ZPWwrMjAsbD1vLmRlc2NyLlkrby5kZXNjci5oZWlnaHR9aWYocz09MHx8cyV2Zz09PTApe2xldCBtPXIuZGF0YS5zdGFydHgrWnQuZGlhZ3JhbU1hcmdpblgsXz1yLmRhdGEuc3RvcHkrWnQuZGlhZ3JhbU1hcmdpblkrbDthLnNldERhdGEobSxtLF8sXyl9ZWxzZXtsZXQgbT1hLmRhdGEuc3RvcHghPT1hLmRhdGEuc3RhcnR4P2EuZGF0YS5zdG9weCtadC5kaWFncmFtTWFyZ2luWDphLmRhdGEuc3RhcnR4LF89YS5kYXRhLnN0YXJ0eTthLnNldERhdGEobSxtLF8sXyl9YS5uYW1lPW8uYWxpYXM7bGV0IGQ9aS5kYi5nZXRDNFNoYXBlQXJyYXkoby5hbGlhcyksZj1pLmRiLmdldEM0U2hhcGVLZXlzKG8uYWxpYXMpO2YubGVuZ3RoPjAmJnI5KGEsdCxkLGYpLGU9by5hbGlhcztsZXQgcD1pLmRiLmdldEJvdW5kYXJ5cyhlKTtwLmxlbmd0aD4wJiZpOSh0LGUsYSxwLGkpLG8uYWxpYXMhPT0iZ2xvYmFsIiYmZTkodCxvLGEpLHIuZGF0YS5zdG9weT1NYXRoLm1heChhLmRhdGEuc3RvcHkrWnQuYzRTaGFwZU1hcmdpbixyLmRhdGEuc3RvcHkpLHIuZGF0YS5zdG9weD1NYXRoLm1heChhLmRhdGEuc3RvcHgrWnQuYzRTaGFwZU1hcmdpbixyLmRhdGEuc3RvcHgpLHkxPU1hdGgubWF4KHkxLHIuZGF0YS5zdG9weCksbTE9TWF0aC5tYXgobTEsci5kYXRhLnN0b3B5KX19Y29uc3QgYTk9e2RyYXdQZXJzb25PclN5c3RlbUFycmF5OnI5LGRyYXdCb3VuZGFyeTplOSxzZXRDb25mOnhnLGRyYXc6ZnVuY3Rpb24odCxlLHIsbil7WnQ9bnQoKS5jNDtjb25zdCBpPW50KCkuc2VjdXJpdHlMZXZlbDtsZXQgYTtpPT09InNhbmRib3giJiYoYT1TdCgiI2kiK2UpKTtjb25zdCBzPVN0KGk9PT0ic2FuZGJveCI/YS5ub2RlcygpWzBdLmNvbnRlbnREb2N1bWVudC5ib2R5OiJib2R5Iik7bGV0IG89bi5kYjtuLmRiLnNldFdyYXAoWnQud3JhcCksSnc9by5nZXRDNFNoYXBlSW5Sb3coKSx2Zz1vLmdldEM0Qm91bmRhcnlJblJvdygpLEguZGVidWcoYEM6JHtKU09OLnN0cmluZ2lmeShadCxudWxsLDIpfWApO2NvbnN0IGw9aT09PSJzYW5kYm94Ij9zLnNlbGVjdChgW2lkPSIke2V9Il1gKTpTdChgW2lkPSIke2V9Il1gKTtPaS5pbnNlcnRDb21wdXRlckljb24obCksT2kuaW5zZXJ0RGF0YWJhc2VJY29uKGwpLE9pLmluc2VydENsb2NrSWNvbihsKTtsZXQgdT1uZXcgdDkobik7dS5zZXREYXRhKFp0LmRpYWdyYW1NYXJnaW5YLFp0LmRpYWdyYW1NYXJnaW5YLFp0LmRpYWdyYW1NYXJnaW5ZLFp0LmRpYWdyYW1NYXJnaW5ZKSx1LmRhdGEud2lkdGhMaW1pdD1zY3JlZW4uYXZhaWxXaWR0aCx5MT1adC5kaWFncmFtTWFyZ2luWCxtMT1adC5kaWFncmFtTWFyZ2luWTtjb25zdCBoPW4uZGIuZ2V0VGl0bGUoKTtsZXQgZD1uLmRiLmdldEJvdW5kYXJ5cygiIik7aTkobCwiIix1LGQsbiksT2kuaW5zZXJ0QXJyb3dIZWFkKGwpLE9pLmluc2VydEFycm93RW5kKGwpLE9pLmluc2VydEFycm93Q3Jvc3NIZWFkKGwpLE9pLmluc2VydEFycm93RmlsbGVkSGVhZChsKSxLSyhsLG4uZGIuZ2V0UmVscygpLG4uZGIuZ2V0QzRTaGFwZSxuKSx1LmRhdGEuc3RvcHg9eTEsdS5kYXRhLnN0b3B5PW0xO2NvbnN0IGY9dS5kYXRhO2xldCBtPWYuc3RvcHktZi5zdGFydHkrMipadC5kaWFncmFtTWFyZ2luWTtjb25zdCB5PWYuc3RvcHgtZi5zdGFydHgrMipadC5kaWFncmFtTWFyZ2luWDtoJiZsLmFwcGVuZCgidGV4dCIpLnRleHQoaCkuYXR0cigieCIsKGYuc3RvcHgtZi5zdGFydHgpLzItNCpadC5kaWFncmFtTWFyZ2luWCkuYXR0cigieSIsZi5zdGFydHkrWnQuZGlhZ3JhbU1hcmdpblkpLGxpKGwsbSx5LFp0LnVzZU1heFdpZHRoKTtjb25zdCBiPWg/NjA6MDtsLmF0dHIoInZpZXdCb3giLGYuc3RhcnR4LVp0LmRpYWdyYW1NYXJnaW5YKyIgLSIrKFp0LmRpYWdyYW1NYXJnaW5ZK2IpKyIgIit5KyIgIisobStiKSksYm4ocWMueXksbCxlKSxILmRlYnVnKCJtb2RlbHM6IixmKX19O3ZhciBfMT1mdW5jdGlvbigpe3ZhciB0PWZ1bmN0aW9uKFosVixRLHEpe2ZvcihRPVF8fHt9LHE9Wi5sZW5ndGg7cS0tO1FbWltxXV09Vik7cmV0dXJuIFF9LGU9WzEsM10scj1bMSw3XSxuPVsxLDhdLGk9WzEsOV0sYT1bMSwxMF0scz1bMSwxM10sbz1bMSwxMl0sbD1bMSwxNiwyNV0sdT1bMSwyMF0saD1bMSwzMV0sZD1bMSwzMl0sZj1bMSwzM10scD1bMSwzNV0sbT1bMSwzOF0sXz1bMSwzNl0seT1bMSwzN10sYj1bMSwzOV0seD1bMSw0MF0saz1bMSw0MV0sVD1bMSw0Ml0sQz1bMSw0NV0sTT1bMSw0Nl0sUz1bMSw0N10sUj1bMSw0OF0sQT1bMTYsMjVdLEw9WzEsNjJdLHY9WzEsNjNdLEI9WzEsNjRdLHc9WzEsNjVdLEQ9WzEsNjZdLE49WzEsNjddLHo9WzEsNjhdLFg9WzE2LDI1LDMyLDQ0LDQ1LDUzLDU2LDU3LDU4LDU5LDYwLDYxLDYyLDY3LDY5XSxjdD1bMTYsMjUsMzAsMzIsNDQsNDUsNDksNTMsNTYsNTcsNTgsNTksNjAsNjEsNjIsNjcsNjksODQsODUsODYsODddLEo9WzUsOCw5LDEwLDExLDE2LDE5LDIzLDI1XSxZPVs1Myw4NCw4NSw4Niw4N10sJD1bNTMsNjEsNjIsODQsODUsODYsODddLGx0PVs1Myw1Niw1Nyw1OCw1OSw2MCw4NCw4NSw4Niw4N10sdXQ9WzE2LDI1LDMyXSxXPVsxLDEwMF0sdHQ9e3RyYWNlOmZ1bmN0aW9uKCl7fSx5eTp7fSxzeW1ib2xzXzp7ZXJyb3I6MixzdGFydDozLG1lcm1haWREb2M6NCxzdGF0bWVudHM6NSxkaXJlY3Rpb246NixkaXJlY3RpdmU6NyxkaXJlY3Rpb25fdGI6OCxkaXJlY3Rpb25fYnQ6OSxkaXJlY3Rpb25fcmw6MTAsZGlyZWN0aW9uX2xyOjExLGdyYXBoQ29uZmlnOjEyLG9wZW5EaXJlY3RpdmU6MTMsdHlwZURpcmVjdGl2ZToxNCxjbG9zZURpcmVjdGl2ZToxNSxORVdMSU5FOjE2LCI6IjoxNyxhcmdEaXJlY3RpdmU6MTgsb3Blbl9kaXJlY3RpdmU6MTksdHlwZV9kaXJlY3RpdmU6MjAsYXJnX2RpcmVjdGl2ZToyMSxjbG9zZV9kaXJlY3RpdmU6MjIsQ0xBU1NfRElBR1JBTToyMyxzdGF0ZW1lbnRzOjI0LEVPRjoyNSxzdGF0ZW1lbnQ6MjYsY2xhc3NOYW1lOjI3LGFscGhhTnVtVG9rZW46MjgsY2xhc3NMaXRlcmFsTmFtZToyOSxHRU5FUklDVFlQRTozMCxyZWxhdGlvblN0YXRlbWVudDozMSxMQUJFTDozMixjbGFzc1N0YXRlbWVudDozMyxtZXRob2RTdGF0ZW1lbnQ6MzQsYW5ub3RhdGlvblN0YXRlbWVudDozNSxjbGlja1N0YXRlbWVudDozNixjc3NDbGFzc1N0YXRlbWVudDozNyxhY2NfdGl0bGU6MzgsYWNjX3RpdGxlX3ZhbHVlOjM5LGFjY19kZXNjcjo0MCxhY2NfZGVzY3JfdmFsdWU6NDEsYWNjX2Rlc2NyX211bHRpbGluZV92YWx1ZTo0MixDTEFTUzo0MyxTVFlMRV9TRVBBUkFUT1I6NDQsU1RSVUNUX1NUQVJUOjQ1LG1lbWJlcnM6NDYsU1RSVUNUX1NUT1A6NDcsQU5OT1RBVElPTl9TVEFSVDo0OCxBTk5PVEFUSU9OX0VORDo0OSxNRU1CRVI6NTAsU0VQQVJBVE9SOjUxLHJlbGF0aW9uOjUyLFNUUjo1MyxyZWxhdGlvblR5cGU6NTQsbGluZVR5cGU6NTUsQUdHUkVHQVRJT046NTYsRVhURU5TSU9OOjU3LENPTVBPU0lUSU9OOjU4LERFUEVOREVOQ1k6NTksTE9MTElQT1A6NjAsTElORTo2MSxET1RURURfTElORTo2MixDQUxMQkFDSzo2MyxMSU5LOjY0LExJTktfVEFSR0VUOjY1LENMSUNLOjY2LENBTExCQUNLX05BTUU6NjcsQ0FMTEJBQ0tfQVJHUzo2OCxIUkVGOjY5LENTU0NMQVNTOjcwLGNvbW1lbnRUb2tlbjo3MSx0ZXh0VG9rZW46NzIsZ3JhcGhDb2RlVG9rZW5zOjczLHRleHROb1RhZ3NUb2tlbjo3NCxUQUdTVEFSVDo3NSxUQUdFTkQ6NzYsIj09Ijo3NywiLS0iOjc4LFBDVDo3OSxERUZBVUxUOjgwLFNQQUNFOjgxLE1JTlVTOjgyLGtleXdvcmRzOjgzLFVOSUNPREVfVEVYVDo4NCxOVU06ODUsQUxQSEE6ODYsQlFVT1RFX1NUUjo4NywkYWNjZXB0OjAsJGVuZDoxfSx0ZXJtaW5hbHNfOnsyOiJlcnJvciIsNToic3RhdG1lbnRzIiw4OiJkaXJlY3Rpb25fdGIiLDk6ImRpcmVjdGlvbl9idCIsMTA6ImRpcmVjdGlvbl9ybCIsMTE6ImRpcmVjdGlvbl9sciIsMTY6Ik5FV0xJTkUiLDE3OiI6IiwxOToib3Blbl9kaXJlY3RpdmUiLDIwOiJ0eXBlX2RpcmVjdGl2ZSIsMjE6ImFyZ19kaXJlY3RpdmUiLDIyOiJjbG9zZV9kaXJlY3RpdmUiLDIzOiJDTEFTU19ESUFHUkFNIiwyNToiRU9GIiwzMDoiR0VORVJJQ1RZUEUiLDMyOiJMQUJFTCIsMzg6ImFjY190aXRsZSIsMzk6ImFjY190aXRsZV92YWx1ZSIsNDA6ImFjY19kZXNjciIsNDE6ImFjY19kZXNjcl92YWx1ZSIsNDI6ImFjY19kZXNjcl9tdWx0aWxpbmVfdmFsdWUiLDQzOiJDTEFTUyIsNDQ6IlNUWUxFX1NFUEFSQVRPUiIsNDU6IlNUUlVDVF9TVEFSVCIsNDc6IlNUUlVDVF9TVE9QIiw0ODoiQU5OT1RBVElPTl9TVEFSVCIsNDk6IkFOTk9UQVRJT05fRU5EIiw1MDoiTUVNQkVSIiw1MToiU0VQQVJBVE9SIiw1MzoiU1RSIiw1NjoiQUdHUkVHQVRJT04iLDU3OiJFWFRFTlNJT04iLDU4OiJDT01QT1NJVElPTiIsNTk6IkRFUEVOREVOQ1kiLDYwOiJMT0xMSVBPUCIsNjE6IkxJTkUiLDYyOiJET1RURURfTElORSIsNjM6IkNBTExCQUNLIiw2NDoiTElOSyIsNjU6IkxJTktfVEFSR0VUIiw2NjoiQ0xJQ0siLDY3OiJDQUxMQkFDS19OQU1FIiw2ODoiQ0FMTEJBQ0tfQVJHUyIsNjk6IkhSRUYiLDcwOiJDU1NDTEFTUyIsNzM6ImdyYXBoQ29kZVRva2VucyIsNzU6IlRBR1NUQVJUIiw3NjoiVEFHRU5EIiw3NzoiPT0iLDc4OiItLSIsNzk6IlBDVCIsODA6IkRFRkFVTFQiLDgxOiJTUEFDRSIsODI6Ik1JTlVTIiw4Mzoia2V5d29yZHMiLDg0OiJVTklDT0RFX1RFWFQiLDg1OiJOVU0iLDg2OiJBTFBIQSIsODc6IkJRVU9URV9TVFIifSxwcm9kdWN0aW9uc186WzAsWzMsMV0sWzMsMV0sWzMsMV0sWzMsMl0sWzYsMV0sWzYsMV0sWzYsMV0sWzYsMV0sWzQsMV0sWzcsNF0sWzcsNl0sWzEzLDFdLFsxNCwxXSxbMTgsMV0sWzE1LDFdLFsxMiw0XSxbMjQsMV0sWzI0LDJdLFsyNCwzXSxbMjcsMV0sWzI3LDFdLFsyNywyXSxbMjcsMl0sWzI3LDJdLFsyNiwxXSxbMjYsMl0sWzI2LDFdLFsyNiwxXSxbMjYsMV0sWzI2LDFdLFsyNiwxXSxbMjYsMV0sWzI2LDFdLFsyNiwyXSxbMjYsMl0sWzI2LDFdLFszMywyXSxbMzMsNF0sWzMzLDVdLFszMyw3XSxbMzUsNF0sWzQ2LDFdLFs0NiwyXSxbMzQsMV0sWzM0LDJdLFszNCwxXSxbMzQsMV0sWzMxLDNdLFszMSw0XSxbMzEsNF0sWzMxLDVdLFs1MiwzXSxbNTIsMl0sWzUyLDJdLFs1MiwxXSxbNTQsMV0sWzU0LDFdLFs1NCwxXSxbNTQsMV0sWzU0LDFdLFs1NSwxXSxbNTUsMV0sWzM2LDNdLFszNiw0XSxbMzYsM10sWzM2LDRdLFszNiw0XSxbMzYsNV0sWzM2LDNdLFszNiw0XSxbMzYsNF0sWzM2LDVdLFszNiwzXSxbMzYsNF0sWzM2LDRdLFszNiw1XSxbMzcsM10sWzcxLDFdLFs3MSwxXSxbNzIsMV0sWzcyLDFdLFs3MiwxXSxbNzIsMV0sWzcyLDFdLFs3MiwxXSxbNzIsMV0sWzc0LDFdLFs3NCwxXSxbNzQsMV0sWzc0LDFdLFsyOCwxXSxbMjgsMV0sWzI4LDFdLFsyOSwxXV0scGVyZm9ybUFjdGlvbjpmdW5jdGlvbihWLFEscSxVLEYsaixQKXt2YXIgZXQ9ai5sZW5ndGgtMTtzd2l0Y2goRil7Y2FzZSA1OlUuc2V0RGlyZWN0aW9uKCJUQiIpO2JyZWFrO2Nhc2UgNjpVLnNldERpcmVjdGlvbigiQlQiKTticmVhaztjYXNlIDc6VS5zZXREaXJlY3Rpb24oIlJMIik7YnJlYWs7Y2FzZSA4OlUuc2V0RGlyZWN0aW9uKCJMUiIpO2JyZWFrO2Nhc2UgMTI6VS5wYXJzZURpcmVjdGl2ZSgiJSV7Iiwib3Blbl9kaXJlY3RpdmUiKTticmVhaztjYXNlIDEzOlUucGFyc2VEaXJlY3RpdmUoaltldF0sInR5cGVfZGlyZWN0aXZlIik7YnJlYWs7Y2FzZSAxNDpqW2V0XT1qW2V0XS50cmltKCkucmVwbGFjZSgvJy9nLCciJyksVS5wYXJzZURpcmVjdGl2ZShqW2V0XSwiYXJnX2RpcmVjdGl2ZSIpO2JyZWFrO2Nhc2UgMTU6VS5wYXJzZURpcmVjdGl2ZSgifSUlIiwiY2xvc2VfZGlyZWN0aXZlIiwiY2xhc3MiKTticmVhaztjYXNlIDIwOmNhc2UgMjE6dGhpcy4kPWpbZXRdO2JyZWFrO2Nhc2UgMjI6dGhpcy4kPWpbZXQtMV0raltldF07YnJlYWs7Y2FzZSAyMzpjYXNlIDI0OnRoaXMuJD1qW2V0LTFdKyJ+IitqW2V0XTticmVhaztjYXNlIDI1OlUuYWRkUmVsYXRpb24oaltldF0pO2JyZWFrO2Nhc2UgMjY6altldC0xXS50aXRsZT1VLmNsZWFudXBMYWJlbChqW2V0XSksVS5hZGRSZWxhdGlvbihqW2V0LTFdKTticmVhaztjYXNlIDM0OnRoaXMuJD1qW2V0XS50cmltKCksVS5zZXRBY2NUaXRsZSh0aGlzLiQpO2JyZWFrO2Nhc2UgMzU6Y2FzZSAzNjp0aGlzLiQ9altldF0udHJpbSgpLFUuc2V0QWNjRGVzY3JpcHRpb24odGhpcy4kKTticmVhaztjYXNlIDM3OlUuYWRkQ2xhc3MoaltldF0pO2JyZWFrO2Nhc2UgMzg6VS5hZGRDbGFzcyhqW2V0LTJdKSxVLnNldENzc0NsYXNzKGpbZXQtMl0saltldF0pO2JyZWFrO2Nhc2UgMzk6VS5hZGRDbGFzcyhqW2V0LTNdKSxVLmFkZE1lbWJlcnMoaltldC0zXSxqW2V0LTFdKTticmVhaztjYXNlIDQwOlUuYWRkQ2xhc3MoaltldC01XSksVS5zZXRDc3NDbGFzcyhqW2V0LTVdLGpbZXQtM10pLFUuYWRkTWVtYmVycyhqW2V0LTVdLGpbZXQtMV0pO2JyZWFrO2Nhc2UgNDE6VS5hZGRBbm5vdGF0aW9uKGpbZXRdLGpbZXQtMl0pO2JyZWFrO2Nhc2UgNDI6dGhpcy4kPVtqW2V0XV07YnJlYWs7Y2FzZSA0MzpqW2V0XS5wdXNoKGpbZXQtMV0pLHRoaXMuJD1qW2V0XTticmVhaztjYXNlIDQ0OmJyZWFrO2Nhc2UgNDU6VS5hZGRNZW1iZXIoaltldC0xXSxVLmNsZWFudXBMYWJlbChqW2V0XSkpO2JyZWFrO2Nhc2UgNDY6YnJlYWs7Y2FzZSA0NzpicmVhaztjYXNlIDQ4OnRoaXMuJD17aWQxOmpbZXQtMl0saWQyOmpbZXRdLHJlbGF0aW9uOmpbZXQtMV0scmVsYXRpb25UaXRsZTE6Im5vbmUiLHJlbGF0aW9uVGl0bGUyOiJub25lIn07YnJlYWs7Y2FzZSA0OTp0aGlzLiQ9e2lkMTpqW2V0LTNdLGlkMjpqW2V0XSxyZWxhdGlvbjpqW2V0LTFdLHJlbGF0aW9uVGl0bGUxOmpbZXQtMl0scmVsYXRpb25UaXRsZTI6Im5vbmUifTticmVhaztjYXNlIDUwOnRoaXMuJD17aWQxOmpbZXQtM10saWQyOmpbZXRdLHJlbGF0aW9uOmpbZXQtMl0scmVsYXRpb25UaXRsZTE6Im5vbmUiLHJlbGF0aW9uVGl0bGUyOmpbZXQtMV19O2JyZWFrO2Nhc2UgNTE6dGhpcy4kPXtpZDE6altldC00XSxpZDI6altldF0scmVsYXRpb246altldC0yXSxyZWxhdGlvblRpdGxlMTpqW2V0LTNdLHJlbGF0aW9uVGl0bGUyOmpbZXQtMV19O2JyZWFrO2Nhc2UgNTI6dGhpcy4kPXt0eXBlMTpqW2V0LTJdLHR5cGUyOmpbZXRdLGxpbmVUeXBlOmpbZXQtMV19O2JyZWFrO2Nhc2UgNTM6dGhpcy4kPXt0eXBlMToibm9uZSIsdHlwZTI6altldF0sbGluZVR5cGU6altldC0xXX07YnJlYWs7Y2FzZSA1NDp0aGlzLiQ9e3R5cGUxOmpbZXQtMV0sdHlwZTI6Im5vbmUiLGxpbmVUeXBlOmpbZXRdfTticmVhaztjYXNlIDU1OnRoaXMuJD17dHlwZTE6Im5vbmUiLHR5cGUyOiJub25lIixsaW5lVHlwZTpqW2V0XX07YnJlYWs7Y2FzZSA1Njp0aGlzLiQ9VS5yZWxhdGlvblR5cGUuQUdHUkVHQVRJT047YnJlYWs7Y2FzZSA1Nzp0aGlzLiQ9VS5yZWxhdGlvblR5cGUuRVhURU5TSU9OO2JyZWFrO2Nhc2UgNTg6dGhpcy4kPVUucmVsYXRpb25UeXBlLkNPTVBPU0lUSU9OO2JyZWFrO2Nhc2UgNTk6dGhpcy4kPVUucmVsYXRpb25UeXBlLkRFUEVOREVOQ1k7YnJlYWs7Y2FzZSA2MDp0aGlzLiQ9VS5yZWxhdGlvblR5cGUuTE9MTElQT1A7YnJlYWs7Y2FzZSA2MTp0aGlzLiQ9VS5saW5lVHlwZS5MSU5FO2JyZWFrO2Nhc2UgNjI6dGhpcy4kPVUubGluZVR5cGUuRE9UVEVEX0xJTkU7YnJlYWs7Y2FzZSA2MzpjYXNlIDY5OnRoaXMuJD1qW2V0LTJdLFUuc2V0Q2xpY2tFdmVudChqW2V0LTFdLGpbZXRdKTticmVhaztjYXNlIDY0OmNhc2UgNzA6dGhpcy4kPWpbZXQtM10sVS5zZXRDbGlja0V2ZW50KGpbZXQtMl0saltldC0xXSksVS5zZXRUb29sdGlwKGpbZXQtMl0saltldF0pO2JyZWFrO2Nhc2UgNjU6Y2FzZSA3Mzp0aGlzLiQ9altldC0yXSxVLnNldExpbmsoaltldC0xXSxqW2V0XSk7YnJlYWs7Y2FzZSA2Njp0aGlzLiQ9altldC0zXSxVLnNldExpbmsoaltldC0yXSxqW2V0LTFdLGpbZXRdKTticmVhaztjYXNlIDY3OmNhc2UgNzU6dGhpcy4kPWpbZXQtM10sVS5zZXRMaW5rKGpbZXQtMl0saltldC0xXSksVS5zZXRUb29sdGlwKGpbZXQtMl0saltldF0pO2JyZWFrO2Nhc2UgNjg6Y2FzZSA3Njp0aGlzLiQ9altldC00XSxVLnNldExpbmsoaltldC0zXSxqW2V0LTJdLGpbZXRdKSxVLnNldFRvb2x0aXAoaltldC0zXSxqW2V0LTFdKTticmVhaztjYXNlIDcxOnRoaXMuJD1qW2V0LTNdLFUuc2V0Q2xpY2tFdmVudChqW2V0LTJdLGpbZXQtMV0saltldF0pO2JyZWFrO2Nhc2UgNzI6dGhpcy4kPWpbZXQtNF0sVS5zZXRDbGlja0V2ZW50KGpbZXQtM10saltldC0yXSxqW2V0LTFdKSxVLnNldFRvb2x0aXAoaltldC0zXSxqW2V0XSk7YnJlYWs7Y2FzZSA3NDp0aGlzLiQ9altldC0zXSxVLnNldExpbmsoaltldC0yXSxqW2V0LTFdLGpbZXRdKTticmVhaztjYXNlIDc3OlUuc2V0Q3NzQ2xhc3MoaltldC0xXSxqW2V0XSk7YnJlYWt9fSx0YWJsZTpbezM6MSw0OjIsNTplLDY6NCw3OjUsODpyLDk6biwxMDppLDExOmEsMTI6NiwxMzoxMSwxOTpzLDIzOm99LHsxOlszXX0sezE6WzIsMV19LHsxOlsyLDJdfSx7MTpbMiwzXX0sezM6MTQsNDoyLDU6ZSw2OjQsNzo1LDg6ciw5Om4sMTA6aSwxMTphLDEyOjYsMTM6MTEsMTk6cywyMzpvfSx7MTpbMiw5XX0sdChsLFsyLDVdKSx0KGwsWzIsNl0pLHQobCxbMiw3XSksdChsLFsyLDhdKSx7MTQ6MTUsMjA6WzEsMTZdfSx7MTY6WzEsMTddfSx7MjA6WzIsMTJdfSx7MTpbMiw0XX0sezE1OjE4LDE3OlsxLDE5XSwyMjp1fSx0KFsxNywyMl0sWzIsMTNdKSx7NjozMCw3OjI5LDg6ciw5Om4sMTA6aSwxMTphLDEzOjExLDE5OnMsMjQ6MjEsMjY6MjIsMjc6MzQsMjg6NDMsMjk6NDQsMzE6MjMsMzM6MjQsMzQ6MjUsMzU6MjYsMzY6MjcsMzc6MjgsMzg6aCw0MDpkLDQyOmYsNDM6cCw0ODptLDUwOl8sNTE6eSw2MzpiLDY0OngsNjY6ayw3MDpULDg0OkMsODU6TSw4NjpTLDg3OlJ9LHsxNjpbMSw0OV19LHsxODo1MCwyMTpbMSw1MV19LHsxNjpbMiwxNV19LHsyNTpbMSw1Ml19LHsxNjpbMSw1M10sMjU6WzIsMTddfSx0KEEsWzIsMjVdLHszMjpbMSw1NF19KSx0KEEsWzIsMjddKSx0KEEsWzIsMjhdKSx0KEEsWzIsMjldKSx0KEEsWzIsMzBdKSx0KEEsWzIsMzFdKSx0KEEsWzIsMzJdKSx0KEEsWzIsMzNdKSx7Mzk6WzEsNTVdfSx7NDE6WzEsNTZdfSx0KEEsWzIsMzZdKSx0KEEsWzIsNDRdLHs1Mjo1Nyw1NDo2MCw1NTo2MSwzMjpbMSw1OV0sNTM6WzEsNThdLDU2OkwsNTc6diw1ODpCLDU5OncsNjA6RCw2MTpOLDYyOnp9KSx7Mjc6NjksMjg6NDMsMjk6NDQsODQ6Qyw4NTpNLDg2OlMsODc6Un0sdChBLFsyLDQ2XSksdChBLFsyLDQ3XSksezI4OjcwLDg0OkMsODU6TSw4NjpTfSx7Mjc6NzEsMjg6NDMsMjk6NDQsODQ6Qyw4NTpNLDg2OlMsODc6Un0sezI3OjcyLDI4OjQzLDI5OjQ0LDg0OkMsODU6TSw4NjpTLDg3OlJ9LHsyNzo3MywyODo0MywyOTo0NCw4NDpDLDg1Ok0sODY6Uyw4NzpSfSx7NTM6WzEsNzRdfSx0KFgsWzIsMjBdLHsyODo0MywyOTo0NCwyNzo3NSwzMDpbMSw3Nl0sODQ6Qyw4NTpNLDg2OlMsODc6Un0pLHQoWCxbMiwyMV0sezMwOlsxLDc3XX0pLHQoY3QsWzIsOTFdKSx0KGN0LFsyLDkyXSksdChjdCxbMiw5M10pLHQoWzE2LDI1LDMwLDMyLDQ0LDQ1LDUzLDU2LDU3LDU4LDU5LDYwLDYxLDYyLDY3LDY5XSxbMiw5NF0pLHQoSixbMiwxMF0pLHsxNTo3OCwyMjp1fSx7MjI6WzIsMTRdfSx7MTpbMiwxNl19LHs2OjMwLDc6MjksODpyLDk6biwxMDppLDExOmEsMTM6MTEsMTk6cywyNDo3OSwyNTpbMiwxOF0sMjY6MjIsMjc6MzQsMjg6NDMsMjk6NDQsMzE6MjMsMzM6MjQsMzQ6MjUsMzU6MjYsMzY6MjcsMzc6MjgsMzg6aCw0MDpkLDQyOmYsNDM6cCw0ODptLDUwOl8sNTE6eSw2MzpiLDY0OngsNjY6ayw3MDpULDg0OkMsODU6TSw4NjpTLDg3OlJ9LHQoQSxbMiwyNl0pLHQoQSxbMiwzNF0pLHQoQSxbMiwzNV0pLHsyNzo4MCwyODo0MywyOTo0NCw1MzpbMSw4MV0sODQ6Qyw4NTpNLDg2OlMsODc6Un0sezUyOjgyLDU0OjYwLDU1OjYxLDU2OkwsNTc6diw1ODpCLDU5OncsNjA6RCw2MTpOLDYyOnp9LHQoQSxbMiw0NV0pLHs1NTo4Myw2MTpOLDYyOnp9LHQoWSxbMiw1NV0sezU0Ojg0LDU2OkwsNTc6diw1ODpCLDU5OncsNjA6RH0pLHQoJCxbMiw1Nl0pLHQoJCxbMiw1N10pLHQoJCxbMiw1OF0pLHQoJCxbMiw1OV0pLHQoJCxbMiw2MF0pLHQobHQsWzIsNjFdKSx0KGx0LFsyLDYyXSksdChBLFsyLDM3XSx7NDQ6WzEsODVdLDQ1OlsxLDg2XX0pLHs0OTpbMSw4N119LHs1MzpbMSw4OF19LHs1MzpbMSw4OV19LHs2NzpbMSw5MF0sNjk6WzEsOTFdfSx7Mjg6OTIsODQ6Qyw4NTpNLDg2OlN9LHQoWCxbMiwyMl0pLHQoWCxbMiwyM10pLHQoWCxbMiwyNF0pLHsxNjpbMSw5M119LHsyNTpbMiwxOV19LHQodXQsWzIsNDhdKSx7Mjc6OTQsMjg6NDMsMjk6NDQsODQ6Qyw4NTpNLDg2OlMsODc6Un0sezI3Ojk1LDI4OjQzLDI5OjQ0LDUzOlsxLDk2XSw4NDpDLDg1Ok0sODY6Uyw4NzpSfSx0KFksWzIsNTRdLHs1NDo5Nyw1NjpMLDU3OnYsNTg6Qiw1OTp3LDYwOkR9KSx0KFksWzIsNTNdKSx7Mjg6OTgsODQ6Qyw4NTpNLDg2OlN9LHs0Njo5OSw1MDpXfSx7Mjc6MTAxLDI4OjQzLDI5OjQ0LDg0OkMsODU6TSw4NjpTLDg3OlJ9LHQoQSxbMiw2M10sezUzOlsxLDEwMl19KSx0KEEsWzIsNjVdLHs1MzpbMSwxMDRdLDY1OlsxLDEwM119KSx0KEEsWzIsNjldLHs1MzpbMSwxMDVdLDY4OlsxLDEwNl19KSx0KEEsWzIsNzNdLHs1MzpbMSwxMDhdLDY1OlsxLDEwN119KSx0KEEsWzIsNzddKSx0KEosWzIsMTFdKSx0KHV0LFsyLDUwXSksdCh1dCxbMiw0OV0pLHsyNzoxMDksMjg6NDMsMjk6NDQsODQ6Qyw4NTpNLDg2OlMsODc6Un0sdChZLFsyLDUyXSksdChBLFsyLDM4XSx7NDU6WzEsMTEwXX0pLHs0NzpbMSwxMTFdfSx7NDY6MTEyLDQ3OlsyLDQyXSw1MDpXfSx0KEEsWzIsNDFdKSx0KEEsWzIsNjRdKSx0KEEsWzIsNjZdKSx0KEEsWzIsNjddLHs2NTpbMSwxMTNdfSksdChBLFsyLDcwXSksdChBLFsyLDcxXSx7NTM6WzEsMTE0XX0pLHQoQSxbMiw3NF0pLHQoQSxbMiw3NV0sezY1OlsxLDExNV19KSx0KHV0LFsyLDUxXSksezQ2OjExNiw1MDpXfSx0KEEsWzIsMzldKSx7NDc6WzIsNDNdfSx0KEEsWzIsNjhdKSx0KEEsWzIsNzJdKSx0KEEsWzIsNzZdKSx7NDc6WzEsMTE3XX0sdChBLFsyLDQwXSldLGRlZmF1bHRBY3Rpb25zOnsyOlsyLDFdLDM6WzIsMl0sNDpbMiwzXSw2OlsyLDldLDEzOlsyLDEyXSwxNDpbMiw0XSwyMDpbMiwxNV0sNTE6WzIsMTRdLDUyOlsyLDE2XSw3OTpbMiwxOV0sMTEyOlsyLDQzXX0scGFyc2VFcnJvcjpmdW5jdGlvbihWLFEpe2lmKFEucmVjb3ZlcmFibGUpdGhpcy50cmFjZShWKTtlbHNle3ZhciBxPW5ldyBFcnJvcihWKTt0aHJvdyBxLmhhc2g9USxxfX0scGFyc2U6ZnVuY3Rpb24oVil7dmFyIFE9dGhpcyxxPVswXSxVPVtdLEY9W251bGxdLGo9W10sUD10aGlzLnRhYmxlLGV0PSIiLGF0PTAsSXQ9MCxMdD0yLFJ0PTEsQ3Q9ai5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSxwdD1PYmplY3QuY3JlYXRlKHRoaXMubGV4ZXIpLG10PXt5eTp7fX07Zm9yKHZhciB2dCBpbiB0aGlzLnl5KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLnl5LHZ0KSYmKG10Lnl5W3Z0XT10aGlzLnl5W3Z0XSk7cHQuc2V0SW5wdXQoVixtdC55eSksbXQueXkubGV4ZXI9cHQsbXQueXkucGFyc2VyPXRoaXMsdHlwZW9mIHB0Lnl5bGxvYz4idSImJihwdC55eWxsb2M9e30pO3ZhciBUdD1wdC55eWxsb2M7ai5wdXNoKFR0KTt2YXIgZnQ9cHQub3B0aW9ucyYmcHQub3B0aW9ucy5yYW5nZXM7dHlwZW9mIG10Lnl5LnBhcnNlRXJyb3I9PSJmdW5jdGlvbiI/dGhpcy5wYXJzZUVycm9yPW10Lnl5LnBhcnNlRXJyb3I6dGhpcy5wYXJzZUVycm9yPU9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKS5wYXJzZUVycm9yO2Z1bmN0aW9uIGxlKCl7dmFyIEV0O3JldHVybiBFdD1VLnBvcCgpfHxwdC5sZXgoKXx8UnQsdHlwZW9mIEV0IT0ibnVtYmVyIiYmKEV0IGluc3RhbmNlb2YgQXJyYXkmJihVPUV0LEV0PVUucG9wKCkpLEV0PVEuc3ltYm9sc19bRXRdfHxFdCksRXR9Zm9yKHZhciBEdCxHdCwkdCxRdCx3ZT17fSxqdCxGdCx6dCx3dDs7KXtpZihHdD1xW3EubGVuZ3RoLTFdLHRoaXMuZGVmYXVsdEFjdGlvbnNbR3RdPyR0PXRoaXMuZGVmYXVsdEFjdGlvbnNbR3RdOigoRHQ9PT1udWxsfHx0eXBlb2YgRHQ+InUiKSYmKER0PWxlKCkpLCR0PVBbR3RdJiZQW0d0XVtEdF0pLHR5cGVvZiAkdD4idSJ8fCEkdC5sZW5ndGh8fCEkdFswXSl7dmFyIGJ0PSIiO3d0PVtdO2ZvcihqdCBpbiBQW0d0XSl0aGlzLnRlcm1pbmFsc19banRdJiZqdD5MdCYmd3QucHVzaCgiJyIrdGhpcy50ZXJtaW5hbHNfW2p0XSsiJyIpO3B0LnNob3dQb3NpdGlvbj9idD0iUGFyc2UgZXJyb3Igb24gbGluZSAiKyhhdCsxKStgOgpgK3B0LnNob3dQb3NpdGlvbigpK2AKRXhwZWN0aW5nIGArd3Quam9pbigiLCAiKSsiLCBnb3QgJyIrKHRoaXMudGVybWluYWxzX1tEdF18fER0KSsiJyI6YnQ9IlBhcnNlIGVycm9yIG9uIGxpbmUgIisoYXQrMSkrIjogVW5leHBlY3RlZCAiKyhEdD09UnQ/ImVuZCBvZiBpbnB1dCI6IiciKyh0aGlzLnRlcm1pbmFsc19bRHRdfHxEdCkrIiciKSx0aGlzLnBhcnNlRXJyb3IoYnQse3RleHQ6cHQubWF0Y2gsdG9rZW46dGhpcy50ZXJtaW5hbHNfW0R0XXx8RHQsbGluZTpwdC55eWxpbmVubyxsb2M6VHQsZXhwZWN0ZWQ6d3R9KX1pZigkdFswXWluc3RhbmNlb2YgQXJyYXkmJiR0Lmxlbmd0aD4xKXRocm93IG5ldyBFcnJvcigiUGFyc2UgRXJyb3I6IG11bHRpcGxlIGFjdGlvbnMgcG9zc2libGUgYXQgc3RhdGU6ICIrR3QrIiwgdG9rZW46ICIrRHQpO3N3aXRjaCgkdFswXSl7Y2FzZSAxOnEucHVzaChEdCksRi5wdXNoKHB0Lnl5dGV4dCksai5wdXNoKHB0Lnl5bGxvYykscS5wdXNoKCR0WzFdKSxEdD1udWxsLEl0PXB0Lnl5bGVuZyxldD1wdC55eXRleHQsYXQ9cHQueXlsaW5lbm8sVHQ9cHQueXlsbG9jO2JyZWFrO2Nhc2UgMjppZihGdD10aGlzLnByb2R1Y3Rpb25zX1skdFsxXV1bMV0sd2UuJD1GW0YubGVuZ3RoLUZ0XSx3ZS5fJD17Zmlyc3RfbGluZTpqW2oubGVuZ3RoLShGdHx8MSldLmZpcnN0X2xpbmUsbGFzdF9saW5lOmpbai5sZW5ndGgtMV0ubGFzdF9saW5lLGZpcnN0X2NvbHVtbjpqW2oubGVuZ3RoLShGdHx8MSldLmZpcnN0X2NvbHVtbixsYXN0X2NvbHVtbjpqW2oubGVuZ3RoLTFdLmxhc3RfY29sdW1ufSxmdCYmKHdlLl8kLnJhbmdlPVtqW2oubGVuZ3RoLShGdHx8MSldLnJhbmdlWzBdLGpbai5sZW5ndGgtMV0ucmFuZ2VbMV1dKSxRdD10aGlzLnBlcmZvcm1BY3Rpb24uYXBwbHkod2UsW2V0LEl0LGF0LG10Lnl5LCR0WzFdLEYsal0uY29uY2F0KEN0KSksdHlwZW9mIFF0PCJ1IilyZXR1cm4gUXQ7RnQmJihxPXEuc2xpY2UoMCwtMSpGdCoyKSxGPUYuc2xpY2UoMCwtMSpGdCksaj1qLnNsaWNlKDAsLTEqRnQpKSxxLnB1c2godGhpcy5wcm9kdWN0aW9uc19bJHRbMV1dWzBdKSxGLnB1c2god2UuJCksai5wdXNoKHdlLl8kKSx6dD1QW3FbcS5sZW5ndGgtMl1dW3FbcS5sZW5ndGgtMV1dLHEucHVzaCh6dCk7YnJlYWs7Y2FzZSAzOnJldHVybiEwfX1yZXR1cm4hMH19LEs9ZnVuY3Rpb24oKXt2YXIgWj17RU9GOjEscGFyc2VFcnJvcjpmdW5jdGlvbihRLHEpe2lmKHRoaXMueXkucGFyc2VyKXRoaXMueXkucGFyc2VyLnBhcnNlRXJyb3IoUSxxKTtlbHNlIHRocm93IG5ldyBFcnJvcihRKX0sc2V0SW5wdXQ6ZnVuY3Rpb24oVixRKXtyZXR1cm4gdGhpcy55eT1RfHx0aGlzLnl5fHx7fSx0aGlzLl9pbnB1dD1WLHRoaXMuX21vcmU9dGhpcy5fYmFja3RyYWNrPXRoaXMuZG9uZT0hMSx0aGlzLnl5bGluZW5vPXRoaXMueXlsZW5nPTAsdGhpcy55eXRleHQ9dGhpcy5tYXRjaGVkPXRoaXMubWF0Y2g9IiIsdGhpcy5jb25kaXRpb25TdGFjaz1bIklOSVRJQUwiXSx0aGlzLnl5bGxvYz17Zmlyc3RfbGluZToxLGZpcnN0X2NvbHVtbjowLGxhc3RfbGluZToxLGxhc3RfY29sdW1uOjB9LHRoaXMub3B0aW9ucy5yYW5nZXMmJih0aGlzLnl5bGxvYy5yYW5nZT1bMCwwXSksdGhpcy5vZmZzZXQ9MCx0aGlzfSxpbnB1dDpmdW5jdGlvbigpe3ZhciBWPXRoaXMuX2lucHV0WzBdO3RoaXMueXl0ZXh0Kz1WLHRoaXMueXlsZW5nKyssdGhpcy5vZmZzZXQrKyx0aGlzLm1hdGNoKz1WLHRoaXMubWF0Y2hlZCs9Vjt2YXIgUT1WLm1hdGNoKC8oPzpcclxuP3xcbikuKi9nKTtyZXR1cm4gUT8odGhpcy55eWxpbmVubysrLHRoaXMueXlsbG9jLmxhc3RfbGluZSsrKTp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbisrLHRoaXMub3B0aW9ucy5yYW5nZXMmJnRoaXMueXlsbG9jLnJhbmdlWzFdKyssdGhpcy5faW5wdXQ9dGhpcy5faW5wdXQuc2xpY2UoMSksVn0sdW5wdXQ6ZnVuY3Rpb24oVil7dmFyIFE9Vi5sZW5ndGgscT1WLnNwbGl0KC8oPzpcclxuP3xcbikvZyk7dGhpcy5faW5wdXQ9Vit0aGlzLl9pbnB1dCx0aGlzLnl5dGV4dD10aGlzLnl5dGV4dC5zdWJzdHIoMCx0aGlzLnl5dGV4dC5sZW5ndGgtUSksdGhpcy5vZmZzZXQtPVE7dmFyIFU9dGhpcy5tYXRjaC5zcGxpdCgvKD86XHJcbj98XG4pL2cpO3RoaXMubWF0Y2g9dGhpcy5tYXRjaC5zdWJzdHIoMCx0aGlzLm1hdGNoLmxlbmd0aC0xKSx0aGlzLm1hdGNoZWQ9dGhpcy5tYXRjaGVkLnN1YnN0cigwLHRoaXMubWF0Y2hlZC5sZW5ndGgtMSkscS5sZW5ndGgtMSYmKHRoaXMueXlsaW5lbm8tPXEubGVuZ3RoLTEpO3ZhciBGPXRoaXMueXlsbG9jLnJhbmdlO3JldHVybiB0aGlzLnl5bGxvYz17Zmlyc3RfbGluZTp0aGlzLnl5bGxvYy5maXJzdF9saW5lLGxhc3RfbGluZTp0aGlzLnl5bGluZW5vKzEsZmlyc3RfY29sdW1uOnRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbixsYXN0X2NvbHVtbjpxPyhxLmxlbmd0aD09PVUubGVuZ3RoP3RoaXMueXlsbG9jLmZpcnN0X2NvbHVtbjowKStVW1UubGVuZ3RoLXEubGVuZ3RoXS5sZW5ndGgtcVswXS5sZW5ndGg6dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLVF9LHRoaXMub3B0aW9ucy5yYW5nZXMmJih0aGlzLnl5bGxvYy5yYW5nZT1bRlswXSxGWzBdK3RoaXMueXlsZW5nLVFdKSx0aGlzLnl5bGVuZz10aGlzLnl5dGV4dC5sZW5ndGgsdGhpc30sbW9yZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tb3JlPSEwLHRoaXN9LHJlamVjdDpmdW5jdGlvbigpe2lmKHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIpdGhpcy5fYmFja3RyYWNrPSEwO2Vsc2UgcmV0dXJuIHRoaXMucGFyc2VFcnJvcigiTGV4aWNhbCBlcnJvciBvbiBsaW5lICIrKHRoaXMueXlsaW5lbm8rMSkrYC4gWW91IGNhbiBvbmx5IGludm9rZSByZWplY3QoKSBpbiB0aGUgbGV4ZXIgd2hlbiB0aGUgbGV4ZXIgaXMgb2YgdGhlIGJhY2t0cmFja2luZyBwZXJzdWFzaW9uIChvcHRpb25zLmJhY2t0cmFja19sZXhlciA9IHRydWUpLgpgK3RoaXMuc2hvd1Bvc2l0aW9uKCkse3RleHQ6IiIsdG9rZW46bnVsbCxsaW5lOnRoaXMueXlsaW5lbm99KTtyZXR1cm4gdGhpc30sbGVzczpmdW5jdGlvbihWKXt0aGlzLnVucHV0KHRoaXMubWF0Y2guc2xpY2UoVikpfSxwYXN0SW5wdXQ6ZnVuY3Rpb24oKXt2YXIgVj10aGlzLm1hdGNoZWQuc3Vic3RyKDAsdGhpcy5tYXRjaGVkLmxlbmd0aC10aGlzLm1hdGNoLmxlbmd0aCk7cmV0dXJuKFYubGVuZ3RoPjIwPyIuLi4iOiIiKStWLnN1YnN0cigtMjApLnJlcGxhY2UoL1xuL2csIiIpfSx1cGNvbWluZ0lucHV0OmZ1bmN0aW9uKCl7dmFyIFY9dGhpcy5tYXRjaDtyZXR1cm4gVi5sZW5ndGg8MjAmJihWKz10aGlzLl9pbnB1dC5zdWJzdHIoMCwyMC1WLmxlbmd0aCkpLChWLnN1YnN0cigwLDIwKSsoVi5sZW5ndGg+MjA/Ii4uLiI6IiIpKS5yZXBsYWNlKC9cbi9nLCIiKX0sc2hvd1Bvc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIFY9dGhpcy5wYXN0SW5wdXQoKSxRPW5ldyBBcnJheShWLmxlbmd0aCsxKS5qb2luKCItIik7cmV0dXJuIFYrdGhpcy51cGNvbWluZ0lucHV0KCkrYApgK1ErIl4ifSx0ZXN0X21hdGNoOmZ1bmN0aW9uKFYsUSl7dmFyIHEsVSxGO2lmKHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXImJihGPXt5eWxpbmVubzp0aGlzLnl5bGluZW5vLHl5bGxvYzp7Zmlyc3RfbGluZTp0aGlzLnl5bGxvYy5maXJzdF9saW5lLGxhc3RfbGluZTp0aGlzLmxhc3RfbGluZSxmaXJzdF9jb2x1bW46dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLGxhc3RfY29sdW1uOnRoaXMueXlsbG9jLmxhc3RfY29sdW1ufSx5eXRleHQ6dGhpcy55eXRleHQsbWF0Y2g6dGhpcy5tYXRjaCxtYXRjaGVzOnRoaXMubWF0Y2hlcyxtYXRjaGVkOnRoaXMubWF0Y2hlZCx5eWxlbmc6dGhpcy55eWxlbmcsb2Zmc2V0OnRoaXMub2Zmc2V0LF9tb3JlOnRoaXMuX21vcmUsX2lucHV0OnRoaXMuX2lucHV0LHl5OnRoaXMueXksY29uZGl0aW9uU3RhY2s6dGhpcy5jb25kaXRpb25TdGFjay5zbGljZSgwKSxkb25lOnRoaXMuZG9uZX0sdGhpcy5vcHRpb25zLnJhbmdlcyYmKEYueXlsbG9jLnJhbmdlPXRoaXMueXlsbG9jLnJhbmdlLnNsaWNlKDApKSksVT1WWzBdLm1hdGNoKC8oPzpcclxuP3xcbikuKi9nKSxVJiYodGhpcy55eWxpbmVubys9VS5sZW5ndGgpLHRoaXMueXlsbG9jPXtmaXJzdF9saW5lOnRoaXMueXlsbG9jLmxhc3RfbGluZSxsYXN0X2xpbmU6dGhpcy55eWxpbmVubysxLGZpcnN0X2NvbHVtbjp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbixsYXN0X2NvbHVtbjpVP1VbVS5sZW5ndGgtMV0ubGVuZ3RoLVVbVS5sZW5ndGgtMV0ubWF0Y2goL1xyP1xuPy8pWzBdLmxlbmd0aDp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbitWWzBdLmxlbmd0aH0sdGhpcy55eXRleHQrPVZbMF0sdGhpcy5tYXRjaCs9VlswXSx0aGlzLm1hdGNoZXM9Vix0aGlzLnl5bGVuZz10aGlzLnl5dGV4dC5sZW5ndGgsdGhpcy5vcHRpb25zLnJhbmdlcyYmKHRoaXMueXlsbG9jLnJhbmdlPVt0aGlzLm9mZnNldCx0aGlzLm9mZnNldCs9dGhpcy55eWxlbmddKSx0aGlzLl9tb3JlPSExLHRoaXMuX2JhY2t0cmFjaz0hMSx0aGlzLl9pbnB1dD10aGlzLl9pbnB1dC5zbGljZShWWzBdLmxlbmd0aCksdGhpcy5tYXRjaGVkKz1WWzBdLHE9dGhpcy5wZXJmb3JtQWN0aW9uLmNhbGwodGhpcyx0aGlzLnl5LHRoaXMsUSx0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTFdKSx0aGlzLmRvbmUmJnRoaXMuX2lucHV0JiYodGhpcy5kb25lPSExKSxxKXJldHVybiBxO2lmKHRoaXMuX2JhY2t0cmFjayl7Zm9yKHZhciBqIGluIEYpdGhpc1tqXT1GW2pdO3JldHVybiExfXJldHVybiExfSxuZXh0OmZ1bmN0aW9uKCl7aWYodGhpcy5kb25lKXJldHVybiB0aGlzLkVPRjt0aGlzLl9pbnB1dHx8KHRoaXMuZG9uZT0hMCk7dmFyIFYsUSxxLFU7dGhpcy5fbW9yZXx8KHRoaXMueXl0ZXh0PSIiLHRoaXMubWF0Y2g9IiIpO2Zvcih2YXIgRj10aGlzLl9jdXJyZW50UnVsZXMoKSxqPTA7ajxGLmxlbmd0aDtqKyspaWYocT10aGlzLl9pbnB1dC5tYXRjaCh0aGlzLnJ1bGVzW0Zbal1dKSxxJiYoIVF8fHFbMF0ubGVuZ3RoPlFbMF0ubGVuZ3RoKSl7aWYoUT1xLFU9aix0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyKXtpZihWPXRoaXMudGVzdF9tYXRjaChxLEZbal0pLFYhPT0hMSlyZXR1cm4gVjtpZih0aGlzLl9iYWNrdHJhY2spe1E9ITE7Y29udGludWV9ZWxzZSByZXR1cm4hMX1lbHNlIGlmKCF0aGlzLm9wdGlvbnMuZmxleClicmVha31yZXR1cm4gUT8oVj10aGlzLnRlc3RfbWF0Y2goUSxGW1VdKSxWIT09ITE/VjohMSk6dGhpcy5faW5wdXQ9PT0iIj90aGlzLkVPRjp0aGlzLnBhcnNlRXJyb3IoIkxleGljYWwgZXJyb3Igb24gbGluZSAiKyh0aGlzLnl5bGluZW5vKzEpK2AuIFVucmVjb2duaXplZCB0ZXh0LgpgK3RoaXMuc2hvd1Bvc2l0aW9uKCkse3RleHQ6IiIsdG9rZW46bnVsbCxsaW5lOnRoaXMueXlsaW5lbm99KX0sbGV4OmZ1bmN0aW9uKCl7dmFyIFE9dGhpcy5uZXh0KCk7cmV0dXJuIFF8fHRoaXMubGV4KCl9LGJlZ2luOmZ1bmN0aW9uKFEpe3RoaXMuY29uZGl0aW9uU3RhY2sucHVzaChRKX0scG9wU3RhdGU6ZnVuY3Rpb24oKXt2YXIgUT10aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xO3JldHVybiBRPjA/dGhpcy5jb25kaXRpb25TdGFjay5wb3AoKTp0aGlzLmNvbmRpdGlvblN0YWNrWzBdfSxfY3VycmVudFJ1bGVzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoJiZ0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTFdP3RoaXMuY29uZGl0aW9uc1t0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTFdXS5ydWxlczp0aGlzLmNvbmRpdGlvbnMuSU5JVElBTC5ydWxlc30sdG9wU3RhdGU6ZnVuY3Rpb24oUSl7cmV0dXJuIFE9dGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMS1NYXRoLmFicyhRfHwwKSxRPj0wP3RoaXMuY29uZGl0aW9uU3RhY2tbUV06IklOSVRJQUwifSxwdXNoU3RhdGU6ZnVuY3Rpb24oUSl7dGhpcy5iZWdpbihRKX0sc3RhdGVTdGFja1NpemU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGh9LG9wdGlvbnM6e30scGVyZm9ybUFjdGlvbjpmdW5jdGlvbihRLHEsVSxGKXtzd2l0Y2goVSl7Y2FzZSAwOnJldHVybiB0aGlzLmJlZ2luKCJvcGVuX2RpcmVjdGl2ZSIpLDE5O2Nhc2UgMTpyZXR1cm4gODtjYXNlIDI6cmV0dXJuIDk7Y2FzZSAzOnJldHVybiAxMDtjYXNlIDQ6cmV0dXJuIDExO2Nhc2UgNTpyZXR1cm4gdGhpcy5iZWdpbigidHlwZV9kaXJlY3RpdmUiKSwyMDtjYXNlIDY6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSx0aGlzLmJlZ2luKCJhcmdfZGlyZWN0aXZlIiksMTc7Y2FzZSA3OnJldHVybiB0aGlzLnBvcFN0YXRlKCksdGhpcy5wb3BTdGF0ZSgpLDIyO2Nhc2UgODpyZXR1cm4gMjE7Y2FzZSA5OmJyZWFrO2Nhc2UgMTA6YnJlYWs7Y2FzZSAxMTpyZXR1cm4gdGhpcy5iZWdpbigiYWNjX3RpdGxlIiksMzg7Y2FzZSAxMjpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLCJhY2NfdGl0bGVfdmFsdWUiO2Nhc2UgMTM6cmV0dXJuIHRoaXMuYmVnaW4oImFjY19kZXNjciIpLDQwO2Nhc2UgMTQ6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSwiYWNjX2Rlc2NyX3ZhbHVlIjtjYXNlIDE1OnRoaXMuYmVnaW4oImFjY19kZXNjcl9tdWx0aWxpbmUiKTticmVhaztjYXNlIDE2OnRoaXMucG9wU3RhdGUoKTticmVhaztjYXNlIDE3OnJldHVybiJhY2NfZGVzY3JfbXVsdGlsaW5lX3ZhbHVlIjtjYXNlIDE4OnJldHVybiAxNjtjYXNlIDE5OmJyZWFrO2Nhc2UgMjA6cmV0dXJuIDIzO2Nhc2UgMjE6cmV0dXJuIDIzO2Nhc2UgMjI6cmV0dXJuIHRoaXMuYmVnaW4oInN0cnVjdCIpLDQ1O2Nhc2UgMjM6cmV0dXJuIkVER0VfU1RBVEUiO2Nhc2UgMjQ6cmV0dXJuIkVPRl9JTl9TVFJVQ1QiO2Nhc2UgMjU6cmV0dXJuIk9QRU5fSU5fU1RSVUNUIjtjYXNlIDI2OnJldHVybiB0aGlzLnBvcFN0YXRlKCksNDc7Y2FzZSAyNzpicmVhaztjYXNlIDI4OnJldHVybiJNRU1CRVIiO2Nhc2UgMjk6cmV0dXJuIDQzO2Nhc2UgMzA6cmV0dXJuIDcwO2Nhc2UgMzE6cmV0dXJuIDYzO2Nhc2UgMzI6cmV0dXJuIDY0O2Nhc2UgMzM6cmV0dXJuIDY2O2Nhc2UgMzQ6cmV0dXJuIDQ4O2Nhc2UgMzU6cmV0dXJuIDQ5O2Nhc2UgMzY6dGhpcy5iZWdpbigiZ2VuZXJpYyIpO2JyZWFrO2Nhc2UgMzc6dGhpcy5wb3BTdGF0ZSgpO2JyZWFrO2Nhc2UgMzg6cmV0dXJuIkdFTkVSSUNUWVBFIjtjYXNlIDM5OnRoaXMuYmVnaW4oInN0cmluZyIpO2JyZWFrO2Nhc2UgNDA6dGhpcy5wb3BTdGF0ZSgpO2JyZWFrO2Nhc2UgNDE6cmV0dXJuIlNUUiI7Y2FzZSA0Mjp0aGlzLmJlZ2luKCJicXN0cmluZyIpO2JyZWFrO2Nhc2UgNDM6dGhpcy5wb3BTdGF0ZSgpO2JyZWFrO2Nhc2UgNDQ6cmV0dXJuIkJRVU9URV9TVFIiO2Nhc2UgNDU6dGhpcy5iZWdpbigiaHJlZiIpO2JyZWFrO2Nhc2UgNDY6dGhpcy5wb3BTdGF0ZSgpO2JyZWFrO2Nhc2UgNDc6cmV0dXJuIDY5O2Nhc2UgNDg6dGhpcy5iZWdpbigiY2FsbGJhY2tfbmFtZSIpO2JyZWFrO2Nhc2UgNDk6dGhpcy5wb3BTdGF0ZSgpO2JyZWFrO2Nhc2UgNTA6dGhpcy5wb3BTdGF0ZSgpLHRoaXMuYmVnaW4oImNhbGxiYWNrX2FyZ3MiKTticmVhaztjYXNlIDUxOnJldHVybiA2NztjYXNlIDUyOnRoaXMucG9wU3RhdGUoKTticmVhaztjYXNlIDUzOnJldHVybiA2ODtjYXNlIDU0OnJldHVybiA2NTtjYXNlIDU1OnJldHVybiA2NTtjYXNlIDU2OnJldHVybiA2NTtjYXNlIDU3OnJldHVybiA2NTtjYXNlIDU4OnJldHVybiA1NztjYXNlIDU5OnJldHVybiA1NztjYXNlIDYwOnJldHVybiA1OTtjYXNlIDYxOnJldHVybiA1OTtjYXNlIDYyOnJldHVybiA1ODtjYXNlIDYzOnJldHVybiA1NjtjYXNlIDY0OnJldHVybiA2MDtjYXNlIDY1OnJldHVybiA2MTtjYXNlIDY2OnJldHVybiA2MjtjYXNlIDY3OnJldHVybiAzMjtjYXNlIDY4OnJldHVybiA0NDtjYXNlIDY5OnJldHVybiA4MjtjYXNlIDcwOnJldHVybiJET1QiO2Nhc2UgNzE6cmV0dXJuIlBMVVMiO2Nhc2UgNzI6cmV0dXJuIDc5O2Nhc2UgNzM6cmV0dXJuIkVRVUFMUyI7Y2FzZSA3NDpyZXR1cm4iRVFVQUxTIjtjYXNlIDc1OnJldHVybiA4NjtjYXNlIDc2OnJldHVybiJQVU5DVFVBVElPTiI7Y2FzZSA3NzpyZXR1cm4gODU7Y2FzZSA3ODpyZXR1cm4gODQ7Y2FzZSA3OTpyZXR1cm4gODE7Y2FzZSA4MDpyZXR1cm4gMjV9fSxydWxlczpbL14oPzolJVx7KS8sL14oPzouKmRpcmVjdGlvblxzK1RCW15cbl0qKS8sL14oPzouKmRpcmVjdGlvblxzK0JUW15cbl0qKS8sL14oPzouKmRpcmVjdGlvblxzK1JMW15cbl0qKS8sL14oPzouKmRpcmVjdGlvblxzK0xSW15cbl0qKS8sL14oPzooKD86KD8hXH0lJSlbXjouXSkqKSkvLC9eKD86OikvLC9eKD86XH0lJSkvLC9eKD86KCg/Oig/IVx9JSUpLnxcbikqKSkvLC9eKD86JSUoPyFceykqW15cbl0qKFxyP1xuPykrKS8sL14oPzolJVteXG5dKihccj9cbikqKS8sL14oPzphY2NUaXRsZVxzKjpccyopLywvXig/Oig/IVxufHwpKlteXG5dKikvLC9eKD86YWNjRGVzY3Jccyo6XHMqKS8sL14oPzooPyFcbnx8KSpbXlxuXSopLywvXig/OmFjY0Rlc2NyXHMqXHtccyopLywvXig/OltcfV0pLywvXig/OlteXH1dKikvLC9eKD86XHMqKFxyP1xuKSspLywvXig/OlxzKykvLC9eKD86Y2xhc3NEaWFncmFtLXYyXGIpLywvXig/OmNsYXNzRGlhZ3JhbVxiKS8sL14oPzpbe10pLywvXig/OlxbXCpcXSkvLC9eKD86JCkvLC9eKD86W3tdKS8sL14oPzpbfV0pLywvXig/Oltcbl0pLywvXig/Oltee31cbl0qKS8sL14oPzpjbGFzc1xiKS8sL14oPzpjc3NDbGFzc1xiKS8sL14oPzpjYWxsYmFja1xiKS8sL14oPzpsaW5rXGIpLywvXig/OmNsaWNrXGIpLywvXig/Ojw8KS8sL14oPzo+PikvLC9eKD86W35dKS8sL14oPzpbfl0pLywvXig/Oltefl0qKS8sL14oPzpbIl0pLywvXig/OlsiXSkvLC9eKD86W14iXSopLywvXig/OltgXSkvLC9eKD86W2BdKS8sL14oPzpbXmBdKykvLC9eKD86aHJlZltcc10rWyJdKS8sL14oPzpbIl0pLywvXig/OlteIl0qKS8sL14oPzpjYWxsW1xzXSspLywvXig/OlwoW1xzXSpcKSkvLC9eKD86XCgpLywvXig/OlteKF0qKS8sL14oPzpcKSkvLC9eKD86W14pXSopLywvXig/Ol9zZWxmXGIpLywvXig/Ol9ibGFua1xiKS8sL14oPzpfcGFyZW50XGIpLywvXig/Ol90b3BcYikvLC9eKD86XHMqPFx8KS8sL14oPzpccypcfD4pLywvXig/OlxzKj4pLywvXig/OlxzKjwpLywvXig/OlxzKlwqKS8sL14oPzpccypvXGIpLywvXig/OlxzKlwoXCkpLywvXig/Oi0tKS8sL14oPzpcLlwuKS8sL14oPzo6ezF9W146XG47XSspLywvXig/Ojp7M30pLywvXig/Oi0pLywvXig/OlwuKS8sL14oPzpcKykvLC9eKD86JSkvLC9eKD86PSkvLC9eKD86PSkvLC9eKD86XHcrKS8sL14oPzpbISIjJCUmJyorLC0uYD9cXC9dKS8sL14oPzpbMC05XSspLywvXig/OltcdTAwQUFcdTAwQjVcdTAwQkFcdTAwQzAtXHUwMEQ2XHUwMEQ4LVx1MDBGNl18W1x1MDBGOC1cdTAyQzFcdTAyQzYtXHUwMkQxXHUwMkUwLVx1MDJFNFx1MDJFQ1x1MDJFRVx1MDM3MC1cdTAzNzRcdTAzNzZcdTAzNzddfFtcdTAzN0EtXHUwMzdEXHUwMzg2XHUwMzg4LVx1MDM4QVx1MDM4Q1x1MDM4RS1cdTAzQTFcdTAzQTMtXHUwM0Y1XXxbXHUwM0Y3LVx1MDQ4MVx1MDQ4QS1cdTA1MjdcdTA1MzEtXHUwNTU2XHUwNTU5XHUwNTYxLVx1MDU4N1x1MDVEMC1cdTA1RUFdfFtcdTA1RjAtXHUwNUYyXHUwNjIwLVx1MDY0QVx1MDY2RVx1MDY2Rlx1MDY3MS1cdTA2RDNcdTA2RDVcdTA2RTVcdTA2RTZcdTA2RUVdfFtcdTA2RUZcdTA2RkEtXHUwNkZDXHUwNkZGXHUwNzEwXHUwNzEyLVx1MDcyRlx1MDc0RC1cdTA3QTVcdTA3QjFcdTA3Q0EtXHUwN0VBXXxbXHUwN0Y0XHUwN0Y1XHUwN0ZBXHUwODAwLVx1MDgxNVx1MDgxQVx1MDgyNFx1MDgyOFx1MDg0MC1cdTA4NThcdTA4QTBdfFtcdTA4QTItXHUwOEFDXHUwOTA0LVx1MDkzOVx1MDkzRFx1MDk1MFx1MDk1OC1cdTA5NjFcdTA5NzEtXHUwOTc3XXxbXHUwOTc5LVx1MDk3Rlx1MDk4NS1cdTA5OENcdTA5OEZcdTA5OTBcdTA5OTMtXHUwOUE4XHUwOUFBLVx1MDlCMFx1MDlCMl18W1x1MDlCNi1cdTA5QjlcdTA5QkRcdTA5Q0VcdTA5RENcdTA5RERcdTA5REYtXHUwOUUxXHUwOUYwXHUwOUYxXHUwQTA1LVx1MEEwQV18W1x1MEEwRlx1MEExMFx1MEExMy1cdTBBMjhcdTBBMkEtXHUwQTMwXHUwQTMyXHUwQTMzXHUwQTM1XHUwQTM2XHUwQTM4XHUwQTM5XXxbXHUwQTU5LVx1MEE1Q1x1MEE1RVx1MEE3Mi1cdTBBNzRcdTBBODUtXHUwQThEXHUwQThGLVx1MEE5MVx1MEE5My1cdTBBQThdfFtcdTBBQUEtXHUwQUIwXHUwQUIyXHUwQUIzXHUwQUI1LVx1MEFCOVx1MEFCRFx1MEFEMFx1MEFFMFx1MEFFMVx1MEIwNS1cdTBCMENdfFtcdTBCMEZcdTBCMTBcdTBCMTMtXHUwQjI4XHUwQjJBLVx1MEIzMFx1MEIzMlx1MEIzM1x1MEIzNS1cdTBCMzlcdTBCM0RcdTBCNUNdfFtcdTBCNURcdTBCNUYtXHUwQjYxXHUwQjcxXHUwQjgzXHUwQjg1LVx1MEI4QVx1MEI4RS1cdTBCOTBcdTBCOTItXHUwQjk1XHUwQjk5XXxbXHUwQjlBXHUwQjlDXHUwQjlFXHUwQjlGXHUwQkEzXHUwQkE0XHUwQkE4LVx1MEJBQVx1MEJBRS1cdTBCQjlcdTBCRDBdfFtcdTBDMDUtXHUwQzBDXHUwQzBFLVx1MEMxMFx1MEMxMi1cdTBDMjhcdTBDMkEtXHUwQzMzXHUwQzM1LVx1MEMzOVx1MEMzRF18W1x1MEM1OFx1MEM1OVx1MEM2MFx1MEM2MVx1MEM4NS1cdTBDOENcdTBDOEUtXHUwQzkwXHUwQzkyLVx1MENBOFx1MENBQS1cdTBDQjNdfFtcdTBDQjUtXHUwQ0I5XHUwQ0JEXHUwQ0RFXHUwQ0UwXHUwQ0UxXHUwQ0YxXHUwQ0YyXHUwRDA1LVx1MEQwQ1x1MEQwRS1cdTBEMTBdfFtcdTBEMTItXHUwRDNBXHUwRDNEXHUwRDRFXHUwRDYwXHUwRDYxXHUwRDdBLVx1MEQ3Rlx1MEQ4NS1cdTBEOTZcdTBEOUEtXHUwREIxXXxbXHUwREIzLVx1MERCQlx1MERCRFx1MERDMC1cdTBEQzZcdTBFMDEtXHUwRTMwXHUwRTMyXHUwRTMzXHUwRTQwLVx1MEU0Nlx1MEU4MV18W1x1MEU4Mlx1MEU4NFx1MEU4N1x1MEU4OFx1MEU4QVx1MEU4RFx1MEU5NC1cdTBFOTdcdTBFOTktXHUwRTlGXHUwRUExLVx1MEVBM118W1x1MEVBNVx1MEVBN1x1MEVBQVx1MEVBQlx1MEVBRC1cdTBFQjBcdTBFQjJcdTBFQjNcdTBFQkRcdTBFQzAtXHUwRUM0XHUwRUM2XXxbXHUwRURDLVx1MEVERlx1MEYwMFx1MEY0MC1cdTBGNDdcdTBGNDktXHUwRjZDXHUwRjg4LVx1MEY4Q1x1MTAwMC1cdTEwMkFdfFtcdTEwM0ZcdTEwNTAtXHUxMDU1XHUxMDVBLVx1MTA1RFx1MTA2MVx1MTA2NVx1MTA2Nlx1MTA2RS1cdTEwNzBcdTEwNzUtXHUxMDgxXXxbXHUxMDhFXHUxMEEwLVx1MTBDNVx1MTBDN1x1MTBDRFx1MTBEMC1cdTEwRkFcdTEwRkMtXHUxMjQ4XHUxMjRBLVx1MTI0RF18W1x1MTI1MC1cdTEyNTZcdTEyNThcdTEyNUEtXHUxMjVEXHUxMjYwLVx1MTI4OFx1MTI4QS1cdTEyOERcdTEyOTAtXHUxMkIwXXxbXHUxMkIyLVx1MTJCNVx1MTJCOC1cdTEyQkVcdTEyQzBcdTEyQzItXHUxMkM1XHUxMkM4LVx1MTJENlx1MTJEOC1cdTEzMTBdfFtcdTEzMTItXHUxMzE1XHUxMzE4LVx1MTM1QVx1MTM4MC1cdTEzOEZcdTEzQTAtXHUxM0Y0XHUxNDAxLVx1MTY2Q118W1x1MTY2Ri1cdTE2N0ZcdTE2ODEtXHUxNjlBXHUxNkEwLVx1MTZFQVx1MTcwMC1cdTE3MENcdTE3MEUtXHUxNzExXXxbXHUxNzIwLVx1MTczMVx1MTc0MC1cdTE3NTFcdTE3NjAtXHUxNzZDXHUxNzZFLVx1MTc3MFx1MTc4MC1cdTE3QjNcdTE3RDddfFtcdTE3RENcdTE4MjAtXHUxODc3XHUxODgwLVx1MThBOFx1MThBQVx1MThCMC1cdTE4RjVcdTE5MDAtXHUxOTFDXXxbXHUxOTUwLVx1MTk2RFx1MTk3MC1cdTE5NzRcdTE5ODAtXHUxOUFCXHUxOUMxLVx1MTlDN1x1MUEwMC1cdTFBMTZdfFtcdTFBMjAtXHUxQTU0XHUxQUE3XHUxQjA1LVx1MUIzM1x1MUI0NS1cdTFCNEJcdTFCODMtXHUxQkEwXHUxQkFFXHUxQkFGXXxbXHUxQkJBLVx1MUJFNVx1MUMwMC1cdTFDMjNcdTFDNEQtXHUxQzRGXHUxQzVBLVx1MUM3RFx1MUNFOS1cdTFDRUNdfFtcdTFDRUUtXHUxQ0YxXHUxQ0Y1XHUxQ0Y2XHUxRDAwLVx1MURCRlx1MUUwMC1cdTFGMTVcdTFGMTgtXHUxRjFEXXxbXHUxRjIwLVx1MUY0NVx1MUY0OC1cdTFGNERcdTFGNTAtXHUxRjU3XHUxRjU5XHUxRjVCXHUxRjVEXHUxRjVGLVx1MUY3RF18W1x1MUY4MC1cdTFGQjRcdTFGQjYtXHUxRkJDXHUxRkJFXHUxRkMyLVx1MUZDNFx1MUZDNi1cdTFGQ0NcdTFGRDAtXHUxRkQzXXxbXHUxRkQ2LVx1MUZEQlx1MUZFMC1cdTFGRUNcdTFGRjItXHUxRkY0XHUxRkY2LVx1MUZGQ1x1MjA3MVx1MjA3Rl18W1x1MjA5MC1cdTIwOUNcdTIxMDJcdTIxMDdcdTIxMEEtXHUyMTEzXHUyMTE1XHUyMTE5LVx1MjExRFx1MjEyNFx1MjEyNlx1MjEyOF18W1x1MjEyQS1cdTIxMkRcdTIxMkYtXHUyMTM5XHUyMTNDLVx1MjEzRlx1MjE0NS1cdTIxNDlcdTIxNEVcdTIxODNcdTIxODRdfFtcdTJDMDAtXHUyQzJFXHUyQzMwLVx1MkM1RVx1MkM2MC1cdTJDRTRcdTJDRUItXHUyQ0VFXHUyQ0YyXHUyQ0YzXXxbXHUyRDAwLVx1MkQyNVx1MkQyN1x1MkQyRFx1MkQzMC1cdTJENjdcdTJENkZcdTJEODAtXHUyRDk2XHUyREEwLVx1MkRBNl18W1x1MkRBOC1cdTJEQUVcdTJEQjAtXHUyREI2XHUyREI4LVx1MkRCRVx1MkRDMC1cdTJEQzZcdTJEQzgtXHUyRENFXXxbXHUyREQwLVx1MkRENlx1MkREOC1cdTJEREVcdTJFMkZcdTMwMDVcdTMwMDZcdTMwMzEtXHUzMDM1XHUzMDNCXHUzMDNDXXxbXHUzMDQxLVx1MzA5Nlx1MzA5RC1cdTMwOUZcdTMwQTEtXHUzMEZBXHUzMEZDLVx1MzBGRlx1MzEwNS1cdTMxMkRdfFtcdTMxMzEtXHUzMThFXHUzMUEwLVx1MzFCQVx1MzFGMC1cdTMxRkZcdTM0MDAtXHU0REI1XHU0RTAwLVx1OUZDQ118W1x1QTAwMC1cdUE0OENcdUE0RDAtXHVBNEZEXHVBNTAwLVx1QTYwQ1x1QTYxMC1cdUE2MUZcdUE2MkFcdUE2MkJdfFtcdUE2NDAtXHVBNjZFXHVBNjdGLVx1QTY5N1x1QTZBMC1cdUE2RTVcdUE3MTctXHVBNzFGXHVBNzIyLVx1QTc4OF18W1x1QTc4Qi1cdUE3OEVcdUE3OTAtXHVBNzkzXHVBN0EwLVx1QTdBQVx1QTdGOC1cdUE4MDFcdUE4MDMtXHVBODA1XXxbXHVBODA3LVx1QTgwQVx1QTgwQy1cdUE4MjJcdUE4NDAtXHVBODczXHVBODgyLVx1QThCM1x1QThGMi1cdUE4RjdcdUE4RkJdfFtcdUE5MEEtXHVBOTI1XHVBOTMwLVx1QTk0Nlx1QTk2MC1cdUE5N0NcdUE5ODQtXHVBOUIyXHVBOUNGXHVBQTAwLVx1QUEyOF18W1x1QUE0MC1cdUFBNDJcdUFBNDQtXHVBQTRCXHVBQTYwLVx1QUE3Nlx1QUE3QVx1QUE4MC1cdUFBQUZcdUFBQjFcdUFBQjVdfFtcdUFBQjZcdUFBQjktXHVBQUJEXHVBQUMwXHVBQUMyXHVBQURCLVx1QUFERFx1QUFFMC1cdUFBRUFcdUFBRjItXHVBQUY0XXxbXHVBQjAxLVx1QUIwNlx1QUIwOS1cdUFCMEVcdUFCMTEtXHVBQjE2XHVBQjIwLVx1QUIyNlx1QUIyOC1cdUFCMkVdfFtcdUFCQzAtXHVBQkUyXHVBQzAwLVx1RDdBM1x1RDdCMC1cdUQ3QzZcdUQ3Q0ItXHVEN0ZCXHVGOTAwLVx1RkE2RF18W1x1RkE3MC1cdUZBRDlcdUZCMDAtXHVGQjA2XHVGQjEzLVx1RkIxN1x1RkIxRFx1RkIxRi1cdUZCMjhcdUZCMkEtXHVGQjM2XXxbXHVGQjM4LVx1RkIzQ1x1RkIzRVx1RkI0MFx1RkI0MVx1RkI0M1x1RkI0NFx1RkI0Ni1cdUZCQjFcdUZCRDMtXHVGRDNEXXxbXHVGRDUwLVx1RkQ4Rlx1RkQ5Mi1cdUZEQzdcdUZERjAtXHVGREZCXHVGRTcwLVx1RkU3NFx1RkU3Ni1cdUZFRkNdfFtcdUZGMjEtXHVGRjNBXHVGRjQxLVx1RkY1QVx1RkY2Ni1cdUZGQkVcdUZGQzItXHVGRkM3XHVGRkNBLVx1RkZDRl18W1x1RkZEMi1cdUZGRDdcdUZGREEtXHVGRkRDXSkvLC9eKD86XHMpLywvXig/OiQpL10sY29uZGl0aW9uczp7YWNjX2Rlc2NyX211bHRpbGluZTp7cnVsZXM6WzE2LDE3XSxpbmNsdXNpdmU6ITF9LGFjY19kZXNjcjp7cnVsZXM6WzE0XSxpbmNsdXNpdmU6ITF9LGFjY190aXRsZTp7cnVsZXM6WzEyXSxpbmNsdXNpdmU6ITF9LGFyZ19kaXJlY3RpdmU6e3J1bGVzOls3LDhdLGluY2x1c2l2ZTohMX0sdHlwZV9kaXJlY3RpdmU6e3J1bGVzOls2LDddLGluY2x1c2l2ZTohMX0sb3Blbl9kaXJlY3RpdmU6e3J1bGVzOls1XSxpbmNsdXNpdmU6ITF9LGNhbGxiYWNrX2FyZ3M6e3J1bGVzOls1Miw1M10saW5jbHVzaXZlOiExfSxjYWxsYmFja19uYW1lOntydWxlczpbNDksNTAsNTFdLGluY2x1c2l2ZTohMX0saHJlZjp7cnVsZXM6WzQ2LDQ3XSxpbmNsdXNpdmU6ITF9LHN0cnVjdDp7cnVsZXM6WzIzLDI0LDI1LDI2LDI3LDI4XSxpbmNsdXNpdmU6ITF9LGdlbmVyaWM6e3J1bGVzOlszNywzOF0saW5jbHVzaXZlOiExfSxicXN0cmluZzp7cnVsZXM6WzQzLDQ0XSxpbmNsdXNpdmU6ITF9LHN0cmluZzp7cnVsZXM6WzQwLDQxXSxpbmNsdXNpdmU6ITF9LElOSVRJQUw6e3J1bGVzOlswLDEsMiwzLDQsOSwxMCwxMSwxMywxNSwxOCwxOSwyMCwyMSwyMiwyMywyOSwzMCwzMSwzMiwzMywzNCwzNSwzNiwzOSw0Miw0NSw0OCw1NCw1NSw1Niw1Nyw1OCw1OSw2MCw2MSw2Miw2Myw2NCw2NSw2Niw2Nyw2OCw2OSw3MCw3MSw3Miw3Myw3NCw3NSw3Niw3Nyw3OCw3OSw4MF0saW5jbHVzaXZlOiEwfX19O3JldHVybiBafSgpO3R0LmxleGVyPUs7ZnVuY3Rpb24gaXQoKXt0aGlzLnl5PXt9fXJldHVybiBpdC5wcm90b3R5cGU9dHQsdHQuUGFyc2VyPWl0LG5ldyBpdH0oKTtfMS5wYXJzZXI9XzE7Y29uc3QgWks9KHQsZSk9Pnt2YXIgcjtyZXR1cm4oKHI9ZT09bnVsbD92b2lkIDA6ZS5jbGFzcyk9PW51bGw/dm9pZCAwOnIuZGVmYXVsdFJlbmRlcmVyKT09PSJkYWdyZS13cmFwcGVyIj8hMTp0Lm1hdGNoKC9eXHMqY2xhc3NEaWFncmFtLykhPT1udWxsfSxRSz0odCxlKT0+e3ZhciByO3JldHVybiB0Lm1hdGNoKC9eXHMqY2xhc3NEaWFncmFtLykhPT1udWxsJiYoKHI9ZT09bnVsbD92b2lkIDA6ZS5jbGFzcyk9PW51bGw/dm9pZCAwOnIuZGVmYXVsdFJlbmRlcmVyKT09PSJkYWdyZS13cmFwcGVyIj8hMDp0Lm1hdGNoKC9eXHMqY2xhc3NEaWFncmFtLXYyLykhPT1udWxsfSxrZz0iY2xhc3NpZC0iO2xldCB3Zz1bXSxscj17fSxzOT0wLFljPVtdO2NvbnN0IFVjPXQ9PnBlLnNhbml0aXplVGV4dCh0LG50KCkpLEpLPWZ1bmN0aW9uKHQsZSxyKXtYZS5wYXJzZURpcmVjdGl2ZSh0aGlzLHQsZSxyKX0sV2M9ZnVuY3Rpb24odCl7bGV0IGU9IiIscj10O2lmKHQuaW5kZXhPZigifiIpPjApe2xldCBuPXQuc3BsaXQoIn4iKTtyPW5bMF0sZT1wZS5zYW5pdGl6ZVRleHQoblsxXSxudCgpKX1yZXR1cm57Y2xhc3NOYW1lOnIsdHlwZTplfX0sVGc9ZnVuY3Rpb24odCl7bGV0IGU9V2ModCk7dHlwZW9mIGxyW2UuY2xhc3NOYW1lXTwidSJ8fChscltlLmNsYXNzTmFtZV09e2lkOmUuY2xhc3NOYW1lLHR5cGU6ZS50eXBlLGNzc0NsYXNzZXM6W10sbWV0aG9kczpbXSxtZW1iZXJzOltdLGFubm90YXRpb25zOltdLGRvbUlkOmtnK2UuY2xhc3NOYW1lKyItIitzOX0sczkrKyl9LG85PWZ1bmN0aW9uKHQpe2NvbnN0IGU9T2JqZWN0LmtleXMobHIpO2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKWlmKGxyW2Vbcl1dLmlkPT09dClyZXR1cm4gbHJbZVtyXV0uZG9tSWR9LHRaPWZ1bmN0aW9uKCl7d2c9W10sbHI9e30sWWM9W10sWWMucHVzaChjOSksY2koKX0sZVo9ZnVuY3Rpb24odCl7cmV0dXJuIGxyW3RdfSxyWj1mdW5jdGlvbigpe3JldHVybiBscn0sblo9ZnVuY3Rpb24oKXtyZXR1cm4gd2d9LGlaPWZ1bmN0aW9uKHQpe0guZGVidWcoIkFkZGluZyByZWxhdGlvbjogIitKU09OLnN0cmluZ2lmeSh0KSksVGcodC5pZDEpLFRnKHQuaWQyKSx0LmlkMT1XYyh0LmlkMSkuY2xhc3NOYW1lLHQuaWQyPVdjKHQuaWQyKS5jbGFzc05hbWUsdC5yZWxhdGlvblRpdGxlMT1wZS5zYW5pdGl6ZVRleHQodC5yZWxhdGlvblRpdGxlMS50cmltKCksbnQoKSksdC5yZWxhdGlvblRpdGxlMj1wZS5zYW5pdGl6ZVRleHQodC5yZWxhdGlvblRpdGxlMi50cmltKCksbnQoKSksd2cucHVzaCh0KX0sYVo9ZnVuY3Rpb24odCxlKXtjb25zdCByPVdjKHQpLmNsYXNzTmFtZTtscltyXS5hbm5vdGF0aW9ucy5wdXNoKGUpfSxsOT1mdW5jdGlvbih0LGUpe2NvbnN0IHI9V2ModCkuY2xhc3NOYW1lLG49bHJbcl07aWYodHlwZW9mIGU9PSJzdHJpbmciKXtjb25zdCBpPWUudHJpbSgpO2kuc3RhcnRzV2l0aCgiPDwiKSYmaS5lbmRzV2l0aCgiPj4iKT9uLmFubm90YXRpb25zLnB1c2goVWMoaS5zdWJzdHJpbmcoMixpLmxlbmd0aC0yKSkpOmkuaW5kZXhPZigiKSIpPjA/bi5tZXRob2RzLnB1c2goVWMoaSkpOmkmJm4ubWVtYmVycy5wdXNoKFVjKGkpKX19LHNaPWZ1bmN0aW9uKHQsZSl7QXJyYXkuaXNBcnJheShlKSYmKGUucmV2ZXJzZSgpLGUuZm9yRWFjaChyPT5sOSh0LHIpKSl9LG9aPWZ1bmN0aW9uKHQpe3JldHVybiB0LnN1YnN0cmluZygwLDEpPT09IjoiP3BlLnNhbml0aXplVGV4dCh0LnN1YnN0cigxKS50cmltKCksbnQoKSk6VWModC50cmltKCkpfSxFZz1mdW5jdGlvbih0LGUpe3Quc3BsaXQoIiwiKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe2xldCBuPXI7clswXS5tYXRjaCgvXGQvKSYmKG49a2crbiksdHlwZW9mIGxyW25dPCJ1IiYmbHJbbl0uY3NzQ2xhc3Nlcy5wdXNoKGUpfSl9LGxaPWZ1bmN0aW9uKHQsZSl7Y29uc3Qgcj1udCgpO3Quc3BsaXQoIiwiKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe3R5cGVvZiBlPCJ1IiYmKGxyW25dLnRvb2x0aXA9cGUuc2FuaXRpemVUZXh0KGUscikpfSl9LGNaPWZ1bmN0aW9uKHQpe3JldHVybiBsclt0XS50b29sdGlwfSx1Wj1mdW5jdGlvbih0LGUscil7Y29uc3Qgbj1udCgpO3Quc3BsaXQoIiwiKS5mb3JFYWNoKGZ1bmN0aW9uKGkpe2xldCBhPWk7aVswXS5tYXRjaCgvXGQvKSYmKGE9a2crYSksdHlwZW9mIGxyW2FdPCJ1IiYmKGxyW2FdLmxpbms9U2UuZm9ybWF0VXJsKGUsbiksbi5zZWN1cml0eUxldmVsPT09InNhbmRib3giP2xyW2FdLmxpbmtUYXJnZXQ9Il90b3AiOnR5cGVvZiByPT0ic3RyaW5nIj9sclthXS5saW5rVGFyZ2V0PVVjKHIpOmxyW2FdLmxpbmtUYXJnZXQ9Il9ibGFuayIpfSksRWcodCwiY2xpY2thYmxlIil9LGhaPWZ1bmN0aW9uKHQsZSxyKXt0LnNwbGl0KCIsIikuZm9yRWFjaChmdW5jdGlvbihuKXtmWihuLGUsciksbHJbbl0uaGF2ZUNhbGxiYWNrPSEwfSksRWcodCwiY2xpY2thYmxlIil9LGZaPWZ1bmN0aW9uKHQsZSxyKXtjb25zdCBuPW50KCk7bGV0IGk9dCxhPW85KGkpO2lmKG4uc2VjdXJpdHlMZXZlbD09PSJsb29zZSImJiEodHlwZW9mIGU+InUiKSYmdHlwZW9mIGxyW2ldPCJ1Iil7bGV0IHM9W107aWYodHlwZW9mIHI9PSJzdHJpbmciKXtzPXIuc3BsaXQoLywoPz0oPzooPzpbXiJdKiIpezJ9KSpbXiJdKiQpLyk7Zm9yKGxldCBvPTA7bzxzLmxlbmd0aDtvKyspe2xldCBsPXNbb10udHJpbSgpO2wuY2hhckF0KDApPT09JyInJiZsLmNoYXJBdChsLmxlbmd0aC0xKT09PSciJyYmKGw9bC5zdWJzdHIoMSxsLmxlbmd0aC0yKSksc1tvXT1sfX1zLmxlbmd0aD09PTAmJnMucHVzaChhKSxZYy5wdXNoKGZ1bmN0aW9uKCl7Y29uc3Qgbz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBbaWQ9IiR7YX0iXWApO28hPT1udWxsJiZvLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbigpe1NlLnJ1bkZ1bmMoZSwuLi5zKX0sITEpfSl9fSxkWj1mdW5jdGlvbih0KXtZYy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UodCl9KX0scFo9e0xJTkU6MCxET1RURURfTElORToxfSxnWj17QUdHUkVHQVRJT046MCxFWFRFTlNJT046MSxDT01QT1NJVElPTjoyLERFUEVOREVOQ1k6MyxMT0xMSVBPUDo0fSxjOT1mdW5jdGlvbih0KXtsZXQgZT1TdCgiLm1lcm1haWRUb29sdGlwIik7KGUuX2dyb3Vwc3x8ZSlbMF1bMF09PT1udWxsJiYoZT1TdCgiYm9keSIpLmFwcGVuZCgiZGl2IikuYXR0cigiY2xhc3MiLCJtZXJtYWlkVG9vbHRpcCIpLnN0eWxlKCJvcGFjaXR5IiwwKSksU3QodCkuc2VsZWN0KCJzdmciKS5zZWxlY3RBbGwoImcubm9kZSIpLm9uKCJtb3VzZW92ZXIiLGZ1bmN0aW9uKCl7Y29uc3QgaT1TdCh0aGlzKTtpZihpLmF0dHIoInRpdGxlIik9PT1udWxsKXJldHVybjtjb25zdCBzPXRoaXMuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7ZS50cmFuc2l0aW9uKCkuZHVyYXRpb24oMjAwKS5zdHlsZSgib3BhY2l0eSIsIi45IiksZS50ZXh0KGkuYXR0cigidGl0bGUiKSkuc3R5bGUoImxlZnQiLHdpbmRvdy5zY3JvbGxYK3MubGVmdCsocy5yaWdodC1zLmxlZnQpLzIrInB4Iikuc3R5bGUoInRvcCIsd2luZG93LnNjcm9sbFkrcy50b3AtMTQrZG9jdW1lbnQuYm9keS5zY3JvbGxUb3ArInB4IiksZS5odG1sKGUuaHRtbCgpLnJlcGxhY2UoLyZsdDticlwvJmd0Oy9nLCI8YnIvPiIpKSxpLmNsYXNzZWQoImhvdmVyIiwhMCl9KS5vbigibW91c2VvdXQiLGZ1bmN0aW9uKCl7ZS50cmFuc2l0aW9uKCkuZHVyYXRpb24oNTAwKS5zdHlsZSgib3BhY2l0eSIsMCksU3QodGhpcykuY2xhc3NlZCgiaG92ZXIiLCExKX0pfTtZYy5wdXNoKGM5KTtsZXQgdTk9IlRCIjtjb25zdCBKbz17cGFyc2VEaXJlY3RpdmU6Skssc2V0QWNjVGl0bGU6WW4sZ2V0QWNjVGl0bGU6dWksZ2V0QWNjRGVzY3JpcHRpb246Zmksc2V0QWNjRGVzY3JpcHRpb246aGksZ2V0Q29uZmlnOigpPT5udCgpLmNsYXNzLGFkZENsYXNzOlRnLGJpbmRGdW5jdGlvbnM6ZFosY2xlYXI6dFosZ2V0Q2xhc3M6ZVosZ2V0Q2xhc3NlczpyWixhZGRBbm5vdGF0aW9uOmFaLGdldFJlbGF0aW9uczpuWixhZGRSZWxhdGlvbjppWixnZXREaXJlY3Rpb246KCk9PnU5LHNldERpcmVjdGlvbjp0PT57dTk9dH0sYWRkTWVtYmVyOmw5LGFkZE1lbWJlcnM6c1osY2xlYW51cExhYmVsOm9aLGxpbmVUeXBlOnBaLHJlbGF0aW9uVHlwZTpnWixzZXRDbGlja0V2ZW50OmhaLHNldENzc0NsYXNzOkVnLHNldExpbms6dVosZ2V0VG9vbHRpcDpjWixzZXRUb29sdGlwOmxaLGxvb2tVcERvbUlkOm85fTt2YXIgQ2csaDk7ZnVuY3Rpb24geVooKXtpZihoOSlyZXR1cm4gQ2c7aDk9MTt2YXIgdD1XZjtmdW5jdGlvbiBlKCl7dGhpcy5fX2RhdGFfXz1uZXcgdCx0aGlzLnNpemU9MH1yZXR1cm4gQ2c9ZSxDZ312YXIgU2csZjk7ZnVuY3Rpb24gbVooKXtpZihmOSlyZXR1cm4gU2c7Zjk9MTtmdW5jdGlvbiB0KGUpe3ZhciByPXRoaXMuX19kYXRhX18sbj1yLmRlbGV0ZShlKTtyZXR1cm4gdGhpcy5zaXplPXIuc2l6ZSxufXJldHVybiBTZz10LFNnfXZhciBBZyxkOTtmdW5jdGlvbiBiWigpe2lmKGQ5KXJldHVybiBBZztkOT0xO2Z1bmN0aW9uIHQoZSl7cmV0dXJuIHRoaXMuX19kYXRhX18uZ2V0KGUpfXJldHVybiBBZz10LEFnfXZhciBNZyxwOTtmdW5jdGlvbiBfWigpe2lmKHA5KXJldHVybiBNZztwOT0xO2Z1bmN0aW9uIHQoZSl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKGUpfXJldHVybiBNZz10LE1nfXZhciBMZyxnOTtmdW5jdGlvbiB2Wigpe2lmKGc5KXJldHVybiBMZztnOT0xO3ZhciB0PVdmLGU9WnAscj1RcCxuPTIwMDtmdW5jdGlvbiBpKGEscyl7dmFyIG89dGhpcy5fX2RhdGFfXztpZihvIGluc3RhbmNlb2YgdCl7dmFyIGw9by5fX2RhdGFfXztpZighZXx8bC5sZW5ndGg8bi0xKXJldHVybiBsLnB1c2goW2Esc10pLHRoaXMuc2l6ZT0rK28uc2l6ZSx0aGlzO289dGhpcy5fX2RhdGFfXz1uZXcgcihsKX1yZXR1cm4gby5zZXQoYSxzKSx0aGlzLnNpemU9by5zaXplLHRoaXN9cmV0dXJuIExnPWksTGd9dmFyIFJnLHk5O2Z1bmN0aW9uIHYxKCl7aWYoeTkpcmV0dXJuIFJnO3k5PTE7dmFyIHQ9V2YsZT15WigpLHI9bVooKSxuPWJaKCksaT1fWigpLGE9dlooKTtmdW5jdGlvbiBzKG8pe3ZhciBsPXRoaXMuX19kYXRhX189bmV3IHQobyk7dGhpcy5zaXplPWwuc2l6ZX1yZXR1cm4gcy5wcm90b3R5cGUuY2xlYXI9ZSxzLnByb3RvdHlwZS5kZWxldGU9cixzLnByb3RvdHlwZS5nZXQ9bixzLnByb3RvdHlwZS5oYXM9aSxzLnByb3RvdHlwZS5zZXQ9YSxSZz1zLFJnfXZhciBJZyxtOTtmdW5jdGlvbiBOZygpe2lmKG05KXJldHVybiBJZzttOT0xO2Z1bmN0aW9uIHQoZSxyKXtmb3IodmFyIG49LTEsaT1lPT1udWxsPzA6ZS5sZW5ndGg7KytuPGkmJnIoZVtuXSxuLGUpIT09ITE7KTtyZXR1cm4gZX1yZXR1cm4gSWc9dCxJZ312YXIgQmcsYjk7ZnVuY3Rpb24gXzkoKXtpZihiOSlyZXR1cm4gQmc7Yjk9MTt2YXIgdD1xcyxlPWZ1bmN0aW9uKCl7dHJ5e3ZhciByPXQoT2JqZWN0LCJkZWZpbmVQcm9wZXJ0eSIpO3JldHVybiByKHt9LCIiLHt9KSxyfWNhdGNoe319KCk7cmV0dXJuIEJnPWUsQmd9dmFyIERnLHY5O2Z1bmN0aW9uIHgxKCl7aWYodjkpcmV0dXJuIERnO3Y5PTE7dmFyIHQ9XzkoKTtmdW5jdGlvbiBlKHIsbixpKXtuPT0iX19wcm90b19fIiYmdD90KHIsbix7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsdmFsdWU6aSx3cml0YWJsZTohMH0pOnJbbl09aX1yZXR1cm4gRGc9ZSxEZ312YXIgT2cseDk7ZnVuY3Rpb24gazEoKXtpZih4OSlyZXR1cm4gT2c7eDk9MTt2YXIgdD14MSgpLGU9V28scj1PYmplY3QucHJvdG90eXBlLG49ci5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBpKGEscyxvKXt2YXIgbD1hW3NdOyghKG4uY2FsbChhLHMpJiZlKGwsbykpfHxvPT09dm9pZCAwJiYhKHMgaW4gYSkpJiZ0KGEscyxvKX1yZXR1cm4gT2c9aSxPZ312YXIgRmcsazk7ZnVuY3Rpb24gSGMoKXtpZihrOSlyZXR1cm4gRmc7azk9MTt2YXIgdD1rMSgpLGU9eDEoKTtmdW5jdGlvbiByKG4saSxhLHMpe3ZhciBvPSFhO2F8fChhPXt9KTtmb3IodmFyIGw9LTEsdT1pLmxlbmd0aDsrK2w8dTspe3ZhciBoPWlbbF0sZD1zP3MoYVtoXSxuW2hdLGgsYSxuKTp2b2lkIDA7ZD09PXZvaWQgMCYmKGQ9bltoXSksbz9lKGEsaCxkKTp0KGEsaCxkKX1yZXR1cm4gYX1yZXR1cm4gRmc9cixGZ312YXIgUGcsdzk7ZnVuY3Rpb24geFooKXtpZih3OSlyZXR1cm4gUGc7dzk9MTtmdW5jdGlvbiB0KGUscil7Zm9yKHZhciBuPS0xLGk9QXJyYXkoZSk7KytuPGU7KWlbbl09cihuKTtyZXR1cm4gaX1yZXR1cm4gUGc9dCxQZ312YXIgcWcsVDk7ZnVuY3Rpb24gRmkoKXtpZihUOSlyZXR1cm4gcWc7VDk9MTtmdW5jdGlvbiB0KGUpe3JldHVybiBlIT1udWxsJiZ0eXBlb2YgZT09Im9iamVjdCJ9cmV0dXJuIHFnPXQscWd9dmFyIFZnLEU5O2Z1bmN0aW9uIGtaKCl7aWYoRTkpcmV0dXJuIFZnO0U5PTE7dmFyIHQ9UHMsZT1GaSgpLHI9IltvYmplY3QgQXJndW1lbnRzXSI7ZnVuY3Rpb24gbihpKXtyZXR1cm4gZShpKSYmdChpKT09cn1yZXR1cm4gVmc9bixWZ312YXIgemcsQzk7ZnVuY3Rpb24gR2MoKXtpZihDOSlyZXR1cm4gemc7Qzk9MTt2YXIgdD1rWigpLGU9RmkoKSxyPU9iamVjdC5wcm90b3R5cGUsbj1yLmhhc093blByb3BlcnR5LGk9ci5wcm9wZXJ0eUlzRW51bWVyYWJsZSxhPXQoZnVuY3Rpb24oKXtyZXR1cm4gYXJndW1lbnRzfSgpKT90OmZ1bmN0aW9uKHMpe3JldHVybiBlKHMpJiZuLmNhbGwocywiY2FsbGVlIikmJiFpLmNhbGwocywiY2FsbGVlIil9O3JldHVybiB6Zz1hLHpnfXZhciBZZyxTOTtmdW5jdGlvbiBncigpe2lmKFM5KXJldHVybiBZZztTOT0xO3ZhciB0PUFycmF5LmlzQXJyYXk7cmV0dXJuIFlnPXQsWWd9dmFyIHcxPXtleHBvcnRzOnt9fSxVZyxBOTtmdW5jdGlvbiB3Wigpe2lmKEE5KXJldHVybiBVZztBOT0xO2Z1bmN0aW9uIHQoKXtyZXR1cm4hMX1yZXR1cm4gVWc9dCxVZ312YXIgTTk7ZnVuY3Rpb24gdGwoKXtyZXR1cm4gTTl8fChNOT0xLGZ1bmN0aW9uKHQsZSl7dmFyIHI9c2ksbj13WigpLGk9ZSYmIWUubm9kZVR5cGUmJmUsYT1pJiYhMCYmdCYmIXQubm9kZVR5cGUmJnQscz1hJiZhLmV4cG9ydHM9PT1pLG89cz9yLkJ1ZmZlcjp2b2lkIDAsbD1vP28uaXNCdWZmZXI6dm9pZCAwLHU9bHx8bjt0LmV4cG9ydHM9dX0odzEsdzEuZXhwb3J0cykpLHcxLmV4cG9ydHN9dmFyIFdnLEw5O2Z1bmN0aW9uIFQxKCl7aWYoTDkpcmV0dXJuIFdnO0w5PTE7dmFyIHQ9OTAwNzE5OTI1NDc0MDk5MSxlPS9eKD86MHxbMS05XVxkKikkLztmdW5jdGlvbiByKG4saSl7dmFyIGE9dHlwZW9mIG47cmV0dXJuIGk9aT09bnVsbD90OmksISFpJiYoYT09Im51bWJlciJ8fGEhPSJzeW1ib2wiJiZlLnRlc3QobikpJiZuPi0xJiZuJTE9PTAmJm48aX1yZXR1cm4gV2c9cixXZ312YXIgSGcsUjk7ZnVuY3Rpb24gR2coKXtpZihSOSlyZXR1cm4gSGc7Ujk9MTt2YXIgdD05MDA3MTk5MjU0NzQwOTkxO2Z1bmN0aW9uIGUocil7cmV0dXJuIHR5cGVvZiByPT0ibnVtYmVyIiYmcj4tMSYmciUxPT0wJiZyPD10fXJldHVybiBIZz1lLEhnfXZhciBqZyxJOTtmdW5jdGlvbiBUWigpe2lmKEk5KXJldHVybiBqZztJOT0xO3ZhciB0PVBzLGU9R2coKSxyPUZpKCksbj0iW29iamVjdCBBcmd1bWVudHNdIixpPSJbb2JqZWN0IEFycmF5XSIsYT0iW29iamVjdCBCb29sZWFuXSIscz0iW29iamVjdCBEYXRlXSIsbz0iW29iamVjdCBFcnJvcl0iLGw9IltvYmplY3QgRnVuY3Rpb25dIix1PSJbb2JqZWN0IE1hcF0iLGg9IltvYmplY3QgTnVtYmVyXSIsZD0iW29iamVjdCBPYmplY3RdIixmPSJbb2JqZWN0IFJlZ0V4cF0iLHA9IltvYmplY3QgU2V0XSIsbT0iW29iamVjdCBTdHJpbmddIixfPSJbb2JqZWN0IFdlYWtNYXBdIix5PSJbb2JqZWN0IEFycmF5QnVmZmVyXSIsYj0iW29iamVjdCBEYXRhVmlld10iLHg9IltvYmplY3QgRmxvYXQzMkFycmF5XSIsaz0iW29iamVjdCBGbG9hdDY0QXJyYXldIixUPSJbb2JqZWN0IEludDhBcnJheV0iLEM9IltvYmplY3QgSW50MTZBcnJheV0iLE09IltvYmplY3QgSW50MzJBcnJheV0iLFM9IltvYmplY3QgVWludDhBcnJheV0iLFI9IltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIixBPSJbb2JqZWN0IFVpbnQxNkFycmF5XSIsTD0iW29iamVjdCBVaW50MzJBcnJheV0iLHY9e307dlt4XT12W2tdPXZbVF09dltDXT12W01dPXZbU109dltSXT12W0FdPXZbTF09ITAsdltuXT12W2ldPXZbeV09dlthXT12W2JdPXZbc109dltvXT12W2xdPXZbdV09dltoXT12W2RdPXZbZl09dltwXT12W21dPXZbX109ITE7ZnVuY3Rpb24gQih3KXtyZXR1cm4gcih3KSYmZSh3Lmxlbmd0aCkmJiEhdlt0KHcpXX1yZXR1cm4gamc9QixqZ312YXIgJGcsTjk7ZnVuY3Rpb24gRTEoKXtpZihOOSlyZXR1cm4gJGc7Tjk9MTtmdW5jdGlvbiB0KGUpe3JldHVybiBmdW5jdGlvbihyKXtyZXR1cm4gZShyKX19cmV0dXJuICRnPXQsJGd9dmFyIEMxPXtleHBvcnRzOnt9fSxCOTtmdW5jdGlvbiBYZygpe3JldHVybiBCOXx8KEI5PTEsZnVuY3Rpb24odCxlKXt2YXIgcj1YayxuPWUmJiFlLm5vZGVUeXBlJiZlLGk9biYmITAmJnQmJiF0Lm5vZGVUeXBlJiZ0LGE9aSYmaS5leHBvcnRzPT09bixzPWEmJnIucHJvY2VzcyxvPWZ1bmN0aW9uKCl7dHJ5e3ZhciBsPWkmJmkucmVxdWlyZSYmaS5yZXF1aXJlKCJ1dGlsIikudHlwZXM7cmV0dXJuIGx8fHMmJnMuYmluZGluZyYmcy5iaW5kaW5nKCJ1dGlsIil9Y2F0Y2h7fX0oKTt0LmV4cG9ydHM9b30oQzEsQzEuZXhwb3J0cykpLEMxLmV4cG9ydHN9dmFyIEtnLEQ5O2Z1bmN0aW9uIGpjKCl7aWYoRDkpcmV0dXJuIEtnO0Q5PTE7dmFyIHQ9VFooKSxlPUUxKCkscj1YZygpLG49ciYmci5pc1R5cGVkQXJyYXksaT1uP2Uobik6dDtyZXR1cm4gS2c9aSxLZ312YXIgWmcsTzk7ZnVuY3Rpb24gRjkoKXtpZihPOSlyZXR1cm4gWmc7Tzk9MTt2YXIgdD14WigpLGU9R2MoKSxyPWdyKCksbj10bCgpLGk9VDEoKSxhPWpjKCkscz1PYmplY3QucHJvdG90eXBlLG89cy5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBsKHUsaCl7dmFyIGQ9cih1KSxmPSFkJiZlKHUpLHA9IWQmJiFmJiZuKHUpLG09IWQmJiFmJiYhcCYmYSh1KSxfPWR8fGZ8fHB8fG0seT1fP3QodS5sZW5ndGgsU3RyaW5nKTpbXSxiPXkubGVuZ3RoO2Zvcih2YXIgeCBpbiB1KShofHxvLmNhbGwodSx4KSkmJiEoXyYmKHg9PSJsZW5ndGgifHxwJiYoeD09Im9mZnNldCJ8fHg9PSJwYXJlbnQiKXx8bSYmKHg9PSJidWZmZXIifHx4PT0iYnl0ZUxlbmd0aCJ8fHg9PSJieXRlT2Zmc2V0Iil8fGkoeCxiKSkpJiZ5LnB1c2goeCk7cmV0dXJuIHl9cmV0dXJuIFpnPWwsWmd9dmFyIFFnLFA5O2Z1bmN0aW9uIFMxKCl7aWYoUDkpcmV0dXJuIFFnO1A5PTE7dmFyIHQ9T2JqZWN0LnByb3RvdHlwZTtmdW5jdGlvbiBlKHIpe3ZhciBuPXImJnIuY29uc3RydWN0b3IsaT10eXBlb2Ygbj09ImZ1bmN0aW9uIiYmbi5wcm90b3R5cGV8fHQ7cmV0dXJuIHI9PT1pfXJldHVybiBRZz1lLFFnfXZhciBKZyxxOTtmdW5jdGlvbiBWOSgpe2lmKHE5KXJldHVybiBKZztxOT0xO2Z1bmN0aW9uIHQoZSxyKXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIGUocihuKSl9fXJldHVybiBKZz10LEpnfXZhciB0eSx6OTtmdW5jdGlvbiBFWigpe2lmKHo5KXJldHVybiB0eTt6OT0xO3ZhciB0PVY5KCksZT10KE9iamVjdC5rZXlzLE9iamVjdCk7cmV0dXJuIHR5PWUsdHl9dmFyIGV5LFk5O2Z1bmN0aW9uIHJ5KCl7aWYoWTkpcmV0dXJuIGV5O1k5PTE7dmFyIHQ9UzEoKSxlPUVaKCkscj1PYmplY3QucHJvdG90eXBlLG49ci5oYXNPd25Qcm9wZXJ0eTtmdW5jdGlvbiBpKGEpe2lmKCF0KGEpKXJldHVybiBlKGEpO3ZhciBzPVtdO2Zvcih2YXIgbyBpbiBPYmplY3QoYSkpbi5jYWxsKGEsbykmJm8hPSJjb25zdHJ1Y3RvciImJnMucHVzaChvKTtyZXR1cm4gc31yZXR1cm4gZXk9aSxleX12YXIgbnksVTk7ZnVuY3Rpb24gb2EoKXtpZihVOSlyZXR1cm4gbnk7VTk9MTt2YXIgdD1ZbyxlPUdnKCk7ZnVuY3Rpb24gcihuKXtyZXR1cm4gbiE9bnVsbCYmZShuLmxlbmd0aCkmJiF0KG4pfXJldHVybiBueT1yLG55fXZhciBpeSxXOTtmdW5jdGlvbiB0cygpe2lmKFc5KXJldHVybiBpeTtXOT0xO3ZhciB0PUY5KCksZT1yeSgpLHI9b2EoKTtmdW5jdGlvbiBuKGkpe3JldHVybiByKGkpP3QoaSk6ZShpKX1yZXR1cm4gaXk9bixpeX12YXIgYXksSDk7ZnVuY3Rpb24gQ1ooKXtpZihIOSlyZXR1cm4gYXk7SDk9MTt2YXIgdD1IYygpLGU9dHMoKTtmdW5jdGlvbiByKG4saSl7cmV0dXJuIG4mJnQoaSxlKGkpLG4pfXJldHVybiBheT1yLGF5fXZhciBzeSxHOTtmdW5jdGlvbiBTWigpe2lmKEc5KXJldHVybiBzeTtHOT0xO2Z1bmN0aW9uIHQoZSl7dmFyIHI9W107aWYoZSE9bnVsbClmb3IodmFyIG4gaW4gT2JqZWN0KGUpKXIucHVzaChuKTtyZXR1cm4gcn1yZXR1cm4gc3k9dCxzeX12YXIgb3ksajk7ZnVuY3Rpb24gQVooKXtpZihqOSlyZXR1cm4gb3k7ajk9MTt2YXIgdD1WbixlPVMxKCkscj1TWigpLG49T2JqZWN0LnByb3RvdHlwZSxpPW4uaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gYShzKXtpZighdChzKSlyZXR1cm4gcihzKTt2YXIgbz1lKHMpLGw9W107Zm9yKHZhciB1IGluIHMpdT09ImNvbnN0cnVjdG9yIiYmKG98fCFpLmNhbGwocyx1KSl8fGwucHVzaCh1KTtyZXR1cm4gbH1yZXR1cm4gb3k9YSxveX12YXIgbHksJDk7ZnVuY3Rpb24gV3MoKXtpZigkOSlyZXR1cm4gbHk7JDk9MTt2YXIgdD1GOSgpLGU9QVooKSxyPW9hKCk7ZnVuY3Rpb24gbihpKXtyZXR1cm4gcihpKT90KGksITApOmUoaSl9cmV0dXJuIGx5PW4sbHl9dmFyIGN5LFg5O2Z1bmN0aW9uIE1aKCl7aWYoWDkpcmV0dXJuIGN5O1g5PTE7dmFyIHQ9SGMoKSxlPVdzKCk7ZnVuY3Rpb24gcihuLGkpe3JldHVybiBuJiZ0KGksZShpKSxuKX1yZXR1cm4gY3k9cixjeX12YXIgQTE9e2V4cG9ydHM6e319LEs5O2Z1bmN0aW9uIFo5KCl7cmV0dXJuIEs5fHwoSzk9MSxmdW5jdGlvbih0LGUpe3ZhciByPXNpLG49ZSYmIWUubm9kZVR5cGUmJmUsaT1uJiYhMCYmdCYmIXQubm9kZVR5cGUmJnQsYT1pJiZpLmV4cG9ydHM9PT1uLHM9YT9yLkJ1ZmZlcjp2b2lkIDAsbz1zP3MuYWxsb2NVbnNhZmU6dm9pZCAwO2Z1bmN0aW9uIGwodSxoKXtpZihoKXJldHVybiB1LnNsaWNlKCk7dmFyIGQ9dS5sZW5ndGgsZj1vP28oZCk6bmV3IHUuY29uc3RydWN0b3IoZCk7cmV0dXJuIHUuY29weShmKSxmfXQuZXhwb3J0cz1sfShBMSxBMS5leHBvcnRzKSksQTEuZXhwb3J0c312YXIgdXksUTk7ZnVuY3Rpb24gSjkoKXtpZihROSlyZXR1cm4gdXk7UTk9MTtmdW5jdGlvbiB0KGUscil7dmFyIG49LTEsaT1lLmxlbmd0aDtmb3Iocnx8KHI9QXJyYXkoaSkpOysrbjxpOylyW25dPWVbbl07cmV0dXJuIHJ9cmV0dXJuIHV5PXQsdXl9dmFyIGh5LHRUO2Z1bmN0aW9uIGVUKCl7aWYodFQpcmV0dXJuIGh5O3RUPTE7ZnVuY3Rpb24gdChlLHIpe2Zvcih2YXIgbj0tMSxpPWU9PW51bGw/MDplLmxlbmd0aCxhPTAscz1bXTsrK248aTspe3ZhciBvPWVbbl07cihvLG4sZSkmJihzW2ErK109byl9cmV0dXJuIHN9cmV0dXJuIGh5PXQsaHl9dmFyIGZ5LHJUO2Z1bmN0aW9uIG5UKCl7aWYoclQpcmV0dXJuIGZ5O3JUPTE7ZnVuY3Rpb24gdCgpe3JldHVybltdfXJldHVybiBmeT10LGZ5fXZhciBkeSxpVDtmdW5jdGlvbiBweSgpe2lmKGlUKXJldHVybiBkeTtpVD0xO3ZhciB0PWVUKCksZT1uVCgpLHI9T2JqZWN0LnByb3RvdHlwZSxuPXIucHJvcGVydHlJc0VudW1lcmFibGUsaT1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzLGE9aT9mdW5jdGlvbihzKXtyZXR1cm4gcz09bnVsbD9bXToocz1PYmplY3QocyksdChpKHMpLGZ1bmN0aW9uKG8pe3JldHVybiBuLmNhbGwocyxvKX0pKX06ZTtyZXR1cm4gZHk9YSxkeX12YXIgZ3ksYVQ7ZnVuY3Rpb24gTFooKXtpZihhVClyZXR1cm4gZ3k7YVQ9MTt2YXIgdD1IYygpLGU9cHkoKTtmdW5jdGlvbiByKG4saSl7cmV0dXJuIHQobixlKG4pLGkpfXJldHVybiBneT1yLGd5fXZhciB5eSxzVDtmdW5jdGlvbiBteSgpe2lmKHNUKXJldHVybiB5eTtzVD0xO2Z1bmN0aW9uIHQoZSxyKXtmb3IodmFyIG49LTEsaT1yLmxlbmd0aCxhPWUubGVuZ3RoOysrbjxpOyllW2Erbl09cltuXTtyZXR1cm4gZX1yZXR1cm4geXk9dCx5eX12YXIgYnksb1Q7ZnVuY3Rpb24gTTEoKXtpZihvVClyZXR1cm4gYnk7b1Q9MTt2YXIgdD1WOSgpLGU9dChPYmplY3QuZ2V0UHJvdG90eXBlT2YsT2JqZWN0KTtyZXR1cm4gYnk9ZSxieX12YXIgX3ksbFQ7ZnVuY3Rpb24gY1QoKXtpZihsVClyZXR1cm4gX3k7bFQ9MTt2YXIgdD1teSgpLGU9TTEoKSxyPXB5KCksbj1uVCgpLGk9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxhPWk/ZnVuY3Rpb24ocyl7Zm9yKHZhciBvPVtdO3M7KXQobyxyKHMpKSxzPWUocyk7cmV0dXJuIG99Om47cmV0dXJuIF95PWEsX3l9dmFyIHZ5LHVUO2Z1bmN0aW9uIFJaKCl7aWYodVQpcmV0dXJuIHZ5O3VUPTE7dmFyIHQ9SGMoKSxlPWNUKCk7ZnVuY3Rpb24gcihuLGkpe3JldHVybiB0KG4sZShuKSxpKX1yZXR1cm4gdnk9cix2eX12YXIgeHksaFQ7ZnVuY3Rpb24gZlQoKXtpZihoVClyZXR1cm4geHk7aFQ9MTt2YXIgdD1teSgpLGU9Z3IoKTtmdW5jdGlvbiByKG4saSxhKXt2YXIgcz1pKG4pO3JldHVybiBlKG4pP3M6dChzLGEobikpfXJldHVybiB4eT1yLHh5fXZhciBreSxkVDtmdW5jdGlvbiBwVCgpe2lmKGRUKXJldHVybiBreTtkVD0xO3ZhciB0PWZUKCksZT1weSgpLHI9dHMoKTtmdW5jdGlvbiBuKGkpe3JldHVybiB0KGkscixlKX1yZXR1cm4ga3k9bixreX12YXIgd3ksZ1Q7ZnVuY3Rpb24gSVooKXtpZihnVClyZXR1cm4gd3k7Z1Q9MTt2YXIgdD1mVCgpLGU9Y1QoKSxyPVdzKCk7ZnVuY3Rpb24gbihpKXtyZXR1cm4gdChpLHIsZSl9cmV0dXJuIHd5PW4sd3l9dmFyIFR5LHlUO2Z1bmN0aW9uIE5aKCl7aWYoeVQpcmV0dXJuIFR5O3lUPTE7dmFyIHQ9cXMsZT1zaSxyPXQoZSwiRGF0YVZpZXciKTtyZXR1cm4gVHk9cixUeX12YXIgRXksbVQ7ZnVuY3Rpb24gQlooKXtpZihtVClyZXR1cm4gRXk7bVQ9MTt2YXIgdD1xcyxlPXNpLHI9dChlLCJQcm9taXNlIik7cmV0dXJuIEV5PXIsRXl9dmFyIEN5LGJUO2Z1bmN0aW9uIF9UKCl7aWYoYlQpcmV0dXJuIEN5O2JUPTE7dmFyIHQ9cXMsZT1zaSxyPXQoZSwiU2V0Iik7cmV0dXJuIEN5PXIsQ3l9dmFyIFN5LHZUO2Z1bmN0aW9uIERaKCl7aWYodlQpcmV0dXJuIFN5O3ZUPTE7dmFyIHQ9cXMsZT1zaSxyPXQoZSwiV2Vha01hcCIpO3JldHVybiBTeT1yLFN5fXZhciBBeSx4VDtmdW5jdGlvbiBlbCgpe2lmKHhUKXJldHVybiBBeTt4VD0xO3ZhciB0PU5aKCksZT1acCxyPUJaKCksbj1fVCgpLGk9RFooKSxhPVBzLHM9ZXcsbz0iW29iamVjdCBNYXBdIixsPSJbb2JqZWN0IE9iamVjdF0iLHU9IltvYmplY3QgUHJvbWlzZV0iLGg9IltvYmplY3QgU2V0XSIsZD0iW29iamVjdCBXZWFrTWFwXSIsZj0iW29iamVjdCBEYXRhVmlld10iLHA9cyh0KSxtPXMoZSksXz1zKHIpLHk9cyhuKSxiPXMoaSkseD1hO3JldHVybih0JiZ4KG5ldyB0KG5ldyBBcnJheUJ1ZmZlcigxKSkpIT1mfHxlJiZ4KG5ldyBlKSE9b3x8ciYmeChyLnJlc29sdmUoKSkhPXV8fG4mJngobmV3IG4pIT1ofHxpJiZ4KG5ldyBpKSE9ZCkmJih4PWZ1bmN0aW9uKGspe3ZhciBUPWEoayksQz1UPT1sP2suY29uc3RydWN0b3I6dm9pZCAwLE09Qz9zKEMpOiIiO2lmKE0pc3dpdGNoKE0pe2Nhc2UgcDpyZXR1cm4gZjtjYXNlIG06cmV0dXJuIG87Y2FzZSBfOnJldHVybiB1O2Nhc2UgeTpyZXR1cm4gaDtjYXNlIGI6cmV0dXJuIGR9cmV0dXJuIFR9KSxBeT14LEF5fXZhciBNeSxrVDtmdW5jdGlvbiBPWigpe2lmKGtUKXJldHVybiBNeTtrVD0xO3ZhciB0PU9iamVjdC5wcm90b3R5cGUsZT10Lmhhc093blByb3BlcnR5O2Z1bmN0aW9uIHIobil7dmFyIGk9bi5sZW5ndGgsYT1uZXcgbi5jb25zdHJ1Y3RvcihpKTtyZXR1cm4gaSYmdHlwZW9mIG5bMF09PSJzdHJpbmciJiZlLmNhbGwobiwiaW5kZXgiKSYmKGEuaW5kZXg9bi5pbmRleCxhLmlucHV0PW4uaW5wdXQpLGF9cmV0dXJuIE15PXIsTXl9dmFyIEx5LHdUO2Z1bmN0aW9uIFRUKCl7aWYod1QpcmV0dXJuIEx5O3dUPTE7dmFyIHQ9c2ksZT10LlVpbnQ4QXJyYXk7cmV0dXJuIEx5PWUsTHl9dmFyIFJ5LEVUO2Z1bmN0aW9uIEl5KCl7aWYoRVQpcmV0dXJuIFJ5O0VUPTE7dmFyIHQ9VFQoKTtmdW5jdGlvbiBlKHIpe3ZhciBuPW5ldyByLmNvbnN0cnVjdG9yKHIuYnl0ZUxlbmd0aCk7cmV0dXJuIG5ldyB0KG4pLnNldChuZXcgdChyKSksbn1yZXR1cm4gUnk9ZSxSeX12YXIgTnksQ1Q7ZnVuY3Rpb24gRlooKXtpZihDVClyZXR1cm4gTnk7Q1Q9MTt2YXIgdD1JeSgpO2Z1bmN0aW9uIGUocixuKXt2YXIgaT1uP3Qoci5idWZmZXIpOnIuYnVmZmVyO3JldHVybiBuZXcgci5jb25zdHJ1Y3RvcihpLHIuYnl0ZU9mZnNldCxyLmJ5dGVMZW5ndGgpfXJldHVybiBOeT1lLE55fXZhciBCeSxTVDtmdW5jdGlvbiBQWigpe2lmKFNUKXJldHVybiBCeTtTVD0xO3ZhciB0PS9cdyokLztmdW5jdGlvbiBlKHIpe3ZhciBuPW5ldyByLmNvbnN0cnVjdG9yKHIuc291cmNlLHQuZXhlYyhyKSk7cmV0dXJuIG4ubGFzdEluZGV4PXIubGFzdEluZGV4LG59cmV0dXJuIEJ5PWUsQnl9dmFyIER5LEFUO2Z1bmN0aW9uIHFaKCl7aWYoQVQpcmV0dXJuIER5O0FUPTE7dmFyIHQ9em8sZT10P3QucHJvdG90eXBlOnZvaWQgMCxyPWU/ZS52YWx1ZU9mOnZvaWQgMDtmdW5jdGlvbiBuKGkpe3JldHVybiByP09iamVjdChyLmNhbGwoaSkpOnt9fXJldHVybiBEeT1uLER5fXZhciBPeSxNVDtmdW5jdGlvbiBMVCgpe2lmKE1UKXJldHVybiBPeTtNVD0xO3ZhciB0PUl5KCk7ZnVuY3Rpb24gZShyLG4pe3ZhciBpPW4/dChyLmJ1ZmZlcik6ci5idWZmZXI7cmV0dXJuIG5ldyByLmNvbnN0cnVjdG9yKGksci5ieXRlT2Zmc2V0LHIubGVuZ3RoKX1yZXR1cm4gT3k9ZSxPeX12YXIgRnksUlQ7ZnVuY3Rpb24gVlooKXtpZihSVClyZXR1cm4gRnk7UlQ9MTt2YXIgdD1JeSgpLGU9RlooKSxyPVBaKCksbj1xWigpLGk9TFQoKSxhPSJbb2JqZWN0IEJvb2xlYW5dIixzPSJbb2JqZWN0IERhdGVdIixvPSJbb2JqZWN0IE1hcF0iLGw9IltvYmplY3QgTnVtYmVyXSIsdT0iW29iamVjdCBSZWdFeHBdIixoPSJbb2JqZWN0IFNldF0iLGQ9IltvYmplY3QgU3RyaW5nXSIsZj0iW29iamVjdCBTeW1ib2xdIixwPSJbb2JqZWN0IEFycmF5QnVmZmVyXSIsbT0iW29iamVjdCBEYXRhVmlld10iLF89IltvYmplY3QgRmxvYXQzMkFycmF5XSIseT0iW29iamVjdCBGbG9hdDY0QXJyYXldIixiPSJbb2JqZWN0IEludDhBcnJheV0iLHg9IltvYmplY3QgSW50MTZBcnJheV0iLGs9IltvYmplY3QgSW50MzJBcnJheV0iLFQ9IltvYmplY3QgVWludDhBcnJheV0iLEM9IltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIixNPSJbb2JqZWN0IFVpbnQxNkFycmF5XSIsUz0iW29iamVjdCBVaW50MzJBcnJheV0iO2Z1bmN0aW9uIFIoQSxMLHYpe3ZhciBCPUEuY29uc3RydWN0b3I7c3dpdGNoKEwpe2Nhc2UgcDpyZXR1cm4gdChBKTtjYXNlIGE6Y2FzZSBzOnJldHVybiBuZXcgQigrQSk7Y2FzZSBtOnJldHVybiBlKEEsdik7Y2FzZSBfOmNhc2UgeTpjYXNlIGI6Y2FzZSB4OmNhc2UgazpjYXNlIFQ6Y2FzZSBDOmNhc2UgTTpjYXNlIFM6cmV0dXJuIGkoQSx2KTtjYXNlIG86cmV0dXJuIG5ldyBCO2Nhc2UgbDpjYXNlIGQ6cmV0dXJuIG5ldyBCKEEpO2Nhc2UgdTpyZXR1cm4gcihBKTtjYXNlIGg6cmV0dXJuIG5ldyBCO2Nhc2UgZjpyZXR1cm4gbihBKX19cmV0dXJuIEZ5PVIsRnl9dmFyIFB5LElUO2Z1bmN0aW9uIE5UKCl7aWYoSVQpcmV0dXJuIFB5O0lUPTE7dmFyIHQ9Vm4sZT1PYmplY3QuY3JlYXRlLHI9ZnVuY3Rpb24oKXtmdW5jdGlvbiBuKCl7fXJldHVybiBmdW5jdGlvbihpKXtpZighdChpKSlyZXR1cm57fTtpZihlKXJldHVybiBlKGkpO24ucHJvdG90eXBlPWk7dmFyIGE9bmV3IG47cmV0dXJuIG4ucHJvdG90eXBlPXZvaWQgMCxhfX0oKTtyZXR1cm4gUHk9cixQeX12YXIgcXksQlQ7ZnVuY3Rpb24gRFQoKXtpZihCVClyZXR1cm4gcXk7QlQ9MTt2YXIgdD1OVCgpLGU9TTEoKSxyPVMxKCk7ZnVuY3Rpb24gbihpKXtyZXR1cm4gdHlwZW9mIGkuY29uc3RydWN0b3I9PSJmdW5jdGlvbiImJiFyKGkpP3QoZShpKSk6e319cmV0dXJuIHF5PW4scXl9dmFyIFZ5LE9UO2Z1bmN0aW9uIHpaKCl7aWYoT1QpcmV0dXJuIFZ5O09UPTE7dmFyIHQ9ZWwoKSxlPUZpKCkscj0iW29iamVjdCBNYXBdIjtmdW5jdGlvbiBuKGkpe3JldHVybiBlKGkpJiZ0KGkpPT1yfXJldHVybiBWeT1uLFZ5fXZhciB6eSxGVDtmdW5jdGlvbiBZWigpe2lmKEZUKXJldHVybiB6eTtGVD0xO3ZhciB0PXpaKCksZT1FMSgpLHI9WGcoKSxuPXImJnIuaXNNYXAsaT1uP2Uobik6dDtyZXR1cm4genk9aSx6eX12YXIgWXksUFQ7ZnVuY3Rpb24gVVooKXtpZihQVClyZXR1cm4gWXk7UFQ9MTt2YXIgdD1lbCgpLGU9RmkoKSxyPSJbb2JqZWN0IFNldF0iO2Z1bmN0aW9uIG4oaSl7cmV0dXJuIGUoaSkmJnQoaSk9PXJ9cmV0dXJuIFl5PW4sWXl9dmFyIFV5LHFUO2Z1bmN0aW9uIFdaKCl7aWYocVQpcmV0dXJuIFV5O3FUPTE7dmFyIHQ9VVooKSxlPUUxKCkscj1YZygpLG49ciYmci5pc1NldCxpPW4/ZShuKTp0O3JldHVybiBVeT1pLFV5fXZhciBXeSxWVDtmdW5jdGlvbiB6VCgpe2lmKFZUKXJldHVybiBXeTtWVD0xO3ZhciB0PXYxKCksZT1OZygpLHI9azEoKSxuPUNaKCksaT1NWigpLGE9WjkoKSxzPUo5KCksbz1MWigpLGw9UlooKSx1PXBUKCksaD1JWigpLGQ9ZWwoKSxmPU9aKCkscD1WWigpLG09RFQoKSxfPWdyKCkseT10bCgpLGI9WVooKSx4PVZuLGs9V1ooKSxUPXRzKCksQz1XcygpLE09MSxTPTIsUj00LEE9IltvYmplY3QgQXJndW1lbnRzXSIsTD0iW29iamVjdCBBcnJheV0iLHY9IltvYmplY3QgQm9vbGVhbl0iLEI9IltvYmplY3QgRGF0ZV0iLHc9IltvYmplY3QgRXJyb3JdIixEPSJbb2JqZWN0IEZ1bmN0aW9uXSIsTj0iW29iamVjdCBHZW5lcmF0b3JGdW5jdGlvbl0iLHo9IltvYmplY3QgTWFwXSIsWD0iW29iamVjdCBOdW1iZXJdIixjdD0iW29iamVjdCBPYmplY3RdIixKPSJbb2JqZWN0IFJlZ0V4cF0iLFk9IltvYmplY3QgU2V0XSIsJD0iW29iamVjdCBTdHJpbmddIixsdD0iW29iamVjdCBTeW1ib2xdIix1dD0iW29iamVjdCBXZWFrTWFwXSIsVz0iW29iamVjdCBBcnJheUJ1ZmZlcl0iLHR0PSJbb2JqZWN0IERhdGFWaWV3XSIsSz0iW29iamVjdCBGbG9hdDMyQXJyYXldIixpdD0iW29iamVjdCBGbG9hdDY0QXJyYXldIixaPSJbb2JqZWN0IEludDhBcnJheV0iLFY9IltvYmplY3QgSW50MTZBcnJheV0iLFE9IltvYmplY3QgSW50MzJBcnJheV0iLHE9IltvYmplY3QgVWludDhBcnJheV0iLFU9IltvYmplY3QgVWludDhDbGFtcGVkQXJyYXldIixGPSJbb2JqZWN0IFVpbnQxNkFycmF5XSIsaj0iW29iamVjdCBVaW50MzJBcnJheV0iLFA9e307UFtBXT1QW0xdPVBbV109UFt0dF09UFt2XT1QW0JdPVBbS109UFtpdF09UFtaXT1QW1ZdPVBbUV09UFt6XT1QW1hdPVBbY3RdPVBbSl09UFtZXT1QWyRdPVBbbHRdPVBbcV09UFtVXT1QW0ZdPVBbal09ITAsUFt3XT1QW0RdPVBbdXRdPSExO2Z1bmN0aW9uIGV0KGF0LEl0LEx0LFJ0LEN0LHB0KXt2YXIgbXQsdnQ9SXQmTSxUdD1JdCZTLGZ0PUl0JlI7aWYoTHQmJihtdD1DdD9MdChhdCxSdCxDdCxwdCk6THQoYXQpKSxtdCE9PXZvaWQgMClyZXR1cm4gbXQ7aWYoIXgoYXQpKXJldHVybiBhdDt2YXIgbGU9XyhhdCk7aWYobGUpe2lmKG10PWYoYXQpLCF2dClyZXR1cm4gcyhhdCxtdCl9ZWxzZXt2YXIgRHQ9ZChhdCksR3Q9RHQ9PUR8fER0PT1OO2lmKHkoYXQpKXJldHVybiBhKGF0LHZ0KTtpZihEdD09Y3R8fER0PT1BfHxHdCYmIUN0KXtpZihtdD1UdHx8R3Q/e306bShhdCksIXZ0KXJldHVybiBUdD9sKGF0LGkobXQsYXQpKTpvKGF0LG4obXQsYXQpKX1lbHNle2lmKCFQW0R0XSlyZXR1cm4gQ3Q/YXQ6e307bXQ9cChhdCxEdCx2dCl9fXB0fHwocHQ9bmV3IHQpO3ZhciAkdD1wdC5nZXQoYXQpO2lmKCR0KXJldHVybiAkdDtwdC5zZXQoYXQsbXQpLGsoYXQpP2F0LmZvckVhY2goZnVuY3Rpb24oanQpe210LmFkZChldChqdCxJdCxMdCxqdCxhdCxwdCkpfSk6YihhdCkmJmF0LmZvckVhY2goZnVuY3Rpb24oanQsRnQpe210LnNldChGdCxldChqdCxJdCxMdCxGdCxhdCxwdCkpfSk7dmFyIFF0PWZ0P1R0P2g6dTpUdD9DOlQsd2U9bGU/dm9pZCAwOlF0KGF0KTtyZXR1cm4gZSh3ZXx8YXQsZnVuY3Rpb24oanQsRnQpe3dlJiYoRnQ9anQsanQ9YXRbRnRdKSxyKG10LEZ0LGV0KGp0LEl0LEx0LEZ0LGF0LHB0KSl9KSxtdH1yZXR1cm4gV3k9ZXQsV3l9dmFyIEh5LFlUO2Z1bmN0aW9uIEhaKCl7aWYoWVQpcmV0dXJuIEh5O1lUPTE7dmFyIHQ9elQoKSxlPTQ7ZnVuY3Rpb24gcihuKXtyZXR1cm4gdChuLGUpfXJldHVybiBIeT1yLEh5fXZhciBHeSxVVDtmdW5jdGlvbiBqeSgpe2lmKFVUKXJldHVybiBHeTtVVD0xO2Z1bmN0aW9uIHQoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGV9fXJldHVybiBHeT10LEd5fXZhciAkeT17ZXhwb3J0czp7fX0sWHksV1Q7ZnVuY3Rpb24gR1ooKXtpZihXVClyZXR1cm4gWHk7V1Q9MTtmdW5jdGlvbiB0KGUpe3JldHVybiBmdW5jdGlvbihyLG4saSl7Zm9yKHZhciBhPS0xLHM9T2JqZWN0KHIpLG89aShyKSxsPW8ubGVuZ3RoO2wtLTspe3ZhciB1PW9bZT9sOisrYV07aWYobihzW3VdLHUscyk9PT0hMSlicmVha31yZXR1cm4gcn19cmV0dXJuIFh5PXQsWHl9dmFyIEt5LEhUO2Z1bmN0aW9uIFp5KCl7aWYoSFQpcmV0dXJuIEt5O0hUPTE7dmFyIHQ9R1ooKSxlPXQoKTtyZXR1cm4gS3k9ZSxLeX12YXIgUXksR1Q7ZnVuY3Rpb24gSnkoKXtpZihHVClyZXR1cm4gUXk7R1Q9MTt2YXIgdD1aeSgpLGU9dHMoKTtmdW5jdGlvbiByKG4saSl7cmV0dXJuIG4mJnQobixpLGUpfXJldHVybiBReT1yLFF5fXZhciB0bSxqVDtmdW5jdGlvbiBqWigpe2lmKGpUKXJldHVybiB0bTtqVD0xO3ZhciB0PW9hKCk7ZnVuY3Rpb24gZShyLG4pe3JldHVybiBmdW5jdGlvbihpLGEpe2lmKGk9PW51bGwpcmV0dXJuIGk7aWYoIXQoaSkpcmV0dXJuIHIoaSxhKTtmb3IodmFyIHM9aS5sZW5ndGgsbz1uP3M6LTEsbD1PYmplY3QoaSk7KG4/by0tOisrbzxzKSYmYShsW29dLG8sbCkhPT0hMTspO3JldHVybiBpfX1yZXR1cm4gdG09ZSx0bX12YXIgZW0sJFQ7ZnVuY3Rpb24gTDEoKXtpZigkVClyZXR1cm4gZW07JFQ9MTt2YXIgdD1KeSgpLGU9alooKSxyPWUodCk7cmV0dXJuIGVtPXIsZW19dmFyIHJtLFhUO2Z1bmN0aW9uIEhzKCl7aWYoWFQpcmV0dXJuIHJtO1hUPTE7ZnVuY3Rpb24gdChlKXtyZXR1cm4gZX1yZXR1cm4gcm09dCxybX12YXIgbm0sS1Q7ZnVuY3Rpb24gWlQoKXtpZihLVClyZXR1cm4gbm07S1Q9MTt2YXIgdD1IcygpO2Z1bmN0aW9uIGUocil7cmV0dXJuIHR5cGVvZiByPT0iZnVuY3Rpb24iP3I6dH1yZXR1cm4gbm09ZSxubX12YXIgaW0sUVQ7ZnVuY3Rpb24gSlQoKXtpZihRVClyZXR1cm4gaW07UVQ9MTt2YXIgdD1OZygpLGU9TDEoKSxyPVpUKCksbj1ncigpO2Z1bmN0aW9uIGkoYSxzKXt2YXIgbz1uKGEpP3Q6ZTtyZXR1cm4gbyhhLHIocykpfXJldHVybiBpbT1pLGltfXZhciB0RTtmdW5jdGlvbiBhbSgpe3JldHVybiB0RXx8KHRFPTEsZnVuY3Rpb24odCl7dC5leHBvcnRzPUpUKCl9KCR5KSksJHkuZXhwb3J0c312YXIgc20sZUU7ZnVuY3Rpb24gJFooKXtpZihlRSlyZXR1cm4gc207ZUU9MTt2YXIgdD1MMSgpO2Z1bmN0aW9uIGUocixuKXt2YXIgaT1bXTtyZXR1cm4gdChyLGZ1bmN0aW9uKGEscyxvKXtuKGEscyxvKSYmaS5wdXNoKGEpfSksaX1yZXR1cm4gc209ZSxzbX12YXIgb20sckU7ZnVuY3Rpb24gWFooKXtpZihyRSlyZXR1cm4gb207ckU9MTt2YXIgdD0iX19sb2Rhc2hfaGFzaF91bmRlZmluZWRfXyI7ZnVuY3Rpb24gZShyKXtyZXR1cm4gdGhpcy5fX2RhdGFfXy5zZXQocix0KSx0aGlzfXJldHVybiBvbT1lLG9tfXZhciBsbSxuRTtmdW5jdGlvbiBLWigpe2lmKG5FKXJldHVybiBsbTtuRT0xO2Z1bmN0aW9uIHQoZSl7cmV0dXJuIHRoaXMuX19kYXRhX18uaGFzKGUpfXJldHVybiBsbT10LGxtfXZhciBjbSxpRTtmdW5jdGlvbiBhRSgpe2lmKGlFKXJldHVybiBjbTtpRT0xO3ZhciB0PVFwLGU9WFooKSxyPUtaKCk7ZnVuY3Rpb24gbihpKXt2YXIgYT0tMSxzPWk9PW51bGw/MDppLmxlbmd0aDtmb3IodGhpcy5fX2RhdGFfXz1uZXcgdDsrK2E8czspdGhpcy5hZGQoaVthXSl9cmV0dXJuIG4ucHJvdG90eXBlLmFkZD1uLnByb3RvdHlwZS5wdXNoPWUsbi5wcm90b3R5cGUuaGFzPXIsY209bixjbX12YXIgdW0sc0U7ZnVuY3Rpb24gWlooKXtpZihzRSlyZXR1cm4gdW07c0U9MTtmdW5jdGlvbiB0KGUscil7Zm9yKHZhciBuPS0xLGk9ZT09bnVsbD8wOmUubGVuZ3RoOysrbjxpOylpZihyKGVbbl0sbixlKSlyZXR1cm4hMDtyZXR1cm4hMX1yZXR1cm4gdW09dCx1bX12YXIgaG0sb0U7ZnVuY3Rpb24gbEUoKXtpZihvRSlyZXR1cm4gaG07b0U9MTtmdW5jdGlvbiB0KGUscil7cmV0dXJuIGUuaGFzKHIpfXJldHVybiBobT10LGhtfXZhciBmbSxjRTtmdW5jdGlvbiB1RSgpe2lmKGNFKXJldHVybiBmbTtjRT0xO3ZhciB0PWFFKCksZT1aWigpLHI9bEUoKSxuPTEsaT0yO2Z1bmN0aW9uIGEocyxvLGwsdSxoLGQpe3ZhciBmPWwmbixwPXMubGVuZ3RoLG09by5sZW5ndGg7aWYocCE9bSYmIShmJiZtPnApKXJldHVybiExO3ZhciBfPWQuZ2V0KHMpLHk9ZC5nZXQobyk7aWYoXyYmeSlyZXR1cm4gXz09byYmeT09czt2YXIgYj0tMSx4PSEwLGs9bCZpP25ldyB0OnZvaWQgMDtmb3IoZC5zZXQocyxvKSxkLnNldChvLHMpOysrYjxwOyl7dmFyIFQ9c1tiXSxDPW9bYl07aWYodSl2YXIgTT1mP3UoQyxULGIsbyxzLGQpOnUoVCxDLGIscyxvLGQpO2lmKE0hPT12b2lkIDApe2lmKE0pY29udGludWU7eD0hMTticmVha31pZihrKXtpZighZShvLGZ1bmN0aW9uKFMsUil7aWYoIXIoayxSKSYmKFQ9PT1TfHxoKFQsUyxsLHUsZCkpKXJldHVybiBrLnB1c2goUil9KSl7eD0hMTticmVha319ZWxzZSBpZighKFQ9PT1DfHxoKFQsQyxsLHUsZCkpKXt4PSExO2JyZWFrfX1yZXR1cm4gZC5kZWxldGUocyksZC5kZWxldGUobykseH1yZXR1cm4gZm09YSxmbX12YXIgZG0saEU7ZnVuY3Rpb24gUVooKXtpZihoRSlyZXR1cm4gZG07aEU9MTtmdW5jdGlvbiB0KGUpe3ZhciByPS0xLG49QXJyYXkoZS5zaXplKTtyZXR1cm4gZS5mb3JFYWNoKGZ1bmN0aW9uKGksYSl7blsrK3JdPVthLGldfSksbn1yZXR1cm4gZG09dCxkbX12YXIgcG0sZkU7ZnVuY3Rpb24gZ20oKXtpZihmRSlyZXR1cm4gcG07ZkU9MTtmdW5jdGlvbiB0KGUpe3ZhciByPS0xLG49QXJyYXkoZS5zaXplKTtyZXR1cm4gZS5mb3JFYWNoKGZ1bmN0aW9uKGkpe25bKytyXT1pfSksbn1yZXR1cm4gcG09dCxwbX12YXIgeW0sZEU7ZnVuY3Rpb24gSlooKXtpZihkRSlyZXR1cm4geW07ZEU9MTt2YXIgdD16byxlPVRUKCkscj1XbyxuPXVFKCksaT1RWigpLGE9Z20oKSxzPTEsbz0yLGw9IltvYmplY3QgQm9vbGVhbl0iLHU9IltvYmplY3QgRGF0ZV0iLGg9IltvYmplY3QgRXJyb3JdIixkPSJbb2JqZWN0IE1hcF0iLGY9IltvYmplY3QgTnVtYmVyXSIscD0iW29iamVjdCBSZWdFeHBdIixtPSJbb2JqZWN0IFNldF0iLF89IltvYmplY3QgU3RyaW5nXSIseT0iW29iamVjdCBTeW1ib2xdIixiPSJbb2JqZWN0IEFycmF5QnVmZmVyXSIseD0iW29iamVjdCBEYXRhVmlld10iLGs9dD90LnByb3RvdHlwZTp2b2lkIDAsVD1rP2sudmFsdWVPZjp2b2lkIDA7ZnVuY3Rpb24gQyhNLFMsUixBLEwsdixCKXtzd2l0Y2goUil7Y2FzZSB4OmlmKE0uYnl0ZUxlbmd0aCE9Uy5ieXRlTGVuZ3RofHxNLmJ5dGVPZmZzZXQhPVMuYnl0ZU9mZnNldClyZXR1cm4hMTtNPU0uYnVmZmVyLFM9Uy5idWZmZXI7Y2FzZSBiOnJldHVybiEoTS5ieXRlTGVuZ3RoIT1TLmJ5dGVMZW5ndGh8fCF2KG5ldyBlKE0pLG5ldyBlKFMpKSk7Y2FzZSBsOmNhc2UgdTpjYXNlIGY6cmV0dXJuIHIoK00sK1MpO2Nhc2UgaDpyZXR1cm4gTS5uYW1lPT1TLm5hbWUmJk0ubWVzc2FnZT09Uy5tZXNzYWdlO2Nhc2UgcDpjYXNlIF86cmV0dXJuIE09PVMrIiI7Y2FzZSBkOnZhciB3PWk7Y2FzZSBtOnZhciBEPUEmcztpZih3fHwodz1hKSxNLnNpemUhPVMuc2l6ZSYmIUQpcmV0dXJuITE7dmFyIE49Qi5nZXQoTSk7aWYoTilyZXR1cm4gTj09UztBfD1vLEIuc2V0KE0sUyk7dmFyIHo9bih3KE0pLHcoUyksQSxMLHYsQik7cmV0dXJuIEIuZGVsZXRlKE0pLHo7Y2FzZSB5OmlmKFQpcmV0dXJuIFQuY2FsbChNKT09VC5jYWxsKFMpfXJldHVybiExfXJldHVybiB5bT1DLHltfXZhciBtbSxwRTtmdW5jdGlvbiB0USgpe2lmKHBFKXJldHVybiBtbTtwRT0xO3ZhciB0PXBUKCksZT0xLHI9T2JqZWN0LnByb3RvdHlwZSxuPXIuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gaShhLHMsbyxsLHUsaCl7dmFyIGQ9byZlLGY9dChhKSxwPWYubGVuZ3RoLG09dChzKSxfPW0ubGVuZ3RoO2lmKHAhPV8mJiFkKXJldHVybiExO2Zvcih2YXIgeT1wO3ktLTspe3ZhciBiPWZbeV07aWYoIShkP2IgaW4gczpuLmNhbGwocyxiKSkpcmV0dXJuITF9dmFyIHg9aC5nZXQoYSksaz1oLmdldChzKTtpZih4JiZrKXJldHVybiB4PT1zJiZrPT1hO3ZhciBUPSEwO2guc2V0KGEscyksaC5zZXQocyxhKTtmb3IodmFyIEM9ZDsrK3k8cDspe2I9Zlt5XTt2YXIgTT1hW2JdLFM9c1tiXTtpZihsKXZhciBSPWQ/bChTLE0sYixzLGEsaCk6bChNLFMsYixhLHMsaCk7aWYoIShSPT09dm9pZCAwP009PT1TfHx1KE0sUyxvLGwsaCk6Uikpe1Q9ITE7YnJlYWt9Q3x8KEM9Yj09ImNvbnN0cnVjdG9yIil9aWYoVCYmIUMpe3ZhciBBPWEuY29uc3RydWN0b3IsTD1zLmNvbnN0cnVjdG9yO0EhPUwmJiJjb25zdHJ1Y3RvciJpbiBhJiYiY29uc3RydWN0b3IiaW4gcyYmISh0eXBlb2YgQT09ImZ1bmN0aW9uIiYmQSBpbnN0YW5jZW9mIEEmJnR5cGVvZiBMPT0iZnVuY3Rpb24iJiZMIGluc3RhbmNlb2YgTCkmJihUPSExKX1yZXR1cm4gaC5kZWxldGUoYSksaC5kZWxldGUocyksVH1yZXR1cm4gbW09aSxtbX12YXIgYm0sZ0U7ZnVuY3Rpb24gZVEoKXtpZihnRSlyZXR1cm4gYm07Z0U9MTt2YXIgdD12MSgpLGU9dUUoKSxyPUpaKCksbj10USgpLGk9ZWwoKSxhPWdyKCkscz10bCgpLG89amMoKSxsPTEsdT0iW29iamVjdCBBcmd1bWVudHNdIixoPSJbb2JqZWN0IEFycmF5XSIsZD0iW29iamVjdCBPYmplY3RdIixmPU9iamVjdC5wcm90b3R5cGUscD1mLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIG0oXyx5LGIseCxrLFQpe3ZhciBDPWEoXyksTT1hKHkpLFM9Qz9oOmkoXyksUj1NP2g6aSh5KTtTPVM9PXU/ZDpTLFI9Uj09dT9kOlI7dmFyIEE9Uz09ZCxMPVI9PWQsdj1TPT1SO2lmKHYmJnMoXykpe2lmKCFzKHkpKXJldHVybiExO0M9ITAsQT0hMX1pZih2JiYhQSlyZXR1cm4gVHx8KFQ9bmV3IHQpLEN8fG8oXyk/ZShfLHksYix4LGssVCk6cihfLHksUyxiLHgsayxUKTtpZighKGImbCkpe3ZhciBCPUEmJnAuY2FsbChfLCJfX3dyYXBwZWRfXyIpLHc9TCYmcC5jYWxsKHksIl9fd3JhcHBlZF9fIik7aWYoQnx8dyl7dmFyIEQ9Qj9fLnZhbHVlKCk6XyxOPXc/eS52YWx1ZSgpOnk7cmV0dXJuIFR8fChUPW5ldyB0KSxrKEQsTixiLHgsVCl9fXJldHVybiB2PyhUfHwoVD1uZXcgdCksbihfLHksYix4LGssVCkpOiExfXJldHVybiBibT1tLGJtfXZhciBfbSx5RTtmdW5jdGlvbiBtRSgpe2lmKHlFKXJldHVybiBfbTt5RT0xO3ZhciB0PWVRKCksZT1GaSgpO2Z1bmN0aW9uIHIobixpLGEscyxvKXtyZXR1cm4gbj09PWk/ITA6bj09bnVsbHx8aT09bnVsbHx8IWUobikmJiFlKGkpP24hPT1uJiZpIT09aTp0KG4saSxhLHMscixvKX1yZXR1cm4gX209cixfbX12YXIgdm0sYkU7ZnVuY3Rpb24gclEoKXtpZihiRSlyZXR1cm4gdm07YkU9MTt2YXIgdD12MSgpLGU9bUUoKSxyPTEsbj0yO2Z1bmN0aW9uIGkoYSxzLG8sbCl7dmFyIHU9by5sZW5ndGgsaD11LGQ9IWw7aWYoYT09bnVsbClyZXR1cm4haDtmb3IoYT1PYmplY3QoYSk7dS0tOyl7dmFyIGY9b1t1XTtpZihkJiZmWzJdP2ZbMV0hPT1hW2ZbMF1dOiEoZlswXWluIGEpKXJldHVybiExfWZvcig7Kyt1PGg7KXtmPW9bdV07dmFyIHA9ZlswXSxtPWFbcF0sXz1mWzFdO2lmKGQmJmZbMl0pe2lmKG09PT12b2lkIDAmJiEocCBpbiBhKSlyZXR1cm4hMX1lbHNle3ZhciB5PW5ldyB0O2lmKGwpdmFyIGI9bChtLF8scCxhLHMseSk7aWYoIShiPT09dm9pZCAwP2UoXyxtLHJ8bixsLHkpOmIpKXJldHVybiExfX1yZXR1cm4hMH1yZXR1cm4gdm09aSx2bX12YXIgeG0sX0U7ZnVuY3Rpb24gdkUoKXtpZihfRSlyZXR1cm4geG07X0U9MTt2YXIgdD1WbjtmdW5jdGlvbiBlKHIpe3JldHVybiByPT09ciYmIXQocil9cmV0dXJuIHhtPWUseG19dmFyIGttLHhFO2Z1bmN0aW9uIG5RKCl7aWYoeEUpcmV0dXJuIGttO3hFPTE7dmFyIHQ9dkUoKSxlPXRzKCk7ZnVuY3Rpb24gcihuKXtmb3IodmFyIGk9ZShuKSxhPWkubGVuZ3RoO2EtLTspe3ZhciBzPWlbYV0sbz1uW3NdO2lbYV09W3Msbyx0KG8pXX1yZXR1cm4gaX1yZXR1cm4ga209cixrbX12YXIgd20sa0U7ZnVuY3Rpb24gd0UoKXtpZihrRSlyZXR1cm4gd207a0U9MTtmdW5jdGlvbiB0KGUscil7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiBuPT1udWxsPyExOm5bZV09PT1yJiYociE9PXZvaWQgMHx8ZSBpbiBPYmplY3QobikpfX1yZXR1cm4gd209dCx3bX12YXIgVG0sVEU7ZnVuY3Rpb24gaVEoKXtpZihURSlyZXR1cm4gVG07VEU9MTt2YXIgdD1yUSgpLGU9blEoKSxyPXdFKCk7ZnVuY3Rpb24gbihpKXt2YXIgYT1lKGkpO3JldHVybiBhLmxlbmd0aD09MSYmYVswXVsyXT9yKGFbMF1bMF0sYVswXVsxXSk6ZnVuY3Rpb24ocyl7cmV0dXJuIHM9PT1pfHx0KHMsaSxhKX19cmV0dXJuIFRtPW4sVG19dmFyIEVtLEVFO2Z1bmN0aW9uIHJsKCl7aWYoRUUpcmV0dXJuIEVtO0VFPTE7dmFyIHQ9UHMsZT1GaSgpLHI9IltvYmplY3QgU3ltYm9sXSI7ZnVuY3Rpb24gbihpKXtyZXR1cm4gdHlwZW9mIGk9PSJzeW1ib2wifHxlKGkpJiZ0KGkpPT1yfXJldHVybiBFbT1uLEVtfXZhciBDbSxDRTtmdW5jdGlvbiBTbSgpe2lmKENFKXJldHVybiBDbTtDRT0xO3ZhciB0PWdyKCksZT1ybCgpLHI9L1wufFxbKD86W15bXF1dKnwoWyInXSkoPzooPyFcMSlbXlxcXXxcXC4pKj9cMSlcXS8sbj0vXlx3KiQvO2Z1bmN0aW9uIGkoYSxzKXtpZih0KGEpKXJldHVybiExO3ZhciBvPXR5cGVvZiBhO3JldHVybiBvPT0ibnVtYmVyInx8bz09InN5bWJvbCJ8fG89PSJib29sZWFuInx8YT09bnVsbHx8ZShhKT8hMDpuLnRlc3QoYSl8fCFyLnRlc3QoYSl8fHMhPW51bGwmJmEgaW4gT2JqZWN0KHMpfXJldHVybiBDbT1pLENtfXZhciBBbSxTRTtmdW5jdGlvbiBhUSgpe2lmKFNFKXJldHVybiBBbTtTRT0xO3ZhciB0PUdmLGU9NTAwO2Z1bmN0aW9uIHIobil7dmFyIGk9dChuLGZ1bmN0aW9uKHMpe3JldHVybiBhLnNpemU9PT1lJiZhLmNsZWFyKCksc30pLGE9aS5jYWNoZTtyZXR1cm4gaX1yZXR1cm4gQW09cixBbX12YXIgTW0sQUU7ZnVuY3Rpb24gc1EoKXtpZihBRSlyZXR1cm4gTW07QUU9MTt2YXIgdD1hUSgpLGU9L1teLltcXV0rfFxbKD86KC0/XGQrKD86XC5cZCspPyl8KFsiJ10pKCg/Oig/IVwyKVteXFxdfFxcLikqPylcMilcXXwoPz0oPzpcLnxcW1xdKSg/OlwufFxbXF18JCkpL2cscj0vXFwoXFwpPy9nLG49dChmdW5jdGlvbihpKXt2YXIgYT1bXTtyZXR1cm4gaS5jaGFyQ29kZUF0KDApPT09NDYmJmEucHVzaCgiIiksaS5yZXBsYWNlKGUsZnVuY3Rpb24ocyxvLGwsdSl7YS5wdXNoKGw/dS5yZXBsYWNlKHIsIiQxIik6b3x8cyl9KSxhfSk7cmV0dXJuIE1tPW4sTW19dmFyIExtLE1FO2Z1bmN0aW9uIFIxKCl7aWYoTUUpcmV0dXJuIExtO01FPTE7ZnVuY3Rpb24gdChlLHIpe2Zvcih2YXIgbj0tMSxpPWU9PW51bGw/MDplLmxlbmd0aCxhPUFycmF5KGkpOysrbjxpOylhW25dPXIoZVtuXSxuLGUpO3JldHVybiBhfXJldHVybiBMbT10LExtfXZhciBSbSxMRTtmdW5jdGlvbiBvUSgpe2lmKExFKXJldHVybiBSbTtMRT0xO3ZhciB0PXpvLGU9UjEoKSxyPWdyKCksbj1ybCgpLGk9MS8wLGE9dD90LnByb3RvdHlwZTp2b2lkIDAscz1hP2EudG9TdHJpbmc6dm9pZCAwO2Z1bmN0aW9uIG8obCl7aWYodHlwZW9mIGw9PSJzdHJpbmciKXJldHVybiBsO2lmKHIobCkpcmV0dXJuIGUobCxvKSsiIjtpZihuKGwpKXJldHVybiBzP3MuY2FsbChsKToiIjt2YXIgdT1sKyIiO3JldHVybiB1PT0iMCImJjEvbD09LWk/Ii0wIjp1fXJldHVybiBSbT1vLFJtfXZhciBJbSxSRTtmdW5jdGlvbiBJRSgpe2lmKFJFKXJldHVybiBJbTtSRT0xO3ZhciB0PW9RKCk7ZnVuY3Rpb24gZShyKXtyZXR1cm4gcj09bnVsbD8iIjp0KHIpfXJldHVybiBJbT1lLEltfXZhciBObSxORTtmdW5jdGlvbiBJMSgpe2lmKE5FKXJldHVybiBObTtORT0xO3ZhciB0PWdyKCksZT1TbSgpLHI9c1EoKSxuPUlFKCk7ZnVuY3Rpb24gaShhLHMpe3JldHVybiB0KGEpP2E6ZShhLHMpP1thXTpyKG4oYSkpfXJldHVybiBObT1pLE5tfXZhciBCbSxCRTtmdW5jdGlvbiAkYygpe2lmKEJFKXJldHVybiBCbTtCRT0xO3ZhciB0PXJsKCksZT0xLzA7ZnVuY3Rpb24gcihuKXtpZih0eXBlb2Ygbj09InN0cmluZyJ8fHQobikpcmV0dXJuIG47dmFyIGk9bisiIjtyZXR1cm4gaT09IjAiJiYxL249PS1lPyItMCI6aX1yZXR1cm4gQm09cixCbX12YXIgRG0sREU7ZnVuY3Rpb24gTjEoKXtpZihERSlyZXR1cm4gRG07REU9MTt2YXIgdD1JMSgpLGU9JGMoKTtmdW5jdGlvbiByKG4saSl7aT10KGksbik7Zm9yKHZhciBhPTAscz1pLmxlbmd0aDtuIT1udWxsJiZhPHM7KW49bltlKGlbYSsrXSldO3JldHVybiBhJiZhPT1zP246dm9pZCAwfXJldHVybiBEbT1yLERtfXZhciBPbSxPRTtmdW5jdGlvbiBsUSgpe2lmKE9FKXJldHVybiBPbTtPRT0xO3ZhciB0PU4xKCk7ZnVuY3Rpb24gZShyLG4saSl7dmFyIGE9cj09bnVsbD92b2lkIDA6dChyLG4pO3JldHVybiBhPT09dm9pZCAwP2k6YX1yZXR1cm4gT209ZSxPbX12YXIgRm0sRkU7ZnVuY3Rpb24gY1EoKXtpZihGRSlyZXR1cm4gRm07RkU9MTtmdW5jdGlvbiB0KGUscil7cmV0dXJuIGUhPW51bGwmJnIgaW4gT2JqZWN0KGUpfXJldHVybiBGbT10LEZtfXZhciBQbSxQRTtmdW5jdGlvbiBxRSgpe2lmKFBFKXJldHVybiBQbTtQRT0xO3ZhciB0PUkxKCksZT1HYygpLHI9Z3IoKSxuPVQxKCksaT1HZygpLGE9JGMoKTtmdW5jdGlvbiBzKG8sbCx1KXtsPXQobCxvKTtmb3IodmFyIGg9LTEsZD1sLmxlbmd0aCxmPSExOysraDxkOyl7dmFyIHA9YShsW2hdKTtpZighKGY9byE9bnVsbCYmdShvLHApKSlicmVhaztvPW9bcF19cmV0dXJuIGZ8fCsraCE9ZD9mOihkPW89PW51bGw/MDpvLmxlbmd0aCwhIWQmJmkoZCkmJm4ocCxkKSYmKHIobyl8fGUobykpKX1yZXR1cm4gUG09cyxQbX12YXIgcW0sVkU7ZnVuY3Rpb24gekUoKXtpZihWRSlyZXR1cm4gcW07VkU9MTt2YXIgdD1jUSgpLGU9cUUoKTtmdW5jdGlvbiByKG4saSl7cmV0dXJuIG4hPW51bGwmJmUobixpLHQpfXJldHVybiBxbT1yLHFtfXZhciBWbSxZRTtmdW5jdGlvbiB1USgpe2lmKFlFKXJldHVybiBWbTtZRT0xO3ZhciB0PW1FKCksZT1sUSgpLHI9ekUoKSxuPVNtKCksaT12RSgpLGE9d0UoKSxzPSRjKCksbz0xLGw9MjtmdW5jdGlvbiB1KGgsZCl7cmV0dXJuIG4oaCkmJmkoZCk/YShzKGgpLGQpOmZ1bmN0aW9uKGYpe3ZhciBwPWUoZixoKTtyZXR1cm4gcD09PXZvaWQgMCYmcD09PWQ/cihmLGgpOnQoZCxwLG98bCl9fXJldHVybiBWbT11LFZtfXZhciB6bSxVRTtmdW5jdGlvbiBXRSgpe2lmKFVFKXJldHVybiB6bTtVRT0xO2Z1bmN0aW9uIHQoZSl7cmV0dXJuIGZ1bmN0aW9uKHIpe3JldHVybiByPT1udWxsP3ZvaWQgMDpyW2VdfX1yZXR1cm4gem09dCx6bX12YXIgWW0sSEU7ZnVuY3Rpb24gaFEoKXtpZihIRSlyZXR1cm4gWW07SEU9MTt2YXIgdD1OMSgpO2Z1bmN0aW9uIGUocil7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0KG4scil9fXJldHVybiBZbT1lLFltfXZhciBVbSxHRTtmdW5jdGlvbiBmUSgpe2lmKEdFKXJldHVybiBVbTtHRT0xO3ZhciB0PVdFKCksZT1oUSgpLHI9U20oKSxuPSRjKCk7ZnVuY3Rpb24gaShhKXtyZXR1cm4gcihhKT90KG4oYSkpOmUoYSl9cmV0dXJuIFVtPWksVW19dmFyIFdtLGpFO2Z1bmN0aW9uIGxhKCl7aWYoakUpcmV0dXJuIFdtO2pFPTE7dmFyIHQ9aVEoKSxlPXVRKCkscj1IcygpLG49Z3IoKSxpPWZRKCk7ZnVuY3Rpb24gYShzKXtyZXR1cm4gdHlwZW9mIHM9PSJmdW5jdGlvbiI/czpzPT1udWxsP3I6dHlwZW9mIHM9PSJvYmplY3QiP24ocyk/ZShzWzBdLHNbMV0pOnQocyk6aShzKX1yZXR1cm4gV209YSxXbX12YXIgSG0sJEU7ZnVuY3Rpb24gWEUoKXtpZigkRSlyZXR1cm4gSG07JEU9MTt2YXIgdD1lVCgpLGU9JFooKSxyPWxhKCksbj1ncigpO2Z1bmN0aW9uIGkoYSxzKXt2YXIgbz1uKGEpP3Q6ZTtyZXR1cm4gbyhhLHIocywzKSl9cmV0dXJuIEhtPWksSG19dmFyIEdtLEtFO2Z1bmN0aW9uIGRRKCl7aWYoS0UpcmV0dXJuIEdtO0tFPTE7dmFyIHQ9T2JqZWN0LnByb3RvdHlwZSxlPXQuaGFzT3duUHJvcGVydHk7ZnVuY3Rpb24gcihuLGkpe3JldHVybiBuIT1udWxsJiZlLmNhbGwobixpKX1yZXR1cm4gR209cixHbX12YXIgam0sWkU7ZnVuY3Rpb24gJG0oKXtpZihaRSlyZXR1cm4gam07WkU9MTt2YXIgdD1kUSgpLGU9cUUoKTtmdW5jdGlvbiByKG4saSl7cmV0dXJuIG4hPW51bGwmJmUobixpLHQpfXJldHVybiBqbT1yLGptfXZhciBYbSxRRTtmdW5jdGlvbiBwUSgpe2lmKFFFKXJldHVybiBYbTtRRT0xO3ZhciB0PXJ5KCksZT1lbCgpLHI9R2MoKSxuPWdyKCksaT1vYSgpLGE9dGwoKSxzPVMxKCksbz1qYygpLGw9IltvYmplY3QgTWFwXSIsdT0iW29iamVjdCBTZXRdIixoPU9iamVjdC5wcm90b3R5cGUsZD1oLmhhc093blByb3BlcnR5O2Z1bmN0aW9uIGYocCl7aWYocD09bnVsbClyZXR1cm4hMDtpZihpKHApJiYobihwKXx8dHlwZW9mIHA9PSJzdHJpbmcifHx0eXBlb2YgcC5zcGxpY2U9PSJmdW5jdGlvbiJ8fGEocCl8fG8ocCl8fHIocCkpKXJldHVybiFwLmxlbmd0aDt2YXIgbT1lKHApO2lmKG09PWx8fG09PXUpcmV0dXJuIXAuc2l6ZTtpZihzKHApKXJldHVybiF0KHApLmxlbmd0aDtmb3IodmFyIF8gaW4gcClpZihkLmNhbGwocCxfKSlyZXR1cm4hMTtyZXR1cm4hMH1yZXR1cm4gWG09ZixYbX12YXIgS20sSkU7ZnVuY3Rpb24gdEMoKXtpZihKRSlyZXR1cm4gS207SkU9MTtmdW5jdGlvbiB0KGUpe3JldHVybiBlPT09dm9pZCAwfXJldHVybiBLbT10LEttfXZhciBabSxlQztmdW5jdGlvbiByQygpe2lmKGVDKXJldHVybiBabTtlQz0xO3ZhciB0PUwxKCksZT1vYSgpO2Z1bmN0aW9uIHIobixpKXt2YXIgYT0tMSxzPWUobik/QXJyYXkobi5sZW5ndGgpOltdO3JldHVybiB0KG4sZnVuY3Rpb24obyxsLHUpe3NbKythXT1pKG8sbCx1KX0pLHN9cmV0dXJuIFptPXIsWm19dmFyIFFtLG5DO2Z1bmN0aW9uIGlDKCl7aWYobkMpcmV0dXJuIFFtO25DPTE7dmFyIHQ9UjEoKSxlPWxhKCkscj1yQygpLG49Z3IoKTtmdW5jdGlvbiBpKGEscyl7dmFyIG89bihhKT90OnI7cmV0dXJuIG8oYSxlKHMsMykpfXJldHVybiBRbT1pLFFtfXZhciBKbSxhQztmdW5jdGlvbiBnUSgpe2lmKGFDKXJldHVybiBKbTthQz0xO2Z1bmN0aW9uIHQoZSxyLG4saSl7dmFyIGE9LTEscz1lPT1udWxsPzA6ZS5sZW5ndGg7Zm9yKGkmJnMmJihuPWVbKythXSk7KythPHM7KW49cihuLGVbYV0sYSxlKTtyZXR1cm4gbn1yZXR1cm4gSm09dCxKbX12YXIgdGIsc0M7ZnVuY3Rpb24geVEoKXtpZihzQylyZXR1cm4gdGI7c0M9MTtmdW5jdGlvbiB0KGUscixuLGksYSl7cmV0dXJuIGEoZSxmdW5jdGlvbihzLG8sbCl7bj1pPyhpPSExLHMpOnIobixzLG8sbCl9KSxufXJldHVybiB0Yj10LHRifXZhciBlYixvQztmdW5jdGlvbiBsQygpe2lmKG9DKXJldHVybiBlYjtvQz0xO3ZhciB0PWdRKCksZT1MMSgpLHI9bGEoKSxuPXlRKCksaT1ncigpO2Z1bmN0aW9uIGEocyxvLGwpe3ZhciB1PWkocyk/dDpuLGg9YXJndW1lbnRzLmxlbmd0aDwzO3JldHVybiB1KHMscihvLDQpLGwsaCxlKX1yZXR1cm4gZWI9YSxlYn12YXIgcmIsY0M7ZnVuY3Rpb24gbVEoKXtpZihjQylyZXR1cm4gcmI7Y0M9MTt2YXIgdD1QcyxlPWdyKCkscj1GaSgpLG49IltvYmplY3QgU3RyaW5nXSI7ZnVuY3Rpb24gaShhKXtyZXR1cm4gdHlwZW9mIGE9PSJzdHJpbmcifHwhZShhKSYmcihhKSYmdChhKT09bn1yZXR1cm4gcmI9aSxyYn12YXIgbmIsdUM7ZnVuY3Rpb24gYlEoKXtpZih1QylyZXR1cm4gbmI7dUM9MTt2YXIgdD1XRSgpLGU9dCgibGVuZ3RoIik7cmV0dXJuIG5iPWUsbmJ9dmFyIGliLGhDO2Z1bmN0aW9uIF9RKCl7aWYoaEMpcmV0dXJuIGliO2hDPTE7dmFyIHQ9IlxcdWQ4MDAtXFx1ZGZmZiIsZT0iXFx1MDMwMC1cXHUwMzZmIixyPSJcXHVmZTIwLVxcdWZlMmYiLG49IlxcdTIwZDAtXFx1MjBmZiIsaT1lK3IrbixhPSJcXHVmZTBlXFx1ZmUwZiIscz0iXFx1MjAwZCIsbz1SZWdFeHAoIlsiK3MrdCtpK2ErIl0iKTtmdW5jdGlvbiBsKHUpe3JldHVybiBvLnRlc3QodSl9cmV0dXJuIGliPWwsaWJ9dmFyIGFiLGZDO2Z1bmN0aW9uIHZRKCl7aWYoZkMpcmV0dXJuIGFiO2ZDPTE7dmFyIHQ9IlxcdWQ4MDAtXFx1ZGZmZiIsZT0iXFx1MDMwMC1cXHUwMzZmIixyPSJcXHVmZTIwLVxcdWZlMmYiLG49IlxcdTIwZDAtXFx1MjBmZiIsaT1lK3IrbixhPSJcXHVmZTBlXFx1ZmUwZiIscz0iWyIrdCsiXSIsbz0iWyIraSsiXSIsbD0iXFx1ZDgzY1tcXHVkZmZiLVxcdWRmZmZdIix1PSIoPzoiK28rInwiK2wrIikiLGg9IlteIit0KyJdIixkPSIoPzpcXHVkODNjW1xcdWRkZTYtXFx1ZGRmZl0pezJ9IixmPSJbXFx1ZDgwMC1cXHVkYmZmXVtcXHVkYzAwLVxcdWRmZmZdIixwPSJcXHUyMDBkIixtPXUrIj8iLF89IlsiK2ErIl0/Iix5PSIoPzoiK3ArIig/OiIrW2gsZCxmXS5qb2luKCJ8IikrIikiK18rbSsiKSoiLGI9XyttK3kseD0iKD86IitbaCtvKyI/IixvLGQsZixzXS5qb2luKCJ8IikrIikiLGs9UmVnRXhwKGwrIig/PSIrbCsiKXwiK3grYiwiZyIpO2Z1bmN0aW9uIFQoQyl7Zm9yKHZhciBNPWsubGFzdEluZGV4PTA7ay50ZXN0KEMpOykrK007cmV0dXJuIE19cmV0dXJuIGFiPVQsYWJ9dmFyIHNiLGRDO2Z1bmN0aW9uIHhRKCl7aWYoZEMpcmV0dXJuIHNiO2RDPTE7dmFyIHQ9YlEoKSxlPV9RKCkscj12USgpO2Z1bmN0aW9uIG4oaSl7cmV0dXJuIGUoaSk/cihpKTp0KGkpfXJldHVybiBzYj1uLHNifXZhciBvYixwQztmdW5jdGlvbiBrUSgpe2lmKHBDKXJldHVybiBvYjtwQz0xO3ZhciB0PXJ5KCksZT1lbCgpLHI9b2EoKSxuPW1RKCksaT14USgpLGE9IltvYmplY3QgTWFwXSIscz0iW29iamVjdCBTZXRdIjtmdW5jdGlvbiBvKGwpe2lmKGw9PW51bGwpcmV0dXJuIDA7aWYocihsKSlyZXR1cm4gbihsKT9pKGwpOmwubGVuZ3RoO3ZhciB1PWUobCk7cmV0dXJuIHU9PWF8fHU9PXM/bC5zaXplOnQobCkubGVuZ3RofXJldHVybiBvYj1vLG9ifXZhciBsYixnQztmdW5jdGlvbiB3USgpe2lmKGdDKXJldHVybiBsYjtnQz0xO3ZhciB0PU5nKCksZT1OVCgpLHI9SnkoKSxuPWxhKCksaT1NMSgpLGE9Z3IoKSxzPXRsKCksbz1ZbyxsPVZuLHU9amMoKTtmdW5jdGlvbiBoKGQsZixwKXt2YXIgbT1hKGQpLF89bXx8cyhkKXx8dShkKTtpZihmPW4oZiw0KSxwPT1udWxsKXt2YXIgeT1kJiZkLmNvbnN0cnVjdG9yO18/cD1tP25ldyB5OltdOmwoZCk/cD1vKHkpP2UoaShkKSk6e306cD17fX1yZXR1cm4oXz90OnIpKGQsZnVuY3Rpb24oYix4LGspe3JldHVybiBmKHAsYix4LGspfSkscH1yZXR1cm4gbGI9aCxsYn12YXIgY2IseUM7ZnVuY3Rpb24gVFEoKXtpZih5QylyZXR1cm4gY2I7eUM9MTt2YXIgdD16byxlPUdjKCkscj1ncigpLG49dD90LmlzQ29uY2F0U3ByZWFkYWJsZTp2b2lkIDA7ZnVuY3Rpb24gaShhKXtyZXR1cm4gcihhKXx8ZShhKXx8ISEobiYmYSYmYVtuXSl9cmV0dXJuIGNiPWksY2J9dmFyIHViLG1DO2Z1bmN0aW9uIGhiKCl7aWYobUMpcmV0dXJuIHViO21DPTE7dmFyIHQ9bXkoKSxlPVRRKCk7ZnVuY3Rpb24gcihuLGksYSxzLG8pe3ZhciBsPS0xLHU9bi5sZW5ndGg7Zm9yKGF8fChhPWUpLG98fChvPVtdKTsrK2w8dTspe3ZhciBoPW5bbF07aT4wJiZhKGgpP2k+MT9yKGgsaS0xLGEscyxvKTp0KG8saCk6c3x8KG9bby5sZW5ndGhdPWgpfXJldHVybiBvfXJldHVybiB1Yj1yLHVifXZhciBmYixiQztmdW5jdGlvbiBFUSgpe2lmKGJDKXJldHVybiBmYjtiQz0xO2Z1bmN0aW9uIHQoZSxyLG4pe3N3aXRjaChuLmxlbmd0aCl7Y2FzZSAwOnJldHVybiBlLmNhbGwocik7Y2FzZSAxOnJldHVybiBlLmNhbGwocixuWzBdKTtjYXNlIDI6cmV0dXJuIGUuY2FsbChyLG5bMF0sblsxXSk7Y2FzZSAzOnJldHVybiBlLmNhbGwocixuWzBdLG5bMV0sblsyXSl9cmV0dXJuIGUuYXBwbHkocixuKX1yZXR1cm4gZmI9dCxmYn12YXIgZGIsX0M7ZnVuY3Rpb24gdkMoKXtpZihfQylyZXR1cm4gZGI7X0M9MTt2YXIgdD1FUSgpLGU9TWF0aC5tYXg7ZnVuY3Rpb24gcihuLGksYSl7cmV0dXJuIGk9ZShpPT09dm9pZCAwP24ubGVuZ3RoLTE6aSwwKSxmdW5jdGlvbigpe2Zvcih2YXIgcz1hcmd1bWVudHMsbz0tMSxsPWUocy5sZW5ndGgtaSwwKSx1PUFycmF5KGwpOysrbzxsOyl1W29dPXNbaStvXTtvPS0xO2Zvcih2YXIgaD1BcnJheShpKzEpOysrbzxpOyloW29dPXNbb107cmV0dXJuIGhbaV09YSh1KSx0KG4sdGhpcyxoKX19cmV0dXJuIGRiPXIsZGJ9dmFyIHBiLHhDO2Z1bmN0aW9uIENRKCl7aWYoeEMpcmV0dXJuIHBiO3hDPTE7dmFyIHQ9ankoKSxlPV85KCkscj1IcygpLG49ZT9mdW5jdGlvbihpLGEpe3JldHVybiBlKGksInRvU3RyaW5nIix7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITEsdmFsdWU6dChhKSx3cml0YWJsZTohMH0pfTpyO3JldHVybiBwYj1uLHBifXZhciBnYixrQztmdW5jdGlvbiBTUSgpe2lmKGtDKXJldHVybiBnYjtrQz0xO3ZhciB0PTgwMCxlPTE2LHI9RGF0ZS5ub3c7ZnVuY3Rpb24gbihpKXt2YXIgYT0wLHM9MDtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbz1yKCksbD1lLShvLXMpO2lmKHM9byxsPjApe2lmKCsrYT49dClyZXR1cm4gYXJndW1lbnRzWzBdfWVsc2UgYT0wO3JldHVybiBpLmFwcGx5KHZvaWQgMCxhcmd1bWVudHMpfX1yZXR1cm4gZ2I9bixnYn12YXIgeWIsd0M7ZnVuY3Rpb24gVEMoKXtpZih3QylyZXR1cm4geWI7d0M9MTt2YXIgdD1DUSgpLGU9U1EoKSxyPWUodCk7cmV0dXJuIHliPXIseWJ9dmFyIG1iLEVDO2Z1bmN0aW9uIEIxKCl7aWYoRUMpcmV0dXJuIG1iO0VDPTE7dmFyIHQ9SHMoKSxlPXZDKCkscj1UQygpO2Z1bmN0aW9uIG4oaSxhKXtyZXR1cm4gcihlKGksYSx0KSxpKyIiKX1yZXR1cm4gbWI9bixtYn12YXIgYmIsQ0M7ZnVuY3Rpb24gU0MoKXtpZihDQylyZXR1cm4gYmI7Q0M9MTtmdW5jdGlvbiB0KGUscixuLGkpe2Zvcih2YXIgYT1lLmxlbmd0aCxzPW4rKGk/MTotMSk7aT9zLS06KytzPGE7KWlmKHIoZVtzXSxzLGUpKXJldHVybiBzO3JldHVybi0xfXJldHVybiBiYj10LGJifXZhciBfYixBQztmdW5jdGlvbiBBUSgpe2lmKEFDKXJldHVybiBfYjtBQz0xO2Z1bmN0aW9uIHQoZSl7cmV0dXJuIGUhPT1lfXJldHVybiBfYj10LF9ifXZhciB2YixNQztmdW5jdGlvbiBNUSgpe2lmKE1DKXJldHVybiB2YjtNQz0xO2Z1bmN0aW9uIHQoZSxyLG4pe2Zvcih2YXIgaT1uLTEsYT1lLmxlbmd0aDsrK2k8YTspaWYoZVtpXT09PXIpcmV0dXJuIGk7cmV0dXJuLTF9cmV0dXJuIHZiPXQsdmJ9dmFyIHhiLExDO2Z1bmN0aW9uIExRKCl7aWYoTEMpcmV0dXJuIHhiO0xDPTE7dmFyIHQ9U0MoKSxlPUFRKCkscj1NUSgpO2Z1bmN0aW9uIG4oaSxhLHMpe3JldHVybiBhPT09YT9yKGksYSxzKTp0KGksZSxzKX1yZXR1cm4geGI9bix4Yn12YXIga2IsUkM7ZnVuY3Rpb24gUlEoKXtpZihSQylyZXR1cm4ga2I7UkM9MTt2YXIgdD1MUSgpO2Z1bmN0aW9uIGUocixuKXt2YXIgaT1yPT1udWxsPzA6ci5sZW5ndGg7cmV0dXJuISFpJiZ0KHIsbiwwKT4tMX1yZXR1cm4ga2I9ZSxrYn12YXIgd2IsSUM7ZnVuY3Rpb24gSVEoKXtpZihJQylyZXR1cm4gd2I7SUM9MTtmdW5jdGlvbiB0KGUscixuKXtmb3IodmFyIGk9LTEsYT1lPT1udWxsPzA6ZS5sZW5ndGg7KytpPGE7KWlmKG4ocixlW2ldKSlyZXR1cm4hMDtyZXR1cm4hMX1yZXR1cm4gd2I9dCx3Yn12YXIgVGIsTkM7ZnVuY3Rpb24gTlEoKXtpZihOQylyZXR1cm4gVGI7TkM9MTtmdW5jdGlvbiB0KCl7fXJldHVybiBUYj10LFRifXZhciBFYixCQztmdW5jdGlvbiBCUSgpe2lmKEJDKXJldHVybiBFYjtCQz0xO3ZhciB0PV9UKCksZT1OUSgpLHI9Z20oKSxuPTEvMCxpPXQmJjEvcihuZXcgdChbLC0wXSkpWzFdPT1uP2Z1bmN0aW9uKGEpe3JldHVybiBuZXcgdChhKX06ZTtyZXR1cm4gRWI9aSxFYn12YXIgQ2IsREM7ZnVuY3Rpb24gRFEoKXtpZihEQylyZXR1cm4gQ2I7REM9MTt2YXIgdD1hRSgpLGU9UlEoKSxyPUlRKCksbj1sRSgpLGk9QlEoKSxhPWdtKCkscz0yMDA7ZnVuY3Rpb24gbyhsLHUsaCl7dmFyIGQ9LTEsZj1lLHA9bC5sZW5ndGgsbT0hMCxfPVtdLHk9XztpZihoKW09ITEsZj1yO2Vsc2UgaWYocD49cyl7dmFyIGI9dT9udWxsOmkobCk7aWYoYilyZXR1cm4gYShiKTttPSExLGY9bix5PW5ldyB0fWVsc2UgeT11P1tdOl87dDpmb3IoOysrZDxwOyl7dmFyIHg9bFtkXSxrPXU/dSh4KTp4O2lmKHg9aHx8eCE9PTA/eDowLG0mJms9PT1rKXtmb3IodmFyIFQ9eS5sZW5ndGg7VC0tOylpZih5W1RdPT09ayljb250aW51ZSB0O3UmJnkucHVzaChrKSxfLnB1c2goeCl9ZWxzZSBmKHksayxoKXx8KHkhPT1fJiZ5LnB1c2goayksXy5wdXNoKHgpKX1yZXR1cm4gX31yZXR1cm4gQ2I9byxDYn12YXIgU2IsT0M7ZnVuY3Rpb24gRkMoKXtpZihPQylyZXR1cm4gU2I7T0M9MTt2YXIgdD1vYSgpLGU9RmkoKTtmdW5jdGlvbiByKG4pe3JldHVybiBlKG4pJiZ0KG4pfXJldHVybiBTYj1yLFNifXZhciBBYixQQztmdW5jdGlvbiBPUSgpe2lmKFBDKXJldHVybiBBYjtQQz0xO3ZhciB0PWhiKCksZT1CMSgpLHI9RFEoKSxuPUZDKCksaT1lKGZ1bmN0aW9uKGEpe3JldHVybiByKHQoYSwxLG4sITApKX0pO3JldHVybiBBYj1pLEFifXZhciBNYixxQztmdW5jdGlvbiBGUSgpe2lmKHFDKXJldHVybiBNYjtxQz0xO3ZhciB0PVIxKCk7ZnVuY3Rpb24gZShyLG4pe3JldHVybiB0KG4sZnVuY3Rpb24oaSl7cmV0dXJuIHJbaV19KX1yZXR1cm4gTWI9ZSxNYn12YXIgTGIsVkM7ZnVuY3Rpb24gekMoKXtpZihWQylyZXR1cm4gTGI7VkM9MTt2YXIgdD1GUSgpLGU9dHMoKTtmdW5jdGlvbiByKG4pe3JldHVybiBuPT1udWxsP1tdOnQobixlKG4pKX1yZXR1cm4gTGI9cixMYn12YXIgRDE7aWYodHlwZW9mIGZuPT0iZnVuY3Rpb24iKXRyeXtEMT17Y2xvbmU6SFooKSxjb25zdGFudDpqeSgpLGVhY2g6YW0oKSxmaWx0ZXI6WEUoKSxoYXM6JG0oKSxpc0FycmF5OmdyKCksaXNFbXB0eTpwUSgpLGlzRnVuY3Rpb246WW8saXNVbmRlZmluZWQ6dEMoKSxrZXlzOnRzKCksbWFwOmlDKCkscmVkdWNlOmxDKCksc2l6ZTprUSgpLHRyYW5zZm9ybTp3USgpLHVuaW9uOk9RKCksdmFsdWVzOnpDKCl9fWNhdGNoe31EMXx8KEQxPXdpbmRvdy5fKTt2YXIgV249RDEsX2U9V24sUmI9TGUsUFE9IlwwIixHcz0iXDAiLFlDPSIBIjtmdW5jdGlvbiBMZSh0KXt0aGlzLl9pc0RpcmVjdGVkPV9lLmhhcyh0LCJkaXJlY3RlZCIpP3QuZGlyZWN0ZWQ6ITAsdGhpcy5faXNNdWx0aWdyYXBoPV9lLmhhcyh0LCJtdWx0aWdyYXBoIik/dC5tdWx0aWdyYXBoOiExLHRoaXMuX2lzQ29tcG91bmQ9X2UuaGFzKHQsImNvbXBvdW5kIik/dC5jb21wb3VuZDohMSx0aGlzLl9sYWJlbD12b2lkIDAsdGhpcy5fZGVmYXVsdE5vZGVMYWJlbEZuPV9lLmNvbnN0YW50KHZvaWQgMCksdGhpcy5fZGVmYXVsdEVkZ2VMYWJlbEZuPV9lLmNvbnN0YW50KHZvaWQgMCksdGhpcy5fbm9kZXM9e30sdGhpcy5faXNDb21wb3VuZCYmKHRoaXMuX3BhcmVudD17fSx0aGlzLl9jaGlsZHJlbj17fSx0aGlzLl9jaGlsZHJlbltHc109e30pLHRoaXMuX2luPXt9LHRoaXMuX3ByZWRzPXt9LHRoaXMuX291dD17fSx0aGlzLl9zdWNzPXt9LHRoaXMuX2VkZ2VPYmpzPXt9LHRoaXMuX2VkZ2VMYWJlbHM9e319TGUucHJvdG90eXBlLl9ub2RlQ291bnQ9MCxMZS5wcm90b3R5cGUuX2VkZ2VDb3VudD0wLExlLnByb3RvdHlwZS5pc0RpcmVjdGVkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lzRGlyZWN0ZWR9LExlLnByb3RvdHlwZS5pc011bHRpZ3JhcGg9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNNdWx0aWdyYXBofSxMZS5wcm90b3R5cGUuaXNDb21wb3VuZD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9pc0NvbXBvdW5kfSxMZS5wcm90b3R5cGUuc2V0R3JhcGg9ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2xhYmVsPXQsdGhpc30sTGUucHJvdG90eXBlLmdyYXBoPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2xhYmVsfSxMZS5wcm90b3R5cGUuc2V0RGVmYXVsdE5vZGVMYWJlbD1mdW5jdGlvbih0KXtyZXR1cm4gX2UuaXNGdW5jdGlvbih0KXx8KHQ9X2UuY29uc3RhbnQodCkpLHRoaXMuX2RlZmF1bHROb2RlTGFiZWxGbj10LHRoaXN9LExlLnByb3RvdHlwZS5ub2RlQ291bnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbm9kZUNvdW50fSxMZS5wcm90b3R5cGUubm9kZXM9ZnVuY3Rpb24oKXtyZXR1cm4gX2Uua2V5cyh0aGlzLl9ub2Rlcyl9LExlLnByb3RvdHlwZS5zb3VyY2VzPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm4gX2UuZmlsdGVyKHRoaXMubm9kZXMoKSxmdW5jdGlvbihlKXtyZXR1cm4gX2UuaXNFbXB0eSh0Ll9pbltlXSl9KX0sTGUucHJvdG90eXBlLnNpbmtzPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztyZXR1cm4gX2UuZmlsdGVyKHRoaXMubm9kZXMoKSxmdW5jdGlvbihlKXtyZXR1cm4gX2UuaXNFbXB0eSh0Ll9vdXRbZV0pfSl9LExlLnByb3RvdHlwZS5zZXROb2Rlcz1mdW5jdGlvbih0LGUpe3ZhciByPWFyZ3VtZW50cyxuPXRoaXM7cmV0dXJuIF9lLmVhY2godCxmdW5jdGlvbihpKXtyLmxlbmd0aD4xP24uc2V0Tm9kZShpLGUpOm4uc2V0Tm9kZShpKX0pLHRoaXN9LExlLnByb3RvdHlwZS5zZXROb2RlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIF9lLmhhcyh0aGlzLl9ub2Rlcyx0KT8oYXJndW1lbnRzLmxlbmd0aD4xJiYodGhpcy5fbm9kZXNbdF09ZSksdGhpcyk6KHRoaXMuX25vZGVzW3RdPWFyZ3VtZW50cy5sZW5ndGg+MT9lOnRoaXMuX2RlZmF1bHROb2RlTGFiZWxGbih0KSx0aGlzLl9pc0NvbXBvdW5kJiYodGhpcy5fcGFyZW50W3RdPUdzLHRoaXMuX2NoaWxkcmVuW3RdPXt9LHRoaXMuX2NoaWxkcmVuW0dzXVt0XT0hMCksdGhpcy5faW5bdF09e30sdGhpcy5fcHJlZHNbdF09e30sdGhpcy5fb3V0W3RdPXt9LHRoaXMuX3N1Y3NbdF09e30sKyt0aGlzLl9ub2RlQ291bnQsdGhpcyl9LExlLnByb3RvdHlwZS5ub2RlPWZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9ub2Rlc1t0XX0sTGUucHJvdG90eXBlLmhhc05vZGU9ZnVuY3Rpb24odCl7cmV0dXJuIF9lLmhhcyh0aGlzLl9ub2Rlcyx0KX0sTGUucHJvdG90eXBlLnJlbW92ZU5vZGU9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcztpZihfZS5oYXModGhpcy5fbm9kZXMsdCkpe3ZhciByPWZ1bmN0aW9uKG4pe2UucmVtb3ZlRWRnZShlLl9lZGdlT2Jqc1tuXSl9O2RlbGV0ZSB0aGlzLl9ub2Rlc1t0XSx0aGlzLl9pc0NvbXBvdW5kJiYodGhpcy5fcmVtb3ZlRnJvbVBhcmVudHNDaGlsZExpc3QodCksZGVsZXRlIHRoaXMuX3BhcmVudFt0XSxfZS5lYWNoKHRoaXMuY2hpbGRyZW4odCksZnVuY3Rpb24obil7ZS5zZXRQYXJlbnQobil9KSxkZWxldGUgdGhpcy5fY2hpbGRyZW5bdF0pLF9lLmVhY2goX2Uua2V5cyh0aGlzLl9pblt0XSksciksZGVsZXRlIHRoaXMuX2luW3RdLGRlbGV0ZSB0aGlzLl9wcmVkc1t0XSxfZS5lYWNoKF9lLmtleXModGhpcy5fb3V0W3RdKSxyKSxkZWxldGUgdGhpcy5fb3V0W3RdLGRlbGV0ZSB0aGlzLl9zdWNzW3RdLC0tdGhpcy5fbm9kZUNvdW50fXJldHVybiB0aGlzfSxMZS5wcm90b3R5cGUuc2V0UGFyZW50PWZ1bmN0aW9uKHQsZSl7aWYoIXRoaXMuX2lzQ29tcG91bmQpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3Qgc2V0IHBhcmVudCBpbiBhIG5vbi1jb21wb3VuZCBncmFwaCIpO2lmKF9lLmlzVW5kZWZpbmVkKGUpKWU9R3M7ZWxzZXtlKz0iIjtmb3IodmFyIHI9ZTshX2UuaXNVbmRlZmluZWQocik7cj10aGlzLnBhcmVudChyKSlpZihyPT09dCl0aHJvdyBuZXcgRXJyb3IoIlNldHRpbmcgIitlKyIgYXMgcGFyZW50IG9mICIrdCsiIHdvdWxkIGNyZWF0ZSBhIGN5Y2xlIik7dGhpcy5zZXROb2RlKGUpfXJldHVybiB0aGlzLnNldE5vZGUodCksdGhpcy5fcmVtb3ZlRnJvbVBhcmVudHNDaGlsZExpc3QodCksdGhpcy5fcGFyZW50W3RdPWUsdGhpcy5fY2hpbGRyZW5bZV1bdF09ITAsdGhpc30sTGUucHJvdG90eXBlLl9yZW1vdmVGcm9tUGFyZW50c0NoaWxkTGlzdD1mdW5jdGlvbih0KXtkZWxldGUgdGhpcy5fY2hpbGRyZW5bdGhpcy5fcGFyZW50W3RdXVt0XX0sTGUucHJvdG90eXBlLnBhcmVudD1mdW5jdGlvbih0KXtpZih0aGlzLl9pc0NvbXBvdW5kKXt2YXIgZT10aGlzLl9wYXJlbnRbdF07aWYoZSE9PUdzKXJldHVybiBlfX0sTGUucHJvdG90eXBlLmNoaWxkcmVuPWZ1bmN0aW9uKHQpe2lmKF9lLmlzVW5kZWZpbmVkKHQpJiYodD1HcyksdGhpcy5faXNDb21wb3VuZCl7dmFyIGU9dGhpcy5fY2hpbGRyZW5bdF07aWYoZSlyZXR1cm4gX2Uua2V5cyhlKX1lbHNle2lmKHQ9PT1HcylyZXR1cm4gdGhpcy5ub2RlcygpO2lmKHRoaXMuaGFzTm9kZSh0KSlyZXR1cm5bXX19LExlLnByb3RvdHlwZS5wcmVkZWNlc3NvcnM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fcHJlZHNbdF07aWYoZSlyZXR1cm4gX2Uua2V5cyhlKX0sTGUucHJvdG90eXBlLnN1Y2Nlc3NvcnM9ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5fc3Vjc1t0XTtpZihlKXJldHVybiBfZS5rZXlzKGUpfSxMZS5wcm90b3R5cGUubmVpZ2hib3JzPWZ1bmN0aW9uKHQpe3ZhciBlPXRoaXMucHJlZGVjZXNzb3JzKHQpO2lmKGUpcmV0dXJuIF9lLnVuaW9uKGUsdGhpcy5zdWNjZXNzb3JzKHQpKX0sTGUucHJvdG90eXBlLmlzTGVhZj1mdW5jdGlvbih0KXt2YXIgZTtyZXR1cm4gdGhpcy5pc0RpcmVjdGVkKCk/ZT10aGlzLnN1Y2Nlc3NvcnModCk6ZT10aGlzLm5laWdoYm9ycyh0KSxlLmxlbmd0aD09PTB9LExlLnByb3RvdHlwZS5maWx0ZXJOb2Rlcz1mdW5jdGlvbih0KXt2YXIgZT1uZXcgdGhpcy5jb25zdHJ1Y3Rvcih7ZGlyZWN0ZWQ6dGhpcy5faXNEaXJlY3RlZCxtdWx0aWdyYXBoOnRoaXMuX2lzTXVsdGlncmFwaCxjb21wb3VuZDp0aGlzLl9pc0NvbXBvdW5kfSk7ZS5zZXRHcmFwaCh0aGlzLmdyYXBoKCkpO3ZhciByPXRoaXM7X2UuZWFjaCh0aGlzLl9ub2RlcyxmdW5jdGlvbihhLHMpe3QocykmJmUuc2V0Tm9kZShzLGEpfSksX2UuZWFjaCh0aGlzLl9lZGdlT2JqcyxmdW5jdGlvbihhKXtlLmhhc05vZGUoYS52KSYmZS5oYXNOb2RlKGEudykmJmUuc2V0RWRnZShhLHIuZWRnZShhKSl9KTt2YXIgbj17fTtmdW5jdGlvbiBpKGEpe3ZhciBzPXIucGFyZW50KGEpO3JldHVybiBzPT09dm9pZCAwfHxlLmhhc05vZGUocyk/KG5bYV09cyxzKTpzIGluIG4/bltzXTppKHMpfXJldHVybiB0aGlzLl9pc0NvbXBvdW5kJiZfZS5lYWNoKGUubm9kZXMoKSxmdW5jdGlvbihhKXtlLnNldFBhcmVudChhLGkoYSkpfSksZX0sTGUucHJvdG90eXBlLnNldERlZmF1bHRFZGdlTGFiZWw9ZnVuY3Rpb24odCl7cmV0dXJuIF9lLmlzRnVuY3Rpb24odCl8fCh0PV9lLmNvbnN0YW50KHQpKSx0aGlzLl9kZWZhdWx0RWRnZUxhYmVsRm49dCx0aGlzfSxMZS5wcm90b3R5cGUuZWRnZUNvdW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2VkZ2VDb3VudH0sTGUucHJvdG90eXBlLmVkZ2VzPWZ1bmN0aW9uKCl7cmV0dXJuIF9lLnZhbHVlcyh0aGlzLl9lZGdlT2Jqcyl9LExlLnByb3RvdHlwZS5zZXRQYXRoPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcyxuPWFyZ3VtZW50cztyZXR1cm4gX2UucmVkdWNlKHQsZnVuY3Rpb24oaSxhKXtyZXR1cm4gbi5sZW5ndGg+MT9yLnNldEVkZ2UoaSxhLGUpOnIuc2V0RWRnZShpLGEpLGF9KSx0aGlzfSxMZS5wcm90b3R5cGUuc2V0RWRnZT1mdW5jdGlvbigpe3ZhciB0LGUscixuLGk9ITEsYT1hcmd1bWVudHNbMF07dHlwZW9mIGE9PSJvYmplY3QiJiZhIT09bnVsbCYmInYiaW4gYT8odD1hLnYsZT1hLncscj1hLm5hbWUsYXJndW1lbnRzLmxlbmd0aD09PTImJihuPWFyZ3VtZW50c1sxXSxpPSEwKSk6KHQ9YSxlPWFyZ3VtZW50c1sxXSxyPWFyZ3VtZW50c1szXSxhcmd1bWVudHMubGVuZ3RoPjImJihuPWFyZ3VtZW50c1syXSxpPSEwKSksdD0iIit0LGU9IiIrZSxfZS5pc1VuZGVmaW5lZChyKXx8KHI9IiIrcik7dmFyIHM9WGModGhpcy5faXNEaXJlY3RlZCx0LGUscik7aWYoX2UuaGFzKHRoaXMuX2VkZ2VMYWJlbHMscykpcmV0dXJuIGkmJih0aGlzLl9lZGdlTGFiZWxzW3NdPW4pLHRoaXM7aWYoIV9lLmlzVW5kZWZpbmVkKHIpJiYhdGhpcy5faXNNdWx0aWdyYXBoKXRocm93IG5ldyBFcnJvcigiQ2Fubm90IHNldCBhIG5hbWVkIGVkZ2Ugd2hlbiBpc011bHRpZ3JhcGggPSBmYWxzZSIpO3RoaXMuc2V0Tm9kZSh0KSx0aGlzLnNldE5vZGUoZSksdGhpcy5fZWRnZUxhYmVsc1tzXT1pP246dGhpcy5fZGVmYXVsdEVkZ2VMYWJlbEZuKHQsZSxyKTt2YXIgbz1xUSh0aGlzLl9pc0RpcmVjdGVkLHQsZSxyKTtyZXR1cm4gdD1vLnYsZT1vLncsT2JqZWN0LmZyZWV6ZShvKSx0aGlzLl9lZGdlT2Jqc1tzXT1vLFVDKHRoaXMuX3ByZWRzW2VdLHQpLFVDKHRoaXMuX3N1Y3NbdF0sZSksdGhpcy5faW5bZV1bc109byx0aGlzLl9vdXRbdF1bc109byx0aGlzLl9lZGdlQ291bnQrKyx0aGlzfSxMZS5wcm90b3R5cGUuZWRnZT1mdW5jdGlvbih0LGUscil7dmFyIG49YXJndW1lbnRzLmxlbmd0aD09PTE/SWIodGhpcy5faXNEaXJlY3RlZCxhcmd1bWVudHNbMF0pOlhjKHRoaXMuX2lzRGlyZWN0ZWQsdCxlLHIpO3JldHVybiB0aGlzLl9lZGdlTGFiZWxzW25dfSxMZS5wcm90b3R5cGUuaGFzRWRnZT1mdW5jdGlvbih0LGUscil7dmFyIG49YXJndW1lbnRzLmxlbmd0aD09PTE/SWIodGhpcy5faXNEaXJlY3RlZCxhcmd1bWVudHNbMF0pOlhjKHRoaXMuX2lzRGlyZWN0ZWQsdCxlLHIpO3JldHVybiBfZS5oYXModGhpcy5fZWRnZUxhYmVscyxuKX0sTGUucHJvdG90eXBlLnJlbW92ZUVkZ2U9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg9PT0xP0liKHRoaXMuX2lzRGlyZWN0ZWQsYXJndW1lbnRzWzBdKTpYYyh0aGlzLl9pc0RpcmVjdGVkLHQsZSxyKSxpPXRoaXMuX2VkZ2VPYmpzW25dO3JldHVybiBpJiYodD1pLnYsZT1pLncsZGVsZXRlIHRoaXMuX2VkZ2VMYWJlbHNbbl0sZGVsZXRlIHRoaXMuX2VkZ2VPYmpzW25dLFdDKHRoaXMuX3ByZWRzW2VdLHQpLFdDKHRoaXMuX3N1Y3NbdF0sZSksZGVsZXRlIHRoaXMuX2luW2VdW25dLGRlbGV0ZSB0aGlzLl9vdXRbdF1bbl0sdGhpcy5fZWRnZUNvdW50LS0pLHRoaXN9LExlLnByb3RvdHlwZS5pbkVkZ2VzPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5faW5bdF07aWYocil7dmFyIG49X2UudmFsdWVzKHIpO3JldHVybiBlP19lLmZpbHRlcihuLGZ1bmN0aW9uKGkpe3JldHVybiBpLnY9PT1lfSk6bn19LExlLnByb3RvdHlwZS5vdXRFZGdlcz1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuX291dFt0XTtpZihyKXt2YXIgbj1fZS52YWx1ZXMocik7cmV0dXJuIGU/X2UuZmlsdGVyKG4sZnVuY3Rpb24oaSl7cmV0dXJuIGkudz09PWV9KTpufX0sTGUucHJvdG90eXBlLm5vZGVFZGdlcz1mdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuaW5FZGdlcyh0LGUpO2lmKHIpcmV0dXJuIHIuY29uY2F0KHRoaXMub3V0RWRnZXModCxlKSl9O2Z1bmN0aW9uIFVDKHQsZSl7dFtlXT90W2VdKys6dFtlXT0xfWZ1bmN0aW9uIFdDKHQsZSl7LS10W2VdfHxkZWxldGUgdFtlXX1mdW5jdGlvbiBYYyh0LGUscixuKXt2YXIgaT0iIitlLGE9IiIrcjtpZighdCYmaT5hKXt2YXIgcz1pO2k9YSxhPXN9cmV0dXJuIGkrWUMrYStZQysoX2UuaXNVbmRlZmluZWQobik/UFE6bil9ZnVuY3Rpb24gcVEodCxlLHIsbil7dmFyIGk9IiIrZSxhPSIiK3I7aWYoIXQmJmk+YSl7dmFyIHM9aTtpPWEsYT1zfXZhciBvPXt2OmksdzphfTtyZXR1cm4gbiYmKG8ubmFtZT1uKSxvfWZ1bmN0aW9uIEliKHQsZSl7cmV0dXJuIFhjKHQsZS52LGUudyxlLm5hbWUpfXZhciBWUT0iMi4xLjgiLHpRPXtHcmFwaDpSYix2ZXJzaW9uOlZRfSxQaT1XbixZUT1SYixVUT17d3JpdGU6V1EscmVhZDpqUX07ZnVuY3Rpb24gV1EodCl7dmFyIGU9e29wdGlvbnM6e2RpcmVjdGVkOnQuaXNEaXJlY3RlZCgpLG11bHRpZ3JhcGg6dC5pc011bHRpZ3JhcGgoKSxjb21wb3VuZDp0LmlzQ29tcG91bmQoKX0sbm9kZXM6SFEodCksZWRnZXM6R1EodCl9O3JldHVybiBQaS5pc1VuZGVmaW5lZCh0LmdyYXBoKCkpfHwoZS52YWx1ZT1QaS5jbG9uZSh0LmdyYXBoKCkpKSxlfWZ1bmN0aW9uIEhRKHQpe3JldHVybiBQaS5tYXAodC5ub2RlcygpLGZ1bmN0aW9uKGUpe3ZhciByPXQubm9kZShlKSxuPXQucGFyZW50KGUpLGk9e3Y6ZX07cmV0dXJuIFBpLmlzVW5kZWZpbmVkKHIpfHwoaS52YWx1ZT1yKSxQaS5pc1VuZGVmaW5lZChuKXx8KGkucGFyZW50PW4pLGl9KX1mdW5jdGlvbiBHUSh0KXtyZXR1cm4gUGkubWFwKHQuZWRnZXMoKSxmdW5jdGlvbihlKXt2YXIgcj10LmVkZ2UoZSksbj17djplLnYsdzplLnd9O3JldHVybiBQaS5pc1VuZGVmaW5lZChlLm5hbWUpfHwobi5uYW1lPWUubmFtZSksUGkuaXNVbmRlZmluZWQocil8fChuLnZhbHVlPXIpLG59KX1mdW5jdGlvbiBqUSh0KXt2YXIgZT1uZXcgWVEodC5vcHRpb25zKS5zZXRHcmFwaCh0LnZhbHVlKTtyZXR1cm4gUGkuZWFjaCh0Lm5vZGVzLGZ1bmN0aW9uKHIpe2Uuc2V0Tm9kZShyLnYsci52YWx1ZSksci5wYXJlbnQmJmUuc2V0UGFyZW50KHIudixyLnBhcmVudCl9KSxQaS5lYWNoKHQuZWRnZXMsZnVuY3Rpb24ocil7ZS5zZXRFZGdlKHt2OnIudix3OnIudyxuYW1lOnIubmFtZX0sci52YWx1ZSl9KSxlfXZhciBPMT1XbiwkUT1YUTtmdW5jdGlvbiBYUSh0KXt2YXIgZT17fSxyPVtdLG47ZnVuY3Rpb24gaShhKXtPMS5oYXMoZSxhKXx8KGVbYV09ITAsbi5wdXNoKGEpLE8xLmVhY2godC5zdWNjZXNzb3JzKGEpLGkpLE8xLmVhY2godC5wcmVkZWNlc3NvcnMoYSksaSkpfXJldHVybiBPMS5lYWNoKHQubm9kZXMoKSxmdW5jdGlvbihhKXtuPVtdLGkoYSksbi5sZW5ndGgmJnIucHVzaChuKX0pLHJ9dmFyIEhDPVduLEdDPUhuO2Z1bmN0aW9uIEhuKCl7dGhpcy5fYXJyPVtdLHRoaXMuX2tleUluZGljZXM9e319SG4ucHJvdG90eXBlLnNpemU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXJyLmxlbmd0aH0sSG4ucHJvdG90eXBlLmtleXM9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fYXJyLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gdC5rZXl9KX0sSG4ucHJvdG90eXBlLmhhcz1mdW5jdGlvbih0KXtyZXR1cm4gSEMuaGFzKHRoaXMuX2tleUluZGljZXMsdCl9LEhuLnByb3RvdHlwZS5wcmlvcml0eT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9rZXlJbmRpY2VzW3RdO2lmKGUhPT12b2lkIDApcmV0dXJuIHRoaXMuX2FycltlXS5wcmlvcml0eX0sSG4ucHJvdG90eXBlLm1pbj1mdW5jdGlvbigpe2lmKHRoaXMuc2l6ZSgpPT09MCl0aHJvdyBuZXcgRXJyb3IoIlF1ZXVlIHVuZGVyZmxvdyIpO3JldHVybiB0aGlzLl9hcnJbMF0ua2V5fSxIbi5wcm90b3R5cGUuYWRkPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fa2V5SW5kaWNlcztpZih0PVN0cmluZyh0KSwhSEMuaGFzKHIsdCkpe3ZhciBuPXRoaXMuX2FycixpPW4ubGVuZ3RoO3JldHVybiByW3RdPWksbi5wdXNoKHtrZXk6dCxwcmlvcml0eTplfSksdGhpcy5fZGVjcmVhc2UoaSksITB9cmV0dXJuITF9LEhuLnByb3RvdHlwZS5yZW1vdmVNaW49ZnVuY3Rpb24oKXt0aGlzLl9zd2FwKDAsdGhpcy5fYXJyLmxlbmd0aC0xKTt2YXIgdD10aGlzLl9hcnIucG9wKCk7cmV0dXJuIGRlbGV0ZSB0aGlzLl9rZXlJbmRpY2VzW3Qua2V5XSx0aGlzLl9oZWFwaWZ5KDApLHQua2V5fSxIbi5wcm90b3R5cGUuZGVjcmVhc2U9ZnVuY3Rpb24odCxlKXt2YXIgcj10aGlzLl9rZXlJbmRpY2VzW3RdO2lmKGU+dGhpcy5fYXJyW3JdLnByaW9yaXR5KXRocm93IG5ldyBFcnJvcigiTmV3IHByaW9yaXR5IGlzIGdyZWF0ZXIgdGhhbiBjdXJyZW50IHByaW9yaXR5LiBLZXk6ICIrdCsiIE9sZDogIit0aGlzLl9hcnJbcl0ucHJpb3JpdHkrIiBOZXc6ICIrZSk7dGhpcy5fYXJyW3JdLnByaW9yaXR5PWUsdGhpcy5fZGVjcmVhc2Uocil9LEhuLnByb3RvdHlwZS5faGVhcGlmeT1mdW5jdGlvbih0KXt2YXIgZT10aGlzLl9hcnIscj0yKnQsbj1yKzEsaT10O3I8ZS5sZW5ndGgmJihpPWVbcl0ucHJpb3JpdHk8ZVtpXS5wcmlvcml0eT9yOmksbjxlLmxlbmd0aCYmKGk9ZVtuXS5wcmlvcml0eTxlW2ldLnByaW9yaXR5P246aSksaSE9PXQmJih0aGlzLl9zd2FwKHQsaSksdGhpcy5faGVhcGlmeShpKSkpfSxIbi5wcm90b3R5cGUuX2RlY3JlYXNlPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10aGlzLl9hcnIscj1lW3RdLnByaW9yaXR5LG47dCE9PTAmJihuPXQ+PjEsIShlW25dLnByaW9yaXR5PHIpKTspdGhpcy5fc3dhcCh0LG4pLHQ9bn0sSG4ucHJvdG90eXBlLl9zd2FwPWZ1bmN0aW9uKHQsZSl7dmFyIHI9dGhpcy5fYXJyLG49dGhpcy5fa2V5SW5kaWNlcyxpPXJbdF0sYT1yW2VdO3JbdF09YSxyW2VdPWksblthLmtleV09dCxuW2kua2V5XT1lfTt2YXIgS1E9V24sWlE9R0MsakM9SlEsUVE9S1EuY29uc3RhbnQoMSk7ZnVuY3Rpb24gSlEodCxlLHIsbil7cmV0dXJuIHRKKHQsU3RyaW5nKGUpLHJ8fFFRLG58fGZ1bmN0aW9uKGkpe3JldHVybiB0Lm91dEVkZ2VzKGkpfSl9ZnVuY3Rpb24gdEoodCxlLHIsbil7dmFyIGk9e30sYT1uZXcgWlEscyxvLGw9ZnVuY3Rpb24odSl7dmFyIGg9dS52IT09cz91LnY6dS53LGQ9aVtoXSxmPXIodSkscD1vLmRpc3RhbmNlK2Y7aWYoZjwwKXRocm93IG5ldyBFcnJvcigiZGlqa3N0cmEgZG9lcyBub3QgYWxsb3cgbmVnYXRpdmUgZWRnZSB3ZWlnaHRzLiBCYWQgZWRnZTogIit1KyIgV2VpZ2h0OiAiK2YpO3A8ZC5kaXN0YW5jZSYmKGQuZGlzdGFuY2U9cCxkLnByZWRlY2Vzc29yPXMsYS5kZWNyZWFzZShoLHApKX07Zm9yKHQubm9kZXMoKS5mb3JFYWNoKGZ1bmN0aW9uKHUpe3ZhciBoPXU9PT1lPzA6TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO2lbdV09e2Rpc3RhbmNlOmh9LGEuYWRkKHUsaCl9KTthLnNpemUoKT4wJiYocz1hLnJlbW92ZU1pbigpLG89aVtzXSxvLmRpc3RhbmNlIT09TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKTspbihzKS5mb3JFYWNoKGwpO3JldHVybiBpfXZhciBlSj1qQyxySj1XbixuSj1pSjtmdW5jdGlvbiBpSih0LGUscil7cmV0dXJuIHJKLnRyYW5zZm9ybSh0Lm5vZGVzKCksZnVuY3Rpb24obixpKXtuW2ldPWVKKHQsaSxlLHIpfSx7fSl9dmFyICRDPVduLFhDPWFKO2Z1bmN0aW9uIGFKKHQpe3ZhciBlPTAscj1bXSxuPXt9LGk9W107ZnVuY3Rpb24gYShzKXt2YXIgbz1uW3NdPXtvblN0YWNrOiEwLGxvd2xpbms6ZSxpbmRleDplKyt9O2lmKHIucHVzaChzKSx0LnN1Y2Nlc3NvcnMocykuZm9yRWFjaChmdW5jdGlvbihoKXskQy5oYXMobixoKT9uW2hdLm9uU3RhY2smJihvLmxvd2xpbms9TWF0aC5taW4oby5sb3dsaW5rLG5baF0uaW5kZXgpKTooYShoKSxvLmxvd2xpbms9TWF0aC5taW4oby5sb3dsaW5rLG5baF0ubG93bGluaykpfSksby5sb3dsaW5rPT09by5pbmRleCl7dmFyIGw9W10sdTtkbyB1PXIucG9wKCksblt1XS5vblN0YWNrPSExLGwucHVzaCh1KTt3aGlsZShzIT09dSk7aS5wdXNoKGwpfX1yZXR1cm4gdC5ub2RlcygpLmZvckVhY2goZnVuY3Rpb24ocyl7JEMuaGFzKG4scyl8fGEocyl9KSxpfXZhciBzSj1XbixvSj1YQyxsSj1jSjtmdW5jdGlvbiBjSih0KXtyZXR1cm4gc0ouZmlsdGVyKG9KKHQpLGZ1bmN0aW9uKGUpe3JldHVybiBlLmxlbmd0aD4xfHxlLmxlbmd0aD09PTEmJnQuaGFzRWRnZShlWzBdLGVbMF0pfSl9dmFyIHVKPVduLGhKPWRKLGZKPXVKLmNvbnN0YW50KDEpO2Z1bmN0aW9uIGRKKHQsZSxyKXtyZXR1cm4gcEoodCxlfHxmSixyfHxmdW5jdGlvbihuKXtyZXR1cm4gdC5vdXRFZGdlcyhuKX0pfWZ1bmN0aW9uIHBKKHQsZSxyKXt2YXIgbj17fSxpPXQubm9kZXMoKTtyZXR1cm4gaS5mb3JFYWNoKGZ1bmN0aW9uKGEpe25bYV09e30sblthXVthXT17ZGlzdGFuY2U6MH0saS5mb3JFYWNoKGZ1bmN0aW9uKHMpe2EhPT1zJiYoblthXVtzXT17ZGlzdGFuY2U6TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZfSl9KSxyKGEpLmZvckVhY2goZnVuY3Rpb24ocyl7dmFyIG89cy52PT09YT9zLnc6cy52LGw9ZShzKTtuW2FdW29dPXtkaXN0YW5jZTpsLHByZWRlY2Vzc29yOmF9fSl9KSxpLmZvckVhY2goZnVuY3Rpb24oYSl7dmFyIHM9blthXTtpLmZvckVhY2goZnVuY3Rpb24obyl7dmFyIGw9bltvXTtpLmZvckVhY2goZnVuY3Rpb24odSl7dmFyIGg9bFthXSxkPXNbdV0sZj1sW3VdLHA9aC5kaXN0YW5jZStkLmRpc3RhbmNlO3A8Zi5kaXN0YW5jZSYmKGYuZGlzdGFuY2U9cCxmLnByZWRlY2Vzc29yPWQucHJlZGVjZXNzb3IpfSl9KX0pLG59dmFyIEtjPVduLEtDPVpDO1pDLkN5Y2xlRXhjZXB0aW9uPUYxO2Z1bmN0aW9uIFpDKHQpe3ZhciBlPXt9LHI9e30sbj1bXTtmdW5jdGlvbiBpKGEpe2lmKEtjLmhhcyhyLGEpKXRocm93IG5ldyBGMTtLYy5oYXMoZSxhKXx8KHJbYV09ITAsZVthXT0hMCxLYy5lYWNoKHQucHJlZGVjZXNzb3JzKGEpLGkpLGRlbGV0ZSByW2FdLG4ucHVzaChhKSl9aWYoS2MuZWFjaCh0LnNpbmtzKCksaSksS2Muc2l6ZShlKSE9PXQubm9kZUNvdW50KCkpdGhyb3cgbmV3IEYxO3JldHVybiBufWZ1bmN0aW9uIEYxKCl7fUYxLnByb3RvdHlwZT1uZXcgRXJyb3I7dmFyIFFDPUtDLGdKPXlKO2Z1bmN0aW9uIHlKKHQpe3RyeXtRQyh0KX1jYXRjaChlKXtpZihlIGluc3RhbmNlb2YgUUMuQ3ljbGVFeGNlcHRpb24pcmV0dXJuITE7dGhyb3cgZX1yZXR1cm4hMH12YXIgUDE9V24sSkM9bUo7ZnVuY3Rpb24gbUoodCxlLHIpe1AxLmlzQXJyYXkoZSl8fChlPVtlXSk7dmFyIG49KHQuaXNEaXJlY3RlZCgpP3Quc3VjY2Vzc29yczp0Lm5laWdoYm9ycykuYmluZCh0KSxpPVtdLGE9e307cmV0dXJuIFAxLmVhY2goZSxmdW5jdGlvbihzKXtpZighdC5oYXNOb2RlKHMpKXRocm93IG5ldyBFcnJvcigiR3JhcGggZG9lcyBub3QgaGF2ZSBub2RlOiAiK3MpO3RTKHQscyxyPT09InBvc3QiLGEsbixpKX0pLGl9ZnVuY3Rpb24gdFModCxlLHIsbixpLGEpe1AxLmhhcyhuLGUpfHwobltlXT0hMCxyfHxhLnB1c2goZSksUDEuZWFjaChpKGUpLGZ1bmN0aW9uKHMpe3RTKHQscyxyLG4saSxhKX0pLHImJmEucHVzaChlKSl9dmFyIGJKPUpDLF9KPXZKO2Z1bmN0aW9uIHZKKHQsZSl7cmV0dXJuIGJKKHQsZSwicG9zdCIpfXZhciB4Sj1KQyxrSj13SjtmdW5jdGlvbiB3Sih0LGUpe3JldHVybiB4Sih0LGUsInByZSIpfXZhciBlUz1XbixUSj1SYixFSj1HQyxDSj1TSjtmdW5jdGlvbiBTSih0LGUpe3ZhciByPW5ldyBUSixuPXt9LGk9bmV3IEVKLGE7ZnVuY3Rpb24gcyhsKXt2YXIgdT1sLnY9PT1hP2wudzpsLnYsaD1pLnByaW9yaXR5KHUpO2lmKGghPT12b2lkIDApe3ZhciBkPWUobCk7ZDxoJiYoblt1XT1hLGkuZGVjcmVhc2UodSxkKSl9fWlmKHQubm9kZUNvdW50KCk9PT0wKXJldHVybiByO2VTLmVhY2godC5ub2RlcygpLGZ1bmN0aW9uKGwpe2kuYWRkKGwsTnVtYmVyLlBPU0lUSVZFX0lORklOSVRZKSxyLnNldE5vZGUobCl9KSxpLmRlY3JlYXNlKHQubm9kZXMoKVswXSwwKTtmb3IodmFyIG89ITE7aS5zaXplKCk+MDspe2lmKGE9aS5yZW1vdmVNaW4oKSxlUy5oYXMobixhKSlyLnNldEVkZ2UoYSxuW2FdKTtlbHNle2lmKG8pdGhyb3cgbmV3IEVycm9yKCJJbnB1dCBncmFwaCBpcyBub3QgY29ubmVjdGVkOiAiK3QpO289ITB9dC5ub2RlRWRnZXMoYSkuZm9yRWFjaChzKX1yZXR1cm4gcn12YXIgQUo9e2NvbXBvbmVudHM6JFEsZGlqa3N0cmE6akMsZGlqa3N0cmFBbGw6bkosZmluZEN5Y2xlczpsSixmbG95ZFdhcnNoYWxsOmhKLGlzQWN5Y2xpYzpnSixwb3N0b3JkZXI6X0oscHJlb3JkZXI6a0oscHJpbTpDSix0YXJqYW46WEMsdG9wc29ydDpLQ30sclM9elEsY3I9e0dyYXBoOnJTLkdyYXBoLGpzb246VVEsYWxnOkFKLHZlcnNpb246clMudmVyc2lvbn0sTmIsblM7ZnVuY3Rpb24geWkoKXtpZihuUylyZXR1cm4gTmI7blM9MTt2YXIgdDtpZih0eXBlb2YgZm49PSJmdW5jdGlvbiIpdHJ5e3Q9Y3J9Y2F0Y2h7fXJldHVybiB0fHwodD13aW5kb3cuZ3JhcGhsaWIpLE5iPXQsTmJ9dmFyIEJiLGlTO2Z1bmN0aW9uIE1KKCl7aWYoaVMpcmV0dXJuIEJiO2lTPTE7dmFyIHQ9elQoKSxlPTEscj00O2Z1bmN0aW9uIG4oaSl7cmV0dXJuIHQoaSxlfHIpfXJldHVybiBCYj1uLEJifXZhciBEYixhUztmdW5jdGlvbiBxMSgpe2lmKGFTKXJldHVybiBEYjthUz0xO3ZhciB0PVdvLGU9b2EoKSxyPVQxKCksbj1WbjtmdW5jdGlvbiBpKGEscyxvKXtpZighbihvKSlyZXR1cm4hMTt2YXIgbD10eXBlb2YgcztyZXR1cm4obD09Im51bWJlciI/ZShvKSYmcihzLG8ubGVuZ3RoKTpsPT0ic3RyaW5nIiYmcyBpbiBvKT90KG9bc10sYSk6ITF9cmV0dXJuIERiPWksRGJ9dmFyIE9iLHNTO2Z1bmN0aW9uIG9TKCl7aWYoc1MpcmV0dXJuIE9iO3NTPTE7dmFyIHQ9QjEoKSxlPVdvLHI9cTEoKSxuPVdzKCksaT1PYmplY3QucHJvdG90eXBlLGE9aS5oYXNPd25Qcm9wZXJ0eSxzPXQoZnVuY3Rpb24obyxsKXtvPU9iamVjdChvKTt2YXIgdT0tMSxoPWwubGVuZ3RoLGQ9aD4yP2xbMl06dm9pZCAwO2ZvcihkJiZyKGxbMF0sbFsxXSxkKSYmKGg9MSk7Kyt1PGg7KWZvcih2YXIgZj1sW3VdLHA9bihmKSxtPS0xLF89cC5sZW5ndGg7KyttPF87KXt2YXIgeT1wW21dLGI9b1t5XTsoYj09PXZvaWQgMHx8ZShiLGlbeV0pJiYhYS5jYWxsKG8seSkpJiYob1t5XT1mW3ldKX1yZXR1cm4gb30pO3JldHVybiBPYj1zLE9ifXZhciBGYixsUztmdW5jdGlvbiBMSigpe2lmKGxTKXJldHVybiBGYjtsUz0xO3ZhciB0PWxhKCksZT1vYSgpLHI9dHMoKTtmdW5jdGlvbiBuKGkpe3JldHVybiBmdW5jdGlvbihhLHMsbyl7dmFyIGw9T2JqZWN0KGEpO2lmKCFlKGEpKXt2YXIgdT10KHMsMyk7YT1yKGEpLHM9ZnVuY3Rpb24oZCl7cmV0dXJuIHUobFtkXSxkLGwpfX12YXIgaD1pKGEscyxvKTtyZXR1cm4gaD4tMT9sW3U/YVtoXTpoXTp2b2lkIDB9fXJldHVybiBGYj1uLEZifXZhciBQYixjUztmdW5jdGlvbiBSSigpe2lmKGNTKXJldHVybiBQYjtjUz0xO3ZhciB0PS9ccy87ZnVuY3Rpb24gZShyKXtmb3IodmFyIG49ci5sZW5ndGg7bi0tJiZ0LnRlc3Qoci5jaGFyQXQobikpOyk7cmV0dXJuIG59cmV0dXJuIFBiPWUsUGJ9dmFyIHFiLHVTO2Z1bmN0aW9uIElKKCl7aWYodVMpcmV0dXJuIHFiO3VTPTE7dmFyIHQ9UkooKSxlPS9eXHMrLztmdW5jdGlvbiByKG4pe3JldHVybiBuJiZuLnNsaWNlKDAsdChuKSsxKS5yZXBsYWNlKGUsIiIpfXJldHVybiBxYj1yLHFifXZhciBWYixoUztmdW5jdGlvbiBOSigpe2lmKGhTKXJldHVybiBWYjtoUz0xO3ZhciB0PUlKKCksZT1WbixyPXJsKCksbj0wLzAsaT0vXlstK10weFswLTlhLWZdKyQvaSxhPS9eMGJbMDFdKyQvaSxzPS9eMG9bMC03XSskL2ksbz1wYXJzZUludDtmdW5jdGlvbiBsKHUpe2lmKHR5cGVvZiB1PT0ibnVtYmVyIilyZXR1cm4gdTtpZihyKHUpKXJldHVybiBuO2lmKGUodSkpe3ZhciBoPXR5cGVvZiB1LnZhbHVlT2Y9PSJmdW5jdGlvbiI/dS52YWx1ZU9mKCk6dTt1PWUoaCk/aCsiIjpofWlmKHR5cGVvZiB1IT0ic3RyaW5nIilyZXR1cm4gdT09PTA/dTordTt1PXQodSk7dmFyIGQ9YS50ZXN0KHUpO3JldHVybiBkfHxzLnRlc3QodSk/byh1LnNsaWNlKDIpLGQ/Mjo4KTppLnRlc3QodSk/bjordX1yZXR1cm4gVmI9bCxWYn12YXIgemIsZlM7ZnVuY3Rpb24gZFMoKXtpZihmUylyZXR1cm4gemI7ZlM9MTt2YXIgdD1OSigpLGU9MS8wLHI9MTc5NzY5MzEzNDg2MjMxNTdlMjkyO2Z1bmN0aW9uIG4oaSl7aWYoIWkpcmV0dXJuIGk9PT0wP2k6MDtpZihpPXQoaSksaT09PWV8fGk9PT0tZSl7dmFyIGE9aTwwPy0xOjE7cmV0dXJuIGEqcn1yZXR1cm4gaT09PWk/aTowfXJldHVybiB6Yj1uLHpifXZhciBZYixwUztmdW5jdGlvbiBCSigpe2lmKHBTKXJldHVybiBZYjtwUz0xO3ZhciB0PWRTKCk7ZnVuY3Rpb24gZShyKXt2YXIgbj10KHIpLGk9biUxO3JldHVybiBuPT09bj9pP24taTpuOjB9cmV0dXJuIFliPWUsWWJ9dmFyIFViLGdTO2Z1bmN0aW9uIERKKCl7aWYoZ1MpcmV0dXJuIFViO2dTPTE7dmFyIHQ9U0MoKSxlPWxhKCkscj1CSigpLG49TWF0aC5tYXg7ZnVuY3Rpb24gaShhLHMsbyl7dmFyIGw9YT09bnVsbD8wOmEubGVuZ3RoO2lmKCFsKXJldHVybi0xO3ZhciB1PW89PW51bGw/MDpyKG8pO3JldHVybiB1PDAmJih1PW4obCt1LDApKSx0KGEsZShzLDMpLHUpfXJldHVybiBVYj1pLFVifXZhciBXYix5UztmdW5jdGlvbiBPSigpe2lmKHlTKXJldHVybiBXYjt5Uz0xO3ZhciB0PUxKKCksZT1ESigpLHI9dChlKTtyZXR1cm4gV2I9cixXYn12YXIgSGIsbVM7ZnVuY3Rpb24gYlMoKXtpZihtUylyZXR1cm4gSGI7bVM9MTt2YXIgdD1oYigpO2Z1bmN0aW9uIGUocil7dmFyIG49cj09bnVsbD8wOnIubGVuZ3RoO3JldHVybiBuP3QociwxKTpbXX1yZXR1cm4gSGI9ZSxIYn12YXIgR2IsX1M7ZnVuY3Rpb24gRkooKXtpZihfUylyZXR1cm4gR2I7X1M9MTt2YXIgdD1aeSgpLGU9WlQoKSxyPVdzKCk7ZnVuY3Rpb24gbihpLGEpe3JldHVybiBpPT1udWxsP2k6dChpLGUoYSkscil9cmV0dXJuIEdiPW4sR2J9dmFyIGpiLHZTO2Z1bmN0aW9uIFBKKCl7aWYodlMpcmV0dXJuIGpiO3ZTPTE7ZnVuY3Rpb24gdChlKXt2YXIgcj1lPT1udWxsPzA6ZS5sZW5ndGg7cmV0dXJuIHI/ZVtyLTFdOnZvaWQgMH1yZXR1cm4gamI9dCxqYn12YXIgJGIseFM7ZnVuY3Rpb24gcUooKXtpZih4UylyZXR1cm4gJGI7eFM9MTt2YXIgdD14MSgpLGU9SnkoKSxyPWxhKCk7ZnVuY3Rpb24gbihpLGEpe3ZhciBzPXt9O3JldHVybiBhPXIoYSwzKSxlKGksZnVuY3Rpb24obyxsLHUpe3QocyxsLGEobyxsLHUpKX0pLHN9cmV0dXJuICRiPW4sJGJ9dmFyIFhiLGtTO2Z1bmN0aW9uIEtiKCl7aWYoa1MpcmV0dXJuIFhiO2tTPTE7dmFyIHQ9cmwoKTtmdW5jdGlvbiBlKHIsbixpKXtmb3IodmFyIGE9LTEscz1yLmxlbmd0aDsrK2E8czspe3ZhciBvPXJbYV0sbD1uKG8pO2lmKGwhPW51bGwmJih1PT09dm9pZCAwP2w9PT1sJiYhdChsKTppKGwsdSkpKXZhciB1PWwsaD1vfXJldHVybiBofXJldHVybiBYYj1lLFhifXZhciBaYix3UztmdW5jdGlvbiBWSigpe2lmKHdTKXJldHVybiBaYjt3Uz0xO2Z1bmN0aW9uIHQoZSxyKXtyZXR1cm4gZT5yfXJldHVybiBaYj10LFpifXZhciBRYixUUztmdW5jdGlvbiB6Sigpe2lmKFRTKXJldHVybiBRYjtUUz0xO3ZhciB0PUtiKCksZT1WSigpLHI9SHMoKTtmdW5jdGlvbiBuKGkpe3JldHVybiBpJiZpLmxlbmd0aD90KGkscixlKTp2b2lkIDB9cmV0dXJuIFFiPW4sUWJ9dmFyIEpiLEVTO2Z1bmN0aW9uIENTKCl7aWYoRVMpcmV0dXJuIEpiO0VTPTE7dmFyIHQ9eDEoKSxlPVdvO2Z1bmN0aW9uIHIobixpLGEpeyhhIT09dm9pZCAwJiYhZShuW2ldLGEpfHxhPT09dm9pZCAwJiYhKGkgaW4gbikpJiZ0KG4saSxhKX1yZXR1cm4gSmI9cixKYn12YXIgdDMsU1M7ZnVuY3Rpb24gQVMoKXtpZihTUylyZXR1cm4gdDM7U1M9MTt2YXIgdD1QcyxlPU0xKCkscj1GaSgpLG49IltvYmplY3QgT2JqZWN0XSIsaT1GdW5jdGlvbi5wcm90b3R5cGUsYT1PYmplY3QucHJvdG90eXBlLHM9aS50b1N0cmluZyxvPWEuaGFzT3duUHJvcGVydHksbD1zLmNhbGwoT2JqZWN0KTtmdW5jdGlvbiB1KGgpe2lmKCFyKGgpfHx0KGgpIT1uKXJldHVybiExO3ZhciBkPWUoaCk7aWYoZD09PW51bGwpcmV0dXJuITA7dmFyIGY9by5jYWxsKGQsImNvbnN0cnVjdG9yIikmJmQuY29uc3RydWN0b3I7cmV0dXJuIHR5cGVvZiBmPT0iZnVuY3Rpb24iJiZmIGluc3RhbmNlb2YgZiYmcy5jYWxsKGYpPT1sfXJldHVybiB0Mz11LHQzfXZhciBlMyxNUztmdW5jdGlvbiBMUygpe2lmKE1TKXJldHVybiBlMztNUz0xO2Z1bmN0aW9uIHQoZSxyKXtpZighKHI9PT0iY29uc3RydWN0b3IiJiZ0eXBlb2YgZVtyXT09ImZ1bmN0aW9uIikmJnIhPSJfX3Byb3RvX18iKXJldHVybiBlW3JdfXJldHVybiBlMz10LGUzfXZhciByMyxSUztmdW5jdGlvbiBZSigpe2lmKFJTKXJldHVybiByMztSUz0xO3ZhciB0PUhjKCksZT1XcygpO2Z1bmN0aW9uIHIobil7cmV0dXJuIHQobixlKG4pKX1yZXR1cm4gcjM9cixyM312YXIgbjMsSVM7ZnVuY3Rpb24gVUooKXtpZihJUylyZXR1cm4gbjM7SVM9MTt2YXIgdD1DUygpLGU9WjkoKSxyPUxUKCksbj1KOSgpLGk9RFQoKSxhPUdjKCkscz1ncigpLG89RkMoKSxsPXRsKCksdT1ZbyxoPVZuLGQ9QVMoKSxmPWpjKCkscD1MUygpLG09WUooKTtmdW5jdGlvbiBfKHksYix4LGssVCxDLE0pe3ZhciBTPXAoeSx4KSxSPXAoYix4KSxBPU0uZ2V0KFIpO2lmKEEpe3QoeSx4LEEpO3JldHVybn12YXIgTD1DP0MoUyxSLHgrIiIseSxiLE0pOnZvaWQgMCx2PUw9PT12b2lkIDA7aWYodil7dmFyIEI9cyhSKSx3PSFCJiZsKFIpLEQ9IUImJiF3JiZmKFIpO0w9UixCfHx3fHxEP3MoUyk/TD1TOm8oUyk/TD1uKFMpOnc/KHY9ITEsTD1lKFIsITApKTpEPyh2PSExLEw9cihSLCEwKSk6TD1bXTpkKFIpfHxhKFIpPyhMPVMsYShTKT9MPW0oUyk6KCFoKFMpfHx1KFMpKSYmKEw9aShSKSkpOnY9ITF9diYmKE0uc2V0KFIsTCksVChMLFIsayxDLE0pLE0uZGVsZXRlKFIpKSx0KHkseCxMKX1yZXR1cm4gbjM9XyxuM312YXIgaTMsTlM7ZnVuY3Rpb24gV0ooKXtpZihOUylyZXR1cm4gaTM7TlM9MTt2YXIgdD12MSgpLGU9Q1MoKSxyPVp5KCksbj1VSigpLGk9Vm4sYT1XcygpLHM9TFMoKTtmdW5jdGlvbiBvKGwsdSxoLGQsZil7bCE9PXUmJnIodSxmdW5jdGlvbihwLG0pe2lmKGZ8fChmPW5ldyB0KSxpKHApKW4obCx1LG0saCxvLGQsZik7ZWxzZXt2YXIgXz1kP2QocyhsLG0pLHAsbSsiIixsLHUsZik6dm9pZCAwO189PT12b2lkIDAmJihfPXApLGUobCxtLF8pfX0sYSl9cmV0dXJuIGkzPW8saTN9dmFyIGEzLEJTO2Z1bmN0aW9uIEhKKCl7aWYoQlMpcmV0dXJuIGEzO0JTPTE7dmFyIHQ9QjEoKSxlPXExKCk7ZnVuY3Rpb24gcihuKXtyZXR1cm4gdChmdW5jdGlvbihpLGEpe3ZhciBzPS0xLG89YS5sZW5ndGgsbD1vPjE/YVtvLTFdOnZvaWQgMCx1PW8+Mj9hWzJdOnZvaWQgMDtmb3IobD1uLmxlbmd0aD4zJiZ0eXBlb2YgbD09ImZ1bmN0aW9uIj8oby0tLGwpOnZvaWQgMCx1JiZlKGFbMF0sYVsxXSx1KSYmKGw9bzwzP3ZvaWQgMDpsLG89MSksaT1PYmplY3QoaSk7KytzPG87KXt2YXIgaD1hW3NdO2gmJm4oaSxoLHMsbCl9cmV0dXJuIGl9KX1yZXR1cm4gYTM9cixhM312YXIgczMsRFM7ZnVuY3Rpb24gR0ooKXtpZihEUylyZXR1cm4gczM7RFM9MTt2YXIgdD1XSigpLGU9SEooKSxyPWUoZnVuY3Rpb24obixpLGEpe3QobixpLGEpfSk7cmV0dXJuIHMzPXIsczN9dmFyIG8zLE9TO2Z1bmN0aW9uIEZTKCl7aWYoT1MpcmV0dXJuIG8zO09TPTE7ZnVuY3Rpb24gdChlLHIpe3JldHVybiBlPHJ9cmV0dXJuIG8zPXQsbzN9dmFyIGwzLFBTO2Z1bmN0aW9uIGpKKCl7aWYoUFMpcmV0dXJuIGwzO1BTPTE7dmFyIHQ9S2IoKSxlPUZTKCkscj1IcygpO2Z1bmN0aW9uIG4oaSl7cmV0dXJuIGkmJmkubGVuZ3RoP3QoaSxyLGUpOnZvaWQgMH1yZXR1cm4gbDM9bixsM312YXIgYzMscVM7ZnVuY3Rpb24gJEooKXtpZihxUylyZXR1cm4gYzM7cVM9MTt2YXIgdD1LYigpLGU9bGEoKSxyPUZTKCk7ZnVuY3Rpb24gbihpLGEpe3JldHVybiBpJiZpLmxlbmd0aD90KGksZShhLDIpLHIpOnZvaWQgMH1yZXR1cm4gYzM9bixjM312YXIgdTMsVlM7ZnVuY3Rpb24gWEooKXtpZihWUylyZXR1cm4gdTM7VlM9MTt2YXIgdD1zaSxlPWZ1bmN0aW9uKCl7cmV0dXJuIHQuRGF0ZS5ub3coKX07cmV0dXJuIHUzPWUsdTN9dmFyIGgzLHpTO2Z1bmN0aW9uIEtKKCl7aWYoelMpcmV0dXJuIGgzO3pTPTE7dmFyIHQ9azEoKSxlPUkxKCkscj1UMSgpLG49Vm4saT0kYygpO2Z1bmN0aW9uIGEocyxvLGwsdSl7aWYoIW4ocykpcmV0dXJuIHM7bz1lKG8scyk7Zm9yKHZhciBoPS0xLGQ9by5sZW5ndGgsZj1kLTEscD1zO3AhPW51bGwmJisraDxkOyl7dmFyIG09aShvW2hdKSxfPWw7aWYobT09PSJfX3Byb3RvX18ifHxtPT09ImNvbnN0cnVjdG9yInx8bT09PSJwcm90b3R5cGUiKXJldHVybiBzO2lmKGghPWYpe3ZhciB5PXBbbV07Xz11P3UoeSxtLHApOnZvaWQgMCxfPT09dm9pZCAwJiYoXz1uKHkpP3k6cihvW2grMV0pP1tdOnt9KX10KHAsbSxfKSxwPXBbbV19cmV0dXJuIHN9cmV0dXJuIGgzPWEsaDN9dmFyIGYzLFlTO2Z1bmN0aW9uIFpKKCl7aWYoWVMpcmV0dXJuIGYzO1lTPTE7dmFyIHQ9TjEoKSxlPUtKKCkscj1JMSgpO2Z1bmN0aW9uIG4oaSxhLHMpe2Zvcih2YXIgbz0tMSxsPWEubGVuZ3RoLHU9e307KytvPGw7KXt2YXIgaD1hW29dLGQ9dChpLGgpO3MoZCxoKSYmZSh1LHIoaCxpKSxkKX1yZXR1cm4gdX1yZXR1cm4gZjM9bixmM312YXIgZDMsVVM7ZnVuY3Rpb24gUUooKXtpZihVUylyZXR1cm4gZDM7VVM9MTt2YXIgdD1aSigpLGU9ekUoKTtmdW5jdGlvbiByKG4saSl7cmV0dXJuIHQobixpLGZ1bmN0aW9uKGEscyl7cmV0dXJuIGUobixzKX0pfXJldHVybiBkMz1yLGQzfXZhciBwMyxXUztmdW5jdGlvbiBKSigpe2lmKFdTKXJldHVybiBwMztXUz0xO3ZhciB0PWJTKCksZT12QygpLHI9VEMoKTtmdW5jdGlvbiBuKGkpe3JldHVybiByKGUoaSx2b2lkIDAsdCksaSsiIil9cmV0dXJuIHAzPW4scDN9dmFyIGczLEhTO2Z1bmN0aW9uIEdTKCl7aWYoSFMpcmV0dXJuIGczO0hTPTE7dmFyIHQ9UUooKSxlPUpKKCkscj1lKGZ1bmN0aW9uKG4saSl7cmV0dXJuIG49PW51bGw/e306dChuLGkpfSk7cmV0dXJuIGczPXIsZzN9dmFyIHkzLGpTO2Z1bmN0aW9uIHR0dCgpe2lmKGpTKXJldHVybiB5MztqUz0xO3ZhciB0PU1hdGguY2VpbCxlPU1hdGgubWF4O2Z1bmN0aW9uIHIobixpLGEscyl7Zm9yKHZhciBvPS0xLGw9ZSh0KChpLW4pLyhhfHwxKSksMCksdT1BcnJheShsKTtsLS07KXVbcz9sOisrb109bixuKz1hO3JldHVybiB1fXJldHVybiB5Mz1yLHkzfXZhciBtMywkUztmdW5jdGlvbiBldHQoKXtpZigkUylyZXR1cm4gbTM7JFM9MTt2YXIgdD10dHQoKSxlPXExKCkscj1kUygpO2Z1bmN0aW9uIG4oaSl7cmV0dXJuIGZ1bmN0aW9uKGEscyxvKXtyZXR1cm4gbyYmdHlwZW9mIG8hPSJudW1iZXIiJiZlKGEscyxvKSYmKHM9bz12b2lkIDApLGE9cihhKSxzPT09dm9pZCAwPyhzPWEsYT0wKTpzPXIocyksbz1vPT09dm9pZCAwP2E8cz8xOi0xOnIobyksdChhLHMsbyxpKX19cmV0dXJuIG0zPW4sbTN9dmFyIGIzLFhTO2Z1bmN0aW9uIEtTKCl7aWYoWFMpcmV0dXJuIGIzO1hTPTE7dmFyIHQ9ZXR0KCksZT10KCk7cmV0dXJuIGIzPWUsYjN9dmFyIF8zLFpTO2Z1bmN0aW9uIHJ0dCgpe2lmKFpTKXJldHVybiBfMztaUz0xO2Z1bmN0aW9uIHQoZSxyKXt2YXIgbj1lLmxlbmd0aDtmb3IoZS5zb3J0KHIpO24tLTspZVtuXT1lW25dLnZhbHVlO3JldHVybiBlfXJldHVybiBfMz10LF8zfXZhciB2MyxRUztmdW5jdGlvbiBudHQoKXtpZihRUylyZXR1cm4gdjM7UVM9MTt2YXIgdD1ybCgpO2Z1bmN0aW9uIGUocixuKXtpZihyIT09bil7dmFyIGk9ciE9PXZvaWQgMCxhPXI9PT1udWxsLHM9cj09PXIsbz10KHIpLGw9biE9PXZvaWQgMCx1PW49PT1udWxsLGg9bj09PW4sZD10KG4pO2lmKCF1JiYhZCYmIW8mJnI+bnx8byYmbCYmaCYmIXUmJiFkfHxhJiZsJiZofHwhaSYmaHx8IXMpcmV0dXJuIDE7aWYoIWEmJiFvJiYhZCYmcjxufHxkJiZpJiZzJiYhYSYmIW98fHUmJmkmJnN8fCFsJiZzfHwhaClyZXR1cm4tMX1yZXR1cm4gMH1yZXR1cm4gdjM9ZSx2M312YXIgeDMsSlM7ZnVuY3Rpb24gaXR0KCl7aWYoSlMpcmV0dXJuIHgzO0pTPTE7dmFyIHQ9bnR0KCk7ZnVuY3Rpb24gZShyLG4saSl7Zm9yKHZhciBhPS0xLHM9ci5jcml0ZXJpYSxvPW4uY3JpdGVyaWEsbD1zLmxlbmd0aCx1PWkubGVuZ3RoOysrYTxsOyl7dmFyIGg9dChzW2FdLG9bYV0pO2lmKGgpe2lmKGE+PXUpcmV0dXJuIGg7dmFyIGQ9aVthXTtyZXR1cm4gaCooZD09ImRlc2MiPy0xOjEpfX1yZXR1cm4gci5pbmRleC1uLmluZGV4fXJldHVybiB4Mz1lLHgzfXZhciBrMyx0QTtmdW5jdGlvbiBhdHQoKXtpZih0QSlyZXR1cm4gazM7dEE9MTt2YXIgdD1SMSgpLGU9TjEoKSxyPWxhKCksbj1yQygpLGk9cnR0KCksYT1FMSgpLHM9aXR0KCksbz1IcygpLGw9Z3IoKTtmdW5jdGlvbiB1KGgsZCxmKXtkLmxlbmd0aD9kPXQoZCxmdW5jdGlvbihfKXtyZXR1cm4gbChfKT9mdW5jdGlvbih5KXtyZXR1cm4gZSh5LF8ubGVuZ3RoPT09MT9fWzBdOl8pfTpffSk6ZD1bb107dmFyIHA9LTE7ZD10KGQsYShyKSk7dmFyIG09bihoLGZ1bmN0aW9uKF8seSxiKXt2YXIgeD10KGQsZnVuY3Rpb24oayl7cmV0dXJuIGsoXyl9KTtyZXR1cm57Y3JpdGVyaWE6eCxpbmRleDorK3AsdmFsdWU6X319KTtyZXR1cm4gaShtLGZ1bmN0aW9uKF8seSl7cmV0dXJuIHMoXyx5LGYpfSl9cmV0dXJuIGszPXUsazN9dmFyIHczLGVBO2Z1bmN0aW9uIHN0dCgpe2lmKGVBKXJldHVybiB3MztlQT0xO3ZhciB0PWhiKCksZT1hdHQoKSxyPUIxKCksbj1xMSgpLGk9cihmdW5jdGlvbihhLHMpe2lmKGE9PW51bGwpcmV0dXJuW107dmFyIG89cy5sZW5ndGg7cmV0dXJuIG8+MSYmbihhLHNbMF0sc1sxXSk/cz1bXTpvPjImJm4oc1swXSxzWzFdLHNbMl0pJiYocz1bc1swXV0pLGUoYSx0KHMsMSksW10pfSk7cmV0dXJuIHczPWksdzN9dmFyIFQzLHJBO2Z1bmN0aW9uIG5BKCl7aWYockEpcmV0dXJuIFQzO3JBPTE7dmFyIHQ9SUUoKSxlPTA7ZnVuY3Rpb24gcihuKXt2YXIgaT0rK2U7cmV0dXJuIHQobikraX1yZXR1cm4gVDM9cixUM312YXIgRTMsaUE7ZnVuY3Rpb24gb3R0KCl7aWYoaUEpcmV0dXJuIEUzO2lBPTE7ZnVuY3Rpb24gdChlLHIsbil7Zm9yKHZhciBpPS0xLGE9ZS5sZW5ndGgscz1yLmxlbmd0aCxvPXt9OysraTxhOyl7dmFyIGw9aTxzP3JbaV06dm9pZCAwO24obyxlW2ldLGwpfXJldHVybiBvfXJldHVybiBFMz10LEUzfXZhciBDMyxhQTtmdW5jdGlvbiBsdHQoKXtpZihhQSlyZXR1cm4gQzM7YUE9MTt2YXIgdD1rMSgpLGU9b3R0KCk7ZnVuY3Rpb24gcihuLGkpe3JldHVybiBlKG58fFtdLGl8fFtdLHQpfXJldHVybiBDMz1yLEMzfXZhciBTMyxzQTtmdW5jdGlvbiAkZSgpe2lmKHNBKXJldHVybiBTMztzQT0xO3ZhciB0O2lmKHR5cGVvZiBmbj09ImZ1bmN0aW9uIil0cnl7dD17Y2xvbmVEZWVwOk1KKCksY29uc3RhbnQ6ankoKSxkZWZhdWx0czpvUygpLGVhY2g6YW0oKSxmaWx0ZXI6WEUoKSxmaW5kOk9KKCksZmxhdHRlbjpiUygpLGZvckVhY2g6SlQoKSxmb3JJbjpGSigpLGhhczokbSgpLGlzVW5kZWZpbmVkOnRDKCksbGFzdDpQSigpLG1hcDppQygpLG1hcFZhbHVlczpxSigpLG1heDp6SigpLG1lcmdlOkdKKCksbWluOmpKKCksbWluQnk6JEooKSxub3c6WEooKSxwaWNrOkdTKCkscmFuZ2U6S1MoKSxyZWR1Y2U6bEMoKSxzb3J0Qnk6c3R0KCksdW5pcXVlSWQ6bkEoKSx2YWx1ZXM6ekMoKSx6aXBPYmplY3Q6bHR0KCl9fWNhdGNoe31yZXR1cm4gdHx8KHQ9d2luZG93Ll8pLFMzPXQsUzN9dmFyIEEzLG9BO2Z1bmN0aW9uIGN0dCgpe2lmKG9BKXJldHVybiBBMztvQT0xLEEzPXQ7ZnVuY3Rpb24gdCgpe3ZhciBuPXt9O24uX25leHQ9bi5fcHJldj1uLHRoaXMuX3NlbnRpbmVsPW59dC5wcm90b3R5cGUuZGVxdWV1ZT1mdW5jdGlvbigpe3ZhciBuPXRoaXMuX3NlbnRpbmVsLGk9bi5fcHJldjtpZihpIT09bilyZXR1cm4gZShpKSxpfSx0LnByb3RvdHlwZS5lbnF1ZXVlPWZ1bmN0aW9uKG4pe3ZhciBpPXRoaXMuX3NlbnRpbmVsO24uX3ByZXYmJm4uX25leHQmJmUobiksbi5fbmV4dD1pLl9uZXh0LGkuX25leHQuX3ByZXY9bixpLl9uZXh0PW4sbi5fcHJldj1pfSx0LnByb3RvdHlwZS50b1N0cmluZz1mdW5jdGlvbigpe2Zvcih2YXIgbj1bXSxpPXRoaXMuX3NlbnRpbmVsLGE9aS5fcHJldjthIT09aTspbi5wdXNoKEpTT04uc3RyaW5naWZ5KGEscikpLGE9YS5fcHJldjtyZXR1cm4iWyIrbi5qb2luKCIsICIpKyJdIn07ZnVuY3Rpb24gZShuKXtuLl9wcmV2Ll9uZXh0PW4uX25leHQsbi5fbmV4dC5fcHJldj1uLl9wcmV2LGRlbGV0ZSBuLl9uZXh0LGRlbGV0ZSBuLl9wcmV2fWZ1bmN0aW9uIHIobixpKXtpZihuIT09Il9uZXh0IiYmbiE9PSJfcHJldiIpcmV0dXJuIGl9cmV0dXJuIEEzfXZhciBNMyxsQTtmdW5jdGlvbiB1dHQoKXtpZihsQSlyZXR1cm4gTTM7bEE9MTt2YXIgdD0kZSgpLGU9eWkoKS5HcmFwaCxyPWN0dCgpO00zPWk7dmFyIG49dC5jb25zdGFudCgxKTtmdW5jdGlvbiBpKHUsaCl7aWYodS5ub2RlQ291bnQoKTw9MSlyZXR1cm5bXTt2YXIgZD1vKHUsaHx8biksZj1hKGQuZ3JhcGgsZC5idWNrZXRzLGQuemVyb0lkeCk7cmV0dXJuIHQuZmxhdHRlbih0Lm1hcChmLGZ1bmN0aW9uKHApe3JldHVybiB1Lm91dEVkZ2VzKHAudixwLncpfSksITApfWZ1bmN0aW9uIGEodSxoLGQpe2Zvcih2YXIgZj1bXSxwPWhbaC5sZW5ndGgtMV0sbT1oWzBdLF87dS5ub2RlQ291bnQoKTspe2Zvcig7Xz1tLmRlcXVldWUoKTspcyh1LGgsZCxfKTtmb3IoO189cC5kZXF1ZXVlKCk7KXModSxoLGQsXyk7aWYodS5ub2RlQ291bnQoKSl7Zm9yKHZhciB5PWgubGVuZ3RoLTI7eT4wOy0teSlpZihfPWhbeV0uZGVxdWV1ZSgpLF8pe2Y9Zi5jb25jYXQocyh1LGgsZCxfLCEwKSk7YnJlYWt9fX1yZXR1cm4gZn1mdW5jdGlvbiBzKHUsaCxkLGYscCl7dmFyIG09cD9bXTp2b2lkIDA7cmV0dXJuIHQuZm9yRWFjaCh1LmluRWRnZXMoZi52KSxmdW5jdGlvbihfKXt2YXIgeT11LmVkZ2UoXyksYj11Lm5vZGUoXy52KTtwJiZtLnB1c2goe3Y6Xy52LHc6Xy53fSksYi5vdXQtPXksbChoLGQsYil9KSx0LmZvckVhY2godS5vdXRFZGdlcyhmLnYpLGZ1bmN0aW9uKF8pe3ZhciB5PXUuZWRnZShfKSxiPV8udyx4PXUubm9kZShiKTt4LmluLT15LGwoaCxkLHgpfSksdS5yZW1vdmVOb2RlKGYudiksbX1mdW5jdGlvbiBvKHUsaCl7dmFyIGQ9bmV3IGUsZj0wLHA9MDt0LmZvckVhY2godS5ub2RlcygpLGZ1bmN0aW9uKHkpe2Quc2V0Tm9kZSh5LHt2OnksaW46MCxvdXQ6MH0pfSksdC5mb3JFYWNoKHUuZWRnZXMoKSxmdW5jdGlvbih5KXt2YXIgYj1kLmVkZ2UoeS52LHkudyl8fDAseD1oKHkpLGs9Yit4O2Quc2V0RWRnZSh5LnYseS53LGspLHA9TWF0aC5tYXgocCxkLm5vZGUoeS52KS5vdXQrPXgpLGY9TWF0aC5tYXgoZixkLm5vZGUoeS53KS5pbis9eCl9KTt2YXIgbT10LnJhbmdlKHArZiszKS5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHJ9KSxfPWYrMTtyZXR1cm4gdC5mb3JFYWNoKGQubm9kZXMoKSxmdW5jdGlvbih5KXtsKG0sXyxkLm5vZGUoeSkpfSkse2dyYXBoOmQsYnVja2V0czptLHplcm9JZHg6X319ZnVuY3Rpb24gbCh1LGgsZCl7ZC5vdXQ/ZC5pbj91W2Qub3V0LWQuaW4raF0uZW5xdWV1ZShkKTp1W3UubGVuZ3RoLTFdLmVucXVldWUoZCk6dVswXS5lbnF1ZXVlKGQpfXJldHVybiBNM312YXIgTDMsY0E7ZnVuY3Rpb24gaHR0KCl7aWYoY0EpcmV0dXJuIEwzO2NBPTE7dmFyIHQ9JGUoKSxlPXV0dCgpO0wzPXtydW46cix1bmRvOml9O2Z1bmN0aW9uIHIoYSl7dmFyIHM9YS5ncmFwaCgpLmFjeWNsaWNlcj09PSJncmVlZHkiP2UoYSxvKGEpKTpuKGEpO3QuZm9yRWFjaChzLGZ1bmN0aW9uKGwpe3ZhciB1PWEuZWRnZShsKTthLnJlbW92ZUVkZ2UobCksdS5mb3J3YXJkTmFtZT1sLm5hbWUsdS5yZXZlcnNlZD0hMCxhLnNldEVkZ2UobC53LGwudix1LHQudW5pcXVlSWQoInJldiIpKX0pO2Z1bmN0aW9uIG8obCl7cmV0dXJuIGZ1bmN0aW9uKHUpe3JldHVybiBsLmVkZ2UodSkud2VpZ2h0fX19ZnVuY3Rpb24gbihhKXt2YXIgcz1bXSxvPXt9LGw9e307ZnVuY3Rpb24gdShoKXt0LmhhcyhsLGgpfHwobFtoXT0hMCxvW2hdPSEwLHQuZm9yRWFjaChhLm91dEVkZ2VzKGgpLGZ1bmN0aW9uKGQpe3QuaGFzKG8sZC53KT9zLnB1c2goZCk6dShkLncpfSksZGVsZXRlIG9baF0pfXJldHVybiB0LmZvckVhY2goYS5ub2RlcygpLHUpLHN9ZnVuY3Rpb24gaShhKXt0LmZvckVhY2goYS5lZGdlcygpLGZ1bmN0aW9uKHMpe3ZhciBvPWEuZWRnZShzKTtpZihvLnJldmVyc2VkKXthLnJlbW92ZUVkZ2Uocyk7dmFyIGw9by5mb3J3YXJkTmFtZTtkZWxldGUgby5yZXZlcnNlZCxkZWxldGUgby5mb3J3YXJkTmFtZSxhLnNldEVkZ2Uocy53LHMudixvLGwpfX0pfXJldHVybiBMM312YXIgUjMsdUE7ZnVuY3Rpb24gdm4oKXtpZih1QSlyZXR1cm4gUjM7dUE9MTt2YXIgdD0kZSgpLGU9eWkoKS5HcmFwaDtSMz17YWRkRHVtbXlOb2RlOnIsc2ltcGxpZnk6bixhc05vbkNvbXBvdW5kR3JhcGg6aSxzdWNjZXNzb3JXZWlnaHRzOmEscHJlZGVjZXNzb3JXZWlnaHRzOnMsaW50ZXJzZWN0UmVjdDpvLGJ1aWxkTGF5ZXJNYXRyaXg6bCxub3JtYWxpemVSYW5rczp1LHJlbW92ZUVtcHR5UmFua3M6aCxhZGRCb3JkZXJOb2RlOmQsbWF4UmFuazpmLHBhcnRpdGlvbjpwLHRpbWU6bSxub3RpbWU6X307ZnVuY3Rpb24gcih5LGIseCxrKXt2YXIgVDtkbyBUPXQudW5pcXVlSWQoayk7d2hpbGUoeS5oYXNOb2RlKFQpKTtyZXR1cm4geC5kdW1teT1iLHkuc2V0Tm9kZShULHgpLFR9ZnVuY3Rpb24gbih5KXt2YXIgYj1uZXcgZSgpLnNldEdyYXBoKHkuZ3JhcGgoKSk7cmV0dXJuIHQuZm9yRWFjaCh5Lm5vZGVzKCksZnVuY3Rpb24oeCl7Yi5zZXROb2RlKHgseS5ub2RlKHgpKX0pLHQuZm9yRWFjaCh5LmVkZ2VzKCksZnVuY3Rpb24oeCl7dmFyIGs9Yi5lZGdlKHgudix4LncpfHx7d2VpZ2h0OjAsbWlubGVuOjF9LFQ9eS5lZGdlKHgpO2Iuc2V0RWRnZSh4LnYseC53LHt3ZWlnaHQ6ay53ZWlnaHQrVC53ZWlnaHQsbWlubGVuOk1hdGgubWF4KGsubWlubGVuLFQubWlubGVuKX0pfSksYn1mdW5jdGlvbiBpKHkpe3ZhciBiPW5ldyBlKHttdWx0aWdyYXBoOnkuaXNNdWx0aWdyYXBoKCl9KS5zZXRHcmFwaCh5LmdyYXBoKCkpO3JldHVybiB0LmZvckVhY2goeS5ub2RlcygpLGZ1bmN0aW9uKHgpe3kuY2hpbGRyZW4oeCkubGVuZ3RofHxiLnNldE5vZGUoeCx5Lm5vZGUoeCkpfSksdC5mb3JFYWNoKHkuZWRnZXMoKSxmdW5jdGlvbih4KXtiLnNldEVkZ2UoeCx5LmVkZ2UoeCkpfSksYn1mdW5jdGlvbiBhKHkpe3ZhciBiPXQubWFwKHkubm9kZXMoKSxmdW5jdGlvbih4KXt2YXIgaz17fTtyZXR1cm4gdC5mb3JFYWNoKHkub3V0RWRnZXMoeCksZnVuY3Rpb24oVCl7a1tULnddPShrW1Qud118fDApK3kuZWRnZShUKS53ZWlnaHR9KSxrfSk7cmV0dXJuIHQuemlwT2JqZWN0KHkubm9kZXMoKSxiKX1mdW5jdGlvbiBzKHkpe3ZhciBiPXQubWFwKHkubm9kZXMoKSxmdW5jdGlvbih4KXt2YXIgaz17fTtyZXR1cm4gdC5mb3JFYWNoKHkuaW5FZGdlcyh4KSxmdW5jdGlvbihUKXtrW1Qudl09KGtbVC52XXx8MCkreS5lZGdlKFQpLndlaWdodH0pLGt9KTtyZXR1cm4gdC56aXBPYmplY3QoeS5ub2RlcygpLGIpfWZ1bmN0aW9uIG8oeSxiKXt2YXIgeD15Lngsaz15LnksVD1iLngteCxDPWIueS1rLE09eS53aWR0aC8yLFM9eS5oZWlnaHQvMjtpZighVCYmIUMpdGhyb3cgbmV3IEVycm9yKCJOb3QgcG9zc2libGUgdG8gZmluZCBpbnRlcnNlY3Rpb24gaW5zaWRlIG9mIHRoZSByZWN0YW5nbGUiKTt2YXIgUixBO3JldHVybiBNYXRoLmFicyhDKSpNPk1hdGguYWJzKFQpKlM/KEM8MCYmKFM9LVMpLFI9UypUL0MsQT1TKTooVDwwJiYoTT0tTSksUj1NLEE9TSpDL1QpLHt4OngrUix5OmsrQX19ZnVuY3Rpb24gbCh5KXt2YXIgYj10Lm1hcCh0LnJhbmdlKGYoeSkrMSksZnVuY3Rpb24oKXtyZXR1cm5bXX0pO3JldHVybiB0LmZvckVhY2goeS5ub2RlcygpLGZ1bmN0aW9uKHgpe3ZhciBrPXkubm9kZSh4KSxUPWsucmFuazt0LmlzVW5kZWZpbmVkKFQpfHwoYltUXVtrLm9yZGVyXT14KX0pLGJ9ZnVuY3Rpb24gdSh5KXt2YXIgYj10Lm1pbih0Lm1hcCh5Lm5vZGVzKCksZnVuY3Rpb24oeCl7cmV0dXJuIHkubm9kZSh4KS5yYW5rfSkpO3QuZm9yRWFjaCh5Lm5vZGVzKCksZnVuY3Rpb24oeCl7dmFyIGs9eS5ub2RlKHgpO3QuaGFzKGssInJhbmsiKSYmKGsucmFuay09Yil9KX1mdW5jdGlvbiBoKHkpe3ZhciBiPXQubWluKHQubWFwKHkubm9kZXMoKSxmdW5jdGlvbihDKXtyZXR1cm4geS5ub2RlKEMpLnJhbmt9KSkseD1bXTt0LmZvckVhY2goeS5ub2RlcygpLGZ1bmN0aW9uKEMpe3ZhciBNPXkubm9kZShDKS5yYW5rLWI7eFtNXXx8KHhbTV09W10pLHhbTV0ucHVzaChDKX0pO3ZhciBrPTAsVD15LmdyYXBoKCkubm9kZVJhbmtGYWN0b3I7dC5mb3JFYWNoKHgsZnVuY3Rpb24oQyxNKXt0LmlzVW5kZWZpbmVkKEMpJiZNJVQhPT0wPy0tazprJiZ0LmZvckVhY2goQyxmdW5jdGlvbihTKXt5Lm5vZGUoUykucmFuays9a30pfSl9ZnVuY3Rpb24gZCh5LGIseCxrKXt2YXIgVD17d2lkdGg6MCxoZWlnaHQ6MH07cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+PTQmJihULnJhbms9eCxULm9yZGVyPWspLHIoeSwiYm9yZGVyIixULGIpfWZ1bmN0aW9uIGYoeSl7cmV0dXJuIHQubWF4KHQubWFwKHkubm9kZXMoKSxmdW5jdGlvbihiKXt2YXIgeD15Lm5vZGUoYikucmFuaztpZighdC5pc1VuZGVmaW5lZCh4KSlyZXR1cm4geH0pKX1mdW5jdGlvbiBwKHksYil7dmFyIHg9e2xoczpbXSxyaHM6W119O3JldHVybiB0LmZvckVhY2goeSxmdW5jdGlvbihrKXtiKGspP3gubGhzLnB1c2goayk6eC5yaHMucHVzaChrKX0pLHh9ZnVuY3Rpb24gbSh5LGIpe3ZhciB4PXQubm93KCk7dHJ5e3JldHVybiBiKCl9ZmluYWxseXtjb25zb2xlLmxvZyh5KyIgdGltZTogIisodC5ub3coKS14KSsibXMiKX19ZnVuY3Rpb24gXyh5LGIpe3JldHVybiBiKCl9cmV0dXJuIFIzfXZhciBJMyxoQTtmdW5jdGlvbiBmdHQoKXtpZihoQSlyZXR1cm4gSTM7aEE9MTt2YXIgdD0kZSgpLGU9dm4oKTtJMz17cnVuOnIsdW5kbzppfTtmdW5jdGlvbiByKGEpe2EuZ3JhcGgoKS5kdW1teUNoYWlucz1bXSx0LmZvckVhY2goYS5lZGdlcygpLGZ1bmN0aW9uKHMpe24oYSxzKX0pfWZ1bmN0aW9uIG4oYSxzKXt2YXIgbz1zLnYsbD1hLm5vZGUobykucmFuayx1PXMudyxoPWEubm9kZSh1KS5yYW5rLGQ9cy5uYW1lLGY9YS5lZGdlKHMpLHA9Zi5sYWJlbFJhbms7aWYoaCE9PWwrMSl7YS5yZW1vdmVFZGdlKHMpO3ZhciBtLF8seTtmb3IoeT0wLCsrbDtsPGg7Kyt5LCsrbClmLnBvaW50cz1bXSxfPXt3aWR0aDowLGhlaWdodDowLGVkZ2VMYWJlbDpmLGVkZ2VPYmo6cyxyYW5rOmx9LG09ZS5hZGREdW1teU5vZGUoYSwiZWRnZSIsXywiX2QiKSxsPT09cCYmKF8ud2lkdGg9Zi53aWR0aCxfLmhlaWdodD1mLmhlaWdodCxfLmR1bW15PSJlZGdlLWxhYmVsIixfLmxhYmVscG9zPWYubGFiZWxwb3MpLGEuc2V0RWRnZShvLG0se3dlaWdodDpmLndlaWdodH0sZCkseT09PTAmJmEuZ3JhcGgoKS5kdW1teUNoYWlucy5wdXNoKG0pLG89bTthLnNldEVkZ2Uobyx1LHt3ZWlnaHQ6Zi53ZWlnaHR9LGQpfX1mdW5jdGlvbiBpKGEpe3QuZm9yRWFjaChhLmdyYXBoKCkuZHVtbXlDaGFpbnMsZnVuY3Rpb24ocyl7dmFyIG89YS5ub2RlKHMpLGw9by5lZGdlTGFiZWwsdTtmb3IoYS5zZXRFZGdlKG8uZWRnZU9iaixsKTtvLmR1bW15Oyl1PWEuc3VjY2Vzc29ycyhzKVswXSxhLnJlbW92ZU5vZGUocyksbC5wb2ludHMucHVzaCh7eDpvLngseTpvLnl9KSxvLmR1bW15PT09ImVkZ2UtbGFiZWwiJiYobC54PW8ueCxsLnk9by55LGwud2lkdGg9by53aWR0aCxsLmhlaWdodD1vLmhlaWdodCkscz11LG89YS5ub2RlKHMpfSl9cmV0dXJuIEkzfXZhciBOMyxmQTtmdW5jdGlvbiBWMSgpe2lmKGZBKXJldHVybiBOMztmQT0xO3ZhciB0PSRlKCk7TjM9e2xvbmdlc3RQYXRoOmUsc2xhY2s6cn07ZnVuY3Rpb24gZShuKXt2YXIgaT17fTtmdW5jdGlvbiBhKHMpe3ZhciBvPW4ubm9kZShzKTtpZih0LmhhcyhpLHMpKXJldHVybiBvLnJhbms7aVtzXT0hMDt2YXIgbD10Lm1pbih0Lm1hcChuLm91dEVkZ2VzKHMpLGZ1bmN0aW9uKHUpe3JldHVybiBhKHUudyktbi5lZGdlKHUpLm1pbmxlbn0pKTtyZXR1cm4obD09PU51bWJlci5QT1NJVElWRV9JTkZJTklUWXx8bD09PXZvaWQgMHx8bD09PW51bGwpJiYobD0wKSxvLnJhbms9bH10LmZvckVhY2gobi5zb3VyY2VzKCksYSl9ZnVuY3Rpb24gcihuLGkpe3JldHVybiBuLm5vZGUoaS53KS5yYW5rLW4ubm9kZShpLnYpLnJhbmstbi5lZGdlKGkpLm1pbmxlbn1yZXR1cm4gTjN9dmFyIEIzLGRBO2Z1bmN0aW9uIHBBKCl7aWYoZEEpcmV0dXJuIEIzO2RBPTE7dmFyIHQ9JGUoKSxlPXlpKCkuR3JhcGgscj1WMSgpLnNsYWNrO0IzPW47ZnVuY3Rpb24gbihvKXt2YXIgbD1uZXcgZSh7ZGlyZWN0ZWQ6ITF9KSx1PW8ubm9kZXMoKVswXSxoPW8ubm9kZUNvdW50KCk7bC5zZXROb2RlKHUse30pO2Zvcih2YXIgZCxmO2kobCxvKTxoOylkPWEobCxvKSxmPWwuaGFzTm9kZShkLnYpP3IobyxkKTotcihvLGQpLHMobCxvLGYpO3JldHVybiBsfWZ1bmN0aW9uIGkobyxsKXtmdW5jdGlvbiB1KGgpe3QuZm9yRWFjaChsLm5vZGVFZGdlcyhoKSxmdW5jdGlvbihkKXt2YXIgZj1kLnYscD1oPT09Zj9kLnc6Zjshby5oYXNOb2RlKHApJiYhcihsLGQpJiYoby5zZXROb2RlKHAse30pLG8uc2V0RWRnZShoLHAse30pLHUocCkpfSl9cmV0dXJuIHQuZm9yRWFjaChvLm5vZGVzKCksdSksby5ub2RlQ291bnQoKX1mdW5jdGlvbiBhKG8sbCl7cmV0dXJuIHQubWluQnkobC5lZGdlcygpLGZ1bmN0aW9uKHUpe2lmKG8uaGFzTm9kZSh1LnYpIT09by5oYXNOb2RlKHUudykpcmV0dXJuIHIobCx1KX0pfWZ1bmN0aW9uIHMobyxsLHUpe3QuZm9yRWFjaChvLm5vZGVzKCksZnVuY3Rpb24oaCl7bC5ub2RlKGgpLnJhbmsrPXV9KX1yZXR1cm4gQjN9dmFyIEQzLGdBO2Z1bmN0aW9uIGR0dCgpe2lmKGdBKXJldHVybiBEMztnQT0xO3ZhciB0PSRlKCksZT1wQSgpLHI9VjEoKS5zbGFjayxuPVYxKCkubG9uZ2VzdFBhdGgsaT15aSgpLmFsZy5wcmVvcmRlcixhPXlpKCkuYWxnLnBvc3RvcmRlcixzPXZuKCkuc2ltcGxpZnk7RDM9byxvLmluaXRMb3dMaW1WYWx1ZXM9ZCxvLmluaXRDdXRWYWx1ZXM9bCxvLmNhbGNDdXRWYWx1ZT1oLG8ubGVhdmVFZGdlPXAsby5lbnRlckVkZ2U9bSxvLmV4Y2hhbmdlRWRnZXM9XztmdW5jdGlvbiBvKGspe2s9cyhrKSxuKGspO3ZhciBUPWUoayk7ZChUKSxsKFQsayk7Zm9yKHZhciBDLE07Qz1wKFQpOylNPW0oVCxrLEMpLF8oVCxrLEMsTSl9ZnVuY3Rpb24gbChrLFQpe3ZhciBDPWEoayxrLm5vZGVzKCkpO0M9Qy5zbGljZSgwLEMubGVuZ3RoLTEpLHQuZm9yRWFjaChDLGZ1bmN0aW9uKE0pe3UoayxULE0pfSl9ZnVuY3Rpb24gdShrLFQsQyl7dmFyIE09ay5ub2RlKEMpLFM9TS5wYXJlbnQ7ay5lZGdlKEMsUykuY3V0dmFsdWU9aChrLFQsQyl9ZnVuY3Rpb24gaChrLFQsQyl7dmFyIE09ay5ub2RlKEMpLFM9TS5wYXJlbnQsUj0hMCxBPVQuZWRnZShDLFMpLEw9MDtyZXR1cm4gQXx8KFI9ITEsQT1ULmVkZ2UoUyxDKSksTD1BLndlaWdodCx0LmZvckVhY2goVC5ub2RlRWRnZXMoQyksZnVuY3Rpb24odil7dmFyIEI9di52PT09Qyx3PUI/di53OnYudjtpZih3IT09Uyl7dmFyIEQ9Qj09PVIsTj1ULmVkZ2Uodikud2VpZ2h0O2lmKEwrPUQ/TjotTixiKGssQyx3KSl7dmFyIHo9ay5lZGdlKEMsdykuY3V0dmFsdWU7TCs9RD8tejp6fX19KSxMfWZ1bmN0aW9uIGQoayxUKXthcmd1bWVudHMubGVuZ3RoPDImJihUPWsubm9kZXMoKVswXSksZihrLHt9LDEsVCl9ZnVuY3Rpb24gZihrLFQsQyxNLFMpe3ZhciBSPUMsQT1rLm5vZGUoTSk7cmV0dXJuIFRbTV09ITAsdC5mb3JFYWNoKGsubmVpZ2hib3JzKE0pLGZ1bmN0aW9uKEwpe3QuaGFzKFQsTCl8fChDPWYoayxULEMsTCxNKSl9KSxBLmxvdz1SLEEubGltPUMrKyxTP0EucGFyZW50PVM6ZGVsZXRlIEEucGFyZW50LEN9ZnVuY3Rpb24gcChrKXtyZXR1cm4gdC5maW5kKGsuZWRnZXMoKSxmdW5jdGlvbihUKXtyZXR1cm4gay5lZGdlKFQpLmN1dHZhbHVlPDB9KX1mdW5jdGlvbiBtKGssVCxDKXt2YXIgTT1DLnYsUz1DLnc7VC5oYXNFZGdlKE0sUyl8fChNPUMudyxTPUMudik7dmFyIFI9ay5ub2RlKE0pLEE9ay5ub2RlKFMpLEw9Uix2PSExO1IubGltPkEubGltJiYoTD1BLHY9ITApO3ZhciBCPXQuZmlsdGVyKFQuZWRnZXMoKSxmdW5jdGlvbih3KXtyZXR1cm4gdj09PXgoayxrLm5vZGUody52KSxMKSYmdiE9PXgoayxrLm5vZGUody53KSxMKX0pO3JldHVybiB0Lm1pbkJ5KEIsZnVuY3Rpb24odyl7cmV0dXJuIHIoVCx3KX0pfWZ1bmN0aW9uIF8oayxULEMsTSl7dmFyIFM9Qy52LFI9Qy53O2sucmVtb3ZlRWRnZShTLFIpLGsuc2V0RWRnZShNLnYsTS53LHt9KSxkKGspLGwoayxUKSx5KGssVCl9ZnVuY3Rpb24geShrLFQpe3ZhciBDPXQuZmluZChrLm5vZGVzKCksZnVuY3Rpb24oUyl7cmV0dXJuIVQubm9kZShTKS5wYXJlbnR9KSxNPWkoayxDKTtNPU0uc2xpY2UoMSksdC5mb3JFYWNoKE0sZnVuY3Rpb24oUyl7dmFyIFI9ay5ub2RlKFMpLnBhcmVudCxBPVQuZWRnZShTLFIpLEw9ITE7QXx8KEE9VC5lZGdlKFIsUyksTD0hMCksVC5ub2RlKFMpLnJhbms9VC5ub2RlKFIpLnJhbmsrKEw/QS5taW5sZW46LUEubWlubGVuKX0pfWZ1bmN0aW9uIGIoayxULEMpe3JldHVybiBrLmhhc0VkZ2UoVCxDKX1mdW5jdGlvbiB4KGssVCxDKXtyZXR1cm4gQy5sb3c8PVQubGltJiZULmxpbTw9Qy5saW19cmV0dXJuIEQzfXZhciBPMyx5QTtmdW5jdGlvbiBwdHQoKXtpZih5QSlyZXR1cm4gTzM7eUE9MTt2YXIgdD1WMSgpLGU9dC5sb25nZXN0UGF0aCxyPXBBKCksbj1kdHQoKTtPMz1pO2Z1bmN0aW9uIGkobCl7c3dpdGNoKGwuZ3JhcGgoKS5yYW5rZXIpe2Nhc2UibmV0d29yay1zaW1wbGV4IjpvKGwpO2JyZWFrO2Nhc2UidGlnaHQtdHJlZSI6cyhsKTticmVhaztjYXNlImxvbmdlc3QtcGF0aCI6YShsKTticmVhaztkZWZhdWx0Om8obCl9fXZhciBhPWU7ZnVuY3Rpb24gcyhsKXtlKGwpLHIobCl9ZnVuY3Rpb24gbyhsKXtuKGwpfXJldHVybiBPM312YXIgRjMsbUE7ZnVuY3Rpb24gZ3R0KCl7aWYobUEpcmV0dXJuIEYzO21BPTE7dmFyIHQ9JGUoKTtGMz1lO2Z1bmN0aW9uIGUoaSl7dmFyIGE9bihpKTt0LmZvckVhY2goaS5ncmFwaCgpLmR1bW15Q2hhaW5zLGZ1bmN0aW9uKHMpe2Zvcih2YXIgbz1pLm5vZGUocyksbD1vLmVkZ2VPYmosdT1yKGksYSxsLnYsbC53KSxoPXUucGF0aCxkPXUubGNhLGY9MCxwPWhbZl0sbT0hMDtzIT09bC53Oyl7aWYobz1pLm5vZGUocyksbSl7Zm9yKDsocD1oW2ZdKSE9PWQmJmkubm9kZShwKS5tYXhSYW5rPG8ucmFuazspZisrO3A9PT1kJiYobT0hMSl9aWYoIW0pe2Zvcig7ZjxoLmxlbmd0aC0xJiZpLm5vZGUocD1oW2YrMV0pLm1pblJhbms8PW8ucmFuazspZisrO3A9aFtmXX1pLnNldFBhcmVudChzLHApLHM9aS5zdWNjZXNzb3JzKHMpWzBdfX0pfWZ1bmN0aW9uIHIoaSxhLHMsbyl7dmFyIGw9W10sdT1bXSxoPU1hdGgubWluKGFbc10ubG93LGFbb10ubG93KSxkPU1hdGgubWF4KGFbc10ubGltLGFbb10ubGltKSxmLHA7Zj1zO2RvIGY9aS5wYXJlbnQoZiksbC5wdXNoKGYpO3doaWxlKGYmJihhW2ZdLmxvdz5ofHxkPmFbZl0ubGltKSk7Zm9yKHA9ZixmPW87KGY9aS5wYXJlbnQoZikpIT09cDspdS5wdXNoKGYpO3JldHVybntwYXRoOmwuY29uY2F0KHUucmV2ZXJzZSgpKSxsY2E6cH19ZnVuY3Rpb24gbihpKXt2YXIgYT17fSxzPTA7ZnVuY3Rpb24gbyhsKXt2YXIgdT1zO3QuZm9yRWFjaChpLmNoaWxkcmVuKGwpLG8pLGFbbF09e2xvdzp1LGxpbTpzKyt9fXJldHVybiB0LmZvckVhY2goaS5jaGlsZHJlbigpLG8pLGF9cmV0dXJuIEYzfXZhciBQMyxiQTtmdW5jdGlvbiB5dHQoKXtpZihiQSlyZXR1cm4gUDM7YkE9MTt2YXIgdD0kZSgpLGU9dm4oKTtQMz17cnVuOnIsY2xlYW51cDpzfTtmdW5jdGlvbiByKG8pe3ZhciBsPWUuYWRkRHVtbXlOb2RlKG8sInJvb3QiLHt9LCJfcm9vdCIpLHU9aShvKSxoPXQubWF4KHQudmFsdWVzKHUpKS0xLGQ9MipoKzE7by5ncmFwaCgpLm5lc3RpbmdSb290PWwsdC5mb3JFYWNoKG8uZWRnZXMoKSxmdW5jdGlvbihwKXtvLmVkZ2UocCkubWlubGVuKj1kfSk7dmFyIGY9YShvKSsxO3QuZm9yRWFjaChvLmNoaWxkcmVuKCksZnVuY3Rpb24ocCl7bihvLGwsZCxmLGgsdSxwKX0pLG8uZ3JhcGgoKS5ub2RlUmFua0ZhY3Rvcj1kfWZ1bmN0aW9uIG4obyxsLHUsaCxkLGYscCl7dmFyIG09by5jaGlsZHJlbihwKTtpZighbS5sZW5ndGgpe3AhPT1sJiZvLnNldEVkZ2UobCxwLHt3ZWlnaHQ6MCxtaW5sZW46dX0pO3JldHVybn12YXIgXz1lLmFkZEJvcmRlck5vZGUobywiX2J0IikseT1lLmFkZEJvcmRlck5vZGUobywiX2JiIiksYj1vLm5vZGUocCk7by5zZXRQYXJlbnQoXyxwKSxiLmJvcmRlclRvcD1fLG8uc2V0UGFyZW50KHkscCksYi5ib3JkZXJCb3R0b209eSx0LmZvckVhY2gobSxmdW5jdGlvbih4KXtuKG8sbCx1LGgsZCxmLHgpO3ZhciBrPW8ubm9kZSh4KSxUPWsuYm9yZGVyVG9wP2suYm9yZGVyVG9wOngsQz1rLmJvcmRlckJvdHRvbT9rLmJvcmRlckJvdHRvbTp4LE09ay5ib3JkZXJUb3A/aDoyKmgsUz1UIT09Qz8xOmQtZltwXSsxO28uc2V0RWRnZShfLFQse3dlaWdodDpNLG1pbmxlbjpTLG5lc3RpbmdFZGdlOiEwfSksby5zZXRFZGdlKEMseSx7d2VpZ2h0Ok0sbWlubGVuOlMsbmVzdGluZ0VkZ2U6ITB9KX0pLG8ucGFyZW50KHApfHxvLnNldEVkZ2UobCxfLHt3ZWlnaHQ6MCxtaW5sZW46ZCtmW3BdfSl9ZnVuY3Rpb24gaShvKXt2YXIgbD17fTtmdW5jdGlvbiB1KGgsZCl7dmFyIGY9by5jaGlsZHJlbihoKTtmJiZmLmxlbmd0aCYmdC5mb3JFYWNoKGYsZnVuY3Rpb24ocCl7dShwLGQrMSl9KSxsW2hdPWR9cmV0dXJuIHQuZm9yRWFjaChvLmNoaWxkcmVuKCksZnVuY3Rpb24oaCl7dShoLDEpfSksbH1mdW5jdGlvbiBhKG8pe3JldHVybiB0LnJlZHVjZShvLmVkZ2VzKCksZnVuY3Rpb24obCx1KXtyZXR1cm4gbCtvLmVkZ2UodSkud2VpZ2h0fSwwKX1mdW5jdGlvbiBzKG8pe3ZhciBsPW8uZ3JhcGgoKTtvLnJlbW92ZU5vZGUobC5uZXN0aW5nUm9vdCksZGVsZXRlIGwubmVzdGluZ1Jvb3QsdC5mb3JFYWNoKG8uZWRnZXMoKSxmdW5jdGlvbih1KXt2YXIgaD1vLmVkZ2UodSk7aC5uZXN0aW5nRWRnZSYmby5yZW1vdmVFZGdlKHUpfSl9cmV0dXJuIFAzfXZhciBxMyxfQTtmdW5jdGlvbiBtdHQoKXtpZihfQSlyZXR1cm4gcTM7X0E9MTt2YXIgdD0kZSgpLGU9dm4oKTtxMz1yO2Z1bmN0aW9uIHIoaSl7ZnVuY3Rpb24gYShzKXt2YXIgbz1pLmNoaWxkcmVuKHMpLGw9aS5ub2RlKHMpO2lmKG8ubGVuZ3RoJiZ0LmZvckVhY2gobyxhKSx0LmhhcyhsLCJtaW5SYW5rIikpe2wuYm9yZGVyTGVmdD1bXSxsLmJvcmRlclJpZ2h0PVtdO2Zvcih2YXIgdT1sLm1pblJhbmssaD1sLm1heFJhbmsrMTt1PGg7Kyt1KW4oaSwiYm9yZGVyTGVmdCIsIl9ibCIscyxsLHUpLG4oaSwiYm9yZGVyUmlnaHQiLCJfYnIiLHMsbCx1KX19dC5mb3JFYWNoKGkuY2hpbGRyZW4oKSxhKX1mdW5jdGlvbiBuKGksYSxzLG8sbCx1KXt2YXIgaD17d2lkdGg6MCxoZWlnaHQ6MCxyYW5rOnUsYm9yZGVyVHlwZTphfSxkPWxbYV1bdS0xXSxmPWUuYWRkRHVtbXlOb2RlKGksImJvcmRlciIsaCxzKTtsW2FdW3VdPWYsaS5zZXRQYXJlbnQoZixvKSxkJiZpLnNldEVkZ2UoZCxmLHt3ZWlnaHQ6MX0pfXJldHVybiBxM312YXIgVjMsdkE7ZnVuY3Rpb24gYnR0KCl7aWYodkEpcmV0dXJuIFYzO3ZBPTE7dmFyIHQ9JGUoKTtWMz17YWRqdXN0OmUsdW5kbzpyfTtmdW5jdGlvbiBlKHUpe3ZhciBoPXUuZ3JhcGgoKS5yYW5rZGlyLnRvTG93ZXJDYXNlKCk7KGg9PT0ibHIifHxoPT09InJsIikmJm4odSl9ZnVuY3Rpb24gcih1KXt2YXIgaD11LmdyYXBoKCkucmFua2Rpci50b0xvd2VyQ2FzZSgpOyhoPT09ImJ0Inx8aD09PSJybCIpJiZhKHUpLChoPT09ImxyInx8aD09PSJybCIpJiYobyh1KSxuKHUpKX1mdW5jdGlvbiBuKHUpe3QuZm9yRWFjaCh1Lm5vZGVzKCksZnVuY3Rpb24oaCl7aSh1Lm5vZGUoaCkpfSksdC5mb3JFYWNoKHUuZWRnZXMoKSxmdW5jdGlvbihoKXtpKHUuZWRnZShoKSl9KX1mdW5jdGlvbiBpKHUpe3ZhciBoPXUud2lkdGg7dS53aWR0aD11LmhlaWdodCx1LmhlaWdodD1ofWZ1bmN0aW9uIGEodSl7dC5mb3JFYWNoKHUubm9kZXMoKSxmdW5jdGlvbihoKXtzKHUubm9kZShoKSl9KSx0LmZvckVhY2godS5lZGdlcygpLGZ1bmN0aW9uKGgpe3ZhciBkPXUuZWRnZShoKTt0LmZvckVhY2goZC5wb2ludHMscyksdC5oYXMoZCwieSIpJiZzKGQpfSl9ZnVuY3Rpb24gcyh1KXt1Lnk9LXUueX1mdW5jdGlvbiBvKHUpe3QuZm9yRWFjaCh1Lm5vZGVzKCksZnVuY3Rpb24oaCl7bCh1Lm5vZGUoaCkpfSksdC5mb3JFYWNoKHUuZWRnZXMoKSxmdW5jdGlvbihoKXt2YXIgZD11LmVkZ2UoaCk7dC5mb3JFYWNoKGQucG9pbnRzLGwpLHQuaGFzKGQsIngiKSYmbChkKX0pfWZ1bmN0aW9uIGwodSl7dmFyIGg9dS54O3UueD11LnksdS55PWh9cmV0dXJuIFYzfXZhciB6Myx4QTtmdW5jdGlvbiBfdHQoKXtpZih4QSlyZXR1cm4gejM7eEE9MTt2YXIgdD0kZSgpO3ozPWU7ZnVuY3Rpb24gZShyKXt2YXIgbj17fSxpPXQuZmlsdGVyKHIubm9kZXMoKSxmdW5jdGlvbih1KXtyZXR1cm4hci5jaGlsZHJlbih1KS5sZW5ndGh9KSxhPXQubWF4KHQubWFwKGksZnVuY3Rpb24odSl7cmV0dXJuIHIubm9kZSh1KS5yYW5rfSkpLHM9dC5tYXAodC5yYW5nZShhKzEpLGZ1bmN0aW9uKCl7cmV0dXJuW119KTtmdW5jdGlvbiBvKHUpe2lmKCF0LmhhcyhuLHUpKXtuW3VdPSEwO3ZhciBoPXIubm9kZSh1KTtzW2gucmFua10ucHVzaCh1KSx0LmZvckVhY2goci5zdWNjZXNzb3JzKHUpLG8pfX12YXIgbD10LnNvcnRCeShpLGZ1bmN0aW9uKHUpe3JldHVybiByLm5vZGUodSkucmFua30pO3JldHVybiB0LmZvckVhY2gobCxvKSxzfXJldHVybiB6M312YXIgWTMsa0E7ZnVuY3Rpb24gdnR0KCl7aWYoa0EpcmV0dXJuIFkzO2tBPTE7dmFyIHQ9JGUoKTtZMz1lO2Z1bmN0aW9uIGUobixpKXtmb3IodmFyIGE9MCxzPTE7czxpLmxlbmd0aDsrK3MpYSs9cihuLGlbcy0xXSxpW3NdKTtyZXR1cm4gYX1mdW5jdGlvbiByKG4saSxhKXtmb3IodmFyIHM9dC56aXBPYmplY3QoYSx0Lm1hcChhLGZ1bmN0aW9uKGYscCl7cmV0dXJuIHB9KSksbz10LmZsYXR0ZW4odC5tYXAoaSxmdW5jdGlvbihmKXtyZXR1cm4gdC5zb3J0QnkodC5tYXAobi5vdXRFZGdlcyhmKSxmdW5jdGlvbihwKXtyZXR1cm57cG9zOnNbcC53XSx3ZWlnaHQ6bi5lZGdlKHApLndlaWdodH19KSwicG9zIil9KSwhMCksbD0xO2w8YS5sZW5ndGg7KWw8PD0xO3ZhciB1PTIqbC0xO2wtPTE7dmFyIGg9dC5tYXAobmV3IEFycmF5KHUpLGZ1bmN0aW9uKCl7cmV0dXJuIDB9KSxkPTA7cmV0dXJuIHQuZm9yRWFjaChvLmZvckVhY2goZnVuY3Rpb24oZil7dmFyIHA9Zi5wb3MrbDtoW3BdKz1mLndlaWdodDtmb3IodmFyIG09MDtwPjA7KXAlMiYmKG0rPWhbcCsxXSkscD1wLTE+PjEsaFtwXSs9Zi53ZWlnaHQ7ZCs9Zi53ZWlnaHQqbX0pKSxkfXJldHVybiBZM312YXIgVTMsd0E7ZnVuY3Rpb24geHR0KCl7aWYod0EpcmV0dXJuIFUzO3dBPTE7dmFyIHQ9JGUoKTtVMz1lO2Z1bmN0aW9uIGUocixuKXtyZXR1cm4gdC5tYXAobixmdW5jdGlvbihpKXt2YXIgYT1yLmluRWRnZXMoaSk7aWYoYS5sZW5ndGgpe3ZhciBzPXQucmVkdWNlKGEsZnVuY3Rpb24obyxsKXt2YXIgdT1yLmVkZ2UobCksaD1yLm5vZGUobC52KTtyZXR1cm57c3VtOm8uc3VtK3Uud2VpZ2h0Kmgub3JkZXIsd2VpZ2h0Om8ud2VpZ2h0K3Uud2VpZ2h0fX0se3N1bTowLHdlaWdodDowfSk7cmV0dXJue3Y6aSxiYXJ5Y2VudGVyOnMuc3VtL3Mud2VpZ2h0LHdlaWdodDpzLndlaWdodH19ZWxzZSByZXR1cm57djppfX0pfXJldHVybiBVM312YXIgVzMsVEE7ZnVuY3Rpb24ga3R0KCl7aWYoVEEpcmV0dXJuIFczO1RBPTE7dmFyIHQ9JGUoKTtXMz1lO2Z1bmN0aW9uIGUoaSxhKXt2YXIgcz17fTt0LmZvckVhY2goaSxmdW5jdGlvbihsLHUpe3ZhciBoPXNbbC52XT17aW5kZWdyZWU6MCxpbjpbXSxvdXQ6W10sdnM6W2wudl0saTp1fTt0LmlzVW5kZWZpbmVkKGwuYmFyeWNlbnRlcil8fChoLmJhcnljZW50ZXI9bC5iYXJ5Y2VudGVyLGgud2VpZ2h0PWwud2VpZ2h0KX0pLHQuZm9yRWFjaChhLmVkZ2VzKCksZnVuY3Rpb24obCl7dmFyIHU9c1tsLnZdLGg9c1tsLnddOyF0LmlzVW5kZWZpbmVkKHUpJiYhdC5pc1VuZGVmaW5lZChoKSYmKGguaW5kZWdyZWUrKyx1Lm91dC5wdXNoKHNbbC53XSkpfSk7dmFyIG89dC5maWx0ZXIocyxmdW5jdGlvbihsKXtyZXR1cm4hbC5pbmRlZ3JlZX0pO3JldHVybiByKG8pfWZ1bmN0aW9uIHIoaSl7dmFyIGE9W107ZnVuY3Rpb24gcyh1KXtyZXR1cm4gZnVuY3Rpb24oaCl7aC5tZXJnZWR8fCh0LmlzVW5kZWZpbmVkKGguYmFyeWNlbnRlcil8fHQuaXNVbmRlZmluZWQodS5iYXJ5Y2VudGVyKXx8aC5iYXJ5Y2VudGVyPj11LmJhcnljZW50ZXIpJiZuKHUsaCl9fWZ1bmN0aW9uIG8odSl7cmV0dXJuIGZ1bmN0aW9uKGgpe2guaW4ucHVzaCh1KSwtLWguaW5kZWdyZWU9PT0wJiZpLnB1c2goaCl9fWZvcig7aS5sZW5ndGg7KXt2YXIgbD1pLnBvcCgpO2EucHVzaChsKSx0LmZvckVhY2gobC5pbi5yZXZlcnNlKCkscyhsKSksdC5mb3JFYWNoKGwub3V0LG8obCkpfXJldHVybiB0Lm1hcCh0LmZpbHRlcihhLGZ1bmN0aW9uKHUpe3JldHVybiF1Lm1lcmdlZH0pLGZ1bmN0aW9uKHUpe3JldHVybiB0LnBpY2sodSxbInZzIiwiaSIsImJhcnljZW50ZXIiLCJ3ZWlnaHQiXSl9KX1mdW5jdGlvbiBuKGksYSl7dmFyIHM9MCxvPTA7aS53ZWlnaHQmJihzKz1pLmJhcnljZW50ZXIqaS53ZWlnaHQsbys9aS53ZWlnaHQpLGEud2VpZ2h0JiYocys9YS5iYXJ5Y2VudGVyKmEud2VpZ2h0LG8rPWEud2VpZ2h0KSxpLnZzPWEudnMuY29uY2F0KGkudnMpLGkuYmFyeWNlbnRlcj1zL28saS53ZWlnaHQ9byxpLmk9TWF0aC5taW4oYS5pLGkuaSksYS5tZXJnZWQ9ITB9cmV0dXJuIFczfXZhciBIMyxFQTtmdW5jdGlvbiB3dHQoKXtpZihFQSlyZXR1cm4gSDM7RUE9MTt2YXIgdD0kZSgpLGU9dm4oKTtIMz1yO2Z1bmN0aW9uIHIoYSxzKXt2YXIgbz1lLnBhcnRpdGlvbihhLGZ1bmN0aW9uKF8pe3JldHVybiB0LmhhcyhfLCJiYXJ5Y2VudGVyIil9KSxsPW8ubGhzLHU9dC5zb3J0Qnkoby5yaHMsZnVuY3Rpb24oXyl7cmV0dXJuLV8uaX0pLGg9W10sZD0wLGY9MCxwPTA7bC5zb3J0KGkoISFzKSkscD1uKGgsdSxwKSx0LmZvckVhY2gobCxmdW5jdGlvbihfKXtwKz1fLnZzLmxlbmd0aCxoLnB1c2goXy52cyksZCs9Xy5iYXJ5Y2VudGVyKl8ud2VpZ2h0LGYrPV8ud2VpZ2h0LHA9bihoLHUscCl9KTt2YXIgbT17dnM6dC5mbGF0dGVuKGgsITApfTtyZXR1cm4gZiYmKG0uYmFyeWNlbnRlcj1kL2YsbS53ZWlnaHQ9ZiksbX1mdW5jdGlvbiBuKGEscyxvKXtmb3IodmFyIGw7cy5sZW5ndGgmJihsPXQubGFzdChzKSkuaTw9bzspcy5wb3AoKSxhLnB1c2gobC52cyksbysrO3JldHVybiBvfWZ1bmN0aW9uIGkoYSl7cmV0dXJuIGZ1bmN0aW9uKHMsbyl7cmV0dXJuIHMuYmFyeWNlbnRlcjxvLmJhcnljZW50ZXI/LTE6cy5iYXJ5Y2VudGVyPm8uYmFyeWNlbnRlcj8xOmE/by5pLXMuaTpzLmktby5pfX1yZXR1cm4gSDN9dmFyIEczLENBO2Z1bmN0aW9uIFR0dCgpe2lmKENBKXJldHVybiBHMztDQT0xO3ZhciB0PSRlKCksZT14dHQoKSxyPWt0dCgpLG49d3R0KCk7RzM9aTtmdW5jdGlvbiBpKG8sbCx1LGgpe3ZhciBkPW8uY2hpbGRyZW4obCksZj1vLm5vZGUobCkscD1mP2YuYm9yZGVyTGVmdDp2b2lkIDAsbT1mP2YuYm9yZGVyUmlnaHQ6dm9pZCAwLF89e307cCYmKGQ9dC5maWx0ZXIoZCxmdW5jdGlvbihDKXtyZXR1cm4gQyE9PXAmJkMhPT1tfSkpO3ZhciB5PWUobyxkKTt0LmZvckVhY2goeSxmdW5jdGlvbihDKXtpZihvLmNoaWxkcmVuKEMudikubGVuZ3RoKXt2YXIgTT1pKG8sQy52LHUsaCk7X1tDLnZdPU0sdC5oYXMoTSwiYmFyeWNlbnRlciIpJiZzKEMsTSl9fSk7dmFyIGI9cih5LHUpO2EoYixfKTt2YXIgeD1uKGIsaCk7aWYocCYmKHgudnM9dC5mbGF0dGVuKFtwLHgudnMsbV0sITApLG8ucHJlZGVjZXNzb3JzKHApLmxlbmd0aCkpe3ZhciBrPW8ubm9kZShvLnByZWRlY2Vzc29ycyhwKVswXSksVD1vLm5vZGUoby5wcmVkZWNlc3NvcnMobSlbMF0pO3QuaGFzKHgsImJhcnljZW50ZXIiKXx8KHguYmFyeWNlbnRlcj0wLHgud2VpZ2h0PTApLHguYmFyeWNlbnRlcj0oeC5iYXJ5Y2VudGVyKngud2VpZ2h0K2sub3JkZXIrVC5vcmRlcikvKHgud2VpZ2h0KzIpLHgud2VpZ2h0Kz0yfXJldHVybiB4fWZ1bmN0aW9uIGEobyxsKXt0LmZvckVhY2gobyxmdW5jdGlvbih1KXt1LnZzPXQuZmxhdHRlbih1LnZzLm1hcChmdW5jdGlvbihoKXtyZXR1cm4gbFtoXT9sW2hdLnZzOmh9KSwhMCl9KX1mdW5jdGlvbiBzKG8sbCl7dC5pc1VuZGVmaW5lZChvLmJhcnljZW50ZXIpPyhvLmJhcnljZW50ZXI9bC5iYXJ5Y2VudGVyLG8ud2VpZ2h0PWwud2VpZ2h0KTooby5iYXJ5Y2VudGVyPShvLmJhcnljZW50ZXIqby53ZWlnaHQrbC5iYXJ5Y2VudGVyKmwud2VpZ2h0KS8oby53ZWlnaHQrbC53ZWlnaHQpLG8ud2VpZ2h0Kz1sLndlaWdodCl9cmV0dXJuIEczfXZhciBqMyxTQTtmdW5jdGlvbiBFdHQoKXtpZihTQSlyZXR1cm4gajM7U0E9MTt2YXIgdD0kZSgpLGU9eWkoKS5HcmFwaDtqMz1yO2Z1bmN0aW9uIHIoaSxhLHMpe3ZhciBvPW4oaSksbD1uZXcgZSh7Y29tcG91bmQ6ITB9KS5zZXRHcmFwaCh7cm9vdDpvfSkuc2V0RGVmYXVsdE5vZGVMYWJlbChmdW5jdGlvbih1KXtyZXR1cm4gaS5ub2RlKHUpfSk7cmV0dXJuIHQuZm9yRWFjaChpLm5vZGVzKCksZnVuY3Rpb24odSl7dmFyIGg9aS5ub2RlKHUpLGQ9aS5wYXJlbnQodSk7KGgucmFuaz09PWF8fGgubWluUmFuazw9YSYmYTw9aC5tYXhSYW5rKSYmKGwuc2V0Tm9kZSh1KSxsLnNldFBhcmVudCh1LGR8fG8pLHQuZm9yRWFjaChpW3NdKHUpLGZ1bmN0aW9uKGYpe3ZhciBwPWYudj09PXU/Zi53OmYudixtPWwuZWRnZShwLHUpLF89dC5pc1VuZGVmaW5lZChtKT8wOm0ud2VpZ2h0O2wuc2V0RWRnZShwLHUse3dlaWdodDppLmVkZ2UoZikud2VpZ2h0K199KX0pLHQuaGFzKGgsIm1pblJhbmsiKSYmbC5zZXROb2RlKHUse2JvcmRlckxlZnQ6aC5ib3JkZXJMZWZ0W2FdLGJvcmRlclJpZ2h0OmguYm9yZGVyUmlnaHRbYV19KSl9KSxsfWZ1bmN0aW9uIG4oaSl7Zm9yKHZhciBhO2kuaGFzTm9kZShhPXQudW5pcXVlSWQoIl9yb290IikpOyk7cmV0dXJuIGF9cmV0dXJuIGozfXZhciAkMyxBQTtmdW5jdGlvbiBDdHQoKXtpZihBQSlyZXR1cm4gJDM7QUE9MTt2YXIgdD0kZSgpOyQzPWU7ZnVuY3Rpb24gZShyLG4saSl7dmFyIGE9e30sczt0LmZvckVhY2goaSxmdW5jdGlvbihvKXtmb3IodmFyIGw9ci5wYXJlbnQobyksdSxoO2w7KXtpZih1PXIucGFyZW50KGwpLHU/KGg9YVt1XSxhW3VdPWwpOihoPXMscz1sKSxoJiZoIT09bCl7bi5zZXRFZGdlKGgsbCk7cmV0dXJufWw9dX19KX1yZXR1cm4gJDN9dmFyIFgzLE1BO2Z1bmN0aW9uIFN0dCgpe2lmKE1BKXJldHVybiBYMztNQT0xO3ZhciB0PSRlKCksZT1fdHQoKSxyPXZ0dCgpLG49VHR0KCksaT1FdHQoKSxhPUN0dCgpLHM9eWkoKS5HcmFwaCxvPXZuKCk7WDM9bDtmdW5jdGlvbiBsKGYpe3ZhciBwPW8ubWF4UmFuayhmKSxtPXUoZix0LnJhbmdlKDEscCsxKSwiaW5FZGdlcyIpLF89dShmLHQucmFuZ2UocC0xLC0xLC0xKSwib3V0RWRnZXMiKSx5PWUoZik7ZChmLHkpO2Zvcih2YXIgYj1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFkseCxrPTAsVD0wO1Q8NDsrK2ssKytUKXtoKGslMj9tOl8sayU0Pj0yKSx5PW8uYnVpbGRMYXllck1hdHJpeChmKTt2YXIgQz1yKGYseSk7QzxiJiYoVD0wLHg9dC5jbG9uZURlZXAoeSksYj1DKX1kKGYseCl9ZnVuY3Rpb24gdShmLHAsbSl7cmV0dXJuIHQubWFwKHAsZnVuY3Rpb24oXyl7cmV0dXJuIGkoZixfLG0pfSl9ZnVuY3Rpb24gaChmLHApe3ZhciBtPW5ldyBzO3QuZm9yRWFjaChmLGZ1bmN0aW9uKF8pe3ZhciB5PV8uZ3JhcGgoKS5yb290LGI9bihfLHksbSxwKTt0LmZvckVhY2goYi52cyxmdW5jdGlvbih4LGspe18ubm9kZSh4KS5vcmRlcj1rfSksYShfLG0sYi52cyl9KX1mdW5jdGlvbiBkKGYscCl7dC5mb3JFYWNoKHAsZnVuY3Rpb24obSl7dC5mb3JFYWNoKG0sZnVuY3Rpb24oXyx5KXtmLm5vZGUoXykub3JkZXI9eX0pfSl9cmV0dXJuIFgzfXZhciBLMyxMQTtmdW5jdGlvbiBBdHQoKXtpZihMQSlyZXR1cm4gSzM7TEE9MTt2YXIgdD0kZSgpLGU9eWkoKS5HcmFwaCxyPXZuKCk7SzM9e3Bvc2l0aW9uWDptLGZpbmRUeXBlMUNvbmZsaWN0czpuLGZpbmRUeXBlMkNvbmZsaWN0czppLGFkZENvbmZsaWN0OnMsaGFzQ29uZmxpY3Q6byx2ZXJ0aWNhbEFsaWdubWVudDpsLGhvcml6b250YWxDb21wYWN0aW9uOnUsYWxpZ25Db29yZGluYXRlczpmLGZpbmRTbWFsbGVzdFdpZHRoQWxpZ25tZW50OmQsYmFsYW5jZTpwfTtmdW5jdGlvbiBuKGIseCl7dmFyIGs9e307ZnVuY3Rpb24gVChDLE0pe3ZhciBTPTAsUj0wLEE9Qy5sZW5ndGgsTD10Lmxhc3QoTSk7cmV0dXJuIHQuZm9yRWFjaChNLGZ1bmN0aW9uKHYsQil7dmFyIHc9YShiLHYpLEQ9dz9iLm5vZGUodykub3JkZXI6QTsod3x8dj09PUwpJiYodC5mb3JFYWNoKE0uc2xpY2UoUixCKzEpLGZ1bmN0aW9uKE4pe3QuZm9yRWFjaChiLnByZWRlY2Vzc29ycyhOKSxmdW5jdGlvbih6KXt2YXIgWD1iLm5vZGUoeiksY3Q9WC5vcmRlcjsoY3Q8U3x8RDxjdCkmJiEoWC5kdW1teSYmYi5ub2RlKE4pLmR1bW15KSYmcyhrLHosTil9KX0pLFI9QisxLFM9RCl9KSxNfXJldHVybiB0LnJlZHVjZSh4LFQpLGt9ZnVuY3Rpb24gaShiLHgpe3ZhciBrPXt9O2Z1bmN0aW9uIFQoTSxTLFIsQSxMKXt2YXIgdjt0LmZvckVhY2godC5yYW5nZShTLFIpLGZ1bmN0aW9uKEIpe3Y9TVtCXSxiLm5vZGUodikuZHVtbXkmJnQuZm9yRWFjaChiLnByZWRlY2Vzc29ycyh2KSxmdW5jdGlvbih3KXt2YXIgRD1iLm5vZGUodyk7RC5kdW1teSYmKEQub3JkZXI8QXx8RC5vcmRlcj5MKSYmcyhrLHcsdil9KX0pfWZ1bmN0aW9uIEMoTSxTKXt2YXIgUj0tMSxBLEw9MDtyZXR1cm4gdC5mb3JFYWNoKFMsZnVuY3Rpb24odixCKXtpZihiLm5vZGUodikuZHVtbXk9PT0iYm9yZGVyIil7dmFyIHc9Yi5wcmVkZWNlc3NvcnModik7dy5sZW5ndGgmJihBPWIubm9kZSh3WzBdKS5vcmRlcixUKFMsTCxCLFIsQSksTD1CLFI9QSl9VChTLEwsUy5sZW5ndGgsQSxNLmxlbmd0aCl9KSxTfXJldHVybiB0LnJlZHVjZSh4LEMpLGt9ZnVuY3Rpb24gYShiLHgpe2lmKGIubm9kZSh4KS5kdW1teSlyZXR1cm4gdC5maW5kKGIucHJlZGVjZXNzb3JzKHgpLGZ1bmN0aW9uKGspe3JldHVybiBiLm5vZGUoaykuZHVtbXl9KX1mdW5jdGlvbiBzKGIseCxrKXtpZih4Pmspe3ZhciBUPXg7eD1rLGs9VH12YXIgQz1iW3hdO0N8fChiW3hdPUM9e30pLENba109ITB9ZnVuY3Rpb24gbyhiLHgsayl7aWYoeD5rKXt2YXIgVD14O3g9ayxrPVR9cmV0dXJuIHQuaGFzKGJbeF0sayl9ZnVuY3Rpb24gbChiLHgsayxUKXt2YXIgQz17fSxNPXt9LFM9e307cmV0dXJuIHQuZm9yRWFjaCh4LGZ1bmN0aW9uKFIpe3QuZm9yRWFjaChSLGZ1bmN0aW9uKEEsTCl7Q1tBXT1BLE1bQV09QSxTW0FdPUx9KX0pLHQuZm9yRWFjaCh4LGZ1bmN0aW9uKFIpe3ZhciBBPS0xO3QuZm9yRWFjaChSLGZ1bmN0aW9uKEwpe3ZhciB2PVQoTCk7aWYodi5sZW5ndGgpe3Y9dC5zb3J0QnkodixmdW5jdGlvbih6KXtyZXR1cm4gU1t6XX0pO2Zvcih2YXIgQj0odi5sZW5ndGgtMSkvMix3PU1hdGguZmxvb3IoQiksRD1NYXRoLmNlaWwoQik7dzw9RDsrK3cpe3ZhciBOPXZbd107TVtMXT09PUwmJkE8U1tOXSYmIW8oayxMLE4pJiYoTVtOXT1MLE1bTF09Q1tMXT1DW05dLEE9U1tOXSl9fX0pfSkse3Jvb3Q6QyxhbGlnbjpNfX1mdW5jdGlvbiB1KGIseCxrLFQsQyl7dmFyIE09e30sUz1oKGIseCxrLEMpLFI9Qz8iYm9yZGVyTGVmdCI6ImJvcmRlclJpZ2h0IjtmdW5jdGlvbiBBKEIsdyl7Zm9yKHZhciBEPVMubm9kZXMoKSxOPUQucG9wKCksej17fTtOOyl6W05dP0IoTik6KHpbTl09ITAsRC5wdXNoKE4pLEQ9RC5jb25jYXQodyhOKSkpLE49RC5wb3AoKX1mdW5jdGlvbiBMKEIpe01bQl09Uy5pbkVkZ2VzKEIpLnJlZHVjZShmdW5jdGlvbih3LEQpe3JldHVybiBNYXRoLm1heCh3LE1bRC52XStTLmVkZ2UoRCkpfSwwKX1mdW5jdGlvbiB2KEIpe3ZhciB3PVMub3V0RWRnZXMoQikucmVkdWNlKGZ1bmN0aW9uKE4seil7cmV0dXJuIE1hdGgubWluKE4sTVt6LnddLVMuZWRnZSh6KSl9LE51bWJlci5QT1NJVElWRV9JTkZJTklUWSksRD1iLm5vZGUoQik7dyE9PU51bWJlci5QT1NJVElWRV9JTkZJTklUWSYmRC5ib3JkZXJUeXBlIT09UiYmKE1bQl09TWF0aC5tYXgoTVtCXSx3KSl9cmV0dXJuIEEoTCxTLnByZWRlY2Vzc29ycy5iaW5kKFMpKSxBKHYsUy5zdWNjZXNzb3JzLmJpbmQoUykpLHQuZm9yRWFjaChULGZ1bmN0aW9uKEIpe01bQl09TVtrW0JdXX0pLE19ZnVuY3Rpb24gaChiLHgsayxUKXt2YXIgQz1uZXcgZSxNPWIuZ3JhcGgoKSxTPV8oTS5ub2Rlc2VwLE0uZWRnZXNlcCxUKTtyZXR1cm4gdC5mb3JFYWNoKHgsZnVuY3Rpb24oUil7dmFyIEE7dC5mb3JFYWNoKFIsZnVuY3Rpb24oTCl7dmFyIHY9a1tMXTtpZihDLnNldE5vZGUodiksQSl7dmFyIEI9a1tBXSx3PUMuZWRnZShCLHYpO0Muc2V0RWRnZShCLHYsTWF0aC5tYXgoUyhiLEwsQSksd3x8MCkpfUE9TH0pfSksQ31mdW5jdGlvbiBkKGIseCl7cmV0dXJuIHQubWluQnkodC52YWx1ZXMoeCksZnVuY3Rpb24oayl7dmFyIFQ9TnVtYmVyLk5FR0FUSVZFX0lORklOSVRZLEM9TnVtYmVyLlBPU0lUSVZFX0lORklOSVRZO3JldHVybiB0LmZvckluKGssZnVuY3Rpb24oTSxTKXt2YXIgUj15KGIsUykvMjtUPU1hdGgubWF4KE0rUixUKSxDPU1hdGgubWluKE0tUixDKX0pLFQtQ30pfWZ1bmN0aW9uIGYoYix4KXt2YXIgaz10LnZhbHVlcyh4KSxUPXQubWluKGspLEM9dC5tYXgoayk7dC5mb3JFYWNoKFsidSIsImQiXSxmdW5jdGlvbihNKXt0LmZvckVhY2goWyJsIiwiciJdLGZ1bmN0aW9uKFMpe3ZhciBSPU0rUyxBPWJbUl0sTDtpZihBIT09eCl7dmFyIHY9dC52YWx1ZXMoQSk7TD1TPT09ImwiP1QtdC5taW4odik6Qy10Lm1heCh2KSxMJiYoYltSXT10Lm1hcFZhbHVlcyhBLGZ1bmN0aW9uKEIpe3JldHVybiBCK0x9KSl9fSl9KX1mdW5jdGlvbiBwKGIseCl7cmV0dXJuIHQubWFwVmFsdWVzKGIudWwsZnVuY3Rpb24oayxUKXtpZih4KXJldHVybiBiW3gudG9Mb3dlckNhc2UoKV1bVF07dmFyIEM9dC5zb3J0QnkodC5tYXAoYixUKSk7cmV0dXJuKENbMV0rQ1syXSkvMn0pfWZ1bmN0aW9uIG0oYil7dmFyIHg9ci5idWlsZExheWVyTWF0cml4KGIpLGs9dC5tZXJnZShuKGIseCksaShiLHgpKSxUPXt9LEM7dC5mb3JFYWNoKFsidSIsImQiXSxmdW5jdGlvbihTKXtDPVM9PT0idSI/eDp0LnZhbHVlcyh4KS5yZXZlcnNlKCksdC5mb3JFYWNoKFsibCIsInIiXSxmdW5jdGlvbihSKXtSPT09InIiJiYoQz10Lm1hcChDLGZ1bmN0aW9uKEIpe3JldHVybiB0LnZhbHVlcyhCKS5yZXZlcnNlKCl9KSk7dmFyIEE9KFM9PT0idSI/Yi5wcmVkZWNlc3NvcnM6Yi5zdWNjZXNzb3JzKS5iaW5kKGIpLEw9bChiLEMsayxBKSx2PXUoYixDLEwucm9vdCxMLmFsaWduLFI9PT0iciIpO1I9PT0iciImJih2PXQubWFwVmFsdWVzKHYsZnVuY3Rpb24oQil7cmV0dXJuLUJ9KSksVFtTK1JdPXZ9KX0pO3ZhciBNPWQoYixUKTtyZXR1cm4gZihULE0pLHAoVCxiLmdyYXBoKCkuYWxpZ24pfWZ1bmN0aW9uIF8oYix4LGspe3JldHVybiBmdW5jdGlvbihULEMsTSl7dmFyIFM9VC5ub2RlKEMpLFI9VC5ub2RlKE0pLEE9MCxMO2lmKEErPVMud2lkdGgvMix0LmhhcyhTLCJsYWJlbHBvcyIpKXN3aXRjaChTLmxhYmVscG9zLnRvTG93ZXJDYXNlKCkpe2Nhc2UibCI6TD0tUy53aWR0aC8yO2JyZWFrO2Nhc2UiciI6TD1TLndpZHRoLzI7YnJlYWt9aWYoTCYmKEErPWs/TDotTCksTD0wLEErPShTLmR1bW15P3g6YikvMixBKz0oUi5kdW1teT94OmIpLzIsQSs9Ui53aWR0aC8yLHQuaGFzKFIsImxhYmVscG9zIikpc3dpdGNoKFIubGFiZWxwb3MudG9Mb3dlckNhc2UoKSl7Y2FzZSJsIjpMPVIud2lkdGgvMjticmVhaztjYXNlInIiOkw9LVIud2lkdGgvMjticmVha31yZXR1cm4gTCYmKEErPWs/TDotTCksTD0wLEF9fWZ1bmN0aW9uIHkoYix4KXtyZXR1cm4gYi5ub2RlKHgpLndpZHRofXJldHVybiBLM312YXIgWjMsUkE7ZnVuY3Rpb24gTXR0KCl7aWYoUkEpcmV0dXJuIFozO1JBPTE7dmFyIHQ9JGUoKSxlPXZuKCkscj1BdHQoKS5wb3NpdGlvblg7WjM9bjtmdW5jdGlvbiBuKGEpe2E9ZS5hc05vbkNvbXBvdW5kR3JhcGgoYSksaShhKSx0LmZvckVhY2gocihhKSxmdW5jdGlvbihzLG8pe2Eubm9kZShvKS54PXN9KX1mdW5jdGlvbiBpKGEpe3ZhciBzPWUuYnVpbGRMYXllck1hdHJpeChhKSxvPWEuZ3JhcGgoKS5yYW5rc2VwLGw9MDt0LmZvckVhY2gocyxmdW5jdGlvbih1KXt2YXIgaD10Lm1heCh0Lm1hcCh1LGZ1bmN0aW9uKGQpe3JldHVybiBhLm5vZGUoZCkuaGVpZ2h0fSkpO3QuZm9yRWFjaCh1LGZ1bmN0aW9uKGQpe2Eubm9kZShkKS55PWwraC8yfSksbCs9aCtvfSl9cmV0dXJuIFozfXZhciBRMyxJQTtmdW5jdGlvbiBMdHQoKXtpZihJQSlyZXR1cm4gUTM7SUE9MTt2YXIgdD0kZSgpLGU9aHR0KCkscj1mdHQoKSxuPXB0dCgpLGk9dm4oKS5ub3JtYWxpemVSYW5rcyxhPWd0dCgpLHM9dm4oKS5yZW1vdmVFbXB0eVJhbmtzLG89eXR0KCksbD1tdHQoKSx1PWJ0dCgpLGg9U3R0KCksZD1NdHQoKSxmPXZuKCkscD15aSgpLkdyYXBoO1EzPW07ZnVuY3Rpb24gbShXLHR0KXt2YXIgSz10dCYmdHQuZGVidWdUaW1pbmc/Zi50aW1lOmYubm90aW1lO0soImxheW91dCIsZnVuY3Rpb24oKXt2YXIgaXQ9SygiICBidWlsZExheW91dEdyYXBoIixmdW5jdGlvbigpe3JldHVybiBBKFcpfSk7SygiICBydW5MYXlvdXQiLGZ1bmN0aW9uKCl7XyhpdCxLKX0pLEsoIiAgdXBkYXRlSW5wdXRHcmFwaCIsZnVuY3Rpb24oKXt5KFcsaXQpfSl9KX1mdW5jdGlvbiBfKFcsdHQpe3R0KCIgICAgbWFrZVNwYWNlRm9yRWRnZUxhYmVscyIsZnVuY3Rpb24oKXtMKFcpfSksdHQoIiAgICByZW1vdmVTZWxmRWRnZXMiLGZ1bmN0aW9uKCl7SihXKX0pLHR0KCIgICAgYWN5Y2xpYyIsZnVuY3Rpb24oKXtlLnJ1bihXKX0pLHR0KCIgICAgbmVzdGluZ0dyYXBoLnJ1biIsZnVuY3Rpb24oKXtvLnJ1bihXKX0pLHR0KCIgICAgcmFuayIsZnVuY3Rpb24oKXtuKGYuYXNOb25Db21wb3VuZEdyYXBoKFcpKX0pLHR0KCIgICAgaW5qZWN0RWRnZUxhYmVsUHJveGllcyIsZnVuY3Rpb24oKXt2KFcpfSksdHQoIiAgICByZW1vdmVFbXB0eVJhbmtzIixmdW5jdGlvbigpe3MoVyl9KSx0dCgiICAgIG5lc3RpbmdHcmFwaC5jbGVhbnVwIixmdW5jdGlvbigpe28uY2xlYW51cChXKX0pLHR0KCIgICAgbm9ybWFsaXplUmFua3MiLGZ1bmN0aW9uKCl7aShXKX0pLHR0KCIgICAgYXNzaWduUmFua01pbk1heCIsZnVuY3Rpb24oKXtCKFcpfSksdHQoIiAgICByZW1vdmVFZGdlTGFiZWxQcm94aWVzIixmdW5jdGlvbigpe3coVyl9KSx0dCgiICAgIG5vcm1hbGl6ZS5ydW4iLGZ1bmN0aW9uKCl7ci5ydW4oVyl9KSx0dCgiICAgIHBhcmVudER1bW15Q2hhaW5zIixmdW5jdGlvbigpe2EoVyl9KSx0dCgiICAgIGFkZEJvcmRlclNlZ21lbnRzIixmdW5jdGlvbigpe2woVyl9KSx0dCgiICAgIG9yZGVyIixmdW5jdGlvbigpe2goVyl9KSx0dCgiICAgIGluc2VydFNlbGZFZGdlcyIsZnVuY3Rpb24oKXtZKFcpfSksdHQoIiAgICBhZGp1c3RDb29yZGluYXRlU3lzdGVtIixmdW5jdGlvbigpe3UuYWRqdXN0KFcpfSksdHQoIiAgICBwb3NpdGlvbiIsZnVuY3Rpb24oKXtkKFcpfSksdHQoIiAgICBwb3NpdGlvblNlbGZFZGdlcyIsZnVuY3Rpb24oKXskKFcpfSksdHQoIiAgICByZW1vdmVCb3JkZXJOb2RlcyIsZnVuY3Rpb24oKXtjdChXKX0pLHR0KCIgICAgbm9ybWFsaXplLnVuZG8iLGZ1bmN0aW9uKCl7ci51bmRvKFcpfSksdHQoIiAgICBmaXh1cEVkZ2VMYWJlbENvb3JkcyIsZnVuY3Rpb24oKXt6KFcpfSksdHQoIiAgICB1bmRvQ29vcmRpbmF0ZVN5c3RlbSIsZnVuY3Rpb24oKXt1LnVuZG8oVyl9KSx0dCgiICAgIHRyYW5zbGF0ZUdyYXBoIixmdW5jdGlvbigpe0QoVyl9KSx0dCgiICAgIGFzc2lnbk5vZGVJbnRlcnNlY3RzIixmdW5jdGlvbigpe04oVyl9KSx0dCgiICAgIHJldmVyc2VQb2ludHMiLGZ1bmN0aW9uKCl7WChXKX0pLHR0KCIgICAgYWN5Y2xpYy51bmRvIixmdW5jdGlvbigpe2UudW5kbyhXKX0pfWZ1bmN0aW9uIHkoVyx0dCl7dC5mb3JFYWNoKFcubm9kZXMoKSxmdW5jdGlvbihLKXt2YXIgaXQ9Vy5ub2RlKEspLFo9dHQubm9kZShLKTtpdCYmKGl0Lng9Wi54LGl0Lnk9Wi55LHR0LmNoaWxkcmVuKEspLmxlbmd0aCYmKGl0LndpZHRoPVoud2lkdGgsaXQuaGVpZ2h0PVouaGVpZ2h0KSl9KSx0LmZvckVhY2goVy5lZGdlcygpLGZ1bmN0aW9uKEspe3ZhciBpdD1XLmVkZ2UoSyksWj10dC5lZGdlKEspO2l0LnBvaW50cz1aLnBvaW50cyx0LmhhcyhaLCJ4IikmJihpdC54PVoueCxpdC55PVoueSl9KSxXLmdyYXBoKCkud2lkdGg9dHQuZ3JhcGgoKS53aWR0aCxXLmdyYXBoKCkuaGVpZ2h0PXR0LmdyYXBoKCkuaGVpZ2h0fXZhciBiPVsibm9kZXNlcCIsImVkZ2VzZXAiLCJyYW5rc2VwIiwibWFyZ2lueCIsIm1hcmdpbnkiXSx4PXtyYW5rc2VwOjUwLGVkZ2VzZXA6MjAsbm9kZXNlcDo1MCxyYW5rZGlyOiJ0YiJ9LGs9WyJhY3ljbGljZXIiLCJyYW5rZXIiLCJyYW5rZGlyIiwiYWxpZ24iXSxUPVsid2lkdGgiLCJoZWlnaHQiXSxDPXt3aWR0aDowLGhlaWdodDowfSxNPVsibWlubGVuIiwid2VpZ2h0Iiwid2lkdGgiLCJoZWlnaHQiLCJsYWJlbG9mZnNldCJdLFM9e21pbmxlbjoxLHdlaWdodDoxLHdpZHRoOjAsaGVpZ2h0OjAsbGFiZWxvZmZzZXQ6MTAsbGFiZWxwb3M6InIifSxSPVsibGFiZWxwb3MiXTtmdW5jdGlvbiBBKFcpe3ZhciB0dD1uZXcgcCh7bXVsdGlncmFwaDohMCxjb21wb3VuZDohMH0pLEs9dXQoVy5ncmFwaCgpKTtyZXR1cm4gdHQuc2V0R3JhcGgodC5tZXJnZSh7fSx4LGx0KEssYiksdC5waWNrKEssaykpKSx0LmZvckVhY2goVy5ub2RlcygpLGZ1bmN0aW9uKGl0KXt2YXIgWj11dChXLm5vZGUoaXQpKTt0dC5zZXROb2RlKGl0LHQuZGVmYXVsdHMobHQoWixUKSxDKSksdHQuc2V0UGFyZW50KGl0LFcucGFyZW50KGl0KSl9KSx0LmZvckVhY2goVy5lZGdlcygpLGZ1bmN0aW9uKGl0KXt2YXIgWj11dChXLmVkZ2UoaXQpKTt0dC5zZXRFZGdlKGl0LHQubWVyZ2Uoe30sUyxsdChaLE0pLHQucGljayhaLFIpKSl9KSx0dH1mdW5jdGlvbiBMKFcpe3ZhciB0dD1XLmdyYXBoKCk7dHQucmFua3NlcC89Mix0LmZvckVhY2goVy5lZGdlcygpLGZ1bmN0aW9uKEspe3ZhciBpdD1XLmVkZ2UoSyk7aXQubWlubGVuKj0yLGl0LmxhYmVscG9zLnRvTG93ZXJDYXNlKCkhPT0iYyImJih0dC5yYW5rZGlyPT09IlRCInx8dHQucmFua2Rpcj09PSJCVCI/aXQud2lkdGgrPWl0LmxhYmVsb2Zmc2V0Oml0LmhlaWdodCs9aXQubGFiZWxvZmZzZXQpfSl9ZnVuY3Rpb24gdihXKXt0LmZvckVhY2goVy5lZGdlcygpLGZ1bmN0aW9uKHR0KXt2YXIgSz1XLmVkZ2UodHQpO2lmKEsud2lkdGgmJksuaGVpZ2h0KXt2YXIgaXQ9Vy5ub2RlKHR0LnYpLFo9Vy5ub2RlKHR0LncpLFY9e3Jhbms6KFoucmFuay1pdC5yYW5rKS8yK2l0LnJhbmssZTp0dH07Zi5hZGREdW1teU5vZGUoVywiZWRnZS1wcm94eSIsViwiX2VwIil9fSl9ZnVuY3Rpb24gQihXKXt2YXIgdHQ9MDt0LmZvckVhY2goVy5ub2RlcygpLGZ1bmN0aW9uKEspe3ZhciBpdD1XLm5vZGUoSyk7aXQuYm9yZGVyVG9wJiYoaXQubWluUmFuaz1XLm5vZGUoaXQuYm9yZGVyVG9wKS5yYW5rLGl0Lm1heFJhbms9Vy5ub2RlKGl0LmJvcmRlckJvdHRvbSkucmFuayx0dD10Lm1heCh0dCxpdC5tYXhSYW5rKSl9KSxXLmdyYXBoKCkubWF4UmFuaz10dH1mdW5jdGlvbiB3KFcpe3QuZm9yRWFjaChXLm5vZGVzKCksZnVuY3Rpb24odHQpe3ZhciBLPVcubm9kZSh0dCk7Sy5kdW1teT09PSJlZGdlLXByb3h5IiYmKFcuZWRnZShLLmUpLmxhYmVsUmFuaz1LLnJhbmssVy5yZW1vdmVOb2RlKHR0KSl9KX1mdW5jdGlvbiBEKFcpe3ZhciB0dD1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksSz0wLGl0PU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxaPTAsVj1XLmdyYXBoKCksUT1WLm1hcmdpbnh8fDAscT1WLm1hcmdpbnl8fDA7ZnVuY3Rpb24gVShGKXt2YXIgaj1GLngsUD1GLnksZXQ9Ri53aWR0aCxhdD1GLmhlaWdodDt0dD1NYXRoLm1pbih0dCxqLWV0LzIpLEs9TWF0aC5tYXgoSyxqK2V0LzIpLGl0PU1hdGgubWluKGl0LFAtYXQvMiksWj1NYXRoLm1heChaLFArYXQvMil9dC5mb3JFYWNoKFcubm9kZXMoKSxmdW5jdGlvbihGKXtVKFcubm9kZShGKSl9KSx0LmZvckVhY2goVy5lZGdlcygpLGZ1bmN0aW9uKEYpe3ZhciBqPVcuZWRnZShGKTt0LmhhcyhqLCJ4IikmJlUoail9KSx0dC09USxpdC09cSx0LmZvckVhY2goVy5ub2RlcygpLGZ1bmN0aW9uKEYpe3ZhciBqPVcubm9kZShGKTtqLngtPXR0LGoueS09aXR9KSx0LmZvckVhY2goVy5lZGdlcygpLGZ1bmN0aW9uKEYpe3ZhciBqPVcuZWRnZShGKTt0LmZvckVhY2goai5wb2ludHMsZnVuY3Rpb24oUCl7UC54LT10dCxQLnktPWl0fSksdC5oYXMoaiwieCIpJiYoai54LT10dCksdC5oYXMoaiwieSIpJiYoai55LT1pdCl9KSxWLndpZHRoPUstdHQrUSxWLmhlaWdodD1aLWl0K3F9ZnVuY3Rpb24gTihXKXt0LmZvckVhY2goVy5lZGdlcygpLGZ1bmN0aW9uKHR0KXt2YXIgSz1XLmVkZ2UodHQpLGl0PVcubm9kZSh0dC52KSxaPVcubm9kZSh0dC53KSxWLFE7Sy5wb2ludHM/KFY9Sy5wb2ludHNbMF0sUT1LLnBvaW50c1tLLnBvaW50cy5sZW5ndGgtMV0pOihLLnBvaW50cz1bXSxWPVosUT1pdCksSy5wb2ludHMudW5zaGlmdChmLmludGVyc2VjdFJlY3QoaXQsVikpLEsucG9pbnRzLnB1c2goZi5pbnRlcnNlY3RSZWN0KFosUSkpfSl9ZnVuY3Rpb24geihXKXt0LmZvckVhY2goVy5lZGdlcygpLGZ1bmN0aW9uKHR0KXt2YXIgSz1XLmVkZ2UodHQpO2lmKHQuaGFzKEssIngiKSlzd2l0Y2goKEsubGFiZWxwb3M9PT0ibCJ8fEsubGFiZWxwb3M9PT0iciIpJiYoSy53aWR0aC09Sy5sYWJlbG9mZnNldCksSy5sYWJlbHBvcyl7Y2FzZSJsIjpLLngtPUsud2lkdGgvMitLLmxhYmVsb2Zmc2V0O2JyZWFrO2Nhc2UiciI6Sy54Kz1LLndpZHRoLzIrSy5sYWJlbG9mZnNldDticmVha319KX1mdW5jdGlvbiBYKFcpe3QuZm9yRWFjaChXLmVkZ2VzKCksZnVuY3Rpb24odHQpe3ZhciBLPVcuZWRnZSh0dCk7Sy5yZXZlcnNlZCYmSy5wb2ludHMucmV2ZXJzZSgpfSl9ZnVuY3Rpb24gY3QoVyl7dC5mb3JFYWNoKFcubm9kZXMoKSxmdW5jdGlvbih0dCl7aWYoVy5jaGlsZHJlbih0dCkubGVuZ3RoKXt2YXIgSz1XLm5vZGUodHQpLGl0PVcubm9kZShLLmJvcmRlclRvcCksWj1XLm5vZGUoSy5ib3JkZXJCb3R0b20pLFY9Vy5ub2RlKHQubGFzdChLLmJvcmRlckxlZnQpKSxRPVcubm9kZSh0Lmxhc3QoSy5ib3JkZXJSaWdodCkpO0sud2lkdGg9TWF0aC5hYnMoUS54LVYueCksSy5oZWlnaHQ9TWF0aC5hYnMoWi55LWl0LnkpLEsueD1WLngrSy53aWR0aC8yLEsueT1pdC55K0suaGVpZ2h0LzJ9fSksdC5mb3JFYWNoKFcubm9kZXMoKSxmdW5jdGlvbih0dCl7Vy5ub2RlKHR0KS5kdW1teT09PSJib3JkZXIiJiZXLnJlbW92ZU5vZGUodHQpfSl9ZnVuY3Rpb24gSihXKXt0LmZvckVhY2goVy5lZGdlcygpLGZ1bmN0aW9uKHR0KXtpZih0dC52PT09dHQudyl7dmFyIEs9Vy5ub2RlKHR0LnYpO0suc2VsZkVkZ2VzfHwoSy5zZWxmRWRnZXM9W10pLEsuc2VsZkVkZ2VzLnB1c2goe2U6dHQsbGFiZWw6Vy5lZGdlKHR0KX0pLFcucmVtb3ZlRWRnZSh0dCl9fSl9ZnVuY3Rpb24gWShXKXt2YXIgdHQ9Zi5idWlsZExheWVyTWF0cml4KFcpO3QuZm9yRWFjaCh0dCxmdW5jdGlvbihLKXt2YXIgaXQ9MDt0LmZvckVhY2goSyxmdW5jdGlvbihaLFYpe3ZhciBRPVcubm9kZShaKTtRLm9yZGVyPVYraXQsdC5mb3JFYWNoKFEuc2VsZkVkZ2VzLGZ1bmN0aW9uKHEpe2YuYWRkRHVtbXlOb2RlKFcsInNlbGZlZGdlIix7d2lkdGg6cS5sYWJlbC53aWR0aCxoZWlnaHQ6cS5sYWJlbC5oZWlnaHQscmFuazpRLnJhbmssb3JkZXI6VisgKytpdCxlOnEuZSxsYWJlbDpxLmxhYmVsfSwiX3NlIil9KSxkZWxldGUgUS5zZWxmRWRnZXN9KX0pfWZ1bmN0aW9uICQoVyl7dC5mb3JFYWNoKFcubm9kZXMoKSxmdW5jdGlvbih0dCl7dmFyIEs9Vy5ub2RlKHR0KTtpZihLLmR1bW15PT09InNlbGZlZGdlIil7dmFyIGl0PVcubm9kZShLLmUudiksWj1pdC54K2l0LndpZHRoLzIsVj1pdC55LFE9Sy54LVoscT1pdC5oZWlnaHQvMjtXLnNldEVkZ2UoSy5lLEsubGFiZWwpLFcucmVtb3ZlTm9kZSh0dCksSy5sYWJlbC5wb2ludHM9W3t4OlorMipRLzMseTpWLXF9LHt4OlorNSpRLzYseTpWLXF9LHt4OlorUSx5OlZ9LHt4OlorNSpRLzYseTpWK3F9LHt4OlorMipRLzMseTpWK3F9XSxLLmxhYmVsLng9Sy54LEsubGFiZWwueT1LLnl9fSl9ZnVuY3Rpb24gbHQoVyx0dCl7cmV0dXJuIHQubWFwVmFsdWVzKHQucGljayhXLHR0KSxOdW1iZXIpfWZ1bmN0aW9uIHV0KFcpe3ZhciB0dD17fTtyZXR1cm4gdC5mb3JFYWNoKFcsZnVuY3Rpb24oSyxpdCl7dHRbaXQudG9Mb3dlckNhc2UoKV09S30pLHR0fXJldHVybiBRM312YXIgSjMsTkE7ZnVuY3Rpb24gUnR0KCl7aWYoTkEpcmV0dXJuIEozO05BPTE7dmFyIHQ9JGUoKSxlPXZuKCkscj15aSgpLkdyYXBoO0ozPXtkZWJ1Z09yZGVyaW5nOm59O2Z1bmN0aW9uIG4oaSl7dmFyIGE9ZS5idWlsZExheWVyTWF0cml4KGkpLHM9bmV3IHIoe2NvbXBvdW5kOiEwLG11bHRpZ3JhcGg6ITB9KS5zZXRHcmFwaCh7fSk7cmV0dXJuIHQuZm9yRWFjaChpLm5vZGVzKCksZnVuY3Rpb24obyl7cy5zZXROb2RlKG8se2xhYmVsOm99KSxzLnNldFBhcmVudChvLCJsYXllciIraS5ub2RlKG8pLnJhbmspfSksdC5mb3JFYWNoKGkuZWRnZXMoKSxmdW5jdGlvbihvKXtzLnNldEVkZ2Uoby52LG8udyx7fSxvLm5hbWUpfSksdC5mb3JFYWNoKGEsZnVuY3Rpb24obyxsKXt2YXIgdT0ibGF5ZXIiK2w7cy5zZXROb2RlKHUse3Jhbms6InNhbWUifSksdC5yZWR1Y2UobyxmdW5jdGlvbihoLGQpe3JldHVybiBzLnNldEVkZ2UoaCxkLHtzdHlsZToiaW52aXMifSksZH0pfSksc31yZXR1cm4gSjN9dmFyIHQ0LEJBO2Z1bmN0aW9uIEl0dCgpe3JldHVybiBCQXx8KEJBPTEsdDQ9IjAuOC41IiksdDR9dmFyIGU0LERBO2Z1bmN0aW9uIE9BKCl7cmV0dXJuIERBfHwoREE9MSxlND17Z3JhcGhsaWI6eWkoKSxsYXlvdXQ6THR0KCksZGVidWc6UnR0KCksdXRpbDp7dGltZTp2bigpLnRpbWUsbm90aW1lOnZuKCkubm90aW1lfSx2ZXJzaW9uOkl0dCgpfSksZTR9dmFyIFpjPU9BKCk7bGV0IEZBPTA7Y29uc3QgTnR0PWZ1bmN0aW9uKHQsZSxyLG4saSl7Y29uc3QgYT1mdW5jdGlvbih4KXtzd2l0Y2goeCl7Y2FzZSBpLmRiLnJlbGF0aW9uVHlwZS5BR0dSRUdBVElPTjpyZXR1cm4iYWdncmVnYXRpb24iO2Nhc2UgaS5kYi5FWFRFTlNJT046cmV0dXJuImV4dGVuc2lvbiI7Y2FzZSBpLmRiLkNPTVBPU0lUSU9OOnJldHVybiJjb21wb3NpdGlvbiI7Y2FzZSBpLmRiLkRFUEVOREVOQ1k6cmV0dXJuImRlcGVuZGVuY3kiO2Nhc2UgaS5kYi5MT0xMSVBPUDpyZXR1cm4ibG9sbGlwb3AifX07ZS5wb2ludHM9ZS5wb2ludHMuZmlsdGVyKHg9PiFOdW1iZXIuaXNOYU4oeC55KSk7Y29uc3Qgcz1lLnBvaW50cyxvPVVhKCkueChmdW5jdGlvbih4KXtyZXR1cm4geC54fSkueShmdW5jdGlvbih4KXtyZXR1cm4geC55fSkuY3VydmUoT3MpLGw9dC5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIixvKHMpKS5hdHRyKCJpZCIsImVkZ2UiK0ZBKS5hdHRyKCJjbGFzcyIsInJlbGF0aW9uIik7bGV0IHU9IiI7bi5hcnJvd01hcmtlckFic29sdXRlJiYodT13aW5kb3cubG9jYXRpb24ucHJvdG9jb2wrIi8vIit3aW5kb3cubG9jYXRpb24uaG9zdCt3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUrd2luZG93LmxvY2F0aW9uLnNlYXJjaCx1PXUucmVwbGFjZSgvXCgvZywiXFwoIiksdT11LnJlcGxhY2UoL1wpL2csIlxcKSIpKSxyLnJlbGF0aW9uLmxpbmVUeXBlPT0xJiZsLmF0dHIoImNsYXNzIiwicmVsYXRpb24gZGFzaGVkLWxpbmUiKSxyLnJlbGF0aW9uLnR5cGUxIT09Im5vbmUiJiZsLmF0dHIoIm1hcmtlci1zdGFydCIsInVybCgiK3UrIiMiK2Eoci5yZWxhdGlvbi50eXBlMSkrIlN0YXJ0KSIpLHIucmVsYXRpb24udHlwZTIhPT0ibm9uZSImJmwuYXR0cigibWFya2VyLWVuZCIsInVybCgiK3UrIiMiK2Eoci5yZWxhdGlvbi50eXBlMikrIkVuZCkiKTtsZXQgaCxkO2NvbnN0IGY9ZS5wb2ludHMubGVuZ3RoO2xldCBwPVNlLmNhbGNMYWJlbFBvc2l0aW9uKGUucG9pbnRzKTtoPXAueCxkPXAueTtsZXQgbSxfLHksYjtpZihmJTIhPT0wJiZmPjEpe2xldCB4PVNlLmNhbGNDYXJkaW5hbGl0eVBvc2l0aW9uKHIucmVsYXRpb24udHlwZTEhPT0ibm9uZSIsZS5wb2ludHMsZS5wb2ludHNbMF0pLGs9U2UuY2FsY0NhcmRpbmFsaXR5UG9zaXRpb24oci5yZWxhdGlvbi50eXBlMiE9PSJub25lIixlLnBvaW50cyxlLnBvaW50c1tmLTFdKTtILmRlYnVnKCJjYXJkaW5hbGl0eV8xX3BvaW50ICIrSlNPTi5zdHJpbmdpZnkoeCkpLEguZGVidWcoImNhcmRpbmFsaXR5XzJfcG9pbnQgIitKU09OLnN0cmluZ2lmeShrKSksbT14LngsXz14LnkseT1rLngsYj1rLnl9aWYodHlwZW9mIHIudGl0bGU8InUiKXtjb25zdCB4PXQuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJjbGFzc0xhYmVsIiksaz14LmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwibGFiZWwiKS5hdHRyKCJ4IixoKS5hdHRyKCJ5IixkKS5hdHRyKCJmaWxsIiwicmVkIikuYXR0cigidGV4dC1hbmNob3IiLCJtaWRkbGUiKS50ZXh0KHIudGl0bGUpO3dpbmRvdy5sYWJlbD1rO2NvbnN0IFQ9ay5ub2RlKCkuZ2V0QkJveCgpO3guaW5zZXJ0KCJyZWN0IiwiOmZpcnN0LWNoaWxkIikuYXR0cigiY2xhc3MiLCJib3giKS5hdHRyKCJ4IixULngtbi5wYWRkaW5nLzIpLmF0dHIoInkiLFQueS1uLnBhZGRpbmcvMikuYXR0cigid2lkdGgiLFQud2lkdGgrbi5wYWRkaW5nKS5hdHRyKCJoZWlnaHQiLFQuaGVpZ2h0K24ucGFkZGluZyl9SC5pbmZvKCJSZW5kZXJpbmcgcmVsYXRpb24gIitKU09OLnN0cmluZ2lmeShyKSksdHlwZW9mIHIucmVsYXRpb25UaXRsZTE8InUiJiZyLnJlbGF0aW9uVGl0bGUxIT09Im5vbmUiJiZ0LmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwiY2FyZGluYWxpdHkiKS5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsInR5cGUxIikuYXR0cigieCIsbSkuYXR0cigieSIsXykuYXR0cigiZmlsbCIsImJsYWNrIikuYXR0cigiZm9udC1zaXplIiwiNiIpLnRleHQoci5yZWxhdGlvblRpdGxlMSksdHlwZW9mIHIucmVsYXRpb25UaXRsZTI8InUiJiZyLnJlbGF0aW9uVGl0bGUyIT09Im5vbmUiJiZ0LmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwiY2FyZGluYWxpdHkiKS5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsInR5cGUyIikuYXR0cigieCIseSkuYXR0cigieSIsYikuYXR0cigiZmlsbCIsImJsYWNrIikuYXR0cigiZm9udC1zaXplIiwiNiIpLnRleHQoci5yZWxhdGlvblRpdGxlMiksRkErK30sQnR0PWZ1bmN0aW9uKHQsZSxyLG4pe0guZGVidWcoIlJlbmRlcmluZyBjbGFzcyAiLGUscik7Y29uc3QgaT1lLmlkLGE9e2lkOmksbGFiZWw6ZS5pZCx3aWR0aDowLGhlaWdodDowfSxzPXQuYXBwZW5kKCJnIikuYXR0cigiaWQiLG4uZGIubG9va1VwRG9tSWQoaSkpLmF0dHIoImNsYXNzIiwiY2xhc3NHcm91cCIpO2xldCBvO2UubGluaz9vPXMuYXBwZW5kKCJzdmc6YSIpLmF0dHIoInhsaW5rOmhyZWYiLGUubGluaykuYXR0cigidGFyZ2V0IixlLmxpbmtUYXJnZXQpLmFwcGVuZCgidGV4dCIpLmF0dHIoInkiLHIudGV4dEhlaWdodCtyLnBhZGRpbmcpLmF0dHIoIngiLDApOm89cy5hcHBlbmQoInRleHQiKS5hdHRyKCJ5IixyLnRleHRIZWlnaHQrci5wYWRkaW5nKS5hdHRyKCJ4IiwwKTtsZXQgbD0hMDtlLmFubm90YXRpb25zLmZvckVhY2goZnVuY3Rpb24oQyl7Y29uc3QgTT1vLmFwcGVuZCgidHNwYW4iKS50ZXh0KCJceEFCIitDKyJceEJCIik7bHx8TS5hdHRyKCJkeSIsci50ZXh0SGVpZ2h0KSxsPSExfSk7bGV0IHU9ZS5pZDtlLnR5cGUhPT12b2lkIDAmJmUudHlwZSE9PSIiJiYodSs9IjwiK2UudHlwZSsiPiIpO2NvbnN0IGg9by5hcHBlbmQoInRzcGFuIikudGV4dCh1KS5hdHRyKCJjbGFzcyIsInRpdGxlIik7bHx8aC5hdHRyKCJkeSIsci50ZXh0SGVpZ2h0KTtjb25zdCBkPW8ubm9kZSgpLmdldEJCb3goKS5oZWlnaHQsZj1zLmFwcGVuZCgibGluZSIpLmF0dHIoIngxIiwwKS5hdHRyKCJ5MSIsci5wYWRkaW5nK2Qrci5kaXZpZGVyTWFyZ2luLzIpLmF0dHIoInkyIixyLnBhZGRpbmcrZCtyLmRpdmlkZXJNYXJnaW4vMikscD1zLmFwcGVuZCgidGV4dCIpLmF0dHIoIngiLHIucGFkZGluZykuYXR0cigieSIsZCtyLmRpdmlkZXJNYXJnaW4rci50ZXh0SGVpZ2h0KS5hdHRyKCJmaWxsIiwid2hpdGUiKS5hdHRyKCJjbGFzcyIsImNsYXNzVGV4dCIpO2w9ITAsZS5tZW1iZXJzLmZvckVhY2goZnVuY3Rpb24oQyl7UEEocCxDLGwsciksbD0hMX0pO2NvbnN0IG09cC5ub2RlKCkuZ2V0QkJveCgpLF89cy5hcHBlbmQoImxpbmUiKS5hdHRyKCJ4MSIsMCkuYXR0cigieTEiLHIucGFkZGluZytkK3IuZGl2aWRlck1hcmdpbittLmhlaWdodCkuYXR0cigieTIiLHIucGFkZGluZytkK3IuZGl2aWRlck1hcmdpbittLmhlaWdodCkseT1zLmFwcGVuZCgidGV4dCIpLmF0dHIoIngiLHIucGFkZGluZykuYXR0cigieSIsZCsyKnIuZGl2aWRlck1hcmdpbittLmhlaWdodCtyLnRleHRIZWlnaHQpLmF0dHIoImZpbGwiLCJ3aGl0ZSIpLmF0dHIoImNsYXNzIiwiY2xhc3NUZXh0Iik7bD0hMCxlLm1ldGhvZHMuZm9yRWFjaChmdW5jdGlvbihDKXtQQSh5LEMsbCxyKSxsPSExfSk7Y29uc3QgYj1zLm5vZGUoKS5nZXRCQm94KCk7dmFyIHg9IiAiO2UuY3NzQ2xhc3Nlcy5sZW5ndGg+MCYmKHg9eCtlLmNzc0NsYXNzZXMuam9pbigiICIpKTtjb25zdCBUPXMuaW5zZXJ0KCJyZWN0IiwiOmZpcnN0LWNoaWxkIikuYXR0cigieCIsMCkuYXR0cigieSIsMCkuYXR0cigid2lkdGgiLGIud2lkdGgrMipyLnBhZGRpbmcpLmF0dHIoImhlaWdodCIsYi5oZWlnaHQrci5wYWRkaW5nKy41KnIuZGl2aWRlck1hcmdpbikuYXR0cigiY2xhc3MiLHgpLm5vZGUoKS5nZXRCQm94KCkud2lkdGg7cmV0dXJuIG8ubm9kZSgpLmNoaWxkTm9kZXMuZm9yRWFjaChmdW5jdGlvbihDKXtDLnNldEF0dHJpYnV0ZSgieCIsKFQtQy5nZXRCQm94KCkud2lkdGgpLzIpfSksZS50b29sdGlwJiZvLmluc2VydCgidGl0bGUiKS50ZXh0KGUudG9vbHRpcCksZi5hdHRyKCJ4MiIsVCksXy5hdHRyKCJ4MiIsVCksYS53aWR0aD1ULGEuaGVpZ2h0PWIuaGVpZ2h0K3IucGFkZGluZysuNSpyLmRpdmlkZXJNYXJnaW4sYX0sejE9ZnVuY3Rpb24odCl7Y29uc3QgZT0vXihcK3wtfH58Iyk/KFx3Kykoflx3K358XFtcXSk/XHMrKFx3KykgKihcKnxcJCk/JC8scj0vXihbK3xcLXx+fCNdKT8oXHcrKSAqXCggKiguKilcKSAqKFwqfFwkKT8gKihcdypbfnxbXF1dKlxzKlx3Kn4/KSQvO2xldCBuPXQubWF0Y2goZSksaT10Lm1hdGNoKHIpO3JldHVybiBuJiYhaT9EdHQobik6aT9PdHQoaSk6RnR0KHQpfSxEdHQ9ZnVuY3Rpb24odCl7bGV0IGU9IiIscj0iIjt0cnl7bGV0IG49dFsxXT90WzFdLnRyaW0oKToiIixpPXRbMl0/dFsyXS50cmltKCk6IiIsYT10WzNdP2phKHRbM10udHJpbSgpKToiIixzPXRbNF0/dFs0XS50cmltKCk6IiIsbz10WzVdP3RbNV0udHJpbSgpOiIiO3I9bitpK2ErIiAiK3MsZT1yNChvKX1jYXRjaHtyPXR9cmV0dXJue2Rpc3BsYXlUZXh0OnIsY3NzU3R5bGU6ZX19LE90dD1mdW5jdGlvbih0KXtsZXQgZT0iIixyPSIiO3RyeXtsZXQgbj10WzFdP3RbMV0udHJpbSgpOiIiLGk9dFsyXT90WzJdLnRyaW0oKToiIixhPXRbM10/amEodFszXS50cmltKCkpOiIiLHM9dFs0XT90WzRdLnRyaW0oKToiIixvPXRbNV0/IiA6ICIramEodFs1XSkudHJpbSgpOiIiO3I9bitpKyIoIithKyIpIitvLGU9cjQocyl9Y2F0Y2h7cj10fXJldHVybntkaXNwbGF5VGV4dDpyLGNzc1N0eWxlOmV9fSxGdHQ9ZnVuY3Rpb24odCl7bGV0IGU9IiIscj0iIixuPSIiLGk9dC5pbmRleE9mKCIoIiksYT10LmluZGV4T2YoIikiKTtpZihpPjEmJmE+aSYmYTw9dC5sZW5ndGgpe2xldCBzPSIiLG89IiIsbD10LnN1YnN0cmluZygwLDEpO2wubWF0Y2goL1x3Lyk/bz10LnN1YnN0cmluZygwLGkpLnRyaW0oKToobC5tYXRjaCgvXCt8LXx+fCMvKSYmKHM9bCksbz10LnN1YnN0cmluZygxLGkpLnRyaW0oKSk7Y29uc3QgdT10LnN1YnN0cmluZyhpKzEsYSk7dC5zdWJzdHJpbmcoYSsxLDEpLHI9cjQodC5zdWJzdHJpbmcoYSsxLGErMikpLGU9cytvKyIoIitqYSh1LnRyaW0oKSkrIikiLGE8dC5sZW5ndGgmJihuPXQuc3Vic3RyaW5nKGErMikudHJpbSgpLG4hPT0iIiYmKG49IiA6ICIramEobiksZSs9bikpfWVsc2UgZT1qYSh0KTtyZXR1cm57ZGlzcGxheVRleHQ6ZSxjc3NTdHlsZTpyfX0sUEE9ZnVuY3Rpb24odCxlLHIsbil7bGV0IGk9ejEoZSk7Y29uc3QgYT10LmFwcGVuZCgidHNwYW4iKS5hdHRyKCJ4IixuLnBhZGRpbmcpLnRleHQoaS5kaXNwbGF5VGV4dCk7aS5jc3NTdHlsZSE9PSIiJiZhLmF0dHIoInN0eWxlIixpLmNzc1N0eWxlKSxyfHxhLmF0dHIoImR5IixuLnRleHRIZWlnaHQpfSxyND1mdW5jdGlvbih0KXtzd2l0Y2godCl7Y2FzZSIqIjpyZXR1cm4iZm9udC1zdHlsZTppdGFsaWM7IjtjYXNlIiQiOnJldHVybiJ0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lOyI7ZGVmYXVsdDpyZXR1cm4iIn19LHFBPXtkcmF3Q2xhc3M6QnR0LGRyYXdFZGdlOk50dCxwYXJzZU1lbWJlcjp6MX07bGV0IG40PXt9O2NvbnN0IFkxPTIwLFUxPWZ1bmN0aW9uKHQpe2NvbnN0IGU9T2JqZWN0LmVudHJpZXMobjQpLmZpbmQocj0+clsxXS5sYWJlbD09PXQpO2lmKGUpcmV0dXJuIGVbMF19LFB0dD1mdW5jdGlvbih0KXt0LmFwcGVuZCgiZGVmcyIpLmFwcGVuZCgibWFya2VyIikuYXR0cigiaWQiLCJleHRlbnNpb25TdGFydCIpLmF0dHIoImNsYXNzIiwiZXh0ZW5zaW9uIikuYXR0cigicmVmWCIsMCkuYXR0cigicmVmWSIsNykuYXR0cigibWFya2VyV2lkdGgiLDE5MCkuYXR0cigibWFya2VySGVpZ2h0IiwyNDApLmF0dHIoIm9yaWVudCIsImF1dG8iKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIiwiTSAxLDcgTDE4LDEzIFYgMSBaIiksdC5hcHBlbmQoImRlZnMiKS5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIiwiZXh0ZW5zaW9uRW5kIikuYXR0cigicmVmWCIsMTkpLmF0dHIoInJlZlkiLDcpLmF0dHIoIm1hcmtlcldpZHRoIiwyMCkuYXR0cigibWFya2VySGVpZ2h0IiwyOCkuYXR0cigib3JpZW50IiwiYXV0byIpLmFwcGVuZCgicGF0aCIpLmF0dHIoImQiLCJNIDEsMSBWIDEzIEwxOCw3IFoiKSx0LmFwcGVuZCgiZGVmcyIpLmFwcGVuZCgibWFya2VyIikuYXR0cigiaWQiLCJjb21wb3NpdGlvblN0YXJ0IikuYXR0cigiY2xhc3MiLCJleHRlbnNpb24iKS5hdHRyKCJyZWZYIiwwKS5hdHRyKCJyZWZZIiw3KS5hdHRyKCJtYXJrZXJXaWR0aCIsMTkwKS5hdHRyKCJtYXJrZXJIZWlnaHQiLDI0MCkuYXR0cigib3JpZW50IiwiYXV0byIpLmFwcGVuZCgicGF0aCIpLmF0dHIoImQiLCJNIDE4LDcgTDksMTMgTDEsNyBMOSwxIFoiKSx0LmFwcGVuZCgiZGVmcyIpLmFwcGVuZCgibWFya2VyIikuYXR0cigiaWQiLCJjb21wb3NpdGlvbkVuZCIpLmF0dHIoInJlZlgiLDE5KS5hdHRyKCJyZWZZIiw3KS5hdHRyKCJtYXJrZXJXaWR0aCIsMjApLmF0dHIoIm1hcmtlckhlaWdodCIsMjgpLmF0dHIoIm9yaWVudCIsImF1dG8iKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIiwiTSAxOCw3IEw5LDEzIEwxLDcgTDksMSBaIiksdC5hcHBlbmQoImRlZnMiKS5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIiwiYWdncmVnYXRpb25TdGFydCIpLmF0dHIoImNsYXNzIiwiZXh0ZW5zaW9uIikuYXR0cigicmVmWCIsMCkuYXR0cigicmVmWSIsNykuYXR0cigibWFya2VyV2lkdGgiLDE5MCkuYXR0cigibWFya2VySGVpZ2h0IiwyNDApLmF0dHIoIm9yaWVudCIsImF1dG8iKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIiwiTSAxOCw3IEw5LDEzIEwxLDcgTDksMSBaIiksdC5hcHBlbmQoImRlZnMiKS5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIiwiYWdncmVnYXRpb25FbmQiKS5hdHRyKCJyZWZYIiwxOSkuYXR0cigicmVmWSIsNykuYXR0cigibWFya2VyV2lkdGgiLDIwKS5hdHRyKCJtYXJrZXJIZWlnaHQiLDI4KS5hdHRyKCJvcmllbnQiLCJhdXRvIikuYXBwZW5kKCJwYXRoIikuYXR0cigiZCIsIk0gMTgsNyBMOSwxMyBMMSw3IEw5LDEgWiIpLHQuYXBwZW5kKCJkZWZzIikuYXBwZW5kKCJtYXJrZXIiKS5hdHRyKCJpZCIsImRlcGVuZGVuY3lTdGFydCIpLmF0dHIoImNsYXNzIiwiZXh0ZW5zaW9uIikuYXR0cigicmVmWCIsMCkuYXR0cigicmVmWSIsNykuYXR0cigibWFya2VyV2lkdGgiLDE5MCkuYXR0cigibWFya2VySGVpZ2h0IiwyNDApLmF0dHIoIm9yaWVudCIsImF1dG8iKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIiwiTSA1LDcgTDksMTMgTDEsNyBMOSwxIFoiKSx0LmFwcGVuZCgiZGVmcyIpLmFwcGVuZCgibWFya2VyIikuYXR0cigiaWQiLCJkZXBlbmRlbmN5RW5kIikuYXR0cigicmVmWCIsMTkpLmF0dHIoInJlZlkiLDcpLmF0dHIoIm1hcmtlcldpZHRoIiwyMCkuYXR0cigibWFya2VySGVpZ2h0IiwyOCkuYXR0cigib3JpZW50IiwiYXV0byIpLmFwcGVuZCgicGF0aCIpLmF0dHIoImQiLCJNIDE4LDcgTDksMTMgTDE0LDcgTDksMSBaIil9LHF0dD17ZHJhdzpmdW5jdGlvbih0LGUscixuKXtjb25zdCBpPW50KCkuY2xhc3M7bjQ9e30sSC5pbmZvKCJSZW5kZXJpbmcgZGlhZ3JhbSAiK3QpO2NvbnN0IGE9bnQoKS5zZWN1cml0eUxldmVsO2xldCBzO2E9PT0ic2FuZGJveCImJihzPVN0KCIjaSIrZSkpO2NvbnN0IG89U3QoYT09PSJzYW5kYm94Ij9zLm5vZGVzKClbMF0uY29udGVudERvY3VtZW50LmJvZHk6ImJvZHkiKSxsPW8uc2VsZWN0KGBbaWQ9JyR7ZX0nXWApO1B0dChsKTtjb25zdCB1PW5ldyBjci5HcmFwaCh7bXVsdGlncmFwaDohMH0pO3Uuc2V0R3JhcGgoe2lzTXVsdGlHcmFwaDohMH0pLHUuc2V0RGVmYXVsdEVkZ2VMYWJlbChmdW5jdGlvbigpe3JldHVybnt9fSk7Y29uc3QgaD1uLmRiLmdldENsYXNzZXMoKSxkPU9iamVjdC5rZXlzKGgpO2ZvcihsZXQgYj0wO2I8ZC5sZW5ndGg7YisrKXtjb25zdCB4PWhbZFtiXV0saz1xQS5kcmF3Q2xhc3MobCx4LGksbik7bjRbay5pZF09ayx1LnNldE5vZGUoay5pZCxrKSxILmluZm8oIk9yZyBoZWlnaHQ6ICIray5oZWlnaHQpfW4uZGIuZ2V0UmVsYXRpb25zKCkuZm9yRWFjaChmdW5jdGlvbihiKXtILmluZm8oInRqb2hvIitVMShiLmlkMSkrVTEoYi5pZDIpK0pTT04uc3RyaW5naWZ5KGIpKSx1LnNldEVkZ2UoVTEoYi5pZDEpLFUxKGIuaWQyKSx7cmVsYXRpb246Yn0sYi50aXRsZXx8IkRFRkFVTFQiKX0pLFpjLmxheW91dCh1KSx1Lm5vZGVzKCkuZm9yRWFjaChmdW5jdGlvbihiKXt0eXBlb2YgYjwidSImJnR5cGVvZiB1Lm5vZGUoYik8InUiJiYoSC5kZWJ1ZygiTm9kZSAiK2IrIjogIitKU09OLnN0cmluZ2lmeSh1Lm5vZGUoYikpKSxvLnNlbGVjdCgiIyIrbi5kYi5sb29rVXBEb21JZChiKSkuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrKHUubm9kZShiKS54LXUubm9kZShiKS53aWR0aC8yKSsiLCIrKHUubm9kZShiKS55LXUubm9kZShiKS5oZWlnaHQvMikrIiApIikpfSksdS5lZGdlcygpLmZvckVhY2goZnVuY3Rpb24oYil7dHlwZW9mIGI8InUiJiZ0eXBlb2YgdS5lZGdlKGIpPCJ1IiYmKEguZGVidWcoIkVkZ2UgIitiLnYrIiAtPiAiK2IudysiOiAiK0pTT04uc3RyaW5naWZ5KHUuZWRnZShiKSkpLHFBLmRyYXdFZGdlKGwsdS5lZGdlKGIpLHUuZWRnZShiKS5yZWxhdGlvbixpLG4pKX0pO2NvbnN0IHA9bC5ub2RlKCkuZ2V0QkJveCgpLG09cC53aWR0aCtZMSoyLF89cC5oZWlnaHQrWTEqMjtsaShsLF8sbSxpLnVzZU1heFdpZHRoKTtjb25zdCB5PWAke3AueC1ZMX0gJHtwLnktWTF9ICR7bX0gJHtffWA7SC5kZWJ1Zyhgdmlld0JveCAke3l9YCksbC5hdHRyKCJ2aWV3Qm94Iix5KSxibihuLmRiLGwsZSl9fSxWdHQ9KHQsZSxyLG4pPT57ZS5mb3JFYWNoKGk9Pnt6dHRbaV0odCxyLG4pfSl9LHp0dD17ZXh0ZW5zaW9uOih0LGUscik9PntILnRyYWNlKCJNYWtpbmcgbWFya2VycyBmb3IgIixyKSx0LmFwcGVuZCgiZGVmcyIpLmFwcGVuZCgibWFya2VyIikuYXR0cigiaWQiLGUrIi1leHRlbnNpb25TdGFydCIpLmF0dHIoImNsYXNzIiwibWFya2VyIGV4dGVuc2lvbiAiK2UpLmF0dHIoInJlZlgiLDApLmF0dHIoInJlZlkiLDcpLmF0dHIoIm1hcmtlcldpZHRoIiwxOTApLmF0dHIoIm1hcmtlckhlaWdodCIsMjQwKS5hdHRyKCJvcmllbnQiLCJhdXRvIikuYXBwZW5kKCJwYXRoIikuYXR0cigiZCIsIk0gMSw3IEwxOCwxMyBWIDEgWiIpLHQuYXBwZW5kKCJkZWZzIikuYXBwZW5kKCJtYXJrZXIiKS5hdHRyKCJpZCIsZSsiLWV4dGVuc2lvbkVuZCIpLmF0dHIoImNsYXNzIiwibWFya2VyIGV4dGVuc2lvbiAiK2UpLmF0dHIoInJlZlgiLDE5KS5hdHRyKCJyZWZZIiw3KS5hdHRyKCJtYXJrZXJXaWR0aCIsMjApLmF0dHIoIm1hcmtlckhlaWdodCIsMjgpLmF0dHIoIm9yaWVudCIsImF1dG8iKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIiwiTSAxLDEgViAxMyBMMTgsNyBaIil9LGNvbXBvc2l0aW9uOih0LGUpPT57dC5hcHBlbmQoImRlZnMiKS5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIixlKyItY29tcG9zaXRpb25TdGFydCIpLmF0dHIoImNsYXNzIiwibWFya2VyIGNvbXBvc2l0aW9uICIrZSkuYXR0cigicmVmWCIsMCkuYXR0cigicmVmWSIsNykuYXR0cigibWFya2VyV2lkdGgiLDE5MCkuYXR0cigibWFya2VySGVpZ2h0IiwyNDApLmF0dHIoIm9yaWVudCIsImF1dG8iKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIiwiTSAxOCw3IEw5LDEzIEwxLDcgTDksMSBaIiksdC5hcHBlbmQoImRlZnMiKS5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIixlKyItY29tcG9zaXRpb25FbmQiKS5hdHRyKCJjbGFzcyIsIm1hcmtlciBjb21wb3NpdGlvbiAiK2UpLmF0dHIoInJlZlgiLDE5KS5hdHRyKCJyZWZZIiw3KS5hdHRyKCJtYXJrZXJXaWR0aCIsMjApLmF0dHIoIm1hcmtlckhlaWdodCIsMjgpLmF0dHIoIm9yaWVudCIsImF1dG8iKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIiwiTSAxOCw3IEw5LDEzIEwxLDcgTDksMSBaIil9LGFnZ3JlZ2F0aW9uOih0LGUpPT57dC5hcHBlbmQoImRlZnMiKS5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIixlKyItYWdncmVnYXRpb25TdGFydCIpLmF0dHIoImNsYXNzIiwibWFya2VyIGFnZ3JlZ2F0aW9uICIrZSkuYXR0cigicmVmWCIsMCkuYXR0cigicmVmWSIsNykuYXR0cigibWFya2VyV2lkdGgiLDE5MCkuYXR0cigibWFya2VySGVpZ2h0IiwyNDApLmF0dHIoIm9yaWVudCIsImF1dG8iKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIiwiTSAxOCw3IEw5LDEzIEwxLDcgTDksMSBaIiksdC5hcHBlbmQoImRlZnMiKS5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIixlKyItYWdncmVnYXRpb25FbmQiKS5hdHRyKCJjbGFzcyIsIm1hcmtlciBhZ2dyZWdhdGlvbiAiK2UpLmF0dHIoInJlZlgiLDE5KS5hdHRyKCJyZWZZIiw3KS5hdHRyKCJtYXJrZXJXaWR0aCIsMjApLmF0dHIoIm1hcmtlckhlaWdodCIsMjgpLmF0dHIoIm9yaWVudCIsImF1dG8iKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIiwiTSAxOCw3IEw5LDEzIEwxLDcgTDksMSBaIil9LGRlcGVuZGVuY3k6KHQsZSk9Pnt0LmFwcGVuZCgiZGVmcyIpLmFwcGVuZCgibWFya2VyIikuYXR0cigiaWQiLGUrIi1kZXBlbmRlbmN5U3RhcnQiKS5hdHRyKCJjbGFzcyIsIm1hcmtlciBkZXBlbmRlbmN5ICIrZSkuYXR0cigicmVmWCIsMCkuYXR0cigicmVmWSIsNykuYXR0cigibWFya2VyV2lkdGgiLDE5MCkuYXR0cigibWFya2VySGVpZ2h0IiwyNDApLmF0dHIoIm9yaWVudCIsImF1dG8iKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIiwiTSA1LDcgTDksMTMgTDEsNyBMOSwxIFoiKSx0LmFwcGVuZCgiZGVmcyIpLmFwcGVuZCgibWFya2VyIikuYXR0cigiaWQiLGUrIi1kZXBlbmRlbmN5RW5kIikuYXR0cigiY2xhc3MiLCJtYXJrZXIgZGVwZW5kZW5jeSAiK2UpLmF0dHIoInJlZlgiLDE5KS5hdHRyKCJyZWZZIiw3KS5hdHRyKCJtYXJrZXJXaWR0aCIsMjApLmF0dHIoIm1hcmtlckhlaWdodCIsMjgpLmF0dHIoIm9yaWVudCIsImF1dG8iKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIiwiTSAxOCw3IEw5LDEzIEwxNCw3IEw5LDEgWiIpfSxsb2xsaXBvcDoodCxlKT0+e3QuYXBwZW5kKCJkZWZzIikuYXBwZW5kKCJtYXJrZXIiKS5hdHRyKCJpZCIsZSsiLWxvbGxpcG9wU3RhcnQiKS5hdHRyKCJjbGFzcyIsIm1hcmtlciBsb2xsaXBvcCAiK2UpLmF0dHIoInJlZlgiLDApLmF0dHIoInJlZlkiLDcpLmF0dHIoIm1hcmtlcldpZHRoIiwxOTApLmF0dHIoIm1hcmtlckhlaWdodCIsMjQwKS5hdHRyKCJvcmllbnQiLCJhdXRvIikuYXBwZW5kKCJjaXJjbGUiKS5hdHRyKCJzdHJva2UiLCJibGFjayIpLmF0dHIoImZpbGwiLCJ3aGl0ZSIpLmF0dHIoImN4Iiw2KS5hdHRyKCJjeSIsNykuYXR0cigiciIsNil9LHBvaW50Oih0LGUpPT57dC5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIixlKyItcG9pbnRFbmQiKS5hdHRyKCJjbGFzcyIsIm1hcmtlciAiK2UpLmF0dHIoInZpZXdCb3giLCIwIDAgMTAgMTAiKS5hdHRyKCJyZWZYIiwxMCkuYXR0cigicmVmWSIsNSkuYXR0cigibWFya2VyVW5pdHMiLCJ1c2VyU3BhY2VPblVzZSIpLmF0dHIoIm1hcmtlcldpZHRoIiwxMikuYXR0cigibWFya2VySGVpZ2h0IiwxMikuYXR0cigib3JpZW50IiwiYXV0byIpLmFwcGVuZCgicGF0aCIpLmF0dHIoImQiLCJNIDAgMCBMIDEwIDUgTCAwIDEwIHoiKS5hdHRyKCJjbGFzcyIsImFycm93TWFya2VyUGF0aCIpLnN0eWxlKCJzdHJva2Utd2lkdGgiLDEpLnN0eWxlKCJzdHJva2UtZGFzaGFycmF5IiwiMSwwIiksdC5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIixlKyItcG9pbnRTdGFydCIpLmF0dHIoImNsYXNzIiwibWFya2VyICIrZSkuYXR0cigidmlld0JveCIsIjAgMCAxMCAxMCIpLmF0dHIoInJlZlgiLDApLmF0dHIoInJlZlkiLDUpLmF0dHIoIm1hcmtlclVuaXRzIiwidXNlclNwYWNlT25Vc2UiKS5hdHRyKCJtYXJrZXJXaWR0aCIsMTIpLmF0dHIoIm1hcmtlckhlaWdodCIsMTIpLmF0dHIoIm9yaWVudCIsImF1dG8iKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIiwiTSAwIDUgTCAxMCAxMCBMIDEwIDAgeiIpLmF0dHIoImNsYXNzIiwiYXJyb3dNYXJrZXJQYXRoIikuc3R5bGUoInN0cm9rZS13aWR0aCIsMSkuc3R5bGUoInN0cm9rZS1kYXNoYXJyYXkiLCIxLDAiKX0sY2lyY2xlOih0LGUpPT57dC5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIixlKyItY2lyY2xlRW5kIikuYXR0cigiY2xhc3MiLCJtYXJrZXIgIitlKS5hdHRyKCJ2aWV3Qm94IiwiMCAwIDEwIDEwIikuYXR0cigicmVmWCIsMTEpLmF0dHIoInJlZlkiLDUpLmF0dHIoIm1hcmtlclVuaXRzIiwidXNlclNwYWNlT25Vc2UiKS5hdHRyKCJtYXJrZXJXaWR0aCIsMTEpLmF0dHIoIm1hcmtlckhlaWdodCIsMTEpLmF0dHIoIm9yaWVudCIsImF1dG8iKS5hcHBlbmQoImNpcmNsZSIpLmF0dHIoImN4IiwiNSIpLmF0dHIoImN5IiwiNSIpLmF0dHIoInIiLCI1IikuYXR0cigiY2xhc3MiLCJhcnJvd01hcmtlclBhdGgiKS5zdHlsZSgic3Ryb2tlLXdpZHRoIiwxKS5zdHlsZSgic3Ryb2tlLWRhc2hhcnJheSIsIjEsMCIpLHQuYXBwZW5kKCJtYXJrZXIiKS5hdHRyKCJpZCIsZSsiLWNpcmNsZVN0YXJ0IikuYXR0cigiY2xhc3MiLCJtYXJrZXIgIitlKS5hdHRyKCJ2aWV3Qm94IiwiMCAwIDEwIDEwIikuYXR0cigicmVmWCIsLTEpLmF0dHIoInJlZlkiLDUpLmF0dHIoIm1hcmtlclVuaXRzIiwidXNlclNwYWNlT25Vc2UiKS5hdHRyKCJtYXJrZXJXaWR0aCIsMTEpLmF0dHIoIm1hcmtlckhlaWdodCIsMTEpLmF0dHIoIm9yaWVudCIsImF1dG8iKS5hcHBlbmQoImNpcmNsZSIpLmF0dHIoImN4IiwiNSIpLmF0dHIoImN5IiwiNSIpLmF0dHIoInIiLCI1IikuYXR0cigiY2xhc3MiLCJhcnJvd01hcmtlclBhdGgiKS5zdHlsZSgic3Ryb2tlLXdpZHRoIiwxKS5zdHlsZSgic3Ryb2tlLWRhc2hhcnJheSIsIjEsMCIpfSxjcm9zczoodCxlKT0+e3QuYXBwZW5kKCJtYXJrZXIiKS5hdHRyKCJpZCIsZSsiLWNyb3NzRW5kIikuYXR0cigiY2xhc3MiLCJtYXJrZXIgY3Jvc3MgIitlKS5hdHRyKCJ2aWV3Qm94IiwiMCAwIDExIDExIikuYXR0cigicmVmWCIsMTIpLmF0dHIoInJlZlkiLDUuMikuYXR0cigibWFya2VyVW5pdHMiLCJ1c2VyU3BhY2VPblVzZSIpLmF0dHIoIm1hcmtlcldpZHRoIiwxMSkuYXR0cigibWFya2VySGVpZ2h0IiwxMSkuYXR0cigib3JpZW50IiwiYXV0byIpLmFwcGVuZCgicGF0aCIpLmF0dHIoImQiLCJNIDEsMSBsIDksOSBNIDEwLDEgbCAtOSw5IikuYXR0cigiY2xhc3MiLCJhcnJvd01hcmtlclBhdGgiKS5zdHlsZSgic3Ryb2tlLXdpZHRoIiwyKS5zdHlsZSgic3Ryb2tlLWRhc2hhcnJheSIsIjEsMCIpLHQuYXBwZW5kKCJtYXJrZXIiKS5hdHRyKCJpZCIsZSsiLWNyb3NzU3RhcnQiKS5hdHRyKCJjbGFzcyIsIm1hcmtlciBjcm9zcyAiK2UpLmF0dHIoInZpZXdCb3giLCIwIDAgMTEgMTEiKS5hdHRyKCJyZWZYIiwtMSkuYXR0cigicmVmWSIsNS4yKS5hdHRyKCJtYXJrZXJVbml0cyIsInVzZXJTcGFjZU9uVXNlIikuYXR0cigibWFya2VyV2lkdGgiLDExKS5hdHRyKCJtYXJrZXJIZWlnaHQiLDExKS5hdHRyKCJvcmllbnQiLCJhdXRvIikuYXBwZW5kKCJwYXRoIikuYXR0cigiZCIsIk0gMSwxIGwgOSw5IE0gMTAsMSBsIC05LDkiKS5hdHRyKCJjbGFzcyIsImFycm93TWFya2VyUGF0aCIpLnN0eWxlKCJzdHJva2Utd2lkdGgiLDIpLnN0eWxlKCJzdHJva2UtZGFzaGFycmF5IiwiMSwwIil9LGJhcmI6KHQsZSk9Pnt0LmFwcGVuZCgiZGVmcyIpLmFwcGVuZCgibWFya2VyIikuYXR0cigiaWQiLGUrIi1iYXJiRW5kIikuYXR0cigicmVmWCIsMTkpLmF0dHIoInJlZlkiLDcpLmF0dHIoIm1hcmtlcldpZHRoIiwyMCkuYXR0cigibWFya2VySGVpZ2h0IiwxNCkuYXR0cigibWFya2VyVW5pdHMiLCJzdHJva2VXaWR0aCIpLmF0dHIoIm9yaWVudCIsImF1dG8iKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIiwiTSAxOSw3IEw5LDEzIEwxNCw3IEw5LDEgWiIpfX07ZnVuY3Rpb24gWXR0KHQsZSl7ZSYmdC5hdHRyKCJzdHlsZSIsZSl9ZnVuY3Rpb24gVXR0KHQpe2NvbnN0IGU9U3QoZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImZvcmVpZ25PYmplY3QiKSkscj1lLmFwcGVuZCgieGh0bWw6ZGl2Iiksbj10LmxhYmVsLGk9dC5pc05vZGU/Im5vZGVMYWJlbCI6ImVkZ2VMYWJlbCI7cmV0dXJuIHIuaHRtbCgnPHNwYW4gY2xhc3M9IicraSsnIiAnKyh0LmxhYmVsU3R5bGU/J3N0eWxlPSInK3QubGFiZWxTdHlsZSsnIic6IiIpKyI+IituKyI8L3NwYW4+IiksWXR0KHIsdC5sYWJlbFN0eWxlKSxyLnN0eWxlKCJkaXNwbGF5IiwiaW5saW5lLWJsb2NrIiksci5zdHlsZSgid2hpdGUtc3BhY2UiLCJub3dyYXAiKSxyLmF0dHIoInhtbG5zIiwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIpLGUubm9kZSgpfWNvbnN0IHhuPSh0LGUscixuKT0+e2xldCBpPXR8fCIiO2lmKHR5cGVvZiBpPT0ib2JqZWN0IiYmKGk9aVswXSksTXIobnQoKS5mbG93Y2hhcnQuaHRtbExhYmVscykpe2k9aS5yZXBsYWNlKC9cXG58XG4vZywiPGJyIC8+IiksSC5pbmZvKCJ2ZXJ0ZXhUZXh0IitpKTtjb25zdCBhPXtpc05vZGU6bixsYWJlbDp3MChpKS5yZXBsYWNlKC9mYVtscnNiXT86ZmEtW1x3LV0rL2csbz0+YDxpIGNsYXNzPScke28ucmVwbGFjZSgiOiIsIiAiKX0nPjwvaT5gKSxsYWJlbFN0eWxlOmUucmVwbGFjZSgiZmlsbDoiLCJjb2xvcjoiKX07cmV0dXJuIFV0dChhKX1lbHNle2NvbnN0IGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsInRleHQiKTthLnNldEF0dHJpYnV0ZSgic3R5bGUiLGUucmVwbGFjZSgiY29sb3I6IiwiZmlsbDoiKSk7bGV0IHM9W107dHlwZW9mIGk9PSJzdHJpbmciP3M9aS5zcGxpdCgvXFxufFxufDxiclxzKlwvPz4vZ2kpOkFycmF5LmlzQXJyYXkoaSk/cz1pOnM9W107Zm9yKGxldCBvPTA7bzxzLmxlbmd0aDtvKyspe2NvbnN0IGw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsInRzcGFuIik7bC5zZXRBdHRyaWJ1dGVOUygiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIiwieG1sOnNwYWNlIiwicHJlc2VydmUiKSxsLnNldEF0dHJpYnV0ZSgiZHkiLCIxZW0iKSxsLnNldEF0dHJpYnV0ZSgieCIsIjAiKSxyP2wuc2V0QXR0cmlidXRlKCJjbGFzcyIsInRpdGxlLXJvdyIpOmwuc2V0QXR0cmlidXRlKCJjbGFzcyIsInJvdyIpLGwudGV4dENvbnRlbnQ9c1tvXS50cmltKCksYS5hcHBlbmRDaGlsZChsKX1yZXR1cm4gYX19LFlyPSh0LGUscixuKT0+e2xldCBpO3I/aT1yOmk9Im5vZGUgZGVmYXVsdCI7Y29uc3QgYT10Lmluc2VydCgiZyIpLmF0dHIoImNsYXNzIixpKS5hdHRyKCJpZCIsZS5kb21JZHx8ZS5pZCkscz1hLmluc2VydCgiZyIpLmF0dHIoImNsYXNzIiwibGFiZWwiKS5hdHRyKCJzdHlsZSIsZS5sYWJlbFN0eWxlKTtsZXQgbzt0eXBlb2YgZS5sYWJlbFRleHQ+InUiP289IiI6bz10eXBlb2YgZS5sYWJlbFRleHQ9PSJzdHJpbmciP2UubGFiZWxUZXh0OmUubGFiZWxUZXh0WzBdO2NvbnN0IGw9cy5ub2RlKCkuYXBwZW5kQ2hpbGQoeG4oYWkodzAobyksbnQoKSksZS5sYWJlbFN0eWxlLCExLG4pKTtsZXQgdT1sLmdldEJCb3goKTtpZihNcihudCgpLmZsb3djaGFydC5odG1sTGFiZWxzKSl7Y29uc3QgZD1sLmNoaWxkcmVuWzBdLGY9U3QobCk7dT1kLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLGYuYXR0cigid2lkdGgiLHUud2lkdGgpLGYuYXR0cigiaGVpZ2h0Iix1LmhlaWdodCl9Y29uc3QgaD1lLnBhZGRpbmcvMjtyZXR1cm4gcy5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIistdS53aWR0aC8yKyIsICIrLXUuaGVpZ2h0LzIrIikiKSx7c2hhcGVTdmc6YSxiYm94OnUsaGFsZlBhZGRpbmc6aCxsYWJlbDpzfX0sdXI9KHQsZSk9Pntjb25zdCByPWUubm9kZSgpLmdldEJCb3goKTt0LndpZHRoPXIud2lkdGgsdC5oZWlnaHQ9ci5oZWlnaHR9O2Z1bmN0aW9uIGNhKHQsZSxyLG4pe3JldHVybiB0Lmluc2VydCgicG9seWdvbiIsIjpmaXJzdC1jaGlsZCIpLmF0dHIoInBvaW50cyIsbi5tYXAoZnVuY3Rpb24oaSl7cmV0dXJuIGkueCsiLCIraS55fSkuam9pbigiICIpKS5hdHRyKCJjbGFzcyIsImxhYmVsLWNvbnRhaW5lciIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKy1lLzIrIiwiK3IvMisiKSIpfWxldCBSZT17fSxtaT17fSxWQT17fTtjb25zdCBXdHQ9KCk9PnttaT17fSxWQT17fSxSZT17fX0sVzE9KHQsZSk9PihILnRyYWNlKCJJbiBpc0RlY2VuZGFudCIsZSwiICIsdCwiID0gIixtaVtlXS5pbmRleE9mKHQpPj0wKSxtaVtlXS5pbmRleE9mKHQpPj0wKSxIdHQ9KHQsZSk9PihILmluZm8oIkRlY2VuZGFudHMgb2YgIixlLCIgaXMgIixtaVtlXSksSC5pbmZvKCJFZGdlIGlzICIsdCksdC52PT09ZXx8dC53PT09ZT8hMTptaVtlXT8hIShtaVtlXS5pbmRleE9mKHQudik+PTB8fFcxKHQudixlKXx8VzEodC53LGUpfHxtaVtlXS5pbmRleE9mKHQudyk+PTApOihILmRlYnVnKCJUaWx0LCAiLGUsIixub3QgaW4gZGVjZW5kYW50cyIpLCExKSksekE9KHQsZSxyLG4pPT57SC53YXJuKCJDb3B5aW5nIGNoaWxkcmVuIG9mICIsdCwicm9vdCIsbiwiZGF0YSIsZS5ub2RlKHQpLG4pO2NvbnN0IGk9ZS5jaGlsZHJlbih0KXx8W107dCE9PW4mJmkucHVzaCh0KSxILndhcm4oIkNvcHlpbmcgKG5vZGVzKSBjbHVzdGVySWQiLHQsIm5vZGVzIixpKSxpLmZvckVhY2goYT0+e2lmKGUuY2hpbGRyZW4oYSkubGVuZ3RoPjApekEoYSxlLHIsbik7ZWxzZXtjb25zdCBzPWUubm9kZShhKTtILmluZm8oImNwICIsYSwiIHRvICIsbiwiIHdpdGggcGFyZW50ICIsdCksci5zZXROb2RlKGEscyksbiE9PWUucGFyZW50KGEpJiYoSC53YXJuKCJTZXR0aW5nIHBhcmVudCIsYSxlLnBhcmVudChhKSksci5zZXRQYXJlbnQoYSxlLnBhcmVudChhKSkpLHQhPT1uJiZhIT09dD8oSC5kZWJ1ZygiU2V0dGluZyBwYXJlbnQiLGEsdCksci5zZXRQYXJlbnQoYSx0KSk6KEguaW5mbygiSW4gY29weSAiLHQsInJvb3QiLG4sImRhdGEiLGUubm9kZSh0KSxuKSxILmRlYnVnKCJOb3QgU2V0dGluZyBwYXJlbnQgZm9yIG5vZGU9IixhLCJjbHVzdGVyIT09cm9vdElkIix0IT09biwibm9kZSE9PWNsdXN0ZXJJZCIsYSE9PXQpKTtjb25zdCBvPWUuZWRnZXMoYSk7SC5kZWJ1ZygiQ29weWluZyBFZGdlcyIsbyksby5mb3JFYWNoKGw9PntILmluZm8oIkVkZ2UiLGwpO2NvbnN0IHU9ZS5lZGdlKGwudixsLncsbC5uYW1lKTtILmluZm8oIkVkZ2UgZGF0YSIsdSxuKTt0cnl7SHR0KGwsbik/KEguaW5mbygiQ29weWluZyBhcyAiLGwudixsLncsdSxsLm5hbWUpLHIuc2V0RWRnZShsLnYsbC53LHUsbC5uYW1lKSxILmluZm8oIm5ld0dyYXBoIGVkZ2VzICIsci5lZGdlcygpLHIuZWRnZShyLmVkZ2VzKClbMF0pKSk6SC5pbmZvKCJTa2lwcGluZyBjb3B5IG9mIGVkZ2UgIixsLnYsIi0tPiIsbC53LCIgcm9vdElkOiAiLG4sIiBjbHVzdGVySWQ6Iix0KX1jYXRjaChoKXtILmVycm9yKGgpfX0pfUguZGVidWcoIlJlbW92aW5nIG5vZGUiLGEpLGUucmVtb3ZlTm9kZShhKX0pfSxZQT0odCxlKT0+e2NvbnN0IHI9ZS5jaGlsZHJlbih0KTtsZXQgbj1bXS5jb25jYXQocik7Zm9yKGxldCBpPTA7aTxyLmxlbmd0aDtpKyspVkFbcltpXV09dCxuPW4uY29uY2F0KFlBKHJbaV0sZSkpO3JldHVybiBufSxRYz0odCxlKT0+e0gudHJhY2UoIlNlYXJjaGluZyIsdCk7Y29uc3Qgcj1lLmNoaWxkcmVuKHQpO2lmKEgudHJhY2UoIlNlYXJjaGluZyBjaGlsZHJlbiBvZiBpZCAiLHQsciksci5sZW5ndGg8MSlyZXR1cm4gSC50cmFjZSgiVGhpcyBpcyBhIHZhbGlkIG5vZGUiLHQpLHQ7Zm9yKGxldCBuPTA7bjxyLmxlbmd0aDtuKyspe2NvbnN0IGk9UWMocltuXSxlKTtpZihpKXJldHVybiBILnRyYWNlKCJGb3VuZCByZXBsYWNlbWVudCBmb3IiLHQsIiA9PiAiLGkpLGl9fSxIMT10PT4hUmVbdF18fCFSZVt0XS5leHRlcm5hbENvbm5lY3Rpb25zP3Q6UmVbdF0/UmVbdF0uaWQ6dCxHdHQ9KHQsZSk9PntpZighdHx8ZT4xMCl7SC5kZWJ1ZygiT3B0aW5nIG91dCwgbm8gZ3JhcGggIik7cmV0dXJufWVsc2UgSC5kZWJ1ZygiT3B0aW5nIGluLCBncmFwaCAiKTt0Lm5vZGVzKCkuZm9yRWFjaChmdW5jdGlvbihyKXt0LmNoaWxkcmVuKHIpLmxlbmd0aD4wJiYoSC53YXJuKCJDbHVzdGVyIGlkZW50aWZpZWQiLHIsIiBSZXBsYWNlbWVudCBpZCBpbiBlZGdlczogIixRYyhyLHQpKSxtaVtyXT1ZQShyLHQpLFJlW3JdPXtpZDpRYyhyLHQpLGNsdXN0ZXJEYXRhOnQubm9kZShyKX0pfSksdC5ub2RlcygpLmZvckVhY2goZnVuY3Rpb24ocil7Y29uc3Qgbj10LmNoaWxkcmVuKHIpLGk9dC5lZGdlcygpO24ubGVuZ3RoPjA/KEguZGVidWcoIkNsdXN0ZXIgaWRlbnRpZmllZCIscixtaSksaS5mb3JFYWNoKGE9PntpZihhLnYhPT1yJiZhLnchPT1yKXtjb25zdCBzPVcxKGEudixyKSxvPVcxKGEudyxyKTtzXm8mJihILndhcm4oIkVkZ2U6ICIsYSwiIGxlYXZlcyBjbHVzdGVyICIsciksSC53YXJuKCJEZWNlbmRhbnRzIG9mIFhYWCAiLHIsIjogIixtaVtyXSksUmVbcl0uZXh0ZXJuYWxDb25uZWN0aW9ucz0hMCl9fSkpOkguZGVidWcoIk5vdCBhIGNsdXN0ZXIgIixyLG1pKX0pLHQuZWRnZXMoKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe2NvbnN0IG49dC5lZGdlKHIpO0gud2FybigiRWRnZSAiK3IudisiIC0+ICIrci53KyI6ICIrSlNPTi5zdHJpbmdpZnkocikpLEgud2FybigiRWRnZSAiK3IudisiIC0+ICIrci53KyI6ICIrSlNPTi5zdHJpbmdpZnkodC5lZGdlKHIpKSk7bGV0IGk9ci52LGE9ci53O2lmKEgud2FybigiRml4IFhYWCIsUmUsImlkczoiLHIudixyLncsIlRyYW5zbGF0ZWluZzogIixSZVtyLnZdLCIgLS0tICIsUmVbci53XSksUmVbci52XSYmUmVbci53XSYmUmVbci52XT09PVJlW3Iud10pe0gud2FybigiRml4aW5nIGFuZCB0cml4aW5nIGxpbmsgdG8gc2VsZiAtIHJlbW92aW5nIFhYWCIsci52LHIudyxyLm5hbWUpLEgud2FybigiRml4aW5nIGFuZCB0cml4aW5nIC0gcmVtb3ZpbmcgWFhYIixyLnYsci53LHIubmFtZSksaT1IMShyLnYpLGE9SDEoci53KSx0LnJlbW92ZUVkZ2Uoci52LHIudyxyLm5hbWUpO2NvbnN0IHM9ci53KyItLS0iK3Iudjt0LnNldE5vZGUocyx7ZG9tSWQ6cyxpZDpzLGxhYmVsU3R5bGU6IiIsbGFiZWxUZXh0Om4ubGFiZWwscGFkZGluZzowLHNoYXBlOiJsYWJlbFJlY3QiLHN0eWxlOiIifSk7Y29uc3Qgbz1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG4pKSxsPUpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobikpO28ubGFiZWw9IiIsby5hcnJvd1R5cGVFbmQ9Im5vbmUiLGwubGFiZWw9IiIsby5mcm9tQ2x1c3Rlcj1yLnYsbC50b0NsdXN0ZXI9ci52LHQuc2V0RWRnZShpLHMsbyxyLm5hbWUrIi1jeWNsaWMtc3BlY2lhbCIpLHQuc2V0RWRnZShzLGEsbCxyLm5hbWUrIi1jeWNsaWMtc3BlY2lhbCIpfWVsc2UoUmVbci52XXx8UmVbci53XSkmJihILndhcm4oIkZpeGluZyBhbmQgdHJpeGluZyAtIHJlbW92aW5nIFhYWCIsci52LHIudyxyLm5hbWUpLGk9SDEoci52KSxhPUgxKHIudyksdC5yZW1vdmVFZGdlKHIudixyLncsci5uYW1lKSxpIT09ci52JiYobi5mcm9tQ2x1c3Rlcj1yLnYpLGEhPT1yLncmJihuLnRvQ2x1c3Rlcj1yLncpLEgud2FybigiRml4IFJlcGxhY2luZyB3aXRoIFhYWCIsaSxhLHIubmFtZSksdC5zZXRFZGdlKGksYSxuLHIubmFtZSkpfSksSC53YXJuKCJBZGp1c3RlZCBHcmFwaCIsY3IuanNvbi53cml0ZSh0KSksVUEodCwwKSxILnRyYWNlKFJlKX0sVUE9KHQsZSk9PntpZihILndhcm4oImV4dHJhY3RvciAtICIsZSxjci5qc29uLndyaXRlKHQpLHQuY2hpbGRyZW4oIkQiKSksZT4xMCl7SC5lcnJvcigiQmFpbGluZyBvdXQiKTtyZXR1cm59bGV0IHI9dC5ub2RlcygpLG49ITE7Zm9yKGxldCBpPTA7aTxyLmxlbmd0aDtpKyspe2NvbnN0IGE9cltpXSxzPXQuY2hpbGRyZW4oYSk7bj1ufHxzLmxlbmd0aD4wfWlmKCFuKXtILmRlYnVnKCJEb25lLCBubyBub2RlIGhhcyBjaGlsZHJlbiIsdC5ub2RlcygpKTtyZXR1cm59SC5kZWJ1ZygiTm9kZXMgPSAiLHIsZSk7Zm9yKGxldCBpPTA7aTxyLmxlbmd0aDtpKyspe2NvbnN0IGE9cltpXTtpZihILmRlYnVnKCJFeHRyYWN0aW5nIG5vZGUiLGEsUmUsUmVbYV0mJiFSZVthXS5leHRlcm5hbENvbm5lY3Rpb25zLCF0LnBhcmVudChhKSx0Lm5vZGUoYSksdC5jaGlsZHJlbigiRCIpLCIgRGVwdGggIixlKSwhUmVbYV0pSC5kZWJ1ZygiTm90IGEgY2x1c3RlciIsYSxlKTtlbHNlIGlmKCFSZVthXS5leHRlcm5hbENvbm5lY3Rpb25zJiZ0LmNoaWxkcmVuKGEpJiZ0LmNoaWxkcmVuKGEpLmxlbmd0aD4wKXtILndhcm4oIkNsdXN0ZXIgd2l0aG91dCBleHRlcm5hbCBjb25uZWN0aW9ucywgd2l0aG91dCBhIHBhcmVudCBhbmQgd2l0aCBjaGlsZHJlbiIsYSxlKTtsZXQgbz10LmdyYXBoKCkucmFua2Rpcj09PSJUQiI/IkxSIjoiVEIiO1JlW2FdJiZSZVthXS5jbHVzdGVyRGF0YSYmUmVbYV0uY2x1c3RlckRhdGEuZGlyJiYobz1SZVthXS5jbHVzdGVyRGF0YS5kaXIsSC53YXJuKCJGaXhpbmcgZGlyIixSZVthXS5jbHVzdGVyRGF0YS5kaXIsbykpO2NvbnN0IGw9bmV3IGNyLkdyYXBoKHttdWx0aWdyYXBoOiEwLGNvbXBvdW5kOiEwfSkuc2V0R3JhcGgoe3JhbmtkaXI6byxub2Rlc2VwOjUwLHJhbmtzZXA6NTAsbWFyZ2lueDo4LG1hcmdpbnk6OH0pLnNldERlZmF1bHRFZGdlTGFiZWwoZnVuY3Rpb24oKXtyZXR1cm57fX0pO0gud2FybigiT2xkIGdyYXBoIGJlZm9yZSBjb3B5Iixjci5qc29uLndyaXRlKHQpKSx6QShhLHQsbCxhKSx0LnNldE5vZGUoYSx7Y2x1c3Rlck5vZGU6ITAsaWQ6YSxjbHVzdGVyRGF0YTpSZVthXS5jbHVzdGVyRGF0YSxsYWJlbFRleHQ6UmVbYV0ubGFiZWxUZXh0LGdyYXBoOmx9KSxILndhcm4oIk5ldyBncmFwaCBhZnRlciBjb3B5IG5vZGU6ICgiLGEsIikiLGNyLmpzb24ud3JpdGUobCkpLEguZGVidWcoIk9sZCBncmFwaCBhZnRlciBjb3B5Iixjci5qc29uLndyaXRlKHQpKX1lbHNlIEgud2FybigiQ2x1c3RlciAqKiAiLGEsIiAqKm5vdCBtZWV0aW5nIHRoZSBjcml0ZXJpYSAhZXh0ZXJuYWxDb25uZWN0aW9uczoiLCFSZVthXS5leHRlcm5hbENvbm5lY3Rpb25zLCIgbm8gcGFyZW50OiAiLCF0LnBhcmVudChhKSwiIGNoaWxkcmVuICIsdC5jaGlsZHJlbihhKSYmdC5jaGlsZHJlbihhKS5sZW5ndGg+MCx0LmNoaWxkcmVuKCJEIiksZSksSC5kZWJ1ZyhSZSl9cj10Lm5vZGVzKCksSC53YXJuKCJOZXcgbGlzdCBvZiBub2RlcyIscik7Zm9yKGxldCBpPTA7aTxyLmxlbmd0aDtpKyspe2NvbnN0IGE9cltpXSxzPXQubm9kZShhKTtILndhcm4oIiBOb3cgbmV4dCBsZXZlbCIsYSxzKSxzLmNsdXN0ZXJOb2RlJiZVQShzLmdyYXBoLGUrMSl9fSxXQT0odCxlKT0+e2lmKGUubGVuZ3RoPT09MClyZXR1cm5bXTtsZXQgcj1PYmplY3QuYXNzaWduKGUpO3JldHVybiBlLmZvckVhY2gobj0+e2NvbnN0IGk9dC5jaGlsZHJlbihuKSxhPVdBKHQsaSk7cj1yLmNvbmNhdChhKX0pLHJ9LGp0dD10PT5XQSh0LHQuY2hpbGRyZW4oKSk7ZnVuY3Rpb24gJHR0KHQsZSl7cmV0dXJuIHQuaW50ZXJzZWN0KGUpfWZ1bmN0aW9uIEhBKHQsZSxyLG4pe3ZhciBpPXQueCxhPXQueSxzPWktbi54LG89YS1uLnksbD1NYXRoLnNxcnQoZSplKm8qbytyKnIqcypzKSx1PU1hdGguYWJzKGUqcipzL2wpO24ueDxpJiYodT0tdSk7dmFyIGg9TWF0aC5hYnMoZSpyKm8vbCk7cmV0dXJuIG4ueTxhJiYoaD0taCkse3g6aSt1LHk6YStofX1mdW5jdGlvbiBYdHQodCxlLHIpe3JldHVybiBIQSh0LGUsZSxyKX1mdW5jdGlvbiBLdHQodCxlLHIsbil7dmFyIGksYSxzLG8sbCx1LGgsZCxmLHAsbSxfLHksYix4O2lmKGk9ZS55LXQueSxzPXQueC1lLngsbD1lLngqdC55LXQueCplLnksZj1pKnIueCtzKnIueStsLHA9aSpuLngrcypuLnkrbCwhKGYhPT0wJiZwIT09MCYmR0EoZixwKSkmJihhPW4ueS1yLnksbz1yLngtbi54LHU9bi54KnIueS1yLngqbi55LGg9YSp0Lngrbyp0LnkrdSxkPWEqZS54K28qZS55K3UsIShoIT09MCYmZCE9PTAmJkdBKGgsZCkpJiYobT1pKm8tYSpzLG0hPT0wKSkpcmV0dXJuIF89TWF0aC5hYnMobS8yKSx5PXMqdS1vKmwsYj15PDA/KHktXykvbTooeStfKS9tLHk9YSpsLWkqdSx4PXk8MD8oeS1fKS9tOih5K18pL20se3g6Yix5Onh9fWZ1bmN0aW9uIEdBKHQsZSl7cmV0dXJuIHQqZT4wfWZ1bmN0aW9uIFp0dCh0LGUscil7dmFyIG49dC54LGk9dC55LGE9W10scz1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFksbz1OdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7dHlwZW9mIGUuZm9yRWFjaD09ImZ1bmN0aW9uIj9lLmZvckVhY2goZnVuY3Rpb24obSl7cz1NYXRoLm1pbihzLG0ueCksbz1NYXRoLm1pbihvLG0ueSl9KToocz1NYXRoLm1pbihzLGUueCksbz1NYXRoLm1pbihvLGUueSkpO2Zvcih2YXIgbD1uLXQud2lkdGgvMi1zLHU9aS10LmhlaWdodC8yLW8saD0wO2g8ZS5sZW5ndGg7aCsrKXt2YXIgZD1lW2hdLGY9ZVtoPGUubGVuZ3RoLTE/aCsxOjBdLHA9S3R0KHQscix7eDpsK2QueCx5OnUrZC55fSx7eDpsK2YueCx5OnUrZi55fSk7cCYmYS5wdXNoKHApfXJldHVybiBhLmxlbmd0aD8oYS5sZW5ndGg+MSYmYS5zb3J0KGZ1bmN0aW9uKG0sXyl7dmFyIHk9bS54LXIueCxiPW0ueS1yLnkseD1NYXRoLnNxcnQoeSp5K2IqYiksaz1fLngtci54LFQ9Xy55LXIueSxDPU1hdGguc3FydChrKmsrVCpUKTtyZXR1cm4geDxDPy0xOng9PT1DPzA6MX0pLGFbMF0pOnR9Y29uc3QgSmM9KHQsZSk9Pnt2YXIgcj10Lngsbj10LnksaT1lLngtcixhPWUueS1uLHM9dC53aWR0aC8yLG89dC5oZWlnaHQvMixsLHU7cmV0dXJuIE1hdGguYWJzKGEpKnM+TWF0aC5hYnMoaSkqbz8oYTwwJiYobz0tbyksbD1hPT09MD8wOm8qaS9hLHU9byk6KGk8MCYmKHM9LXMpLGw9cyx1PWk9PT0wPzA6cyphL2kpLHt4OnIrbCx5Om4rdX19LGlyPXtub2RlOiR0dCxjaXJjbGU6WHR0LGVsbGlwc2U6SEEscG9seWdvbjpadHQscmVjdDpKY30sUXR0PSh0LGUpPT57Y29uc3R7c2hhcGVTdmc6cixiYm94Om4saGFsZlBhZGRpbmc6aX09WXIodCxlLCJub2RlICIrZS5jbGFzc2VzLCEwKTtILmluZm8oIkNsYXNzZXMgPSAiLGUuY2xhc3Nlcyk7Y29uc3QgYT1yLmluc2VydCgicmVjdCIsIjpmaXJzdC1jaGlsZCIpO3JldHVybiBhLmF0dHIoInJ4IixlLnJ4KS5hdHRyKCJyeSIsZS5yeSkuYXR0cigieCIsLW4ud2lkdGgvMi1pKS5hdHRyKCJ5Iiwtbi5oZWlnaHQvMi1pKS5hdHRyKCJ3aWR0aCIsbi53aWR0aCtlLnBhZGRpbmcpLmF0dHIoImhlaWdodCIsbi5oZWlnaHQrZS5wYWRkaW5nKSx1cihlLGEpLGUuaW50ZXJzZWN0PWZ1bmN0aW9uKHMpe3JldHVybiBpci5yZWN0KGUscyl9LHJ9LEp0dD0odCxlKT0+e2NvbnN0e3NoYXBlU3ZnOnIsYmJveDpufT1Zcih0LGUsdm9pZCAwLCEwKSxpPW4ud2lkdGgrZS5wYWRkaW5nLGE9bi5oZWlnaHQrZS5wYWRkaW5nLHM9aSthLG89W3t4OnMvMix5OjB9LHt4OnMseTotcy8yfSx7eDpzLzIseTotc30se3g6MCx5Oi1zLzJ9XTtILmluZm8oIlF1ZXN0aW9uIG1haW4gKENpcmNsZSkiKTtjb25zdCBsPWNhKHIscyxzLG8pO3JldHVybiBsLmF0dHIoInN0eWxlIixlLnN0eWxlKSx1cihlLGwpLGUuaW50ZXJzZWN0PWZ1bmN0aW9uKHUpe3JldHVybiBILndhcm4oIkludGVyc2VjdCBjYWxsZWQiKSxpci5wb2x5Z29uKGUsbyx1KX0scn0sdGV0PSh0LGUpPT57Y29uc3Qgcj10Lmluc2VydCgiZyIpLmF0dHIoImNsYXNzIiwibm9kZSBkZWZhdWx0IikuYXR0cigiaWQiLGUuZG9tSWR8fGUuaWQpLG49MjgsaT1be3g6MCx5Om4vMn0se3g6bi8yLHk6MH0se3g6MCx5Oi1uLzJ9LHt4Oi1uLzIseTowfV07cmV0dXJuIHIuaW5zZXJ0KCJwb2x5Z29uIiwiOmZpcnN0LWNoaWxkIikuYXR0cigicG9pbnRzIixpLm1hcChmdW5jdGlvbihzKXtyZXR1cm4gcy54KyIsIitzLnl9KS5qb2luKCIgIikpLmF0dHIoImNsYXNzIiwic3RhdGUtc3RhcnQiKS5hdHRyKCJyIiw3KS5hdHRyKCJ3aWR0aCIsMjgpLmF0dHIoImhlaWdodCIsMjgpLGUud2lkdGg9MjgsZS5oZWlnaHQ9MjgsZS5pbnRlcnNlY3Q9ZnVuY3Rpb24ocyl7cmV0dXJuIGlyLmNpcmNsZShlLDE0LHMpfSxyfSxlZXQ9KHQsZSk9Pntjb25zdHtzaGFwZVN2ZzpyLGJib3g6bn09WXIodCxlLHZvaWQgMCwhMCksaT00LGE9bi5oZWlnaHQrZS5wYWRkaW5nLHM9YS9pLG89bi53aWR0aCsyKnMrZS5wYWRkaW5nLGw9W3t4OnMseTowfSx7eDpvLXMseTowfSx7eDpvLHk6LWEvMn0se3g6by1zLHk6LWF9LHt4OnMseTotYX0se3g6MCx5Oi1hLzJ9XSx1PWNhKHIsbyxhLGwpO3JldHVybiB1LmF0dHIoInN0eWxlIixlLnN0eWxlKSx1cihlLHUpLGUuaW50ZXJzZWN0PWZ1bmN0aW9uKGgpe3JldHVybiBpci5wb2x5Z29uKGUsbCxoKX0scn0scmV0PSh0LGUpPT57Y29uc3R7c2hhcGVTdmc6cixiYm94Om59PVlyKHQsZSx2b2lkIDAsITApLGk9bi53aWR0aCtlLnBhZGRpbmcsYT1uLmhlaWdodCtlLnBhZGRpbmcscz1be3g6LWEvMix5OjB9LHt4OmkseTowfSx7eDppLHk6LWF9LHt4Oi1hLzIseTotYX0se3g6MCx5Oi1hLzJ9XTtyZXR1cm4gY2EocixpLGEscykuYXR0cigic3R5bGUiLGUuc3R5bGUpLGUud2lkdGg9aSthLGUuaGVpZ2h0PWEsZS5pbnRlcnNlY3Q9ZnVuY3Rpb24obCl7cmV0dXJuIGlyLnBvbHlnb24oZSxzLGwpfSxyfSxuZXQ9KHQsZSk9Pntjb25zdHtzaGFwZVN2ZzpyLGJib3g6bn09WXIodCxlLHZvaWQgMCwhMCksaT1uLndpZHRoK2UucGFkZGluZyxhPW4uaGVpZ2h0K2UucGFkZGluZyxzPVt7eDotMiphLzYseTowfSx7eDppLWEvNix5OjB9LHt4OmkrMiphLzYseTotYX0se3g6YS82LHk6LWF9XSxvPWNhKHIsaSxhLHMpO3JldHVybiBvLmF0dHIoInN0eWxlIixlLnN0eWxlKSx1cihlLG8pLGUuaW50ZXJzZWN0PWZ1bmN0aW9uKGwpe3JldHVybiBpci5wb2x5Z29uKGUscyxsKX0scn0saWV0PSh0LGUpPT57Y29uc3R7c2hhcGVTdmc6cixiYm94Om59PVlyKHQsZSx2b2lkIDAsITApLGk9bi53aWR0aCtlLnBhZGRpbmcsYT1uLmhlaWdodCtlLnBhZGRpbmcscz1be3g6MiphLzYseTowfSx7eDppK2EvNix5OjB9LHt4OmktMiphLzYseTotYX0se3g6LWEvNix5Oi1hfV0sbz1jYShyLGksYSxzKTtyZXR1cm4gby5hdHRyKCJzdHlsZSIsZS5zdHlsZSksdXIoZSxvKSxlLmludGVyc2VjdD1mdW5jdGlvbihsKXtyZXR1cm4gaXIucG9seWdvbihlLHMsbCl9LHJ9LGFldD0odCxlKT0+e2NvbnN0e3NoYXBlU3ZnOnIsYmJveDpufT1Zcih0LGUsdm9pZCAwLCEwKSxpPW4ud2lkdGgrZS5wYWRkaW5nLGE9bi5oZWlnaHQrZS5wYWRkaW5nLHM9W3t4Oi0yKmEvNix5OjB9LHt4OmkrMiphLzYseTowfSx7eDppLWEvNix5Oi1hfSx7eDphLzYseTotYX1dLG89Y2EocixpLGEscyk7cmV0dXJuIG8uYXR0cigic3R5bGUiLGUuc3R5bGUpLHVyKGUsbyksZS5pbnRlcnNlY3Q9ZnVuY3Rpb24obCl7cmV0dXJuIGlyLnBvbHlnb24oZSxzLGwpfSxyfSxzZXQ9KHQsZSk9Pntjb25zdHtzaGFwZVN2ZzpyLGJib3g6bn09WXIodCxlLHZvaWQgMCwhMCksaT1uLndpZHRoK2UucGFkZGluZyxhPW4uaGVpZ2h0K2UucGFkZGluZyxzPVt7eDphLzYseTowfSx7eDppLWEvNix5OjB9LHt4OmkrMiphLzYseTotYX0se3g6LTIqYS82LHk6LWF9XSxvPWNhKHIsaSxhLHMpO3JldHVybiBvLmF0dHIoInN0eWxlIixlLnN0eWxlKSx1cihlLG8pLGUuaW50ZXJzZWN0PWZ1bmN0aW9uKGwpe3JldHVybiBpci5wb2x5Z29uKGUscyxsKX0scn0sb2V0PSh0LGUpPT57Y29uc3R7c2hhcGVTdmc6cixiYm94Om59PVlyKHQsZSx2b2lkIDAsITApLGk9bi53aWR0aCtlLnBhZGRpbmcsYT1uLmhlaWdodCtlLnBhZGRpbmcscz1be3g6MCx5OjB9LHt4OmkrYS8yLHk6MH0se3g6aSx5Oi1hLzJ9LHt4OmkrYS8yLHk6LWF9LHt4OjAseTotYX1dLG89Y2EocixpLGEscyk7cmV0dXJuIG8uYXR0cigic3R5bGUiLGUuc3R5bGUpLHVyKGUsbyksZS5pbnRlcnNlY3Q9ZnVuY3Rpb24obCl7cmV0dXJuIGlyLnBvbHlnb24oZSxzLGwpfSxyfSxjZXQ9KHQsZSk9Pntjb25zdHtzaGFwZVN2ZzpyLGJib3g6bn09WXIodCxlLHZvaWQgMCwhMCksaT1uLndpZHRoK2UucGFkZGluZyxhPWkvMixzPWEvKDIuNStpLzUwKSxvPW4uaGVpZ2h0K3MrZS5wYWRkaW5nLGw9Ik0gMCwiK3MrIiBhICIrYSsiLCIrcysiIDAsMCwwICIraSsiIDAgYSAiK2ErIiwiK3MrIiAwLDAsMCAiKy1pKyIgMCBsIDAsIitvKyIgYSAiK2ErIiwiK3MrIiAwLDAsMCAiK2krIiAwIGwgMCwiKy1vLHU9ci5hdHRyKCJsYWJlbC1vZmZzZXQteSIscykuaW5zZXJ0KCJwYXRoIiwiOmZpcnN0LWNoaWxkIikuYXR0cigic3R5bGUiLGUuc3R5bGUpLmF0dHIoImQiLGwpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKy1pLzIrIiwiKy0oby8yK3MpKyIpIik7cmV0dXJuIHVyKGUsdSksZS5pbnRlcnNlY3Q9ZnVuY3Rpb24oaCl7Y29uc3QgZD1pci5yZWN0KGUsaCksZj1kLngtZS54O2lmKGEhPTAmJihNYXRoLmFicyhmKTxlLndpZHRoLzJ8fE1hdGguYWJzKGYpPT1lLndpZHRoLzImJk1hdGguYWJzKGQueS1lLnkpPmUuaGVpZ2h0LzItcykpe2xldCBwPXMqcyooMS1mKmYvKGEqYSkpO3AhPTAmJihwPU1hdGguc3FydChwKSkscD1zLXAsaC55LWUueT4wJiYocD0tcCksZC55Kz1wfXJldHVybiBkfSxyfSx1ZXQ9KHQsZSk9Pntjb25zdHtzaGFwZVN2ZzpyLGJib3g6bixoYWxmUGFkZGluZzppfT1Zcih0LGUsIm5vZGUgIitlLmNsYXNzZXMsITApO0gudHJhY2UoIkNsYXNzZXMgPSAiLGUuY2xhc3Nlcyk7Y29uc3QgYT1yLmluc2VydCgicmVjdCIsIjpmaXJzdC1jaGlsZCIpLHM9bi53aWR0aCtlLnBhZGRpbmcsbz1uLmhlaWdodCtlLnBhZGRpbmc7aWYoYS5hdHRyKCJjbGFzcyIsImJhc2ljIGxhYmVsLWNvbnRhaW5lciIpLmF0dHIoInN0eWxlIixlLnN0eWxlKS5hdHRyKCJyeCIsZS5yeCkuYXR0cigicnkiLGUucnkpLmF0dHIoIngiLC1uLndpZHRoLzItaSkuYXR0cigieSIsLW4uaGVpZ2h0LzItaSkuYXR0cigid2lkdGgiLHMpLmF0dHIoImhlaWdodCIsbyksZS5wcm9wcyl7Y29uc3QgbD1uZXcgU2V0KE9iamVjdC5rZXlzKGUucHJvcHMpKTtlLnByb3BzLmJvcmRlcnMmJihqQShhLGUucHJvcHMuYm9yZGVycyxzLG8pLGwuZGVsZXRlKCJib3JkZXJzIikpLGwuZm9yRWFjaCh1PT57SC53YXJuKGBVbmtub3duIG5vZGUgcHJvcGVydHkgJHt1fWApfSl9cmV0dXJuIHVyKGUsYSksZS5pbnRlcnNlY3Q9ZnVuY3Rpb24obCl7cmV0dXJuIGlyLnJlY3QoZSxsKX0scn0saGV0PSh0LGUpPT57Y29uc3R7c2hhcGVTdmc6cn09WXIodCxlLCJsYWJlbCIsITApO0gudHJhY2UoIkNsYXNzZXMgPSAiLGUuY2xhc3Nlcyk7Y29uc3Qgbj1yLmluc2VydCgicmVjdCIsIjpmaXJzdC1jaGlsZCIpLGk9MCxhPTA7aWYobi5hdHRyKCJ3aWR0aCIsaSkuYXR0cigiaGVpZ2h0IixhKSxyLmF0dHIoImNsYXNzIiwibGFiZWwgZWRnZUxhYmVsIiksZS5wcm9wcyl7Y29uc3Qgcz1uZXcgU2V0KE9iamVjdC5rZXlzKGUucHJvcHMpKTtlLnByb3BzLmJvcmRlcnMmJihqQShuLGUucHJvcHMuYm9yZGVycyxpLGEpLHMuZGVsZXRlKCJib3JkZXJzIikpLHMuZm9yRWFjaChvPT57SC53YXJuKGBVbmtub3duIG5vZGUgcHJvcGVydHkgJHtvfWApfSl9cmV0dXJuIHVyKGUsbiksZS5pbnRlcnNlY3Q9ZnVuY3Rpb24ocyl7cmV0dXJuIGlyLnJlY3QoZSxzKX0scn07ZnVuY3Rpb24gakEodCxlLHIsbil7Y29uc3QgaT1bXSxhPW89PntpLnB1c2gobyksaS5wdXNoKDApfSxzPW89PntpLnB1c2goMCksaS5wdXNoKG8pfTtlLmluY2x1ZGVzKCJ0Iik/KEguZGVidWcoImFkZCB0b3AgYm9yZGVyIiksYShyKSk6cyhyKSxlLmluY2x1ZGVzKCJyIik/KEguZGVidWcoImFkZCByaWdodCBib3JkZXIiKSxhKG4pKTpzKG4pLGUuaW5jbHVkZXMoImIiKT8oSC5kZWJ1ZygiYWRkIGJvdHRvbSBib3JkZXIiKSxhKHIpKTpzKHIpLGUuaW5jbHVkZXMoImwiKT8oSC5kZWJ1ZygiYWRkIGxlZnQgYm9yZGVyIiksYShuKSk6cyhuKSx0LmF0dHIoInN0cm9rZS1kYXNoYXJyYXkiLGkuam9pbigiICIpKX1jb25zdCBmZXQ9KHQsZSk9PntsZXQgcjtlLmNsYXNzZXM/cj0ibm9kZSAiK2UuY2xhc3NlczpyPSJub2RlIGRlZmF1bHQiO2NvbnN0IG49dC5pbnNlcnQoImciKS5hdHRyKCJjbGFzcyIscikuYXR0cigiaWQiLGUuZG9tSWR8fGUuaWQpLGk9bi5pbnNlcnQoInJlY3QiLCI6Zmlyc3QtY2hpbGQiKSxhPW4uaW5zZXJ0KCJsaW5lIikscz1uLmluc2VydCgiZyIpLmF0dHIoImNsYXNzIiwibGFiZWwiKSxvPWUubGFiZWxUZXh0LmZsYXQ/ZS5sYWJlbFRleHQuZmxhdCgpOmUubGFiZWxUZXh0O2xldCBsPSIiO3R5cGVvZiBvPT0ib2JqZWN0Ij9sPW9bMF06bD1vLEguaW5mbygiTGFiZWwgdGV4dCBhYmM3OSIsbCxvLHR5cGVvZiBvPT0ib2JqZWN0Iik7Y29uc3QgdT1zLm5vZGUoKS5hcHBlbmRDaGlsZCh4bihsLGUubGFiZWxTdHlsZSwhMCwhMCkpO2xldCBoPXt3aWR0aDowLGhlaWdodDowfTtpZihNcihudCgpLmZsb3djaGFydC5odG1sTGFiZWxzKSl7Y29uc3QgXz11LmNoaWxkcmVuWzBdLHk9U3QodSk7aD1fLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHkuYXR0cigid2lkdGgiLGgud2lkdGgpLHkuYXR0cigiaGVpZ2h0IixoLmhlaWdodCl9SC5pbmZvKCJUZXh0IDIiLG8pO2NvbnN0IGQ9by5zbGljZSgxLG8ubGVuZ3RoKTtsZXQgZj11LmdldEJCb3goKTtjb25zdCBwPXMubm9kZSgpLmFwcGVuZENoaWxkKHhuKGQuam9pbj9kLmpvaW4oIjxici8+Iik6ZCxlLmxhYmVsU3R5bGUsITAsITApKTtpZihNcihudCgpLmZsb3djaGFydC5odG1sTGFiZWxzKSl7Y29uc3QgXz1wLmNoaWxkcmVuWzBdLHk9U3QocCk7aD1fLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHkuYXR0cigid2lkdGgiLGgud2lkdGgpLHkuYXR0cigiaGVpZ2h0IixoLmhlaWdodCl9Y29uc3QgbT1lLnBhZGRpbmcvMjtyZXR1cm4gU3QocCkuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCAiKyhoLndpZHRoPmYud2lkdGg/MDooZi53aWR0aC1oLndpZHRoKS8yKSsiLCAiKyhmLmhlaWdodCttKzUpKyIpIiksU3QodSkuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCAiKyhoLndpZHRoPGYud2lkdGg/MDotKGYud2lkdGgtaC53aWR0aCkvMikrIiwgIiswKyIpIiksaD1zLm5vZGUoKS5nZXRCQm94KCkscy5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIistaC53aWR0aC8yKyIsICIrKC1oLmhlaWdodC8yLW0rMykrIikiKSxpLmF0dHIoImNsYXNzIiwib3V0ZXIgdGl0bGUtc3RhdGUiKS5hdHRyKCJ4IiwtaC53aWR0aC8yLW0pLmF0dHIoInkiLC1oLmhlaWdodC8yLW0pLmF0dHIoIndpZHRoIixoLndpZHRoK2UucGFkZGluZykuYXR0cigiaGVpZ2h0IixoLmhlaWdodCtlLnBhZGRpbmcpLGEuYXR0cigiY2xhc3MiLCJkaXZpZGVyIikuYXR0cigieDEiLC1oLndpZHRoLzItbSkuYXR0cigieDIiLGgud2lkdGgvMittKS5hdHRyKCJ5MSIsLWguaGVpZ2h0LzItbStmLmhlaWdodCttKS5hdHRyKCJ5MiIsLWguaGVpZ2h0LzItbStmLmhlaWdodCttKSx1cihlLGkpLGUuaW50ZXJzZWN0PWZ1bmN0aW9uKF8pe3JldHVybiBpci5yZWN0KGUsXyl9LG59LGRldD0odCxlKT0+e2NvbnN0e3NoYXBlU3ZnOnIsYmJveDpufT1Zcih0LGUsdm9pZCAwLCEwKSxpPW4uaGVpZ2h0K2UucGFkZGluZyxhPW4ud2lkdGgraS80K2UucGFkZGluZyxzPXIuaW5zZXJ0KCJyZWN0IiwiOmZpcnN0LWNoaWxkIikuYXR0cigic3R5bGUiLGUuc3R5bGUpLmF0dHIoInJ4IixpLzIpLmF0dHIoInJ5IixpLzIpLmF0dHIoIngiLC1hLzIpLmF0dHIoInkiLC1pLzIpLmF0dHIoIndpZHRoIixhKS5hdHRyKCJoZWlnaHQiLGkpO3JldHVybiB1cihlLHMpLGUuaW50ZXJzZWN0PWZ1bmN0aW9uKG8pe3JldHVybiBpci5yZWN0KGUsbyl9LHJ9LHBldD0odCxlKT0+e2NvbnN0e3NoYXBlU3ZnOnIsYmJveDpuLGhhbGZQYWRkaW5nOml9PVlyKHQsZSx2b2lkIDAsITApLGE9ci5pbnNlcnQoImNpcmNsZSIsIjpmaXJzdC1jaGlsZCIpO3JldHVybiBhLmF0dHIoInN0eWxlIixlLnN0eWxlKS5hdHRyKCJyeCIsZS5yeCkuYXR0cigicnkiLGUucnkpLmF0dHIoInIiLG4ud2lkdGgvMitpKS5hdHRyKCJ3aWR0aCIsbi53aWR0aCtlLnBhZGRpbmcpLmF0dHIoImhlaWdodCIsbi5oZWlnaHQrZS5wYWRkaW5nKSxILmluZm8oIkNpcmNsZSBtYWluIiksdXIoZSxhKSxlLmludGVyc2VjdD1mdW5jdGlvbihzKXtyZXR1cm4gSC5pbmZvKCJDaXJjbGUgaW50ZXJzZWN0IixlLG4ud2lkdGgvMitpLHMpLGlyLmNpcmNsZShlLG4ud2lkdGgvMitpLHMpfSxyfSxnZXQ9KHQsZSk9Pntjb25zdHtzaGFwZVN2ZzpyLGJib3g6bixoYWxmUGFkZGluZzppfT1Zcih0LGUsdm9pZCAwLCEwKSxhPTUscz1yLmluc2VydCgiZyIsIjpmaXJzdC1jaGlsZCIpLG89cy5pbnNlcnQoImNpcmNsZSIpLGw9cy5pbnNlcnQoImNpcmNsZSIpO3JldHVybiBvLmF0dHIoInN0eWxlIixlLnN0eWxlKS5hdHRyKCJyeCIsZS5yeCkuYXR0cigicnkiLGUucnkpLmF0dHIoInIiLG4ud2lkdGgvMitpK2EpLmF0dHIoIndpZHRoIixuLndpZHRoK2UucGFkZGluZythKjIpLmF0dHIoImhlaWdodCIsbi5oZWlnaHQrZS5wYWRkaW5nK2EqMiksbC5hdHRyKCJzdHlsZSIsZS5zdHlsZSkuYXR0cigicngiLGUucngpLmF0dHIoInJ5IixlLnJ5KS5hdHRyKCJyIixuLndpZHRoLzIraSkuYXR0cigid2lkdGgiLG4ud2lkdGgrZS5wYWRkaW5nKS5hdHRyKCJoZWlnaHQiLG4uaGVpZ2h0K2UucGFkZGluZyksSC5pbmZvKCJEb3VibGVDaXJjbGUgbWFpbiIpLHVyKGUsbyksZS5pbnRlcnNlY3Q9ZnVuY3Rpb24odSl7cmV0dXJuIEguaW5mbygiRG91YmxlQ2lyY2xlIGludGVyc2VjdCIsZSxuLndpZHRoLzIraSthLHUpLGlyLmNpcmNsZShlLG4ud2lkdGgvMitpK2EsdSl9LHJ9LHlldD0odCxlKT0+e2NvbnN0e3NoYXBlU3ZnOnIsYmJveDpufT1Zcih0LGUsdm9pZCAwLCEwKSxpPW4ud2lkdGgrZS5wYWRkaW5nLGE9bi5oZWlnaHQrZS5wYWRkaW5nLHM9W3t4OjAseTowfSx7eDppLHk6MH0se3g6aSx5Oi1hfSx7eDowLHk6LWF9LHt4OjAseTowfSx7eDotOCx5OjB9LHt4OmkrOCx5OjB9LHt4OmkrOCx5Oi1hfSx7eDotOCx5Oi1hfSx7eDotOCx5OjB9XSxvPWNhKHIsaSxhLHMpO3JldHVybiBvLmF0dHIoInN0eWxlIixlLnN0eWxlKSx1cihlLG8pLGUuaW50ZXJzZWN0PWZ1bmN0aW9uKGwpe3JldHVybiBpci5wb2x5Z29uKGUscyxsKX0scn0sbWV0PSh0LGUpPT57Y29uc3Qgcj10Lmluc2VydCgiZyIpLmF0dHIoImNsYXNzIiwibm9kZSBkZWZhdWx0IikuYXR0cigiaWQiLGUuZG9tSWR8fGUuaWQpLG49ci5pbnNlcnQoImNpcmNsZSIsIjpmaXJzdC1jaGlsZCIpO3JldHVybiBuLmF0dHIoImNsYXNzIiwic3RhdGUtc3RhcnQiKS5hdHRyKCJyIiw3KS5hdHRyKCJ3aWR0aCIsMTQpLmF0dHIoImhlaWdodCIsMTQpLHVyKGUsbiksZS5pbnRlcnNlY3Q9ZnVuY3Rpb24oaSl7cmV0dXJuIGlyLmNpcmNsZShlLDcsaSl9LHJ9LCRBPSh0LGUscik9Pntjb25zdCBuPXQuaW5zZXJ0KCJnIikuYXR0cigiY2xhc3MiLCJub2RlIGRlZmF1bHQiKS5hdHRyKCJpZCIsZS5kb21JZHx8ZS5pZCk7bGV0IGk9NzAsYT0xMDtyPT09IkxSIiYmKGk9MTAsYT03MCk7Y29uc3Qgcz1uLmFwcGVuZCgicmVjdCIpLmF0dHIoIngiLC0xKmkvMikuYXR0cigieSIsLTEqYS8yKS5hdHRyKCJ3aWR0aCIsaSkuYXR0cigiaGVpZ2h0IixhKS5hdHRyKCJjbGFzcyIsImZvcmstam9pbiIpO3JldHVybiB1cihlLHMpLGUuaGVpZ2h0PWUuaGVpZ2h0K2UucGFkZGluZy8yLGUud2lkdGg9ZS53aWR0aCtlLnBhZGRpbmcvMixlLmludGVyc2VjdD1mdW5jdGlvbihvKXtyZXR1cm4gaXIucmVjdChlLG8pfSxufSxYQT17cXVlc3Rpb246SnR0LHJlY3Q6dWV0LGxhYmVsUmVjdDpoZXQscmVjdFdpdGhUaXRsZTpmZXQsY2hvaWNlOnRldCxjaXJjbGU6cGV0LGRvdWJsZWNpcmNsZTpnZXQsc3RhZGl1bTpkZXQsaGV4YWdvbjplZXQscmVjdF9sZWZ0X2ludl9hcnJvdzpyZXQsbGVhbl9yaWdodDpuZXQsbGVhbl9sZWZ0OmlldCx0cmFwZXpvaWQ6YWV0LGludl90cmFwZXpvaWQ6c2V0LHJlY3RfcmlnaHRfaW52X2Fycm93Om9ldCxjeWxpbmRlcjpjZXQsc3RhcnQ6bWV0LGVuZDoodCxlKT0+e2NvbnN0IHI9dC5pbnNlcnQoImciKS5hdHRyKCJjbGFzcyIsIm5vZGUgZGVmYXVsdCIpLmF0dHIoImlkIixlLmRvbUlkfHxlLmlkKSxuPXIuaW5zZXJ0KCJjaXJjbGUiLCI6Zmlyc3QtY2hpbGQiKSxpPXIuaW5zZXJ0KCJjaXJjbGUiLCI6Zmlyc3QtY2hpbGQiKTtyZXR1cm4gaS5hdHRyKCJjbGFzcyIsInN0YXRlLXN0YXJ0IikuYXR0cigiciIsNykuYXR0cigid2lkdGgiLDE0KS5hdHRyKCJoZWlnaHQiLDE0KSxuLmF0dHIoImNsYXNzIiwic3RhdGUtZW5kIikuYXR0cigiciIsNSkuYXR0cigid2lkdGgiLDEwKS5hdHRyKCJoZWlnaHQiLDEwKSx1cihlLGkpLGUuaW50ZXJzZWN0PWZ1bmN0aW9uKGEpe3JldHVybiBpci5jaXJjbGUoZSw3LGEpfSxyfSxub3RlOlF0dCxzdWJyb3V0aW5lOnlldCxmb3JrOiRBLGpvaW46JEEsY2xhc3NfYm94Oih0LGUpPT57Y29uc3Qgcj1lLnBhZGRpbmcvMixuPTQsaT04O2xldCBhO2UuY2xhc3Nlcz9hPSJub2RlICIrZS5jbGFzc2VzOmE9Im5vZGUgZGVmYXVsdCI7Y29uc3Qgcz10Lmluc2VydCgiZyIpLmF0dHIoImNsYXNzIixhKS5hdHRyKCJpZCIsZS5kb21JZHx8ZS5pZCksbz1zLmluc2VydCgicmVjdCIsIjpmaXJzdC1jaGlsZCIpLGw9cy5pbnNlcnQoImxpbmUiKSx1PXMuaW5zZXJ0KCJsaW5lIik7bGV0IGg9MCxkPW47Y29uc3QgZj1zLmluc2VydCgiZyIpLmF0dHIoImNsYXNzIiwibGFiZWwiKTtsZXQgcD0wO2NvbnN0IG09ZS5jbGFzc0RhdGEuYW5ub3RhdGlvbnMmJmUuY2xhc3NEYXRhLmFubm90YXRpb25zWzBdLF89ZS5jbGFzc0RhdGEuYW5ub3RhdGlvbnNbMF0/Ilx4QUIiK2UuY2xhc3NEYXRhLmFubm90YXRpb25zWzBdKyJceEJCIjoiIix5PWYubm9kZSgpLmFwcGVuZENoaWxkKHhuKF8sZS5sYWJlbFN0eWxlLCEwLCEwKSk7bGV0IGI9eS5nZXRCQm94KCk7aWYoTXIobnQoKS5mbG93Y2hhcnQuaHRtbExhYmVscykpe2NvbnN0IFI9eS5jaGlsZHJlblswXSxBPVN0KHkpO2I9Ui5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxBLmF0dHIoIndpZHRoIixiLndpZHRoKSxBLmF0dHIoImhlaWdodCIsYi5oZWlnaHQpfWUuY2xhc3NEYXRhLmFubm90YXRpb25zWzBdJiYoZCs9Yi5oZWlnaHQrbixoKz1iLndpZHRoKTtsZXQgeD1lLmNsYXNzRGF0YS5pZDtlLmNsYXNzRGF0YS50eXBlIT09dm9pZCAwJiZlLmNsYXNzRGF0YS50eXBlIT09IiImJihudCgpLmZsb3djaGFydC5odG1sTGFiZWxzP3grPSImbHQ7IitlLmNsYXNzRGF0YS50eXBlKyImZ3Q7Ijp4Kz0iPCIrZS5jbGFzc0RhdGEudHlwZSsiPiIpO2NvbnN0IGs9Zi5ub2RlKCkuYXBwZW5kQ2hpbGQoeG4oeCxlLmxhYmVsU3R5bGUsITAsITApKTtTdChrKS5hdHRyKCJjbGFzcyIsImNsYXNzVGl0bGUiKTtsZXQgVD1rLmdldEJCb3goKTtpZihNcihudCgpLmZsb3djaGFydC5odG1sTGFiZWxzKSl7Y29uc3QgUj1rLmNoaWxkcmVuWzBdLEE9U3Qoayk7VD1SLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLEEuYXR0cigid2lkdGgiLFQud2lkdGgpLEEuYXR0cigiaGVpZ2h0IixULmhlaWdodCl9ZCs9VC5oZWlnaHQrbixULndpZHRoPmgmJihoPVQud2lkdGgpO2NvbnN0IEM9W107ZS5jbGFzc0RhdGEubWVtYmVycy5mb3JFYWNoKFI9Pntjb25zdCBBPXoxKFIpO2xldCBMPUEuZGlzcGxheVRleHQ7bnQoKS5mbG93Y2hhcnQuaHRtbExhYmVscyYmKEw9TC5yZXBsYWNlKC88L2csIiZsdDsiKS5yZXBsYWNlKC8+L2csIiZndDsiKSk7Y29uc3Qgdj1mLm5vZGUoKS5hcHBlbmRDaGlsZCh4bihMLEEuY3NzU3R5bGU/QS5jc3NTdHlsZTplLmxhYmVsU3R5bGUsITAsITApKTtsZXQgQj12LmdldEJCb3goKTtpZihNcihudCgpLmZsb3djaGFydC5odG1sTGFiZWxzKSl7Y29uc3Qgdz12LmNoaWxkcmVuWzBdLEQ9U3Qodik7Qj13LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLEQuYXR0cigid2lkdGgiLEIud2lkdGgpLEQuYXR0cigiaGVpZ2h0IixCLmhlaWdodCl9Qi53aWR0aD5oJiYoaD1CLndpZHRoKSxkKz1CLmhlaWdodCtuLEMucHVzaCh2KX0pLGQrPWk7Y29uc3QgTT1bXTtpZihlLmNsYXNzRGF0YS5tZXRob2RzLmZvckVhY2goUj0+e2NvbnN0IEE9ejEoUik7bGV0IEw9QS5kaXNwbGF5VGV4dDtudCgpLmZsb3djaGFydC5odG1sTGFiZWxzJiYoTD1MLnJlcGxhY2UoLzwvZywiJmx0OyIpLnJlcGxhY2UoLz4vZywiJmd0OyIpKTtjb25zdCB2PWYubm9kZSgpLmFwcGVuZENoaWxkKHhuKEwsQS5jc3NTdHlsZT9BLmNzc1N0eWxlOmUubGFiZWxTdHlsZSwhMCwhMCkpO2xldCBCPXYuZ2V0QkJveCgpO2lmKE1yKG50KCkuZmxvd2NoYXJ0Lmh0bWxMYWJlbHMpKXtjb25zdCB3PXYuY2hpbGRyZW5bMF0sRD1TdCh2KTtCPXcuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksRC5hdHRyKCJ3aWR0aCIsQi53aWR0aCksRC5hdHRyKCJoZWlnaHQiLEIuaGVpZ2h0KX1CLndpZHRoPmgmJihoPUIud2lkdGgpLGQrPUIuaGVpZ2h0K24sTS5wdXNoKHYpfSksZCs9aSxtKXtsZXQgUj0oaC1iLndpZHRoKS8yO1N0KHkpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSggIisoLTEqaC8yK1IpKyIsICIrLTEqZC8yKyIpIikscD1iLmhlaWdodCtufWxldCBTPShoLVQud2lkdGgpLzI7cmV0dXJuIFN0KGspLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSggIisoLTEqaC8yK1MpKyIsICIrKC0xKmQvMitwKSsiKSIpLHArPVQuaGVpZ2h0K24sbC5hdHRyKCJjbGFzcyIsImRpdmlkZXIiKS5hdHRyKCJ4MSIsLWgvMi1yKS5hdHRyKCJ4MiIsaC8yK3IpLmF0dHIoInkxIiwtZC8yLXIraStwKS5hdHRyKCJ5MiIsLWQvMi1yK2krcCkscCs9aSxDLmZvckVhY2goUj0+e1N0KFIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSggIistaC8yKyIsICIrKC0xKmQvMitwK2kvMikrIikiKSxwKz1ULmhlaWdodCtufSkscCs9aSx1LmF0dHIoImNsYXNzIiwiZGl2aWRlciIpLmF0dHIoIngxIiwtaC8yLXIpLmF0dHIoIngyIixoLzIrcikuYXR0cigieTEiLC1kLzItcitpK3ApLmF0dHIoInkyIiwtZC8yLXIraStwKSxwKz1pLE0uZm9yRWFjaChSPT57U3QoUikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCAiKy1oLzIrIiwgIisoLTEqZC8yK3ApKyIpIikscCs9VC5oZWlnaHQrbn0pLG8uYXR0cigiY2xhc3MiLCJvdXRlciB0aXRsZS1zdGF0ZSIpLmF0dHIoIngiLC1oLzItcikuYXR0cigieSIsLShkLzIpLXIpLmF0dHIoIndpZHRoIixoK2UucGFkZGluZykuYXR0cigiaGVpZ2h0IixkK2UucGFkZGluZyksdXIoZSxvKSxlLmludGVyc2VjdD1mdW5jdGlvbihSKXtyZXR1cm4gaXIucmVjdChlLFIpfSxzfX07bGV0IG5sPXt9O2NvbnN0IGJldD0odCxlLHIpPT57bGV0IG4saTtpZihlLmxpbmspe2xldCBhO250KCkuc2VjdXJpdHlMZXZlbD09PSJzYW5kYm94Ij9hPSJfdG9wIjplLmxpbmtUYXJnZXQmJihhPWUubGlua1RhcmdldHx8Il9ibGFuayIpLG49dC5pbnNlcnQoInN2ZzphIikuYXR0cigieGxpbms6aHJlZiIsZS5saW5rKS5hdHRyKCJ0YXJnZXQiLGEpLGk9WEFbZS5zaGFwZV0obixlLHIpfWVsc2UgaT1YQVtlLnNoYXBlXSh0LGUsciksbj1pO2UudG9vbHRpcCYmaS5hdHRyKCJ0aXRsZSIsZS50b29sdGlwKSxlLmNsYXNzJiZpLmF0dHIoImNsYXNzIiwibm9kZSBkZWZhdWx0ICIrZS5jbGFzcyksbmxbZS5pZF09bixlLmhhdmVDYWxsYmFjayYmbmxbZS5pZF0uYXR0cigiY2xhc3MiLG5sW2UuaWRdLmF0dHIoImNsYXNzIikrIiBjbGlja2FibGUiKX0sX2V0PSh0LGUpPT57bmxbZS5pZF09dH0sdmV0PSgpPT57bmw9e319LEtBPXQ9Pntjb25zdCBlPW5sW3QuaWRdO0gudHJhY2UoIlRyYW5zZm9ybWluZyBub2RlIix0LmRpZmYsdCwidHJhbnNsYXRlKCIrKHQueC10LndpZHRoLzItNSkrIiwgIit0LndpZHRoLzIrIikiKTtjb25zdCByPTgsbj10LmRpZmZ8fDA7cmV0dXJuIHQuY2x1c3Rlck5vZGU/ZS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIisodC54K24tdC53aWR0aC8yKSsiLCAiKyh0LnktdC5oZWlnaHQvMi1yKSsiKSIpOmUuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrdC54KyIsICIrdC55KyIpIiksbn0seGV0PXtyZWN0Oih0LGUpPT57SC50cmFjZSgiQ3JlYXRpbmcgc3ViZ3JhcGggcmVjdCBmb3IgIixlLmlkLGUpO2NvbnN0IHI9dC5pbnNlcnQoImciKS5hdHRyKCJjbGFzcyIsImNsdXN0ZXIiKyhlLmNsYXNzPyIgIitlLmNsYXNzOiIiKSkuYXR0cigiaWQiLGUuaWQpLG49ci5pbnNlcnQoInJlY3QiLCI6Zmlyc3QtY2hpbGQiKSxpPXIuaW5zZXJ0KCJnIikuYXR0cigiY2xhc3MiLCJjbHVzdGVyLWxhYmVsIiksYT1pLm5vZGUoKS5hcHBlbmRDaGlsZCh4bihlLmxhYmVsVGV4dCxlLmxhYmVsU3R5bGUsdm9pZCAwLCEwKSk7bGV0IHM9YS5nZXRCQm94KCk7aWYoTXIobnQoKS5mbG93Y2hhcnQuaHRtbExhYmVscykpe2NvbnN0IGQ9YS5jaGlsZHJlblswXSxmPVN0KGEpO3M9ZC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxmLmF0dHIoIndpZHRoIixzLndpZHRoKSxmLmF0dHIoImhlaWdodCIscy5oZWlnaHQpfWNvbnN0IG89MCplLnBhZGRpbmcsbD1vLzIsdT1lLndpZHRoPD1zLndpZHRoK28/cy53aWR0aCtvOmUud2lkdGg7ZS53aWR0aDw9cy53aWR0aCtvP2UuZGlmZj0ocy53aWR0aC1lLndpZHRoKS8yLWUucGFkZGluZy8yOmUuZGlmZj0tZS5wYWRkaW5nLzIsSC50cmFjZSgiRGF0YSAiLGUsSlNPTi5zdHJpbmdpZnkoZSkpLG4uYXR0cigic3R5bGUiLGUuc3R5bGUpLmF0dHIoInJ4IixlLnJ4KS5hdHRyKCJyeSIsZS5yeSkuYXR0cigieCIsZS54LXUvMikuYXR0cigieSIsZS55LWUuaGVpZ2h0LzItbCkuYXR0cigid2lkdGgiLHUpLmF0dHIoImhlaWdodCIsZS5oZWlnaHQrbyksaS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIisoZS54LXMud2lkdGgvMikrIiwgIisoZS55LWUuaGVpZ2h0LzIrZS5wYWRkaW5nLzMpKyIpIik7Y29uc3QgaD1uLm5vZGUoKS5nZXRCQm94KCk7cmV0dXJuIGUud2lkdGg9aC53aWR0aCxlLmhlaWdodD1oLmhlaWdodCxlLmludGVyc2VjdD1mdW5jdGlvbihkKXtyZXR1cm4gSmMoZSxkKX0scn0scm91bmRlZFdpdGhUaXRsZToodCxlKT0+e2NvbnN0IHI9dC5pbnNlcnQoImciKS5hdHRyKCJjbGFzcyIsZS5jbGFzc2VzKS5hdHRyKCJpZCIsZS5pZCksbj1yLmluc2VydCgicmVjdCIsIjpmaXJzdC1jaGlsZCIpLGk9ci5pbnNlcnQoImciKS5hdHRyKCJjbGFzcyIsImNsdXN0ZXItbGFiZWwiKSxhPXIuYXBwZW5kKCJyZWN0Iikscz1pLm5vZGUoKS5hcHBlbmRDaGlsZCh4bihlLmxhYmVsVGV4dCxlLmxhYmVsU3R5bGUsdm9pZCAwLCEwKSk7bGV0IG89cy5nZXRCQm94KCk7aWYoTXIobnQoKS5mbG93Y2hhcnQuaHRtbExhYmVscykpe2NvbnN0IGY9cy5jaGlsZHJlblswXSxwPVN0KHMpO289Zi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxwLmF0dHIoIndpZHRoIixvLndpZHRoKSxwLmF0dHIoImhlaWdodCIsby5oZWlnaHQpfW89cy5nZXRCQm94KCk7Y29uc3QgbD0wKmUucGFkZGluZyx1PWwvMixoPWUud2lkdGg8PW8ud2lkdGgrZS5wYWRkaW5nP28ud2lkdGgrZS5wYWRkaW5nOmUud2lkdGg7ZS53aWR0aDw9by53aWR0aCtlLnBhZGRpbmc/ZS5kaWZmPShvLndpZHRoK2UucGFkZGluZyowLWUud2lkdGgpLzI6ZS5kaWZmPS1lLnBhZGRpbmcvMixuLmF0dHIoImNsYXNzIiwib3V0ZXIiKS5hdHRyKCJ4IixlLngtaC8yLXUpLmF0dHIoInkiLGUueS1lLmhlaWdodC8yLXUpLmF0dHIoIndpZHRoIixoK2wpLmF0dHIoImhlaWdodCIsZS5oZWlnaHQrbCksYS5hdHRyKCJjbGFzcyIsImlubmVyIikuYXR0cigieCIsZS54LWgvMi11KS5hdHRyKCJ5IixlLnktZS5oZWlnaHQvMi11K28uaGVpZ2h0LTEpLmF0dHIoIndpZHRoIixoK2wpLmF0dHIoImhlaWdodCIsZS5oZWlnaHQrbC1vLmhlaWdodC0zKSxpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKyhlLngtby53aWR0aC8yKSsiLCAiKyhlLnktZS5oZWlnaHQvMi1lLnBhZGRpbmcvMysoTXIobnQoKS5mbG93Y2hhcnQuaHRtbExhYmVscyk/NTozKSkrIikiKTtjb25zdCBkPW4ubm9kZSgpLmdldEJCb3goKTtyZXR1cm4gZS5oZWlnaHQ9ZC5oZWlnaHQsZS5pbnRlcnNlY3Q9ZnVuY3Rpb24oZil7cmV0dXJuIEpjKGUsZil9LHJ9LG5vdGVHcm91cDoodCxlKT0+e2NvbnN0IHI9dC5pbnNlcnQoImciKS5hdHRyKCJjbGFzcyIsIm5vdGUtY2x1c3RlciIpLmF0dHIoImlkIixlLmlkKSxuPXIuaW5zZXJ0KCJyZWN0IiwiOmZpcnN0LWNoaWxkIiksaT0wKmUucGFkZGluZyxhPWkvMjtuLmF0dHIoInJ4IixlLnJ4KS5hdHRyKCJyeSIsZS5yeSkuYXR0cigieCIsZS54LWUud2lkdGgvMi1hKS5hdHRyKCJ5IixlLnktZS5oZWlnaHQvMi1hKS5hdHRyKCJ3aWR0aCIsZS53aWR0aCtpKS5hdHRyKCJoZWlnaHQiLGUuaGVpZ2h0K2kpLmF0dHIoImZpbGwiLCJub25lIik7Y29uc3Qgcz1uLm5vZGUoKS5nZXRCQm94KCk7cmV0dXJuIGUud2lkdGg9cy53aWR0aCxlLmhlaWdodD1zLmhlaWdodCxlLmludGVyc2VjdD1mdW5jdGlvbihvKXtyZXR1cm4gSmMoZSxvKX0scn0sZGl2aWRlcjoodCxlKT0+e2NvbnN0IHI9dC5pbnNlcnQoImciKS5hdHRyKCJjbGFzcyIsZS5jbGFzc2VzKS5hdHRyKCJpZCIsZS5pZCksbj1yLmluc2VydCgicmVjdCIsIjpmaXJzdC1jaGlsZCIpLGk9MCplLnBhZGRpbmcsYT1pLzI7bi5hdHRyKCJjbGFzcyIsImRpdmlkZXIiKS5hdHRyKCJ4IixlLngtZS53aWR0aC8yLWEpLmF0dHIoInkiLGUueS1lLmhlaWdodC8yKS5hdHRyKCJ3aWR0aCIsZS53aWR0aCtpKS5hdHRyKCJoZWlnaHQiLGUuaGVpZ2h0K2kpO2NvbnN0IHM9bi5ub2RlKCkuZ2V0QkJveCgpO3JldHVybiBlLndpZHRoPXMud2lkdGgsZS5oZWlnaHQ9cy5oZWlnaHQsZS5kaWZmPS1lLnBhZGRpbmcvMixlLmludGVyc2VjdD1mdW5jdGlvbihvKXtyZXR1cm4gSmMoZSxvKX0scn19O2xldCBaQT17fTtjb25zdCBrZXQ9KHQsZSk9PntILnRyYWNlKCJJbnNlcnRpbmcgY2x1c3RlciIpO2NvbnN0IHI9ZS5zaGFwZXx8InJlY3QiO1pBW2UuaWRdPXhldFtyXSh0LGUpfSx3ZXQ9KCk9PntaQT17fX07bGV0IEcxPXt9LE5yPXt9O2NvbnN0IFRldD0oKT0+e0cxPXt9LE5yPXt9fSxFZXQ9KHQsZSk9Pntjb25zdCByPXhuKGUubGFiZWwsZS5sYWJlbFN0eWxlKSxuPXQuaW5zZXJ0KCJnIikuYXR0cigiY2xhc3MiLCJlZGdlTGFiZWwiKSxpPW4uaW5zZXJ0KCJnIikuYXR0cigiY2xhc3MiLCJsYWJlbCIpO2kubm9kZSgpLmFwcGVuZENoaWxkKHIpO2xldCBhPXIuZ2V0QkJveCgpO2lmKE1yKG50KCkuZmxvd2NoYXJ0Lmh0bWxMYWJlbHMpKXtjb25zdCBvPXIuY2hpbGRyZW5bMF0sbD1TdChyKTthPW8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksbC5hdHRyKCJ3aWR0aCIsYS53aWR0aCksbC5hdHRyKCJoZWlnaHQiLGEuaGVpZ2h0KX1pLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKy1hLndpZHRoLzIrIiwgIistYS5oZWlnaHQvMisiKSIpLEcxW2UuaWRdPW4sZS53aWR0aD1hLndpZHRoLGUuaGVpZ2h0PWEuaGVpZ2h0O2xldCBzO2lmKGUuc3RhcnRMYWJlbExlZnQpe2NvbnN0IG89eG4oZS5zdGFydExhYmVsTGVmdCxlLmxhYmVsU3R5bGUpLGw9dC5pbnNlcnQoImciKS5hdHRyKCJjbGFzcyIsImVkZ2VUZXJtaW5hbHMiKSx1PWwuaW5zZXJ0KCJnIikuYXR0cigiY2xhc3MiLCJpbm5lciIpO3M9dS5ub2RlKCkuYXBwZW5kQ2hpbGQobyk7Y29uc3QgaD1vLmdldEJCb3goKTt1LmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKy1oLndpZHRoLzIrIiwgIistaC5oZWlnaHQvMisiKSIpLE5yW2UuaWRdfHwoTnJbZS5pZF09e30pLE5yW2UuaWRdLnN0YXJ0TGVmdD1sLGoxKHMsZS5zdGFydExhYmVsTGVmdCl9aWYoZS5zdGFydExhYmVsUmlnaHQpe2NvbnN0IG89eG4oZS5zdGFydExhYmVsUmlnaHQsZS5sYWJlbFN0eWxlKSxsPXQuaW5zZXJ0KCJnIikuYXR0cigiY2xhc3MiLCJlZGdlVGVybWluYWxzIiksdT1sLmluc2VydCgiZyIpLmF0dHIoImNsYXNzIiwiaW5uZXIiKTtzPWwubm9kZSgpLmFwcGVuZENoaWxkKG8pLHUubm9kZSgpLmFwcGVuZENoaWxkKG8pO2NvbnN0IGg9by5nZXRCQm94KCk7dS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIistaC53aWR0aC8yKyIsICIrLWguaGVpZ2h0LzIrIikiKSxOcltlLmlkXXx8KE5yW2UuaWRdPXt9KSxOcltlLmlkXS5zdGFydFJpZ2h0PWwsajEocyxlLnN0YXJ0TGFiZWxSaWdodCl9aWYoZS5lbmRMYWJlbExlZnQpe2NvbnN0IG89eG4oZS5lbmRMYWJlbExlZnQsZS5sYWJlbFN0eWxlKSxsPXQuaW5zZXJ0KCJnIikuYXR0cigiY2xhc3MiLCJlZGdlVGVybWluYWxzIiksdT1sLmluc2VydCgiZyIpLmF0dHIoImNsYXNzIiwiaW5uZXIiKTtzPXUubm9kZSgpLmFwcGVuZENoaWxkKG8pO2NvbnN0IGg9by5nZXRCQm94KCk7dS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIistaC53aWR0aC8yKyIsICIrLWguaGVpZ2h0LzIrIikiKSxsLm5vZGUoKS5hcHBlbmRDaGlsZChvKSxOcltlLmlkXXx8KE5yW2UuaWRdPXt9KSxOcltlLmlkXS5lbmRMZWZ0PWwsajEocyxlLmVuZExhYmVsTGVmdCl9aWYoZS5lbmRMYWJlbFJpZ2h0KXtjb25zdCBvPXhuKGUuZW5kTGFiZWxSaWdodCxlLmxhYmVsU3R5bGUpLGw9dC5pbnNlcnQoImciKS5hdHRyKCJjbGFzcyIsImVkZ2VUZXJtaW5hbHMiKSx1PWwuaW5zZXJ0KCJnIikuYXR0cigiY2xhc3MiLCJpbm5lciIpO3M9dS5ub2RlKCkuYXBwZW5kQ2hpbGQobyk7Y29uc3QgaD1vLmdldEJCb3goKTt1LmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKy1oLndpZHRoLzIrIiwgIistaC5oZWlnaHQvMisiKSIpLGwubm9kZSgpLmFwcGVuZENoaWxkKG8pLE5yW2UuaWRdfHwoTnJbZS5pZF09e30pLE5yW2UuaWRdLmVuZFJpZ2h0PWwsajEocyxlLmVuZExhYmVsUmlnaHQpfX07ZnVuY3Rpb24gajEodCxlKXtudCgpLmZsb3djaGFydC5odG1sTGFiZWxzJiZ0JiYodC5zdHlsZS53aWR0aD1lLmxlbmd0aCo5KyJweCIsdC5zdHlsZS5oZWlnaHQ9IjEycHgiKX1jb25zdCBDZXQ9KHQsZSk9PntILmluZm8oIk1vdmluZyBsYWJlbCBhYmM3OCAiLHQuaWQsdC5sYWJlbCxHMVt0LmlkXSk7bGV0IHI9ZS51cGRhdGVkUGF0aD9lLnVwZGF0ZWRQYXRoOmUub3JpZ2luYWxQYXRoO2lmKHQubGFiZWwpe2NvbnN0IG49RzFbdC5pZF07bGV0IGk9dC54LGE9dC55O2lmKHIpe2NvbnN0IHM9U2UuY2FsY0xhYmVsUG9zaXRpb24ocik7SC5pbmZvKCJNb3ZpbmcgbGFiZWwgZnJvbSAoIixpLCIsIixhLCIpIHRvICgiLHMueCwiLCIscy55LCIpIGFiYzc4Iil9bi5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitpKyIsICIrYSsiKSIpfWlmKHQuc3RhcnRMYWJlbExlZnQpe2NvbnN0IG49TnJbdC5pZF0uc3RhcnRMZWZ0O2xldCBpPXQueCxhPXQueTtpZihyKXtjb25zdCBzPVNlLmNhbGNUZXJtaW5hbExhYmVsUG9zaXRpb24odC5hcnJvd1R5cGVTdGFydD8xMDowLCJzdGFydF9sZWZ0IixyKTtpPXMueCxhPXMueX1uLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK2krIiwgIithKyIpIil9aWYodC5zdGFydExhYmVsUmlnaHQpe2NvbnN0IG49TnJbdC5pZF0uc3RhcnRSaWdodDtsZXQgaT10LngsYT10Lnk7aWYocil7Y29uc3Qgcz1TZS5jYWxjVGVybWluYWxMYWJlbFBvc2l0aW9uKHQuYXJyb3dUeXBlU3RhcnQ/MTA6MCwic3RhcnRfcmlnaHQiLHIpO2k9cy54LGE9cy55fW4uYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIraSsiLCAiK2ErIikiKX1pZih0LmVuZExhYmVsTGVmdCl7Y29uc3Qgbj1Oclt0LmlkXS5lbmRMZWZ0O2xldCBpPXQueCxhPXQueTtpZihyKXtjb25zdCBzPVNlLmNhbGNUZXJtaW5hbExhYmVsUG9zaXRpb24odC5hcnJvd1R5cGVFbmQ/MTA6MCwiZW5kX2xlZnQiLHIpO2k9cy54LGE9cy55fW4uYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIraSsiLCAiK2ErIikiKX1pZih0LmVuZExhYmVsUmlnaHQpe2NvbnN0IG49TnJbdC5pZF0uZW5kUmlnaHQ7bGV0IGk9dC54LGE9dC55O2lmKHIpe2NvbnN0IHM9U2UuY2FsY1Rlcm1pbmFsTGFiZWxQb3NpdGlvbih0LmFycm93VHlwZUVuZD8xMDowLCJlbmRfcmlnaHQiLHIpO2k9cy54LGE9cy55fW4uYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIraSsiLCAiK2ErIikiKX19LEFldD0odCxlKT0+e2NvbnN0IHI9dC54LG49dC55LGk9TWF0aC5hYnMoZS54LXIpLGE9TWF0aC5hYnMoZS55LW4pLHM9dC53aWR0aC8yLG89dC5oZWlnaHQvMjtyZXR1cm4gaT49c3x8YT49b30sTWV0PSh0LGUscik9PntILndhcm4oYGludGVyc2VjdGlvbiBjYWxjIGFiYzg5OgogIG91dHNpZGVQb2ludDogJHtKU09OLnN0cmluZ2lmeShlKX0KICBpbnNpZGVQb2ludCA6ICR7SlNPTi5zdHJpbmdpZnkocil9CiAgbm9kZSAgICAgICAgOiB4OiR7dC54fSB5OiR7dC55fSB3OiR7dC53aWR0aH0gaDoke3QuaGVpZ2h0fWApO2NvbnN0IG49dC54LGk9dC55LGE9TWF0aC5hYnMobi1yLngpLHM9dC53aWR0aC8yO2xldCBvPXIueDxlLng/cy1hOnMrYTtjb25zdCBsPXQuaGVpZ2h0LzIsdT1NYXRoLmFicyhlLnktci55KSxoPU1hdGguYWJzKGUueC1yLngpO2lmKE1hdGguYWJzKGktZS55KSpzPk1hdGguYWJzKG4tZS54KSpsKXtsZXQgZD1yLnk8ZS55P2UueS1sLWk6aS1sLWUueTtvPWgqZC91O2NvbnN0IGY9e3g6ci54PGUueD9yLngrbzpyLngtaCtvLHk6ci55PGUueT9yLnkrdS1kOnIueS11K2R9O3JldHVybiBvPT09MCYmKGYueD1lLngsZi55PWUueSksaD09PTAmJihmLng9ZS54KSx1PT09MCYmKGYueT1lLnkpLEgud2FybihgYWJjODkgdG9wcC9ib3R0IGNhbGMsIFEgJHt1fSwgcSAke2R9LCBSICR7aH0sIHIgJHtvfWAsZiksZn1lbHNle3IueDxlLng/bz1lLngtcy1uOm89bi1zLWUueDtsZXQgZD11Km8vaCxmPXIueDxlLng/ci54K2gtbzpyLngtaCtvLHA9ci55PGUueT9yLnkrZDpyLnktZDtyZXR1cm4gSC53YXJuKGBzaWRlcyBjYWxjIGFiYzg5LCBRICR7dX0sIHEgJHtkfSwgUiAke2h9LCByICR7b31gLHtfeDpmLF95OnB9KSxvPT09MCYmKGY9ZS54LHA9ZS55KSxoPT09MCYmKGY9ZS54KSx1PT09MCYmKHA9ZS55KSx7eDpmLHk6cH19fSxRQT0odCxlKT0+e0gud2FybigiYWJjODggY3V0UGF0aEF0SW50ZXJzZWN0Iix0LGUpO2xldCByPVtdLG49dFswXSxpPSExO3JldHVybiB0LmZvckVhY2goYT0+e2lmKEguaW5mbygiYWJjODggY2hlY2tpbmcgcG9pbnQiLGEsZSksIUFldChlLGEpJiYhaSl7Y29uc3Qgcz1NZXQoZSxuLGEpO0gud2FybigiYWJjODggaW5zaWRlIixhLG4scyksSC53YXJuKCJhYmM4OCBpbnRlcnNlY3Rpb24iLHMpO2xldCBvPSExO3IuZm9yRWFjaChsPT57bz1vfHxsLng9PT1zLngmJmwueT09PXMueX0pLHIuZmluZChsPT5sLng9PT1zLngmJmwueT09PXMueSk/SC53YXJuKCJhYmM4OCBubyBpbnRlcnNlY3QiLHMscik6ci5wdXNoKHMpLGk9ITB9ZWxzZSBILndhcm4oImFiYzg4IG91dHNpZGUiLGEsbiksbj1hLGl8fHIucHVzaChhKX0pLEgud2FybigiYWJjODggcmV0dXJuaW5nIHBvaW50cyIscikscn0sTGV0PWZ1bmN0aW9uKHQsZSxyLG4saSxhKXtsZXQgcz1yLnBvaW50cyxvPSExO2NvbnN0IGw9YS5ub2RlKGUudik7dmFyIHU9YS5ub2RlKGUudyk7SC5pbmZvKCJhYmM4OCBJbnNlcnRFZGdlOiAiLHIpLHUuaW50ZXJzZWN0JiZsLmludGVyc2VjdCYmKHM9cy5zbGljZSgxLHIucG9pbnRzLmxlbmd0aC0xKSxzLnVuc2hpZnQobC5pbnRlcnNlY3Qoc1swXSkpLEguaW5mbygiTGFzdCBwb2ludCIsc1tzLmxlbmd0aC0xXSx1LHUuaW50ZXJzZWN0KHNbcy5sZW5ndGgtMV0pKSxzLnB1c2godS5pbnRlcnNlY3Qoc1tzLmxlbmd0aC0xXSkpKSxyLnRvQ2x1c3RlciYmKEguaW5mbygidG8gY2x1c3RlciBhYmM4OCIsbltyLnRvQ2x1c3Rlcl0pLHM9UUEoci5wb2ludHMsbltyLnRvQ2x1c3Rlcl0ubm9kZSksbz0hMCksci5mcm9tQ2x1c3RlciYmKEguaW5mbygiZnJvbSBjbHVzdGVyIGFiYzg4IixuW3IuZnJvbUNsdXN0ZXJdKSxzPVFBKHMucmV2ZXJzZSgpLG5bci5mcm9tQ2x1c3Rlcl0ubm9kZSkucmV2ZXJzZSgpLG89ITApO2NvbnN0IGg9cy5maWx0ZXIoYj0+IU51bWJlci5pc05hTihiLnkpKTtsZXQgZDtpPT09ImdyYXBoInx8aT09PSJmbG93Y2hhcnQiP2Q9ci5jdXJ2ZXx8T3M6ZD1Pcztjb25zdCBmPVVhKCkueChmdW5jdGlvbihiKXtyZXR1cm4gYi54fSkueShmdW5jdGlvbihiKXtyZXR1cm4gYi55fSkuY3VydmUoZCk7bGV0IHA7c3dpdGNoKHIudGhpY2tuZXNzKXtjYXNlIm5vcm1hbCI6cD0iZWRnZS10aGlja25lc3Mtbm9ybWFsIjticmVhaztjYXNlInRoaWNrIjpwPSJlZGdlLXRoaWNrbmVzcy10aGljayI7YnJlYWs7Y2FzZSJpbnZpc2libGUiOnA9ImVkZ2UtdGhpY2tuZXNzLXRoaWNrIjticmVhaztkZWZhdWx0OnA9IiJ9c3dpdGNoKHIucGF0dGVybil7Y2FzZSJzb2xpZCI6cCs9IiBlZGdlLXBhdHRlcm4tc29saWQiO2JyZWFrO2Nhc2UiZG90dGVkIjpwKz0iIGVkZ2UtcGF0dGVybi1kb3R0ZWQiO2JyZWFrO2Nhc2UiZGFzaGVkIjpwKz0iIGVkZ2UtcGF0dGVybi1kYXNoZWQiO2JyZWFrfWNvbnN0IG09dC5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIixmKGgpKS5hdHRyKCJpZCIsci5pZCkuYXR0cigiY2xhc3MiLCIgIitwKyhyLmNsYXNzZXM/IiAiK3IuY2xhc3NlczoiIikpLmF0dHIoInN0eWxlIixyLnN0eWxlKTtsZXQgXz0iIjtzd2l0Y2goKG50KCkuZmxvd2NoYXJ0LmFycm93TWFya2VyQWJzb2x1dGV8fG50KCkuc3RhdGUuYXJyb3dNYXJrZXJBYnNvbHV0ZSkmJihfPXdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCsiLy8iK3dpbmRvdy5sb2NhdGlvbi5ob3N0K3dpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSt3aW5kb3cubG9jYXRpb24uc2VhcmNoLF89Xy5yZXBsYWNlKC9cKC9nLCJcXCgiKSxfPV8ucmVwbGFjZSgvXCkvZywiXFwpIikpLEguaW5mbygiYXJyb3dUeXBlU3RhcnQiLHIuYXJyb3dUeXBlU3RhcnQpLEguaW5mbygiYXJyb3dUeXBlRW5kIixyLmFycm93VHlwZUVuZCksci5hcnJvd1R5cGVTdGFydCl7Y2FzZSJhcnJvd19jcm9zcyI6bS5hdHRyKCJtYXJrZXItc3RhcnQiLCJ1cmwoIitfKyIjIitpKyItY3Jvc3NTdGFydCkiKTticmVhaztjYXNlImFycm93X3BvaW50IjptLmF0dHIoIm1hcmtlci1zdGFydCIsInVybCgiK18rIiMiK2krIi1wb2ludFN0YXJ0KSIpO2JyZWFrO2Nhc2UiYXJyb3dfYmFyYiI6bS5hdHRyKCJtYXJrZXItc3RhcnQiLCJ1cmwoIitfKyIjIitpKyItYmFyYlN0YXJ0KSIpO2JyZWFrO2Nhc2UiYXJyb3dfY2lyY2xlIjptLmF0dHIoIm1hcmtlci1zdGFydCIsInVybCgiK18rIiMiK2krIi1jaXJjbGVTdGFydCkiKTticmVhaztjYXNlImFnZ3JlZ2F0aW9uIjptLmF0dHIoIm1hcmtlci1zdGFydCIsInVybCgiK18rIiMiK2krIi1hZ2dyZWdhdGlvblN0YXJ0KSIpO2JyZWFrO2Nhc2UiZXh0ZW5zaW9uIjptLmF0dHIoIm1hcmtlci1zdGFydCIsInVybCgiK18rIiMiK2krIi1leHRlbnNpb25TdGFydCkiKTticmVhaztjYXNlImNvbXBvc2l0aW9uIjptLmF0dHIoIm1hcmtlci1zdGFydCIsInVybCgiK18rIiMiK2krIi1jb21wb3NpdGlvblN0YXJ0KSIpO2JyZWFrO2Nhc2UiZGVwZW5kZW5jeSI6bS5hdHRyKCJtYXJrZXItc3RhcnQiLCJ1cmwoIitfKyIjIitpKyItZGVwZW5kZW5jeVN0YXJ0KSIpO2JyZWFrO2Nhc2UibG9sbGlwb3AiOm0uYXR0cigibWFya2VyLXN0YXJ0IiwidXJsKCIrXysiIyIraSsiLWxvbGxpcG9wU3RhcnQpIik7YnJlYWt9c3dpdGNoKHIuYXJyb3dUeXBlRW5kKXtjYXNlImFycm93X2Nyb3NzIjptLmF0dHIoIm1hcmtlci1lbmQiLCJ1cmwoIitfKyIjIitpKyItY3Jvc3NFbmQpIik7YnJlYWs7Y2FzZSJhcnJvd19wb2ludCI6bS5hdHRyKCJtYXJrZXItZW5kIiwidXJsKCIrXysiIyIraSsiLXBvaW50RW5kKSIpO2JyZWFrO2Nhc2UiYXJyb3dfYmFyYiI6bS5hdHRyKCJtYXJrZXItZW5kIiwidXJsKCIrXysiIyIraSsiLWJhcmJFbmQpIik7YnJlYWs7Y2FzZSJhcnJvd19jaXJjbGUiOm0uYXR0cigibWFya2VyLWVuZCIsInVybCgiK18rIiMiK2krIi1jaXJjbGVFbmQpIik7YnJlYWs7Y2FzZSJhZ2dyZWdhdGlvbiI6bS5hdHRyKCJtYXJrZXItZW5kIiwidXJsKCIrXysiIyIraSsiLWFnZ3JlZ2F0aW9uRW5kKSIpO2JyZWFrO2Nhc2UiZXh0ZW5zaW9uIjptLmF0dHIoIm1hcmtlci1lbmQiLCJ1cmwoIitfKyIjIitpKyItZXh0ZW5zaW9uRW5kKSIpO2JyZWFrO2Nhc2UiY29tcG9zaXRpb24iOm0uYXR0cigibWFya2VyLWVuZCIsInVybCgiK18rIiMiK2krIi1jb21wb3NpdGlvbkVuZCkiKTticmVhaztjYXNlImRlcGVuZGVuY3kiOm0uYXR0cigibWFya2VyLWVuZCIsInVybCgiK18rIiMiK2krIi1kZXBlbmRlbmN5RW5kKSIpO2JyZWFrO2Nhc2UibG9sbGlwb3AiOm0uYXR0cigibWFya2VyLWVuZCIsInVybCgiK18rIiMiK2krIi1sb2xsaXBvcEVuZCkiKTticmVha31sZXQgeT17fTtyZXR1cm4gbyYmKHkudXBkYXRlZFBhdGg9cykseS5vcmlnaW5hbFBhdGg9ci5wb2ludHMseX0sSkE9KHQsZSxyLG4pPT57SC5pbmZvKCJHcmFwaCBpbiByZWN1cnNpdmUgcmVuZGVyOiBYWFgiLGNyLmpzb24ud3JpdGUoZSksbik7Y29uc3QgaT1lLmdyYXBoKCkucmFua2RpcjtILnRyYWNlKCJEaXIgaW4gcmVjdXJzaXZlIHJlbmRlciAtIGRpcjoiLGkpO2NvbnN0IGE9dC5pbnNlcnQoImciKS5hdHRyKCJjbGFzcyIsInJvb3QiKTtlLm5vZGVzKCk/SC5pbmZvKCJSZWN1cnNpdmUgcmVuZGVyIFhYWCIsZS5ub2RlcygpKTpILmluZm8oIk5vIG5vZGVzIGZvdW5kIGZvciIsZSksZS5lZGdlcygpLmxlbmd0aD4wJiZILnRyYWNlKCJSZWN1cnNpdmUgZWRnZXMiLGUuZWRnZShlLmVkZ2VzKClbMF0pKTtjb25zdCBzPWEuaW5zZXJ0KCJnIikuYXR0cigiY2xhc3MiLCJjbHVzdGVycyIpLG89YS5pbnNlcnQoImciKS5hdHRyKCJjbGFzcyIsImVkZ2VQYXRocyIpLGw9YS5pbnNlcnQoImciKS5hdHRyKCJjbGFzcyIsImVkZ2VMYWJlbHMiKSx1PWEuaW5zZXJ0KCJnIikuYXR0cigiY2xhc3MiLCJub2RlcyIpO2Uubm9kZXMoKS5mb3JFYWNoKGZ1bmN0aW9uKGQpe2NvbnN0IGY9ZS5ub2RlKGQpO2lmKHR5cGVvZiBuPCJ1Iil7Y29uc3QgcD1KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG4uY2x1c3RlckRhdGEpKTtILmluZm8oIlNldHRpbmcgZGF0YSBmb3IgY2x1c3RlciBYWFggKCIsZCwiKSAiLHAsbiksZS5zZXROb2RlKG4uaWQscCksZS5wYXJlbnQoZCl8fChILnRyYWNlKCJTZXR0aW5nIHBhcmVudCIsZCxuLmlkKSxlLnNldFBhcmVudChkLG4uaWQscCkpfWlmKEguaW5mbygiKEluc2VydCkgTm9kZSBYWFgiK2QrIjogIitKU09OLnN0cmluZ2lmeShlLm5vZGUoZCkpKSxmJiZmLmNsdXN0ZXJOb2RlKXtILmluZm8oIkNsdXN0ZXIgaWRlbnRpZmllZCIsZCxmLndpZHRoLGUubm9kZShkKSk7Y29uc3QgcD1KQSh1LGYuZ3JhcGgscixlLm5vZGUoZCkpLG09cC5lbGVtO3VyKGYsbSksZi5kaWZmPXAuZGlmZnx8MCxILmluZm8oIk5vZGUgYm91bmRzIChhYmMxMjMpIixkLGYsZi53aWR0aCxmLngsZi55KSxfZXQobSxmKSxILndhcm4oIlJlY3Vyc2l2ZSByZW5kZXIgY29tcGxldGUgIixtLGYpfWVsc2UgZS5jaGlsZHJlbihkKS5sZW5ndGg+MD8oSC5pbmZvKCJDbHVzdGVyIC0gdGhlIG5vbiByZWN1cnNpdmUgcGF0aCBYWFgiLGQsZi5pZCxmLGUpLEguaW5mbyhRYyhmLmlkLGUpKSxSZVtmLmlkXT17aWQ6UWMoZi5pZCxlKSxub2RlOmZ9KTooSC5pbmZvKCJOb2RlIC0gdGhlIG5vbiByZWN1cnNpdmUgcGF0aCIsZCxmLmlkLGYpLGJldCh1LGUubm9kZShkKSxpKSl9KSxlLmVkZ2VzKCkuZm9yRWFjaChmdW5jdGlvbihkKXtjb25zdCBmPWUuZWRnZShkLnYsZC53LGQubmFtZSk7SC5pbmZvKCJFZGdlICIrZC52KyIgLT4gIitkLncrIjogIitKU09OLnN0cmluZ2lmeShkKSksSC5pbmZvKCJFZGdlICIrZC52KyIgLT4gIitkLncrIjogIixkLCIgIixKU09OLnN0cmluZ2lmeShlLmVkZ2UoZCkpKSxILmluZm8oIkZpeCIsUmUsImlkczoiLGQudixkLncsIlRyYW5zbGF0ZWluZzogIixSZVtkLnZdLFJlW2Qud10pLEVldChsLGYpfSksZS5lZGdlcygpLmZvckVhY2goZnVuY3Rpb24oZCl7SC5pbmZvKCJFZGdlICIrZC52KyIgLT4gIitkLncrIjogIitKU09OLnN0cmluZ2lmeShkKSl9KSxILmluZm8oIiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyIpLEguaW5mbygiIyMjICAgICAgICAgICAgICAgIExheW91dCAgICAgICAgICAgICAgICAgIyMjIiksSC5pbmZvKCIjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMiKSxILmluZm8oZSksWmMubGF5b3V0KGUpLEguaW5mbygiR3JhcGggYWZ0ZXIgbGF5b3V0OiIsY3IuanNvbi53cml0ZShlKSk7bGV0IGg9MDtyZXR1cm4ganR0KGUpLmZvckVhY2goZnVuY3Rpb24oZCl7Y29uc3QgZj1lLm5vZGUoZCk7SC5pbmZvKCJQb3NpdGlvbiAiK2QrIjogIitKU09OLnN0cmluZ2lmeShlLm5vZGUoZCkpKSxILmluZm8oIlBvc2l0aW9uICIrZCsiOiAoIitmLngsIiwiK2YueSwiKSB3aWR0aDogIixmLndpZHRoLCIgaGVpZ2h0OiAiLGYuaGVpZ2h0KSxmJiZmLmNsdXN0ZXJOb2RlP0tBKGYpOmUuY2hpbGRyZW4oZCkubGVuZ3RoPjA/KGtldChzLGYpLFJlW2YuaWRdLm5vZGU9Zik6S0EoZil9KSxlLmVkZ2VzKCkuZm9yRWFjaChmdW5jdGlvbihkKXtjb25zdCBmPWUuZWRnZShkKTtILmluZm8oIkVkZ2UgIitkLnYrIiAtPiAiK2QudysiOiAiK0pTT04uc3RyaW5naWZ5KGYpLGYpO2NvbnN0IHA9TGV0KG8sZCxmLFJlLHIsZSk7Q2V0KGYscCl9KSxlLm5vZGVzKCkuZm9yRWFjaChmdW5jdGlvbihkKXtjb25zdCBmPWUubm9kZShkKTtILmluZm8oZCxmLnR5cGUsZi5kaWZmKSxmLnR5cGU9PT0iZ3JvdXAiJiYoaD1mLmRpZmYpfSkse2VsZW06YSxkaWZmOmh9fSxpND0odCxlLHIsbixpKT0+e1Z0dCh0LHIsbixpKSx2ZXQoKSxUZXQoKSx3ZXQoKSxXdHQoKSxILndhcm4oIkdyYXBoIGF0IGZpcnN0OiIsY3IuanNvbi53cml0ZShlKSksR3R0KGUpLEgud2FybigiR3JhcGggYWZ0ZXI6Iixjci5qc29uLndyaXRlKGUpKSxKQSh0LGUsbil9LFJldD10PT5wZS5zYW5pdGl6ZVRleHQodCxudCgpKSxJZXQ9ZnVuY3Rpb24odCxlLHIsbil7Y29uc3QgaT1PYmplY3Qua2V5cyh0KTtILmluZm8oImtleXM6IixpKSxILmluZm8odCksaS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2NvbnN0IHM9dFthXTtsZXQgbz0iIjtzLmNzc0NsYXNzZXMubGVuZ3RoPjAmJihvPW8rIiAiK3MuY3NzQ2xhc3Nlcy5qb2luKCIgIikpO2NvbnN0IGw9e2xhYmVsU3R5bGU6IiJ9O2xldCB1PXMudGV4dCE9PXZvaWQgMD9zLnRleHQ6cy5pZCxoPTAsZD0iIjtzd2l0Y2gocy50eXBlKXtjYXNlImNsYXNzIjpkPSJjbGFzc19ib3giO2JyZWFrO2RlZmF1bHQ6ZD0iY2xhc3NfYm94In1lLnNldE5vZGUocy5pZCx7bGFiZWxTdHlsZTpsLmxhYmVsU3R5bGUsc2hhcGU6ZCxsYWJlbFRleHQ6UmV0KHUpLGNsYXNzRGF0YTpzLHJ4Omgscnk6aCxjbGFzczpvLHN0eWxlOmwuc3R5bGUsaWQ6cy5pZCxkb21JZDpzLmRvbUlkLHRvb2x0aXA6bi5kYi5nZXRUb29sdGlwKHMuaWQpfHwiIixoYXZlQ2FsbGJhY2s6cy5oYXZlQ2FsbGJhY2ssbGluazpzLmxpbmssd2lkdGg6cy50eXBlPT09Imdyb3VwIj81MDA6dm9pZCAwLHR5cGU6cy50eXBlLHBhZGRpbmc6bnQoKS5mbG93Y2hhcnQucGFkZGluZ30pLEguaW5mbygic2V0Tm9kZSIse2xhYmVsU3R5bGU6bC5sYWJlbFN0eWxlLHNoYXBlOmQsbGFiZWxUZXh0OnUscng6aCxyeTpoLGNsYXNzOm8sc3R5bGU6bC5zdHlsZSxpZDpzLmlkLHdpZHRoOnMudHlwZT09PSJncm91cCI/NTAwOnZvaWQgMCx0eXBlOnMudHlwZSxwYWRkaW5nOm50KCkuZmxvd2NoYXJ0LnBhZGRpbmd9KX0pfSxOZXQ9ZnVuY3Rpb24odCxlKXtjb25zdCByPW50KCkuZmxvd2NoYXJ0O2xldCBuPTA7dC5mb3JFYWNoKGZ1bmN0aW9uKGkpe24rKztjb25zdCBhPXt9O2EuY2xhc3Nlcz0icmVsYXRpb24iLGEucGF0dGVybj1pLnJlbGF0aW9uLmxpbmVUeXBlPT0xPyJkYXNoZWQiOiJzb2xpZCIsYS5pZD0iaWQiK24saS50eXBlPT09ImFycm93X29wZW4iP2EuYXJyb3doZWFkPSJub25lIjphLmFycm93aGVhZD0ibm9ybWFsIixILmluZm8oYSxpKSxhLnN0YXJ0TGFiZWxSaWdodD1pLnJlbGF0aW9uVGl0bGUxPT09Im5vbmUiPyIiOmkucmVsYXRpb25UaXRsZTEsYS5lbmRMYWJlbExlZnQ9aS5yZWxhdGlvblRpdGxlMj09PSJub25lIj8iIjppLnJlbGF0aW9uVGl0bGUyLGEuYXJyb3dUeXBlU3RhcnQ9dE0oaS5yZWxhdGlvbi50eXBlMSksYS5hcnJvd1R5cGVFbmQ9dE0oaS5yZWxhdGlvbi50eXBlMik7bGV0IHM9IiIsbz0iIjtpZih0eXBlb2YgaS5zdHlsZTwidSIpe2NvbnN0IGw9S2EoaS5zdHlsZSk7cz1sLnN0eWxlLG89bC5sYWJlbFN0eWxlfWVsc2Ugcz0iZmlsbDpub25lIjthLnN0eWxlPXMsYS5sYWJlbFN0eWxlPW8sdHlwZW9mIGkuaW50ZXJwb2xhdGU8InUiP2EuY3VydmU9TmkoaS5pbnRlcnBvbGF0ZSx5bik6dHlwZW9mIHQuZGVmYXVsdEludGVycG9sYXRlPCJ1Ij9hLmN1cnZlPU5pKHQuZGVmYXVsdEludGVycG9sYXRlLHluKTphLmN1cnZlPU5pKHIuY3VydmUseW4pLGkudGV4dD1pLnRpdGxlLHR5cGVvZiBpLnRleHQ+InUiP3R5cGVvZiBpLnN0eWxlPCJ1IiYmKGEuYXJyb3doZWFkU3R5bGU9ImZpbGw6ICMzMzMiKTooYS5hcnJvd2hlYWRTdHlsZT0iZmlsbDogIzMzMyIsYS5sYWJlbHBvcz0iYyIsbnQoKS5mbG93Y2hhcnQuaHRtbExhYmVscz8oYS5sYWJlbFR5cGU9Imh0bWwiLGEubGFiZWw9JzxzcGFuIGNsYXNzPSJlZGdlTGFiZWwiPicraS50ZXh0KyI8L3NwYW4+Iik6KGEubGFiZWxUeXBlPSJ0ZXh0IixhLmxhYmVsPWkudGV4dC5yZXBsYWNlKHBlLmxpbmVCcmVha1JlZ2V4LGAKYCksdHlwZW9mIGkuc3R5bGU+InUiJiYoYS5zdHlsZT1hLnN0eWxlfHwic3Ryb2tlOiAjMzMzOyBzdHJva2Utd2lkdGg6IDEuNXB4O2ZpbGw6bm9uZSIpLGEubGFiZWxTdHlsZT1hLmxhYmVsU3R5bGUucmVwbGFjZSgiY29sb3I6IiwiZmlsbDoiKSkpLGUuc2V0RWRnZShpLmlkMSxpLmlkMixhLG4pfSl9LEJldD1mdW5jdGlvbih0KXtPYmplY3Qua2V5cyh0KS5mb3JFYWNoKGZ1bmN0aW9uKHIpe3Rbcl19KX0sRGV0PWZ1bmN0aW9uKHQsZSxyLG4pe0guaW5mbygiRHJhd2luZyBjbGFzcyAtICIsZSk7Y29uc3QgaT1udCgpLmZsb3djaGFydCxhPW50KCkuc2VjdXJpdHlMZXZlbDtILmluZm8oImNvbmZpZzoiLGkpO2NvbnN0IHM9aS5ub2RlU3BhY2luZ3x8NTAsbz1pLnJhbmtTcGFjaW5nfHw1MCxsPW5ldyBjci5HcmFwaCh7bXVsdGlncmFwaDohMCxjb21wb3VuZDohMH0pLnNldEdyYXBoKHtyYW5rZGlyOm4uZGIuZ2V0RGlyZWN0aW9uKCksbm9kZXNlcDpzLHJhbmtzZXA6byxtYXJnaW54OjgsbWFyZ2lueTo4fSkuc2V0RGVmYXVsdEVkZ2VMYWJlbChmdW5jdGlvbigpe3JldHVybnt9fSksdT1uLmRiLmdldENsYXNzZXMoKSxoPW4uZGIuZ2V0UmVsYXRpb25zKCk7SC5pbmZvKGgpLElldCh1LGwsZSxuKSxOZXQoaCxsKTtsZXQgZDthPT09InNhbmRib3giJiYoZD1TdCgiI2kiK2UpKTtjb25zdCBmPVN0KGE9PT0ic2FuZGJveCI/ZC5ub2RlcygpWzBdLmNvbnRlbnREb2N1bWVudC5ib2R5OiJib2R5IikscD1mLnNlbGVjdChgW2lkPSIke2V9Il1gKSxtPWYuc2VsZWN0KCIjIitlKyIgZyIpO2lmKGk0KG0sbCxbImFnZ3JlZ2F0aW9uIiwiZXh0ZW5zaW9uIiwiY29tcG9zaXRpb24iLCJkZXBlbmRlbmN5IiwibG9sbGlwb3AiXSwiY2xhc3NEaWFncmFtIixlKSxpMShsLHAsaS5kaWFncmFtUGFkZGluZyxpLnVzZU1heFdpZHRoKSwhaS5odG1sTGFiZWxzKXtjb25zdCBfPWE9PT0ic2FuZGJveCI/ZC5ub2RlcygpWzBdLmNvbnRlbnREb2N1bWVudDpkb2N1bWVudCx5PV8ucXVlcnlTZWxlY3RvckFsbCgnW2lkPSInK2UrJyJdIC5lZGdlTGFiZWwgLmxhYmVsJyk7Zm9yKGxldCBiPTA7Yjx5Lmxlbmd0aDtiKyspe2NvbnN0IHg9eVtiXSxrPXguZ2V0QkJveCgpLFQ9Xy5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwicmVjdCIpO1Quc2V0QXR0cmlidXRlKCJyeCIsMCksVC5zZXRBdHRyaWJ1dGUoInJ5IiwwKSxULnNldEF0dHJpYnV0ZSgid2lkdGgiLGsud2lkdGgpLFQuc2V0QXR0cmlidXRlKCJoZWlnaHQiLGsuaGVpZ2h0KSx4Lmluc2VydEJlZm9yZShULHguZmlyc3RDaGlsZCl9fWJuKG4uZGIscCxlKX07ZnVuY3Rpb24gdE0odCl7bGV0IGU7c3dpdGNoKHQpe2Nhc2UgMDplPSJhZ2dyZWdhdGlvbiI7YnJlYWs7Y2FzZSAxOmU9ImV4dGVuc2lvbiI7YnJlYWs7Y2FzZSAyOmU9ImNvbXBvc2l0aW9uIjticmVhaztjYXNlIDM6ZT0iZGVwZW5kZW5jeSI7YnJlYWs7Y2FzZSA0OmU9ImxvbGxpcG9wIjticmVhaztkZWZhdWx0OmU9Im5vbmUifXJldHVybiBlfWNvbnN0IE9ldD17c2V0Q29uZjpCZXQsZHJhdzpEZXR9O3ZhciBhND1mdW5jdGlvbigpe3ZhciB0PWZ1bmN0aW9uKEEsTCx2LEIpe2Zvcih2PXZ8fHt9LEI9QS5sZW5ndGg7Qi0tO3ZbQVtCXV09TCk7cmV0dXJuIHZ9LGU9WzEsMl0scj1bMSw1XSxuPVs2LDksMTEsMjMsMjUsMjcsMjksMzAsMzEsNDldLGk9WzEsMTddLGE9WzEsMThdLHM9WzEsMTldLG89WzEsMjBdLGw9WzEsMjFdLHU9WzEsMjJdLGg9WzEsMjVdLGQ9WzEsMzBdLGY9WzEsMzFdLHA9WzEsMzJdLG09WzEsMzNdLF89WzYsOSwxMSwxNSwyMCwyMywyNSwyNywyOSwzMCwzMSw0Miw0Myw0NCw0NSw0OV0seT1bMSw0NV0sYj1bMzAsMzEsNDYsNDddLHg9WzQsNiw5LDExLDIzLDI1LDI3LDI5LDMwLDMxLDQ5XSxrPVs0Miw0Myw0NCw0NV0sVD1bMjIsMzddLEM9WzEsNjRdLE09e3RyYWNlOmZ1bmN0aW9uKCl7fSx5eTp7fSxzeW1ib2xzXzp7ZXJyb3I6MixzdGFydDozLEVSX0RJQUdSQU06NCxkb2N1bWVudDo1LEVPRjo2LGRpcmVjdGl2ZTo3LGxpbmU6OCxTUEFDRTo5LHN0YXRlbWVudDoxMCxORVdMSU5FOjExLG9wZW5EaXJlY3RpdmU6MTIsdHlwZURpcmVjdGl2ZToxMyxjbG9zZURpcmVjdGl2ZToxNCwiOiI6MTUsYXJnRGlyZWN0aXZlOjE2LGVudGl0eU5hbWU6MTcscmVsU3BlYzoxOCxyb2xlOjE5LEJMT0NLX1NUQVJUOjIwLGF0dHJpYnV0ZXM6MjEsQkxPQ0tfU1RPUDoyMix0aXRsZToyMyx0aXRsZV92YWx1ZToyNCxhY2NfdGl0bGU6MjUsYWNjX3RpdGxlX3ZhbHVlOjI2LGFjY19kZXNjcjoyNyxhY2NfZGVzY3JfdmFsdWU6MjgsYWNjX2Rlc2NyX211bHRpbGluZV92YWx1ZToyOSxBTFBIQU5VTTozMCxFTlRJVFlfTkFNRTozMSxhdHRyaWJ1dGU6MzIsYXR0cmlidXRlVHlwZTozMyxhdHRyaWJ1dGVOYW1lOjM0LGF0dHJpYnV0ZUtleVR5cGU6MzUsYXR0cmlidXRlQ29tbWVudDozNixBVFRSSUJVVEVfV09SRDozNyxBVFRSSUJVVEVfS0VZOjM4LENPTU1FTlQ6MzksY2FyZGluYWxpdHk6NDAscmVsVHlwZTo0MSxaRVJPX09SX09ORTo0MixaRVJPX09SX01PUkU6NDMsT05FX09SX01PUkU6NDQsT05MWV9PTkU6NDUsTk9OX0lERU5USUZZSU5HOjQ2LElERU5USUZZSU5HOjQ3LFdPUkQ6NDgsb3Blbl9kaXJlY3RpdmU6NDksdHlwZV9kaXJlY3RpdmU6NTAsYXJnX2RpcmVjdGl2ZTo1MSxjbG9zZV9kaXJlY3RpdmU6NTIsJGFjY2VwdDowLCRlbmQ6MX0sdGVybWluYWxzXzp7MjoiZXJyb3IiLDQ6IkVSX0RJQUdSQU0iLDY6IkVPRiIsOToiU1BBQ0UiLDExOiJORVdMSU5FIiwxNToiOiIsMjA6IkJMT0NLX1NUQVJUIiwyMjoiQkxPQ0tfU1RPUCIsMjM6InRpdGxlIiwyNDoidGl0bGVfdmFsdWUiLDI1OiJhY2NfdGl0bGUiLDI2OiJhY2NfdGl0bGVfdmFsdWUiLDI3OiJhY2NfZGVzY3IiLDI4OiJhY2NfZGVzY3JfdmFsdWUiLDI5OiJhY2NfZGVzY3JfbXVsdGlsaW5lX3ZhbHVlIiwzMDoiQUxQSEFOVU0iLDMxOiJFTlRJVFlfTkFNRSIsMzc6IkFUVFJJQlVURV9XT1JEIiwzODoiQVRUUklCVVRFX0tFWSIsMzk6IkNPTU1FTlQiLDQyOiJaRVJPX09SX09ORSIsNDM6IlpFUk9fT1JfTU9SRSIsNDQ6Ik9ORV9PUl9NT1JFIiw0NToiT05MWV9PTkUiLDQ2OiJOT05fSURFTlRJRllJTkciLDQ3OiJJREVOVElGWUlORyIsNDg6IldPUkQiLDQ5OiJvcGVuX2RpcmVjdGl2ZSIsNTA6InR5cGVfZGlyZWN0aXZlIiw1MToiYXJnX2RpcmVjdGl2ZSIsNTI6ImNsb3NlX2RpcmVjdGl2ZSJ9LHByb2R1Y3Rpb25zXzpbMCxbMywzXSxbMywyXSxbNSwwXSxbNSwyXSxbOCwyXSxbOCwxXSxbOCwxXSxbOCwxXSxbNyw0XSxbNyw2XSxbMTAsMV0sWzEwLDVdLFsxMCw0XSxbMTAsM10sWzEwLDFdLFsxMCwyXSxbMTAsMl0sWzEwLDJdLFsxMCwxXSxbMTcsMV0sWzE3LDFdLFsyMSwxXSxbMjEsMl0sWzMyLDJdLFszMiwzXSxbMzIsM10sWzMyLDRdLFszMywxXSxbMzQsMV0sWzM1LDFdLFszNiwxXSxbMTgsM10sWzQwLDFdLFs0MCwxXSxbNDAsMV0sWzQwLDFdLFs0MSwxXSxbNDEsMV0sWzE5LDFdLFsxOSwxXSxbMTksMV0sWzEyLDFdLFsxMywxXSxbMTYsMV0sWzE0LDFdXSxwZXJmb3JtQWN0aW9uOmZ1bmN0aW9uKEwsdixCLHcsRCxOLHope3ZhciBYPU4ubGVuZ3RoLTE7c3dpdGNoKEQpe2Nhc2UgMTpicmVhaztjYXNlIDM6dGhpcy4kPVtdO2JyZWFrO2Nhc2UgNDpOW1gtMV0ucHVzaChOW1hdKSx0aGlzLiQ9TltYLTFdO2JyZWFrO2Nhc2UgNTpjYXNlIDY6dGhpcy4kPU5bWF07YnJlYWs7Y2FzZSA3OmNhc2UgODp0aGlzLiQ9W107YnJlYWs7Y2FzZSAxMjp3LmFkZEVudGl0eShOW1gtNF0pLHcuYWRkRW50aXR5KE5bWC0yXSksdy5hZGRSZWxhdGlvbnNoaXAoTltYLTRdLE5bWF0sTltYLTJdLE5bWC0zXSk7YnJlYWs7Y2FzZSAxMzp3LmFkZEVudGl0eShOW1gtM10pLHcuYWRkQXR0cmlidXRlcyhOW1gtM10sTltYLTFdKTticmVhaztjYXNlIDE0OncuYWRkRW50aXR5KE5bWC0yXSk7YnJlYWs7Y2FzZSAxNTp3LmFkZEVudGl0eShOW1hdKTticmVhaztjYXNlIDE2OmNhc2UgMTc6dGhpcy4kPU5bWF0udHJpbSgpLHcuc2V0QWNjVGl0bGUodGhpcy4kKTticmVhaztjYXNlIDE4OmNhc2UgMTk6dGhpcy4kPU5bWF0udHJpbSgpLHcuc2V0QWNjRGVzY3JpcHRpb24odGhpcy4kKTticmVhaztjYXNlIDIwOmNhc2UgNDE6dGhpcy4kPU5bWF07YnJlYWs7Y2FzZSAyMTpjYXNlIDM5OmNhc2UgNDA6dGhpcy4kPU5bWF0ucmVwbGFjZSgvIi9nLCIiKTticmVhaztjYXNlIDIyOnRoaXMuJD1bTltYXV07YnJlYWs7Y2FzZSAyMzpOW1hdLnB1c2goTltYLTFdKSx0aGlzLiQ9TltYXTticmVhaztjYXNlIDI0OnRoaXMuJD17YXR0cmlidXRlVHlwZTpOW1gtMV0sYXR0cmlidXRlTmFtZTpOW1hdfTticmVhaztjYXNlIDI1OnRoaXMuJD17YXR0cmlidXRlVHlwZTpOW1gtMl0sYXR0cmlidXRlTmFtZTpOW1gtMV0sYXR0cmlidXRlS2V5VHlwZTpOW1hdfTticmVhaztjYXNlIDI2OnRoaXMuJD17YXR0cmlidXRlVHlwZTpOW1gtMl0sYXR0cmlidXRlTmFtZTpOW1gtMV0sYXR0cmlidXRlQ29tbWVudDpOW1hdfTticmVhaztjYXNlIDI3OnRoaXMuJD17YXR0cmlidXRlVHlwZTpOW1gtM10sYXR0cmlidXRlTmFtZTpOW1gtMl0sYXR0cmlidXRlS2V5VHlwZTpOW1gtMV0sYXR0cmlidXRlQ29tbWVudDpOW1hdfTticmVhaztjYXNlIDI4OmNhc2UgMjk6Y2FzZSAzMDp0aGlzLiQ9TltYXTticmVhaztjYXNlIDMxOnRoaXMuJD1OW1hdLnJlcGxhY2UoLyIvZywiIik7YnJlYWs7Y2FzZSAzMjp0aGlzLiQ9e2NhcmRBOk5bWF0scmVsVHlwZTpOW1gtMV0sY2FyZEI6TltYLTJdfTticmVhaztjYXNlIDMzOnRoaXMuJD13LkNhcmRpbmFsaXR5LlpFUk9fT1JfT05FO2JyZWFrO2Nhc2UgMzQ6dGhpcy4kPXcuQ2FyZGluYWxpdHkuWkVST19PUl9NT1JFO2JyZWFrO2Nhc2UgMzU6dGhpcy4kPXcuQ2FyZGluYWxpdHkuT05FX09SX01PUkU7YnJlYWs7Y2FzZSAzNjp0aGlzLiQ9dy5DYXJkaW5hbGl0eS5PTkxZX09ORTticmVhaztjYXNlIDM3OnRoaXMuJD13LklkZW50aWZpY2F0aW9uLk5PTl9JREVOVElGWUlORzticmVhaztjYXNlIDM4OnRoaXMuJD13LklkZW50aWZpY2F0aW9uLklERU5USUZZSU5HO2JyZWFrO2Nhc2UgNDI6dy5wYXJzZURpcmVjdGl2ZSgiJSV7Iiwib3Blbl9kaXJlY3RpdmUiKTticmVhaztjYXNlIDQzOncucGFyc2VEaXJlY3RpdmUoTltYXSwidHlwZV9kaXJlY3RpdmUiKTticmVhaztjYXNlIDQ0Ok5bWF09TltYXS50cmltKCkucmVwbGFjZSgvJy9nLCciJyksdy5wYXJzZURpcmVjdGl2ZShOW1hdLCJhcmdfZGlyZWN0aXZlIik7YnJlYWs7Y2FzZSA0NTp3LnBhcnNlRGlyZWN0aXZlKCJ9JSUiLCJjbG9zZV9kaXJlY3RpdmUiLCJlciIpO2JyZWFrfX0sdGFibGU6W3szOjEsNDplLDc6MywxMjo0LDQ5OnJ9LHsxOlszXX0sdChuLFsyLDNdLHs1OjZ9KSx7Mzo3LDQ6ZSw3OjMsMTI6NCw0OTpyfSx7MTM6OCw1MDpbMSw5XX0sezUwOlsyLDQyXX0sezY6WzEsMTBdLDc6MTUsODoxMSw5OlsxLDEyXSwxMDoxMywxMTpbMSwxNF0sMTI6NCwxNzoxNiwyMzppLDI1OmEsMjc6cywyOTpvLDMwOmwsMzE6dSw0OTpyfSx7MTpbMiwyXX0sezE0OjIzLDE1OlsxLDI0XSw1MjpofSx0KFsxNSw1Ml0sWzIsNDNdKSx0KG4sWzIsOF0sezE6WzIsMV19KSx0KG4sWzIsNF0pLHs3OjE1LDEwOjI2LDEyOjQsMTc6MTYsMjM6aSwyNTphLDI3OnMsMjk6bywzMDpsLDMxOnUsNDk6cn0sdChuLFsyLDZdKSx0KG4sWzIsN10pLHQobixbMiwxMV0pLHQobixbMiwxNV0sezE4OjI3LDQwOjI5LDIwOlsxLDI4XSw0MjpkLDQzOmYsNDQ6cCw0NTptfSksezI0OlsxLDM0XX0sezI2OlsxLDM1XX0sezI4OlsxLDM2XX0sdChuLFsyLDE5XSksdChfLFsyLDIwXSksdChfLFsyLDIxXSksezExOlsxLDM3XX0sezE2OjM4LDUxOlsxLDM5XX0sezExOlsyLDQ1XX0sdChuLFsyLDVdKSx7MTc6NDAsMzA6bCwzMTp1fSx7MjE6NDEsMjI6WzEsNDJdLDMyOjQzLDMzOjQ0LDM3Onl9LHs0MTo0Niw0NjpbMSw0N10sNDc6WzEsNDhdfSx0KGIsWzIsMzNdKSx0KGIsWzIsMzRdKSx0KGIsWzIsMzVdKSx0KGIsWzIsMzZdKSx0KG4sWzIsMTZdKSx0KG4sWzIsMTddKSx0KG4sWzIsMThdKSx0KHgsWzIsOV0pLHsxNDo0OSw1MjpofSx7NTI6WzIsNDRdfSx7MTU6WzEsNTBdfSx7MjI6WzEsNTFdfSx0KG4sWzIsMTRdKSx7MjE6NTIsMjI6WzIsMjJdLDMyOjQzLDMzOjQ0LDM3Onl9LHszNDo1MywzNzpbMSw1NF19LHszNzpbMiwyOF19LHs0MDo1NSw0MjpkLDQzOmYsNDQ6cCw0NTptfSx0KGssWzIsMzddKSx0KGssWzIsMzhdKSx7MTE6WzEsNTZdfSx7MTk6NTcsMzA6WzEsNjBdLDMxOlsxLDU5XSw0ODpbMSw1OF19LHQobixbMiwxM10pLHsyMjpbMiwyM119LHQoVCxbMiwyNF0sezM1OjYxLDM2OjYyLDM4OlsxLDYzXSwzOTpDfSksdChbMjIsMzcsMzgsMzldLFsyLDI5XSksdChbMzAsMzFdLFsyLDMyXSksdCh4LFsyLDEwXSksdChuLFsyLDEyXSksdChuLFsyLDM5XSksdChuLFsyLDQwXSksdChuLFsyLDQxXSksdChULFsyLDI1XSx7MzY6NjUsMzk6Q30pLHQoVCxbMiwyNl0pLHQoWzIyLDM3LDM5XSxbMiwzMF0pLHQoVCxbMiwzMV0pLHQoVCxbMiwyN10pXSxkZWZhdWx0QWN0aW9uczp7NTpbMiw0Ml0sNzpbMiwyXSwyNTpbMiw0NV0sMzk6WzIsNDRdLDQ1OlsyLDI4XSw1MjpbMiwyM119LHBhcnNlRXJyb3I6ZnVuY3Rpb24oTCx2KXtpZih2LnJlY292ZXJhYmxlKXRoaXMudHJhY2UoTCk7ZWxzZXt2YXIgQj1uZXcgRXJyb3IoTCk7dGhyb3cgQi5oYXNoPXYsQn19LHBhcnNlOmZ1bmN0aW9uKEwpe3ZhciB2PXRoaXMsQj1bMF0sdz1bXSxEPVtudWxsXSxOPVtdLHo9dGhpcy50YWJsZSxYPSIiLGN0PTAsSj0wLFk9MiwkPTEsbHQ9Ti5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSx1dD1PYmplY3QuY3JlYXRlKHRoaXMubGV4ZXIpLFc9e3l5Ont9fTtmb3IodmFyIHR0IGluIHRoaXMueXkpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMueXksdHQpJiYoVy55eVt0dF09dGhpcy55eVt0dF0pO3V0LnNldElucHV0KEwsVy55eSksVy55eS5sZXhlcj11dCxXLnl5LnBhcnNlcj10aGlzLHR5cGVvZiB1dC55eWxsb2M+InUiJiYodXQueXlsbG9jPXt9KTt2YXIgSz11dC55eWxsb2M7Ti5wdXNoKEspO3ZhciBpdD11dC5vcHRpb25zJiZ1dC5vcHRpb25zLnJhbmdlczt0eXBlb2YgVy55eS5wYXJzZUVycm9yPT0iZnVuY3Rpb24iP3RoaXMucGFyc2VFcnJvcj1XLnl5LnBhcnNlRXJyb3I6dGhpcy5wYXJzZUVycm9yPU9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKS5wYXJzZUVycm9yO2Z1bmN0aW9uIFooKXt2YXIgTHQ7cmV0dXJuIEx0PXcucG9wKCl8fHV0LmxleCgpfHwkLHR5cGVvZiBMdCE9Im51bWJlciImJihMdCBpbnN0YW5jZW9mIEFycmF5JiYodz1MdCxMdD13LnBvcCgpKSxMdD12LnN5bWJvbHNfW0x0XXx8THQpLEx0fWZvcih2YXIgVixRLHEsVSxGPXt9LGosUCxldCxhdDs7KXtpZihRPUJbQi5sZW5ndGgtMV0sdGhpcy5kZWZhdWx0QWN0aW9uc1tRXT9xPXRoaXMuZGVmYXVsdEFjdGlvbnNbUV06KChWPT09bnVsbHx8dHlwZW9mIFY+InUiKSYmKFY9WigpKSxxPXpbUV0mJnpbUV1bVl0pLHR5cGVvZiBxPiJ1Inx8IXEubGVuZ3RofHwhcVswXSl7dmFyIEl0PSIiO2F0PVtdO2ZvcihqIGluIHpbUV0pdGhpcy50ZXJtaW5hbHNfW2pdJiZqPlkmJmF0LnB1c2goIiciK3RoaXMudGVybWluYWxzX1tqXSsiJyIpO3V0LnNob3dQb3NpdGlvbj9JdD0iUGFyc2UgZXJyb3Igb24gbGluZSAiKyhjdCsxKStgOgpgK3V0LnNob3dQb3NpdGlvbigpK2AKRXhwZWN0aW5nIGArYXQuam9pbigiLCAiKSsiLCBnb3QgJyIrKHRoaXMudGVybWluYWxzX1tWXXx8VikrIiciOkl0PSJQYXJzZSBlcnJvciBvbiBsaW5lICIrKGN0KzEpKyI6IFVuZXhwZWN0ZWQgIisoVj09JD8iZW5kIG9mIGlucHV0IjoiJyIrKHRoaXMudGVybWluYWxzX1tWXXx8VikrIiciKSx0aGlzLnBhcnNlRXJyb3IoSXQse3RleHQ6dXQubWF0Y2gsdG9rZW46dGhpcy50ZXJtaW5hbHNfW1ZdfHxWLGxpbmU6dXQueXlsaW5lbm8sbG9jOkssZXhwZWN0ZWQ6YXR9KX1pZihxWzBdaW5zdGFuY2VvZiBBcnJheSYmcS5sZW5ndGg+MSl0aHJvdyBuZXcgRXJyb3IoIlBhcnNlIEVycm9yOiBtdWx0aXBsZSBhY3Rpb25zIHBvc3NpYmxlIGF0IHN0YXRlOiAiK1ErIiwgdG9rZW46ICIrVik7c3dpdGNoKHFbMF0pe2Nhc2UgMTpCLnB1c2goViksRC5wdXNoKHV0Lnl5dGV4dCksTi5wdXNoKHV0Lnl5bGxvYyksQi5wdXNoKHFbMV0pLFY9bnVsbCxKPXV0Lnl5bGVuZyxYPXV0Lnl5dGV4dCxjdD11dC55eWxpbmVubyxLPXV0Lnl5bGxvYzticmVhaztjYXNlIDI6aWYoUD10aGlzLnByb2R1Y3Rpb25zX1txWzFdXVsxXSxGLiQ9RFtELmxlbmd0aC1QXSxGLl8kPXtmaXJzdF9saW5lOk5bTi5sZW5ndGgtKFB8fDEpXS5maXJzdF9saW5lLGxhc3RfbGluZTpOW04ubGVuZ3RoLTFdLmxhc3RfbGluZSxmaXJzdF9jb2x1bW46TltOLmxlbmd0aC0oUHx8MSldLmZpcnN0X2NvbHVtbixsYXN0X2NvbHVtbjpOW04ubGVuZ3RoLTFdLmxhc3RfY29sdW1ufSxpdCYmKEYuXyQucmFuZ2U9W05bTi5sZW5ndGgtKFB8fDEpXS5yYW5nZVswXSxOW04ubGVuZ3RoLTFdLnJhbmdlWzFdXSksVT10aGlzLnBlcmZvcm1BY3Rpb24uYXBwbHkoRixbWCxKLGN0LFcueXkscVsxXSxELE5dLmNvbmNhdChsdCkpLHR5cGVvZiBVPCJ1IilyZXR1cm4gVTtQJiYoQj1CLnNsaWNlKDAsLTEqUCoyKSxEPUQuc2xpY2UoMCwtMSpQKSxOPU4uc2xpY2UoMCwtMSpQKSksQi5wdXNoKHRoaXMucHJvZHVjdGlvbnNfW3FbMV1dWzBdKSxELnB1c2goRi4kKSxOLnB1c2goRi5fJCksZXQ9eltCW0IubGVuZ3RoLTJdXVtCW0IubGVuZ3RoLTFdXSxCLnB1c2goZXQpO2JyZWFrO2Nhc2UgMzpyZXR1cm4hMH19cmV0dXJuITB9fSxTPWZ1bmN0aW9uKCl7dmFyIEE9e0VPRjoxLHBhcnNlRXJyb3I6ZnVuY3Rpb24odixCKXtpZih0aGlzLnl5LnBhcnNlcil0aGlzLnl5LnBhcnNlci5wYXJzZUVycm9yKHYsQik7ZWxzZSB0aHJvdyBuZXcgRXJyb3Iodil9LHNldElucHV0OmZ1bmN0aW9uKEwsdil7cmV0dXJuIHRoaXMueXk9dnx8dGhpcy55eXx8e30sdGhpcy5faW5wdXQ9TCx0aGlzLl9tb3JlPXRoaXMuX2JhY2t0cmFjaz10aGlzLmRvbmU9ITEsdGhpcy55eWxpbmVubz10aGlzLnl5bGVuZz0wLHRoaXMueXl0ZXh0PXRoaXMubWF0Y2hlZD10aGlzLm1hdGNoPSIiLHRoaXMuY29uZGl0aW9uU3RhY2s9WyJJTklUSUFMIl0sdGhpcy55eWxsb2M9e2ZpcnN0X2xpbmU6MSxmaXJzdF9jb2x1bW46MCxsYXN0X2xpbmU6MSxsYXN0X2NvbHVtbjowfSx0aGlzLm9wdGlvbnMucmFuZ2VzJiYodGhpcy55eWxsb2MucmFuZ2U9WzAsMF0pLHRoaXMub2Zmc2V0PTAsdGhpc30saW5wdXQ6ZnVuY3Rpb24oKXt2YXIgTD10aGlzLl9pbnB1dFswXTt0aGlzLnl5dGV4dCs9TCx0aGlzLnl5bGVuZysrLHRoaXMub2Zmc2V0KyssdGhpcy5tYXRjaCs9TCx0aGlzLm1hdGNoZWQrPUw7dmFyIHY9TC5tYXRjaCgvKD86XHJcbj98XG4pLiovZyk7cmV0dXJuIHY/KHRoaXMueXlsaW5lbm8rKyx0aGlzLnl5bGxvYy5sYXN0X2xpbmUrKyk6dGhpcy55eWxsb2MubGFzdF9jb2x1bW4rKyx0aGlzLm9wdGlvbnMucmFuZ2VzJiZ0aGlzLnl5bGxvYy5yYW5nZVsxXSsrLHRoaXMuX2lucHV0PXRoaXMuX2lucHV0LnNsaWNlKDEpLEx9LHVucHV0OmZ1bmN0aW9uKEwpe3ZhciB2PUwubGVuZ3RoLEI9TC5zcGxpdCgvKD86XHJcbj98XG4pL2cpO3RoaXMuX2lucHV0PUwrdGhpcy5faW5wdXQsdGhpcy55eXRleHQ9dGhpcy55eXRleHQuc3Vic3RyKDAsdGhpcy55eXRleHQubGVuZ3RoLXYpLHRoaXMub2Zmc2V0LT12O3ZhciB3PXRoaXMubWF0Y2guc3BsaXQoLyg/OlxyXG4/fFxuKS9nKTt0aGlzLm1hdGNoPXRoaXMubWF0Y2guc3Vic3RyKDAsdGhpcy5tYXRjaC5sZW5ndGgtMSksdGhpcy5tYXRjaGVkPXRoaXMubWF0Y2hlZC5zdWJzdHIoMCx0aGlzLm1hdGNoZWQubGVuZ3RoLTEpLEIubGVuZ3RoLTEmJih0aGlzLnl5bGluZW5vLT1CLmxlbmd0aC0xKTt2YXIgRD10aGlzLnl5bGxvYy5yYW5nZTtyZXR1cm4gdGhpcy55eWxsb2M9e2ZpcnN0X2xpbmU6dGhpcy55eWxsb2MuZmlyc3RfbGluZSxsYXN0X2xpbmU6dGhpcy55eWxpbmVubysxLGZpcnN0X2NvbHVtbjp0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4sbGFzdF9jb2x1bW46Qj8oQi5sZW5ndGg9PT13Lmxlbmd0aD90aGlzLnl5bGxvYy5maXJzdF9jb2x1bW46MCkrd1t3Lmxlbmd0aC1CLmxlbmd0aF0ubGVuZ3RoLUJbMF0ubGVuZ3RoOnRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbi12fSx0aGlzLm9wdGlvbnMucmFuZ2VzJiYodGhpcy55eWxsb2MucmFuZ2U9W0RbMF0sRFswXSt0aGlzLnl5bGVuZy12XSksdGhpcy55eWxlbmc9dGhpcy55eXRleHQubGVuZ3RoLHRoaXN9LG1vcmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbW9yZT0hMCx0aGlzfSxyZWplY3Q6ZnVuY3Rpb24oKXtpZih0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyKXRoaXMuX2JhY2t0cmFjaz0hMDtlbHNlIHJldHVybiB0aGlzLnBhcnNlRXJyb3IoIkxleGljYWwgZXJyb3Igb24gbGluZSAiKyh0aGlzLnl5bGluZW5vKzEpK2AuIFlvdSBjYW4gb25seSBpbnZva2UgcmVqZWN0KCkgaW4gdGhlIGxleGVyIHdoZW4gdGhlIGxleGVyIGlzIG9mIHRoZSBiYWNrdHJhY2tpbmcgcGVyc3Vhc2lvbiAob3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIgPSB0cnVlKS4KYCt0aGlzLnNob3dQb3NpdGlvbigpLHt0ZXh0OiIiLHRva2VuOm51bGwsbGluZTp0aGlzLnl5bGluZW5vfSk7cmV0dXJuIHRoaXN9LGxlc3M6ZnVuY3Rpb24oTCl7dGhpcy51bnB1dCh0aGlzLm1hdGNoLnNsaWNlKEwpKX0scGFzdElucHV0OmZ1bmN0aW9uKCl7dmFyIEw9dGhpcy5tYXRjaGVkLnN1YnN0cigwLHRoaXMubWF0Y2hlZC5sZW5ndGgtdGhpcy5tYXRjaC5sZW5ndGgpO3JldHVybihMLmxlbmd0aD4yMD8iLi4uIjoiIikrTC5zdWJzdHIoLTIwKS5yZXBsYWNlKC9cbi9nLCIiKX0sdXBjb21pbmdJbnB1dDpmdW5jdGlvbigpe3ZhciBMPXRoaXMubWF0Y2g7cmV0dXJuIEwubGVuZ3RoPDIwJiYoTCs9dGhpcy5faW5wdXQuc3Vic3RyKDAsMjAtTC5sZW5ndGgpKSwoTC5zdWJzdHIoMCwyMCkrKEwubGVuZ3RoPjIwPyIuLi4iOiIiKSkucmVwbGFjZSgvXG4vZywiIil9LHNob3dQb3NpdGlvbjpmdW5jdGlvbigpe3ZhciBMPXRoaXMucGFzdElucHV0KCksdj1uZXcgQXJyYXkoTC5sZW5ndGgrMSkuam9pbigiLSIpO3JldHVybiBMK3RoaXMudXBjb21pbmdJbnB1dCgpK2AKYCt2KyJeIn0sdGVzdF9tYXRjaDpmdW5jdGlvbihMLHYpe3ZhciBCLHcsRDtpZih0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyJiYoRD17eXlsaW5lbm86dGhpcy55eWxpbmVubyx5eWxsb2M6e2ZpcnN0X2xpbmU6dGhpcy55eWxsb2MuZmlyc3RfbGluZSxsYXN0X2xpbmU6dGhpcy5sYXN0X2xpbmUsZmlyc3RfY29sdW1uOnRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbixsYXN0X2NvbHVtbjp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbn0seXl0ZXh0OnRoaXMueXl0ZXh0LG1hdGNoOnRoaXMubWF0Y2gsbWF0Y2hlczp0aGlzLm1hdGNoZXMsbWF0Y2hlZDp0aGlzLm1hdGNoZWQseXlsZW5nOnRoaXMueXlsZW5nLG9mZnNldDp0aGlzLm9mZnNldCxfbW9yZTp0aGlzLl9tb3JlLF9pbnB1dDp0aGlzLl9pbnB1dCx5eTp0aGlzLnl5LGNvbmRpdGlvblN0YWNrOnRoaXMuY29uZGl0aW9uU3RhY2suc2xpY2UoMCksZG9uZTp0aGlzLmRvbmV9LHRoaXMub3B0aW9ucy5yYW5nZXMmJihELnl5bGxvYy5yYW5nZT10aGlzLnl5bGxvYy5yYW5nZS5zbGljZSgwKSkpLHc9TFswXS5tYXRjaCgvKD86XHJcbj98XG4pLiovZyksdyYmKHRoaXMueXlsaW5lbm8rPXcubGVuZ3RoKSx0aGlzLnl5bGxvYz17Zmlyc3RfbGluZTp0aGlzLnl5bGxvYy5sYXN0X2xpbmUsbGFzdF9saW5lOnRoaXMueXlsaW5lbm8rMSxmaXJzdF9jb2x1bW46dGhpcy55eWxsb2MubGFzdF9jb2x1bW4sbGFzdF9jb2x1bW46dz93W3cubGVuZ3RoLTFdLmxlbmd0aC13W3cubGVuZ3RoLTFdLm1hdGNoKC9ccj9cbj8vKVswXS5sZW5ndGg6dGhpcy55eWxsb2MubGFzdF9jb2x1bW4rTFswXS5sZW5ndGh9LHRoaXMueXl0ZXh0Kz1MWzBdLHRoaXMubWF0Y2grPUxbMF0sdGhpcy5tYXRjaGVzPUwsdGhpcy55eWxlbmc9dGhpcy55eXRleHQubGVuZ3RoLHRoaXMub3B0aW9ucy5yYW5nZXMmJih0aGlzLnl5bGxvYy5yYW5nZT1bdGhpcy5vZmZzZXQsdGhpcy5vZmZzZXQrPXRoaXMueXlsZW5nXSksdGhpcy5fbW9yZT0hMSx0aGlzLl9iYWNrdHJhY2s9ITEsdGhpcy5faW5wdXQ9dGhpcy5faW5wdXQuc2xpY2UoTFswXS5sZW5ndGgpLHRoaXMubWF0Y2hlZCs9TFswXSxCPXRoaXMucGVyZm9ybUFjdGlvbi5jYWxsKHRoaXMsdGhpcy55eSx0aGlzLHYsdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXSksdGhpcy5kb25lJiZ0aGlzLl9pbnB1dCYmKHRoaXMuZG9uZT0hMSksQilyZXR1cm4gQjtpZih0aGlzLl9iYWNrdHJhY2spe2Zvcih2YXIgTiBpbiBEKXRoaXNbTl09RFtOXTtyZXR1cm4hMX1yZXR1cm4hMX0sbmV4dDpmdW5jdGlvbigpe2lmKHRoaXMuZG9uZSlyZXR1cm4gdGhpcy5FT0Y7dGhpcy5faW5wdXR8fCh0aGlzLmRvbmU9ITApO3ZhciBMLHYsQix3O3RoaXMuX21vcmV8fCh0aGlzLnl5dGV4dD0iIix0aGlzLm1hdGNoPSIiKTtmb3IodmFyIEQ9dGhpcy5fY3VycmVudFJ1bGVzKCksTj0wO048RC5sZW5ndGg7TisrKWlmKEI9dGhpcy5faW5wdXQubWF0Y2godGhpcy5ydWxlc1tEW05dXSksQiYmKCF2fHxCWzBdLmxlbmd0aD52WzBdLmxlbmd0aCkpe2lmKHY9Qix3PU4sdGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlcil7aWYoTD10aGlzLnRlc3RfbWF0Y2goQixEW05dKSxMIT09ITEpcmV0dXJuIEw7aWYodGhpcy5fYmFja3RyYWNrKXt2PSExO2NvbnRpbnVlfWVsc2UgcmV0dXJuITF9ZWxzZSBpZighdGhpcy5vcHRpb25zLmZsZXgpYnJlYWt9cmV0dXJuIHY/KEw9dGhpcy50ZXN0X21hdGNoKHYsRFt3XSksTCE9PSExP0w6ITEpOnRoaXMuX2lucHV0PT09IiI/dGhpcy5FT0Y6dGhpcy5wYXJzZUVycm9yKCJMZXhpY2FsIGVycm9yIG9uIGxpbmUgIisodGhpcy55eWxpbmVubysxKStgLiBVbnJlY29nbml6ZWQgdGV4dC4KYCt0aGlzLnNob3dQb3NpdGlvbigpLHt0ZXh0OiIiLHRva2VuOm51bGwsbGluZTp0aGlzLnl5bGluZW5vfSl9LGxleDpmdW5jdGlvbigpe3ZhciB2PXRoaXMubmV4dCgpO3JldHVybiB2fHx0aGlzLmxleCgpfSxiZWdpbjpmdW5jdGlvbih2KXt0aGlzLmNvbmRpdGlvblN0YWNrLnB1c2godil9LHBvcFN0YXRlOmZ1bmN0aW9uKCl7dmFyIHY9dGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMTtyZXR1cm4gdj4wP3RoaXMuY29uZGl0aW9uU3RhY2sucG9wKCk6dGhpcy5jb25kaXRpb25TdGFja1swXX0sX2N1cnJlbnRSdWxlczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCYmdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXT90aGlzLmNvbmRpdGlvbnNbdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXV0ucnVsZXM6dGhpcy5jb25kaXRpb25zLklOSVRJQUwucnVsZXN9LHRvcFN0YXRlOmZ1bmN0aW9uKHYpe3JldHVybiB2PXRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTEtTWF0aC5hYnModnx8MCksdj49MD90aGlzLmNvbmRpdGlvblN0YWNrW3ZdOiJJTklUSUFMIn0scHVzaFN0YXRlOmZ1bmN0aW9uKHYpe3RoaXMuYmVnaW4odil9LHN0YXRlU3RhY2tTaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RofSxvcHRpb25zOnsiY2FzZS1pbnNlbnNpdGl2ZSI6ITB9LHBlcmZvcm1BY3Rpb246ZnVuY3Rpb24odixCLHcsRCl7c3dpdGNoKHcpe2Nhc2UgMDpyZXR1cm4gdGhpcy5iZWdpbigiYWNjX3RpdGxlIiksMjU7Y2FzZSAxOnJldHVybiB0aGlzLnBvcFN0YXRlKCksImFjY190aXRsZV92YWx1ZSI7Y2FzZSAyOnJldHVybiB0aGlzLmJlZ2luKCJhY2NfZGVzY3IiKSwyNztjYXNlIDM6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSwiYWNjX2Rlc2NyX3ZhbHVlIjtjYXNlIDQ6dGhpcy5iZWdpbigiYWNjX2Rlc2NyX211bHRpbGluZSIpO2JyZWFrO2Nhc2UgNTp0aGlzLnBvcFN0YXRlKCk7YnJlYWs7Y2FzZSA2OnJldHVybiJhY2NfZGVzY3JfbXVsdGlsaW5lX3ZhbHVlIjtjYXNlIDc6cmV0dXJuIHRoaXMuYmVnaW4oIm9wZW5fZGlyZWN0aXZlIiksNDk7Y2FzZSA4OnJldHVybiB0aGlzLmJlZ2luKCJ0eXBlX2RpcmVjdGl2ZSIpLDUwO2Nhc2UgOTpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLHRoaXMuYmVnaW4oImFyZ19kaXJlY3RpdmUiKSwxNTtjYXNlIDEwOnJldHVybiB0aGlzLnBvcFN0YXRlKCksdGhpcy5wb3BTdGF0ZSgpLDUyO2Nhc2UgMTE6cmV0dXJuIDUxO2Nhc2UgMTI6YnJlYWs7Y2FzZSAxMzpicmVhaztjYXNlIDE0OnJldHVybiAxMTtjYXNlIDE1OmJyZWFrO2Nhc2UgMTY6cmV0dXJuIDk7Y2FzZSAxNzpyZXR1cm4gMzE7Y2FzZSAxODpyZXR1cm4gNDg7Y2FzZSAxOTpyZXR1cm4gNDtjYXNlIDIwOnJldHVybiB0aGlzLmJlZ2luKCJibG9jayIpLDIwO2Nhc2UgMjE6YnJlYWs7Y2FzZSAyMjpyZXR1cm4gMzg7Y2FzZSAyMzpyZXR1cm4gMzc7Y2FzZSAyNDpyZXR1cm4gMzc7Y2FzZSAyNTpyZXR1cm4gMzk7Y2FzZSAyNjpicmVhaztjYXNlIDI3OnJldHVybiB0aGlzLnBvcFN0YXRlKCksMjI7Y2FzZSAyODpyZXR1cm4gQi55eXRleHRbMF07Y2FzZSAyOTpyZXR1cm4gNDI7Y2FzZSAzMDpyZXR1cm4gNDM7Y2FzZSAzMTpyZXR1cm4gNDQ7Y2FzZSAzMjpyZXR1cm4gNDU7Y2FzZSAzMzpyZXR1cm4gNDI7Y2FzZSAzNDpyZXR1cm4gNDM7Y2FzZSAzNTpyZXR1cm4gNDQ7Y2FzZSAzNjpyZXR1cm4gNDY7Y2FzZSAzNzpyZXR1cm4gNDc7Y2FzZSAzODpyZXR1cm4gNDY7Y2FzZSAzOTpyZXR1cm4gNDY7Y2FzZSA0MDpyZXR1cm4gMzA7Y2FzZSA0MTpyZXR1cm4gQi55eXRleHRbMF07Y2FzZSA0MjpyZXR1cm4gNn19LHJ1bGVzOlsvXig/OmFjY1RpdGxlXHMqOlxzKikvaSwvXig/Oig/IVxufHwpKlteXG5dKikvaSwvXig/OmFjY0Rlc2NyXHMqOlxzKikvaSwvXig/Oig/IVxufHwpKlteXG5dKikvaSwvXig/OmFjY0Rlc2NyXHMqXHtccyopL2ksL14oPzpbXH1dKS9pLC9eKD86W15cfV0qKS9pLC9eKD86JSVceykvaSwvXig/OigoPzooPyFcfSUlKVteOi5dKSopKS9pLC9eKD86OikvaSwvXig/Olx9JSUpL2ksL14oPzooKD86KD8hXH0lJSkufFxuKSopKS9pLC9eKD86JSg/IVx7KVteXG5dKikvaSwvXig/OlteXH1dJSVbXlxuXSopL2ksL14oPzpbXG5dKykvaSwvXig/OlxzKykvaSwvXig/Oltcc10rKS9pLC9eKD86IlteIiVcclxuXHZcYlxcXSsiKS9pLC9eKD86IlteIl0qIikvaSwvXig/OmVyRGlhZ3JhbVxiKS9pLC9eKD86XHspL2ksL14oPzpccyspL2ksL14oPzpcYigoPzpQSyl8KD86RkspKVxiKS9pLC9eKD86KC4qPylbfl0oLio/KSpbfl0pL2ksL14oPzpbQS1aYS16XVtBLVphLXowLTlcLV9cW1xdXSopL2ksL14oPzoiW14iXSoiKS9pLC9eKD86W1xuXSspL2ksL14oPzpcfSkvaSwvXig/Oi4pL2ksL14oPzpcfG9cYikvaSwvXig/Olx9b1xiKS9pLC9eKD86XH1cfCkvaSwvXig/Olx8XHwpL2ksL14oPzpvXHwpL2ksL14oPzpvXHspL2ksL14oPzpcfFx7KS9pLC9eKD86XC5cLikvaSwvXig/Oi0tKS9pLC9eKD86XC4tKS9pLC9eKD86LVwuKS9pLC9eKD86W0EtWmEtel1bQS1aYS16MC05XC1fXSopL2ksL14oPzouKS9pLC9eKD86JCkvaV0sY29uZGl0aW9uczp7YWNjX2Rlc2NyX211bHRpbGluZTp7cnVsZXM6WzUsNl0saW5jbHVzaXZlOiExfSxhY2NfZGVzY3I6e3J1bGVzOlszXSxpbmNsdXNpdmU6ITF9LGFjY190aXRsZTp7cnVsZXM6WzFdLGluY2x1c2l2ZTohMX0sb3Blbl9kaXJlY3RpdmU6e3J1bGVzOls4XSxpbmNsdXNpdmU6ITF9LHR5cGVfZGlyZWN0aXZlOntydWxlczpbOSwxMF0saW5jbHVzaXZlOiExfSxhcmdfZGlyZWN0aXZlOntydWxlczpbMTAsMTFdLGluY2x1c2l2ZTohMX0sYmxvY2s6e3J1bGVzOlsyMSwyMiwyMywyNCwyNSwyNiwyNywyOF0saW5jbHVzaXZlOiExfSxJTklUSUFMOntydWxlczpbMCwyLDQsNywxMiwxMywxNCwxNSwxNiwxNywxOCwxOSwyMCwyOSwzMCwzMSwzMiwzMywzNCwzNSwzNiwzNywzOCwzOSw0MCw0MSw0Ml0saW5jbHVzaXZlOiEwfX19O3JldHVybiBBfSgpO00ubGV4ZXI9UztmdW5jdGlvbiBSKCl7dGhpcy55eT17fX1yZXR1cm4gUi5wcm90b3R5cGU9TSxNLlBhcnNlcj1SLG5ldyBSfSgpO2E0LnBhcnNlcj1hNDtjb25zdCBGZXQ9dD0+dC5tYXRjaCgvXlxzKmVyRGlhZ3JhbS8pIT09bnVsbDtsZXQgdHU9e30sczQ9W107Y29uc3QgUGV0PXtaRVJPX09SX09ORToiWkVST19PUl9PTkUiLFpFUk9fT1JfTU9SRToiWkVST19PUl9NT1JFIixPTkVfT1JfTU9SRToiT05FX09SX01PUkUiLE9OTFlfT05FOiJPTkxZX09ORSJ9LHFldD17Tk9OX0lERU5USUZZSU5HOiJOT05fSURFTlRJRllJTkciLElERU5USUZZSU5HOiJJREVOVElGWUlORyJ9LFZldD1mdW5jdGlvbih0LGUscil7WGUucGFyc2VEaXJlY3RpdmUodGhpcyx0LGUscil9LGVNPWZ1bmN0aW9uKHQpe3JldHVybiB0eXBlb2YgdHVbdF0+InUiJiYodHVbdF09e2F0dHJpYnV0ZXM6W119LEguaW5mbygiQWRkZWQgbmV3IGVudGl0eSA6Iix0KSksdHVbdF19LHpldD17Q2FyZGluYWxpdHk6UGV0LElkZW50aWZpY2F0aW9uOnFldCxwYXJzZURpcmVjdGl2ZTpWZXQsZ2V0Q29uZmlnOigpPT5udCgpLmVyLGFkZEVudGl0eTplTSxhZGRBdHRyaWJ1dGVzOmZ1bmN0aW9uKHQsZSl7bGV0IHI9ZU0odCksbjtmb3Iobj1lLmxlbmd0aC0xO24+PTA7bi0tKXIuYXR0cmlidXRlcy5wdXNoKGVbbl0pLEguZGVidWcoIkFkZGVkIGF0dHJpYnV0ZSAiLGVbbl0uYXR0cmlidXRlTmFtZSl9LGdldEVudGl0aWVzOigpPT50dSxhZGRSZWxhdGlvbnNoaXA6ZnVuY3Rpb24odCxlLHIsbil7bGV0IGk9e2VudGl0eUE6dCxyb2xlQTplLGVudGl0eUI6cixyZWxTcGVjOm59O3M0LnB1c2goaSksSC5kZWJ1ZygiQWRkZWQgbmV3IHJlbGF0aW9uc2hpcCA6IixpKX0sZ2V0UmVsYXRpb25zaGlwczooKT0+czQsY2xlYXI6ZnVuY3Rpb24oKXt0dT17fSxzND1bXSxjaSgpfSxzZXRBY2NUaXRsZTpZbixnZXRBY2NUaXRsZTp1aSxzZXRBY2NEZXNjcmlwdGlvbjpoaSxnZXRBY2NEZXNjcmlwdGlvbjpmaX0sdWE9e09OTFlfT05FX1NUQVJUOiJPTkxZX09ORV9TVEFSVCIsT05MWV9PTkVfRU5EOiJPTkxZX09ORV9FTkQiLFpFUk9fT1JfT05FX1NUQVJUOiJaRVJPX09SX09ORV9TVEFSVCIsWkVST19PUl9PTkVfRU5EOiJaRVJPX09SX09ORV9FTkQiLE9ORV9PUl9NT1JFX1NUQVJUOiJPTkVfT1JfTU9SRV9TVEFSVCIsT05FX09SX01PUkVfRU5EOiJPTkVfT1JfTU9SRV9FTkQiLFpFUk9fT1JfTU9SRV9TVEFSVDoiWkVST19PUl9NT1JFX1NUQVJUIixaRVJPX09SX01PUkVfRU5EOiJaRVJPX09SX01PUkVfRU5EIn0saGE9e0VSTWFya2Vyczp1YSxpbnNlcnRNYXJrZXJzOmZ1bmN0aW9uKHQsZSl7bGV0IHI7dC5hcHBlbmQoImRlZnMiKS5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIix1YS5PTkxZX09ORV9TVEFSVCkuYXR0cigicmVmWCIsMCkuYXR0cigicmVmWSIsOSkuYXR0cigibWFya2VyV2lkdGgiLDE4KS5hdHRyKCJtYXJrZXJIZWlnaHQiLDE4KS5hdHRyKCJvcmllbnQiLCJhdXRvIikuYXBwZW5kKCJwYXRoIikuYXR0cigic3Ryb2tlIixlLnN0cm9rZSkuYXR0cigiZmlsbCIsIm5vbmUiKS5hdHRyKCJkIiwiTTksMCBMOSwxOCBNMTUsMCBMMTUsMTgiKSx0LmFwcGVuZCgiZGVmcyIpLmFwcGVuZCgibWFya2VyIikuYXR0cigiaWQiLHVhLk9OTFlfT05FX0VORCkuYXR0cigicmVmWCIsMTgpLmF0dHIoInJlZlkiLDkpLmF0dHIoIm1hcmtlcldpZHRoIiwxOCkuYXR0cigibWFya2VySGVpZ2h0IiwxOCkuYXR0cigib3JpZW50IiwiYXV0byIpLmFwcGVuZCgicGF0aCIpLmF0dHIoInN0cm9rZSIsZS5zdHJva2UpLmF0dHIoImZpbGwiLCJub25lIikuYXR0cigiZCIsIk0zLDAgTDMsMTggTTksMCBMOSwxOCIpLHI9dC5hcHBlbmQoImRlZnMiKS5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIix1YS5aRVJPX09SX09ORV9TVEFSVCkuYXR0cigicmVmWCIsMCkuYXR0cigicmVmWSIsOSkuYXR0cigibWFya2VyV2lkdGgiLDMwKS5hdHRyKCJtYXJrZXJIZWlnaHQiLDE4KS5hdHRyKCJvcmllbnQiLCJhdXRvIiksci5hcHBlbmQoImNpcmNsZSIpLmF0dHIoInN0cm9rZSIsZS5zdHJva2UpLmF0dHIoImZpbGwiLCJ3aGl0ZSIpLmF0dHIoImN4IiwyMSkuYXR0cigiY3kiLDkpLmF0dHIoInIiLDYpLHIuYXBwZW5kKCJwYXRoIikuYXR0cigic3Ryb2tlIixlLnN0cm9rZSkuYXR0cigiZmlsbCIsIm5vbmUiKS5hdHRyKCJkIiwiTTksMCBMOSwxOCIpLHI9dC5hcHBlbmQoImRlZnMiKS5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIix1YS5aRVJPX09SX09ORV9FTkQpLmF0dHIoInJlZlgiLDMwKS5hdHRyKCJyZWZZIiw5KS5hdHRyKCJtYXJrZXJXaWR0aCIsMzApLmF0dHIoIm1hcmtlckhlaWdodCIsMTgpLmF0dHIoIm9yaWVudCIsImF1dG8iKSxyLmFwcGVuZCgiY2lyY2xlIikuYXR0cigic3Ryb2tlIixlLnN0cm9rZSkuYXR0cigiZmlsbCIsIndoaXRlIikuYXR0cigiY3giLDkpLmF0dHIoImN5Iiw5KS5hdHRyKCJyIiw2KSxyLmFwcGVuZCgicGF0aCIpLmF0dHIoInN0cm9rZSIsZS5zdHJva2UpLmF0dHIoImZpbGwiLCJub25lIikuYXR0cigiZCIsIk0yMSwwIEwyMSwxOCIpLHQuYXBwZW5kKCJkZWZzIikuYXBwZW5kKCJtYXJrZXIiKS5hdHRyKCJpZCIsdWEuT05FX09SX01PUkVfU1RBUlQpLmF0dHIoInJlZlgiLDE4KS5hdHRyKCJyZWZZIiwxOCkuYXR0cigibWFya2VyV2lkdGgiLDQ1KS5hdHRyKCJtYXJrZXJIZWlnaHQiLDM2KS5hdHRyKCJvcmllbnQiLCJhdXRvIikuYXBwZW5kKCJwYXRoIikuYXR0cigic3Ryb2tlIixlLnN0cm9rZSkuYXR0cigiZmlsbCIsIm5vbmUiKS5hdHRyKCJkIiwiTTAsMTggUSAxOCwwIDM2LDE4IFEgMTgsMzYgMCwxOCBNNDIsOSBMNDIsMjciKSx0LmFwcGVuZCgiZGVmcyIpLmFwcGVuZCgibWFya2VyIikuYXR0cigiaWQiLHVhLk9ORV9PUl9NT1JFX0VORCkuYXR0cigicmVmWCIsMjcpLmF0dHIoInJlZlkiLDE4KS5hdHRyKCJtYXJrZXJXaWR0aCIsNDUpLmF0dHIoIm1hcmtlckhlaWdodCIsMzYpLmF0dHIoIm9yaWVudCIsImF1dG8iKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJzdHJva2UiLGUuc3Ryb2tlKS5hdHRyKCJmaWxsIiwibm9uZSIpLmF0dHIoImQiLCJNMyw5IEwzLDI3IE05LDE4IFEyNywwIDQ1LDE4IFEyNywzNiA5LDE4Iikscj10LmFwcGVuZCgiZGVmcyIpLmFwcGVuZCgibWFya2VyIikuYXR0cigiaWQiLHVhLlpFUk9fT1JfTU9SRV9TVEFSVCkuYXR0cigicmVmWCIsMTgpLmF0dHIoInJlZlkiLDE4KS5hdHRyKCJtYXJrZXJXaWR0aCIsNTcpLmF0dHIoIm1hcmtlckhlaWdodCIsMzYpLmF0dHIoIm9yaWVudCIsImF1dG8iKSxyLmFwcGVuZCgiY2lyY2xlIikuYXR0cigic3Ryb2tlIixlLnN0cm9rZSkuYXR0cigiZmlsbCIsIndoaXRlIikuYXR0cigiY3giLDQ4KS5hdHRyKCJjeSIsMTgpLmF0dHIoInIiLDYpLHIuYXBwZW5kKCJwYXRoIikuYXR0cigic3Ryb2tlIixlLnN0cm9rZSkuYXR0cigiZmlsbCIsIm5vbmUiKS5hdHRyKCJkIiwiTTAsMTggUTE4LDAgMzYsMTggUTE4LDM2IDAsMTgiKSxyPXQuYXBwZW5kKCJkZWZzIikuYXBwZW5kKCJtYXJrZXIiKS5hdHRyKCJpZCIsdWEuWkVST19PUl9NT1JFX0VORCkuYXR0cigicmVmWCIsMzkpLmF0dHIoInJlZlkiLDE4KS5hdHRyKCJtYXJrZXJXaWR0aCIsNTcpLmF0dHIoIm1hcmtlckhlaWdodCIsMzYpLmF0dHIoIm9yaWVudCIsImF1dG8iKSxyLmFwcGVuZCgiY2lyY2xlIikuYXR0cigic3Ryb2tlIixlLnN0cm9rZSkuYXR0cigiZmlsbCIsIndoaXRlIikuYXR0cigiY3giLDkpLmF0dHIoImN5IiwxOCkuYXR0cigiciIsNiksci5hcHBlbmQoInBhdGgiKS5hdHRyKCJzdHJva2UiLGUuc3Ryb2tlKS5hdHRyKCJmaWxsIiwibm9uZSIpLmF0dHIoImQiLCJNMjEsMTggUTM5LDAgNTcsMTggUTM5LDM2IDIxLDE4Iil9fTtsZXQgJDE7Y29uc3QgWWV0PW5ldyBVaW50OEFycmF5KDE2KTtmdW5jdGlvbiBVZXQoKXtpZighJDEmJigkMT10eXBlb2YgY3J5cHRvPCJ1IiYmY3J5cHRvLmdldFJhbmRvbVZhbHVlcyYmY3J5cHRvLmdldFJhbmRvbVZhbHVlcy5iaW5kKGNyeXB0byksISQxKSl0aHJvdyBuZXcgRXJyb3IoImNyeXB0by5nZXRSYW5kb21WYWx1ZXMoKSBub3Qgc3VwcG9ydGVkLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3V1aWRqcy91dWlkI2dldHJhbmRvbXZhbHVlcy1ub3Qtc3VwcG9ydGVkIik7cmV0dXJuICQxKFlldCl9Y29uc3QgQnI9W107Zm9yKGxldCB0PTA7dDwyNTY7Kyt0KUJyLnB1c2goKHQrMjU2KS50b1N0cmluZygxNikuc2xpY2UoMSkpO2Z1bmN0aW9uIFdldCh0LGU9MCl7cmV0dXJuKEJyW3RbZSswXV0rQnJbdFtlKzFdXStCclt0W2UrMl1dK0JyW3RbZSszXV0rIi0iK0JyW3RbZSs0XV0rQnJbdFtlKzVdXSsiLSIrQnJbdFtlKzZdXStCclt0W2UrN11dKyItIitCclt0W2UrOF1dK0JyW3RbZSs5XV0rIi0iK0JyW3RbZSsxMF1dK0JyW3RbZSsxMV1dK0JyW3RbZSsxMl1dK0JyW3RbZSsxM11dK0JyW3RbZSsxNF1dK0JyW3RbZSsxNV1dKS50b0xvd2VyQ2FzZSgpfWNvbnN0IHJNPXtyYW5kb21VVUlEOnR5cGVvZiBjcnlwdG88InUiJiZjcnlwdG8ucmFuZG9tVVVJRCYmY3J5cHRvLnJhbmRvbVVVSUQuYmluZChjcnlwdG8pfTtmdW5jdGlvbiBIZXQodCxlLHIpe2lmKHJNLnJhbmRvbVVVSUQmJiFlJiYhdClyZXR1cm4gck0ucmFuZG9tVVVJRCgpO3Q9dHx8e307Y29uc3Qgbj10LnJhbmRvbXx8KHQucm5nfHxVZXQpKCk7aWYobls2XT1uWzZdJjE1fDY0LG5bOF09bls4XSY2M3wxMjgsZSl7cj1yfHwwO2ZvcihsZXQgaT0wO2k8MTY7KytpKWVbcitpXT1uW2ldO3JldHVybiBlfXJldHVybiBXZXQobil9Y29uc3QgR2V0PS9bXkEtWmEtejAtOV0oW1xXXSkqL2c7bGV0IFllPXt9LGV1PW5ldyBNYXA7Y29uc3QgamV0PWZ1bmN0aW9uKHQpe2NvbnN0IGU9T2JqZWN0LmtleXModCk7Zm9yKGxldCByPTA7cjxlLmxlbmd0aDtyKyspWWVbZVtyXV09dFtlW3JdXX0sJGV0PSh0LGUscik9Pntjb25zdCBuPVllLmVudGl0eVBhZGRpbmcvMyxpPVllLmVudGl0eVBhZGRpbmcvMyxhPVllLmZvbnRTaXplKi44NSxzPWUubm9kZSgpLmdldEJCb3goKSxvPVtdO2xldCBsPSExLHU9ITEsaD0wLGQ9MCxmPTAscD0wLG09cy5oZWlnaHQrbioyLF89MTtyLmZvckVhY2goaz0+e2suYXR0cmlidXRlS2V5VHlwZSE9PXZvaWQgMCYmKGw9ITApLGsuYXR0cmlidXRlQ29tbWVudCE9PXZvaWQgMCYmKHU9ITApfSksci5mb3JFYWNoKGs9Pntjb25zdCBUPWAke2Uubm9kZSgpLmlkfS1hdHRyLSR7X31gO2xldCBDPTA7Y29uc3QgTT1qYShrLmF0dHJpYnV0ZVR5cGUpLFM9dC5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsImVyIGVudGl0eUxhYmVsIikuYXR0cigiaWQiLGAke1R9LXR5cGVgKS5hdHRyKCJ4IiwwKS5hdHRyKCJ5IiwwKS5hdHRyKCJkb21pbmFudC1iYXNlbGluZSIsIm1pZGRsZSIpLmF0dHIoInRleHQtYW5jaG9yIiwibGVmdCIpLmF0dHIoInN0eWxlIiwiZm9udC1mYW1pbHk6ICIrbnQoKS5mb250RmFtaWx5KyI7IGZvbnQtc2l6ZTogIithKyJweCIpLnRleHQoTSksUj10LmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwiZXIgZW50aXR5TGFiZWwiKS5hdHRyKCJpZCIsYCR7VH0tbmFtZWApLmF0dHIoIngiLDApLmF0dHIoInkiLDApLmF0dHIoImRvbWluYW50LWJhc2VsaW5lIiwibWlkZGxlIikuYXR0cigidGV4dC1hbmNob3IiLCJsZWZ0IikuYXR0cigic3R5bGUiLCJmb250LWZhbWlseTogIitudCgpLmZvbnRGYW1pbHkrIjsgZm9udC1zaXplOiAiK2ErInB4IikudGV4dChrLmF0dHJpYnV0ZU5hbWUpLEE9e307QS50bj1TLEEubm49Ujtjb25zdCBMPVMubm9kZSgpLmdldEJCb3goKSx2PVIubm9kZSgpLmdldEJCb3goKTtpZihoPU1hdGgubWF4KGgsTC53aWR0aCksZD1NYXRoLm1heChkLHYud2lkdGgpLEM9TWF0aC5tYXgoTC5oZWlnaHQsdi5oZWlnaHQpLGwpe2NvbnN0IEI9dC5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsImVyIGVudGl0eUxhYmVsIikuYXR0cigiaWQiLGAke1R9LWtleWApLmF0dHIoIngiLDApLmF0dHIoInkiLDApLmF0dHIoImRvbWluYW50LWJhc2VsaW5lIiwibWlkZGxlIikuYXR0cigidGV4dC1hbmNob3IiLCJsZWZ0IikuYXR0cigic3R5bGUiLCJmb250LWZhbWlseTogIitudCgpLmZvbnRGYW1pbHkrIjsgZm9udC1zaXplOiAiK2ErInB4IikudGV4dChrLmF0dHJpYnV0ZUtleVR5cGV8fCIiKTtBLmtuPUI7Y29uc3Qgdz1CLm5vZGUoKS5nZXRCQm94KCk7Zj1NYXRoLm1heChmLHcud2lkdGgpLEM9TWF0aC5tYXgoQyx3LmhlaWdodCl9aWYodSl7Y29uc3QgQj10LmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwiZXIgZW50aXR5TGFiZWwiKS5hdHRyKCJpZCIsYCR7VH0tY29tbWVudGApLmF0dHIoIngiLDApLmF0dHIoInkiLDApLmF0dHIoImRvbWluYW50LWJhc2VsaW5lIiwibWlkZGxlIikuYXR0cigidGV4dC1hbmNob3IiLCJsZWZ0IikuYXR0cigic3R5bGUiLCJmb250LWZhbWlseTogIitudCgpLmZvbnRGYW1pbHkrIjsgZm9udC1zaXplOiAiK2ErInB4IikudGV4dChrLmF0dHJpYnV0ZUNvbW1lbnR8fCIiKTtBLmNuPUI7Y29uc3Qgdz1CLm5vZGUoKS5nZXRCQm94KCk7cD1NYXRoLm1heChwLHcud2lkdGgpLEM9TWF0aC5tYXgoQyx3LmhlaWdodCl9QS5oZWlnaHQ9QyxvLnB1c2goQSksbSs9QytuKjIsXys9MX0pO2xldCB5PTQ7bCYmKHkrPTIpLHUmJih5Kz0yKTtjb25zdCBiPWgrZCtmK3AseD17d2lkdGg6TWF0aC5tYXgoWWUubWluRW50aXR5V2lkdGgsTWF0aC5tYXgocy53aWR0aCtZZS5lbnRpdHlQYWRkaW5nKjIsYitpKnkpKSxoZWlnaHQ6ci5sZW5ndGg+MD9tOk1hdGgubWF4KFllLm1pbkVudGl0eUhlaWdodCxzLmhlaWdodCtZZS5lbnRpdHlQYWRkaW5nKjIpfTtpZihyLmxlbmd0aD4wKXtjb25zdCBrPU1hdGgubWF4KDAsKHgud2lkdGgtYi1pKnkpLyh5LzIpKTtlLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3gud2lkdGgvMisiLCIrKG4rcy5oZWlnaHQvMikrIikiKTtsZXQgVD1zLmhlaWdodCtuKjIsQz0iYXR0cmlidXRlQm94T2RkIjtvLmZvckVhY2goTT0+e2NvbnN0IFM9VCtuK00uaGVpZ2h0LzI7TS50bi5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitpKyIsIitTKyIpIik7Y29uc3QgUj10Lmluc2VydCgicmVjdCIsIiMiK00udG4ubm9kZSgpLmlkKS5hdHRyKCJjbGFzcyIsYGVyICR7Q31gKS5hdHRyKCJmaWxsIixZZS5maWxsKS5hdHRyKCJmaWxsLW9wYWNpdHkiLCIxMDAlIikuYXR0cigic3Ryb2tlIixZZS5zdHJva2UpLmF0dHIoIngiLDApLmF0dHIoInkiLFQpLmF0dHIoIndpZHRoIixoK2kqMitrKS5hdHRyKCJoZWlnaHQiLE0uaGVpZ2h0K24qMiksQT1wYXJzZUZsb2F0KFIuYXR0cigieCIpKStwYXJzZUZsb2F0KFIuYXR0cigid2lkdGgiKSk7TS5ubi5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIisoQStpKSsiLCIrUysiKSIpO2NvbnN0IEw9dC5pbnNlcnQoInJlY3QiLCIjIitNLm5uLm5vZGUoKS5pZCkuYXR0cigiY2xhc3MiLGBlciAke0N9YCkuYXR0cigiZmlsbCIsWWUuZmlsbCkuYXR0cigiZmlsbC1vcGFjaXR5IiwiMTAwJSIpLmF0dHIoInN0cm9rZSIsWWUuc3Ryb2tlKS5hdHRyKCJ4IixBKS5hdHRyKCJ5IixUKS5hdHRyKCJ3aWR0aCIsZCtpKjIraykuYXR0cigiaGVpZ2h0IixNLmhlaWdodCtuKjIpO2xldCB2PXBhcnNlRmxvYXQoTC5hdHRyKCJ4IikpK3BhcnNlRmxvYXQoTC5hdHRyKCJ3aWR0aCIpKTtpZihsKXtNLmtuLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKyh2K2kpKyIsIitTKyIpIik7Y29uc3QgQj10Lmluc2VydCgicmVjdCIsIiMiK00ua24ubm9kZSgpLmlkKS5hdHRyKCJjbGFzcyIsYGVyICR7Q31gKS5hdHRyKCJmaWxsIixZZS5maWxsKS5hdHRyKCJmaWxsLW9wYWNpdHkiLCIxMDAlIikuYXR0cigic3Ryb2tlIixZZS5zdHJva2UpLmF0dHIoIngiLHYpLmF0dHIoInkiLFQpLmF0dHIoIndpZHRoIixmK2kqMitrKS5hdHRyKCJoZWlnaHQiLE0uaGVpZ2h0K24qMik7dj1wYXJzZUZsb2F0KEIuYXR0cigieCIpKStwYXJzZUZsb2F0KEIuYXR0cigid2lkdGgiKSl9dSYmKE0uY24uYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrKHYraSkrIiwiK1MrIikiKSx0Lmluc2VydCgicmVjdCIsIiMiK00uY24ubm9kZSgpLmlkKS5hdHRyKCJjbGFzcyIsYGVyICR7Q31gKS5hdHRyKCJmaWxsIixZZS5maWxsKS5hdHRyKCJmaWxsLW9wYWNpdHkiLCIxMDAlIikuYXR0cigic3Ryb2tlIixZZS5zdHJva2UpLmF0dHIoIngiLHYpLmF0dHIoInkiLFQpLmF0dHIoIndpZHRoIixwK2kqMitrKS5hdHRyKCJoZWlnaHQiLE0uaGVpZ2h0K24qMikpLFQrPU0uaGVpZ2h0K24qMixDPUM9PT0iYXR0cmlidXRlQm94T2RkIj8iYXR0cmlidXRlQm94RXZlbiI6ImF0dHJpYnV0ZUJveE9kZCJ9KX1lbHNlIHguaGVpZ2h0PU1hdGgubWF4KFllLm1pbkVudGl0eUhlaWdodCxtKSxlLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK3gud2lkdGgvMisiLCIreC5oZWlnaHQvMisiKSIpO3JldHVybiB4fSxYZXQ9ZnVuY3Rpb24odCxlLHIpe2NvbnN0IG49T2JqZWN0LmtleXMoZSk7bGV0IGk7cmV0dXJuIG4uZm9yRWFjaChmdW5jdGlvbihhKXtjb25zdCBzPXRydChhLCJlbnRpdHkiKTtldS5zZXQoYSxzKTtjb25zdCBvPXQuYXBwZW5kKCJnIikuYXR0cigiaWQiLHMpO2k9aT09PXZvaWQgMD9zOmk7Y29uc3QgbD0idGV4dC0iK3MsdT1vLmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwiZXIgZW50aXR5TGFiZWwiKS5hdHRyKCJpZCIsbCkuYXR0cigieCIsMCkuYXR0cigieSIsMCkuYXR0cigiZG9taW5hbnQtYmFzZWxpbmUiLCJtaWRkbGUiKS5hdHRyKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLmF0dHIoInN0eWxlIiwiZm9udC1mYW1pbHk6ICIrbnQoKS5mb250RmFtaWx5KyI7IGZvbnQtc2l6ZTogIitZZS5mb250U2l6ZSsicHgiKS50ZXh0KGEpLHt3aWR0aDpoLGhlaWdodDpkfT0kZXQobyx1LGVbYV0uYXR0cmlidXRlcykscD1vLmluc2VydCgicmVjdCIsIiMiK2wpLmF0dHIoImNsYXNzIiwiZXIgZW50aXR5Qm94IikuYXR0cigiZmlsbCIsWWUuZmlsbCkuYXR0cigiZmlsbC1vcGFjaXR5IiwiMTAwJSIpLmF0dHIoInN0cm9rZSIsWWUuc3Ryb2tlKS5hdHRyKCJ4IiwwKS5hdHRyKCJ5IiwwKS5hdHRyKCJ3aWR0aCIsaCkuYXR0cigiaGVpZ2h0IixkKS5ub2RlKCkuZ2V0QkJveCgpO3Iuc2V0Tm9kZShzLHt3aWR0aDpwLndpZHRoLGhlaWdodDpwLmhlaWdodCxzaGFwZToicmVjdCIsaWQ6c30pfSksaX0sS2V0PWZ1bmN0aW9uKHQsZSl7ZS5ub2RlcygpLmZvckVhY2goZnVuY3Rpb24ocil7dHlwZW9mIHI8InUiJiZ0eXBlb2YgZS5ub2RlKHIpPCJ1IiYmdC5zZWxlY3QoIiMiK3IpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKyhlLm5vZGUocikueC1lLm5vZGUocikud2lkdGgvMikrIiwiKyhlLm5vZGUocikueS1lLm5vZGUocikuaGVpZ2h0LzIpKyIgKSIpfSl9LG5NPWZ1bmN0aW9uKHQpe3JldHVybih0LmVudGl0eUErdC5yb2xlQSt0LmVudGl0eUIpLnJlcGxhY2UoL1xzL2csIiIpfSxaZXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gdC5mb3JFYWNoKGZ1bmN0aW9uKHIpe2Uuc2V0RWRnZShldS5nZXQoci5lbnRpdHlBKSxldS5nZXQoci5lbnRpdHlCKSx7cmVsYXRpb25zaGlwOnJ9LG5NKHIpKX0pLHR9O2xldCBpTT0wO2NvbnN0IFFldD1mdW5jdGlvbih0LGUscixuLGkpe2lNKys7Y29uc3QgYT1yLmVkZ2UoZXUuZ2V0KGUuZW50aXR5QSksZXUuZ2V0KGUuZW50aXR5Qiksbk0oZSkpLHM9VWEoKS54KGZ1bmN0aW9uKG0pe3JldHVybiBtLnh9KS55KGZ1bmN0aW9uKG0pe3JldHVybiBtLnl9KS5jdXJ2ZShPcyksbz10Lmluc2VydCgicGF0aCIsIiMiK24pLmF0dHIoImNsYXNzIiwiZXIgcmVsYXRpb25zaGlwTGluZSIpLmF0dHIoImQiLHMoYS5wb2ludHMpKS5hdHRyKCJzdHJva2UiLFllLnN0cm9rZSkuYXR0cigiZmlsbCIsIm5vbmUiKTtlLnJlbFNwZWMucmVsVHlwZT09PWkuZGIuSWRlbnRpZmljYXRpb24uTk9OX0lERU5USUZZSU5HJiZvLmF0dHIoInN0cm9rZS1kYXNoYXJyYXkiLCI4LDgiKTtsZXQgbD0iIjtzd2l0Y2goWWUuYXJyb3dNYXJrZXJBYnNvbHV0ZSYmKGw9d2luZG93LmxvY2F0aW9uLnByb3RvY29sKyIvLyIrd2luZG93LmxvY2F0aW9uLmhvc3Qrd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lK3dpbmRvdy5sb2NhdGlvbi5zZWFyY2gsbD1sLnJlcGxhY2UoL1woL2csIlxcKCIpLGw9bC5yZXBsYWNlKC9cKS9nLCJcXCkiKSksZS5yZWxTcGVjLmNhcmRBKXtjYXNlIGkuZGIuQ2FyZGluYWxpdHkuWkVST19PUl9PTkU6by5hdHRyKCJtYXJrZXItZW5kIiwidXJsKCIrbCsiIyIraGEuRVJNYXJrZXJzLlpFUk9fT1JfT05FX0VORCsiKSIpO2JyZWFrO2Nhc2UgaS5kYi5DYXJkaW5hbGl0eS5aRVJPX09SX01PUkU6by5hdHRyKCJtYXJrZXItZW5kIiwidXJsKCIrbCsiIyIraGEuRVJNYXJrZXJzLlpFUk9fT1JfTU9SRV9FTkQrIikiKTticmVhaztjYXNlIGkuZGIuQ2FyZGluYWxpdHkuT05FX09SX01PUkU6by5hdHRyKCJtYXJrZXItZW5kIiwidXJsKCIrbCsiIyIraGEuRVJNYXJrZXJzLk9ORV9PUl9NT1JFX0VORCsiKSIpO2JyZWFrO2Nhc2UgaS5kYi5DYXJkaW5hbGl0eS5PTkxZX09ORTpvLmF0dHIoIm1hcmtlci1lbmQiLCJ1cmwoIitsKyIjIitoYS5FUk1hcmtlcnMuT05MWV9PTkVfRU5EKyIpIik7YnJlYWt9c3dpdGNoKGUucmVsU3BlYy5jYXJkQil7Y2FzZSBpLmRiLkNhcmRpbmFsaXR5LlpFUk9fT1JfT05FOm8uYXR0cigibWFya2VyLXN0YXJ0IiwidXJsKCIrbCsiIyIraGEuRVJNYXJrZXJzLlpFUk9fT1JfT05FX1NUQVJUKyIpIik7YnJlYWs7Y2FzZSBpLmRiLkNhcmRpbmFsaXR5LlpFUk9fT1JfTU9SRTpvLmF0dHIoIm1hcmtlci1zdGFydCIsInVybCgiK2wrIiMiK2hhLkVSTWFya2Vycy5aRVJPX09SX01PUkVfU1RBUlQrIikiKTticmVhaztjYXNlIGkuZGIuQ2FyZGluYWxpdHkuT05FX09SX01PUkU6by5hdHRyKCJtYXJrZXItc3RhcnQiLCJ1cmwoIitsKyIjIitoYS5FUk1hcmtlcnMuT05FX09SX01PUkVfU1RBUlQrIikiKTticmVhaztjYXNlIGkuZGIuQ2FyZGluYWxpdHkuT05MWV9PTkU6by5hdHRyKCJtYXJrZXItc3RhcnQiLCJ1cmwoIitsKyIjIitoYS5FUk1hcmtlcnMuT05MWV9PTkVfU1RBUlQrIikiKTticmVha31jb25zdCB1PW8ubm9kZSgpLmdldFRvdGFsTGVuZ3RoKCksaD1vLm5vZGUoKS5nZXRQb2ludEF0TGVuZ3RoKHUqLjUpLGQ9InJlbCIraU0scD10LmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwiZXIgcmVsYXRpb25zaGlwTGFiZWwiKS5hdHRyKCJpZCIsZCkuYXR0cigieCIsaC54KS5hdHRyKCJ5IixoLnkpLmF0dHIoInRleHQtYW5jaG9yIiwibWlkZGxlIikuYXR0cigiZG9taW5hbnQtYmFzZWxpbmUiLCJtaWRkbGUiKS5hdHRyKCJzdHlsZSIsImZvbnQtZmFtaWx5OiAiK250KCkuZm9udEZhbWlseSsiOyBmb250LXNpemU6ICIrWWUuZm9udFNpemUrInB4IikudGV4dChlLnJvbGVBKS5ub2RlKCkuZ2V0QkJveCgpO3QuaW5zZXJ0KCJyZWN0IiwiIyIrZCkuYXR0cigiY2xhc3MiLCJlciByZWxhdGlvbnNoaXBMYWJlbEJveCIpLmF0dHIoIngiLGgueC1wLndpZHRoLzIpLmF0dHIoInkiLGgueS1wLmhlaWdodC8yKS5hdHRyKCJ3aWR0aCIscC53aWR0aCkuYXR0cigiaGVpZ2h0IixwLmhlaWdodCkuYXR0cigiZmlsbCIsIndoaXRlIikuYXR0cigiZmlsbC1vcGFjaXR5IiwiODUlIil9LEpldD1mdW5jdGlvbih0LGUscixuKXtZZT1udCgpLmVyLEguaW5mbygiRHJhd2luZyBFUiBkaWFncmFtIik7Y29uc3QgaT1udCgpLnNlY3VyaXR5TGV2ZWw7bGV0IGE7aT09PSJzYW5kYm94IiYmKGE9U3QoIiNpIitlKSk7Y29uc3Qgbz1TdChpPT09InNhbmRib3giP2Eubm9kZXMoKVswXS5jb250ZW50RG9jdW1lbnQuYm9keToiYm9keSIpLnNlbGVjdChgW2lkPScke2V9J11gKTtoYS5pbnNlcnRNYXJrZXJzKG8sWWUpO2xldCBsO2w9bmV3IGNyLkdyYXBoKHttdWx0aWdyYXBoOiEwLGRpcmVjdGVkOiEwLGNvbXBvdW5kOiExfSkuc2V0R3JhcGgoe3JhbmtkaXI6WWUubGF5b3V0RGlyZWN0aW9uLG1hcmdpbng6MjAsbWFyZ2lueToyMCxub2Rlc2VwOjEwMCxlZGdlc2VwOjEwMCxyYW5rc2VwOjEwMH0pLnNldERlZmF1bHRFZGdlTGFiZWwoZnVuY3Rpb24oKXtyZXR1cm57fX0pO2NvbnN0IHU9WGV0KG8sbi5kYi5nZXRFbnRpdGllcygpLGwpLGg9WmV0KG4uZGIuZ2V0UmVsYXRpb25zaGlwcygpLGwpO1pjLmxheW91dChsKSxLZXQobyxsKSxoLmZvckVhY2goZnVuY3Rpb24oXyl7UWV0KG8sXyxsLHUsbil9KTtjb25zdCBkPVllLmRpYWdyYW1QYWRkaW5nLGY9by5ub2RlKCkuZ2V0QkJveCgpLHA9Zi53aWR0aCtkKjIsbT1mLmhlaWdodCtkKjI7bGkobyxtLHAsWWUudXNlTWF4V2lkdGgpLG8uYXR0cigidmlld0JveCIsYCR7Zi54LWR9ICR7Zi55LWR9ICR7cH0gJHttfWApLGJuKG4uZGIsbyxlKX07ZnVuY3Rpb24gdHJ0KHQ9IiIsZT0iIil7Y29uc3Qgcj10LnJlcGxhY2UoR2V0LCIiKTtyZXR1cm5gJHthTShlKX0ke2FNKHIpfSR7SGV0KCl9YH1mdW5jdGlvbiBhTSh0PSIiKXtyZXR1cm4gdC5sZW5ndGg+MD9gJHt0fS1gOiIifWNvbnN0IGVydD17c2V0Q29uZjpqZXQsZHJhdzpKZXR9O3ZhciBYMT1mdW5jdGlvbigpe3ZhciB0PWZ1bmN0aW9uKExuLFh0LGVlLGNlKXtmb3IoZWU9ZWV8fHt9LGNlPUxuLmxlbmd0aDtjZS0tO2VlW0xuW2NlXV09WHQpO3JldHVybiBlZX0sZT1bMSw5XSxyPVsxLDddLG49WzEsNl0saT1bMSw4XSxhPVsxLDIwLDIxLDIyLDIzLDM4LDQ0LDQ2LDQ4LDUyLDY2LDY3LDg2LDg3LDg4LDg5LDkwLDkxLDk1LDEwNSwxMDYsMTA5LDExMSwxMTIsMTE4LDExOSwxMjAsMTIxLDEyMiwxMjMsMTI0LDEyNSwxMjYsMTI3XSxzPVsyLDEwXSxvPVsxLDIwXSxsPVsxLDIxXSx1PVsxLDIyXSxoPVsxLDIzXSxkPVsxLDMwXSxmPVsxLDMyXSxwPVsxLDMzXSxtPVsxLDM0XSxfPVsxLDYyXSx5PVsxLDQ4XSxiPVsxLDUyXSx4PVsxLDM2XSxrPVsxLDM3XSxUPVsxLDM4XSxDPVsxLDM5XSxNPVsxLDQwXSxTPVsxLDU2XSxSPVsxLDYzXSxBPVsxLDUxXSxMPVsxLDUzXSx2PVsxLDU1XSxCPVsxLDU5XSx3PVsxLDYwXSxEPVsxLDQxXSxOPVsxLDQyXSx6PVsxLDQzXSxYPVsxLDQ0XSxjdD1bMSw2MV0sSj1bMSw1MF0sWT1bMSw1NF0sJD1bMSw1N10sbHQ9WzEsNThdLHV0PVsxLDQ5XSxXPVsxLDY2XSx0dD1bMSw3MV0sSz1bMSwyMCwyMSwyMiwyMywzOCw0Miw0NCw0Niw0OCw1Miw2Niw2Nyw4Niw4Nyw4OCw4OSw5MCw5MSw5NSwxMDUsMTA2LDEwOSwxMTEsMTEyLDExOCwxMTksMTIwLDEyMSwxMjIsMTIzLDEyNCwxMjUsMTI2LDEyN10saXQ9WzEsNzVdLFo9WzEsNzRdLFY9WzEsNzZdLFE9WzIwLDIxLDIzLDgxLDgyXSxxPVsxLDk5XSxVPVsxLDEwNF0sRj1bMSwxMDddLGo9WzEsMTA4XSxQPVsxLDEwMV0sZXQ9WzEsMTA2XSxhdD1bMSwxMDldLEl0PVsxLDEwMl0sTHQ9WzEsMTE0XSxSdD1bMSwxMTNdLEN0PVsxLDEwM10scHQ9WzEsMTA1XSxtdD1bMSwxMTBdLHZ0PVsxLDExMV0sVHQ9WzEsMTEyXSxmdD1bMSwxMTVdLGxlPVsyMCwyMSwyMiwyMyw4MSw4Ml0sRHQ9WzIwLDIxLDIyLDIzLDUzLDgxLDgyXSxHdD1bMjAsMjEsMjIsMjMsNDAsNTIsNTMsNTUsNTcsNTksNjEsNjMsNjUsNjYsNjcsNjksNzEsNzMsNzQsNzYsODEsODIsOTEsOTUsMTA1LDEwNiwxMDksMTExLDExMiwxMjIsMTIzLDEyNCwxMjUsMTI2LDEyN10sJHQ9WzIwLDIxLDIzXSxRdD1bMjAsMjEsMjMsNTIsNjYsNjcsODEsODIsOTEsOTUsMTA1LDEwNiwxMDksMTExLDExMiwxMjIsMTIzLDEyNCwxMjUsMTI2LDEyN10sd2U9WzEsMTIsMjAsMjEsMjIsMjMsMjQsMzgsNDIsNDQsNDYsNDgsNTIsNjYsNjcsODYsODcsODgsODksOTAsOTEsOTUsMTA1LDEwNiwxMDksMTExLDExMiwxMTgsMTE5LDEyMCwxMjEsMTIyLDEyMywxMjQsMTI1LDEyNiwxMjddLGp0PVs1Miw2Niw2Nyw5MSw5NSwxMDUsMTA2LDEwOSwxMTEsMTEyLDEyMiwxMjMsMTI0LDEyNSwxMjYsMTI3XSxGdD1bMSwxNDldLHp0PVsxLDE1N10sd3Q9WzEsMTU4XSxidD1bMSwxNTldLEV0PVsxLDE2MF0sa3Q9WzEsMTQ0XSxVdD1bMSwxNDVdLGd0PVsxLDE0MV0saGU9WzEsMTUyXSx5dD1bMSwxNTNdLG5lPVsxLDE1NF0sdmU9WzEsMTU1XSx5ZT1bMSwxNTZdLGJlPVsxLDE2MV0sVGU9WzEsMTYyXSxXdD1bMSwxNDddLHNlPVsxLDE1MF0sbWU9WzEsMTQ2XSx1ZT1bMSwxNDNdLF9hPVsyMCwyMSwyMiwyMywzOCw0Miw0NCw0Niw0OCw1Miw2Niw2Nyw4Niw4Nyw4OCw4OSw5MCw5MSw5NSwxMDUsMTA2LDEwOSwxMTEsMTEyLDExOCwxMTksMTIwLDEyMSwxMjIsMTIzLDEyNCwxMjUsMTI2LDEyN10sSHI9WzEsMTY1XSxJZT1bMjAsMjEsMjIsMjMsMjYsNTIsNjYsNjcsOTEsMTA1LDEwNiwxMDksMTExLDExMiwxMjIsMTIzLDEyNCwxMjUsMTI2LDEyN10sb2U9WzIwLDIxLDIyLDIzLDI0LDI2LDM4LDQwLDQxLDQyLDUyLDU2LDU4LDYwLDYyLDY0LDY2LDY3LDY4LDcwLDcyLDczLDc1LDc3LDgxLDgyLDg2LDg3LDg4LDg5LDkwLDkxLDkyLDk1LDEwNSwxMDYsMTA5LDExMSwxMTIsMTEzLDExNCwxMjIsMTIzLDEyNCwxMjUsMTI2LDEyN10sS2U9WzEyLDIxLDIyLDI0XSx3cj1bMjIsMTA2XSxHZT1bMSwyNTBdLFplPVsxLDI0NV0scXQ9WzEsMjQ2XSxzdD1bMSwyNTRdLEF0PVsxLDI1MV0sTnQ9WzEsMjQ4XSxKdD1bMSwyNDddLHplPVsxLDI0OV0sUGU9WzEsMjUyXSxxZT1bMSwyNTNdLFRyPVsxLDI1NV0sVmU9WzEsMjczXSx2YT1bMjAsMjEsMjMsMTA2XSxDZT1bMjAsMjEsMjIsMjMsNjYsNjcsODYsMTAyLDEwNSwxMDYsMTA5LDExMCwxMTEsMTEyLDExM10sV2k9e3RyYWNlOmZ1bmN0aW9uKCl7fSx5eTp7fSxzeW1ib2xzXzp7ZXJyb3I6MixzdGFydDozLG1lcm1haWREb2M6NCxkaXJlY3RpdmU6NSxvcGVuRGlyZWN0aXZlOjYsdHlwZURpcmVjdGl2ZTo3LGNsb3NlRGlyZWN0aXZlOjgsc2VwYXJhdG9yOjksIjoiOjEwLGFyZ0RpcmVjdGl2ZToxMSxvcGVuX2RpcmVjdGl2ZToxMix0eXBlX2RpcmVjdGl2ZToxMyxhcmdfZGlyZWN0aXZlOjE0LGNsb3NlX2RpcmVjdGl2ZToxNSxncmFwaENvbmZpZzoxNixkb2N1bWVudDoxNyxsaW5lOjE4LHN0YXRlbWVudDoxOSxTRU1JOjIwLE5FV0xJTkU6MjEsU1BBQ0U6MjIsRU9GOjIzLEdSQVBIOjI0LE5PRElSOjI1LERJUjoyNixGaXJzdFN0bXRTZXBlcmF0b3I6MjcsZW5kaW5nOjI4LGVuZFRva2VuOjI5LHNwYWNlTGlzdDozMCxzcGFjZUxpc3ROZXdsaW5lOjMxLHZlcnRpY2VTdGF0ZW1lbnQ6MzIsc3R5bGVTdGF0ZW1lbnQ6MzMsbGlua1N0eWxlU3RhdGVtZW50OjM0LGNsYXNzRGVmU3RhdGVtZW50OjM1LGNsYXNzU3RhdGVtZW50OjM2LGNsaWNrU3RhdGVtZW50OjM3LHN1YmdyYXBoOjM4LHRleHQ6MzksU1FTOjQwLFNRRTo0MSxlbmQ6NDIsZGlyZWN0aW9uOjQzLGFjY190aXRsZTo0NCxhY2NfdGl0bGVfdmFsdWU6NDUsYWNjX2Rlc2NyOjQ2LGFjY19kZXNjcl92YWx1ZTo0NyxhY2NfZGVzY3JfbXVsdGlsaW5lX3ZhbHVlOjQ4LGxpbms6NDksbm9kZTo1MCx2ZXJ0ZXg6NTEsQU1QOjUyLFNUWUxFX1NFUEFSQVRPUjo1MyxpZFN0cmluZzo1NCxET1VCTEVDSVJDTEVTVEFSVDo1NSxET1VCTEVDSVJDTEVFTkQ6NTYsUFM6NTcsUEU6NTgsIigtIjo1OSwiLSkiOjYwLFNUQURJVU1TVEFSVDo2MSxTVEFESVVNRU5EOjYyLFNVQlJPVVRJTkVTVEFSVDo2MyxTVUJST1VUSU5FRU5EOjY0LFZFUlRFWF9XSVRIX1BST1BTX1NUQVJUOjY1LEFMUEhBOjY2LENPTE9OOjY3LFBJUEU6NjgsQ1lMSU5ERVJTVEFSVDo2OSxDWUxJTkRFUkVORDo3MCxESUFNT05EX1NUQVJUOjcxLERJQU1PTkRfU1RPUDo3MixUQUdFTkQ6NzMsVFJBUFNUQVJUOjc0LFRSQVBFTkQ6NzUsSU5WVFJBUFNUQVJUOjc2LElOVlRSQVBFTkQ6NzcsbGlua1N0YXRlbWVudDo3OCxhcnJvd1RleHQ6NzksVEVTVFNUUjo4MCxTVEFSVF9MSU5LOjgxLExJTks6ODIsdGV4dFRva2VuOjgzLFNUUjo4NCxrZXl3b3Jkczo4NSxTVFlMRTo4NixMSU5LU1RZTEU6ODcsQ0xBU1NERUY6ODgsQ0xBU1M6ODksQ0xJQ0s6OTAsRE9XTjo5MSxVUDo5Mix0ZXh0Tm9UYWdzOjkzLHRleHROb1RhZ3NUb2tlbjo5NCxERUZBVUxUOjk1LHN0eWxlc09wdDo5NixhbHBoYU51bTo5NyxDQUxMQkFDS05BTUU6OTgsQ0FMTEJBQ0tBUkdTOjk5LEhSRUY6MTAwLExJTktfVEFSR0VUOjEwMSxIRVg6MTAyLG51bUxpc3Q6MTAzLElOVEVSUE9MQVRFOjEwNCxOVU06MTA1LENPTU1BOjEwNixzdHlsZToxMDcsc3R5bGVDb21wb25lbnQ6MTA4LE1JTlVTOjEwOSxVTklUOjExMCxCUktUOjExMSxET1Q6MTEyLFBDVDoxMTMsVEFHU1RBUlQ6MTE0LGFscGhhTnVtVG9rZW46MTE1LGlkU3RyaW5nVG9rZW46MTE2LGFscGhhTnVtU3RhdGVtZW50OjExNyxkaXJlY3Rpb25fdGI6MTE4LGRpcmVjdGlvbl9idDoxMTksZGlyZWN0aW9uX3JsOjEyMCxkaXJlY3Rpb25fbHI6MTIxLFBVTkNUVUFUSU9OOjEyMixVTklDT0RFX1RFWFQ6MTIzLFBMVVM6MTI0LEVRVUFMUzoxMjUsTVVMVDoxMjYsVU5ERVJTQ09SRToxMjcsZ3JhcGhDb2RlVG9rZW5zOjEyOCxBUlJPV19DUk9TUzoxMjksQVJST1dfUE9JTlQ6MTMwLEFSUk9XX0NJUkNMRToxMzEsQVJST1dfT1BFTjoxMzIsUVVPVEU6MTMzLCRhY2NlcHQ6MCwkZW5kOjF9LHRlcm1pbmFsc186ezI6ImVycm9yIiwxMDoiOiIsMTI6Im9wZW5fZGlyZWN0aXZlIiwxMzoidHlwZV9kaXJlY3RpdmUiLDE0OiJhcmdfZGlyZWN0aXZlIiwxNToiY2xvc2VfZGlyZWN0aXZlIiwyMDoiU0VNSSIsMjE6Ik5FV0xJTkUiLDIyOiJTUEFDRSIsMjM6IkVPRiIsMjQ6IkdSQVBIIiwyNToiTk9ESVIiLDI2OiJESVIiLDM4OiJzdWJncmFwaCIsNDA6IlNRUyIsNDE6IlNRRSIsNDI6ImVuZCIsNDQ6ImFjY190aXRsZSIsNDU6ImFjY190aXRsZV92YWx1ZSIsNDY6ImFjY19kZXNjciIsNDc6ImFjY19kZXNjcl92YWx1ZSIsNDg6ImFjY19kZXNjcl9tdWx0aWxpbmVfdmFsdWUiLDUyOiJBTVAiLDUzOiJTVFlMRV9TRVBBUkFUT1IiLDU1OiJET1VCTEVDSVJDTEVTVEFSVCIsNTY6IkRPVUJMRUNJUkNMRUVORCIsNTc6IlBTIiw1ODoiUEUiLDU5OiIoLSIsNjA6Ii0pIiw2MToiU1RBRElVTVNUQVJUIiw2MjoiU1RBRElVTUVORCIsNjM6IlNVQlJPVVRJTkVTVEFSVCIsNjQ6IlNVQlJPVVRJTkVFTkQiLDY1OiJWRVJURVhfV0lUSF9QUk9QU19TVEFSVCIsNjY6IkFMUEhBIiw2NzoiQ09MT04iLDY4OiJQSVBFIiw2OToiQ1lMSU5ERVJTVEFSVCIsNzA6IkNZTElOREVSRU5EIiw3MToiRElBTU9ORF9TVEFSVCIsNzI6IkRJQU1PTkRfU1RPUCIsNzM6IlRBR0VORCIsNzQ6IlRSQVBTVEFSVCIsNzU6IlRSQVBFTkQiLDc2OiJJTlZUUkFQU1RBUlQiLDc3OiJJTlZUUkFQRU5EIiw4MDoiVEVTVFNUUiIsODE6IlNUQVJUX0xJTksiLDgyOiJMSU5LIiw4NDoiU1RSIiw4NjoiU1RZTEUiLDg3OiJMSU5LU1RZTEUiLDg4OiJDTEFTU0RFRiIsODk6IkNMQVNTIiw5MDoiQ0xJQ0siLDkxOiJET1dOIiw5MjoiVVAiLDk1OiJERUZBVUxUIiw5ODoiQ0FMTEJBQ0tOQU1FIiw5OToiQ0FMTEJBQ0tBUkdTIiwxMDA6IkhSRUYiLDEwMToiTElOS19UQVJHRVQiLDEwMjoiSEVYIiwxMDQ6IklOVEVSUE9MQVRFIiwxMDU6Ik5VTSIsMTA2OiJDT01NQSIsMTA5OiJNSU5VUyIsMTEwOiJVTklUIiwxMTE6IkJSS1QiLDExMjoiRE9UIiwxMTM6IlBDVCIsMTE0OiJUQUdTVEFSVCIsMTE4OiJkaXJlY3Rpb25fdGIiLDExOToiZGlyZWN0aW9uX2J0IiwxMjA6ImRpcmVjdGlvbl9ybCIsMTIxOiJkaXJlY3Rpb25fbHIiLDEyMjoiUFVOQ1RVQVRJT04iLDEyMzoiVU5JQ09ERV9URVhUIiwxMjQ6IlBMVVMiLDEyNToiRVFVQUxTIiwxMjY6Ik1VTFQiLDEyNzoiVU5ERVJTQ09SRSIsMTI5OiJBUlJPV19DUk9TUyIsMTMwOiJBUlJPV19QT0lOVCIsMTMxOiJBUlJPV19DSVJDTEUiLDEzMjoiQVJST1dfT1BFTiIsMTMzOiJRVU9URSJ9LHByb2R1Y3Rpb25zXzpbMCxbMywxXSxbMywyXSxbNSw0XSxbNSw2XSxbNiwxXSxbNywxXSxbMTEsMV0sWzgsMV0sWzQsMl0sWzE3LDBdLFsxNywyXSxbMTgsMV0sWzE4LDFdLFsxOCwxXSxbMTgsMV0sWzE4LDFdLFsxNiwyXSxbMTYsMl0sWzE2LDJdLFsxNiwzXSxbMjgsMl0sWzI4LDFdLFsyOSwxXSxbMjksMV0sWzI5LDFdLFsyNywxXSxbMjcsMV0sWzI3LDJdLFszMSwyXSxbMzEsMl0sWzMxLDFdLFszMSwxXSxbMzAsMl0sWzMwLDFdLFsxOSwyXSxbMTksMl0sWzE5LDJdLFsxOSwyXSxbMTksMl0sWzE5LDJdLFsxOSw5XSxbMTksNl0sWzE5LDRdLFsxOSwxXSxbMTksMl0sWzE5LDJdLFsxOSwxXSxbOSwxXSxbOSwxXSxbOSwxXSxbMzIsM10sWzMyLDRdLFszMiwyXSxbMzIsMV0sWzUwLDFdLFs1MCw1XSxbNTAsM10sWzUxLDRdLFs1MSw0XSxbNTEsNl0sWzUxLDRdLFs1MSw0XSxbNTEsNF0sWzUxLDhdLFs1MSw0XSxbNTEsNF0sWzUxLDRdLFs1MSw2XSxbNTEsNF0sWzUxLDRdLFs1MSw0XSxbNTEsNF0sWzUxLDRdLFs1MSwxXSxbNDksMl0sWzQ5LDNdLFs0OSwzXSxbNDksMV0sWzQ5LDNdLFs3OCwxXSxbNzksM10sWzM5LDFdLFszOSwyXSxbMzksMV0sWzg1LDFdLFs4NSwxXSxbODUsMV0sWzg1LDFdLFs4NSwxXSxbODUsMV0sWzg1LDFdLFs4NSwxXSxbODUsMV0sWzg1LDFdLFs4NSwxXSxbOTMsMV0sWzkzLDJdLFszNSw1XSxbMzUsNV0sWzM2LDVdLFszNywyXSxbMzcsNF0sWzM3LDNdLFszNyw1XSxbMzcsMl0sWzM3LDRdLFszNyw0XSxbMzcsNl0sWzM3LDJdLFszNyw0XSxbMzcsMl0sWzM3LDRdLFszNyw0XSxbMzcsNl0sWzMzLDVdLFszMyw1XSxbMzQsNV0sWzM0LDVdLFszNCw5XSxbMzQsOV0sWzM0LDddLFszNCw3XSxbMTAzLDFdLFsxMDMsM10sWzk2LDFdLFs5NiwzXSxbMTA3LDFdLFsxMDcsMl0sWzEwOCwxXSxbMTA4LDFdLFsxMDgsMV0sWzEwOCwxXSxbMTA4LDFdLFsxMDgsMV0sWzEwOCwxXSxbMTA4LDFdLFsxMDgsMV0sWzEwOCwxXSxbMTA4LDFdLFs4MywxXSxbODMsMV0sWzgzLDFdLFs4MywxXSxbODMsMV0sWzgzLDFdLFs5NCwxXSxbOTQsMV0sWzk0LDFdLFs5NCwxXSxbNTQsMV0sWzU0LDJdLFs5NywxXSxbOTcsMl0sWzExNywxXSxbMTE3LDFdLFsxMTcsMV0sWzExNywxXSxbNDMsMV0sWzQzLDFdLFs0MywxXSxbNDMsMV0sWzExNSwxXSxbMTE1LDFdLFsxMTUsMV0sWzExNSwxXSxbMTE1LDFdLFsxMTUsMV0sWzExNSwxXSxbMTE1LDFdLFsxMTUsMV0sWzExNSwxXSxbMTE1LDFdLFsxMTUsMV0sWzExNSwxXSxbMTE2LDFdLFsxMTYsMV0sWzExNiwxXSxbMTE2LDFdLFsxMTYsMV0sWzExNiwxXSxbMTE2LDFdLFsxMTYsMV0sWzExNiwxXSxbMTE2LDFdLFsxMTYsMV0sWzExNiwxXSxbMTE2LDFdLFsxMTYsMV0sWzExNiwxXSxbMTE2LDFdLFsxMjgsMV0sWzEyOCwxXSxbMTI4LDFdLFsxMjgsMV0sWzEyOCwxXSxbMTI4LDFdLFsxMjgsMV0sWzEyOCwxXSxbMTI4LDFdLFsxMjgsMV0sWzEyOCwxXSxbMTI4LDFdLFsxMjgsMV0sWzEyOCwxXSxbMTI4LDFdLFsxMjgsMV0sWzEyOCwxXSxbMTI4LDFdLFsxMjgsMV0sWzEyOCwxXSxbMTI4LDFdLFsxMjgsMV0sWzEyOCwxXSxbMTI4LDFdLFsxMjgsMV0sWzEyOCwxXV0scGVyZm9ybUFjdGlvbjpmdW5jdGlvbihYdCxlZSxjZSxQdCxqZSxydCxLcyl7dmFyIG90PXJ0Lmxlbmd0aC0xO3N3aXRjaChqZSl7Y2FzZSA1OlB0LnBhcnNlRGlyZWN0aXZlKCIlJXsiLCJvcGVuX2RpcmVjdGl2ZSIpO2JyZWFrO2Nhc2UgNjpQdC5wYXJzZURpcmVjdGl2ZShydFtvdF0sInR5cGVfZGlyZWN0aXZlIik7YnJlYWs7Y2FzZSA3OnJ0W290XT1ydFtvdF0udHJpbSgpLnJlcGxhY2UoLycvZywnIicpLFB0LnBhcnNlRGlyZWN0aXZlKHJ0W290XSwiYXJnX2RpcmVjdGl2ZSIpO2JyZWFrO2Nhc2UgODpQdC5wYXJzZURpcmVjdGl2ZSgifSUlIiwiY2xvc2VfZGlyZWN0aXZlIiwiZmxvd2NoYXJ0Iik7YnJlYWs7Y2FzZSAxMDp0aGlzLiQ9W107YnJlYWs7Y2FzZSAxMTooIUFycmF5LmlzQXJyYXkocnRbb3RdKXx8cnRbb3RdLmxlbmd0aD4wKSYmcnRbb3QtMV0ucHVzaChydFtvdF0pLHRoaXMuJD1ydFtvdC0xXTticmVhaztjYXNlIDEyOmNhc2UgODI6Y2FzZSA4NDpjYXNlIDk2OmNhc2UgMTUyOmNhc2UgMTU0OmNhc2UgMTU1OnRoaXMuJD1ydFtvdF07YnJlYWs7Y2FzZSAxOTpQdC5zZXREaXJlY3Rpb24oIlRCIiksdGhpcy4kPSJUQiI7YnJlYWs7Y2FzZSAyMDpQdC5zZXREaXJlY3Rpb24ocnRbb3QtMV0pLHRoaXMuJD1ydFtvdC0xXTticmVhaztjYXNlIDM1OnRoaXMuJD1ydFtvdC0xXS5ub2RlczticmVhaztjYXNlIDM2OmNhc2UgMzc6Y2FzZSAzODpjYXNlIDM5OmNhc2UgNDA6dGhpcy4kPVtdO2JyZWFrO2Nhc2UgNDE6dGhpcy4kPVB0LmFkZFN1YkdyYXBoKHJ0W290LTZdLHJ0W290LTFdLHJ0W290LTRdKTticmVhaztjYXNlIDQyOnRoaXMuJD1QdC5hZGRTdWJHcmFwaChydFtvdC0zXSxydFtvdC0xXSxydFtvdC0zXSk7YnJlYWs7Y2FzZSA0Mzp0aGlzLiQ9UHQuYWRkU3ViR3JhcGgodm9pZCAwLHJ0W290LTFdLHZvaWQgMCk7YnJlYWs7Y2FzZSA0NTp0aGlzLiQ9cnRbb3RdLnRyaW0oKSxQdC5zZXRBY2NUaXRsZSh0aGlzLiQpO2JyZWFrO2Nhc2UgNDY6Y2FzZSA0Nzp0aGlzLiQ9cnRbb3RdLnRyaW0oKSxQdC5zZXRBY2NEZXNjcmlwdGlvbih0aGlzLiQpO2JyZWFrO2Nhc2UgNTE6UHQuYWRkTGluayhydFtvdC0yXS5zdG10LHJ0W290XSxydFtvdC0xXSksdGhpcy4kPXtzdG10OnJ0W290XSxub2RlczpydFtvdF0uY29uY2F0KHJ0W290LTJdLm5vZGVzKX07YnJlYWs7Y2FzZSA1MjpQdC5hZGRMaW5rKHJ0W290LTNdLnN0bXQscnRbb3QtMV0scnRbb3QtMl0pLHRoaXMuJD17c3RtdDpydFtvdC0xXSxub2RlczpydFtvdC0xXS5jb25jYXQocnRbb3QtM10ubm9kZXMpfTticmVhaztjYXNlIDUzOnRoaXMuJD17c3RtdDpydFtvdC0xXSxub2RlczpydFtvdC0xXX07YnJlYWs7Y2FzZSA1NDp0aGlzLiQ9e3N0bXQ6cnRbb3RdLG5vZGVzOnJ0W290XX07YnJlYWs7Y2FzZSA1NTp0aGlzLiQ9W3J0W290XV07YnJlYWs7Y2FzZSA1Njp0aGlzLiQ9cnRbb3QtNF0uY29uY2F0KHJ0W290XSk7YnJlYWs7Y2FzZSA1Nzp0aGlzLiQ9W3J0W290LTJdXSxQdC5zZXRDbGFzcyhydFtvdC0yXSxydFtvdF0pO2JyZWFrO2Nhc2UgNTg6dGhpcy4kPXJ0W290LTNdLFB0LmFkZFZlcnRleChydFtvdC0zXSxydFtvdC0xXSwic3F1YXJlIik7YnJlYWs7Y2FzZSA1OTp0aGlzLiQ9cnRbb3QtM10sUHQuYWRkVmVydGV4KHJ0W290LTNdLHJ0W290LTFdLCJkb3VibGVjaXJjbGUiKTticmVhaztjYXNlIDYwOnRoaXMuJD1ydFtvdC01XSxQdC5hZGRWZXJ0ZXgocnRbb3QtNV0scnRbb3QtMl0sImNpcmNsZSIpO2JyZWFrO2Nhc2UgNjE6dGhpcy4kPXJ0W290LTNdLFB0LmFkZFZlcnRleChydFtvdC0zXSxydFtvdC0xXSwiZWxsaXBzZSIpO2JyZWFrO2Nhc2UgNjI6dGhpcy4kPXJ0W290LTNdLFB0LmFkZFZlcnRleChydFtvdC0zXSxydFtvdC0xXSwic3RhZGl1bSIpO2JyZWFrO2Nhc2UgNjM6dGhpcy4kPXJ0W290LTNdLFB0LmFkZFZlcnRleChydFtvdC0zXSxydFtvdC0xXSwic3Vicm91dGluZSIpO2JyZWFrO2Nhc2UgNjQ6dGhpcy4kPXJ0W290LTddLFB0LmFkZFZlcnRleChydFtvdC03XSxydFtvdC0xXSwicmVjdCIsdm9pZCAwLHZvaWQgMCx2b2lkIDAsT2JqZWN0LmZyb21FbnRyaWVzKFtbcnRbb3QtNV0scnRbb3QtM11dXSkpO2JyZWFrO2Nhc2UgNjU6dGhpcy4kPXJ0W290LTNdLFB0LmFkZFZlcnRleChydFtvdC0zXSxydFtvdC0xXSwiY3lsaW5kZXIiKTticmVhaztjYXNlIDY2OnRoaXMuJD1ydFtvdC0zXSxQdC5hZGRWZXJ0ZXgocnRbb3QtM10scnRbb3QtMV0sInJvdW5kIik7YnJlYWs7Y2FzZSA2Nzp0aGlzLiQ9cnRbb3QtM10sUHQuYWRkVmVydGV4KHJ0W290LTNdLHJ0W290LTFdLCJkaWFtb25kIik7YnJlYWs7Y2FzZSA2ODp0aGlzLiQ9cnRbb3QtNV0sUHQuYWRkVmVydGV4KHJ0W290LTVdLHJ0W290LTJdLCJoZXhhZ29uIik7YnJlYWs7Y2FzZSA2OTp0aGlzLiQ9cnRbb3QtM10sUHQuYWRkVmVydGV4KHJ0W290LTNdLHJ0W290LTFdLCJvZGQiKTticmVhaztjYXNlIDcwOnRoaXMuJD1ydFtvdC0zXSxQdC5hZGRWZXJ0ZXgocnRbb3QtM10scnRbb3QtMV0sInRyYXBlem9pZCIpO2JyZWFrO2Nhc2UgNzE6dGhpcy4kPXJ0W290LTNdLFB0LmFkZFZlcnRleChydFtvdC0zXSxydFtvdC0xXSwiaW52X3RyYXBlem9pZCIpO2JyZWFrO2Nhc2UgNzI6dGhpcy4kPXJ0W290LTNdLFB0LmFkZFZlcnRleChydFtvdC0zXSxydFtvdC0xXSwibGVhbl9yaWdodCIpO2JyZWFrO2Nhc2UgNzM6dGhpcy4kPXJ0W290LTNdLFB0LmFkZFZlcnRleChydFtvdC0zXSxydFtvdC0xXSwibGVhbl9sZWZ0Iik7YnJlYWs7Y2FzZSA3NDp0aGlzLiQ9cnRbb3RdLFB0LmFkZFZlcnRleChydFtvdF0pO2JyZWFrO2Nhc2UgNzU6cnRbb3QtMV0udGV4dD1ydFtvdF0sdGhpcy4kPXJ0W290LTFdO2JyZWFrO2Nhc2UgNzY6Y2FzZSA3NzpydFtvdC0yXS50ZXh0PXJ0W290LTFdLHRoaXMuJD1ydFtvdC0yXTticmVhaztjYXNlIDc4OnRoaXMuJD1ydFtvdF07YnJlYWs7Y2FzZSA3OTp2YXIgR3I9UHQuZGVzdHJ1Y3RMaW5rKHJ0W290XSxydFtvdC0yXSk7dGhpcy4kPXt0eXBlOkdyLnR5cGUsc3Ryb2tlOkdyLnN0cm9rZSxsZW5ndGg6R3IubGVuZ3RoLHRleHQ6cnRbb3QtMV19O2JyZWFrO2Nhc2UgODA6dmFyIEdyPVB0LmRlc3RydWN0TGluayhydFtvdF0pO3RoaXMuJD17dHlwZTpHci50eXBlLHN0cm9rZTpHci5zdHJva2UsbGVuZ3RoOkdyLmxlbmd0aH07YnJlYWs7Y2FzZSA4MTp0aGlzLiQ9cnRbb3QtMV07YnJlYWs7Y2FzZSA4MzpjYXNlIDk3OmNhc2UgMTUzOnRoaXMuJD1ydFtvdC0xXSsiIitydFtvdF07YnJlYWs7Y2FzZSA5ODpjYXNlIDk5OnRoaXMuJD1ydFtvdC00XSxQdC5hZGRDbGFzcyhydFtvdC0yXSxydFtvdF0pO2JyZWFrO2Nhc2UgMTAwOnRoaXMuJD1ydFtvdC00XSxQdC5zZXRDbGFzcyhydFtvdC0yXSxydFtvdF0pO2JyZWFrO2Nhc2UgMTAxOmNhc2UgMTA5OnRoaXMuJD1ydFtvdC0xXSxQdC5zZXRDbGlja0V2ZW50KHJ0W290LTFdLHJ0W290XSk7YnJlYWs7Y2FzZSAxMDI6Y2FzZSAxMTA6dGhpcy4kPXJ0W290LTNdLFB0LnNldENsaWNrRXZlbnQocnRbb3QtM10scnRbb3QtMl0pLFB0LnNldFRvb2x0aXAocnRbb3QtM10scnRbb3RdKTticmVhaztjYXNlIDEwMzp0aGlzLiQ9cnRbb3QtMl0sUHQuc2V0Q2xpY2tFdmVudChydFtvdC0yXSxydFtvdC0xXSxydFtvdF0pO2JyZWFrO2Nhc2UgMTA0OnRoaXMuJD1ydFtvdC00XSxQdC5zZXRDbGlja0V2ZW50KHJ0W290LTRdLHJ0W290LTNdLHJ0W290LTJdKSxQdC5zZXRUb29sdGlwKHJ0W290LTRdLHJ0W290XSk7YnJlYWs7Y2FzZSAxMDU6Y2FzZSAxMTE6dGhpcy4kPXJ0W290LTFdLFB0LnNldExpbmsocnRbb3QtMV0scnRbb3RdKTticmVhaztjYXNlIDEwNjpjYXNlIDExMjp0aGlzLiQ9cnRbb3QtM10sUHQuc2V0TGluayhydFtvdC0zXSxydFtvdC0yXSksUHQuc2V0VG9vbHRpcChydFtvdC0zXSxydFtvdF0pO2JyZWFrO2Nhc2UgMTA3OmNhc2UgMTEzOnRoaXMuJD1ydFtvdC0zXSxQdC5zZXRMaW5rKHJ0W290LTNdLHJ0W290LTJdLHJ0W290XSk7YnJlYWs7Y2FzZSAxMDg6Y2FzZSAxMTQ6dGhpcy4kPXJ0W290LTVdLFB0LnNldExpbmsocnRbb3QtNV0scnRbb3QtNF0scnRbb3RdKSxQdC5zZXRUb29sdGlwKHJ0W290LTVdLHJ0W290LTJdKTticmVhaztjYXNlIDExNTp0aGlzLiQ9cnRbb3QtNF0sUHQuYWRkVmVydGV4KHJ0W290LTJdLHZvaWQgMCx2b2lkIDAscnRbb3RdKTticmVhaztjYXNlIDExNjpjYXNlIDExODp0aGlzLiQ9cnRbb3QtNF0sUHQudXBkYXRlTGluayhydFtvdC0yXSxydFtvdF0pO2JyZWFrO2Nhc2UgMTE3OnRoaXMuJD1ydFtvdC00XSxQdC51cGRhdGVMaW5rKFtydFtvdC0yXV0scnRbb3RdKTticmVhaztjYXNlIDExOTp0aGlzLiQ9cnRbb3QtOF0sUHQudXBkYXRlTGlua0ludGVycG9sYXRlKFtydFtvdC02XV0scnRbb3QtMl0pLFB0LnVwZGF0ZUxpbmsoW3J0W290LTZdXSxydFtvdF0pO2JyZWFrO2Nhc2UgMTIwOnRoaXMuJD1ydFtvdC04XSxQdC51cGRhdGVMaW5rSW50ZXJwb2xhdGUocnRbb3QtNl0scnRbb3QtMl0pLFB0LnVwZGF0ZUxpbmsocnRbb3QtNl0scnRbb3RdKTticmVhaztjYXNlIDEyMTp0aGlzLiQ9cnRbb3QtNl0sUHQudXBkYXRlTGlua0ludGVycG9sYXRlKFtydFtvdC00XV0scnRbb3RdKTticmVhaztjYXNlIDEyMjp0aGlzLiQ9cnRbb3QtNl0sUHQudXBkYXRlTGlua0ludGVycG9sYXRlKHJ0W290LTRdLHJ0W290XSk7YnJlYWs7Y2FzZSAxMjM6Y2FzZSAxMjU6dGhpcy4kPVtydFtvdF1dO2JyZWFrO2Nhc2UgMTI0OmNhc2UgMTI2OnJ0W290LTJdLnB1c2gocnRbb3RdKSx0aGlzLiQ9cnRbb3QtMl07YnJlYWs7Y2FzZSAxMjg6dGhpcy4kPXJ0W290LTFdK3J0W290XTticmVhaztjYXNlIDE1MDp0aGlzLiQ9cnRbb3RdO2JyZWFrO2Nhc2UgMTUxOnRoaXMuJD1ydFtvdC0xXSsiIitydFtvdF07YnJlYWs7Y2FzZSAxNTY6dGhpcy4kPSJ2IjticmVhaztjYXNlIDE1Nzp0aGlzLiQ9Ii0iO2JyZWFrO2Nhc2UgMTU4OnRoaXMuJD17c3RtdDoiZGlyIix2YWx1ZToiVEIifTticmVhaztjYXNlIDE1OTp0aGlzLiQ9e3N0bXQ6ImRpciIsdmFsdWU6IkJUIn07YnJlYWs7Y2FzZSAxNjA6dGhpcy4kPXtzdG10OiJkaXIiLHZhbHVlOiJSTCJ9O2JyZWFrO2Nhc2UgMTYxOnRoaXMuJD17c3RtdDoiZGlyIix2YWx1ZToiTFIifTticmVha319LHRhYmxlOlt7MzoxLDQ6Miw1OjMsNjo1LDEyOmUsMTY6NCwyMTpyLDIyOm4sMjQ6aX0sezE6WzNdfSx7MTpbMiwxXX0sezM6MTAsNDoyLDU6Myw2OjUsMTI6ZSwxNjo0LDIxOnIsMjI6biwyNDppfSx0KGEscyx7MTc6MTF9KSx7NzoxMiwxMzpbMSwxM119LHsxNjoxNCwyMTpyLDIyOm4sMjQ6aX0sezE2OjE1LDIxOnIsMjI6biwyNDppfSx7MjU6WzEsMTZdLDI2OlsxLDE3XX0sezEzOlsyLDVdfSx7MTpbMiwyXX0sezE6WzIsOV0sMTg6MTgsMTk6MTksMjA6bywyMTpsLDIyOnUsMjM6aCwzMjoyNCwzMzoyNSwzNDoyNiwzNToyNywzNjoyOCwzNzoyOSwzODpkLDQzOjMxLDQ0OmYsNDY6cCw0ODptLDUwOjM1LDUxOjQ1LDUyOl8sNTQ6NDYsNjY6eSw2NzpiLDg2OngsODc6ayw4ODpULDg5OkMsOTA6TSw5MTpTLDk1OlIsMTA1OkEsMTA2OkwsMTA5OnYsMTExOkIsMTEyOncsMTE2OjQ3LDExODpELDExOTpOLDEyMDp6LDEyMTpYLDEyMjpjdCwxMjM6SiwxMjQ6WSwxMjU6JCwxMjY6bHQsMTI3OnV0fSx7ODo2NCwxMDpbMSw2NV0sMTU6V30sdChbMTAsMTVdLFsyLDZdKSx0KGEsWzIsMTddKSx0KGEsWzIsMThdKSx0KGEsWzIsMTldKSx7MjA6WzEsNjhdLDIxOlsxLDY5XSwyMjp0dCwyNzo2NywzMDo3MH0sdChLLFsyLDExXSksdChLLFsyLDEyXSksdChLLFsyLDEzXSksdChLLFsyLDE0XSksdChLLFsyLDE1XSksdChLLFsyLDE2XSksezk6NzIsMjA6aXQsMjE6WiwyMzpWLDQ5OjczLDc4Ojc3LDgxOlsxLDc4XSw4MjpbMSw3OV19LHs5OjgwLDIwOml0LDIxOlosMjM6Vn0sezk6ODEsMjA6aXQsMjE6WiwyMzpWfSx7OTo4MiwyMDppdCwyMTpaLDIzOlZ9LHs5OjgzLDIwOml0LDIxOlosMjM6Vn0sezk6ODQsMjA6aXQsMjE6WiwyMzpWfSx7OTo4NiwyMDppdCwyMTpaLDIyOlsxLDg1XSwyMzpWfSx0KEssWzIsNDRdKSx7NDU6WzEsODddfSx7NDc6WzEsODhdfSx0KEssWzIsNDddKSx0KFEsWzIsNTRdLHszMDo4OSwyMjp0dH0pLHsyMjpbMSw5MF19LHsyMjpbMSw5MV19LHsyMjpbMSw5Ml19LHsyMjpbMSw5M119LHsyNjpxLDUyOlUsNjY6Riw2NzpqLDg0OlsxLDk3XSw5MTpQLDk3Ojk2LDk4OlsxLDk0XSwxMDA6WzEsOTVdLDEwNTpldCwxMDY6YXQsMTA5Okl0LDExMTpMdCwxMTI6UnQsMTE1OjEwMCwxMTc6OTgsMTIyOkN0LDEyMzpwdCwxMjQ6bXQsMTI1OnZ0LDEyNjpUdCwxMjc6ZnR9LHQoSyxbMiwxNThdKSx0KEssWzIsMTU5XSksdChLLFsyLDE2MF0pLHQoSyxbMiwxNjFdKSx0KGxlLFsyLDU1XSx7NTM6WzEsMTE2XX0pLHQoRHQsWzIsNzRdLHsxMTY6MTI5LDQwOlsxLDExN10sNTI6Xyw1NTpbMSwxMThdLDU3OlsxLDExOV0sNTk6WzEsMTIwXSw2MTpbMSwxMjFdLDYzOlsxLDEyMl0sNjU6WzEsMTIzXSw2Njp5LDY3OmIsNjk6WzEsMTI0XSw3MTpbMSwxMjVdLDczOlsxLDEyNl0sNzQ6WzEsMTI3XSw3NjpbMSwxMjhdLDkxOlMsOTU6UiwxMDU6QSwxMDY6TCwxMDk6diwxMTE6QiwxMTI6dywxMjI6Y3QsMTIzOkosMTI0OlksMTI1OiQsMTI2Omx0LDEyNzp1dH0pLHQoR3QsWzIsMTUwXSksdChHdCxbMiwxNzVdKSx0KEd0LFsyLDE3Nl0pLHQoR3QsWzIsMTc3XSksdChHdCxbMiwxNzhdKSx0KEd0LFsyLDE3OV0pLHQoR3QsWzIsMTgwXSksdChHdCxbMiwxODFdKSx0KEd0LFsyLDE4Ml0pLHQoR3QsWzIsMTgzXSksdChHdCxbMiwxODRdKSx0KEd0LFsyLDE4NV0pLHQoR3QsWzIsMTg2XSksdChHdCxbMiwxODddKSx0KEd0LFsyLDE4OF0pLHQoR3QsWzIsMTg5XSksdChHdCxbMiwxOTBdKSx7OToxMzAsMjA6aXQsMjE6WiwyMzpWfSx7MTE6MTMxLDE0OlsxLDEzMl19LHQoJHQsWzIsOF0pLHQoYSxbMiwyMF0pLHQoYSxbMiwyNl0pLHQoYSxbMiwyN10pLHsyMTpbMSwxMzNdfSx0KFF0LFsyLDM0XSx7MzA6MTM0LDIyOnR0fSksdChLLFsyLDM1XSksezUwOjEzNSw1MTo0NSw1MjpfLDU0OjQ2LDY2OnksNjc6Yiw5MTpTLDk1OlIsMTA1OkEsMTA2OkwsMTA5OnYsMTExOkIsMTEyOncsMTE2OjQ3LDEyMjpjdCwxMjM6SiwxMjQ6WSwxMjU6JCwxMjY6bHQsMTI3OnV0fSx0KHdlLFsyLDQ4XSksdCh3ZSxbMiw0OV0pLHQod2UsWzIsNTBdKSx0KGp0LFsyLDc4XSx7Nzk6MTM2LDY4OlsxLDEzOF0sODA6WzEsMTM3XX0pLHsyMjpGdCwyNDp6dCwyNjp3dCwzODpidCwzOToxMzksNDI6RXQsNTI6VSw2NjpGLDY3OmosNzM6a3QsODE6VXQsODM6MTQwLDg0Omd0LDg1OjE1MSw4NjpoZSw4Nzp5dCw4ODpuZSw4OTp2ZSw5MDp5ZSw5MTpiZSw5MjpUZSw5NDoxNDIsOTU6V3QsMTA1OmV0LDEwNjphdCwxMDk6c2UsMTExOkx0LDExMjpSdCwxMTM6bWUsMTE0OnVlLDExNToxNDgsMTIyOkN0LDEyMzpwdCwxMjQ6bXQsMTI1OnZ0LDEyNjpUdCwxMjc6ZnR9LHQoWzUyLDY2LDY3LDY4LDgwLDkxLDk1LDEwNSwxMDYsMTA5LDExMSwxMTIsMTIyLDEyMywxMjQsMTI1LDEyNiwxMjddLFsyLDgwXSksdChLLFsyLDM2XSksdChLLFsyLDM3XSksdChLLFsyLDM4XSksdChLLFsyLDM5XSksdChLLFsyLDQwXSksezIyOkZ0LDI0Onp0LDI2Ond0LDM4OmJ0LDM5OjE2Myw0MjpFdCw1MjpVLDY2OkYsNjc6aiw3MzprdCw4MTpVdCw4MzoxNDAsODQ6Z3QsODU6MTUxLDg2OmhlLDg3Onl0LDg4Om5lLDg5OnZlLDkwOnllLDkxOmJlLDkyOlRlLDk0OjE0Miw5NTpXdCwxMDU6ZXQsMTA2OmF0LDEwOTpzZSwxMTE6THQsMTEyOlJ0LDExMzptZSwxMTQ6dWUsMTE1OjE0OCwxMjI6Q3QsMTIzOnB0LDEyNDptdCwxMjU6dnQsMTI2OlR0LDEyNzpmdH0sdChfYSxzLHsxNzoxNjR9KSx0KEssWzIsNDVdKSx0KEssWzIsNDZdKSx0KFEsWzIsNTNdLHs1MjpIcn0pLHsyNjpxLDUyOlUsNjY6Riw2NzpqLDkxOlAsOTc6MTY2LDEwMjpbMSwxNjddLDEwNTpldCwxMDY6YXQsMTA5Okl0LDExMTpMdCwxMTI6UnQsMTE1OjEwMCwxMTc6OTgsMTIyOkN0LDEyMzpwdCwxMjQ6bXQsMTI1OnZ0LDEyNjpUdCwxMjc6ZnR9LHs5NTpbMSwxNjhdLDEwMzoxNjksMTA1OlsxLDE3MF19LHsyNjpxLDUyOlUsNjY6Riw2NzpqLDkxOlAsOTU6WzEsMTcxXSw5NzoxNzIsMTA1OmV0LDEwNjphdCwxMDk6SXQsMTExOkx0LDExMjpSdCwxMTU6MTAwLDExNzo5OCwxMjI6Q3QsMTIzOnB0LDEyNDptdCwxMjU6dnQsMTI2OlR0LDEyNzpmdH0sezI2OnEsNTI6VSw2NjpGLDY3OmosOTE6UCw5NzoxNzMsMTA1OmV0LDEwNjphdCwxMDk6SXQsMTExOkx0LDExMjpSdCwxMTU6MTAwLDExNzo5OCwxMjI6Q3QsMTIzOnB0LDEyNDptdCwxMjU6dnQsMTI2OlR0LDEyNzpmdH0sdCgkdCxbMiwxMDFdLHsyMjpbMSwxNzRdLDk5OlsxLDE3NV19KSx0KCR0LFsyLDEwNV0sezIyOlsxLDE3Nl19KSx0KCR0LFsyLDEwOV0sezExNToxMDAsMTE3OjE3OCwyMjpbMSwxNzddLDI2OnEsNTI6VSw2NjpGLDY3OmosOTE6UCwxMDU6ZXQsMTA2OmF0LDEwOTpJdCwxMTE6THQsMTEyOlJ0LDEyMjpDdCwxMjM6cHQsMTI0Om10LDEyNTp2dCwxMjY6VHQsMTI3OmZ0fSksdCgkdCxbMiwxMTFdLHsyMjpbMSwxNzldfSksdChJZSxbMiwxNTJdKSx0KEllLFsyLDE1NF0pLHQoSWUsWzIsMTU1XSksdChJZSxbMiwxNTZdKSx0KEllLFsyLDE1N10pLHQob2UsWzIsMTYyXSksdChvZSxbMiwxNjNdKSx0KG9lLFsyLDE2NF0pLHQob2UsWzIsMTY1XSksdChvZSxbMiwxNjZdKSx0KG9lLFsyLDE2N10pLHQob2UsWzIsMTY4XSksdChvZSxbMiwxNjldKSx0KG9lLFsyLDE3MF0pLHQob2UsWzIsMTcxXSksdChvZSxbMiwxNzJdKSx0KG9lLFsyLDE3M10pLHQob2UsWzIsMTc0XSksezUyOl8sNTQ6MTgwLDY2OnksNjc6Yiw5MTpTLDk1OlIsMTA1OkEsMTA2OkwsMTA5OnYsMTExOkIsMTEyOncsMTE2OjQ3LDEyMjpjdCwxMjM6SiwxMjQ6WSwxMjU6JCwxMjY6bHQsMTI3OnV0fSx7MjI6RnQsMjQ6enQsMjY6d3QsMzg6YnQsMzk6MTgxLDQyOkV0LDUyOlUsNjY6Riw2NzpqLDczOmt0LDgxOlV0LDgzOjE0MCw4NDpndCw4NToxNTEsODY6aGUsODc6eXQsODg6bmUsODk6dmUsOTA6eWUsOTE6YmUsOTI6VGUsOTQ6MTQyLDk1Old0LDEwNTpldCwxMDY6YXQsMTA5OnNlLDExMTpMdCwxMTI6UnQsMTEzOm1lLDExNDp1ZSwxMTU6MTQ4LDEyMjpDdCwxMjM6cHQsMTI0Om10LDEyNTp2dCwxMjY6VHQsMTI3OmZ0fSx7MjI6RnQsMjQ6enQsMjY6d3QsMzg6YnQsMzk6MTgyLDQyOkV0LDUyOlUsNjY6Riw2NzpqLDczOmt0LDgxOlV0LDgzOjE0MCw4NDpndCw4NToxNTEsODY6aGUsODc6eXQsODg6bmUsODk6dmUsOTA6eWUsOTE6YmUsOTI6VGUsOTQ6MTQyLDk1Old0LDEwNTpldCwxMDY6YXQsMTA5OnNlLDExMTpMdCwxMTI6UnQsMTEzOm1lLDExNDp1ZSwxMTU6MTQ4LDEyMjpDdCwxMjM6cHQsMTI0Om10LDEyNTp2dCwxMjY6VHQsMTI3OmZ0fSx7MjI6RnQsMjQ6enQsMjY6d3QsMzg6YnQsMzk6MTg0LDQyOkV0LDUyOlUsNTc6WzEsMTgzXSw2NjpGLDY3OmosNzM6a3QsODE6VXQsODM6MTQwLDg0Omd0LDg1OjE1MSw4NjpoZSw4Nzp5dCw4ODpuZSw4OTp2ZSw5MDp5ZSw5MTpiZSw5MjpUZSw5NDoxNDIsOTU6V3QsMTA1OmV0LDEwNjphdCwxMDk6c2UsMTExOkx0LDExMjpSdCwxMTM6bWUsMTE0OnVlLDExNToxNDgsMTIyOkN0LDEyMzpwdCwxMjQ6bXQsMTI1OnZ0LDEyNjpUdCwxMjc6ZnR9LHsyMjpGdCwyNDp6dCwyNjp3dCwzODpidCwzOToxODUsNDI6RXQsNTI6VSw2NjpGLDY3OmosNzM6a3QsODE6VXQsODM6MTQwLDg0Omd0LDg1OjE1MSw4NjpoZSw4Nzp5dCw4ODpuZSw4OTp2ZSw5MDp5ZSw5MTpiZSw5MjpUZSw5NDoxNDIsOTU6V3QsMTA1OmV0LDEwNjphdCwxMDk6c2UsMTExOkx0LDExMjpSdCwxMTM6bWUsMTE0OnVlLDExNToxNDgsMTIyOkN0LDEyMzpwdCwxMjQ6bXQsMTI1OnZ0LDEyNjpUdCwxMjc6ZnR9LHsyMjpGdCwyNDp6dCwyNjp3dCwzODpidCwzOToxODYsNDI6RXQsNTI6VSw2NjpGLDY3OmosNzM6a3QsODE6VXQsODM6MTQwLDg0Omd0LDg1OjE1MSw4NjpoZSw4Nzp5dCw4ODpuZSw4OTp2ZSw5MDp5ZSw5MTpiZSw5MjpUZSw5NDoxNDIsOTU6V3QsMTA1OmV0LDEwNjphdCwxMDk6c2UsMTExOkx0LDExMjpSdCwxMTM6bWUsMTE0OnVlLDExNToxNDgsMTIyOkN0LDEyMzpwdCwxMjQ6bXQsMTI1OnZ0LDEyNjpUdCwxMjc6ZnR9LHsyMjpGdCwyNDp6dCwyNjp3dCwzODpidCwzOToxODcsNDI6RXQsNTI6VSw2NjpGLDY3OmosNzM6a3QsODE6VXQsODM6MTQwLDg0Omd0LDg1OjE1MSw4NjpoZSw4Nzp5dCw4ODpuZSw4OTp2ZSw5MDp5ZSw5MTpiZSw5MjpUZSw5NDoxNDIsOTU6V3QsMTA1OmV0LDEwNjphdCwxMDk6c2UsMTExOkx0LDExMjpSdCwxMTM6bWUsMTE0OnVlLDExNToxNDgsMTIyOkN0LDEyMzpwdCwxMjQ6bXQsMTI1OnZ0LDEyNjpUdCwxMjc6ZnR9LHs2NjpbMSwxODhdfSx7MjI6RnQsMjQ6enQsMjY6d3QsMzg6YnQsMzk6MTg5LDQyOkV0LDUyOlUsNjY6Riw2NzpqLDczOmt0LDgxOlV0LDgzOjE0MCw4NDpndCw4NToxNTEsODY6aGUsODc6eXQsODg6bmUsODk6dmUsOTA6eWUsOTE6YmUsOTI6VGUsOTQ6MTQyLDk1Old0LDEwNTpldCwxMDY6YXQsMTA5OnNlLDExMTpMdCwxMTI6UnQsMTEzOm1lLDExNDp1ZSwxMTU6MTQ4LDEyMjpDdCwxMjM6cHQsMTI0Om10LDEyNTp2dCwxMjY6VHQsMTI3OmZ0fSx7MjI6RnQsMjQ6enQsMjY6d3QsMzg6YnQsMzk6MTkwLDQyOkV0LDUyOlUsNjY6Riw2NzpqLDcxOlsxLDE5MV0sNzM6a3QsODE6VXQsODM6MTQwLDg0Omd0LDg1OjE1MSw4NjpoZSw4Nzp5dCw4ODpuZSw4OTp2ZSw5MDp5ZSw5MTpiZSw5MjpUZSw5NDoxNDIsOTU6V3QsMTA1OmV0LDEwNjphdCwxMDk6c2UsMTExOkx0LDExMjpSdCwxMTM6bWUsMTE0OnVlLDExNToxNDgsMTIyOkN0LDEyMzpwdCwxMjQ6bXQsMTI1OnZ0LDEyNjpUdCwxMjc6ZnR9LHsyMjpGdCwyNDp6dCwyNjp3dCwzODpidCwzOToxOTIsNDI6RXQsNTI6VSw2NjpGLDY3OmosNzM6a3QsODE6VXQsODM6MTQwLDg0Omd0LDg1OjE1MSw4NjpoZSw4Nzp5dCw4ODpuZSw4OTp2ZSw5MDp5ZSw5MTpiZSw5MjpUZSw5NDoxNDIsOTU6V3QsMTA1OmV0LDEwNjphdCwxMDk6c2UsMTExOkx0LDExMjpSdCwxMTM6bWUsMTE0OnVlLDExNToxNDgsMTIyOkN0LDEyMzpwdCwxMjQ6bXQsMTI1OnZ0LDEyNjpUdCwxMjc6ZnR9LHsyMjpGdCwyNDp6dCwyNjp3dCwzODpidCwzOToxOTMsNDI6RXQsNTI6VSw2NjpGLDY3OmosNzM6a3QsODE6VXQsODM6MTQwLDg0Omd0LDg1OjE1MSw4NjpoZSw4Nzp5dCw4ODpuZSw4OTp2ZSw5MDp5ZSw5MTpiZSw5MjpUZSw5NDoxNDIsOTU6V3QsMTA1OmV0LDEwNjphdCwxMDk6c2UsMTExOkx0LDExMjpSdCwxMTM6bWUsMTE0OnVlLDExNToxNDgsMTIyOkN0LDEyMzpwdCwxMjQ6bXQsMTI1OnZ0LDEyNjpUdCwxMjc6ZnR9LHsyMjpGdCwyNDp6dCwyNjp3dCwzODpidCwzOToxOTQsNDI6RXQsNTI6VSw2NjpGLDY3OmosNzM6a3QsODE6VXQsODM6MTQwLDg0Omd0LDg1OjE1MSw4NjpoZSw4Nzp5dCw4ODpuZSw4OTp2ZSw5MDp5ZSw5MTpiZSw5MjpUZSw5NDoxNDIsOTU6V3QsMTA1OmV0LDEwNjphdCwxMDk6c2UsMTExOkx0LDExMjpSdCwxMTM6bWUsMTE0OnVlLDExNToxNDgsMTIyOkN0LDEyMzpwdCwxMjQ6bXQsMTI1OnZ0LDEyNjpUdCwxMjc6ZnR9LHQoR3QsWzIsMTUxXSksdChLZSxbMiwzXSksezg6MTk1LDE1Old9LHsxNTpbMiw3XX0sdChhLFsyLDI4XSksdChRdCxbMiwzM10pLHQoUSxbMiw1MV0sezMwOjE5NiwyMjp0dH0pLHQoanQsWzIsNzVdLHsyMjpbMSwxOTddfSksezIyOlsxLDE5OF19LHsyMjpGdCwyNDp6dCwyNjp3dCwzODpidCwzOToxOTksNDI6RXQsNTI6VSw2NjpGLDY3OmosNzM6a3QsODE6VXQsODM6MTQwLDg0Omd0LDg1OjE1MSw4NjpoZSw4Nzp5dCw4ODpuZSw4OTp2ZSw5MDp5ZSw5MTpiZSw5MjpUZSw5NDoxNDIsOTU6V3QsMTA1OmV0LDEwNjphdCwxMDk6c2UsMTExOkx0LDExMjpSdCwxMTM6bWUsMTE0OnVlLDExNToxNDgsMTIyOkN0LDEyMzpwdCwxMjQ6bXQsMTI1OnZ0LDEyNjpUdCwxMjc6ZnR9LHsyMjpGdCwyNDp6dCwyNjp3dCwzODpidCw0MjpFdCw1MjpVLDY2OkYsNjc6aiw3MzprdCw4MTpVdCw4MjpbMSwyMDBdLDgzOjIwMSw4NToxNTEsODY6aGUsODc6eXQsODg6bmUsODk6dmUsOTA6eWUsOTE6YmUsOTI6VGUsOTQ6MTQyLDk1Old0LDEwNTpldCwxMDY6YXQsMTA5OnNlLDExMTpMdCwxMTI6UnQsMTEzOm1lLDExNDp1ZSwxMTU6MTQ4LDEyMjpDdCwxMjM6cHQsMTI0Om10LDEyNTp2dCwxMjY6VHQsMTI3OmZ0fSx0KG9lLFsyLDgyXSksdChvZSxbMiw4NF0pLHQob2UsWzIsMTQwXSksdChvZSxbMiwxNDFdKSx0KG9lLFsyLDE0Ml0pLHQob2UsWzIsMTQzXSksdChvZSxbMiwxNDRdKSx0KG9lLFsyLDE0NV0pLHQob2UsWzIsMTQ2XSksdChvZSxbMiwxNDddKSx0KG9lLFsyLDE0OF0pLHQob2UsWzIsMTQ5XSksdChvZSxbMiw4NV0pLHQob2UsWzIsODZdKSx0KG9lLFsyLDg3XSksdChvZSxbMiw4OF0pLHQob2UsWzIsODldKSx0KG9lLFsyLDkwXSksdChvZSxbMiw5MV0pLHQob2UsWzIsOTJdKSx0KG9lLFsyLDkzXSksdChvZSxbMiw5NF0pLHQob2UsWzIsOTVdKSx7OToyMDMsMjA6aXQsMjE6WiwyMjpGdCwyMzpWLDI0Onp0LDI2Ond0LDM4OmJ0LDQwOlsxLDIwMl0sNDI6RXQsNTI6VSw2NjpGLDY3OmosNzM6a3QsODE6VXQsODM6MjAxLDg1OjE1MSw4NjpoZSw4Nzp5dCw4ODpuZSw4OTp2ZSw5MDp5ZSw5MTpiZSw5MjpUZSw5NDoxNDIsOTU6V3QsMTA1OmV0LDEwNjphdCwxMDk6c2UsMTExOkx0LDExMjpSdCwxMTM6bWUsMTE0OnVlLDExNToxNDgsMTIyOkN0LDEyMzpwdCwxMjQ6bXQsMTI1OnZ0LDEyNjpUdCwxMjc6ZnR9LHsxODoxOCwxOToxOSwyMDpvLDIxOmwsMjI6dSwyMzpoLDMyOjI0LDMzOjI1LDM0OjI2LDM1OjI3LDM2OjI4LDM3OjI5LDM4OmQsNDI6WzEsMjA0XSw0MzozMSw0NDpmLDQ2OnAsNDg6bSw1MDozNSw1MTo0NSw1MjpfLDU0OjQ2LDY2OnksNjc6Yiw4Njp4LDg3OmssODg6VCw4OTpDLDkwOk0sOTE6Uyw5NTpSLDEwNTpBLDEwNjpMLDEwOTp2LDExMTpCLDExMjp3LDExNjo0NywxMTg6RCwxMTk6TiwxMjA6eiwxMjE6WCwxMjI6Y3QsMTIzOkosMTI0OlksMTI1OiQsMTI2Omx0LDEyNzp1dH0sezIyOnR0LDMwOjIwNX0sezIyOlsxLDIwNl0sMjY6cSw1MjpVLDY2OkYsNjc6aiw5MTpQLDEwNTpldCwxMDY6YXQsMTA5Okl0LDExMTpMdCwxMTI6UnQsMTE1OjEwMCwxMTc6MTc4LDEyMjpDdCwxMjM6cHQsMTI0Om10LDEyNTp2dCwxMjY6VHQsMTI3OmZ0fSx7MjI6WzEsMjA3XX0sezIyOlsxLDIwOF19LHsyMjpbMSwyMDldLDEwNjpbMSwyMTBdfSx0KHdyLFsyLDEyM10pLHsyMjpbMSwyMTFdfSx7MjI6WzEsMjEyXSwyNjpxLDUyOlUsNjY6Riw2NzpqLDkxOlAsMTA1OmV0LDEwNjphdCwxMDk6SXQsMTExOkx0LDExMjpSdCwxMTU6MTAwLDExNzoxNzgsMTIyOkN0LDEyMzpwdCwxMjQ6bXQsMTI1OnZ0LDEyNjpUdCwxMjc6ZnR9LHsyMjpbMSwyMTNdLDI2OnEsNTI6VSw2NjpGLDY3OmosOTE6UCwxMDU6ZXQsMTA2OmF0LDEwOTpJdCwxMTE6THQsMTEyOlJ0LDExNToxMDAsMTE3OjE3OCwxMjI6Q3QsMTIzOnB0LDEyNDptdCwxMjU6dnQsMTI2OlR0LDEyNzpmdH0sezg0OlsxLDIxNF19LHQoJHQsWzIsMTAzXSx7MjI6WzEsMjE1XX0pLHs4NDpbMSwyMTZdLDEwMTpbMSwyMTddfSx7ODQ6WzEsMjE4XX0sdChJZSxbMiwxNTNdKSx7ODQ6WzEsMjE5XSwxMDE6WzEsMjIwXX0sdChsZSxbMiw1N10sezExNjoxMjksNTI6Xyw2Njp5LDY3OmIsOTE6Uyw5NTpSLDEwNTpBLDEwNjpMLDEwOTp2LDExMTpCLDExMjp3LDEyMjpjdCwxMjM6SiwxMjQ6WSwxMjU6JCwxMjY6bHQsMTI3OnV0fSksezIyOkZ0LDI0Onp0LDI2Ond0LDM4OmJ0LDQxOlsxLDIyMV0sNDI6RXQsNTI6VSw2NjpGLDY3OmosNzM6a3QsODE6VXQsODM6MjAxLDg1OjE1MSw4NjpoZSw4Nzp5dCw4ODpuZSw4OTp2ZSw5MDp5ZSw5MTpiZSw5MjpUZSw5NDoxNDIsOTU6V3QsMTA1OmV0LDEwNjphdCwxMDk6c2UsMTExOkx0LDExMjpSdCwxMTM6bWUsMTE0OnVlLDExNToxNDgsMTIyOkN0LDEyMzpwdCwxMjQ6bXQsMTI1OnZ0LDEyNjpUdCwxMjc6ZnR9LHsyMjpGdCwyNDp6dCwyNjp3dCwzODpidCw0MjpFdCw1MjpVLDU2OlsxLDIyMl0sNjY6Riw2NzpqLDczOmt0LDgxOlV0LDgzOjIwMSw4NToxNTEsODY6aGUsODc6eXQsODg6bmUsODk6dmUsOTA6eWUsOTE6YmUsOTI6VGUsOTQ6MTQyLDk1Old0LDEwNTpldCwxMDY6YXQsMTA5OnNlLDExMTpMdCwxMTI6UnQsMTEzOm1lLDExNDp1ZSwxMTU6MTQ4LDEyMjpDdCwxMjM6cHQsMTI0Om10LDEyNTp2dCwxMjY6VHQsMTI3OmZ0fSx7MjI6RnQsMjQ6enQsMjY6d3QsMzg6YnQsMzk6MjIzLDQyOkV0LDUyOlUsNjY6Riw2NzpqLDczOmt0LDgxOlV0LDgzOjE0MCw4NDpndCw4NToxNTEsODY6aGUsODc6eXQsODg6bmUsODk6dmUsOTA6eWUsOTE6YmUsOTI6VGUsOTQ6MTQyLDk1Old0LDEwNTpldCwxMDY6YXQsMTA5OnNlLDExMTpMdCwxMTI6UnQsMTEzOm1lLDExNDp1ZSwxMTU6MTQ4LDEyMjpDdCwxMjM6cHQsMTI0Om10LDEyNTp2dCwxMjY6VHQsMTI3OmZ0fSx7MjI6RnQsMjQ6enQsMjY6d3QsMzg6YnQsNDI6RXQsNTI6VSw1ODpbMSwyMjRdLDY2OkYsNjc6aiw3MzprdCw4MTpVdCw4MzoyMDEsODU6MTUxLDg2OmhlLDg3Onl0LDg4Om5lLDg5OnZlLDkwOnllLDkxOmJlLDkyOlRlLDk0OjE0Miw5NTpXdCwxMDU6ZXQsMTA2OmF0LDEwOTpzZSwxMTE6THQsMTEyOlJ0LDExMzptZSwxMTQ6dWUsMTE1OjE0OCwxMjI6Q3QsMTIzOnB0LDEyNDptdCwxMjU6dnQsMTI2OlR0LDEyNzpmdH0sezIyOkZ0LDI0Onp0LDI2Ond0LDM4OmJ0LDQyOkV0LDUyOlUsNjA6WzEsMjI1XSw2NjpGLDY3OmosNzM6a3QsODE6VXQsODM6MjAxLDg1OjE1MSw4NjpoZSw4Nzp5dCw4ODpuZSw4OTp2ZSw5MDp5ZSw5MTpiZSw5MjpUZSw5NDoxNDIsOTU6V3QsMTA1OmV0LDEwNjphdCwxMDk6c2UsMTExOkx0LDExMjpSdCwxMTM6bWUsMTE0OnVlLDExNToxNDgsMTIyOkN0LDEyMzpwdCwxMjQ6bXQsMTI1OnZ0LDEyNjpUdCwxMjc6ZnR9LHsyMjpGdCwyNDp6dCwyNjp3dCwzODpidCw0MjpFdCw1MjpVLDYyOlsxLDIyNl0sNjY6Riw2NzpqLDczOmt0LDgxOlV0LDgzOjIwMSw4NToxNTEsODY6aGUsODc6eXQsODg6bmUsODk6dmUsOTA6eWUsOTE6YmUsOTI6VGUsOTQ6MTQyLDk1Old0LDEwNTpldCwxMDY6YXQsMTA5OnNlLDExMTpMdCwxMTI6UnQsMTEzOm1lLDExNDp1ZSwxMTU6MTQ4LDEyMjpDdCwxMjM6cHQsMTI0Om10LDEyNTp2dCwxMjY6VHQsMTI3OmZ0fSx7MjI6RnQsMjQ6enQsMjY6d3QsMzg6YnQsNDI6RXQsNTI6VSw2NDpbMSwyMjddLDY2OkYsNjc6aiw3MzprdCw4MTpVdCw4MzoyMDEsODU6MTUxLDg2OmhlLDg3Onl0LDg4Om5lLDg5OnZlLDkwOnllLDkxOmJlLDkyOlRlLDk0OjE0Miw5NTpXdCwxMDU6ZXQsMTA2OmF0LDEwOTpzZSwxMTE6THQsMTEyOlJ0LDExMzptZSwxMTQ6dWUsMTE1OjE0OCwxMjI6Q3QsMTIzOnB0LDEyNDptdCwxMjU6dnQsMTI2OlR0LDEyNzpmdH0sezY3OlsxLDIyOF19LHsyMjpGdCwyNDp6dCwyNjp3dCwzODpidCw0MjpFdCw1MjpVLDY2OkYsNjc6aiw3MDpbMSwyMjldLDczOmt0LDgxOlV0LDgzOjIwMSw4NToxNTEsODY6aGUsODc6eXQsODg6bmUsODk6dmUsOTA6eWUsOTE6YmUsOTI6VGUsOTQ6MTQyLDk1Old0LDEwNTpldCwxMDY6YXQsMTA5OnNlLDExMTpMdCwxMTI6UnQsMTEzOm1lLDExNDp1ZSwxMTU6MTQ4LDEyMjpDdCwxMjM6cHQsMTI0Om10LDEyNTp2dCwxMjY6VHQsMTI3OmZ0fSx7MjI6RnQsMjQ6enQsMjY6d3QsMzg6YnQsNDI6RXQsNTI6VSw2NjpGLDY3OmosNzI6WzEsMjMwXSw3MzprdCw4MTpVdCw4MzoyMDEsODU6MTUxLDg2OmhlLDg3Onl0LDg4Om5lLDg5OnZlLDkwOnllLDkxOmJlLDkyOlRlLDk0OjE0Miw5NTpXdCwxMDU6ZXQsMTA2OmF0LDEwOTpzZSwxMTE6THQsMTEyOlJ0LDExMzptZSwxMTQ6dWUsMTE1OjE0OCwxMjI6Q3QsMTIzOnB0LDEyNDptdCwxMjU6dnQsMTI2OlR0LDEyNzpmdH0sezIyOkZ0LDI0Onp0LDI2Ond0LDM4OmJ0LDM5OjIzMSw0MjpFdCw1MjpVLDY2OkYsNjc6aiw3MzprdCw4MTpVdCw4MzoxNDAsODQ6Z3QsODU6MTUxLDg2OmhlLDg3Onl0LDg4Om5lLDg5OnZlLDkwOnllLDkxOmJlLDkyOlRlLDk0OjE0Miw5NTpXdCwxMDU6ZXQsMTA2OmF0LDEwOTpzZSwxMTE6THQsMTEyOlJ0LDExMzptZSwxMTQ6dWUsMTE1OjE0OCwxMjI6Q3QsMTIzOnB0LDEyNDptdCwxMjU6dnQsMTI2OlR0LDEyNzpmdH0sezIyOkZ0LDI0Onp0LDI2Ond0LDM4OmJ0LDQxOlsxLDIzMl0sNDI6RXQsNTI6VSw2NjpGLDY3OmosNzM6a3QsODE6VXQsODM6MjAxLDg1OjE1MSw4NjpoZSw4Nzp5dCw4ODpuZSw4OTp2ZSw5MDp5ZSw5MTpiZSw5MjpUZSw5NDoxNDIsOTU6V3QsMTA1OmV0LDEwNjphdCwxMDk6c2UsMTExOkx0LDExMjpSdCwxMTM6bWUsMTE0OnVlLDExNToxNDgsMTIyOkN0LDEyMzpwdCwxMjQ6bXQsMTI1OnZ0LDEyNjpUdCwxMjc6ZnR9LHsyMjpGdCwyNDp6dCwyNjp3dCwzODpidCw0MjpFdCw1MjpVLDY2OkYsNjc6aiw3MzprdCw3NTpbMSwyMzNdLDc3OlsxLDIzNF0sODE6VXQsODM6MjAxLDg1OjE1MSw4NjpoZSw4Nzp5dCw4ODpuZSw4OTp2ZSw5MDp5ZSw5MTpiZSw5MjpUZSw5NDoxNDIsOTU6V3QsMTA1OmV0LDEwNjphdCwxMDk6c2UsMTExOkx0LDExMjpSdCwxMTM6bWUsMTE0OnVlLDExNToxNDgsMTIyOkN0LDEyMzpwdCwxMjQ6bXQsMTI1OnZ0LDEyNjpUdCwxMjc6ZnR9LHsyMjpGdCwyNDp6dCwyNjp3dCwzODpidCw0MjpFdCw1MjpVLDY2OkYsNjc6aiw3MzprdCw3NTpbMSwyMzZdLDc3OlsxLDIzNV0sODE6VXQsODM6MjAxLDg1OjE1MSw4NjpoZSw4Nzp5dCw4ODpuZSw4OTp2ZSw5MDp5ZSw5MTpiZSw5MjpUZSw5NDoxNDIsOTU6V3QsMTA1OmV0LDEwNjphdCwxMDk6c2UsMTExOkx0LDExMjpSdCwxMTM6bWUsMTE0OnVlLDExNToxNDgsMTIyOkN0LDEyMzpwdCwxMjQ6bXQsMTI1OnZ0LDEyNjpUdCwxMjc6ZnR9LHs5OjIzNywyMDppdCwyMTpaLDIzOlZ9LHQoUSxbMiw1Ml0sezUyOkhyfSksdChqdCxbMiw3N10pLHQoanQsWzIsNzZdKSx7MjI6RnQsMjQ6enQsMjY6d3QsMzg6YnQsNDI6RXQsNTI6VSw2NjpGLDY3OmosNjg6WzEsMjM4XSw3MzprdCw4MTpVdCw4MzoyMDEsODU6MTUxLDg2OmhlLDg3Onl0LDg4Om5lLDg5OnZlLDkwOnllLDkxOmJlLDkyOlRlLDk0OjE0Miw5NTpXdCwxMDU6ZXQsMTA2OmF0LDEwOTpzZSwxMTE6THQsMTEyOlJ0LDExMzptZSwxMTQ6dWUsMTE1OjE0OCwxMjI6Q3QsMTIzOnB0LDEyNDptdCwxMjU6dnQsMTI2OlR0LDEyNzpmdH0sdChqdCxbMiw3OV0pLHQob2UsWzIsODNdKSx7MjI6RnQsMjQ6enQsMjY6d3QsMzg6YnQsMzk6MjM5LDQyOkV0LDUyOlUsNjY6Riw2NzpqLDczOmt0LDgxOlV0LDgzOjE0MCw4NDpndCw4NToxNTEsODY6aGUsODc6eXQsODg6bmUsODk6dmUsOTA6eWUsOTE6YmUsOTI6VGUsOTQ6MTQyLDk1Old0LDEwNTpldCwxMDY6YXQsMTA5OnNlLDExMTpMdCwxMTI6UnQsMTEzOm1lLDExNDp1ZSwxMTU6MTQ4LDEyMjpDdCwxMjM6cHQsMTI0Om10LDEyNTp2dCwxMjY6VHQsMTI3OmZ0fSx0KF9hLHMsezE3OjI0MH0pLHQoSyxbMiw0M10pLHs1MToyNDEsNTI6Xyw1NDo0Niw2Njp5LDY3OmIsOTE6Uyw5NTpSLDEwNTpBLDEwNjpMLDEwOTp2LDExMTpCLDExMjp3LDExNjo0NywxMjI6Y3QsMTIzOkosMTI0OlksMTI1OiQsMTI2Omx0LDEyNzp1dH0sezIyOkdlLDY2OlplLDY3OnF0LDg2OnN0LDk2OjI0MiwxMDI6QXQsMTA1Ok50LDEwNzoyNDMsMTA4OjI0NCwxMDk6SnQsMTEwOnplLDExMTpQZSwxMTI6cWUsMTEzOlRyfSx7MjI6R2UsNjY6WmUsNjc6cXQsODY6c3QsOTY6MjU2LDEwMjpBdCwxMDU6TnQsMTA3OjI0MywxMDg6MjQ0LDEwOTpKdCwxMTA6emUsMTExOlBlLDExMjpxZSwxMTM6VHJ9LHsyMjpHZSw2NjpaZSw2NzpxdCw4NjpzdCw5NjoyNTcsMTAyOkF0LDEwNDpbMSwyNThdLDEwNTpOdCwxMDc6MjQzLDEwODoyNDQsMTA5Okp0LDExMDp6ZSwxMTE6UGUsMTEyOnFlLDExMzpUcn0sezIyOkdlLDY2OlplLDY3OnF0LDg2OnN0LDk2OjI1OSwxMDI6QXQsMTA0OlsxLDI2MF0sMTA1Ok50LDEwNzoyNDMsMTA4OjI0NCwxMDk6SnQsMTEwOnplLDExMTpQZSwxMTI6cWUsMTEzOlRyfSx7MTA1OlsxLDI2MV19LHsyMjpHZSw2NjpaZSw2NzpxdCw4NjpzdCw5NjoyNjIsMTAyOkF0LDEwNTpOdCwxMDc6MjQzLDEwODoyNDQsMTA5Okp0LDExMDp6ZSwxMTE6UGUsMTEyOnFlLDExMzpUcn0sezIyOkdlLDY2OlplLDY3OnF0LDg2OnN0LDk2OjI2MywxMDI6QXQsMTA1Ok50LDEwNzoyNDMsMTA4OjI0NCwxMDk6SnQsMTEwOnplLDExMTpQZSwxMTI6cWUsMTEzOlRyfSx7MjY6cSw1MjpVLDY2OkYsNjc6aiw5MTpQLDk3OjI2NCwxMDU6ZXQsMTA2OmF0LDEwOTpJdCwxMTE6THQsMTEyOlJ0LDExNToxMDAsMTE3Ojk4LDEyMjpDdCwxMjM6cHQsMTI0Om10LDEyNTp2dCwxMjY6VHQsMTI3OmZ0fSx0KCR0LFsyLDEwMl0pLHs4NDpbMSwyNjVdfSx0KCR0LFsyLDEwNl0sezIyOlsxLDI2Nl19KSx0KCR0LFsyLDEwN10pLHQoJHQsWzIsMTEwXSksdCgkdCxbMiwxMTJdLHsyMjpbMSwyNjddfSksdCgkdCxbMiwxMTNdKSx0KER0LFsyLDU4XSksdChEdCxbMiw1OV0pLHsyMjpGdCwyNDp6dCwyNjp3dCwzODpidCw0MjpFdCw1MjpVLDU4OlsxLDI2OF0sNjY6Riw2NzpqLDczOmt0LDgxOlV0LDgzOjIwMSw4NToxNTEsODY6aGUsODc6eXQsODg6bmUsODk6dmUsOTA6eWUsOTE6YmUsOTI6VGUsOTQ6MTQyLDk1Old0LDEwNTpldCwxMDY6YXQsMTA5OnNlLDExMTpMdCwxMTI6UnQsMTEzOm1lLDExNDp1ZSwxMTU6MTQ4LDEyMjpDdCwxMjM6cHQsMTI0Om10LDEyNTp2dCwxMjY6VHQsMTI3OmZ0fSx0KER0LFsyLDY2XSksdChEdCxbMiw2MV0pLHQoRHQsWzIsNjJdKSx0KER0LFsyLDYzXSksezY2OlsxLDI2OV19LHQoRHQsWzIsNjVdKSx0KER0LFsyLDY3XSksezIyOkZ0LDI0Onp0LDI2Ond0LDM4OmJ0LDQyOkV0LDUyOlUsNjY6Riw2NzpqLDcyOlsxLDI3MF0sNzM6a3QsODE6VXQsODM6MjAxLDg1OjE1MSw4NjpoZSw4Nzp5dCw4ODpuZSw4OTp2ZSw5MDp5ZSw5MTpiZSw5MjpUZSw5NDoxNDIsOTU6V3QsMTA1OmV0LDEwNjphdCwxMDk6c2UsMTExOkx0LDExMjpSdCwxMTM6bWUsMTE0OnVlLDExNToxNDgsMTIyOkN0LDEyMzpwdCwxMjQ6bXQsMTI1OnZ0LDEyNjpUdCwxMjc6ZnR9LHQoRHQsWzIsNjldKSx0KER0LFsyLDcwXSksdChEdCxbMiw3Ml0pLHQoRHQsWzIsNzFdKSx0KER0LFsyLDczXSksdChLZSxbMiw0XSksdChbMjIsNTIsNjYsNjcsOTEsOTUsMTA1LDEwNiwxMDksMTExLDExMiwxMjIsMTIzLDEyNCwxMjUsMTI2LDEyN10sWzIsODFdKSx7MjI6RnQsMjQ6enQsMjY6d3QsMzg6YnQsNDE6WzEsMjcxXSw0MjpFdCw1MjpVLDY2OkYsNjc6aiw3MzprdCw4MTpVdCw4MzoyMDEsODU6MTUxLDg2OmhlLDg3Onl0LDg4Om5lLDg5OnZlLDkwOnllLDkxOmJlLDkyOlRlLDk0OjE0Miw5NTpXdCwxMDU6ZXQsMTA2OmF0LDEwOTpzZSwxMTE6THQsMTEyOlJ0LDExMzptZSwxMTQ6dWUsMTE1OjE0OCwxMjI6Q3QsMTIzOnB0LDEyNDptdCwxMjU6dnQsMTI2OlR0LDEyNzpmdH0sezE4OjE4LDE5OjE5LDIwOm8sMjE6bCwyMjp1LDIzOmgsMzI6MjQsMzM6MjUsMzQ6MjYsMzU6MjcsMzY6MjgsMzc6MjksMzg6ZCw0MjpbMSwyNzJdLDQzOjMxLDQ0OmYsNDY6cCw0ODptLDUwOjM1LDUxOjQ1LDUyOl8sNTQ6NDYsNjY6eSw2NzpiLDg2OngsODc6ayw4ODpULDg5OkMsOTA6TSw5MTpTLDk1OlIsMTA1OkEsMTA2OkwsMTA5OnYsMTExOkIsMTEyOncsMTE2OjQ3LDExODpELDExOTpOLDEyMDp6LDEyMTpYLDEyMjpjdCwxMjM6SiwxMjQ6WSwxMjU6JCwxMjY6bHQsMTI3OnV0fSx0KGxlLFsyLDU2XSksdCgkdCxbMiwxMTVdLHsxMDY6VmV9KSx0KHZhLFsyLDEyNV0sezEwODoyNzQsMjI6R2UsNjY6WmUsNjc6cXQsODY6c3QsMTAyOkF0LDEwNTpOdCwxMDk6SnQsMTEwOnplLDExMTpQZSwxMTI6cWUsMTEzOlRyfSksdChDZSxbMiwxMjddKSx0KENlLFsyLDEyOV0pLHQoQ2UsWzIsMTMwXSksdChDZSxbMiwxMzFdKSx0KENlLFsyLDEzMl0pLHQoQ2UsWzIsMTMzXSksdChDZSxbMiwxMzRdKSx0KENlLFsyLDEzNV0pLHQoQ2UsWzIsMTM2XSksdChDZSxbMiwxMzddKSx0KENlLFsyLDEzOF0pLHQoQ2UsWzIsMTM5XSksdCgkdCxbMiwxMTZdLHsxMDY6VmV9KSx0KCR0LFsyLDExN10sezEwNjpWZX0pLHsyMjpbMSwyNzVdfSx0KCR0LFsyLDExOF0sezEwNjpWZX0pLHsyMjpbMSwyNzZdfSx0KHdyLFsyLDEyNF0pLHQoJHQsWzIsOThdLHsxMDY6VmV9KSx0KCR0LFsyLDk5XSx7MTA2OlZlfSksdCgkdCxbMiwxMDBdLHsxMTU6MTAwLDExNzoxNzgsMjY6cSw1MjpVLDY2OkYsNjc6aiw5MTpQLDEwNTpldCwxMDY6YXQsMTA5Okl0LDExMTpMdCwxMTI6UnQsMTIyOkN0LDEyMzpwdCwxMjQ6bXQsMTI1OnZ0LDEyNjpUdCwxMjc6ZnR9KSx0KCR0LFsyLDEwNF0pLHsxMDE6WzEsMjc3XX0sezEwMTpbMSwyNzhdfSx7NTg6WzEsMjc5XX0sezY4OlsxLDI4MF19LHs3MjpbMSwyODFdfSx7OToyODIsMjA6aXQsMjE6WiwyMzpWfSx0KEssWzIsNDJdKSx7MjI6R2UsNjY6WmUsNjc6cXQsODY6c3QsMTAyOkF0LDEwNTpOdCwxMDc6MjgzLDEwODoyNDQsMTA5Okp0LDExMDp6ZSwxMTE6UGUsMTEyOnFlLDExMzpUcn0sdChDZSxbMiwxMjhdKSx7MjY6cSw1MjpVLDY2OkYsNjc6aiw5MTpQLDk3OjI4NCwxMDU6ZXQsMTA2OmF0LDEwOTpJdCwxMTE6THQsMTEyOlJ0LDExNToxMDAsMTE3Ojk4LDEyMjpDdCwxMjM6cHQsMTI0Om10LDEyNTp2dCwxMjY6VHQsMTI3OmZ0fSx7MjY6cSw1MjpVLDY2OkYsNjc6aiw5MTpQLDk3OjI4NSwxMDU6ZXQsMTA2OmF0LDEwOTpJdCwxMTE6THQsMTEyOlJ0LDExNToxMDAsMTE3Ojk4LDEyMjpDdCwxMjM6cHQsMTI0Om10LDEyNTp2dCwxMjY6VHQsMTI3OmZ0fSx0KCR0LFsyLDEwOF0pLHQoJHQsWzIsMTE0XSksdChEdCxbMiw2MF0pLHsyMjpGdCwyNDp6dCwyNjp3dCwzODpidCwzOToyODYsNDI6RXQsNTI6VSw2NjpGLDY3OmosNzM6a3QsODE6VXQsODM6MTQwLDg0Omd0LDg1OjE1MSw4NjpoZSw4Nzp5dCw4ODpuZSw4OTp2ZSw5MDp5ZSw5MTpiZSw5MjpUZSw5NDoxNDIsOTU6V3QsMTA1OmV0LDEwNjphdCwxMDk6c2UsMTExOkx0LDExMjpSdCwxMTM6bWUsMTE0OnVlLDExNToxNDgsMTIyOkN0LDEyMzpwdCwxMjQ6bXQsMTI1OnZ0LDEyNjpUdCwxMjc6ZnR9LHQoRHQsWzIsNjhdKSx0KF9hLHMsezE3OjI4N30pLHQodmEsWzIsMTI2XSx7MTA4OjI3NCwyMjpHZSw2NjpaZSw2NzpxdCw4NjpzdCwxMDI6QXQsMTA1Ok50LDEwOTpKdCwxMTA6emUsMTExOlBlLDExMjpxZSwxMTM6VHJ9KSx0KCR0LFsyLDEyMV0sezExNToxMDAsMTE3OjE3OCwyMjpbMSwyODhdLDI2OnEsNTI6VSw2NjpGLDY3OmosOTE6UCwxMDU6ZXQsMTA2OmF0LDEwOTpJdCwxMTE6THQsMTEyOlJ0LDEyMjpDdCwxMjM6cHQsMTI0Om10LDEyNTp2dCwxMjY6VHQsMTI3OmZ0fSksdCgkdCxbMiwxMjJdLHsxMTU6MTAwLDExNzoxNzgsMjI6WzEsMjg5XSwyNjpxLDUyOlUsNjY6Riw2NzpqLDkxOlAsMTA1OmV0LDEwNjphdCwxMDk6SXQsMTExOkx0LDExMjpSdCwxMjI6Q3QsMTIzOnB0LDEyNDptdCwxMjU6dnQsMTI2OlR0LDEyNzpmdH0pLHsyMjpGdCwyNDp6dCwyNjp3dCwzODpidCw0MTpbMSwyOTBdLDQyOkV0LDUyOlUsNjY6Riw2NzpqLDczOmt0LDgxOlV0LDgzOjIwMSw4NToxNTEsODY6aGUsODc6eXQsODg6bmUsODk6dmUsOTA6eWUsOTE6YmUsOTI6VGUsOTQ6MTQyLDk1Old0LDEwNTpldCwxMDY6YXQsMTA5OnNlLDExMTpMdCwxMTI6UnQsMTEzOm1lLDExNDp1ZSwxMTU6MTQ4LDEyMjpDdCwxMjM6cHQsMTI0Om10LDEyNTp2dCwxMjY6VHQsMTI3OmZ0fSx7MTg6MTgsMTk6MTksMjA6bywyMTpsLDIyOnUsMjM6aCwzMjoyNCwzMzoyNSwzNDoyNiwzNToyNywzNjoyOCwzNzoyOSwzODpkLDQyOlsxLDI5MV0sNDM6MzEsNDQ6Ziw0NjpwLDQ4Om0sNTA6MzUsNTE6NDUsNTI6Xyw1NDo0Niw2Njp5LDY3OmIsODY6eCw4NzprLDg4OlQsODk6Qyw5MDpNLDkxOlMsOTU6UiwxMDU6QSwxMDY6TCwxMDk6diwxMTE6QiwxMTI6dywxMTY6NDcsMTE4OkQsMTE5Ok4sMTIwOnosMTIxOlgsMTIyOmN0LDEyMzpKLDEyNDpZLDEyNTokLDEyNjpsdCwxMjc6dXR9LHsyMjpHZSw2NjpaZSw2NzpxdCw4NjpzdCw5NjoyOTIsMTAyOkF0LDEwNTpOdCwxMDc6MjQzLDEwODoyNDQsMTA5Okp0LDExMDp6ZSwxMTE6UGUsMTEyOnFlLDExMzpUcn0sezIyOkdlLDY2OlplLDY3OnF0LDg2OnN0LDk2OjI5MywxMDI6QXQsMTA1Ok50LDEwNzoyNDMsMTA4OjI0NCwxMDk6SnQsMTEwOnplLDExMTpQZSwxMTI6cWUsMTEzOlRyfSx0KER0LFsyLDY0XSksdChLLFsyLDQxXSksdCgkdCxbMiwxMTldLHsxMDY6VmV9KSx0KCR0LFsyLDEyMF0sezEwNjpWZX0pXSxkZWZhdWx0QWN0aW9uczp7MjpbMiwxXSw5OlsyLDVdLDEwOlsyLDJdLDEzMjpbMiw3XX0scGFyc2VFcnJvcjpmdW5jdGlvbihYdCxlZSl7aWYoZWUucmVjb3ZlcmFibGUpdGhpcy50cmFjZShYdCk7ZWxzZXt2YXIgY2U9bmV3IEVycm9yKFh0KTt0aHJvdyBjZS5oYXNoPWVlLGNlfX0scGFyc2U6ZnVuY3Rpb24oWHQpe3ZhciBlZT10aGlzLGNlPVswXSxQdD1bXSxqZT1bbnVsbF0scnQ9W10sS3M9dGhpcy50YWJsZSxvdD0iIixHcj0wLEMwPTAsbF89MixTMD0xLEEwPXJ0LnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpLG1yPU9iamVjdC5jcmVhdGUodGhpcy5sZXhlciksSGk9e3l5Ont9fTtmb3IodmFyIEdpIGluIHRoaXMueXkpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMueXksR2kpJiYoSGkueXlbR2ldPXRoaXMueXlbR2ldKTttci5zZXRJbnB1dChYdCxIaS55eSksSGkueXkubGV4ZXI9bXIsSGkueXkucGFyc2VyPXRoaXMsdHlwZW9mIG1yLnl5bGxvYz4idSImJihtci55eWxsb2M9e30pO3ZhciBacz1tci55eWxsb2M7cnQucHVzaChacyk7dmFyIHZ1PW1yLm9wdGlvbnMmJm1yLm9wdGlvbnMucmFuZ2VzO3R5cGVvZiBIaS55eS5wYXJzZUVycm9yPT0iZnVuY3Rpb24iP3RoaXMucGFyc2VFcnJvcj1IaS55eS5wYXJzZUVycm9yOnRoaXMucGFyc2VFcnJvcj1PYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykucGFyc2VFcnJvcjtmdW5jdGlvbiBNMCgpe3ZhciBJbjtyZXR1cm4gSW49UHQucG9wKCl8fG1yLmxleCgpfHxTMCx0eXBlb2YgSW4hPSJudW1iZXIiJiYoSW4gaW5zdGFuY2VvZiBBcnJheSYmKFB0PUluLEluPVB0LnBvcCgpKSxJbj1lZS5zeW1ib2xzX1tJbl18fEluKSxJbn1mb3IodmFyIERyLERlLGhuLHhhLF9pPXt9LGthLFJuLHh1LHlsOzspe2lmKERlPWNlW2NlLmxlbmd0aC0xXSx0aGlzLmRlZmF1bHRBY3Rpb25zW0RlXT9obj10aGlzLmRlZmF1bHRBY3Rpb25zW0RlXTooKERyPT09bnVsbHx8dHlwZW9mIERyPiJ1IikmJihEcj1NMCgpKSxobj1Lc1tEZV0mJktzW0RlXVtEcl0pLHR5cGVvZiBobj4idSJ8fCFobi5sZW5ndGh8fCFoblswXSl7dmFyIFFzPSIiO3lsPVtdO2ZvcihrYSBpbiBLc1tEZV0pdGhpcy50ZXJtaW5hbHNfW2thXSYma2E+bF8mJnlsLnB1c2goIiciK3RoaXMudGVybWluYWxzX1trYV0rIiciKTttci5zaG93UG9zaXRpb24/UXM9IlBhcnNlIGVycm9yIG9uIGxpbmUgIisoR3IrMSkrYDoKYCttci5zaG93UG9zaXRpb24oKStgCkV4cGVjdGluZyBgK3lsLmpvaW4oIiwgIikrIiwgZ290ICciKyh0aGlzLnRlcm1pbmFsc19bRHJdfHxEcikrIiciOlFzPSJQYXJzZSBlcnJvciBvbiBsaW5lICIrKEdyKzEpKyI6IFVuZXhwZWN0ZWQgIisoRHI9PVMwPyJlbmQgb2YgaW5wdXQiOiInIisodGhpcy50ZXJtaW5hbHNfW0RyXXx8RHIpKyInIiksdGhpcy5wYXJzZUVycm9yKFFzLHt0ZXh0Om1yLm1hdGNoLHRva2VuOnRoaXMudGVybWluYWxzX1tEcl18fERyLGxpbmU6bXIueXlsaW5lbm8sbG9jOlpzLGV4cGVjdGVkOnlsfSl9aWYoaG5bMF1pbnN0YW5jZW9mIEFycmF5JiZobi5sZW5ndGg+MSl0aHJvdyBuZXcgRXJyb3IoIlBhcnNlIEVycm9yOiBtdWx0aXBsZSBhY3Rpb25zIHBvc3NpYmxlIGF0IHN0YXRlOiAiK0RlKyIsIHRva2VuOiAiK0RyKTtzd2l0Y2goaG5bMF0pe2Nhc2UgMTpjZS5wdXNoKERyKSxqZS5wdXNoKG1yLnl5dGV4dCkscnQucHVzaChtci55eWxsb2MpLGNlLnB1c2goaG5bMV0pLERyPW51bGwsQzA9bXIueXlsZW5nLG90PW1yLnl5dGV4dCxHcj1tci55eWxpbmVubyxacz1tci55eWxsb2M7YnJlYWs7Y2FzZSAyOmlmKFJuPXRoaXMucHJvZHVjdGlvbnNfW2huWzFdXVsxXSxfaS4kPWplW2plLmxlbmd0aC1Sbl0sX2kuXyQ9e2ZpcnN0X2xpbmU6cnRbcnQubGVuZ3RoLShSbnx8MSldLmZpcnN0X2xpbmUsbGFzdF9saW5lOnJ0W3J0Lmxlbmd0aC0xXS5sYXN0X2xpbmUsZmlyc3RfY29sdW1uOnJ0W3J0Lmxlbmd0aC0oUm58fDEpXS5maXJzdF9jb2x1bW4sbGFzdF9jb2x1bW46cnRbcnQubGVuZ3RoLTFdLmxhc3RfY29sdW1ufSx2dSYmKF9pLl8kLnJhbmdlPVtydFtydC5sZW5ndGgtKFJufHwxKV0ucmFuZ2VbMF0scnRbcnQubGVuZ3RoLTFdLnJhbmdlWzFdXSkseGE9dGhpcy5wZXJmb3JtQWN0aW9uLmFwcGx5KF9pLFtvdCxDMCxHcixIaS55eSxoblsxXSxqZSxydF0uY29uY2F0KEEwKSksdHlwZW9mIHhhPCJ1IilyZXR1cm4geGE7Um4mJihjZT1jZS5zbGljZSgwLC0xKlJuKjIpLGplPWplLnNsaWNlKDAsLTEqUm4pLHJ0PXJ0LnNsaWNlKDAsLTEqUm4pKSxjZS5wdXNoKHRoaXMucHJvZHVjdGlvbnNfW2huWzFdXVswXSksamUucHVzaChfaS4kKSxydC5wdXNoKF9pLl8kKSx4dT1Lc1tjZVtjZS5sZW5ndGgtMl1dW2NlW2NlLmxlbmd0aC0xXV0sY2UucHVzaCh4dSk7YnJlYWs7Y2FzZSAzOnJldHVybiEwfX1yZXR1cm4hMH19LEUwPWZ1bmN0aW9uKCl7dmFyIExuPXtFT0Y6MSxwYXJzZUVycm9yOmZ1bmN0aW9uKGVlLGNlKXtpZih0aGlzLnl5LnBhcnNlcil0aGlzLnl5LnBhcnNlci5wYXJzZUVycm9yKGVlLGNlKTtlbHNlIHRocm93IG5ldyBFcnJvcihlZSl9LHNldElucHV0OmZ1bmN0aW9uKFh0LGVlKXtyZXR1cm4gdGhpcy55eT1lZXx8dGhpcy55eXx8e30sdGhpcy5faW5wdXQ9WHQsdGhpcy5fbW9yZT10aGlzLl9iYWNrdHJhY2s9dGhpcy5kb25lPSExLHRoaXMueXlsaW5lbm89dGhpcy55eWxlbmc9MCx0aGlzLnl5dGV4dD10aGlzLm1hdGNoZWQ9dGhpcy5tYXRjaD0iIix0aGlzLmNvbmRpdGlvblN0YWNrPVsiSU5JVElBTCJdLHRoaXMueXlsbG9jPXtmaXJzdF9saW5lOjEsZmlyc3RfY29sdW1uOjAsbGFzdF9saW5lOjEsbGFzdF9jb2x1bW46MH0sdGhpcy5vcHRpb25zLnJhbmdlcyYmKHRoaXMueXlsbG9jLnJhbmdlPVswLDBdKSx0aGlzLm9mZnNldD0wLHRoaXN9LGlucHV0OmZ1bmN0aW9uKCl7dmFyIFh0PXRoaXMuX2lucHV0WzBdO3RoaXMueXl0ZXh0Kz1YdCx0aGlzLnl5bGVuZysrLHRoaXMub2Zmc2V0KyssdGhpcy5tYXRjaCs9WHQsdGhpcy5tYXRjaGVkKz1YdDt2YXIgZWU9WHQubWF0Y2goLyg/OlxyXG4/fFxuKS4qL2cpO3JldHVybiBlZT8odGhpcy55eWxpbmVubysrLHRoaXMueXlsbG9jLmxhc3RfbGluZSsrKTp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbisrLHRoaXMub3B0aW9ucy5yYW5nZXMmJnRoaXMueXlsbG9jLnJhbmdlWzFdKyssdGhpcy5faW5wdXQ9dGhpcy5faW5wdXQuc2xpY2UoMSksWHR9LHVucHV0OmZ1bmN0aW9uKFh0KXt2YXIgZWU9WHQubGVuZ3RoLGNlPVh0LnNwbGl0KC8oPzpcclxuP3xcbikvZyk7dGhpcy5faW5wdXQ9WHQrdGhpcy5faW5wdXQsdGhpcy55eXRleHQ9dGhpcy55eXRleHQuc3Vic3RyKDAsdGhpcy55eXRleHQubGVuZ3RoLWVlKSx0aGlzLm9mZnNldC09ZWU7dmFyIFB0PXRoaXMubWF0Y2guc3BsaXQoLyg/OlxyXG4/fFxuKS9nKTt0aGlzLm1hdGNoPXRoaXMubWF0Y2guc3Vic3RyKDAsdGhpcy5tYXRjaC5sZW5ndGgtMSksdGhpcy5tYXRjaGVkPXRoaXMubWF0Y2hlZC5zdWJzdHIoMCx0aGlzLm1hdGNoZWQubGVuZ3RoLTEpLGNlLmxlbmd0aC0xJiYodGhpcy55eWxpbmVuby09Y2UubGVuZ3RoLTEpO3ZhciBqZT10aGlzLnl5bGxvYy5yYW5nZTtyZXR1cm4gdGhpcy55eWxsb2M9e2ZpcnN0X2xpbmU6dGhpcy55eWxsb2MuZmlyc3RfbGluZSxsYXN0X2xpbmU6dGhpcy55eWxpbmVubysxLGZpcnN0X2NvbHVtbjp0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4sbGFzdF9jb2x1bW46Y2U/KGNlLmxlbmd0aD09PVB0Lmxlbmd0aD90aGlzLnl5bGxvYy5maXJzdF9jb2x1bW46MCkrUHRbUHQubGVuZ3RoLWNlLmxlbmd0aF0ubGVuZ3RoLWNlWzBdLmxlbmd0aDp0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4tZWV9LHRoaXMub3B0aW9ucy5yYW5nZXMmJih0aGlzLnl5bGxvYy5yYW5nZT1bamVbMF0samVbMF0rdGhpcy55eWxlbmctZWVdKSx0aGlzLnl5bGVuZz10aGlzLnl5dGV4dC5sZW5ndGgsdGhpc30sbW9yZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tb3JlPSEwLHRoaXN9LHJlamVjdDpmdW5jdGlvbigpe2lmKHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIpdGhpcy5fYmFja3RyYWNrPSEwO2Vsc2UgcmV0dXJuIHRoaXMucGFyc2VFcnJvcigiTGV4aWNhbCBlcnJvciBvbiBsaW5lICIrKHRoaXMueXlsaW5lbm8rMSkrYC4gWW91IGNhbiBvbmx5IGludm9rZSByZWplY3QoKSBpbiB0aGUgbGV4ZXIgd2hlbiB0aGUgbGV4ZXIgaXMgb2YgdGhlIGJhY2t0cmFja2luZyBwZXJzdWFzaW9uIChvcHRpb25zLmJhY2t0cmFja19sZXhlciA9IHRydWUpLgpgK3RoaXMuc2hvd1Bvc2l0aW9uKCkse3RleHQ6IiIsdG9rZW46bnVsbCxsaW5lOnRoaXMueXlsaW5lbm99KTtyZXR1cm4gdGhpc30sbGVzczpmdW5jdGlvbihYdCl7dGhpcy51bnB1dCh0aGlzLm1hdGNoLnNsaWNlKFh0KSl9LHBhc3RJbnB1dDpmdW5jdGlvbigpe3ZhciBYdD10aGlzLm1hdGNoZWQuc3Vic3RyKDAsdGhpcy5tYXRjaGVkLmxlbmd0aC10aGlzLm1hdGNoLmxlbmd0aCk7cmV0dXJuKFh0Lmxlbmd0aD4yMD8iLi4uIjoiIikrWHQuc3Vic3RyKC0yMCkucmVwbGFjZSgvXG4vZywiIil9LHVwY29taW5nSW5wdXQ6ZnVuY3Rpb24oKXt2YXIgWHQ9dGhpcy5tYXRjaDtyZXR1cm4gWHQubGVuZ3RoPDIwJiYoWHQrPXRoaXMuX2lucHV0LnN1YnN0cigwLDIwLVh0Lmxlbmd0aCkpLChYdC5zdWJzdHIoMCwyMCkrKFh0Lmxlbmd0aD4yMD8iLi4uIjoiIikpLnJlcGxhY2UoL1xuL2csIiIpfSxzaG93UG9zaXRpb246ZnVuY3Rpb24oKXt2YXIgWHQ9dGhpcy5wYXN0SW5wdXQoKSxlZT1uZXcgQXJyYXkoWHQubGVuZ3RoKzEpLmpvaW4oIi0iKTtyZXR1cm4gWHQrdGhpcy51cGNvbWluZ0lucHV0KCkrYApgK2VlKyJeIn0sdGVzdF9tYXRjaDpmdW5jdGlvbihYdCxlZSl7dmFyIGNlLFB0LGplO2lmKHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXImJihqZT17eXlsaW5lbm86dGhpcy55eWxpbmVubyx5eWxsb2M6e2ZpcnN0X2xpbmU6dGhpcy55eWxsb2MuZmlyc3RfbGluZSxsYXN0X2xpbmU6dGhpcy5sYXN0X2xpbmUsZmlyc3RfY29sdW1uOnRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbixsYXN0X2NvbHVtbjp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbn0seXl0ZXh0OnRoaXMueXl0ZXh0LG1hdGNoOnRoaXMubWF0Y2gsbWF0Y2hlczp0aGlzLm1hdGNoZXMsbWF0Y2hlZDp0aGlzLm1hdGNoZWQseXlsZW5nOnRoaXMueXlsZW5nLG9mZnNldDp0aGlzLm9mZnNldCxfbW9yZTp0aGlzLl9tb3JlLF9pbnB1dDp0aGlzLl9pbnB1dCx5eTp0aGlzLnl5LGNvbmRpdGlvblN0YWNrOnRoaXMuY29uZGl0aW9uU3RhY2suc2xpY2UoMCksZG9uZTp0aGlzLmRvbmV9LHRoaXMub3B0aW9ucy5yYW5nZXMmJihqZS55eWxsb2MucmFuZ2U9dGhpcy55eWxsb2MucmFuZ2Uuc2xpY2UoMCkpKSxQdD1YdFswXS5tYXRjaCgvKD86XHJcbj98XG4pLiovZyksUHQmJih0aGlzLnl5bGluZW5vKz1QdC5sZW5ndGgpLHRoaXMueXlsbG9jPXtmaXJzdF9saW5lOnRoaXMueXlsbG9jLmxhc3RfbGluZSxsYXN0X2xpbmU6dGhpcy55eWxpbmVubysxLGZpcnN0X2NvbHVtbjp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbixsYXN0X2NvbHVtbjpQdD9QdFtQdC5sZW5ndGgtMV0ubGVuZ3RoLVB0W1B0Lmxlbmd0aC0xXS5tYXRjaCgvXHI/XG4/LylbMF0ubGVuZ3RoOnRoaXMueXlsbG9jLmxhc3RfY29sdW1uK1h0WzBdLmxlbmd0aH0sdGhpcy55eXRleHQrPVh0WzBdLHRoaXMubWF0Y2grPVh0WzBdLHRoaXMubWF0Y2hlcz1YdCx0aGlzLnl5bGVuZz10aGlzLnl5dGV4dC5sZW5ndGgsdGhpcy5vcHRpb25zLnJhbmdlcyYmKHRoaXMueXlsbG9jLnJhbmdlPVt0aGlzLm9mZnNldCx0aGlzLm9mZnNldCs9dGhpcy55eWxlbmddKSx0aGlzLl9tb3JlPSExLHRoaXMuX2JhY2t0cmFjaz0hMSx0aGlzLl9pbnB1dD10aGlzLl9pbnB1dC5zbGljZShYdFswXS5sZW5ndGgpLHRoaXMubWF0Y2hlZCs9WHRbMF0sY2U9dGhpcy5wZXJmb3JtQWN0aW9uLmNhbGwodGhpcyx0aGlzLnl5LHRoaXMsZWUsdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXSksdGhpcy5kb25lJiZ0aGlzLl9pbnB1dCYmKHRoaXMuZG9uZT0hMSksY2UpcmV0dXJuIGNlO2lmKHRoaXMuX2JhY2t0cmFjayl7Zm9yKHZhciBydCBpbiBqZSl0aGlzW3J0XT1qZVtydF07cmV0dXJuITF9cmV0dXJuITF9LG5leHQ6ZnVuY3Rpb24oKXtpZih0aGlzLmRvbmUpcmV0dXJuIHRoaXMuRU9GO3RoaXMuX2lucHV0fHwodGhpcy5kb25lPSEwKTt2YXIgWHQsZWUsY2UsUHQ7dGhpcy5fbW9yZXx8KHRoaXMueXl0ZXh0PSIiLHRoaXMubWF0Y2g9IiIpO2Zvcih2YXIgamU9dGhpcy5fY3VycmVudFJ1bGVzKCkscnQ9MDtydDxqZS5sZW5ndGg7cnQrKylpZihjZT10aGlzLl9pbnB1dC5tYXRjaCh0aGlzLnJ1bGVzW2plW3J0XV0pLGNlJiYoIWVlfHxjZVswXS5sZW5ndGg+ZWVbMF0ubGVuZ3RoKSl7aWYoZWU9Y2UsUHQ9cnQsdGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlcil7aWYoWHQ9dGhpcy50ZXN0X21hdGNoKGNlLGplW3J0XSksWHQhPT0hMSlyZXR1cm4gWHQ7aWYodGhpcy5fYmFja3RyYWNrKXtlZT0hMTtjb250aW51ZX1lbHNlIHJldHVybiExfWVsc2UgaWYoIXRoaXMub3B0aW9ucy5mbGV4KWJyZWFrfXJldHVybiBlZT8oWHQ9dGhpcy50ZXN0X21hdGNoKGVlLGplW1B0XSksWHQhPT0hMT9YdDohMSk6dGhpcy5faW5wdXQ9PT0iIj90aGlzLkVPRjp0aGlzLnBhcnNlRXJyb3IoIkxleGljYWwgZXJyb3Igb24gbGluZSAiKyh0aGlzLnl5bGluZW5vKzEpK2AuIFVucmVjb2duaXplZCB0ZXh0LgpgK3RoaXMuc2hvd1Bvc2l0aW9uKCkse3RleHQ6IiIsdG9rZW46bnVsbCxsaW5lOnRoaXMueXlsaW5lbm99KX0sbGV4OmZ1bmN0aW9uKCl7dmFyIGVlPXRoaXMubmV4dCgpO3JldHVybiBlZXx8dGhpcy5sZXgoKX0sYmVnaW46ZnVuY3Rpb24oZWUpe3RoaXMuY29uZGl0aW9uU3RhY2sucHVzaChlZSl9LHBvcFN0YXRlOmZ1bmN0aW9uKCl7dmFyIGVlPXRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTE7cmV0dXJuIGVlPjA/dGhpcy5jb25kaXRpb25TdGFjay5wb3AoKTp0aGlzLmNvbmRpdGlvblN0YWNrWzBdfSxfY3VycmVudFJ1bGVzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoJiZ0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTFdP3RoaXMuY29uZGl0aW9uc1t0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTFdXS5ydWxlczp0aGlzLmNvbmRpdGlvbnMuSU5JVElBTC5ydWxlc30sdG9wU3RhdGU6ZnVuY3Rpb24oZWUpe3JldHVybiBlZT10aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xLU1hdGguYWJzKGVlfHwwKSxlZT49MD90aGlzLmNvbmRpdGlvblN0YWNrW2VlXToiSU5JVElBTCJ9LHB1c2hTdGF0ZTpmdW5jdGlvbihlZSl7dGhpcy5iZWdpbihlZSl9LHN0YXRlU3RhY2tTaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RofSxvcHRpb25zOnt9LHBlcmZvcm1BY3Rpb246ZnVuY3Rpb24oZWUsY2UsUHQsamUpe3N3aXRjaChQdCl7Y2FzZSAwOnJldHVybiB0aGlzLmJlZ2luKCJvcGVuX2RpcmVjdGl2ZSIpLDEyO2Nhc2UgMTpyZXR1cm4gdGhpcy5iZWdpbigidHlwZV9kaXJlY3RpdmUiKSwxMztjYXNlIDI6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSx0aGlzLmJlZ2luKCJhcmdfZGlyZWN0aXZlIiksMTA7Y2FzZSAzOnJldHVybiB0aGlzLnBvcFN0YXRlKCksdGhpcy5wb3BTdGF0ZSgpLDE1O2Nhc2UgNDpyZXR1cm4gMTQ7Y2FzZSA1OmJyZWFrO2Nhc2UgNjpicmVhaztjYXNlIDc6cmV0dXJuIHRoaXMuYmVnaW4oImFjY190aXRsZSIpLDQ0O2Nhc2UgODpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLCJhY2NfdGl0bGVfdmFsdWUiO2Nhc2UgOTpyZXR1cm4gdGhpcy5iZWdpbigiYWNjX2Rlc2NyIiksNDY7Y2FzZSAxMDpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLCJhY2NfZGVzY3JfdmFsdWUiO2Nhc2UgMTE6dGhpcy5iZWdpbigiYWNjX2Rlc2NyX211bHRpbGluZSIpO2JyZWFrO2Nhc2UgMTI6dGhpcy5wb3BTdGF0ZSgpO2JyZWFrO2Nhc2UgMTM6cmV0dXJuImFjY19kZXNjcl9tdWx0aWxpbmVfdmFsdWUiO2Nhc2UgMTQ6dGhpcy5iZWdpbigic3RyaW5nIik7YnJlYWs7Y2FzZSAxNTp0aGlzLnBvcFN0YXRlKCk7YnJlYWs7Y2FzZSAxNjpyZXR1cm4iU1RSIjtjYXNlIDE3OnJldHVybiA4NjtjYXNlIDE4OnJldHVybiA5NTtjYXNlIDE5OnJldHVybiA4NztjYXNlIDIwOnJldHVybiAxMDQ7Y2FzZSAyMTpyZXR1cm4gODg7Y2FzZSAyMjpyZXR1cm4gODk7Y2FzZSAyMzp0aGlzLmJlZ2luKCJocmVmIik7YnJlYWs7Y2FzZSAyNDp0aGlzLnBvcFN0YXRlKCk7YnJlYWs7Y2FzZSAyNTpyZXR1cm4gMTAwO2Nhc2UgMjY6dGhpcy5iZWdpbigiY2FsbGJhY2tuYW1lIik7YnJlYWs7Y2FzZSAyNzp0aGlzLnBvcFN0YXRlKCk7YnJlYWs7Y2FzZSAyODp0aGlzLnBvcFN0YXRlKCksdGhpcy5iZWdpbigiY2FsbGJhY2thcmdzIik7YnJlYWs7Y2FzZSAyOTpyZXR1cm4gOTg7Y2FzZSAzMDp0aGlzLnBvcFN0YXRlKCk7YnJlYWs7Y2FzZSAzMTpyZXR1cm4gOTk7Y2FzZSAzMjp0aGlzLmJlZ2luKCJjbGljayIpO2JyZWFrO2Nhc2UgMzM6dGhpcy5wb3BTdGF0ZSgpO2JyZWFrO2Nhc2UgMzQ6cmV0dXJuIDkwO2Nhc2UgMzU6cmV0dXJuIGVlLmxleC5maXJzdEdyYXBoKCkmJnRoaXMuYmVnaW4oImRpciIpLDI0O2Nhc2UgMzY6cmV0dXJuIGVlLmxleC5maXJzdEdyYXBoKCkmJnRoaXMuYmVnaW4oImRpciIpLDI0O2Nhc2UgMzc6cmV0dXJuIDM4O2Nhc2UgMzg6cmV0dXJuIDQyO2Nhc2UgMzk6cmV0dXJuIDEwMTtjYXNlIDQwOnJldHVybiAxMDE7Y2FzZSA0MTpyZXR1cm4gMTAxO2Nhc2UgNDI6cmV0dXJuIDEwMTtjYXNlIDQzOnJldHVybiB0aGlzLnBvcFN0YXRlKCksMjU7Y2FzZSA0NDpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLDI2O2Nhc2UgNDU6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSwyNjtjYXNlIDQ2OnJldHVybiB0aGlzLnBvcFN0YXRlKCksMjY7Y2FzZSA0NzpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLDI2O2Nhc2UgNDg6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSwyNjtjYXNlIDQ5OnJldHVybiB0aGlzLnBvcFN0YXRlKCksMjY7Y2FzZSA1MDpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLDI2O2Nhc2UgNTE6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSwyNjtjYXNlIDUyOnJldHVybiB0aGlzLnBvcFN0YXRlKCksMjY7Y2FzZSA1MzpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLDI2O2Nhc2UgNTQ6cmV0dXJuIDExODtjYXNlIDU1OnJldHVybiAxMTk7Y2FzZSA1NjpyZXR1cm4gMTIwO2Nhc2UgNTc6cmV0dXJuIDEyMTtjYXNlIDU4OnJldHVybiAxMDU7Y2FzZSA1OTpyZXR1cm4gMTExO2Nhc2UgNjA6cmV0dXJuIDUzO2Nhc2UgNjE6cmV0dXJuIDY3O2Nhc2UgNjI6cmV0dXJuIDUyO2Nhc2UgNjM6cmV0dXJuIDIwO2Nhc2UgNjQ6cmV0dXJuIDEwNjtjYXNlIDY1OnJldHVybiAxMjY7Y2FzZSA2NjpyZXR1cm4gODI7Y2FzZSA2NzpyZXR1cm4gODI7Y2FzZSA2ODpyZXR1cm4gODI7Y2FzZSA2OTpyZXR1cm4gODI7Y2FzZSA3MDpyZXR1cm4gODE7Y2FzZSA3MTpyZXR1cm4gODE7Y2FzZSA3MjpyZXR1cm4gODE7Y2FzZSA3MzpyZXR1cm4gNTk7Y2FzZSA3NDpyZXR1cm4gNjA7Y2FzZSA3NTpyZXR1cm4gNjE7Y2FzZSA3NjpyZXR1cm4gNjI7Y2FzZSA3NzpyZXR1cm4gNjM7Y2FzZSA3ODpyZXR1cm4gNjQ7Y2FzZSA3OTpyZXR1cm4gNjU7Y2FzZSA4MDpyZXR1cm4gNjk7Y2FzZSA4MTpyZXR1cm4gNzA7Y2FzZSA4MjpyZXR1cm4gNTU7Y2FzZSA4MzpyZXR1cm4gNTY7Y2FzZSA4NDpyZXR1cm4gMTA5O2Nhc2UgODU6cmV0dXJuIDExMjtjYXNlIDg2OnJldHVybiAxMjc7Y2FzZSA4NzpyZXR1cm4gMTI0O2Nhc2UgODg6cmV0dXJuIDExMztjYXNlIDg5OnJldHVybiAxMjU7Y2FzZSA5MDpyZXR1cm4gMTI1O2Nhc2UgOTE6cmV0dXJuIDExNDtjYXNlIDkyOnJldHVybiA3MztjYXNlIDkzOnJldHVybiA5MjtjYXNlIDk0OnJldHVybiJTRVAiO2Nhc2UgOTU6cmV0dXJuIDkxO2Nhc2UgOTY6cmV0dXJuIDY2O2Nhc2UgOTc6cmV0dXJuIDc1O2Nhc2UgOTg6cmV0dXJuIDc0O2Nhc2UgOTk6cmV0dXJuIDc3O2Nhc2UgMTAwOnJldHVybiA3NjtjYXNlIDEwMTpyZXR1cm4gMTIyO2Nhc2UgMTAyOnJldHVybiAxMjM7Y2FzZSAxMDM6cmV0dXJuIDY4O2Nhc2UgMTA0OnJldHVybiA1NztjYXNlIDEwNTpyZXR1cm4gNTg7Y2FzZSAxMDY6cmV0dXJuIDQwO2Nhc2UgMTA3OnJldHVybiA0MTtjYXNlIDEwODpyZXR1cm4gNzE7Y2FzZSAxMDk6cmV0dXJuIDcyO2Nhc2UgMTEwOnJldHVybiAxMzM7Y2FzZSAxMTE6cmV0dXJuIDIxO2Nhc2UgMTEyOnJldHVybiAyMjtjYXNlIDExMzpyZXR1cm4gMjN9fSxydWxlczpbL14oPzolJVx7KS8sL14oPzooKD86KD8hXH0lJSlbXjouXSkqKSkvLC9eKD86OikvLC9eKD86XH0lJSkvLC9eKD86KCg/Oig/IVx9JSUpLnxcbikqKSkvLC9eKD86JSUoPyFceylbXlxuXSopLywvXig/OlteXH1dJSVbXlxuXSopLywvXig/OmFjY1RpdGxlXHMqOlxzKikvLC9eKD86KD8hXG58fCkqW15cbl0qKS8sL14oPzphY2NEZXNjclxzKjpccyopLywvXig/Oig/IVxufHwpKlteXG5dKikvLC9eKD86YWNjRGVzY3Jccypce1xzKikvLC9eKD86W1x9XSkvLC9eKD86W15cfV0qKS8sL14oPzpbIl0pLywvXig/OlsiXSkvLC9eKD86W14iXSopLywvXig/OnN0eWxlXGIpLywvXig/OmRlZmF1bHRcYikvLC9eKD86bGlua1N0eWxlXGIpLywvXig/OmludGVycG9sYXRlXGIpLywvXig/OmNsYXNzRGVmXGIpLywvXig/OmNsYXNzXGIpLywvXig/OmhyZWZbXHNdK1siXSkvLC9eKD86WyJdKS8sL14oPzpbXiJdKikvLC9eKD86Y2FsbFtcc10rKS8sL14oPzpcKFtcc10qXCkpLywvXig/OlwoKS8sL14oPzpbXihdKikvLC9eKD86XCkpLywvXig/OlteKV0qKS8sL14oPzpjbGlja1tcc10rKS8sL14oPzpbXHNcbl0pLywvXig/OlteXHNcbl0qKS8sL14oPzpncmFwaFxiKS8sL14oPzpmbG93Y2hhcnRcYikvLC9eKD86c3ViZ3JhcGhcYikvLC9eKD86ZW5kXGJccyopLywvXig/Ol9zZWxmXGIpLywvXig/Ol9ibGFua1xiKS8sL14oPzpfcGFyZW50XGIpLywvXig/Ol90b3BcYikvLC9eKD86KFxyP1xuKSpccypcbikvLC9eKD86XHMqTFJcYikvLC9eKD86XHMqUkxcYikvLC9eKD86XHMqVEJcYikvLC9eKD86XHMqQlRcYikvLC9eKD86XHMqVERcYikvLC9eKD86XHMqQlJcYikvLC9eKD86XHMqPCkvLC9eKD86XHMqPikvLC9eKD86XHMqXF4pLywvXig/OlxzKnZcYikvLC9eKD86LipkaXJlY3Rpb25ccytUQlteXG5dKikvLC9eKD86LipkaXJlY3Rpb25ccytCVFteXG5dKikvLC9eKD86LipkaXJlY3Rpb25ccytSTFteXG5dKikvLC9eKD86LipkaXJlY3Rpb25ccytMUlteXG5dKikvLC9eKD86WzAtOV0rKS8sL14oPzojKS8sL14oPzo6OjopLywvXig/OjopLywvXig/OiYpLywvXig/OjspLywvXig/OiwpLywvXig/OlwqKS8sL14oPzpccypbeG88XT8tLStbLXhvPl1ccyopLywvXig/OlxzKlt4bzxdPz09K1s9eG8+XVxzKikvLC9eKD86XHMqW3hvPF0/LT9cListW3hvPl0/XHMqKS8sL14oPzpccyp+fltcfl0rXHMqKS8sL14oPzpccypbeG88XT8tLVxzKikvLC9eKD86XHMqW3hvPF0/PT1ccyopLywvXig/OlxzKlt4bzxdPy1cLlxzKikvLC9eKD86XCgtKS8sL14oPzotXCkpLywvXig/OlwoXFspLywvXig/OlxdXCkpLywvXig/OlxbXFspLywvXig/OlxdXF0pLywvXig/OlxbXHwpLywvXig/OlxbXCgpLywvXig/OlwpXF0pLywvXig/OlwoXChcKCkvLC9eKD86XClcKVwpKS8sL14oPzotKS8sL14oPzpcLikvLC9eKD86W1xfXSkvLC9eKD86XCspLywvXig/OiUpLywvXig/Oj0pLywvXig/Oj0pLywvXig/OjwpLywvXig/Oj4pLywvXig/OlxeKS8sL14oPzpcXFx8KS8sL14oPzp2XGIpLywvXig/OltBLVphLXpdKykvLC9eKD86XFxcXSkvLC9eKD86XFtcLykvLC9eKD86XC9cXSkvLC9eKD86XFtcXCkvLC9eKD86WyEiIyQlJicqKywtLmA/XFxfL10pLywvXig/OltcdTAwQUFcdTAwQjVcdTAwQkFcdTAwQzAtXHUwMEQ2XHUwMEQ4LVx1MDBGNl18W1x1MDBGOC1cdTAyQzFcdTAyQzYtXHUwMkQxXHUwMkUwLVx1MDJFNFx1MDJFQ1x1MDJFRVx1MDM3MC1cdTAzNzRcdTAzNzZcdTAzNzddfFtcdTAzN0EtXHUwMzdEXHUwMzg2XHUwMzg4LVx1MDM4QVx1MDM4Q1x1MDM4RS1cdTAzQTFcdTAzQTMtXHUwM0Y1XXxbXHUwM0Y3LVx1MDQ4MVx1MDQ4QS1cdTA1MjdcdTA1MzEtXHUwNTU2XHUwNTU5XHUwNTYxLVx1MDU4N1x1MDVEMC1cdTA1RUFdfFtcdTA1RjAtXHUwNUYyXHUwNjIwLVx1MDY0QVx1MDY2RVx1MDY2Rlx1MDY3MS1cdTA2RDNcdTA2RDVcdTA2RTVcdTA2RTZcdTA2RUVdfFtcdTA2RUZcdTA2RkEtXHUwNkZDXHUwNkZGXHUwNzEwXHUwNzEyLVx1MDcyRlx1MDc0RC1cdTA3QTVcdTA3QjFcdTA3Q0EtXHUwN0VBXXxbXHUwN0Y0XHUwN0Y1XHUwN0ZBXHUwODAwLVx1MDgxNVx1MDgxQVx1MDgyNFx1MDgyOFx1MDg0MC1cdTA4NThcdTA4QTBdfFtcdTA4QTItXHUwOEFDXHUwOTA0LVx1MDkzOVx1MDkzRFx1MDk1MFx1MDk1OC1cdTA5NjFcdTA5NzEtXHUwOTc3XXxbXHUwOTc5LVx1MDk3Rlx1MDk4NS1cdTA5OENcdTA5OEZcdTA5OTBcdTA5OTMtXHUwOUE4XHUwOUFBLVx1MDlCMFx1MDlCMl18W1x1MDlCNi1cdTA5QjlcdTA5QkRcdTA5Q0VcdTA5RENcdTA5RERcdTA5REYtXHUwOUUxXHUwOUYwXHUwOUYxXHUwQTA1LVx1MEEwQV18W1x1MEEwRlx1MEExMFx1MEExMy1cdTBBMjhcdTBBMkEtXHUwQTMwXHUwQTMyXHUwQTMzXHUwQTM1XHUwQTM2XHUwQTM4XHUwQTM5XXxbXHUwQTU5LVx1MEE1Q1x1MEE1RVx1MEE3Mi1cdTBBNzRcdTBBODUtXHUwQThEXHUwQThGLVx1MEE5MVx1MEE5My1cdTBBQThdfFtcdTBBQUEtXHUwQUIwXHUwQUIyXHUwQUIzXHUwQUI1LVx1MEFCOVx1MEFCRFx1MEFEMFx1MEFFMFx1MEFFMVx1MEIwNS1cdTBCMENdfFtcdTBCMEZcdTBCMTBcdTBCMTMtXHUwQjI4XHUwQjJBLVx1MEIzMFx1MEIzMlx1MEIzM1x1MEIzNS1cdTBCMzlcdTBCM0RcdTBCNUNdfFtcdTBCNURcdTBCNUYtXHUwQjYxXHUwQjcxXHUwQjgzXHUwQjg1LVx1MEI4QVx1MEI4RS1cdTBCOTBcdTBCOTItXHUwQjk1XHUwQjk5XXxbXHUwQjlBXHUwQjlDXHUwQjlFXHUwQjlGXHUwQkEzXHUwQkE0XHUwQkE4LVx1MEJBQVx1MEJBRS1cdTBCQjlcdTBCRDBdfFtcdTBDMDUtXHUwQzBDXHUwQzBFLVx1MEMxMFx1MEMxMi1cdTBDMjhcdTBDMkEtXHUwQzMzXHUwQzM1LVx1MEMzOVx1MEMzRF18W1x1MEM1OFx1MEM1OVx1MEM2MFx1MEM2MVx1MEM4NS1cdTBDOENcdTBDOEUtXHUwQzkwXHUwQzkyLVx1MENBOFx1MENBQS1cdTBDQjNdfFtcdTBDQjUtXHUwQ0I5XHUwQ0JEXHUwQ0RFXHUwQ0UwXHUwQ0UxXHUwQ0YxXHUwQ0YyXHUwRDA1LVx1MEQwQ1x1MEQwRS1cdTBEMTBdfFtcdTBEMTItXHUwRDNBXHUwRDNEXHUwRDRFXHUwRDYwXHUwRDYxXHUwRDdBLVx1MEQ3Rlx1MEQ4NS1cdTBEOTZcdTBEOUEtXHUwREIxXXxbXHUwREIzLVx1MERCQlx1MERCRFx1MERDMC1cdTBEQzZcdTBFMDEtXHUwRTMwXHUwRTMyXHUwRTMzXHUwRTQwLVx1MEU0Nlx1MEU4MV18W1x1MEU4Mlx1MEU4NFx1MEU4N1x1MEU4OFx1MEU4QVx1MEU4RFx1MEU5NC1cdTBFOTdcdTBFOTktXHUwRTlGXHUwRUExLVx1MEVBM118W1x1MEVBNVx1MEVBN1x1MEVBQVx1MEVBQlx1MEVBRC1cdTBFQjBcdTBFQjJcdTBFQjNcdTBFQkRcdTBFQzAtXHUwRUM0XHUwRUM2XXxbXHUwRURDLVx1MEVERlx1MEYwMFx1MEY0MC1cdTBGNDdcdTBGNDktXHUwRjZDXHUwRjg4LVx1MEY4Q1x1MTAwMC1cdTEwMkFdfFtcdTEwM0ZcdTEwNTAtXHUxMDU1XHUxMDVBLVx1MTA1RFx1MTA2MVx1MTA2NVx1MTA2Nlx1MTA2RS1cdTEwNzBcdTEwNzUtXHUxMDgxXXxbXHUxMDhFXHUxMEEwLVx1MTBDNVx1MTBDN1x1MTBDRFx1MTBEMC1cdTEwRkFcdTEwRkMtXHUxMjQ4XHUxMjRBLVx1MTI0RF18W1x1MTI1MC1cdTEyNTZcdTEyNThcdTEyNUEtXHUxMjVEXHUxMjYwLVx1MTI4OFx1MTI4QS1cdTEyOERcdTEyOTAtXHUxMkIwXXxbXHUxMkIyLVx1MTJCNVx1MTJCOC1cdTEyQkVcdTEyQzBcdTEyQzItXHUxMkM1XHUxMkM4LVx1MTJENlx1MTJEOC1cdTEzMTBdfFtcdTEzMTItXHUxMzE1XHUxMzE4LVx1MTM1QVx1MTM4MC1cdTEzOEZcdTEzQTAtXHUxM0Y0XHUxNDAxLVx1MTY2Q118W1x1MTY2Ri1cdTE2N0ZcdTE2ODEtXHUxNjlBXHUxNkEwLVx1MTZFQVx1MTcwMC1cdTE3MENcdTE3MEUtXHUxNzExXXxbXHUxNzIwLVx1MTczMVx1MTc0MC1cdTE3NTFcdTE3NjAtXHUxNzZDXHUxNzZFLVx1MTc3MFx1MTc4MC1cdTE3QjNcdTE3RDddfFtcdTE3RENcdTE4MjAtXHUxODc3XHUxODgwLVx1MThBOFx1MThBQVx1MThCMC1cdTE4RjVcdTE5MDAtXHUxOTFDXXxbXHUxOTUwLVx1MTk2RFx1MTk3MC1cdTE5NzRcdTE5ODAtXHUxOUFCXHUxOUMxLVx1MTlDN1x1MUEwMC1cdTFBMTZdfFtcdTFBMjAtXHUxQTU0XHUxQUE3XHUxQjA1LVx1MUIzM1x1MUI0NS1cdTFCNEJcdTFCODMtXHUxQkEwXHUxQkFFXHUxQkFGXXxbXHUxQkJBLVx1MUJFNVx1MUMwMC1cdTFDMjNcdTFDNEQtXHUxQzRGXHUxQzVBLVx1MUM3RFx1MUNFOS1cdTFDRUNdfFtcdTFDRUUtXHUxQ0YxXHUxQ0Y1XHUxQ0Y2XHUxRDAwLVx1MURCRlx1MUUwMC1cdTFGMTVcdTFGMTgtXHUxRjFEXXxbXHUxRjIwLVx1MUY0NVx1MUY0OC1cdTFGNERcdTFGNTAtXHUxRjU3XHUxRjU5XHUxRjVCXHUxRjVEXHUxRjVGLVx1MUY3RF18W1x1MUY4MC1cdTFGQjRcdTFGQjYtXHUxRkJDXHUxRkJFXHUxRkMyLVx1MUZDNFx1MUZDNi1cdTFGQ0NcdTFGRDAtXHUxRkQzXXxbXHUxRkQ2LVx1MUZEQlx1MUZFMC1cdTFGRUNcdTFGRjItXHUxRkY0XHUxRkY2LVx1MUZGQ1x1MjA3MVx1MjA3Rl18W1x1MjA5MC1cdTIwOUNcdTIxMDJcdTIxMDdcdTIxMEEtXHUyMTEzXHUyMTE1XHUyMTE5LVx1MjExRFx1MjEyNFx1MjEyNlx1MjEyOF18W1x1MjEyQS1cdTIxMkRcdTIxMkYtXHUyMTM5XHUyMTNDLVx1MjEzRlx1MjE0NS1cdTIxNDlcdTIxNEVcdTIxODNcdTIxODRdfFtcdTJDMDAtXHUyQzJFXHUyQzMwLVx1MkM1RVx1MkM2MC1cdTJDRTRcdTJDRUItXHUyQ0VFXHUyQ0YyXHUyQ0YzXXxbXHUyRDAwLVx1MkQyNVx1MkQyN1x1MkQyRFx1MkQzMC1cdTJENjdcdTJENkZcdTJEODAtXHUyRDk2XHUyREEwLVx1MkRBNl18W1x1MkRBOC1cdTJEQUVcdTJEQjAtXHUyREI2XHUyREI4LVx1MkRCRVx1MkRDMC1cdTJEQzZcdTJEQzgtXHUyRENFXXxbXHUyREQwLVx1MkRENlx1MkREOC1cdTJEREVcdTJFMkZcdTMwMDVcdTMwMDZcdTMwMzEtXHUzMDM1XHUzMDNCXHUzMDNDXXxbXHUzMDQxLVx1MzA5Nlx1MzA5RC1cdTMwOUZcdTMwQTEtXHUzMEZBXHUzMEZDLVx1MzBGRlx1MzEwNS1cdTMxMkRdfFtcdTMxMzEtXHUzMThFXHUzMUEwLVx1MzFCQVx1MzFGMC1cdTMxRkZcdTM0MDAtXHU0REI1XHU0RTAwLVx1OUZDQ118W1x1QTAwMC1cdUE0OENcdUE0RDAtXHVBNEZEXHVBNTAwLVx1QTYwQ1x1QTYxMC1cdUE2MUZcdUE2MkFcdUE2MkJdfFtcdUE2NDAtXHVBNjZFXHVBNjdGLVx1QTY5N1x1QTZBMC1cdUE2RTVcdUE3MTctXHVBNzFGXHVBNzIyLVx1QTc4OF18W1x1QTc4Qi1cdUE3OEVcdUE3OTAtXHVBNzkzXHVBN0EwLVx1QTdBQVx1QTdGOC1cdUE4MDFcdUE4MDMtXHVBODA1XXxbXHVBODA3LVx1QTgwQVx1QTgwQy1cdUE4MjJcdUE4NDAtXHVBODczXHVBODgyLVx1QThCM1x1QThGMi1cdUE4RjdcdUE4RkJdfFtcdUE5MEEtXHVBOTI1XHVBOTMwLVx1QTk0Nlx1QTk2MC1cdUE5N0NcdUE5ODQtXHVBOUIyXHVBOUNGXHVBQTAwLVx1QUEyOF18W1x1QUE0MC1cdUFBNDJcdUFBNDQtXHVBQTRCXHVBQTYwLVx1QUE3Nlx1QUE3QVx1QUE4MC1cdUFBQUZcdUFBQjFcdUFBQjVdfFtcdUFBQjZcdUFBQjktXHVBQUJEXHVBQUMwXHVBQUMyXHVBQURCLVx1QUFERFx1QUFFMC1cdUFBRUFcdUFBRjItXHVBQUY0XXxbXHVBQjAxLVx1QUIwNlx1QUIwOS1cdUFCMEVcdUFCMTEtXHVBQjE2XHVBQjIwLVx1QUIyNlx1QUIyOC1cdUFCMkVdfFtcdUFCQzAtXHVBQkUyXHVBQzAwLVx1RDdBM1x1RDdCMC1cdUQ3QzZcdUQ3Q0ItXHVEN0ZCXHVGOTAwLVx1RkE2RF18W1x1RkE3MC1cdUZBRDlcdUZCMDAtXHVGQjA2XHVGQjEzLVx1RkIxN1x1RkIxRFx1RkIxRi1cdUZCMjhcdUZCMkEtXHVGQjM2XXxbXHVGQjM4LVx1RkIzQ1x1RkIzRVx1RkI0MFx1RkI0MVx1RkI0M1x1RkI0NFx1RkI0Ni1cdUZCQjFcdUZCRDMtXHVGRDNEXXxbXHVGRDUwLVx1RkQ4Rlx1RkQ5Mi1cdUZEQzdcdUZERjAtXHVGREZCXHVGRTcwLVx1RkU3NFx1RkU3Ni1cdUZFRkNdfFtcdUZGMjEtXHVGRjNBXHVGRjQxLVx1RkY1QVx1RkY2Ni1cdUZGQkVcdUZGQzItXHVGRkM3XHVGRkNBLVx1RkZDRl18W1x1RkZEMi1cdUZGRDdcdUZGREEtXHVGRkRDXSkvLC9eKD86XHwpLywvXig/OlwoKS8sL14oPzpcKSkvLC9eKD86XFspLywvXig/OlxdKS8sL14oPzpceykvLC9eKD86XH0pLywvXig/OiIpLywvXig/Oihccj9cbikrKS8sL14oPzpccykvLC9eKD86JCkvXSxjb25kaXRpb25zOntjbG9zZV9kaXJlY3RpdmU6e3J1bGVzOltdLGluY2x1c2l2ZTohMX0sYXJnX2RpcmVjdGl2ZTp7cnVsZXM6WzMsNF0saW5jbHVzaXZlOiExfSx0eXBlX2RpcmVjdGl2ZTp7cnVsZXM6WzIsM10saW5jbHVzaXZlOiExfSxvcGVuX2RpcmVjdGl2ZTp7cnVsZXM6WzFdLGluY2x1c2l2ZTohMX0sY2FsbGJhY2thcmdzOntydWxlczpbMzAsMzFdLGluY2x1c2l2ZTohMX0sY2FsbGJhY2tuYW1lOntydWxlczpbMjcsMjgsMjldLGluY2x1c2l2ZTohMX0saHJlZjp7cnVsZXM6WzI0LDI1XSxpbmNsdXNpdmU6ITF9LGNsaWNrOntydWxlczpbMzMsMzRdLGluY2x1c2l2ZTohMX0sdmVydGV4OntydWxlczpbXSxpbmNsdXNpdmU6ITF9LGRpcjp7cnVsZXM6WzQzLDQ0LDQ1LDQ2LDQ3LDQ4LDQ5LDUwLDUxLDUyLDUzXSxpbmNsdXNpdmU6ITF9LGFjY19kZXNjcl9tdWx0aWxpbmU6e3J1bGVzOlsxMiwxM10saW5jbHVzaXZlOiExfSxhY2NfZGVzY3I6e3J1bGVzOlsxMF0saW5jbHVzaXZlOiExfSxhY2NfdGl0bGU6e3J1bGVzOls4XSxpbmNsdXNpdmU6ITF9LHN0cmluZzp7cnVsZXM6WzE1LDE2XSxpbmNsdXNpdmU6ITF9LElOSVRJQUw6e3J1bGVzOlswLDUsNiw3LDksMTEsMTQsMTcsMTgsMTksMjAsMjEsMjIsMjMsMjYsMzIsMzUsMzYsMzcsMzgsMzksNDAsNDEsNDIsNTQsNTUsNTYsNTcsNTgsNTksNjAsNjEsNjIsNjMsNjQsNjUsNjYsNjcsNjgsNjksNzAsNzEsNzIsNzMsNzQsNzUsNzYsNzcsNzgsNzksODAsODEsODIsODMsODQsODUsODYsODcsODgsODksOTAsOTEsOTIsOTMsOTQsOTUsOTYsOTcsOTgsOTksMTAwLDEwMSwxMDIsMTAzLDEwNCwxMDUsMTA2LDEwNywxMDgsMTA5LDExMCwxMTEsMTEyLDExM10saW5jbHVzaXZlOiEwfX19O3JldHVybiBMbn0oKTtXaS5sZXhlcj1FMDtmdW5jdGlvbiBfdSgpe3RoaXMueXk9e319cmV0dXJuIF91LnByb3RvdHlwZT1XaSxXaS5QYXJzZXI9X3UsbmV3IF91fSgpO1gxLnBhcnNlcj1YMTtjb25zdCBycnQ9KHQsZSk9Pnt2YXIgcjtyZXR1cm4oKHI9ZT09bnVsbD92b2lkIDA6ZS5mbG93Y2hhcnQpPT1udWxsP3ZvaWQgMDpyLmRlZmF1bHRSZW5kZXJlcik9PT0iZGFncmUtd3JhcHBlciI/ITE6dC5tYXRjaCgvXlxzKmdyYXBoLykhPT1udWxsfSxucnQ9KHQsZSk9Pnt2YXIgcjtyZXR1cm4oKHI9ZT09bnVsbD92b2lkIDA6ZS5mbG93Y2hhcnQpPT1udWxsP3ZvaWQgMDpyLmRlZmF1bHRSZW5kZXJlcik9PT0iZGFncmUtd3JhcHBlciImJnQubWF0Y2goL15ccypncmFwaC8pIT09bnVsbD8hMDp0Lm1hdGNoKC9eXHMqZmxvd2NoYXJ0LykhPT1udWxsfSxpcnQ9ImZsb3djaGFydC0iO2xldCBzTT0wLG80PW50KCksYXI9e30sanM9W10saWw9W10scWk9W10sSzE9e30sbDQ9e30sWjE9MCxjND0hMCxWaSxRMSxKMT1bXTtjb25zdCB0MD10PT5wZS5zYW5pdGl6ZVRleHQodCxvNCksYXJ0PWZ1bmN0aW9uKHQsZSxyKXtYZS5wYXJzZURpcmVjdGl2ZSh0aGlzLHQsZSxyKX0sZTA9ZnVuY3Rpb24odCl7Y29uc3QgZT1PYmplY3Qua2V5cyhhcik7Zm9yKGxldCByPTA7cjxlLmxlbmd0aDtyKyspaWYoYXJbZVtyXV0uaWQ9PT10KXJldHVybiBhcltlW3JdXS5kb21JZDtyZXR1cm4gdH0sc3J0PWZ1bmN0aW9uKHQsZSxyLG4saSxhLHM9e30pe2xldCBvLGw9dDt0eXBlb2YgbD4idSJ8fGwudHJpbSgpLmxlbmd0aCE9PTAmJih0eXBlb2YgYXJbbF0+InUiJiYoYXJbbF09e2lkOmwsZG9tSWQ6aXJ0K2wrIi0iK3NNLHN0eWxlczpbXSxjbGFzc2VzOltdfSksc00rKyx0eXBlb2YgZTwidSI/KG80PW50KCksbz10MChlLnRyaW0oKSksb1swXT09PSciJyYmb1tvLmxlbmd0aC0xXT09PSciJyYmKG89by5zdWJzdHJpbmcoMSxvLmxlbmd0aC0xKSksYXJbbF0udGV4dD1vKTp0eXBlb2YgYXJbbF0udGV4dD4idSImJihhcltsXS50ZXh0PXQpLHR5cGVvZiByPCJ1IiYmKGFyW2xdLnR5cGU9ciksdHlwZW9mIG48InUiJiZuIT09bnVsbCYmbi5mb3JFYWNoKGZ1bmN0aW9uKHUpe2FyW2xdLnN0eWxlcy5wdXNoKHUpfSksdHlwZW9mIGk8InUiJiZpIT09bnVsbCYmaS5mb3JFYWNoKGZ1bmN0aW9uKHUpe2FyW2xdLmNsYXNzZXMucHVzaCh1KX0pLHR5cGVvZiBhPCJ1IiYmKGFyW2xdLmRpcj1hKSxhcltsXS5wcm9wcz1zKX0sb3J0PWZ1bmN0aW9uKHQsZSxyLG4pe2NvbnN0IHM9e3N0YXJ0OnQsZW5kOmUsdHlwZTp2b2lkIDAsdGV4dDoiIn07bj1yLnRleHQsdHlwZW9mIG48InUiJiYocy50ZXh0PXQwKG4udHJpbSgpKSxzLnRleHRbMF09PT0nIicmJnMudGV4dFtzLnRleHQubGVuZ3RoLTFdPT09JyInJiYocy50ZXh0PXMudGV4dC5zdWJzdHJpbmcoMSxzLnRleHQubGVuZ3RoLTEpKSksdHlwZW9mIHI8InUiJiYocy50eXBlPXIudHlwZSxzLnN0cm9rZT1yLnN0cm9rZSxzLmxlbmd0aD1yLmxlbmd0aCksanMucHVzaChzKX0sbHJ0PWZ1bmN0aW9uKHQsZSxyLG4pe2xldCBpLGE7Zm9yKGk9MDtpPHQubGVuZ3RoO2krKylmb3IoYT0wO2E8ZS5sZW5ndGg7YSsrKW9ydCh0W2ldLGVbYV0scixuKX0sY3J0PWZ1bmN0aW9uKHQsZSl7dC5mb3JFYWNoKGZ1bmN0aW9uKHIpe3I9PT0iZGVmYXVsdCI/anMuZGVmYXVsdEludGVycG9sYXRlPWU6anNbcl0uaW50ZXJwb2xhdGU9ZX0pfSx1cnQ9ZnVuY3Rpb24odCxlKXt0LmZvckVhY2goZnVuY3Rpb24ocil7cj09PSJkZWZhdWx0Ij9qcy5kZWZhdWx0U3R5bGU9ZTooU2UuaXNTdWJzdHJpbmdJbkFycmF5KCJmaWxsIixlKT09PS0xJiZlLnB1c2goImZpbGw6bm9uZSIpLGpzW3JdLnN0eWxlPWUpfSl9LGhydD1mdW5jdGlvbih0LGUpe3R5cGVvZiBpbFt0XT4idSImJihpbFt0XT17aWQ6dCxzdHlsZXM6W10sdGV4dFN0eWxlczpbXX0pLHR5cGVvZiBlPCJ1IiYmZSE9PW51bGwmJmUuZm9yRWFjaChmdW5jdGlvbihyKXtpZihyLm1hdGNoKCJjb2xvciIpKXtjb25zdCBpPXIucmVwbGFjZSgiZmlsbCIsImJnRmlsbCIpLnJlcGxhY2UoImNvbG9yIiwiZmlsbCIpO2lsW3RdLnRleHRTdHlsZXMucHVzaChpKX1pbFt0XS5zdHlsZXMucHVzaChyKX0pfSxmcnQ9ZnVuY3Rpb24odCl7Vmk9dCxWaS5tYXRjaCgvLio8LykmJihWaT0iUkwiKSxWaS5tYXRjaCgvLipcXi8pJiYoVmk9IkJUIiksVmkubWF0Y2goLy4qPi8pJiYoVmk9IkxSIiksVmkubWF0Y2goLy4qdi8pJiYoVmk9IlRCIil9LHU0PWZ1bmN0aW9uKHQsZSl7dC5zcGxpdCgiLCIpLmZvckVhY2goZnVuY3Rpb24ocil7bGV0IG49cjt0eXBlb2YgYXJbbl08InUiJiZhcltuXS5jbGFzc2VzLnB1c2goZSksdHlwZW9mIEsxW25dPCJ1IiYmSzFbbl0uY2xhc3Nlcy5wdXNoKGUpfSl9LGRydD1mdW5jdGlvbih0LGUpe3Quc3BsaXQoIiwiKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe3R5cGVvZiBlPCJ1IiYmKGw0W1ExPT09Imdlbi0xIj9lMChyKTpyXT10MChlKSl9KX0scHJ0PWZ1bmN0aW9uKHQsZSxyKXtsZXQgbj1lMCh0KTtpZihudCgpLnNlY3VyaXR5TGV2ZWwhPT0ibG9vc2UifHx0eXBlb2YgZT4idSIpcmV0dXJuO2xldCBpPVtdO2lmKHR5cGVvZiByPT0ic3RyaW5nIil7aT1yLnNwbGl0KC8sKD89KD86KD86W14iXSoiKXsyfSkqW14iXSokKS8pO2ZvcihsZXQgYT0wO2E8aS5sZW5ndGg7YSsrKXtsZXQgcz1pW2FdLnRyaW0oKTtzLmNoYXJBdCgwKT09PSciJyYmcy5jaGFyQXQocy5sZW5ndGgtMSk9PT0nIicmJihzPXMuc3Vic3RyKDEscy5sZW5ndGgtMikpLGlbYV09c319aS5sZW5ndGg9PT0wJiZpLnB1c2godCksdHlwZW9mIGFyW3RdPCJ1IiYmKGFyW3RdLmhhdmVDYWxsYmFjaz0hMCxKMS5wdXNoKGZ1bmN0aW9uKCl7Y29uc3QgYT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBbaWQ9IiR7bn0iXWApO2EhPT1udWxsJiZhLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbigpe1NlLnJ1bkZ1bmMoZSwuLi5pKX0sITEpfSkpfSxncnQ9ZnVuY3Rpb24odCxlLHIpe3Quc3BsaXQoIiwiKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe3R5cGVvZiBhcltuXTwidSImJihhcltuXS5saW5rPVNlLmZvcm1hdFVybChlLG80KSxhcltuXS5saW5rVGFyZ2V0PXIpfSksdTQodCwiY2xpY2thYmxlIil9LHlydD1mdW5jdGlvbih0KXtyZXR1cm4gbDRbdF19LG1ydD1mdW5jdGlvbih0LGUscil7dC5zcGxpdCgiLCIpLmZvckVhY2goZnVuY3Rpb24obil7cHJ0KG4sZSxyKX0pLHU0KHQsImNsaWNrYWJsZSIpfSxicnQ9ZnVuY3Rpb24odCl7SjEuZm9yRWFjaChmdW5jdGlvbihlKXtlKHQpfSl9LF9ydD1mdW5jdGlvbigpe3JldHVybiBWaS50cmltKCl9LHZydD1mdW5jdGlvbigpe3JldHVybiBhcn0seHJ0PWZ1bmN0aW9uKCl7cmV0dXJuIGpzfSxrcnQ9ZnVuY3Rpb24oKXtyZXR1cm4gaWx9LG9NPWZ1bmN0aW9uKHQpe2xldCBlPVN0KCIubWVybWFpZFRvb2x0aXAiKTsoZS5fZ3JvdXBzfHxlKVswXVswXT09PW51bGwmJihlPVN0KCJib2R5IikuYXBwZW5kKCJkaXYiKS5hdHRyKCJjbGFzcyIsIm1lcm1haWRUb29sdGlwIikuc3R5bGUoIm9wYWNpdHkiLDApKSxTdCh0KS5zZWxlY3QoInN2ZyIpLnNlbGVjdEFsbCgiZy5ub2RlIikub24oIm1vdXNlb3ZlciIsZnVuY3Rpb24oKXtjb25zdCBpPVN0KHRoaXMpO2lmKGkuYXR0cigidGl0bGUiKT09PW51bGwpcmV0dXJuO2NvbnN0IHM9dGhpcy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtlLnRyYW5zaXRpb24oKS5kdXJhdGlvbigyMDApLnN0eWxlKCJvcGFjaXR5IiwiLjkiKSxlLnRleHQoaS5hdHRyKCJ0aXRsZSIpKS5zdHlsZSgibGVmdCIsd2luZG93LnNjcm9sbFgrcy5sZWZ0KyhzLnJpZ2h0LXMubGVmdCkvMisicHgiKS5zdHlsZSgidG9wIix3aW5kb3cuc2Nyb2xsWStzLnRvcC0xNCtkb2N1bWVudC5ib2R5LnNjcm9sbFRvcCsicHgiKSxlLmh0bWwoZS5odG1sKCkucmVwbGFjZSgvJmx0O2JyXC8mZ3Q7L2csIjxici8+IikpLGkuY2xhc3NlZCgiaG92ZXIiLCEwKX0pLm9uKCJtb3VzZW91dCIsZnVuY3Rpb24oKXtlLnRyYW5zaXRpb24oKS5kdXJhdGlvbig1MDApLnN0eWxlKCJvcGFjaXR5IiwwKSxTdCh0aGlzKS5jbGFzc2VkKCJob3ZlciIsITEpfSl9O0oxLnB1c2gob00pO2NvbnN0IHdydD1mdW5jdGlvbih0PSJnZW4tMSIpe2FyPXt9LGlsPXt9LGpzPVtdLEoxPVtvTV0scWk9W10sSzE9e30sWjE9MCxsND1bXSxjND0hMCxRMT10LGNpKCl9LFRydD10PT57UTE9dHx8Imdlbi0xIn0sRXJ0PWZ1bmN0aW9uKCl7cmV0dXJuImZpbGw6I2ZmYTtzdHJva2U6ICNmNjY7IHN0cm9rZS13aWR0aDogM3B4OyBzdHJva2UtZGFzaGFycmF5OiA1LCA1O2ZpbGw6I2ZmYTtzdHJva2U6ICM2NjY7In0sQ3J0PWZ1bmN0aW9uKHQsZSxyKXtsZXQgbj10LnRyaW0oKSxpPXIudHJpbSgpO249PT1pJiZpLm1hdGNoKC9ccy8pJiYobj12b2lkIDApO2Z1bmN0aW9uIGEoaCl7Y29uc3QgZD17Ym9vbGVhbjp7fSxudW1iZXI6e30sc3RyaW5nOnt9fSxmPVtdO2xldCBwO3JldHVybntub2RlTGlzdDpoLmZpbHRlcihmdW5jdGlvbihfKXtjb25zdCB5PXR5cGVvZiBfO3JldHVybiBfLnN0bXQmJl8uc3RtdD09PSJkaXIiPyhwPV8udmFsdWUsITEpOl8udHJpbSgpPT09IiI/ITE6eSBpbiBkP2RbeV0uaGFzT3duUHJvcGVydHkoXyk/ITE6ZFt5XVtfXT0hMDpmLmluZGV4T2YoXyk+PTA/ITE6Zi5wdXNoKF8pfSksZGlyOnB9fWxldCBzPVtdO2NvbnN0e25vZGVMaXN0Om8sZGlyOmx9PWEocy5jb25jYXQuYXBwbHkocyxlKSk7aWYocz1vLFExPT09Imdlbi0xIilmb3IobGV0IGg9MDtoPHMubGVuZ3RoO2grKylzW2hdPWUwKHNbaF0pO249bnx8InN1YkdyYXBoIitaMSxpPWl8fCIiLGk9dDAoaSksWjE9WjErMTtjb25zdCB1PXtpZDpuLG5vZGVzOnMsdGl0bGU6aS50cmltKCksY2xhc3NlczpbXSxkaXI6bH07cmV0dXJuIEguaW5mbygiQWRkaW5nIix1LmlkLHUubm9kZXMsdS5kaXIpLHUubm9kZXM9aE0odSxxaSkubm9kZXMscWkucHVzaCh1KSxLMVtuXT11LG59LFNydD1mdW5jdGlvbih0KXtmb3IobGV0IGU9MDtlPHFpLmxlbmd0aDtlKyspaWYocWlbZV0uaWQ9PT10KXJldHVybiBlO3JldHVybi0xfTtsZXQgcnU9LTE7Y29uc3QgbE09W10sY009ZnVuY3Rpb24odCxlKXtjb25zdCByPXFpW2VdLm5vZGVzO2lmKHJ1PXJ1KzEscnU+MmUzKXJldHVybjtpZihsTVtydV09ZSxxaVtlXS5pZD09PXQpcmV0dXJue3Jlc3VsdDohMCxjb3VudDowfTtsZXQgbj0wLGk9MTtmb3IoO248ci5sZW5ndGg7KXtjb25zdCBhPVNydChyW25dKTtpZihhPj0wKXtjb25zdCBzPWNNKHQsYSk7aWYocy5yZXN1bHQpcmV0dXJue3Jlc3VsdDohMCxjb3VudDppK3MuY291bnR9O2k9aStzLmNvdW50fW49bisxfXJldHVybntyZXN1bHQ6ITEsY291bnQ6aX19LEFydD1mdW5jdGlvbih0KXtyZXR1cm4gbE1bdF19LE1ydD1mdW5jdGlvbigpe3J1PS0xLHFpLmxlbmd0aD4wJiZjTSgibm9uZSIscWkubGVuZ3RoLTEpfSxMcnQ9ZnVuY3Rpb24oKXtyZXR1cm4gcWl9LFJydD0oKT0+YzQ/KGM0PSExLCEwKTohMSxJcnQ9dD0+e2xldCBlPXQudHJpbSgpLHI9ImFycm93X29wZW4iO3N3aXRjaChlWzBdKXtjYXNlIjwiOnI9ImFycm93X3BvaW50IixlPWUuc2xpY2UoMSk7YnJlYWs7Y2FzZSJ4IjpyPSJhcnJvd19jcm9zcyIsZT1lLnNsaWNlKDEpO2JyZWFrO2Nhc2UibyI6cj0iYXJyb3dfY2lyY2xlIixlPWUuc2xpY2UoMSk7YnJlYWt9bGV0IG49Im5vcm1hbCI7cmV0dXJuIGUuaW5kZXhPZigiPSIpIT09LTEmJihuPSJ0aGljayIpLGUuaW5kZXhPZigiLiIpIT09LTEmJihuPSJkb3R0ZWQiKSx7dHlwZTpyLHN0cm9rZTpufX0sTnJ0PSh0LGUpPT57Y29uc3Qgcj1lLmxlbmd0aDtsZXQgbj0wO2ZvcihsZXQgaT0wO2k8cjsrK2kpZVtpXT09PXQmJisrbjtyZXR1cm4gbn0sQnJ0PXQ9Pntjb25zdCBlPXQudHJpbSgpO2xldCByPWUuc2xpY2UoMCwtMSksbj0iYXJyb3dfb3BlbiI7c3dpdGNoKGUuc2xpY2UoLTEpKXtjYXNlIngiOm49ImFycm93X2Nyb3NzIixlWzBdPT09IngiJiYobj0iZG91YmxlXyIrbixyPXIuc2xpY2UoMSkpO2JyZWFrO2Nhc2UiPiI6bj0iYXJyb3dfcG9pbnQiLGVbMF09PT0iPCImJihuPSJkb3VibGVfIituLHI9ci5zbGljZSgxKSk7YnJlYWs7Y2FzZSJvIjpuPSJhcnJvd19jaXJjbGUiLGVbMF09PT0ibyImJihuPSJkb3VibGVfIituLHI9ci5zbGljZSgxKSk7YnJlYWt9bGV0IGk9Im5vcm1hbCIsYT1yLmxlbmd0aC0xO3JbMF09PT0iPSImJihpPSJ0aGljayIpLHJbMF09PT0ifiImJihpPSJpbnZpc2libGUiKTtsZXQgcz1OcnQoIi4iLHIpO3JldHVybiBzJiYoaT0iZG90dGVkIixhPXMpLHt0eXBlOm4sc3Ryb2tlOmksbGVuZ3RoOmF9fSxEcnQ9KHQsZSk9Pntjb25zdCByPUJydCh0KTtsZXQgbjtpZihlKXtpZihuPUlydChlKSxuLnN0cm9rZSE9PXIuc3Ryb2tlKXJldHVybnt0eXBlOiJJTlZBTElEIixzdHJva2U6IklOVkFMSUQifTtpZihuLnR5cGU9PT0iYXJyb3dfb3BlbiIpbi50eXBlPXIudHlwZTtlbHNle2lmKG4udHlwZSE9PXIudHlwZSlyZXR1cm57dHlwZToiSU5WQUxJRCIsc3Ryb2tlOiJJTlZBTElEIn07bi50eXBlPSJkb3VibGVfIituLnR5cGV9cmV0dXJuIG4udHlwZT09PSJkb3VibGVfYXJyb3ciJiYobi50eXBlPSJkb3VibGVfYXJyb3dfcG9pbnQiKSxuLmxlbmd0aD1yLmxlbmd0aCxufXJldHVybiByfSx1TT0odCxlKT0+e2xldCByPSExO3JldHVybiB0LmZvckVhY2gobj0+e24ubm9kZXMuaW5kZXhPZihlKT49MCYmKHI9ITApfSkscn0saE09KHQsZSk9Pntjb25zdCByPVtdO3JldHVybiB0Lm5vZGVzLmZvckVhY2goKG4saSk9Pnt1TShlLG4pfHxyLnB1c2godC5ub2Rlc1tpXSl9KSx7bm9kZXM6cn19LGZhPXtwYXJzZURpcmVjdGl2ZTphcnQsZGVmYXVsdENvbmZpZzooKT0+WG8uZmxvd2NoYXJ0LHNldEFjY1RpdGxlOlluLGdldEFjY1RpdGxlOnVpLGdldEFjY0Rlc2NyaXB0aW9uOmZpLHNldEFjY0Rlc2NyaXB0aW9uOmhpLGFkZFZlcnRleDpzcnQsbG9va1VwRG9tSWQ6ZTAsYWRkTGluazpscnQsdXBkYXRlTGlua0ludGVycG9sYXRlOmNydCx1cGRhdGVMaW5rOnVydCxhZGRDbGFzczpocnQsc2V0RGlyZWN0aW9uOmZydCxzZXRDbGFzczp1NCxzZXRUb29sdGlwOmRydCxnZXRUb29sdGlwOnlydCxzZXRDbGlja0V2ZW50Om1ydCxzZXRMaW5rOmdydCxiaW5kRnVuY3Rpb25zOmJydCxnZXREaXJlY3Rpb246X3J0LGdldFZlcnRpY2VzOnZydCxnZXRFZGdlczp4cnQsZ2V0Q2xhc3NlczprcnQsY2xlYXI6d3J0LHNldEdlbjpUcnQsZGVmYXVsdFN0eWxlOkVydCxhZGRTdWJHcmFwaDpDcnQsZ2V0RGVwdGhGaXJzdFBvczpBcnQsaW5kZXhOb2RlczpNcnQsZ2V0U3ViR3JhcGhzOkxydCxkZXN0cnVjdExpbms6RHJ0LGxleDp7Zmlyc3RHcmFwaDpScnR9LGV4aXN0czp1TSxtYWtlVW5pcTpoTX07dmFyIHIwO2lmKHR5cGVvZiBmbj09ImZ1bmN0aW9uIil0cnl7cjA9Y3J9Y2F0Y2h7fXIwfHwocjA9d2luZG93LmdyYXBobGliKTt2YXIgT3J0PXIwLG4wO2lmKHR5cGVvZiBmbj09ImZ1bmN0aW9uIil0cnl7bjA9T0EoKX1jYXRjaHt9bjB8fChuMD13aW5kb3cuZGFncmUpO3ZhciBmTT1uMCxkTT1GcnQ7ZnVuY3Rpb24gRnJ0KHQsZSl7cmV0dXJuIHQuaW50ZXJzZWN0KGUpfXZhciBoND1QcnQ7ZnVuY3Rpb24gUHJ0KHQsZSxyLG4pe3ZhciBpPXQueCxhPXQueSxzPWktbi54LG89YS1uLnksbD1NYXRoLnNxcnQoZSplKm8qbytyKnIqcypzKSx1PU1hdGguYWJzKGUqcipzL2wpO24ueDxpJiYodT0tdSk7dmFyIGg9TWF0aC5hYnMoZSpyKm8vbCk7cmV0dXJuIG4ueTxhJiYoaD0taCkse3g6aSt1LHk6YStofX12YXIgcXJ0PWg0LHBNPVZydDtmdW5jdGlvbiBWcnQodCxlLHIpe3JldHVybiBxcnQodCxlLGUscil9dmFyIHpydD1ZcnQ7ZnVuY3Rpb24gWXJ0KHQsZSxyLG4pe3ZhciBpLGEscyxvLGwsdSxoLGQsZixwLG0sXyx5LGIseDtpZihpPWUueS10Lnkscz10LngtZS54LGw9ZS54KnQueS10LngqZS55LGY9aSpyLngrcypyLnkrbCxwPWkqbi54K3Mqbi55K2wsIShmIT09MCYmcCE9PTAmJmdNKGYscCkpJiYoYT1uLnktci55LG89ci54LW4ueCx1PW4ueCpyLnktci54Km4ueSxoPWEqdC54K28qdC55K3UsZD1hKmUueCtvKmUueSt1LCEoaCE9PTAmJmQhPT0wJiZnTShoLGQpKSYmKG09aSpvLWEqcyxtIT09MCkpKXJldHVybiBfPU1hdGguYWJzKG0vMikseT1zKnUtbypsLGI9eTwwPyh5LV8pL206KHkrXykvbSx5PWEqbC1pKnUseD15PDA/KHktXykvbTooeStfKS9tLHt4OmIseTp4fX1mdW5jdGlvbiBnTSh0LGUpe3JldHVybiB0KmU+MH12YXIgVXJ0PXpydCx5TT1XcnQ7ZnVuY3Rpb24gV3J0KHQsZSxyKXt2YXIgbj10LngsaT10LnksYT1bXSxzPU51bWJlci5QT1NJVElWRV9JTkZJTklUWSxvPU51bWJlci5QT1NJVElWRV9JTkZJTklUWTtlLmZvckVhY2goZnVuY3Rpb24obSl7cz1NYXRoLm1pbihzLG0ueCksbz1NYXRoLm1pbihvLG0ueSl9KTtmb3IodmFyIGw9bi10LndpZHRoLzItcyx1PWktdC5oZWlnaHQvMi1vLGg9MDtoPGUubGVuZ3RoO2grKyl7dmFyIGQ9ZVtoXSxmPWVbaDxlLmxlbmd0aC0xP2grMTowXSxwPVVydCh0LHIse3g6bCtkLngseTp1K2QueX0se3g6bCtmLngseTp1K2YueX0pO3AmJmEucHVzaChwKX1yZXR1cm4gYS5sZW5ndGg/KGEubGVuZ3RoPjEmJmEuc29ydChmdW5jdGlvbihtLF8pe3ZhciB5PW0ueC1yLngsYj1tLnktci55LHg9TWF0aC5zcXJ0KHkqeStiKmIpLGs9Xy54LXIueCxUPV8ueS1yLnksQz1NYXRoLnNxcnQoayprK1QqVCk7cmV0dXJuIHg8Qz8tMTp4PT09Qz8wOjF9KSxhWzBdKTooY29uc29sZS5sb2coIk5PIElOVEVSU0VDVElPTiBGT1VORCwgUkVUVVJOIE5PREUgQ0VOVEVSIix0KSx0KX12YXIgbU09SHJ0O2Z1bmN0aW9uIEhydCh0LGUpe3ZhciByPXQueCxuPXQueSxpPWUueC1yLGE9ZS55LW4scz10LndpZHRoLzIsbz10LmhlaWdodC8yLGwsdTtyZXR1cm4gTWF0aC5hYnMoYSkqcz5NYXRoLmFicyhpKSpvPyhhPDAmJihvPS1vKSxsPWE9PT0wPzA6byppL2EsdT1vKTooaTwwJiYocz0tcyksbD1zLHU9aT09PTA/MDpzKmEvaSkse3g6citsLHk6bit1fX12YXIgR3J0PXtub2RlOmRNLGNpcmNsZTpwTSxlbGxpcHNlOmg0LHBvbHlnb246eU0scmVjdDptTX0saTA7aWYodHlwZW9mIGZuPT0iZnVuY3Rpb24iKXRyeXtpMD17ZGVmYXVsdHM6b1MoKSxlYWNoOmFtKCksaXNGdW5jdGlvbjpZbyxpc1BsYWluT2JqZWN0OkFTKCkscGljazpHUygpLGhhczokbSgpLHJhbmdlOktTKCksdW5pcXVlSWQ6bkEoKX19Y2F0Y2h7fWkwfHwoaTA9d2luZG93Ll8pO3ZhciBhbD1pMDtjb25zdCBqcnQ9d24oQ0gpO3ZhciBudTtpZighbnUmJnR5cGVvZiBmbj09ImZ1bmN0aW9uIil0cnl7bnU9anJ0fWNhdGNoe31udXx8KG51PXdpbmRvdy5kMyk7dmFyIGVzPW51LGJNPWFsLEduPXtpc1N1YmdyYXBoOiRydCxlZGdlVG9JZDpYcnQsYXBwbHlTdHlsZTpacnQsYXBwbHlDbGFzczpRcnQsYXBwbHlUcmFuc2l0aW9uOkpydH07ZnVuY3Rpb24gJHJ0KHQsZSl7cmV0dXJuISF0LmNoaWxkcmVuKGUpLmxlbmd0aH1mdW5jdGlvbiBYcnQodCl7cmV0dXJuIGY0KHQudikrIjoiK2Y0KHQudykrIjoiK2Y0KHQubmFtZSl9dmFyIEtydD0vOi9nO2Z1bmN0aW9uIGY0KHQpe3JldHVybiB0P1N0cmluZyh0KS5yZXBsYWNlKEtydCwiXFw6Iik6IiJ9ZnVuY3Rpb24gWnJ0KHQsZSl7ZSYmdC5hdHRyKCJzdHlsZSIsZSl9ZnVuY3Rpb24gUXJ0KHQsZSxyKXtlJiZ0LmF0dHIoImNsYXNzIixlKS5hdHRyKCJjbGFzcyIscisiICIrdC5hdHRyKCJjbGFzcyIpKX1mdW5jdGlvbiBKcnQodCxlKXt2YXIgcj1lLmdyYXBoKCk7aWYoYk0uaXNQbGFpbk9iamVjdChyKSl7dmFyIG49ci50cmFuc2l0aW9uO2lmKGJNLmlzRnVuY3Rpb24obikpcmV0dXJuIG4odCl9cmV0dXJuIHR9dmFyIGQ0LF9NO2Z1bmN0aW9uIHRudCgpe2lmKF9NKXJldHVybiBkNDtfTT0xO3ZhciB0PUduO2Q0PWU7ZnVuY3Rpb24gZShuLGkpe2Zvcih2YXIgYT1uLmFwcGVuZCgidGV4dCIpLHM9cihpLmxhYmVsKS5zcGxpdChgCmApLG89MDtvPHMubGVuZ3RoO28rKylhLmFwcGVuZCgidHNwYW4iKS5hdHRyKCJ4bWw6c3BhY2UiLCJwcmVzZXJ2ZSIpLmF0dHIoImR5IiwiMWVtIikuYXR0cigieCIsIjEiKS50ZXh0KHNbb10pO3JldHVybiB0LmFwcGx5U3R5bGUoYSxpLmxhYmVsU3R5bGUpLGF9ZnVuY3Rpb24gcihuKXtmb3IodmFyIGk9IiIsYT0hMSxzLG89MDtvPG4ubGVuZ3RoOysrbylpZihzPW5bb10sYSl7c3dpdGNoKHMpe2Nhc2UibiI6aSs9YApgO2JyZWFrO2RlZmF1bHQ6aSs9c31hPSExfWVsc2Ugcz09PSJcXCI/YT0hMDppKz1zO3JldHVybiBpfXJldHVybiBkNH12YXIgZW50PUduLHA0PXJudDtmdW5jdGlvbiBybnQodCxlKXt2YXIgcj10LmFwcGVuZCgiZm9yZWlnbk9iamVjdCIpLmF0dHIoIndpZHRoIiwiMTAwMDAwIiksbj1yLmFwcGVuZCgieGh0bWw6ZGl2Iik7bi5hdHRyKCJ4bWxucyIsImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiKTt2YXIgaT1lLmxhYmVsO3N3aXRjaCh0eXBlb2YgaSl7Y2FzZSJmdW5jdGlvbiI6bi5pbnNlcnQoaSk7YnJlYWs7Y2FzZSJvYmplY3QiOm4uaW5zZXJ0KGZ1bmN0aW9uKCl7cmV0dXJuIGl9KTticmVhaztkZWZhdWx0Om4uaHRtbChpKX1lbnQuYXBwbHlTdHlsZShuLGUubGFiZWxTdHlsZSksbi5zdHlsZSgiZGlzcGxheSIsImlubGluZS1ibG9jayIpLG4uc3R5bGUoIndoaXRlLXNwYWNlIiwibm93cmFwIik7dmFyIGE9bi5ub2RlKCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7cmV0dXJuIHIuYXR0cigid2lkdGgiLGEud2lkdGgpLmF0dHIoImhlaWdodCIsYS5oZWlnaHQpLHJ9dmFyIGc0LHZNO2Z1bmN0aW9uIG5udCgpe2lmKHZNKXJldHVybiBnNDt2TT0xO3ZhciB0PUduO2c0PWU7ZnVuY3Rpb24gZShyLG4pe3ZhciBpPXI7cmV0dXJuIGkubm9kZSgpLmFwcGVuZENoaWxkKG4ubGFiZWwpLHQuYXBwbHlTdHlsZShpLG4ubGFiZWxTdHlsZSksaX1yZXR1cm4gZzR9dmFyIHk0LHhNO2Z1bmN0aW9uIG00KCl7aWYoeE0pcmV0dXJuIHk0O3hNPTE7dmFyIHQ9dG50KCksZT1wNCxyPW5udCgpO3k0PW47ZnVuY3Rpb24gbihpLGEscyl7dmFyIG89YS5sYWJlbCxsPWkuYXBwZW5kKCJnIik7YS5sYWJlbFR5cGU9PT0ic3ZnIj9yKGwsYSk6dHlwZW9mIG8hPSJzdHJpbmcifHxhLmxhYmVsVHlwZT09PSJodG1sIj9lKGwsYSk6dChsLGEpO3ZhciB1PWwubm9kZSgpLmdldEJCb3goKSxoO3N3aXRjaChzKXtjYXNlInRvcCI6aD0tYS5oZWlnaHQvMjticmVhaztjYXNlImJvdHRvbSI6aD1hLmhlaWdodC8yLXUuaGVpZ2h0O2JyZWFrO2RlZmF1bHQ6aD0tdS5oZWlnaHQvMn1yZXR1cm4gbC5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIistdS53aWR0aC8yKyIsIitoKyIpIiksbH1yZXR1cm4geTR9dmFyIGI0LGtNO2Z1bmN0aW9uIGludCgpe2lmKGtNKXJldHVybiBiNDtrTT0xO3ZhciB0PWFsLGU9bTQoKSxyPUduLG49ZXM7YjQ9aTtmdW5jdGlvbiBpKGEscyxvKXt2YXIgbD1zLm5vZGVzKCkuZmlsdGVyKGZ1bmN0aW9uKGQpe3JldHVybiFyLmlzU3ViZ3JhcGgocyxkKX0pLHU9YS5zZWxlY3RBbGwoImcubm9kZSIpLmRhdGEobCxmdW5jdGlvbihkKXtyZXR1cm4gZH0pLmNsYXNzZWQoInVwZGF0ZSIsITApO3UuZXhpdCgpLnJlbW92ZSgpLHUuZW50ZXIoKS5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsIm5vZGUiKS5zdHlsZSgib3BhY2l0eSIsMCksdT1hLnNlbGVjdEFsbCgiZy5ub2RlIiksdS5lYWNoKGZ1bmN0aW9uKGQpe3ZhciBmPXMubm9kZShkKSxwPW4uc2VsZWN0KHRoaXMpO3IuYXBwbHlDbGFzcyhwLGYuY2xhc3MsKHAuY2xhc3NlZCgidXBkYXRlIik/InVwZGF0ZSAiOiIiKSsibm9kZSIpLHAuc2VsZWN0KCJnLmxhYmVsIikucmVtb3ZlKCk7dmFyIG09cC5hcHBlbmQoImciKS5hdHRyKCJjbGFzcyIsImxhYmVsIiksXz1lKG0sZikseT1vW2Yuc2hhcGVdLGI9dC5waWNrKF8ubm9kZSgpLmdldEJCb3goKSwid2lkdGgiLCJoZWlnaHQiKTtmLmVsZW09dGhpcyxmLmlkJiZwLmF0dHIoImlkIixmLmlkKSxmLmxhYmVsSWQmJm0uYXR0cigiaWQiLGYubGFiZWxJZCksdC5oYXMoZiwid2lkdGgiKSYmKGIud2lkdGg9Zi53aWR0aCksdC5oYXMoZiwiaGVpZ2h0IikmJihiLmhlaWdodD1mLmhlaWdodCksYi53aWR0aCs9Zi5wYWRkaW5nTGVmdCtmLnBhZGRpbmdSaWdodCxiLmhlaWdodCs9Zi5wYWRkaW5nVG9wK2YucGFkZGluZ0JvdHRvbSxtLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKyhmLnBhZGRpbmdMZWZ0LWYucGFkZGluZ1JpZ2h0KS8yKyIsIisoZi5wYWRkaW5nVG9wLWYucGFkZGluZ0JvdHRvbSkvMisiKSIpO3ZhciB4PW4uc2VsZWN0KHRoaXMpO3guc2VsZWN0KCIubGFiZWwtY29udGFpbmVyIikucmVtb3ZlKCk7dmFyIGs9eSh4LGIsZikuY2xhc3NlZCgibGFiZWwtY29udGFpbmVyIiwhMCk7ci5hcHBseVN0eWxlKGssZi5zdHlsZSk7dmFyIFQ9ay5ub2RlKCkuZ2V0QkJveCgpO2Yud2lkdGg9VC53aWR0aCxmLmhlaWdodD1ULmhlaWdodH0pO3ZhciBoO3JldHVybiB1LmV4aXQ/aD11LmV4aXQoKTpoPXUuc2VsZWN0QWxsKG51bGwpLHIuYXBwbHlUcmFuc2l0aW9uKGgscykuc3R5bGUoIm9wYWNpdHkiLDApLnJlbW92ZSgpLHV9cmV0dXJuIGI0fXZhciBfNCx3TTtmdW5jdGlvbiBhbnQoKXtpZih3TSlyZXR1cm4gXzQ7d009MTt2YXIgdD1HbixlPWVzLHI9bTQoKTtfND1uO2Z1bmN0aW9uIG4oaSxhKXt2YXIgcz1hLm5vZGVzKCkuZmlsdGVyKGZ1bmN0aW9uKHUpe3JldHVybiB0LmlzU3ViZ3JhcGgoYSx1KX0pLG89aS5zZWxlY3RBbGwoImcuY2x1c3RlciIpLmRhdGEocyxmdW5jdGlvbih1KXtyZXR1cm4gdX0pO28uc2VsZWN0QWxsKCIqIikucmVtb3ZlKCksby5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwiY2x1c3RlciIpLmF0dHIoImlkIixmdW5jdGlvbih1KXt2YXIgaD1hLm5vZGUodSk7cmV0dXJuIGguaWR9KS5zdHlsZSgib3BhY2l0eSIsMCksbz1pLnNlbGVjdEFsbCgiZy5jbHVzdGVyIiksdC5hcHBseVRyYW5zaXRpb24obyxhKS5zdHlsZSgib3BhY2l0eSIsMSksby5lYWNoKGZ1bmN0aW9uKHUpe3ZhciBoPWEubm9kZSh1KSxkPWUuc2VsZWN0KHRoaXMpO2Uuc2VsZWN0KHRoaXMpLmFwcGVuZCgicmVjdCIpO3ZhciBmPWQuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJsYWJlbCIpO3IoZixoLGguY2x1c3RlckxhYmVsUG9zKX0pLG8uc2VsZWN0QWxsKCJyZWN0IikuZWFjaChmdW5jdGlvbih1KXt2YXIgaD1hLm5vZGUodSksZD1lLnNlbGVjdCh0aGlzKTt0LmFwcGx5U3R5bGUoZCxoLnN0eWxlKX0pO3ZhciBsO3JldHVybiBvLmV4aXQ/bD1vLmV4aXQoKTpsPW8uc2VsZWN0QWxsKG51bGwpLHQuYXBwbHlUcmFuc2l0aW9uKGwsYSkuc3R5bGUoIm9wYWNpdHkiLDApLnJlbW92ZSgpLG99cmV0dXJuIF80fXZhciB2NCxUTTtmdW5jdGlvbiBzbnQoKXtpZihUTSlyZXR1cm4gdjQ7VE09MTt2YXIgdD1hbCxlPW00KCkscj1HbixuPWVzO3Y0PWk7ZnVuY3Rpb24gaShhLHMpe3ZhciBvPWEuc2VsZWN0QWxsKCJnLmVkZ2VMYWJlbCIpLmRhdGEocy5lZGdlcygpLGZ1bmN0aW9uKHUpe3JldHVybiByLmVkZ2VUb0lkKHUpfSkuY2xhc3NlZCgidXBkYXRlIiwhMCk7by5leGl0KCkucmVtb3ZlKCksby5lbnRlcigpLmFwcGVuZCgiZyIpLmNsYXNzZWQoImVkZ2VMYWJlbCIsITApLnN0eWxlKCJvcGFjaXR5IiwwKSxvPWEuc2VsZWN0QWxsKCJnLmVkZ2VMYWJlbCIpLG8uZWFjaChmdW5jdGlvbih1KXt2YXIgaD1uLnNlbGVjdCh0aGlzKTtoLnNlbGVjdCgiLmxhYmVsIikucmVtb3ZlKCk7dmFyIGQ9cy5lZGdlKHUpLGY9ZShoLHMuZWRnZSh1KSwwLDApLmNsYXNzZWQoImxhYmVsIiwhMCkscD1mLm5vZGUoKS5nZXRCQm94KCk7ZC5sYWJlbElkJiZmLmF0dHIoImlkIixkLmxhYmVsSWQpLHQuaGFzKGQsIndpZHRoIil8fChkLndpZHRoPXAud2lkdGgpLHQuaGFzKGQsImhlaWdodCIpfHwoZC5oZWlnaHQ9cC5oZWlnaHQpfSk7dmFyIGw7cmV0dXJuIG8uZXhpdD9sPW8uZXhpdCgpOmw9by5zZWxlY3RBbGwobnVsbCksci5hcHBseVRyYW5zaXRpb24obCxzKS5zdHlsZSgib3BhY2l0eSIsMCkucmVtb3ZlKCksb31yZXR1cm4gdjR9dmFyIHg0LEVNO2Z1bmN0aW9uIG9udCgpe2lmKEVNKXJldHVybiB4NDtFTT0xO3ZhciB0PWFsLGU9ZE0scj1HbixuPWVzO3g0PWk7ZnVuY3Rpb24gaShkLGYscCl7dmFyIG09ZC5zZWxlY3RBbGwoImcuZWRnZVBhdGgiKS5kYXRhKGYuZWRnZXMoKSxmdW5jdGlvbihiKXtyZXR1cm4gci5lZGdlVG9JZChiKX0pLmNsYXNzZWQoInVwZGF0ZSIsITApLF89dShtLGYpO2gobSxmKTt2YXIgeT1tLm1lcmdlIT09dm9pZCAwP20ubWVyZ2UoXyk6bTtyZXR1cm4gci5hcHBseVRyYW5zaXRpb24oeSxmKS5zdHlsZSgib3BhY2l0eSIsMSkseS5lYWNoKGZ1bmN0aW9uKGIpe3ZhciB4PW4uc2VsZWN0KHRoaXMpLGs9Zi5lZGdlKGIpO2suZWxlbT10aGlzLGsuaWQmJnguYXR0cigiaWQiLGsuaWQpLHIuYXBwbHlDbGFzcyh4LGsuY2xhc3MsKHguY2xhc3NlZCgidXBkYXRlIik/InVwZGF0ZSAiOiIiKSsiZWRnZVBhdGgiKX0pLHkuc2VsZWN0QWxsKCJwYXRoLnBhdGgiKS5lYWNoKGZ1bmN0aW9uKGIpe3ZhciB4PWYuZWRnZShiKTt4LmFycm93aGVhZElkPXQudW5pcXVlSWQoImFycm93aGVhZCIpO3ZhciBrPW4uc2VsZWN0KHRoaXMpLmF0dHIoIm1hcmtlci1lbmQiLGZ1bmN0aW9uKCl7cmV0dXJuInVybCgiK2EobG9jYXRpb24uaHJlZix4LmFycm93aGVhZElkKSsiKSJ9KS5zdHlsZSgiZmlsbCIsIm5vbmUiKTtyLmFwcGx5VHJhbnNpdGlvbihrLGYpLmF0dHIoImQiLGZ1bmN0aW9uKFQpe3JldHVybiBzKGYsVCl9KSxyLmFwcGx5U3R5bGUoayx4LnN0eWxlKX0pLHkuc2VsZWN0QWxsKCJkZWZzICoiKS5yZW1vdmUoKSx5LnNlbGVjdEFsbCgiZGVmcyIpLmVhY2goZnVuY3Rpb24oYil7dmFyIHg9Zi5lZGdlKGIpLGs9cFt4LmFycm93aGVhZF07ayhuLnNlbGVjdCh0aGlzKSx4LmFycm93aGVhZElkLHgsImFycm93aGVhZCIpfSkseX1mdW5jdGlvbiBhKGQsZil7dmFyIHA9ZC5zcGxpdCgiIyIpWzBdO3JldHVybiBwKyIjIitmfWZ1bmN0aW9uIHMoZCxmKXt2YXIgcD1kLmVkZ2UoZiksbT1kLm5vZGUoZi52KSxfPWQubm9kZShmLncpLHk9cC5wb2ludHMuc2xpY2UoMSxwLnBvaW50cy5sZW5ndGgtMSk7cmV0dXJuIHkudW5zaGlmdChlKG0seVswXSkpLHkucHVzaChlKF8seVt5Lmxlbmd0aC0xXSkpLG8ocCx5KX1mdW5jdGlvbiBvKGQsZil7dmFyIHA9KG4ubGluZXx8bi5zdmcubGluZSkoKS54KGZ1bmN0aW9uKG0pe3JldHVybiBtLnh9KS55KGZ1bmN0aW9uKG0pe3JldHVybiBtLnl9KTtyZXR1cm4ocC5jdXJ2ZXx8cC5pbnRlcnBvbGF0ZSkoZC5jdXJ2ZSkscChmKX1mdW5jdGlvbiBsKGQpe3ZhciBmPWQuZ2V0QkJveCgpLHA9ZC5vd25lclNWR0VsZW1lbnQuZ2V0U2NyZWVuQ1RNKCkuaW52ZXJzZSgpLm11bHRpcGx5KGQuZ2V0U2NyZWVuQ1RNKCkpLnRyYW5zbGF0ZShmLndpZHRoLzIsZi5oZWlnaHQvMik7cmV0dXJue3g6cC5lLHk6cC5mfX1mdW5jdGlvbiB1KGQsZil7dmFyIHA9ZC5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwiZWRnZVBhdGgiKS5zdHlsZSgib3BhY2l0eSIsMCk7cmV0dXJuIHAuYXBwZW5kKCJwYXRoIikuYXR0cigiY2xhc3MiLCJwYXRoIikuYXR0cigiZCIsZnVuY3Rpb24obSl7dmFyIF89Zi5lZGdlKG0pLHk9Zi5ub2RlKG0udikuZWxlbSxiPXQucmFuZ2UoXy5wb2ludHMubGVuZ3RoKS5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gbCh5KX0pO3JldHVybiBvKF8sYil9KSxwLmFwcGVuZCgiZGVmcyIpLHB9ZnVuY3Rpb24gaChkLGYpe3ZhciBwPWQuZXhpdCgpO3IuYXBwbHlUcmFuc2l0aW9uKHAsZikuc3R5bGUoIm9wYWNpdHkiLDApLnJlbW92ZSgpfXJldHVybiB4NH12YXIgazQsQ007ZnVuY3Rpb24gbG50KCl7aWYoQ00pcmV0dXJuIGs0O0NNPTE7dmFyIHQ9R24sZT1lcztrND1yO2Z1bmN0aW9uIHIobixpKXt2YXIgYT1uLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiFlLnNlbGVjdCh0aGlzKS5jbGFzc2VkKCJ1cGRhdGUiKX0pO2Z1bmN0aW9uIHMobyl7dmFyIGw9aS5ub2RlKG8pO3JldHVybiJ0cmFuc2xhdGUoIitsLngrIiwiK2wueSsiKSJ9YS5hdHRyKCJ0cmFuc2Zvcm0iLHMpLHQuYXBwbHlUcmFuc2l0aW9uKG4saSkuc3R5bGUoIm9wYWNpdHkiLDEpLmF0dHIoInRyYW5zZm9ybSIscyl9cmV0dXJuIGs0fXZhciB3NCxTTTtmdW5jdGlvbiBjbnQoKXtpZihTTSlyZXR1cm4gdzQ7U009MTt2YXIgdD1HbixlPWVzLHI9YWw7dzQ9bjtmdW5jdGlvbiBuKGksYSl7dmFyIHM9aS5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4hZS5zZWxlY3QodGhpcykuY2xhc3NlZCgidXBkYXRlIil9KTtmdW5jdGlvbiBvKGwpe3ZhciB1PWEuZWRnZShsKTtyZXR1cm4gci5oYXModSwieCIpPyJ0cmFuc2xhdGUoIit1LngrIiwiK3UueSsiKSI6IiJ9cy5hdHRyKCJ0cmFuc2Zvcm0iLG8pLHQuYXBwbHlUcmFuc2l0aW9uKGksYSkuc3R5bGUoIm9wYWNpdHkiLDEpLmF0dHIoInRyYW5zZm9ybSIsbyl9cmV0dXJuIHc0fXZhciBUNCxBTTtmdW5jdGlvbiB1bnQoKXtpZihBTSlyZXR1cm4gVDQ7QU09MTt2YXIgdD1HbixlPWVzO1Q0PXI7ZnVuY3Rpb24gcihuLGkpe3ZhciBhPW4uZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuIWUuc2VsZWN0KHRoaXMpLmNsYXNzZWQoInVwZGF0ZSIpfSk7ZnVuY3Rpb24gcyhvKXt2YXIgbD1pLm5vZGUobyk7cmV0dXJuInRyYW5zbGF0ZSgiK2wueCsiLCIrbC55KyIpIn1hLmF0dHIoInRyYW5zZm9ybSIscyksdC5hcHBseVRyYW5zaXRpb24obixpKS5zdHlsZSgib3BhY2l0eSIsMSkuYXR0cigidHJhbnNmb3JtIixzKSx0LmFwcGx5VHJhbnNpdGlvbihhLnNlbGVjdEFsbCgicmVjdCIpLGkpLmF0dHIoIndpZHRoIixmdW5jdGlvbihvKXtyZXR1cm4gaS5ub2RlKG8pLndpZHRofSkuYXR0cigiaGVpZ2h0IixmdW5jdGlvbihvKXtyZXR1cm4gaS5ub2RlKG8pLmhlaWdodH0pLmF0dHIoIngiLGZ1bmN0aW9uKG8pe3ZhciBsPWkubm9kZShvKTtyZXR1cm4tbC53aWR0aC8yfSkuYXR0cigieSIsZnVuY3Rpb24obyl7dmFyIGw9aS5ub2RlKG8pO3JldHVybi1sLmhlaWdodC8yfSl9cmV0dXJuIFQ0fXZhciBFNCxNTTtmdW5jdGlvbiBobnQoKXtpZihNTSlyZXR1cm4gRTQ7TU09MTt2YXIgdD1tTSxlPWg0LHI9cE0sbj15TTtFND17cmVjdDppLGVsbGlwc2U6YSxjaXJjbGU6cyxkaWFtb25kOm99O2Z1bmN0aW9uIGkobCx1LGgpe3ZhciBkPWwuaW5zZXJ0KCJyZWN0IiwiOmZpcnN0LWNoaWxkIikuYXR0cigicngiLGgucngpLmF0dHIoInJ5IixoLnJ5KS5hdHRyKCJ4IiwtdS53aWR0aC8yKS5hdHRyKCJ5IiwtdS5oZWlnaHQvMikuYXR0cigid2lkdGgiLHUud2lkdGgpLmF0dHIoImhlaWdodCIsdS5oZWlnaHQpO3JldHVybiBoLmludGVyc2VjdD1mdW5jdGlvbihmKXtyZXR1cm4gdChoLGYpfSxkfWZ1bmN0aW9uIGEobCx1LGgpe3ZhciBkPXUud2lkdGgvMixmPXUuaGVpZ2h0LzIscD1sLmluc2VydCgiZWxsaXBzZSIsIjpmaXJzdC1jaGlsZCIpLmF0dHIoIngiLC11LndpZHRoLzIpLmF0dHIoInkiLC11LmhlaWdodC8yKS5hdHRyKCJyeCIsZCkuYXR0cigicnkiLGYpO3JldHVybiBoLmludGVyc2VjdD1mdW5jdGlvbihtKXtyZXR1cm4gZShoLGQsZixtKX0scH1mdW5jdGlvbiBzKGwsdSxoKXt2YXIgZD1NYXRoLm1heCh1LndpZHRoLHUuaGVpZ2h0KS8yLGY9bC5pbnNlcnQoImNpcmNsZSIsIjpmaXJzdC1jaGlsZCIpLmF0dHIoIngiLC11LndpZHRoLzIpLmF0dHIoInkiLC11LmhlaWdodC8yKS5hdHRyKCJyIixkKTtyZXR1cm4gaC5pbnRlcnNlY3Q9ZnVuY3Rpb24ocCl7cmV0dXJuIHIoaCxkLHApfSxmfWZ1bmN0aW9uIG8obCx1LGgpe3ZhciBkPXUud2lkdGgqTWF0aC5TUVJUMi8yLGY9dS5oZWlnaHQqTWF0aC5TUVJUMi8yLHA9W3t4OjAseTotZn0se3g6LWQseTowfSx7eDowLHk6Zn0se3g6ZCx5OjB9XSxtPWwuaW5zZXJ0KCJwb2x5Z29uIiwiOmZpcnN0LWNoaWxkIikuYXR0cigicG9pbnRzIixwLm1hcChmdW5jdGlvbihfKXtyZXR1cm4gXy54KyIsIitfLnl9KS5qb2luKCIgIikpO3JldHVybiBoLmludGVyc2VjdD1mdW5jdGlvbihfKXtyZXR1cm4gbihoLHAsXyl9LG19cmV0dXJuIEU0fXZhciBDNCxMTTtmdW5jdGlvbiBmbnQoKXtpZihMTSlyZXR1cm4gQzQ7TE09MTt2YXIgdD1HbjtDND17ZGVmYXVsdDplLG5vcm1hbDplLHZlZTpyLHVuZGlyZWN0ZWQ6bn07ZnVuY3Rpb24gZShpLGEscyxvKXt2YXIgbD1pLmFwcGVuZCgibWFya2VyIikuYXR0cigiaWQiLGEpLmF0dHIoInZpZXdCb3giLCIwIDAgMTAgMTAiKS5hdHRyKCJyZWZYIiw5KS5hdHRyKCJyZWZZIiw1KS5hdHRyKCJtYXJrZXJVbml0cyIsInN0cm9rZVdpZHRoIikuYXR0cigibWFya2VyV2lkdGgiLDgpLmF0dHIoIm1hcmtlckhlaWdodCIsNikuYXR0cigib3JpZW50IiwiYXV0byIpLHU9bC5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIiwiTSAwIDAgTCAxMCA1IEwgMCAxMCB6Iikuc3R5bGUoInN0cm9rZS13aWR0aCIsMSkuc3R5bGUoInN0cm9rZS1kYXNoYXJyYXkiLCIxLDAiKTt0LmFwcGx5U3R5bGUodSxzW28rIlN0eWxlIl0pLHNbbysiQ2xhc3MiXSYmdS5hdHRyKCJjbGFzcyIsc1tvKyJDbGFzcyJdKX1mdW5jdGlvbiByKGksYSxzLG8pe3ZhciBsPWkuYXBwZW5kKCJtYXJrZXIiKS5hdHRyKCJpZCIsYSkuYXR0cigidmlld0JveCIsIjAgMCAxMCAxMCIpLmF0dHIoInJlZlgiLDkpLmF0dHIoInJlZlkiLDUpLmF0dHIoIm1hcmtlclVuaXRzIiwic3Ryb2tlV2lkdGgiKS5hdHRyKCJtYXJrZXJXaWR0aCIsOCkuYXR0cigibWFya2VySGVpZ2h0Iiw2KS5hdHRyKCJvcmllbnQiLCJhdXRvIiksdT1sLmFwcGVuZCgicGF0aCIpLmF0dHIoImQiLCJNIDAgMCBMIDEwIDUgTCAwIDEwIEwgNCA1IHoiKS5zdHlsZSgic3Ryb2tlLXdpZHRoIiwxKS5zdHlsZSgic3Ryb2tlLWRhc2hhcnJheSIsIjEsMCIpO3QuYXBwbHlTdHlsZSh1LHNbbysiU3R5bGUiXSksc1tvKyJDbGFzcyJdJiZ1LmF0dHIoImNsYXNzIixzW28rIkNsYXNzIl0pfWZ1bmN0aW9uIG4oaSxhLHMsbyl7dmFyIGw9aS5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIixhKS5hdHRyKCJ2aWV3Qm94IiwiMCAwIDEwIDEwIikuYXR0cigicmVmWCIsOSkuYXR0cigicmVmWSIsNSkuYXR0cigibWFya2VyVW5pdHMiLCJzdHJva2VXaWR0aCIpLmF0dHIoIm1hcmtlcldpZHRoIiw4KS5hdHRyKCJtYXJrZXJIZWlnaHQiLDYpLmF0dHIoIm9yaWVudCIsImF1dG8iKSx1PWwuYXBwZW5kKCJwYXRoIikuYXR0cigiZCIsIk0gMCA1IEwgMTAgNSIpLnN0eWxlKCJzdHJva2Utd2lkdGgiLDEpLnN0eWxlKCJzdHJva2UtZGFzaGFycmF5IiwiMSwwIik7dC5hcHBseVN0eWxlKHUsc1tvKyJTdHlsZSJdKSxzW28rIkNsYXNzIl0mJnUuYXR0cigiY2xhc3MiLHNbbysiQ2xhc3MiXSl9cmV0dXJuIEM0fXZhciBVcj1hbCxkbnQ9ZXMscG50PWZNLmxheW91dCxnbnQ9eW50O2Z1bmN0aW9uIHludCgpe3ZhciB0PWludCgpLGU9YW50KCkscj1zbnQoKSxuPW9udCgpLGk9bG50KCksYT1jbnQoKSxzPXVudCgpLG89aG50KCksbD1mbnQoKSx1PWZ1bmN0aW9uKGgsZCl7X250KGQpO3ZhciBmPWl1KGgsIm91dHB1dCIpLHA9aXUoZiwiY2x1c3RlcnMiKSxtPWl1KGYsImVkZ2VQYXRocyIpLF89cihpdShmLCJlZGdlTGFiZWxzIiksZCkseT10KGl1KGYsIm5vZGVzIiksZCxvKTtwbnQoZCksaSh5LGQpLGEoXyxkKSxuKG0sZCxsKTt2YXIgYj1lKHAsZCk7cyhiLGQpLHZudChkKX07cmV0dXJuIHUuY3JlYXRlTm9kZXM9ZnVuY3Rpb24oaCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KHQ9aCx1KTp0fSx1LmNyZWF0ZUNsdXN0ZXJzPWZ1bmN0aW9uKGgpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhlPWgsdSk6ZX0sdS5jcmVhdGVFZGdlTGFiZWxzPWZ1bmN0aW9uKGgpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhyPWgsdSk6cn0sdS5jcmVhdGVFZGdlUGF0aHM9ZnVuY3Rpb24oaCl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg/KG49aCx1KTpufSx1LnNoYXBlcz1mdW5jdGlvbihoKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD8obz1oLHUpOm99LHUuYXJyb3dzPWZ1bmN0aW9uKGgpe3JldHVybiBhcmd1bWVudHMubGVuZ3RoPyhsPWgsdSk6bH0sdX12YXIgbW50PXtwYWRkaW5nTGVmdDoxMCxwYWRkaW5nUmlnaHQ6MTAscGFkZGluZ1RvcDoxMCxwYWRkaW5nQm90dG9tOjEwLHJ4OjAscnk6MCxzaGFwZToicmVjdCJ9LGJudD17YXJyb3doZWFkOiJub3JtYWwiLGN1cnZlOmRudC5jdXJ2ZUxpbmVhcn07ZnVuY3Rpb24gX250KHQpe3Qubm9kZXMoKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciByPXQubm9kZShlKTshVXIuaGFzKHIsImxhYmVsIikmJiF0LmNoaWxkcmVuKGUpLmxlbmd0aCYmKHIubGFiZWw9ZSksVXIuaGFzKHIsInBhZGRpbmdYIikmJlVyLmRlZmF1bHRzKHIse3BhZGRpbmdMZWZ0OnIucGFkZGluZ1gscGFkZGluZ1JpZ2h0OnIucGFkZGluZ1h9KSxVci5oYXMociwicGFkZGluZ1kiKSYmVXIuZGVmYXVsdHMocix7cGFkZGluZ1RvcDpyLnBhZGRpbmdZLHBhZGRpbmdCb3R0b206ci5wYWRkaW5nWX0pLFVyLmhhcyhyLCJwYWRkaW5nIikmJlVyLmRlZmF1bHRzKHIse3BhZGRpbmdMZWZ0OnIucGFkZGluZyxwYWRkaW5nUmlnaHQ6ci5wYWRkaW5nLHBhZGRpbmdUb3A6ci5wYWRkaW5nLHBhZGRpbmdCb3R0b206ci5wYWRkaW5nfSksVXIuZGVmYXVsdHMocixtbnQpLFVyLmVhY2goWyJwYWRkaW5nTGVmdCIsInBhZGRpbmdSaWdodCIsInBhZGRpbmdUb3AiLCJwYWRkaW5nQm90dG9tIl0sZnVuY3Rpb24obil7cltuXT1OdW1iZXIocltuXSl9KSxVci5oYXMociwid2lkdGgiKSYmKHIuX3ByZXZXaWR0aD1yLndpZHRoKSxVci5oYXMociwiaGVpZ2h0IikmJihyLl9wcmV2SGVpZ2h0PXIuaGVpZ2h0KX0pLHQuZWRnZXMoKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciByPXQuZWRnZShlKTtVci5oYXMociwibGFiZWwiKXx8KHIubGFiZWw9IiIpLFVyLmRlZmF1bHRzKHIsYm50KX0pfWZ1bmN0aW9uIHZudCh0KXtVci5lYWNoKHQubm9kZXMoKSxmdW5jdGlvbihlKXt2YXIgcj10Lm5vZGUoZSk7VXIuaGFzKHIsIl9wcmV2V2lkdGgiKT9yLndpZHRoPXIuX3ByZXZXaWR0aDpkZWxldGUgci53aWR0aCxVci5oYXMociwiX3ByZXZIZWlnaHQiKT9yLmhlaWdodD1yLl9wcmV2SGVpZ2h0OmRlbGV0ZSByLmhlaWdodCxkZWxldGUgci5fcHJldldpZHRoLGRlbGV0ZSByLl9wcmV2SGVpZ2h0fSl9ZnVuY3Rpb24gaXUodCxlKXt2YXIgcj10LnNlbGVjdCgiZy4iK2UpO3JldHVybiByLmVtcHR5KCkmJihyPXQuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLGUpKSxyfXZhciB4bnQ9IjAuNi40IjsvKioKICogQGxpY2Vuc2UKICogQ29weXJpZ2h0IChjKSAyMDEyLTIwMTMgQ2hyaXMgUGV0dGl0dAogKgogKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5CiAqIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsCiAqIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMKICogdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbAogKiBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMKICogZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKICoKICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCiAqCiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAogKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgogKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLAogKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOCiAqIFRIRSBTT0ZUV0FSRS4KICovdmFyIEFuPXtncmFwaGxpYjpPcnQsZGFncmU6Zk0saW50ZXJzZWN0OkdydCxyZW5kZXI6Z250LHV0aWw6R24sdmVyc2lvbjp4bnR9O2Z1bmN0aW9uIFJNKHQsZSxyKXtjb25zdCBuPWUud2lkdGgsaT1lLmhlaWdodCxhPShuK2kpKi45LHM9W3t4OmEvMix5OjB9LHt4OmEseTotYS8yfSx7eDphLzIseTotYX0se3g6MCx5Oi1hLzJ9XSxvPWRhKHQsYSxhLHMpO3JldHVybiByLmludGVyc2VjdD1mdW5jdGlvbihsKXtyZXR1cm4gQW4uaW50ZXJzZWN0LnBvbHlnb24ocixzLGwpfSxvfWZ1bmN0aW9uIElNKHQsZSxyKXtjb25zdCBpPWUuaGVpZ2h0LGE9aS80LHM9ZS53aWR0aCsyKmEsbz1be3g6YSx5OjB9LHt4OnMtYSx5OjB9LHt4OnMseTotaS8yfSx7eDpzLWEseTotaX0se3g6YSx5Oi1pfSx7eDowLHk6LWkvMn1dLGw9ZGEodCxzLGksbyk7cmV0dXJuIHIuaW50ZXJzZWN0PWZ1bmN0aW9uKHUpe3JldHVybiBBbi5pbnRlcnNlY3QucG9seWdvbihyLG8sdSl9LGx9ZnVuY3Rpb24gTk0odCxlLHIpe2NvbnN0IG49ZS53aWR0aCxpPWUuaGVpZ2h0LGE9W3t4Oi1pLzIseTowfSx7eDpuLHk6MH0se3g6bix5Oi1pfSx7eDotaS8yLHk6LWl9LHt4OjAseTotaS8yfV0scz1kYSh0LG4saSxhKTtyZXR1cm4gci5pbnRlcnNlY3Q9ZnVuY3Rpb24obyl7cmV0dXJuIEFuLmludGVyc2VjdC5wb2x5Z29uKHIsYSxvKX0sc31mdW5jdGlvbiBCTSh0LGUscil7Y29uc3Qgbj1lLndpZHRoLGk9ZS5oZWlnaHQsYT1be3g6LTIqaS82LHk6MH0se3g6bi1pLzYseTowfSx7eDpuKzIqaS82LHk6LWl9LHt4OmkvNix5Oi1pfV0scz1kYSh0LG4saSxhKTtyZXR1cm4gci5pbnRlcnNlY3Q9ZnVuY3Rpb24obyl7cmV0dXJuIEFuLmludGVyc2VjdC5wb2x5Z29uKHIsYSxvKX0sc31mdW5jdGlvbiBETSh0LGUscil7Y29uc3Qgbj1lLndpZHRoLGk9ZS5oZWlnaHQsYT1be3g6MippLzYseTowfSx7eDpuK2kvNix5OjB9LHt4Om4tMippLzYseTotaX0se3g6LWkvNix5Oi1pfV0scz1kYSh0LG4saSxhKTtyZXR1cm4gci5pbnRlcnNlY3Q9ZnVuY3Rpb24obyl7cmV0dXJuIEFuLmludGVyc2VjdC5wb2x5Z29uKHIsYSxvKX0sc31mdW5jdGlvbiBPTSh0LGUscil7Y29uc3Qgbj1lLndpZHRoLGk9ZS5oZWlnaHQsYT1be3g6LTIqaS82LHk6MH0se3g6bisyKmkvNix5OjB9LHt4Om4taS82LHk6LWl9LHt4OmkvNix5Oi1pfV0scz1kYSh0LG4saSxhKTtyZXR1cm4gci5pbnRlcnNlY3Q9ZnVuY3Rpb24obyl7cmV0dXJuIEFuLmludGVyc2VjdC5wb2x5Z29uKHIsYSxvKX0sc31mdW5jdGlvbiBGTSh0LGUscil7Y29uc3Qgbj1lLndpZHRoLGk9ZS5oZWlnaHQsYT1be3g6aS82LHk6MH0se3g6bi1pLzYseTowfSx7eDpuKzIqaS82LHk6LWl9LHt4Oi0yKmkvNix5Oi1pfV0scz1kYSh0LG4saSxhKTtyZXR1cm4gci5pbnRlcnNlY3Q9ZnVuY3Rpb24obyl7cmV0dXJuIEFuLmludGVyc2VjdC5wb2x5Z29uKHIsYSxvKX0sc31mdW5jdGlvbiBQTSh0LGUscil7Y29uc3Qgbj1lLndpZHRoLGk9ZS5oZWlnaHQsYT1be3g6MCx5OjB9LHt4Om4raS8yLHk6MH0se3g6bix5Oi1pLzJ9LHt4Om4raS8yLHk6LWl9LHt4OjAseTotaX1dLHM9ZGEodCxuLGksYSk7cmV0dXJuIHIuaW50ZXJzZWN0PWZ1bmN0aW9uKG8pe3JldHVybiBBbi5pbnRlcnNlY3QucG9seWdvbihyLGEsbyl9LHN9ZnVuY3Rpb24gcU0odCxlLHIpe2NvbnN0IG49ZS5oZWlnaHQsaT1lLndpZHRoK24vNCxhPXQuaW5zZXJ0KCJyZWN0IiwiOmZpcnN0LWNoaWxkIikuYXR0cigicngiLG4vMikuYXR0cigicnkiLG4vMikuYXR0cigieCIsLWkvMikuYXR0cigieSIsLW4vMikuYXR0cigid2lkdGgiLGkpLmF0dHIoImhlaWdodCIsbik7cmV0dXJuIHIuaW50ZXJzZWN0PWZ1bmN0aW9uKHMpe3JldHVybiBBbi5pbnRlcnNlY3QucmVjdChyLHMpfSxhfWZ1bmN0aW9uIFZNKHQsZSxyKXtjb25zdCBuPWUud2lkdGgsaT1lLmhlaWdodCxhPVt7eDowLHk6MH0se3g6bix5OjB9LHt4Om4seTotaX0se3g6MCx5Oi1pfSx7eDowLHk6MH0se3g6LTgseTowfSx7eDpuKzgseTowfSx7eDpuKzgseTotaX0se3g6LTgseTotaX0se3g6LTgseTowfV0scz1kYSh0LG4saSxhKTtyZXR1cm4gci5pbnRlcnNlY3Q9ZnVuY3Rpb24obyl7cmV0dXJuIEFuLmludGVyc2VjdC5wb2x5Z29uKHIsYSxvKX0sc31mdW5jdGlvbiB6TSh0LGUscil7Y29uc3Qgbj1lLndpZHRoLGk9bi8yLGE9aS8oMi41K24vNTApLHM9ZS5oZWlnaHQrYSxvPSJNIDAsIithKyIgYSAiK2krIiwiK2ErIiAwLDAsMCAiK24rIiAwIGEgIitpKyIsIithKyIgMCwwLDAgIistbisiIDAgbCAwLCIrcysiIGEgIitpKyIsIithKyIgMCwwLDAgIituKyIgMCBsIDAsIistcyxsPXQuYXR0cigibGFiZWwtb2Zmc2V0LXkiLGEpLmluc2VydCgicGF0aCIsIjpmaXJzdC1jaGlsZCIpLmF0dHIoImQiLG8pLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiKy1uLzIrIiwiKy0ocy8yK2EpKyIpIik7cmV0dXJuIHIuaW50ZXJzZWN0PWZ1bmN0aW9uKHUpe2NvbnN0IGg9QW4uaW50ZXJzZWN0LnJlY3Qocix1KSxkPWgueC1yLng7aWYoaSE9MCYmKE1hdGguYWJzKGQpPHIud2lkdGgvMnx8TWF0aC5hYnMoZCk9PXIud2lkdGgvMiYmTWF0aC5hYnMoaC55LXIueSk+ci5oZWlnaHQvMi1hKSl7bGV0IGY9YSphKigxLWQqZC8oaSppKSk7ZiE9MCYmKGY9TWF0aC5zcXJ0KGYpKSxmPWEtZix1Lnktci55PjAmJihmPS1mKSxoLnkrPWZ9cmV0dXJuIGh9LGx9ZnVuY3Rpb24ga250KHQpe3Quc2hhcGVzKCkucXVlc3Rpb249Uk0sdC5zaGFwZXMoKS5oZXhhZ29uPUlNLHQuc2hhcGVzKCkuc3RhZGl1bT1xTSx0LnNoYXBlcygpLnN1YnJvdXRpbmU9Vk0sdC5zaGFwZXMoKS5jeWxpbmRlcj16TSx0LnNoYXBlcygpLnJlY3RfbGVmdF9pbnZfYXJyb3c9Tk0sdC5zaGFwZXMoKS5sZWFuX3JpZ2h0PUJNLHQuc2hhcGVzKCkubGVhbl9sZWZ0PURNLHQuc2hhcGVzKCkudHJhcGV6b2lkPU9NLHQuc2hhcGVzKCkuaW52X3RyYXBlem9pZD1GTSx0LnNoYXBlcygpLnJlY3RfcmlnaHRfaW52X2Fycm93PVBNfWZ1bmN0aW9uIHdudCh0KXt0KHtxdWVzdGlvbjpSTX0pLHQoe2hleGFnb246SU19KSx0KHtzdGFkaXVtOnFNfSksdCh7c3Vicm91dGluZTpWTX0pLHQoe2N5bGluZGVyOnpNfSksdCh7cmVjdF9sZWZ0X2ludl9hcnJvdzpOTX0pLHQoe2xlYW5fcmlnaHQ6Qk19KSx0KHtsZWFuX2xlZnQ6RE19KSx0KHt0cmFwZXpvaWQ6T019KSx0KHtpbnZfdHJhcGV6b2lkOkZNfSksdCh7cmVjdF9yaWdodF9pbnZfYXJyb3c6UE19KX1mdW5jdGlvbiBkYSh0LGUscixuKXtyZXR1cm4gdC5pbnNlcnQoInBvbHlnb24iLCI6Zmlyc3QtY2hpbGQiKS5hdHRyKCJwb2ludHMiLG4ubWFwKGZ1bmN0aW9uKGkpe3JldHVybiBpLngrIiwiK2kueX0pLmpvaW4oIiAiKSkuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrLWUvMisiLCIrci8yKyIpIil9Y29uc3QgVG50PXthZGRUb1JlbmRlcjprbnQsYWRkVG9SZW5kZXJWMjp3bnR9LFlNPXt9LEVudD1mdW5jdGlvbih0KXtjb25zdCBlPU9iamVjdC5rZXlzKHQpO2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKVlNW2Vbcl1dPXRbZVtyXV19LFVNPWZ1bmN0aW9uKHQsZSxyLG4saSxhKXtjb25zdCBzPW4/bi5zZWxlY3QoYFtpZD0iJHtyfSJdYCk6U3QoYFtpZD0iJHtyfSJdYCksbz1pfHxkb2N1bWVudDtPYmplY3Qua2V5cyh0KS5mb3JFYWNoKGZ1bmN0aW9uKHUpe2NvbnN0IGg9dFt1XTtsZXQgZD0iZGVmYXVsdCI7aC5jbGFzc2VzLmxlbmd0aD4wJiYoZD1oLmNsYXNzZXMuam9pbigiICIpKTtjb25zdCBmPUthKGguc3R5bGVzKTtsZXQgcD1oLnRleHQhPT12b2lkIDA/aC50ZXh0OmguaWQsbTtpZihNcihudCgpLmZsb3djaGFydC5odG1sTGFiZWxzKSl7Y29uc3QgYj17bGFiZWw6cC5yZXBsYWNlKC9mYVtscnNiXT86ZmEtW1x3LV0rL2cseD0+YDxpIGNsYXNzPScke3gucmVwbGFjZSgiOiIsIiAiKX0nPjwvaT5gKX07bT1wNChzLGIpLm5vZGUoKSxtLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobSl9ZWxzZXtjb25zdCBiPW8uY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsInRleHQiKTtiLnNldEF0dHJpYnV0ZSgic3R5bGUiLGYubGFiZWxTdHlsZS5yZXBsYWNlKCJjb2xvcjoiLCJmaWxsOiIpKTtjb25zdCB4PXAuc3BsaXQocGUubGluZUJyZWFrUmVnZXgpO2ZvcihsZXQgaz0wO2s8eC5sZW5ndGg7aysrKXtjb25zdCBUPW8uY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsInRzcGFuIik7VC5zZXRBdHRyaWJ1dGVOUygiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIiwieG1sOnNwYWNlIiwicHJlc2VydmUiKSxULnNldEF0dHJpYnV0ZSgiZHkiLCIxZW0iKSxULnNldEF0dHJpYnV0ZSgieCIsIjEiKSxULnRleHRDb250ZW50PXhba10sYi5hcHBlbmRDaGlsZChUKX1tPWJ9bGV0IF89MCx5PSIiO3N3aXRjaChoLnR5cGUpe2Nhc2Uicm91bmQiOl89NSx5PSJyZWN0IjticmVhaztjYXNlInNxdWFyZSI6eT0icmVjdCI7YnJlYWs7Y2FzZSJkaWFtb25kIjp5PSJxdWVzdGlvbiI7YnJlYWs7Y2FzZSJoZXhhZ29uIjp5PSJoZXhhZ29uIjticmVhaztjYXNlIm9kZCI6eT0icmVjdF9sZWZ0X2ludl9hcnJvdyI7YnJlYWs7Y2FzZSJsZWFuX3JpZ2h0Ijp5PSJsZWFuX3JpZ2h0IjticmVhaztjYXNlImxlYW5fbGVmdCI6eT0ibGVhbl9sZWZ0IjticmVhaztjYXNlInRyYXBlem9pZCI6eT0idHJhcGV6b2lkIjticmVhaztjYXNlImludl90cmFwZXpvaWQiOnk9Imludl90cmFwZXpvaWQiO2JyZWFrO2Nhc2Uib2RkX3JpZ2h0Ijp5PSJyZWN0X2xlZnRfaW52X2Fycm93IjticmVhaztjYXNlImNpcmNsZSI6eT0iY2lyY2xlIjticmVhaztjYXNlImVsbGlwc2UiOnk9ImVsbGlwc2UiO2JyZWFrO2Nhc2Uic3RhZGl1bSI6eT0ic3RhZGl1bSI7YnJlYWs7Y2FzZSJzdWJyb3V0aW5lIjp5PSJzdWJyb3V0aW5lIjticmVhaztjYXNlImN5bGluZGVyIjp5PSJjeWxpbmRlciI7YnJlYWs7Y2FzZSJncm91cCI6eT0icmVjdCI7YnJlYWs7ZGVmYXVsdDp5PSJyZWN0In1ILndhcm4oIkFkZGluZyBub2RlIixoLmlkLGguZG9tSWQpLGUuc2V0Tm9kZShhLmRiLmxvb2tVcERvbUlkKGguaWQpLHtsYWJlbFR5cGU6InN2ZyIsbGFiZWxTdHlsZTpmLmxhYmVsU3R5bGUsc2hhcGU6eSxsYWJlbDptLHJ4Ol8scnk6XyxjbGFzczpkLHN0eWxlOmYuc3R5bGUsaWQ6YS5kYi5sb29rVXBEb21JZChoLmlkKX0pfSl9LFdNPWZ1bmN0aW9uKHQsZSxyKXtsZXQgbj0wLGksYTtpZih0eXBlb2YgdC5kZWZhdWx0U3R5bGU8InUiKXtjb25zdCBzPUthKHQuZGVmYXVsdFN0eWxlKTtpPXMuc3R5bGUsYT1zLmxhYmVsU3R5bGV9dC5mb3JFYWNoKGZ1bmN0aW9uKHMpe24rKzt2YXIgbz0iTC0iK3Muc3RhcnQrIi0iK3MuZW5kLGw9IkxTLSIrcy5zdGFydCx1PSJMRS0iK3MuZW5kO2NvbnN0IGg9e307cy50eXBlPT09ImFycm93X29wZW4iP2guYXJyb3doZWFkPSJub25lIjpoLmFycm93aGVhZD0ibm9ybWFsIjtsZXQgZD0iIixmPSIiO2lmKHR5cGVvZiBzLnN0eWxlPCJ1Iil7Y29uc3QgcD1LYShzLnN0eWxlKTtkPXAuc3R5bGUsZj1wLmxhYmVsU3R5bGV9ZWxzZSBzd2l0Y2gocy5zdHJva2Upe2Nhc2Uibm9ybWFsIjpkPSJmaWxsOm5vbmUiLHR5cGVvZiBpPCJ1IiYmKGQ9aSksdHlwZW9mIGE8InUiJiYoZj1hKTticmVhaztjYXNlImRvdHRlZCI6ZD0iZmlsbDpub25lO3N0cm9rZS13aWR0aDoycHg7c3Ryb2tlLWRhc2hhcnJheTozOyI7YnJlYWs7Y2FzZSJ0aGljayI6ZD0iIHN0cm9rZS13aWR0aDogMy41cHg7ZmlsbDpub25lIjticmVha31oLnN0eWxlPWQsaC5sYWJlbFN0eWxlPWYsdHlwZW9mIHMuaW50ZXJwb2xhdGU8InUiP2guY3VydmU9Tmkocy5pbnRlcnBvbGF0ZSx5bik6dHlwZW9mIHQuZGVmYXVsdEludGVycG9sYXRlPCJ1Ij9oLmN1cnZlPU5pKHQuZGVmYXVsdEludGVycG9sYXRlLHluKTpoLmN1cnZlPU5pKFlNLmN1cnZlLHluKSx0eXBlb2Ygcy50ZXh0PiJ1Ij90eXBlb2Ygcy5zdHlsZTwidSImJihoLmFycm93aGVhZFN0eWxlPSJmaWxsOiAjMzMzIik6KGguYXJyb3doZWFkU3R5bGU9ImZpbGw6ICMzMzMiLGgubGFiZWxwb3M9ImMiLE1yKG50KCkuZmxvd2NoYXJ0Lmh0bWxMYWJlbHMpPyhoLmxhYmVsVHlwZT0iaHRtbCIsaC5sYWJlbD1gPHNwYW4gaWQ9IkwtJHtvfSIgY2xhc3M9ImVkZ2VMYWJlbCBMLSR7bH0nIEwtJHt1fSIgc3R5bGU9IiR7aC5sYWJlbFN0eWxlfSI+JHtzLnRleHQucmVwbGFjZSgvZmFbbHJzYl0/OmZhLVtcdy1dKy9nLHA9PmA8aSBjbGFzcz0nJHtwLnJlcGxhY2UoIjoiLCIgIil9Jz48L2k+YCl9PC9zcGFuPmApOihoLmxhYmVsVHlwZT0idGV4dCIsaC5sYWJlbD1zLnRleHQucmVwbGFjZShwZS5saW5lQnJlYWtSZWdleCxgCmApLHR5cGVvZiBzLnN0eWxlPiJ1IiYmKGguc3R5bGU9aC5zdHlsZXx8InN0cm9rZTogIzMzMzsgc3Ryb2tlLXdpZHRoOiAxLjVweDtmaWxsOm5vbmUiKSxoLmxhYmVsU3R5bGU9aC5sYWJlbFN0eWxlLnJlcGxhY2UoImNvbG9yOiIsImZpbGw6IikpKSxoLmlkPW8saC5jbGFzcz1sKyIgIit1LGgubWlubGVuPXMubGVuZ3RofHwxLGUuc2V0RWRnZShyLmRiLmxvb2tVcERvbUlkKHMuc3RhcnQpLHIuZGIubG9va1VwRG9tSWQocy5lbmQpLGgsbil9KX0sUzQ9e3NldENvbmY6RW50LGFkZFZlcnRpY2VzOlVNLGFkZEVkZ2VzOldNLGdldENsYXNzZXM6ZnVuY3Rpb24odCxlKXtILmluZm8oIkV4dHJhY3RpbmcgY2xhc3NlcyIpLGUuZGIuY2xlYXIoKTt0cnl7cmV0dXJuIGUucGFyc2UodCksZS5kYi5nZXRDbGFzc2VzKCl9Y2F0Y2h7cmV0dXJufX0sZHJhdzpmdW5jdGlvbih0LGUscixuKXtILmluZm8oIkRyYXdpbmcgZmxvd2NoYXJ0Iiksbi5kYi5jbGVhcigpO2NvbnN0e3NlY3VyaXR5TGV2ZWw6aSxmbG93Y2hhcnQ6YX09bnQoKTtsZXQgcztpPT09InNhbmRib3giJiYocz1TdCgiI2kiK2UpKTtjb25zdCBvPVN0KGk9PT0ic2FuZGJveCI/cy5ub2RlcygpWzBdLmNvbnRlbnREb2N1bWVudC5ib2R5OiJib2R5IiksbD1pPT09InNhbmRib3giP3Mubm9kZXMoKVswXS5jb250ZW50RG9jdW1lbnQ6ZG9jdW1lbnQ7dHJ5e24ucGFyc2VyLnBhcnNlKHQpfWNhdGNoe0guZGVidWcoIlBhcnNpbmcgZmFpbGVkIil9bGV0IHU9bi5kYi5nZXREaXJlY3Rpb24oKTt0eXBlb2YgdT4idSImJih1PSJURCIpO2NvbnN0IGg9YS5ub2RlU3BhY2luZ3x8NTAsZD1hLnJhbmtTcGFjaW5nfHw1MCxmPW5ldyBjci5HcmFwaCh7bXVsdGlncmFwaDohMCxjb21wb3VuZDohMH0pLnNldEdyYXBoKHtyYW5rZGlyOnUsbm9kZXNlcDpoLHJhbmtzZXA6ZCxtYXJnaW54OjgsbWFyZ2lueTo4fSkuc2V0RGVmYXVsdEVkZ2VMYWJlbChmdW5jdGlvbigpe3JldHVybnt9fSk7bGV0IHA7Y29uc3QgbT1uLmRiLmdldFN1YkdyYXBocygpO2ZvcihsZXQgUz1tLmxlbmd0aC0xO1M+PTA7Uy0tKXA9bVtTXSxuLmRiLmFkZFZlcnRleChwLmlkLHAudGl0bGUsImdyb3VwIix2b2lkIDAscC5jbGFzc2VzKTtjb25zdCBfPW4uZGIuZ2V0VmVydGljZXMoKTtILndhcm4oIkdldCB2ZXJ0aWNlcyIsXyk7Y29uc3QgeT1uLmRiLmdldEVkZ2VzKCk7bGV0IGI9MDtmb3IoYj1tLmxlbmd0aC0xO2I+PTA7Yi0tKXtwPW1bYl0sTnUoImNsdXN0ZXIiKS5hcHBlbmQoInRleHQiKTtmb3IobGV0IFM9MDtTPHAubm9kZXMubGVuZ3RoO1MrKylILndhcm4oIlNldHRpbmcgc3ViZ3JhcGgiLHAubm9kZXNbU10sbi5kYi5sb29rVXBEb21JZChwLm5vZGVzW1NdKSxuLmRiLmxvb2tVcERvbUlkKHAuaWQpKSxmLnNldFBhcmVudChuLmRiLmxvb2tVcERvbUlkKHAubm9kZXNbU10pLG4uZGIubG9va1VwRG9tSWQocC5pZCkpfVVNKF8sZixlLG8sbCxuKSxXTSh5LGYsbik7Y29uc3QgeD1Bbi5yZW5kZXIsaz1uZXcgeDtUbnQuYWRkVG9SZW5kZXIoayksay5hcnJvd3MoKS5ub25lPWZ1bmN0aW9uKFIsQSxMLHYpe2NvbnN0IHc9Ui5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIixBKS5hdHRyKCJ2aWV3Qm94IiwiMCAwIDEwIDEwIikuYXR0cigicmVmWCIsOSkuYXR0cigicmVmWSIsNSkuYXR0cigibWFya2VyVW5pdHMiLCJzdHJva2VXaWR0aCIpLmF0dHIoIm1hcmtlcldpZHRoIiw4KS5hdHRyKCJtYXJrZXJIZWlnaHQiLDYpLmF0dHIoIm9yaWVudCIsImF1dG8iKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIiwiTSAwIDAgTCAwIDAgTCAwIDAgeiIpO0FuLnV0aWwuYXBwbHlTdHlsZSh3LExbdisiU3R5bGUiXSl9LGsuYXJyb3dzKCkubm9ybWFsPWZ1bmN0aW9uKFIsQSl7Ui5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIixBKS5hdHRyKCJ2aWV3Qm94IiwiMCAwIDEwIDEwIikuYXR0cigicmVmWCIsOSkuYXR0cigicmVmWSIsNSkuYXR0cigibWFya2VyVW5pdHMiLCJzdHJva2VXaWR0aCIpLmF0dHIoIm1hcmtlcldpZHRoIiw4KS5hdHRyKCJtYXJrZXJIZWlnaHQiLDYpLmF0dHIoIm9yaWVudCIsImF1dG8iKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIiwiTSAwIDAgTCAxMCA1IEwgMCAxMCB6IikuYXR0cigiY2xhc3MiLCJhcnJvd2hlYWRQYXRoIikuc3R5bGUoInN0cm9rZS13aWR0aCIsMSkuc3R5bGUoInN0cm9rZS1kYXNoYXJyYXkiLCIxLDAiKX07Y29uc3QgVD1vLnNlbGVjdChgW2lkPSIke2V9Il1gKTtibihuLmRiLFQsZSk7Y29uc3QgQz1vLnNlbGVjdCgiIyIrZSsiIGciKTtmb3IoayhDLGYpLEMuc2VsZWN0QWxsKCJnLm5vZGUiKS5hdHRyKCJ0aXRsZSIsZnVuY3Rpb24oKXtyZXR1cm4gbi5kYi5nZXRUb29sdGlwKHRoaXMuaWQpfSksbi5kYi5pbmRleE5vZGVzKCJzdWJHcmFwaCIrYiksYj0wO2I8bS5sZW5ndGg7YisrKWlmKHA9bVtiXSxwLnRpdGxlIT09InVuZGVmaW5lZCIpe2NvbnN0IFM9bC5xdWVyeVNlbGVjdG9yQWxsKCIjIitlKycgW2lkPSInK24uZGIubG9va1VwRG9tSWQocC5pZCkrJyJdIHJlY3QnKSxSPWwucXVlcnlTZWxlY3RvckFsbCgiIyIrZSsnIFtpZD0iJytuLmRiLmxvb2tVcERvbUlkKHAuaWQpKyciXScpLEE9U1swXS54LmJhc2VWYWwudmFsdWUsTD1TWzBdLnkuYmFzZVZhbC52YWx1ZSx2PVNbMF0ud2lkdGguYmFzZVZhbC52YWx1ZSx3PVN0KFJbMF0pLnNlbGVjdCgiLmxhYmVsIik7dy5hdHRyKCJ0cmFuc2Zvcm0iLGB0cmFuc2xhdGUoJHtBK3YvMn0sICR7TCsxNH0pYCksdy5hdHRyKCJpZCIsZSsiVGV4dCIpO2ZvcihsZXQgRD0wO0Q8cC5jbGFzc2VzLmxlbmd0aDtEKyspUlswXS5jbGFzc0xpc3QuYWRkKHAuY2xhc3Nlc1tEXSl9aWYoIWEuaHRtbExhYmVscyl7Y29uc3QgUz1sLnF1ZXJ5U2VsZWN0b3JBbGwoJ1tpZD0iJytlKyciXSAuZWRnZUxhYmVsIC5sYWJlbCcpO2ZvcihsZXQgUj0wO1I8Uy5sZW5ndGg7UisrKXtjb25zdCBBPVNbUl0sTD1BLmdldEJCb3goKSx2PWwuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsInJlY3QiKTt2LnNldEF0dHJpYnV0ZSgicngiLDApLHYuc2V0QXR0cmlidXRlKCJyeSIsMCksdi5zZXRBdHRyaWJ1dGUoIndpZHRoIixMLndpZHRoKSx2LnNldEF0dHJpYnV0ZSgiaGVpZ2h0IixMLmhlaWdodCksQS5pbnNlcnRCZWZvcmUodixBLmZpcnN0Q2hpbGQpfX1pMShmLFQsYS5kaWFncmFtUGFkZGluZyxhLnVzZU1heFdpZHRoKSxPYmplY3Qua2V5cyhfKS5mb3JFYWNoKGZ1bmN0aW9uKFMpe2NvbnN0IFI9X1tTXTtpZihSLmxpbmspe2NvbnN0IEE9by5zZWxlY3QoIiMiK2UrJyBbaWQ9Iicrbi5kYi5sb29rVXBEb21JZChTKSsnIl0nKTtpZihBKXtjb25zdCBMPWwuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImEiKTtMLnNldEF0dHJpYnV0ZU5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImNsYXNzIixSLmNsYXNzZXMuam9pbigiICIpKSxMLnNldEF0dHJpYnV0ZU5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImhyZWYiLFIubGluayksTC5zZXRBdHRyaWJ1dGVOUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJyZWwiLCJub29wZW5lciIpLGk9PT0ic2FuZGJveCI/TC5zZXRBdHRyaWJ1dGVOUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJ0YXJnZXQiLCJfdG9wIik6Ui5saW5rVGFyZ2V0JiZMLnNldEF0dHJpYnV0ZU5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsInRhcmdldCIsUi5saW5rVGFyZ2V0KTtjb25zdCB2PUEuaW5zZXJ0KGZ1bmN0aW9uKCl7cmV0dXJuIEx9LCI6Zmlyc3QtY2hpbGQiKSxCPUEuc2VsZWN0KCIubGFiZWwtY29udGFpbmVyIik7QiYmdi5hcHBlbmQoZnVuY3Rpb24oKXtyZXR1cm4gQi5ub2RlKCl9KTtjb25zdCB3PUEuc2VsZWN0KCIubGFiZWwiKTt3JiZ2LmFwcGVuZChmdW5jdGlvbigpe3JldHVybiB3Lm5vZGUoKX0pfX19KX19LEhNPXt9LENudD1mdW5jdGlvbih0KXtjb25zdCBlPU9iamVjdC5rZXlzKHQpO2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKUhNW2Vbcl1dPXRbZVtyXV19LEdNPWZ1bmN0aW9uKHQsZSxyLG4saSxhKXtjb25zdCBzPW4uc2VsZWN0KGBbaWQ9IiR7cn0iXWApO09iamVjdC5rZXlzKHQpLmZvckVhY2goZnVuY3Rpb24obCl7Y29uc3QgdT10W2xdO2xldCBoPSJkZWZhdWx0Ijt1LmNsYXNzZXMubGVuZ3RoPjAmJihoPXUuY2xhc3Nlcy5qb2luKCIgIikpO2NvbnN0IGQ9S2EodS5zdHlsZXMpO2xldCBmPXUudGV4dCE9PXZvaWQgMD91LnRleHQ6dS5pZCxwO2lmKE1yKG50KCkuZmxvd2NoYXJ0Lmh0bWxMYWJlbHMpKXtjb25zdCB5PXtsYWJlbDpmLnJlcGxhY2UoL2ZhW2xyc2JdPzpmYS1bXHctXSsvZyxiPT5gPGkgY2xhc3M9JyR7Yi5yZXBsYWNlKCI6IiwiICIpfSc+PC9pPmApfTtwPXA0KHMseSkubm9kZSgpLHAucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChwKX1lbHNle2NvbnN0IHk9aS5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwidGV4dCIpO3kuc2V0QXR0cmlidXRlKCJzdHlsZSIsZC5sYWJlbFN0eWxlLnJlcGxhY2UoImNvbG9yOiIsImZpbGw6IikpO2NvbnN0IGI9Zi5zcGxpdChwZS5saW5lQnJlYWtSZWdleCk7Zm9yKGxldCB4PTA7eDxiLmxlbmd0aDt4Kyspe2NvbnN0IGs9aS5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwidHNwYW4iKTtrLnNldEF0dHJpYnV0ZU5TKCJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UiLCJ4bWw6c3BhY2UiLCJwcmVzZXJ2ZSIpLGsuc2V0QXR0cmlidXRlKCJkeSIsIjFlbSIpLGsuc2V0QXR0cmlidXRlKCJ4IiwiMSIpLGsudGV4dENvbnRlbnQ9Ylt4XSx5LmFwcGVuZENoaWxkKGspfXA9eX1sZXQgbT0wLF89IiI7c3dpdGNoKHUudHlwZSl7Y2FzZSJyb3VuZCI6bT01LF89InJlY3QiO2JyZWFrO2Nhc2Uic3F1YXJlIjpfPSJyZWN0IjticmVhaztjYXNlImRpYW1vbmQiOl89InF1ZXN0aW9uIjticmVhaztjYXNlImhleGFnb24iOl89ImhleGFnb24iO2JyZWFrO2Nhc2Uib2RkIjpfPSJyZWN0X2xlZnRfaW52X2Fycm93IjticmVhaztjYXNlImxlYW5fcmlnaHQiOl89ImxlYW5fcmlnaHQiO2JyZWFrO2Nhc2UibGVhbl9sZWZ0IjpfPSJsZWFuX2xlZnQiO2JyZWFrO2Nhc2UidHJhcGV6b2lkIjpfPSJ0cmFwZXpvaWQiO2JyZWFrO2Nhc2UiaW52X3RyYXBlem9pZCI6Xz0iaW52X3RyYXBlem9pZCI7YnJlYWs7Y2FzZSJvZGRfcmlnaHQiOl89InJlY3RfbGVmdF9pbnZfYXJyb3ciO2JyZWFrO2Nhc2UiY2lyY2xlIjpfPSJjaXJjbGUiO2JyZWFrO2Nhc2UiZWxsaXBzZSI6Xz0iZWxsaXBzZSI7YnJlYWs7Y2FzZSJzdGFkaXVtIjpfPSJzdGFkaXVtIjticmVhaztjYXNlInN1YnJvdXRpbmUiOl89InN1YnJvdXRpbmUiO2JyZWFrO2Nhc2UiY3lsaW5kZXIiOl89ImN5bGluZGVyIjticmVhaztjYXNlImdyb3VwIjpfPSJyZWN0IjticmVhaztjYXNlImRvdWJsZWNpcmNsZSI6Xz0iZG91YmxlY2lyY2xlIjticmVhaztkZWZhdWx0Ol89InJlY3QifWUuc2V0Tm9kZSh1LmlkLHtsYWJlbFN0eWxlOmQubGFiZWxTdHlsZSxzaGFwZTpfLGxhYmVsVGV4dDpmLHJ4Om0scnk6bSxjbGFzczpoLHN0eWxlOmQuc3R5bGUsaWQ6dS5pZCxsaW5rOnUubGluayxsaW5rVGFyZ2V0OnUubGlua1RhcmdldCx0b29sdGlwOmEuZGIuZ2V0VG9vbHRpcCh1LmlkKXx8IiIsZG9tSWQ6YS5kYi5sb29rVXBEb21JZCh1LmlkKSxoYXZlQ2FsbGJhY2s6dS5oYXZlQ2FsbGJhY2ssd2lkdGg6dS50eXBlPT09Imdyb3VwIj81MDA6dm9pZCAwLGRpcjp1LmRpcix0eXBlOnUudHlwZSxwcm9wczp1LnByb3BzLHBhZGRpbmc6bnQoKS5mbG93Y2hhcnQucGFkZGluZ30pLEguaW5mbygic2V0Tm9kZSIse2xhYmVsU3R5bGU6ZC5sYWJlbFN0eWxlLHNoYXBlOl8sbGFiZWxUZXh0OmYscng6bSxyeTptLGNsYXNzOmgsc3R5bGU6ZC5zdHlsZSxpZDp1LmlkLGRvbUlkOmEuZGIubG9va1VwRG9tSWQodS5pZCksd2lkdGg6dS50eXBlPT09Imdyb3VwIj81MDA6dm9pZCAwLHR5cGU6dS50eXBlLGRpcjp1LmRpcixwcm9wczp1LnByb3BzLHBhZGRpbmc6bnQoKS5mbG93Y2hhcnQucGFkZGluZ30pfSl9LGpNPWZ1bmN0aW9uKHQsZSxyKXtILmluZm8oImFiYzc4IGVkZ2VzID0gIix0KTtsZXQgbj0wLGk9e30sYSxzO2lmKHR5cGVvZiB0LmRlZmF1bHRTdHlsZTwidSIpe2NvbnN0IG89S2EodC5kZWZhdWx0U3R5bGUpO2E9by5zdHlsZSxzPW8ubGFiZWxTdHlsZX10LmZvckVhY2goZnVuY3Rpb24obyl7bisrO3ZhciBsPSJMLSIrby5zdGFydCsiLSIrby5lbmQ7dHlwZW9mIGlbbF0+InUiPyhpW2xdPTAsSC5pbmZvKCJhYmM3OCBuZXcgZW50cnkiLGwsaVtsXSkpOihpW2xdKyssSC5pbmZvKCJhYmM3OCBuZXcgZW50cnkiLGwsaVtsXSkpO2xldCB1PWwrIi0iK2lbbF07SC5pbmZvKCJhYmM3OCBuZXcgbGluayBpZCB0byBiZSB1c2VkIGlzIixsLHUsaVtsXSk7dmFyIGg9IkxTLSIrby5zdGFydCxkPSJMRS0iK28uZW5kO2NvbnN0IGY9e3N0eWxlOiIiLGxhYmVsU3R5bGU6IiJ9O3N3aXRjaChmLm1pbmxlbj1vLmxlbmd0aHx8MSxvLnR5cGU9PT0iYXJyb3dfb3BlbiI/Zi5hcnJvd2hlYWQ9Im5vbmUiOmYuYXJyb3doZWFkPSJub3JtYWwiLGYuYXJyb3dUeXBlU3RhcnQ9ImFycm93X29wZW4iLGYuYXJyb3dUeXBlRW5kPSJhcnJvd19vcGVuIixvLnR5cGUpe2Nhc2UiZG91YmxlX2Fycm93X2Nyb3NzIjpmLmFycm93VHlwZVN0YXJ0PSJhcnJvd19jcm9zcyI7Y2FzZSJhcnJvd19jcm9zcyI6Zi5hcnJvd1R5cGVFbmQ9ImFycm93X2Nyb3NzIjticmVhaztjYXNlImRvdWJsZV9hcnJvd19wb2ludCI6Zi5hcnJvd1R5cGVTdGFydD0iYXJyb3dfcG9pbnQiO2Nhc2UiYXJyb3dfcG9pbnQiOmYuYXJyb3dUeXBlRW5kPSJhcnJvd19wb2ludCI7YnJlYWs7Y2FzZSJkb3VibGVfYXJyb3dfY2lyY2xlIjpmLmFycm93VHlwZVN0YXJ0PSJhcnJvd19jaXJjbGUiO2Nhc2UiYXJyb3dfY2lyY2xlIjpmLmFycm93VHlwZUVuZD0iYXJyb3dfY2lyY2xlIjticmVha31sZXQgcD0iIixtPSIiO3N3aXRjaChvLnN0cm9rZSl7Y2FzZSJub3JtYWwiOnA9ImZpbGw6bm9uZTsiLHR5cGVvZiBhPCJ1IiYmKHA9YSksdHlwZW9mIHM8InUiJiYobT1zKSxmLnRoaWNrbmVzcz0ibm9ybWFsIixmLnBhdHRlcm49InNvbGlkIjticmVhaztjYXNlImRvdHRlZCI6Zi50aGlja25lc3M9Im5vcm1hbCIsZi5wYXR0ZXJuPSJkb3R0ZWQiLGYuc3R5bGU9ImZpbGw6bm9uZTtzdHJva2Utd2lkdGg6MnB4O3N0cm9rZS1kYXNoYXJyYXk6MzsiO2JyZWFrO2Nhc2UidGhpY2siOmYudGhpY2tuZXNzPSJ0aGljayIsZi5wYXR0ZXJuPSJzb2xpZCIsZi5zdHlsZT0ic3Ryb2tlLXdpZHRoOiAzLjVweDtmaWxsOm5vbmU7IjticmVhaztjYXNlImludmlzaWJsZSI6Zi50aGlja25lc3M9ImludmlzaWJsZSIsZi5wYXR0ZXJuPSJzb2xpZCIsZi5zdHlsZT0ic3Ryb2tlLXdpZHRoOiAwO2ZpbGw6bm9uZTsiO2JyZWFrfWlmKHR5cGVvZiBvLnN0eWxlPCJ1Iil7Y29uc3QgXz1LYShvLnN0eWxlKTtwPV8uc3R5bGUsbT1fLmxhYmVsU3R5bGV9Zi5zdHlsZT1mLnN0eWxlKz1wLGYubGFiZWxTdHlsZT1mLmxhYmVsU3R5bGUrPW0sdHlwZW9mIG8uaW50ZXJwb2xhdGU8InUiP2YuY3VydmU9Tmkoby5pbnRlcnBvbGF0ZSx5bik6dHlwZW9mIHQuZGVmYXVsdEludGVycG9sYXRlPCJ1Ij9mLmN1cnZlPU5pKHQuZGVmYXVsdEludGVycG9sYXRlLHluKTpmLmN1cnZlPU5pKEhNLmN1cnZlLHluKSx0eXBlb2Ygby50ZXh0PiJ1Ij90eXBlb2Ygby5zdHlsZTwidSImJihmLmFycm93aGVhZFN0eWxlPSJmaWxsOiAjMzMzIik6KGYuYXJyb3doZWFkU3R5bGU9ImZpbGw6ICMzMzMiLGYubGFiZWxwb3M9ImMiKSxmLmxhYmVsVHlwZT0idGV4dCIsZi5sYWJlbD1vLnRleHQucmVwbGFjZShwZS5saW5lQnJlYWtSZWdleCxgCmApLHR5cGVvZiBvLnN0eWxlPiJ1IiYmKGYuc3R5bGU9Zi5zdHlsZXx8InN0cm9rZTogIzMzMzsgc3Ryb2tlLXdpZHRoOiAxLjVweDtmaWxsOm5vbmU7IiksZi5sYWJlbFN0eWxlPWYubGFiZWxTdHlsZS5yZXBsYWNlKCJjb2xvcjoiLCJmaWxsOiIpLGYuaWQ9dSxmLmNsYXNzZXM9ImZsb3djaGFydC1saW5rICIraCsiICIrZCxlLnNldEVkZ2Uoby5zdGFydCxvLmVuZCxmLG4pfSl9LEE0PXtzZXRDb25mOkNudCxhZGRWZXJ0aWNlczpHTSxhZGRFZGdlczpqTSxnZXRDbGFzc2VzOmZ1bmN0aW9uKHQsZSl7SC5pbmZvKCJFeHRyYWN0aW5nIGNsYXNzZXMiKSxlLmRiLmNsZWFyKCk7dHJ5e3JldHVybiBlLnBhcnNlKHQpLGUuZGIuZ2V0Q2xhc3NlcygpfWNhdGNoe3JldHVybn19LGRyYXc6ZnVuY3Rpb24odCxlLHIsbil7SC5pbmZvKCJEcmF3aW5nIGZsb3djaGFydCIpLG4uZGIuY2xlYXIoKSxmYS5zZXRHZW4oImdlbi0yIiksbi5wYXJzZXIucGFyc2UodCk7bGV0IGk9bi5kYi5nZXREaXJlY3Rpb24oKTt0eXBlb2YgaT4idSImJihpPSJURCIpO2NvbnN0e3NlY3VyaXR5TGV2ZWw6YSxmbG93Y2hhcnQ6c309bnQoKSxvPXMubm9kZVNwYWNpbmd8fDUwLGw9cy5yYW5rU3BhY2luZ3x8NTA7bGV0IHU7YT09PSJzYW5kYm94IiYmKHU9U3QoIiNpIitlKSk7Y29uc3QgaD1TdChhPT09InNhbmRib3giP3Uubm9kZXMoKVswXS5jb250ZW50RG9jdW1lbnQuYm9keToiYm9keSIpLGQ9YT09PSJzYW5kYm94Ij91Lm5vZGVzKClbMF0uY29udGVudERvY3VtZW50OmRvY3VtZW50LGY9bmV3IGNyLkdyYXBoKHttdWx0aWdyYXBoOiEwLGNvbXBvdW5kOiEwfSkuc2V0R3JhcGgoe3JhbmtkaXI6aSxub2Rlc2VwOm8scmFua3NlcDpsLG1hcmdpbng6MCxtYXJnaW55OjB9KS5zZXREZWZhdWx0RWRnZUxhYmVsKGZ1bmN0aW9uKCl7cmV0dXJue319KTtsZXQgcDtjb25zdCBtPW4uZGIuZ2V0U3ViR3JhcGhzKCk7SC5pbmZvKCJTdWJncmFwaHMgLSAiLG0pO2ZvcihsZXQgQz1tLmxlbmd0aC0xO0M+PTA7Qy0tKXA9bVtDXSxILmluZm8oIlN1YmdyYXBoIC0gIixwKSxuLmRiLmFkZFZlcnRleChwLmlkLHAudGl0bGUsImdyb3VwIix2b2lkIDAscC5jbGFzc2VzLHAuZGlyKTtjb25zdCBfPW4uZGIuZ2V0VmVydGljZXMoKSx5PW4uZGIuZ2V0RWRnZXMoKTtILmluZm8oeSk7bGV0IGI9MDtmb3IoYj1tLmxlbmd0aC0xO2I+PTA7Yi0tKXtwPW1bYl0sTnUoImNsdXN0ZXIiKS5hcHBlbmQoInRleHQiKTtmb3IobGV0IEM9MDtDPHAubm9kZXMubGVuZ3RoO0MrKylILmluZm8oIlNldHRpbmcgdXAgc3ViZ3JhcGhzIixwLm5vZGVzW0NdLHAuaWQpLGYuc2V0UGFyZW50KHAubm9kZXNbQ10scC5pZCl9R00oXyxmLGUsaCxkLG4pLGpNKHksZik7Y29uc3QgeD1oLnNlbGVjdChgW2lkPSIke2V9Il1gKTtibihuLmRiLHgsZSk7Y29uc3Qgaz1oLnNlbGVjdCgiIyIrZSsiIGciKTtpZihpNChrLGYsWyJwb2ludCIsImNpcmNsZSIsImNyb3NzIl0sImZsb3djaGFydCIsZSksaTEoZix4LHMuZGlhZ3JhbVBhZGRpbmcscy51c2VNYXhXaWR0aCksbi5kYi5pbmRleE5vZGVzKCJzdWJHcmFwaCIrYiksIXMuaHRtbExhYmVscyl7Y29uc3QgQz1kLnF1ZXJ5U2VsZWN0b3JBbGwoJ1tpZD0iJytlKyciXSAuZWRnZUxhYmVsIC5sYWJlbCcpO2ZvcihsZXQgTT0wO008Qy5sZW5ndGg7TSsrKXtjb25zdCBTPUNbTV0sUj1TLmdldEJCb3goKSxBPWQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsInJlY3QiKTtBLnNldEF0dHJpYnV0ZSgicngiLDApLEEuc2V0QXR0cmlidXRlKCJyeSIsMCksQS5zZXRBdHRyaWJ1dGUoIndpZHRoIixSLndpZHRoKSxBLnNldEF0dHJpYnV0ZSgiaGVpZ2h0IixSLmhlaWdodCksUy5pbnNlcnRCZWZvcmUoQSxTLmZpcnN0Q2hpbGQpfX1PYmplY3Qua2V5cyhfKS5mb3JFYWNoKGZ1bmN0aW9uKEMpe2NvbnN0IE09X1tDXTtpZihNLmxpbmspe2NvbnN0IFM9U3QoIiMiK2UrJyBbaWQ9IicrQysnIl0nKTtpZihTKXtjb25zdCBSPWQuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImEiKTtSLnNldEF0dHJpYnV0ZU5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImNsYXNzIixNLmNsYXNzZXMuam9pbigiICIpKSxSLnNldEF0dHJpYnV0ZU5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsImhyZWYiLE0ubGluayksUi5zZXRBdHRyaWJ1dGVOUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJyZWwiLCJub29wZW5lciIpLGE9PT0ic2FuZGJveCI/Ui5zZXRBdHRyaWJ1dGVOUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJ0YXJnZXQiLCJfdG9wIik6TS5saW5rVGFyZ2V0JiZSLnNldEF0dHJpYnV0ZU5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsInRhcmdldCIsTS5saW5rVGFyZ2V0KTtjb25zdCBBPVMuaW5zZXJ0KGZ1bmN0aW9uKCl7cmV0dXJuIFJ9LCI6Zmlyc3QtY2hpbGQiKSxMPVMuc2VsZWN0KCIubGFiZWwtY29udGFpbmVyIik7TCYmQS5hcHBlbmQoZnVuY3Rpb24oKXtyZXR1cm4gTC5ub2RlKCl9KTtjb25zdCB2PVMuc2VsZWN0KCIubGFiZWwiKTt2JiZBLmFwcGVuZChmdW5jdGlvbigpe3JldHVybiB2Lm5vZGUoKX0pfX19KX19O3ZhciBNND1mdW5jdGlvbigpe3ZhciB0PWZ1bmN0aW9uKFMsUixBLEwpe2ZvcihBPUF8fHt9LEw9Uy5sZW5ndGg7TC0tO0FbU1tMXV09Uik7cmV0dXJuIEF9LGU9WzEsM10scj1bMSw1XSxuPVs3LDksMTEsMTIsMTMsMTQsMTUsMTYsMTcsMTgsMTksMjAsMjIsMjQsMjUsMjcsMzQsMzldLGk9WzEsMTVdLGE9WzEsMTZdLHM9WzEsMTddLG89WzEsMThdLGw9WzEsMTldLHU9WzEsMjBdLGg9WzEsMjFdLGQ9WzEsMjJdLGY9WzEsMjNdLHA9WzEsMjRdLG09WzEsMjVdLF89WzEsMjZdLHk9WzEsMjhdLGI9WzEsMzBdLHg9WzEsMzNdLGs9WzUsNyw5LDExLDEyLDEzLDE0LDE1LDE2LDE3LDE4LDE5LDIwLDIyLDI0LDI1LDI3LDM0LDM5XSxUPXt0cmFjZTpmdW5jdGlvbigpe30seXk6e30sc3ltYm9sc186e2Vycm9yOjIsc3RhcnQ6MyxkaXJlY3RpdmU6NCxnYW50dDo1LGRvY3VtZW50OjYsRU9GOjcsbGluZTo4LFNQQUNFOjksc3RhdGVtZW50OjEwLE5MOjExLGRhdGVGb3JtYXQ6MTIsaW5jbHVzaXZlRW5kRGF0ZXM6MTMsdG9wQXhpczoxNCxheGlzRm9ybWF0OjE1LGV4Y2x1ZGVzOjE2LGluY2x1ZGVzOjE3LHRvZGF5TWFya2VyOjE4LHRpdGxlOjE5LGFjY190aXRsZToyMCxhY2NfdGl0bGVfdmFsdWU6MjEsYWNjX2Rlc2NyOjIyLGFjY19kZXNjcl92YWx1ZToyMyxhY2NfZGVzY3JfbXVsdGlsaW5lX3ZhbHVlOjI0LHNlY3Rpb246MjUsY2xpY2tTdGF0ZW1lbnQ6MjYsdGFza1R4dDoyNyx0YXNrRGF0YToyOCxvcGVuRGlyZWN0aXZlOjI5LHR5cGVEaXJlY3RpdmU6MzAsY2xvc2VEaXJlY3RpdmU6MzEsIjoiOjMyLGFyZ0RpcmVjdGl2ZTozMyxjbGljazozNCxjYWxsYmFja25hbWU6MzUsY2FsbGJhY2thcmdzOjM2LGhyZWY6MzcsY2xpY2tTdGF0ZW1lbnREZWJ1ZzozOCxvcGVuX2RpcmVjdGl2ZTozOSx0eXBlX2RpcmVjdGl2ZTo0MCxhcmdfZGlyZWN0aXZlOjQxLGNsb3NlX2RpcmVjdGl2ZTo0MiwkYWNjZXB0OjAsJGVuZDoxfSx0ZXJtaW5hbHNfOnsyOiJlcnJvciIsNToiZ2FudHQiLDc6IkVPRiIsOToiU1BBQ0UiLDExOiJOTCIsMTI6ImRhdGVGb3JtYXQiLDEzOiJpbmNsdXNpdmVFbmREYXRlcyIsMTQ6InRvcEF4aXMiLDE1OiJheGlzRm9ybWF0IiwxNjoiZXhjbHVkZXMiLDE3OiJpbmNsdWRlcyIsMTg6InRvZGF5TWFya2VyIiwxOToidGl0bGUiLDIwOiJhY2NfdGl0bGUiLDIxOiJhY2NfdGl0bGVfdmFsdWUiLDIyOiJhY2NfZGVzY3IiLDIzOiJhY2NfZGVzY3JfdmFsdWUiLDI0OiJhY2NfZGVzY3JfbXVsdGlsaW5lX3ZhbHVlIiwyNToic2VjdGlvbiIsMjc6InRhc2tUeHQiLDI4OiJ0YXNrRGF0YSIsMzI6IjoiLDM0OiJjbGljayIsMzU6ImNhbGxiYWNrbmFtZSIsMzY6ImNhbGxiYWNrYXJncyIsMzc6ImhyZWYiLDM5OiJvcGVuX2RpcmVjdGl2ZSIsNDA6InR5cGVfZGlyZWN0aXZlIiw0MToiYXJnX2RpcmVjdGl2ZSIsNDI6ImNsb3NlX2RpcmVjdGl2ZSJ9LHByb2R1Y3Rpb25zXzpbMCxbMywyXSxbMywzXSxbNiwwXSxbNiwyXSxbOCwyXSxbOCwxXSxbOCwxXSxbOCwxXSxbMTAsMV0sWzEwLDFdLFsxMCwxXSxbMTAsMV0sWzEwLDFdLFsxMCwxXSxbMTAsMV0sWzEwLDFdLFsxMCwyXSxbMTAsMl0sWzEwLDFdLFsxMCwxXSxbMTAsMV0sWzEwLDJdLFsxMCwxXSxbNCw0XSxbNCw2XSxbMjYsMl0sWzI2LDNdLFsyNiwzXSxbMjYsNF0sWzI2LDNdLFsyNiw0XSxbMjYsMl0sWzM4LDJdLFszOCwzXSxbMzgsM10sWzM4LDRdLFszOCwzXSxbMzgsNF0sWzM4LDJdLFsyOSwxXSxbMzAsMV0sWzMzLDFdLFszMSwxXV0scGVyZm9ybUFjdGlvbjpmdW5jdGlvbihSLEEsTCx2LEIsdyxEKXt2YXIgTj13Lmxlbmd0aC0xO3N3aXRjaChCKXtjYXNlIDI6cmV0dXJuIHdbTi0xXTtjYXNlIDM6dGhpcy4kPVtdO2JyZWFrO2Nhc2UgNDp3W04tMV0ucHVzaCh3W05dKSx0aGlzLiQ9d1tOLTFdO2JyZWFrO2Nhc2UgNTpjYXNlIDY6dGhpcy4kPXdbTl07YnJlYWs7Y2FzZSA3OmNhc2UgODp0aGlzLiQ9W107YnJlYWs7Y2FzZSA5OnYuc2V0RGF0ZUZvcm1hdCh3W05dLnN1YnN0cigxMSkpLHRoaXMuJD13W05dLnN1YnN0cigxMSk7YnJlYWs7Y2FzZSAxMDp2LmVuYWJsZUluY2x1c2l2ZUVuZERhdGVzKCksdGhpcy4kPXdbTl0uc3Vic3RyKDE4KTticmVhaztjYXNlIDExOnYuVG9wQXhpcygpLHRoaXMuJD13W05dLnN1YnN0cig4KTticmVhaztjYXNlIDEyOnYuc2V0QXhpc0Zvcm1hdCh3W05dLnN1YnN0cigxMSkpLHRoaXMuJD13W05dLnN1YnN0cigxMSk7YnJlYWs7Y2FzZSAxMzp2LnNldEV4Y2x1ZGVzKHdbTl0uc3Vic3RyKDkpKSx0aGlzLiQ9d1tOXS5zdWJzdHIoOSk7YnJlYWs7Y2FzZSAxNDp2LnNldEluY2x1ZGVzKHdbTl0uc3Vic3RyKDkpKSx0aGlzLiQ9d1tOXS5zdWJzdHIoOSk7YnJlYWs7Y2FzZSAxNTp2LnNldFRvZGF5TWFya2VyKHdbTl0uc3Vic3RyKDEyKSksdGhpcy4kPXdbTl0uc3Vic3RyKDEyKTticmVhaztjYXNlIDE2OnYuc2V0RGlhZ3JhbVRpdGxlKHdbTl0uc3Vic3RyKDYpKSx0aGlzLiQ9d1tOXS5zdWJzdHIoNik7YnJlYWs7Y2FzZSAxNzp0aGlzLiQ9d1tOXS50cmltKCksdi5zZXRBY2NUaXRsZSh0aGlzLiQpO2JyZWFrO2Nhc2UgMTg6Y2FzZSAxOTp0aGlzLiQ9d1tOXS50cmltKCksdi5zZXRBY2NEZXNjcmlwdGlvbih0aGlzLiQpO2JyZWFrO2Nhc2UgMjA6di5hZGRTZWN0aW9uKHdbTl0uc3Vic3RyKDgpKSx0aGlzLiQ9d1tOXS5zdWJzdHIoOCk7YnJlYWs7Y2FzZSAyMjp2LmFkZFRhc2sod1tOLTFdLHdbTl0pLHRoaXMuJD0idGFzayI7YnJlYWs7Y2FzZSAyNjp0aGlzLiQ9d1tOLTFdLHYuc2V0Q2xpY2tFdmVudCh3W04tMV0sd1tOXSxudWxsKTticmVhaztjYXNlIDI3OnRoaXMuJD13W04tMl0sdi5zZXRDbGlja0V2ZW50KHdbTi0yXSx3W04tMV0sd1tOXSk7YnJlYWs7Y2FzZSAyODp0aGlzLiQ9d1tOLTJdLHYuc2V0Q2xpY2tFdmVudCh3W04tMl0sd1tOLTFdLG51bGwpLHYuc2V0TGluayh3W04tMl0sd1tOXSk7YnJlYWs7Y2FzZSAyOTp0aGlzLiQ9d1tOLTNdLHYuc2V0Q2xpY2tFdmVudCh3W04tM10sd1tOLTJdLHdbTi0xXSksdi5zZXRMaW5rKHdbTi0zXSx3W05dKTticmVhaztjYXNlIDMwOnRoaXMuJD13W04tMl0sdi5zZXRDbGlja0V2ZW50KHdbTi0yXSx3W05dLG51bGwpLHYuc2V0TGluayh3W04tMl0sd1tOLTFdKTticmVhaztjYXNlIDMxOnRoaXMuJD13W04tM10sdi5zZXRDbGlja0V2ZW50KHdbTi0zXSx3W04tMV0sd1tOXSksdi5zZXRMaW5rKHdbTi0zXSx3W04tMl0pO2JyZWFrO2Nhc2UgMzI6dGhpcy4kPXdbTi0xXSx2LnNldExpbmsod1tOLTFdLHdbTl0pO2JyZWFrO2Nhc2UgMzM6Y2FzZSAzOTp0aGlzLiQ9d1tOLTFdKyIgIit3W05dO2JyZWFrO2Nhc2UgMzQ6Y2FzZSAzNTpjYXNlIDM3OnRoaXMuJD13W04tMl0rIiAiK3dbTi0xXSsiICIrd1tOXTticmVhaztjYXNlIDM2OmNhc2UgMzg6dGhpcy4kPXdbTi0zXSsiICIrd1tOLTJdKyIgIit3W04tMV0rIiAiK3dbTl07YnJlYWs7Y2FzZSA0MDp2LnBhcnNlRGlyZWN0aXZlKCIlJXsiLCJvcGVuX2RpcmVjdGl2ZSIpO2JyZWFrO2Nhc2UgNDE6di5wYXJzZURpcmVjdGl2ZSh3W05dLCJ0eXBlX2RpcmVjdGl2ZSIpO2JyZWFrO2Nhc2UgNDI6d1tOXT13W05dLnRyaW0oKS5yZXBsYWNlKC8nL2csJyInKSx2LnBhcnNlRGlyZWN0aXZlKHdbTl0sImFyZ19kaXJlY3RpdmUiKTticmVhaztjYXNlIDQzOnYucGFyc2VEaXJlY3RpdmUoIn0lJSIsImNsb3NlX2RpcmVjdGl2ZSIsImdhbnR0Iik7YnJlYWt9fSx0YWJsZTpbezM6MSw0OjIsNTplLDI5OjQsMzk6cn0sezE6WzNdfSx7Mzo2LDQ6Miw1OmUsMjk6NCwzOTpyfSx0KG4sWzIsM10sezY6N30pLHszMDo4LDQwOlsxLDldfSx7NDA6WzIsNDBdfSx7MTpbMiwxXX0sezQ6MjksNzpbMSwxMF0sODoxMSw5OlsxLDEyXSwxMDoxMywxMTpbMSwxNF0sMTI6aSwxMzphLDE0OnMsMTU6bywxNjpsLDE3OnUsMTg6aCwxOTpkLDIwOmYsMjI6cCwyNDptLDI1Ol8sMjY6MjcsMjc6eSwyOTo0LDM0OmIsMzk6cn0sezMxOjMxLDMyOlsxLDMyXSw0Mjp4fSx0KFszMiw0Ml0sWzIsNDFdKSx0KG4sWzIsOF0sezE6WzIsMl19KSx0KG4sWzIsNF0pLHs0OjI5LDEwOjM0LDEyOmksMTM6YSwxNDpzLDE1Om8sMTY6bCwxNzp1LDE4OmgsMTk6ZCwyMDpmLDIyOnAsMjQ6bSwyNTpfLDI2OjI3LDI3OnksMjk6NCwzNDpiLDM5OnJ9LHQobixbMiw2XSksdChuLFsyLDddKSx0KG4sWzIsOV0pLHQobixbMiwxMF0pLHQobixbMiwxMV0pLHQobixbMiwxMl0pLHQobixbMiwxM10pLHQobixbMiwxNF0pLHQobixbMiwxNV0pLHQobixbMiwxNl0pLHsyMTpbMSwzNV19LHsyMzpbMSwzNl19LHQobixbMiwxOV0pLHQobixbMiwyMF0pLHQobixbMiwyMV0pLHsyODpbMSwzN119LHQobixbMiwyM10pLHszNTpbMSwzOF0sMzc6WzEsMzldfSx7MTE6WzEsNDBdfSx7MzM6NDEsNDE6WzEsNDJdfSx7MTE6WzIsNDNdfSx0KG4sWzIsNV0pLHQobixbMiwxN10pLHQobixbMiwxOF0pLHQobixbMiwyMl0pLHQobixbMiwyNl0sezM2OlsxLDQzXSwzNzpbMSw0NF19KSx0KG4sWzIsMzJdLHszNTpbMSw0NV19KSx0KGssWzIsMjRdKSx7MzE6NDYsNDI6eH0sezQyOlsyLDQyXX0sdChuLFsyLDI3XSx7Mzc6WzEsNDddfSksdChuLFsyLDI4XSksdChuLFsyLDMwXSx7MzY6WzEsNDhdfSksezExOlsxLDQ5XX0sdChuLFsyLDI5XSksdChuLFsyLDMxXSksdChrLFsyLDI1XSldLGRlZmF1bHRBY3Rpb25zOns1OlsyLDQwXSw2OlsyLDFdLDMzOlsyLDQzXSw0MjpbMiw0Ml19LHBhcnNlRXJyb3I6ZnVuY3Rpb24oUixBKXtpZihBLnJlY292ZXJhYmxlKXRoaXMudHJhY2UoUik7ZWxzZXt2YXIgTD1uZXcgRXJyb3IoUik7dGhyb3cgTC5oYXNoPUEsTH19LHBhcnNlOmZ1bmN0aW9uKFIpe3ZhciBBPXRoaXMsTD1bMF0sdj1bXSxCPVtudWxsXSx3PVtdLEQ9dGhpcy50YWJsZSxOPSIiLHo9MCxYPTAsY3Q9MixKPTEsWT13LnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpLCQ9T2JqZWN0LmNyZWF0ZSh0aGlzLmxleGVyKSxsdD17eXk6e319O2Zvcih2YXIgdXQgaW4gdGhpcy55eSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy55eSx1dCkmJihsdC55eVt1dF09dGhpcy55eVt1dF0pOyQuc2V0SW5wdXQoUixsdC55eSksbHQueXkubGV4ZXI9JCxsdC55eS5wYXJzZXI9dGhpcyx0eXBlb2YgJC55eWxsb2M+InUiJiYoJC55eWxsb2M9e30pO3ZhciBXPSQueXlsbG9jO3cucHVzaChXKTt2YXIgdHQ9JC5vcHRpb25zJiYkLm9wdGlvbnMucmFuZ2VzO3R5cGVvZiBsdC55eS5wYXJzZUVycm9yPT0iZnVuY3Rpb24iP3RoaXMucGFyc2VFcnJvcj1sdC55eS5wYXJzZUVycm9yOnRoaXMucGFyc2VFcnJvcj1PYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykucGFyc2VFcnJvcjtmdW5jdGlvbiBLKCl7dmFyIGF0O3JldHVybiBhdD12LnBvcCgpfHwkLmxleCgpfHxKLHR5cGVvZiBhdCE9Im51bWJlciImJihhdCBpbnN0YW5jZW9mIEFycmF5JiYodj1hdCxhdD12LnBvcCgpKSxhdD1BLnN5bWJvbHNfW2F0XXx8YXQpLGF0fWZvcih2YXIgaXQsWixWLFEscT17fSxVLEYsaixQOzspe2lmKFo9TFtMLmxlbmd0aC0xXSx0aGlzLmRlZmF1bHRBY3Rpb25zW1pdP1Y9dGhpcy5kZWZhdWx0QWN0aW9uc1taXTooKGl0PT09bnVsbHx8dHlwZW9mIGl0PiJ1IikmJihpdD1LKCkpLFY9RFtaXSYmRFtaXVtpdF0pLHR5cGVvZiBWPiJ1Inx8IVYubGVuZ3RofHwhVlswXSl7dmFyIGV0PSIiO1A9W107Zm9yKFUgaW4gRFtaXSl0aGlzLnRlcm1pbmFsc19bVV0mJlU+Y3QmJlAucHVzaCgiJyIrdGhpcy50ZXJtaW5hbHNfW1VdKyInIik7JC5zaG93UG9zaXRpb24/ZXQ9IlBhcnNlIGVycm9yIG9uIGxpbmUgIisoeisxKStgOgpgKyQuc2hvd1Bvc2l0aW9uKCkrYApFeHBlY3RpbmcgYCtQLmpvaW4oIiwgIikrIiwgZ290ICciKyh0aGlzLnRlcm1pbmFsc19baXRdfHxpdCkrIiciOmV0PSJQYXJzZSBlcnJvciBvbiBsaW5lICIrKHorMSkrIjogVW5leHBlY3RlZCAiKyhpdD09Sj8iZW5kIG9mIGlucHV0IjoiJyIrKHRoaXMudGVybWluYWxzX1tpdF18fGl0KSsiJyIpLHRoaXMucGFyc2VFcnJvcihldCx7dGV4dDokLm1hdGNoLHRva2VuOnRoaXMudGVybWluYWxzX1tpdF18fGl0LGxpbmU6JC55eWxpbmVubyxsb2M6VyxleHBlY3RlZDpQfSl9aWYoVlswXWluc3RhbmNlb2YgQXJyYXkmJlYubGVuZ3RoPjEpdGhyb3cgbmV3IEVycm9yKCJQYXJzZSBFcnJvcjogbXVsdGlwbGUgYWN0aW9ucyBwb3NzaWJsZSBhdCBzdGF0ZTogIitaKyIsIHRva2VuOiAiK2l0KTtzd2l0Y2goVlswXSl7Y2FzZSAxOkwucHVzaChpdCksQi5wdXNoKCQueXl0ZXh0KSx3LnB1c2goJC55eWxsb2MpLEwucHVzaChWWzFdKSxpdD1udWxsLFg9JC55eWxlbmcsTj0kLnl5dGV4dCx6PSQueXlsaW5lbm8sVz0kLnl5bGxvYzticmVhaztjYXNlIDI6aWYoRj10aGlzLnByb2R1Y3Rpb25zX1tWWzFdXVsxXSxxLiQ9QltCLmxlbmd0aC1GXSxxLl8kPXtmaXJzdF9saW5lOndbdy5sZW5ndGgtKEZ8fDEpXS5maXJzdF9saW5lLGxhc3RfbGluZTp3W3cubGVuZ3RoLTFdLmxhc3RfbGluZSxmaXJzdF9jb2x1bW46d1t3Lmxlbmd0aC0oRnx8MSldLmZpcnN0X2NvbHVtbixsYXN0X2NvbHVtbjp3W3cubGVuZ3RoLTFdLmxhc3RfY29sdW1ufSx0dCYmKHEuXyQucmFuZ2U9W3dbdy5sZW5ndGgtKEZ8fDEpXS5yYW5nZVswXSx3W3cubGVuZ3RoLTFdLnJhbmdlWzFdXSksUT10aGlzLnBlcmZvcm1BY3Rpb24uYXBwbHkocSxbTixYLHosbHQueXksVlsxXSxCLHddLmNvbmNhdChZKSksdHlwZW9mIFE8InUiKXJldHVybiBRO0YmJihMPUwuc2xpY2UoMCwtMSpGKjIpLEI9Qi5zbGljZSgwLC0xKkYpLHc9dy5zbGljZSgwLC0xKkYpKSxMLnB1c2godGhpcy5wcm9kdWN0aW9uc19bVlsxXV1bMF0pLEIucHVzaChxLiQpLHcucHVzaChxLl8kKSxqPURbTFtMLmxlbmd0aC0yXV1bTFtMLmxlbmd0aC0xXV0sTC5wdXNoKGopO2JyZWFrO2Nhc2UgMzpyZXR1cm4hMH19cmV0dXJuITB9fSxDPWZ1bmN0aW9uKCl7dmFyIFM9e0VPRjoxLHBhcnNlRXJyb3I6ZnVuY3Rpb24oQSxMKXtpZih0aGlzLnl5LnBhcnNlcil0aGlzLnl5LnBhcnNlci5wYXJzZUVycm9yKEEsTCk7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoQSl9LHNldElucHV0OmZ1bmN0aW9uKFIsQSl7cmV0dXJuIHRoaXMueXk9QXx8dGhpcy55eXx8e30sdGhpcy5faW5wdXQ9Uix0aGlzLl9tb3JlPXRoaXMuX2JhY2t0cmFjaz10aGlzLmRvbmU9ITEsdGhpcy55eWxpbmVubz10aGlzLnl5bGVuZz0wLHRoaXMueXl0ZXh0PXRoaXMubWF0Y2hlZD10aGlzLm1hdGNoPSIiLHRoaXMuY29uZGl0aW9uU3RhY2s9WyJJTklUSUFMIl0sdGhpcy55eWxsb2M9e2ZpcnN0X2xpbmU6MSxmaXJzdF9jb2x1bW46MCxsYXN0X2xpbmU6MSxsYXN0X2NvbHVtbjowfSx0aGlzLm9wdGlvbnMucmFuZ2VzJiYodGhpcy55eWxsb2MucmFuZ2U9WzAsMF0pLHRoaXMub2Zmc2V0PTAsdGhpc30saW5wdXQ6ZnVuY3Rpb24oKXt2YXIgUj10aGlzLl9pbnB1dFswXTt0aGlzLnl5dGV4dCs9Uix0aGlzLnl5bGVuZysrLHRoaXMub2Zmc2V0KyssdGhpcy5tYXRjaCs9Uix0aGlzLm1hdGNoZWQrPVI7dmFyIEE9Ui5tYXRjaCgvKD86XHJcbj98XG4pLiovZyk7cmV0dXJuIEE/KHRoaXMueXlsaW5lbm8rKyx0aGlzLnl5bGxvYy5sYXN0X2xpbmUrKyk6dGhpcy55eWxsb2MubGFzdF9jb2x1bW4rKyx0aGlzLm9wdGlvbnMucmFuZ2VzJiZ0aGlzLnl5bGxvYy5yYW5nZVsxXSsrLHRoaXMuX2lucHV0PXRoaXMuX2lucHV0LnNsaWNlKDEpLFJ9LHVucHV0OmZ1bmN0aW9uKFIpe3ZhciBBPVIubGVuZ3RoLEw9Ui5zcGxpdCgvKD86XHJcbj98XG4pL2cpO3RoaXMuX2lucHV0PVIrdGhpcy5faW5wdXQsdGhpcy55eXRleHQ9dGhpcy55eXRleHQuc3Vic3RyKDAsdGhpcy55eXRleHQubGVuZ3RoLUEpLHRoaXMub2Zmc2V0LT1BO3ZhciB2PXRoaXMubWF0Y2guc3BsaXQoLyg/OlxyXG4/fFxuKS9nKTt0aGlzLm1hdGNoPXRoaXMubWF0Y2guc3Vic3RyKDAsdGhpcy5tYXRjaC5sZW5ndGgtMSksdGhpcy5tYXRjaGVkPXRoaXMubWF0Y2hlZC5zdWJzdHIoMCx0aGlzLm1hdGNoZWQubGVuZ3RoLTEpLEwubGVuZ3RoLTEmJih0aGlzLnl5bGluZW5vLT1MLmxlbmd0aC0xKTt2YXIgQj10aGlzLnl5bGxvYy5yYW5nZTtyZXR1cm4gdGhpcy55eWxsb2M9e2ZpcnN0X2xpbmU6dGhpcy55eWxsb2MuZmlyc3RfbGluZSxsYXN0X2xpbmU6dGhpcy55eWxpbmVubysxLGZpcnN0X2NvbHVtbjp0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4sbGFzdF9jb2x1bW46TD8oTC5sZW5ndGg9PT12Lmxlbmd0aD90aGlzLnl5bGxvYy5maXJzdF9jb2x1bW46MCkrdlt2Lmxlbmd0aC1MLmxlbmd0aF0ubGVuZ3RoLUxbMF0ubGVuZ3RoOnRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbi1BfSx0aGlzLm9wdGlvbnMucmFuZ2VzJiYodGhpcy55eWxsb2MucmFuZ2U9W0JbMF0sQlswXSt0aGlzLnl5bGVuZy1BXSksdGhpcy55eWxlbmc9dGhpcy55eXRleHQubGVuZ3RoLHRoaXN9LG1vcmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbW9yZT0hMCx0aGlzfSxyZWplY3Q6ZnVuY3Rpb24oKXtpZih0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyKXRoaXMuX2JhY2t0cmFjaz0hMDtlbHNlIHJldHVybiB0aGlzLnBhcnNlRXJyb3IoIkxleGljYWwgZXJyb3Igb24gbGluZSAiKyh0aGlzLnl5bGluZW5vKzEpK2AuIFlvdSBjYW4gb25seSBpbnZva2UgcmVqZWN0KCkgaW4gdGhlIGxleGVyIHdoZW4gdGhlIGxleGVyIGlzIG9mIHRoZSBiYWNrdHJhY2tpbmcgcGVyc3Vhc2lvbiAob3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIgPSB0cnVlKS4KYCt0aGlzLnNob3dQb3NpdGlvbigpLHt0ZXh0OiIiLHRva2VuOm51bGwsbGluZTp0aGlzLnl5bGluZW5vfSk7cmV0dXJuIHRoaXN9LGxlc3M6ZnVuY3Rpb24oUil7dGhpcy51bnB1dCh0aGlzLm1hdGNoLnNsaWNlKFIpKX0scGFzdElucHV0OmZ1bmN0aW9uKCl7dmFyIFI9dGhpcy5tYXRjaGVkLnN1YnN0cigwLHRoaXMubWF0Y2hlZC5sZW5ndGgtdGhpcy5tYXRjaC5sZW5ndGgpO3JldHVybihSLmxlbmd0aD4yMD8iLi4uIjoiIikrUi5zdWJzdHIoLTIwKS5yZXBsYWNlKC9cbi9nLCIiKX0sdXBjb21pbmdJbnB1dDpmdW5jdGlvbigpe3ZhciBSPXRoaXMubWF0Y2g7cmV0dXJuIFIubGVuZ3RoPDIwJiYoUis9dGhpcy5faW5wdXQuc3Vic3RyKDAsMjAtUi5sZW5ndGgpKSwoUi5zdWJzdHIoMCwyMCkrKFIubGVuZ3RoPjIwPyIuLi4iOiIiKSkucmVwbGFjZSgvXG4vZywiIil9LHNob3dQb3NpdGlvbjpmdW5jdGlvbigpe3ZhciBSPXRoaXMucGFzdElucHV0KCksQT1uZXcgQXJyYXkoUi5sZW5ndGgrMSkuam9pbigiLSIpO3JldHVybiBSK3RoaXMudXBjb21pbmdJbnB1dCgpK2AKYCtBKyJeIn0sdGVzdF9tYXRjaDpmdW5jdGlvbihSLEEpe3ZhciBMLHYsQjtpZih0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyJiYoQj17eXlsaW5lbm86dGhpcy55eWxpbmVubyx5eWxsb2M6e2ZpcnN0X2xpbmU6dGhpcy55eWxsb2MuZmlyc3RfbGluZSxsYXN0X2xpbmU6dGhpcy5sYXN0X2xpbmUsZmlyc3RfY29sdW1uOnRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbixsYXN0X2NvbHVtbjp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbn0seXl0ZXh0OnRoaXMueXl0ZXh0LG1hdGNoOnRoaXMubWF0Y2gsbWF0Y2hlczp0aGlzLm1hdGNoZXMsbWF0Y2hlZDp0aGlzLm1hdGNoZWQseXlsZW5nOnRoaXMueXlsZW5nLG9mZnNldDp0aGlzLm9mZnNldCxfbW9yZTp0aGlzLl9tb3JlLF9pbnB1dDp0aGlzLl9pbnB1dCx5eTp0aGlzLnl5LGNvbmRpdGlvblN0YWNrOnRoaXMuY29uZGl0aW9uU3RhY2suc2xpY2UoMCksZG9uZTp0aGlzLmRvbmV9LHRoaXMub3B0aW9ucy5yYW5nZXMmJihCLnl5bGxvYy5yYW5nZT10aGlzLnl5bGxvYy5yYW5nZS5zbGljZSgwKSkpLHY9UlswXS5tYXRjaCgvKD86XHJcbj98XG4pLiovZyksdiYmKHRoaXMueXlsaW5lbm8rPXYubGVuZ3RoKSx0aGlzLnl5bGxvYz17Zmlyc3RfbGluZTp0aGlzLnl5bGxvYy5sYXN0X2xpbmUsbGFzdF9saW5lOnRoaXMueXlsaW5lbm8rMSxmaXJzdF9jb2x1bW46dGhpcy55eWxsb2MubGFzdF9jb2x1bW4sbGFzdF9jb2x1bW46dj92W3YubGVuZ3RoLTFdLmxlbmd0aC12W3YubGVuZ3RoLTFdLm1hdGNoKC9ccj9cbj8vKVswXS5sZW5ndGg6dGhpcy55eWxsb2MubGFzdF9jb2x1bW4rUlswXS5sZW5ndGh9LHRoaXMueXl0ZXh0Kz1SWzBdLHRoaXMubWF0Y2grPVJbMF0sdGhpcy5tYXRjaGVzPVIsdGhpcy55eWxlbmc9dGhpcy55eXRleHQubGVuZ3RoLHRoaXMub3B0aW9ucy5yYW5nZXMmJih0aGlzLnl5bGxvYy5yYW5nZT1bdGhpcy5vZmZzZXQsdGhpcy5vZmZzZXQrPXRoaXMueXlsZW5nXSksdGhpcy5fbW9yZT0hMSx0aGlzLl9iYWNrdHJhY2s9ITEsdGhpcy5faW5wdXQ9dGhpcy5faW5wdXQuc2xpY2UoUlswXS5sZW5ndGgpLHRoaXMubWF0Y2hlZCs9UlswXSxMPXRoaXMucGVyZm9ybUFjdGlvbi5jYWxsKHRoaXMsdGhpcy55eSx0aGlzLEEsdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXSksdGhpcy5kb25lJiZ0aGlzLl9pbnB1dCYmKHRoaXMuZG9uZT0hMSksTClyZXR1cm4gTDtpZih0aGlzLl9iYWNrdHJhY2spe2Zvcih2YXIgdyBpbiBCKXRoaXNbd109Qlt3XTtyZXR1cm4hMX1yZXR1cm4hMX0sbmV4dDpmdW5jdGlvbigpe2lmKHRoaXMuZG9uZSlyZXR1cm4gdGhpcy5FT0Y7dGhpcy5faW5wdXR8fCh0aGlzLmRvbmU9ITApO3ZhciBSLEEsTCx2O3RoaXMuX21vcmV8fCh0aGlzLnl5dGV4dD0iIix0aGlzLm1hdGNoPSIiKTtmb3IodmFyIEI9dGhpcy5fY3VycmVudFJ1bGVzKCksdz0wO3c8Qi5sZW5ndGg7dysrKWlmKEw9dGhpcy5faW5wdXQubWF0Y2godGhpcy5ydWxlc1tCW3ddXSksTCYmKCFBfHxMWzBdLmxlbmd0aD5BWzBdLmxlbmd0aCkpe2lmKEE9TCx2PXcsdGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlcil7aWYoUj10aGlzLnRlc3RfbWF0Y2goTCxCW3ddKSxSIT09ITEpcmV0dXJuIFI7aWYodGhpcy5fYmFja3RyYWNrKXtBPSExO2NvbnRpbnVlfWVsc2UgcmV0dXJuITF9ZWxzZSBpZighdGhpcy5vcHRpb25zLmZsZXgpYnJlYWt9cmV0dXJuIEE/KFI9dGhpcy50ZXN0X21hdGNoKEEsQlt2XSksUiE9PSExP1I6ITEpOnRoaXMuX2lucHV0PT09IiI/dGhpcy5FT0Y6dGhpcy5wYXJzZUVycm9yKCJMZXhpY2FsIGVycm9yIG9uIGxpbmUgIisodGhpcy55eWxpbmVubysxKStgLiBVbnJlY29nbml6ZWQgdGV4dC4KYCt0aGlzLnNob3dQb3NpdGlvbigpLHt0ZXh0OiIiLHRva2VuOm51bGwsbGluZTp0aGlzLnl5bGluZW5vfSl9LGxleDpmdW5jdGlvbigpe3ZhciBBPXRoaXMubmV4dCgpO3JldHVybiBBfHx0aGlzLmxleCgpfSxiZWdpbjpmdW5jdGlvbihBKXt0aGlzLmNvbmRpdGlvblN0YWNrLnB1c2goQSl9LHBvcFN0YXRlOmZ1bmN0aW9uKCl7dmFyIEE9dGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMTtyZXR1cm4gQT4wP3RoaXMuY29uZGl0aW9uU3RhY2sucG9wKCk6dGhpcy5jb25kaXRpb25TdGFja1swXX0sX2N1cnJlbnRSdWxlczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCYmdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXT90aGlzLmNvbmRpdGlvbnNbdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXV0ucnVsZXM6dGhpcy5jb25kaXRpb25zLklOSVRJQUwucnVsZXN9LHRvcFN0YXRlOmZ1bmN0aW9uKEEpe3JldHVybiBBPXRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTEtTWF0aC5hYnMoQXx8MCksQT49MD90aGlzLmNvbmRpdGlvblN0YWNrW0FdOiJJTklUSUFMIn0scHVzaFN0YXRlOmZ1bmN0aW9uKEEpe3RoaXMuYmVnaW4oQSl9LHN0YXRlU3RhY2tTaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RofSxvcHRpb25zOnsiY2FzZS1pbnNlbnNpdGl2ZSI6ITB9LHBlcmZvcm1BY3Rpb246ZnVuY3Rpb24oQSxMLHYsQil7c3dpdGNoKHYpe2Nhc2UgMDpyZXR1cm4gdGhpcy5iZWdpbigib3Blbl9kaXJlY3RpdmUiKSwzOTtjYXNlIDE6cmV0dXJuIHRoaXMuYmVnaW4oInR5cGVfZGlyZWN0aXZlIiksNDA7Y2FzZSAyOnJldHVybiB0aGlzLnBvcFN0YXRlKCksdGhpcy5iZWdpbigiYXJnX2RpcmVjdGl2ZSIpLDMyO2Nhc2UgMzpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLHRoaXMucG9wU3RhdGUoKSw0MjtjYXNlIDQ6cmV0dXJuIDQxO2Nhc2UgNTpyZXR1cm4gdGhpcy5iZWdpbigiYWNjX3RpdGxlIiksMjA7Y2FzZSA2OnJldHVybiB0aGlzLnBvcFN0YXRlKCksImFjY190aXRsZV92YWx1ZSI7Y2FzZSA3OnJldHVybiB0aGlzLmJlZ2luKCJhY2NfZGVzY3IiKSwyMjtjYXNlIDg6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSwiYWNjX2Rlc2NyX3ZhbHVlIjtjYXNlIDk6dGhpcy5iZWdpbigiYWNjX2Rlc2NyX211bHRpbGluZSIpO2JyZWFrO2Nhc2UgMTA6dGhpcy5wb3BTdGF0ZSgpO2JyZWFrO2Nhc2UgMTE6cmV0dXJuImFjY19kZXNjcl9tdWx0aWxpbmVfdmFsdWUiO2Nhc2UgMTI6YnJlYWs7Y2FzZSAxMzpicmVhaztjYXNlIDE0OmJyZWFrO2Nhc2UgMTU6cmV0dXJuIDExO2Nhc2UgMTY6YnJlYWs7Y2FzZSAxNzpicmVhaztjYXNlIDE4OmJyZWFrO2Nhc2UgMTk6dGhpcy5iZWdpbigiaHJlZiIpO2JyZWFrO2Nhc2UgMjA6dGhpcy5wb3BTdGF0ZSgpO2JyZWFrO2Nhc2UgMjE6cmV0dXJuIDM3O2Nhc2UgMjI6dGhpcy5iZWdpbigiY2FsbGJhY2tuYW1lIik7YnJlYWs7Y2FzZSAyMzp0aGlzLnBvcFN0YXRlKCk7YnJlYWs7Y2FzZSAyNDp0aGlzLnBvcFN0YXRlKCksdGhpcy5iZWdpbigiY2FsbGJhY2thcmdzIik7YnJlYWs7Y2FzZSAyNTpyZXR1cm4gMzU7Y2FzZSAyNjp0aGlzLnBvcFN0YXRlKCk7YnJlYWs7Y2FzZSAyNzpyZXR1cm4gMzY7Y2FzZSAyODp0aGlzLmJlZ2luKCJjbGljayIpO2JyZWFrO2Nhc2UgMjk6dGhpcy5wb3BTdGF0ZSgpO2JyZWFrO2Nhc2UgMzA6cmV0dXJuIDM0O2Nhc2UgMzE6cmV0dXJuIDU7Y2FzZSAzMjpyZXR1cm4gMTI7Y2FzZSAzMzpyZXR1cm4gMTM7Y2FzZSAzNDpyZXR1cm4gMTQ7Y2FzZSAzNTpyZXR1cm4gMTU7Y2FzZSAzNjpyZXR1cm4gMTc7Y2FzZSAzNzpyZXR1cm4gMTY7Y2FzZSAzODpyZXR1cm4gMTg7Y2FzZSAzOTpyZXR1cm4iZGF0ZSI7Y2FzZSA0MDpyZXR1cm4gMTk7Y2FzZSA0MTpyZXR1cm4iYWNjRGVzY3JpcHRpb24iO2Nhc2UgNDI6cmV0dXJuIDI1O2Nhc2UgNDM6cmV0dXJuIDI3O2Nhc2UgNDQ6cmV0dXJuIDI4O2Nhc2UgNDU6cmV0dXJuIDMyO2Nhc2UgNDY6cmV0dXJuIDc7Y2FzZSA0NzpyZXR1cm4iSU5WQUxJRCJ9fSxydWxlczpbL14oPzolJVx7KS9pLC9eKD86KCg/Oig/IVx9JSUpW146Ll0pKikpL2ksL14oPzo6KS9pLC9eKD86XH0lJSkvaSwvXig/OigoPzooPyFcfSUlKS58XG4pKikpL2ksL14oPzphY2NUaXRsZVxzKjpccyopL2ksL14oPzooPyFcbnx8KSpbXlxuXSopL2ksL14oPzphY2NEZXNjclxzKjpccyopL2ksL14oPzooPyFcbnx8KSpbXlxuXSopL2ksL14oPzphY2NEZXNjclxzKlx7XHMqKS9pLC9eKD86W1x9XSkvaSwvXig/OlteXH1dKikvaSwvXig/OiUlKD8hXHspKlteXG5dKikvaSwvXig/OlteXH1dJSUqW15cbl0qKS9pLC9eKD86JSUqW15cbl0qW1xuXSopL2ksL14oPzpbXG5dKykvaSwvXig/OlxzKykvaSwvXig/OiNbXlxuXSopL2ksL14oPzolW15cbl0qKS9pLC9eKD86aHJlZltcc10rWyJdKS9pLC9eKD86WyJdKS9pLC9eKD86W14iXSopL2ksL14oPzpjYWxsW1xzXSspL2ksL14oPzpcKFtcc10qXCkpL2ksL14oPzpcKCkvaSwvXig/OlteKF0qKS9pLC9eKD86XCkpL2ksL14oPzpbXildKikvaSwvXig/OmNsaWNrW1xzXSspL2ksL14oPzpbXHNcbl0pL2ksL14oPzpbXlxzXG5dKikvaSwvXig/OmdhbnR0XGIpL2ksL14oPzpkYXRlRm9ybWF0XHNbXiNcbjtdKykvaSwvXig/OmluY2x1c2l2ZUVuZERhdGVzXGIpL2ksL14oPzp0b3BBeGlzXGIpL2ksL14oPzpheGlzRm9ybWF0XHNbXiNcbjtdKykvaSwvXig/OmluY2x1ZGVzXHNbXiNcbjtdKykvaSwvXig/OmV4Y2x1ZGVzXHNbXiNcbjtdKykvaSwvXig/OnRvZGF5TWFya2VyXHNbXlxuO10rKS9pLC9eKD86XGRcZFxkXGQtXGRcZC1cZFxkXGIpL2ksL14oPzp0aXRsZVxzW14jXG47XSspL2ksL14oPzphY2NEZXNjcmlwdGlvblxzW14jXG47XSspL2ksL14oPzpzZWN0aW9uXHNbXiM6XG47XSspL2ksL14oPzpbXiM6XG47XSspL2ksL14oPzo6W14jXG47XSspL2ksL14oPzo6KS9pLC9eKD86JCkvaSwvXig/Oi4pL2ldLGNvbmRpdGlvbnM6e2FjY19kZXNjcl9tdWx0aWxpbmU6e3J1bGVzOlsxMCwxMV0saW5jbHVzaXZlOiExfSxhY2NfZGVzY3I6e3J1bGVzOls4XSxpbmNsdXNpdmU6ITF9LGFjY190aXRsZTp7cnVsZXM6WzZdLGluY2x1c2l2ZTohMX0sY2xvc2VfZGlyZWN0aXZlOntydWxlczpbXSxpbmNsdXNpdmU6ITF9LGFyZ19kaXJlY3RpdmU6e3J1bGVzOlszLDRdLGluY2x1c2l2ZTohMX0sdHlwZV9kaXJlY3RpdmU6e3J1bGVzOlsyLDNdLGluY2x1c2l2ZTohMX0sb3Blbl9kaXJlY3RpdmU6e3J1bGVzOlsxXSxpbmNsdXNpdmU6ITF9LGNhbGxiYWNrYXJnczp7cnVsZXM6WzI2LDI3XSxpbmNsdXNpdmU6ITF9LGNhbGxiYWNrbmFtZTp7cnVsZXM6WzIzLDI0LDI1XSxpbmNsdXNpdmU6ITF9LGhyZWY6e3J1bGVzOlsyMCwyMV0saW5jbHVzaXZlOiExfSxjbGljazp7cnVsZXM6WzI5LDMwXSxpbmNsdXNpdmU6ITF9LElOSVRJQUw6e3J1bGVzOlswLDUsNyw5LDEyLDEzLDE0LDE1LDE2LDE3LDE4LDE5LDIyLDI4LDMxLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQyLDQzLDQ0LDQ1LDQ2LDQ3XSxpbmNsdXNpdmU6ITB9fX07cmV0dXJuIFN9KCk7VC5sZXhlcj1DO2Z1bmN0aW9uIE0oKXt0aGlzLnl5PXt9fXJldHVybiBNLnByb3RvdHlwZT1ULFQuUGFyc2VyPU0sbmV3IE19KCk7TTQucGFyc2VyPU00O2NvbnN0IFNudD10PT50Lm1hdGNoKC9eXHMqZ2FudHQvKSE9PW51bGw7bGV0IHppPSIiLEw0PSIiLFI0PSIiLGF1PVtdLHN1PVtdLEk0PXt9LE40PVtdLGEwPVtdLHNsPSIiO2NvbnN0ICRNPVsiYWN0aXZlIiwiZG9uZSIsImNyaXQiLCJtaWxlc3RvbmUiXTtsZXQgczA9W10sb3U9ITEsQjQ9ITEsRDQ9MDtjb25zdCBBbnQ9ZnVuY3Rpb24odCxlLHIpe1hlLnBhcnNlRGlyZWN0aXZlKHRoaXMsdCxlLHIpfSxNbnQ9ZnVuY3Rpb24oKXtOND1bXSxhMD1bXSxzbD0iIixzMD1bXSxvMD0wLEY0PXZvaWQgMCxsMD12b2lkIDAseXI9W10semk9IiIsTDQ9IiIsUjQ9IiIsYXU9W10sc3U9W10sb3U9ITEsQjQ9ITEsRDQ9MCxJND17fSxjaSgpfSxMbnQ9ZnVuY3Rpb24odCl7TDQ9dH0sUm50PWZ1bmN0aW9uKCl7cmV0dXJuIEw0fSxJbnQ9ZnVuY3Rpb24odCl7UjQ9dH0sTm50PWZ1bmN0aW9uKCl7cmV0dXJuIFI0fSxCbnQ9ZnVuY3Rpb24odCl7emk9dH0sRG50PWZ1bmN0aW9uKCl7b3U9ITB9LE9udD1mdW5jdGlvbigpe3JldHVybiBvdX0sRm50PWZ1bmN0aW9uKCl7QjQ9ITB9LFBudD1mdW5jdGlvbigpe3JldHVybiBCNH0scW50PWZ1bmN0aW9uKCl7cmV0dXJuIHppfSxWbnQ9ZnVuY3Rpb24odCl7YXU9dC50b0xvd2VyQ2FzZSgpLnNwbGl0KC9bXHMsXSsvKX0sem50PWZ1bmN0aW9uKCl7cmV0dXJuIGF1fSxZbnQ9ZnVuY3Rpb24odCl7c3U9dC50b0xvd2VyQ2FzZSgpLnNwbGl0KC9bXHMsXSsvKX0sVW50PWZ1bmN0aW9uKCl7cmV0dXJuIHN1fSxXbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gSTR9LEhudD1mdW5jdGlvbih0KXtzbD10LE40LnB1c2godCl9LEdudD1mdW5jdGlvbigpe3JldHVybiBONH0sam50PWZ1bmN0aW9uKCl7bGV0IHQ9dEwoKTtjb25zdCBlPTEwO2xldCByPTA7Zm9yKDshdCYmcjxlOyl0PXRMKCkscisrO3JldHVybiBhMD15cixhMH0sWE09ZnVuY3Rpb24odCxlLHIsbil7cmV0dXJuIG4uaW5kZXhPZih0LmZvcm1hdChlLnRyaW0oKSkpPj0wPyExOnQuaXNvV2Vla2RheSgpPj02JiZyLmluZGV4T2YoIndlZWtlbmRzIik+PTB8fHIuaW5kZXhPZih0LmZvcm1hdCgiZGRkZCIpLnRvTG93ZXJDYXNlKCkpPj0wPyEwOnIuaW5kZXhPZih0LmZvcm1hdChlLnRyaW0oKSkpPj0wfSxLTT1mdW5jdGlvbih0LGUscixuKXtpZighci5sZW5ndGh8fHQubWFudWFsRW5kVGltZSlyZXR1cm47bGV0IGk9WG4odC5zdGFydFRpbWUsZSwhMCk7aS5hZGQoMSwiZCIpO2xldCBhPVhuKHQuZW5kVGltZSxlLCEwKSxzPSRudChpLGEsZSxyLG4pO3QuZW5kVGltZT1hLnRvRGF0ZSgpLHQucmVuZGVyRW5kVGltZT1zfSwkbnQ9ZnVuY3Rpb24odCxlLHIsbixpKXtsZXQgYT0hMSxzPW51bGw7Zm9yKDt0PD1lOylhfHwocz1lLnRvRGF0ZSgpKSxhPVhNKHQscixuLGkpLGEmJmUuYWRkKDEsImQiKSx0LmFkZCgxLCJkIik7cmV0dXJuIHN9LE80PWZ1bmN0aW9uKHQsZSxyKXtyPXIudHJpbSgpO2NvbnN0IGk9L15hZnRlclxzKyhbXGRcdy0gXSspLy5leGVjKHIudHJpbSgpKTtpZihpIT09bnVsbCl7bGV0IHM9bnVsbDtpZihpWzFdLnNwbGl0KCIgIikuZm9yRWFjaChmdW5jdGlvbihvKXtsZXQgbD1sbChvKTt0eXBlb2YgbDwidSImJihzP2wuZW5kVGltZT5zLmVuZFRpbWUmJihzPWwpOnM9bCl9KSxzKXJldHVybiBzLmVuZFRpbWU7e2NvbnN0IG89bmV3IERhdGU7cmV0dXJuIG8uc2V0SG91cnMoMCwwLDAsMCksb319bGV0IGE9WG4ocixlLnRyaW0oKSwhMCk7aWYoYS5pc1ZhbGlkKCkpcmV0dXJuIGEudG9EYXRlKCk7e0guZGVidWcoIkludmFsaWQgZGF0ZToiK3IpLEguZGVidWcoIldpdGggZGF0ZSBmb3JtYXQ6IitlLnRyaW0oKSk7Y29uc3Qgcz1uZXcgRGF0ZShyKTtpZih0eXBlb2Ygcz4idSJ8fGlzTmFOKHMuZ2V0VGltZSgpKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgZGF0ZToiK3IpO3JldHVybiBzfX0sWk09ZnVuY3Rpb24odCl7Y29uc3QgZT0vXihcZCsoPzpcLlxkKyk/KShbeU13ZGhtc118bXMpJC8uZXhlYyh0LnRyaW0oKSk7cmV0dXJuIGUhPT1udWxsP1huLmR1cmF0aW9uKE51bWJlci5wYXJzZUZsb2F0KGVbMV0pLGVbMl0pOlhuLmR1cmF0aW9uLmludmFsaWQoKX0sUU09ZnVuY3Rpb24odCxlLHIsbil7bj1ufHwhMSxyPXIudHJpbSgpO2xldCBpPVhuKHIsZS50cmltKCksITApO2lmKGkuaXNWYWxpZCgpKXJldHVybiBuJiZpLmFkZCgxLCJkIiksaS50b0RhdGUoKTtjb25zdCBhPVhuKHQpLHM9Wk0ocik7cmV0dXJuIHMuaXNWYWxpZCgpJiZhLmFkZChzKSxhLnRvRGF0ZSgpfTtsZXQgbzA9MDtjb25zdCBvbD1mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHQ+InUiPyhvMD1vMCsxLCJ0YXNrIitvMCk6dH0sWG50PWZ1bmN0aW9uKHQsZSl7bGV0IHI7ZS5zdWJzdHIoMCwxKT09PSI6Ij9yPWUuc3Vic3RyKDEsZS5sZW5ndGgpOnI9ZTtjb25zdCBuPXIuc3BsaXQoIiwiKSxpPXt9O25MKG4saSwkTSk7Zm9yKGxldCBzPTA7czxuLmxlbmd0aDtzKyspbltzXT1uW3NdLnRyaW0oKTtsZXQgYT0iIjtzd2l0Y2gobi5sZW5ndGgpe2Nhc2UgMTppLmlkPW9sKCksaS5zdGFydFRpbWU9dC5lbmRUaW1lLGE9blswXTticmVhaztjYXNlIDI6aS5pZD1vbCgpLGkuc3RhcnRUaW1lPU80KHZvaWQgMCx6aSxuWzBdKSxhPW5bMV07YnJlYWs7Y2FzZSAzOmkuaWQ9b2woblswXSksaS5zdGFydFRpbWU9TzQodm9pZCAwLHppLG5bMV0pLGE9blsyXTticmVha31yZXR1cm4gYSYmKGkuZW5kVGltZT1RTShpLnN0YXJ0VGltZSx6aSxhLG91KSxpLm1hbnVhbEVuZFRpbWU9WG4oYSwiWVlZWS1NTS1ERCIsITApLmlzVmFsaWQoKSxLTShpLHppLHN1LGF1KSksaX0sS250PWZ1bmN0aW9uKHQsZSl7bGV0IHI7ZS5zdWJzdHIoMCwxKT09PSI6Ij9yPWUuc3Vic3RyKDEsZS5sZW5ndGgpOnI9ZTtjb25zdCBuPXIuc3BsaXQoIiwiKSxpPXt9O25MKG4saSwkTSk7Zm9yKGxldCBhPTA7YTxuLmxlbmd0aDthKyspblthXT1uW2FdLnRyaW0oKTtzd2l0Y2gobi5sZW5ndGgpe2Nhc2UgMTppLmlkPW9sKCksaS5zdGFydFRpbWU9e3R5cGU6InByZXZUYXNrRW5kIixpZDp0fSxpLmVuZFRpbWU9e2RhdGE6blswXX07YnJlYWs7Y2FzZSAyOmkuaWQ9b2woKSxpLnN0YXJ0VGltZT17dHlwZToiZ2V0U3RhcnREYXRlIixzdGFydERhdGE6blswXX0saS5lbmRUaW1lPXtkYXRhOm5bMV19O2JyZWFrO2Nhc2UgMzppLmlkPW9sKG5bMF0pLGkuc3RhcnRUaW1lPXt0eXBlOiJnZXRTdGFydERhdGUiLHN0YXJ0RGF0YTpuWzFdfSxpLmVuZFRpbWU9e2RhdGE6blsyXX07YnJlYWt9cmV0dXJuIGl9O2xldCBGNCxsMCx5cj1bXTtjb25zdCBKTT17fSxabnQ9ZnVuY3Rpb24odCxlKXtjb25zdCByPXtzZWN0aW9uOnNsLHR5cGU6c2wscHJvY2Vzc2VkOiExLG1hbnVhbEVuZFRpbWU6ITEscmVuZGVyRW5kVGltZTpudWxsLHJhdzp7ZGF0YTplfSx0YXNrOnQsY2xhc3NlczpbXX0sbj1LbnQobDAsZSk7ci5yYXcuc3RhcnRUaW1lPW4uc3RhcnRUaW1lLHIucmF3LmVuZFRpbWU9bi5lbmRUaW1lLHIuaWQ9bi5pZCxyLnByZXZUYXNrSWQ9bDAsci5hY3RpdmU9bi5hY3RpdmUsci5kb25lPW4uZG9uZSxyLmNyaXQ9bi5jcml0LHIubWlsZXN0b25lPW4ubWlsZXN0b25lLHIub3JkZXI9RDQsRDQrKztjb25zdCBpPXlyLnB1c2gocik7bDA9ci5pZCxKTVtyLmlkXT1pLTF9LGxsPWZ1bmN0aW9uKHQpe2NvbnN0IGU9Sk1bdF07cmV0dXJuIHlyW2VdfSxRbnQ9ZnVuY3Rpb24odCxlKXtjb25zdCByPXtzZWN0aW9uOnNsLHR5cGU6c2wsZGVzY3JpcHRpb246dCx0YXNrOnQsY2xhc3NlczpbXX0sbj1YbnQoRjQsZSk7ci5zdGFydFRpbWU9bi5zdGFydFRpbWUsci5lbmRUaW1lPW4uZW5kVGltZSxyLmlkPW4uaWQsci5hY3RpdmU9bi5hY3RpdmUsci5kb25lPW4uZG9uZSxyLmNyaXQ9bi5jcml0LHIubWlsZXN0b25lPW4ubWlsZXN0b25lLEY0PXIsYTAucHVzaChyKX0sdEw9ZnVuY3Rpb24oKXtjb25zdCB0PWZ1bmN0aW9uKHIpe2NvbnN0IG49eXJbcl07bGV0IGk9IiI7c3dpdGNoKHlyW3JdLnJhdy5zdGFydFRpbWUudHlwZSl7Y2FzZSJwcmV2VGFza0VuZCI6e2NvbnN0IGE9bGwobi5wcmV2VGFza0lkKTtuLnN0YXJ0VGltZT1hLmVuZFRpbWU7YnJlYWt9Y2FzZSJnZXRTdGFydERhdGUiOmk9TzQodm9pZCAwLHppLHlyW3JdLnJhdy5zdGFydFRpbWUuc3RhcnREYXRhKSxpJiYoeXJbcl0uc3RhcnRUaW1lPWkpO2JyZWFrfXJldHVybiB5cltyXS5zdGFydFRpbWUmJih5cltyXS5lbmRUaW1lPVFNKHlyW3JdLnN0YXJ0VGltZSx6aSx5cltyXS5yYXcuZW5kVGltZS5kYXRhLG91KSx5cltyXS5lbmRUaW1lJiYoeXJbcl0ucHJvY2Vzc2VkPSEwLHlyW3JdLm1hbnVhbEVuZFRpbWU9WG4oeXJbcl0ucmF3LmVuZFRpbWUuZGF0YSwiWVlZWS1NTS1ERCIsITApLmlzVmFsaWQoKSxLTSh5cltyXSx6aSxzdSxhdSkpKSx5cltyXS5wcm9jZXNzZWR9O2xldCBlPSEwO2ZvcihsZXQgcj0wO3I8eXIubGVuZ3RoO3IrKyl0KHIpLGU9ZSYmeXJbcl0ucHJvY2Vzc2VkO3JldHVybiBlfSxKbnQ9ZnVuY3Rpb24odCxlKXtsZXQgcj1lO250KCkuc2VjdXJpdHlMZXZlbCE9PSJsb29zZSImJihyPWtpKGUpKSx0LnNwbGl0KCIsIikuZm9yRWFjaChmdW5jdGlvbihuKXt0eXBlb2YgbGwobik8InUiJiYockwobiwoKT0+e3dpbmRvdy5vcGVuKHIsIl9zZWxmIil9KSxJNFtuXT1yKX0pLGVMKHQsImNsaWNrYWJsZSIpfSxlTD1mdW5jdGlvbih0LGUpe3Quc3BsaXQoIiwiKS5mb3JFYWNoKGZ1bmN0aW9uKHIpe2xldCBuPWxsKHIpO3R5cGVvZiBuPCJ1IiYmbi5jbGFzc2VzLnB1c2goZSl9KX0sdGl0PWZ1bmN0aW9uKHQsZSxyKXtpZihudCgpLnNlY3VyaXR5TGV2ZWwhPT0ibG9vc2UifHx0eXBlb2YgZT4idSIpcmV0dXJuO2xldCBuPVtdO2lmKHR5cGVvZiByPT0ic3RyaW5nIil7bj1yLnNwbGl0KC8sKD89KD86KD86W14iXSoiKXsyfSkqW14iXSokKS8pO2ZvcihsZXQgYT0wO2E8bi5sZW5ndGg7YSsrKXtsZXQgcz1uW2FdLnRyaW0oKTtzLmNoYXJBdCgwKT09PSciJyYmcy5jaGFyQXQocy5sZW5ndGgtMSk9PT0nIicmJihzPXMuc3Vic3RyKDEscy5sZW5ndGgtMikpLG5bYV09c319bi5sZW5ndGg9PT0wJiZuLnB1c2godCksdHlwZW9mIGxsKHQpPCJ1IiYmckwodCwoKT0+e1NlLnJ1bkZ1bmMoZSwuLi5uKX0pfSxyTD1mdW5jdGlvbih0LGUpe3MwLnB1c2goZnVuY3Rpb24oKXtjb25zdCByPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYFtpZD0iJHt0fSJdYCk7ciE9PW51bGwmJnIuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGZ1bmN0aW9uKCl7ZSgpfSl9KSxzMC5wdXNoKGZ1bmN0aW9uKCl7Y29uc3Qgcj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBbaWQ9IiR7dH0tdGV4dCJdYCk7ciE9PW51bGwmJnIuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGZ1bmN0aW9uKCl7ZSgpfSl9KX0sUDQ9e3BhcnNlRGlyZWN0aXZlOkFudCxnZXRDb25maWc6KCk9Pm50KCkuZ2FudHQsY2xlYXI6TW50LHNldERhdGVGb3JtYXQ6Qm50LGdldERhdGVGb3JtYXQ6cW50LGVuYWJsZUluY2x1c2l2ZUVuZERhdGVzOkRudCxlbmREYXRlc0FyZUluY2x1c2l2ZTpPbnQsZW5hYmxlVG9wQXhpczpGbnQsdG9wQXhpc0VuYWJsZWQ6UG50LHNldEF4aXNGb3JtYXQ6TG50LGdldEF4aXNGb3JtYXQ6Um50LHNldFRvZGF5TWFya2VyOkludCxnZXRUb2RheU1hcmtlcjpObnQsc2V0QWNjVGl0bGU6WW4sZ2V0QWNjVGl0bGU6dWksc2V0RGlhZ3JhbVRpdGxlOmMxLGdldERpYWdyYW1UaXRsZTp1MSxzZXRBY2NEZXNjcmlwdGlvbjpoaSxnZXRBY2NEZXNjcmlwdGlvbjpmaSxhZGRTZWN0aW9uOkhudCxnZXRTZWN0aW9uczpHbnQsZ2V0VGFza3M6am50LGFkZFRhc2s6Wm50LGZpbmRUYXNrQnlJZDpsbCxhZGRUYXNrT3JnOlFudCxzZXRJbmNsdWRlczpWbnQsZ2V0SW5jbHVkZXM6em50LHNldEV4Y2x1ZGVzOlludCxnZXRFeGNsdWRlczpVbnQsc2V0Q2xpY2tFdmVudDpmdW5jdGlvbih0LGUscil7dC5zcGxpdCgiLCIpLmZvckVhY2goZnVuY3Rpb24obil7dGl0KG4sZSxyKX0pLGVMKHQsImNsaWNrYWJsZSIpfSxzZXRMaW5rOkpudCxnZXRMaW5rczpXbnQsYmluZEZ1bmN0aW9uczpmdW5jdGlvbih0KXtzMC5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UodCl9KX0scGFyc2VEdXJhdGlvbjpaTSxpc0ludmFsaWREYXRlOlhNfTtmdW5jdGlvbiBuTCh0LGUscil7bGV0IG49ITA7Zm9yKDtuOyluPSExLHIuZm9yRWFjaChmdW5jdGlvbihpKXtjb25zdCBhPSJeXFxzKiIraSsiXFxzKiQiLHM9bmV3IFJlZ0V4cChhKTt0WzBdLm1hdGNoKHMpJiYoZVtpXT0hMCx0LnNoaWZ0KDEpLG49ITApfSl9Y29uc3QgZWl0PWZ1bmN0aW9uKCl7SC5kZWJ1ZygiU29tZXRoaW5nIGlzIGNhbGxpbmcsIHNldENvbmYsIHJlbW92ZSB0aGUgY2FsbCIpfTtsZXQgcGE7Y29uc3Qgcml0PXtzZXRDb25mOmVpdCxkcmF3OmZ1bmN0aW9uKHQsZSxyLG4pe2NvbnN0IGk9bnQoKS5nYW50dCxhPW50KCkuc2VjdXJpdHlMZXZlbDtsZXQgczthPT09InNhbmRib3giJiYocz1TdCgiI2kiK2UpKTtjb25zdCBvPVN0KGE9PT0ic2FuZGJveCI/cy5ub2RlcygpWzBdLmNvbnRlbnREb2N1bWVudC5ib2R5OiJib2R5IiksbD1hPT09InNhbmRib3giP3Mubm9kZXMoKVswXS5jb250ZW50RG9jdW1lbnQ6ZG9jdW1lbnQsdT1sLmdldEVsZW1lbnRCeUlkKGUpO3BhPXUucGFyZW50RWxlbWVudC5vZmZzZXRXaWR0aCx0eXBlb2YgcGE+InUiJiYocGE9MTIwMCksdHlwZW9mIGkudXNlV2lkdGg8InUiJiYocGE9aS51c2VXaWR0aCk7Y29uc3QgaD1uLmRiLmdldFRhc2tzKCksZD1oLmxlbmd0aCooaS5iYXJIZWlnaHQraS5iYXJHYXApKzIqaS50b3BQYWRkaW5nO3Uuc2V0QXR0cmlidXRlKCJ2aWV3Qm94IiwiMCAwICIrcGErIiAiK2QpO2NvbnN0IGY9by5zZWxlY3QoYFtpZD0iJHtlfSJdYCkscD1YOCgpLmRvbWFpbihbVGwoaCxmdW5jdGlvbihMKXtyZXR1cm4gTC5zdGFydFRpbWV9KSxsbyhoLGZ1bmN0aW9uKEwpe3JldHVybiBMLmVuZFRpbWV9KV0pLnJhbmdlUm91bmQoWzAscGEtaS5sZWZ0UGFkZGluZy1pLnJpZ2h0UGFkZGluZ10pO2xldCBtPVtdO2ZvcihsZXQgTD0wO0w8aC5sZW5ndGg7TCsrKW0ucHVzaChoW0xdLnR5cGUpO2NvbnN0IF89bTttPVMobSk7ZnVuY3Rpb24geShMLHYpe2NvbnN0IEI9TC5zdGFydFRpbWUsdz12LnN0YXJ0VGltZTtsZXQgRD0wO3JldHVybiBCPnc/RD0xOkI8dyYmKEQ9LTEpLER9aC5zb3J0KHkpLGIoaCxwYSxkKSxsaShmLGQscGEsaS51c2VNYXhXaWR0aCksZi5hcHBlbmQoInRleHQiKS50ZXh0KG4uZGIuZ2V0RGlhZ3JhbVRpdGxlKCkpLmF0dHIoIngiLHBhLzIpLmF0dHIoInkiLGkudGl0bGVUb3BNYXJnaW4pLmF0dHIoImNsYXNzIiwidGl0bGVUZXh0IiksYm4obi5kYixmLGUpO2Z1bmN0aW9uIGIoTCx2LEIpe2NvbnN0IHc9aS5iYXJIZWlnaHQsRD13K2kuYmFyR2FwLE49aS50b3BQYWRkaW5nLHo9aS5sZWZ0UGFkZGluZyxYPXNwKCkuZG9tYWluKFswLG0ubGVuZ3RoXSkucmFuZ2UoWyIjMDBCOUZBIiwiI0Y5NTAwMiJdKS5pbnRlcnBvbGF0ZSgkNSk7ayhELE4seix2LEIsTCxuLmRiLmdldEV4Y2x1ZGVzKCksbi5kYi5nZXRJbmNsdWRlcygpKSxUKHosTix2LEIpLHgoTCxELE4seix3LFgsdiksQyhELE4pLE0oeixOLHYsQil9ZnVuY3Rpb24geChMLHYsQix3LEQsTix6KXtmLmFwcGVuZCgiZyIpLnNlbGVjdEFsbCgicmVjdCIpLmRhdGEoTCkuZW50ZXIoKS5hcHBlbmQoInJlY3QiKS5hdHRyKCJ4IiwwKS5hdHRyKCJ5IixmdW5jdGlvbihZLCQpe3JldHVybiAkPVkub3JkZXIsJCp2K0ItMn0pLmF0dHIoIndpZHRoIixmdW5jdGlvbigpe3JldHVybiB6LWkucmlnaHRQYWRkaW5nLzJ9KS5hdHRyKCJoZWlnaHQiLHYpLmF0dHIoImNsYXNzIixmdW5jdGlvbihZKXtmb3IobGV0ICQ9MDskPG0ubGVuZ3RoOyQrKylpZihZLnR5cGU9PT1tWyRdKXJldHVybiJzZWN0aW9uIHNlY3Rpb24iKyQlaS5udW1iZXJTZWN0aW9uU3R5bGVzO3JldHVybiJzZWN0aW9uIHNlY3Rpb24wIn0pO2NvbnN0IFg9Zi5hcHBlbmQoImciKS5zZWxlY3RBbGwoInJlY3QiKS5kYXRhKEwpLmVudGVyKCksY3Q9bi5kYi5nZXRMaW5rcygpO2lmKFguYXBwZW5kKCJyZWN0IikuYXR0cigiaWQiLGZ1bmN0aW9uKFkpe3JldHVybiBZLmlkfSkuYXR0cigicngiLDMpLmF0dHIoInJ5IiwzKS5hdHRyKCJ4IixmdW5jdGlvbihZKXtyZXR1cm4gWS5taWxlc3RvbmU/cChZLnN0YXJ0VGltZSkrdysuNSoocChZLmVuZFRpbWUpLXAoWS5zdGFydFRpbWUpKS0uNSpEOnAoWS5zdGFydFRpbWUpK3d9KS5hdHRyKCJ5IixmdW5jdGlvbihZLCQpe3JldHVybiAkPVkub3JkZXIsJCp2K0J9KS5hdHRyKCJ3aWR0aCIsZnVuY3Rpb24oWSl7cmV0dXJuIFkubWlsZXN0b25lP0Q6cChZLnJlbmRlckVuZFRpbWV8fFkuZW5kVGltZSktcChZLnN0YXJ0VGltZSl9KS5hdHRyKCJoZWlnaHQiLEQpLmF0dHIoInRyYW5zZm9ybS1vcmlnaW4iLGZ1bmN0aW9uKFksJCl7cmV0dXJuICQ9WS5vcmRlciwocChZLnN0YXJ0VGltZSkrdysuNSoocChZLmVuZFRpbWUpLXAoWS5zdGFydFRpbWUpKSkudG9TdHJpbmcoKSsicHggIisoJCp2K0IrLjUqRCkudG9TdHJpbmcoKSsicHgifSkuYXR0cigiY2xhc3MiLGZ1bmN0aW9uKFkpe2NvbnN0ICQ9InRhc2siO2xldCBsdD0iIjtZLmNsYXNzZXMubGVuZ3RoPjAmJihsdD1ZLmNsYXNzZXMuam9pbigiICIpKTtsZXQgdXQ9MDtmb3IobGV0IHR0PTA7dHQ8bS5sZW5ndGg7dHQrKylZLnR5cGU9PT1tW3R0XSYmKHV0PXR0JWkubnVtYmVyU2VjdGlvblN0eWxlcyk7bGV0IFc9IiI7cmV0dXJuIFkuYWN0aXZlP1kuY3JpdD9XKz0iIGFjdGl2ZUNyaXQiOlc9IiBhY3RpdmUiOlkuZG9uZT9ZLmNyaXQ/Vz0iIGRvbmVDcml0IjpXPSIgZG9uZSI6WS5jcml0JiYoVys9IiBjcml0IiksVy5sZW5ndGg9PT0wJiYoVz0iIHRhc2siKSxZLm1pbGVzdG9uZSYmKFc9IiBtaWxlc3RvbmUgIitXKSxXKz11dCxXKz0iICIrbHQsJCtXfSksWC5hcHBlbmQoInRleHQiKS5hdHRyKCJpZCIsZnVuY3Rpb24oWSl7cmV0dXJuIFkuaWQrIi10ZXh0In0pLnRleHQoZnVuY3Rpb24oWSl7cmV0dXJuIFkudGFza30pLmF0dHIoImZvbnQtc2l6ZSIsaS5mb250U2l6ZSkuYXR0cigieCIsZnVuY3Rpb24oWSl7bGV0ICQ9cChZLnN0YXJ0VGltZSksbHQ9cChZLnJlbmRlckVuZFRpbWV8fFkuZW5kVGltZSk7WS5taWxlc3RvbmUmJigkKz0uNSoocChZLmVuZFRpbWUpLXAoWS5zdGFydFRpbWUpKS0uNSpEKSxZLm1pbGVzdG9uZSYmKGx0PSQrRCk7Y29uc3QgdXQ9dGhpcy5nZXRCQm94KCkud2lkdGg7cmV0dXJuIHV0Pmx0LSQ/bHQrdXQrMS41KmkubGVmdFBhZGRpbmc+ej8kK3ctNTpsdCt3KzU6KGx0LSQpLzIrJCt3fSkuYXR0cigieSIsZnVuY3Rpb24oWSwkKXtyZXR1cm4gJD1ZLm9yZGVyLCQqditpLmJhckhlaWdodC8yKyhpLmZvbnRTaXplLzItMikrQn0pLmF0dHIoInRleHQtaGVpZ2h0IixEKS5hdHRyKCJjbGFzcyIsZnVuY3Rpb24oWSl7Y29uc3QgJD1wKFkuc3RhcnRUaW1lKTtsZXQgbHQ9cChZLmVuZFRpbWUpO1kubWlsZXN0b25lJiYobHQ9JCtEKTtjb25zdCB1dD10aGlzLmdldEJCb3goKS53aWR0aDtsZXQgVz0iIjtZLmNsYXNzZXMubGVuZ3RoPjAmJihXPVkuY2xhc3Nlcy5qb2luKCIgIikpO2xldCB0dD0wO2ZvcihsZXQgaXQ9MDtpdDxtLmxlbmd0aDtpdCsrKVkudHlwZT09PW1baXRdJiYodHQ9aXQlaS5udW1iZXJTZWN0aW9uU3R5bGVzKTtsZXQgSz0iIjtyZXR1cm4gWS5hY3RpdmUmJihZLmNyaXQ/Sz0iYWN0aXZlQ3JpdFRleHQiK3R0Oks9ImFjdGl2ZVRleHQiK3R0KSxZLmRvbmU/WS5jcml0P0s9SysiIGRvbmVDcml0VGV4dCIrdHQ6Sz1LKyIgZG9uZVRleHQiK3R0OlkuY3JpdCYmKEs9SysiIGNyaXRUZXh0Iit0dCksWS5taWxlc3RvbmUmJihLKz0iIG1pbGVzdG9uZVRleHQiKSx1dD5sdC0kP2x0K3V0KzEuNSppLmxlZnRQYWRkaW5nPno/VysiIHRhc2tUZXh0T3V0c2lkZUxlZnQgdGFza1RleHRPdXRzaWRlIit0dCsiICIrSzpXKyIgdGFza1RleHRPdXRzaWRlUmlnaHQgdGFza1RleHRPdXRzaWRlIit0dCsiICIrSysiIHdpZHRoLSIrdXQ6VysiIHRhc2tUZXh0IHRhc2tUZXh0Iit0dCsiICIrSysiIHdpZHRoLSIrdXR9KSxudCgpLnNlY3VyaXR5TGV2ZWw9PT0ic2FuZGJveCIpe2xldCBZO1k9U3QoIiNpIitlKTtjb25zdCAkPVkubm9kZXMoKVswXS5jb250ZW50RG9jdW1lbnQ7WC5maWx0ZXIoZnVuY3Rpb24obHQpe3JldHVybiB0eXBlb2YgY3RbbHQuaWRdPCJ1In0pLmVhY2goZnVuY3Rpb24obHQpe3ZhciB1dD0kLnF1ZXJ5U2VsZWN0b3IoIiMiK2x0LmlkKSxXPSQucXVlcnlTZWxlY3RvcigiIyIrbHQuaWQrIi10ZXh0Iik7Y29uc3QgdHQ9dXQucGFyZW50Tm9kZTt2YXIgSz0kLmNyZWF0ZUVsZW1lbnQoImEiKTtLLnNldEF0dHJpYnV0ZSgieGxpbms6aHJlZiIsY3RbbHQuaWRdKSxLLnNldEF0dHJpYnV0ZSgidGFyZ2V0IiwiX3RvcCIpLHR0LmFwcGVuZENoaWxkKEspLEsuYXBwZW5kQ2hpbGQodXQpLEsuYXBwZW5kQ2hpbGQoVyl9KX19ZnVuY3Rpb24gayhMLHYsQix3LEQsTix6LFgpe2NvbnN0IGN0PU4ucmVkdWNlKCh0dCx7c3RhcnRUaW1lOkt9KT0+dHQ/TWF0aC5taW4odHQsSyk6SywwKSxKPU4ucmVkdWNlKCh0dCx7ZW5kVGltZTpLfSk9PnR0P01hdGgubWF4KHR0LEspOkssMCksWT1uLmRiLmdldERhdGVGb3JtYXQoKTtpZighY3R8fCFKKXJldHVybjtjb25zdCAkPVtdO2xldCBsdD1udWxsLHV0PVhuKGN0KTtmb3IoO3V0LnZhbHVlT2YoKTw9Sjspbi5kYi5pc0ludmFsaWREYXRlKHV0LFkseixYKT9sdD9sdC5lbmQ9dXQuY2xvbmUoKTpsdD17c3RhcnQ6dXQuY2xvbmUoKSxlbmQ6dXQuY2xvbmUoKX06bHQmJigkLnB1c2gobHQpLGx0PW51bGwpLHV0LmFkZCgxLCJkIik7Zi5hcHBlbmQoImciKS5zZWxlY3RBbGwoInJlY3QiKS5kYXRhKCQpLmVudGVyKCkuYXBwZW5kKCJyZWN0IikuYXR0cigiaWQiLGZ1bmN0aW9uKHR0KXtyZXR1cm4iZXhjbHVkZS0iK3R0LnN0YXJ0LmZvcm1hdCgiWVlZWS1NTS1ERCIpfSkuYXR0cigieCIsZnVuY3Rpb24odHQpe3JldHVybiBwKHR0LnN0YXJ0KStCfSkuYXR0cigieSIsaS5ncmlkTGluZVN0YXJ0UGFkZGluZykuYXR0cigid2lkdGgiLGZ1bmN0aW9uKHR0KXtjb25zdCBLPXR0LmVuZC5jbG9uZSgpLmFkZCgxLCJkYXkiKTtyZXR1cm4gcChLKS1wKHR0LnN0YXJ0KX0pLmF0dHIoImhlaWdodCIsRC12LWkuZ3JpZExpbmVTdGFydFBhZGRpbmcpLmF0dHIoInRyYW5zZm9ybS1vcmlnaW4iLGZ1bmN0aW9uKHR0LEspe3JldHVybihwKHR0LnN0YXJ0KStCKy41KihwKHR0LmVuZCktcCh0dC5zdGFydCkpKS50b1N0cmluZygpKyJweCAiKyhLKkwrLjUqRCkudG9TdHJpbmcoKSsicHgifSkuYXR0cigiY2xhc3MiLCJleGNsdWRlLXJhbmdlIil9ZnVuY3Rpb24gVChMLHYsQix3KXtsZXQgRD0kXyhwKS50aWNrU2l6ZSgtdyt2K2kuZ3JpZExpbmVTdGFydFBhZGRpbmcpLnRpY2tGb3JtYXQodmMobi5kYi5nZXRBeGlzRm9ybWF0KCl8fGkuYXhpc0Zvcm1hdHx8IiVZLSVtLSVkIikpO2lmKGYuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJncmlkIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrTCsiLCAiKyh3LTUwKSsiKSIpLmNhbGwoRCkuc2VsZWN0QWxsKCJ0ZXh0Iikuc3R5bGUoInRleHQtYW5jaG9yIiwibWlkZGxlIikuYXR0cigiZmlsbCIsIiMwMDAiKS5hdHRyKCJzdHJva2UiLCJub25lIikuYXR0cigiZm9udC1zaXplIiwxMCkuYXR0cigiZHkiLCIxZW0iKSxuLmRiLnRvcEF4aXNFbmFibGVkKCl8fGkudG9wQXhpcyl7bGV0IE49al8ocCkudGlja1NpemUoLXcrditpLmdyaWRMaW5lU3RhcnRQYWRkaW5nKS50aWNrRm9ybWF0KHZjKG4uZGIuZ2V0QXhpc0Zvcm1hdCgpfHxpLmF4aXNGb3JtYXR8fCIlWS0lbS0lZCIpKTtmLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwiZ3JpZCIpLmF0dHIoInRyYW5zZm9ybSIsInRyYW5zbGF0ZSgiK0wrIiwgIit2KyIpIikuY2FsbChOKS5zZWxlY3RBbGwoInRleHQiKS5zdHlsZSgidGV4dC1hbmNob3IiLCJtaWRkbGUiKS5hdHRyKCJmaWxsIiwiIzAwMCIpLmF0dHIoInN0cm9rZSIsIm5vbmUiKS5hdHRyKCJmb250LXNpemUiLDEwKX19ZnVuY3Rpb24gQyhMLHYpe2NvbnN0IEI9W107bGV0IHc9MDtmb3IobGV0IEQ9MDtEPG0ubGVuZ3RoO0QrKylCW0RdPVttW0RdLEEobVtEXSxfKV07Zi5hcHBlbmQoImciKS5zZWxlY3RBbGwoInRleHQiKS5kYXRhKEIpLmVudGVyKCkuYXBwZW5kKGZ1bmN0aW9uKEQpe2NvbnN0IE49RFswXS5zcGxpdChwZS5saW5lQnJlYWtSZWdleCksej0tKE4ubGVuZ3RoLTEpLzIsWD1sLmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciLCJ0ZXh0Iik7WC5zZXRBdHRyaWJ1dGUoImR5Iix6KyJlbSIpO2ZvcihsZXQgY3Q9MDtjdDxOLmxlbmd0aDtjdCsrKXtjb25zdCBKPWwuY3JlYXRlRWxlbWVudE5TKCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIsInRzcGFuIik7Si5zZXRBdHRyaWJ1dGUoImFsaWdubWVudC1iYXNlbGluZSIsImNlbnRyYWwiKSxKLnNldEF0dHJpYnV0ZSgieCIsIjEwIiksY3Q+MCYmSi5zZXRBdHRyaWJ1dGUoImR5IiwiMWVtIiksSi50ZXh0Q29udGVudD1OW2N0XSxYLmFwcGVuZENoaWxkKEopfXJldHVybiBYfSkuYXR0cigieCIsMTApLmF0dHIoInkiLGZ1bmN0aW9uKEQsTil7aWYoTj4wKWZvcihsZXQgej0wO3o8Tjt6KyspcmV0dXJuIHcrPUJbTi0xXVsxXSxEWzFdKkwvMit3KkwrdjtlbHNlIHJldHVybiBEWzFdKkwvMit2fSkuYXR0cigiZm9udC1zaXplIixpLnNlY3Rpb25Gb250U2l6ZSkuYXR0cigiZm9udC1zaXplIixpLnNlY3Rpb25Gb250U2l6ZSkuYXR0cigiY2xhc3MiLGZ1bmN0aW9uKEQpe2ZvcihsZXQgTj0wO048bS5sZW5ndGg7TisrKWlmKERbMF09PT1tW05dKXJldHVybiJzZWN0aW9uVGl0bGUgc2VjdGlvblRpdGxlIitOJWkubnVtYmVyU2VjdGlvblN0eWxlcztyZXR1cm4ic2VjdGlvblRpdGxlIn0pfWZ1bmN0aW9uIE0oTCx2LEIsdyl7Y29uc3QgRD1uLmRiLmdldFRvZGF5TWFya2VyKCk7aWYoRD09PSJvZmYiKXJldHVybjtjb25zdCBOPWYuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJ0b2RheSIpLHo9bmV3IERhdGUsWD1OLmFwcGVuZCgibGluZSIpO1guYXR0cigieDEiLHAoeikrTCkuYXR0cigieDIiLHAoeikrTCkuYXR0cigieTEiLGkudGl0bGVUb3BNYXJnaW4pLmF0dHIoInkyIix3LWkudGl0bGVUb3BNYXJnaW4pLmF0dHIoImNsYXNzIiwidG9kYXkiKSxEIT09IiImJlguYXR0cigic3R5bGUiLEQucmVwbGFjZSgvLC9nLCI7IikpfWZ1bmN0aW9uIFMoTCl7Y29uc3Qgdj17fSxCPVtdO2ZvcihsZXQgdz0wLEQ9TC5sZW5ndGg7dzxEOysrdylPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodixMW3ddKXx8KHZbTFt3XV09ITAsQi5wdXNoKExbd10pKTtyZXR1cm4gQn1mdW5jdGlvbiBSKEwpe2xldCB2PUwubGVuZ3RoO2NvbnN0IEI9e307Zm9yKDt2OylCW0xbLS12XV09KEJbTFt2XV18fDApKzE7cmV0dXJuIEJ9ZnVuY3Rpb24gQShMLHYpe3JldHVybiBSKHYpW0xdfHwwfX19O3ZhciBxND1mdW5jdGlvbigpe3ZhciB0PWZ1bmN0aW9uKGEscyxvLGwpe2ZvcihvPW98fHt9LGw9YS5sZW5ndGg7bC0tO29bYVtsXV09cyk7cmV0dXJuIG99LGU9WzYsOSwxMF0scj17dHJhY2U6ZnVuY3Rpb24oKXt9LHl5Ont9LHN5bWJvbHNfOntlcnJvcjoyLHN0YXJ0OjMsaW5mbzo0LGRvY3VtZW50OjUsRU9GOjYsbGluZTo3LHN0YXRlbWVudDo4LE5MOjksc2hvd0luZm86MTAsJGFjY2VwdDowLCRlbmQ6MX0sdGVybWluYWxzXzp7MjoiZXJyb3IiLDQ6ImluZm8iLDY6IkVPRiIsOToiTkwiLDEwOiJzaG93SW5mbyJ9LHByb2R1Y3Rpb25zXzpbMCxbMywzXSxbNSwwXSxbNSwyXSxbNywxXSxbNywxXSxbOCwxXV0scGVyZm9ybUFjdGlvbjpmdW5jdGlvbihzLG8sbCx1LGgsZCxmKXtzd2l0Y2goZC5sZW5ndGgtMSxoKXtjYXNlIDE6cmV0dXJuIHU7Y2FzZSA0OmJyZWFrO2Nhc2UgNjp1LnNldEluZm8oITApO2JyZWFrfX0sdGFibGU6W3szOjEsNDpbMSwyXX0sezE6WzNdfSx0KGUsWzIsMl0sezU6M30pLHs2OlsxLDRdLDc6NSw4OjYsOTpbMSw3XSwxMDpbMSw4XX0sezE6WzIsMV19LHQoZSxbMiwzXSksdChlLFsyLDRdKSx0KGUsWzIsNV0pLHQoZSxbMiw2XSldLGRlZmF1bHRBY3Rpb25zOns0OlsyLDFdfSxwYXJzZUVycm9yOmZ1bmN0aW9uKHMsbyl7aWYoby5yZWNvdmVyYWJsZSl0aGlzLnRyYWNlKHMpO2Vsc2V7dmFyIGw9bmV3IEVycm9yKHMpO3Rocm93IGwuaGFzaD1vLGx9fSxwYXJzZTpmdW5jdGlvbihzKXt2YXIgbz10aGlzLGw9WzBdLHU9W10saD1bbnVsbF0sZD1bXSxmPXRoaXMudGFibGUscD0iIixtPTAsXz0wLHk9MixiPTEseD1kLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpLGs9T2JqZWN0LmNyZWF0ZSh0aGlzLmxleGVyKSxUPXt5eTp7fX07Zm9yKHZhciBDIGluIHRoaXMueXkpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMueXksQykmJihULnl5W0NdPXRoaXMueXlbQ10pO2suc2V0SW5wdXQocyxULnl5KSxULnl5LmxleGVyPWssVC55eS5wYXJzZXI9dGhpcyx0eXBlb2Ygay55eWxsb2M+InUiJiYoay55eWxsb2M9e30pO3ZhciBNPWsueXlsbG9jO2QucHVzaChNKTt2YXIgUz1rLm9wdGlvbnMmJmsub3B0aW9ucy5yYW5nZXM7dHlwZW9mIFQueXkucGFyc2VFcnJvcj09ImZ1bmN0aW9uIj90aGlzLnBhcnNlRXJyb3I9VC55eS5wYXJzZUVycm9yOnRoaXMucGFyc2VFcnJvcj1PYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykucGFyc2VFcnJvcjtmdW5jdGlvbiBSKCl7dmFyIEo7cmV0dXJuIEo9dS5wb3AoKXx8ay5sZXgoKXx8Yix0eXBlb2YgSiE9Im51bWJlciImJihKIGluc3RhbmNlb2YgQXJyYXkmJih1PUosSj11LnBvcCgpKSxKPW8uc3ltYm9sc19bSl18fEopLEp9Zm9yKHZhciBBLEwsdixCLHc9e30sRCxOLHosWDs7KXtpZihMPWxbbC5sZW5ndGgtMV0sdGhpcy5kZWZhdWx0QWN0aW9uc1tMXT92PXRoaXMuZGVmYXVsdEFjdGlvbnNbTF06KChBPT09bnVsbHx8dHlwZW9mIEE+InUiKSYmKEE9UigpKSx2PWZbTF0mJmZbTF1bQV0pLHR5cGVvZiB2PiJ1Inx8IXYubGVuZ3RofHwhdlswXSl7dmFyIGN0PSIiO1g9W107Zm9yKEQgaW4gZltMXSl0aGlzLnRlcm1pbmFsc19bRF0mJkQ+eSYmWC5wdXNoKCInIit0aGlzLnRlcm1pbmFsc19bRF0rIiciKTtrLnNob3dQb3NpdGlvbj9jdD0iUGFyc2UgZXJyb3Igb24gbGluZSAiKyhtKzEpK2A6CmAray5zaG93UG9zaXRpb24oKStgCkV4cGVjdGluZyBgK1guam9pbigiLCAiKSsiLCBnb3QgJyIrKHRoaXMudGVybWluYWxzX1tBXXx8QSkrIiciOmN0PSJQYXJzZSBlcnJvciBvbiBsaW5lICIrKG0rMSkrIjogVW5leHBlY3RlZCAiKyhBPT1iPyJlbmQgb2YgaW5wdXQiOiInIisodGhpcy50ZXJtaW5hbHNfW0FdfHxBKSsiJyIpLHRoaXMucGFyc2VFcnJvcihjdCx7dGV4dDprLm1hdGNoLHRva2VuOnRoaXMudGVybWluYWxzX1tBXXx8QSxsaW5lOmsueXlsaW5lbm8sbG9jOk0sZXhwZWN0ZWQ6WH0pfWlmKHZbMF1pbnN0YW5jZW9mIEFycmF5JiZ2Lmxlbmd0aD4xKXRocm93IG5ldyBFcnJvcigiUGFyc2UgRXJyb3I6IG11bHRpcGxlIGFjdGlvbnMgcG9zc2libGUgYXQgc3RhdGU6ICIrTCsiLCB0b2tlbjogIitBKTtzd2l0Y2godlswXSl7Y2FzZSAxOmwucHVzaChBKSxoLnB1c2goay55eXRleHQpLGQucHVzaChrLnl5bGxvYyksbC5wdXNoKHZbMV0pLEE9bnVsbCxfPWsueXlsZW5nLHA9ay55eXRleHQsbT1rLnl5bGluZW5vLE09ay55eWxsb2M7YnJlYWs7Y2FzZSAyOmlmKE49dGhpcy5wcm9kdWN0aW9uc19bdlsxXV1bMV0sdy4kPWhbaC5sZW5ndGgtTl0sdy5fJD17Zmlyc3RfbGluZTpkW2QubGVuZ3RoLShOfHwxKV0uZmlyc3RfbGluZSxsYXN0X2xpbmU6ZFtkLmxlbmd0aC0xXS5sYXN0X2xpbmUsZmlyc3RfY29sdW1uOmRbZC5sZW5ndGgtKE58fDEpXS5maXJzdF9jb2x1bW4sbGFzdF9jb2x1bW46ZFtkLmxlbmd0aC0xXS5sYXN0X2NvbHVtbn0sUyYmKHcuXyQucmFuZ2U9W2RbZC5sZW5ndGgtKE58fDEpXS5yYW5nZVswXSxkW2QubGVuZ3RoLTFdLnJhbmdlWzFdXSksQj10aGlzLnBlcmZvcm1BY3Rpb24uYXBwbHkodyxbcCxfLG0sVC55eSx2WzFdLGgsZF0uY29uY2F0KHgpKSx0eXBlb2YgQjwidSIpcmV0dXJuIEI7TiYmKGw9bC5zbGljZSgwLC0xKk4qMiksaD1oLnNsaWNlKDAsLTEqTiksZD1kLnNsaWNlKDAsLTEqTikpLGwucHVzaCh0aGlzLnByb2R1Y3Rpb25zX1t2WzFdXVswXSksaC5wdXNoKHcuJCksZC5wdXNoKHcuXyQpLHo9ZltsW2wubGVuZ3RoLTJdXVtsW2wubGVuZ3RoLTFdXSxsLnB1c2goeik7YnJlYWs7Y2FzZSAzOnJldHVybiEwfX1yZXR1cm4hMH19LG49ZnVuY3Rpb24oKXt2YXIgYT17RU9GOjEscGFyc2VFcnJvcjpmdW5jdGlvbihvLGwpe2lmKHRoaXMueXkucGFyc2VyKXRoaXMueXkucGFyc2VyLnBhcnNlRXJyb3IobyxsKTtlbHNlIHRocm93IG5ldyBFcnJvcihvKX0sc2V0SW5wdXQ6ZnVuY3Rpb24ocyxvKXtyZXR1cm4gdGhpcy55eT1vfHx0aGlzLnl5fHx7fSx0aGlzLl9pbnB1dD1zLHRoaXMuX21vcmU9dGhpcy5fYmFja3RyYWNrPXRoaXMuZG9uZT0hMSx0aGlzLnl5bGluZW5vPXRoaXMueXlsZW5nPTAsdGhpcy55eXRleHQ9dGhpcy5tYXRjaGVkPXRoaXMubWF0Y2g9IiIsdGhpcy5jb25kaXRpb25TdGFjaz1bIklOSVRJQUwiXSx0aGlzLnl5bGxvYz17Zmlyc3RfbGluZToxLGZpcnN0X2NvbHVtbjowLGxhc3RfbGluZToxLGxhc3RfY29sdW1uOjB9LHRoaXMub3B0aW9ucy5yYW5nZXMmJih0aGlzLnl5bGxvYy5yYW5nZT1bMCwwXSksdGhpcy5vZmZzZXQ9MCx0aGlzfSxpbnB1dDpmdW5jdGlvbigpe3ZhciBzPXRoaXMuX2lucHV0WzBdO3RoaXMueXl0ZXh0Kz1zLHRoaXMueXlsZW5nKyssdGhpcy5vZmZzZXQrKyx0aGlzLm1hdGNoKz1zLHRoaXMubWF0Y2hlZCs9czt2YXIgbz1zLm1hdGNoKC8oPzpcclxuP3xcbikuKi9nKTtyZXR1cm4gbz8odGhpcy55eWxpbmVubysrLHRoaXMueXlsbG9jLmxhc3RfbGluZSsrKTp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbisrLHRoaXMub3B0aW9ucy5yYW5nZXMmJnRoaXMueXlsbG9jLnJhbmdlWzFdKyssdGhpcy5faW5wdXQ9dGhpcy5faW5wdXQuc2xpY2UoMSksc30sdW5wdXQ6ZnVuY3Rpb24ocyl7dmFyIG89cy5sZW5ndGgsbD1zLnNwbGl0KC8oPzpcclxuP3xcbikvZyk7dGhpcy5faW5wdXQ9cyt0aGlzLl9pbnB1dCx0aGlzLnl5dGV4dD10aGlzLnl5dGV4dC5zdWJzdHIoMCx0aGlzLnl5dGV4dC5sZW5ndGgtbyksdGhpcy5vZmZzZXQtPW87dmFyIHU9dGhpcy5tYXRjaC5zcGxpdCgvKD86XHJcbj98XG4pL2cpO3RoaXMubWF0Y2g9dGhpcy5tYXRjaC5zdWJzdHIoMCx0aGlzLm1hdGNoLmxlbmd0aC0xKSx0aGlzLm1hdGNoZWQ9dGhpcy5tYXRjaGVkLnN1YnN0cigwLHRoaXMubWF0Y2hlZC5sZW5ndGgtMSksbC5sZW5ndGgtMSYmKHRoaXMueXlsaW5lbm8tPWwubGVuZ3RoLTEpO3ZhciBoPXRoaXMueXlsbG9jLnJhbmdlO3JldHVybiB0aGlzLnl5bGxvYz17Zmlyc3RfbGluZTp0aGlzLnl5bGxvYy5maXJzdF9saW5lLGxhc3RfbGluZTp0aGlzLnl5bGluZW5vKzEsZmlyc3RfY29sdW1uOnRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbixsYXN0X2NvbHVtbjpsPyhsLmxlbmd0aD09PXUubGVuZ3RoP3RoaXMueXlsbG9jLmZpcnN0X2NvbHVtbjowKSt1W3UubGVuZ3RoLWwubGVuZ3RoXS5sZW5ndGgtbFswXS5sZW5ndGg6dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLW99LHRoaXMub3B0aW9ucy5yYW5nZXMmJih0aGlzLnl5bGxvYy5yYW5nZT1baFswXSxoWzBdK3RoaXMueXlsZW5nLW9dKSx0aGlzLnl5bGVuZz10aGlzLnl5dGV4dC5sZW5ndGgsdGhpc30sbW9yZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tb3JlPSEwLHRoaXN9LHJlamVjdDpmdW5jdGlvbigpe2lmKHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIpdGhpcy5fYmFja3RyYWNrPSEwO2Vsc2UgcmV0dXJuIHRoaXMucGFyc2VFcnJvcigiTGV4aWNhbCBlcnJvciBvbiBsaW5lICIrKHRoaXMueXlsaW5lbm8rMSkrYC4gWW91IGNhbiBvbmx5IGludm9rZSByZWplY3QoKSBpbiB0aGUgbGV4ZXIgd2hlbiB0aGUgbGV4ZXIgaXMgb2YgdGhlIGJhY2t0cmFja2luZyBwZXJzdWFzaW9uIChvcHRpb25zLmJhY2t0cmFja19sZXhlciA9IHRydWUpLgpgK3RoaXMuc2hvd1Bvc2l0aW9uKCkse3RleHQ6IiIsdG9rZW46bnVsbCxsaW5lOnRoaXMueXlsaW5lbm99KTtyZXR1cm4gdGhpc30sbGVzczpmdW5jdGlvbihzKXt0aGlzLnVucHV0KHRoaXMubWF0Y2guc2xpY2UocykpfSxwYXN0SW5wdXQ6ZnVuY3Rpb24oKXt2YXIgcz10aGlzLm1hdGNoZWQuc3Vic3RyKDAsdGhpcy5tYXRjaGVkLmxlbmd0aC10aGlzLm1hdGNoLmxlbmd0aCk7cmV0dXJuKHMubGVuZ3RoPjIwPyIuLi4iOiIiKStzLnN1YnN0cigtMjApLnJlcGxhY2UoL1xuL2csIiIpfSx1cGNvbWluZ0lucHV0OmZ1bmN0aW9uKCl7dmFyIHM9dGhpcy5tYXRjaDtyZXR1cm4gcy5sZW5ndGg8MjAmJihzKz10aGlzLl9pbnB1dC5zdWJzdHIoMCwyMC1zLmxlbmd0aCkpLChzLnN1YnN0cigwLDIwKSsocy5sZW5ndGg+MjA/Ii4uLiI6IiIpKS5yZXBsYWNlKC9cbi9nLCIiKX0sc2hvd1Bvc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIHM9dGhpcy5wYXN0SW5wdXQoKSxvPW5ldyBBcnJheShzLmxlbmd0aCsxKS5qb2luKCItIik7cmV0dXJuIHMrdGhpcy51cGNvbWluZ0lucHV0KCkrYApgK28rIl4ifSx0ZXN0X21hdGNoOmZ1bmN0aW9uKHMsbyl7dmFyIGwsdSxoO2lmKHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXImJihoPXt5eWxpbmVubzp0aGlzLnl5bGluZW5vLHl5bGxvYzp7Zmlyc3RfbGluZTp0aGlzLnl5bGxvYy5maXJzdF9saW5lLGxhc3RfbGluZTp0aGlzLmxhc3RfbGluZSxmaXJzdF9jb2x1bW46dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLGxhc3RfY29sdW1uOnRoaXMueXlsbG9jLmxhc3RfY29sdW1ufSx5eXRleHQ6dGhpcy55eXRleHQsbWF0Y2g6dGhpcy5tYXRjaCxtYXRjaGVzOnRoaXMubWF0Y2hlcyxtYXRjaGVkOnRoaXMubWF0Y2hlZCx5eWxlbmc6dGhpcy55eWxlbmcsb2Zmc2V0OnRoaXMub2Zmc2V0LF9tb3JlOnRoaXMuX21vcmUsX2lucHV0OnRoaXMuX2lucHV0LHl5OnRoaXMueXksY29uZGl0aW9uU3RhY2s6dGhpcy5jb25kaXRpb25TdGFjay5zbGljZSgwKSxkb25lOnRoaXMuZG9uZX0sdGhpcy5vcHRpb25zLnJhbmdlcyYmKGgueXlsbG9jLnJhbmdlPXRoaXMueXlsbG9jLnJhbmdlLnNsaWNlKDApKSksdT1zWzBdLm1hdGNoKC8oPzpcclxuP3xcbikuKi9nKSx1JiYodGhpcy55eWxpbmVubys9dS5sZW5ndGgpLHRoaXMueXlsbG9jPXtmaXJzdF9saW5lOnRoaXMueXlsbG9jLmxhc3RfbGluZSxsYXN0X2xpbmU6dGhpcy55eWxpbmVubysxLGZpcnN0X2NvbHVtbjp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbixsYXN0X2NvbHVtbjp1P3VbdS5sZW5ndGgtMV0ubGVuZ3RoLXVbdS5sZW5ndGgtMV0ubWF0Y2goL1xyP1xuPy8pWzBdLmxlbmd0aDp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbitzWzBdLmxlbmd0aH0sdGhpcy55eXRleHQrPXNbMF0sdGhpcy5tYXRjaCs9c1swXSx0aGlzLm1hdGNoZXM9cyx0aGlzLnl5bGVuZz10aGlzLnl5dGV4dC5sZW5ndGgsdGhpcy5vcHRpb25zLnJhbmdlcyYmKHRoaXMueXlsbG9jLnJhbmdlPVt0aGlzLm9mZnNldCx0aGlzLm9mZnNldCs9dGhpcy55eWxlbmddKSx0aGlzLl9tb3JlPSExLHRoaXMuX2JhY2t0cmFjaz0hMSx0aGlzLl9pbnB1dD10aGlzLl9pbnB1dC5zbGljZShzWzBdLmxlbmd0aCksdGhpcy5tYXRjaGVkKz1zWzBdLGw9dGhpcy5wZXJmb3JtQWN0aW9uLmNhbGwodGhpcyx0aGlzLnl5LHRoaXMsbyx0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTFdKSx0aGlzLmRvbmUmJnRoaXMuX2lucHV0JiYodGhpcy5kb25lPSExKSxsKXJldHVybiBsO2lmKHRoaXMuX2JhY2t0cmFjayl7Zm9yKHZhciBkIGluIGgpdGhpc1tkXT1oW2RdO3JldHVybiExfXJldHVybiExfSxuZXh0OmZ1bmN0aW9uKCl7aWYodGhpcy5kb25lKXJldHVybiB0aGlzLkVPRjt0aGlzLl9pbnB1dHx8KHRoaXMuZG9uZT0hMCk7dmFyIHMsbyxsLHU7dGhpcy5fbW9yZXx8KHRoaXMueXl0ZXh0PSIiLHRoaXMubWF0Y2g9IiIpO2Zvcih2YXIgaD10aGlzLl9jdXJyZW50UnVsZXMoKSxkPTA7ZDxoLmxlbmd0aDtkKyspaWYobD10aGlzLl9pbnB1dC5tYXRjaCh0aGlzLnJ1bGVzW2hbZF1dKSxsJiYoIW98fGxbMF0ubGVuZ3RoPm9bMF0ubGVuZ3RoKSl7aWYobz1sLHU9ZCx0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyKXtpZihzPXRoaXMudGVzdF9tYXRjaChsLGhbZF0pLHMhPT0hMSlyZXR1cm4gcztpZih0aGlzLl9iYWNrdHJhY2spe289ITE7Y29udGludWV9ZWxzZSByZXR1cm4hMX1lbHNlIGlmKCF0aGlzLm9wdGlvbnMuZmxleClicmVha31yZXR1cm4gbz8ocz10aGlzLnRlc3RfbWF0Y2gobyxoW3VdKSxzIT09ITE/czohMSk6dGhpcy5faW5wdXQ9PT0iIj90aGlzLkVPRjp0aGlzLnBhcnNlRXJyb3IoIkxleGljYWwgZXJyb3Igb24gbGluZSAiKyh0aGlzLnl5bGluZW5vKzEpK2AuIFVucmVjb2duaXplZCB0ZXh0LgpgK3RoaXMuc2hvd1Bvc2l0aW9uKCkse3RleHQ6IiIsdG9rZW46bnVsbCxsaW5lOnRoaXMueXlsaW5lbm99KX0sbGV4OmZ1bmN0aW9uKCl7dmFyIG89dGhpcy5uZXh0KCk7cmV0dXJuIG98fHRoaXMubGV4KCl9LGJlZ2luOmZ1bmN0aW9uKG8pe3RoaXMuY29uZGl0aW9uU3RhY2sucHVzaChvKX0scG9wU3RhdGU6ZnVuY3Rpb24oKXt2YXIgbz10aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xO3JldHVybiBvPjA/dGhpcy5jb25kaXRpb25TdGFjay5wb3AoKTp0aGlzLmNvbmRpdGlvblN0YWNrWzBdfSxfY3VycmVudFJ1bGVzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoJiZ0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTFdP3RoaXMuY29uZGl0aW9uc1t0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTFdXS5ydWxlczp0aGlzLmNvbmRpdGlvbnMuSU5JVElBTC5ydWxlc30sdG9wU3RhdGU6ZnVuY3Rpb24obyl7cmV0dXJuIG89dGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMS1NYXRoLmFicyhvfHwwKSxvPj0wP3RoaXMuY29uZGl0aW9uU3RhY2tbb106IklOSVRJQUwifSxwdXNoU3RhdGU6ZnVuY3Rpb24obyl7dGhpcy5iZWdpbihvKX0sc3RhdGVTdGFja1NpemU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGh9LG9wdGlvbnM6eyJjYXNlLWluc2Vuc2l0aXZlIjohMH0scGVyZm9ybUFjdGlvbjpmdW5jdGlvbihvLGwsdSxoKXtzd2l0Y2godSl7Y2FzZSAwOnJldHVybiA0O2Nhc2UgMTpyZXR1cm4gOTtjYXNlIDI6cmV0dXJuInNwYWNlIjtjYXNlIDM6cmV0dXJuIDEwO2Nhc2UgNDpyZXR1cm4gNjtjYXNlIDU6cmV0dXJuIlRYVCJ9fSxydWxlczpbL14oPzppbmZvXGIpL2ksL14oPzpbXHNcblxyXSspL2ksL14oPzpbXHNdKykvaSwvXig/OnNob3dJbmZvXGIpL2ksL14oPzokKS9pLC9eKD86LikvaV0sY29uZGl0aW9uczp7SU5JVElBTDp7cnVsZXM6WzAsMSwyLDMsNCw1XSxpbmNsdXNpdmU6ITB9fX07cmV0dXJuIGF9KCk7ci5sZXhlcj1uO2Z1bmN0aW9uIGkoKXt0aGlzLnl5PXt9fXJldHVybiBpLnByb3RvdHlwZT1yLHIuUGFyc2VyPWksbmV3IGl9KCk7cTQucGFyc2VyPXE0O3ZhciBpTD0iIixhTD0hMTtjb25zdCBuaXQ9e3NldE1lc3NhZ2U6dD0+e0guZGVidWcoIlNldHRpbmcgbWVzc2FnZSB0bzogIit0KSxpTD10fSxnZXRNZXNzYWdlOigpPT5pTCxzZXRJbmZvOnQ9PnthTD10fSxnZXRJbmZvOigpPT5hTCxjbGVhcjpjaX0saWl0PXtkcmF3Oih0LGUscixuKT0+e3RyeXtILmRlYnVnKGBSZW5kZXJpbmcgaW5mbyBkaWFncmFtCmArdCk7Y29uc3QgaT1udCgpLnNlY3VyaXR5TGV2ZWw7bGV0IGE7aT09PSJzYW5kYm94IiYmKGE9U3QoIiNpIitlKSk7Y29uc3Qgbz1TdChpPT09InNhbmRib3giP2Eubm9kZXMoKVswXS5jb250ZW50RG9jdW1lbnQuYm9keToiYm9keSIpLnNlbGVjdCgiIyIrZSk7by5hcHBlbmQoImciKS5hcHBlbmQoInRleHQiKS5hdHRyKCJ4IiwxMDApLmF0dHIoInkiLDQwKS5hdHRyKCJjbGFzcyIsInZlcnNpb24iKS5hdHRyKCJmb250LXNpemUiLCIzMnB4Iikuc3R5bGUoInRleHQtYW5jaG9yIiwibWlkZGxlIikudGV4dCgidiAiK3IpLG8uYXR0cigiaGVpZ2h0IiwxMDApLG8uYXR0cigid2lkdGgiLDQwMCl9Y2F0Y2goaSl7SC5lcnJvcigiRXJyb3Igd2hpbGUgcmVuZGVyaW5nIGluZm8gZGlhZ3JhbSIpLEguZXJyb3IoaS5tZXNzYWdlKX19fSxhaXQ9dD0+dC5tYXRjaCgvXlxzKmluZm8vKSE9PW51bGw7dmFyIFY0PWZ1bmN0aW9uKCl7dmFyIHQ9ZnVuY3Rpb24oTSxTLFIsQSl7Zm9yKFI9Unx8e30sQT1NLmxlbmd0aDtBLS07UltNW0FdXT1TKTtyZXR1cm4gUn0sZT1bMSw0XSxyPVsxLDVdLG49WzEsNl0saT1bMSw3XSxhPVsxLDldLHM9WzEsMTEsMTMsMTUsMTcsMTksMjAsMjYsMjcsMjgsMjldLG89WzIsNV0sbD1bMSw2LDExLDEzLDE1LDE3LDE5LDIwLDI2LDI3LDI4LDI5XSx1PVsyNiwyNywyOF0saD1bMiw4XSxkPVsxLDE4XSxmPVsxLDE5XSxwPVsxLDIwXSxtPVsxLDIxXSxfPVsxLDIyXSx5PVsxLDIzXSxiPVsxLDI4XSx4PVs2LDI2LDI3LDI4LDI5XSxrPXt0cmFjZTpmdW5jdGlvbigpe30seXk6e30sc3ltYm9sc186e2Vycm9yOjIsc3RhcnQ6Myxlb2w6NCxkaXJlY3RpdmU6NSxQSUU6Nixkb2N1bWVudDo3LHNob3dEYXRhOjgsbGluZTo5LHN0YXRlbWVudDoxMCx0eHQ6MTEsdmFsdWU6MTIsdGl0bGU6MTMsdGl0bGVfdmFsdWU6MTQsYWNjX3RpdGxlOjE1LGFjY190aXRsZV92YWx1ZToxNixhY2NfZGVzY3I6MTcsYWNjX2Rlc2NyX3ZhbHVlOjE4LGFjY19kZXNjcl9tdWx0aWxpbmVfdmFsdWU6MTksc2VjdGlvbjoyMCxvcGVuRGlyZWN0aXZlOjIxLHR5cGVEaXJlY3RpdmU6MjIsY2xvc2VEaXJlY3RpdmU6MjMsIjoiOjI0LGFyZ0RpcmVjdGl2ZToyNSxORVdMSU5FOjI2LCI7IjoyNyxFT0Y6Mjgsb3Blbl9kaXJlY3RpdmU6MjksdHlwZV9kaXJlY3RpdmU6MzAsYXJnX2RpcmVjdGl2ZTozMSxjbG9zZV9kaXJlY3RpdmU6MzIsJGFjY2VwdDowLCRlbmQ6MX0sdGVybWluYWxzXzp7MjoiZXJyb3IiLDY6IlBJRSIsODoic2hvd0RhdGEiLDExOiJ0eHQiLDEyOiJ2YWx1ZSIsMTM6InRpdGxlIiwxNDoidGl0bGVfdmFsdWUiLDE1OiJhY2NfdGl0bGUiLDE2OiJhY2NfdGl0bGVfdmFsdWUiLDE3OiJhY2NfZGVzY3IiLDE4OiJhY2NfZGVzY3JfdmFsdWUiLDE5OiJhY2NfZGVzY3JfbXVsdGlsaW5lX3ZhbHVlIiwyMDoic2VjdGlvbiIsMjQ6IjoiLDI2OiJORVdMSU5FIiwyNzoiOyIsMjg6IkVPRiIsMjk6Im9wZW5fZGlyZWN0aXZlIiwzMDoidHlwZV9kaXJlY3RpdmUiLDMxOiJhcmdfZGlyZWN0aXZlIiwzMjoiY2xvc2VfZGlyZWN0aXZlIn0scHJvZHVjdGlvbnNfOlswLFszLDJdLFszLDJdLFszLDJdLFszLDNdLFs3LDBdLFs3LDJdLFs5LDJdLFsxMCwwXSxbMTAsMl0sWzEwLDJdLFsxMCwyXSxbMTAsMl0sWzEwLDFdLFsxMCwxXSxbMTAsMV0sWzUsM10sWzUsNV0sWzQsMV0sWzQsMV0sWzQsMV0sWzIxLDFdLFsyMiwxXSxbMjUsMV0sWzIzLDFdXSxwZXJmb3JtQWN0aW9uOmZ1bmN0aW9uKFMsUixBLEwsdixCLHcpe3ZhciBEPUIubGVuZ3RoLTE7c3dpdGNoKHYpe2Nhc2UgNDpMLnNldFNob3dEYXRhKCEwKTticmVhaztjYXNlIDc6dGhpcy4kPUJbRC0xXTticmVhaztjYXNlIDk6TC5hZGRTZWN0aW9uKEJbRC0xXSxMLmNsZWFudXBWYWx1ZShCW0RdKSk7YnJlYWs7Y2FzZSAxMDp0aGlzLiQ9QltEXS50cmltKCksTC5zZXREaWFncmFtVGl0bGUodGhpcy4kKTticmVhaztjYXNlIDExOnRoaXMuJD1CW0RdLnRyaW0oKSxMLnNldEFjY1RpdGxlKHRoaXMuJCk7YnJlYWs7Y2FzZSAxMjpjYXNlIDEzOnRoaXMuJD1CW0RdLnRyaW0oKSxMLnNldEFjY0Rlc2NyaXB0aW9uKHRoaXMuJCk7YnJlYWs7Y2FzZSAxNDpMLmFkZFNlY3Rpb24oQltEXS5zdWJzdHIoOCkpLHRoaXMuJD1CW0RdLnN1YnN0cig4KTticmVhaztjYXNlIDIxOkwucGFyc2VEaXJlY3RpdmUoIiUleyIsIm9wZW5fZGlyZWN0aXZlIik7YnJlYWs7Y2FzZSAyMjpMLnBhcnNlRGlyZWN0aXZlKEJbRF0sInR5cGVfZGlyZWN0aXZlIik7YnJlYWs7Y2FzZSAyMzpCW0RdPUJbRF0udHJpbSgpLnJlcGxhY2UoLycvZywnIicpLEwucGFyc2VEaXJlY3RpdmUoQltEXSwiYXJnX2RpcmVjdGl2ZSIpO2JyZWFrO2Nhc2UgMjQ6TC5wYXJzZURpcmVjdGl2ZSgifSUlIiwiY2xvc2VfZGlyZWN0aXZlIiwicGllIik7YnJlYWt9fSx0YWJsZTpbezM6MSw0OjIsNTozLDY6ZSwyMTo4LDI2OnIsMjc6biwyODppLDI5OmF9LHsxOlszXX0sezM6MTAsNDoyLDU6Myw2OmUsMjE6OCwyNjpyLDI3Om4sMjg6aSwyOTphfSx7MzoxMSw0OjIsNTozLDY6ZSwyMTo4LDI2OnIsMjc6biwyODppLDI5OmF9LHQocyxvLHs3OjEyLDg6WzEsMTNdfSksdChsLFsyLDE4XSksdChsLFsyLDE5XSksdChsLFsyLDIwXSksezIyOjE0LDMwOlsxLDE1XX0sezMwOlsyLDIxXX0sezE6WzIsMV19LHsxOlsyLDJdfSx0KHUsaCx7MjE6OCw5OjE2LDEwOjE3LDU6MjQsMTpbMiwzXSwxMTpkLDEzOmYsMTU6cCwxNzptLDE5Ol8sMjA6eSwyOTphfSksdChzLG8sezc6MjV9KSx7MjM6MjYsMjQ6WzEsMjddLDMyOmJ9LHQoWzI0LDMyXSxbMiwyMl0pLHQocyxbMiw2XSksezQ6MjksMjY6ciwyNzpuLDI4Oml9LHsxMjpbMSwzMF19LHsxNDpbMSwzMV19LHsxNjpbMSwzMl19LHsxODpbMSwzM119LHQodSxbMiwxM10pLHQodSxbMiwxNF0pLHQodSxbMiwxNV0pLHQodSxoLHsyMTo4LDk6MTYsMTA6MTcsNToyNCwxOlsyLDRdLDExOmQsMTM6ZiwxNTpwLDE3Om0sMTk6XywyMDp5LDI5OmF9KSx0KHgsWzIsMTZdKSx7MjU6MzQsMzE6WzEsMzVdfSx0KHgsWzIsMjRdKSx0KHMsWzIsN10pLHQodSxbMiw5XSksdCh1LFsyLDEwXSksdCh1LFsyLDExXSksdCh1LFsyLDEyXSksezIzOjM2LDMyOmJ9LHszMjpbMiwyM119LHQoeCxbMiwxN10pXSxkZWZhdWx0QWN0aW9uczp7OTpbMiwyMV0sMTA6WzIsMV0sMTE6WzIsMl0sMzU6WzIsMjNdfSxwYXJzZUVycm9yOmZ1bmN0aW9uKFMsUil7aWYoUi5yZWNvdmVyYWJsZSl0aGlzLnRyYWNlKFMpO2Vsc2V7dmFyIEE9bmV3IEVycm9yKFMpO3Rocm93IEEuaGFzaD1SLEF9fSxwYXJzZTpmdW5jdGlvbihTKXt2YXIgUj10aGlzLEE9WzBdLEw9W10sdj1bbnVsbF0sQj1bXSx3PXRoaXMudGFibGUsRD0iIixOPTAsej0wLFg9MixjdD0xLEo9Qi5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSxZPU9iamVjdC5jcmVhdGUodGhpcy5sZXhlciksJD17eXk6e319O2Zvcih2YXIgbHQgaW4gdGhpcy55eSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy55eSxsdCkmJigkLnl5W2x0XT10aGlzLnl5W2x0XSk7WS5zZXRJbnB1dChTLCQueXkpLCQueXkubGV4ZXI9WSwkLnl5LnBhcnNlcj10aGlzLHR5cGVvZiBZLnl5bGxvYz4idSImJihZLnl5bGxvYz17fSk7dmFyIHV0PVkueXlsbG9jO0IucHVzaCh1dCk7dmFyIFc9WS5vcHRpb25zJiZZLm9wdGlvbnMucmFuZ2VzO3R5cGVvZiAkLnl5LnBhcnNlRXJyb3I9PSJmdW5jdGlvbiI/dGhpcy5wYXJzZUVycm9yPSQueXkucGFyc2VFcnJvcjp0aGlzLnBhcnNlRXJyb3I9T2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLnBhcnNlRXJyb3I7ZnVuY3Rpb24gdHQoKXt2YXIgZXQ7cmV0dXJuIGV0PUwucG9wKCl8fFkubGV4KCl8fGN0LHR5cGVvZiBldCE9Im51bWJlciImJihldCBpbnN0YW5jZW9mIEFycmF5JiYoTD1ldCxldD1MLnBvcCgpKSxldD1SLnN5bWJvbHNfW2V0XXx8ZXQpLGV0fWZvcih2YXIgSyxpdCxaLFYsUT17fSxxLFUsRixqOzspe2lmKGl0PUFbQS5sZW5ndGgtMV0sdGhpcy5kZWZhdWx0QWN0aW9uc1tpdF0/Wj10aGlzLmRlZmF1bHRBY3Rpb25zW2l0XTooKEs9PT1udWxsfHx0eXBlb2YgSz4idSIpJiYoSz10dCgpKSxaPXdbaXRdJiZ3W2l0XVtLXSksdHlwZW9mIFo+InUifHwhWi5sZW5ndGh8fCFaWzBdKXt2YXIgUD0iIjtqPVtdO2ZvcihxIGluIHdbaXRdKXRoaXMudGVybWluYWxzX1txXSYmcT5YJiZqLnB1c2goIiciK3RoaXMudGVybWluYWxzX1txXSsiJyIpO1kuc2hvd1Bvc2l0aW9uP1A9IlBhcnNlIGVycm9yIG9uIGxpbmUgIisoTisxKStgOgpgK1kuc2hvd1Bvc2l0aW9uKCkrYApFeHBlY3RpbmcgYCtqLmpvaW4oIiwgIikrIiwgZ290ICciKyh0aGlzLnRlcm1pbmFsc19bS118fEspKyInIjpQPSJQYXJzZSBlcnJvciBvbiBsaW5lICIrKE4rMSkrIjogVW5leHBlY3RlZCAiKyhLPT1jdD8iZW5kIG9mIGlucHV0IjoiJyIrKHRoaXMudGVybWluYWxzX1tLXXx8SykrIiciKSx0aGlzLnBhcnNlRXJyb3IoUCx7dGV4dDpZLm1hdGNoLHRva2VuOnRoaXMudGVybWluYWxzX1tLXXx8SyxsaW5lOlkueXlsaW5lbm8sbG9jOnV0LGV4cGVjdGVkOmp9KX1pZihaWzBdaW5zdGFuY2VvZiBBcnJheSYmWi5sZW5ndGg+MSl0aHJvdyBuZXcgRXJyb3IoIlBhcnNlIEVycm9yOiBtdWx0aXBsZSBhY3Rpb25zIHBvc3NpYmxlIGF0IHN0YXRlOiAiK2l0KyIsIHRva2VuOiAiK0spO3N3aXRjaChaWzBdKXtjYXNlIDE6QS5wdXNoKEspLHYucHVzaChZLnl5dGV4dCksQi5wdXNoKFkueXlsbG9jKSxBLnB1c2goWlsxXSksSz1udWxsLHo9WS55eWxlbmcsRD1ZLnl5dGV4dCxOPVkueXlsaW5lbm8sdXQ9WS55eWxsb2M7YnJlYWs7Y2FzZSAyOmlmKFU9dGhpcy5wcm9kdWN0aW9uc19bWlsxXV1bMV0sUS4kPXZbdi5sZW5ndGgtVV0sUS5fJD17Zmlyc3RfbGluZTpCW0IubGVuZ3RoLShVfHwxKV0uZmlyc3RfbGluZSxsYXN0X2xpbmU6QltCLmxlbmd0aC0xXS5sYXN0X2xpbmUsZmlyc3RfY29sdW1uOkJbQi5sZW5ndGgtKFV8fDEpXS5maXJzdF9jb2x1bW4sbGFzdF9jb2x1bW46QltCLmxlbmd0aC0xXS5sYXN0X2NvbHVtbn0sVyYmKFEuXyQucmFuZ2U9W0JbQi5sZW5ndGgtKFV8fDEpXS5yYW5nZVswXSxCW0IubGVuZ3RoLTFdLnJhbmdlWzFdXSksVj10aGlzLnBlcmZvcm1BY3Rpb24uYXBwbHkoUSxbRCx6LE4sJC55eSxaWzFdLHYsQl0uY29uY2F0KEopKSx0eXBlb2YgVjwidSIpcmV0dXJuIFY7VSYmKEE9QS5zbGljZSgwLC0xKlUqMiksdj12LnNsaWNlKDAsLTEqVSksQj1CLnNsaWNlKDAsLTEqVSkpLEEucHVzaCh0aGlzLnByb2R1Y3Rpb25zX1taWzFdXVswXSksdi5wdXNoKFEuJCksQi5wdXNoKFEuXyQpLEY9d1tBW0EubGVuZ3RoLTJdXVtBW0EubGVuZ3RoLTFdXSxBLnB1c2goRik7YnJlYWs7Y2FzZSAzOnJldHVybiEwfX1yZXR1cm4hMH19LFQ9ZnVuY3Rpb24oKXt2YXIgTT17RU9GOjEscGFyc2VFcnJvcjpmdW5jdGlvbihSLEEpe2lmKHRoaXMueXkucGFyc2VyKXRoaXMueXkucGFyc2VyLnBhcnNlRXJyb3IoUixBKTtlbHNlIHRocm93IG5ldyBFcnJvcihSKX0sc2V0SW5wdXQ6ZnVuY3Rpb24oUyxSKXtyZXR1cm4gdGhpcy55eT1SfHx0aGlzLnl5fHx7fSx0aGlzLl9pbnB1dD1TLHRoaXMuX21vcmU9dGhpcy5fYmFja3RyYWNrPXRoaXMuZG9uZT0hMSx0aGlzLnl5bGluZW5vPXRoaXMueXlsZW5nPTAsdGhpcy55eXRleHQ9dGhpcy5tYXRjaGVkPXRoaXMubWF0Y2g9IiIsdGhpcy5jb25kaXRpb25TdGFjaz1bIklOSVRJQUwiXSx0aGlzLnl5bGxvYz17Zmlyc3RfbGluZToxLGZpcnN0X2NvbHVtbjowLGxhc3RfbGluZToxLGxhc3RfY29sdW1uOjB9LHRoaXMub3B0aW9ucy5yYW5nZXMmJih0aGlzLnl5bGxvYy5yYW5nZT1bMCwwXSksdGhpcy5vZmZzZXQ9MCx0aGlzfSxpbnB1dDpmdW5jdGlvbigpe3ZhciBTPXRoaXMuX2lucHV0WzBdO3RoaXMueXl0ZXh0Kz1TLHRoaXMueXlsZW5nKyssdGhpcy5vZmZzZXQrKyx0aGlzLm1hdGNoKz1TLHRoaXMubWF0Y2hlZCs9Uzt2YXIgUj1TLm1hdGNoKC8oPzpcclxuP3xcbikuKi9nKTtyZXR1cm4gUj8odGhpcy55eWxpbmVubysrLHRoaXMueXlsbG9jLmxhc3RfbGluZSsrKTp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbisrLHRoaXMub3B0aW9ucy5yYW5nZXMmJnRoaXMueXlsbG9jLnJhbmdlWzFdKyssdGhpcy5faW5wdXQ9dGhpcy5faW5wdXQuc2xpY2UoMSksU30sdW5wdXQ6ZnVuY3Rpb24oUyl7dmFyIFI9Uy5sZW5ndGgsQT1TLnNwbGl0KC8oPzpcclxuP3xcbikvZyk7dGhpcy5faW5wdXQ9Uyt0aGlzLl9pbnB1dCx0aGlzLnl5dGV4dD10aGlzLnl5dGV4dC5zdWJzdHIoMCx0aGlzLnl5dGV4dC5sZW5ndGgtUiksdGhpcy5vZmZzZXQtPVI7dmFyIEw9dGhpcy5tYXRjaC5zcGxpdCgvKD86XHJcbj98XG4pL2cpO3RoaXMubWF0Y2g9dGhpcy5tYXRjaC5zdWJzdHIoMCx0aGlzLm1hdGNoLmxlbmd0aC0xKSx0aGlzLm1hdGNoZWQ9dGhpcy5tYXRjaGVkLnN1YnN0cigwLHRoaXMubWF0Y2hlZC5sZW5ndGgtMSksQS5sZW5ndGgtMSYmKHRoaXMueXlsaW5lbm8tPUEubGVuZ3RoLTEpO3ZhciB2PXRoaXMueXlsbG9jLnJhbmdlO3JldHVybiB0aGlzLnl5bGxvYz17Zmlyc3RfbGluZTp0aGlzLnl5bGxvYy5maXJzdF9saW5lLGxhc3RfbGluZTp0aGlzLnl5bGluZW5vKzEsZmlyc3RfY29sdW1uOnRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbixsYXN0X2NvbHVtbjpBPyhBLmxlbmd0aD09PUwubGVuZ3RoP3RoaXMueXlsbG9jLmZpcnN0X2NvbHVtbjowKStMW0wubGVuZ3RoLUEubGVuZ3RoXS5sZW5ndGgtQVswXS5sZW5ndGg6dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLVJ9LHRoaXMub3B0aW9ucy5yYW5nZXMmJih0aGlzLnl5bGxvYy5yYW5nZT1bdlswXSx2WzBdK3RoaXMueXlsZW5nLVJdKSx0aGlzLnl5bGVuZz10aGlzLnl5dGV4dC5sZW5ndGgsdGhpc30sbW9yZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tb3JlPSEwLHRoaXN9LHJlamVjdDpmdW5jdGlvbigpe2lmKHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIpdGhpcy5fYmFja3RyYWNrPSEwO2Vsc2UgcmV0dXJuIHRoaXMucGFyc2VFcnJvcigiTGV4aWNhbCBlcnJvciBvbiBsaW5lICIrKHRoaXMueXlsaW5lbm8rMSkrYC4gWW91IGNhbiBvbmx5IGludm9rZSByZWplY3QoKSBpbiB0aGUgbGV4ZXIgd2hlbiB0aGUgbGV4ZXIgaXMgb2YgdGhlIGJhY2t0cmFja2luZyBwZXJzdWFzaW9uIChvcHRpb25zLmJhY2t0cmFja19sZXhlciA9IHRydWUpLgpgK3RoaXMuc2hvd1Bvc2l0aW9uKCkse3RleHQ6IiIsdG9rZW46bnVsbCxsaW5lOnRoaXMueXlsaW5lbm99KTtyZXR1cm4gdGhpc30sbGVzczpmdW5jdGlvbihTKXt0aGlzLnVucHV0KHRoaXMubWF0Y2guc2xpY2UoUykpfSxwYXN0SW5wdXQ6ZnVuY3Rpb24oKXt2YXIgUz10aGlzLm1hdGNoZWQuc3Vic3RyKDAsdGhpcy5tYXRjaGVkLmxlbmd0aC10aGlzLm1hdGNoLmxlbmd0aCk7cmV0dXJuKFMubGVuZ3RoPjIwPyIuLi4iOiIiKStTLnN1YnN0cigtMjApLnJlcGxhY2UoL1xuL2csIiIpfSx1cGNvbWluZ0lucHV0OmZ1bmN0aW9uKCl7dmFyIFM9dGhpcy5tYXRjaDtyZXR1cm4gUy5sZW5ndGg8MjAmJihTKz10aGlzLl9pbnB1dC5zdWJzdHIoMCwyMC1TLmxlbmd0aCkpLChTLnN1YnN0cigwLDIwKSsoUy5sZW5ndGg+MjA/Ii4uLiI6IiIpKS5yZXBsYWNlKC9cbi9nLCIiKX0sc2hvd1Bvc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIFM9dGhpcy5wYXN0SW5wdXQoKSxSPW5ldyBBcnJheShTLmxlbmd0aCsxKS5qb2luKCItIik7cmV0dXJuIFMrdGhpcy51cGNvbWluZ0lucHV0KCkrYApgK1IrIl4ifSx0ZXN0X21hdGNoOmZ1bmN0aW9uKFMsUil7dmFyIEEsTCx2O2lmKHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXImJih2PXt5eWxpbmVubzp0aGlzLnl5bGluZW5vLHl5bGxvYzp7Zmlyc3RfbGluZTp0aGlzLnl5bGxvYy5maXJzdF9saW5lLGxhc3RfbGluZTp0aGlzLmxhc3RfbGluZSxmaXJzdF9jb2x1bW46dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLGxhc3RfY29sdW1uOnRoaXMueXlsbG9jLmxhc3RfY29sdW1ufSx5eXRleHQ6dGhpcy55eXRleHQsbWF0Y2g6dGhpcy5tYXRjaCxtYXRjaGVzOnRoaXMubWF0Y2hlcyxtYXRjaGVkOnRoaXMubWF0Y2hlZCx5eWxlbmc6dGhpcy55eWxlbmcsb2Zmc2V0OnRoaXMub2Zmc2V0LF9tb3JlOnRoaXMuX21vcmUsX2lucHV0OnRoaXMuX2lucHV0LHl5OnRoaXMueXksY29uZGl0aW9uU3RhY2s6dGhpcy5jb25kaXRpb25TdGFjay5zbGljZSgwKSxkb25lOnRoaXMuZG9uZX0sdGhpcy5vcHRpb25zLnJhbmdlcyYmKHYueXlsbG9jLnJhbmdlPXRoaXMueXlsbG9jLnJhbmdlLnNsaWNlKDApKSksTD1TWzBdLm1hdGNoKC8oPzpcclxuP3xcbikuKi9nKSxMJiYodGhpcy55eWxpbmVubys9TC5sZW5ndGgpLHRoaXMueXlsbG9jPXtmaXJzdF9saW5lOnRoaXMueXlsbG9jLmxhc3RfbGluZSxsYXN0X2xpbmU6dGhpcy55eWxpbmVubysxLGZpcnN0X2NvbHVtbjp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbixsYXN0X2NvbHVtbjpMP0xbTC5sZW5ndGgtMV0ubGVuZ3RoLUxbTC5sZW5ndGgtMV0ubWF0Y2goL1xyP1xuPy8pWzBdLmxlbmd0aDp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbitTWzBdLmxlbmd0aH0sdGhpcy55eXRleHQrPVNbMF0sdGhpcy5tYXRjaCs9U1swXSx0aGlzLm1hdGNoZXM9Uyx0aGlzLnl5bGVuZz10aGlzLnl5dGV4dC5sZW5ndGgsdGhpcy5vcHRpb25zLnJhbmdlcyYmKHRoaXMueXlsbG9jLnJhbmdlPVt0aGlzLm9mZnNldCx0aGlzLm9mZnNldCs9dGhpcy55eWxlbmddKSx0aGlzLl9tb3JlPSExLHRoaXMuX2JhY2t0cmFjaz0hMSx0aGlzLl9pbnB1dD10aGlzLl9pbnB1dC5zbGljZShTWzBdLmxlbmd0aCksdGhpcy5tYXRjaGVkKz1TWzBdLEE9dGhpcy5wZXJmb3JtQWN0aW9uLmNhbGwodGhpcyx0aGlzLnl5LHRoaXMsUix0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTFdKSx0aGlzLmRvbmUmJnRoaXMuX2lucHV0JiYodGhpcy5kb25lPSExKSxBKXJldHVybiBBO2lmKHRoaXMuX2JhY2t0cmFjayl7Zm9yKHZhciBCIGluIHYpdGhpc1tCXT12W0JdO3JldHVybiExfXJldHVybiExfSxuZXh0OmZ1bmN0aW9uKCl7aWYodGhpcy5kb25lKXJldHVybiB0aGlzLkVPRjt0aGlzLl9pbnB1dHx8KHRoaXMuZG9uZT0hMCk7dmFyIFMsUixBLEw7dGhpcy5fbW9yZXx8KHRoaXMueXl0ZXh0PSIiLHRoaXMubWF0Y2g9IiIpO2Zvcih2YXIgdj10aGlzLl9jdXJyZW50UnVsZXMoKSxCPTA7Qjx2Lmxlbmd0aDtCKyspaWYoQT10aGlzLl9pbnB1dC5tYXRjaCh0aGlzLnJ1bGVzW3ZbQl1dKSxBJiYoIVJ8fEFbMF0ubGVuZ3RoPlJbMF0ubGVuZ3RoKSl7aWYoUj1BLEw9Qix0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyKXtpZihTPXRoaXMudGVzdF9tYXRjaChBLHZbQl0pLFMhPT0hMSlyZXR1cm4gUztpZih0aGlzLl9iYWNrdHJhY2spe1I9ITE7Y29udGludWV9ZWxzZSByZXR1cm4hMX1lbHNlIGlmKCF0aGlzLm9wdGlvbnMuZmxleClicmVha31yZXR1cm4gUj8oUz10aGlzLnRlc3RfbWF0Y2goUix2W0xdKSxTIT09ITE/UzohMSk6dGhpcy5faW5wdXQ9PT0iIj90aGlzLkVPRjp0aGlzLnBhcnNlRXJyb3IoIkxleGljYWwgZXJyb3Igb24gbGluZSAiKyh0aGlzLnl5bGluZW5vKzEpK2AuIFVucmVjb2duaXplZCB0ZXh0LgpgK3RoaXMuc2hvd1Bvc2l0aW9uKCkse3RleHQ6IiIsdG9rZW46bnVsbCxsaW5lOnRoaXMueXlsaW5lbm99KX0sbGV4OmZ1bmN0aW9uKCl7dmFyIFI9dGhpcy5uZXh0KCk7cmV0dXJuIFJ8fHRoaXMubGV4KCl9LGJlZ2luOmZ1bmN0aW9uKFIpe3RoaXMuY29uZGl0aW9uU3RhY2sucHVzaChSKX0scG9wU3RhdGU6ZnVuY3Rpb24oKXt2YXIgUj10aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xO3JldHVybiBSPjA/dGhpcy5jb25kaXRpb25TdGFjay5wb3AoKTp0aGlzLmNvbmRpdGlvblN0YWNrWzBdfSxfY3VycmVudFJ1bGVzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoJiZ0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTFdP3RoaXMuY29uZGl0aW9uc1t0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTFdXS5ydWxlczp0aGlzLmNvbmRpdGlvbnMuSU5JVElBTC5ydWxlc30sdG9wU3RhdGU6ZnVuY3Rpb24oUil7cmV0dXJuIFI9dGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMS1NYXRoLmFicyhSfHwwKSxSPj0wP3RoaXMuY29uZGl0aW9uU3RhY2tbUl06IklOSVRJQUwifSxwdXNoU3RhdGU6ZnVuY3Rpb24oUil7dGhpcy5iZWdpbihSKX0sc3RhdGVTdGFja1NpemU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGh9LG9wdGlvbnM6eyJjYXNlLWluc2Vuc2l0aXZlIjohMH0scGVyZm9ybUFjdGlvbjpmdW5jdGlvbihSLEEsTCx2KXtzd2l0Y2goTCl7Y2FzZSAwOnJldHVybiB0aGlzLmJlZ2luKCJvcGVuX2RpcmVjdGl2ZSIpLDI5O2Nhc2UgMTpyZXR1cm4gdGhpcy5iZWdpbigidHlwZV9kaXJlY3RpdmUiKSwzMDtjYXNlIDI6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSx0aGlzLmJlZ2luKCJhcmdfZGlyZWN0aXZlIiksMjQ7Y2FzZSAzOnJldHVybiB0aGlzLnBvcFN0YXRlKCksdGhpcy5wb3BTdGF0ZSgpLDMyO2Nhc2UgNDpyZXR1cm4gMzE7Y2FzZSA1OmJyZWFrO2Nhc2UgNjpicmVhaztjYXNlIDc6cmV0dXJuIDI2O2Nhc2UgODpicmVhaztjYXNlIDk6YnJlYWs7Y2FzZSAxMDpyZXR1cm4gdGhpcy5iZWdpbigidGl0bGUiKSwxMztjYXNlIDExOnJldHVybiB0aGlzLnBvcFN0YXRlKCksInRpdGxlX3ZhbHVlIjtjYXNlIDEyOnJldHVybiB0aGlzLmJlZ2luKCJhY2NfdGl0bGUiKSwxNTtjYXNlIDEzOnJldHVybiB0aGlzLnBvcFN0YXRlKCksImFjY190aXRsZV92YWx1ZSI7Y2FzZSAxNDpyZXR1cm4gdGhpcy5iZWdpbigiYWNjX2Rlc2NyIiksMTc7Y2FzZSAxNTpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLCJhY2NfZGVzY3JfdmFsdWUiO2Nhc2UgMTY6dGhpcy5iZWdpbigiYWNjX2Rlc2NyX211bHRpbGluZSIpO2JyZWFrO2Nhc2UgMTc6dGhpcy5wb3BTdGF0ZSgpO2JyZWFrO2Nhc2UgMTg6cmV0dXJuImFjY19kZXNjcl9tdWx0aWxpbmVfdmFsdWUiO2Nhc2UgMTk6dGhpcy5iZWdpbigic3RyaW5nIik7YnJlYWs7Y2FzZSAyMDp0aGlzLnBvcFN0YXRlKCk7YnJlYWs7Y2FzZSAyMTpyZXR1cm4idHh0IjtjYXNlIDIyOnJldHVybiA2O2Nhc2UgMjM6cmV0dXJuIDg7Y2FzZSAyNDpyZXR1cm4idmFsdWUiO2Nhc2UgMjU6cmV0dXJuIDI4fX0scnVsZXM6Wy9eKD86JSVceykvaSwvXig/OigoPzooPyFcfSUlKVteOi5dKSopKS9pLC9eKD86OikvaSwvXig/Olx9JSUpL2ksL14oPzooKD86KD8hXH0lJSkufFxuKSopKS9pLC9eKD86JSUoPyFceylbXlxuXSopL2ksL14oPzpbXlx9XSUlW15cbl0qKS9pLC9eKD86W1xuXHJdKykvaSwvXig/OiUlW15cbl0qKS9pLC9eKD86W1xzXSspL2ksL14oPzp0aXRsZVxiKS9pLC9eKD86KD8hXG58fCkqW15cbl0qKS9pLC9eKD86YWNjVGl0bGVccyo6XHMqKS9pLC9eKD86KD8hXG58fCkqW15cbl0qKS9pLC9eKD86YWNjRGVzY3Jccyo6XHMqKS9pLC9eKD86KD8hXG58fCkqW15cbl0qKS9pLC9eKD86YWNjRGVzY3Jccypce1xzKikvaSwvXig/OltcfV0pL2ksL14oPzpbXlx9XSopL2ksL14oPzpbIl0pL2ksL14oPzpbIl0pL2ksL14oPzpbXiJdKikvaSwvXig/OnBpZVxiKS9pLC9eKD86c2hvd0RhdGFcYikvaSwvXig/OjpbXHNdKltcZF0rKD86XC5bXGRdKyk/KS9pLC9eKD86JCkvaV0sY29uZGl0aW9uczp7YWNjX2Rlc2NyX211bHRpbGluZTp7cnVsZXM6WzE3LDE4XSxpbmNsdXNpdmU6ITF9LGFjY19kZXNjcjp7cnVsZXM6WzE1XSxpbmNsdXNpdmU6ITF9LGFjY190aXRsZTp7cnVsZXM6WzEzXSxpbmNsdXNpdmU6ITF9LGNsb3NlX2RpcmVjdGl2ZTp7cnVsZXM6W10saW5jbHVzaXZlOiExfSxhcmdfZGlyZWN0aXZlOntydWxlczpbMyw0XSxpbmNsdXNpdmU6ITF9LHR5cGVfZGlyZWN0aXZlOntydWxlczpbMiwzXSxpbmNsdXNpdmU6ITF9LG9wZW5fZGlyZWN0aXZlOntydWxlczpbMV0saW5jbHVzaXZlOiExfSx0aXRsZTp7cnVsZXM6WzExXSxpbmNsdXNpdmU6ITF9LHN0cmluZzp7cnVsZXM6WzIwLDIxXSxpbmNsdXNpdmU6ITF9LElOSVRJQUw6e3J1bGVzOlswLDUsNiw3LDgsOSwxMCwxMiwxNCwxNiwxOSwyMiwyMywyNCwyNV0saW5jbHVzaXZlOiEwfX19O3JldHVybiBNfSgpO2subGV4ZXI9VDtmdW5jdGlvbiBDKCl7dGhpcy55eT17fX1yZXR1cm4gQy5wcm90b3R5cGU9ayxrLlBhcnNlcj1DLG5ldyBDfSgpO1Y0LnBhcnNlcj1WNDtjb25zdCBzaXQ9dD0+dC5tYXRjaCgvXlxzKnBpZS8pIT09bnVsbDtsZXQgYzA9e30sejQ9ITE7Y29uc3Qgb2l0PXtwYXJzZURpcmVjdGl2ZTpmdW5jdGlvbih0LGUscil7WGUucGFyc2VEaXJlY3RpdmUodGhpcyx0LGUscil9LGdldENvbmZpZzooKT0+bnQoKS5waWUsYWRkU2VjdGlvbjpmdW5jdGlvbih0LGUpe3Q9cGUuc2FuaXRpemVUZXh0KHQsbnQoKSksdHlwZW9mIGMwW3RdPiJ1IiYmKGMwW3RdPWUsSC5kZWJ1ZygiQWRkZWQgbmV3IHNlY3Rpb24gOiIsdCkpfSxnZXRTZWN0aW9uczooKT0+YzAsY2xlYW51cFZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0LnN1YnN0cmluZygwLDEpPT09IjoiJiYodD10LnN1YnN0cmluZygxKS50cmltKCkpLE51bWJlcih0LnRyaW0oKSl9LGNsZWFyOmZ1bmN0aW9uKCl7YzA9e30sejQ9ITEsY2koKX0sc2V0QWNjVGl0bGU6WW4sZ2V0QWNjVGl0bGU6dWksc2V0RGlhZ3JhbVRpdGxlOmMxLGdldERpYWdyYW1UaXRsZTp1MSxzZXRTaG93RGF0YTpmdW5jdGlvbih0KXt6ND10fSxnZXRTaG93RGF0YTpmdW5jdGlvbigpe3JldHVybiB6NH0sZ2V0QWNjRGVzY3JpcHRpb246Zmksc2V0QWNjRGVzY3JpcHRpb246aGl9O2xldCBnYT1udCgpLHlhO2NvbnN0IGx1PTQ1MCxsaXQ9e2RyYXc6KHQsZSxyLG4pPT57dHJ5e2dhPW50KCksSC5kZWJ1ZyhgUmVuZGVyaW5nIGluZm8gZGlhZ3JhbQpgK3QpO2NvbnN0IGI9bnQoKS5zZWN1cml0eUxldmVsO2xldCB4O2I9PT0ic2FuZGJveCImJih4PVN0KCIjaSIrZSkpO2NvbnN0IGs9U3QoYj09PSJzYW5kYm94Ij94Lm5vZGVzKClbMF0uY29udGVudERvY3VtZW50LmJvZHk6ImJvZHkiKSxUPWI9PT0ic2FuZGJveCI/eC5ub2RlcygpWzBdLmNvbnRlbnREb2N1bWVudDpkb2N1bWVudDtuLmRiLmNsZWFyKCksbi5wYXJzZXIucGFyc2UodCksSC5kZWJ1ZygiUGFyc2VkIGluZm8gZGlhZ3JhbSIpO2NvbnN0IEM9VC5nZXRFbGVtZW50QnlJZChlKTt5YT1DLnBhcmVudEVsZW1lbnQub2Zmc2V0V2lkdGgsdHlwZW9mIHlhPiJ1IiYmKHlhPTEyMDApLHR5cGVvZiBnYS51c2VXaWR0aDwidSImJih5YT1nYS51c2VXaWR0aCksdHlwZW9mIGdhLnBpZS51c2VXaWR0aDwidSImJih5YT1nYS5waWUudXNlV2lkdGgpO2NvbnN0IE09ay5zZWxlY3QoIiMiK2UpO2xpKE0sbHUseWEsZ2EucGllLnVzZU1heFdpZHRoKSxibihuLmRiLE0sZSksQy5zZXRBdHRyaWJ1dGUoInZpZXdCb3giLCIwIDAgIit5YSsiICIrbHUpO3ZhciBpPTQwLGE9MTgscz00LG89TWF0aC5taW4oeWEsbHUpLzItaSxsPU0uYXBwZW5kKCJnIikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIreWEvMisiLCIrbHUvMisiKSIpLHU9bi5kYi5nZXRTZWN0aW9ucygpLGg9MDtPYmplY3Qua2V5cyh1KS5mb3JFYWNoKGZ1bmN0aW9uKFIpe2grPXVbUl19KTtjb25zdCBTPWdhLnRoZW1lVmFyaWFibGVzO3ZhciBkPVtTLnBpZTEsUy5waWUyLFMucGllMyxTLnBpZTQsUy5waWU1LFMucGllNixTLnBpZTcsUy5waWU4LFMucGllOSxTLnBpZTEwLFMucGllMTEsUy5waWUxMl0sZj1uZigpLnJhbmdlKGQpLHA9QjcoKS52YWx1ZShmdW5jdGlvbihSKXtyZXR1cm4gUlsxXX0pLG09cChPYmplY3QuZW50cmllcyh1KSksXz15ZigpLmlubmVyUmFkaXVzKDApLm91dGVyUmFkaXVzKG8pO2wuc2VsZWN0QWxsKCJteVNsaWNlcyIpLmRhdGEobSkuZW50ZXIoKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIixfKS5hdHRyKCJmaWxsIixmdW5jdGlvbihSKXtyZXR1cm4gZihSLmRhdGFbMF0pfSkuYXR0cigiY2xhc3MiLCJwaWVDaXJjbGUiKSxsLnNlbGVjdEFsbCgibXlTbGljZXMiKS5kYXRhKG0pLmVudGVyKCkuYXBwZW5kKCJ0ZXh0IikudGV4dChmdW5jdGlvbihSKXtyZXR1cm4oUi5kYXRhWzFdL2gqMTAwKS50b0ZpeGVkKDApKyIlIn0pLmF0dHIoInRyYW5zZm9ybSIsZnVuY3Rpb24oUil7cmV0dXJuInRyYW5zbGF0ZSgiK18uY2VudHJvaWQoUikrIikifSkuc3R5bGUoInRleHQtYW5jaG9yIiwibWlkZGxlIikuYXR0cigiY2xhc3MiLCJzbGljZSIpLGwuYXBwZW5kKCJ0ZXh0IikudGV4dChuLmRiLmdldERpYWdyYW1UaXRsZSgpKS5hdHRyKCJ4IiwwKS5hdHRyKCJ5IiwtKGx1LTUwKS8yKS5hdHRyKCJjbGFzcyIsInBpZVRpdGxlVGV4dCIpO3ZhciB5PWwuc2VsZWN0QWxsKCIubGVnZW5kIikuZGF0YShmLmRvbWFpbigpKS5lbnRlcigpLmFwcGVuZCgiZyIpLmF0dHIoImNsYXNzIiwibGVnZW5kIikuYXR0cigidHJhbnNmb3JtIixmdW5jdGlvbihSLEEpe3ZhciBMPWErcyx2PUwqZi5kb21haW4oKS5sZW5ndGgvMixCPTEyKmEsdz1BKkwtdjtyZXR1cm4idHJhbnNsYXRlKCIrQisiLCIrdysiKSJ9KTt5LmFwcGVuZCgicmVjdCIpLmF0dHIoIndpZHRoIixhKS5hdHRyKCJoZWlnaHQiLGEpLnN0eWxlKCJmaWxsIixmKS5zdHlsZSgic3Ryb2tlIixmKSx5LmRhdGEobSkuYXBwZW5kKCJ0ZXh0IikuYXR0cigieCIsYStzKS5hdHRyKCJ5IixhLXMpLnRleHQoZnVuY3Rpb24oUil7cmV0dXJuIG4uZGIuZ2V0U2hvd0RhdGEoKXx8Z2Euc2hvd0RhdGF8fGdhLnBpZS5zaG93RGF0YT9SLmRhdGFbMF0rIiBbIitSLmRhdGFbMV0rIl0iOlIuZGF0YVswXX0pfWNhdGNoKGIpe0guZXJyb3IoIkVycm9yIHdoaWxlIHJlbmRlcmluZyBpbmZvIGRpYWdyYW0iKSxILmVycm9yKGIpfX19O3ZhciBZND1mdW5jdGlvbigpe3ZhciB0PWZ1bmN0aW9uKGl0LFosVixRKXtmb3IoVj1WfHx7fSxRPWl0Lmxlbmd0aDtRLS07VltpdFtRXV09Wik7cmV0dXJuIFZ9LGU9WzEsM10scj1bMSw1XSxuPVsxLDZdLGk9WzEsN10sYT1bMSw4XSxzPVs1LDYsOCwxNCwxNiwxOCwxOSw0MCw0MSw0Miw0Myw0NCw0NSw1Myw3MSw3Ml0sbz1bMSwyMl0sbD1bMiwxM10sdT1bMSwyNl0saD1bMSwyN10sZD1bMSwyOF0sZj1bMSwyOV0scD1bMSwzMF0sbT1bMSwzMV0sXz1bMSwyNF0seT1bMSwzMl0sYj1bMSwzM10seD1bMSwzNl0saz1bNzEsNzJdLFQ9WzUsOCwxNCwxNiwxOCwxOSw0MCw0MSw0Miw0Myw0NCw0NSw1Myw2MCw2Miw3MSw3Ml0sQz1bMSw1Nl0sTT1bMSw1N10sUz1bMSw1OF0sUj1bMSw1OV0sQT1bMSw2MF0sTD1bMSw2MV0sdj1bMSw2Ml0sQj1bNjIsNjNdLHc9WzEsNzRdLEQ9WzEsNzBdLE49WzEsNzFdLHo9WzEsNzJdLFg9WzEsNzNdLGN0PVsxLDc1XSxKPVsxLDc5XSxZPVsxLDgwXSwkPVsxLDc3XSxsdD1bMSw3OF0sdXQ9WzUsOCwxNCwxNiwxOCwxOSw0MCw0MSw0Miw0Myw0NCw0NSw1Myw3MSw3Ml0sVz17dHJhY2U6ZnVuY3Rpb24oKXt9LHl5Ont9LHN5bWJvbHNfOntlcnJvcjoyLHN0YXJ0OjMsZGlyZWN0aXZlOjQsTkVXTElORTo1LFJEOjYsZGlhZ3JhbTo3LEVPRjo4LG9wZW5EaXJlY3RpdmU6OSx0eXBlRGlyZWN0aXZlOjEwLGNsb3NlRGlyZWN0aXZlOjExLCI6IjoxMixhcmdEaXJlY3RpdmU6MTMsYWNjX3RpdGxlOjE0LGFjY190aXRsZV92YWx1ZToxNSxhY2NfZGVzY3I6MTYsYWNjX2Rlc2NyX3ZhbHVlOjE3LGFjY19kZXNjcl9tdWx0aWxpbmVfdmFsdWU6MTgsb3Blbl9kaXJlY3RpdmU6MTksdHlwZV9kaXJlY3RpdmU6MjAsYXJnX2RpcmVjdGl2ZToyMSxjbG9zZV9kaXJlY3RpdmU6MjIscmVxdWlyZW1lbnREZWY6MjMsZWxlbWVudERlZjoyNCxyZWxhdGlvbnNoaXBEZWY6MjUscmVxdWlyZW1lbnRUeXBlOjI2LHJlcXVpcmVtZW50TmFtZToyNyxTVFJVQ1RfU1RBUlQ6MjgscmVxdWlyZW1lbnRCb2R5OjI5LElEOjMwLENPTE9OU0VQOjMxLGlkOjMyLFRFWFQ6MzMsdGV4dDozNCxSSVNLOjM1LHJpc2tMZXZlbDozNixWRVJJRllNVEhEOjM3LHZlcmlmeVR5cGU6MzgsU1RSVUNUX1NUT1A6MzksUkVRVUlSRU1FTlQ6NDAsRlVOQ1RJT05BTF9SRVFVSVJFTUVOVDo0MSxJTlRFUkZBQ0VfUkVRVUlSRU1FTlQ6NDIsUEVSRk9STUFOQ0VfUkVRVUlSRU1FTlQ6NDMsUEhZU0lDQUxfUkVRVUlSRU1FTlQ6NDQsREVTSUdOX0NPTlNUUkFJTlQ6NDUsTE9XX1JJU0s6NDYsTUVEX1JJU0s6NDcsSElHSF9SSVNLOjQ4LFZFUklGWV9BTkFMWVNJUzo0OSxWRVJJRllfREVNT05TVFJBVElPTjo1MCxWRVJJRllfSU5TUEVDVElPTjo1MSxWRVJJRllfVEVTVDo1MixFTEVNRU5UOjUzLGVsZW1lbnROYW1lOjU0LGVsZW1lbnRCb2R5OjU1LFRZUEU6NTYsdHlwZTo1NyxET0NSRUY6NTgscmVmOjU5LEVORF9BUlJPV19MOjYwLHJlbGF0aW9uc2hpcDo2MSxMSU5FOjYyLEVORF9BUlJPV19SOjYzLENPTlRBSU5TOjY0LENPUElFUzo2NSxERVJJVkVTOjY2LFNBVElTRklFUzo2NyxWRVJJRklFUzo2OCxSRUZJTkVTOjY5LFRSQUNFUzo3MCx1bnFTdHJpbmc6NzEscVN0cmluZzo3MiwkYWNjZXB0OjAsJGVuZDoxfSx0ZXJtaW5hbHNfOnsyOiJlcnJvciIsNToiTkVXTElORSIsNjoiUkQiLDg6IkVPRiIsMTI6IjoiLDE0OiJhY2NfdGl0bGUiLDE1OiJhY2NfdGl0bGVfdmFsdWUiLDE2OiJhY2NfZGVzY3IiLDE3OiJhY2NfZGVzY3JfdmFsdWUiLDE4OiJhY2NfZGVzY3JfbXVsdGlsaW5lX3ZhbHVlIiwxOToib3Blbl9kaXJlY3RpdmUiLDIwOiJ0eXBlX2RpcmVjdGl2ZSIsMjE6ImFyZ19kaXJlY3RpdmUiLDIyOiJjbG9zZV9kaXJlY3RpdmUiLDI4OiJTVFJVQ1RfU1RBUlQiLDMwOiJJRCIsMzE6IkNPTE9OU0VQIiwzMzoiVEVYVCIsMzU6IlJJU0siLDM3OiJWRVJJRllNVEhEIiwzOToiU1RSVUNUX1NUT1AiLDQwOiJSRVFVSVJFTUVOVCIsNDE6IkZVTkNUSU9OQUxfUkVRVUlSRU1FTlQiLDQyOiJJTlRFUkZBQ0VfUkVRVUlSRU1FTlQiLDQzOiJQRVJGT1JNQU5DRV9SRVFVSVJFTUVOVCIsNDQ6IlBIWVNJQ0FMX1JFUVVJUkVNRU5UIiw0NToiREVTSUdOX0NPTlNUUkFJTlQiLDQ2OiJMT1dfUklTSyIsNDc6Ik1FRF9SSVNLIiw0ODoiSElHSF9SSVNLIiw0OToiVkVSSUZZX0FOQUxZU0lTIiw1MDoiVkVSSUZZX0RFTU9OU1RSQVRJT04iLDUxOiJWRVJJRllfSU5TUEVDVElPTiIsNTI6IlZFUklGWV9URVNUIiw1MzoiRUxFTUVOVCIsNTY6IlRZUEUiLDU4OiJET0NSRUYiLDYwOiJFTkRfQVJST1dfTCIsNjI6IkxJTkUiLDYzOiJFTkRfQVJST1dfUiIsNjQ6IkNPTlRBSU5TIiw2NToiQ09QSUVTIiw2NjoiREVSSVZFUyIsNjc6IlNBVElTRklFUyIsNjg6IlZFUklGSUVTIiw2OToiUkVGSU5FUyIsNzA6IlRSQUNFUyIsNzE6InVucVN0cmluZyIsNzI6InFTdHJpbmcifSxwcm9kdWN0aW9uc186WzAsWzMsM10sWzMsMl0sWzMsNF0sWzQsM10sWzQsNV0sWzQsMl0sWzQsMl0sWzQsMV0sWzksMV0sWzEwLDFdLFsxMywxXSxbMTEsMV0sWzcsMF0sWzcsMl0sWzcsMl0sWzcsMl0sWzcsMl0sWzcsMl0sWzIzLDVdLFsyOSw1XSxbMjksNV0sWzI5LDVdLFsyOSw1XSxbMjksMl0sWzI5LDFdLFsyNiwxXSxbMjYsMV0sWzI2LDFdLFsyNiwxXSxbMjYsMV0sWzI2LDFdLFszNiwxXSxbMzYsMV0sWzM2LDFdLFszOCwxXSxbMzgsMV0sWzM4LDFdLFszOCwxXSxbMjQsNV0sWzU1LDVdLFs1NSw1XSxbNTUsMl0sWzU1LDFdLFsyNSw1XSxbMjUsNV0sWzYxLDFdLFs2MSwxXSxbNjEsMV0sWzYxLDFdLFs2MSwxXSxbNjEsMV0sWzYxLDFdLFsyNywxXSxbMjcsMV0sWzMyLDFdLFszMiwxXSxbMzQsMV0sWzM0LDFdLFs1NCwxXSxbNTQsMV0sWzU3LDFdLFs1NywxXSxbNTksMV0sWzU5LDFdXSxwZXJmb3JtQWN0aW9uOmZ1bmN0aW9uKFosVixRLHEsVSxGLGope3ZhciBQPUYubGVuZ3RoLTE7c3dpdGNoKFUpe2Nhc2UgNjp0aGlzLiQ9RltQXS50cmltKCkscS5zZXRBY2NUaXRsZSh0aGlzLiQpO2JyZWFrO2Nhc2UgNzpjYXNlIDg6dGhpcy4kPUZbUF0udHJpbSgpLHEuc2V0QWNjRGVzY3JpcHRpb24odGhpcy4kKTticmVhaztjYXNlIDk6cS5wYXJzZURpcmVjdGl2ZSgiJSV7Iiwib3Blbl9kaXJlY3RpdmUiKTticmVhaztjYXNlIDEwOnEucGFyc2VEaXJlY3RpdmUoRltQXSwidHlwZV9kaXJlY3RpdmUiKTticmVhaztjYXNlIDExOkZbUF09RltQXS50cmltKCkucmVwbGFjZSgvJy9nLCciJykscS5wYXJzZURpcmVjdGl2ZShGW1BdLCJhcmdfZGlyZWN0aXZlIik7YnJlYWs7Y2FzZSAxMjpxLnBhcnNlRGlyZWN0aXZlKCJ9JSUiLCJjbG9zZV9kaXJlY3RpdmUiLCJwaWUiKTticmVhaztjYXNlIDEzOnRoaXMuJD1bXTticmVhaztjYXNlIDE5OnEuYWRkUmVxdWlyZW1lbnQoRltQLTNdLEZbUC00XSk7YnJlYWs7Y2FzZSAyMDpxLnNldE5ld1JlcUlkKEZbUC0yXSk7YnJlYWs7Y2FzZSAyMTpxLnNldE5ld1JlcVRleHQoRltQLTJdKTticmVhaztjYXNlIDIyOnEuc2V0TmV3UmVxUmlzayhGW1AtMl0pO2JyZWFrO2Nhc2UgMjM6cS5zZXROZXdSZXFWZXJpZnlNZXRob2QoRltQLTJdKTticmVhaztjYXNlIDI2OnRoaXMuJD1xLlJlcXVpcmVtZW50VHlwZS5SRVFVSVJFTUVOVDticmVhaztjYXNlIDI3OnRoaXMuJD1xLlJlcXVpcmVtZW50VHlwZS5GVU5DVElPTkFMX1JFUVVJUkVNRU5UO2JyZWFrO2Nhc2UgMjg6dGhpcy4kPXEuUmVxdWlyZW1lbnRUeXBlLklOVEVSRkFDRV9SRVFVSVJFTUVOVDticmVhaztjYXNlIDI5OnRoaXMuJD1xLlJlcXVpcmVtZW50VHlwZS5QRVJGT1JNQU5DRV9SRVFVSVJFTUVOVDticmVhaztjYXNlIDMwOnRoaXMuJD1xLlJlcXVpcmVtZW50VHlwZS5QSFlTSUNBTF9SRVFVSVJFTUVOVDticmVhaztjYXNlIDMxOnRoaXMuJD1xLlJlcXVpcmVtZW50VHlwZS5ERVNJR05fQ09OU1RSQUlOVDticmVhaztjYXNlIDMyOnRoaXMuJD1xLlJpc2tMZXZlbC5MT1dfUklTSzticmVhaztjYXNlIDMzOnRoaXMuJD1xLlJpc2tMZXZlbC5NRURfUklTSzticmVhaztjYXNlIDM0OnRoaXMuJD1xLlJpc2tMZXZlbC5ISUdIX1JJU0s7YnJlYWs7Y2FzZSAzNTp0aGlzLiQ9cS5WZXJpZnlUeXBlLlZFUklGWV9BTkFMWVNJUzticmVhaztjYXNlIDM2OnRoaXMuJD1xLlZlcmlmeVR5cGUuVkVSSUZZX0RFTU9OU1RSQVRJT047YnJlYWs7Y2FzZSAzNzp0aGlzLiQ9cS5WZXJpZnlUeXBlLlZFUklGWV9JTlNQRUNUSU9OO2JyZWFrO2Nhc2UgMzg6dGhpcy4kPXEuVmVyaWZ5VHlwZS5WRVJJRllfVEVTVDticmVhaztjYXNlIDM5OnEuYWRkRWxlbWVudChGW1AtM10pO2JyZWFrO2Nhc2UgNDA6cS5zZXROZXdFbGVtZW50VHlwZShGW1AtMl0pO2JyZWFrO2Nhc2UgNDE6cS5zZXROZXdFbGVtZW50RG9jUmVmKEZbUC0yXSk7YnJlYWs7Y2FzZSA0NDpxLmFkZFJlbGF0aW9uc2hpcChGW1AtMl0sRltQXSxGW1AtNF0pO2JyZWFrO2Nhc2UgNDU6cS5hZGRSZWxhdGlvbnNoaXAoRltQLTJdLEZbUC00XSxGW1BdKTticmVhaztjYXNlIDQ2OnRoaXMuJD1xLlJlbGF0aW9uc2hpcHMuQ09OVEFJTlM7YnJlYWs7Y2FzZSA0Nzp0aGlzLiQ9cS5SZWxhdGlvbnNoaXBzLkNPUElFUzticmVhaztjYXNlIDQ4OnRoaXMuJD1xLlJlbGF0aW9uc2hpcHMuREVSSVZFUzticmVhaztjYXNlIDQ5OnRoaXMuJD1xLlJlbGF0aW9uc2hpcHMuU0FUSVNGSUVTO2JyZWFrO2Nhc2UgNTA6dGhpcy4kPXEuUmVsYXRpb25zaGlwcy5WRVJJRklFUzticmVhaztjYXNlIDUxOnRoaXMuJD1xLlJlbGF0aW9uc2hpcHMuUkVGSU5FUzticmVhaztjYXNlIDUyOnRoaXMuJD1xLlJlbGF0aW9uc2hpcHMuVFJBQ0VTO2JyZWFrfX0sdGFibGU6W3szOjEsNDoyLDY6ZSw5OjQsMTQ6ciwxNjpuLDE4OmksMTk6YX0sezE6WzNdfSx7MzoxMCw0OjIsNTpbMSw5XSw2OmUsOTo0LDE0OnIsMTY6biwxODppLDE5OmF9LHs1OlsxLDExXX0sezEwOjEyLDIwOlsxLDEzXX0sezE1OlsxLDE0XX0sezE3OlsxLDE1XX0sdChzLFsyLDhdKSx7MjA6WzIsOV19LHszOjE2LDQ6Miw2OmUsOTo0LDE0OnIsMTY6biwxODppLDE5OmF9LHsxOlsyLDJdfSx7NDoyMSw1Om8sNzoxNyw4OmwsOTo0LDE0OnIsMTY6biwxODppLDE5OmEsMjM6MTgsMjQ6MTksMjU6MjAsMjY6MjMsMzI6MjUsNDA6dSw0MTpoLDQyOmQsNDM6Ziw0NDpwLDQ1Om0sNTM6Xyw3MTp5LDcyOmJ9LHsxMTozNCwxMjpbMSwzNV0sMjI6eH0sdChbMTIsMjJdLFsyLDEwXSksdChzLFsyLDZdKSx0KHMsWzIsN10pLHsxOlsyLDFdfSx7ODpbMSwzN119LHs0OjIxLDU6byw3OjM4LDg6bCw5OjQsMTQ6ciwxNjpuLDE4OmksMTk6YSwyMzoxOCwyNDoxOSwyNToyMCwyNjoyMywzMjoyNSw0MDp1LDQxOmgsNDI6ZCw0MzpmLDQ0OnAsNDU6bSw1MzpfLDcxOnksNzI6Yn0sezQ6MjEsNTpvLDc6MzksODpsLDk6NCwxNDpyLDE2Om4sMTg6aSwxOTphLDIzOjE4LDI0OjE5LDI1OjIwLDI2OjIzLDMyOjI1LDQwOnUsNDE6aCw0MjpkLDQzOmYsNDQ6cCw0NTptLDUzOl8sNzE6eSw3MjpifSx7NDoyMSw1Om8sNzo0MCw4OmwsOTo0LDE0OnIsMTY6biwxODppLDE5OmEsMjM6MTgsMjQ6MTksMjU6MjAsMjY6MjMsMzI6MjUsNDA6dSw0MTpoLDQyOmQsNDM6Ziw0NDpwLDQ1Om0sNTM6Xyw3MTp5LDcyOmJ9LHs0OjIxLDU6byw3OjQxLDg6bCw5OjQsMTQ6ciwxNjpuLDE4OmksMTk6YSwyMzoxOCwyNDoxOSwyNToyMCwyNjoyMywzMjoyNSw0MDp1LDQxOmgsNDI6ZCw0MzpmLDQ0OnAsNDU6bSw1MzpfLDcxOnksNzI6Yn0sezQ6MjEsNTpvLDc6NDIsODpsLDk6NCwxNDpyLDE2Om4sMTg6aSwxOTphLDIzOjE4LDI0OjE5LDI1OjIwLDI2OjIzLDMyOjI1LDQwOnUsNDE6aCw0MjpkLDQzOmYsNDQ6cCw0NTptLDUzOl8sNzE6eSw3MjpifSx7Mjc6NDMsNzE6WzEsNDRdLDcyOlsxLDQ1XX0sezU0OjQ2LDcxOlsxLDQ3XSw3MjpbMSw0OF19LHs2MDpbMSw0OV0sNjI6WzEsNTBdfSx0KGssWzIsMjZdKSx0KGssWzIsMjddKSx0KGssWzIsMjhdKSx0KGssWzIsMjldKSx0KGssWzIsMzBdKSx0KGssWzIsMzFdKSx0KFQsWzIsNTVdKSx0KFQsWzIsNTZdKSx0KHMsWzIsNF0pLHsxMzo1MSwyMTpbMSw1Ml19LHQocyxbMiwxMl0pLHsxOlsyLDNdfSx7ODpbMiwxNF19LHs4OlsyLDE1XX0sezg6WzIsMTZdfSx7ODpbMiwxN119LHs4OlsyLDE4XX0sezI4OlsxLDUzXX0sezI4OlsyLDUzXX0sezI4OlsyLDU0XX0sezI4OlsxLDU0XX0sezI4OlsyLDU5XX0sezI4OlsyLDYwXX0sezYxOjU1LDY0OkMsNjU6TSw2NjpTLDY3OlIsNjg6QSw2OTpMLDcwOnZ9LHs2MTo2Myw2NDpDLDY1Ok0sNjY6Uyw2NzpSLDY4OkEsNjk6TCw3MDp2fSx7MTE6NjQsMjI6eH0sezIyOlsyLDExXX0sezU6WzEsNjVdfSx7NTpbMSw2Nl19LHs2MjpbMSw2N119LHQoQixbMiw0Nl0pLHQoQixbMiw0N10pLHQoQixbMiw0OF0pLHQoQixbMiw0OV0pLHQoQixbMiw1MF0pLHQoQixbMiw1MV0pLHQoQixbMiw1Ml0pLHs2MzpbMSw2OF19LHQocyxbMiw1XSksezU6dywyOTo2OSwzMDpELDMzOk4sMzU6eiwzNzpYLDM5OmN0fSx7NTpKLDM5OlksNTU6NzYsNTY6JCw1ODpsdH0sezMyOjgxLDcxOnksNzI6Yn0sezMyOjgyLDcxOnksNzI6Yn0sdCh1dCxbMiwxOV0pLHszMTpbMSw4M119LHszMTpbMSw4NF19LHszMTpbMSw4NV19LHszMTpbMSw4Nl19LHs1OncsMjk6ODcsMzA6RCwzMzpOLDM1OnosMzc6WCwzOTpjdH0sdCh1dCxbMiwyNV0pLHQodXQsWzIsMzldKSx7MzE6WzEsODhdfSx7MzE6WzEsODldfSx7NTpKLDM5OlksNTU6OTAsNTY6JCw1ODpsdH0sdCh1dCxbMiw0M10pLHQodXQsWzIsNDRdKSx0KHV0LFsyLDQ1XSksezMyOjkxLDcxOnksNzI6Yn0sezM0OjkyLDcxOlsxLDkzXSw3MjpbMSw5NF19LHszNjo5NSw0NjpbMSw5Nl0sNDc6WzEsOTddLDQ4OlsxLDk4XX0sezM4Ojk5LDQ5OlsxLDEwMF0sNTA6WzEsMTAxXSw1MTpbMSwxMDJdLDUyOlsxLDEwM119LHQodXQsWzIsMjRdKSx7NTc6MTA0LDcxOlsxLDEwNV0sNzI6WzEsMTA2XX0sezU5OjEwNyw3MTpbMSwxMDhdLDcyOlsxLDEwOV19LHQodXQsWzIsNDJdKSx7NTpbMSwxMTBdfSx7NTpbMSwxMTFdfSx7NTpbMiw1N119LHs1OlsyLDU4XX0sezU6WzEsMTEyXX0sezU6WzIsMzJdfSx7NTpbMiwzM119LHs1OlsyLDM0XX0sezU6WzEsMTEzXX0sezU6WzIsMzVdfSx7NTpbMiwzNl19LHs1OlsyLDM3XX0sezU6WzIsMzhdfSx7NTpbMSwxMTRdfSx7NTpbMiw2MV19LHs1OlsyLDYyXX0sezU6WzEsMTE1XX0sezU6WzIsNjNdfSx7NTpbMiw2NF19LHs1OncsMjk6MTE2LDMwOkQsMzM6TiwzNTp6LDM3OlgsMzk6Y3R9LHs1OncsMjk6MTE3LDMwOkQsMzM6TiwzNTp6LDM3OlgsMzk6Y3R9LHs1OncsMjk6MTE4LDMwOkQsMzM6TiwzNTp6LDM3OlgsMzk6Y3R9LHs1OncsMjk6MTE5LDMwOkQsMzM6TiwzNTp6LDM3OlgsMzk6Y3R9LHs1OkosMzk6WSw1NToxMjAsNTY6JCw1ODpsdH0sezU6SiwzOTpZLDU1OjEyMSw1NjokLDU4Omx0fSx0KHV0LFsyLDIwXSksdCh1dCxbMiwyMV0pLHQodXQsWzIsMjJdKSx0KHV0LFsyLDIzXSksdCh1dCxbMiw0MF0pLHQodXQsWzIsNDFdKV0sZGVmYXVsdEFjdGlvbnM6ezg6WzIsOV0sMTA6WzIsMl0sMTY6WzIsMV0sMzc6WzIsM10sMzg6WzIsMTRdLDM5OlsyLDE1XSw0MDpbMiwxNl0sNDE6WzIsMTddLDQyOlsyLDE4XSw0NDpbMiw1M10sNDU6WzIsNTRdLDQ3OlsyLDU5XSw0ODpbMiw2MF0sNTI6WzIsMTFdLDkzOlsyLDU3XSw5NDpbMiw1OF0sOTY6WzIsMzJdLDk3OlsyLDMzXSw5ODpbMiwzNF0sMTAwOlsyLDM1XSwxMDE6WzIsMzZdLDEwMjpbMiwzN10sMTAzOlsyLDM4XSwxMDU6WzIsNjFdLDEwNjpbMiw2Ml0sMTA4OlsyLDYzXSwxMDk6WzIsNjRdfSxwYXJzZUVycm9yOmZ1bmN0aW9uKFosVil7aWYoVi5yZWNvdmVyYWJsZSl0aGlzLnRyYWNlKFopO2Vsc2V7dmFyIFE9bmV3IEVycm9yKFopO3Rocm93IFEuaGFzaD1WLFF9fSxwYXJzZTpmdW5jdGlvbihaKXt2YXIgVj10aGlzLFE9WzBdLHE9W10sVT1bbnVsbF0sRj1bXSxqPXRoaXMudGFibGUsUD0iIixldD0wLGF0PTAsSXQ9MixMdD0xLFJ0PUYuc2xpY2UuY2FsbChhcmd1bWVudHMsMSksQ3Q9T2JqZWN0LmNyZWF0ZSh0aGlzLmxleGVyKSxwdD17eXk6e319O2Zvcih2YXIgbXQgaW4gdGhpcy55eSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy55eSxtdCkmJihwdC55eVttdF09dGhpcy55eVttdF0pO0N0LnNldElucHV0KFoscHQueXkpLHB0Lnl5LmxleGVyPUN0LHB0Lnl5LnBhcnNlcj10aGlzLHR5cGVvZiBDdC55eWxsb2M+InUiJiYoQ3QueXlsbG9jPXt9KTt2YXIgdnQ9Q3QueXlsbG9jO0YucHVzaCh2dCk7dmFyIFR0PUN0Lm9wdGlvbnMmJkN0Lm9wdGlvbnMucmFuZ2VzO3R5cGVvZiBwdC55eS5wYXJzZUVycm9yPT0iZnVuY3Rpb24iP3RoaXMucGFyc2VFcnJvcj1wdC55eS5wYXJzZUVycm9yOnRoaXMucGFyc2VFcnJvcj1PYmplY3QuZ2V0UHJvdG90eXBlT2YodGhpcykucGFyc2VFcnJvcjtmdW5jdGlvbiBmdCgpe3ZhciBidDtyZXR1cm4gYnQ9cS5wb3AoKXx8Q3QubGV4KCl8fEx0LHR5cGVvZiBidCE9Im51bWJlciImJihidCBpbnN0YW5jZW9mIEFycmF5JiYocT1idCxidD1xLnBvcCgpKSxidD1WLnN5bWJvbHNfW2J0XXx8YnQpLGJ0fWZvcih2YXIgbGUsRHQsR3QsJHQsUXQ9e30sd2UsanQsRnQsenQ7Oyl7aWYoRHQ9UVtRLmxlbmd0aC0xXSx0aGlzLmRlZmF1bHRBY3Rpb25zW0R0XT9HdD10aGlzLmRlZmF1bHRBY3Rpb25zW0R0XTooKGxlPT09bnVsbHx8dHlwZW9mIGxlPiJ1IikmJihsZT1mdCgpKSxHdD1qW0R0XSYmaltEdF1bbGVdKSx0eXBlb2YgR3Q+InUifHwhR3QubGVuZ3RofHwhR3RbMF0pe3ZhciB3dD0iIjt6dD1bXTtmb3Iod2UgaW4galtEdF0pdGhpcy50ZXJtaW5hbHNfW3dlXSYmd2U+SXQmJnp0LnB1c2goIiciK3RoaXMudGVybWluYWxzX1t3ZV0rIiciKTtDdC5zaG93UG9zaXRpb24/d3Q9IlBhcnNlIGVycm9yIG9uIGxpbmUgIisoZXQrMSkrYDoKYCtDdC5zaG93UG9zaXRpb24oKStgCkV4cGVjdGluZyBgK3p0LmpvaW4oIiwgIikrIiwgZ290ICciKyh0aGlzLnRlcm1pbmFsc19bbGVdfHxsZSkrIiciOnd0PSJQYXJzZSBlcnJvciBvbiBsaW5lICIrKGV0KzEpKyI6IFVuZXhwZWN0ZWQgIisobGU9PUx0PyJlbmQgb2YgaW5wdXQiOiInIisodGhpcy50ZXJtaW5hbHNfW2xlXXx8bGUpKyInIiksdGhpcy5wYXJzZUVycm9yKHd0LHt0ZXh0OkN0Lm1hdGNoLHRva2VuOnRoaXMudGVybWluYWxzX1tsZV18fGxlLGxpbmU6Q3QueXlsaW5lbm8sbG9jOnZ0LGV4cGVjdGVkOnp0fSl9aWYoR3RbMF1pbnN0YW5jZW9mIEFycmF5JiZHdC5sZW5ndGg+MSl0aHJvdyBuZXcgRXJyb3IoIlBhcnNlIEVycm9yOiBtdWx0aXBsZSBhY3Rpb25zIHBvc3NpYmxlIGF0IHN0YXRlOiAiK0R0KyIsIHRva2VuOiAiK2xlKTtzd2l0Y2goR3RbMF0pe2Nhc2UgMTpRLnB1c2gobGUpLFUucHVzaChDdC55eXRleHQpLEYucHVzaChDdC55eWxsb2MpLFEucHVzaChHdFsxXSksbGU9bnVsbCxhdD1DdC55eWxlbmcsUD1DdC55eXRleHQsZXQ9Q3QueXlsaW5lbm8sdnQ9Q3QueXlsbG9jO2JyZWFrO2Nhc2UgMjppZihqdD10aGlzLnByb2R1Y3Rpb25zX1tHdFsxXV1bMV0sUXQuJD1VW1UubGVuZ3RoLWp0XSxRdC5fJD17Zmlyc3RfbGluZTpGW0YubGVuZ3RoLShqdHx8MSldLmZpcnN0X2xpbmUsbGFzdF9saW5lOkZbRi5sZW5ndGgtMV0ubGFzdF9saW5lLGZpcnN0X2NvbHVtbjpGW0YubGVuZ3RoLShqdHx8MSldLmZpcnN0X2NvbHVtbixsYXN0X2NvbHVtbjpGW0YubGVuZ3RoLTFdLmxhc3RfY29sdW1ufSxUdCYmKFF0Ll8kLnJhbmdlPVtGW0YubGVuZ3RoLShqdHx8MSldLnJhbmdlWzBdLEZbRi5sZW5ndGgtMV0ucmFuZ2VbMV1dKSwkdD10aGlzLnBlcmZvcm1BY3Rpb24uYXBwbHkoUXQsW1AsYXQsZXQscHQueXksR3RbMV0sVSxGXS5jb25jYXQoUnQpKSx0eXBlb2YgJHQ8InUiKXJldHVybiAkdDtqdCYmKFE9US5zbGljZSgwLC0xKmp0KjIpLFU9VS5zbGljZSgwLC0xKmp0KSxGPUYuc2xpY2UoMCwtMSpqdCkpLFEucHVzaCh0aGlzLnByb2R1Y3Rpb25zX1tHdFsxXV1bMF0pLFUucHVzaChRdC4kKSxGLnB1c2goUXQuXyQpLEZ0PWpbUVtRLmxlbmd0aC0yXV1bUVtRLmxlbmd0aC0xXV0sUS5wdXNoKEZ0KTticmVhaztjYXNlIDM6cmV0dXJuITB9fXJldHVybiEwfX0sdHQ9ZnVuY3Rpb24oKXt2YXIgaXQ9e0VPRjoxLHBhcnNlRXJyb3I6ZnVuY3Rpb24oVixRKXtpZih0aGlzLnl5LnBhcnNlcil0aGlzLnl5LnBhcnNlci5wYXJzZUVycm9yKFYsUSk7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoVil9LHNldElucHV0OmZ1bmN0aW9uKFosVil7cmV0dXJuIHRoaXMueXk9Vnx8dGhpcy55eXx8e30sdGhpcy5faW5wdXQ9Wix0aGlzLl9tb3JlPXRoaXMuX2JhY2t0cmFjaz10aGlzLmRvbmU9ITEsdGhpcy55eWxpbmVubz10aGlzLnl5bGVuZz0wLHRoaXMueXl0ZXh0PXRoaXMubWF0Y2hlZD10aGlzLm1hdGNoPSIiLHRoaXMuY29uZGl0aW9uU3RhY2s9WyJJTklUSUFMIl0sdGhpcy55eWxsb2M9e2ZpcnN0X2xpbmU6MSxmaXJzdF9jb2x1bW46MCxsYXN0X2xpbmU6MSxsYXN0X2NvbHVtbjowfSx0aGlzLm9wdGlvbnMucmFuZ2VzJiYodGhpcy55eWxsb2MucmFuZ2U9WzAsMF0pLHRoaXMub2Zmc2V0PTAsdGhpc30saW5wdXQ6ZnVuY3Rpb24oKXt2YXIgWj10aGlzLl9pbnB1dFswXTt0aGlzLnl5dGV4dCs9Wix0aGlzLnl5bGVuZysrLHRoaXMub2Zmc2V0KyssdGhpcy5tYXRjaCs9Wix0aGlzLm1hdGNoZWQrPVo7dmFyIFY9Wi5tYXRjaCgvKD86XHJcbj98XG4pLiovZyk7cmV0dXJuIFY/KHRoaXMueXlsaW5lbm8rKyx0aGlzLnl5bGxvYy5sYXN0X2xpbmUrKyk6dGhpcy55eWxsb2MubGFzdF9jb2x1bW4rKyx0aGlzLm9wdGlvbnMucmFuZ2VzJiZ0aGlzLnl5bGxvYy5yYW5nZVsxXSsrLHRoaXMuX2lucHV0PXRoaXMuX2lucHV0LnNsaWNlKDEpLFp9LHVucHV0OmZ1bmN0aW9uKFope3ZhciBWPVoubGVuZ3RoLFE9Wi5zcGxpdCgvKD86XHJcbj98XG4pL2cpO3RoaXMuX2lucHV0PVordGhpcy5faW5wdXQsdGhpcy55eXRleHQ9dGhpcy55eXRleHQuc3Vic3RyKDAsdGhpcy55eXRleHQubGVuZ3RoLVYpLHRoaXMub2Zmc2V0LT1WO3ZhciBxPXRoaXMubWF0Y2guc3BsaXQoLyg/OlxyXG4/fFxuKS9nKTt0aGlzLm1hdGNoPXRoaXMubWF0Y2guc3Vic3RyKDAsdGhpcy5tYXRjaC5sZW5ndGgtMSksdGhpcy5tYXRjaGVkPXRoaXMubWF0Y2hlZC5zdWJzdHIoMCx0aGlzLm1hdGNoZWQubGVuZ3RoLTEpLFEubGVuZ3RoLTEmJih0aGlzLnl5bGluZW5vLT1RLmxlbmd0aC0xKTt2YXIgVT10aGlzLnl5bGxvYy5yYW5nZTtyZXR1cm4gdGhpcy55eWxsb2M9e2ZpcnN0X2xpbmU6dGhpcy55eWxsb2MuZmlyc3RfbGluZSxsYXN0X2xpbmU6dGhpcy55eWxpbmVubysxLGZpcnN0X2NvbHVtbjp0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4sbGFzdF9jb2x1bW46UT8oUS5sZW5ndGg9PT1xLmxlbmd0aD90aGlzLnl5bGxvYy5maXJzdF9jb2x1bW46MCkrcVtxLmxlbmd0aC1RLmxlbmd0aF0ubGVuZ3RoLVFbMF0ubGVuZ3RoOnRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbi1WfSx0aGlzLm9wdGlvbnMucmFuZ2VzJiYodGhpcy55eWxsb2MucmFuZ2U9W1VbMF0sVVswXSt0aGlzLnl5bGVuZy1WXSksdGhpcy55eWxlbmc9dGhpcy55eXRleHQubGVuZ3RoLHRoaXN9LG1vcmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbW9yZT0hMCx0aGlzfSxyZWplY3Q6ZnVuY3Rpb24oKXtpZih0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyKXRoaXMuX2JhY2t0cmFjaz0hMDtlbHNlIHJldHVybiB0aGlzLnBhcnNlRXJyb3IoIkxleGljYWwgZXJyb3Igb24gbGluZSAiKyh0aGlzLnl5bGluZW5vKzEpK2AuIFlvdSBjYW4gb25seSBpbnZva2UgcmVqZWN0KCkgaW4gdGhlIGxleGVyIHdoZW4gdGhlIGxleGVyIGlzIG9mIHRoZSBiYWNrdHJhY2tpbmcgcGVyc3Vhc2lvbiAob3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIgPSB0cnVlKS4KYCt0aGlzLnNob3dQb3NpdGlvbigpLHt0ZXh0OiIiLHRva2VuOm51bGwsbGluZTp0aGlzLnl5bGluZW5vfSk7cmV0dXJuIHRoaXN9LGxlc3M6ZnVuY3Rpb24oWil7dGhpcy51bnB1dCh0aGlzLm1hdGNoLnNsaWNlKFopKX0scGFzdElucHV0OmZ1bmN0aW9uKCl7dmFyIFo9dGhpcy5tYXRjaGVkLnN1YnN0cigwLHRoaXMubWF0Y2hlZC5sZW5ndGgtdGhpcy5tYXRjaC5sZW5ndGgpO3JldHVybihaLmxlbmd0aD4yMD8iLi4uIjoiIikrWi5zdWJzdHIoLTIwKS5yZXBsYWNlKC9cbi9nLCIiKX0sdXBjb21pbmdJbnB1dDpmdW5jdGlvbigpe3ZhciBaPXRoaXMubWF0Y2g7cmV0dXJuIFoubGVuZ3RoPDIwJiYoWis9dGhpcy5faW5wdXQuc3Vic3RyKDAsMjAtWi5sZW5ndGgpKSwoWi5zdWJzdHIoMCwyMCkrKFoubGVuZ3RoPjIwPyIuLi4iOiIiKSkucmVwbGFjZSgvXG4vZywiIil9LHNob3dQb3NpdGlvbjpmdW5jdGlvbigpe3ZhciBaPXRoaXMucGFzdElucHV0KCksVj1uZXcgQXJyYXkoWi5sZW5ndGgrMSkuam9pbigiLSIpO3JldHVybiBaK3RoaXMudXBjb21pbmdJbnB1dCgpK2AKYCtWKyJeIn0sdGVzdF9tYXRjaDpmdW5jdGlvbihaLFYpe3ZhciBRLHEsVTtpZih0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyJiYoVT17eXlsaW5lbm86dGhpcy55eWxpbmVubyx5eWxsb2M6e2ZpcnN0X2xpbmU6dGhpcy55eWxsb2MuZmlyc3RfbGluZSxsYXN0X2xpbmU6dGhpcy5sYXN0X2xpbmUsZmlyc3RfY29sdW1uOnRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbixsYXN0X2NvbHVtbjp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbn0seXl0ZXh0OnRoaXMueXl0ZXh0LG1hdGNoOnRoaXMubWF0Y2gsbWF0Y2hlczp0aGlzLm1hdGNoZXMsbWF0Y2hlZDp0aGlzLm1hdGNoZWQseXlsZW5nOnRoaXMueXlsZW5nLG9mZnNldDp0aGlzLm9mZnNldCxfbW9yZTp0aGlzLl9tb3JlLF9pbnB1dDp0aGlzLl9pbnB1dCx5eTp0aGlzLnl5LGNvbmRpdGlvblN0YWNrOnRoaXMuY29uZGl0aW9uU3RhY2suc2xpY2UoMCksZG9uZTp0aGlzLmRvbmV9LHRoaXMub3B0aW9ucy5yYW5nZXMmJihVLnl5bGxvYy5yYW5nZT10aGlzLnl5bGxvYy5yYW5nZS5zbGljZSgwKSkpLHE9WlswXS5tYXRjaCgvKD86XHJcbj98XG4pLiovZykscSYmKHRoaXMueXlsaW5lbm8rPXEubGVuZ3RoKSx0aGlzLnl5bGxvYz17Zmlyc3RfbGluZTp0aGlzLnl5bGxvYy5sYXN0X2xpbmUsbGFzdF9saW5lOnRoaXMueXlsaW5lbm8rMSxmaXJzdF9jb2x1bW46dGhpcy55eWxsb2MubGFzdF9jb2x1bW4sbGFzdF9jb2x1bW46cT9xW3EubGVuZ3RoLTFdLmxlbmd0aC1xW3EubGVuZ3RoLTFdLm1hdGNoKC9ccj9cbj8vKVswXS5sZW5ndGg6dGhpcy55eWxsb2MubGFzdF9jb2x1bW4rWlswXS5sZW5ndGh9LHRoaXMueXl0ZXh0Kz1aWzBdLHRoaXMubWF0Y2grPVpbMF0sdGhpcy5tYXRjaGVzPVosdGhpcy55eWxlbmc9dGhpcy55eXRleHQubGVuZ3RoLHRoaXMub3B0aW9ucy5yYW5nZXMmJih0aGlzLnl5bGxvYy5yYW5nZT1bdGhpcy5vZmZzZXQsdGhpcy5vZmZzZXQrPXRoaXMueXlsZW5nXSksdGhpcy5fbW9yZT0hMSx0aGlzLl9iYWNrdHJhY2s9ITEsdGhpcy5faW5wdXQ9dGhpcy5faW5wdXQuc2xpY2UoWlswXS5sZW5ndGgpLHRoaXMubWF0Y2hlZCs9WlswXSxRPXRoaXMucGVyZm9ybUFjdGlvbi5jYWxsKHRoaXMsdGhpcy55eSx0aGlzLFYsdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXSksdGhpcy5kb25lJiZ0aGlzLl9pbnB1dCYmKHRoaXMuZG9uZT0hMSksUSlyZXR1cm4gUTtpZih0aGlzLl9iYWNrdHJhY2spe2Zvcih2YXIgRiBpbiBVKXRoaXNbRl09VVtGXTtyZXR1cm4hMX1yZXR1cm4hMX0sbmV4dDpmdW5jdGlvbigpe2lmKHRoaXMuZG9uZSlyZXR1cm4gdGhpcy5FT0Y7dGhpcy5faW5wdXR8fCh0aGlzLmRvbmU9ITApO3ZhciBaLFYsUSxxO3RoaXMuX21vcmV8fCh0aGlzLnl5dGV4dD0iIix0aGlzLm1hdGNoPSIiKTtmb3IodmFyIFU9dGhpcy5fY3VycmVudFJ1bGVzKCksRj0wO0Y8VS5sZW5ndGg7RisrKWlmKFE9dGhpcy5faW5wdXQubWF0Y2godGhpcy5ydWxlc1tVW0ZdXSksUSYmKCFWfHxRWzBdLmxlbmd0aD5WWzBdLmxlbmd0aCkpe2lmKFY9USxxPUYsdGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlcil7aWYoWj10aGlzLnRlc3RfbWF0Y2goUSxVW0ZdKSxaIT09ITEpcmV0dXJuIFo7aWYodGhpcy5fYmFja3RyYWNrKXtWPSExO2NvbnRpbnVlfWVsc2UgcmV0dXJuITF9ZWxzZSBpZighdGhpcy5vcHRpb25zLmZsZXgpYnJlYWt9cmV0dXJuIFY/KFo9dGhpcy50ZXN0X21hdGNoKFYsVVtxXSksWiE9PSExP1o6ITEpOnRoaXMuX2lucHV0PT09IiI/dGhpcy5FT0Y6dGhpcy5wYXJzZUVycm9yKCJMZXhpY2FsIGVycm9yIG9uIGxpbmUgIisodGhpcy55eWxpbmVubysxKStgLiBVbnJlY29nbml6ZWQgdGV4dC4KYCt0aGlzLnNob3dQb3NpdGlvbigpLHt0ZXh0OiIiLHRva2VuOm51bGwsbGluZTp0aGlzLnl5bGluZW5vfSl9LGxleDpmdW5jdGlvbigpe3ZhciBWPXRoaXMubmV4dCgpO3JldHVybiBWfHx0aGlzLmxleCgpfSxiZWdpbjpmdW5jdGlvbihWKXt0aGlzLmNvbmRpdGlvblN0YWNrLnB1c2goVil9LHBvcFN0YXRlOmZ1bmN0aW9uKCl7dmFyIFY9dGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMTtyZXR1cm4gVj4wP3RoaXMuY29uZGl0aW9uU3RhY2sucG9wKCk6dGhpcy5jb25kaXRpb25TdGFja1swXX0sX2N1cnJlbnRSdWxlczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCYmdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXT90aGlzLmNvbmRpdGlvbnNbdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXV0ucnVsZXM6dGhpcy5jb25kaXRpb25zLklOSVRJQUwucnVsZXN9LHRvcFN0YXRlOmZ1bmN0aW9uKFYpe3JldHVybiBWPXRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTEtTWF0aC5hYnMoVnx8MCksVj49MD90aGlzLmNvbmRpdGlvblN0YWNrW1ZdOiJJTklUSUFMIn0scHVzaFN0YXRlOmZ1bmN0aW9uKFYpe3RoaXMuYmVnaW4oVil9LHN0YXRlU3RhY2tTaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RofSxvcHRpb25zOnsiY2FzZS1pbnNlbnNpdGl2ZSI6ITB9LHBlcmZvcm1BY3Rpb246ZnVuY3Rpb24oVixRLHEsVSl7c3dpdGNoKHEpe2Nhc2UgMDpyZXR1cm4gdGhpcy5iZWdpbigib3Blbl9kaXJlY3RpdmUiKSwxOTtjYXNlIDE6cmV0dXJuIHRoaXMuYmVnaW4oInR5cGVfZGlyZWN0aXZlIiksMjA7Y2FzZSAyOnJldHVybiB0aGlzLnBvcFN0YXRlKCksdGhpcy5iZWdpbigiYXJnX2RpcmVjdGl2ZSIpLDEyO2Nhc2UgMzpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLHRoaXMucG9wU3RhdGUoKSwyMjtjYXNlIDQ6cmV0dXJuIDIxO2Nhc2UgNTpyZXR1cm4idGl0bGUiO2Nhc2UgNjpyZXR1cm4gdGhpcy5iZWdpbigiYWNjX3RpdGxlIiksMTQ7Y2FzZSA3OnJldHVybiB0aGlzLnBvcFN0YXRlKCksImFjY190aXRsZV92YWx1ZSI7Y2FzZSA4OnJldHVybiB0aGlzLmJlZ2luKCJhY2NfZGVzY3IiKSwxNjtjYXNlIDk6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSwiYWNjX2Rlc2NyX3ZhbHVlIjtjYXNlIDEwOnRoaXMuYmVnaW4oImFjY19kZXNjcl9tdWx0aWxpbmUiKTticmVhaztjYXNlIDExOnRoaXMucG9wU3RhdGUoKTticmVhaztjYXNlIDEyOnJldHVybiJhY2NfZGVzY3JfbXVsdGlsaW5lX3ZhbHVlIjtjYXNlIDEzOnJldHVybiA1O2Nhc2UgMTQ6YnJlYWs7Y2FzZSAxNTpicmVhaztjYXNlIDE2OmJyZWFrO2Nhc2UgMTc6cmV0dXJuIDg7Y2FzZSAxODpyZXR1cm4gNjtjYXNlIDE5OnJldHVybiAyODtjYXNlIDIwOnJldHVybiAzOTtjYXNlIDIxOnJldHVybiAzMTtjYXNlIDIyOnJldHVybiAzMDtjYXNlIDIzOnJldHVybiAzMztjYXNlIDI0OnJldHVybiAzNTtjYXNlIDI1OnJldHVybiAzNztjYXNlIDI2OnJldHVybiA0MDtjYXNlIDI3OnJldHVybiA0MTtjYXNlIDI4OnJldHVybiA0MjtjYXNlIDI5OnJldHVybiA0MztjYXNlIDMwOnJldHVybiA0NDtjYXNlIDMxOnJldHVybiA0NTtjYXNlIDMyOnJldHVybiA0NjtjYXNlIDMzOnJldHVybiA0NztjYXNlIDM0OnJldHVybiA0ODtjYXNlIDM1OnJldHVybiA0OTtjYXNlIDM2OnJldHVybiA1MDtjYXNlIDM3OnJldHVybiA1MTtjYXNlIDM4OnJldHVybiA1MjtjYXNlIDM5OnJldHVybiA1MztjYXNlIDQwOnJldHVybiA2NDtjYXNlIDQxOnJldHVybiA2NTtjYXNlIDQyOnJldHVybiA2NjtjYXNlIDQzOnJldHVybiA2NztjYXNlIDQ0OnJldHVybiA2ODtjYXNlIDQ1OnJldHVybiA2OTtjYXNlIDQ2OnJldHVybiA3MDtjYXNlIDQ3OnJldHVybiA1NjtjYXNlIDQ4OnJldHVybiA1ODtjYXNlIDQ5OnJldHVybiA2MDtjYXNlIDUwOnJldHVybiA2MztjYXNlIDUxOnJldHVybiA2MjtjYXNlIDUyOnRoaXMuYmVnaW4oInN0cmluZyIpO2JyZWFrO2Nhc2UgNTM6dGhpcy5wb3BTdGF0ZSgpO2JyZWFrO2Nhc2UgNTQ6cmV0dXJuInFTdHJpbmciO2Nhc2UgNTU6cmV0dXJuIFEueXl0ZXh0PVEueXl0ZXh0LnRyaW0oKSw3MX19LHJ1bGVzOlsvXig/OiUlXHspL2ksL14oPzooKD86KD8hXH0lJSlbXjouXSkqKSkvaSwvXig/OjopL2ksL14oPzpcfSUlKS9pLC9eKD86KCg/Oig/IVx9JSUpLnxcbikqKSkvaSwvXig/OnRpdGxlXHNbXiNcbjtdKykvaSwvXig/OmFjY1RpdGxlXHMqOlxzKikvaSwvXig/Oig/IVxufHwpKlteXG5dKikvaSwvXig/OmFjY0Rlc2NyXHMqOlxzKikvaSwvXig/Oig/IVxufHwpKlteXG5dKikvaSwvXig/OmFjY0Rlc2NyXHMqXHtccyopL2ksL14oPzpbXH1dKS9pLC9eKD86W15cfV0qKS9pLC9eKD86KFxyP1xuKSspL2ksL14oPzpccyspL2ksL14oPzojW15cbl0qKS9pLC9eKD86JVteXG5dKikvaSwvXig/OiQpL2ksL14oPzpyZXF1aXJlbWVudERpYWdyYW1cYikvaSwvXig/Olx7KS9pLC9eKD86XH0pL2ksL14oPzo6KS9pLC9eKD86aWRcYikvaSwvXig/OnRleHRcYikvaSwvXig/OnJpc2tcYikvaSwvXig/OnZlcmlmeU1ldGhvZFxiKS9pLC9eKD86cmVxdWlyZW1lbnRcYikvaSwvXig/OmZ1bmN0aW9uYWxSZXF1aXJlbWVudFxiKS9pLC9eKD86aW50ZXJmYWNlUmVxdWlyZW1lbnRcYikvaSwvXig/OnBlcmZvcm1hbmNlUmVxdWlyZW1lbnRcYikvaSwvXig/OnBoeXNpY2FsUmVxdWlyZW1lbnRcYikvaSwvXig/OmRlc2lnbkNvbnN0cmFpbnRcYikvaSwvXig/Omxvd1xiKS9pLC9eKD86bWVkaXVtXGIpL2ksL14oPzpoaWdoXGIpL2ksL14oPzphbmFseXNpc1xiKS9pLC9eKD86ZGVtb25zdHJhdGlvblxiKS9pLC9eKD86aW5zcGVjdGlvblxiKS9pLC9eKD86dGVzdFxiKS9pLC9eKD86ZWxlbWVudFxiKS9pLC9eKD86Y29udGFpbnNcYikvaSwvXig/OmNvcGllc1xiKS9pLC9eKD86ZGVyaXZlc1xiKS9pLC9eKD86c2F0aXNmaWVzXGIpL2ksL14oPzp2ZXJpZmllc1xiKS9pLC9eKD86cmVmaW5lc1xiKS9pLC9eKD86dHJhY2VzXGIpL2ksL14oPzp0eXBlXGIpL2ksL14oPzpkb2NyZWZcYikvaSwvXig/OjwtKS9pLC9eKD86LT4pL2ksL14oPzotKS9pLC9eKD86WyJdKS9pLC9eKD86WyJdKS9pLC9eKD86W14iXSopL2ksL14oPzpbXHddW15cclxuXHtcPFw+XC1cPV0qKS9pXSxjb25kaXRpb25zOnthY2NfZGVzY3JfbXVsdGlsaW5lOntydWxlczpbMTEsMTJdLGluY2x1c2l2ZTohMX0sYWNjX2Rlc2NyOntydWxlczpbOV0saW5jbHVzaXZlOiExfSxhY2NfdGl0bGU6e3J1bGVzOls3XSxpbmNsdXNpdmU6ITF9LGNsb3NlX2RpcmVjdGl2ZTp7cnVsZXM6W10saW5jbHVzaXZlOiExfSxhcmdfZGlyZWN0aXZlOntydWxlczpbMyw0XSxpbmNsdXNpdmU6ITF9LHR5cGVfZGlyZWN0aXZlOntydWxlczpbMiwzXSxpbmNsdXNpdmU6ITF9LG9wZW5fZGlyZWN0aXZlOntydWxlczpbMV0saW5jbHVzaXZlOiExfSx1bnFTdHJpbmc6e3J1bGVzOltdLGluY2x1c2l2ZTohMX0sdG9rZW46e3J1bGVzOltdLGluY2x1c2l2ZTohMX0sc3RyaW5nOntydWxlczpbNTMsNTRdLGluY2x1c2l2ZTohMX0sSU5JVElBTDp7cnVsZXM6WzAsNSw2LDgsMTAsMTMsMTQsMTUsMTYsMTcsMTgsMTksMjAsMjEsMjIsMjMsMjQsMjUsMjYsMjcsMjgsMjksMzAsMzEsMzIsMzMsMzQsMzUsMzYsMzcsMzgsMzksNDAsNDEsNDIsNDMsNDQsNDUsNDYsNDcsNDgsNDksNTAsNTEsNTIsNTVdLGluY2x1c2l2ZTohMH19fTtyZXR1cm4gaXR9KCk7Vy5sZXhlcj10dDtmdW5jdGlvbiBLKCl7dGhpcy55eT17fX1yZXR1cm4gSy5wcm90b3R5cGU9VyxXLlBhcnNlcj1LLG5ldyBLfSgpO1k0LnBhcnNlcj1ZNDtjb25zdCBjaXQ9dD0+dC5tYXRjaCgvXlxzKnJlcXVpcmVtZW50KERpYWdyYW0pPy8pIT09bnVsbDtsZXQgVTQ9W10sa249e30sY3U9e30scnM9e30sdXU9e307Y29uc3QgdWl0PXtSZXF1aXJlbWVudFR5cGU6e1JFUVVJUkVNRU5UOiJSZXF1aXJlbWVudCIsRlVOQ1RJT05BTF9SRVFVSVJFTUVOVDoiRnVuY3Rpb25hbCBSZXF1aXJlbWVudCIsSU5URVJGQUNFX1JFUVVJUkVNRU5UOiJJbnRlcmZhY2UgUmVxdWlyZW1lbnQiLFBFUkZPUk1BTkNFX1JFUVVJUkVNRU5UOiJQZXJmb3JtYW5jZSBSZXF1aXJlbWVudCIsUEhZU0lDQUxfUkVRVUlSRU1FTlQ6IlBoeXNpY2FsIFJlcXVpcmVtZW50IixERVNJR05fQ09OU1RSQUlOVDoiRGVzaWduIENvbnN0cmFpbnQifSxSaXNrTGV2ZWw6e0xPV19SSVNLOiJMb3ciLE1FRF9SSVNLOiJNZWRpdW0iLEhJR0hfUklTSzoiSGlnaCJ9LFZlcmlmeVR5cGU6e1ZFUklGWV9BTkFMWVNJUzoiQW5hbHlzaXMiLFZFUklGWV9ERU1PTlNUUkFUSU9OOiJEZW1vbnN0cmF0aW9uIixWRVJJRllfSU5TUEVDVElPTjoiSW5zcGVjdGlvbiIsVkVSSUZZX1RFU1Q6IlRlc3QifSxSZWxhdGlvbnNoaXBzOntDT05UQUlOUzoiY29udGFpbnMiLENPUElFUzoiY29waWVzIixERVJJVkVTOiJkZXJpdmVzIixTQVRJU0ZJRVM6InNhdGlzZmllcyIsVkVSSUZJRVM6InZlcmlmaWVzIixSRUZJTkVTOiJyZWZpbmVzIixUUkFDRVM6InRyYWNlcyJ9LHBhcnNlRGlyZWN0aXZlOmZ1bmN0aW9uKHQsZSxyKXtYZS5wYXJzZURpcmVjdGl2ZSh0aGlzLHQsZSxyKX0sZ2V0Q29uZmlnOigpPT5udCgpLnJlcSxhZGRSZXF1aXJlbWVudDoodCxlKT0+KHR5cGVvZiBjdVt0XT4idSImJihjdVt0XT17bmFtZTp0LHR5cGU6ZSxpZDprbi5pZCx0ZXh0OmtuLnRleHQscmlzazprbi5yaXNrLHZlcmlmeU1ldGhvZDprbi52ZXJpZnlNZXRob2R9KSxrbj17fSxjdVt0XSksZ2V0UmVxdWlyZW1lbnRzOigpPT5jdSxzZXROZXdSZXFJZDp0PT57dHlwZW9mIGtuPCJ1IiYmKGtuLmlkPXQpfSxzZXROZXdSZXFUZXh0OnQ9Pnt0eXBlb2Yga248InUiJiYoa24udGV4dD10KX0sc2V0TmV3UmVxUmlzazp0PT57dHlwZW9mIGtuPCJ1IiYmKGtuLnJpc2s9dCl9LHNldE5ld1JlcVZlcmlmeU1ldGhvZDp0PT57dHlwZW9mIGtuPCJ1IiYmKGtuLnZlcmlmeU1ldGhvZD10KX0sc2V0QWNjVGl0bGU6WW4sZ2V0QWNjVGl0bGU6dWksc2V0QWNjRGVzY3JpcHRpb246aGksZ2V0QWNjRGVzY3JpcHRpb246ZmksYWRkRWxlbWVudDp0PT4odHlwZW9mIHV1W3RdPiJ1IiYmKHV1W3RdPXtuYW1lOnQsdHlwZTpycy50eXBlLGRvY1JlZjpycy5kb2NSZWZ9LEguaW5mbygiQWRkZWQgbmV3IHJlcXVpcmVtZW50OiAiLHQpKSxycz17fSx1dVt0XSksZ2V0RWxlbWVudHM6KCk9PnV1LHNldE5ld0VsZW1lbnRUeXBlOnQ9Pnt0eXBlb2YgcnM8InUiJiYocnMudHlwZT10KX0sc2V0TmV3RWxlbWVudERvY1JlZjp0PT57dHlwZW9mIHJzPCJ1IiYmKHJzLmRvY1JlZj10KX0sYWRkUmVsYXRpb25zaGlwOih0LGUscik9PntVNC5wdXNoKHt0eXBlOnQsc3JjOmUsZHN0OnJ9KX0sZ2V0UmVsYXRpb25zaGlwczooKT0+VTQsY2xlYXI6KCk9PntVND1bXSxrbj17fSxjdT17fSxycz17fSx1dT17fSxjaSgpfX0sVzQ9e0NPTlRBSU5TOiJjb250YWlucyIsQVJST1c6ImFycm93In0sc0w9e1JlcU1hcmtlcnM6VzQsaW5zZXJ0TGluZUVuZGluZ3M6KHQsZSk9PntsZXQgcj10LmFwcGVuZCgiZGVmcyIpLmFwcGVuZCgibWFya2VyIikuYXR0cigiaWQiLFc0LkNPTlRBSU5TKyJfbGluZV9lbmRpbmciKS5hdHRyKCJyZWZYIiwwKS5hdHRyKCJyZWZZIixlLmxpbmVfaGVpZ2h0LzIpLmF0dHIoIm1hcmtlcldpZHRoIixlLmxpbmVfaGVpZ2h0KS5hdHRyKCJtYXJrZXJIZWlnaHQiLGUubGluZV9oZWlnaHQpLmF0dHIoIm9yaWVudCIsImF1dG8iKS5hcHBlbmQoImciKTtyLmFwcGVuZCgiY2lyY2xlIikuYXR0cigiY3giLGUubGluZV9oZWlnaHQvMikuYXR0cigiY3kiLGUubGluZV9oZWlnaHQvMikuYXR0cigiciIsZS5saW5lX2hlaWdodC8yKS5hdHRyKCJmaWxsIiwibm9uZSIpLHIuYXBwZW5kKCJsaW5lIikuYXR0cigieDEiLDApLmF0dHIoIngyIixlLmxpbmVfaGVpZ2h0KS5hdHRyKCJ5MSIsZS5saW5lX2hlaWdodC8yKS5hdHRyKCJ5MiIsZS5saW5lX2hlaWdodC8yKS5hdHRyKCJzdHJva2Utd2lkdGgiLDEpLHIuYXBwZW5kKCJsaW5lIikuYXR0cigieTEiLDApLmF0dHIoInkyIixlLmxpbmVfaGVpZ2h0KS5hdHRyKCJ4MSIsZS5saW5lX2hlaWdodC8yKS5hdHRyKCJ4MiIsZS5saW5lX2hlaWdodC8yKS5hdHRyKCJzdHJva2Utd2lkdGgiLDEpLHQuYXBwZW5kKCJkZWZzIikuYXBwZW5kKCJtYXJrZXIiKS5hdHRyKCJpZCIsVzQuQVJST1crIl9saW5lX2VuZGluZyIpLmF0dHIoInJlZlgiLGUubGluZV9oZWlnaHQpLmF0dHIoInJlZlkiLC41KmUubGluZV9oZWlnaHQpLmF0dHIoIm1hcmtlcldpZHRoIixlLmxpbmVfaGVpZ2h0KS5hdHRyKCJtYXJrZXJIZWlnaHQiLGUubGluZV9oZWlnaHQpLmF0dHIoIm9yaWVudCIsImF1dG8iKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIixgTTAsMAogICAgICBMJHtlLmxpbmVfaGVpZ2h0fSwke2UubGluZV9oZWlnaHQvMn0KICAgICAgTSR7ZS5saW5lX2hlaWdodH0sJHtlLmxpbmVfaGVpZ2h0LzJ9CiAgICAgIEwwLCR7ZS5saW5lX2hlaWdodH1gKS5hdHRyKCJzdHJva2Utd2lkdGgiLDEpfX07bGV0IHNyPXt9LG9MPTA7Y29uc3QgbEw9KHQsZSk9PnQuaW5zZXJ0KCJyZWN0IiwiIyIrZSkuYXR0cigiY2xhc3MiLCJyZXEgcmVxQm94IikuYXR0cigieCIsMCkuYXR0cigieSIsMCkuYXR0cigid2lkdGgiLHNyLnJlY3RfbWluX3dpZHRoKyJweCIpLmF0dHIoImhlaWdodCIsc3IucmVjdF9taW5faGVpZ2h0KyJweCIpLGNMPSh0LGUscik9PntsZXQgbj1zci5yZWN0X21pbl93aWR0aC8yLGk9dC5hcHBlbmQoInRleHQiKS5hdHRyKCJjbGFzcyIsInJlcSByZXFMYWJlbCByZXFUaXRsZSIpLmF0dHIoImlkIixlKS5hdHRyKCJ4IixuKS5hdHRyKCJ5Iixzci5yZWN0X3BhZGRpbmcpLmF0dHIoImRvbWluYW50LWJhc2VsaW5lIiwiaGFuZ2luZyIpLGE9MDtyLmZvckVhY2godT0+e2E9PTA/aS5hcHBlbmQoInRzcGFuIikuYXR0cigidGV4dC1hbmNob3IiLCJtaWRkbGUiKS5hdHRyKCJ4Iixzci5yZWN0X21pbl93aWR0aC8yKS5hdHRyKCJkeSIsMCkudGV4dCh1KTppLmFwcGVuZCgidHNwYW4iKS5hdHRyKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLmF0dHIoIngiLHNyLnJlY3RfbWluX3dpZHRoLzIpLmF0dHIoImR5Iixzci5saW5lX2hlaWdodCouNzUpLnRleHQodSksYSsrfSk7bGV0IHM9MS41KnNyLnJlY3RfcGFkZGluZyxvPWEqc3IubGluZV9oZWlnaHQqLjc1LGw9cytvO3JldHVybiB0LmFwcGVuZCgibGluZSIpLmF0dHIoImNsYXNzIiwicmVxLXRpdGxlLWxpbmUiKS5hdHRyKCJ4MSIsIjAiKS5hdHRyKCJ4MiIsc3IucmVjdF9taW5fd2lkdGgpLmF0dHIoInkxIixsKS5hdHRyKCJ5MiIsbCkse3RpdGxlTm9kZTppLHk6bH19LHVMPSh0LGUscixuKT0+e2xldCBpPXQuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJyZXEgcmVxTGFiZWwiKS5hdHRyKCJpZCIsZSkuYXR0cigieCIsc3IucmVjdF9wYWRkaW5nKS5hdHRyKCJ5IixuKS5hdHRyKCJkb21pbmFudC1iYXNlbGluZSIsImhhbmdpbmciKSxhPTA7Y29uc3Qgcz0zMDtsZXQgbz1bXTtyZXR1cm4gci5mb3JFYWNoKGw9PntsZXQgdT1sLmxlbmd0aDtmb3IoO3U+cyYmYTwzOyl7bGV0IGg9bC5zdWJzdHJpbmcoMCxzKTtsPWwuc3Vic3RyaW5nKHMsbC5sZW5ndGgpLHU9bC5sZW5ndGgsb1tvLmxlbmd0aF09aCxhKyt9aWYoYT09Myl7bGV0IGg9b1tvLmxlbmd0aC0xXTtvW28ubGVuZ3RoLTFdPWguc3Vic3RyaW5nKDAsaC5sZW5ndGgtNCkrIi4uLiJ9ZWxzZSBvW28ubGVuZ3RoXT1sO2E9MH0pLG8uZm9yRWFjaChsPT57aS5hcHBlbmQoInRzcGFuIikuYXR0cigieCIsc3IucmVjdF9wYWRkaW5nKS5hdHRyKCJkeSIsc3IubGluZV9oZWlnaHQpLnRleHQobCl9KSxpfSxoaXQ9KHQsZSxyLG4pPT57Y29uc3QgaT1lLm5vZGUoKS5nZXRUb3RhbExlbmd0aCgpLGE9ZS5ub2RlKCkuZ2V0UG9pbnRBdExlbmd0aChpKi41KSxzPSJyZWwiK29MO29MKys7Y29uc3QgbD10LmFwcGVuZCgidGV4dCIpLmF0dHIoImNsYXNzIiwicmVxIHJlbGF0aW9uc2hpcExhYmVsIikuYXR0cigiaWQiLHMpLmF0dHIoIngiLGEueCkuYXR0cigieSIsYS55KS5hdHRyKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLmF0dHIoImRvbWluYW50LWJhc2VsaW5lIiwibWlkZGxlIikudGV4dChuKS5ub2RlKCkuZ2V0QkJveCgpO3QuaW5zZXJ0KCJyZWN0IiwiIyIrcykuYXR0cigiY2xhc3MiLCJyZXEgcmVxTGFiZWxCb3giKS5hdHRyKCJ4IixhLngtbC53aWR0aC8yKS5hdHRyKCJ5IixhLnktbC5oZWlnaHQvMikuYXR0cigid2lkdGgiLGwud2lkdGgpLmF0dHIoImhlaWdodCIsbC5oZWlnaHQpLmF0dHIoImZpbGwiLCJ3aGl0ZSIpLmF0dHIoImZpbGwtb3BhY2l0eSIsIjg1JSIpfSxmaXQ9ZnVuY3Rpb24odCxlLHIsbixpKXtjb25zdCBhPXIuZWRnZShjbChlLnNyYyksY2woZS5kc3QpKSxzPVVhKCkueChmdW5jdGlvbihsKXtyZXR1cm4gbC54fSkueShmdW5jdGlvbihsKXtyZXR1cm4gbC55fSksbz10Lmluc2VydCgicGF0aCIsIiMiK24pLmF0dHIoImNsYXNzIiwiZXIgcmVsYXRpb25zaGlwTGluZSIpLmF0dHIoImQiLHMoYS5wb2ludHMpKS5hdHRyKCJmaWxsIiwibm9uZSIpO2UudHlwZT09aS5kYi5SZWxhdGlvbnNoaXBzLkNPTlRBSU5TP28uYXR0cigibWFya2VyLXN0YXJ0IiwidXJsKCIrcGUuZ2V0VXJsKHNyLmFycm93TWFya2VyQWJzb2x1dGUpKyIjIitlLnR5cGUrIl9saW5lX2VuZGluZykiKTooby5hdHRyKCJzdHJva2UtZGFzaGFycmF5IiwiMTAsNyIpLG8uYXR0cigibWFya2VyLWVuZCIsInVybCgiK3BlLmdldFVybChzci5hcnJvd01hcmtlckFic29sdXRlKSsiIyIrc0wuUmVxTWFya2Vycy5BUlJPVysiX2xpbmVfZW5kaW5nKSIpKSxoaXQodCxvLHNyLGA8PCR7ZS50eXBlfT4+YCl9LGRpdD0odCxlLHIpPT57T2JqZWN0LmtleXModCkuZm9yRWFjaChuPT57bGV0IGk9dFtuXTtuPWNsKG4pLEguaW5mbygiQWRkZWQgbmV3IHJlcXVpcmVtZW50OiAiLG4pO2NvbnN0IGE9ci5hcHBlbmQoImciKS5hdHRyKCJpZCIsbikscz0icmVxLSIrbixvPWxMKGEscyk7bGV0IGw9Y0woYSxuKyJfdGl0bGUiLFtgPDwke2kudHlwZX0+PmAsYCR7aS5uYW1lfWBdKTt1TChhLG4rIl9ib2R5IixbYElkOiAke2kuaWR9YCxgVGV4dDogJHtpLnRleHR9YCxgUmlzazogJHtpLnJpc2t9YCxgVmVyaWZpY2F0aW9uOiAke2kudmVyaWZ5TWV0aG9kfWBdLGwueSk7Y29uc3QgdT1vLm5vZGUoKS5nZXRCQm94KCk7ZS5zZXROb2RlKG4se3dpZHRoOnUud2lkdGgsaGVpZ2h0OnUuaGVpZ2h0LHNoYXBlOiJyZWN0IixpZDpufSl9KX0scGl0PSh0LGUscik9PntPYmplY3Qua2V5cyh0KS5mb3JFYWNoKG49PntsZXQgaT10W25dO2NvbnN0IGE9Y2wobikscz1yLmFwcGVuZCgiZyIpLmF0dHIoImlkIixhKSxvPSJlbGVtZW50LSIrYSxsPWxMKHMsbyk7bGV0IHU9Y0wocyxvKyJfdGl0bGUiLFsiPDxFbGVtZW50Pj4iLGAke259YF0pO3VMKHMsbysiX2JvZHkiLFtgVHlwZTogJHtpLnR5cGV8fCJOb3QgU3BlY2lmaWVkIn1gLGBEb2MgUmVmOiAke2kuZG9jUmVmfHwiTm9uZSJ9YF0sdS55KTtjb25zdCBoPWwubm9kZSgpLmdldEJCb3goKTtlLnNldE5vZGUoYSx7d2lkdGg6aC53aWR0aCxoZWlnaHQ6aC5oZWlnaHQsc2hhcGU6InJlY3QiLGlkOmF9KX0pfSxnaXQ9KHQsZSk9Pih0LmZvckVhY2goZnVuY3Rpb24ocil7bGV0IG49Y2woci5zcmMpLGk9Y2woci5kc3QpO2Uuc2V0RWRnZShuLGkse3JlbGF0aW9uc2hpcDpyfSl9KSx0KSx5aXQ9ZnVuY3Rpb24odCxlKXtlLm5vZGVzKCkuZm9yRWFjaChmdW5jdGlvbihyKXt0eXBlb2YgcjwidSImJnR5cGVvZiBlLm5vZGUocik8InUiJiYodC5zZWxlY3QoIiMiK3IpLHQuc2VsZWN0KCIjIityKS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIisoZS5ub2RlKHIpLngtZS5ub2RlKHIpLndpZHRoLzIpKyIsIisoZS5ub2RlKHIpLnktZS5ub2RlKHIpLmhlaWdodC8yKSsiICkiKSl9KX0sY2w9dD0+dC5yZXBsYWNlKC9ccy9nLCIiKS5yZXBsYWNlKC9cLi9nLCJfIiksbWl0PXtkcmF3Oih0LGUscixuKT0+e3NyPW50KCkucmVxdWlyZW1lbnQsbi5kYi5jbGVhcigpLG4ucGFyc2VyLnBhcnNlKHQpO2NvbnN0IGk9c3Iuc2VjdXJpdHlMZXZlbDtsZXQgYTtpPT09InNhbmRib3giJiYoYT1TdCgiI2kiK2UpKTtjb25zdCBvPVN0KGk9PT0ic2FuZGJveCI/YS5ub2RlcygpWzBdLmNvbnRlbnREb2N1bWVudC5ib2R5OiJib2R5Iikuc2VsZWN0KGBbaWQ9JyR7ZX0nXWApO3NMLmluc2VydExpbmVFbmRpbmdzKG8sc3IpO2NvbnN0IGw9bmV3IGNyLkdyYXBoKHttdWx0aWdyYXBoOiExLGNvbXBvdW5kOiExLGRpcmVjdGVkOiEwfSkuc2V0R3JhcGgoe3JhbmtkaXI6c3IubGF5b3V0RGlyZWN0aW9uLG1hcmdpbng6MjAsbWFyZ2lueToyMCxub2Rlc2VwOjEwMCxlZGdlc2VwOjEwMCxyYW5rc2VwOjEwMH0pLnNldERlZmF1bHRFZGdlTGFiZWwoZnVuY3Rpb24oKXtyZXR1cm57fX0pO2xldCB1PW4uZGIuZ2V0UmVxdWlyZW1lbnRzKCksaD1uLmRiLmdldEVsZW1lbnRzKCksZD1uLmRiLmdldFJlbGF0aW9uc2hpcHMoKTtkaXQodSxsLG8pLHBpdChoLGwsbyksZ2l0KGQsbCksWmMubGF5b3V0KGwpLHlpdChvLGwpLGQuZm9yRWFjaChmdW5jdGlvbih5KXtmaXQobyx5LGwsZSxuKX0pO2NvbnN0IGY9c3IucmVjdF9wYWRkaW5nLHA9by5ub2RlKCkuZ2V0QkJveCgpLG09cC53aWR0aCtmKjIsXz1wLmhlaWdodCtmKjI7bGkobyxfLG0sc3IudXNlTWF4V2lkdGgpLG8uYXR0cigidmlld0JveCIsYCR7cC54LWZ9ICR7cC55LWZ9ICR7bX0gJHtffWApLGJuKG4uZGIsbyxlKX19O3ZhciBIND1mdW5jdGlvbigpe3ZhciB0PWZ1bmN0aW9uKGl0LFosVixRKXtmb3IoVj1WfHx7fSxRPWl0Lmxlbmd0aDtRLS07VltpdFtRXV09Wik7cmV0dXJuIFZ9LGU9WzEsMl0scj1bMSwzXSxuPVsxLDVdLGk9WzEsN10sYT1bMiw1XSxzPVsxLDE1XSxvPVsxLDE3XSxsPVsxLDE4XSx1PVsxLDE5XSxoPVsxLDIxXSxkPVsxLDIyXSxmPVsxLDIzXSxwPVsxLDI5XSxtPVsxLDMwXSxfPVsxLDMxXSx5PVsxLDMyXSxiPVsxLDMzXSx4PVsxLDM0XSxrPVsxLDM1XSxUPVsxLDM2XSxDPVsxLDM3XSxNPVsxLDM4XSxTPVsxLDM5XSxSPVsxLDQwXSxBPVsxLDQzXSxMPVsxLDQ0XSx2PVsxLDQ1XSxCPVsxLDQ2XSx3PVsxLDQ3XSxEPVsxLDQ4XSxOPVsxLDUxXSx6PVsxLDQsNSwxNiwyMCwyMiwyNSwyNiwzMiwzMywzNCwzNiwzOCwzOSw0MCw0MSw0Miw0Myw0NSw0Nyw0OSw1MCw1MSw1Miw1Myw1OCw1OSw2MCw2MSw2OSw3OV0sWD1bNCw1LDE2LDIwLDIyLDI1LDI2LDMyLDMzLDM0LDM2LDM4LDM5LDQwLDQxLDQyLDQzLDQ1LDQ3LDQ5LDUzLDU4LDU5LDYwLDYxLDY5LDc5XSxjdD1bNCw1LDE2LDIwLDIyLDI1LDI2LDMyLDMzLDM0LDM2LDM4LDM5LDQwLDQxLDQyLDQzLDQ1LDQ3LDQ5LDUyLDUzLDU4LDU5LDYwLDYxLDY5LDc5XSxKPVs0LDUsMTYsMjAsMjIsMjUsMjYsMzIsMzMsMzQsMzYsMzgsMzksNDAsNDEsNDIsNDMsNDUsNDcsNDksNTEsNTMsNTgsNTksNjAsNjEsNjksNzldLFk9WzQsNSwxNiwyMCwyMiwyNSwyNiwzMiwzMywzNCwzNiwzOCwzOSw0MCw0MSw0Miw0Myw0NSw0Nyw0OSw1MCw1Myw1OCw1OSw2MCw2MSw2OSw3OV0sJD1bNjcsNjgsNjldLGx0PVsxLDEyMV0sdXQ9WzEsNCw1LDcsMTYsMjAsMjIsMjUsMjYsMzIsMzMsMzQsMzYsMzgsMzksNDAsNDEsNDIsNDMsNDUsNDcsNDksNTAsNTEsNTIsNTMsNTgsNTksNjAsNjEsNjksNzldLFc9e3RyYWNlOmZ1bmN0aW9uKCl7fSx5eTp7fSxzeW1ib2xzXzp7ZXJyb3I6MixzdGFydDozLFNQQUNFOjQsTkVXTElORTo1LGRpcmVjdGl2ZTo2LFNEOjcsZG9jdW1lbnQ6OCxsaW5lOjksc3RhdGVtZW50OjEwLG9wZW5EaXJlY3RpdmU6MTEsdHlwZURpcmVjdGl2ZToxMixjbG9zZURpcmVjdGl2ZToxMywiOiI6MTQsYXJnRGlyZWN0aXZlOjE1LHBhcnRpY2lwYW50OjE2LGFjdG9yOjE3LEFTOjE4LHJlc3RPZkxpbmU6MTkscGFydGljaXBhbnRfYWN0b3I6MjAsc2lnbmFsOjIxLGF1dG9udW1iZXI6MjIsTlVNOjIzLG9mZjoyNCxhY3RpdmF0ZToyNSxkZWFjdGl2YXRlOjI2LG5vdGVfc3RhdGVtZW50OjI3LGxpbmtzX3N0YXRlbWVudDoyOCxsaW5rX3N0YXRlbWVudDoyOSxwcm9wZXJ0aWVzX3N0YXRlbWVudDozMCxkZXRhaWxzX3N0YXRlbWVudDozMSx0aXRsZTozMixsZWdhY3lfdGl0bGU6MzMsYWNjX3RpdGxlOjM0LGFjY190aXRsZV92YWx1ZTozNSxhY2NfZGVzY3I6MzYsYWNjX2Rlc2NyX3ZhbHVlOjM3LGFjY19kZXNjcl9tdWx0aWxpbmVfdmFsdWU6MzgsbG9vcDozOSxlbmQ6NDAscmVjdDo0MSxvcHQ6NDIsYWx0OjQzLGVsc2Vfc2VjdGlvbnM6NDQscGFyOjQ1LHBhcl9zZWN0aW9uczo0Nixjcml0aWNhbDo0NyxvcHRpb25fc2VjdGlvbnM6NDgsYnJlYWs6NDksb3B0aW9uOjUwLGFuZDo1MSxlbHNlOjUyLG5vdGU6NTMscGxhY2VtZW50OjU0LHRleHQyOjU1LG92ZXI6NTYsYWN0b3JfcGFpcjo1NyxsaW5rczo1OCxsaW5rOjU5LHByb3BlcnRpZXM6NjAsZGV0YWlsczo2MSxzcGFjZUxpc3Q6NjIsIiwiOjYzLGxlZnRfb2Y6NjQscmlnaHRfb2Y6NjUsc2lnbmFsdHlwZTo2NiwiKyI6NjcsIi0iOjY4LEFDVE9SOjY5LFNPTElEX09QRU5fQVJST1c6NzAsRE9UVEVEX09QRU5fQVJST1c6NzEsU09MSURfQVJST1c6NzIsRE9UVEVEX0FSUk9XOjczLFNPTElEX0NST1NTOjc0LERPVFRFRF9DUk9TUzo3NSxTT0xJRF9QT0lOVDo3NixET1RURURfUE9JTlQ6NzcsVFhUOjc4LG9wZW5fZGlyZWN0aXZlOjc5LHR5cGVfZGlyZWN0aXZlOjgwLGFyZ19kaXJlY3RpdmU6ODEsY2xvc2VfZGlyZWN0aXZlOjgyLCRhY2NlcHQ6MCwkZW5kOjF9LHRlcm1pbmFsc186ezI6ImVycm9yIiw0OiJTUEFDRSIsNToiTkVXTElORSIsNzoiU0QiLDE0OiI6IiwxNjoicGFydGljaXBhbnQiLDE4OiJBUyIsMTk6InJlc3RPZkxpbmUiLDIwOiJwYXJ0aWNpcGFudF9hY3RvciIsMjI6ImF1dG9udW1iZXIiLDIzOiJOVU0iLDI0OiJvZmYiLDI1OiJhY3RpdmF0ZSIsMjY6ImRlYWN0aXZhdGUiLDMyOiJ0aXRsZSIsMzM6ImxlZ2FjeV90aXRsZSIsMzQ6ImFjY190aXRsZSIsMzU6ImFjY190aXRsZV92YWx1ZSIsMzY6ImFjY19kZXNjciIsMzc6ImFjY19kZXNjcl92YWx1ZSIsMzg6ImFjY19kZXNjcl9tdWx0aWxpbmVfdmFsdWUiLDM5OiJsb29wIiw0MDoiZW5kIiw0MToicmVjdCIsNDI6Im9wdCIsNDM6ImFsdCIsNDU6InBhciIsNDc6ImNyaXRpY2FsIiw0OToiYnJlYWsiLDUwOiJvcHRpb24iLDUxOiJhbmQiLDUyOiJlbHNlIiw1Mzoibm90ZSIsNTY6Im92ZXIiLDU4OiJsaW5rcyIsNTk6ImxpbmsiLDYwOiJwcm9wZXJ0aWVzIiw2MToiZGV0YWlscyIsNjM6IiwiLDY0OiJsZWZ0X29mIiw2NToicmlnaHRfb2YiLDY3OiIrIiw2ODoiLSIsNjk6IkFDVE9SIiw3MDoiU09MSURfT1BFTl9BUlJPVyIsNzE6IkRPVFRFRF9PUEVOX0FSUk9XIiw3MjoiU09MSURfQVJST1ciLDczOiJET1RURURfQVJST1ciLDc0OiJTT0xJRF9DUk9TUyIsNzU6IkRPVFRFRF9DUk9TUyIsNzY6IlNPTElEX1BPSU5UIiw3NzoiRE9UVEVEX1BPSU5UIiw3ODoiVFhUIiw3OToib3Blbl9kaXJlY3RpdmUiLDgwOiJ0eXBlX2RpcmVjdGl2ZSIsODE6ImFyZ19kaXJlY3RpdmUiLDgyOiJjbG9zZV9kaXJlY3RpdmUifSxwcm9kdWN0aW9uc186WzAsWzMsMl0sWzMsMl0sWzMsMl0sWzMsMl0sWzgsMF0sWzgsMl0sWzksMl0sWzksMV0sWzksMV0sWzYsNF0sWzYsNl0sWzEwLDVdLFsxMCwzXSxbMTAsNV0sWzEwLDNdLFsxMCwyXSxbMTAsNF0sWzEwLDNdLFsxMCwzXSxbMTAsMl0sWzEwLDNdLFsxMCwzXSxbMTAsMl0sWzEwLDJdLFsxMCwyXSxbMTAsMl0sWzEwLDJdLFsxMCwxXSxbMTAsMV0sWzEwLDJdLFsxMCwyXSxbMTAsMV0sWzEwLDRdLFsxMCw0XSxbMTAsNF0sWzEwLDRdLFsxMCw0XSxbMTAsNF0sWzEwLDRdLFsxMCwxXSxbNDgsMV0sWzQ4LDRdLFs0NiwxXSxbNDYsNF0sWzQ0LDFdLFs0NCw0XSxbMjcsNF0sWzI3LDRdLFsyOCwzXSxbMjksM10sWzMwLDNdLFszMSwzXSxbNjIsMl0sWzYyLDFdLFs1NywzXSxbNTcsMV0sWzU0LDFdLFs1NCwxXSxbMjEsNV0sWzIxLDVdLFsyMSw0XSxbMTcsMV0sWzY2LDFdLFs2NiwxXSxbNjYsMV0sWzY2LDFdLFs2NiwxXSxbNjYsMV0sWzY2LDFdLFs2NiwxXSxbNTUsMV0sWzExLDFdLFsxMiwxXSxbMTUsMV0sWzEzLDFdXSxwZXJmb3JtQWN0aW9uOmZ1bmN0aW9uKFosVixRLHEsVSxGLGope3ZhciBQPUYubGVuZ3RoLTE7c3dpdGNoKFUpe2Nhc2UgNDpyZXR1cm4gcS5hcHBseShGW1BdKSxGW1BdO2Nhc2UgNTp0aGlzLiQ9W107YnJlYWs7Y2FzZSA2OkZbUC0xXS5wdXNoKEZbUF0pLHRoaXMuJD1GW1AtMV07YnJlYWs7Y2FzZSA3OmNhc2UgODp0aGlzLiQ9RltQXTticmVhaztjYXNlIDk6dGhpcy4kPVtdO2JyZWFrO2Nhc2UgMTI6RltQLTNdLnR5cGU9ImFkZFBhcnRpY2lwYW50IixGW1AtM10uZGVzY3JpcHRpb249cS5wYXJzZU1lc3NhZ2UoRltQLTFdKSx0aGlzLiQ9RltQLTNdO2JyZWFrO2Nhc2UgMTM6RltQLTFdLnR5cGU9ImFkZFBhcnRpY2lwYW50Iix0aGlzLiQ9RltQLTFdO2JyZWFrO2Nhc2UgMTQ6RltQLTNdLnR5cGU9ImFkZEFjdG9yIixGW1AtM10uZGVzY3JpcHRpb249cS5wYXJzZU1lc3NhZ2UoRltQLTFdKSx0aGlzLiQ9RltQLTNdO2JyZWFrO2Nhc2UgMTU6RltQLTFdLnR5cGU9ImFkZEFjdG9yIix0aGlzLiQ9RltQLTFdO2JyZWFrO2Nhc2UgMTc6dGhpcy4kPXt0eXBlOiJzZXF1ZW5jZUluZGV4IixzZXF1ZW5jZUluZGV4Ok51bWJlcihGW1AtMl0pLHNlcXVlbmNlSW5kZXhTdGVwOk51bWJlcihGW1AtMV0pLHNlcXVlbmNlVmlzaWJsZTohMCxzaWduYWxUeXBlOnEuTElORVRZUEUuQVVUT05VTUJFUn07YnJlYWs7Y2FzZSAxODp0aGlzLiQ9e3R5cGU6InNlcXVlbmNlSW5kZXgiLHNlcXVlbmNlSW5kZXg6TnVtYmVyKEZbUC0xXSksc2VxdWVuY2VJbmRleFN0ZXA6MSxzZXF1ZW5jZVZpc2libGU6ITAsc2lnbmFsVHlwZTpxLkxJTkVUWVBFLkFVVE9OVU1CRVJ9O2JyZWFrO2Nhc2UgMTk6dGhpcy4kPXt0eXBlOiJzZXF1ZW5jZUluZGV4IixzZXF1ZW5jZVZpc2libGU6ITEsc2lnbmFsVHlwZTpxLkxJTkVUWVBFLkFVVE9OVU1CRVJ9O2JyZWFrO2Nhc2UgMjA6dGhpcy4kPXt0eXBlOiJzZXF1ZW5jZUluZGV4IixzZXF1ZW5jZVZpc2libGU6ITAsc2lnbmFsVHlwZTpxLkxJTkVUWVBFLkFVVE9OVU1CRVJ9O2JyZWFrO2Nhc2UgMjE6dGhpcy4kPXt0eXBlOiJhY3RpdmVTdGFydCIsc2lnbmFsVHlwZTpxLkxJTkVUWVBFLkFDVElWRV9TVEFSVCxhY3RvcjpGW1AtMV19O2JyZWFrO2Nhc2UgMjI6dGhpcy4kPXt0eXBlOiJhY3RpdmVFbmQiLHNpZ25hbFR5cGU6cS5MSU5FVFlQRS5BQ1RJVkVfRU5ELGFjdG9yOkZbUC0xXX07YnJlYWs7Y2FzZSAyODpxLnNldERpYWdyYW1UaXRsZShGW1BdLnN1YnN0cmluZyg2KSksdGhpcy4kPUZbUF0uc3Vic3RyaW5nKDYpO2JyZWFrO2Nhc2UgMjk6cS5zZXREaWFncmFtVGl0bGUoRltQXS5zdWJzdHJpbmcoNykpLHRoaXMuJD1GW1BdLnN1YnN0cmluZyg3KTticmVhaztjYXNlIDMwOnRoaXMuJD1GW1BdLnRyaW0oKSxxLnNldEFjY1RpdGxlKHRoaXMuJCk7YnJlYWs7Y2FzZSAzMTpjYXNlIDMyOnRoaXMuJD1GW1BdLnRyaW0oKSxxLnNldEFjY0Rlc2NyaXB0aW9uKHRoaXMuJCk7YnJlYWs7Y2FzZSAzMzpGW1AtMV0udW5zaGlmdCh7dHlwZToibG9vcFN0YXJ0Iixsb29wVGV4dDpxLnBhcnNlTWVzc2FnZShGW1AtMl0pLHNpZ25hbFR5cGU6cS5MSU5FVFlQRS5MT09QX1NUQVJUfSksRltQLTFdLnB1c2goe3R5cGU6Imxvb3BFbmQiLGxvb3BUZXh0OkZbUC0yXSxzaWduYWxUeXBlOnEuTElORVRZUEUuTE9PUF9FTkR9KSx0aGlzLiQ9RltQLTFdO2JyZWFrO2Nhc2UgMzQ6RltQLTFdLnVuc2hpZnQoe3R5cGU6InJlY3RTdGFydCIsY29sb3I6cS5wYXJzZU1lc3NhZ2UoRltQLTJdKSxzaWduYWxUeXBlOnEuTElORVRZUEUuUkVDVF9TVEFSVH0pLEZbUC0xXS5wdXNoKHt0eXBlOiJyZWN0RW5kIixjb2xvcjpxLnBhcnNlTWVzc2FnZShGW1AtMl0pLHNpZ25hbFR5cGU6cS5MSU5FVFlQRS5SRUNUX0VORH0pLHRoaXMuJD1GW1AtMV07YnJlYWs7Y2FzZSAzNTpGW1AtMV0udW5zaGlmdCh7dHlwZToib3B0U3RhcnQiLG9wdFRleHQ6cS5wYXJzZU1lc3NhZ2UoRltQLTJdKSxzaWduYWxUeXBlOnEuTElORVRZUEUuT1BUX1NUQVJUfSksRltQLTFdLnB1c2goe3R5cGU6Im9wdEVuZCIsb3B0VGV4dDpxLnBhcnNlTWVzc2FnZShGW1AtMl0pLHNpZ25hbFR5cGU6cS5MSU5FVFlQRS5PUFRfRU5EfSksdGhpcy4kPUZbUC0xXTticmVhaztjYXNlIDM2OkZbUC0xXS51bnNoaWZ0KHt0eXBlOiJhbHRTdGFydCIsYWx0VGV4dDpxLnBhcnNlTWVzc2FnZShGW1AtMl0pLHNpZ25hbFR5cGU6cS5MSU5FVFlQRS5BTFRfU1RBUlR9KSxGW1AtMV0ucHVzaCh7dHlwZToiYWx0RW5kIixzaWduYWxUeXBlOnEuTElORVRZUEUuQUxUX0VORH0pLHRoaXMuJD1GW1AtMV07YnJlYWs7Y2FzZSAzNzpGW1AtMV0udW5zaGlmdCh7dHlwZToicGFyU3RhcnQiLHBhclRleHQ6cS5wYXJzZU1lc3NhZ2UoRltQLTJdKSxzaWduYWxUeXBlOnEuTElORVRZUEUuUEFSX1NUQVJUfSksRltQLTFdLnB1c2goe3R5cGU6InBhckVuZCIsc2lnbmFsVHlwZTpxLkxJTkVUWVBFLlBBUl9FTkR9KSx0aGlzLiQ9RltQLTFdO2JyZWFrO2Nhc2UgMzg6RltQLTFdLnVuc2hpZnQoe3R5cGU6ImNyaXRpY2FsU3RhcnQiLGNyaXRpY2FsVGV4dDpxLnBhcnNlTWVzc2FnZShGW1AtMl0pLHNpZ25hbFR5cGU6cS5MSU5FVFlQRS5DUklUSUNBTF9TVEFSVH0pLEZbUC0xXS5wdXNoKHt0eXBlOiJjcml0aWNhbEVuZCIsc2lnbmFsVHlwZTpxLkxJTkVUWVBFLkNSSVRJQ0FMX0VORH0pLHRoaXMuJD1GW1AtMV07YnJlYWs7Y2FzZSAzOTpGW1AtMV0udW5zaGlmdCh7dHlwZToiYnJlYWtTdGFydCIsYnJlYWtUZXh0OnEucGFyc2VNZXNzYWdlKEZbUC0yXSksc2lnbmFsVHlwZTpxLkxJTkVUWVBFLkJSRUFLX1NUQVJUfSksRltQLTFdLnB1c2goe3R5cGU6ImJyZWFrRW5kIixvcHRUZXh0OnEucGFyc2VNZXNzYWdlKEZbUC0yXSksc2lnbmFsVHlwZTpxLkxJTkVUWVBFLkJSRUFLX0VORH0pLHRoaXMuJD1GW1AtMV07YnJlYWs7Y2FzZSA0Mjp0aGlzLiQ9RltQLTNdLmNvbmNhdChbe3R5cGU6Im9wdGlvbiIsb3B0aW9uVGV4dDpxLnBhcnNlTWVzc2FnZShGW1AtMV0pLHNpZ25hbFR5cGU6cS5MSU5FVFlQRS5DUklUSUNBTF9PUFRJT059LEZbUF1dKTticmVhaztjYXNlIDQ0OnRoaXMuJD1GW1AtM10uY29uY2F0KFt7dHlwZToiYW5kIixwYXJUZXh0OnEucGFyc2VNZXNzYWdlKEZbUC0xXSksc2lnbmFsVHlwZTpxLkxJTkVUWVBFLlBBUl9BTkR9LEZbUF1dKTticmVhaztjYXNlIDQ2OnRoaXMuJD1GW1AtM10uY29uY2F0KFt7dHlwZToiZWxzZSIsYWx0VGV4dDpxLnBhcnNlTWVzc2FnZShGW1AtMV0pLHNpZ25hbFR5cGU6cS5MSU5FVFlQRS5BTFRfRUxTRX0sRltQXV0pO2JyZWFrO2Nhc2UgNDc6dGhpcy4kPVtGW1AtMV0se3R5cGU6ImFkZE5vdGUiLHBsYWNlbWVudDpGW1AtMl0sYWN0b3I6RltQLTFdLmFjdG9yLHRleHQ6RltQXX1dO2JyZWFrO2Nhc2UgNDg6RltQLTJdPVtdLmNvbmNhdChGW1AtMV0sRltQLTFdKS5zbGljZSgwLDIpLEZbUC0yXVswXT1GW1AtMl1bMF0uYWN0b3IsRltQLTJdWzFdPUZbUC0yXVsxXS5hY3Rvcix0aGlzLiQ9W0ZbUC0xXSx7dHlwZToiYWRkTm90ZSIscGxhY2VtZW50OnEuUExBQ0VNRU5ULk9WRVIsYWN0b3I6RltQLTJdLnNsaWNlKDAsMiksdGV4dDpGW1BdfV07YnJlYWs7Y2FzZSA0OTp0aGlzLiQ9W0ZbUC0xXSx7dHlwZToiYWRkTGlua3MiLGFjdG9yOkZbUC0xXS5hY3Rvcix0ZXh0OkZbUF19XTticmVhaztjYXNlIDUwOnRoaXMuJD1bRltQLTFdLHt0eXBlOiJhZGRBTGluayIsYWN0b3I6RltQLTFdLmFjdG9yLHRleHQ6RltQXX1dO2JyZWFrO2Nhc2UgNTE6dGhpcy4kPVtGW1AtMV0se3R5cGU6ImFkZFByb3BlcnRpZXMiLGFjdG9yOkZbUC0xXS5hY3Rvcix0ZXh0OkZbUF19XTticmVhaztjYXNlIDUyOnRoaXMuJD1bRltQLTFdLHt0eXBlOiJhZGREZXRhaWxzIixhY3RvcjpGW1AtMV0uYWN0b3IsdGV4dDpGW1BdfV07YnJlYWs7Y2FzZSA1NTp0aGlzLiQ9W0ZbUC0yXSxGW1BdXTticmVhaztjYXNlIDU2OnRoaXMuJD1GW1BdO2JyZWFrO2Nhc2UgNTc6dGhpcy4kPXEuUExBQ0VNRU5ULkxFRlRPRjticmVhaztjYXNlIDU4OnRoaXMuJD1xLlBMQUNFTUVOVC5SSUdIVE9GO2JyZWFrO2Nhc2UgNTk6dGhpcy4kPVtGW1AtNF0sRltQLTFdLHt0eXBlOiJhZGRNZXNzYWdlIixmcm9tOkZbUC00XS5hY3Rvcix0bzpGW1AtMV0uYWN0b3Isc2lnbmFsVHlwZTpGW1AtM10sbXNnOkZbUF19LHt0eXBlOiJhY3RpdmVTdGFydCIsc2lnbmFsVHlwZTpxLkxJTkVUWVBFLkFDVElWRV9TVEFSVCxhY3RvcjpGW1AtMV19XTticmVhaztjYXNlIDYwOnRoaXMuJD1bRltQLTRdLEZbUC0xXSx7dHlwZToiYWRkTWVzc2FnZSIsZnJvbTpGW1AtNF0uYWN0b3IsdG86RltQLTFdLmFjdG9yLHNpZ25hbFR5cGU6RltQLTNdLG1zZzpGW1BdfSx7dHlwZToiYWN0aXZlRW5kIixzaWduYWxUeXBlOnEuTElORVRZUEUuQUNUSVZFX0VORCxhY3RvcjpGW1AtNF19XTticmVhaztjYXNlIDYxOnRoaXMuJD1bRltQLTNdLEZbUC0xXSx7dHlwZToiYWRkTWVzc2FnZSIsZnJvbTpGW1AtM10uYWN0b3IsdG86RltQLTFdLmFjdG9yLHNpZ25hbFR5cGU6RltQLTJdLG1zZzpGW1BdfV07YnJlYWs7Y2FzZSA2Mjp0aGlzLiQ9e3R5cGU6ImFkZFBhcnRpY2lwYW50IixhY3RvcjpGW1BdfTticmVhaztjYXNlIDYzOnRoaXMuJD1xLkxJTkVUWVBFLlNPTElEX09QRU47YnJlYWs7Y2FzZSA2NDp0aGlzLiQ9cS5MSU5FVFlQRS5ET1RURURfT1BFTjticmVhaztjYXNlIDY1OnRoaXMuJD1xLkxJTkVUWVBFLlNPTElEO2JyZWFrO2Nhc2UgNjY6dGhpcy4kPXEuTElORVRZUEUuRE9UVEVEO2JyZWFrO2Nhc2UgNjc6dGhpcy4kPXEuTElORVRZUEUuU09MSURfQ1JPU1M7YnJlYWs7Y2FzZSA2ODp0aGlzLiQ9cS5MSU5FVFlQRS5ET1RURURfQ1JPU1M7YnJlYWs7Y2FzZSA2OTp0aGlzLiQ9cS5MSU5FVFlQRS5TT0xJRF9QT0lOVDticmVhaztjYXNlIDcwOnRoaXMuJD1xLkxJTkVUWVBFLkRPVFRFRF9QT0lOVDticmVhaztjYXNlIDcxOnRoaXMuJD1xLnBhcnNlTWVzc2FnZShGW1BdLnRyaW0oKS5zdWJzdHJpbmcoMSkpO2JyZWFrO2Nhc2UgNzI6cS5wYXJzZURpcmVjdGl2ZSgiJSV7Iiwib3Blbl9kaXJlY3RpdmUiKTticmVhaztjYXNlIDczOnEucGFyc2VEaXJlY3RpdmUoRltQXSwidHlwZV9kaXJlY3RpdmUiKTticmVhaztjYXNlIDc0OkZbUF09RltQXS50cmltKCkucmVwbGFjZSgvJy9nLCciJykscS5wYXJzZURpcmVjdGl2ZShGW1BdLCJhcmdfZGlyZWN0aXZlIik7YnJlYWs7Y2FzZSA3NTpxLnBhcnNlRGlyZWN0aXZlKCJ9JSUiLCJjbG9zZV9kaXJlY3RpdmUiLCJzZXF1ZW5jZSIpO2JyZWFrfX0sdGFibGU6W3szOjEsNDplLDU6ciw2OjQsNzpuLDExOjYsNzk6aX0sezE6WzNdfSx7Mzo4LDQ6ZSw1OnIsNjo0LDc6biwxMTo2LDc5Oml9LHszOjksNDplLDU6ciw2OjQsNzpuLDExOjYsNzk6aX0sezM6MTAsNDplLDU6ciw2OjQsNzpuLDExOjYsNzk6aX0sdChbMSw0LDUsMTYsMjAsMjIsMjUsMjYsMzIsMzMsMzQsMzYsMzgsMzksNDEsNDIsNDMsNDUsNDcsNDksNTMsNTgsNTksNjAsNjEsNjksNzldLGEsezg6MTF9KSx7MTI6MTIsODA6WzEsMTNdfSx7ODA6WzIsNzJdfSx7MTpbMiwxXX0sezE6WzIsMl19LHsxOlsyLDNdfSx7MTpbMiw0XSw0OnMsNTpvLDY6NDEsOToxNCwxMDoxNiwxMTo2LDE2OmwsMTc6NDIsMjA6dSwyMToyMCwyMjpoLDI1OmQsMjY6ZiwyNzoyNCwyODoyNSwyOToyNiwzMDoyNywzMToyOCwzMjpwLDMzOm0sMzQ6XywzNjp5LDM4OmIsMzk6eCw0MTprLDQyOlQsNDM6Qyw0NTpNLDQ3OlMsNDk6Uiw1MzpBLDU4OkwsNTk6diw2MDpCLDYxOncsNjk6RCw3OTppfSx7MTM6NDksMTQ6WzEsNTBdLDgyOk59LHQoWzE0LDgyXSxbMiw3M10pLHQoeixbMiw2XSksezY6NDEsMTA6NTIsMTE6NiwxNjpsLDE3OjQyLDIwOnUsMjE6MjAsMjI6aCwyNTpkLDI2OmYsMjc6MjQsMjg6MjUsMjk6MjYsMzA6MjcsMzE6MjgsMzI6cCwzMzptLDM0Ol8sMzY6eSwzODpiLDM5OngsNDE6ayw0MjpULDQzOkMsNDU6TSw0NzpTLDQ5OlIsNTM6QSw1ODpMLDU5OnYsNjA6Qiw2MTp3LDY5OkQsNzk6aX0sdCh6LFsyLDhdKSx0KHosWzIsOV0pLHsxNzo1Myw2OTpEfSx7MTc6NTQsNjk6RH0sezU6WzEsNTVdfSx7NTpbMSw1OF0sMjM6WzEsNTZdLDI0OlsxLDU3XX0sezE3OjU5LDY5OkR9LHsxNzo2MCw2OTpEfSx7NTpbMSw2MV19LHs1OlsxLDYyXX0sezU6WzEsNjNdfSx7NTpbMSw2NF19LHs1OlsxLDY1XX0sdCh6LFsyLDI4XSksdCh6LFsyLDI5XSksezM1OlsxLDY2XX0sezM3OlsxLDY3XX0sdCh6LFsyLDMyXSksezE5OlsxLDY4XX0sezE5OlsxLDY5XX0sezE5OlsxLDcwXX0sezE5OlsxLDcxXX0sezE5OlsxLDcyXX0sezE5OlsxLDczXX0sezE5OlsxLDc0XX0sdCh6LFsyLDQwXSksezY2Ojc1LDcwOlsxLDc2XSw3MTpbMSw3N10sNzI6WzEsNzhdLDczOlsxLDc5XSw3NDpbMSw4MF0sNzU6WzEsODFdLDc2OlsxLDgyXSw3NzpbMSw4M119LHs1NDo4NCw1NjpbMSw4NV0sNjQ6WzEsODZdLDY1OlsxLDg3XX0sezE3Ojg4LDY5OkR9LHsxNzo4OSw2OTpEfSx7MTc6OTAsNjk6RH0sezE3OjkxLDY5OkR9LHQoWzUsMTgsNjMsNzAsNzEsNzIsNzMsNzQsNzUsNzYsNzcsNzhdLFsyLDYyXSksezU6WzEsOTJdfSx7MTU6OTMsODE6WzEsOTRdfSx7NTpbMiw3NV19LHQoeixbMiw3XSksezU6WzEsOTZdLDE4OlsxLDk1XX0sezU6WzEsOThdLDE4OlsxLDk3XX0sdCh6LFsyLDE2XSksezU6WzEsMTAwXSwyMzpbMSw5OV19LHs1OlsxLDEwMV19LHQoeixbMiwyMF0pLHs1OlsxLDEwMl19LHs1OlsxLDEwM119LHQoeixbMiwyM10pLHQoeixbMiwyNF0pLHQoeixbMiwyNV0pLHQoeixbMiwyNl0pLHQoeixbMiwyN10pLHQoeixbMiwzMF0pLHQoeixbMiwzMV0pLHQoWCxhLHs4OjEwNH0pLHQoWCxhLHs4OjEwNX0pLHQoWCxhLHs4OjEwNn0pLHQoY3QsYSx7NDQ6MTA3LDg6MTA4fSksdChKLGEsezQ2OjEwOSw4OjExMH0pLHQoWSxhLHs0ODoxMTEsODoxMTJ9KSx0KFgsYSx7ODoxMTN9KSx7MTc6MTE2LDY3OlsxLDExNF0sNjg6WzEsMTE1XSw2OTpEfSx0KCQsWzIsNjNdKSx0KCQsWzIsNjRdKSx0KCQsWzIsNjVdKSx0KCQsWzIsNjZdKSx0KCQsWzIsNjddKSx0KCQsWzIsNjhdKSx0KCQsWzIsNjldKSx0KCQsWzIsNzBdKSx7MTc6MTE3LDY5OkR9LHsxNzoxMTksNTc6MTE4LDY5OkR9LHs2OTpbMiw1N119LHs2OTpbMiw1OF19LHs1NToxMjAsNzg6bHR9LHs1NToxMjIsNzg6bHR9LHs1NToxMjMsNzg6bHR9LHs1NToxMjQsNzg6bHR9LHQodXQsWzIsMTBdKSx7MTM6MTI1LDgyOk59LHs4MjpbMiw3NF19LHsxOTpbMSwxMjZdfSx0KHosWzIsMTNdKSx7MTk6WzEsMTI3XX0sdCh6LFsyLDE1XSksezU6WzEsMTI4XX0sdCh6LFsyLDE4XSksdCh6LFsyLDE5XSksdCh6LFsyLDIxXSksdCh6LFsyLDIyXSksezQ6cyw1Om8sNjo0MSw5OjE0LDEwOjE2LDExOjYsMTY6bCwxNzo0MiwyMDp1LDIxOjIwLDIyOmgsMjU6ZCwyNjpmLDI3OjI0LDI4OjI1LDI5OjI2LDMwOjI3LDMxOjI4LDMyOnAsMzM6bSwzNDpfLDM2OnksMzg6YiwzOTp4LDQwOlsxLDEyOV0sNDE6ayw0MjpULDQzOkMsNDU6TSw0NzpTLDQ5OlIsNTM6QSw1ODpMLDU5OnYsNjA6Qiw2MTp3LDY5OkQsNzk6aX0sezQ6cyw1Om8sNjo0MSw5OjE0LDEwOjE2LDExOjYsMTY6bCwxNzo0MiwyMDp1LDIxOjIwLDIyOmgsMjU6ZCwyNjpmLDI3OjI0LDI4OjI1LDI5OjI2LDMwOjI3LDMxOjI4LDMyOnAsMzM6bSwzNDpfLDM2OnksMzg6YiwzOTp4LDQwOlsxLDEzMF0sNDE6ayw0MjpULDQzOkMsNDU6TSw0NzpTLDQ5OlIsNTM6QSw1ODpMLDU5OnYsNjA6Qiw2MTp3LDY5OkQsNzk6aX0sezQ6cyw1Om8sNjo0MSw5OjE0LDEwOjE2LDExOjYsMTY6bCwxNzo0MiwyMDp1LDIxOjIwLDIyOmgsMjU6ZCwyNjpmLDI3OjI0LDI4OjI1LDI5OjI2LDMwOjI3LDMxOjI4LDMyOnAsMzM6bSwzNDpfLDM2OnksMzg6YiwzOTp4LDQwOlsxLDEzMV0sNDE6ayw0MjpULDQzOkMsNDU6TSw0NzpTLDQ5OlIsNTM6QSw1ODpMLDU5OnYsNjA6Qiw2MTp3LDY5OkQsNzk6aX0sezQwOlsxLDEzMl19LHs0OnMsNTpvLDY6NDEsOToxNCwxMDoxNiwxMTo2LDE2OmwsMTc6NDIsMjA6dSwyMToyMCwyMjpoLDI1OmQsMjY6ZiwyNzoyNCwyODoyNSwyOToyNiwzMDoyNywzMToyOCwzMjpwLDMzOm0sMzQ6XywzNjp5LDM4OmIsMzk6eCw0MDpbMiw0NV0sNDE6ayw0MjpULDQzOkMsNDU6TSw0NzpTLDQ5OlIsNTI6WzEsMTMzXSw1MzpBLDU4OkwsNTk6diw2MDpCLDYxOncsNjk6RCw3OTppfSx7NDA6WzEsMTM0XX0sezQ6cyw1Om8sNjo0MSw5OjE0LDEwOjE2LDExOjYsMTY6bCwxNzo0MiwyMDp1LDIxOjIwLDIyOmgsMjU6ZCwyNjpmLDI3OjI0LDI4OjI1LDI5OjI2LDMwOjI3LDMxOjI4LDMyOnAsMzM6bSwzNDpfLDM2OnksMzg6YiwzOTp4LDQwOlsyLDQzXSw0MTprLDQyOlQsNDM6Qyw0NTpNLDQ3OlMsNDk6Uiw1MTpbMSwxMzVdLDUzOkEsNTg6TCw1OTp2LDYwOkIsNjE6dyw2OTpELDc5Oml9LHs0MDpbMSwxMzZdfSx7NDpzLDU6byw2OjQxLDk6MTQsMTA6MTYsMTE6NiwxNjpsLDE3OjQyLDIwOnUsMjE6MjAsMjI6aCwyNTpkLDI2OmYsMjc6MjQsMjg6MjUsMjk6MjYsMzA6MjcsMzE6MjgsMzI6cCwzMzptLDM0Ol8sMzY6eSwzODpiLDM5OngsNDA6WzIsNDFdLDQxOmssNDI6VCw0MzpDLDQ1Ok0sNDc6Uyw0OTpSLDUwOlsxLDEzN10sNTM6QSw1ODpMLDU5OnYsNjA6Qiw2MTp3LDY5OkQsNzk6aX0sezQ6cyw1Om8sNjo0MSw5OjE0LDEwOjE2LDExOjYsMTY6bCwxNzo0MiwyMDp1LDIxOjIwLDIyOmgsMjU6ZCwyNjpmLDI3OjI0LDI4OjI1LDI5OjI2LDMwOjI3LDMxOjI4LDMyOnAsMzM6bSwzNDpfLDM2OnksMzg6YiwzOTp4LDQwOlsxLDEzOF0sNDE6ayw0MjpULDQzOkMsNDU6TSw0NzpTLDQ5OlIsNTM6QSw1ODpMLDU5OnYsNjA6Qiw2MTp3LDY5OkQsNzk6aX0sezE3OjEzOSw2OTpEfSx7MTc6MTQwLDY5OkR9LHs1NToxNDEsNzg6bHR9LHs1NToxNDIsNzg6bHR9LHs1NToxNDMsNzg6bHR9LHs2MzpbMSwxNDRdLDc4OlsyLDU2XX0sezU6WzIsNDldfSx7NTpbMiw3MV19LHs1OlsyLDUwXX0sezU6WzIsNTFdfSx7NTpbMiw1Ml19LHs1OlsxLDE0NV19LHs1OlsxLDE0Nl19LHs1OlsxLDE0N119LHQoeixbMiwxN10pLHQoeixbMiwzM10pLHQoeixbMiwzNF0pLHQoeixbMiwzNV0pLHQoeixbMiwzNl0pLHsxOTpbMSwxNDhdfSx0KHosWzIsMzddKSx7MTk6WzEsMTQ5XX0sdCh6LFsyLDM4XSksezE5OlsxLDE1MF19LHQoeixbMiwzOV0pLHs1NToxNTEsNzg6bHR9LHs1NToxNTIsNzg6bHR9LHs1OlsyLDYxXX0sezU6WzIsNDddfSx7NTpbMiw0OF19LHsxNzoxNTMsNjk6RH0sdCh1dCxbMiwxMV0pLHQoeixbMiwxMl0pLHQoeixbMiwxNF0pLHQoY3QsYSx7ODoxMDgsNDQ6MTU0fSksdChKLGEsezg6MTEwLDQ2OjE1NX0pLHQoWSxhLHs4OjExMiw0ODoxNTZ9KSx7NTpbMiw1OV19LHs1OlsyLDYwXX0sezc4OlsyLDU1XX0sezQwOlsyLDQ2XX0sezQwOlsyLDQ0XX0sezQwOlsyLDQyXX1dLGRlZmF1bHRBY3Rpb25zOns3OlsyLDcyXSw4OlsyLDFdLDk6WzIsMl0sMTA6WzIsM10sNTE6WzIsNzVdLDg2OlsyLDU3XSw4NzpbMiw1OF0sOTQ6WzIsNzRdLDEyMDpbMiw0OV0sMTIxOlsyLDcxXSwxMjI6WzIsNTBdLDEyMzpbMiw1MV0sMTI0OlsyLDUyXSwxNDE6WzIsNjFdLDE0MjpbMiw0N10sMTQzOlsyLDQ4XSwxNTE6WzIsNTldLDE1MjpbMiw2MF0sMTUzOlsyLDU1XSwxNTQ6WzIsNDZdLDE1NTpbMiw0NF0sMTU2OlsyLDQyXX0scGFyc2VFcnJvcjpmdW5jdGlvbihaLFYpe2lmKFYucmVjb3ZlcmFibGUpdGhpcy50cmFjZShaKTtlbHNle3ZhciBRPW5ldyBFcnJvcihaKTt0aHJvdyBRLmhhc2g9VixRfX0scGFyc2U6ZnVuY3Rpb24oWil7dmFyIFY9dGhpcyxRPVswXSxxPVtdLFU9W251bGxdLEY9W10saj10aGlzLnRhYmxlLFA9IiIsZXQ9MCxhdD0wLEl0PTIsTHQ9MSxSdD1GLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpLEN0PU9iamVjdC5jcmVhdGUodGhpcy5sZXhlcikscHQ9e3l5Ont9fTtmb3IodmFyIG10IGluIHRoaXMueXkpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMueXksbXQpJiYocHQueXlbbXRdPXRoaXMueXlbbXRdKTtDdC5zZXRJbnB1dChaLHB0Lnl5KSxwdC55eS5sZXhlcj1DdCxwdC55eS5wYXJzZXI9dGhpcyx0eXBlb2YgQ3QueXlsbG9jPiJ1IiYmKEN0Lnl5bGxvYz17fSk7dmFyIHZ0PUN0Lnl5bGxvYztGLnB1c2godnQpO3ZhciBUdD1DdC5vcHRpb25zJiZDdC5vcHRpb25zLnJhbmdlczt0eXBlb2YgcHQueXkucGFyc2VFcnJvcj09ImZ1bmN0aW9uIj90aGlzLnBhcnNlRXJyb3I9cHQueXkucGFyc2VFcnJvcjp0aGlzLnBhcnNlRXJyb3I9T2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLnBhcnNlRXJyb3I7ZnVuY3Rpb24gZnQoKXt2YXIgYnQ7cmV0dXJuIGJ0PXEucG9wKCl8fEN0LmxleCgpfHxMdCx0eXBlb2YgYnQhPSJudW1iZXIiJiYoYnQgaW5zdGFuY2VvZiBBcnJheSYmKHE9YnQsYnQ9cS5wb3AoKSksYnQ9Vi5zeW1ib2xzX1tidF18fGJ0KSxidH1mb3IodmFyIGxlLER0LEd0LCR0LFF0PXt9LHdlLGp0LEZ0LHp0Ozspe2lmKER0PVFbUS5sZW5ndGgtMV0sdGhpcy5kZWZhdWx0QWN0aW9uc1tEdF0/R3Q9dGhpcy5kZWZhdWx0QWN0aW9uc1tEdF06KChsZT09PW51bGx8fHR5cGVvZiBsZT4idSIpJiYobGU9ZnQoKSksR3Q9altEdF0mJmpbRHRdW2xlXSksdHlwZW9mIEd0PiJ1Inx8IUd0Lmxlbmd0aHx8IUd0WzBdKXt2YXIgd3Q9IiI7enQ9W107Zm9yKHdlIGluIGpbRHRdKXRoaXMudGVybWluYWxzX1t3ZV0mJndlPkl0JiZ6dC5wdXNoKCInIit0aGlzLnRlcm1pbmFsc19bd2VdKyInIik7Q3Quc2hvd1Bvc2l0aW9uP3d0PSJQYXJzZSBlcnJvciBvbiBsaW5lICIrKGV0KzEpK2A6CmArQ3Quc2hvd1Bvc2l0aW9uKCkrYApFeHBlY3RpbmcgYCt6dC5qb2luKCIsICIpKyIsIGdvdCAnIisodGhpcy50ZXJtaW5hbHNfW2xlXXx8bGUpKyInIjp3dD0iUGFyc2UgZXJyb3Igb24gbGluZSAiKyhldCsxKSsiOiBVbmV4cGVjdGVkICIrKGxlPT1MdD8iZW5kIG9mIGlucHV0IjoiJyIrKHRoaXMudGVybWluYWxzX1tsZV18fGxlKSsiJyIpLHRoaXMucGFyc2VFcnJvcih3dCx7dGV4dDpDdC5tYXRjaCx0b2tlbjp0aGlzLnRlcm1pbmFsc19bbGVdfHxsZSxsaW5lOkN0Lnl5bGluZW5vLGxvYzp2dCxleHBlY3RlZDp6dH0pfWlmKEd0WzBdaW5zdGFuY2VvZiBBcnJheSYmR3QubGVuZ3RoPjEpdGhyb3cgbmV3IEVycm9yKCJQYXJzZSBFcnJvcjogbXVsdGlwbGUgYWN0aW9ucyBwb3NzaWJsZSBhdCBzdGF0ZTogIitEdCsiLCB0b2tlbjogIitsZSk7c3dpdGNoKEd0WzBdKXtjYXNlIDE6US5wdXNoKGxlKSxVLnB1c2goQ3QueXl0ZXh0KSxGLnB1c2goQ3QueXlsbG9jKSxRLnB1c2goR3RbMV0pLGxlPW51bGwsYXQ9Q3QueXlsZW5nLFA9Q3QueXl0ZXh0LGV0PUN0Lnl5bGluZW5vLHZ0PUN0Lnl5bGxvYzticmVhaztjYXNlIDI6aWYoanQ9dGhpcy5wcm9kdWN0aW9uc19bR3RbMV1dWzFdLFF0LiQ9VVtVLmxlbmd0aC1qdF0sUXQuXyQ9e2ZpcnN0X2xpbmU6RltGLmxlbmd0aC0oanR8fDEpXS5maXJzdF9saW5lLGxhc3RfbGluZTpGW0YubGVuZ3RoLTFdLmxhc3RfbGluZSxmaXJzdF9jb2x1bW46RltGLmxlbmd0aC0oanR8fDEpXS5maXJzdF9jb2x1bW4sbGFzdF9jb2x1bW46RltGLmxlbmd0aC0xXS5sYXN0X2NvbHVtbn0sVHQmJihRdC5fJC5yYW5nZT1bRltGLmxlbmd0aC0oanR8fDEpXS5yYW5nZVswXSxGW0YubGVuZ3RoLTFdLnJhbmdlWzFdXSksJHQ9dGhpcy5wZXJmb3JtQWN0aW9uLmFwcGx5KFF0LFtQLGF0LGV0LHB0Lnl5LEd0WzFdLFUsRl0uY29uY2F0KFJ0KSksdHlwZW9mICR0PCJ1IilyZXR1cm4gJHQ7anQmJihRPVEuc2xpY2UoMCwtMSpqdCoyKSxVPVUuc2xpY2UoMCwtMSpqdCksRj1GLnNsaWNlKDAsLTEqanQpKSxRLnB1c2godGhpcy5wcm9kdWN0aW9uc19bR3RbMV1dWzBdKSxVLnB1c2goUXQuJCksRi5wdXNoKFF0Ll8kKSxGdD1qW1FbUS5sZW5ndGgtMl1dW1FbUS5sZW5ndGgtMV1dLFEucHVzaChGdCk7YnJlYWs7Y2FzZSAzOnJldHVybiEwfX1yZXR1cm4hMH19LHR0PWZ1bmN0aW9uKCl7dmFyIGl0PXtFT0Y6MSxwYXJzZUVycm9yOmZ1bmN0aW9uKFYsUSl7aWYodGhpcy55eS5wYXJzZXIpdGhpcy55eS5wYXJzZXIucGFyc2VFcnJvcihWLFEpO2Vsc2UgdGhyb3cgbmV3IEVycm9yKFYpfSxzZXRJbnB1dDpmdW5jdGlvbihaLFYpe3JldHVybiB0aGlzLnl5PVZ8fHRoaXMueXl8fHt9LHRoaXMuX2lucHV0PVosdGhpcy5fbW9yZT10aGlzLl9iYWNrdHJhY2s9dGhpcy5kb25lPSExLHRoaXMueXlsaW5lbm89dGhpcy55eWxlbmc9MCx0aGlzLnl5dGV4dD10aGlzLm1hdGNoZWQ9dGhpcy5tYXRjaD0iIix0aGlzLmNvbmRpdGlvblN0YWNrPVsiSU5JVElBTCJdLHRoaXMueXlsbG9jPXtmaXJzdF9saW5lOjEsZmlyc3RfY29sdW1uOjAsbGFzdF9saW5lOjEsbGFzdF9jb2x1bW46MH0sdGhpcy5vcHRpb25zLnJhbmdlcyYmKHRoaXMueXlsbG9jLnJhbmdlPVswLDBdKSx0aGlzLm9mZnNldD0wLHRoaXN9LGlucHV0OmZ1bmN0aW9uKCl7dmFyIFo9dGhpcy5faW5wdXRbMF07dGhpcy55eXRleHQrPVosdGhpcy55eWxlbmcrKyx0aGlzLm9mZnNldCsrLHRoaXMubWF0Y2grPVosdGhpcy5tYXRjaGVkKz1aO3ZhciBWPVoubWF0Y2goLyg/OlxyXG4/fFxuKS4qL2cpO3JldHVybiBWPyh0aGlzLnl5bGluZW5vKyssdGhpcy55eWxsb2MubGFzdF9saW5lKyspOnRoaXMueXlsbG9jLmxhc3RfY29sdW1uKyssdGhpcy5vcHRpb25zLnJhbmdlcyYmdGhpcy55eWxsb2MucmFuZ2VbMV0rKyx0aGlzLl9pbnB1dD10aGlzLl9pbnB1dC5zbGljZSgxKSxafSx1bnB1dDpmdW5jdGlvbihaKXt2YXIgVj1aLmxlbmd0aCxRPVouc3BsaXQoLyg/OlxyXG4/fFxuKS9nKTt0aGlzLl9pbnB1dD1aK3RoaXMuX2lucHV0LHRoaXMueXl0ZXh0PXRoaXMueXl0ZXh0LnN1YnN0cigwLHRoaXMueXl0ZXh0Lmxlbmd0aC1WKSx0aGlzLm9mZnNldC09Vjt2YXIgcT10aGlzLm1hdGNoLnNwbGl0KC8oPzpcclxuP3xcbikvZyk7dGhpcy5tYXRjaD10aGlzLm1hdGNoLnN1YnN0cigwLHRoaXMubWF0Y2gubGVuZ3RoLTEpLHRoaXMubWF0Y2hlZD10aGlzLm1hdGNoZWQuc3Vic3RyKDAsdGhpcy5tYXRjaGVkLmxlbmd0aC0xKSxRLmxlbmd0aC0xJiYodGhpcy55eWxpbmVuby09US5sZW5ndGgtMSk7dmFyIFU9dGhpcy55eWxsb2MucmFuZ2U7cmV0dXJuIHRoaXMueXlsbG9jPXtmaXJzdF9saW5lOnRoaXMueXlsbG9jLmZpcnN0X2xpbmUsbGFzdF9saW5lOnRoaXMueXlsaW5lbm8rMSxmaXJzdF9jb2x1bW46dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLGxhc3RfY29sdW1uOlE/KFEubGVuZ3RoPT09cS5sZW5ndGg/dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uOjApK3FbcS5sZW5ndGgtUS5sZW5ndGhdLmxlbmd0aC1RWzBdLmxlbmd0aDp0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4tVn0sdGhpcy5vcHRpb25zLnJhbmdlcyYmKHRoaXMueXlsbG9jLnJhbmdlPVtVWzBdLFVbMF0rdGhpcy55eWxlbmctVl0pLHRoaXMueXlsZW5nPXRoaXMueXl0ZXh0Lmxlbmd0aCx0aGlzfSxtb3JlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX21vcmU9ITAsdGhpc30scmVqZWN0OmZ1bmN0aW9uKCl7aWYodGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlcil0aGlzLl9iYWNrdHJhY2s9ITA7ZWxzZSByZXR1cm4gdGhpcy5wYXJzZUVycm9yKCJMZXhpY2FsIGVycm9yIG9uIGxpbmUgIisodGhpcy55eWxpbmVubysxKStgLiBZb3UgY2FuIG9ubHkgaW52b2tlIHJlamVjdCgpIGluIHRoZSBsZXhlciB3aGVuIHRoZSBsZXhlciBpcyBvZiB0aGUgYmFja3RyYWNraW5nIHBlcnN1YXNpb24gKG9wdGlvbnMuYmFja3RyYWNrX2xleGVyID0gdHJ1ZSkuCmArdGhpcy5zaG93UG9zaXRpb24oKSx7dGV4dDoiIix0b2tlbjpudWxsLGxpbmU6dGhpcy55eWxpbmVub30pO3JldHVybiB0aGlzfSxsZXNzOmZ1bmN0aW9uKFope3RoaXMudW5wdXQodGhpcy5tYXRjaC5zbGljZShaKSl9LHBhc3RJbnB1dDpmdW5jdGlvbigpe3ZhciBaPXRoaXMubWF0Y2hlZC5zdWJzdHIoMCx0aGlzLm1hdGNoZWQubGVuZ3RoLXRoaXMubWF0Y2gubGVuZ3RoKTtyZXR1cm4oWi5sZW5ndGg+MjA/Ii4uLiI6IiIpK1ouc3Vic3RyKC0yMCkucmVwbGFjZSgvXG4vZywiIil9LHVwY29taW5nSW5wdXQ6ZnVuY3Rpb24oKXt2YXIgWj10aGlzLm1hdGNoO3JldHVybiBaLmxlbmd0aDwyMCYmKForPXRoaXMuX2lucHV0LnN1YnN0cigwLDIwLVoubGVuZ3RoKSksKFouc3Vic3RyKDAsMjApKyhaLmxlbmd0aD4yMD8iLi4uIjoiIikpLnJlcGxhY2UoL1xuL2csIiIpfSxzaG93UG9zaXRpb246ZnVuY3Rpb24oKXt2YXIgWj10aGlzLnBhc3RJbnB1dCgpLFY9bmV3IEFycmF5KFoubGVuZ3RoKzEpLmpvaW4oIi0iKTtyZXR1cm4gWit0aGlzLnVwY29taW5nSW5wdXQoKStgCmArVisiXiJ9LHRlc3RfbWF0Y2g6ZnVuY3Rpb24oWixWKXt2YXIgUSxxLFU7aWYodGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlciYmKFU9e3l5bGluZW5vOnRoaXMueXlsaW5lbm8seXlsbG9jOntmaXJzdF9saW5lOnRoaXMueXlsbG9jLmZpcnN0X2xpbmUsbGFzdF9saW5lOnRoaXMubGFzdF9saW5lLGZpcnN0X2NvbHVtbjp0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4sbGFzdF9jb2x1bW46dGhpcy55eWxsb2MubGFzdF9jb2x1bW59LHl5dGV4dDp0aGlzLnl5dGV4dCxtYXRjaDp0aGlzLm1hdGNoLG1hdGNoZXM6dGhpcy5tYXRjaGVzLG1hdGNoZWQ6dGhpcy5tYXRjaGVkLHl5bGVuZzp0aGlzLnl5bGVuZyxvZmZzZXQ6dGhpcy5vZmZzZXQsX21vcmU6dGhpcy5fbW9yZSxfaW5wdXQ6dGhpcy5faW5wdXQseXk6dGhpcy55eSxjb25kaXRpb25TdGFjazp0aGlzLmNvbmRpdGlvblN0YWNrLnNsaWNlKDApLGRvbmU6dGhpcy5kb25lfSx0aGlzLm9wdGlvbnMucmFuZ2VzJiYoVS55eWxsb2MucmFuZ2U9dGhpcy55eWxsb2MucmFuZ2Uuc2xpY2UoMCkpKSxxPVpbMF0ubWF0Y2goLyg/OlxyXG4/fFxuKS4qL2cpLHEmJih0aGlzLnl5bGluZW5vKz1xLmxlbmd0aCksdGhpcy55eWxsb2M9e2ZpcnN0X2xpbmU6dGhpcy55eWxsb2MubGFzdF9saW5lLGxhc3RfbGluZTp0aGlzLnl5bGluZW5vKzEsZmlyc3RfY29sdW1uOnRoaXMueXlsbG9jLmxhc3RfY29sdW1uLGxhc3RfY29sdW1uOnE/cVtxLmxlbmd0aC0xXS5sZW5ndGgtcVtxLmxlbmd0aC0xXS5tYXRjaCgvXHI/XG4/LylbMF0ubGVuZ3RoOnRoaXMueXlsbG9jLmxhc3RfY29sdW1uK1pbMF0ubGVuZ3RofSx0aGlzLnl5dGV4dCs9WlswXSx0aGlzLm1hdGNoKz1aWzBdLHRoaXMubWF0Y2hlcz1aLHRoaXMueXlsZW5nPXRoaXMueXl0ZXh0Lmxlbmd0aCx0aGlzLm9wdGlvbnMucmFuZ2VzJiYodGhpcy55eWxsb2MucmFuZ2U9W3RoaXMub2Zmc2V0LHRoaXMub2Zmc2V0Kz10aGlzLnl5bGVuZ10pLHRoaXMuX21vcmU9ITEsdGhpcy5fYmFja3RyYWNrPSExLHRoaXMuX2lucHV0PXRoaXMuX2lucHV0LnNsaWNlKFpbMF0ubGVuZ3RoKSx0aGlzLm1hdGNoZWQrPVpbMF0sUT10aGlzLnBlcmZvcm1BY3Rpb24uY2FsbCh0aGlzLHRoaXMueXksdGhpcyxWLHRoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMV0pLHRoaXMuZG9uZSYmdGhpcy5faW5wdXQmJih0aGlzLmRvbmU9ITEpLFEpcmV0dXJuIFE7aWYodGhpcy5fYmFja3RyYWNrKXtmb3IodmFyIEYgaW4gVSl0aGlzW0ZdPVVbRl07cmV0dXJuITF9cmV0dXJuITF9LG5leHQ6ZnVuY3Rpb24oKXtpZih0aGlzLmRvbmUpcmV0dXJuIHRoaXMuRU9GO3RoaXMuX2lucHV0fHwodGhpcy5kb25lPSEwKTt2YXIgWixWLFEscTt0aGlzLl9tb3JlfHwodGhpcy55eXRleHQ9IiIsdGhpcy5tYXRjaD0iIik7Zm9yKHZhciBVPXRoaXMuX2N1cnJlbnRSdWxlcygpLEY9MDtGPFUubGVuZ3RoO0YrKylpZihRPXRoaXMuX2lucHV0Lm1hdGNoKHRoaXMucnVsZXNbVVtGXV0pLFEmJighVnx8UVswXS5sZW5ndGg+VlswXS5sZW5ndGgpKXtpZihWPVEscT1GLHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIpe2lmKFo9dGhpcy50ZXN0X21hdGNoKFEsVVtGXSksWiE9PSExKXJldHVybiBaO2lmKHRoaXMuX2JhY2t0cmFjayl7Vj0hMTtjb250aW51ZX1lbHNlIHJldHVybiExfWVsc2UgaWYoIXRoaXMub3B0aW9ucy5mbGV4KWJyZWFrfXJldHVybiBWPyhaPXRoaXMudGVzdF9tYXRjaChWLFVbcV0pLFohPT0hMT9aOiExKTp0aGlzLl9pbnB1dD09PSIiP3RoaXMuRU9GOnRoaXMucGFyc2VFcnJvcigiTGV4aWNhbCBlcnJvciBvbiBsaW5lICIrKHRoaXMueXlsaW5lbm8rMSkrYC4gVW5yZWNvZ25pemVkIHRleHQuCmArdGhpcy5zaG93UG9zaXRpb24oKSx7dGV4dDoiIix0b2tlbjpudWxsLGxpbmU6dGhpcy55eWxpbmVub30pfSxsZXg6ZnVuY3Rpb24oKXt2YXIgVj10aGlzLm5leHQoKTtyZXR1cm4gVnx8dGhpcy5sZXgoKX0sYmVnaW46ZnVuY3Rpb24oVil7dGhpcy5jb25kaXRpb25TdGFjay5wdXNoKFYpfSxwb3BTdGF0ZTpmdW5jdGlvbigpe3ZhciBWPXRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTE7cmV0dXJuIFY+MD90aGlzLmNvbmRpdGlvblN0YWNrLnBvcCgpOnRoaXMuY29uZGl0aW9uU3RhY2tbMF19LF9jdXJyZW50UnVsZXM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgmJnRoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMV0/dGhpcy5jb25kaXRpb25zW3RoaXMuY29uZGl0aW9uU3RhY2tbdGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMV1dLnJ1bGVzOnRoaXMuY29uZGl0aW9ucy5JTklUSUFMLnJ1bGVzfSx0b3BTdGF0ZTpmdW5jdGlvbihWKXtyZXR1cm4gVj10aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xLU1hdGguYWJzKFZ8fDApLFY+PTA/dGhpcy5jb25kaXRpb25TdGFja1tWXToiSU5JVElBTCJ9LHB1c2hTdGF0ZTpmdW5jdGlvbihWKXt0aGlzLmJlZ2luKFYpfSxzdGF0ZVN0YWNrU2l6ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aH0sb3B0aW9uczp7ImNhc2UtaW5zZW5zaXRpdmUiOiEwfSxwZXJmb3JtQWN0aW9uOmZ1bmN0aW9uKFYsUSxxLFUpe3N3aXRjaChxKXtjYXNlIDA6cmV0dXJuIHRoaXMuYmVnaW4oIm9wZW5fZGlyZWN0aXZlIiksNzk7Y2FzZSAxOnJldHVybiB0aGlzLmJlZ2luKCJ0eXBlX2RpcmVjdGl2ZSIpLDgwO2Nhc2UgMjpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLHRoaXMuYmVnaW4oImFyZ19kaXJlY3RpdmUiKSwxNDtjYXNlIDM6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSx0aGlzLnBvcFN0YXRlKCksODI7Y2FzZSA0OnJldHVybiA4MTtjYXNlIDU6cmV0dXJuIDU7Y2FzZSA2OmJyZWFrO2Nhc2UgNzpicmVhaztjYXNlIDg6YnJlYWs7Y2FzZSA5OmJyZWFrO2Nhc2UgMTA6YnJlYWs7Y2FzZSAxMTpyZXR1cm4gMjM7Y2FzZSAxMjpyZXR1cm4gdGhpcy5iZWdpbigiSUQiKSwxNjtjYXNlIDEzOnJldHVybiB0aGlzLmJlZ2luKCJJRCIpLDIwO2Nhc2UgMTQ6cmV0dXJuIFEueXl0ZXh0PVEueXl0ZXh0LnRyaW0oKSx0aGlzLmJlZ2luKCJBTElBUyIpLDY5O2Nhc2UgMTU6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSx0aGlzLnBvcFN0YXRlKCksdGhpcy5iZWdpbigiTElORSIpLDE4O2Nhc2UgMTY6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSx0aGlzLnBvcFN0YXRlKCksNTtjYXNlIDE3OnJldHVybiB0aGlzLmJlZ2luKCJMSU5FIiksMzk7Y2FzZSAxODpyZXR1cm4gdGhpcy5iZWdpbigiTElORSIpLDQxO2Nhc2UgMTk6cmV0dXJuIHRoaXMuYmVnaW4oIkxJTkUiKSw0MjtjYXNlIDIwOnJldHVybiB0aGlzLmJlZ2luKCJMSU5FIiksNDM7Y2FzZSAyMTpyZXR1cm4gdGhpcy5iZWdpbigiTElORSIpLDUyO2Nhc2UgMjI6cmV0dXJuIHRoaXMuYmVnaW4oIkxJTkUiKSw0NTtjYXNlIDIzOnJldHVybiB0aGlzLmJlZ2luKCJMSU5FIiksNTE7Y2FzZSAyNDpyZXR1cm4gdGhpcy5iZWdpbigiTElORSIpLDQ3O2Nhc2UgMjU6cmV0dXJuIHRoaXMuYmVnaW4oIkxJTkUiKSw1MDtjYXNlIDI2OnJldHVybiB0aGlzLmJlZ2luKCJMSU5FIiksNDk7Y2FzZSAyNzpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLDE5O2Nhc2UgMjg6cmV0dXJuIDQwO2Nhc2UgMjk6cmV0dXJuIDY0O2Nhc2UgMzA6cmV0dXJuIDY1O2Nhc2UgMzE6cmV0dXJuIDU4O2Nhc2UgMzI6cmV0dXJuIDU5O2Nhc2UgMzM6cmV0dXJuIDYwO2Nhc2UgMzQ6cmV0dXJuIDYxO2Nhc2UgMzU6cmV0dXJuIDU2O2Nhc2UgMzY6cmV0dXJuIDUzO2Nhc2UgMzc6cmV0dXJuIHRoaXMuYmVnaW4oIklEIiksMjU7Y2FzZSAzODpyZXR1cm4gdGhpcy5iZWdpbigiSUQiKSwyNjtjYXNlIDM5OnJldHVybiAzMjtjYXNlIDQwOnJldHVybiAzMztjYXNlIDQxOnJldHVybiB0aGlzLmJlZ2luKCJhY2NfdGl0bGUiKSwzNDtjYXNlIDQyOnJldHVybiB0aGlzLnBvcFN0YXRlKCksImFjY190aXRsZV92YWx1ZSI7Y2FzZSA0MzpyZXR1cm4gdGhpcy5iZWdpbigiYWNjX2Rlc2NyIiksMzY7Y2FzZSA0NDpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLCJhY2NfZGVzY3JfdmFsdWUiO2Nhc2UgNDU6dGhpcy5iZWdpbigiYWNjX2Rlc2NyX211bHRpbGluZSIpO2JyZWFrO2Nhc2UgNDY6dGhpcy5wb3BTdGF0ZSgpO2JyZWFrO2Nhc2UgNDc6cmV0dXJuImFjY19kZXNjcl9tdWx0aWxpbmVfdmFsdWUiO2Nhc2UgNDg6cmV0dXJuIDc7Y2FzZSA0OTpyZXR1cm4gMjI7Y2FzZSA1MDpyZXR1cm4gMjQ7Y2FzZSA1MTpyZXR1cm4gNjM7Y2FzZSA1MjpyZXR1cm4gNTtjYXNlIDUzOnJldHVybiBRLnl5dGV4dD1RLnl5dGV4dC50cmltKCksNjk7Y2FzZSA1NDpyZXR1cm4gNzI7Y2FzZSA1NTpyZXR1cm4gNzM7Y2FzZSA1NjpyZXR1cm4gNzA7Y2FzZSA1NzpyZXR1cm4gNzE7Y2FzZSA1ODpyZXR1cm4gNzQ7Y2FzZSA1OTpyZXR1cm4gNzU7Y2FzZSA2MDpyZXR1cm4gNzY7Y2FzZSA2MTpyZXR1cm4gNzc7Y2FzZSA2MjpyZXR1cm4gNzg7Y2FzZSA2MzpyZXR1cm4gNjc7Y2FzZSA2NDpyZXR1cm4gNjg7Y2FzZSA2NTpyZXR1cm4gNTtjYXNlIDY2OnJldHVybiJJTlZBTElEIn19LHJ1bGVzOlsvXig/OiUlXHspL2ksL14oPzooKD86KD8hXH0lJSlbXjouXSkqKSkvaSwvXig/OjopL2ksL14oPzpcfSUlKS9pLC9eKD86KCg/Oig/IVx9JSUpLnxcbikqKSkvaSwvXig/Oltcbl0rKS9pLC9eKD86XHMrKS9pLC9eKD86KCg/IVxuKVxzKSspL2ksL14oPzojW15cbl0qKS9pLC9eKD86JSg/IVx7KVteXG5dKikvaSwvXig/OlteXH1dJSVbXlxuXSopL2ksL14oPzpbMC05XSsoPz1bIFxuXSspKS9pLC9eKD86cGFydGljaXBhbnRcYikvaSwvXig/OmFjdG9yXGIpL2ksL14oPzpbXlwtPjpcbiw7XSs/KFtcLV0qW15cLT46XG4sO10rPykqPyg/PSgoPyFcbilccykrYXMoPyFcbilcc3xbI1xuO118JCkpL2ksL14oPzphc1xiKS9pLC9eKD86KD86KSkvaSwvXig/Omxvb3BcYikvaSwvXig/OnJlY3RcYikvaSwvXig/Om9wdFxiKS9pLC9eKD86YWx0XGIpL2ksL14oPzplbHNlXGIpL2ksL14oPzpwYXJcYikvaSwvXig/OmFuZFxiKS9pLC9eKD86Y3JpdGljYWxcYikvaSwvXig/Om9wdGlvblxiKS9pLC9eKD86YnJlYWtcYikvaSwvXig/Oig/Ols6XT8oPzpubyk/d3JhcCk/W14jXG47XSopL2ksL14oPzplbmRcYikvaSwvXig/OmxlZnQgb2ZcYikvaSwvXig/OnJpZ2h0IG9mXGIpL2ksL14oPzpsaW5rc1xiKS9pLC9eKD86bGlua1xiKS9pLC9eKD86cHJvcGVydGllc1xiKS9pLC9eKD86ZGV0YWlsc1xiKS9pLC9eKD86b3ZlclxiKS9pLC9eKD86bm90ZVxiKS9pLC9eKD86YWN0aXZhdGVcYikvaSwvXig/OmRlYWN0aXZhdGVcYikvaSwvXig/OnRpdGxlXHNbXiNcbjtdKykvaSwvXig/OnRpdGxlOlxzW14jXG47XSspL2ksL14oPzphY2NUaXRsZVxzKjpccyopL2ksL14oPzooPyFcbnx8KSpbXlxuXSopL2ksL14oPzphY2NEZXNjclxzKjpccyopL2ksL14oPzooPyFcbnx8KSpbXlxuXSopL2ksL14oPzphY2NEZXNjclxzKlx7XHMqKS9pLC9eKD86W1x9XSkvaSwvXig/OlteXH1dKikvaSwvXig/OnNlcXVlbmNlRGlhZ3JhbVxiKS9pLC9eKD86YXV0b251bWJlclxiKS9pLC9eKD86b2ZmXGIpL2ksL14oPzosKS9pLC9eKD86OykvaSwvXig/OlteXCtcLT46XG4sO10rKCg/ISgteHwtLXh8LVwpfC0tXCkpKVtcLV0qW15cK1wtPjpcbiw7XSspKikvaSwvXig/Oi0+PikvaSwvXig/Oi0tPj4pL2ksL14oPzotPikvaSwvXig/Oi0tPikvaSwvXig/Oi1beF0pL2ksL14oPzotLVt4XSkvaSwvXig/Oi1bXCldKS9pLC9eKD86LS1bXCldKS9pLC9eKD86Oig/Oig/Om5vKT93cmFwKT9bXiNcbjtdKykvaSwvXig/OlwrKS9pLC9eKD86LSkvaSwvXig/OiQpL2ksL14oPzouKS9pXSxjb25kaXRpb25zOnthY2NfZGVzY3JfbXVsdGlsaW5lOntydWxlczpbNDYsNDddLGluY2x1c2l2ZTohMX0sYWNjX2Rlc2NyOntydWxlczpbNDRdLGluY2x1c2l2ZTohMX0sYWNjX3RpdGxlOntydWxlczpbNDJdLGluY2x1c2l2ZTohMX0sb3Blbl9kaXJlY3RpdmU6e3J1bGVzOlsxLDhdLGluY2x1c2l2ZTohMX0sdHlwZV9kaXJlY3RpdmU6e3J1bGVzOlsyLDMsOF0saW5jbHVzaXZlOiExfSxhcmdfZGlyZWN0aXZlOntydWxlczpbMyw0LDhdLGluY2x1c2l2ZTohMX0sSUQ6e3J1bGVzOls3LDgsMTRdLGluY2x1c2l2ZTohMX0sQUxJQVM6e3J1bGVzOls3LDgsMTUsMTZdLGluY2x1c2l2ZTohMX0sTElORTp7cnVsZXM6WzcsOCwyN10saW5jbHVzaXZlOiExfSxJTklUSUFMOntydWxlczpbMCw1LDYsOCw5LDEwLDExLDEyLDEzLDE3LDE4LDE5LDIwLDIxLDIyLDIzLDI0LDI1LDI2LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQwLDQxLDQzLDQ1LDQ4LDQ5LDUwLDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU4LDU5LDYwLDYxLDYyLDYzLDY0LDY1LDY2XSxpbmNsdXNpdmU6ITB9fX07cmV0dXJuIGl0fSgpO1cubGV4ZXI9dHQ7ZnVuY3Rpb24gSygpe3RoaXMueXk9e319cmV0dXJuIEsucHJvdG90eXBlPVcsVy5QYXJzZXI9SyxuZXcgS30oKTtINC5wYXJzZXI9SDQ7Y29uc3QgYml0PXQ9PnQubWF0Y2goL15ccypzZXF1ZW5jZURpYWdyYW0vKSE9PW51bGw7bGV0IGh1LG5zPXt9LGJpPVtdLHUwPSExLEc0O2NvbnN0IF9pdD1mdW5jdGlvbih0LGUscil7WGUucGFyc2VEaXJlY3RpdmUodGhpcyx0LGUscil9LGo0PWZ1bmN0aW9uKHQsZSxyLG4pe2NvbnN0IGk9bnNbdF07aSYmZT09PWkubmFtZSYmcj09bnVsbHx8KChyPT1udWxsfHxyLnRleHQ9PW51bGwpJiYocj17dGV4dDplLHdyYXA6bnVsbCx0eXBlOm59KSwobj09bnVsbHx8ci50ZXh0PT1udWxsKSYmKHI9e3RleHQ6ZSx3cmFwOm51bGwsdHlwZTpufSksbnNbdF09e25hbWU6ZSxkZXNjcmlwdGlvbjpyLnRleHQsd3JhcDpyLndyYXA9PT12b2lkIDAmJnVsKCl8fCEhci53cmFwLHByZXZBY3RvcjpodSxsaW5rczp7fSxwcm9wZXJ0aWVzOnt9LGFjdG9yQ250Om51bGwscmVjdERhdGE6bnVsbCx0eXBlOm58fCJwYXJ0aWNpcGFudCJ9LGh1JiZuc1todV0mJihuc1todV0ubmV4dEFjdG9yPXQpLGh1PXQpfSx2aXQ9dD0+e2xldCBlLHI9MDtmb3IoZT0wO2U8YmkubGVuZ3RoO2UrKyliaVtlXS50eXBlPT09ZHUuQUNUSVZFX1NUQVJUJiZiaVtlXS5mcm9tLmFjdG9yPT09dCYmcisrLGJpW2VdLnR5cGU9PT1kdS5BQ1RJVkVfRU5EJiZiaVtlXS5mcm9tLmFjdG9yPT09dCYmci0tO3JldHVybiByfSx4aXQ9ZnVuY3Rpb24odCxlLHIsbil7YmkucHVzaCh7ZnJvbTp0LHRvOmUsbWVzc2FnZTpyLnRleHQsd3JhcDpyLndyYXA9PT12b2lkIDAmJnVsKCl8fCEhci53cmFwLGFuc3dlcjpufSl9LGhyPWZ1bmN0aW9uKHQsZSxyPXt0ZXh0OnZvaWQgMCx3cmFwOnZvaWQgMH0sbil7aWYobj09PWR1LkFDVElWRV9FTkQmJnZpdCh0LmFjdG9yKTwxKXtsZXQgYT1uZXcgRXJyb3IoIlRyeWluZyB0byBpbmFjdGl2YXRlIGFuIGluYWN0aXZlIHBhcnRpY2lwYW50ICgiK3QuYWN0b3IrIikiKTt0aHJvdyBhLmhhc2g9e3RleHQ6Ii0+Pi0iLHRva2VuOiItPj4tIixsaW5lOiIxIixsb2M6e2ZpcnN0X2xpbmU6MSxsYXN0X2xpbmU6MSxmaXJzdF9jb2x1bW46MSxsYXN0X2NvbHVtbjoxfSxleHBlY3RlZDpbIidBQ1RJVkVfUEFSVElDSVBBTlQnIl19LGF9cmV0dXJuIGJpLnB1c2goe2Zyb206dCx0bzplLG1lc3NhZ2U6ci50ZXh0LHdyYXA6ci53cmFwPT09dm9pZCAwJiZ1bCgpfHwhIXIud3JhcCx0eXBlOm59KSwhMH0sa2l0PWZ1bmN0aW9uKCl7cmV0dXJuIGJpfSx3aXQ9ZnVuY3Rpb24oKXtyZXR1cm4gbnN9LGZ1PWZ1bmN0aW9uKHQpe3JldHVybiBuc1t0XX0sVGl0PWZ1bmN0aW9uKCl7cmV0dXJuIE9iamVjdC5rZXlzKG5zKX0sRWl0PWZ1bmN0aW9uKCl7dTA9ITB9LENpdD1mdW5jdGlvbigpe3UwPSExfSxTaXQ9KCk9PnUwLEFpdD1mdW5jdGlvbih0KXtHND10fSx1bD0oKT0+dHlwZW9mIEc0PCJ1Ij9HNDpudCgpLnNlcXVlbmNlLndyYXAsTWl0PWZ1bmN0aW9uKCl7bnM9e30sYmk9W10sdTA9ITEsY2koKX0sTGl0PWZ1bmN0aW9uKHQpe2NvbnN0IGU9dC50cmltKCkscj17dGV4dDplLnJlcGxhY2UoL15bOl0/KD86bm8pP3dyYXA6LywiIikudHJpbSgpLHdyYXA6ZS5tYXRjaCgvXls6XT93cmFwOi8pIT09bnVsbD8hMDplLm1hdGNoKC9eWzpdP25vd3JhcDovKSE9PW51bGw/ITE6dm9pZCAwfTtyZXR1cm4gSC5kZWJ1ZygicGFyc2VNZXNzYWdlOiIscikscn0sZHU9e1NPTElEOjAsRE9UVEVEOjEsTk9URToyLFNPTElEX0NST1NTOjMsRE9UVEVEX0NST1NTOjQsU09MSURfT1BFTjo1LERPVFRFRF9PUEVOOjYsTE9PUF9TVEFSVDoxMCxMT09QX0VORDoxMSxBTFRfU1RBUlQ6MTIsQUxUX0VMU0U6MTMsQUxUX0VORDoxNCxPUFRfU1RBUlQ6MTUsT1BUX0VORDoxNixBQ1RJVkVfU1RBUlQ6MTcsQUNUSVZFX0VORDoxOCxQQVJfU1RBUlQ6MTksUEFSX0FORDoyMCxQQVJfRU5EOjIxLFJFQ1RfU1RBUlQ6MjIsUkVDVF9FTkQ6MjMsU09MSURfUE9JTlQ6MjQsRE9UVEVEX1BPSU5UOjI1LEFVVE9OVU1CRVI6MjYsQ1JJVElDQUxfU1RBUlQ6MjcsQ1JJVElDQUxfT1BUSU9OOjI4LENSSVRJQ0FMX0VORDoyOSxCUkVBS19TVEFSVDozMCxCUkVBS19FTkQ6MzF9LFJpdD17RklMTEVEOjAsT1BFTjoxfSxJaXQ9e0xFRlRPRjowLFJJR0hUT0Y6MSxPVkVSOjJ9LGhMPWZ1bmN0aW9uKHQsZSxyKXtyLnRleHQsci53cmFwPT09dm9pZCAwJiZ1bCgpfHxyLndyYXA7Y29uc3Qgbj1bXS5jb25jYXQodCx0KTtiaS5wdXNoKHtmcm9tOm5bMF0sdG86blsxXSxtZXNzYWdlOnIudGV4dCx3cmFwOnIud3JhcD09PXZvaWQgMCYmdWwoKXx8ISFyLndyYXAsdHlwZTpkdS5OT1RFLHBsYWNlbWVudDplfSl9LGZMPWZ1bmN0aW9uKHQsZSl7Y29uc3Qgcj1mdSh0KTt0cnl7bGV0IG49YWkoZS50ZXh0LG50KCkpO249bi5yZXBsYWNlKC8mYW1wOy9nLCImIiksbj1uLnJlcGxhY2UoLyZlcXVhbHM7L2csIj0iKTtjb25zdCBpPUpTT04ucGFyc2Uobik7JDQocixpKX1jYXRjaChuKXtILmVycm9yKCJlcnJvciB3aGlsZSBwYXJzaW5nIGFjdG9yIGxpbmsgdGV4dCIsbil9fSxOaXQ9ZnVuY3Rpb24odCxlKXtjb25zdCByPWZ1KHQpO3RyeXtjb25zdCBzPXt9O2xldCBvPWFpKGUudGV4dCxudCgpKTt2YXIgbj1vLmluZGV4T2YoIkAiKTtvPW8ucmVwbGFjZSgvJmFtcDsvZywiJiIpLG89by5yZXBsYWNlKC8mZXF1YWxzOy9nLCI9Iik7dmFyIGk9by5zbGljZSgwLG4tMSkudHJpbSgpLGE9by5zbGljZShuKzEpLnRyaW0oKTtzW2ldPWEsJDQocixzKX1jYXRjaChzKXtILmVycm9yKCJlcnJvciB3aGlsZSBwYXJzaW5nIGFjdG9yIGxpbmsgdGV4dCIscyl9fTtmdW5jdGlvbiAkNCh0LGUpe2lmKHQubGlua3M9PW51bGwpdC5saW5rcz1lO2Vsc2UgZm9yKGxldCByIGluIGUpdC5saW5rc1tyXT1lW3JdfWNvbnN0IGRMPWZ1bmN0aW9uKHQsZSl7Y29uc3Qgcj1mdSh0KTt0cnl7bGV0IG49YWkoZS50ZXh0LG50KCkpO2NvbnN0IGk9SlNPTi5wYXJzZShuKTtwTChyLGkpfWNhdGNoKG4pe0guZXJyb3IoImVycm9yIHdoaWxlIHBhcnNpbmcgYWN0b3IgcHJvcGVydGllcyB0ZXh0IixuKX19O2Z1bmN0aW9uIHBMKHQsZSl7aWYodC5wcm9wZXJ0aWVzPT1udWxsKXQucHJvcGVydGllcz1lO2Vsc2UgZm9yKGxldCByIGluIGUpdC5wcm9wZXJ0aWVzW3JdPWVbcl19Y29uc3QgZ0w9ZnVuY3Rpb24odCxlKXtjb25zdCByPWZ1KHQpLG49ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZS50ZXh0KTt0cnl7Y29uc3QgaT1uLmlubmVySFRNTCxhPUpTT04ucGFyc2UoaSk7YS5wcm9wZXJ0aWVzJiZwTChyLGEucHJvcGVydGllcyksYS5saW5rcyYmJDQocixhLmxpbmtzKX1jYXRjaChpKXtILmVycm9yKCJlcnJvciB3aGlsZSBwYXJzaW5nIGFjdG9yIGRldGFpbHMgdGV4dCIsaSl9fSxCaXQ9ZnVuY3Rpb24odCxlKXtpZih0eXBlb2YgdDwidSImJnR5cGVvZiB0LnByb3BlcnRpZXM8InUiKXJldHVybiB0LnByb3BlcnRpZXNbZV19LHlMPWZ1bmN0aW9uKHQpe2lmKHQgaW5zdGFuY2VvZiBBcnJheSl0LmZvckVhY2goZnVuY3Rpb24oZSl7eUwoZSl9KTtlbHNlIHN3aXRjaCh0LnR5cGUpe2Nhc2Uic2VxdWVuY2VJbmRleCI6YmkucHVzaCh7ZnJvbTp2b2lkIDAsdG86dm9pZCAwLG1lc3NhZ2U6e3N0YXJ0OnQuc2VxdWVuY2VJbmRleCxzdGVwOnQuc2VxdWVuY2VJbmRleFN0ZXAsdmlzaWJsZTp0LnNlcXVlbmNlVmlzaWJsZX0sd3JhcDohMSx0eXBlOnQuc2lnbmFsVHlwZX0pO2JyZWFrO2Nhc2UiYWRkUGFydGljaXBhbnQiOmo0KHQuYWN0b3IsdC5hY3Rvcix0LmRlc2NyaXB0aW9uLCJwYXJ0aWNpcGFudCIpO2JyZWFrO2Nhc2UiYWRkQWN0b3IiOmo0KHQuYWN0b3IsdC5hY3Rvcix0LmRlc2NyaXB0aW9uLCJhY3RvciIpO2JyZWFrO2Nhc2UiYWN0aXZlU3RhcnQiOmhyKHQuYWN0b3Isdm9pZCAwLHZvaWQgMCx0LnNpZ25hbFR5cGUpO2JyZWFrO2Nhc2UiYWN0aXZlRW5kIjpocih0LmFjdG9yLHZvaWQgMCx2b2lkIDAsdC5zaWduYWxUeXBlKTticmVhaztjYXNlImFkZE5vdGUiOmhMKHQuYWN0b3IsdC5wbGFjZW1lbnQsdC50ZXh0KTticmVhaztjYXNlImFkZExpbmtzIjpmTCh0LmFjdG9yLHQudGV4dCk7YnJlYWs7Y2FzZSJhZGRBTGluayI6Tml0KHQuYWN0b3IsdC50ZXh0KTticmVhaztjYXNlImFkZFByb3BlcnRpZXMiOmRMKHQuYWN0b3IsdC50ZXh0KTticmVhaztjYXNlImFkZERldGFpbHMiOmdMKHQuYWN0b3IsdC50ZXh0KTticmVhaztjYXNlImFkZE1lc3NhZ2UiOmhyKHQuZnJvbSx0LnRvLHQubXNnLHQuc2lnbmFsVHlwZSk7YnJlYWs7Y2FzZSJsb29wU3RhcnQiOmhyKHZvaWQgMCx2b2lkIDAsdC5sb29wVGV4dCx0LnNpZ25hbFR5cGUpO2JyZWFrO2Nhc2UibG9vcEVuZCI6aHIodm9pZCAwLHZvaWQgMCx2b2lkIDAsdC5zaWduYWxUeXBlKTticmVhaztjYXNlInJlY3RTdGFydCI6aHIodm9pZCAwLHZvaWQgMCx0LmNvbG9yLHQuc2lnbmFsVHlwZSk7YnJlYWs7Y2FzZSJyZWN0RW5kIjpocih2b2lkIDAsdm9pZCAwLHZvaWQgMCx0LnNpZ25hbFR5cGUpO2JyZWFrO2Nhc2Uib3B0U3RhcnQiOmhyKHZvaWQgMCx2b2lkIDAsdC5vcHRUZXh0LHQuc2lnbmFsVHlwZSk7YnJlYWs7Y2FzZSJvcHRFbmQiOmhyKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHQuc2lnbmFsVHlwZSk7YnJlYWs7Y2FzZSJhbHRTdGFydCI6aHIodm9pZCAwLHZvaWQgMCx0LmFsdFRleHQsdC5zaWduYWxUeXBlKTticmVhaztjYXNlImVsc2UiOmhyKHZvaWQgMCx2b2lkIDAsdC5hbHRUZXh0LHQuc2lnbmFsVHlwZSk7YnJlYWs7Y2FzZSJhbHRFbmQiOmhyKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHQuc2lnbmFsVHlwZSk7YnJlYWs7Y2FzZSJzZXRBY2NUaXRsZSI6WW4odC50ZXh0KTticmVhaztjYXNlInBhclN0YXJ0Ijpocih2b2lkIDAsdm9pZCAwLHQucGFyVGV4dCx0LnNpZ25hbFR5cGUpO2JyZWFrO2Nhc2UiYW5kIjpocih2b2lkIDAsdm9pZCAwLHQucGFyVGV4dCx0LnNpZ25hbFR5cGUpO2JyZWFrO2Nhc2UicGFyRW5kIjpocih2b2lkIDAsdm9pZCAwLHZvaWQgMCx0LnNpZ25hbFR5cGUpO2JyZWFrO2Nhc2UiY3JpdGljYWxTdGFydCI6aHIodm9pZCAwLHZvaWQgMCx0LmNyaXRpY2FsVGV4dCx0LnNpZ25hbFR5cGUpO2JyZWFrO2Nhc2Uib3B0aW9uIjpocih2b2lkIDAsdm9pZCAwLHQub3B0aW9uVGV4dCx0LnNpZ25hbFR5cGUpO2JyZWFrO2Nhc2UiY3JpdGljYWxFbmQiOmhyKHZvaWQgMCx2b2lkIDAsdm9pZCAwLHQuc2lnbmFsVHlwZSk7YnJlYWs7Y2FzZSJicmVha1N0YXJ0Ijpocih2b2lkIDAsdm9pZCAwLHQuYnJlYWtUZXh0LHQuc2lnbmFsVHlwZSk7YnJlYWs7Y2FzZSJicmVha0VuZCI6aHIodm9pZCAwLHZvaWQgMCx2b2lkIDAsdC5zaWduYWxUeXBlKTticmVha319LG1MPXthZGRBY3RvcjpqNCxhZGRNZXNzYWdlOnhpdCxhZGRTaWduYWw6aHIsYWRkTGlua3M6ZkwsYWRkRGV0YWlsczpnTCxhZGRQcm9wZXJ0aWVzOmRMLGF1dG9XcmFwOnVsLHNldFdyYXA6QWl0LGVuYWJsZVNlcXVlbmNlTnVtYmVyczpFaXQsZGlzYWJsZVNlcXVlbmNlTnVtYmVyczpDaXQsc2hvd1NlcXVlbmNlTnVtYmVyczpTaXQsZ2V0TWVzc2FnZXM6a2l0LGdldEFjdG9yczp3aXQsZ2V0QWN0b3I6ZnUsZ2V0QWN0b3JLZXlzOlRpdCxnZXRBY3RvclByb3BlcnR5OkJpdCxnZXRBY2NUaXRsZTp1aSxnZXREaWFncmFtVGl0bGU6dTEsc2V0RGlhZ3JhbVRpdGxlOmMxLHBhcnNlRGlyZWN0aXZlOl9pdCxnZXRDb25maWc6KCk9Pm50KCkuc2VxdWVuY2UsY2xlYXI6TWl0LHBhcnNlTWVzc2FnZTpMaXQsTElORVRZUEU6ZHUsQVJST1dUWVBFOlJpdCxQTEFDRU1FTlQ6SWl0LGFkZE5vdGU6aEwsc2V0QWNjVGl0bGU6WW4sYXBwbHk6eUwsc2V0QWNjRGVzY3JpcHRpb246aGksZ2V0QWNjRGVzY3JpcHRpb246Zml9O2xldCBYND1bXTtjb25zdCBEaXQ9dD0+e1g0LnB1c2godCl9LGJMPSgpPT57WDQuZm9yRWFjaCh0PT57dCgpfSksWDQ9W119LGgwPWZ1bmN0aW9uKHQsZSl7Y29uc3Qgcj10LmFwcGVuZCgicmVjdCIpO3JldHVybiByLmF0dHIoIngiLGUueCksci5hdHRyKCJ5IixlLnkpLHIuYXR0cigiZmlsbCIsZS5maWxsKSxyLmF0dHIoInN0cm9rZSIsZS5zdHJva2UpLHIuYXR0cigid2lkdGgiLGUud2lkdGgpLHIuYXR0cigiaGVpZ2h0IixlLmhlaWdodCksci5hdHRyKCJyeCIsZS5yeCksci5hdHRyKCJyeSIsZS5yeSksdHlwZW9mIGUuY2xhc3M8InUiJiZyLmF0dHIoImNsYXNzIixlLmNsYXNzKSxyfSxfTD0odCxlKT0+e0RpdCgoKT0+e2NvbnN0IHI9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCh0KTtyLmxlbmd0aCE9PTAmJihyWzBdLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3ZlciIsZnVuY3Rpb24oKXtxaXQoImFjdG9yIitlKyJfcG9wdXAiKX0pLHJbMF0uYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdXQiLGZ1bmN0aW9uKCl7Vml0KCJhY3RvciIrZSsiX3BvcHVwIil9KSl9KX0sT2l0PWZ1bmN0aW9uKHQsZSxyLG4saSl7aWYoZS5saW5rcz09PXZvaWQgMHx8ZS5saW5rcz09PW51bGx8fE9iamVjdC5rZXlzKGUubGlua3MpLmxlbmd0aD09PTApcmV0dXJue2hlaWdodDowLHdpZHRoOjB9O2NvbnN0IGE9ZS5saW5rcyxzPWUuYWN0b3JDbnQsbz1lLnJlY3REYXRhO3ZhciBsPSJub25lIjtpJiYobD0iYmxvY2sgIWltcG9ydGFudCIpO2NvbnN0IHU9dC5hcHBlbmQoImciKTt1LmF0dHIoImlkIiwiYWN0b3IiK3MrIl9wb3B1cCIpLHUuYXR0cigiY2xhc3MiLCJhY3RvclBvcHVwTWVudSIpLHUuYXR0cigiZGlzcGxheSIsbCksX0woIiNhY3RvciIrcysiX3BvcHVwIixzKTt2YXIgaD0iIjt0eXBlb2Ygby5jbGFzczwidSImJihoPSIgIitvLmNsYXNzKTtsZXQgZD1vLndpZHRoPnI/by53aWR0aDpyO2NvbnN0IGY9dS5hcHBlbmQoInJlY3QiKTtpZihmLmF0dHIoImNsYXNzIiwiYWN0b3JQb3B1cE1lbnVQYW5lbCIraCksZi5hdHRyKCJ4IixvLngpLGYuYXR0cigieSIsby5oZWlnaHQpLGYuYXR0cigiZmlsbCIsby5maWxsKSxmLmF0dHIoInN0cm9rZSIsby5zdHJva2UpLGYuYXR0cigid2lkdGgiLGQpLGYuYXR0cigiaGVpZ2h0IixvLmhlaWdodCksZi5hdHRyKCJyeCIsby5yeCksZi5hdHRyKCJyeSIsby5yeSksYSE9bnVsbCl7dmFyIHA9MjA7Zm9yKGxldCB5IGluIGEpe3ZhciBtPXUuYXBwZW5kKCJhIiksXz1raShhW3ldKTttLmF0dHIoInhsaW5rOmhyZWYiLF8pLG0uYXR0cigidGFyZ2V0IiwiX2JsYW5rIiksZWF0KG4pKHksbSxvLngrMTAsby5oZWlnaHQrcCxkLDIwLHtjbGFzczoiYWN0b3IifSxuKSxwKz0zMH19cmV0dXJuIGYuYXR0cigiaGVpZ2h0IixwKSx7aGVpZ2h0Om8uaGVpZ2h0K3Asd2lkdGg6ZH19LHZMPWZ1bmN0aW9uKHQsZSxyLG4pe2NvbnN0IGk9dC5hcHBlbmQoImltYWdlIik7aS5hdHRyKCJ4IixlKSxpLmF0dHIoInkiLHIpO3ZhciBhPWtpKG4pO2kuYXR0cigieGxpbms6aHJlZiIsYSl9LHhMPWZ1bmN0aW9uKHQsZSxyLG4pe2NvbnN0IGk9dC5hcHBlbmQoInVzZSIpO2kuYXR0cigieCIsZSksaS5hdHRyKCJ5IixyKTt2YXIgYT1raShuKTtpLmF0dHIoInhsaW5rOmhyZWYiLCIjIithKX0sRml0PWZ1bmN0aW9uKHQpe3JldHVybiJ2YXIgcHUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnIit0KyInKTsgaWYgKHB1ICE9IG51bGwpIHsgcHUuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7IH0ifSxQaXQ9ZnVuY3Rpb24odCl7cmV0dXJuInZhciBwdSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCciK3QrIicpOyBpZiAocHUgIT0gbnVsbCkgeyBwdS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOyB9In0scWl0PWZ1bmN0aW9uKHQpe3ZhciBlPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHQpO2UhPW51bGwmJihlLnN0eWxlLmRpc3BsYXk9ImJsb2NrIil9LFZpdD1mdW5jdGlvbih0KXt2YXIgZT1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0KTtlIT1udWxsJiYoZS5zdHlsZS5kaXNwbGF5PSJub25lIil9LGhsPWZ1bmN0aW9uKHQsZSl7bGV0IHI9MCxuPTA7Y29uc3QgaT1lLnRleHQuc3BsaXQocGUubGluZUJyZWFrUmVnZXgpO2xldCBhPVtdLHM9MCxvPSgpPT5lLnk7aWYodHlwZW9mIGUudmFsaWduPCJ1IiYmdHlwZW9mIGUudGV4dE1hcmdpbjwidSImJmUudGV4dE1hcmdpbj4wKXN3aXRjaChlLnZhbGlnbil7Y2FzZSJ0b3AiOmNhc2Uic3RhcnQiOm89KCk9Pk1hdGgucm91bmQoZS55K2UudGV4dE1hcmdpbik7YnJlYWs7Y2FzZSJtaWRkbGUiOmNhc2UiY2VudGVyIjpvPSgpPT5NYXRoLnJvdW5kKGUueSsocituK2UudGV4dE1hcmdpbikvMik7YnJlYWs7Y2FzZSJib3R0b20iOmNhc2UiZW5kIjpvPSgpPT5NYXRoLnJvdW5kKGUueSsocituKzIqZS50ZXh0TWFyZ2luKS1lLnRleHRNYXJnaW4pO2JyZWFrfWlmKHR5cGVvZiBlLmFuY2hvcjwidSImJnR5cGVvZiBlLnRleHRNYXJnaW48InUiJiZ0eXBlb2YgZS53aWR0aDwidSIpc3dpdGNoKGUuYW5jaG9yKXtjYXNlImxlZnQiOmNhc2Uic3RhcnQiOmUueD1NYXRoLnJvdW5kKGUueCtlLnRleHRNYXJnaW4pLGUuYW5jaG9yPSJzdGFydCIsZS5kb21pbmFudEJhc2VsaW5lPSJtaWRkbGUiLGUuYWxpZ25tZW50QmFzZWxpbmU9Im1pZGRsZSI7YnJlYWs7Y2FzZSJtaWRkbGUiOmNhc2UiY2VudGVyIjplLng9TWF0aC5yb3VuZChlLngrZS53aWR0aC8yKSxlLmFuY2hvcj0ibWlkZGxlIixlLmRvbWluYW50QmFzZWxpbmU9Im1pZGRsZSIsZS5hbGlnbm1lbnRCYXNlbGluZT0ibWlkZGxlIjticmVhaztjYXNlInJpZ2h0IjpjYXNlImVuZCI6ZS54PU1hdGgucm91bmQoZS54K2Uud2lkdGgtZS50ZXh0TWFyZ2luKSxlLmFuY2hvcj0iZW5kIixlLmRvbWluYW50QmFzZWxpbmU9Im1pZGRsZSIsZS5hbGlnbm1lbnRCYXNlbGluZT0ibWlkZGxlIjticmVha31mb3IobGV0IGw9MDtsPGkubGVuZ3RoO2wrKyl7bGV0IHU9aVtsXTt0eXBlb2YgZS50ZXh0TWFyZ2luPCJ1IiYmZS50ZXh0TWFyZ2luPT09MCYmdHlwZW9mIGUuZm9udFNpemU8InUiJiYocz1sKmUuZm9udFNpemUpO2NvbnN0IGg9dC5hcHBlbmQoInRleHQiKTtpZihoLmF0dHIoIngiLGUueCksaC5hdHRyKCJ5IixvKCkpLHR5cGVvZiBlLmFuY2hvcjwidSImJmguYXR0cigidGV4dC1hbmNob3IiLGUuYW5jaG9yKS5hdHRyKCJkb21pbmFudC1iYXNlbGluZSIsZS5kb21pbmFudEJhc2VsaW5lKS5hdHRyKCJhbGlnbm1lbnQtYmFzZWxpbmUiLGUuYWxpZ25tZW50QmFzZWxpbmUpLHR5cGVvZiBlLmZvbnRGYW1pbHk8InUiJiZoLnN0eWxlKCJmb250LWZhbWlseSIsZS5mb250RmFtaWx5KSx0eXBlb2YgZS5mb250U2l6ZTwidSImJmguc3R5bGUoImZvbnQtc2l6ZSIsZS5mb250U2l6ZSksdHlwZW9mIGUuZm9udFdlaWdodDwidSImJmguc3R5bGUoImZvbnQtd2VpZ2h0IixlLmZvbnRXZWlnaHQpLHR5cGVvZiBlLmZpbGw8InUiJiZoLmF0dHIoImZpbGwiLGUuZmlsbCksdHlwZW9mIGUuY2xhc3M8InUiJiZoLmF0dHIoImNsYXNzIixlLmNsYXNzKSx0eXBlb2YgZS5keTwidSI/aC5hdHRyKCJkeSIsZS5keSk6cyE9PTAmJmguYXR0cigiZHkiLHMpLGUudHNwYW4pe2NvbnN0IGQ9aC5hcHBlbmQoInRzcGFuIik7ZC5hdHRyKCJ4IixlLngpLHR5cGVvZiBlLmZpbGw8InUiJiZkLmF0dHIoImZpbGwiLGUuZmlsbCksZC50ZXh0KHUpfWVsc2UgaC50ZXh0KHUpO3R5cGVvZiBlLnZhbGlnbjwidSImJnR5cGVvZiBlLnRleHRNYXJnaW48InUiJiZlLnRleHRNYXJnaW4+MCYmKG4rPShoLl9ncm91cHN8fGgpWzBdWzBdLmdldEJCb3goKS5oZWlnaHQscj1uKSxhLnB1c2goaCl9cmV0dXJuIGF9LGtMPWZ1bmN0aW9uKHQsZSl7ZnVuY3Rpb24gcihpLGEscyxvLGwpe3JldHVybiBpKyIsIithKyIgIisoaStzKSsiLCIrYSsiICIrKGkrcykrIiwiKyhhK28tbCkrIiAiKyhpK3MtbCoxLjIpKyIsIisoYStvKSsiICIraSsiLCIrKGErbyl9Y29uc3Qgbj10LmFwcGVuZCgicG9seWdvbiIpO3JldHVybiBuLmF0dHIoInBvaW50cyIscihlLngsZS55LGUud2lkdGgsZS5oZWlnaHQsNykpLG4uYXR0cigiY2xhc3MiLCJsYWJlbEJveCIpLGUueT1lLnkrZS5oZWlnaHQvMixobCh0LGUpLG59O2xldCBZaT0tMTtjb25zdCB3TD0odCxlKT0+eyF0LnNlbGVjdEFsbHx8dC5zZWxlY3RBbGwoIi5hY3Rvci1saW5lIikuYXR0cigiY2xhc3MiLCIyMDAiKS5hdHRyKCJ5MiIsZS01NSl9LHppdD1mdW5jdGlvbih0LGUscil7Y29uc3Qgbj1lLngrZS53aWR0aC8yLGk9dC5hcHBlbmQoImciKTt2YXIgYT1pO2UueT09PTAmJihZaSsrLGEuYXBwZW5kKCJsaW5lIikuYXR0cigiaWQiLCJhY3RvciIrWWkpLmF0dHIoIngxIixuKS5hdHRyKCJ5MSIsNSkuYXR0cigieDIiLG4pLmF0dHIoInkyIiwyZTMpLmF0dHIoImNsYXNzIiwiYWN0b3ItbGluZSIpLmF0dHIoInN0cm9rZS13aWR0aCIsIjAuNXB4IikuYXR0cigic3Ryb2tlIiwiIzk5OSIpLGE9aS5hcHBlbmQoImciKSxlLmFjdG9yQ250PVlpLGUubGlua3MhPW51bGwmJihhLmF0dHIoImlkIiwicm9vdC0iK1lpKSxfTCgiI3Jvb3QtIitZaSxZaSkpKTtjb25zdCBzPWYwKCk7dmFyIG89ImFjdG9yIjtlLnByb3BlcnRpZXMhPW51bGwmJmUucHJvcGVydGllcy5jbGFzcz9vPWUucHJvcGVydGllcy5jbGFzczpzLmZpbGw9IiNlYWVhZWEiLHMueD1lLngscy55PWUueSxzLndpZHRoPWUud2lkdGgscy5oZWlnaHQ9ZS5oZWlnaHQscy5jbGFzcz1vLHMucng9MyxzLnJ5PTM7Y29uc3QgbD1oMChhLHMpO2lmKGUucmVjdERhdGE9cyxlLnByb3BlcnRpZXMhPW51bGwmJmUucHJvcGVydGllcy5pY29uKXtjb25zdCBoPWUucHJvcGVydGllcy5pY29uLnRyaW0oKTtoLmNoYXJBdCgwKT09PSJAIj94TChhLHMueCtzLndpZHRoLTIwLHMueSsxMCxoLnN1YnN0cigxKSk6dkwoYSxzLngrcy53aWR0aC0yMCxzLnkrMTAsaCl9VEwocikoZS5kZXNjcmlwdGlvbixhLHMueCxzLnkscy53aWR0aCxzLmhlaWdodCx7Y2xhc3M6ImFjdG9yIn0scik7bGV0IHU9ZS5oZWlnaHQ7aWYobC5ub2RlKXtjb25zdCBoPWwubm9kZSgpLmdldEJCb3goKTtlLmhlaWdodD1oLmhlaWdodCx1PWguaGVpZ2h0fXJldHVybiB1fSxZaXQ9ZnVuY3Rpb24odCxlLHIpe2NvbnN0IG49ZS54K2Uud2lkdGgvMjtlLnk9PT0wJiYoWWkrKyx0LmFwcGVuZCgibGluZSIpLmF0dHIoImlkIiwiYWN0b3IiK1lpKS5hdHRyKCJ4MSIsbikuYXR0cigieTEiLDgwKS5hdHRyKCJ4MiIsbikuYXR0cigieTIiLDJlMykuYXR0cigiY2xhc3MiLCJhY3Rvci1saW5lIikuYXR0cigic3Ryb2tlLXdpZHRoIiwiMC41cHgiKS5hdHRyKCJzdHJva2UiLCIjOTk5IikpO2NvbnN0IGk9dC5hcHBlbmQoImciKTtpLmF0dHIoImNsYXNzIiwiYWN0b3ItbWFuIik7Y29uc3QgYT1mMCgpO2EueD1lLngsYS55PWUueSxhLmZpbGw9IiNlYWVhZWEiLGEud2lkdGg9ZS53aWR0aCxhLmhlaWdodD1lLmhlaWdodCxhLmNsYXNzPSJhY3RvciIsYS5yeD0zLGEucnk9MyxpLmFwcGVuZCgibGluZSIpLmF0dHIoImlkIiwiYWN0b3ItbWFuLXRvcnNvIitZaSkuYXR0cigieDEiLG4pLmF0dHIoInkxIixlLnkrMjUpLmF0dHIoIngyIixuKS5hdHRyKCJ5MiIsZS55KzQ1KSxpLmFwcGVuZCgibGluZSIpLmF0dHIoImlkIiwiYWN0b3ItbWFuLWFybXMiK1lpKS5hdHRyKCJ4MSIsbi0xOCkuYXR0cigieTEiLGUueSszMykuYXR0cigieDIiLG4rMTgpLmF0dHIoInkyIixlLnkrMzMpLGkuYXBwZW5kKCJsaW5lIikuYXR0cigieDEiLG4tMTgpLmF0dHIoInkxIixlLnkrNjApLmF0dHIoIngyIixuKS5hdHRyKCJ5MiIsZS55KzQ1KSxpLmFwcGVuZCgibGluZSIpLmF0dHIoIngxIixuKS5hdHRyKCJ5MSIsZS55KzQ1KS5hdHRyKCJ4MiIsbisxNikuYXR0cigieTIiLGUueSs2MCk7Y29uc3Qgcz1pLmFwcGVuZCgiY2lyY2xlIik7cy5hdHRyKCJjeCIsZS54K2Uud2lkdGgvMikscy5hdHRyKCJjeSIsZS55KzEwKSxzLmF0dHIoInIiLDE1KSxzLmF0dHIoIndpZHRoIixlLndpZHRoKSxzLmF0dHIoImhlaWdodCIsZS5oZWlnaHQpO2NvbnN0IG89aS5ub2RlKCkuZ2V0QkJveCgpO3JldHVybiBlLmhlaWdodD1vLmhlaWdodCxUTChyKShlLmRlc2NyaXB0aW9uLGksYS54LGEueSszNSxhLndpZHRoLGEuaGVpZ2h0LHtjbGFzczoiYWN0b3IifSxyKSxlLmhlaWdodH0sVWl0PWZ1bmN0aW9uKHQsZSxyKXtzd2l0Y2goZS50eXBlKXtjYXNlImFjdG9yIjpyZXR1cm4gWWl0KHQsZSxyKTtjYXNlInBhcnRpY2lwYW50IjpyZXR1cm4geml0KHQsZSxyKX19LFdpdD1mdW5jdGlvbih0KXtyZXR1cm4gdC5hcHBlbmQoImciKX0sSGl0PWZ1bmN0aW9uKHQsZSxyLG4saSl7Y29uc3QgYT1mMCgpLHM9ZS5hbmNob3JlZDthLng9ZS5zdGFydHgsYS55PWUuc3RhcnR5LGEuY2xhc3M9ImFjdGl2YXRpb24iK2klMyxhLndpZHRoPWUuc3RvcHgtZS5zdGFydHgsYS5oZWlnaHQ9ci1lLnN0YXJ0eSxoMChzLGEpfSxHaXQ9ZnVuY3Rpb24odCxlLHIsbil7Y29uc3R7Ym94TWFyZ2luOmksYm94VGV4dE1hcmdpbjphLGxhYmVsQm94SGVpZ2h0OnMsbGFiZWxCb3hXaWR0aDpvLG1lc3NhZ2VGb250RmFtaWx5OmwsbWVzc2FnZUZvbnRTaXplOnUsbWVzc2FnZUZvbnRXZWlnaHQ6aH09bixkPXQuYXBwZW5kKCJnIiksZj1mdW5jdGlvbihfLHksYix4KXtyZXR1cm4gZC5hcHBlbmQoImxpbmUiKS5hdHRyKCJ4MSIsXykuYXR0cigieTEiLHkpLmF0dHIoIngyIixiKS5hdHRyKCJ5MiIseCkuYXR0cigiY2xhc3MiLCJsb29wTGluZSIpfTtmKGUuc3RhcnR4LGUuc3RhcnR5LGUuc3RvcHgsZS5zdGFydHkpLGYoZS5zdG9weCxlLnN0YXJ0eSxlLnN0b3B4LGUuc3RvcHkpLGYoZS5zdGFydHgsZS5zdG9weSxlLnN0b3B4LGUuc3RvcHkpLGYoZS5zdGFydHgsZS5zdGFydHksZS5zdGFydHgsZS5zdG9weSksdHlwZW9mIGUuc2VjdGlvbnM8InUiJiZlLnNlY3Rpb25zLmZvckVhY2goZnVuY3Rpb24oXyl7ZihlLnN0YXJ0eCxfLnksZS5zdG9weCxfLnkpLnN0eWxlKCJzdHJva2UtZGFzaGFycmF5IiwiMywgMyIpfSk7bGV0IHA9SzQoKTtwLnRleHQ9cixwLng9ZS5zdGFydHgscC55PWUuc3RhcnR5LHAuZm9udEZhbWlseT1sLHAuZm9udFNpemU9dSxwLmZvbnRXZWlnaHQ9aCxwLmFuY2hvcj0ibWlkZGxlIixwLnZhbGlnbj0ibWlkZGxlIixwLnRzcGFuPSExLHAud2lkdGg9b3x8NTAscC5oZWlnaHQ9c3x8MjAscC50ZXh0TWFyZ2luPWEscC5jbGFzcz0ibGFiZWxUZXh0IixrTChkLHApLHA9SzQoKSxwLnRleHQ9ZS50aXRsZSxwLng9ZS5zdGFydHgrby8yKyhlLnN0b3B4LWUuc3RhcnR4KS8yLHAueT1lLnN0YXJ0eStpK2EscC5hbmNob3I9Im1pZGRsZSIscC52YWxpZ249Im1pZGRsZSIscC50ZXh0TWFyZ2luPWEscC5jbGFzcz0ibG9vcFRleHQiLHAuZm9udEZhbWlseT1sLHAuZm9udFNpemU9dSxwLmZvbnRXZWlnaHQ9aCxwLndyYXA9ITA7bGV0IG09aGwoZCxwKTtyZXR1cm4gdHlwZW9mIGUuc2VjdGlvblRpdGxlczwidSImJmUuc2VjdGlvblRpdGxlcy5mb3JFYWNoKGZ1bmN0aW9uKF8seSl7aWYoXy5tZXNzYWdlKXtwLnRleHQ9Xy5tZXNzYWdlLHAueD1lLnN0YXJ0eCsoZS5zdG9weC1lLnN0YXJ0eCkvMixwLnk9ZS5zZWN0aW9uc1t5XS55K2krYSxwLmNsYXNzPSJsb29wVGV4dCIscC5hbmNob3I9Im1pZGRsZSIscC52YWxpZ249Im1pZGRsZSIscC50c3Bhbj0hMSxwLmZvbnRGYW1pbHk9bCxwLmZvbnRTaXplPXUscC5mb250V2VpZ2h0PWgscC53cmFwPWUud3JhcCxtPWhsKGQscCk7bGV0IGI9TWF0aC5yb3VuZChtLm1hcCh4PT4oeC5fZ3JvdXBzfHx4KVswXVswXS5nZXRCQm94KCkuaGVpZ2h0KS5yZWR1Y2UoKHgsayk9PngraykpO2Uuc2VjdGlvbnNbeV0uaGVpZ2h0Kz1iLShpK2EpfX0pLGUuaGVpZ2h0PU1hdGgucm91bmQoZS5zdG9weS1lLnN0YXJ0eSksZH0saml0PWZ1bmN0aW9uKHQsZSl7aDAodCx7eDplLnN0YXJ0eCx5OmUuc3RhcnR5LHdpZHRoOmUuc3RvcHgtZS5zdGFydHgsaGVpZ2h0OmUuc3RvcHktZS5zdGFydHksZmlsbDplLmZpbGwsY2xhc3M6InJlY3QifSkubG93ZXIoKX0sJGl0PWZ1bmN0aW9uKHQpe3QuYXBwZW5kKCJkZWZzIikuYXBwZW5kKCJzeW1ib2wiKS5hdHRyKCJpZCIsImRhdGFiYXNlIikuYXR0cigiZmlsbC1ydWxlIiwiZXZlbm9kZCIpLmF0dHIoImNsaXAtcnVsZSIsImV2ZW5vZGQiKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJzY2FsZSguNSkiKS5hdHRyKCJkIiwiTTEyLjI1OC4wMDFsLjI1Ni4wMDQuMjU1LjAwNS4yNTMuMDA4LjI1MS4wMS4yNDkuMDEyLjI0Ny4wMTUuMjQ2LjAxNi4yNDIuMDE5LjI0MS4wMi4yMzkuMDIzLjIzNi4wMjQuMjMzLjAyNy4yMzEuMDI4LjIyOS4wMzEuMjI1LjAzMi4yMjMuMDM0LjIyLjAzNi4yMTcuMDM4LjIxNC4wNC4yMTEuMDQxLjIwOC4wNDMuMjA1LjA0NS4yMDEuMDQ2LjE5OC4wNDguMTk0LjA1LjE5MS4wNTEuMTg3LjA1My4xODMuMDU0LjE4LjA1Ni4xNzUuMDU3LjE3Mi4wNTkuMTY4LjA2LjE2My4wNjEuMTYuMDYzLjE1NS4wNjQuMTUuMDY2LjA3NC4wMzMuMDczLjAzMy4wNzEuMDM0LjA3LjAzNC4wNjkuMDM1LjA2OC4wMzUuMDY3LjAzNS4wNjYuMDM1LjA2NC4wMzYuMDY0LjAzNi4wNjIuMDM2LjA2LjAzNi4wNi4wMzcuMDU4LjAzNy4wNTguMDM3LjA1NS4wMzguMDU1LjAzOC4wNTMuMDM4LjA1Mi4wMzguMDUxLjAzOS4wNS4wMzkuMDQ4LjAzOS4wNDcuMDM5LjA0NS4wNC4wNDQuMDQuMDQzLjA0LjA0MS4wNC4wNC4wNDEuMDM5LjA0MS4wMzcuMDQxLjAzNi4wNDEuMDM0LjA0MS4wMzMuMDQyLjAzMi4wNDIuMDMuMDQyLjAyOS4wNDIuMDI3LjA0Mi4wMjYuMDQzLjAyNC4wNDMuMDIzLjA0My4wMjEuMDQzLjAyLjA0My4wMTguMDQ0LjAxNy4wNDMuMDE1LjA0NC4wMTMuMDQ0LjAxMi4wNDQuMDExLjA0NS4wMDkuMDQ0LjAwNy4wNDUuMDA2LjA0NS4wMDQuMDQ1LjAwMi4wNDUuMDAxLjA0NXYxN2wtLjAwMS4wNDUtLjAwMi4wNDUtLjAwNC4wNDUtLjAwNi4wNDUtLjAwNy4wNDUtLjAwOS4wNDQtLjAxMS4wNDUtLjAxMi4wNDQtLjAxMy4wNDQtLjAxNS4wNDQtLjAxNy4wNDMtLjAxOC4wNDQtLjAyLjA0My0uMDIxLjA0My0uMDIzLjA0My0uMDI0LjA0My0uMDI2LjA0My0uMDI3LjA0Mi0uMDI5LjA0Mi0uMDMuMDQyLS4wMzIuMDQyLS4wMzMuMDQyLS4wMzQuMDQxLS4wMzYuMDQxLS4wMzcuMDQxLS4wMzkuMDQxLS4wNC4wNDEtLjA0MS4wNC0uMDQzLjA0LS4wNDQuMDQtLjA0NS4wNC0uMDQ3LjAzOS0uMDQ4LjAzOS0uMDUuMDM5LS4wNTEuMDM5LS4wNTIuMDM4LS4wNTMuMDM4LS4wNTUuMDM4LS4wNTUuMDM4LS4wNTguMDM3LS4wNTguMDM3LS4wNi4wMzctLjA2LjAzNi0uMDYyLjAzNi0uMDY0LjAzNi0uMDY0LjAzNi0uMDY2LjAzNS0uMDY3LjAzNS0uMDY4LjAzNS0uMDY5LjAzNS0uMDcuMDM0LS4wNzEuMDM0LS4wNzMuMDMzLS4wNzQuMDMzLS4xNS4wNjYtLjE1NS4wNjQtLjE2LjA2My0uMTYzLjA2MS0uMTY4LjA2LS4xNzIuMDU5LS4xNzUuMDU3LS4xOC4wNTYtLjE4My4wNTQtLjE4Ny4wNTMtLjE5MS4wNTEtLjE5NC4wNS0uMTk4LjA0OC0uMjAxLjA0Ni0uMjA1LjA0NS0uMjA4LjA0My0uMjExLjA0MS0uMjE0LjA0LS4yMTcuMDM4LS4yMi4wMzYtLjIyMy4wMzQtLjIyNS4wMzItLjIyOS4wMzEtLjIzMS4wMjgtLjIzMy4wMjctLjIzNi4wMjQtLjIzOS4wMjMtLjI0MS4wMi0uMjQyLjAxOS0uMjQ2LjAxNi0uMjQ3LjAxNS0uMjQ5LjAxMi0uMjUxLjAxLS4yNTMuMDA4LS4yNTUuMDA1LS4yNTYuMDA0LS4yNTguMDAxLS4yNTgtLjAwMS0uMjU2LS4wMDQtLjI1NS0uMDA1LS4yNTMtLjAwOC0uMjUxLS4wMS0uMjQ5LS4wMTItLjI0Ny0uMDE1LS4yNDUtLjAxNi0uMjQzLS4wMTktLjI0MS0uMDItLjIzOC0uMDIzLS4yMzYtLjAyNC0uMjM0LS4wMjctLjIzMS0uMDI4LS4yMjgtLjAzMS0uMjI2LS4wMzItLjIyMy0uMDM0LS4yMi0uMDM2LS4yMTctLjAzOC0uMjE0LS4wNC0uMjExLS4wNDEtLjIwOC0uMDQzLS4yMDQtLjA0NS0uMjAxLS4wNDYtLjE5OC0uMDQ4LS4xOTUtLjA1LS4xOS0uMDUxLS4xODctLjA1My0uMTg0LS4wNTQtLjE3OS0uMDU2LS4xNzYtLjA1Ny0uMTcyLS4wNTktLjE2Ny0uMDYtLjE2NC0uMDYxLS4xNTktLjA2My0uMTU1LS4wNjQtLjE1MS0uMDY2LS4wNzQtLjAzMy0uMDcyLS4wMzMtLjA3Mi0uMDM0LS4wNy0uMDM0LS4wNjktLjAzNS0uMDY4LS4wMzUtLjA2Ny0uMDM1LS4wNjYtLjAzNS0uMDY0LS4wMzYtLjA2My0uMDM2LS4wNjItLjAzNi0uMDYxLS4wMzYtLjA2LS4wMzctLjA1OC0uMDM3LS4wNTctLjAzNy0uMDU2LS4wMzgtLjA1NS0uMDM4LS4wNTMtLjAzOC0uMDUyLS4wMzgtLjA1MS0uMDM5LS4wNDktLjAzOS0uMDQ5LS4wMzktLjA0Ni0uMDM5LS4wNDYtLjA0LS4wNDQtLjA0LS4wNDMtLjA0LS4wNDEtLjA0LS4wNC0uMDQxLS4wMzktLjA0MS0uMDM3LS4wNDEtLjAzNi0uMDQxLS4wMzQtLjA0MS0uMDMzLS4wNDItLjAzMi0uMDQyLS4wMy0uMDQyLS4wMjktLjA0Mi0uMDI3LS4wNDItLjAyNi0uMDQzLS4wMjQtLjA0My0uMDIzLS4wNDMtLjAyMS0uMDQzLS4wMi0uMDQzLS4wMTgtLjA0NC0uMDE3LS4wNDMtLjAxNS0uMDQ0LS4wMTMtLjA0NC0uMDEyLS4wNDQtLjAxMS0uMDQ1LS4wMDktLjA0NC0uMDA3LS4wNDUtLjAwNi0uMDQ1LS4wMDQtLjA0NS0uMDAyLS4wNDUtLjAwMS0uMDQ1di0xN2wuMDAxLS4wNDUuMDAyLS4wNDUuMDA0LS4wNDUuMDA2LS4wNDUuMDA3LS4wNDUuMDA5LS4wNDQuMDExLS4wNDUuMDEyLS4wNDQuMDEzLS4wNDQuMDE1LS4wNDQuMDE3LS4wNDMuMDE4LS4wNDQuMDItLjA0My4wMjEtLjA0My4wMjMtLjA0My4wMjQtLjA0My4wMjYtLjA0My4wMjctLjA0Mi4wMjktLjA0Mi4wMy0uMDQyLjAzMi0uMDQyLjAzMy0uMDQyLjAzNC0uMDQxLjAzNi0uMDQxLjAzNy0uMDQxLjAzOS0uMDQxLjA0LS4wNDEuMDQxLS4wNC4wNDMtLjA0LjA0NC0uMDQuMDQ2LS4wNC4wNDYtLjAzOS4wNDktLjAzOS4wNDktLjAzOS4wNTEtLjAzOS4wNTItLjAzOC4wNTMtLjAzOC4wNTUtLjAzOC4wNTYtLjAzOC4wNTctLjAzNy4wNTgtLjAzNy4wNi0uMDM3LjA2MS0uMDM2LjA2Mi0uMDM2LjA2My0uMDM2LjA2NC0uMDM2LjA2Ni0uMDM1LjA2Ny0uMDM1LjA2OC0uMDM1LjA2OS0uMDM1LjA3LS4wMzQuMDcyLS4wMzQuMDcyLS4wMzMuMDc0LS4wMzMuMTUxLS4wNjYuMTU1LS4wNjQuMTU5LS4wNjMuMTY0LS4wNjEuMTY3LS4wNi4xNzItLjA1OS4xNzYtLjA1Ny4xNzktLjA1Ni4xODQtLjA1NC4xODctLjA1My4xOS0uMDUxLjE5NS0uMDUuMTk4LS4wNDguMjAxLS4wNDYuMjA0LS4wNDUuMjA4LS4wNDMuMjExLS4wNDEuMjE0LS4wNC4yMTctLjAzOC4yMi0uMDM2LjIyMy0uMDM0LjIyNi0uMDMyLjIyOC0uMDMxLjIzMS0uMDI4LjIzNC0uMDI3LjIzNi0uMDI0LjIzOC0uMDIzLjI0MS0uMDIuMjQzLS4wMTkuMjQ1LS4wMTYuMjQ3LS4wMTUuMjQ5LS4wMTIuMjUxLS4wMS4yNTMtLjAwOC4yNTUtLjAwNS4yNTYtLjAwNC4yNTgtLjAwMS4yNTguMDAxem0tOS4yNTggMjAuNDk5di4wMWwuMDAxLjAyMS4wMDMuMDIxLjAwNC4wMjIuMDA1LjAyMS4wMDYuMDIyLjAwNy4wMjIuMDA5LjAyMy4wMS4wMjIuMDExLjAyMy4wMTIuMDIzLjAxMy4wMjMuMDE1LjAyMy4wMTYuMDI0LjAxNy4wMjMuMDE4LjAyNC4wMTkuMDI0LjAyMS4wMjQuMDIyLjAyNS4wMjMuMDI0LjAyNC4wMjUuMDUyLjA0OS4wNTYuMDUuMDYxLjA1MS4wNjYuMDUxLjA3LjA1MS4wNzUuMDUxLjA3OS4wNTIuMDg0LjA1Mi4wODguMDUyLjA5Mi4wNTIuMDk3LjA1Mi4xMDIuMDUxLjEwNS4wNTIuMTEuMDUyLjExNC4wNTEuMTE5LjA1MS4xMjMuMDUxLjEyNy4wNS4xMzEuMDUuMTM1LjA1LjEzOS4wNDguMTQ0LjA0OS4xNDcuMDQ3LjE1Mi4wNDcuMTU1LjA0Ny4xNi4wNDUuMTYzLjA0NS4xNjcuMDQzLjE3MS4wNDMuMTc2LjA0MS4xNzguMDQxLjE4My4wMzkuMTg3LjAzOS4xOS4wMzcuMTk0LjAzNS4xOTcuMDM1LjIwMi4wMzMuMjA0LjAzMS4yMDkuMDMuMjEyLjAyOS4yMTYuMDI3LjIxOS4wMjUuMjIyLjAyNC4yMjYuMDIxLjIzLjAyLjIzMy4wMTguMjM2LjAxNi4yNC4wMTUuMjQzLjAxMi4yNDYuMDEuMjQ5LjAwOC4yNTMuMDA1LjI1Ni4wMDQuMjU5LjAwMS4yNi0uMDAxLjI1Ny0uMDA0LjI1NC0uMDA1LjI1LS4wMDguMjQ3LS4wMTEuMjQ0LS4wMTIuMjQxLS4wMTQuMjM3LS4wMTYuMjMzLS4wMTguMjMxLS4wMjEuMjI2LS4wMjEuMjI0LS4wMjQuMjItLjAyNi4yMTYtLjAyNy4yMTItLjAyOC4yMS0uMDMxLjIwNS0uMDMxLjIwMi0uMDM0LjE5OC0uMDM0LjE5NC0uMDM2LjE5MS0uMDM3LjE4Ny0uMDM5LjE4My0uMDQuMTc5LS4wNC4xNzUtLjA0Mi4xNzItLjA0My4xNjgtLjA0NC4xNjMtLjA0NS4xNi0uMDQ2LjE1NS0uMDQ2LjE1Mi0uMDQ3LjE0OC0uMDQ4LjE0My0uMDQ5LjEzOS0uMDQ5LjEzNi0uMDUuMTMxLS4wNS4xMjYtLjA1LjEyMy0uMDUxLjExOC0uMDUyLjExNC0uMDUxLjExLS4wNTIuMTA2LS4wNTIuMTAxLS4wNTIuMDk2LS4wNTIuMDkyLS4wNTIuMDg4LS4wNTMuMDgzLS4wNTEuMDc5LS4wNTIuMDc0LS4wNTIuMDctLjA1MS4wNjUtLjA1MS4wNi0uMDUxLjA1Ni0uMDUuMDUxLS4wNS4wMjMtLjAyNC4wMjMtLjAyNS4wMjEtLjAyNC4wMi0uMDI0LjAxOS0uMDI0LjAxOC0uMDI0LjAxNy0uMDI0LjAxNS0uMDIzLjAxNC0uMDI0LjAxMy0uMDIzLjAxMi0uMDIzLjAxLS4wMjMuMDEtLjAyMi4wMDgtLjAyMi4wMDYtLjAyMi4wMDYtLjAyMi4wMDQtLjAyMi4wMDQtLjAyMS4wMDEtLjAyMS4wMDEtLjAyMXYtNC4xMjdsLS4wNzcuMDU1LS4wOC4wNTMtLjA4My4wNTQtLjA4NS4wNTMtLjA4Ny4wNTItLjA5LjA1Mi0uMDkzLjA1MS0uMDk1LjA1LS4wOTcuMDUtLjEuMDQ5LS4xMDIuMDQ5LS4xMDUuMDQ4LS4xMDYuMDQ3LS4xMDkuMDQ3LS4xMTEuMDQ2LS4xMTQuMDQ1LS4xMTUuMDQ1LS4xMTguMDQ0LS4xMi4wNDMtLjEyMi4wNDItLjEyNC4wNDItLjEyNi4wNDEtLjEyOC4wNC0uMTMuMDQtLjEzMi4wMzgtLjEzNC4wMzgtLjEzNS4wMzctLjEzOC4wMzctLjEzOS4wMzUtLjE0Mi4wMzUtLjE0My4wMzQtLjE0NC4wMzMtLjE0Ny4wMzItLjE0OC4wMzEtLjE1LjAzLS4xNTEuMDMtLjE1My4wMjktLjE1NC4wMjctLjE1Ni4wMjctLjE1OC4wMjYtLjE1OS4wMjUtLjE2MS4wMjQtLjE2Mi4wMjMtLjE2My4wMjItLjE2NS4wMjEtLjE2Ni4wMi0uMTY3LjAxOS0uMTY5LjAxOC0uMTY5LjAxNy0uMTcxLjAxNi0uMTczLjAxNS0uMTczLjAxNC0uMTc1LjAxMy0uMTc1LjAxMi0uMTc3LjAxMS0uMTc4LjAxLS4xNzkuMDA4LS4xNzkuMDA4LS4xODEuMDA2LS4xODIuMDA1LS4xODIuMDA0LS4xODQuMDAzLS4xODQuMDAyaC0uMzdsLS4xODQtLjAwMi0uMTg0LS4wMDMtLjE4Mi0uMDA0LS4xODItLjAwNS0uMTgxLS4wMDYtLjE3OS0uMDA4LS4xNzktLjAwOC0uMTc4LS4wMS0uMTc2LS4wMTEtLjE3Ni0uMDEyLS4xNzUtLjAxMy0uMTczLS4wMTQtLjE3Mi0uMDE1LS4xNzEtLjAxNi0uMTctLjAxNy0uMTY5LS4wMTgtLjE2Ny0uMDE5LS4xNjYtLjAyLS4xNjUtLjAyMS0uMTYzLS4wMjItLjE2Mi0uMDIzLS4xNjEtLjAyNC0uMTU5LS4wMjUtLjE1Ny0uMDI2LS4xNTYtLjAyNy0uMTU1LS4wMjctLjE1My0uMDI5LS4xNTEtLjAzLS4xNS0uMDMtLjE0OC0uMDMxLS4xNDYtLjAzMi0uMTQ1LS4wMzMtLjE0My0uMDM0LS4xNDEtLjAzNS0uMTQtLjAzNS0uMTM3LS4wMzctLjEzNi0uMDM3LS4xMzQtLjAzOC0uMTMyLS4wMzgtLjEzLS4wNC0uMTI4LS4wNC0uMTI2LS4wNDEtLjEyNC0uMDQyLS4xMjItLjA0Mi0uMTItLjA0NC0uMTE3LS4wNDMtLjExNi0uMDQ1LS4xMTMtLjA0NS0uMTEyLS4wNDYtLjEwOS0uMDQ3LS4xMDYtLjA0Ny0uMTA1LS4wNDgtLjEwMi0uMDQ5LS4xLS4wNDktLjA5Ny0uMDUtLjA5NS0uMDUtLjA5My0uMDUyLS4wOS0uMDUxLS4wODctLjA1Mi0uMDg1LS4wNTMtLjA4My0uMDU0LS4wOC0uMDU0LS4wNzctLjA1NHY0LjEyN3ptMC01LjY1NHYuMDExbC4wMDEuMDIxLjAwMy4wMjEuMDA0LjAyMS4wMDUuMDIyLjAwNi4wMjIuMDA3LjAyMi4wMDkuMDIyLjAxLjAyMi4wMTEuMDIzLjAxMi4wMjMuMDEzLjAyMy4wMTUuMDI0LjAxNi4wMjMuMDE3LjAyNC4wMTguMDI0LjAxOS4wMjQuMDIxLjAyNC4wMjIuMDI0LjAyMy4wMjUuMDI0LjAyNC4wNTIuMDUuMDU2LjA1LjA2MS4wNS4wNjYuMDUxLjA3LjA1MS4wNzUuMDUyLjA3OS4wNTEuMDg0LjA1Mi4wODguMDUyLjA5Mi4wNTIuMDk3LjA1Mi4xMDIuMDUyLjEwNS4wNTIuMTEuMDUxLjExNC4wNTEuMTE5LjA1Mi4xMjMuMDUuMTI3LjA1MS4xMzEuMDUuMTM1LjA0OS4xMzkuMDQ5LjE0NC4wNDguMTQ3LjA0OC4xNTIuMDQ3LjE1NS4wNDYuMTYuMDQ1LjE2My4wNDUuMTY3LjA0NC4xNzEuMDQyLjE3Ni4wNDIuMTc4LjA0LjE4My4wNC4xODcuMDM4LjE5LjAzNy4xOTQuMDM2LjE5Ny4wMzQuMjAyLjAzMy4yMDQuMDMyLjIwOS4wMy4yMTIuMDI4LjIxNi4wMjcuMjE5LjAyNS4yMjIuMDI0LjIyNi4wMjIuMjMuMDIuMjMzLjAxOC4yMzYuMDE2LjI0LjAxNC4yNDMuMDEyLjI0Ni4wMS4yNDkuMDA4LjI1My4wMDYuMjU2LjAwMy4yNTkuMDAxLjI2LS4wMDEuMjU3LS4wMDMuMjU0LS4wMDYuMjUtLjAwOC4yNDctLjAxLjI0NC0uMDEyLjI0MS0uMDE1LjIzNy0uMDE2LjIzMy0uMDE4LjIzMS0uMDIuMjI2LS4wMjIuMjI0LS4wMjQuMjItLjAyNS4yMTYtLjAyNy4yMTItLjAyOS4yMS0uMDMuMjA1LS4wMzIuMjAyLS4wMzMuMTk4LS4wMzUuMTk0LS4wMzYuMTkxLS4wMzcuMTg3LS4wMzkuMTgzLS4wMzkuMTc5LS4wNDEuMTc1LS4wNDIuMTcyLS4wNDMuMTY4LS4wNDQuMTYzLS4wNDUuMTYtLjA0NS4xNTUtLjA0Ny4xNTItLjA0Ny4xNDgtLjA0OC4xNDMtLjA0OC4xMzktLjA1LjEzNi0uMDQ5LjEzMS0uMDUuMTI2LS4wNTEuMTIzLS4wNTEuMTE4LS4wNTEuMTE0LS4wNTIuMTEtLjA1Mi4xMDYtLjA1Mi4xMDEtLjA1Mi4wOTYtLjA1Mi4wOTItLjA1Mi4wODgtLjA1Mi4wODMtLjA1Mi4wNzktLjA1Mi4wNzQtLjA1MS4wNy0uMDUyLjA2NS0uMDUxLjA2LS4wNS4wNTYtLjA1MS4wNTEtLjA0OS4wMjMtLjAyNS4wMjMtLjAyNC4wMjEtLjAyNS4wMi0uMDI0LjAxOS0uMDI0LjAxOC0uMDI0LjAxNy0uMDI0LjAxNS0uMDIzLjAxNC0uMDIzLjAxMy0uMDI0LjAxMi0uMDIyLjAxLS4wMjMuMDEtLjAyMy4wMDgtLjAyMi4wMDYtLjAyMi4wMDYtLjAyMi4wMDQtLjAyMS4wMDQtLjAyMi4wMDEtLjAyMS4wMDEtLjAyMXYtNC4xMzlsLS4wNzcuMDU0LS4wOC4wNTQtLjA4My4wNTQtLjA4NS4wNTItLjA4Ny4wNTMtLjA5LjA1MS0uMDkzLjA1MS0uMDk1LjA1MS0uMDk3LjA1LS4xLjA0OS0uMTAyLjA0OS0uMTA1LjA0OC0uMTA2LjA0Ny0uMTA5LjA0Ny0uMTExLjA0Ni0uMTE0LjA0NS0uMTE1LjA0NC0uMTE4LjA0NC0uMTIuMDQ0LS4xMjIuMDQyLS4xMjQuMDQyLS4xMjYuMDQxLS4xMjguMDQtLjEzLjAzOS0uMTMyLjAzOS0uMTM0LjAzOC0uMTM1LjAzNy0uMTM4LjAzNi0uMTM5LjAzNi0uMTQyLjAzNS0uMTQzLjAzMy0uMTQ0LjAzMy0uMTQ3LjAzMy0uMTQ4LjAzMS0uMTUuMDMtLjE1MS4wMy0uMTUzLjAyOC0uMTU0LjAyOC0uMTU2LjAyNy0uMTU4LjAyNi0uMTU5LjAyNS0uMTYxLjAyNC0uMTYyLjAyMy0uMTYzLjAyMi0uMTY1LjAyMS0uMTY2LjAyLS4xNjcuMDE5LS4xNjkuMDE4LS4xNjkuMDE3LS4xNzEuMDE2LS4xNzMuMDE1LS4xNzMuMDE0LS4xNzUuMDEzLS4xNzUuMDEyLS4xNzcuMDExLS4xNzguMDA5LS4xNzkuMDA5LS4xNzkuMDA3LS4xODEuMDA3LS4xODIuMDA1LS4xODIuMDA0LS4xODQuMDAzLS4xODQuMDAyaC0uMzdsLS4xODQtLjAwMi0uMTg0LS4wMDMtLjE4Mi0uMDA0LS4xODItLjAwNS0uMTgxLS4wMDctLjE3OS0uMDA3LS4xNzktLjAwOS0uMTc4LS4wMDktLjE3Ni0uMDExLS4xNzYtLjAxMi0uMTc1LS4wMTMtLjE3My0uMDE0LS4xNzItLjAxNS0uMTcxLS4wMTYtLjE3LS4wMTctLjE2OS0uMDE4LS4xNjctLjAxOS0uMTY2LS4wMi0uMTY1LS4wMjEtLjE2My0uMDIyLS4xNjItLjAyMy0uMTYxLS4wMjQtLjE1OS0uMDI1LS4xNTctLjAyNi0uMTU2LS4wMjctLjE1NS0uMDI4LS4xNTMtLjAyOC0uMTUxLS4wMy0uMTUtLjAzLS4xNDgtLjAzMS0uMTQ2LS4wMzMtLjE0NS0uMDMzLS4xNDMtLjAzMy0uMTQxLS4wMzUtLjE0LS4wMzYtLjEzNy0uMDM2LS4xMzYtLjAzNy0uMTM0LS4wMzgtLjEzMi0uMDM5LS4xMy0uMDM5LS4xMjgtLjA0LS4xMjYtLjA0MS0uMTI0LS4wNDItLjEyMi0uMDQzLS4xMi0uMDQzLS4xMTctLjA0NC0uMTE2LS4wNDQtLjExMy0uMDQ2LS4xMTItLjA0Ni0uMTA5LS4wNDYtLjEwNi0uMDQ3LS4xMDUtLjA0OC0uMTAyLS4wNDktLjEtLjA0OS0uMDk3LS4wNS0uMDk1LS4wNTEtLjA5My0uMDUxLS4wOS0uMDUxLS4wODctLjA1My0uMDg1LS4wNTItLjA4My0uMDU0LS4wOC0uMDU0LS4wNzctLjA1NHY0LjEzOXptMC01LjY2NnYuMDExbC4wMDEuMDIuMDAzLjAyMi4wMDQuMDIxLjAwNS4wMjIuMDA2LjAyMS4wMDcuMDIyLjAwOS4wMjMuMDEuMDIyLjAxMS4wMjMuMDEyLjAyMy4wMTMuMDIzLjAxNS4wMjMuMDE2LjAyNC4wMTcuMDI0LjAxOC4wMjMuMDE5LjAyNC4wMjEuMDI1LjAyMi4wMjQuMDIzLjAyNC4wMjQuMDI1LjA1Mi4wNS4wNTYuMDUuMDYxLjA1LjA2Ni4wNTEuMDcuMDUxLjA3NS4wNTIuMDc5LjA1MS4wODQuMDUyLjA4OC4wNTIuMDkyLjA1Mi4wOTcuMDUyLjEwMi4wNTIuMTA1LjA1MS4xMS4wNTIuMTE0LjA1MS4xMTkuMDUxLjEyMy4wNTEuMTI3LjA1LjEzMS4wNS4xMzUuMDUuMTM5LjA0OS4xNDQuMDQ4LjE0Ny4wNDguMTUyLjA0Ny4xNTUuMDQ2LjE2LjA0NS4xNjMuMDQ1LjE2Ny4wNDMuMTcxLjA0My4xNzYuMDQyLjE3OC4wNC4xODMuMDQuMTg3LjAzOC4xOS4wMzcuMTk0LjAzNi4xOTcuMDM0LjIwMi4wMzMuMjA0LjAzMi4yMDkuMDMuMjEyLjAyOC4yMTYuMDI3LjIxOS4wMjUuMjIyLjAyNC4yMjYuMDIxLjIzLjAyLjIzMy4wMTguMjM2LjAxNy4yNC4wMTQuMjQzLjAxMi4yNDYuMDEuMjQ5LjAwOC4yNTMuMDA2LjI1Ni4wMDMuMjU5LjAwMS4yNi0uMDAxLjI1Ny0uMDAzLjI1NC0uMDA2LjI1LS4wMDguMjQ3LS4wMS4yNDQtLjAxMy4yNDEtLjAxNC4yMzctLjAxNi4yMzMtLjAxOC4yMzEtLjAyLjIyNi0uMDIyLjIyNC0uMDI0LjIyLS4wMjUuMjE2LS4wMjcuMjEyLS4wMjkuMjEtLjAzLjIwNS0uMDMyLjIwMi0uMDMzLjE5OC0uMDM1LjE5NC0uMDM2LjE5MS0uMDM3LjE4Ny0uMDM5LjE4My0uMDM5LjE3OS0uMDQxLjE3NS0uMDQyLjE3Mi0uMDQzLjE2OC0uMDQ0LjE2My0uMDQ1LjE2LS4wNDUuMTU1LS4wNDcuMTUyLS4wNDcuMTQ4LS4wNDguMTQzLS4wNDkuMTM5LS4wNDkuMTM2LS4wNDkuMTMxLS4wNTEuMTI2LS4wNS4xMjMtLjA1MS4xMTgtLjA1Mi4xMTQtLjA1MS4xMS0uMDUyLjEwNi0uMDUyLjEwMS0uMDUyLjA5Ni0uMDUyLjA5Mi0uMDUyLjA4OC0uMDUyLjA4My0uMDUyLjA3OS0uMDUyLjA3NC0uMDUyLjA3LS4wNTEuMDY1LS4wNTEuMDYtLjA1MS4wNTYtLjA1LjA1MS0uMDQ5LjAyMy0uMDI1LjAyMy0uMDI1LjAyMS0uMDI0LjAyLS4wMjQuMDE5LS4wMjQuMDE4LS4wMjQuMDE3LS4wMjQuMDE1LS4wMjMuMDE0LS4wMjQuMDEzLS4wMjMuMDEyLS4wMjMuMDEtLjAyMi4wMS0uMDIzLjAwOC0uMDIyLjAwNi0uMDIyLjAwNi0uMDIyLjAwNC0uMDIyLjAwNC0uMDIxLjAwMS0uMDIxLjAwMS0uMDIxdi00LjE1M2wtLjA3Ny4wNTQtLjA4LjA1NC0uMDgzLjA1My0uMDg1LjA1My0uMDg3LjA1My0uMDkuMDUxLS4wOTMuMDUxLS4wOTUuMDUxLS4wOTcuMDUtLjEuMDQ5LS4xMDIuMDQ4LS4xMDUuMDQ4LS4xMDYuMDQ4LS4xMDkuMDQ2LS4xMTEuMDQ2LS4xMTQuMDQ2LS4xMTUuMDQ0LS4xMTguMDQ0LS4xMi4wNDMtLjEyMi4wNDMtLjEyNC4wNDItLjEyNi4wNDEtLjEyOC4wNC0uMTMuMDM5LS4xMzIuMDM5LS4xMzQuMDM4LS4xMzUuMDM3LS4xMzguMDM2LS4xMzkuMDM2LS4xNDIuMDM0LS4xNDMuMDM0LS4xNDQuMDMzLS4xNDcuMDMyLS4xNDguMDMyLS4xNS4wMy0uMTUxLjAzLS4xNTMuMDI4LS4xNTQuMDI4LS4xNTYuMDI3LS4xNTguMDI2LS4xNTkuMDI0LS4xNjEuMDI0LS4xNjIuMDIzLS4xNjMuMDIzLS4xNjUuMDIxLS4xNjYuMDItLjE2Ny4wMTktLjE2OS4wMTgtLjE2OS4wMTctLjE3MS4wMTYtLjE3My4wMTUtLjE3My4wMTQtLjE3NS4wMTMtLjE3NS4wMTItLjE3Ny4wMS0uMTc4LjAxLS4xNzkuMDA5LS4xNzkuMDA3LS4xODEuMDA2LS4xODIuMDA2LS4xODIuMDA0LS4xODQuMDAzLS4xODQuMDAxLS4xODUuMDAxLS4xODUtLjAwMS0uMTg0LS4wMDEtLjE4NC0uMDAzLS4xODItLjAwNC0uMTgyLS4wMDYtLjE4MS0uMDA2LS4xNzktLjAwNy0uMTc5LS4wMDktLjE3OC0uMDEtLjE3Ni0uMDEtLjE3Ni0uMDEyLS4xNzUtLjAxMy0uMTczLS4wMTQtLjE3Mi0uMDE1LS4xNzEtLjAxNi0uMTctLjAxNy0uMTY5LS4wMTgtLjE2Ny0uMDE5LS4xNjYtLjAyLS4xNjUtLjAyMS0uMTYzLS4wMjMtLjE2Mi0uMDIzLS4xNjEtLjAyNC0uMTU5LS4wMjQtLjE1Ny0uMDI2LS4xNTYtLjAyNy0uMTU1LS4wMjgtLjE1My0uMDI4LS4xNTEtLjAzLS4xNS0uMDMtLjE0OC0uMDMyLS4xNDYtLjAzMi0uMTQ1LS4wMzMtLjE0My0uMDM0LS4xNDEtLjAzNC0uMTQtLjAzNi0uMTM3LS4wMzYtLjEzNi0uMDM3LS4xMzQtLjAzOC0uMTMyLS4wMzktLjEzLS4wMzktLjEyOC0uMDQxLS4xMjYtLjA0MS0uMTI0LS4wNDEtLjEyMi0uMDQzLS4xMi0uMDQzLS4xMTctLjA0NC0uMTE2LS4wNDQtLjExMy0uMDQ2LS4xMTItLjA0Ni0uMTA5LS4wNDYtLjEwNi0uMDQ4LS4xMDUtLjA0OC0uMTAyLS4wNDgtLjEtLjA1LS4wOTctLjA0OS0uMDk1LS4wNTEtLjA5My0uMDUxLS4wOS0uMDUyLS4wODctLjA1Mi0uMDg1LS4wNTMtLjA4My0uMDUzLS4wOC0uMDU0LS4wNzctLjA1NHY0LjE1M3ptOC43NC04LjE3OWwtLjI1Ny4wMDQtLjI1NC4wMDUtLjI1LjAwOC0uMjQ3LjAxMS0uMjQ0LjAxMi0uMjQxLjAxNC0uMjM3LjAxNi0uMjMzLjAxOC0uMjMxLjAyMS0uMjI2LjAyMi0uMjI0LjAyMy0uMjIuMDI2LS4yMTYuMDI3LS4yMTIuMDI4LS4yMS4wMzEtLjIwNS4wMzItLjIwMi4wMzMtLjE5OC4wMzQtLjE5NC4wMzYtLjE5MS4wMzgtLjE4Ny4wMzgtLjE4My4wNC0uMTc5LjA0MS0uMTc1LjA0Mi0uMTcyLjA0My0uMTY4LjA0My0uMTYzLjA0NS0uMTYuMDQ2LS4xNTUuMDQ2LS4xNTIuMDQ4LS4xNDguMDQ4LS4xNDMuMDQ4LS4xMzkuMDQ5LS4xMzYuMDUtLjEzMS4wNS0uMTI2LjA1MS0uMTIzLjA1MS0uMTE4LjA1MS0uMTE0LjA1Mi0uMTEuMDUyLS4xMDYuMDUyLS4xMDEuMDUyLS4wOTYuMDUyLS4wOTIuMDUyLS4wODguMDUyLS4wODMuMDUyLS4wNzkuMDUyLS4wNzQuMDUxLS4wNy4wNTItLjA2NS4wNTEtLjA2LjA1LS4wNTYuMDUtLjA1MS4wNS0uMDIzLjAyNS0uMDIzLjAyNC0uMDIxLjAyNC0uMDIuMDI1LS4wMTkuMDI0LS4wMTguMDI0LS4wMTcuMDIzLS4wMTUuMDI0LS4wMTQuMDIzLS4wMTMuMDIzLS4wMTIuMDIzLS4wMS4wMjMtLjAxLjAyMi0uMDA4LjAyMi0uMDA2LjAyMy0uMDA2LjAyMS0uMDA0LjAyMi0uMDA0LjAyMS0uMDAxLjAyMS0uMDAxLjAyMS4wMDEuMDIxLjAwMS4wMjEuMDA0LjAyMS4wMDQuMDIyLjAwNi4wMjEuMDA2LjAyMy4wMDguMDIyLjAxLjAyMi4wMS4wMjMuMDEyLjAyMy4wMTMuMDIzLjAxNC4wMjMuMDE1LjAyNC4wMTcuMDIzLjAxOC4wMjQuMDE5LjAyNC4wMi4wMjUuMDIxLjAyNC4wMjMuMDI0LjAyMy4wMjUuMDUxLjA1LjA1Ni4wNS4wNi4wNS4wNjUuMDUxLjA3LjA1Mi4wNzQuMDUxLjA3OS4wNTIuMDgzLjA1Mi4wODguMDUyLjA5Mi4wNTIuMDk2LjA1Mi4xMDEuMDUyLjEwNi4wNTIuMTEuMDUyLjExNC4wNTIuMTE4LjA1MS4xMjMuMDUxLjEyNi4wNTEuMTMxLjA1LjEzNi4wNS4xMzkuMDQ5LjE0My4wNDguMTQ4LjA0OC4xNTIuMDQ4LjE1NS4wNDYuMTYuMDQ2LjE2My4wNDUuMTY4LjA0My4xNzIuMDQzLjE3NS4wNDIuMTc5LjA0MS4xODMuMDQuMTg3LjAzOC4xOTEuMDM4LjE5NC4wMzYuMTk4LjAzNC4yMDIuMDMzLjIwNS4wMzIuMjEuMDMxLjIxMi4wMjguMjE2LjAyNy4yMi4wMjYuMjI0LjAyMy4yMjYuMDIyLjIzMS4wMjEuMjMzLjAxOC4yMzcuMDE2LjI0MS4wMTQuMjQ0LjAxMi4yNDcuMDExLjI1LjAwOC4yNTQuMDA1LjI1Ny4wMDQuMjYuMDAxLjI2LS4wMDEuMjU3LS4wMDQuMjU0LS4wMDUuMjUtLjAwOC4yNDctLjAxMS4yNDQtLjAxMi4yNDEtLjAxNC4yMzctLjAxNi4yMzMtLjAxOC4yMzEtLjAyMS4yMjYtLjAyMi4yMjQtLjAyMy4yMi0uMDI2LjIxNi0uMDI3LjIxMi0uMDI4LjIxLS4wMzEuMjA1LS4wMzIuMjAyLS4wMzMuMTk4LS4wMzQuMTk0LS4wMzYuMTkxLS4wMzguMTg3LS4wMzguMTgzLS4wNC4xNzktLjA0MS4xNzUtLjA0Mi4xNzItLjA0My4xNjgtLjA0My4xNjMtLjA0NS4xNi0uMDQ2LjE1NS0uMDQ2LjE1Mi0uMDQ4LjE0OC0uMDQ4LjE0My0uMDQ4LjEzOS0uMDQ5LjEzNi0uMDUuMTMxLS4wNS4xMjYtLjA1MS4xMjMtLjA1MS4xMTgtLjA1MS4xMTQtLjA1Mi4xMS0uMDUyLjEwNi0uMDUyLjEwMS0uMDUyLjA5Ni0uMDUyLjA5Mi0uMDUyLjA4OC0uMDUyLjA4My0uMDUyLjA3OS0uMDUyLjA3NC0uMDUxLjA3LS4wNTIuMDY1LS4wNTEuMDYtLjA1LjA1Ni0uMDUuMDUxLS4wNS4wMjMtLjAyNS4wMjMtLjAyNC4wMjEtLjAyNC4wMi0uMDI1LjAxOS0uMDI0LjAxOC0uMDI0LjAxNy0uMDIzLjAxNS0uMDI0LjAxNC0uMDIzLjAxMy0uMDIzLjAxMi0uMDIzLjAxLS4wMjMuMDEtLjAyMi4wMDgtLjAyMi4wMDYtLjAyMy4wMDYtLjAyMS4wMDQtLjAyMi4wMDQtLjAyMS4wMDEtLjAyMS4wMDEtLjAyMS0uMDAxLS4wMjEtLjAwMS0uMDIxLS4wMDQtLjAyMS0uMDA0LS4wMjItLjAwNi0uMDIxLS4wMDYtLjAyMy0uMDA4LS4wMjItLjAxLS4wMjItLjAxLS4wMjMtLjAxMi0uMDIzLS4wMTMtLjAyMy0uMDE0LS4wMjMtLjAxNS0uMDI0LS4wMTctLjAyMy0uMDE4LS4wMjQtLjAxOS0uMDI0LS4wMi0uMDI1LS4wMjEtLjAyNC0uMDIzLS4wMjQtLjAyMy0uMDI1LS4wNTEtLjA1LS4wNTYtLjA1LS4wNi0uMDUtLjA2NS0uMDUxLS4wNy0uMDUyLS4wNzQtLjA1MS0uMDc5LS4wNTItLjA4My0uMDUyLS4wODgtLjA1Mi0uMDkyLS4wNTItLjA5Ni0uMDUyLS4xMDEtLjA1Mi0uMTA2LS4wNTItLjExLS4wNTItLjExNC0uMDUyLS4xMTgtLjA1MS0uMTIzLS4wNTEtLjEyNi0uMDUxLS4xMzEtLjA1LS4xMzYtLjA1LS4xMzktLjA0OS0uMTQzLS4wNDgtLjE0OC0uMDQ4LS4xNTItLjA0OC0uMTU1LS4wNDYtLjE2LS4wNDYtLjE2My0uMDQ1LS4xNjgtLjA0My0uMTcyLS4wNDMtLjE3NS0uMDQyLS4xNzktLjA0MS0uMTgzLS4wNC0uMTg3LS4wMzgtLjE5MS0uMDM4LS4xOTQtLjAzNi0uMTk4LS4wMzQtLjIwMi0uMDMzLS4yMDUtLjAzMi0uMjEtLjAzMS0uMjEyLS4wMjgtLjIxNi0uMDI3LS4yMi0uMDI2LS4yMjQtLjAyMy0uMjI2LS4wMjItLjIzMS0uMDIxLS4yMzMtLjAxOC0uMjM3LS4wMTYtLjI0MS0uMDE0LS4yNDQtLjAxMi0uMjQ3LS4wMTEtLjI1LS4wMDgtLjI1NC0uMDA1LS4yNTctLjAwNC0uMjYtLjAwMS0uMjYuMDAxeiIpfSxYaXQ9ZnVuY3Rpb24odCl7dC5hcHBlbmQoImRlZnMiKS5hcHBlbmQoInN5bWJvbCIpLmF0dHIoImlkIiwiY29tcHV0ZXIiKS5hdHRyKCJ3aWR0aCIsIjI0IikuYXR0cigiaGVpZ2h0IiwiMjQiKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJ0cmFuc2Zvcm0iLCJzY2FsZSguNSkiKS5hdHRyKCJkIiwiTTIgMnYxM2gyMHYtMTNoLTIwem0xOCAxMWgtMTZ2LTloMTZ2OXptLTEwLjIyOCA2bC40NjYtMWgzLjUyNGwuNDY3IDFoLTQuNDU3em0xNC4yMjggM2gtMjRsMi02aDIuMTA0bC0xLjMzIDRoMTguNDVsLTEuMjk3LTRoMi4wNzNsMiA2em0tNS0xMGgtMTR2LTdoMTR2N3oiKX0sS2l0PWZ1bmN0aW9uKHQpe3QuYXBwZW5kKCJkZWZzIikuYXBwZW5kKCJzeW1ib2wiKS5hdHRyKCJpZCIsImNsb2NrIikuYXR0cigid2lkdGgiLCIyNCIpLmF0dHIoImhlaWdodCIsIjI0IikuYXBwZW5kKCJwYXRoIikuYXR0cigidHJhbnNmb3JtIiwic2NhbGUoLjUpIikuYXR0cigiZCIsIk0xMiAyYzUuNTE0IDAgMTAgNC40ODYgMTAgMTBzLTQuNDg2IDEwLTEwIDEwLTEwLTQuNDg2LTEwLTEwIDQuNDg2LTEwIDEwLTEwem0wLTJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJzNS4zNzMgMTIgMTIgMTIgMTItNS4zNzMgMTItMTItNS4zNzMtMTItMTItMTJ6bTUuODQ4IDEyLjQ1OWMuMjAyLjAzOC4yMDIuMzMzLjAwMS4zNzItMS45MDcuMzYxLTYuMDQ1IDEuMTExLTYuNTQ3IDEuMTExLS43MTkgMC0xLjMwMS0uNTgyLTEuMzAxLTEuMzAxIDAtLjUxMi43Ny01LjQ0NyAxLjEyNS03LjQ0NS4wMzQtLjE5Mi4zMTItLjE4MS4zNDMuMDE0bC45ODUgNi4yMzggNS4zOTQgMS4wMTF6Iil9LFppdD1mdW5jdGlvbih0KXt0LmFwcGVuZCgiZGVmcyIpLmFwcGVuZCgibWFya2VyIikuYXR0cigiaWQiLCJhcnJvd2hlYWQiKS5hdHRyKCJyZWZYIiw5KS5hdHRyKCJyZWZZIiw1KS5hdHRyKCJtYXJrZXJVbml0cyIsInVzZXJTcGFjZU9uVXNlIikuYXR0cigibWFya2VyV2lkdGgiLDEyKS5hdHRyKCJtYXJrZXJIZWlnaHQiLDEyKS5hdHRyKCJvcmllbnQiLCJhdXRvIikuYXBwZW5kKCJwYXRoIikuYXR0cigiZCIsIk0gMCAwIEwgMTAgNSBMIDAgMTAgeiIpfSxRaXQ9ZnVuY3Rpb24odCl7dC5hcHBlbmQoImRlZnMiKS5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIiwiZmlsbGVkLWhlYWQiKS5hdHRyKCJyZWZYIiwxOCkuYXR0cigicmVmWSIsNykuYXR0cigibWFya2VyV2lkdGgiLDIwKS5hdHRyKCJtYXJrZXJIZWlnaHQiLDI4KS5hdHRyKCJvcmllbnQiLCJhdXRvIikuYXBwZW5kKCJwYXRoIikuYXR0cigiZCIsIk0gMTgsNyBMOSwxMyBMMTQsNyBMOSwxIFoiKX0sSml0PWZ1bmN0aW9uKHQpe3QuYXBwZW5kKCJkZWZzIikuYXBwZW5kKCJtYXJrZXIiKS5hdHRyKCJpZCIsInNlcXVlbmNlbnVtYmVyIikuYXR0cigicmVmWCIsMTUpLmF0dHIoInJlZlkiLDE1KS5hdHRyKCJtYXJrZXJXaWR0aCIsNjApLmF0dHIoIm1hcmtlckhlaWdodCIsNDApLmF0dHIoIm9yaWVudCIsImF1dG8iKS5hcHBlbmQoImNpcmNsZSIpLmF0dHIoImN4IiwxNSkuYXR0cigiY3kiLDE1KS5hdHRyKCJyIiw2KX0sdGF0PWZ1bmN0aW9uKHQpe2NvbnN0IHI9dC5hcHBlbmQoImRlZnMiKS5hcHBlbmQoIm1hcmtlciIpLmF0dHIoImlkIiwiY3Jvc3NoZWFkIikuYXR0cigibWFya2VyV2lkdGgiLDE1KS5hdHRyKCJtYXJrZXJIZWlnaHQiLDgpLmF0dHIoIm9yaWVudCIsImF1dG8iKS5hdHRyKCJyZWZYIiwxNikuYXR0cigicmVmWSIsNCk7ci5hcHBlbmQoInBhdGgiKS5hdHRyKCJmaWxsIiwiYmxhY2siKS5hdHRyKCJzdHJva2UiLCIjMDAwMDAwIikuc3R5bGUoInN0cm9rZS1kYXNoYXJyYXkiLCIwLCAwIikuYXR0cigic3Ryb2tlLXdpZHRoIiwiMXB4IikuYXR0cigiZCIsIk0gOSwyIFYgNiBMMTYsNCBaIiksci5hcHBlbmQoInBhdGgiKS5hdHRyKCJmaWxsIiwibm9uZSIpLmF0dHIoInN0cm9rZSIsIiMwMDAwMDAiKS5zdHlsZSgic3Ryb2tlLWRhc2hhcnJheSIsIjAsIDAiKS5hdHRyKCJzdHJva2Utd2lkdGgiLCIxcHgiKS5hdHRyKCJkIiwiTSAwLDEgTCA2LDcgTSA2LDEgTCAwLDciKX0sSzQ9ZnVuY3Rpb24oKXtyZXR1cm57eDowLHk6MCxmaWxsOnZvaWQgMCxhbmNob3I6dm9pZCAwLHN0eWxlOiIjNjY2Iix3aWR0aDp2b2lkIDAsaGVpZ2h0OnZvaWQgMCx0ZXh0TWFyZ2luOjAscng6MCxyeTowLHRzcGFuOiEwLHZhbGlnbjp2b2lkIDB9fSxmMD1mdW5jdGlvbigpe3JldHVybnt4OjAseTowLGZpbGw6IiNFREYyQUUiLHN0cm9rZToiIzY2NiIsd2lkdGg6MTAwLGFuY2hvcjoic3RhcnQiLGhlaWdodDoxMDAscng6MCxyeTowfX0sVEw9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGksYSxzLG8sbCx1LGgpe2NvbnN0IGQ9YS5hcHBlbmQoInRleHQiKS5hdHRyKCJ4IixzK2wvMikuYXR0cigieSIsbyt1LzIrNSkuc3R5bGUoInRleHQtYW5jaG9yIiwibWlkZGxlIikudGV4dChpKTtuKGQsaCl9ZnVuY3Rpb24gZShpLGEscyxvLGwsdSxoLGQpe2NvbnN0e2FjdG9yRm9udFNpemU6ZixhY3RvckZvbnRGYW1pbHk6cCxhY3RvckZvbnRXZWlnaHQ6bX09ZDtsZXQgXz1mJiZmLnJlcGxhY2U/Zi5yZXBsYWNlKCJweCIsIiIpOmY7Y29uc3QgeT1pLnNwbGl0KHBlLmxpbmVCcmVha1JlZ2V4KTtmb3IobGV0IGI9MDtiPHkubGVuZ3RoO2IrKyl7Y29uc3QgeD1iKl8tXyooeS5sZW5ndGgtMSkvMixrPWEuYXBwZW5kKCJ0ZXh0IikuYXR0cigieCIscytsLzIpLmF0dHIoInkiLG8pLnN0eWxlKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLnN0eWxlKCJmb250LXNpemUiLGYpLnN0eWxlKCJmb250LXdlaWdodCIsbSkuc3R5bGUoImZvbnQtZmFtaWx5IixwKTtrLmFwcGVuZCgidHNwYW4iKS5hdHRyKCJ4IixzK2wvMikuYXR0cigiZHkiLHgpLnRleHQoeVtiXSksay5hdHRyKCJ5IixvK3UvMikuYXR0cigiZG9taW5hbnQtYmFzZWxpbmUiLCJjZW50cmFsIikuYXR0cigiYWxpZ25tZW50LWJhc2VsaW5lIiwiY2VudHJhbCIpLG4oayxoKX19ZnVuY3Rpb24gcihpLGEscyxvLGwsdSxoLGQpe2NvbnN0IGY9YS5hcHBlbmQoInN3aXRjaCIpLG09Zi5hcHBlbmQoImZvcmVpZ25PYmplY3QiKS5hdHRyKCJ4IixzKS5hdHRyKCJ5IixvKS5hdHRyKCJ3aWR0aCIsbCkuYXR0cigiaGVpZ2h0Iix1KS5hcHBlbmQoInhodG1sOmRpdiIpLnN0eWxlKCJkaXNwbGF5IiwidGFibGUiKS5zdHlsZSgiaGVpZ2h0IiwiMTAwJSIpLnN0eWxlKCJ3aWR0aCIsIjEwMCUiKTttLmFwcGVuZCgiZGl2Iikuc3R5bGUoImRpc3BsYXkiLCJ0YWJsZS1jZWxsIikuc3R5bGUoInRleHQtYWxpZ24iLCJjZW50ZXIiKS5zdHlsZSgidmVydGljYWwtYWxpZ24iLCJtaWRkbGUiKS50ZXh0KGkpLGUoaSxmLHMsbyxsLHUsaCxkKSxuKG0saCl9ZnVuY3Rpb24gbihpLGEpe2Zvcihjb25zdCBzIGluIGEpYS5oYXNPd25Qcm9wZXJ0eShzKSYmaS5hdHRyKHMsYVtzXSl9cmV0dXJuIGZ1bmN0aW9uKGkpe3JldHVybiBpLnRleHRQbGFjZW1lbnQ9PT0iZm8iP3I6aS50ZXh0UGxhY2VtZW50PT09Im9sZCI/dDplfX0oKSxlYXQ9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGksYSxzLG8sbCx1LGgpe2NvbnN0IGQ9YS5hcHBlbmQoInRleHQiKS5hdHRyKCJ4IixzKS5hdHRyKCJ5IixvKS5zdHlsZSgidGV4dC1hbmNob3IiLCJzdGFydCIpLnRleHQoaSk7bihkLGgpfWZ1bmN0aW9uIGUoaSxhLHMsbyxsLHUsaCxkKXtjb25zdHthY3RvckZvbnRTaXplOmYsYWN0b3JGb250RmFtaWx5OnAsYWN0b3JGb250V2VpZ2h0Om19PWQsXz1pLnNwbGl0KHBlLmxpbmVCcmVha1JlZ2V4KTtmb3IobGV0IHk9MDt5PF8ubGVuZ3RoO3krKyl7Y29uc3QgYj15KmYtZiooXy5sZW5ndGgtMSkvMix4PWEuYXBwZW5kKCJ0ZXh0IikuYXR0cigieCIscykuYXR0cigieSIsbykuc3R5bGUoInRleHQtYW5jaG9yIiwic3RhcnQiKS5zdHlsZSgiZm9udC1zaXplIixmKS5zdHlsZSgiZm9udC13ZWlnaHQiLG0pLnN0eWxlKCJmb250LWZhbWlseSIscCk7eC5hcHBlbmQoInRzcGFuIikuYXR0cigieCIscykuYXR0cigiZHkiLGIpLnRleHQoX1t5XSkseC5hdHRyKCJ5IixvK3UvMikuYXR0cigiZG9taW5hbnQtYmFzZWxpbmUiLCJjZW50cmFsIikuYXR0cigiYWxpZ25tZW50LWJhc2VsaW5lIiwiY2VudHJhbCIpLG4oeCxoKX19ZnVuY3Rpb24gcihpLGEscyxvLGwsdSxoLGQpe2NvbnN0IGY9YS5hcHBlbmQoInN3aXRjaCIpLG09Zi5hcHBlbmQoImZvcmVpZ25PYmplY3QiKS5hdHRyKCJ4IixzKS5hdHRyKCJ5IixvKS5hdHRyKCJ3aWR0aCIsbCkuYXR0cigiaGVpZ2h0Iix1KS5hcHBlbmQoInhodG1sOmRpdiIpLnN0eWxlKCJkaXNwbGF5IiwidGFibGUiKS5zdHlsZSgiaGVpZ2h0IiwiMTAwJSIpLnN0eWxlKCJ3aWR0aCIsIjEwMCUiKTttLmFwcGVuZCgiZGl2Iikuc3R5bGUoImRpc3BsYXkiLCJ0YWJsZS1jZWxsIikuc3R5bGUoInRleHQtYWxpZ24iLCJjZW50ZXIiKS5zdHlsZSgidmVydGljYWwtYWxpZ24iLCJtaWRkbGUiKS50ZXh0KGkpLGUoaSxmLHMsbyxsLHUsaCxkKSxuKG0saCl9ZnVuY3Rpb24gbihpLGEpe2Zvcihjb25zdCBzIGluIGEpYS5oYXNPd25Qcm9wZXJ0eShzKSYmaS5hdHRyKHMsYVtzXSl9cmV0dXJuIGZ1bmN0aW9uKGkpe3JldHVybiBpLnRleHRQbGFjZW1lbnQ9PT0iZm8iP3I6aS50ZXh0UGxhY2VtZW50PT09Im9sZCI/dDplfX0oKSxvcj17ZHJhd1JlY3Q6aDAsZHJhd1RleHQ6aGwsZHJhd0xhYmVsOmtMLGRyYXdBY3RvcjpVaXQsZHJhd1BvcHVwOk9pdCxkcmF3SW1hZ2U6dkwsZHJhd0VtYmVkZGVkSW1hZ2U6eEwsYW5jaG9yRWxlbWVudDpXaXQsZHJhd0FjdGl2YXRpb246SGl0LGRyYXdMb29wOkdpdCxkcmF3QmFja2dyb3VuZFJlY3Q6aml0LGluc2VydEFycm93SGVhZDpaaXQsaW5zZXJ0QXJyb3dGaWxsZWRIZWFkOlFpdCxpbnNlcnRTZXF1ZW5jZU51bWJlcjpKaXQsaW5zZXJ0QXJyb3dDcm9zc0hlYWQ6dGF0LGluc2VydERhdGFiYXNlSWNvbjokaXQsaW5zZXJ0Q29tcHV0ZXJJY29uOlhpdCxpbnNlcnRDbG9ja0ljb246S2l0LGdldFRleHRPYmo6SzQsZ2V0Tm90ZVJlY3Q6ZjAscG9wdXBNZW51OkZpdCxwb3Bkb3duTWVudTpQaXQsZml4TGlmZUxpbmVIZWlnaHRzOndMLHNhbml0aXplVXJsOmtpfTtsZXQgZHQ9e307Y29uc3QgQnQ9e2RhdGE6e3N0YXJ0eDp2b2lkIDAsc3RvcHg6dm9pZCAwLHN0YXJ0eTp2b2lkIDAsc3RvcHk6dm9pZCAwfSx2ZXJ0aWNhbFBvczowLHNlcXVlbmNlSXRlbXM6W10sYWN0aXZhdGlvbnM6W10sbW9kZWxzOntnZXRIZWlnaHQ6ZnVuY3Rpb24oKXtyZXR1cm4gTWF0aC5tYXguYXBwbHkobnVsbCx0aGlzLmFjdG9ycy5sZW5ndGg9PT0wP1swXTp0aGlzLmFjdG9ycy5tYXAodD0+dC5oZWlnaHR8fDApKSsodGhpcy5sb29wcy5sZW5ndGg9PT0wPzA6dGhpcy5sb29wcy5tYXAodD0+dC5oZWlnaHR8fDApLnJlZHVjZSgodCxlKT0+dCtlKSkrKHRoaXMubWVzc2FnZXMubGVuZ3RoPT09MD8wOnRoaXMubWVzc2FnZXMubWFwKHQ9PnQuaGVpZ2h0fHwwKS5yZWR1Y2UoKHQsZSk9PnQrZSkpKyh0aGlzLm5vdGVzLmxlbmd0aD09PTA/MDp0aGlzLm5vdGVzLm1hcCh0PT50LmhlaWdodHx8MCkucmVkdWNlKCh0LGUpPT50K2UpKX0sY2xlYXI6ZnVuY3Rpb24oKXt0aGlzLmFjdG9ycz1bXSx0aGlzLmxvb3BzPVtdLHRoaXMubWVzc2FnZXM9W10sdGhpcy5ub3Rlcz1bXX0sYWRkQWN0b3I6ZnVuY3Rpb24odCl7dGhpcy5hY3RvcnMucHVzaCh0KX0sYWRkTG9vcDpmdW5jdGlvbih0KXt0aGlzLmxvb3BzLnB1c2godCl9LGFkZE1lc3NhZ2U6ZnVuY3Rpb24odCl7dGhpcy5tZXNzYWdlcy5wdXNoKHQpfSxhZGROb3RlOmZ1bmN0aW9uKHQpe3RoaXMubm90ZXMucHVzaCh0KX0sbGFzdEFjdG9yOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYWN0b3JzW3RoaXMuYWN0b3JzLmxlbmd0aC0xXX0sbGFzdExvb3A6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sb29wc1t0aGlzLmxvb3BzLmxlbmd0aC0xXX0sbGFzdE1lc3NhZ2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tZXNzYWdlc1t0aGlzLm1lc3NhZ2VzLmxlbmd0aC0xXX0sbGFzdE5vdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub3Rlc1t0aGlzLm5vdGVzLmxlbmd0aC0xXX0sYWN0b3JzOltdLGxvb3BzOltdLG1lc3NhZ2VzOltdLG5vdGVzOltdfSxpbml0OmZ1bmN0aW9uKCl7dGhpcy5zZXF1ZW5jZUl0ZW1zPVtdLHRoaXMuYWN0aXZhdGlvbnM9W10sdGhpcy5tb2RlbHMuY2xlYXIoKSx0aGlzLmRhdGE9e3N0YXJ0eDp2b2lkIDAsc3RvcHg6dm9pZCAwLHN0YXJ0eTp2b2lkIDAsc3RvcHk6dm9pZCAwfSx0aGlzLnZlcnRpY2FsUG9zPTAsQ0wobnQoKSl9LHVwZGF0ZVZhbDpmdW5jdGlvbih0LGUscixuKXt0eXBlb2YgdFtlXT4idSI/dFtlXT1yOnRbZV09bihyLHRbZV0pfSx1cGRhdGVCb3VuZHM6ZnVuY3Rpb24odCxlLHIsbil7Y29uc3QgaT10aGlzO2xldCBhPTA7ZnVuY3Rpb24gcyhvKXtyZXR1cm4gZnVuY3Rpb24odSl7YSsrO2NvbnN0IGg9aS5zZXF1ZW5jZUl0ZW1zLmxlbmd0aC1hKzE7aS51cGRhdGVWYWwodSwic3RhcnR5IixlLWgqZHQuYm94TWFyZ2luLE1hdGgubWluKSxpLnVwZGF0ZVZhbCh1LCJzdG9weSIsbitoKmR0LmJveE1hcmdpbixNYXRoLm1heCksaS51cGRhdGVWYWwoQnQuZGF0YSwic3RhcnR4Iix0LWgqZHQuYm94TWFyZ2luLE1hdGgubWluKSxpLnVwZGF0ZVZhbChCdC5kYXRhLCJzdG9weCIscitoKmR0LmJveE1hcmdpbixNYXRoLm1heCksbyE9PSJhY3RpdmF0aW9uIiYmKGkudXBkYXRlVmFsKHUsInN0YXJ0eCIsdC1oKmR0LmJveE1hcmdpbixNYXRoLm1pbiksaS51cGRhdGVWYWwodSwic3RvcHgiLHIraCpkdC5ib3hNYXJnaW4sTWF0aC5tYXgpLGkudXBkYXRlVmFsKEJ0LmRhdGEsInN0YXJ0eSIsZS1oKmR0LmJveE1hcmdpbixNYXRoLm1pbiksaS51cGRhdGVWYWwoQnQuZGF0YSwic3RvcHkiLG4raCpkdC5ib3hNYXJnaW4sTWF0aC5tYXgpKX19dGhpcy5zZXF1ZW5jZUl0ZW1zLmZvckVhY2gocygpKSx0aGlzLmFjdGl2YXRpb25zLmZvckVhY2gocygiYWN0aXZhdGlvbiIpKX0saW5zZXJ0OmZ1bmN0aW9uKHQsZSxyLG4pe2NvbnN0IGk9TWF0aC5taW4odCxyKSxhPU1hdGgubWF4KHQscikscz1NYXRoLm1pbihlLG4pLG89TWF0aC5tYXgoZSxuKTt0aGlzLnVwZGF0ZVZhbChCdC5kYXRhLCJzdGFydHgiLGksTWF0aC5taW4pLHRoaXMudXBkYXRlVmFsKEJ0LmRhdGEsInN0YXJ0eSIscyxNYXRoLm1pbiksdGhpcy51cGRhdGVWYWwoQnQuZGF0YSwic3RvcHgiLGEsTWF0aC5tYXgpLHRoaXMudXBkYXRlVmFsKEJ0LmRhdGEsInN0b3B5IixvLE1hdGgubWF4KSx0aGlzLnVwZGF0ZUJvdW5kcyhpLHMsYSxvKX0sbmV3QWN0aXZhdGlvbjpmdW5jdGlvbih0LGUscil7Y29uc3Qgbj1yW3QuZnJvbS5hY3Rvcl0saT1kMCh0LmZyb20uYWN0b3IpLmxlbmd0aHx8MCxhPW4ueCtuLndpZHRoLzIrKGktMSkqZHQuYWN0aXZhdGlvbldpZHRoLzI7dGhpcy5hY3RpdmF0aW9ucy5wdXNoKHtzdGFydHg6YSxzdGFydHk6dGhpcy52ZXJ0aWNhbFBvcysyLHN0b3B4OmErZHQuYWN0aXZhdGlvbldpZHRoLHN0b3B5OnZvaWQgMCxhY3Rvcjp0LmZyb20uYWN0b3IsYW5jaG9yZWQ6b3IuYW5jaG9yRWxlbWVudChlKX0pfSxlbmRBY3RpdmF0aW9uOmZ1bmN0aW9uKHQpe2NvbnN0IGU9dGhpcy5hY3RpdmF0aW9ucy5tYXAoZnVuY3Rpb24ocil7cmV0dXJuIHIuYWN0b3J9KS5sYXN0SW5kZXhPZih0LmZyb20uYWN0b3IpO3JldHVybiB0aGlzLmFjdGl2YXRpb25zLnNwbGljZShlLDEpWzBdfSxjcmVhdGVMb29wOmZ1bmN0aW9uKHQ9e21lc3NhZ2U6dm9pZCAwLHdyYXA6ITEsd2lkdGg6dm9pZCAwfSxlKXtyZXR1cm57c3RhcnR4OnZvaWQgMCxzdGFydHk6dGhpcy52ZXJ0aWNhbFBvcyxzdG9weDp2b2lkIDAsc3RvcHk6dm9pZCAwLHRpdGxlOnQubWVzc2FnZSx3cmFwOnQud3JhcCx3aWR0aDp0LndpZHRoLGhlaWdodDowLGZpbGw6ZX19LG5ld0xvb3A6ZnVuY3Rpb24odD17bWVzc2FnZTp2b2lkIDAsd3JhcDohMSx3aWR0aDp2b2lkIDB9LGUpe3RoaXMuc2VxdWVuY2VJdGVtcy5wdXNoKHRoaXMuY3JlYXRlTG9vcCh0LGUpKX0sZW5kTG9vcDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnNlcXVlbmNlSXRlbXMucG9wKCl9LGFkZFNlY3Rpb25Ub0xvb3A6ZnVuY3Rpb24odCl7Y29uc3QgZT10aGlzLnNlcXVlbmNlSXRlbXMucG9wKCk7ZS5zZWN0aW9ucz1lLnNlY3Rpb25zfHxbXSxlLnNlY3Rpb25UaXRsZXM9ZS5zZWN0aW9uVGl0bGVzfHxbXSxlLnNlY3Rpb25zLnB1c2goe3k6QnQuZ2V0VmVydGljYWxQb3MoKSxoZWlnaHQ6MH0pLGUuc2VjdGlvblRpdGxlcy5wdXNoKHQpLHRoaXMuc2VxdWVuY2VJdGVtcy5wdXNoKGUpfSxidW1wVmVydGljYWxQb3M6ZnVuY3Rpb24odCl7dGhpcy52ZXJ0aWNhbFBvcz10aGlzLnZlcnRpY2FsUG9zK3QsdGhpcy5kYXRhLnN0b3B5PXRoaXMudmVydGljYWxQb3N9LGdldFZlcnRpY2FsUG9zOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmVydGljYWxQb3N9LGdldEJvdW5kczpmdW5jdGlvbigpe3JldHVybntib3VuZHM6dGhpcy5kYXRhLG1vZGVsczp0aGlzLm1vZGVsc319fSxyYXQ9ZnVuY3Rpb24odCxlKXtCdC5idW1wVmVydGljYWxQb3MoZHQuYm94TWFyZ2luKSxlLmhlaWdodD1kdC5ib3hNYXJnaW4sZS5zdGFydHk9QnQuZ2V0VmVydGljYWxQb3MoKTtjb25zdCByPW9yLmdldE5vdGVSZWN0KCk7ci54PWUuc3RhcnR4LHIueT1lLnN0YXJ0eSxyLndpZHRoPWUud2lkdGh8fGR0LndpZHRoLHIuY2xhc3M9Im5vdGUiO2NvbnN0IG49dC5hcHBlbmQoImciKSxpPW9yLmRyYXdSZWN0KG4sciksYT1vci5nZXRUZXh0T2JqKCk7YS54PWUuc3RhcnR4LGEueT1lLnN0YXJ0eSxhLndpZHRoPXIud2lkdGgsYS5keT0iMWVtIixhLnRleHQ9ZS5tZXNzYWdlLGEuY2xhc3M9Im5vdGVUZXh0IixhLmZvbnRGYW1pbHk9ZHQubm90ZUZvbnRGYW1pbHksYS5mb250U2l6ZT1kdC5ub3RlRm9udFNpemUsYS5mb250V2VpZ2h0PWR0Lm5vdGVGb250V2VpZ2h0LGEuYW5jaG9yPWR0Lm5vdGVBbGlnbixhLnRleHRNYXJnaW49ZHQubm90ZU1hcmdpbixhLnZhbGlnbj0iY2VudGVyIjtjb25zdCBzPWhsKG4sYSksbz1NYXRoLnJvdW5kKHMubWFwKGw9PihsLl9ncm91cHN8fGwpWzBdWzBdLmdldEJCb3goKS5oZWlnaHQpLnJlZHVjZSgobCx1KT0+bCt1KSk7aS5hdHRyKCJoZWlnaHQiLG8rMipkdC5ub3RlTWFyZ2luKSxlLmhlaWdodCs9bysyKmR0Lm5vdGVNYXJnaW4sQnQuYnVtcFZlcnRpY2FsUG9zKG8rMipkdC5ub3RlTWFyZ2luKSxlLnN0b3B5PWUuc3RhcnR5K28rMipkdC5ub3RlTWFyZ2luLGUuc3RvcHg9ZS5zdGFydHgrci53aWR0aCxCdC5pbnNlcnQoZS5zdGFydHgsZS5zdGFydHksZS5zdG9weCxlLnN0b3B5KSxCdC5tb2RlbHMuYWRkTm90ZShlKX0sZmw9dD0+KHtmb250RmFtaWx5OnQubWVzc2FnZUZvbnRGYW1pbHksZm9udFNpemU6dC5tZXNzYWdlRm9udFNpemUsZm9udFdlaWdodDp0Lm1lc3NhZ2VGb250V2VpZ2h0fSksZGw9dD0+KHtmb250RmFtaWx5OnQubm90ZUZvbnRGYW1pbHksZm9udFNpemU6dC5ub3RlRm9udFNpemUsZm9udFdlaWdodDp0Lm5vdGVGb250V2VpZ2h0fSksWjQ9dD0+KHtmb250RmFtaWx5OnQuYWN0b3JGb250RmFtaWx5LGZvbnRTaXplOnQuYWN0b3JGb250U2l6ZSxmb250V2VpZ2h0OnQuYWN0b3JGb250V2VpZ2h0fSksbmF0PWZ1bmN0aW9uKHQsZSl7QnQuYnVtcFZlcnRpY2FsUG9zKDEwKTtjb25zdHtzdGFydHg6cixzdG9weDpuLG1lc3NhZ2U6aX09ZSxhPXBlLnNwbGl0QnJlYWtzKGkpLmxlbmd0aCxzPVNlLmNhbGN1bGF0ZVRleHREaW1lbnNpb25zKGksZmwoZHQpKSxvPXMuaGVpZ2h0L2E7ZS5oZWlnaHQrPW8sQnQuYnVtcFZlcnRpY2FsUG9zKG8pO2xldCBsLHU9cy5oZWlnaHQtMTA7Y29uc3QgaD1zLndpZHRoO2lmKHI9PT1uKXtsPUJ0LmdldFZlcnRpY2FsUG9zKCkrdSxkdC5yaWdodEFuZ2xlc3x8KHUrPWR0LmJveE1hcmdpbixsPUJ0LmdldFZlcnRpY2FsUG9zKCkrdSksdSs9MzA7Y29uc3QgZD1NYXRoLm1heChoLzIsZHQud2lkdGgvMik7QnQuaW5zZXJ0KHItZCxCdC5nZXRWZXJ0aWNhbFBvcygpLTEwK3UsbitkLEJ0LmdldFZlcnRpY2FsUG9zKCkrMzArdSl9ZWxzZSB1Kz1kdC5ib3hNYXJnaW4sbD1CdC5nZXRWZXJ0aWNhbFBvcygpK3UsQnQuaW5zZXJ0KHIsbC0xMCxuLGwpO3JldHVybiBCdC5idW1wVmVydGljYWxQb3ModSksZS5oZWlnaHQrPXUsZS5zdG9weT1lLnN0YXJ0eStlLmhlaWdodCxCdC5pbnNlcnQoZS5mcm9tQm91bmRzLGUuc3RhcnR5LGUudG9Cb3VuZHMsZS5zdG9weSksbH0saWF0PWZ1bmN0aW9uKHQsZSxyLG4pe2NvbnN0e3N0YXJ0eDppLHN0b3B4OmEsc3RhcnR5OnMsbWVzc2FnZTpvLHR5cGU6bCxzZXF1ZW5jZUluZGV4OnUsc2VxdWVuY2VWaXNpYmxlOmh9PWUsZD1TZS5jYWxjdWxhdGVUZXh0RGltZW5zaW9ucyhvLGZsKGR0KSksZj1vci5nZXRUZXh0T2JqKCk7Zi54PWksZi55PXMrMTAsZi53aWR0aD1hLWksZi5jbGFzcz0ibWVzc2FnZVRleHQiLGYuZHk9IjFlbSIsZi50ZXh0PW8sZi5mb250RmFtaWx5PWR0Lm1lc3NhZ2VGb250RmFtaWx5LGYuZm9udFNpemU9ZHQubWVzc2FnZUZvbnRTaXplLGYuZm9udFdlaWdodD1kdC5tZXNzYWdlRm9udFdlaWdodCxmLmFuY2hvcj1kdC5tZXNzYWdlQWxpZ24sZi52YWxpZ249ImNlbnRlciIsZi50ZXh0TWFyZ2luPWR0LndyYXBQYWRkaW5nLGYudHNwYW49ITEsaGwodCxmKTtjb25zdCBwPWQud2lkdGg7bGV0IG07aT09PWE/ZHQucmlnaHRBbmdsZXM/bT10LmFwcGVuZCgicGF0aCIpLmF0dHIoImQiLGBNICAke2l9LCR7cn0gSCAke2krTWF0aC5tYXgoZHQud2lkdGgvMixwLzIpfSBWICR7cisyNX0gSCAke2l9YCk6bT10LmFwcGVuZCgicGF0aCIpLmF0dHIoImQiLCJNICIraSsiLCIrcisiIEMgIisoaSs2MCkrIiwiKyhyLTEwKSsiICIrKGkrNjApKyIsIisociszMCkrIiAiK2krIiwiKyhyKzIwKSk6KG09dC5hcHBlbmQoImxpbmUiKSxtLmF0dHIoIngxIixpKSxtLmF0dHIoInkxIixyKSxtLmF0dHIoIngyIixhKSxtLmF0dHIoInkyIixyKSksbD09PW4uZGIuTElORVRZUEUuRE9UVEVEfHxsPT09bi5kYi5MSU5FVFlQRS5ET1RURURfQ1JPU1N8fGw9PT1uLmRiLkxJTkVUWVBFLkRPVFRFRF9QT0lOVHx8bD09PW4uZGIuTElORVRZUEUuRE9UVEVEX09QRU4/KG0uc3R5bGUoInN0cm9rZS1kYXNoYXJyYXkiLCIzLCAzIiksbS5hdHRyKCJjbGFzcyIsIm1lc3NhZ2VMaW5lMSIpKTptLmF0dHIoImNsYXNzIiwibWVzc2FnZUxpbmUwIik7bGV0IF89IiI7ZHQuYXJyb3dNYXJrZXJBYnNvbHV0ZSYmKF89d2luZG93LmxvY2F0aW9uLnByb3RvY29sKyIvLyIrd2luZG93LmxvY2F0aW9uLmhvc3Qrd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lK3dpbmRvdy5sb2NhdGlvbi5zZWFyY2gsXz1fLnJlcGxhY2UoL1woL2csIlxcKCIpLF89Xy5yZXBsYWNlKC9cKS9nLCJcXCkiKSksbS5hdHRyKCJzdHJva2Utd2lkdGgiLDIpLG0uYXR0cigic3Ryb2tlIiwibm9uZSIpLG0uc3R5bGUoImZpbGwiLCJub25lIiksKGw9PT1uLmRiLkxJTkVUWVBFLlNPTElEfHxsPT09bi5kYi5MSU5FVFlQRS5ET1RURUQpJiZtLmF0dHIoIm1hcmtlci1lbmQiLCJ1cmwoIitfKyIjYXJyb3doZWFkKSIpLChsPT09bi5kYi5MSU5FVFlQRS5TT0xJRF9QT0lOVHx8bD09PW4uZGIuTElORVRZUEUuRE9UVEVEX1BPSU5UKSYmbS5hdHRyKCJtYXJrZXItZW5kIiwidXJsKCIrXysiI2ZpbGxlZC1oZWFkKSIpLChsPT09bi5kYi5MSU5FVFlQRS5TT0xJRF9DUk9TU3x8bD09PW4uZGIuTElORVRZUEUuRE9UVEVEX0NST1NTKSYmbS5hdHRyKCJtYXJrZXItZW5kIiwidXJsKCIrXysiI2Nyb3NzaGVhZCkiKSwoaHx8ZHQuc2hvd1NlcXVlbmNlTnVtYmVycykmJihtLmF0dHIoIm1hcmtlci1zdGFydCIsInVybCgiK18rIiNzZXF1ZW5jZW51bWJlcikiKSx0LmFwcGVuZCgidGV4dCIpLmF0dHIoIngiLGkpLmF0dHIoInkiLHIrNCkuYXR0cigiZm9udC1mYW1pbHkiLCJzYW5zLXNlcmlmIikuYXR0cigiZm9udC1zaXplIiwiMTJweCIpLmF0dHIoInRleHQtYW5jaG9yIiwibWlkZGxlIikuYXR0cigiY2xhc3MiLCJzZXF1ZW5jZU51bWJlciIpLnRleHQodSkpfSxRND1mdW5jdGlvbih0LGUscixuLGksYSl7aWYoaS5oaWRlVW51c2VkUGFydGljaXBhbnRzPT09ITApe2NvbnN0IHU9bmV3IFNldDthLmZvckVhY2goaD0+e3UuYWRkKGguZnJvbSksdS5hZGQoaC50byl9KSxyPXIuZmlsdGVyKGg9PnUuaGFzKGgpKX1sZXQgcz0wLG89MCxsPTA7Zm9yKGxldCB1PTA7dTxyLmxlbmd0aDt1Kyspe2NvbnN0IGg9ZVtyW3VdXTtoLndpZHRoPWgud2lkdGh8fGR0LndpZHRoLGguaGVpZ2h0PU1hdGgubWF4KGguaGVpZ2h0fHxkdC5oZWlnaHQsZHQuaGVpZ2h0KSxoLm1hcmdpbj1oLm1hcmdpbnx8ZHQuYWN0b3JNYXJnaW4saC54PXMrbyxoLnk9bjtjb25zdCBkPW9yLmRyYXdBY3Rvcih0LGgsZHQpO2w9TWF0aC5tYXgobCxkKSxCdC5pbnNlcnQoaC54LG4saC54K2gud2lkdGgsaC5oZWlnaHQpLHMrPWgud2lkdGgsbys9aC5tYXJnaW4sQnQubW9kZWxzLmFkZEFjdG9yKGgpfUJ0LmJ1bXBWZXJ0aWNhbFBvcyhsKX0sRUw9ZnVuY3Rpb24odCxlLHIsbil7bGV0IGk9MCxhPTA7Zm9yKGxldCBzPTA7czxyLmxlbmd0aDtzKyspe2NvbnN0IG89ZVtyW3NdXSxsPW9hdChvKSx1PW9yLmRyYXdQb3B1cCh0LG8sbCxkdCxkdC5mb3JjZU1lbnVzLG4pO3UuaGVpZ2h0PmkmJihpPXUuaGVpZ2h0KSx1LndpZHRoK28ueD5hJiYoYT11LndpZHRoK28ueCl9cmV0dXJue21heEhlaWdodDppLG1heFdpZHRoOmF9fSxDTD1mdW5jdGlvbih0KXtmcihkdCx0KSx0LmZvbnRGYW1pbHkmJihkdC5hY3RvckZvbnRGYW1pbHk9ZHQubm90ZUZvbnRGYW1pbHk9ZHQubWVzc2FnZUZvbnRGYW1pbHk9dC5mb250RmFtaWx5KSx0LmZvbnRTaXplJiYoZHQuYWN0b3JGb250U2l6ZT1kdC5ub3RlRm9udFNpemU9ZHQubWVzc2FnZUZvbnRTaXplPXQuZm9udFNpemUpLHQuZm9udFdlaWdodCYmKGR0LmFjdG9yRm9udFdlaWdodD1kdC5ub3RlRm9udFdlaWdodD1kdC5tZXNzYWdlRm9udFdlaWdodD10LmZvbnRXZWlnaHQpfSxkMD1mdW5jdGlvbih0KXtyZXR1cm4gQnQuYWN0aXZhdGlvbnMuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLmFjdG9yPT09dH0pfSxTTD1mdW5jdGlvbih0LGUpe2NvbnN0IHI9ZVt0XSxuPWQwKHQpLGk9bi5yZWR1Y2UoZnVuY3Rpb24ocyxvKXtyZXR1cm4gTWF0aC5taW4ocyxvLnN0YXJ0eCl9LHIueCtyLndpZHRoLzIpLGE9bi5yZWR1Y2UoZnVuY3Rpb24ocyxvKXtyZXR1cm4gTWF0aC5tYXgocyxvLnN0b3B4KX0sci54K3Iud2lkdGgvMik7cmV0dXJuW2ksYV19O2Z1bmN0aW9uIFVpKHQsZSxyLG4saSl7QnQuYnVtcFZlcnRpY2FsUG9zKHIpO2xldCBhPW47aWYoZS5pZCYmZS5tZXNzYWdlJiZ0W2UuaWRdKXtjb25zdCBzPXRbZS5pZF0ud2lkdGgsbz1mbChkdCk7ZS5tZXNzYWdlPVNlLndyYXBMYWJlbChgWyR7ZS5tZXNzYWdlfV1gLHMtMipkdC53cmFwUGFkZGluZyxvKSxlLndpZHRoPXMsZS53cmFwPSEwO2NvbnN0IGw9U2UuY2FsY3VsYXRlVGV4dERpbWVuc2lvbnMoZS5tZXNzYWdlLG8pLHU9TWF0aC5tYXgobC5oZWlnaHQsZHQubGFiZWxCb3hIZWlnaHQpO2E9bit1LEguZGVidWcoYCR7dX0gLSAke2UubWVzc2FnZX1gKX1pKGUpLEJ0LmJ1bXBWZXJ0aWNhbFBvcyhhKX1jb25zdCBhYXQ9ZnVuY3Rpb24odCxlLHIsbil7Y29uc3R7c2VjdXJpdHlMZXZlbDppLHNlcXVlbmNlOmF9PW50KCk7ZHQ9YTtsZXQgcztpPT09InNhbmRib3giJiYocz1TdCgiI2kiK2UpKTtjb25zdCBvPVN0KGk9PT0ic2FuZGJveCI/cy5ub2RlcygpWzBdLmNvbnRlbnREb2N1bWVudC5ib2R5OiJib2R5IiksbD1pPT09InNhbmRib3giP3Mubm9kZXMoKVswXS5jb250ZW50RG9jdW1lbnQ6ZG9jdW1lbnQ7QnQuaW5pdCgpLEguZGVidWcobi5kYik7Y29uc3QgdT1pPT09InNhbmRib3giP28uc2VsZWN0KGBbaWQ9IiR7ZX0iXWApOlN0KGBbaWQ9IiR7ZX0iXWApLGg9bi5kYi5nZXRBY3RvcnMoKSxkPW4uZGIuZ2V0QWN0b3JLZXlzKCksZj1uLmRiLmdldE1lc3NhZ2VzKCkscD1uLmRiLmdldERpYWdyYW1UaXRsZSgpLG09c2F0KGgsZixuKTtkdC5oZWlnaHQ9bGF0KGgsbSksb3IuaW5zZXJ0Q29tcHV0ZXJJY29uKHUpLG9yLmluc2VydERhdGFiYXNlSWNvbih1KSxvci5pbnNlcnRDbG9ja0ljb24odSksUTQodSxoLGQsMCxkdCxmKTtjb25zdCBfPWhhdChmLGgsbSxuKTtvci5pbnNlcnRBcnJvd0hlYWQodSksb3IuaW5zZXJ0QXJyb3dDcm9zc0hlYWQodSksb3IuaW5zZXJ0QXJyb3dGaWxsZWRIZWFkKHUpLG9yLmluc2VydFNlcXVlbmNlTnVtYmVyKHUpO2Z1bmN0aW9uIHkoQix3KXtjb25zdCBEPUJ0LmVuZEFjdGl2YXRpb24oQik7RC5zdGFydHkrMTg+dyYmKEQuc3RhcnR5PXctNix3Kz0xMiksb3IuZHJhd0FjdGl2YXRpb24odSxELHcsZHQsZDAoQi5mcm9tLmFjdG9yKS5sZW5ndGgpLEJ0Lmluc2VydChELnN0YXJ0eCx3LTEwLEQuc3RvcHgsdyl9bGV0IGI9MSx4PTE7Y29uc3Qgaz1bXTtmLmZvckVhY2goZnVuY3Rpb24oQil7bGV0IHcsRCxOO3N3aXRjaChCLnR5cGUpe2Nhc2Ugbi5kYi5MSU5FVFlQRS5OT1RFOkQ9Qi5ub3RlTW9kZWwscmF0KHUsRCk7YnJlYWs7Y2FzZSBuLmRiLkxJTkVUWVBFLkFDVElWRV9TVEFSVDpCdC5uZXdBY3RpdmF0aW9uKEIsdSxoKTticmVhaztjYXNlIG4uZGIuTElORVRZUEUuQUNUSVZFX0VORDp5KEIsQnQuZ2V0VmVydGljYWxQb3MoKSk7YnJlYWs7Y2FzZSBuLmRiLkxJTkVUWVBFLkxPT1BfU1RBUlQ6VWkoXyxCLGR0LmJveE1hcmdpbixkdC5ib3hNYXJnaW4rZHQuYm94VGV4dE1hcmdpbix6PT5CdC5uZXdMb29wKHopKTticmVhaztjYXNlIG4uZGIuTElORVRZUEUuTE9PUF9FTkQ6dz1CdC5lbmRMb29wKCksb3IuZHJhd0xvb3AodSx3LCJsb29wIixkdCksQnQuYnVtcFZlcnRpY2FsUG9zKHcuc3RvcHktQnQuZ2V0VmVydGljYWxQb3MoKSksQnQubW9kZWxzLmFkZExvb3Aodyk7YnJlYWs7Y2FzZSBuLmRiLkxJTkVUWVBFLlJFQ1RfU1RBUlQ6VWkoXyxCLGR0LmJveE1hcmdpbixkdC5ib3hNYXJnaW4sej0+QnQubmV3TG9vcCh2b2lkIDAsei5tZXNzYWdlKSk7YnJlYWs7Y2FzZSBuLmRiLkxJTkVUWVBFLlJFQ1RfRU5EOnc9QnQuZW5kTG9vcCgpLG9yLmRyYXdCYWNrZ3JvdW5kUmVjdCh1LHcpLEJ0Lm1vZGVscy5hZGRMb29wKHcpLEJ0LmJ1bXBWZXJ0aWNhbFBvcyh3LnN0b3B5LUJ0LmdldFZlcnRpY2FsUG9zKCkpO2JyZWFrO2Nhc2Ugbi5kYi5MSU5FVFlQRS5PUFRfU1RBUlQ6VWkoXyxCLGR0LmJveE1hcmdpbixkdC5ib3hNYXJnaW4rZHQuYm94VGV4dE1hcmdpbix6PT5CdC5uZXdMb29wKHopKTticmVhaztjYXNlIG4uZGIuTElORVRZUEUuT1BUX0VORDp3PUJ0LmVuZExvb3AoKSxvci5kcmF3TG9vcCh1LHcsIm9wdCIsZHQpLEJ0LmJ1bXBWZXJ0aWNhbFBvcyh3LnN0b3B5LUJ0LmdldFZlcnRpY2FsUG9zKCkpLEJ0Lm1vZGVscy5hZGRMb29wKHcpO2JyZWFrO2Nhc2Ugbi5kYi5MSU5FVFlQRS5BTFRfU1RBUlQ6VWkoXyxCLGR0LmJveE1hcmdpbixkdC5ib3hNYXJnaW4rZHQuYm94VGV4dE1hcmdpbix6PT5CdC5uZXdMb29wKHopKTticmVhaztjYXNlIG4uZGIuTElORVRZUEUuQUxUX0VMU0U6VWkoXyxCLGR0LmJveE1hcmdpbitkdC5ib3hUZXh0TWFyZ2luLGR0LmJveE1hcmdpbix6PT5CdC5hZGRTZWN0aW9uVG9Mb29wKHopKTticmVhaztjYXNlIG4uZGIuTElORVRZUEUuQUxUX0VORDp3PUJ0LmVuZExvb3AoKSxvci5kcmF3TG9vcCh1LHcsImFsdCIsZHQpLEJ0LmJ1bXBWZXJ0aWNhbFBvcyh3LnN0b3B5LUJ0LmdldFZlcnRpY2FsUG9zKCkpLEJ0Lm1vZGVscy5hZGRMb29wKHcpO2JyZWFrO2Nhc2Ugbi5kYi5MSU5FVFlQRS5QQVJfU1RBUlQ6VWkoXyxCLGR0LmJveE1hcmdpbixkdC5ib3hNYXJnaW4rZHQuYm94VGV4dE1hcmdpbix6PT5CdC5uZXdMb29wKHopKTticmVhaztjYXNlIG4uZGIuTElORVRZUEUuUEFSX0FORDpVaShfLEIsZHQuYm94TWFyZ2luK2R0LmJveFRleHRNYXJnaW4sZHQuYm94TWFyZ2luLHo9PkJ0LmFkZFNlY3Rpb25Ub0xvb3AoeikpO2JyZWFrO2Nhc2Ugbi5kYi5MSU5FVFlQRS5QQVJfRU5EOnc9QnQuZW5kTG9vcCgpLG9yLmRyYXdMb29wKHUsdywicGFyIixkdCksQnQuYnVtcFZlcnRpY2FsUG9zKHcuc3RvcHktQnQuZ2V0VmVydGljYWxQb3MoKSksQnQubW9kZWxzLmFkZExvb3Aodyk7YnJlYWs7Y2FzZSBuLmRiLkxJTkVUWVBFLkFVVE9OVU1CRVI6Yj1CLm1lc3NhZ2Uuc3RhcnR8fGIseD1CLm1lc3NhZ2Uuc3RlcHx8eCxCLm1lc3NhZ2UudmlzaWJsZT9uLmRiLmVuYWJsZVNlcXVlbmNlTnVtYmVycygpOm4uZGIuZGlzYWJsZVNlcXVlbmNlTnVtYmVycygpO2JyZWFrO2Nhc2Ugbi5kYi5MSU5FVFlQRS5DUklUSUNBTF9TVEFSVDpVaShfLEIsZHQuYm94TWFyZ2luLGR0LmJveE1hcmdpbitkdC5ib3hUZXh0TWFyZ2luLHo9PkJ0Lm5ld0xvb3AoeikpO2JyZWFrO2Nhc2Ugbi5kYi5MSU5FVFlQRS5DUklUSUNBTF9PUFRJT046VWkoXyxCLGR0LmJveE1hcmdpbitkdC5ib3hUZXh0TWFyZ2luLGR0LmJveE1hcmdpbix6PT5CdC5hZGRTZWN0aW9uVG9Mb29wKHopKTticmVhaztjYXNlIG4uZGIuTElORVRZUEUuQ1JJVElDQUxfRU5EOnc9QnQuZW5kTG9vcCgpLG9yLmRyYXdMb29wKHUsdywiY3JpdGljYWwiLGR0KSxCdC5idW1wVmVydGljYWxQb3Mody5zdG9weS1CdC5nZXRWZXJ0aWNhbFBvcygpKSxCdC5tb2RlbHMuYWRkTG9vcCh3KTticmVhaztjYXNlIG4uZGIuTElORVRZUEUuQlJFQUtfU1RBUlQ6VWkoXyxCLGR0LmJveE1hcmdpbixkdC5ib3hNYXJnaW4rZHQuYm94VGV4dE1hcmdpbix6PT5CdC5uZXdMb29wKHopKTticmVhaztjYXNlIG4uZGIuTElORVRZUEUuQlJFQUtfRU5EOnc9QnQuZW5kTG9vcCgpLG9yLmRyYXdMb29wKHUsdywiYnJlYWsiLGR0KSxCdC5idW1wVmVydGljYWxQb3Mody5zdG9weS1CdC5nZXRWZXJ0aWNhbFBvcygpKSxCdC5tb2RlbHMuYWRkTG9vcCh3KTticmVhaztkZWZhdWx0OnRyeXtOPUIubXNnTW9kZWwsTi5zdGFydHk9QnQuZ2V0VmVydGljYWxQb3MoKSxOLnNlcXVlbmNlSW5kZXg9YixOLnNlcXVlbmNlVmlzaWJsZT1uLmRiLnNob3dTZXF1ZW5jZU51bWJlcnMoKTtjb25zdCB6PW5hdCh1LE4pO2sucHVzaCh7bWVzc2FnZU1vZGVsOk4sbGluZVN0YXJ0eTp6fSksQnQubW9kZWxzLmFkZE1lc3NhZ2UoTil9Y2F0Y2goeil7SC5lcnJvcigiZXJyb3Igd2hpbGUgZHJhd2luZyBtZXNzYWdlIix6KX19W24uZGIuTElORVRZUEUuU09MSURfT1BFTixuLmRiLkxJTkVUWVBFLkRPVFRFRF9PUEVOLG4uZGIuTElORVRZUEUuU09MSUQsbi5kYi5MSU5FVFlQRS5ET1RURUQsbi5kYi5MSU5FVFlQRS5TT0xJRF9DUk9TUyxuLmRiLkxJTkVUWVBFLkRPVFRFRF9DUk9TUyxuLmRiLkxJTkVUWVBFLlNPTElEX1BPSU5ULG4uZGIuTElORVRZUEUuRE9UVEVEX1BPSU5UXS5pbmNsdWRlcyhCLnR5cGUpJiYoYj1iK3gpfSksay5mb3JFYWNoKEI9PmlhdCh1LEIubWVzc2FnZU1vZGVsLEIubGluZVN0YXJ0eSxuKSksZHQubWlycm9yQWN0b3JzJiYoQnQuYnVtcFZlcnRpY2FsUG9zKGR0LmJveE1hcmdpbioyKSxRNCh1LGgsZCxCdC5nZXRWZXJ0aWNhbFBvcygpLGR0LGYpLEJ0LmJ1bXBWZXJ0aWNhbFBvcyhkdC5ib3hNYXJnaW4pLHdMKHUsQnQuZ2V0VmVydGljYWxQb3MoKSkpO2NvbnN0IFQ9RUwodSxoLGQsbCkse2JvdW5kczpDfT1CdC5nZXRCb3VuZHMoKTtILmRlYnVnKCJGb3IgbGluZSBoZWlnaHQgZml4IFF1ZXJ5aW5nOiAjIitlKyIgLmFjdG9yLWxpbmUiKSxOdSgiIyIrZSsiIC5hY3Rvci1saW5lIikuYXR0cigieTIiLEMuc3RvcHkpO2xldCBTPUMuc3RvcHktQy5zdGFydHk7UzxULm1heEhlaWdodCYmKFM9VC5tYXhIZWlnaHQpO2xldCBSPVMrMipkdC5kaWFncmFtTWFyZ2luWTtkdC5taXJyb3JBY3RvcnMmJihSPVItZHQuYm94TWFyZ2luK2R0LmJvdHRvbU1hcmdpbkFkaik7bGV0IEE9Qy5zdG9weC1DLnN0YXJ0eDtBPFQubWF4V2lkdGgmJihBPVQubWF4V2lkdGgpO2NvbnN0IEw9QSsyKmR0LmRpYWdyYW1NYXJnaW5YO3AmJnUuYXBwZW5kKCJ0ZXh0IikudGV4dChwKS5hdHRyKCJ4IiwoQy5zdG9weC1DLnN0YXJ0eCkvMi0yKmR0LmRpYWdyYW1NYXJnaW5YKS5hdHRyKCJ5IiwtMjUpLGxpKHUsUixMLGR0LnVzZU1heFdpZHRoKTtjb25zdCB2PXA/NDA6MDt1LmF0dHIoInZpZXdCb3giLEMuc3RhcnR4LWR0LmRpYWdyYW1NYXJnaW5YKyIgLSIrKGR0LmRpYWdyYW1NYXJnaW5ZK3YpKyIgIitMKyIgIisoUit2KSksYm4obi5kYix1LGUpLEguZGVidWcoIm1vZGVsczoiLEJ0Lm1vZGVscyl9LHNhdD1mdW5jdGlvbih0LGUscil7Y29uc3Qgbj17fTtyZXR1cm4gZS5mb3JFYWNoKGZ1bmN0aW9uKGkpe2lmKHRbaS50b10mJnRbaS5mcm9tXSl7Y29uc3QgYT10W2kudG9dO2lmKGkucGxhY2VtZW50PT09ci5kYi5QTEFDRU1FTlQuTEVGVE9GJiYhYS5wcmV2QWN0b3J8fGkucGxhY2VtZW50PT09ci5kYi5QTEFDRU1FTlQuUklHSFRPRiYmIWEubmV4dEFjdG9yKXJldHVybjtjb25zdCBzPWkucGxhY2VtZW50IT09dm9pZCAwLG89IXMsbD1zP2RsKGR0KTpmbChkdCksdT1pLndyYXA/U2Uud3JhcExhYmVsKGkubWVzc2FnZSxkdC53aWR0aC0yKmR0LndyYXBQYWRkaW5nLGwpOmkubWVzc2FnZSxkPVNlLmNhbGN1bGF0ZVRleHREaW1lbnNpb25zKHUsbCkud2lkdGgrMipkdC53cmFwUGFkZGluZztvJiZpLmZyb209PT1hLm5leHRBY3Rvcj9uW2kudG9dPU1hdGgubWF4KG5baS50b118fDAsZCk6byYmaS5mcm9tPT09YS5wcmV2QWN0b3I/bltpLmZyb21dPU1hdGgubWF4KG5baS5mcm9tXXx8MCxkKTpvJiZpLmZyb209PT1pLnRvPyhuW2kuZnJvbV09TWF0aC5tYXgobltpLmZyb21dfHwwLGQvMiksbltpLnRvXT1NYXRoLm1heChuW2kudG9dfHwwLGQvMikpOmkucGxhY2VtZW50PT09ci5kYi5QTEFDRU1FTlQuUklHSFRPRj9uW2kuZnJvbV09TWF0aC5tYXgobltpLmZyb21dfHwwLGQpOmkucGxhY2VtZW50PT09ci5kYi5QTEFDRU1FTlQuTEVGVE9GP25bYS5wcmV2QWN0b3JdPU1hdGgubWF4KG5bYS5wcmV2QWN0b3JdfHwwLGQpOmkucGxhY2VtZW50PT09ci5kYi5QTEFDRU1FTlQuT1ZFUiYmKGEucHJldkFjdG9yJiYoblthLnByZXZBY3Rvcl09TWF0aC5tYXgoblthLnByZXZBY3Rvcl18fDAsZC8yKSksYS5uZXh0QWN0b3ImJihuW2kuZnJvbV09TWF0aC5tYXgobltpLmZyb21dfHwwLGQvMikpKX19KSxILmRlYnVnKCJtYXhNZXNzYWdlV2lkdGhQZXJBY3RvcjoiLG4pLG59LG9hdD1mdW5jdGlvbih0KXtsZXQgZT0wO2NvbnN0IHI9WjQoZHQpO2Zvcihjb25zdCBuIGluIHQubGlua3Mpe2NvbnN0IGE9U2UuY2FsY3VsYXRlVGV4dERpbWVuc2lvbnMobixyKS53aWR0aCsyKmR0LndyYXBQYWRkaW5nKzIqZHQuYm94TWFyZ2luO2U8YSYmKGU9YSl9cmV0dXJuIGV9LGxhdD1mdW5jdGlvbih0LGUpe2xldCByPTA7T2JqZWN0LmtleXModCkuZm9yRWFjaChuPT57Y29uc3QgaT10W25dO2kud3JhcCYmKGkuZGVzY3JpcHRpb249U2Uud3JhcExhYmVsKGkuZGVzY3JpcHRpb24sZHQud2lkdGgtMipkdC53cmFwUGFkZGluZyxaNChkdCkpKTtjb25zdCBhPVNlLmNhbGN1bGF0ZVRleHREaW1lbnNpb25zKGkuZGVzY3JpcHRpb24sWjQoZHQpKTtpLndpZHRoPWkud3JhcD9kdC53aWR0aDpNYXRoLm1heChkdC53aWR0aCxhLndpZHRoKzIqZHQud3JhcFBhZGRpbmcpLGkuaGVpZ2h0PWkud3JhcD9NYXRoLm1heChhLmhlaWdodCxkdC5oZWlnaHQpOmR0LmhlaWdodCxyPU1hdGgubWF4KHIsaS5oZWlnaHQpfSk7Zm9yKGNvbnN0IG4gaW4gZSl7Y29uc3QgaT10W25dO2lmKCFpKWNvbnRpbnVlO2NvbnN0IGE9dFtpLm5leHRBY3Rvcl07aWYoIWEpY29udGludWU7Y29uc3Qgbz1lW25dK2R0LmFjdG9yTWFyZ2luLWkud2lkdGgvMi1hLndpZHRoLzI7aS5tYXJnaW49TWF0aC5tYXgobyxkdC5hY3Rvck1hcmdpbil9cmV0dXJuIE1hdGgubWF4KHIsZHQuaGVpZ2h0KX0sY2F0PWZ1bmN0aW9uKHQsZSxyKXtjb25zdCBuPWVbdC5mcm9tXS54LGk9ZVt0LnRvXS54LGE9dC53cmFwJiZ0Lm1lc3NhZ2U7bGV0IHM9U2UuY2FsY3VsYXRlVGV4dERpbWVuc2lvbnMoYT9TZS53cmFwTGFiZWwodC5tZXNzYWdlLGR0LndpZHRoLGRsKGR0KSk6dC5tZXNzYWdlLGRsKGR0KSk7Y29uc3Qgbz17d2lkdGg6YT9kdC53aWR0aDpNYXRoLm1heChkdC53aWR0aCxzLndpZHRoKzIqZHQubm90ZU1hcmdpbiksaGVpZ2h0OjAsc3RhcnR4OmVbdC5mcm9tXS54LHN0b3B4OjAsc3RhcnR5OjAsc3RvcHk6MCxtZXNzYWdlOnQubWVzc2FnZX07cmV0dXJuIHQucGxhY2VtZW50PT09ci5kYi5QTEFDRU1FTlQuUklHSFRPRj8oby53aWR0aD1hP01hdGgubWF4KGR0LndpZHRoLHMud2lkdGgpOk1hdGgubWF4KGVbdC5mcm9tXS53aWR0aC8yK2VbdC50b10ud2lkdGgvMixzLndpZHRoKzIqZHQubm90ZU1hcmdpbiksby5zdGFydHg9bisoZVt0LmZyb21dLndpZHRoK2R0LmFjdG9yTWFyZ2luKS8yKTp0LnBsYWNlbWVudD09PXIuZGIuUExBQ0VNRU5ULkxFRlRPRj8oby53aWR0aD1NYXRoLm1heChhP2R0LndpZHRoOmVbdC5mcm9tXS53aWR0aC8yK2VbdC50b10ud2lkdGgvMixzLndpZHRoKzIqZHQubm90ZU1hcmdpbiksby5zdGFydHg9bi1vLndpZHRoKyhlW3QuZnJvbV0ud2lkdGgtZHQuYWN0b3JNYXJnaW4pLzIpOnQudG89PT10LmZyb20/KHM9U2UuY2FsY3VsYXRlVGV4dERpbWVuc2lvbnMoYT9TZS53cmFwTGFiZWwodC5tZXNzYWdlLE1hdGgubWF4KGR0LndpZHRoLGVbdC5mcm9tXS53aWR0aCksZGwoZHQpKTp0Lm1lc3NhZ2UsZGwoZHQpKSxvLndpZHRoPWE/TWF0aC5tYXgoZHQud2lkdGgsZVt0LmZyb21dLndpZHRoKTpNYXRoLm1heChlW3QuZnJvbV0ud2lkdGgsZHQud2lkdGgscy53aWR0aCsyKmR0Lm5vdGVNYXJnaW4pLG8uc3RhcnR4PW4rKGVbdC5mcm9tXS53aWR0aC1vLndpZHRoKS8yKTooby53aWR0aD1NYXRoLmFicyhuK2VbdC5mcm9tXS53aWR0aC8yLShpK2VbdC50b10ud2lkdGgvMikpK2R0LmFjdG9yTWFyZ2luLG8uc3RhcnR4PW48aT9uK2VbdC5mcm9tXS53aWR0aC8yLWR0LmFjdG9yTWFyZ2luLzI6aStlW3QudG9dLndpZHRoLzItZHQuYWN0b3JNYXJnaW4vMiksYSYmKG8ubWVzc2FnZT1TZS53cmFwTGFiZWwodC5tZXNzYWdlLG8ud2lkdGgtMipkdC53cmFwUGFkZGluZyxkbChkdCkpKSxILmRlYnVnKGBOTTpbJHtvLnN0YXJ0eH0sJHtvLnN0b3B4fSwke28uc3RhcnR5fSwke28uc3RvcHl9OiR7by53aWR0aH0sJHtvLmhlaWdodH09JHt0Lm1lc3NhZ2V9XWApLG99LHVhdD1mdW5jdGlvbih0LGUscil7bGV0IG49ITE7aWYoW3IuZGIuTElORVRZUEUuU09MSURfT1BFTixyLmRiLkxJTkVUWVBFLkRPVFRFRF9PUEVOLHIuZGIuTElORVRZUEUuU09MSUQsci5kYi5MSU5FVFlQRS5ET1RURUQsci5kYi5MSU5FVFlQRS5TT0xJRF9DUk9TUyxyLmRiLkxJTkVUWVBFLkRPVFRFRF9DUk9TUyxyLmRiLkxJTkVUWVBFLlNPTElEX1BPSU5ULHIuZGIuTElORVRZUEUuRE9UVEVEX1BPSU5UXS5pbmNsdWRlcyh0LnR5cGUpJiYobj0hMCksIW4pcmV0dXJue307Y29uc3QgaT1TTCh0LmZyb20sZSksYT1TTCh0LnRvLGUpLHM9aVswXTw9YVswXT8xOjAsbz1pWzBdPGFbMF0/MDoxLGw9aS5jb25jYXQoYSksdT1NYXRoLmFicyhhW29dLWlbc10pO3Qud3JhcCYmdC5tZXNzYWdlJiYodC5tZXNzYWdlPVNlLndyYXBMYWJlbCh0Lm1lc3NhZ2UsTWF0aC5tYXgodSsyKmR0LndyYXBQYWRkaW5nLGR0LndpZHRoKSxmbChkdCkpKTtjb25zdCBoPVNlLmNhbGN1bGF0ZVRleHREaW1lbnNpb25zKHQubWVzc2FnZSxmbChkdCkpO3JldHVybnt3aWR0aDpNYXRoLm1heCh0LndyYXA/MDpoLndpZHRoKzIqZHQud3JhcFBhZGRpbmcsdSsyKmR0LndyYXBQYWRkaW5nLGR0LndpZHRoKSxoZWlnaHQ6MCxzdGFydHg6aVtzXSxzdG9weDphW29dLHN0YXJ0eTowLHN0b3B5OjAsbWVzc2FnZTp0Lm1lc3NhZ2UsdHlwZTp0LnR5cGUsd3JhcDp0LndyYXAsZnJvbUJvdW5kczpNYXRoLm1pbi5hcHBseShudWxsLGwpLHRvQm91bmRzOk1hdGgubWF4LmFwcGx5KG51bGwsbCl9fSxoYXQ9ZnVuY3Rpb24odCxlLHIsbil7Y29uc3QgaT17fSxhPVtdO2xldCBzLG8sbDtyZXR1cm4gdC5mb3JFYWNoKGZ1bmN0aW9uKHUpe3N3aXRjaCh1LmlkPVNlLnJhbmRvbSh7bGVuZ3RoOjEwfSksdS50eXBlKXtjYXNlIG4uZGIuTElORVRZUEUuTE9PUF9TVEFSVDpjYXNlIG4uZGIuTElORVRZUEUuQUxUX1NUQVJUOmNhc2Ugbi5kYi5MSU5FVFlQRS5PUFRfU1RBUlQ6Y2FzZSBuLmRiLkxJTkVUWVBFLlBBUl9TVEFSVDpjYXNlIG4uZGIuTElORVRZUEUuQ1JJVElDQUxfU1RBUlQ6Y2FzZSBuLmRiLkxJTkVUWVBFLkJSRUFLX1NUQVJUOmEucHVzaCh7aWQ6dS5pZCxtc2c6dS5tZXNzYWdlLGZyb206TnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIsdG86TnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIsd2lkdGg6MH0pO2JyZWFrO2Nhc2Ugbi5kYi5MSU5FVFlQRS5BTFRfRUxTRTpjYXNlIG4uZGIuTElORVRZUEUuUEFSX0FORDpjYXNlIG4uZGIuTElORVRZUEUuQ1JJVElDQUxfT1BUSU9OOnUubWVzc2FnZSYmKHM9YS5wb3AoKSxpW3MuaWRdPXMsaVt1LmlkXT1zLGEucHVzaChzKSk7YnJlYWs7Y2FzZSBuLmRiLkxJTkVUWVBFLkxPT1BfRU5EOmNhc2Ugbi5kYi5MSU5FVFlQRS5BTFRfRU5EOmNhc2Ugbi5kYi5MSU5FVFlQRS5PUFRfRU5EOmNhc2Ugbi5kYi5MSU5FVFlQRS5QQVJfRU5EOmNhc2Ugbi5kYi5MSU5FVFlQRS5DUklUSUNBTF9FTkQ6Y2FzZSBuLmRiLkxJTkVUWVBFLkJSRUFLX0VORDpzPWEucG9wKCksaVtzLmlkXT1zO2JyZWFrO2Nhc2Ugbi5kYi5MSU5FVFlQRS5BQ1RJVkVfU1RBUlQ6e2NvbnN0IGQ9ZVt1LmZyb20/dS5mcm9tLmFjdG9yOnUudG8uYWN0b3JdLGY9ZDAodS5mcm9tP3UuZnJvbS5hY3Rvcjp1LnRvLmFjdG9yKS5sZW5ndGgscD1kLngrZC53aWR0aC8yKyhmLTEpKmR0LmFjdGl2YXRpb25XaWR0aC8yLG09e3N0YXJ0eDpwLHN0b3B4OnArZHQuYWN0aXZhdGlvbldpZHRoLGFjdG9yOnUuZnJvbS5hY3RvcixlbmFibGVkOiEwfTtCdC5hY3RpdmF0aW9ucy5wdXNoKG0pfWJyZWFrO2Nhc2Ugbi5kYi5MSU5FVFlQRS5BQ1RJVkVfRU5EOntjb25zdCBkPUJ0LmFjdGl2YXRpb25zLm1hcChmPT5mLmFjdG9yKS5sYXN0SW5kZXhPZih1LmZyb20uYWN0b3IpO2RlbGV0ZSBCdC5hY3RpdmF0aW9ucy5zcGxpY2UoZCwxKVswXX1icmVha311LnBsYWNlbWVudCE9PXZvaWQgMD8obz1jYXQodSxlLG4pLHUubm90ZU1vZGVsPW8sYS5mb3JFYWNoKGQ9PntzPWQscy5mcm9tPU1hdGgubWluKHMuZnJvbSxvLnN0YXJ0eCkscy50bz1NYXRoLm1heChzLnRvLG8uc3RhcnR4K28ud2lkdGgpLHMud2lkdGg9TWF0aC5tYXgocy53aWR0aCxNYXRoLmFicyhzLmZyb20tcy50bykpLWR0LmxhYmVsQm94V2lkdGh9KSk6KGw9dWF0KHUsZSxuKSx1Lm1zZ01vZGVsPWwsbC5zdGFydHgmJmwuc3RvcHgmJmEubGVuZ3RoPjAmJmEuZm9yRWFjaChkPT57aWYocz1kLGwuc3RhcnR4PT09bC5zdG9weCl7Y29uc3QgZj1lW3UuZnJvbV0scD1lW3UudG9dO3MuZnJvbT1NYXRoLm1pbihmLngtbC53aWR0aC8yLGYueC1mLndpZHRoLzIscy5mcm9tKSxzLnRvPU1hdGgubWF4KHAueCtsLndpZHRoLzIscC54K2Yud2lkdGgvMixzLnRvKSxzLndpZHRoPU1hdGgubWF4KHMud2lkdGgsTWF0aC5hYnMocy50by1zLmZyb20pKS1kdC5sYWJlbEJveFdpZHRofWVsc2Ugcy5mcm9tPU1hdGgubWluKGwuc3RhcnR4LHMuZnJvbSkscy50bz1NYXRoLm1heChsLnN0b3B4LHMudG8pLHMud2lkdGg9TWF0aC5tYXgocy53aWR0aCxsLndpZHRoKS1kdC5sYWJlbEJveFdpZHRofSkpfSksQnQuYWN0aXZhdGlvbnM9W10sSC5kZWJ1ZygiTG9vcCB0eXBlIHdpZHRoczoiLGkpLGl9LEFMPXtib3VuZHM6QnQsZHJhd0FjdG9yczpRNCxkcmF3QWN0b3JzUG9wdXA6RUwsc2V0Q29uZjpDTCxkcmF3OmFhdH07dmFyIHAwPWZ1bmN0aW9uKCl7dmFyIHQ9ZnVuY3Rpb24oY3QsSixZLCQpe2ZvcihZPVl8fHt9LCQ9Y3QubGVuZ3RoOyQtLTtZW2N0WyRdXT1KKTtyZXR1cm4gWX0sZT1bMSwyXSxyPVsxLDNdLG49WzEsNV0saT1bMSw3XSxhPVsyLDVdLHM9WzEsMTVdLG89WzEsMTddLGw9WzEsMTldLHU9WzEsMjBdLGg9WzEsMjFdLGQ9WzEsMjJdLGY9WzEsMzNdLHA9WzEsMjNdLG09WzEsMjRdLF89WzEsMjVdLHk9WzEsMjZdLGI9WzEsMjddLHg9WzEsMzBdLGs9WzEsMzFdLFQ9WzEsMzJdLEM9WzEsMzVdLE09WzEsMzZdLFM9WzEsMzddLFI9WzEsMzhdLEE9WzEsMzRdLEw9WzEsNDFdLHY9WzEsNCw1LDE0LDE1LDE3LDE5LDIwLDIyLDIzLDI0LDI1LDI2LDI3LDMxLDMzLDM1LDQxLDQyLDQzLDQ0LDQ3LDUwXSxCPVsxLDQsNSwxMiwxMywxNCwxNSwxNywxOSwyMCwyMiwyMywyNCwyNSwyNiwyNywzMSwzMywzNSw0MSw0Miw0Myw0NCw0Nyw1MF0sdz1bMSw0LDUsNywxNCwxNSwxNywxOSwyMCwyMiwyMywyNCwyNSwyNiwyNywzMSwzMywzNSw0MSw0Miw0Myw0NCw0Nyw1MF0sRD1bNCw1LDE0LDE1LDE3LDE5LDIwLDIyLDIzLDI0LDI1LDI2LDI3LDMxLDMzLDM1LDQxLDQyLDQzLDQ0LDQ3LDUwXSxOPXt0cmFjZTpmdW5jdGlvbigpe30seXk6e30sc3ltYm9sc186e2Vycm9yOjIsc3RhcnQ6MyxTUEFDRTo0LE5MOjUsZGlyZWN0aXZlOjYsU0Q6Nyxkb2N1bWVudDo4LGxpbmU6OSxzdGF0ZW1lbnQ6MTAsaWRTdGF0ZW1lbnQ6MTEsREVTQ1I6MTIsIi0tPiI6MTMsSElERV9FTVBUWToxNCxzY2FsZToxNSxXSURUSDoxNixDT01QT1NJVF9TVEFURToxNyxTVFJVQ1RfU1RBUlQ6MTgsU1RSVUNUX1NUT1A6MTksU1RBVEVfREVTQ1I6MjAsQVM6MjEsSUQ6MjIsRk9SSzoyMyxKT0lOOjI0LENIT0lDRToyNSxDT05DVVJSRU5UOjI2LG5vdGU6Mjcsbm90ZVBvc2l0aW9uOjI4LE5PVEVfVEVYVDoyOSxkaXJlY3Rpb246MzAsYWNjX3RpdGxlOjMxLGFjY190aXRsZV92YWx1ZTozMixhY2NfZGVzY3I6MzMsYWNjX2Rlc2NyX3ZhbHVlOjM0LGFjY19kZXNjcl9tdWx0aWxpbmVfdmFsdWU6MzUsb3BlbkRpcmVjdGl2ZTozNix0eXBlRGlyZWN0aXZlOjM3LGNsb3NlRGlyZWN0aXZlOjM4LCI6IjozOSxhcmdEaXJlY3RpdmU6NDAsZGlyZWN0aW9uX3RiOjQxLGRpcmVjdGlvbl9idDo0MixkaXJlY3Rpb25fcmw6NDMsZGlyZWN0aW9uX2xyOjQ0LGVvbDo0NSwiOyI6NDYsRURHRV9TVEFURTo0NyxsZWZ0X29mOjQ4LHJpZ2h0X29mOjQ5LG9wZW5fZGlyZWN0aXZlOjUwLHR5cGVfZGlyZWN0aXZlOjUxLGFyZ19kaXJlY3RpdmU6NTIsY2xvc2VfZGlyZWN0aXZlOjUzLCRhY2NlcHQ6MCwkZW5kOjF9LHRlcm1pbmFsc186ezI6ImVycm9yIiw0OiJTUEFDRSIsNToiTkwiLDc6IlNEIiwxMjoiREVTQ1IiLDEzOiItLT4iLDE0OiJISURFX0VNUFRZIiwxNToic2NhbGUiLDE2OiJXSURUSCIsMTc6IkNPTVBPU0lUX1NUQVRFIiwxODoiU1RSVUNUX1NUQVJUIiwxOToiU1RSVUNUX1NUT1AiLDIwOiJTVEFURV9ERVNDUiIsMjE6IkFTIiwyMjoiSUQiLDIzOiJGT1JLIiwyNDoiSk9JTiIsMjU6IkNIT0lDRSIsMjY6IkNPTkNVUlJFTlQiLDI3OiJub3RlIiwyOToiTk9URV9URVhUIiwzMToiYWNjX3RpdGxlIiwzMjoiYWNjX3RpdGxlX3ZhbHVlIiwzMzoiYWNjX2Rlc2NyIiwzNDoiYWNjX2Rlc2NyX3ZhbHVlIiwzNToiYWNjX2Rlc2NyX211bHRpbGluZV92YWx1ZSIsMzk6IjoiLDQxOiJkaXJlY3Rpb25fdGIiLDQyOiJkaXJlY3Rpb25fYnQiLDQzOiJkaXJlY3Rpb25fcmwiLDQ0OiJkaXJlY3Rpb25fbHIiLDQ2OiI7Iiw0NzoiRURHRV9TVEFURSIsNDg6ImxlZnRfb2YiLDQ5OiJyaWdodF9vZiIsNTA6Im9wZW5fZGlyZWN0aXZlIiw1MToidHlwZV9kaXJlY3RpdmUiLDUyOiJhcmdfZGlyZWN0aXZlIiw1MzoiY2xvc2VfZGlyZWN0aXZlIn0scHJvZHVjdGlvbnNfOlswLFszLDJdLFszLDJdLFszLDJdLFszLDJdLFs4LDBdLFs4LDJdLFs5LDJdLFs5LDFdLFs5LDFdLFsxMCwxXSxbMTAsMl0sWzEwLDNdLFsxMCw0XSxbMTAsMV0sWzEwLDJdLFsxMCwxXSxbMTAsNF0sWzEwLDNdLFsxMCw2XSxbMTAsMV0sWzEwLDFdLFsxMCwxXSxbMTAsMV0sWzEwLDRdLFsxMCw0XSxbMTAsMV0sWzEwLDFdLFsxMCwyXSxbMTAsMl0sWzEwLDFdLFs2LDNdLFs2LDVdLFszMCwxXSxbMzAsMV0sWzMwLDFdLFszMCwxXSxbNDUsMV0sWzQ1LDFdLFsxMSwxXSxbMTEsMV0sWzI4LDFdLFsyOCwxXSxbMzYsMV0sWzM3LDFdLFs0MCwxXSxbMzgsMV1dLHBlcmZvcm1BY3Rpb246ZnVuY3Rpb24oSixZLCQsbHQsdXQsVyx0dCl7dmFyIEs9Vy5sZW5ndGgtMTtzd2l0Y2godXQpe2Nhc2UgNDpyZXR1cm4gbHQuc2V0Um9vdERvYyhXW0tdKSxXW0tdO2Nhc2UgNTp0aGlzLiQ9W107YnJlYWs7Y2FzZSA2OldbS10hPSJubCImJihXW0stMV0ucHVzaChXW0tdKSx0aGlzLiQ9V1tLLTFdKTticmVhaztjYXNlIDc6Y2FzZSA4OnRoaXMuJD1XW0tdO2JyZWFrO2Nhc2UgOTp0aGlzLiQ9Im5sIjticmVhaztjYXNlIDEwOnRoaXMuJD17c3RtdDoic3RhdGUiLGlkOldbS10sdHlwZToiZGVmYXVsdCIsZGVzY3JpcHRpb246IiJ9O2JyZWFrO2Nhc2UgMTE6dGhpcy4kPXtzdG10OiJzdGF0ZSIsaWQ6V1tLLTFdLHR5cGU6ImRlZmF1bHQiLGRlc2NyaXB0aW9uOmx0LnRyaW1Db2xvbihXW0tdKX07YnJlYWs7Y2FzZSAxMjp0aGlzLiQ9e3N0bXQ6InJlbGF0aW9uIixzdGF0ZTE6e3N0bXQ6InN0YXRlIixpZDpXW0stMl0sdHlwZToiZGVmYXVsdCIsZGVzY3JpcHRpb246IiJ9LHN0YXRlMjp7c3RtdDoic3RhdGUiLGlkOldbS10sdHlwZToiZGVmYXVsdCIsZGVzY3JpcHRpb246IiJ9fTticmVhaztjYXNlIDEzOnRoaXMuJD17c3RtdDoicmVsYXRpb24iLHN0YXRlMTp7c3RtdDoic3RhdGUiLGlkOldbSy0zXSx0eXBlOiJkZWZhdWx0IixkZXNjcmlwdGlvbjoiIn0sc3RhdGUyOntzdG10OiJzdGF0ZSIsaWQ6V1tLLTFdLHR5cGU6ImRlZmF1bHQiLGRlc2NyaXB0aW9uOiIifSxkZXNjcmlwdGlvbjpXW0tdLnN1YnN0cigxKS50cmltKCl9O2JyZWFrO2Nhc2UgMTc6dGhpcy4kPXtzdG10OiJzdGF0ZSIsaWQ6V1tLLTNdLHR5cGU6ImRlZmF1bHQiLGRlc2NyaXB0aW9uOiIiLGRvYzpXW0stMV19O2JyZWFrO2Nhc2UgMTg6dmFyIGl0PVdbS10sWj1XW0stMl0udHJpbSgpO2lmKFdbS10ubWF0Y2goIjoiKSl7dmFyIFY9V1tLXS5zcGxpdCgiOiIpO2l0PVZbMF0sWj1bWixWWzFdXX10aGlzLiQ9e3N0bXQ6InN0YXRlIixpZDppdCx0eXBlOiJkZWZhdWx0IixkZXNjcmlwdGlvbjpafTticmVhaztjYXNlIDE5OnRoaXMuJD17c3RtdDoic3RhdGUiLGlkOldbSy0zXSx0eXBlOiJkZWZhdWx0IixkZXNjcmlwdGlvbjpXW0stNV0sZG9jOldbSy0xXX07YnJlYWs7Y2FzZSAyMDp0aGlzLiQ9e3N0bXQ6InN0YXRlIixpZDpXW0tdLHR5cGU6ImZvcmsifTticmVhaztjYXNlIDIxOnRoaXMuJD17c3RtdDoic3RhdGUiLGlkOldbS10sdHlwZToiam9pbiJ9O2JyZWFrO2Nhc2UgMjI6dGhpcy4kPXtzdG10OiJzdGF0ZSIsaWQ6V1tLXSx0eXBlOiJjaG9pY2UifTticmVhaztjYXNlIDIzOnRoaXMuJD17c3RtdDoic3RhdGUiLGlkOmx0LmdldERpdmlkZXJJZCgpLHR5cGU6ImRpdmlkZXIifTticmVhaztjYXNlIDI0OnRoaXMuJD17c3RtdDoic3RhdGUiLGlkOldbSy0xXS50cmltKCksbm90ZTp7cG9zaXRpb246V1tLLTJdLnRyaW0oKSx0ZXh0OldbS10udHJpbSgpfX07YnJlYWs7Y2FzZSAyODp0aGlzLiQ9V1tLXS50cmltKCksbHQuc2V0QWNjVGl0bGUodGhpcy4kKTticmVhaztjYXNlIDI5OmNhc2UgMzA6dGhpcy4kPVdbS10udHJpbSgpLGx0LnNldEFjY0Rlc2NyaXB0aW9uKHRoaXMuJCk7YnJlYWs7Y2FzZSAzMzpsdC5zZXREaXJlY3Rpb24oIlRCIiksdGhpcy4kPXtzdG10OiJkaXIiLHZhbHVlOiJUQiJ9O2JyZWFrO2Nhc2UgMzQ6bHQuc2V0RGlyZWN0aW9uKCJCVCIpLHRoaXMuJD17c3RtdDoiZGlyIix2YWx1ZToiQlQifTticmVhaztjYXNlIDM1Omx0LnNldERpcmVjdGlvbigiUkwiKSx0aGlzLiQ9e3N0bXQ6ImRpciIsdmFsdWU6IlJMIn07YnJlYWs7Y2FzZSAzNjpsdC5zZXREaXJlY3Rpb24oIkxSIiksdGhpcy4kPXtzdG10OiJkaXIiLHZhbHVlOiJMUiJ9O2JyZWFrO2Nhc2UgMzk6Y2FzZSA0MDp0aGlzLiQ9V1tLXTticmVhaztjYXNlIDQzOmx0LnBhcnNlRGlyZWN0aXZlKCIlJXsiLCJvcGVuX2RpcmVjdGl2ZSIpO2JyZWFrO2Nhc2UgNDQ6bHQucGFyc2VEaXJlY3RpdmUoV1tLXSwidHlwZV9kaXJlY3RpdmUiKTticmVhaztjYXNlIDQ1OldbS109V1tLXS50cmltKCkucmVwbGFjZSgvJy9nLCciJyksbHQucGFyc2VEaXJlY3RpdmUoV1tLXSwiYXJnX2RpcmVjdGl2ZSIpO2JyZWFrO2Nhc2UgNDY6bHQucGFyc2VEaXJlY3RpdmUoIn0lJSIsImNsb3NlX2RpcmVjdGl2ZSIsInN0YXRlIik7YnJlYWt9fSx0YWJsZTpbezM6MSw0OmUsNTpyLDY6NCw3Om4sMzY6Niw1MDppfSx7MTpbM119LHszOjgsNDplLDU6ciw2OjQsNzpuLDM2OjYsNTA6aX0sezM6OSw0OmUsNTpyLDY6NCw3Om4sMzY6Niw1MDppfSx7MzoxMCw0OmUsNTpyLDY6NCw3Om4sMzY6Niw1MDppfSx0KFsxLDQsNSwxNCwxNSwxNywyMCwyMiwyMywyNCwyNSwyNiwyNywzMSwzMywzNSw0MSw0Miw0Myw0NCw0Nyw1MF0sYSx7ODoxMX0pLHszNzoxMiw1MTpbMSwxM119LHs1MTpbMiw0M119LHsxOlsyLDFdfSx7MTpbMiwyXX0sezE6WzIsM119LHsxOlsyLDRdLDQ6cyw1Om8sNjoyOCw5OjE0LDEwOjE2LDExOjE4LDE0OmwsMTU6dSwxNzpoLDIwOmQsMjI6ZiwyMzpwLDI0Om0sMjU6XywyNjp5LDI3OmIsMzA6MjksMzE6eCwzMzprLDM1OlQsMzY6Niw0MTpDLDQyOk0sNDM6Uyw0NDpSLDQ3OkEsNTA6aX0sezM4OjM5LDM5OlsxLDQwXSw1MzpMfSx0KFszOSw1M10sWzIsNDRdKSx0KHYsWzIsNl0pLHs2OjI4LDEwOjQyLDExOjE4LDE0OmwsMTU6dSwxNzpoLDIwOmQsMjI6ZiwyMzpwLDI0Om0sMjU6XywyNjp5LDI3OmIsMzA6MjksMzE6eCwzMzprLDM1OlQsMzY6Niw0MTpDLDQyOk0sNDM6Uyw0NDpSLDQ3OkEsNTA6aX0sdCh2LFsyLDhdKSx0KHYsWzIsOV0pLHQodixbMiwxMF0sezEyOlsxLDQzXSwxMzpbMSw0NF19KSx0KHYsWzIsMTRdKSx7MTY6WzEsNDVdfSx0KHYsWzIsMTZdLHsxODpbMSw0Nl19KSx7MjE6WzEsNDddfSx0KHYsWzIsMjBdKSx0KHYsWzIsMjFdKSx0KHYsWzIsMjJdKSx0KHYsWzIsMjNdKSx7Mjg6NDgsMjk6WzEsNDldLDQ4OlsxLDUwXSw0OTpbMSw1MV19LHQodixbMiwyNl0pLHQodixbMiwyN10pLHszMjpbMSw1Ml19LHszNDpbMSw1M119LHQodixbMiwzMF0pLHQoQixbMiwzOV0pLHQoQixbMiw0MF0pLHQodixbMiwzM10pLHQodixbMiwzNF0pLHQodixbMiwzNV0pLHQodixbMiwzNl0pLHQodyxbMiwzMV0pLHs0MDo1NCw1MjpbMSw1NV19LHQodyxbMiw0Nl0pLHQodixbMiw3XSksdCh2LFsyLDExXSksezExOjU2LDIyOmYsNDc6QX0sdCh2LFsyLDE1XSksdChELGEsezg6NTd9KSx7MjI6WzEsNThdfSx7MjI6WzEsNTldfSx7MjE6WzEsNjBdfSx7MjI6WzIsNDFdfSx7MjI6WzIsNDJdfSx0KHYsWzIsMjhdKSx0KHYsWzIsMjldKSx7Mzg6NjEsNTM6TH0sezUzOlsyLDQ1XX0sdCh2LFsyLDEyXSx7MTI6WzEsNjJdfSksezQ6cyw1Om8sNjoyOCw5OjE0LDEwOjE2LDExOjE4LDE0OmwsMTU6dSwxNzpoLDE5OlsxLDYzXSwyMDpkLDIyOmYsMjM6cCwyNDptLDI1Ol8sMjY6eSwyNzpiLDMwOjI5LDMxOngsMzM6aywzNTpULDM2OjYsNDE6Qyw0MjpNLDQzOlMsNDQ6Uiw0NzpBLDUwOml9LHQodixbMiwxOF0sezE4OlsxLDY0XX0pLHsyOTpbMSw2NV19LHsyMjpbMSw2Nl19LHQodyxbMiwzMl0pLHQodixbMiwxM10pLHQodixbMiwxN10pLHQoRCxhLHs4OjY3fSksdCh2LFsyLDI0XSksdCh2LFsyLDI1XSksezQ6cyw1Om8sNjoyOCw5OjE0LDEwOjE2LDExOjE4LDE0OmwsMTU6dSwxNzpoLDE5OlsxLDY4XSwyMDpkLDIyOmYsMjM6cCwyNDptLDI1Ol8sMjY6eSwyNzpiLDMwOjI5LDMxOngsMzM6aywzNTpULDM2OjYsNDE6Qyw0MjpNLDQzOlMsNDQ6Uiw0NzpBLDUwOml9LHQodixbMiwxOV0pXSxkZWZhdWx0QWN0aW9uczp7NzpbMiw0M10sODpbMiwxXSw5OlsyLDJdLDEwOlsyLDNdLDUwOlsyLDQxXSw1MTpbMiw0Ml0sNTU6WzIsNDVdfSxwYXJzZUVycm9yOmZ1bmN0aW9uKEosWSl7aWYoWS5yZWNvdmVyYWJsZSl0aGlzLnRyYWNlKEopO2Vsc2V7dmFyICQ9bmV3IEVycm9yKEopO3Rocm93ICQuaGFzaD1ZLCR9fSxwYXJzZTpmdW5jdGlvbihKKXt2YXIgWT10aGlzLCQ9WzBdLGx0PVtdLHV0PVtudWxsXSxXPVtdLHR0PXRoaXMudGFibGUsSz0iIixpdD0wLFo9MCxWPTIsUT0xLHE9Vy5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSxVPU9iamVjdC5jcmVhdGUodGhpcy5sZXhlciksRj17eXk6e319O2Zvcih2YXIgaiBpbiB0aGlzLnl5KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLnl5LGopJiYoRi55eVtqXT10aGlzLnl5W2pdKTtVLnNldElucHV0KEosRi55eSksRi55eS5sZXhlcj1VLEYueXkucGFyc2VyPXRoaXMsdHlwZW9mIFUueXlsbG9jPiJ1IiYmKFUueXlsbG9jPXt9KTt2YXIgUD1VLnl5bGxvYztXLnB1c2goUCk7dmFyIGV0PVUub3B0aW9ucyYmVS5vcHRpb25zLnJhbmdlczt0eXBlb2YgRi55eS5wYXJzZUVycm9yPT0iZnVuY3Rpb24iP3RoaXMucGFyc2VFcnJvcj1GLnl5LnBhcnNlRXJyb3I6dGhpcy5wYXJzZUVycm9yPU9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzKS5wYXJzZUVycm9yO2Z1bmN0aW9uIGF0KCl7dmFyIER0O3JldHVybiBEdD1sdC5wb3AoKXx8VS5sZXgoKXx8USx0eXBlb2YgRHQhPSJudW1iZXIiJiYoRHQgaW5zdGFuY2VvZiBBcnJheSYmKGx0PUR0LER0PWx0LnBvcCgpKSxEdD1ZLnN5bWJvbHNfW0R0XXx8RHQpLER0fWZvcih2YXIgSXQsTHQsUnQsQ3QscHQ9e30sbXQsdnQsVHQsZnQ7Oyl7aWYoTHQ9JFskLmxlbmd0aC0xXSx0aGlzLmRlZmF1bHRBY3Rpb25zW0x0XT9SdD10aGlzLmRlZmF1bHRBY3Rpb25zW0x0XTooKEl0PT09bnVsbHx8dHlwZW9mIEl0PiJ1IikmJihJdD1hdCgpKSxSdD10dFtMdF0mJnR0W0x0XVtJdF0pLHR5cGVvZiBSdD4idSJ8fCFSdC5sZW5ndGh8fCFSdFswXSl7dmFyIGxlPSIiO2Z0PVtdO2ZvcihtdCBpbiB0dFtMdF0pdGhpcy50ZXJtaW5hbHNfW210XSYmbXQ+ViYmZnQucHVzaCgiJyIrdGhpcy50ZXJtaW5hbHNfW210XSsiJyIpO1Uuc2hvd1Bvc2l0aW9uP2xlPSJQYXJzZSBlcnJvciBvbiBsaW5lICIrKGl0KzEpK2A6CmArVS5zaG93UG9zaXRpb24oKStgCkV4cGVjdGluZyBgK2Z0LmpvaW4oIiwgIikrIiwgZ290ICciKyh0aGlzLnRlcm1pbmFsc19bSXRdfHxJdCkrIiciOmxlPSJQYXJzZSBlcnJvciBvbiBsaW5lICIrKGl0KzEpKyI6IFVuZXhwZWN0ZWQgIisoSXQ9PVE/ImVuZCBvZiBpbnB1dCI6IiciKyh0aGlzLnRlcm1pbmFsc19bSXRdfHxJdCkrIiciKSx0aGlzLnBhcnNlRXJyb3IobGUse3RleHQ6VS5tYXRjaCx0b2tlbjp0aGlzLnRlcm1pbmFsc19bSXRdfHxJdCxsaW5lOlUueXlsaW5lbm8sbG9jOlAsZXhwZWN0ZWQ6ZnR9KX1pZihSdFswXWluc3RhbmNlb2YgQXJyYXkmJlJ0Lmxlbmd0aD4xKXRocm93IG5ldyBFcnJvcigiUGFyc2UgRXJyb3I6IG11bHRpcGxlIGFjdGlvbnMgcG9zc2libGUgYXQgc3RhdGU6ICIrTHQrIiwgdG9rZW46ICIrSXQpO3N3aXRjaChSdFswXSl7Y2FzZSAxOiQucHVzaChJdCksdXQucHVzaChVLnl5dGV4dCksVy5wdXNoKFUueXlsbG9jKSwkLnB1c2goUnRbMV0pLEl0PW51bGwsWj1VLnl5bGVuZyxLPVUueXl0ZXh0LGl0PVUueXlsaW5lbm8sUD1VLnl5bGxvYzticmVhaztjYXNlIDI6aWYodnQ9dGhpcy5wcm9kdWN0aW9uc19bUnRbMV1dWzFdLHB0LiQ9dXRbdXQubGVuZ3RoLXZ0XSxwdC5fJD17Zmlyc3RfbGluZTpXW1cubGVuZ3RoLSh2dHx8MSldLmZpcnN0X2xpbmUsbGFzdF9saW5lOldbVy5sZW5ndGgtMV0ubGFzdF9saW5lLGZpcnN0X2NvbHVtbjpXW1cubGVuZ3RoLSh2dHx8MSldLmZpcnN0X2NvbHVtbixsYXN0X2NvbHVtbjpXW1cubGVuZ3RoLTFdLmxhc3RfY29sdW1ufSxldCYmKHB0Ll8kLnJhbmdlPVtXW1cubGVuZ3RoLSh2dHx8MSldLnJhbmdlWzBdLFdbVy5sZW5ndGgtMV0ucmFuZ2VbMV1dKSxDdD10aGlzLnBlcmZvcm1BY3Rpb24uYXBwbHkocHQsW0ssWixpdCxGLnl5LFJ0WzFdLHV0LFddLmNvbmNhdChxKSksdHlwZW9mIEN0PCJ1IilyZXR1cm4gQ3Q7dnQmJigkPSQuc2xpY2UoMCwtMSp2dCoyKSx1dD11dC5zbGljZSgwLC0xKnZ0KSxXPVcuc2xpY2UoMCwtMSp2dCkpLCQucHVzaCh0aGlzLnByb2R1Y3Rpb25zX1tSdFsxXV1bMF0pLHV0LnB1c2gocHQuJCksVy5wdXNoKHB0Ll8kKSxUdD10dFskWyQubGVuZ3RoLTJdXVskWyQubGVuZ3RoLTFdXSwkLnB1c2goVHQpO2JyZWFrO2Nhc2UgMzpyZXR1cm4hMH19cmV0dXJuITB9fSx6PWZ1bmN0aW9uKCl7dmFyIGN0PXtFT0Y6MSxwYXJzZUVycm9yOmZ1bmN0aW9uKFksJCl7aWYodGhpcy55eS5wYXJzZXIpdGhpcy55eS5wYXJzZXIucGFyc2VFcnJvcihZLCQpO2Vsc2UgdGhyb3cgbmV3IEVycm9yKFkpfSxzZXRJbnB1dDpmdW5jdGlvbihKLFkpe3JldHVybiB0aGlzLnl5PVl8fHRoaXMueXl8fHt9LHRoaXMuX2lucHV0PUosdGhpcy5fbW9yZT10aGlzLl9iYWNrdHJhY2s9dGhpcy5kb25lPSExLHRoaXMueXlsaW5lbm89dGhpcy55eWxlbmc9MCx0aGlzLnl5dGV4dD10aGlzLm1hdGNoZWQ9dGhpcy5tYXRjaD0iIix0aGlzLmNvbmRpdGlvblN0YWNrPVsiSU5JVElBTCJdLHRoaXMueXlsbG9jPXtmaXJzdF9saW5lOjEsZmlyc3RfY29sdW1uOjAsbGFzdF9saW5lOjEsbGFzdF9jb2x1bW46MH0sdGhpcy5vcHRpb25zLnJhbmdlcyYmKHRoaXMueXlsbG9jLnJhbmdlPVswLDBdKSx0aGlzLm9mZnNldD0wLHRoaXN9LGlucHV0OmZ1bmN0aW9uKCl7dmFyIEo9dGhpcy5faW5wdXRbMF07dGhpcy55eXRleHQrPUosdGhpcy55eWxlbmcrKyx0aGlzLm9mZnNldCsrLHRoaXMubWF0Y2grPUosdGhpcy5tYXRjaGVkKz1KO3ZhciBZPUoubWF0Y2goLyg/OlxyXG4/fFxuKS4qL2cpO3JldHVybiBZPyh0aGlzLnl5bGluZW5vKyssdGhpcy55eWxsb2MubGFzdF9saW5lKyspOnRoaXMueXlsbG9jLmxhc3RfY29sdW1uKyssdGhpcy5vcHRpb25zLnJhbmdlcyYmdGhpcy55eWxsb2MucmFuZ2VbMV0rKyx0aGlzLl9pbnB1dD10aGlzLl9pbnB1dC5zbGljZSgxKSxKfSx1bnB1dDpmdW5jdGlvbihKKXt2YXIgWT1KLmxlbmd0aCwkPUouc3BsaXQoLyg/OlxyXG4/fFxuKS9nKTt0aGlzLl9pbnB1dD1KK3RoaXMuX2lucHV0LHRoaXMueXl0ZXh0PXRoaXMueXl0ZXh0LnN1YnN0cigwLHRoaXMueXl0ZXh0Lmxlbmd0aC1ZKSx0aGlzLm9mZnNldC09WTt2YXIgbHQ9dGhpcy5tYXRjaC5zcGxpdCgvKD86XHJcbj98XG4pL2cpO3RoaXMubWF0Y2g9dGhpcy5tYXRjaC5zdWJzdHIoMCx0aGlzLm1hdGNoLmxlbmd0aC0xKSx0aGlzLm1hdGNoZWQ9dGhpcy5tYXRjaGVkLnN1YnN0cigwLHRoaXMubWF0Y2hlZC5sZW5ndGgtMSksJC5sZW5ndGgtMSYmKHRoaXMueXlsaW5lbm8tPSQubGVuZ3RoLTEpO3ZhciB1dD10aGlzLnl5bGxvYy5yYW5nZTtyZXR1cm4gdGhpcy55eWxsb2M9e2ZpcnN0X2xpbmU6dGhpcy55eWxsb2MuZmlyc3RfbGluZSxsYXN0X2xpbmU6dGhpcy55eWxpbmVubysxLGZpcnN0X2NvbHVtbjp0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4sbGFzdF9jb2x1bW46JD8oJC5sZW5ndGg9PT1sdC5sZW5ndGg/dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uOjApK2x0W2x0Lmxlbmd0aC0kLmxlbmd0aF0ubGVuZ3RoLSRbMF0ubGVuZ3RoOnRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbi1ZfSx0aGlzLm9wdGlvbnMucmFuZ2VzJiYodGhpcy55eWxsb2MucmFuZ2U9W3V0WzBdLHV0WzBdK3RoaXMueXlsZW5nLVldKSx0aGlzLnl5bGVuZz10aGlzLnl5dGV4dC5sZW5ndGgsdGhpc30sbW9yZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9tb3JlPSEwLHRoaXN9LHJlamVjdDpmdW5jdGlvbigpe2lmKHRoaXMub3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIpdGhpcy5fYmFja3RyYWNrPSEwO2Vsc2UgcmV0dXJuIHRoaXMucGFyc2VFcnJvcigiTGV4aWNhbCBlcnJvciBvbiBsaW5lICIrKHRoaXMueXlsaW5lbm8rMSkrYC4gWW91IGNhbiBvbmx5IGludm9rZSByZWplY3QoKSBpbiB0aGUgbGV4ZXIgd2hlbiB0aGUgbGV4ZXIgaXMgb2YgdGhlIGJhY2t0cmFja2luZyBwZXJzdWFzaW9uIChvcHRpb25zLmJhY2t0cmFja19sZXhlciA9IHRydWUpLgpgK3RoaXMuc2hvd1Bvc2l0aW9uKCkse3RleHQ6IiIsdG9rZW46bnVsbCxsaW5lOnRoaXMueXlsaW5lbm99KTtyZXR1cm4gdGhpc30sbGVzczpmdW5jdGlvbihKKXt0aGlzLnVucHV0KHRoaXMubWF0Y2guc2xpY2UoSikpfSxwYXN0SW5wdXQ6ZnVuY3Rpb24oKXt2YXIgSj10aGlzLm1hdGNoZWQuc3Vic3RyKDAsdGhpcy5tYXRjaGVkLmxlbmd0aC10aGlzLm1hdGNoLmxlbmd0aCk7cmV0dXJuKEoubGVuZ3RoPjIwPyIuLi4iOiIiKStKLnN1YnN0cigtMjApLnJlcGxhY2UoL1xuL2csIiIpfSx1cGNvbWluZ0lucHV0OmZ1bmN0aW9uKCl7dmFyIEo9dGhpcy5tYXRjaDtyZXR1cm4gSi5sZW5ndGg8MjAmJihKKz10aGlzLl9pbnB1dC5zdWJzdHIoMCwyMC1KLmxlbmd0aCkpLChKLnN1YnN0cigwLDIwKSsoSi5sZW5ndGg+MjA/Ii4uLiI6IiIpKS5yZXBsYWNlKC9cbi9nLCIiKX0sc2hvd1Bvc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIEo9dGhpcy5wYXN0SW5wdXQoKSxZPW5ldyBBcnJheShKLmxlbmd0aCsxKS5qb2luKCItIik7cmV0dXJuIEordGhpcy51cGNvbWluZ0lucHV0KCkrYApgK1krIl4ifSx0ZXN0X21hdGNoOmZ1bmN0aW9uKEosWSl7dmFyICQsbHQsdXQ7aWYodGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlciYmKHV0PXt5eWxpbmVubzp0aGlzLnl5bGluZW5vLHl5bGxvYzp7Zmlyc3RfbGluZTp0aGlzLnl5bGxvYy5maXJzdF9saW5lLGxhc3RfbGluZTp0aGlzLmxhc3RfbGluZSxmaXJzdF9jb2x1bW46dGhpcy55eWxsb2MuZmlyc3RfY29sdW1uLGxhc3RfY29sdW1uOnRoaXMueXlsbG9jLmxhc3RfY29sdW1ufSx5eXRleHQ6dGhpcy55eXRleHQsbWF0Y2g6dGhpcy5tYXRjaCxtYXRjaGVzOnRoaXMubWF0Y2hlcyxtYXRjaGVkOnRoaXMubWF0Y2hlZCx5eWxlbmc6dGhpcy55eWxlbmcsb2Zmc2V0OnRoaXMub2Zmc2V0LF9tb3JlOnRoaXMuX21vcmUsX2lucHV0OnRoaXMuX2lucHV0LHl5OnRoaXMueXksY29uZGl0aW9uU3RhY2s6dGhpcy5jb25kaXRpb25TdGFjay5zbGljZSgwKSxkb25lOnRoaXMuZG9uZX0sdGhpcy5vcHRpb25zLnJhbmdlcyYmKHV0Lnl5bGxvYy5yYW5nZT10aGlzLnl5bGxvYy5yYW5nZS5zbGljZSgwKSkpLGx0PUpbMF0ubWF0Y2goLyg/OlxyXG4/fFxuKS4qL2cpLGx0JiYodGhpcy55eWxpbmVubys9bHQubGVuZ3RoKSx0aGlzLnl5bGxvYz17Zmlyc3RfbGluZTp0aGlzLnl5bGxvYy5sYXN0X2xpbmUsbGFzdF9saW5lOnRoaXMueXlsaW5lbm8rMSxmaXJzdF9jb2x1bW46dGhpcy55eWxsb2MubGFzdF9jb2x1bW4sbGFzdF9jb2x1bW46bHQ/bHRbbHQubGVuZ3RoLTFdLmxlbmd0aC1sdFtsdC5sZW5ndGgtMV0ubWF0Y2goL1xyP1xuPy8pWzBdLmxlbmd0aDp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbitKWzBdLmxlbmd0aH0sdGhpcy55eXRleHQrPUpbMF0sdGhpcy5tYXRjaCs9SlswXSx0aGlzLm1hdGNoZXM9Six0aGlzLnl5bGVuZz10aGlzLnl5dGV4dC5sZW5ndGgsdGhpcy5vcHRpb25zLnJhbmdlcyYmKHRoaXMueXlsbG9jLnJhbmdlPVt0aGlzLm9mZnNldCx0aGlzLm9mZnNldCs9dGhpcy55eWxlbmddKSx0aGlzLl9tb3JlPSExLHRoaXMuX2JhY2t0cmFjaz0hMSx0aGlzLl9pbnB1dD10aGlzLl9pbnB1dC5zbGljZShKWzBdLmxlbmd0aCksdGhpcy5tYXRjaGVkKz1KWzBdLCQ9dGhpcy5wZXJmb3JtQWN0aW9uLmNhbGwodGhpcyx0aGlzLnl5LHRoaXMsWSx0aGlzLmNvbmRpdGlvblN0YWNrW3RoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTFdKSx0aGlzLmRvbmUmJnRoaXMuX2lucHV0JiYodGhpcy5kb25lPSExKSwkKXJldHVybiAkO2lmKHRoaXMuX2JhY2t0cmFjayl7Zm9yKHZhciBXIGluIHV0KXRoaXNbV109dXRbV107cmV0dXJuITF9cmV0dXJuITF9LG5leHQ6ZnVuY3Rpb24oKXtpZih0aGlzLmRvbmUpcmV0dXJuIHRoaXMuRU9GO3RoaXMuX2lucHV0fHwodGhpcy5kb25lPSEwKTt2YXIgSixZLCQsbHQ7dGhpcy5fbW9yZXx8KHRoaXMueXl0ZXh0PSIiLHRoaXMubWF0Y2g9IiIpO2Zvcih2YXIgdXQ9dGhpcy5fY3VycmVudFJ1bGVzKCksVz0wO1c8dXQubGVuZ3RoO1crKylpZigkPXRoaXMuX2lucHV0Lm1hdGNoKHRoaXMucnVsZXNbdXRbV11dKSwkJiYoIVl8fCRbMF0ubGVuZ3RoPllbMF0ubGVuZ3RoKSl7aWYoWT0kLGx0PVcsdGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlcil7aWYoSj10aGlzLnRlc3RfbWF0Y2goJCx1dFtXXSksSiE9PSExKXJldHVybiBKO2lmKHRoaXMuX2JhY2t0cmFjayl7WT0hMTtjb250aW51ZX1lbHNlIHJldHVybiExfWVsc2UgaWYoIXRoaXMub3B0aW9ucy5mbGV4KWJyZWFrfXJldHVybiBZPyhKPXRoaXMudGVzdF9tYXRjaChZLHV0W2x0XSksSiE9PSExP0o6ITEpOnRoaXMuX2lucHV0PT09IiI/dGhpcy5FT0Y6dGhpcy5wYXJzZUVycm9yKCJMZXhpY2FsIGVycm9yIG9uIGxpbmUgIisodGhpcy55eWxpbmVubysxKStgLiBVbnJlY29nbml6ZWQgdGV4dC4KYCt0aGlzLnNob3dQb3NpdGlvbigpLHt0ZXh0OiIiLHRva2VuOm51bGwsbGluZTp0aGlzLnl5bGluZW5vfSl9LGxleDpmdW5jdGlvbigpe3ZhciBZPXRoaXMubmV4dCgpO3JldHVybiBZfHx0aGlzLmxleCgpfSxiZWdpbjpmdW5jdGlvbihZKXt0aGlzLmNvbmRpdGlvblN0YWNrLnB1c2goWSl9LHBvcFN0YXRlOmZ1bmN0aW9uKCl7dmFyIFk9dGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMTtyZXR1cm4gWT4wP3RoaXMuY29uZGl0aW9uU3RhY2sucG9wKCk6dGhpcy5jb25kaXRpb25TdGFja1swXX0sX2N1cnJlbnRSdWxlczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCYmdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXT90aGlzLmNvbmRpdGlvbnNbdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXV0ucnVsZXM6dGhpcy5jb25kaXRpb25zLklOSVRJQUwucnVsZXN9LHRvcFN0YXRlOmZ1bmN0aW9uKFkpe3JldHVybiBZPXRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTEtTWF0aC5hYnMoWXx8MCksWT49MD90aGlzLmNvbmRpdGlvblN0YWNrW1ldOiJJTklUSUFMIn0scHVzaFN0YXRlOmZ1bmN0aW9uKFkpe3RoaXMuYmVnaW4oWSl9LHN0YXRlU3RhY2tTaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RofSxvcHRpb25zOnsiY2FzZS1pbnNlbnNpdGl2ZSI6ITB9LHBlcmZvcm1BY3Rpb246ZnVuY3Rpb24oWSwkLGx0LHV0KXtzd2l0Y2gobHQpe2Nhc2UgMDpyZXR1cm4gNDE7Y2FzZSAxOnJldHVybiA0MjtjYXNlIDI6cmV0dXJuIDQzO2Nhc2UgMzpyZXR1cm4gNDQ7Y2FzZSA0OnJldHVybiB0aGlzLmJlZ2luKCJvcGVuX2RpcmVjdGl2ZSIpLDUwO2Nhc2UgNTpyZXR1cm4gdGhpcy5iZWdpbigidHlwZV9kaXJlY3RpdmUiKSw1MTtjYXNlIDY6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSx0aGlzLmJlZ2luKCJhcmdfZGlyZWN0aXZlIiksMzk7Y2FzZSA3OnJldHVybiB0aGlzLnBvcFN0YXRlKCksdGhpcy5wb3BTdGF0ZSgpLDUzO2Nhc2UgODpyZXR1cm4gNTI7Y2FzZSA5OmJyZWFrO2Nhc2UgMTA6YnJlYWs7Y2FzZSAxMTpyZXR1cm4gNTtjYXNlIDEyOmJyZWFrO2Nhc2UgMTM6YnJlYWs7Y2FzZSAxNDpicmVhaztjYXNlIDE1OmJyZWFrO2Nhc2UgMTY6cmV0dXJuIHRoaXMucHVzaFN0YXRlKCJTQ0FMRSIpLDE1O2Nhc2UgMTc6cmV0dXJuIDE2O2Nhc2UgMTg6dGhpcy5wb3BTdGF0ZSgpO2JyZWFrO2Nhc2UgMTk6cmV0dXJuIHRoaXMuYmVnaW4oImFjY190aXRsZSIpLDMxO2Nhc2UgMjA6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSwiYWNjX3RpdGxlX3ZhbHVlIjtjYXNlIDIxOnJldHVybiB0aGlzLmJlZ2luKCJhY2NfZGVzY3IiKSwzMztjYXNlIDIyOnJldHVybiB0aGlzLnBvcFN0YXRlKCksImFjY19kZXNjcl92YWx1ZSI7Y2FzZSAyMzp0aGlzLmJlZ2luKCJhY2NfZGVzY3JfbXVsdGlsaW5lIik7YnJlYWs7Y2FzZSAyNDp0aGlzLnBvcFN0YXRlKCk7YnJlYWs7Y2FzZSAyNTpyZXR1cm4iYWNjX2Rlc2NyX211bHRpbGluZV92YWx1ZSI7Y2FzZSAyNjp0aGlzLnB1c2hTdGF0ZSgiU1RBVEUiKTticmVhaztjYXNlIDI3OnJldHVybiB0aGlzLnBvcFN0YXRlKCksJC55eXRleHQ9JC55eXRleHQuc2xpY2UoMCwtOCkudHJpbSgpLDIzO2Nhc2UgMjg6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSwkLnl5dGV4dD0kLnl5dGV4dC5zbGljZSgwLC04KS50cmltKCksMjQ7Y2FzZSAyOTpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLCQueXl0ZXh0PSQueXl0ZXh0LnNsaWNlKDAsLTEwKS50cmltKCksMjU7Y2FzZSAzMDpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLCQueXl0ZXh0PSQueXl0ZXh0LnNsaWNlKDAsLTgpLnRyaW0oKSwyMztjYXNlIDMxOnJldHVybiB0aGlzLnBvcFN0YXRlKCksJC55eXRleHQ9JC55eXRleHQuc2xpY2UoMCwtOCkudHJpbSgpLDI0O2Nhc2UgMzI6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSwkLnl5dGV4dD0kLnl5dGV4dC5zbGljZSgwLC0xMCkudHJpbSgpLDI1O2Nhc2UgMzM6cmV0dXJuIDQxO2Nhc2UgMzQ6cmV0dXJuIDQyO2Nhc2UgMzU6cmV0dXJuIDQzO2Nhc2UgMzY6cmV0dXJuIDQ0O2Nhc2UgMzc6dGhpcy5iZWdpbigiU1RBVEVfU1RSSU5HIik7YnJlYWs7Y2FzZSAzODpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLHRoaXMucHVzaFN0YXRlKCJTVEFURV9JRCIpLCJBUyI7Y2FzZSAzOTpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLCJJRCI7Y2FzZSA0MDp0aGlzLnBvcFN0YXRlKCk7YnJlYWs7Y2FzZSA0MTpyZXR1cm4iU1RBVEVfREVTQ1IiO2Nhc2UgNDI6cmV0dXJuIDE3O2Nhc2UgNDM6dGhpcy5wb3BTdGF0ZSgpO2JyZWFrO2Nhc2UgNDQ6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSx0aGlzLnB1c2hTdGF0ZSgic3RydWN0IiksMTg7Y2FzZSA0NTpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLDE5O2Nhc2UgNDY6YnJlYWs7Y2FzZSA0NzpyZXR1cm4gdGhpcy5iZWdpbigiTk9URSIpLDI3O2Nhc2UgNDg6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSx0aGlzLnB1c2hTdGF0ZSgiTk9URV9JRCIpLDQ4O2Nhc2UgNDk6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSx0aGlzLnB1c2hTdGF0ZSgiTk9URV9JRCIpLDQ5O2Nhc2UgNTA6dGhpcy5wb3BTdGF0ZSgpLHRoaXMucHVzaFN0YXRlKCJGTE9BVElOR19OT1RFIik7YnJlYWs7Y2FzZSA1MTpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLHRoaXMucHVzaFN0YXRlKCJGTE9BVElOR19OT1RFX0lEIiksIkFTIjtjYXNlIDUyOmJyZWFrO2Nhc2UgNTM6cmV0dXJuIk5PVEVfVEVYVCI7Y2FzZSA1NDpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLCJJRCI7Y2FzZSA1NTpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLHRoaXMucHVzaFN0YXRlKCJOT1RFX1RFWFQiKSwyMjtjYXNlIDU2OnJldHVybiB0aGlzLnBvcFN0YXRlKCksJC55eXRleHQ9JC55eXRleHQuc3Vic3RyKDIpLnRyaW0oKSwyOTtjYXNlIDU3OnJldHVybiB0aGlzLnBvcFN0YXRlKCksJC55eXRleHQ9JC55eXRleHQuc2xpY2UoMCwtOCkudHJpbSgpLDI5O2Nhc2UgNTg6cmV0dXJuIDc7Y2FzZSA1OTpyZXR1cm4gNztjYXNlIDYwOnJldHVybiAxNDtjYXNlIDYxOnJldHVybiA0NztjYXNlIDYyOnJldHVybiAyMjtjYXNlIDYzOnJldHVybiAkLnl5dGV4dD0kLnl5dGV4dC50cmltKCksMTI7Y2FzZSA2NDpyZXR1cm4gMTM7Y2FzZSA2NTpyZXR1cm4gMjY7Y2FzZSA2NjpyZXR1cm4gNTtjYXNlIDY3OnJldHVybiJJTlZBTElEIn19LHJ1bGVzOlsvXig/Oi4qZGlyZWN0aW9uXHMrVEJbXlxuXSopL2ksL14oPzouKmRpcmVjdGlvblxzK0JUW15cbl0qKS9pLC9eKD86LipkaXJlY3Rpb25ccytSTFteXG5dKikvaSwvXig/Oi4qZGlyZWN0aW9uXHMrTFJbXlxuXSopL2ksL14oPzolJVx7KS9pLC9eKD86KCg/Oig/IVx9JSUpW146Ll0pKikpL2ksL14oPzo6KS9pLC9eKD86XH0lJSkvaSwvXig/OigoPzooPyFcfSUlKS58XG4pKikpL2ksL14oPzolJSg/IVx7KVteXG5dKikvaSwvXig/OlteXH1dJSVbXlxuXSopL2ksL14oPzpbXG5dKykvaSwvXig/Oltcc10rKS9pLC9eKD86KCg/IVxuKVxzKSspL2ksL14oPzojW15cbl0qKS9pLC9eKD86JVteXG5dKikvaSwvXig/OnNjYWxlXHMrKS9pLC9eKD86XGQrKS9pLC9eKD86XHMrd2lkdGhcYikvaSwvXig/OmFjY1RpdGxlXHMqOlxzKikvaSwvXig/Oig/IVxufHwpKlteXG5dKikvaSwvXig/OmFjY0Rlc2NyXHMqOlxzKikvaSwvXig/Oig/IVxufHwpKlteXG5dKikvaSwvXig/OmFjY0Rlc2NyXHMqXHtccyopL2ksL14oPzpbXH1dKS9pLC9eKD86W15cfV0qKS9pLC9eKD86c3RhdGVccyspL2ksL14oPzouKjw8Zm9yaz4+KS9pLC9eKD86Lio8PGpvaW4+PikvaSwvXig/Oi4qPDxjaG9pY2U+PikvaSwvXig/Oi4qXFtcW2ZvcmtcXVxdKS9pLC9eKD86LipcW1xbam9pblxdXF0pL2ksL14oPzouKlxbXFtjaG9pY2VcXVxdKS9pLC9eKD86LipkaXJlY3Rpb25ccytUQlteXG5dKikvaSwvXig/Oi4qZGlyZWN0aW9uXHMrQlRbXlxuXSopL2ksL14oPzouKmRpcmVjdGlvblxzK1JMW15cbl0qKS9pLC9eKD86LipkaXJlY3Rpb25ccytMUlteXG5dKikvaSwvXig/OlsiXSkvaSwvXig/OlxzKmFzXHMrKS9pLC9eKD86W15cblx7XSopL2ksL14oPzpbIl0pL2ksL14oPzpbXiJdKikvaSwvXig/OlteXG5cc1x7XSspL2ksL14oPzpcbikvaSwvXig/Olx7KS9pLC9eKD86XH0pL2ksL14oPzpbXG5dKS9pLC9eKD86bm90ZVxzKykvaSwvXig/OmxlZnQgb2ZcYikvaSwvXig/OnJpZ2h0IG9mXGIpL2ksL14oPzoiKS9pLC9eKD86XHMqYXNccyopL2ksL14oPzpbIl0pL2ksL14oPzpbXiJdKikvaSwvXig/OlteXG5dKikvaSwvXig/OlxzKlteOlxuXHNcLV0rKS9pLC9eKD86XHMqOlteOlxuO10rKS9pLC9eKD86W1xzXFNdKj9lbmQgbm90ZVxiKS9pLC9eKD86c3RhdGVEaWFncmFtXHMrKS9pLC9eKD86c3RhdGVEaWFncmFtLXYyXHMrKS9pLC9eKD86aGlkZSBlbXB0eSBkZXNjcmlwdGlvblxiKS9pLC9eKD86XFtcKlxdKS9pLC9eKD86W146XG5cc1wtXHtdKykvaSwvXig/OlxzKjpbXjpcbjtdKykvaSwvXig/Oi0tPikvaSwvXig/Oi0tKS9pLC9eKD86JCkvaSwvXig/Oi4pL2ldLGNvbmRpdGlvbnM6e0xJTkU6e3J1bGVzOlsxMywxNF0saW5jbHVzaXZlOiExfSxjbG9zZV9kaXJlY3RpdmU6e3J1bGVzOlsxMywxNF0saW5jbHVzaXZlOiExfSxhcmdfZGlyZWN0aXZlOntydWxlczpbNyw4LDEzLDE0XSxpbmNsdXNpdmU6ITF9LHR5cGVfZGlyZWN0aXZlOntydWxlczpbNiw3LDEzLDE0XSxpbmNsdXNpdmU6ITF9LG9wZW5fZGlyZWN0aXZlOntydWxlczpbNSwxMywxNF0saW5jbHVzaXZlOiExfSxzdHJ1Y3Q6e3J1bGVzOlsxMywxNCwyNiwzMywzNCwzNSwzNiw0NSw0Niw0Nyw2MSw2Miw2Myw2NCw2NV0saW5jbHVzaXZlOiExfSxGTE9BVElOR19OT1RFX0lEOntydWxlczpbNTRdLGluY2x1c2l2ZTohMX0sRkxPQVRJTkdfTk9URTp7cnVsZXM6WzUxLDUyLDUzXSxpbmNsdXNpdmU6ITF9LE5PVEVfVEVYVDp7cnVsZXM6WzU2LDU3XSxpbmNsdXNpdmU6ITF9LE5PVEVfSUQ6e3J1bGVzOls1NV0saW5jbHVzaXZlOiExfSxOT1RFOntydWxlczpbNDgsNDksNTBdLGluY2x1c2l2ZTohMX0sYWNjX2Rlc2NyX211bHRpbGluZTp7cnVsZXM6WzI0LDI1XSxpbmNsdXNpdmU6ITF9LGFjY19kZXNjcjp7cnVsZXM6WzIyXSxpbmNsdXNpdmU6ITF9LGFjY190aXRsZTp7cnVsZXM6WzIwXSxpbmNsdXNpdmU6ITF9LFNDQUxFOntydWxlczpbMTcsMThdLGluY2x1c2l2ZTohMX0sQUxJQVM6e3J1bGVzOltdLGluY2x1c2l2ZTohMX0sU1RBVEVfSUQ6e3J1bGVzOlszOV0saW5jbHVzaXZlOiExfSxTVEFURV9TVFJJTkc6e3J1bGVzOls0MCw0MV0saW5jbHVzaXZlOiExfSxGT1JLX1NUQVRFOntydWxlczpbXSxpbmNsdXNpdmU6ITF9LFNUQVRFOntydWxlczpbMTMsMTQsMjcsMjgsMjksMzAsMzEsMzIsMzcsMzgsNDIsNDMsNDRdLGluY2x1c2l2ZTohMX0sSUQ6e3J1bGVzOlsxMywxNF0saW5jbHVzaXZlOiExfSxJTklUSUFMOntydWxlczpbMCwxLDIsMyw0LDksMTAsMTEsMTIsMTQsMTUsMTYsMTksMjEsMjMsMjYsNDQsNDcsNTgsNTksNjAsNjEsNjIsNjMsNjQsNjYsNjddLGluY2x1c2l2ZTohMH19fTtyZXR1cm4gY3R9KCk7Ti5sZXhlcj16O2Z1bmN0aW9uIFgoKXt0aGlzLnl5PXt9fXJldHVybiBYLnByb3RvdHlwZT1OLE4uUGFyc2VyPVgsbmV3IFh9KCk7cDAucGFyc2VyPXAwO2NvbnN0IGZhdD0odCxlKT0+e3ZhciByO3JldHVybigocj1lPT1udWxsP3ZvaWQgMDplLnN0YXRlKT09bnVsbD92b2lkIDA6ci5kZWZhdWx0UmVuZGVyZXIpPT09ImRhZ3JlLXdyYXBwZXIiPyExOnQubWF0Y2goL15ccypzdGF0ZURpYWdyYW0vKSE9PW51bGx9LGRhdD0odCxlKT0+e3ZhciByO3JldHVybiEhKHQubWF0Y2goL15ccypzdGF0ZURpYWdyYW0tdjIvKSE9PW51bGx8fHQubWF0Y2goL15ccypzdGF0ZURpYWdyYW0vKSYmKChyPWU9PW51bGw/dm9pZCAwOmUuc3RhdGUpPT1udWxsP3ZvaWQgMDpyLmRlZmF1bHRSZW5kZXJlcik9PT0iZGFncmUtd3JhcHBlciIpfSxnMD10PT5KU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHQpKTtsZXQgeTA9W107Y29uc3QgcGF0PWZ1bmN0aW9uKHQsZSxyKXtYZS5wYXJzZURpcmVjdGl2ZSh0aGlzLHQsZSxyKX0sZ2F0PXQ9PntILmluZm8oIlNldHRpbmcgcm9vdCBkb2MiLHQpLHkwPXR9LHlhdD0oKT0+eTAsbTA9KHQsZSxyKT0+e2lmKGUuc3RtdD09PSJyZWxhdGlvbiIpbTAodCxlLnN0YXRlMSwhMCksbTAodCxlLnN0YXRlMiwhMSk7ZWxzZSBpZihlLnN0bXQ9PT0ic3RhdGUiJiZlLmlkPT09IlsqXSImJihlLmlkPXI/dC5pZCsiX3N0YXJ0Ijp0LmlkKyJfZW5kIixlLnN0YXJ0PXIpLGUuZG9jKXtjb25zdCBuPVtdO2xldCBpPTAsYT1bXTtmb3IoaT0wO2k8ZS5kb2MubGVuZ3RoO2krKylpZihlLmRvY1tpXS50eXBlPT09ImRpdmlkZXIiKXtjb25zdCBzPWcwKGUuZG9jW2ldKTtzLmRvYz1nMChhKSxuLnB1c2gocyksYT1bXX1lbHNlIGEucHVzaChlLmRvY1tpXSk7aWYobi5sZW5ndGg+MCYmYS5sZW5ndGg+MCl7Y29uc3Qgcz17c3RtdDoic3RhdGUiLGlkOm93KCksdHlwZToiZGl2aWRlciIsZG9jOmcwKGEpfTtuLnB1c2goZzAocykpLGUuZG9jPW59ZS5kb2MuZm9yRWFjaChzPT5tMChlLHMsITApKX19LG1hdD0oKT0+KG0wKHtpZDoicm9vdCJ9LHtpZDoicm9vdCIsZG9jOnkwfSwhMCkse2lkOiJyb290Iixkb2M6eTB9KSxiYXQ9dD0+e2xldCBlO3QuZG9jP2U9dC5kb2M6ZT10LEguaW5mbyhlKSxMTCghMCksSC5pbmZvKCJFeHRyYWN0IixlKSxlLmZvckVhY2gocj0+e3Iuc3RtdD09PSJzdGF0ZSImJl8wKHIuaWQsci50eXBlLHIuZG9jLHIuZGVzY3JpcHRpb24sci5ub3RlKSxyLnN0bXQ9PT0icmVsYXRpb24iJiZSTChyLnN0YXRlMS5pZCxyLnN0YXRlMi5pZCxyLmRlc2NyaXB0aW9uKX0pfSxNTD0oKT0+KHtyZWxhdGlvbnM6W10sc3RhdGVzOnt9LGRvY3VtZW50czp7fX0pO2xldCBwdT17cm9vdDpNTCgpfSxXcj1wdS5yb290LGIwPTA7Y29uc3QgXzA9ZnVuY3Rpb24odCxlLHIsbixpKXt0eXBlb2YgV3Iuc3RhdGVzW3RdPiJ1Ij9Xci5zdGF0ZXNbdF09e2lkOnQsZGVzY3JpcHRpb25zOltdLHR5cGU6ZSxkb2M6cixub3RlOml9OihXci5zdGF0ZXNbdF0uZG9jfHwoV3Iuc3RhdGVzW3RdLmRvYz1yKSxXci5zdGF0ZXNbdF0udHlwZXx8KFdyLnN0YXRlc1t0XS50eXBlPWUpKSxuJiYoSC5pbmZvKCJBZGRpbmcgc3RhdGUgIix0LG4pLHR5cGVvZiBuPT0ic3RyaW5nIiYmSUwodCxuLnRyaW0oKSksdHlwZW9mIG49PSJvYmplY3QiJiZuLmZvckVhY2goYT0+SUwodCxhLnRyaW0oKSkpKSxpJiYoV3Iuc3RhdGVzW3RdLm5vdGU9aSxXci5zdGF0ZXNbdF0ubm90ZS50ZXh0PXBlLnNhbml0aXplVGV4dChXci5zdGF0ZXNbdF0ubm90ZS50ZXh0LG50KCkpKX0sTEw9ZnVuY3Rpb24odCl7cHU9e3Jvb3Q6TUwoKX0sV3I9cHUucm9vdCxXcj1wdS5yb290LGIwPTAsQkw9W10sdHx8Y2koKX0sX2F0PWZ1bmN0aW9uKHQpe3JldHVybiBXci5zdGF0ZXNbdF19LHZhdD1mdW5jdGlvbigpe3JldHVybiBXci5zdGF0ZXN9LHhhdD1mdW5jdGlvbigpe0guaW5mbygiRG9jdW1lbnRzID0gIixwdSl9LGthdD1mdW5jdGlvbigpe3JldHVybiBXci5yZWxhdGlvbnN9LFJMPWZ1bmN0aW9uKHQsZSxyKXtsZXQgbj10LGk9ZSxhPSJkZWZhdWx0IixzPSJkZWZhdWx0Ijt0PT09IlsqXSImJihiMCsrLG49InN0YXJ0IitiMCxhPSJzdGFydCIpLGU9PT0iWypdIiYmKGk9ImVuZCIrYjAscz0iZW5kIiksXzAobixhKSxfMChpLHMpLFdyLnJlbGF0aW9ucy5wdXNoKHtpZDE6bixpZDI6aSx0aXRsZTpwZS5zYW5pdGl6ZVRleHQocixudCgpKX0pfSxJTD1mdW5jdGlvbih0LGUpe2NvbnN0IHI9V3Iuc3RhdGVzW3RdO2xldCBuPWU7blswXT09PSI6IiYmKG49bi5zdWJzdHIoMSkudHJpbSgpKSxyLmRlc2NyaXB0aW9ucy5wdXNoKHBlLnNhbml0aXplVGV4dChuLG50KCkpKX0sd2F0PWZ1bmN0aW9uKHQpe3JldHVybiB0LnN1YnN0cmluZygwLDEpPT09IjoiP3Quc3Vic3RyKDIpLnRyaW0oKTp0LnRyaW0oKX0sVGF0PXtMSU5FOjAsRE9UVEVEX0xJTkU6MX07bGV0IE5MPTA7Y29uc3QgRWF0PSgpPT4oTkwrKywiZGl2aWRlci1pZC0iK05MKTtsZXQgQkw9W107Y29uc3QgQ2F0PSgpPT5CTDtsZXQgREw9IlRCIjtjb25zdCBtYT17cGFyc2VEaXJlY3RpdmU6cGF0LGdldENvbmZpZzooKT0+bnQoKS5zdGF0ZSxhZGRTdGF0ZTpfMCxjbGVhcjpMTCxnZXRTdGF0ZTpfYXQsZ2V0U3RhdGVzOnZhdCxnZXRSZWxhdGlvbnM6a2F0LGdldENsYXNzZXM6Q2F0LGdldERpcmVjdGlvbjooKT0+REwsYWRkUmVsYXRpb246UkwsZ2V0RGl2aWRlcklkOkVhdCxzZXREaXJlY3Rpb246dD0+e0RMPXR9LGNsZWFudXBMYWJlbDp3YXQsbGluZVR5cGU6VGF0LHJlbGF0aW9uVHlwZTp7QUdHUkVHQVRJT046MCxFWFRFTlNJT046MSxDT01QT1NJVElPTjoyLERFUEVOREVOQ1k6M30sbG9nRG9jdW1lbnRzOnhhdCxnZXRSb290RG9jOnlhdCxzZXRSb290RG9jOmdhdCxnZXRSb290RG9jVjI6bWF0LGV4dHJhY3Q6YmF0LHRyaW1Db2xvbjp0PT50JiZ0WzBdPT09IjoiP3Quc3Vic3RyKDEpLnRyaW0oKTp0LnRyaW0oKSxnZXRBY2NUaXRsZTp1aSxzZXRBY2NUaXRsZTpZbixnZXRBY2NEZXNjcmlwdGlvbjpmaSxzZXRBY2NEZXNjcmlwdGlvbjpoaX0sU2F0PXQ9PnQuYXBwZW5kKCJjaXJjbGUiKS5hdHRyKCJjbGFzcyIsInN0YXJ0LXN0YXRlIikuYXR0cigiciIsbnQoKS5zdGF0ZS5zaXplVW5pdCkuYXR0cigiY3giLG50KCkuc3RhdGUucGFkZGluZytudCgpLnN0YXRlLnNpemVVbml0KS5hdHRyKCJjeSIsbnQoKS5zdGF0ZS5wYWRkaW5nK250KCkuc3RhdGUuc2l6ZVVuaXQpLEFhdD10PT50LmFwcGVuZCgibGluZSIpLnN0eWxlKCJzdHJva2UiLCJncmV5Iikuc3R5bGUoInN0cm9rZS1kYXNoYXJyYXkiLCIzIikuYXR0cigieDEiLG50KCkuc3RhdGUudGV4dEhlaWdodCkuYXR0cigiY2xhc3MiLCJkaXZpZGVyIikuYXR0cigieDIiLG50KCkuc3RhdGUudGV4dEhlaWdodCoyKS5hdHRyKCJ5MSIsMCkuYXR0cigieTIiLDApLE1hdD0odCxlKT0+e2NvbnN0IHI9dC5hcHBlbmQoInRleHQiKS5hdHRyKCJ4IiwyKm50KCkuc3RhdGUucGFkZGluZykuYXR0cigieSIsbnQoKS5zdGF0ZS50ZXh0SGVpZ2h0KzIqbnQoKS5zdGF0ZS5wYWRkaW5nKS5hdHRyKCJmb250LXNpemUiLG50KCkuc3RhdGUuZm9udFNpemUpLmF0dHIoImNsYXNzIiwic3RhdGUtdGl0bGUiKS50ZXh0KGUuaWQpLG49ci5ub2RlKCkuZ2V0QkJveCgpO3JldHVybiB0Lmluc2VydCgicmVjdCIsIjpmaXJzdC1jaGlsZCIpLmF0dHIoIngiLG50KCkuc3RhdGUucGFkZGluZykuYXR0cigieSIsbnQoKS5zdGF0ZS5wYWRkaW5nKS5hdHRyKCJ3aWR0aCIsbi53aWR0aCsyKm50KCkuc3RhdGUucGFkZGluZykuYXR0cigiaGVpZ2h0IixuLmhlaWdodCsyKm50KCkuc3RhdGUucGFkZGluZykuYXR0cigicngiLG50KCkuc3RhdGUucmFkaXVzKSxyfSxMYXQ9KHQsZSk9Pntjb25zdCByPWZ1bmN0aW9uKGYscCxtKXtjb25zdCBfPWYuYXBwZW5kKCJ0c3BhbiIpLmF0dHIoIngiLDIqbnQoKS5zdGF0ZS5wYWRkaW5nKS50ZXh0KHApO218fF8uYXR0cigiZHkiLG50KCkuc3RhdGUudGV4dEhlaWdodCl9LGk9dC5hcHBlbmQoInRleHQiKS5hdHRyKCJ4IiwyKm50KCkuc3RhdGUucGFkZGluZykuYXR0cigieSIsbnQoKS5zdGF0ZS50ZXh0SGVpZ2h0KzEuMypudCgpLnN0YXRlLnBhZGRpbmcpLmF0dHIoImZvbnQtc2l6ZSIsbnQoKS5zdGF0ZS5mb250U2l6ZSkuYXR0cigiY2xhc3MiLCJzdGF0ZS10aXRsZSIpLnRleHQoZS5kZXNjcmlwdGlvbnNbMF0pLm5vZGUoKS5nZXRCQm94KCksYT1pLmhlaWdodCxzPXQuYXBwZW5kKCJ0ZXh0IikuYXR0cigieCIsbnQoKS5zdGF0ZS5wYWRkaW5nKS5hdHRyKCJ5IixhK250KCkuc3RhdGUucGFkZGluZyouNCtudCgpLnN0YXRlLmRpdmlkZXJNYXJnaW4rbnQoKS5zdGF0ZS50ZXh0SGVpZ2h0KS5hdHRyKCJjbGFzcyIsInN0YXRlLWRlc2NyaXB0aW9uIik7bGV0IG89ITAsbD0hMDtlLmRlc2NyaXB0aW9ucy5mb3JFYWNoKGZ1bmN0aW9uKGYpe298fChyKHMsZixsKSxsPSExKSxvPSExfSk7Y29uc3QgdT10LmFwcGVuZCgibGluZSIpLmF0dHIoIngxIixudCgpLnN0YXRlLnBhZGRpbmcpLmF0dHIoInkxIixudCgpLnN0YXRlLnBhZGRpbmcrYStudCgpLnN0YXRlLmRpdmlkZXJNYXJnaW4vMikuYXR0cigieTIiLG50KCkuc3RhdGUucGFkZGluZythK250KCkuc3RhdGUuZGl2aWRlck1hcmdpbi8yKS5hdHRyKCJjbGFzcyIsImRlc2NyLWRpdmlkZXIiKSxoPXMubm9kZSgpLmdldEJCb3goKSxkPU1hdGgubWF4KGgud2lkdGgsaS53aWR0aCk7cmV0dXJuIHUuYXR0cigieDIiLGQrMypudCgpLnN0YXRlLnBhZGRpbmcpLHQuaW5zZXJ0KCJyZWN0IiwiOmZpcnN0LWNoaWxkIikuYXR0cigieCIsbnQoKS5zdGF0ZS5wYWRkaW5nKS5hdHRyKCJ5IixudCgpLnN0YXRlLnBhZGRpbmcpLmF0dHIoIndpZHRoIixkKzIqbnQoKS5zdGF0ZS5wYWRkaW5nKS5hdHRyKCJoZWlnaHQiLGguaGVpZ2h0K2ErMipudCgpLnN0YXRlLnBhZGRpbmcpLmF0dHIoInJ4IixudCgpLnN0YXRlLnJhZGl1cyksdH0sUmF0PSh0LGUscik9Pntjb25zdCBuPW50KCkuc3RhdGUucGFkZGluZyxpPTIqbnQoKS5zdGF0ZS5wYWRkaW5nLGE9dC5ub2RlKCkuZ2V0QkJveCgpLHM9YS53aWR0aCxvPWEueCxsPXQuYXBwZW5kKCJ0ZXh0IikuYXR0cigieCIsMCkuYXR0cigieSIsbnQoKS5zdGF0ZS50aXRsZVNoaWZ0KS5hdHRyKCJmb250LXNpemUiLG50KCkuc3RhdGUuZm9udFNpemUpLmF0dHIoImNsYXNzIiwic3RhdGUtdGl0bGUiKS50ZXh0KGUuaWQpLGg9bC5ub2RlKCkuZ2V0QkJveCgpLndpZHRoK2k7bGV0IGQ9TWF0aC5tYXgoaCxzKTtkPT09cyYmKGQ9ZCtpKTtsZXQgZjtjb25zdCBwPXQubm9kZSgpLmdldEJCb3goKTtlLmRvYyxmPW8tbixoPnMmJihmPShzLWQpLzIrbiksTWF0aC5hYnMoby1wLngpPG4mJmg+cyYmKGY9by0oaC1zKS8yKTtjb25zdCBtPTEtbnQoKS5zdGF0ZS50ZXh0SGVpZ2h0O3JldHVybiB0Lmluc2VydCgicmVjdCIsIjpmaXJzdC1jaGlsZCIpLmF0dHIoIngiLGYpLmF0dHIoInkiLG0pLmF0dHIoImNsYXNzIixyPyJhbHQtY29tcG9zaXQiOiJjb21wb3NpdCIpLmF0dHIoIndpZHRoIixkKS5hdHRyKCJoZWlnaHQiLHAuaGVpZ2h0K250KCkuc3RhdGUudGV4dEhlaWdodCtudCgpLnN0YXRlLnRpdGxlU2hpZnQrMSkuYXR0cigicngiLCIwIiksbC5hdHRyKCJ4IixmK24pLGg8PXMmJmwuYXR0cigieCIsbysoZC1pKS8yLWgvMituKSx0Lmluc2VydCgicmVjdCIsIjpmaXJzdC1jaGlsZCIpLmF0dHIoIngiLGYpLmF0dHIoInkiLG50KCkuc3RhdGUudGl0bGVTaGlmdC1udCgpLnN0YXRlLnRleHRIZWlnaHQtbnQoKS5zdGF0ZS5wYWRkaW5nKS5hdHRyKCJ3aWR0aCIsZCkuYXR0cigiaGVpZ2h0IixudCgpLnN0YXRlLnRleHRIZWlnaHQqMykuYXR0cigicngiLG50KCkuc3RhdGUucmFkaXVzKSx0Lmluc2VydCgicmVjdCIsIjpmaXJzdC1jaGlsZCIpLmF0dHIoIngiLGYpLmF0dHIoInkiLG50KCkuc3RhdGUudGl0bGVTaGlmdC1udCgpLnN0YXRlLnRleHRIZWlnaHQtbnQoKS5zdGF0ZS5wYWRkaW5nKS5hdHRyKCJ3aWR0aCIsZCkuYXR0cigiaGVpZ2h0IixwLmhlaWdodCszKzIqbnQoKS5zdGF0ZS50ZXh0SGVpZ2h0KS5hdHRyKCJyeCIsbnQoKS5zdGF0ZS5yYWRpdXMpLHR9LElhdD10PT4odC5hcHBlbmQoImNpcmNsZSIpLmF0dHIoImNsYXNzIiwiZW5kLXN0YXRlLW91dGVyIikuYXR0cigiciIsbnQoKS5zdGF0ZS5zaXplVW5pdCtudCgpLnN0YXRlLm1pbmlQYWRkaW5nKS5hdHRyKCJjeCIsbnQoKS5zdGF0ZS5wYWRkaW5nK250KCkuc3RhdGUuc2l6ZVVuaXQrbnQoKS5zdGF0ZS5taW5pUGFkZGluZykuYXR0cigiY3kiLG50KCkuc3RhdGUucGFkZGluZytudCgpLnN0YXRlLnNpemVVbml0K250KCkuc3RhdGUubWluaVBhZGRpbmcpLHQuYXBwZW5kKCJjaXJjbGUiKS5hdHRyKCJjbGFzcyIsImVuZC1zdGF0ZS1pbm5lciIpLmF0dHIoInIiLG50KCkuc3RhdGUuc2l6ZVVuaXQpLmF0dHIoImN4IixudCgpLnN0YXRlLnBhZGRpbmcrbnQoKS5zdGF0ZS5zaXplVW5pdCsyKS5hdHRyKCJjeSIsbnQoKS5zdGF0ZS5wYWRkaW5nK250KCkuc3RhdGUuc2l6ZVVuaXQrMikpLE5hdD0odCxlKT0+e2xldCByPW50KCkuc3RhdGUuZm9ya1dpZHRoLG49bnQoKS5zdGF0ZS5mb3JrSGVpZ2h0O2lmKGUucGFyZW50SWQpe2xldCBpPXI7cj1uLG49aX1yZXR1cm4gdC5hcHBlbmQoInJlY3QiKS5zdHlsZSgic3Ryb2tlIiwiYmxhY2siKS5zdHlsZSgiZmlsbCIsImJsYWNrIikuYXR0cigid2lkdGgiLHIpLmF0dHIoImhlaWdodCIsbikuYXR0cigieCIsbnQoKS5zdGF0ZS5wYWRkaW5nKS5hdHRyKCJ5IixudCgpLnN0YXRlLnBhZGRpbmcpfSxCYXQ9KHQsZSxyLG4pPT57bGV0IGk9MDtjb25zdCBhPW4uYXBwZW5kKCJ0ZXh0Iik7YS5zdHlsZSgidGV4dC1hbmNob3IiLCJzdGFydCIpLGEuYXR0cigiY2xhc3MiLCJub3RlVGV4dCIpO2xldCBzPXQucmVwbGFjZSgvXHJcbi9nLCI8YnIvPiIpO3M9cy5yZXBsYWNlKC9cbi9nLCI8YnIvPiIpO2NvbnN0IG89cy5zcGxpdChwZS5saW5lQnJlYWtSZWdleCk7bGV0IGw9MS4yNSpudCgpLnN0YXRlLm5vdGVNYXJnaW47Zm9yKGNvbnN0IHUgb2Ygbyl7Y29uc3QgaD11LnRyaW0oKTtpZihoLmxlbmd0aD4wKXtjb25zdCBkPWEuYXBwZW5kKCJ0c3BhbiIpO2QudGV4dChoKSxsPT09MCYmKGwrPWQubm9kZSgpLmdldEJCb3goKS5oZWlnaHQpLGkrPWwsZC5hdHRyKCJ4IixlK250KCkuc3RhdGUubm90ZU1hcmdpbiksZC5hdHRyKCJ5IixyK2krMS4yNSpudCgpLnN0YXRlLm5vdGVNYXJnaW4pfX1yZXR1cm57dGV4dFdpZHRoOmEubm9kZSgpLmdldEJCb3goKS53aWR0aCx0ZXh0SGVpZ2h0Oml9fSxEYXQ9KHQsZSk9PntlLmF0dHIoImNsYXNzIiwic3RhdGUtbm90ZSIpO2NvbnN0IHI9ZS5hcHBlbmQoInJlY3QiKS5hdHRyKCJ4IiwwKS5hdHRyKCJ5IixudCgpLnN0YXRlLnBhZGRpbmcpLG49ZS5hcHBlbmQoImciKSx7dGV4dFdpZHRoOmksdGV4dEhlaWdodDphfT1CYXQodCwwLDAsbik7cmV0dXJuIHIuYXR0cigiaGVpZ2h0IixhKzIqbnQoKS5zdGF0ZS5ub3RlTWFyZ2luKSxyLmF0dHIoIndpZHRoIixpK250KCkuc3RhdGUubm90ZU1hcmdpbioyKSxyfSxPTD1mdW5jdGlvbih0LGUpe2NvbnN0IHI9ZS5pZCxuPXtpZDpyLGxhYmVsOmUuaWQsd2lkdGg6MCxoZWlnaHQ6MH0saT10LmFwcGVuZCgiZyIpLmF0dHIoImlkIixyKS5hdHRyKCJjbGFzcyIsInN0YXRlR3JvdXAiKTtlLnR5cGU9PT0ic3RhcnQiJiZTYXQoaSksZS50eXBlPT09ImVuZCImJklhdChpKSwoZS50eXBlPT09ImZvcmsifHxlLnR5cGU9PT0iam9pbiIpJiZOYXQoaSxlKSxlLnR5cGU9PT0ibm90ZSImJkRhdChlLm5vdGUudGV4dCxpKSxlLnR5cGU9PT0iZGl2aWRlciImJkFhdChpKSxlLnR5cGU9PT0iZGVmYXVsdCImJmUuZGVzY3JpcHRpb25zLmxlbmd0aD09PTAmJk1hdChpLGUpLGUudHlwZT09PSJkZWZhdWx0IiYmZS5kZXNjcmlwdGlvbnMubGVuZ3RoPjAmJkxhdChpLGUpO2NvbnN0IGE9aS5ub2RlKCkuZ2V0QkJveCgpO3JldHVybiBuLndpZHRoPWEud2lkdGgrMipudCgpLnN0YXRlLnBhZGRpbmcsbi5oZWlnaHQ9YS5oZWlnaHQrMipudCgpLnN0YXRlLnBhZGRpbmcsbn07bGV0IEZMPTA7Y29uc3QgT2F0PWZ1bmN0aW9uKHQsZSxyKXtjb25zdCBuPWZ1bmN0aW9uKGwpe3N3aXRjaChsKXtjYXNlIG1hLnJlbGF0aW9uVHlwZS5BR0dSRUdBVElPTjpyZXR1cm4iYWdncmVnYXRpb24iO2Nhc2UgbWEucmVsYXRpb25UeXBlLkVYVEVOU0lPTjpyZXR1cm4iZXh0ZW5zaW9uIjtjYXNlIG1hLnJlbGF0aW9uVHlwZS5DT01QT1NJVElPTjpyZXR1cm4iY29tcG9zaXRpb24iO2Nhc2UgbWEucmVsYXRpb25UeXBlLkRFUEVOREVOQ1k6cmV0dXJuImRlcGVuZGVuY3kifX07ZS5wb2ludHM9ZS5wb2ludHMuZmlsdGVyKGw9PiFOdW1iZXIuaXNOYU4obC55KSk7Y29uc3QgaT1lLnBvaW50cyxhPVVhKCkueChmdW5jdGlvbihsKXtyZXR1cm4gbC54fSkueShmdW5jdGlvbihsKXtyZXR1cm4gbC55fSkuY3VydmUoT3MpLHM9dC5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIixhKGkpKS5hdHRyKCJpZCIsImVkZ2UiK0ZMKS5hdHRyKCJjbGFzcyIsInRyYW5zaXRpb24iKTtsZXQgbz0iIjtpZihudCgpLnN0YXRlLmFycm93TWFya2VyQWJzb2x1dGUmJihvPXdpbmRvdy5sb2NhdGlvbi5wcm90b2NvbCsiLy8iK3dpbmRvdy5sb2NhdGlvbi5ob3N0K3dpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSt3aW5kb3cubG9jYXRpb24uc2VhcmNoLG89by5yZXBsYWNlKC9cKC9nLCJcXCgiKSxvPW8ucmVwbGFjZSgvXCkvZywiXFwpIikpLHMuYXR0cigibWFya2VyLWVuZCIsInVybCgiK28rIiMiK24obWEucmVsYXRpb25UeXBlLkRFUEVOREVOQ1kpKyJFbmQpIiksdHlwZW9mIHIudGl0bGU8InUiKXtjb25zdCBsPXQuYXBwZW5kKCJnIikuYXR0cigiY2xhc3MiLCJzdGF0ZUxhYmVsIikse3g6dSx5Omh9PVNlLmNhbGNMYWJlbFBvc2l0aW9uKGUucG9pbnRzKSxkPXBlLmdldFJvd3Moci50aXRsZSk7bGV0IGY9MDtjb25zdCBwPVtdO2xldCBtPTAsXz0wO2ZvcihsZXQgeD0wO3g8PWQubGVuZ3RoO3grKyl7Y29uc3Qgaz1sLmFwcGVuZCgidGV4dCIpLmF0dHIoInRleHQtYW5jaG9yIiwibWlkZGxlIikudGV4dChkW3hdKS5hdHRyKCJ4Iix1KS5hdHRyKCJ5IixoK2YpLFQ9ay5ub2RlKCkuZ2V0QkJveCgpO209TWF0aC5tYXgobSxULndpZHRoKSxfPU1hdGgubWluKF8sVC54KSxILmluZm8oVC54LHUsaCtmKSxmPT09MCYmKGY9ay5ub2RlKCkuZ2V0QkJveCgpLmhlaWdodCxILmluZm8oIlRpdGxlIGhlaWdodCIsZixoKSkscC5wdXNoKGspfWxldCB5PWYqZC5sZW5ndGg7aWYoZC5sZW5ndGg+MSl7Y29uc3QgeD0oZC5sZW5ndGgtMSkqZiouNTtwLmZvckVhY2goKGssVCk9PmsuYXR0cigieSIsaCtUKmYteCkpLHk9ZipkLmxlbmd0aH1jb25zdCBiPWwubm9kZSgpLmdldEJCb3goKTtsLmluc2VydCgicmVjdCIsIjpmaXJzdC1jaGlsZCIpLmF0dHIoImNsYXNzIiwiYm94IikuYXR0cigieCIsdS1tLzItbnQoKS5zdGF0ZS5wYWRkaW5nLzIpLmF0dHIoInkiLGgteS8yLW50KCkuc3RhdGUucGFkZGluZy8yLTMuNSkuYXR0cigid2lkdGgiLG0rbnQoKS5zdGF0ZS5wYWRkaW5nKS5hdHRyKCJoZWlnaHQiLHkrbnQoKS5zdGF0ZS5wYWRkaW5nKSxILmluZm8oYil9RkwrK307bGV0IE1uO2NvbnN0IEo0PXt9LEZhdD1mdW5jdGlvbigpe30sUGF0PWZ1bmN0aW9uKHQpe3QuYXBwZW5kKCJkZWZzIikuYXBwZW5kKCJtYXJrZXIiKS5hdHRyKCJpZCIsImRlcGVuZGVuY3lFbmQiKS5hdHRyKCJyZWZYIiwxOSkuYXR0cigicmVmWSIsNykuYXR0cigibWFya2VyV2lkdGgiLDIwKS5hdHRyKCJtYXJrZXJIZWlnaHQiLDI4KS5hdHRyKCJvcmllbnQiLCJhdXRvIikuYXBwZW5kKCJwYXRoIikuYXR0cigiZCIsIk0gMTksNyBMOSwxMyBMMTQsNyBMOSwxIFoiKX0scWF0PWZ1bmN0aW9uKHQsZSxyLG4pe01uPW50KCkuc3RhdGU7Y29uc3QgaT1udCgpLnNlY3VyaXR5TGV2ZWw7bGV0IGE7aT09PSJzYW5kYm94IiYmKGE9U3QoIiNpIitlKSk7Y29uc3Qgcz1TdChpPT09InNhbmRib3giP2Eubm9kZXMoKVswXS5jb250ZW50RG9jdW1lbnQuYm9keToiYm9keSIpLG89aT09PSJzYW5kYm94Ij9hLm5vZGVzKClbMF0uY29udGVudERvY3VtZW50OmRvY3VtZW50O0guZGVidWcoIlJlbmRlcmluZyBkaWFncmFtICIrdCk7Y29uc3QgbD1zLnNlbGVjdChgW2lkPScke2V9J11gKTtQYXQobCksbmV3IGNyLkdyYXBoKHttdWx0aWdyYXBoOiEwLGNvbXBvdW5kOiEwLHJhbmtkaXI6IlJMIn0pLnNldERlZmF1bHRFZGdlTGFiZWwoZnVuY3Rpb24oKXtyZXR1cm57fX0pO2NvbnN0IGg9bi5kYi5nZXRSb290RG9jKCk7UEwoaCxsLHZvaWQgMCwhMSxzLG8sbik7Y29uc3QgZD1Nbi5wYWRkaW5nLGY9bC5ub2RlKCkuZ2V0QkJveCgpLHA9Zi53aWR0aCtkKjIsbT1mLmhlaWdodCtkKjIsXz1wKjEuNzU7bGkobCxtLF8sTW4udXNlTWF4V2lkdGgpLGwuYXR0cigidmlld0JveCIsYCR7Zi54LU1uLnBhZGRpbmd9ICAke2YueS1Nbi5wYWRkaW5nfSBgK3ArIiAiK20pLGJuKG4uZGIsbCxlKX0sVmF0PXQ9PnQ/dC5sZW5ndGgqTW4uZm9udFNpemVGYWN0b3I6MSxQTD0odCxlLHIsbixpLGEscyk9Pntjb25zdCBvPW5ldyBjci5HcmFwaCh7Y29tcG91bmQ6ITAsbXVsdGlncmFwaDohMH0pO2xldCBsLHU9ITA7Zm9yKGw9MDtsPHQubGVuZ3RoO2wrKylpZih0W2xdLnN0bXQ9PT0icmVsYXRpb24iKXt1PSExO2JyZWFrfXI/by5zZXRHcmFwaCh7cmFua2RpcjoiTFIiLG11bHRpZ3JhcGg6ITAsY29tcG91bmQ6ITAscmFua2VyOiJ0aWdodC10cmVlIixyYW5rc2VwOnU/MTpNbi5lZGdlTGVuZ3RoRmFjdG9yLG5vZGVTZXA6dT8xOjUwLGlzTXVsdGlHcmFwaDohMH0pOm8uc2V0R3JhcGgoe3JhbmtkaXI6IlRCIixtdWx0aWdyYXBoOiEwLGNvbXBvdW5kOiEwLHJhbmtzZXA6dT8xOk1uLmVkZ2VMZW5ndGhGYWN0b3Isbm9kZVNlcDp1PzE6NTAscmFua2VyOiJ0aWdodC10cmVlIixpc011bHRpR3JhcGg6ITB9KSxvLnNldERlZmF1bHRFZGdlTGFiZWwoZnVuY3Rpb24oKXtyZXR1cm57fX0pLHMuZGIuZXh0cmFjdCh0KTtjb25zdCBoPXMuZGIuZ2V0U3RhdGVzKCksZD1zLmRiLmdldFJlbGF0aW9ucygpLGY9T2JqZWN0LmtleXMoaCk7Zm9yKGxldCBiPTA7YjxmLmxlbmd0aDtiKyspe2NvbnN0IHg9aFtmW2JdXTtyJiYoeC5wYXJlbnRJZD1yKTtsZXQgaztpZih4LmRvYyl7bGV0IFQ9ZS5hcHBlbmQoImciKS5hdHRyKCJpZCIseC5pZCkuYXR0cigiY2xhc3MiLCJzdGF0ZUdyb3VwIik7az1QTCh4LmRvYyxULHguaWQsIW4saSxhLHMpO3tUPVJhdChULHgsbik7bGV0IEM9VC5ub2RlKCkuZ2V0QkJveCgpO2sud2lkdGg9Qy53aWR0aCxrLmhlaWdodD1DLmhlaWdodCtNbi5wYWRkaW5nLzIsSjRbeC5pZF09e3k6TW4uY29tcG9zaXRUaXRsZVNpemV9fX1lbHNlIGs9T0woZSx4KTtpZih4Lm5vdGUpe2NvbnN0IFQ9e2Rlc2NyaXB0aW9uczpbXSxpZDp4LmlkKyItbm90ZSIsbm90ZTp4Lm5vdGUsdHlwZToibm90ZSJ9LEM9T0woZSxUKTt4Lm5vdGUucG9zaXRpb249PT0ibGVmdCBvZiI/KG8uc2V0Tm9kZShrLmlkKyItbm90ZSIsQyksby5zZXROb2RlKGsuaWQsaykpOihvLnNldE5vZGUoay5pZCxrKSxvLnNldE5vZGUoay5pZCsiLW5vdGUiLEMpKSxvLnNldFBhcmVudChrLmlkLGsuaWQrIi1ncm91cCIpLG8uc2V0UGFyZW50KGsuaWQrIi1ub3RlIixrLmlkKyItZ3JvdXAiKX1lbHNlIG8uc2V0Tm9kZShrLmlkLGspfUguZGVidWcoIkNvdW50PSIsby5ub2RlQ291bnQoKSxvKTtsZXQgcD0wO2QuZm9yRWFjaChmdW5jdGlvbihiKXtwKyssSC5kZWJ1ZygiU2V0dGluZyBlZGdlIixiKSxvLnNldEVkZ2UoYi5pZDEsYi5pZDIse3JlbGF0aW9uOmIsd2lkdGg6VmF0KGIudGl0bGUpLGhlaWdodDpNbi5sYWJlbEhlaWdodCpwZS5nZXRSb3dzKGIudGl0bGUpLmxlbmd0aCxsYWJlbHBvczoiYyJ9LCJpZCIrcCl9KSxaYy5sYXlvdXQobyksSC5kZWJ1ZygiR3JhcGggYWZ0ZXIgbGF5b3V0IixvLm5vZGVzKCkpO2NvbnN0IG09ZS5ub2RlKCk7by5ub2RlcygpLmZvckVhY2goZnVuY3Rpb24oYil7dHlwZW9mIGI8InUiJiZ0eXBlb2Ygby5ub2RlKGIpPCJ1Ij8oSC53YXJuKCJOb2RlICIrYisiOiAiK0pTT04uc3RyaW5naWZ5KG8ubm9kZShiKSkpLGkuc2VsZWN0KCIjIittLmlkKyIgIyIrYikuYXR0cigidHJhbnNmb3JtIiwidHJhbnNsYXRlKCIrKG8ubm9kZShiKS54LW8ubm9kZShiKS53aWR0aC8yKSsiLCIrKG8ubm9kZShiKS55KyhKNFtiXT9KNFtiXS55OjApLW8ubm9kZShiKS5oZWlnaHQvMikrIiApIiksaS5zZWxlY3QoIiMiK20uaWQrIiAjIitiKS5hdHRyKCJkYXRhLXgtc2hpZnQiLG8ubm9kZShiKS54LW8ubm9kZShiKS53aWR0aC8yKSxhLnF1ZXJ5U2VsZWN0b3JBbGwoIiMiK20uaWQrIiAjIitiKyIgLmRpdmlkZXIiKS5mb3JFYWNoKGs9Pntjb25zdCBUPWsucGFyZW50RWxlbWVudDtsZXQgQz0wLE09MDtUJiYoVC5wYXJlbnRFbGVtZW50JiYoQz1ULnBhcmVudEVsZW1lbnQuZ2V0QkJveCgpLndpZHRoKSxNPXBhcnNlSW50KFQuZ2V0QXR0cmlidXRlKCJkYXRhLXgtc2hpZnQiKSwxMCksTnVtYmVyLmlzTmFOKE0pJiYoTT0wKSksay5zZXRBdHRyaWJ1dGUoIngxIiwwLU0rOCksay5zZXRBdHRyaWJ1dGUoIngyIixDLU0tOCl9KSk6SC5kZWJ1ZygiTm8gTm9kZSAiK2IrIjogIitKU09OLnN0cmluZ2lmeShvLm5vZGUoYikpKX0pO2xldCBfPW0uZ2V0QkJveCgpO28uZWRnZXMoKS5mb3JFYWNoKGZ1bmN0aW9uKGIpe3R5cGVvZiBiPCJ1IiYmdHlwZW9mIG8uZWRnZShiKTwidSImJihILmRlYnVnKCJFZGdlICIrYi52KyIgLT4gIitiLncrIjogIitKU09OLnN0cmluZ2lmeShvLmVkZ2UoYikpKSxPYXQoZSxvLmVkZ2UoYiksby5lZGdlKGIpLnJlbGF0aW9uKSl9KSxfPW0uZ2V0QkJveCgpO2NvbnN0IHk9e2lkOnJ8fCJyb290IixsYWJlbDpyfHwicm9vdCIsd2lkdGg6MCxoZWlnaHQ6MH07cmV0dXJuIHkud2lkdGg9Xy53aWR0aCsyKk1uLnBhZGRpbmcseS5oZWlnaHQ9Xy5oZWlnaHQrMipNbi5wYWRkaW5nLEguZGVidWcoIkRvYyByZW5kZXJlZCIseSxvKSx5fSx6YXQ9e3NldENvbmY6RmF0LGRyYXc6cWF0fSxZYXQ9e30sVWF0PWZ1bmN0aW9uKHQpe2NvbnN0IGU9T2JqZWN0LmtleXModCk7Zm9yKGxldCByPTA7cjxlLmxlbmd0aDtyKyspWWF0W2Vbcl1dPXRbZVtyXV19O2xldCBGZT17fTtjb25zdCBXYXQ9ZnVuY3Rpb24odCxlKXtyZXR1cm4gSC50cmFjZSgiRXh0cmFjdGluZyBjbGFzc2VzIiksZS5zYi5jbGVhcigpLGUucGFyc2VyLnBhcnNlKHQpLGUuc2IuZ2V0Q2xhc3NlcygpfSx2MD0odCxlLHIsbik9PntpZihyLmlkIT09InJvb3QiKXtsZXQgaT0icmVjdCI7ci5zdGFydD09PSEwJiYoaT0ic3RhcnQiKSxyLnN0YXJ0PT09ITEmJihpPSJlbmQiKSxyLnR5cGUhPT0iZGVmYXVsdCImJihpPXIudHlwZSksRmVbci5pZF18fChGZVtyLmlkXT17aWQ6ci5pZCxzaGFwZTppLGRlc2NyaXB0aW9uOnBlLnNhbml0aXplVGV4dChyLmlkLG50KCkpLGNsYXNzZXM6InN0YXRlZGlhZ3JhbS1zdGF0ZSJ9KSxyLmRlc2NyaXB0aW9uJiYoQXJyYXkuaXNBcnJheShGZVtyLmlkXS5kZXNjcmlwdGlvbik/KEZlW3IuaWRdLnNoYXBlPSJyZWN0V2l0aFRpdGxlIixGZVtyLmlkXS5kZXNjcmlwdGlvbi5wdXNoKHIuZGVzY3JpcHRpb24pKTpGZVtyLmlkXS5kZXNjcmlwdGlvbi5sZW5ndGg+MD8oRmVbci5pZF0uc2hhcGU9InJlY3RXaXRoVGl0bGUiLEZlW3IuaWRdLmRlc2NyaXB0aW9uPT09ci5pZD9GZVtyLmlkXS5kZXNjcmlwdGlvbj1bci5kZXNjcmlwdGlvbl06RmVbci5pZF0uZGVzY3JpcHRpb249W0ZlW3IuaWRdLmRlc2NyaXB0aW9uLHIuZGVzY3JpcHRpb25dKTooRmVbci5pZF0uc2hhcGU9InJlY3QiLEZlW3IuaWRdLmRlc2NyaXB0aW9uPXIuZGVzY3JpcHRpb24pLEZlW3IuaWRdLmRlc2NyaXB0aW9uPXBlLnNhbml0aXplVGV4dE9yQXJyYXkoRmVbci5pZF0uZGVzY3JpcHRpb24sbnQoKSkpLEZlW3IuaWRdLmRlc2NyaXB0aW9uLmxlbmd0aD09PTEmJkZlW3IuaWRdLnNoYXBlPT09InJlY3RXaXRoVGl0bGUiJiYoRmVbci5pZF0uc2hhcGU9InJlY3QiKSwhRmVbci5pZF0udHlwZSYmci5kb2MmJihILmluZm8oIlNldHRpbmcgY2x1c3RlciBmb3IgIixyLmlkLHRfKHIpKSxGZVtyLmlkXS50eXBlPSJncm91cCIsRmVbci5pZF0uZGlyPXRfKHIpLEZlW3IuaWRdLnNoYXBlPXIudHlwZT09PSJkaXZpZGVyIj8iZGl2aWRlciI6InJvdW5kZWRXaXRoVGl0bGUiLEZlW3IuaWRdLmNsYXNzZXM9RmVbci5pZF0uY2xhc3NlcysiICIrKG4/InN0YXRlZGlhZ3JhbS1jbHVzdGVyIHN0YXRlZGlhZ3JhbS1jbHVzdGVyLWFsdCI6InN0YXRlZGlhZ3JhbS1jbHVzdGVyIikpO2NvbnN0IGE9e2xhYmVsU3R5bGU6IiIsc2hhcGU6RmVbci5pZF0uc2hhcGUsbGFiZWxUZXh0OkZlW3IuaWRdLmRlc2NyaXB0aW9uLGNsYXNzZXM6RmVbci5pZF0uY2xhc3NlcyxzdHlsZToiIixpZDpyLmlkLGRpcjpGZVtyLmlkXS5kaXIsZG9tSWQ6InN0YXRlLSIrci5pZCsiLSIraXMsdHlwZTpGZVtyLmlkXS50eXBlLHBhZGRpbmc6MTV9O2lmKHIubm90ZSl7Y29uc3Qgcz17bGFiZWxTdHlsZToiIixzaGFwZToibm90ZSIsbGFiZWxUZXh0OnIubm90ZS50ZXh0LGNsYXNzZXM6InN0YXRlZGlhZ3JhbS1ub3RlIixzdHlsZToiIixpZDpyLmlkKyItLS0tbm90ZS0iK2lzLGRvbUlkOiJzdGF0ZS0iK3IuaWQrIi0tLS1ub3RlLSIraXMsdHlwZTpGZVtyLmlkXS50eXBlLHBhZGRpbmc6MTV9LG89e2xhYmVsU3R5bGU6IiIsc2hhcGU6Im5vdGVHcm91cCIsbGFiZWxUZXh0OnIubm90ZS50ZXh0LGNsYXNzZXM6RmVbci5pZF0uY2xhc3NlcyxzdHlsZToiIixpZDpyLmlkKyItLS0tcGFyZW50Iixkb21JZDoic3RhdGUtIityLmlkKyItLS0tcGFyZW50LSIraXMsdHlwZToiZ3JvdXAiLHBhZGRpbmc6MH07aXMrKyx0LnNldE5vZGUoci5pZCsiLS0tLXBhcmVudCIsbyksdC5zZXROb2RlKHMuaWQscyksdC5zZXROb2RlKHIuaWQsYSksdC5zZXRQYXJlbnQoci5pZCxyLmlkKyItLS0tcGFyZW50IiksdC5zZXRQYXJlbnQocy5pZCxyLmlkKyItLS0tcGFyZW50Iik7bGV0IGw9ci5pZCx1PXMuaWQ7ci5ub3RlLnBvc2l0aW9uPT09ImxlZnQgb2YiJiYobD1zLmlkLHU9ci5pZCksdC5zZXRFZGdlKGwsdSx7YXJyb3doZWFkOiJub25lIixhcnJvd1R5cGU6IiIsc3R5bGU6ImZpbGw6bm9uZSIsbGFiZWxTdHlsZToiIixjbGFzc2VzOiJ0cmFuc2l0aW9uIG5vdGUtZWRnZSIsYXJyb3doZWFkU3R5bGU6ImZpbGw6ICMzMzMiLGxhYmVscG9zOiJjIixsYWJlbFR5cGU6InRleHQiLHRoaWNrbmVzczoibm9ybWFsIn0pfWVsc2UgdC5zZXROb2RlKHIuaWQsYSl9ZSYmZS5pZCE9PSJyb290IiYmKEgudHJhY2UoIlNldHRpbmcgbm9kZSAiLHIuaWQsIiB0byBiZSBjaGlsZCBvZiBpdHMgcGFyZW50ICIsZS5pZCksdC5zZXRQYXJlbnQoci5pZCxlLmlkKSksci5kb2MmJihILnRyYWNlKCJBZGRpbmcgbm9kZXMgY2hpbGRyZW4gIiksSGF0KHQscixyLmRvYywhbikpfTtsZXQgaXM9MDtjb25zdCBIYXQ9KHQsZSxyLG4pPT57SC50cmFjZSgiaXRlbXMiLHIpLHIuZm9yRWFjaChpPT57aWYoaS5zdG10PT09InN0YXRlInx8aS5zdG10PT09ImRlZmF1bHQiKXYwKHQsZSxpLG4pO2Vsc2UgaWYoaS5zdG10PT09InJlbGF0aW9uIil7djAodCxlLGkuc3RhdGUxLG4pLHYwKHQsZSxpLnN0YXRlMixuKTtjb25zdCBhPXtpZDoiZWRnZSIraXMsYXJyb3doZWFkOiJub3JtYWwiLGFycm93VHlwZUVuZDoiYXJyb3dfYmFyYiIsc3R5bGU6ImZpbGw6bm9uZSIsbGFiZWxTdHlsZToiIixsYWJlbDpwZS5zYW5pdGl6ZVRleHQoaS5kZXNjcmlwdGlvbixudCgpKSxhcnJvd2hlYWRTdHlsZToiZmlsbDogIzMzMyIsbGFiZWxwb3M6ImMiLGxhYmVsVHlwZToidGV4dCIsdGhpY2tuZXNzOiJub3JtYWwiLGNsYXNzZXM6InRyYW5zaXRpb24ifTtsZXQgcz1pLnN0YXRlMS5pZCxvPWkuc3RhdGUyLmlkO3Quc2V0RWRnZShzLG8sYSxpcyksaXMrK319KX0sdF89KHQsZSk9PntsZXQgcj1lfHwiVEIiO2lmKHQuZG9jKWZvcihsZXQgbj0wO248dC5kb2MubGVuZ3RoO24rKyl7Y29uc3QgaT10LmRvY1tuXTtpLnN0bXQ9PT0iZGlyIiYmKHI9aS52YWx1ZSl9cmV0dXJuIHJ9LEdhdD17c2V0Q29uZjpVYXQsZ2V0Q2xhc3NlczpXYXQsZHJhdzpmdW5jdGlvbih0LGUscixuKXtILmluZm8oIkRyYXdpbmcgc3RhdGUgZGlhZ3JhbSAodjIpIixlKSxGZT17fSxuLmRiLmdldERpcmVjdGlvbigpO2NvbnN0e3NlY3VyaXR5TGV2ZWw6aSxzdGF0ZTphfT1udCgpLHM9YS5ub2RlU3BhY2luZ3x8NTAsbz1hLnJhbmtTcGFjaW5nfHw1MDtILmluZm8obi5kYi5nZXRSb290RG9jVjIoKSksbi5kYi5leHRyYWN0KG4uZGIuZ2V0Um9vdERvY1YyKCkpLEguaW5mbyhuLmRiLmdldFJvb3REb2NWMigpKTtjb25zdCBsPW5ldyBjci5HcmFwaCh7bXVsdGlncmFwaDohMCxjb21wb3VuZDohMH0pLnNldEdyYXBoKHtyYW5rZGlyOnRfKG4uZGIuZ2V0Um9vdERvY1YyKCkpLG5vZGVzZXA6cyxyYW5rc2VwOm8sbWFyZ2lueDo4LG1hcmdpbnk6OH0pLnNldERlZmF1bHRFZGdlTGFiZWwoZnVuY3Rpb24oKXtyZXR1cm57fX0pO3YwKGwsdm9pZCAwLG4uZGIuZ2V0Um9vdERvY1YyKCksITApO2xldCB1O2k9PT0ic2FuZGJveCImJih1PVN0KCIjaSIrZSkpO2NvbnN0IGg9U3QoaT09PSJzYW5kYm94Ij91Lm5vZGVzKClbMF0uY29udGVudERvY3VtZW50LmJvZHk6ImJvZHkiKSxkPWguc2VsZWN0KGBbaWQ9IiR7ZX0iXWApLGY9aC5zZWxlY3QoIiMiK2UrIiBnIik7aTQoZixsLFsiYmFyYiJdLCJzdGF0ZWRpYWdyYW0iLGUpO2NvbnN0IHA9OCxtPWQubm9kZSgpLmdldEJCb3goKSxfPW0ud2lkdGgrcCoyLHk9bS5oZWlnaHQrcCoyO2QuYXR0cigiY2xhc3MiLCJzdGF0ZWRpYWdyYW0iKTtjb25zdCBiPWQubm9kZSgpLmdldEJCb3goKTtsaShkLHksXyxhLnVzZU1heFdpZHRoKTtjb25zdCB4PWAke2IueC1wfSAke2IueS1wfSAke199ICR7eX1gO0guZGVidWcoYHZpZXdCb3ggJHt4fWApLGQuYXR0cigidmlld0JveCIseCk7Y29uc3Qgaz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbaWQ9IicrZSsnIl0gLmVkZ2VMYWJlbCAubGFiZWwnKTtmb3IobGV0IFQ9MDtUPGsubGVuZ3RoO1QrKyl7Y29uc3QgQz1rW1RdLE09Qy5nZXRCQm94KCksUz1kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiwicmVjdCIpO1Muc2V0QXR0cmlidXRlKCJyeCIsMCksUy5zZXRBdHRyaWJ1dGUoInJ5IiwwKSxTLnNldEF0dHJpYnV0ZSgid2lkdGgiLE0ud2lkdGgpLFMuc2V0QXR0cmlidXRlKCJoZWlnaHQiLE0uaGVpZ2h0KSxDLmluc2VydEJlZm9yZShTLEMuZmlyc3RDaGlsZCl9Ym4obi5kYixkLGUpfX07dmFyIGVfPWZ1bmN0aW9uKCl7dmFyIHQ9ZnVuY3Rpb24oXyx5LGIseCl7Zm9yKGI9Ynx8e30seD1fLmxlbmd0aDt4LS07YltfW3hdXT15KTtyZXR1cm4gYn0sZT1bMSwyXSxyPVsxLDVdLG49WzYsOSwxMSwxNywxOCwyMCwyMiwyMywyNCwyNl0saT1bMSwxNV0sYT1bMSwxNl0scz1bMSwxN10sbz1bMSwxOF0sbD1bMSwxOV0sdT1bMSwyMF0saD1bMSwyNF0sZD1bNCw2LDksMTEsMTcsMTgsMjAsMjIsMjMsMjQsMjZdLGY9e3RyYWNlOmZ1bmN0aW9uKCl7fSx5eTp7fSxzeW1ib2xzXzp7ZXJyb3I6MixzdGFydDozLGpvdXJuZXk6NCxkb2N1bWVudDo1LEVPRjo2LGRpcmVjdGl2ZTo3LGxpbmU6OCxTUEFDRTo5LHN0YXRlbWVudDoxMCxORVdMSU5FOjExLG9wZW5EaXJlY3RpdmU6MTIsdHlwZURpcmVjdGl2ZToxMyxjbG9zZURpcmVjdGl2ZToxNCwiOiI6MTUsYXJnRGlyZWN0aXZlOjE2LHRpdGxlOjE3LGFjY190aXRsZToxOCxhY2NfdGl0bGVfdmFsdWU6MTksYWNjX2Rlc2NyOjIwLGFjY19kZXNjcl92YWx1ZToyMSxhY2NfZGVzY3JfbXVsdGlsaW5lX3ZhbHVlOjIyLHNlY3Rpb246MjMsdGFza05hbWU6MjQsdGFza0RhdGE6MjUsb3Blbl9kaXJlY3RpdmU6MjYsdHlwZV9kaXJlY3RpdmU6MjcsYXJnX2RpcmVjdGl2ZToyOCxjbG9zZV9kaXJlY3RpdmU6MjksJGFjY2VwdDowLCRlbmQ6MX0sdGVybWluYWxzXzp7MjoiZXJyb3IiLDQ6ImpvdXJuZXkiLDY6IkVPRiIsOToiU1BBQ0UiLDExOiJORVdMSU5FIiwxNToiOiIsMTc6InRpdGxlIiwxODoiYWNjX3RpdGxlIiwxOToiYWNjX3RpdGxlX3ZhbHVlIiwyMDoiYWNjX2Rlc2NyIiwyMToiYWNjX2Rlc2NyX3ZhbHVlIiwyMjoiYWNjX2Rlc2NyX211bHRpbGluZV92YWx1ZSIsMjM6InNlY3Rpb24iLDI0OiJ0YXNrTmFtZSIsMjU6InRhc2tEYXRhIiwyNjoib3Blbl9kaXJlY3RpdmUiLDI3OiJ0eXBlX2RpcmVjdGl2ZSIsMjg6ImFyZ19kaXJlY3RpdmUiLDI5OiJjbG9zZV9kaXJlY3RpdmUifSxwcm9kdWN0aW9uc186WzAsWzMsM10sWzMsMl0sWzUsMF0sWzUsMl0sWzgsMl0sWzgsMV0sWzgsMV0sWzgsMV0sWzcsNF0sWzcsNl0sWzEwLDFdLFsxMCwyXSxbMTAsMl0sWzEwLDFdLFsxMCwxXSxbMTAsMl0sWzEwLDFdLFsxMiwxXSxbMTMsMV0sWzE2LDFdLFsxNCwxXV0scGVyZm9ybUFjdGlvbjpmdW5jdGlvbih5LGIseCxrLFQsQyxNKXt2YXIgUz1DLmxlbmd0aC0xO3N3aXRjaChUKXtjYXNlIDE6cmV0dXJuIENbUy0xXTtjYXNlIDM6dGhpcy4kPVtdO2JyZWFrO2Nhc2UgNDpDW1MtMV0ucHVzaChDW1NdKSx0aGlzLiQ9Q1tTLTFdO2JyZWFrO2Nhc2UgNTpjYXNlIDY6dGhpcy4kPUNbU107YnJlYWs7Y2FzZSA3OmNhc2UgODp0aGlzLiQ9W107YnJlYWs7Y2FzZSAxMTprLnNldERpYWdyYW1UaXRsZShDW1NdLnN1YnN0cig2KSksdGhpcy4kPUNbU10uc3Vic3RyKDYpO2JyZWFrO2Nhc2UgMTI6dGhpcy4kPUNbU10udHJpbSgpLGsuc2V0QWNjVGl0bGUodGhpcy4kKTticmVhaztjYXNlIDEzOmNhc2UgMTQ6dGhpcy4kPUNbU10udHJpbSgpLGsuc2V0QWNjRGVzY3JpcHRpb24odGhpcy4kKTticmVhaztjYXNlIDE1OmsuYWRkU2VjdGlvbihDW1NdLnN1YnN0cig4KSksdGhpcy4kPUNbU10uc3Vic3RyKDgpO2JyZWFrO2Nhc2UgMTY6ay5hZGRUYXNrKENbUy0xXSxDW1NdKSx0aGlzLiQ9InRhc2siO2JyZWFrO2Nhc2UgMTg6ay5wYXJzZURpcmVjdGl2ZSgiJSV7Iiwib3Blbl9kaXJlY3RpdmUiKTticmVhaztjYXNlIDE5OmsucGFyc2VEaXJlY3RpdmUoQ1tTXSwidHlwZV9kaXJlY3RpdmUiKTticmVhaztjYXNlIDIwOkNbU109Q1tTXS50cmltKCkucmVwbGFjZSgvJy9nLCciJyksay5wYXJzZURpcmVjdGl2ZShDW1NdLCJhcmdfZGlyZWN0aXZlIik7YnJlYWs7Y2FzZSAyMTprLnBhcnNlRGlyZWN0aXZlKCJ9JSUiLCJjbG9zZV9kaXJlY3RpdmUiLCJqb3VybmV5Iik7YnJlYWt9fSx0YWJsZTpbezM6MSw0OmUsNzozLDEyOjQsMjY6cn0sezE6WzNdfSx0KG4sWzIsM10sezU6Nn0pLHszOjcsNDplLDc6MywxMjo0LDI2OnJ9LHsxMzo4LDI3OlsxLDldfSx7Mjc6WzIsMThdfSx7NjpbMSwxMF0sNzoyMSw4OjExLDk6WzEsMTJdLDEwOjEzLDExOlsxLDE0XSwxMjo0LDE3OmksMTg6YSwyMDpzLDIyOm8sMjM6bCwyNDp1LDI2OnJ9LHsxOlsyLDJdfSx7MTQ6MjIsMTU6WzEsMjNdLDI5Omh9LHQoWzE1LDI5XSxbMiwxOV0pLHQobixbMiw4XSx7MTpbMiwxXX0pLHQobixbMiw0XSksezc6MjEsMTA6MjUsMTI6NCwxNzppLDE4OmEsMjA6cywyMjpvLDIzOmwsMjQ6dSwyNjpyfSx0KG4sWzIsNl0pLHQobixbMiw3XSksdChuLFsyLDExXSksezE5OlsxLDI2XX0sezIxOlsxLDI3XX0sdChuLFsyLDE0XSksdChuLFsyLDE1XSksezI1OlsxLDI4XX0sdChuLFsyLDE3XSksezExOlsxLDI5XX0sezE2OjMwLDI4OlsxLDMxXX0sezExOlsyLDIxXX0sdChuLFsyLDVdKSx0KG4sWzIsMTJdKSx0KG4sWzIsMTNdKSx0KG4sWzIsMTZdKSx0KGQsWzIsOV0pLHsxNDozMiwyOTpofSx7Mjk6WzIsMjBdfSx7MTE6WzEsMzNdfSx0KGQsWzIsMTBdKV0sZGVmYXVsdEFjdGlvbnM6ezU6WzIsMThdLDc6WzIsMl0sMjQ6WzIsMjFdLDMxOlsyLDIwXX0scGFyc2VFcnJvcjpmdW5jdGlvbih5LGIpe2lmKGIucmVjb3ZlcmFibGUpdGhpcy50cmFjZSh5KTtlbHNle3ZhciB4PW5ldyBFcnJvcih5KTt0aHJvdyB4Lmhhc2g9Yix4fX0scGFyc2U6ZnVuY3Rpb24oeSl7dmFyIGI9dGhpcyx4PVswXSxrPVtdLFQ9W251bGxdLEM9W10sTT10aGlzLnRhYmxlLFM9IiIsUj0wLEE9MCxMPTIsdj0xLEI9Qy5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSx3PU9iamVjdC5jcmVhdGUodGhpcy5sZXhlciksRD17eXk6e319O2Zvcih2YXIgTiBpbiB0aGlzLnl5KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLnl5LE4pJiYoRC55eVtOXT10aGlzLnl5W05dKTt3LnNldElucHV0KHksRC55eSksRC55eS5sZXhlcj13LEQueXkucGFyc2VyPXRoaXMsdHlwZW9mIHcueXlsbG9jPiJ1IiYmKHcueXlsbG9jPXt9KTt2YXIgej13Lnl5bGxvYztDLnB1c2goeik7dmFyIFg9dy5vcHRpb25zJiZ3Lm9wdGlvbnMucmFuZ2VzO3R5cGVvZiBELnl5LnBhcnNlRXJyb3I9PSJmdW5jdGlvbiI/dGhpcy5wYXJzZUVycm9yPUQueXkucGFyc2VFcnJvcjp0aGlzLnBhcnNlRXJyb3I9T2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLnBhcnNlRXJyb3I7ZnVuY3Rpb24gY3QoKXt2YXIgVjtyZXR1cm4gVj1rLnBvcCgpfHx3LmxleCgpfHx2LHR5cGVvZiBWIT0ibnVtYmVyIiYmKFYgaW5zdGFuY2VvZiBBcnJheSYmKGs9VixWPWsucG9wKCkpLFY9Yi5zeW1ib2xzX1tWXXx8ViksVn1mb3IodmFyIEosWSwkLGx0LHV0PXt9LFcsdHQsSyxpdDs7KXtpZihZPXhbeC5sZW5ndGgtMV0sdGhpcy5kZWZhdWx0QWN0aW9uc1tZXT8kPXRoaXMuZGVmYXVsdEFjdGlvbnNbWV06KChKPT09bnVsbHx8dHlwZW9mIEo+InUiKSYmKEo9Y3QoKSksJD1NW1ldJiZNW1ldW0pdKSx0eXBlb2YgJD4idSJ8fCEkLmxlbmd0aHx8ISRbMF0pe3ZhciBaPSIiO2l0PVtdO2ZvcihXIGluIE1bWV0pdGhpcy50ZXJtaW5hbHNfW1ddJiZXPkwmJml0LnB1c2goIiciK3RoaXMudGVybWluYWxzX1tXXSsiJyIpO3cuc2hvd1Bvc2l0aW9uP1o9IlBhcnNlIGVycm9yIG9uIGxpbmUgIisoUisxKStgOgpgK3cuc2hvd1Bvc2l0aW9uKCkrYApFeHBlY3RpbmcgYCtpdC5qb2luKCIsICIpKyIsIGdvdCAnIisodGhpcy50ZXJtaW5hbHNfW0pdfHxKKSsiJyI6Wj0iUGFyc2UgZXJyb3Igb24gbGluZSAiKyhSKzEpKyI6IFVuZXhwZWN0ZWQgIisoSj09dj8iZW5kIG9mIGlucHV0IjoiJyIrKHRoaXMudGVybWluYWxzX1tKXXx8SikrIiciKSx0aGlzLnBhcnNlRXJyb3IoWix7dGV4dDp3Lm1hdGNoLHRva2VuOnRoaXMudGVybWluYWxzX1tKXXx8SixsaW5lOncueXlsaW5lbm8sbG9jOnosZXhwZWN0ZWQ6aXR9KX1pZigkWzBdaW5zdGFuY2VvZiBBcnJheSYmJC5sZW5ndGg+MSl0aHJvdyBuZXcgRXJyb3IoIlBhcnNlIEVycm9yOiBtdWx0aXBsZSBhY3Rpb25zIHBvc3NpYmxlIGF0IHN0YXRlOiAiK1krIiwgdG9rZW46ICIrSik7c3dpdGNoKCRbMF0pe2Nhc2UgMTp4LnB1c2goSiksVC5wdXNoKHcueXl0ZXh0KSxDLnB1c2gody55eWxsb2MpLHgucHVzaCgkWzFdKSxKPW51bGwsQT13Lnl5bGVuZyxTPXcueXl0ZXh0LFI9dy55eWxpbmVubyx6PXcueXlsbG9jO2JyZWFrO2Nhc2UgMjppZih0dD10aGlzLnByb2R1Y3Rpb25zX1skWzFdXVsxXSx1dC4kPVRbVC5sZW5ndGgtdHRdLHV0Ll8kPXtmaXJzdF9saW5lOkNbQy5sZW5ndGgtKHR0fHwxKV0uZmlyc3RfbGluZSxsYXN0X2xpbmU6Q1tDLmxlbmd0aC0xXS5sYXN0X2xpbmUsZmlyc3RfY29sdW1uOkNbQy5sZW5ndGgtKHR0fHwxKV0uZmlyc3RfY29sdW1uLGxhc3RfY29sdW1uOkNbQy5sZW5ndGgtMV0ubGFzdF9jb2x1bW59LFgmJih1dC5fJC5yYW5nZT1bQ1tDLmxlbmd0aC0odHR8fDEpXS5yYW5nZVswXSxDW0MubGVuZ3RoLTFdLnJhbmdlWzFdXSksbHQ9dGhpcy5wZXJmb3JtQWN0aW9uLmFwcGx5KHV0LFtTLEEsUixELnl5LCRbMV0sVCxDXS5jb25jYXQoQikpLHR5cGVvZiBsdDwidSIpcmV0dXJuIGx0O3R0JiYoeD14LnNsaWNlKDAsLTEqdHQqMiksVD1ULnNsaWNlKDAsLTEqdHQpLEM9Qy5zbGljZSgwLC0xKnR0KSkseC5wdXNoKHRoaXMucHJvZHVjdGlvbnNfWyRbMV1dWzBdKSxULnB1c2godXQuJCksQy5wdXNoKHV0Ll8kKSxLPU1beFt4Lmxlbmd0aC0yXV1beFt4Lmxlbmd0aC0xXV0seC5wdXNoKEspO2JyZWFrO2Nhc2UgMzpyZXR1cm4hMH19cmV0dXJuITB9fSxwPWZ1bmN0aW9uKCl7dmFyIF89e0VPRjoxLHBhcnNlRXJyb3I6ZnVuY3Rpb24oYix4KXtpZih0aGlzLnl5LnBhcnNlcil0aGlzLnl5LnBhcnNlci5wYXJzZUVycm9yKGIseCk7ZWxzZSB0aHJvdyBuZXcgRXJyb3IoYil9LHNldElucHV0OmZ1bmN0aW9uKHksYil7cmV0dXJuIHRoaXMueXk9Ynx8dGhpcy55eXx8e30sdGhpcy5faW5wdXQ9eSx0aGlzLl9tb3JlPXRoaXMuX2JhY2t0cmFjaz10aGlzLmRvbmU9ITEsdGhpcy55eWxpbmVubz10aGlzLnl5bGVuZz0wLHRoaXMueXl0ZXh0PXRoaXMubWF0Y2hlZD10aGlzLm1hdGNoPSIiLHRoaXMuY29uZGl0aW9uU3RhY2s9WyJJTklUSUFMIl0sdGhpcy55eWxsb2M9e2ZpcnN0X2xpbmU6MSxmaXJzdF9jb2x1bW46MCxsYXN0X2xpbmU6MSxsYXN0X2NvbHVtbjowfSx0aGlzLm9wdGlvbnMucmFuZ2VzJiYodGhpcy55eWxsb2MucmFuZ2U9WzAsMF0pLHRoaXMub2Zmc2V0PTAsdGhpc30saW5wdXQ6ZnVuY3Rpb24oKXt2YXIgeT10aGlzLl9pbnB1dFswXTt0aGlzLnl5dGV4dCs9eSx0aGlzLnl5bGVuZysrLHRoaXMub2Zmc2V0KyssdGhpcy5tYXRjaCs9eSx0aGlzLm1hdGNoZWQrPXk7dmFyIGI9eS5tYXRjaCgvKD86XHJcbj98XG4pLiovZyk7cmV0dXJuIGI/KHRoaXMueXlsaW5lbm8rKyx0aGlzLnl5bGxvYy5sYXN0X2xpbmUrKyk6dGhpcy55eWxsb2MubGFzdF9jb2x1bW4rKyx0aGlzLm9wdGlvbnMucmFuZ2VzJiZ0aGlzLnl5bGxvYy5yYW5nZVsxXSsrLHRoaXMuX2lucHV0PXRoaXMuX2lucHV0LnNsaWNlKDEpLHl9LHVucHV0OmZ1bmN0aW9uKHkpe3ZhciBiPXkubGVuZ3RoLHg9eS5zcGxpdCgvKD86XHJcbj98XG4pL2cpO3RoaXMuX2lucHV0PXkrdGhpcy5faW5wdXQsdGhpcy55eXRleHQ9dGhpcy55eXRleHQuc3Vic3RyKDAsdGhpcy55eXRleHQubGVuZ3RoLWIpLHRoaXMub2Zmc2V0LT1iO3ZhciBrPXRoaXMubWF0Y2guc3BsaXQoLyg/OlxyXG4/fFxuKS9nKTt0aGlzLm1hdGNoPXRoaXMubWF0Y2guc3Vic3RyKDAsdGhpcy5tYXRjaC5sZW5ndGgtMSksdGhpcy5tYXRjaGVkPXRoaXMubWF0Y2hlZC5zdWJzdHIoMCx0aGlzLm1hdGNoZWQubGVuZ3RoLTEpLHgubGVuZ3RoLTEmJih0aGlzLnl5bGluZW5vLT14Lmxlbmd0aC0xKTt2YXIgVD10aGlzLnl5bGxvYy5yYW5nZTtyZXR1cm4gdGhpcy55eWxsb2M9e2ZpcnN0X2xpbmU6dGhpcy55eWxsb2MuZmlyc3RfbGluZSxsYXN0X2xpbmU6dGhpcy55eWxpbmVubysxLGZpcnN0X2NvbHVtbjp0aGlzLnl5bGxvYy5maXJzdF9jb2x1bW4sbGFzdF9jb2x1bW46eD8oeC5sZW5ndGg9PT1rLmxlbmd0aD90aGlzLnl5bGxvYy5maXJzdF9jb2x1bW46MCkra1trLmxlbmd0aC14Lmxlbmd0aF0ubGVuZ3RoLXhbMF0ubGVuZ3RoOnRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbi1ifSx0aGlzLm9wdGlvbnMucmFuZ2VzJiYodGhpcy55eWxsb2MucmFuZ2U9W1RbMF0sVFswXSt0aGlzLnl5bGVuZy1iXSksdGhpcy55eWxlbmc9dGhpcy55eXRleHQubGVuZ3RoLHRoaXN9LG1vcmU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fbW9yZT0hMCx0aGlzfSxyZWplY3Q6ZnVuY3Rpb24oKXtpZih0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyKXRoaXMuX2JhY2t0cmFjaz0hMDtlbHNlIHJldHVybiB0aGlzLnBhcnNlRXJyb3IoIkxleGljYWwgZXJyb3Igb24gbGluZSAiKyh0aGlzLnl5bGluZW5vKzEpK2AuIFlvdSBjYW4gb25seSBpbnZva2UgcmVqZWN0KCkgaW4gdGhlIGxleGVyIHdoZW4gdGhlIGxleGVyIGlzIG9mIHRoZSBiYWNrdHJhY2tpbmcgcGVyc3Vhc2lvbiAob3B0aW9ucy5iYWNrdHJhY2tfbGV4ZXIgPSB0cnVlKS4KYCt0aGlzLnNob3dQb3NpdGlvbigpLHt0ZXh0OiIiLHRva2VuOm51bGwsbGluZTp0aGlzLnl5bGluZW5vfSk7cmV0dXJuIHRoaXN9LGxlc3M6ZnVuY3Rpb24oeSl7dGhpcy51bnB1dCh0aGlzLm1hdGNoLnNsaWNlKHkpKX0scGFzdElucHV0OmZ1bmN0aW9uKCl7dmFyIHk9dGhpcy5tYXRjaGVkLnN1YnN0cigwLHRoaXMubWF0Y2hlZC5sZW5ndGgtdGhpcy5tYXRjaC5sZW5ndGgpO3JldHVybih5Lmxlbmd0aD4yMD8iLi4uIjoiIikreS5zdWJzdHIoLTIwKS5yZXBsYWNlKC9cbi9nLCIiKX0sdXBjb21pbmdJbnB1dDpmdW5jdGlvbigpe3ZhciB5PXRoaXMubWF0Y2g7cmV0dXJuIHkubGVuZ3RoPDIwJiYoeSs9dGhpcy5faW5wdXQuc3Vic3RyKDAsMjAteS5sZW5ndGgpKSwoeS5zdWJzdHIoMCwyMCkrKHkubGVuZ3RoPjIwPyIuLi4iOiIiKSkucmVwbGFjZSgvXG4vZywiIil9LHNob3dQb3NpdGlvbjpmdW5jdGlvbigpe3ZhciB5PXRoaXMucGFzdElucHV0KCksYj1uZXcgQXJyYXkoeS5sZW5ndGgrMSkuam9pbigiLSIpO3JldHVybiB5K3RoaXMudXBjb21pbmdJbnB1dCgpK2AKYCtiKyJeIn0sdGVzdF9tYXRjaDpmdW5jdGlvbih5LGIpe3ZhciB4LGssVDtpZih0aGlzLm9wdGlvbnMuYmFja3RyYWNrX2xleGVyJiYoVD17eXlsaW5lbm86dGhpcy55eWxpbmVubyx5eWxsb2M6e2ZpcnN0X2xpbmU6dGhpcy55eWxsb2MuZmlyc3RfbGluZSxsYXN0X2xpbmU6dGhpcy5sYXN0X2xpbmUsZmlyc3RfY29sdW1uOnRoaXMueXlsbG9jLmZpcnN0X2NvbHVtbixsYXN0X2NvbHVtbjp0aGlzLnl5bGxvYy5sYXN0X2NvbHVtbn0seXl0ZXh0OnRoaXMueXl0ZXh0LG1hdGNoOnRoaXMubWF0Y2gsbWF0Y2hlczp0aGlzLm1hdGNoZXMsbWF0Y2hlZDp0aGlzLm1hdGNoZWQseXlsZW5nOnRoaXMueXlsZW5nLG9mZnNldDp0aGlzLm9mZnNldCxfbW9yZTp0aGlzLl9tb3JlLF9pbnB1dDp0aGlzLl9pbnB1dCx5eTp0aGlzLnl5LGNvbmRpdGlvblN0YWNrOnRoaXMuY29uZGl0aW9uU3RhY2suc2xpY2UoMCksZG9uZTp0aGlzLmRvbmV9LHRoaXMub3B0aW9ucy5yYW5nZXMmJihULnl5bGxvYy5yYW5nZT10aGlzLnl5bGxvYy5yYW5nZS5zbGljZSgwKSkpLGs9eVswXS5tYXRjaCgvKD86XHJcbj98XG4pLiovZyksayYmKHRoaXMueXlsaW5lbm8rPWsubGVuZ3RoKSx0aGlzLnl5bGxvYz17Zmlyc3RfbGluZTp0aGlzLnl5bGxvYy5sYXN0X2xpbmUsbGFzdF9saW5lOnRoaXMueXlsaW5lbm8rMSxmaXJzdF9jb2x1bW46dGhpcy55eWxsb2MubGFzdF9jb2x1bW4sbGFzdF9jb2x1bW46az9rW2subGVuZ3RoLTFdLmxlbmd0aC1rW2subGVuZ3RoLTFdLm1hdGNoKC9ccj9cbj8vKVswXS5sZW5ndGg6dGhpcy55eWxsb2MubGFzdF9jb2x1bW4reVswXS5sZW5ndGh9LHRoaXMueXl0ZXh0Kz15WzBdLHRoaXMubWF0Y2grPXlbMF0sdGhpcy5tYXRjaGVzPXksdGhpcy55eWxlbmc9dGhpcy55eXRleHQubGVuZ3RoLHRoaXMub3B0aW9ucy5yYW5nZXMmJih0aGlzLnl5bGxvYy5yYW5nZT1bdGhpcy5vZmZzZXQsdGhpcy5vZmZzZXQrPXRoaXMueXlsZW5nXSksdGhpcy5fbW9yZT0hMSx0aGlzLl9iYWNrdHJhY2s9ITEsdGhpcy5faW5wdXQ9dGhpcy5faW5wdXQuc2xpY2UoeVswXS5sZW5ndGgpLHRoaXMubWF0Y2hlZCs9eVswXSx4PXRoaXMucGVyZm9ybUFjdGlvbi5jYWxsKHRoaXMsdGhpcy55eSx0aGlzLGIsdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXSksdGhpcy5kb25lJiZ0aGlzLl9pbnB1dCYmKHRoaXMuZG9uZT0hMSkseClyZXR1cm4geDtpZih0aGlzLl9iYWNrdHJhY2spe2Zvcih2YXIgQyBpbiBUKXRoaXNbQ109VFtDXTtyZXR1cm4hMX1yZXR1cm4hMX0sbmV4dDpmdW5jdGlvbigpe2lmKHRoaXMuZG9uZSlyZXR1cm4gdGhpcy5FT0Y7dGhpcy5faW5wdXR8fCh0aGlzLmRvbmU9ITApO3ZhciB5LGIseCxrO3RoaXMuX21vcmV8fCh0aGlzLnl5dGV4dD0iIix0aGlzLm1hdGNoPSIiKTtmb3IodmFyIFQ9dGhpcy5fY3VycmVudFJ1bGVzKCksQz0wO0M8VC5sZW5ndGg7QysrKWlmKHg9dGhpcy5faW5wdXQubWF0Y2godGhpcy5ydWxlc1tUW0NdXSkseCYmKCFifHx4WzBdLmxlbmd0aD5iWzBdLmxlbmd0aCkpe2lmKGI9eCxrPUMsdGhpcy5vcHRpb25zLmJhY2t0cmFja19sZXhlcil7aWYoeT10aGlzLnRlc3RfbWF0Y2goeCxUW0NdKSx5IT09ITEpcmV0dXJuIHk7aWYodGhpcy5fYmFja3RyYWNrKXtiPSExO2NvbnRpbnVlfWVsc2UgcmV0dXJuITF9ZWxzZSBpZighdGhpcy5vcHRpb25zLmZsZXgpYnJlYWt9cmV0dXJuIGI/KHk9dGhpcy50ZXN0X21hdGNoKGIsVFtrXSkseSE9PSExP3k6ITEpOnRoaXMuX2lucHV0PT09IiI/dGhpcy5FT0Y6dGhpcy5wYXJzZUVycm9yKCJMZXhpY2FsIGVycm9yIG9uIGxpbmUgIisodGhpcy55eWxpbmVubysxKStgLiBVbnJlY29nbml6ZWQgdGV4dC4KYCt0aGlzLnNob3dQb3NpdGlvbigpLHt0ZXh0OiIiLHRva2VuOm51bGwsbGluZTp0aGlzLnl5bGluZW5vfSl9LGxleDpmdW5jdGlvbigpe3ZhciBiPXRoaXMubmV4dCgpO3JldHVybiBifHx0aGlzLmxleCgpfSxiZWdpbjpmdW5jdGlvbihiKXt0aGlzLmNvbmRpdGlvblN0YWNrLnB1c2goYil9LHBvcFN0YXRlOmZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5jb25kaXRpb25TdGFjay5sZW5ndGgtMTtyZXR1cm4gYj4wP3RoaXMuY29uZGl0aW9uU3RhY2sucG9wKCk6dGhpcy5jb25kaXRpb25TdGFja1swXX0sX2N1cnJlbnRSdWxlczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aCYmdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXT90aGlzLmNvbmRpdGlvbnNbdGhpcy5jb25kaXRpb25TdGFja1t0aGlzLmNvbmRpdGlvblN0YWNrLmxlbmd0aC0xXV0ucnVsZXM6dGhpcy5jb25kaXRpb25zLklOSVRJQUwucnVsZXN9LHRvcFN0YXRlOmZ1bmN0aW9uKGIpe3JldHVybiBiPXRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RoLTEtTWF0aC5hYnMoYnx8MCksYj49MD90aGlzLmNvbmRpdGlvblN0YWNrW2JdOiJJTklUSUFMIn0scHVzaFN0YXRlOmZ1bmN0aW9uKGIpe3RoaXMuYmVnaW4oYil9LHN0YXRlU3RhY2tTaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29uZGl0aW9uU3RhY2subGVuZ3RofSxvcHRpb25zOnsiY2FzZS1pbnNlbnNpdGl2ZSI6ITB9LHBlcmZvcm1BY3Rpb246ZnVuY3Rpb24oYix4LGssVCl7c3dpdGNoKGspe2Nhc2UgMDpyZXR1cm4gdGhpcy5iZWdpbigib3Blbl9kaXJlY3RpdmUiKSwyNjtjYXNlIDE6cmV0dXJuIHRoaXMuYmVnaW4oInR5cGVfZGlyZWN0aXZlIiksMjc7Y2FzZSAyOnJldHVybiB0aGlzLnBvcFN0YXRlKCksdGhpcy5iZWdpbigiYXJnX2RpcmVjdGl2ZSIpLDE1O2Nhc2UgMzpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLHRoaXMucG9wU3RhdGUoKSwyOTtjYXNlIDQ6cmV0dXJuIDI4O2Nhc2UgNTpicmVhaztjYXNlIDY6YnJlYWs7Y2FzZSA3OnJldHVybiAxMTtjYXNlIDg6YnJlYWs7Y2FzZSA5OmJyZWFrO2Nhc2UgMTA6cmV0dXJuIDQ7Y2FzZSAxMTpyZXR1cm4gMTc7Y2FzZSAxMjpyZXR1cm4gdGhpcy5iZWdpbigiYWNjX3RpdGxlIiksMTg7Y2FzZSAxMzpyZXR1cm4gdGhpcy5wb3BTdGF0ZSgpLCJhY2NfdGl0bGVfdmFsdWUiO2Nhc2UgMTQ6cmV0dXJuIHRoaXMuYmVnaW4oImFjY19kZXNjciIpLDIwO2Nhc2UgMTU6cmV0dXJuIHRoaXMucG9wU3RhdGUoKSwiYWNjX2Rlc2NyX3ZhbHVlIjtjYXNlIDE2OnRoaXMuYmVnaW4oImFjY19kZXNjcl9tdWx0aWxpbmUiKTticmVhaztjYXNlIDE3OnRoaXMucG9wU3RhdGUoKTticmVhaztjYXNlIDE4OnJldHVybiJhY2NfZGVzY3JfbXVsdGlsaW5lX3ZhbHVlIjtjYXNlIDE5OnJldHVybiAyMztjYXNlIDIwOnJldHVybiAyNDtjYXNlIDIxOnJldHVybiAyNTtjYXNlIDIyOnJldHVybiAxNTtjYXNlIDIzOnJldHVybiA2O2Nhc2UgMjQ6cmV0dXJuIklOVkFMSUQifX0scnVsZXM6Wy9eKD86JSVceykvaSwvXig/OigoPzooPyFcfSUlKVteOi5dKSopKS9pLC9eKD86OikvaSwvXig/Olx9JSUpL2ksL14oPzooKD86KD8hXH0lJSkufFxuKSopKS9pLC9eKD86JSg/IVx7KVteXG5dKikvaSwvXig/OlteXH1dJSVbXlxuXSopL2ksL14oPzpbXG5dKykvaSwvXig/OlxzKykvaSwvXig/OiNbXlxuXSopL2ksL14oPzpqb3VybmV5XGIpL2ksL14oPzp0aXRsZVxzW14jXG47XSspL2ksL14oPzphY2NUaXRsZVxzKjpccyopL2ksL14oPzooPyFcbnx8KSpbXlxuXSopL2ksL14oPzphY2NEZXNjclxzKjpccyopL2ksL14oPzooPyFcbnx8KSpbXlxuXSopL2ksL14oPzphY2NEZXNjclxzKlx7XHMqKS9pLC9eKD86W1x9XSkvaSwvXig/OlteXH1dKikvaSwvXig/OnNlY3Rpb25cc1teIzpcbjtdKykvaSwvXig/OlteIzpcbjtdKykvaSwvXig/OjpbXiNcbjtdKykvaSwvXig/OjopL2ksL14oPzokKS9pLC9eKD86LikvaV0sY29uZGl0aW9uczp7b3Blbl9kaXJlY3RpdmU6e3J1bGVzOlsxXSxpbmNsdXNpdmU6ITF9LHR5cGVfZGlyZWN0aXZlOntydWxlczpbMiwzXSxpbmNsdXNpdmU6ITF9LGFyZ19kaXJlY3RpdmU6e3J1bGVzOlszLDRdLGluY2x1c2l2ZTohMX0sYWNjX2Rlc2NyX211bHRpbGluZTp7cnVsZXM6WzE3LDE4XSxpbmNsdXNpdmU6ITF9LGFjY19kZXNjcjp7cnVsZXM6WzE1XSxpbmNsdXNpdmU6ITF9LGFjY190aXRsZTp7cnVsZXM6WzEzXSxpbmNsdXNpdmU6ITF9LElOSVRJQUw6e3J1bGVzOlswLDUsNiw3LDgsOSwxMCwxMSwxMiwxNCwxNiwxOSwyMCwyMSwyMiwyMywyNF0saW5jbHVzaXZlOiEwfX19O3JldHVybiBffSgpO2YubGV4ZXI9cDtmdW5jdGlvbiBtKCl7dGhpcy55eT17fX1yZXR1cm4gbS5wcm90b3R5cGU9ZixmLlBhcnNlcj1tLG5ldyBtfSgpO2VfLnBhcnNlcj1lXztjb25zdCBqYXQ9dD0+dC5tYXRjaCgvXlxzKmpvdXJuZXkvKSE9PW51bGw7bGV0IHBsPSIiO2NvbnN0IHJfPVtdLGd1PVtdLGdsPVtdLCRhdD1mdW5jdGlvbih0LGUscil7WGUucGFyc2VEaXJlY3RpdmUodGhpcyx0LGUscil9LFhhdD1mdW5jdGlvbigpe3JfLmxlbmd0aD0wLGd1Lmxlbmd0aD0wLHBsPSIiLGdsLmxlbmd0aD0wLGNpKCl9LEthdD1mdW5jdGlvbih0KXtwbD10LHJfLnB1c2godCl9LFphdD1mdW5jdGlvbigpe3JldHVybiByX30sUWF0PWZ1bmN0aW9uKCl7bGV0IHQ9cUwoKTtjb25zdCBlPTEwMDtsZXQgcj0wO2Zvcig7IXQmJnI8ZTspdD1xTCgpLHIrKztyZXR1cm4gZ3UucHVzaCguLi5nbCksZ3V9LEphdD1mdW5jdGlvbigpe2NvbnN0IHQ9W107cmV0dXJuIGd1LmZvckVhY2gocj0+e3IucGVvcGxlJiZ0LnB1c2goLi4uci5wZW9wbGUpfSksWy4uLm5ldyBTZXQodCldLnNvcnQoKX0sdHN0PWZ1bmN0aW9uKHQsZSl7Y29uc3Qgcj1lLnN1YnN0cigxKS5zcGxpdCgiOiIpO2xldCBuPTAsaT1bXTtyLmxlbmd0aD09PTE/KG49TnVtYmVyKHJbMF0pLGk9W10pOihuPU51bWJlcihyWzBdKSxpPXJbMV0uc3BsaXQoIiwiKSk7Y29uc3QgYT1pLm1hcChvPT5vLnRyaW0oKSkscz17c2VjdGlvbjpwbCx0eXBlOnBsLHBlb3BsZTphLHRhc2s6dCxzY29yZTpufTtnbC5wdXNoKHMpfSxlc3Q9ZnVuY3Rpb24odCl7Y29uc3QgZT17c2VjdGlvbjpwbCx0eXBlOnBsLGRlc2NyaXB0aW9uOnQsdGFzazp0LGNsYXNzZXM6W119O2d1LnB1c2goZSl9LHFMPWZ1bmN0aW9uKCl7Y29uc3QgdD1mdW5jdGlvbihyKXtyZXR1cm4gZ2xbcl0ucHJvY2Vzc2VkfTtsZXQgZT0hMDtmb3IobGV0IHI9MDtyPGdsLmxlbmd0aDtyKyspdChyKSxlPWUmJmdsW3JdLnByb2Nlc3NlZDtyZXR1cm4gZX0sVkw9e3BhcnNlRGlyZWN0aXZlOiRhdCxnZXRDb25maWc6KCk9Pm50KCkuam91cm5leSxjbGVhcjpYYXQsc2V0RGlhZ3JhbVRpdGxlOmMxLGdldERpYWdyYW1UaXRsZTp1MSxzZXRBY2NUaXRsZTpZbixnZXRBY2NUaXRsZTp1aSxzZXRBY2NEZXNjcmlwdGlvbjpoaSxnZXRBY2NEZXNjcmlwdGlvbjpmaSxhZGRTZWN0aW9uOkthdCxnZXRTZWN0aW9uczpaYXQsZ2V0VGFza3M6UWF0LGFkZFRhc2s6dHN0LGFkZFRhc2tPcmc6ZXN0LGdldEFjdG9yczpmdW5jdGlvbigpe3JldHVybiBKYXQoKX19LHgwPWZ1bmN0aW9uKHQsZSl7Y29uc3Qgcj10LmFwcGVuZCgicmVjdCIpO3JldHVybiByLmF0dHIoIngiLGUueCksci5hdHRyKCJ5IixlLnkpLHIuYXR0cigiZmlsbCIsZS5maWxsKSxyLmF0dHIoInN0cm9rZSIsZS5zdHJva2UpLHIuYXR0cigid2lkdGgiLGUud2lkdGgpLHIuYXR0cigiaGVpZ2h0IixlLmhlaWdodCksci5hdHRyKCJyeCIsZS5yeCksci5hdHRyKCJyeSIsZS5yeSksdHlwZW9mIGUuY2xhc3M8InUiJiZyLmF0dHIoImNsYXNzIixlLmNsYXNzKSxyfSxyc3Q9ZnVuY3Rpb24odCxlKXtjb25zdCBuPXQuYXBwZW5kKCJjaXJjbGUiKS5hdHRyKCJjeCIsZS5jeCkuYXR0cigiY3kiLGUuY3kpLmF0dHIoImNsYXNzIiwiZmFjZSIpLmF0dHIoInIiLDE1KS5hdHRyKCJzdHJva2Utd2lkdGgiLDIpLmF0dHIoIm92ZXJmbG93IiwidmlzaWJsZSIpLGk9dC5hcHBlbmQoImciKTtpLmFwcGVuZCgiY2lyY2xlIikuYXR0cigiY3giLGUuY3gtMTUvMykuYXR0cigiY3kiLGUuY3ktMTUvMykuYXR0cigiciIsMS41KS5hdHRyKCJzdHJva2Utd2lkdGgiLDIpLmF0dHIoImZpbGwiLCIjNjY2IikuYXR0cigic3Ryb2tlIiwiIzY2NiIpLGkuYXBwZW5kKCJjaXJjbGUiKS5hdHRyKCJjeCIsZS5jeCsxNS8zKS5hdHRyKCJjeSIsZS5jeS0xNS8zKS5hdHRyKCJyIiwxLjUpLmF0dHIoInN0cm9rZS13aWR0aCIsMikuYXR0cigiZmlsbCIsIiM2NjYiKS5hdHRyKCJzdHJva2UiLCIjNjY2Iik7ZnVuY3Rpb24gYShsKXtjb25zdCB1PXlmKCkuc3RhcnRBbmdsZShNYXRoLlBJLzIpLmVuZEFuZ2xlKDMqKE1hdGguUEkvMikpLmlubmVyUmFkaXVzKDcuNSkub3V0ZXJSYWRpdXMoNi44MTgxODE4MTgxODE4MTc1KTtsLmFwcGVuZCgicGF0aCIpLmF0dHIoImNsYXNzIiwibW91dGgiKS5hdHRyKCJkIix1KS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitlLmN4KyIsIisoZS5jeSsyKSsiKSIpfWZ1bmN0aW9uIHMobCl7Y29uc3QgdT15ZigpLnN0YXJ0QW5nbGUoMypNYXRoLlBJLzIpLmVuZEFuZ2xlKDUqKE1hdGguUEkvMikpLmlubmVyUmFkaXVzKDcuNSkub3V0ZXJSYWRpdXMoNi44MTgxODE4MTgxODE4MTc1KTtsLmFwcGVuZCgicGF0aCIpLmF0dHIoImNsYXNzIiwibW91dGgiKS5hdHRyKCJkIix1KS5hdHRyKCJ0cmFuc2Zvcm0iLCJ0cmFuc2xhdGUoIitlLmN4KyIsIisoZS5jeSs3KSsiKSIpfWZ1bmN0aW9uIG8obCl7bC5hcHBlbmQoImxpbmUiKS5hdHRyKCJjbGFzcyIsIm1vdXRoIikuYXR0cigic3Ryb2tlIiwyKS5hdHRyKCJ4MSIsZS5jeC01KS5hdHRyKCJ5MSIsZS5jeSs3KS5hdHRyKCJ4MiIsZS5jeCs1KS5hdHRyKCJ5MiIsZS5jeSs3KS5hdHRyKCJjbGFzcyIsIm1vdXRoIikuYXR0cigic3Ryb2tlLXdpZHRoIiwiMXB4IikuYXR0cigic3Ryb2tlIiwiIzY2NiIpfXJldHVybiBlLnNjb3JlPjM/YShpKTplLnNjb3JlPDM/cyhpKTpvKGkpLG59LHpMPWZ1bmN0aW9uKHQsZSl7Y29uc3Qgcj10LmFwcGVuZCgiY2lyY2xlIik7cmV0dXJuIHIuYXR0cigiY3giLGUuY3gpLHIuYXR0cigiY3kiLGUuY3kpLHIuYXR0cigiY2xhc3MiLCJhY3Rvci0iK2UucG9zKSxyLmF0dHIoImZpbGwiLGUuZmlsbCksci5hdHRyKCJzdHJva2UiLGUuc3Ryb2tlKSxyLmF0dHIoInIiLGUuciksdHlwZW9mIHIuY2xhc3M8InUiJiZyLmF0dHIoImNsYXNzIixyLmNsYXNzKSx0eXBlb2YgZS50aXRsZTwidSImJnIuYXBwZW5kKCJ0aXRsZSIpLnRleHQoZS50aXRsZSkscn0sWUw9ZnVuY3Rpb24odCxlKXtjb25zdCByPWUudGV4dC5yZXBsYWNlKC88YnJccypcLz8+L2dpLCIgIiksbj10LmFwcGVuZCgidGV4dCIpO24uYXR0cigieCIsZS54KSxuLmF0dHIoInkiLGUueSksbi5hdHRyKCJjbGFzcyIsImxlZ2VuZCIpLG4uc3R5bGUoInRleHQtYW5jaG9yIixlLmFuY2hvciksdHlwZW9mIGUuY2xhc3M8InUiJiZuLmF0dHIoImNsYXNzIixlLmNsYXNzKTtjb25zdCBpPW4uYXBwZW5kKCJ0c3BhbiIpO3JldHVybiBpLmF0dHIoIngiLGUueCtlLnRleHRNYXJnaW4qMiksaS50ZXh0KHIpLG59LG5zdD1mdW5jdGlvbih0LGUpe2Z1bmN0aW9uIHIoaSxhLHMsbyxsKXtyZXR1cm4gaSsiLCIrYSsiICIrKGkrcykrIiwiK2ErIiAiKyhpK3MpKyIsIisoYStvLWwpKyIgIisoaStzLWwqMS4yKSsiLCIrKGErbykrIiAiK2krIiwiKyhhK28pfWNvbnN0IG49dC5hcHBlbmQoInBvbHlnb24iKTtuLmF0dHIoInBvaW50cyIscihlLngsZS55LDUwLDIwLDcpKSxuLmF0dHIoImNsYXNzIiwibGFiZWxCb3giKSxlLnk9ZS55K2UubGFiZWxNYXJnaW4sZS54PWUueCsuNSplLmxhYmVsTWFyZ2luLFlMKHQsZSl9LGlzdD1mdW5jdGlvbih0LGUscil7Y29uc3Qgbj10LmFwcGVuZCgiZyIpLGk9bl8oKTtpLng9ZS54LGkueT1lLnksaS5maWxsPWUuZmlsbCxpLndpZHRoPXIud2lkdGgsaS5oZWlnaHQ9ci5oZWlnaHQsaS5jbGFzcz0iam91cm5leS1zZWN0aW9uIHNlY3Rpb24tdHlwZS0iK2UubnVtLGkucng9MyxpLnJ5PTMseDAobixpKSxXTChyKShlLnRleHQsbixpLngsaS55LGkud2lkdGgsaS5oZWlnaHQse2NsYXNzOiJqb3VybmV5LXNlY3Rpb24gc2VjdGlvbi10eXBlLSIrZS5udW19LHIsZS5jb2xvdXIpfTtsZXQgVUw9LTE7Y29uc3QgYXN0PWZ1bmN0aW9uKHQsZSxyKXtjb25zdCBuPWUueCtyLndpZHRoLzIsaT10LmFwcGVuZCgiZyIpO1VMKys7Y29uc3QgYT0zMDArNSozMDtpLmFwcGVuZCgibGluZSIpLmF0dHIoImlkIiwidGFzayIrVUwpLmF0dHIoIngxIixuKS5hdHRyKCJ5MSIsZS55KS5hdHRyKCJ4MiIsbikuYXR0cigieTIiLGEpLmF0dHIoImNsYXNzIiwidGFzay1saW5lIikuYXR0cigic3Ryb2tlLXdpZHRoIiwiMXB4IikuYXR0cigic3Ryb2tlLWRhc2hhcnJheSIsIjQgMiIpLmF0dHIoInN0cm9rZSIsIiM2NjYiKSxyc3QoaSx7Y3g6bixjeTozMDArKDUtZS5zY29yZSkqMzAsc2NvcmU6ZS5zY29yZX0pO2NvbnN0IHM9bl8oKTtzLng9ZS54LHMueT1lLnkscy5maWxsPWUuZmlsbCxzLndpZHRoPXIud2lkdGgscy5oZWlnaHQ9ci5oZWlnaHQscy5jbGFzcz0idGFzayB0YXNrLXR5cGUtIitlLm51bSxzLnJ4PTMscy5yeT0zLHgwKGkscyk7bGV0IG89ZS54KzE0O2UucGVvcGxlLmZvckVhY2gobD0+e2NvbnN0IHU9ZS5hY3RvcnNbbF0uY29sb3IsaD17Y3g6byxjeTplLnkscjo3LGZpbGw6dSxzdHJva2U6IiMwMDAiLHRpdGxlOmwscG9zOmUuYWN0b3JzW2xdLnBvc2l0aW9ufTt6TChpLGgpLG8rPTEwfSksV0wocikoZS50YXNrLGkscy54LHMueSxzLndpZHRoLHMuaGVpZ2h0LHtjbGFzczoidGFzayJ9LHIsZS5jb2xvdXIpfSxzc3Q9ZnVuY3Rpb24odCxlKXt4MCh0LHt4OmUuc3RhcnR4LHk6ZS5zdGFydHksd2lkdGg6ZS5zdG9weC1lLnN0YXJ0eCxoZWlnaHQ6ZS5zdG9weS1lLnN0YXJ0eSxmaWxsOmUuZmlsbCxjbGFzczoicmVjdCJ9KS5sb3dlcigpfSxvc3Q9ZnVuY3Rpb24oKXtyZXR1cm57eDowLHk6MCxmaWxsOnZvaWQgMCwidGV4dC1hbmNob3IiOiJzdGFydCIsd2lkdGg6MTAwLGhlaWdodDoxMDAsdGV4dE1hcmdpbjowLHJ4OjAscnk6MH19LG5fPWZ1bmN0aW9uKCl7cmV0dXJue3g6MCx5OjAsd2lkdGg6MTAwLGFuY2hvcjoic3RhcnQiLGhlaWdodDoxMDAscng6MCxyeTowfX0sV0w9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGksYSxzLG8sbCx1LGgsZCl7Y29uc3QgZj1hLmFwcGVuZCgidGV4dCIpLmF0dHIoIngiLHMrbC8yKS5hdHRyKCJ5IixvK3UvMis1KS5zdHlsZSgiZm9udC1jb2xvciIsZCkuc3R5bGUoInRleHQtYW5jaG9yIiwibWlkZGxlIikudGV4dChpKTtuKGYsaCl9ZnVuY3Rpb24gZShpLGEscyxvLGwsdSxoLGQsZil7Y29uc3R7dGFza0ZvbnRTaXplOnAsdGFza0ZvbnRGYW1pbHk6bX09ZCxfPWkuc3BsaXQoLzxiclxzKlwvPz4vZ2kpO2ZvcihsZXQgeT0wO3k8Xy5sZW5ndGg7eSsrKXtjb25zdCBiPXkqcC1wKihfLmxlbmd0aC0xKS8yLHg9YS5hcHBlbmQoInRleHQiKS5hdHRyKCJ4IixzK2wvMikuYXR0cigieSIsbykuYXR0cigiZmlsbCIsZikuc3R5bGUoInRleHQtYW5jaG9yIiwibWlkZGxlIikuc3R5bGUoImZvbnQtc2l6ZSIscCkuc3R5bGUoImZvbnQtZmFtaWx5IixtKTt4LmFwcGVuZCgidHNwYW4iKS5hdHRyKCJ4IixzK2wvMikuYXR0cigiZHkiLGIpLnRleHQoX1t5XSkseC5hdHRyKCJ5IixvK3UvMikuYXR0cigiZG9taW5hbnQtYmFzZWxpbmUiLCJjZW50cmFsIikuYXR0cigiYWxpZ25tZW50LWJhc2VsaW5lIiwiY2VudHJhbCIpLG4oeCxoKX19ZnVuY3Rpb24gcihpLGEscyxvLGwsdSxoLGQpe2NvbnN0IGY9YS5hcHBlbmQoInN3aXRjaCIpLG09Zi5hcHBlbmQoImZvcmVpZ25PYmplY3QiKS5hdHRyKCJ4IixzKS5hdHRyKCJ5IixvKS5hdHRyKCJ3aWR0aCIsbCkuYXR0cigiaGVpZ2h0Iix1KS5hdHRyKCJwb3NpdGlvbiIsImZpeGVkIikuYXBwZW5kKCJ4aHRtbDpkaXYiKS5zdHlsZSgiZGlzcGxheSIsInRhYmxlIikuc3R5bGUoImhlaWdodCIsIjEwMCUiKS5zdHlsZSgid2lkdGgiLCIxMDAlIik7bS5hcHBlbmQoImRpdiIpLmF0dHIoImNsYXNzIiwibGFiZWwiKS5zdHlsZSgiZGlzcGxheSIsInRhYmxlLWNlbGwiKS5zdHlsZSgidGV4dC1hbGlnbiIsImNlbnRlciIpLnN0eWxlKCJ2ZXJ0aWNhbC1hbGlnbiIsIm1pZGRsZSIpLnRleHQoaSksZShpLGYscyxvLGwsdSxoLGQpLG4obSxoKX1mdW5jdGlvbiBuKGksYSl7Zm9yKGNvbnN0IHMgaW4gYSlzIGluIGEmJmkuYXR0cihzLGFbc10pfXJldHVybiBmdW5jdGlvbihpKXtyZXR1cm4gaS50ZXh0UGxhY2VtZW50PT09ImZvIj9yOmkudGV4dFBsYWNlbWVudD09PSJvbGQiP3Q6ZX19KCkseXU9e2RyYXdSZWN0OngwLGRyYXdDaXJjbGU6ekwsZHJhd1NlY3Rpb246aXN0LGRyYXdUZXh0OllMLGRyYXdMYWJlbDpuc3QsZHJhd1Rhc2s6YXN0LGRyYXdCYWNrZ3JvdW5kUmVjdDpzc3QsZ2V0VGV4dE9iajpvc3QsZ2V0Tm90ZVJlY3Q6bl8saW5pdEdyYXBoaWNzOmZ1bmN0aW9uKHQpe3QuYXBwZW5kKCJkZWZzIikuYXBwZW5kKCJtYXJrZXIiKS5hdHRyKCJpZCIsImFycm93aGVhZCIpLmF0dHIoInJlZlgiLDUpLmF0dHIoInJlZlkiLDIpLmF0dHIoIm1hcmtlcldpZHRoIiw2KS5hdHRyKCJtYXJrZXJIZWlnaHQiLDQpLmF0dHIoIm9yaWVudCIsImF1dG8iKS5hcHBlbmQoInBhdGgiKS5hdHRyKCJkIiwiTSAwLDAgViA0IEw2LDIgWiIpfX0sbHN0PWZ1bmN0aW9uKHQpe09iamVjdC5rZXlzKHQpLmZvckVhY2goZnVuY3Rpb24ocil7azBbcl09dFtyXX0pfSxiYT17fTtmdW5jdGlvbiBjc3QodCl7Y29uc3QgZT1udCgpLmpvdXJuZXk7bGV0IHI9NjA7T2JqZWN0LmtleXMoYmEpLmZvckVhY2gobj0+e2NvbnN0IGk9YmFbbl0uY29sb3IsYT17Y3g6MjAsY3k6cixyOjcsZmlsbDppLHN0cm9rZToiIzAwMCIscG9zOmJhW25dLnBvc2l0aW9ufTt5dS5kcmF3Q2lyY2xlKHQsYSk7Y29uc3Qgcz17eDo0MCx5OnIrNyxmaWxsOiIjNjY2Iix0ZXh0Om4sdGV4dE1hcmdpbjplLmJveFRleHRNYXJnaW58NX07eXUuZHJhd1RleHQodCxzKSxyKz0yMH0pfWNvbnN0IGswPW50KCkuam91cm5leSwkcz1rMC5sZWZ0TWFyZ2luLHVzdD1mdW5jdGlvbih0LGUscixuKXtjb25zdCBpPW50KCkuam91cm5leTtuLmRiLmNsZWFyKCksbi5wYXJzZXIucGFyc2UodCtgCmApO2NvbnN0IGE9bnQoKS5zZWN1cml0eUxldmVsO2xldCBzO2E9PT0ic2FuZGJveCImJihzPVN0KCIjaSIrZSkpO2NvbnN0IG89U3QoYT09PSJzYW5kYm94Ij9zLm5vZGVzKClbMF0uY29udGVudERvY3VtZW50LmJvZHk6ImJvZHkiKTtqbi5pbml0KCk7Y29uc3QgbD1vLnNlbGVjdCgiIyIrZSk7eXUuaW5pdEdyYXBoaWNzKGwpO2NvbnN0IHU9bi5kYi5nZXRUYXNrcygpLGg9bi5kYi5nZXREaWFncmFtVGl0bGUoKSxkPW4uZGIuZ2V0QWN0b3JzKCk7Zm9yKGNvbnN0IGIgaW4gYmEpZGVsZXRlIGJhW2JdO2xldCBmPTA7ZC5mb3JFYWNoKGI9PntiYVtiXT17Y29sb3I6aS5hY3RvckNvbG91cnNbZiVpLmFjdG9yQ29sb3Vycy5sZW5ndGhdLHBvc2l0aW9uOmZ9LGYrK30pLGNzdChsKSxqbi5pbnNlcnQoMCwwLCRzLE9iamVjdC5rZXlzKGJhKS5sZW5ndGgqNTApLGhzdChsLHUsMCk7Y29uc3QgcD1qbi5nZXRCb3VuZHMoKTtoJiZsLmFwcGVuZCgidGV4dCIpLnRleHQoaCkuYXR0cigieCIsJHMpLmF0dHIoImZvbnQtc2l6ZSIsIjRleCIpLmF0dHIoImZvbnQtd2VpZ2h0IiwiYm9sZCIpLmF0dHIoInkiLDI1KTtjb25zdCBtPXAuc3RvcHktcC5zdGFydHkrMippLmRpYWdyYW1NYXJnaW5ZLF89JHMrcC5zdG9weCsyKmkuZGlhZ3JhbU1hcmdpblg7bGkobCxtLF8saS51c2VNYXhXaWR0aCksbC5hcHBlbmQoImxpbmUiKS5hdHRyKCJ4MSIsJHMpLmF0dHIoInkxIixpLmhlaWdodCo0KS5hdHRyKCJ4MiIsXy0kcy00KS5hdHRyKCJ5MiIsaS5oZWlnaHQqNCkuYXR0cigic3Ryb2tlLXdpZHRoIiw0KS5hdHRyKCJzdHJva2UiLCJibGFjayIpLmF0dHIoIm1hcmtlci1lbmQiLCJ1cmwoI2Fycm93aGVhZCkiKTtjb25zdCB5PWg/NzA6MDtsLmF0dHIoInZpZXdCb3giLGAke3Auc3RhcnR4fSAtMjUgJHtffSAke20reX1gKSxsLmF0dHIoInByZXNlcnZlQXNwZWN0UmF0aW8iLCJ4TWluWU1pbiBtZWV0IiksbC5hdHRyKCJoZWlnaHQiLG0reSsyNSksYm4obi5kYixsLGUpfSxqbj17ZGF0YTp7c3RhcnR4OnZvaWQgMCxzdG9weDp2b2lkIDAsc3RhcnR5OnZvaWQgMCxzdG9weTp2b2lkIDB9LHZlcnRpY2FsUG9zOjAsc2VxdWVuY2VJdGVtczpbXSxpbml0OmZ1bmN0aW9uKCl7dGhpcy5zZXF1ZW5jZUl0ZW1zPVtdLHRoaXMuZGF0YT17c3RhcnR4OnZvaWQgMCxzdG9weDp2b2lkIDAsc3RhcnR5OnZvaWQgMCxzdG9weTp2b2lkIDB9LHRoaXMudmVydGljYWxQb3M9MH0sdXBkYXRlVmFsOmZ1bmN0aW9uKHQsZSxyLG4pe3R5cGVvZiB0W2VdPiJ1Ij90W2VdPXI6dFtlXT1uKHIsdFtlXSl9LHVwZGF0ZUJvdW5kczpmdW5jdGlvbih0LGUscixuKXtjb25zdCBpPW50KCkuam91cm5leSxhPXRoaXM7bGV0IHM9MDtmdW5jdGlvbiBvKGwpe3JldHVybiBmdW5jdGlvbihoKXtzKys7Y29uc3QgZD1hLnNlcXVlbmNlSXRlbXMubGVuZ3RoLXMrMTthLnVwZGF0ZVZhbChoLCJzdGFydHkiLGUtZCppLmJveE1hcmdpbixNYXRoLm1pbiksYS51cGRhdGVWYWwoaCwic3RvcHkiLG4rZCppLmJveE1hcmdpbixNYXRoLm1heCksYS51cGRhdGVWYWwoam4uZGF0YSwic3RhcnR4Iix0LWQqaS5ib3hNYXJnaW4sTWF0aC5taW4pLGEudXBkYXRlVmFsKGpuLmRhdGEsInN0b3B4IixyK2QqaS5ib3hNYXJnaW4sTWF0aC5tYXgpLGwhPT0iYWN0aXZhdGlvbiImJihhLnVwZGF0ZVZhbChoLCJzdGFydHgiLHQtZCppLmJveE1hcmdpbixNYXRoLm1pbiksYS51cGRhdGVWYWwoaCwic3RvcHgiLHIrZCppLmJveE1hcmdpbixNYXRoLm1heCksYS51cGRhdGVWYWwoam4uZGF0YSwic3RhcnR5IixlLWQqaS5ib3hNYXJnaW4sTWF0aC5taW4pLGEudXBkYXRlVmFsKGpuLmRhdGEsInN0b3B5IixuK2QqaS5ib3hNYXJnaW4sTWF0aC5tYXgpKX19dGhpcy5zZXF1ZW5jZUl0ZW1zLmZvckVhY2gobygpKX0saW5zZXJ0OmZ1bmN0aW9uKHQsZSxyLG4pe2NvbnN0IGk9TWF0aC5taW4odCxyKSxhPU1hdGgubWF4KHQscikscz1NYXRoLm1pbihlLG4pLG89TWF0aC5tYXgoZSxuKTt0aGlzLnVwZGF0ZVZhbChqbi5kYXRhLCJzdGFydHgiLGksTWF0aC5taW4pLHRoaXMudXBkYXRlVmFsKGpuLmRhdGEsInN0YXJ0eSIscyxNYXRoLm1pbiksdGhpcy51cGRhdGVWYWwoam4uZGF0YSwic3RvcHgiLGEsTWF0aC5tYXgpLHRoaXMudXBkYXRlVmFsKGpuLmRhdGEsInN0b3B5IixvLE1hdGgubWF4KSx0aGlzLnVwZGF0ZUJvdW5kcyhpLHMsYSxvKX0sYnVtcFZlcnRpY2FsUG9zOmZ1bmN0aW9uKHQpe3RoaXMudmVydGljYWxQb3M9dGhpcy52ZXJ0aWNhbFBvcyt0LHRoaXMuZGF0YS5zdG9weT10aGlzLnZlcnRpY2FsUG9zfSxnZXRWZXJ0aWNhbFBvczpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZlcnRpY2FsUG9zfSxnZXRCb3VuZHM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kYXRhfX0saV89azAuc2VjdGlvbkZpbGxzLEhMPWswLnNlY3Rpb25Db2xvdXJzLGhzdD1mdW5jdGlvbih0LGUscil7Y29uc3Qgbj1udCgpLmpvdXJuZXk7bGV0IGk9IiI7Y29uc3QgYT1uLmhlaWdodCoyK24uZGlhZ3JhbU1hcmdpblkscz1yK2E7bGV0IG89MCxsPSIjQ0NDIix1PSJibGFjayIsaD0wO2ZvcihsZXQgZD0wO2Q8ZS5sZW5ndGg7ZCsrKXtjb25zdCBmPWVbZF07aWYoaSE9PWYuc2VjdGlvbil7bD1pX1tvJWlfLmxlbmd0aF0saD1vJWlfLmxlbmd0aCx1PUhMW28lSEwubGVuZ3RoXTtjb25zdCBtPXt4OmQqbi50YXNrTWFyZ2luK2Qqbi53aWR0aCskcyx5OjUwLHRleHQ6Zi5zZWN0aW9uLGZpbGw6bCxudW06aCxjb2xvdXI6dX07eXUuZHJhd1NlY3Rpb24odCxtLG4pLGk9Zi5zZWN0aW9uLG8rK31jb25zdCBwPWYucGVvcGxlLnJlZHVjZSgobSxfKT0+KGJhW19dJiYobVtfXT1iYVtfXSksbSkse30pO2YueD1kKm4udGFza01hcmdpbitkKm4ud2lkdGgrJHMsZi55PXMsZi53aWR0aD1uLmRpYWdyYW1NYXJnaW5YLGYuaGVpZ2h0PW4uZGlhZ3JhbU1hcmdpblksZi5jb2xvdXI9dSxmLmZpbGw9bCxmLm51bT1oLGYuYWN0b3JzPXAseXUuZHJhd1Rhc2sodCxmLG4pLGpuLmluc2VydChmLngsZi55LGYueCtmLndpZHRoK24udGFza01hcmdpbiwzMDArNSozMCl9fSxHTD17c2V0Q29uZjpsc3QsZHJhdzp1c3R9O2xldCBqTD17fTtjb25zdCBhXz17c2V0Q29uZjpmdW5jdGlvbih0KXtqTD17Li4uakwsLi4udH19LGRyYXc6KHQsZSxyKT0+e3RyeXtILmRlYnVnKGBSZW5lcmluZyBzdmcgZm9yIHN5bnRheCBlcnJvcgpgKTtjb25zdCBuPVN0KCIjIitlKSxpPW4uYXBwZW5kKCJnIik7aS5hcHBlbmQoInBhdGgiKS5hdHRyKCJjbGFzcyIsImVycm9yLWljb24iKS5hdHRyKCJkIiwibTQxMS4zMTMsMTIzLjMxM2M2LjI1LTYuMjUgNi4yNS0xNi4zNzUgMC0yMi42MjVzLTE2LjM3NS02LjI1LTIyLjYyNSwwbC0zMiwzMi05LjM3NSw5LjM3NS0yMC42ODgtMjAuNjg4Yy0xMi40ODQtMTIuNS0zMi43NjYtMTIuNS00NS4yNSwwbC0xNiwxNmMtMS4yNjEsMS4yNjEtMi4zMDQsMi42NDgtMy4zMSw0LjA1MS0yMS43MzktOC41NjEtNDUuMzI0LTEzLjQyNi03MC4wNjUtMTMuNDI2LTEwNS44NjcsMC0xOTIsODYuMTMzLTE5MiwxOTJzODYuMTMzLDE5MiAxOTIsMTkyIDE5Mi04Ni4xMzMgMTkyLTE5MmMwLTI0Ljc0MS00Ljg2NC00OC4zMjctMTMuNDI2LTcwLjA2NSAxLjQwMi0xLjAwNyAyLjc5LTIuMDQ5IDQuMDUxLTMuMzFsMTYtMTZjMTIuNS0xMi40OTIgMTIuNS0zMi43NTggMC00NS4yNWwtMjAuNjg4LTIwLjY4OCA5LjM3NS05LjM3NSAzMi4wMDEtMzEuOTk5em0tMjE5LjMxMywxMDAuNjg3Yy01Mi45MzgsMC05Niw0My4wNjMtOTYsOTYgMCw4LjgzNi03LjE2NCwxNi0xNiwxNnMtMTYtNy4xNjQtMTYtMTZjMC03MC41NzggNTcuNDIyLTEyOCAxMjgtMTI4IDguODM2LDAgMTYsNy4xNjQgMTYsMTZzLTcuMTY0LDE2LTE2LDE2eiIpLGkuYXBwZW5kKCJwYXRoIikuYXR0cigiY2xhc3MiLCJlcnJvci1pY29uIikuYXR0cigiZCIsIm00NTkuMDIsMTQ4Ljk4Yy02LjI1LTYuMjUtMTYuMzc1LTYuMjUtMjIuNjI1LDBzLTYuMjUsMTYuMzc1IDAsMjIuNjI1bDE2LDE2YzMuMTI1LDMuMTI1IDcuMjE5LDQuNjg4IDExLjMxMyw0LjY4OCA0LjA5NCwwIDguMTg4LTEuNTYzIDExLjMxMy00LjY4OCA2LjI1LTYuMjUgNi4yNS0xNi4zNzUgMC0yMi42MjVsLTE2LjAwMS0xNnoiKSxpLmFwcGVuZCgicGF0aCIpLmF0dHIoImNsYXNzIiwiZXJyb3ItaWNvbiIpLmF0dHIoImQiLCJtMzQwLjM5NSw3NS42MDVjMy4xMjUsMy4xMjUgNy4yMTksNC42ODggMTEuMzEzLDQuNjg4IDQuMDk0LDAgOC4xODgtMS41NjMgMTEuMzEzLTQuNjg4IDYuMjUtNi4yNSA2LjI1LTE2LjM3NSAwLTIyLjYyNWwtMTYtMTZjLTYuMjUtNi4yNS0xNi4zNzUtNi4yNS0yMi42MjUsMHMtNi4yNSwxNi4zNzUgMCwyMi42MjVsMTUuOTk5LDE2eiIpLGkuYXBwZW5kKCJwYXRoIikuYXR0cigiY2xhc3MiLCJlcnJvci1pY29uIikuYXR0cigiZCIsIm00MDAsNjRjOC44NDQsMCAxNi03LjE2NCAxNi0xNnYtMzJjMC04LjgzNi03LjE1Ni0xNi0xNi0xNi04Ljg0NCwwLTE2LDcuMTY0LTE2LDE2djMyYzAsOC44MzYgNy4xNTYsMTYgMTYsMTZ6IiksaS5hcHBlbmQoInBhdGgiKS5hdHRyKCJjbGFzcyIsImVycm9yLWljb24iKS5hdHRyKCJkIiwibTQ5Niw5Ni41ODZoLTMyYy04Ljg0NCwwLTE2LDcuMTY0LTE2LDE2IDAsOC44MzYgNy4xNTYsMTYgMTYsMTZoMzJjOC44NDQsMCAxNi03LjE2NCAxNi0xNiAwLTguODM2LTcuMTU2LTE2LTE2LTE2eiIpLGkuYXBwZW5kKCJwYXRoIikuYXR0cigiY2xhc3MiLCJlcnJvci1pY29uIikuYXR0cigiZCIsIm00MzYuOTgsNzUuNjA1YzMuMTI1LDMuMTI1IDcuMjE5LDQuNjg4IDExLjMxMyw0LjY4OCA0LjA5NCwwIDguMTg4LTEuNTYzIDExLjMxMy00LjY4OGwzMi0zMmM2LjI1LTYuMjUgNi4yNS0xNi4zNzUgMC0yMi42MjVzLTE2LjM3NS02LjI1LTIyLjYyNSwwbC0zMiwzMmMtNi4yNTEsNi4yNS02LjI1MSwxNi4zNzUtMC4wMDEsMjIuNjI1eiIpLGkuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJlcnJvci10ZXh0IikuYXR0cigieCIsMTQ0MCkuYXR0cigieSIsMjUwKS5hdHRyKCJmb250LXNpemUiLCIxNTBweCIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLnRleHQoIlN5bnRheCBlcnJvciBpbiBncmFwaCIpLGkuYXBwZW5kKCJ0ZXh0IikuYXR0cigiY2xhc3MiLCJlcnJvci10ZXh0IikuYXR0cigieCIsMTI1MCkuYXR0cigieSIsNDAwKS5hdHRyKCJmb250LXNpemUiLCIxMDBweCIpLnN0eWxlKCJ0ZXh0LWFuY2hvciIsIm1pZGRsZSIpLnRleHQoIm1lcm1haWQgdmVyc2lvbiAiK3IpLG4uYXR0cigiaGVpZ2h0IiwxMDApLG4uYXR0cigid2lkdGgiLDUwMCksbi5hdHRyKCJ2aWV3Qm94IiwiNzY4IDAgOTEyIDUxMiIpfWNhdGNoKG4pe0guZXJyb3IoIkVycm9yIHdoaWxlIHJlbmRlcmluZyBpbmZvIGRpYWdyYW0iKSxILmVycm9yKGhYKG4pKX19fTtsZXQgJEw9ITE7Y29uc3QgbXU9KCk9PnskTHx8KCRMPSEwLExyKCJlcnJvciIse2RiOntjbGVhcjooKT0+e319LHN0eWxlczpBdyxyZW5kZXJlcjphXyxwYXJzZXI6e3BhcnNlcjp7eXk6e319LHBhcnNlOigpPT57fX0saW5pdDooKT0+e319LHQ9PnQudG9Mb3dlckNhc2UoKS50cmltKCk9PT0iZXJyb3IiKSxMcigiYzQiLHtwYXJzZXI6cWMsZGI6WHcscmVuZGVyZXI6YTksc3R5bGVzOkR3LGluaXQ6dD0+e2E5LnNldENvbmYodC5jNCl9fSxsSyksTHIoImNsYXNzIix7cGFyc2VyOl8xLGRiOkpvLHJlbmRlcmVyOnF0dCxzdHlsZXM6TmMsaW5pdDp0PT57dC5jbGFzc3x8KHQuY2xhc3M9e30pLHQuY2xhc3MuYXJyb3dNYXJrZXJBYnNvbHV0ZT10LmFycm93TWFya2VyQWJzb2x1dGUsSm8uY2xlYXIoKX19LFpLKSxMcigiY2xhc3NEaWFncmFtIix7cGFyc2VyOl8xLGRiOkpvLHJlbmRlcmVyOk9ldCxzdHlsZXM6TmMsaW5pdDp0PT57dC5jbGFzc3x8KHQuY2xhc3M9e30pLHQuY2xhc3MuYXJyb3dNYXJrZXJBYnNvbHV0ZT10LmFycm93TWFya2VyQWJzb2x1dGUsSm8uY2xlYXIoKX19LFFLKSxMcigiZXIiLHtwYXJzZXI6YTQsZGI6emV0LHJlbmRlcmVyOmVydCxzdHlsZXM6U3d9LEZldCksTHIoImdhbnR0Iix7cGFyc2VyOk00LGRiOlA0LHJlbmRlcmVyOnJpdCxzdHlsZXM6TXd9LFNudCksTHIoImluZm8iLHtwYXJzZXI6cTQsZGI6bml0LHJlbmRlcmVyOmlpdCxzdHlsZXM6THd9LGFpdCksTHIoInBpZSIse3BhcnNlcjpWNCxkYjpvaXQscmVuZGVyZXI6bGl0LHN0eWxlczpSd30sc2l0KSxMcigicmVxdWlyZW1lbnQiLHtwYXJzZXI6WTQsZGI6dWl0LHJlbmRlcmVyOm1pdCxzdHlsZXM6SXd9LGNpdCksTHIoInNlcXVlbmNlIix7cGFyc2VyOkg0LGRiOm1MLHJlbmRlcmVyOkFMLHN0eWxlczpOdyxpbml0OnQ9PntpZih0LnNlcXVlbmNlfHwodC5zZXF1ZW5jZT17fSksdC5zZXF1ZW5jZS5hcnJvd01hcmtlckFic29sdXRlPXQuYXJyb3dNYXJrZXJBYnNvbHV0ZSwic2VxdWVuY2VEaWFncmFtImluIHQpdGhyb3cgbmV3IEVycm9yKCJgbWVybWFpZCBjb25maWcuc2VxdWVuY2VEaWFncmFtYCBoYXMgYmVlbiByZW5hbWVkIHRvIGBjb25maWcuc2VxdWVuY2VgLiBQbGVhc2UgdXBkYXRlIHlvdXIgbWVybWFpZCBjb25maWcuIik7bUwuc2V0V3JhcCh0LndyYXApLEFMLnNldENvbmYodC5zZXF1ZW5jZSl9fSxiaXQpLExyKCJzdGF0ZSIse3BhcnNlcjpwMCxkYjptYSxyZW5kZXJlcjp6YXQsc3R5bGVzOnMxLGluaXQ6dD0+e3Quc3RhdGV8fCh0LnN0YXRlPXt9KSx0LnN0YXRlLmFycm93TWFya2VyQWJzb2x1dGU9dC5hcnJvd01hcmtlckFic29sdXRlLG1hLmNsZWFyKCl9fSxmYXQpLExyKCJzdGF0ZURpYWdyYW0iLHtwYXJzZXI6cDAsZGI6bWEscmVuZGVyZXI6R2F0LHN0eWxlczpzMSxpbml0OnQ9Pnt0LnN0YXRlfHwodC5zdGF0ZT17fSksdC5zdGF0ZS5hcnJvd01hcmtlckFic29sdXRlPXQuYXJyb3dNYXJrZXJBYnNvbHV0ZSxtYS5jbGVhcigpfX0sZGF0KSxMcigiam91cm5leSIse3BhcnNlcjplXyxkYjpWTCxyZW5kZXJlcjpHTCxzdHlsZXM6QncsaW5pdDp0PT57R0wuc2V0Q29uZih0LmpvdXJuZXkpLFZMLmNsZWFyKCl9fSxqYXQpLExyKCJmbG93Y2hhcnQiLHtwYXJzZXI6WDEsZGI6ZmEscmVuZGVyZXI6QTQsc3R5bGVzOmExLGluaXQ6dD0+e3QuZmxvd2NoYXJ0fHwodC5mbG93Y2hhcnQ9e30pLHQuZmxvd2NoYXJ0LmFycm93TWFya2VyQWJzb2x1dGU9dC5hcnJvd01hcmtlckFic29sdXRlLFM0LnNldENvbmYodC5mbG93Y2hhcnQpLGZhLmNsZWFyKCksZmEuc2V0R2VuKCJnZW4tMSIpfX0scnJ0KSxMcigiZmxvd2NoYXJ0LXYyIix7cGFyc2VyOlgxLGRiOmZhLHJlbmRlcmVyOkE0LHN0eWxlczphMSxpbml0OnQ9Pnt0LmZsb3djaGFydHx8KHQuZmxvd2NoYXJ0PXt9KSx0LmZsb3djaGFydC5hcnJvd01hcmtlckFic29sdXRlPXQuYXJyb3dNYXJrZXJBYnNvbHV0ZSxrdyh7Zmxvd2NoYXJ0OnthcnJvd01hcmtlckFic29sdXRlOnQuYXJyb3dNYXJrZXJBYnNvbHV0ZX19KSxBNC5zZXRDb25mKHQuZmxvd2NoYXJ0KSxmYS5jbGVhcigpLGZhLnNldEdlbigiZ2VuLTIiKX19LG5ydCksTHIoImdpdEdyYXBoIix7cGFyc2VyOmhnLGRiOkpYLHJlbmRlcmVyOnNLLHN0eWxlczpvS30sQlgpKX07Y2xhc3MgYnV7Y29uc3RydWN0b3IoZSxyKXt2bCh0aGlzLCJ0eXBlIiwiZ3JhcGgiKTt2bCh0aGlzLCJwYXJzZXIiKTt2bCh0aGlzLCJyZW5kZXJlciIpO3ZsKHRoaXMsImRiIik7dmwodGhpcywiZGV0ZWN0VHlwZUZhaWxlZCIsITEpO3ZhciBhLHM7dGhpcy50eHQ9ZTtjb25zdCBuPW50KCk7dGhpcy50eHQ9ZTt0cnl7dGhpcy50eXBlPVhwKGUsbil9Y2F0Y2gobyl7dGhpcy5oYW5kbGVFcnJvcihvLHIpLHRoaXMudHlwZT0iZXJyb3IiLHRoaXMuZGV0ZWN0VHlwZUZhaWxlZD0hMH1jb25zdCBpPVB3KHRoaXMudHlwZSk7SC5kZWJ1ZygiVHlwZSAiK3RoaXMudHlwZSksdGhpcy5kYj1pLmRiLChzPShhPXRoaXMuZGIpLmNsZWFyKT09bnVsbHx8cy5jYWxsKGEpLHRoaXMucmVuZGVyZXI9aS5yZW5kZXJlcix0aGlzLnBhcnNlcj1pLnBhcnNlcix0aGlzLnBhcnNlci5wYXJzZXIueXk9dGhpcy5kYixpLmluaXQmJihpLmluaXQobiksSC5kZWJ1ZygiSW5pdGlhbGl6ZWQgZGlhZ3JhbSAiK3RoaXMudHlwZSxuKSksdGhpcy50eHQrPWAKYCx0aGlzLnBhcnNlKHRoaXMudHh0LHIpfXBhcnNlKGUscil7aWYodGhpcy5kZXRlY3RUeXBlRmFpbGVkKXJldHVybiExO3RyeXtyZXR1cm4gZT1lK2AKYCx0aGlzLmRiLmNsZWFyKCksdGhpcy5wYXJzZXIucGFyc2UoZSksITB9Y2F0Y2gobil7dGhpcy5oYW5kbGVFcnJvcihuLHIpfXJldHVybiExfWhhbmRsZUVycm9yKGUscil7aWYociluZyhlKT9yKGUuc3RyLGUuaGFzaCk6cihlKTtlbHNlIHRocm93IGV9Z2V0UGFyc2VyKCl7cmV0dXJuIHRoaXMucGFyc2VyfWdldFR5cGUoKXtyZXR1cm4gdGhpcy50eXBlfX1jb25zdCBzXz0odCxlKT0+e2NvbnN0IHI9WHAodCxudCgpKTt0cnl7cmV0dXJuIFB3KHIpLG5ldyBidSh0LGUpfWNhdGNoKG4pe2lmKCEobiBpbnN0YW5jZW9mIHF3KSl0aHJvdyBILmVycm9yKG4pLG47Y29uc3QgaT13RyhyKTtpZighaSl0aHJvdyBuZXcgRXJyb3IoYExvYWRlciBmb3IgJHtyfSBub3QgZm91bmQuYCk7cmV0dXJuIGkoKS50aGVuKCh7ZGlhZ3JhbTphfSk9PihMcihyLGEsdm9pZCAwKSxuZXcgYnUodCxlKSkpfX07ZnVuY3Rpb24gZnN0KHQsZSl7cmV0dXJuIG11KCksbmV3IGJ1KHQsZSkucGFyc2UodCxlKX1hc3luYyBmdW5jdGlvbiBkc3QodCxlKXtyZXR1cm4gbXUoKSwoYXdhaXQgc18odCxlKSkucGFyc2UodCxlKX1jb25zdCBYTD1mdW5jdGlvbih0KXtsZXQgZT10O3JldHVybiBlPWUucmVwbGFjZSgvc3R5bGUuKjpcUyojLio7L2csZnVuY3Rpb24ocil7cmV0dXJuIHIuc3Vic3RyaW5nKDAsci5sZW5ndGgtMSl9KSxlPWUucmVwbGFjZSgvY2xhc3NEZWYuKjpcUyojLio7L2csZnVuY3Rpb24ocil7cmV0dXJuIHIuc3Vic3RyaW5nKDAsci5sZW5ndGgtMSl9KSxlPWUucmVwbGFjZSgvI1x3KzsvZyxmdW5jdGlvbihyKXtjb25zdCBuPXIuc3Vic3RyaW5nKDEsci5sZW5ndGgtMSk7cmV0dXJuL15cKz9cZCskLy50ZXN0KG4pPyJcdUZCMDJceEIwXHhCMCIrbisiXHhCNlx4REYiOiJcdUZCMDJceEIwIituKyJceEI2XHhERiJ9KSxlfSx3MD1mdW5jdGlvbih0KXtsZXQgZT10O3JldHVybiBlPWUucmVwbGFjZSgv76yCwrDCsC9nLGZ1bmN0aW9uKCl7cmV0dXJuIiYjIn0pLGU9ZS5yZXBsYWNlKC/vrILCsC9nLGZ1bmN0aW9uKCl7cmV0dXJuIiYifSksZT1lLnJlcGxhY2UoL8K2w58vZyxmdW5jdGlvbigpe3JldHVybiI7In0pLGV9LHBzdD1mdW5jdGlvbih0LGUscixuKXt2YXIgVDttdSgpLEljKCksZT1lLnJlcGxhY2UoL1xyXG4/L2csYApgKTtjb25zdCBpPVNlLmRldGVjdEluaXQoZSk7aSYmKFZzKGkpLHVnKGkpKTtjb25zdCBhPW50KCk7SC5kZWJ1ZyhhKSxlLmxlbmd0aD5hLm1heFRleHRTaXplJiYoZT0iZ3JhcGggVEI7YVtNYXhpbXVtIHRleHQgc2l6ZSBpbiBkaWFncmFtIGV4Y2VlZGVkXTtzdHlsZSBhIGZpbGw6I2ZhYSIpO2xldCBzPVN0KCJib2R5Iik7aWYodHlwZW9mIG48InUiKXtpZihuJiYobi5pbm5lckhUTUw9IiIpLGEuc2VjdXJpdHlMZXZlbD09PSJzYW5kYm94Iil7Y29uc3QgQz1TdChuKS5hcHBlbmQoImlmcmFtZSIpLmF0dHIoImlkIiwiaSIrdCkuYXR0cigic3R5bGUiLCJ3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyIpLmF0dHIoInNhbmRib3giLCIiKTtzPVN0KEMubm9kZXMoKVswXS5jb250ZW50RG9jdW1lbnQuYm9keSkscy5ub2RlKCkuc3R5bGUubWFyZ2luPTB9ZWxzZSBzPVN0KG4pO3MuYXBwZW5kKCJkaXYiKS5hdHRyKCJpZCIsImQiK3QpLmF0dHIoInN0eWxlIiwiZm9udC1mYW1pbHk6ICIrYS5mb250RmFtaWx5KS5hcHBlbmQoInN2ZyIpLmF0dHIoImlkIix0KS5hdHRyKCJ3aWR0aCIsIjEwMCUiKS5hdHRyKCJ4bWxucyIsImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIikuYXR0cigieG1sbnM6eGxpbmsiLCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIikuYXBwZW5kKCJnIil9ZWxzZXtjb25zdCBDPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHQpO0MmJkMucmVtb3ZlKCk7bGV0IE07aWYoYS5zZWN1cml0eUxldmVsPT09InNhbmRib3giP009ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2kiK3QpOk09ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2QiK3QpLE0mJk0ucmVtb3ZlKCksYS5zZWN1cml0eUxldmVsPT09InNhbmRib3giKXtjb25zdCBTPVN0KCJib2R5IikuYXBwZW5kKCJpZnJhbWUiKS5hdHRyKCJpZCIsImkiK3QpLmF0dHIoInN0eWxlIiwid2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsiKS5hdHRyKCJzYW5kYm94IiwiIik7cz1TdChTLm5vZGVzKClbMF0uY29udGVudERvY3VtZW50LmJvZHkpLHMubm9kZSgpLnN0eWxlLm1hcmdpbj0wfWVsc2Ugcz1TdCgiYm9keSIpO3MuYXBwZW5kKCJkaXYiKS5hdHRyKCJpZCIsImQiK3QpLmFwcGVuZCgic3ZnIikuYXR0cigiaWQiLHQpLmF0dHIoIndpZHRoIiwiMTAwJSIpLmF0dHIoInhtbG5zIiwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciKS5hcHBlbmQoImciKX1lPVhMKGUpO2xldCBvLGw7dHJ5e2lmKG89c18oZSksInRoZW4iaW4gbyl0aHJvdyBuZXcgRXJyb3IoIkRpYWdyYW0gaXMgYSBwcm9taXNlIil9Y2F0Y2goQyl7bz1uZXcgYnUoImVycm9yIiksbD1DfWNvbnN0IHU9cy5zZWxlY3QoIiNkIit0KS5ub2RlKCksaD1vLnR5cGUsZD11LmZpcnN0Q2hpbGQsZj1kLmZpcnN0Q2hpbGQ7bGV0IHA9IiI7aWYoYS50aGVtZUNTUyE9PXZvaWQgMCYmKHArPWAKJHthLnRoZW1lQ1NTfWApLGEuZm9udEZhbWlseSE9PXZvaWQgMCYmKHArPWAKOnJvb3QgeyAtLW1lcm1haWQtZm9udC1mYW1pbHk6ICR7YS5mb250RmFtaWx5fX1gKSxhLmFsdEZvbnRGYW1pbHkhPT12b2lkIDAmJihwKz1gCjpyb290IHsgLS1tZXJtYWlkLWFsdC1mb250LWZhbWlseTogJHthLmFsdEZvbnRGYW1pbHl9fWApLGg9PT0iZmxvd2NoYXJ0Inx8aD09PSJmbG93Y2hhcnQtdjIifHxoPT09ImdyYXBoIil7Y29uc3QgQz1TNC5nZXRDbGFzc2VzKGUsbyksTT1hLmh0bWxMYWJlbHN8fCgoVD1hLmZsb3djaGFydCk9PW51bGw/dm9pZCAwOlQuaHRtbExhYmVscyk7Zm9yKGNvbnN0IFMgaW4gQylNPyhwKz1gCi4ke1N9ID4gKiB7ICR7Q1tTXS5zdHlsZXMuam9pbigiICFpbXBvcnRhbnQ7ICIpfSAhaW1wb3J0YW50OyB9YCxwKz1gCi4ke1N9IHNwYW4geyAke0NbU10uc3R5bGVzLmpvaW4oIiAhaW1wb3J0YW50OyAiKX0gIWltcG9ydGFudDsgfWApOihwKz1gCi4ke1N9IHBhdGggeyAke0NbU10uc3R5bGVzLmpvaW4oIiAhaW1wb3J0YW50OyAiKX0gIWltcG9ydGFudDsgfWAscCs9YAouJHtTfSByZWN0IHsgJHtDW1NdLnN0eWxlcy5qb2luKCIgIWltcG9ydGFudDsgIil9ICFpbXBvcnRhbnQ7IH1gLHArPWAKLiR7U30gcG9seWdvbiB7ICR7Q1tTXS5zdHlsZXMuam9pbigiICFpbXBvcnRhbnQ7ICIpfSAhaW1wb3J0YW50OyB9YCxwKz1gCi4ke1N9IGVsbGlwc2UgeyAke0NbU10uc3R5bGVzLmpvaW4oIiAhaW1wb3J0YW50OyAiKX0gIWltcG9ydGFudDsgfWAscCs9YAouJHtTfSBjaXJjbGUgeyAke0NbU10uc3R5bGVzLmpvaW4oIiAhaW1wb3J0YW50OyAiKX0gIWltcG9ydGFudDsgfWAsQ1tTXS50ZXh0U3R5bGVzJiYocCs9YAouJHtTfSB0c3BhbiB7ICR7Q1tTXS50ZXh0U3R5bGVzLmpvaW4oIiAhaW1wb3J0YW50OyAiKX0gIWltcG9ydGFudDsgfWApKX1jb25zdCBfPSgoQyxNKT0+ZTEoeXcoYCR7Q317JHtNfX1gKSxfdykpKGAjJHt0fWAsT3coaCxwLGEudGhlbWVWYXJpYWJsZXMpKSx5PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0eWxlIik7eS5pbm5lckhUTUw9YCMke3R9IGArXyxkLmluc2VydEJlZm9yZSh5LGYpO3RyeXtvLnJlbmRlcmVyLmRyYXcoZSx0LHIxLnZlcnNpb24sbyl9Y2F0Y2goQyl7dGhyb3cgYV8uZHJhdyhlLHQscjEudmVyc2lvbiksQ31zLnNlbGVjdChgW2lkPSIke3R9Il1gKS5zZWxlY3RBbGwoImZvcmVpZ25vYmplY3QgPiAqIikuYXR0cigieG1sbnMiLCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIik7bGV0IGI9cy5zZWxlY3QoIiNkIit0KS5ub2RlKCkuaW5uZXJIVE1MO2lmKEguZGVidWcoImNuZi5hcnJvd01hcmtlckFic29sdXRlIixhLmFycm93TWFya2VyQWJzb2x1dGUpLCFNcihhLmFycm93TWFya2VyQWJzb2x1dGUpJiZhLnNlY3VyaXR5TGV2ZWwhPT0ic2FuZGJveCImJihiPWIucmVwbGFjZSgvbWFya2VyLWVuZD0idXJsXCguKj8jL2csJ21hcmtlci1lbmQ9InVybCgjJywiZyIpKSxiPXcwKGIpLGI9Yi5yZXBsYWNlKC88YnI+L2csIjxici8+IiksYS5zZWN1cml0eUxldmVsPT09InNhbmRib3giKXtjb25zdCBDPXMuc2VsZWN0KCIjZCIrdCsiIHN2ZyIpLm5vZGUoKSxNPSIxMDAlIjtsZXQgUz0iMTAwJSI7QyYmKFM9Qy52aWV3Qm94LmJhc2VWYWwuaGVpZ2h0KyJweCIpLGI9YDxpZnJhbWUgc3R5bGU9IndpZHRoOiR7TX07aGVpZ2h0OiR7U307Ym9yZGVyOjA7bWFyZ2luOjA7IiBzcmM9ImRhdGE6dGV4dC9odG1sO2Jhc2U2NCwke2J0b2EoJzxib2R5IHN0eWxlPSJtYXJnaW46MCI+JytiKyI8L2JvZHk+Iil9IiBzYW5kYm94PSJhbGxvdy10b3AtbmF2aWdhdGlvbi1ieS11c2VyLWFjdGl2YXRpb24gYWxsb3ctcG9wdXBzIj4KICBUaGUgXHUyMDFDaWZyYW1lXHUyMDFEIHRhZyBpcyBub3Qgc3VwcG9ydGVkIGJ5IHlvdXIgYnJvd3Nlci4KPC9pZnJhbWU+YH1lbHNlIGEuc2VjdXJpdHlMZXZlbCE9PSJsb29zZSImJihiPUVjLnNhbml0aXplKGIse0FERF9UQUdTOlsiZm9yZWlnbm9iamVjdCJdLEFERF9BVFRSOlsiZG9taW5hbnQtYmFzZWxpbmUiXX0pKTtpZih0eXBlb2YgcjwidSIpc3dpdGNoKGgpe2Nhc2UiZmxvd2NoYXJ0IjpjYXNlImZsb3djaGFydC12MiI6cihiLGZhLmJpbmRGdW5jdGlvbnMpO2JyZWFrO2Nhc2UiZ2FudHQiOnIoYixQNC5iaW5kRnVuY3Rpb25zKTticmVhaztjYXNlImNsYXNzIjpjYXNlImNsYXNzRGlhZ3JhbSI6cihiLEpvLmJpbmRGdW5jdGlvbnMpO2JyZWFrO2RlZmF1bHQ6cihiKX1lbHNlIEguZGVidWcoIkNCID0gdW5kZWZpbmVkISIpO2JMKCk7Y29uc3QgeD1hLnNlY3VyaXR5TGV2ZWw9PT0ic2FuZGJveCI/IiNpIit0OiIjZCIrdCxrPVN0KHgpLm5vZGUoKTtpZihrJiYicmVtb3ZlImluIGsmJmsucmVtb3ZlKCksbCl0aHJvdyBsO3JldHVybiBifSxnc3Q9YXN5bmMgZnVuY3Rpb24odCxlLHIsbil7dmFyIFQ7bXUoKSxJYygpLGU9ZS5yZXBsYWNlKC9cclxuPy9nLGAKYCk7Y29uc3QgaT1TZS5kZXRlY3RJbml0KGUpO2kmJihWcyhpKSx1ZyhpKSk7Y29uc3QgYT1udCgpO0guZGVidWcoYSksZS5sZW5ndGg+YS5tYXhUZXh0U2l6ZSYmKGU9ImdyYXBoIFRCO2FbTWF4aW11bSB0ZXh0IHNpemUgaW4gZGlhZ3JhbSBleGNlZWRlZF07c3R5bGUgYSBmaWxsOiNmYWEiKTtsZXQgcz1TdCgiYm9keSIpO2lmKHR5cGVvZiBuPCJ1Iil7aWYobiYmKG4uaW5uZXJIVE1MPSIiKSxhLnNlY3VyaXR5TGV2ZWw9PT0ic2FuZGJveCIpe2NvbnN0IEM9U3QobikuYXBwZW5kKCJpZnJhbWUiKS5hdHRyKCJpZCIsImkiK3QpLmF0dHIoInN0eWxlIiwid2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsiKS5hdHRyKCJzYW5kYm94IiwiIik7cz1TdChDLm5vZGVzKClbMF0uY29udGVudERvY3VtZW50LmJvZHkpLHMubm9kZSgpLnN0eWxlLm1hcmdpbj0wfWVsc2Ugcz1TdChuKTtzLmFwcGVuZCgiZGl2IikuYXR0cigiaWQiLCJkIit0KS5hdHRyKCJzdHlsZSIsImZvbnQtZmFtaWx5OiAiK2EuZm9udEZhbWlseSkuYXBwZW5kKCJzdmciKS5hdHRyKCJpZCIsdCkuYXR0cigid2lkdGgiLCIxMDAlIikuYXR0cigieG1sbnMiLCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIpLmF0dHIoInhtbG5zOnhsaW5rIiwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIpLmFwcGVuZCgiZyIpfWVsc2V7Y29uc3QgQz1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCh0KTtDJiZDLnJlbW92ZSgpO2xldCBNO2lmKGEuc2VjdXJpdHlMZXZlbD09PSJzYW5kYm94Ij9NPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNpIit0KTpNPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNkIit0KSxNJiZNLnJlbW92ZSgpLGEuc2VjdXJpdHlMZXZlbD09PSJzYW5kYm94Iil7Y29uc3QgUz1TdCgiYm9keSIpLmFwcGVuZCgiaWZyYW1lIikuYXR0cigiaWQiLCJpIit0KS5hdHRyKCJzdHlsZSIsIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7IikuYXR0cigic2FuZGJveCIsIiIpO3M9U3QoUy5ub2RlcygpWzBdLmNvbnRlbnREb2N1bWVudC5ib2R5KSxzLm5vZGUoKS5zdHlsZS5tYXJnaW49MH1lbHNlIHM9U3QoImJvZHkiKTtzLmFwcGVuZCgiZGl2IikuYXR0cigiaWQiLCJkIit0KS5hcHBlbmQoInN2ZyIpLmF0dHIoImlkIix0KS5hdHRyKCJ3aWR0aCIsIjEwMCUiKS5hdHRyKCJ4bWxucyIsImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIikuYXBwZW5kKCJnIil9ZT1YTChlKTtsZXQgbyxsO3RyeXtvPWF3YWl0IHNfKGUpfWNhdGNoKEMpe289bmV3IGJ1KCJlcnJvciIpLGw9Q31jb25zdCB1PXMuc2VsZWN0KCIjZCIrdCkubm9kZSgpLGg9by50eXBlLGQ9dS5maXJzdENoaWxkLGY9ZC5maXJzdENoaWxkO2xldCBwPSIiO2lmKGEudGhlbWVDU1MhPT12b2lkIDAmJihwKz1gCiR7YS50aGVtZUNTU31gKSxhLmZvbnRGYW1pbHkhPT12b2lkIDAmJihwKz1gCjpyb290IHsgLS1tZXJtYWlkLWZvbnQtZmFtaWx5OiAke2EuZm9udEZhbWlseX19YCksYS5hbHRGb250RmFtaWx5IT09dm9pZCAwJiYocCs9YAo6cm9vdCB7IC0tbWVybWFpZC1hbHQtZm9udC1mYW1pbHk6ICR7YS5hbHRGb250RmFtaWx5fX1gKSxoPT09ImZsb3djaGFydCJ8fGg9PT0iZmxvd2NoYXJ0LXYyInx8aD09PSJncmFwaCIpe2NvbnN0IEM9UzQuZ2V0Q2xhc3NlcyhlLG8pLE09YS5odG1sTGFiZWxzfHwoKFQ9YS5mbG93Y2hhcnQpPT1udWxsP3ZvaWQgMDpULmh0bWxMYWJlbHMpO2Zvcihjb25zdCBTIGluIEMpTT8ocCs9YAouJHtTfSA+ICogeyAke0NbU10uc3R5bGVzLmpvaW4oIiAhaW1wb3J0YW50OyAiKX0gIWltcG9ydGFudDsgfWAscCs9YAouJHtTfSBzcGFuIHsgJHtDW1NdLnN0eWxlcy5qb2luKCIgIWltcG9ydGFudDsgIil9ICFpbXBvcnRhbnQ7IH1gKToocCs9YAouJHtTfSBwYXRoIHsgJHtDW1NdLnN0eWxlcy5qb2luKCIgIWltcG9ydGFudDsgIil9ICFpbXBvcnRhbnQ7IH1gLHArPWAKLiR7U30gcmVjdCB7ICR7Q1tTXS5zdHlsZXMuam9pbigiICFpbXBvcnRhbnQ7ICIpfSAhaW1wb3J0YW50OyB9YCxwKz1gCi4ke1N9IHBvbHlnb24geyAke0NbU10uc3R5bGVzLmpvaW4oIiAhaW1wb3J0YW50OyAiKX0gIWltcG9ydGFudDsgfWAscCs9YAouJHtTfSBlbGxpcHNlIHsgJHtDW1NdLnN0eWxlcy5qb2luKCIgIWltcG9ydGFudDsgIil9ICFpbXBvcnRhbnQ7IH1gLHArPWAKLiR7U30gY2lyY2xlIHsgJHtDW1NdLnN0eWxlcy5qb2luKCIgIWltcG9ydGFudDsgIil9ICFpbXBvcnRhbnQ7IH1gLENbU10udGV4dFN0eWxlcyYmKHArPWAKLiR7U30gdHNwYW4geyAke0NbU10udGV4dFN0eWxlcy5qb2luKCIgIWltcG9ydGFudDsgIil9ICFpbXBvcnRhbnQ7IH1gKSl9Y29uc3QgXz0oKEMsTSk9PmUxKHl3KGAke0N9eyR7TX19YCksX3cpKShgIyR7dH1gLE93KGgscCxhLnRoZW1lVmFyaWFibGVzKSkseT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdHlsZSIpO3kuaW5uZXJIVE1MPWAjJHt0fSBgK18sZC5pbnNlcnRCZWZvcmUoeSxmKTt0cnl7YXdhaXQgby5yZW5kZXJlci5kcmF3KGUsdCxyMS52ZXJzaW9uLG8pfWNhdGNoKEMpe3Rocm93IGFfLmRyYXcoZSx0LHIxLnZlcnNpb24pLEN9cy5zZWxlY3QoYFtpZD0iJHt0fSJdYCkuc2VsZWN0QWxsKCJmb3JlaWdub2JqZWN0ID4gKiIpLmF0dHIoInhtbG5zIiwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIpO2xldCBiPXMuc2VsZWN0KCIjZCIrdCkubm9kZSgpLmlubmVySFRNTDtpZihILmRlYnVnKCJjbmYuYXJyb3dNYXJrZXJBYnNvbHV0ZSIsYS5hcnJvd01hcmtlckFic29sdXRlKSwhTXIoYS5hcnJvd01hcmtlckFic29sdXRlKSYmYS5zZWN1cml0eUxldmVsIT09InNhbmRib3giJiYoYj1iLnJlcGxhY2UoL21hcmtlci1lbmQ9InVybFwoLio/Iy9nLCdtYXJrZXItZW5kPSJ1cmwoIycsImciKSksYj13MChiKSxiPWIucmVwbGFjZSgvPGJyPi9nLCI8YnIvPiIpLGEuc2VjdXJpdHlMZXZlbD09PSJzYW5kYm94Iil7Y29uc3QgQz1zLnNlbGVjdCgiI2QiK3QrIiBzdmciKS5ub2RlKCksTT0iMTAwJSI7bGV0IFM9IjEwMCUiO0MmJihTPUMudmlld0JveC5iYXNlVmFsLmhlaWdodCsicHgiKSxiPWA8aWZyYW1lIHN0eWxlPSJ3aWR0aDoke019O2hlaWdodDoke1N9O2JvcmRlcjowO21hcmdpbjowOyIgc3JjPSJkYXRhOnRleHQvaHRtbDtiYXNlNjQsJHtidG9hKCc8Ym9keSBzdHlsZT0ibWFyZ2luOjAiPicrYisiPC9ib2R5PiIpfSIgc2FuZGJveD0iYWxsb3ctdG9wLW5hdmlnYXRpb24tYnktdXNlci1hY3RpdmF0aW9uIGFsbG93LXBvcHVwcyI+CiAgVGhlIFx1MjAxQ2lmcmFtZVx1MjAxRCB0YWcgaXMgbm90IHN1cHBvcnRlZCBieSB5b3VyIGJyb3dzZXIuCjwvaWZyYW1lPmB9ZWxzZSBhLnNlY3VyaXR5TGV2ZWwhPT0ibG9vc2UiJiYoYj1FYy5zYW5pdGl6ZShiLHtBRERfVEFHUzpbImZvcmVpZ25vYmplY3QiXSxBRERfQVRUUjpbImRvbWluYW50LWJhc2VsaW5lIl19KSk7aWYodHlwZW9mIHI8InUiKXN3aXRjaChoKXtjYXNlImZsb3djaGFydCI6Y2FzZSJmbG93Y2hhcnQtdjIiOnIoYixmYS5iaW5kRnVuY3Rpb25zKTticmVhaztjYXNlImdhbnR0IjpyKGIsUDQuYmluZEZ1bmN0aW9ucyk7YnJlYWs7Y2FzZSJjbGFzcyI6Y2FzZSJjbGFzc0RpYWdyYW0iOnIoYixKby5iaW5kRnVuY3Rpb25zKTticmVhaztkZWZhdWx0OnIoYil9ZWxzZSBILmRlYnVnKCJDQiA9IHVuZGVmaW5lZCEiKTtiTCgpO2NvbnN0IHg9YS5zZWN1cml0eUxldmVsPT09InNhbmRib3giPyIjaSIrdDoiI2QiK3Qsaz1TdCh4KS5ub2RlKCk7aWYoayYmInJlbW92ZSJpbiBrJiZrLnJlbW92ZSgpLGwpdGhyb3cgbDtyZXR1cm4gYn07bGV0IFhzPXt9O2NvbnN0IHlzdD1mdW5jdGlvbih0LGUscixuKXt0cnl7aWYoZSE9PXZvaWQgMClzd2l0Y2goZT1lLnRyaW0oKSxyKXtjYXNlIm9wZW5fZGlyZWN0aXZlIjpYcz17fTticmVhaztjYXNlInR5cGVfZGlyZWN0aXZlIjppZighWHMpdGhyb3cgbmV3IEVycm9yKCJjdXJyZW50RGlyZWN0aXZlIGlzIHVuZGVmaW5lZCIpO1hzLnR5cGU9ZS50b0xvd2VyQ2FzZSgpO2JyZWFrO2Nhc2UiYXJnX2RpcmVjdGl2ZSI6aWYoIVhzKXRocm93IG5ldyBFcnJvcigiY3VycmVudERpcmVjdGl2ZSBpcyB1bmRlZmluZWQiKTtYcy5hcmdzPUpTT04ucGFyc2UoZSk7YnJlYWs7Y2FzZSJjbG9zZV9kaXJlY3RpdmUiOm1zdCh0LFhzLG4pLFhzPXZvaWQgMDticmVha319Y2F0Y2goaSl7SC5lcnJvcihgRXJyb3Igd2hpbGUgcmVuZGVyaW5nIHNlcXVlbmNlRGlhZ3JhbSBkaXJlY3RpdmU6ICR7ZX0gamlzb24gY29udGV4dDogJHtyfWApLEguZXJyb3IoaS5tZXNzYWdlKX19LG1zdD1mdW5jdGlvbih0LGUscil7c3dpdGNoKEguZGVidWcoYERpcmVjdGl2ZSB0eXBlPSR7ZS50eXBlfSB3aXRoIGFyZ3M6YCxlLmFyZ3MpLGUudHlwZSl7Y2FzZSJpbml0IjpjYXNlImluaXRpYWxpemUiOntbImNvbmZpZyJdLmZvckVhY2gobj0+e3R5cGVvZiBlLmFyZ3Nbbl08InUiJiYocj09PSJmbG93Y2hhcnQtdjIiJiYocj0iZmxvd2NoYXJ0IiksZS5hcmdzW3JdPWUuYXJnc1tuXSxkZWxldGUgZS5hcmdzW25dKX0pLEguZGVidWcoInNhbml0aXplIGluIGhhbmRsZURpcmVjdGl2ZSIsZS5hcmdzKSxWcyhlLmFyZ3MpLEguZGVidWcoInNhbml0aXplIGluIGhhbmRsZURpcmVjdGl2ZSAoZG9uZSkiLGUuYXJncyksdWcoZS5hcmdzKTticmVha31jYXNlIndyYXAiOmNhc2Uibm93cmFwIjp0JiZ0LnNldFdyYXAmJnQuc2V0V3JhcChlLnR5cGU9PT0id3JhcCIpO2JyZWFrO2Nhc2UidGhlbWVDc3MiOkgud2FybigidGhlbWVDc3MgZW5jb3VudGVyZWQiKTticmVhaztkZWZhdWx0Okgud2FybihgVW5oYW5kbGVkIGRpcmVjdGl2ZTogc291cmNlOiAnJSV7JHtlLnR5cGV9OiAke0pTT04uc3RyaW5naWZ5KGUuYXJncz9lLmFyZ3M6e30pfX0lJWAsZSk7YnJlYWt9fTtmdW5jdGlvbiBic3QodD17fSl7dC5mb250RmFtaWx5JiYodC50aGVtZVZhcmlhYmxlc3x8KHQudGhlbWVWYXJpYWJsZXM9e30pLHQudGhlbWVWYXJpYWJsZXMuZm9udEZhbWlseT10LmZvbnRGYW1pbHkpLENYKHQpLCh0PT1udWxsP3ZvaWQgMDp0LnRoZW1lKSYmdC50aGVtZSBpbiBhYT90LnRoZW1lVmFyaWFibGVzPWFhW3QudGhlbWVdLmdldFRoZW1lVmFyaWFibGVzKHQudGhlbWVWYXJpYWJsZXMpOnQmJih0LnRoZW1lVmFyaWFibGVzPWFhLmRlZmF1bHQuZ2V0VGhlbWVWYXJpYWJsZXModC50aGVtZVZhcmlhYmxlcykpO2NvbnN0IGU9dHlwZW9mIHQ9PSJvYmplY3QiP0VYKHQpOnh3KCk7RDAoZS5sb2dMZXZlbCksbXUoKX1jb25zdCBYZT1PYmplY3QuZnJlZXplKHtyZW5kZXI6cHN0LHJlbmRlckFzeW5jOmdzdCxwYXJzZTpmc3QscGFyc2VBc3luYzpkc3QscGFyc2VEaXJlY3RpdmU6eXN0LGluaXRpYWxpemU6YnN0LGdldENvbmZpZzpudCxzZXRDb25maWc6a3csZ2V0U2l0ZUNvbmZpZzp4dyx1cGRhdGVTaXRlQ29uZmlnOlNYLHJlc2V0OigpPT57SWMoKX0sZ2xvYmFsUmVzZXQ6KCk9PntJYyhYbyl9LGRlZmF1bHRDb25maWc6WG99KTtEMChudCgpLmxvZ0xldmVsKSxJYyhudCgpKTtsZXQgS0w9ITE7Y29uc3QgX3N0PWFzeW5jIGZ1bmN0aW9uKHQsZSxyKXt0cnl7S0w/YXdhaXQgSkwodCxlLHIpOlFMKHQsZSxyKX1jYXRjaChuKXtILndhcm4oIlN5bnRheCBFcnJvciByZW5kZXJpbmciKSxuZyhuKSYmSC53YXJuKG4uc3RyKSwkbi5wYXJzZUVycm9yJiYkbi5wYXJzZUVycm9yKG4pfX0sWkw9KHQsZSxyKT0+e0gud2Fybih0KSxuZyh0KT8ociYmcih0LnN0cix0Lmhhc2gpLGUucHVzaCh7Li4udCxtZXNzYWdlOnQuc3RyLGVycm9yOnR9KSk6KHImJnIodCksdCBpbnN0YW5jZW9mIEVycm9yJiZlLnB1c2goe3N0cjp0Lm1lc3NhZ2UsbWVzc2FnZTp0Lm1lc3NhZ2UsaGFzaDp0Lm5hbWUsZXJyb3I6dH0pKX0sUUw9ZnVuY3Rpb24odCxlLHIpe2NvbnN0IG49WGUuZ2V0Q29uZmlnKCk7dCYmKCRuLnNlcXVlbmNlQ29uZmlnPXQpLEguZGVidWcoYCR7cj8iIjoiTm8gIn1DYWxsYmFjayBmdW5jdGlvbiBmb3VuZGApO2xldCBpO2lmKHR5cGVvZiBlPiJ1IilpPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5tZXJtYWlkIik7ZWxzZSBpZih0eXBlb2YgZT09InN0cmluZyIpaT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGUpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KWk9W2VdO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIE5vZGVMaXN0KWk9ZTtlbHNlIHRocm93IG5ldyBFcnJvcigiSW52YWxpZCBhcmd1bWVudCBub2RlcyBmb3IgbWVybWFpZC5pbml0Iik7SC5kZWJ1ZyhgRm91bmQgJHtpLmxlbmd0aH0gZGlhZ3JhbXNgKSx0eXBlb2YodD09bnVsbD92b2lkIDA6dC5zdGFydE9uTG9hZCk8InUiJiYoSC5kZWJ1ZygiU3RhcnQgT24gTG9hZDogIisodD09bnVsbD92b2lkIDA6dC5zdGFydE9uTG9hZCkpLFhlLnVwZGF0ZVNpdGVDb25maWcoe3N0YXJ0T25Mb2FkOnQ9PW51bGw/dm9pZCAwOnQuc3RhcnRPbkxvYWR9KSk7Y29uc3QgYT1uZXcgU2UuaW5pdElkR2VuZXJhdG9yKG4uZGV0ZXJtaW5pc3RpY0lkcyxuLmRldGVybWluaXN0aWNJRFNlZWQpO2xldCBzO2NvbnN0IG89W107Zm9yKGNvbnN0IGwgb2YgQXJyYXkuZnJvbShpKSl7SC5pbmZvKCJSZW5kZXJpbmcgZGlhZ3JhbTogIitsLmlkKTsvKiEgQ2hlY2sgaWYgcHJldmlvdXNseSBwcm9jZXNzZWQgKi9pZihsLmdldEF0dHJpYnV0ZSgiZGF0YS1wcm9jZXNzZWQiKSljb250aW51ZTtsLnNldEF0dHJpYnV0ZSgiZGF0YS1wcm9jZXNzZWQiLCJ0cnVlIik7Y29uc3QgdT1gbWVybWFpZC0ke2EubmV4dCgpfWA7cz1sLmlubmVySFRNTCxzPVNlLmVudGl0eURlY29kZShzKS50cmltKCkucmVwbGFjZSgvPGJyXHMqXC8/Pi9naSwiPGJyLz4iKTtjb25zdCBoPVNlLmRldGVjdEluaXQocyk7aCYmSC5kZWJ1ZygiRGV0ZWN0ZWQgZWFybHkgcmVpbml0OiAiLGgpO3RyeXtYZS5yZW5kZXIodSxzLChkLGYpPT57bC5pbm5lckhUTUw9ZCx0eXBlb2YgcjwidSImJnIodSksZiYmZihsKX0sbCl9Y2F0Y2goZCl7WkwoZCxvLCRuLnBhcnNlRXJyb3IpfX1pZihvLmxlbmd0aD4wKXRocm93IG9bMF19LHZzdD10PT57Zm9yKGNvbnN0e2lkOmUsZGV0ZWN0b3I6cixsb2FkZXI6bn1vZiB0KSRrKGUscixuKX0seHN0PWFzeW5jIHQ9PntILmRlYnVnKGBMb2FkaW5nICR7dC5sZW5ndGh9IGV4dGVybmFsIGRpYWdyYW1zYCk7Y29uc3Qgcj0oYXdhaXQgUHJvbWlzZS5hbGxTZXR0bGVkKHQubWFwKGFzeW5jKHtpZDpuLGRldGVjdG9yOmksbG9hZGVyOmF9KT0+e2NvbnN0e2RpYWdyYW06c309YXdhaXQgYSgpO0xyKG4scyxpKX0pKSkuZmlsdGVyKG49Pm4uc3RhdHVzPT09InJlamVjdGVkIik7aWYoci5sZW5ndGg+MCl7SC5lcnJvcihgRmFpbGVkIHRvIGxvYWQgJHtyLmxlbmd0aH0gZXh0ZXJuYWwgZGlhZ3JhbXNgKTtmb3IoY29uc3QgbiBvZiByKUguZXJyb3Iobik7dGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gbG9hZCAke3IubGVuZ3RofSBleHRlcm5hbCBkaWFncmFtc2ApfX0sSkw9YXN5bmMgZnVuY3Rpb24odCxlLHIpe2NvbnN0IG49WGUuZ2V0Q29uZmlnKCk7dCYmKCRuLnNlcXVlbmNlQ29uZmlnPXQpLEguZGVidWcoYCR7cj8iIjoiTm8gIn1DYWxsYmFjayBmdW5jdGlvbiBmb3VuZGApO2xldCBpO2lmKHR5cGVvZiBlPiJ1IilpPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5tZXJtYWlkIik7ZWxzZSBpZih0eXBlb2YgZT09InN0cmluZyIpaT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGUpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KWk9W2VdO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIE5vZGVMaXN0KWk9ZTtlbHNlIHRocm93IG5ldyBFcnJvcigiSW52YWxpZCBhcmd1bWVudCBub2RlcyBmb3IgbWVybWFpZC5pbml0Iik7SC5kZWJ1ZyhgRm91bmQgJHtpLmxlbmd0aH0gZGlhZ3JhbXNgKSx0eXBlb2YodD09bnVsbD92b2lkIDA6dC5zdGFydE9uTG9hZCk8InUiJiYoSC5kZWJ1ZygiU3RhcnQgT24gTG9hZDogIisodD09bnVsbD92b2lkIDA6dC5zdGFydE9uTG9hZCkpLFhlLnVwZGF0ZVNpdGVDb25maWcoe3N0YXJ0T25Mb2FkOnQ9PW51bGw/dm9pZCAwOnQuc3RhcnRPbkxvYWR9KSk7Y29uc3QgYT1uZXcgU2UuaW5pdElkR2VuZXJhdG9yKG4uZGV0ZXJtaW5pc3RpY0lkcyxuLmRldGVybWluaXN0aWNJRFNlZWQpO2xldCBzO2NvbnN0IG89W107Zm9yKGNvbnN0IGwgb2YgQXJyYXkuZnJvbShpKSl7SC5pbmZvKCJSZW5kZXJpbmcgZGlhZ3JhbTogIitsLmlkKTsvKiEgQ2hlY2sgaWYgcHJldmlvdXNseSBwcm9jZXNzZWQgKi9pZihsLmdldEF0dHJpYnV0ZSgiZGF0YS1wcm9jZXNzZWQiKSljb250aW51ZTtsLnNldEF0dHJpYnV0ZSgiZGF0YS1wcm9jZXNzZWQiLCJ0cnVlIik7Y29uc3QgdT1gbWVybWFpZC0ke2EubmV4dCgpfWA7cz1sLmlubmVySFRNTCxzPVNlLmVudGl0eURlY29kZShzKS50cmltKCkucmVwbGFjZSgvPGJyXHMqXC8/Pi9naSwiPGJyLz4iKTtjb25zdCBoPVNlLmRldGVjdEluaXQocyk7aCYmSC5kZWJ1ZygiRGV0ZWN0ZWQgZWFybHkgcmVpbml0OiAiLGgpO3RyeXthd2FpdCBYZS5yZW5kZXJBc3luYyh1LHMsKGQsZik9PntsLmlubmVySFRNTD1kLHR5cGVvZiByPCJ1IiYmcih1KSxmJiZmKGwpfSxsKX1jYXRjaChkKXtaTChkLG8sJG4ucGFyc2VFcnJvcil9fWlmKG8ubGVuZ3RoPjApdGhyb3cgb1swXX0sa3N0PWZ1bmN0aW9uKHQpe1hlLmluaXRpYWxpemUodCl9LHdzdD1hc3luYyh0LHtsYXp5TG9hZDplPSEwfT17fSk9PntlP3ZzdCh0KTphd2FpdCB4c3QodCksS0w9ITB9LHRSPWZ1bmN0aW9uKCl7aWYoJG4uc3RhcnRPbkxvYWQpe2NvbnN0e3N0YXJ0T25Mb2FkOnR9PVhlLmdldENvbmZpZygpO3QmJiRuLmluaXQoKX19O2lmKHR5cGVvZiBkb2N1bWVudDwidSIpey8qIQogKiBXYWl0IGZvciBkb2N1bWVudCBsb2FkZWQgYmVmb3JlIHN0YXJ0aW5nIHRoZSBleGVjdXRpb24KICovd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLHRSLCExKX1jb25zdCBUc3Q9ZnVuY3Rpb24odCl7JG4ucGFyc2VFcnJvcj10fSxFc3Q9dD0+WGUucGFyc2UodCwkbi5wYXJzZUVycm9yKSxUMD1bXTtsZXQgb189ITE7Y29uc3QgZVI9YXN5bmMoKT0+e2lmKCFvXyl7Zm9yKG9fPSEwO1QwLmxlbmd0aD4wOyl7Y29uc3QgdD1UMC5zaGlmdCgpO2lmKHQpdHJ5e2F3YWl0IHQoKX1jYXRjaChlKXtILmVycm9yKCJFcnJvciBleGVjdXRpbmcgcXVldWUiLGUpfX1vXz0hMX19LENzdD10PT5uZXcgUHJvbWlzZSgoZSxyKT0+e2NvbnN0IG49KCk9Pm5ldyBQcm9taXNlKChpLGEpPT57WGUucGFyc2VBc3luYyh0LCRuLnBhcnNlRXJyb3IpLnRoZW4ocz0+e2kocyksZShzKX0scz0+e0guZXJyb3IoIkVycm9yIHBhcnNpbmciLHMpLGEocykscihzKX0pfSk7VDAucHVzaChuKSxlUigpfSksU3N0PSh0LGUscixuKT0+bmV3IFByb21pc2UoKGksYSk9Pntjb25zdCBzPSgpPT5uZXcgUHJvbWlzZSgobyxsKT0+e1hlLnJlbmRlckFzeW5jKHQsZSxyLG4pLnRoZW4odT0+e28odSksaSh1KX0sdT0+e0guZXJyb3IoIkVycm9yIHBhcnNpbmciLHUpLGwodSksYSh1KX0pfSk7VDAucHVzaChzKSxlUigpfSksJG49e3N0YXJ0T25Mb2FkOiEwLGRpYWdyYW1zOnt9LG1lcm1haWRBUEk6WGUscGFyc2U6RXN0LHBhcnNlQXN5bmM6Q3N0LHJlbmRlcjpYZS5yZW5kZXIscmVuZGVyQXN5bmM6U3N0LGluaXQ6X3N0LGluaXRUaHJvd3NFcnJvcnM6UUwsaW5pdFRocm93c0Vycm9yc0FzeW5jOkpMLHJlZ2lzdGVyRXh0ZXJuYWxEaWFncmFtczp3c3QsaW5pdGlhbGl6ZTprc3QscGFyc2VFcnJvcjp2b2lkIDAsY29udGVudExvYWRlZDp0UixzZXRQYXJzZUVycm9ySGFuZGxlcjpUc3R9O3JldHVybiAkbn0pOwovLyMgc291cmNlTWFwcGluZ1VSTD1tZXJtYWlkLm1pbi5qcy5tYXAK`; |