amd-mixture-of-experts · submission 27114
KernelBot user 162 · python · License unknown
Use it
Vendorable · source mirrored · license unknownView source →
No package. Vendor the mirrored source: 1 lines, June 9 Researcher Reciprocity License v1.0.
submission.py
curl "https://kernelindex.com/api/v1/implementations/kernelbot-amd-mixture-of-experts-27114?include=source"interfacepython
Compatibility
measured onAMD Instinct MI300X
declared hardwareAMD Instinct MI300X
architecturesgfx942
dtypesfp16
Benchmark evidence
2 measurements across 1 GPU, fastest first.
Operation / workload
Hardware
Latency
Rank
Observed
Reported · How evidence levels are derived →
Source and license
sourceavailable
revision digestsha256:b86c3d7b08f201d366fa9e3be7e00d3b04b410337360e76a978655141ea51e94
license declaredunknown
license concludedunknown
imported2026-08-15
Kernel source
submission.py1 lines
IyFQT1BDT1JOIGxlYWRlcmJvYXJkIGFtZC1taXh0dXJlLW9mLWV4cGVydHMKIyBUaGlzIHNjcmlwdCBwcm92aWRlcyBhIHRlbXBsYXRlIGZvciB1c2luZyBsb2FkX2lubGluZSB0byBydW4gYSBISVAga2VybmVsIGZvciBNT0UKaW1wb3J0IG9zCm9zLmVudmlyb25bJ1BZVE9SQ0hfUk9DTV9BUkNIJ10gPSAnZ2Z4OTQyJwpmcm9tIHRvcmNoLnV0aWxzLmNwcF9leHRlbnNpb24gaW1wb3J0IGxvYWRfaW5saW5lCmZyb20gdG9yY2ggaW1wb3J0IGVtcHR5X2xpa2UKZnJvbSB0YXNrIGltcG9ydCBpbnB1dF90LCBvdXRwdXRfdAppbXBvcnQgYmFzZTY0CmltcG9ydCBiejIKQ1BQX1dSQVBQRVIgPSAiIiIKdm9pZCBydW5fZnJvbV9weXRob24oaW50IHNlcV9sZW4sIGludCBiYXRjaF9zaXplLCBpbnQgZF9oaWRkZW4sIGludCBkX2V4cGVydCwgaW50IG5fcm91dGVkX2V4cGVydHMsCiAgICAgICAgICAgICAgICAgICAgIGludCBuX2V4cGVydHNfcGVyX3Rva2VuLCBpbnQgbl9zaGFyZWRfZXhwZXJ0cywgdW5zaWduZWQgbG9uZyBsb25nIGlucHV0X3NlcSwgdW5zaWduZWQgbG9uZyBsb25nIGV4cGVydF9zY29yZXMsCiAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPHVuc2lnbmVkIGxvbmcgbG9uZz4gZXhwZXJ0X3dlaWdodF9nYXRlX3AsIHN0ZDo6dmVjdG9yPHVuc2lnbmVkIGxvbmcgbG9uZz4gZXhwZXJ0X3dlaWdodF91cF9wLAogICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3Rvcjx1bnNpZ25lZCBsb25nIGxvbmc+IGV4cGVydF93ZWlnaHRfZG93bl9wLCB1bnNpZ25lZCBsb25nIGxvbmcgc2hhcmVkX2V4cGVydF93ZWlnaHRfZ2F0ZSwKICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHNoYXJlZF9leHBlcnRfd2VpZ2h0X3VwLCB1bnNpZ25lZCBsb25nIGxvbmcgc2hhcmVkX2V4cGVydF93ZWlnaHRfZG93biwgdW5zaWduZWQgbG9uZyBsb25nIHJvdXRlcl93ZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBmaW5hbF9vdXRwdXQpOwoiIiIKIyBDb21wcmVzc2VkIENVREEgc291cmNlIGNvZGUKQ1VEQV9TUkNfQ09NUFJFU1NFRCA9ICIiIgpRbHBvT1RGQldTWlRXYnRnUjk0QURGOS9nSDYvZmxGN2YvLy92Ky8vL3IvLy8vNWdOUTk5OEFBeGRxc2RqaVBCZUFlaFQyeTJHcVZkWEkyNjREMGU5N2p0aDZ1eHp1eTlZZTlVWHM0ejNhNTNiU0RKdGliTmJHTWpRR3J2VXNlUFFHTFR0dW1oNzIrdlMrbFl0R1d6V2FzZlp6akswM3FjN2xsdHRzTUpyVmFDMXRhcmJWSXBwU1pUYXE4dDBtQmdXYW4wYWMyeXdTbW9FQUFRRU5BbUpvWk5KNkFreUdOTkdoQXlNUUFEVE1pRFRRUVJvVXlOTVRUVkg2VThvOUpvQWFhZXA2RUFOQUdnQm9BOVEwQUludFJKVU1DTUNZRTBHQUFtQUFtSmlhWk1BUVlUQVJnQ1RTUklFSnBsRlAwSjVTUDBKb25vbnFaQXhNUTAwMEdtZ0JrQU5BMEFFU1JBVFNBQkdrUFZUMktubnBIcE1tSVVlbWsvUWg2cDVHb1pHMUJvTkFlcDZqUUlrUkVBSU5BbUlKcE1xZm1xbWhpQjZCcHFaRFFEUUFBQUdtalN6ZHdRQjlhQVk5Nzh2cDVEdFBMTjFkaDF2OFAyZWlYdFVhSnZZNy96cmJhWXFNM3AwOXY3TXY4YzlvVCtBVXlPNmdwb3B3MTk3WXZpUkNlZ1huT1NIajVZTXJBa2hvUlpBY1FxRytMZnhJLzBQcDh5c1h2MzloL1FURDZIN0Z2WHZpSGUyZmpFVGxrTVJZcUlvcXcwUGhSbmlDZ2VsaG9tR2l6a1c0eXNSVkZaT0V5ME10aVdoTWFXMk05ZnNwZ3dtdmRzd2JhWThybWNvYU1NTUg5VFdYREN6TWl4ZGpKK1E0WmU2bFZoZ3hwUkZOVXhqZ2NhdzVhSnJsTHBIUmRvS1ZyREFaUktraXdDc2hxSXFjbjZiZDNTZlBjeVJHS3hGa1dMRVJVVWF3NDc5WXBNWVZJelFORG82Nkh0OWZQbno1RUlqVmVKY3duT0dJbm1sUkVPMmxodnJlVGM5SU9PbWhiV0plVUx5Y3FtWVpoUTErc1U1YzdKZFY2UzhDUThVNkhFS3FLUDBLZTFtTVhtRm5JT2pXWlEwbUlvRU1jN3hVdUlqSW9WQk5wWW9MRVlNeTFlNjFFWXhoZ2xZcEZHTVdDb29zYlF3ekl3TVF3YWlDYW5nREFrS2ZLdFZtVVZWQXFmcWxtQUsyQWRJSmd4RWpDTUUybkY4MTFzVlJsdEdFTUNGRzR4WFJSUHdQOC9yNVByTVY3VGQvdDcxczcxVEwxWkxkT0orY0dGZi9iUFI5bzd6L2dKQWgrYjJkZW1LWVhtUWZGbGpPa0YrOWNBaC92M1liSHJtWWsyTW1hUDFsMTV3ZlU1Z3dJT0lRekJ6dnhNdjZ3Ry9raElnZjgyVXpGaDI0eTd0KzdRU0VkWklyQ1FtaG5DRlltWjhodmRKYkJFbUQwUyt3L0t3SGp2dWtmYXpvUVNUTm1VeXpNYkxrVEJXUEJ1S1JpdisrSFh1TmVWa0lreXlDUUpKbmwwZzhodjBJNEdqRXAwZ2pMUURXRTIxcXVRWUJXdFArZytrcGRGNzN3a0xFazVKUVZpc2lxbVlPTVRSeHhibnNJVGM1aHpSUW1vbi9OaGhxalJvMGJCRVVTZzlQZzBHZitHdVhFbW1EM0JZWGdXV0ZwRmlpaWlpalNVU2lVU2lVVWxZSVd6c1VlZlRiWmpzckdld2ZHZS9Mcy9WV2FEMnFHY3Q0cEVidDAxQ2s2LzhKUWhnTU5OSDc1elNyYnJzR3VLNnpFdkh3SG1ta0pQRkI3L0N3Rlp3VDRuR2NwdmhJYVRuTXdhTGRubDNqZ09iNCtRbis1c1Nxei9idWZRUGpzMXRhUHdOWk1Ka0JqRWlYMmc1MnJlL0w2dVZQT1ZSUklERjhKSkFXN0Z1OTBvcXNGcTNvWDRxY0c5cldKakE5SG56VzBJZkhJMytReHdNRTlKR2tKQ1FkMTdGaHRCcGl3dkRXelJYbS9kSy9sODQ5bzErSnpuUm9aQjdBY2VEWkNQZWVISEE3L2YvSWxCcUNLN3IzZHZFWGRKMFQ0c3dITDduTzNOZkR6VEg0MzVrOW8wcUkwTm9vYzhTTmt0aG9xME14c0RTelBEVVZaWDJhKy9uVnFjL3orRFpDSGdnOXBEdENmOUcwOFRYYSt3T3c4emFiWVdMUU5rdFNkQ2RWQmNMckRXWnBjK3IycERkc2h0SzFvY2lremNMQ2dsTzhzQ3F0ekRPTDlkdVZySEhGVEZjTm15bHFDWXdLN211dWFFM0R3eEVxbmpOWEd3Ry9ndkhCYU02UTJPMk1EY0xJMGdqS25UaGFMdWF3VDArZVZyczFyK2t4RWIySXdxTStWT1BsRk5zQ3d3dXhaYTQ0dWt4dm9haGlDUVNSTVVBTldjSVhSem9Xb05DUlVjNGE3SXhYUUJteXk0K3FYczlXWnBEaFdYYzFhNDBseVc2aG9reTBzNGhveHhiS1VZV2czVWRmdTBkbVhvOXdkVDdPR1N3S1VzUHNGbUdDTktTSWY1NSt1WFdpdkl3MldaTUJRRWdrS2dVR29GQy9ZNTZOVTNoZ2I1YUROZE41dm5lSWNRRVNwWjBPQXVRRVEwRktYalJSbWpNaGVNNFRVbjdYT0Y1anVjaTRPQmhTaDRoMjl2Q3J2ZVBmem12eWQvV1BHdVlJVkU0THoxZ2h4T0drMlN5Q2tGaEdrU2tpV2xxaVdCUUtCeHFtdTVKTnd3TjJ6S0R2N1dFbWdNM1RCT3o5M3hLOWFSaHE3RVFPUlF2U2pPMkV6QTFnVW9vTFE2Y01Yemw4Q2pSa2tTVFdpNnJnNWRhWWFITnMzQk1EZzRlbFdsS1dHcFRRSnVITWNOeE1NTjVvM0UyWWJnbTJ6WVUxa01oc3lkdEZPQ25BRE50NWNzd3VZWnBEWmhzM21pYWRpZCtVamhRTFRuUk5oOTJuZ0dpY1NKRUJyVWlCWk93OFNIM25SOVZ2dVpRUjFtbXlycm4wc3c0alhIVCtLYjE1R3BycVNHK2RNTkh2Tk9DME9nTUVZVS9nVGh5aFdjK2VacUZ0R0xPKzdmcG0vSXg2OG5WY21xS2RqcFRaRUZTQkZtd1VGQzhZSnhubEJzSFpweEJBZ1c5ZHFMTkVXcnVqWkRtUEdqRmVabGVPbmdhbXY4WWg5dmhnMlNFeUhsMjh6ZWtEMzByRTQ0elBkMFZ6RThIellvS0JwTm82dkxXbDZPcGxOWVlJZURKOHNZZkxIamExWjlPT0hmY0ZTdHVPdGhYRkRLR1dvMmxtNFR3eWxwRXlhQmFCMzVJR05naEN0RzlCRHZWUTZEMVFmSE9QTk1ZTVNjaGtFV0pBVUJqQlVZSWtTTllFVW9JRmJHQ3lNWUtUb05TaVlZT01NWERLODlZNlNxbEVwNmVPNE5FN3AwbUtCZ0RVb21WSEU3alVMTlc0N2xJTWwwUHFPSjI1VFVadENzYmU0eGNRaGlHNTMzdE4zSkcvUFdtUTZ5b2EwL3FEY3F3RWpDaE5jeUVYMXd2TjBkN3dlaEViblQ0OUFZNGE5L09yb3N4a3FFcFF6YlB0OGl6RHRPL21IZWJEOWVoeTJYVGw3M1h4ZUdIaUpvcFR0enVpV3FjdTJ6Y1VuY3pxM3B5NTRuVURmU0VsR1NJd2hRTUpVUW5GT0RvSldVdE9COHMxbk9sQUx3NjR4bzBzZ1BTYU8xQ1RjUXUwcFlVNzkwMXZkeXZiSjgyYU9pY3FYcnFRTG5odWFaSW1McTdra1oxQWJEeTVtU0c0S3h4MXU1QTlIcjZKMmlTWkpKaFJ1TXAzb1JkeGttcGlDTVd6dEZPRGtVQ29uUFZFNWQxRGNINTFRQklqNlJaRktpU0NrZ2xRbXNzY2NlYmJqcm9xbDIvbnlvMVc5dnhKWUZnM0ttOVNiZGY5b3pNYnlZWC9Vd1J4L2pLSUVIK0VzSkFDRDdvL2g0YUY5azd4T1RzaHpENkwxWjc4OHV3L28wbnRjN29WYncyYlRDbThLMmpUUmQ0RUtScUdBMG9kSklzQjcxSFk0ZEVFeE1QNk93Tnp4amNVQ2NONU5JM2d6WWJmcjFWRTRVdURNQjhVOHFKeGhwV25zUko3aE9rZC9LTWJTVzFHa3FYeThqektmWnpGZDdEVWxqREp0NGNkYnh3YnhqMjZEOFlCbUc4MnZQc1JQZ1EwMm1va1ZjbjlubjAwTllvSFhIcTBHb01kOEoyVUhFdmVhM2tocmxSYU5BSjVIWkVMcVBNOHk0aFBUU2Rwa2x3UEU1R1Q3SnVuRjl0eUY0RFp3RWJYUGRQeW1tMS9wK2lQZlBqK2kzVTRRM29jUjYzNE9QbWQxbGpYSkpNaGt3aE53cFgwakRiZVB2SEtJUkkvUVUvVDM5YjZ3cFFXTlppZS9IVm1ZbEhySjJEbjlQcjM3L1c3NE1jWEZVOGFybnJVcGtWYWlONVA0YXMrSG0yMTVSVS9ROThNZms3WnRkZzk4K082Si9UYnpXVDQ2OFRETENUYjNMUnlQZ1g2OU9qRi9xOEZadXA3bWkweDZ0bmJONDkyRFoxcXR3U0hFTzljTlQwVDZwOERBcVRSQjd4WVBDQ01HWENqeFM3bFBOdG82Mkx6R01kelBxREFvUjl1a0lDQkhNRHVvSThFOVlLYkl6NDhzZFRUSnJKbnRBRWdCM2k0b0lYeXJlMjZOdHpwaDFWRlRXYXFyNW41WFlPbmVaaTRwblFqTmpma3E5ZktoTkFkcEp4TzJ3b0JZblJSUVN4S2tMd0xvYmZtcEJrUFp5ditDZlJ5VnpaV3FTVHJ6REN5TWR4NjVXOU9yZW13bGFsTW5Cakx6alFmbkd4ejlaU1JSS1Y2bnl3aFJ1bFlqWE92bjkrUExxNkpZMXp4T1VNYUZoM004TXc0RlJqalUzZkp1Wmd1RUc0YmMrMUdTZkVySStWbVlSMWlvblVpT0ZZaVFZYjRBYU1CUXNqQ1NnUklVRWlpcWlTYVFRR1FnSmxJb0h3aTVjM21oSjQvbXNFK1RKQXlpQ1JBNFRpMHF1L29adWtOeG5rMGpyNGpwcUVScXFtbloyMWgrVzR6SUVDQWtXOS84M1hqak56OVU2djQ3NVdNeFpjU1IxSGtiRXp6ZENXVHpVelhzM1l6WnlXdUlSU25zME1NYXNITTFldHhLcWhtc0F6ekZMU2FHcEx1ZDQ4Zml6YmwwelIyR0tKSHhMR3h6WklZd21LZFRnZVg0MGNpQnRIVU1ZZVEzRG1Hd1ltQVM4WSsvZ0JrWm5MaVBUcFRtTHg0OWg0aVJVeUJkSVVGa3lNeHRPaTRvSmd0TEN4QTdacXJhNGtJdkJNdGIzcFZBcWcwbFJPSkpTMWtva0lKL2tLQWNOM2U3d3lDbUpVRk5Rc0FGQWFEMFRhNlhSbEliZ05HRzVudGxxSUxicUFqUFdhK0taeGNTekM0N2RsWEMxc3JlU3B3V3dpUGhZaWRoblhqMGl5Sm9FOUhGUmxUVFlxclI4MG1iQklOOWxBWXVSQWNQU1k3cWU5dDhON1dZWkF1eDVtK2V2SUhFMEp4bjUxZ2JMaEZrdUlWeHhJU1hiZHRRSzVkM0E1WEhreW1na25JRm1Rd2VzeVRKcEIybHJlcnJBeDlQYjlCdXp6eG5aaE93MFNucWZxM0hGeFZlenM3cDN2eloyekxkdzdVa0crS1NjaGJrNU9md3cwMXRkYVdDWmI1dUl0RGRHMlJBS1lWNFR1TFMyeHc5VmFBSjJwS0ZBdmNtYWRNSkxHT2RaemJEbHo4OFRUalp6a0hsVHNsdkxmNlFKeG1KaGhqd3orSDV5RVhaayt5M25rbkE0b0grRWRsdjhYazRmWlBENS9EcHRwSkpxdGt0QzFVRDBDM1c3MkErTVlsRUpCd3VVdHk3UkdkQ2dIWnpibFZNTGN3OFFUZE5RVUpoWUtoYjRZV0REQWxHaEdSd3lvQmNkQS9MMDVXVmFHQlV5SHpOcC9BR1pLUTlUUTNoTi9nekM4dlBlS0NvM01DYWpjdmpGL1YxTDk2SlJsQXhNcXFyVEhLZmRYMUkyWCt0Y1N1bWova0N4L1VvaCtCRDFRQmNMSDNPYi9YeXZqRTVuTThUT1BGblVBTFFncDErODczTnZtWkt3aWRQOENkN3IvR1RrYUVuNVVYd0poeUtlemtIWkR3TW9haTZteWJNSnNLMWZjenhCQ0JCNHB2RDZwZ2IxVU5GT2ptRTFibnhZcmlHQktlUmFRZzlsUEdoWnBjM2dFdFB0a0s3Unp4RDk1QjRuVUswZVk3Skkvdlc2SEFlNGx3TUpKaXhSQXdBMFNKbXV5Ull2MGxtRC9aN3U4dVlZWWM3aThaVFRxK1BOa1YvWk8zcTdDdVU4aFhxcUVTbElNL2hjOFh6a1dUcUdBWkZYUDYvZVF2Q1djWGk4NVhMMElDRExuUWJTQWc3QmNqdXF0WFR1TWdGU2c5anRNMm1pb2JkSGNjWDU1RjdRNE5uNXA3ZW5HTlVGdy9FOW9YK0IrakNIVmRVM1J6K1lvY0o2eTMzaWV4V3RxUG0xV3djSnBtWE9wODdMbU95Q3ZDVXhLRGVkYTBVUnJ1MXpVem5FVHpseVlJSjZISml0QldtR1BUbVVteW9kZ3JQamNSNE1aRm56YkNCdGRidllUditpWWpyalRlcHBPb2VCdklwR0cwN1hqVW9DcEJjaXFad1cyT254bXp5ZTR0bDRrTnQ1ZHB2YzBXdXoraDVsRUhlQTdnNkdScElDcjlZS0FTckVhVlZWbDNadFdkRU0rU1dQSnlZQk5CU05xNGxUMW1kejEvSHdaMllkaER5Y3QwTDROOUtYNlY0K0xXUHpOaDc2S2ljcVpuRDg2S29RazY3eHVLMFhDTVRNTXdwbk80M1ROUUlrNDQ1eHpOT2dyNWVRK1JRQ0tadDV6aXVtWTN6S2lUY2pQMzNsNk1UZ3hQdmZNQ2tpZWRDa0tEN2lpQjJIZUR2V3Q4d1dPY3NIVEdzU2xDNDVtYVdFYUlBLzBsajBtOHVPQ1pobVdHd01aVXdNQ2dibzl6QmFBOVF3RDdpSVVRQWx0Zy9pallEMVdnVVFOQ29UNVdERW94R2FZRXJFUlFocGhQeTRGUkZnYlpEZXFDT1lpNWcwQkFFSktVSXI2RUVmZ2N3M0hGdnBidGplUkd4RHhHK2djVU9IVVVoZXlnZnh6N204MFRaTWVWdDdvRm1VajIvbDZGK1Q2SHRVMmZTSWhPWmJCU0FjMFRrNm1pUUlSY2hJU0ZGREFQQ3lYd0h6Y1ErNklFN0J6RzNlZHdFcjJBQVlnOWNmYU9rUDFuRjg1OWdDYzlMQ0JGV0orTU94RlBiUFdvL3RYTkw0WUM3SDBDSkM5d1AwZ3RZQTkxQURJbjhmOXJvSFJmZitLU3RGR0I5cWRTUmluVVRFazBFR0pLSVZZRzJNR0FIMVFEVmdTMUJpV29TUktQeHFLTUVyMDZoMGdrMFVmck1qcWgvZFB4VTRnaDVnSThFMkNHUUVocWVnaGg2eVE0S1BENG9mTzZBN3pRQUNpQ0h0Z0FVVS9lZ093RGM2RjIzVGFKTTBYRmQ0SlNRbHl5TVV4aVlGRzNMNFlNQWtjQXdzSUZRVE1CcHloaXo0bXA1L3lqRDk0RDRqL09QSm9RU0pRbk9KSUJhcDd4RHdXU2dvdUl3R0F5Uk1oVFVXREFoU1FDUlVwa0lJZGo4eUl2ODRoRUtVNG5tcVdFVVl4a2toR0VrNHZOVG9FQis1T1NqdythMHRWVVNsUzFFU1N4SkswS0xDclNGYVZaV0pDMUZSQmxLZ2kySkd5d2hTd3BHUWg2cUFjdHVVNDZHQVZEUlNDZ0dYbTlVQkRMeVEwQWRxd2VrQTJtSVNCaDRCdkNIOFJLbEJFN2o0Zlo2ZXdpZStIQ0FnNUw0QmdrSXoyRENrK0NkME1GbmlmaXBuRlZZb3ZtQjd5UVB0cC9BbTlNUHlSVEtwWjVrT29zUEZTQUFiVGVsR1NyS0FEQUlmMWg1Q3RueEFBK0tKUW9iVGNJN3F5aFlHVFFCTUtJMTlqODM2TUNCRWtHQ1I4dS80NTdMNkE5NlZrUXA0Q0RiREphRk5JYU5CWVVSaUNXc2FvakhTVVdZMzFRa0xEc2RRME9LQnhnSkZBUGxUY3VrNHVsSUk1Q04yQW55T1NqU0lINEtmZ0tIbVh0TlNLblUrb0NaVWNkb0NQYW5VMm1WM3A3cHFmRGVSSHdzaENFSWNlemdQUkVMR1VtSlVHRkFUQXdERWprSUZXTUVzbmUzckZPckNpSVV3V21Ec2xLRUVQRUlHdzlaM3hBMEE0QmhvRTJJN2FCeXBpaVVQUkozb1Q3MEw0YTU4ZEJJU1ZDWU5LVVFUWWdZeFl1dFlVd3FTa3BjR1NVUWxJbEpsRUdGd3NpUmxabGxHR1VLS0loNjJIem9iOEVzNytDQmVxWGx5Y1FvcVJvb2RwZ3lHUmtXU2JvcVhhRk85clc2bVpJZzl4Vk93WWVTQ1BjQjR2VkZQZ25LYmdzRTd5SW5Wd2dkcUtPNzNQczJQY0NnUjNHbzR3aEpHTkFmcEFST2J5b0NHQ0ljdU1JVG5La0lSTEFLWkFKbTlvcmZqWHFUQXJSK2dObVE4RkFPQ3ZqRTVvcDdlbWVJY3VvQWJVTkJmQkVocHRJbnpUVVJUUkdaQlREbUlDRlFFRG1XSlNyQklndjRuTk5vSnNpb2Nnb0N2U1FMVkdlZ3RQTzAwa3dNc0RTWEh5SVpGd2I2VVJ4ZFA1SGNCU3Rwc1lFaXdpMGtpeUx3ZUw3Z1dmUTlTUWZkTUFlOEJKSVdRanhQYWZiNmZtUDZ5eTBQdE1pNzJSMWQvQnNzSVlJUUtHRUxLQ0Z3b0xMU3FvVEhON2lLZVlJZFFWN2JmUTZtOXRGd2ZXaFNRWEFDZkZ5aW4xQk5zQlBpaWMxRndBaVI1RWJZQU1VL05EM0hvZVlCc0lwMnA2Q25BU0FyeUVMNGdVZTBRZWhQd1ZZRkdJcnhJV1FUZ0lJRkZrYW5sUFBkTklFSW1UdlFFSlZpcWR0QS9NQkV4WFVGSDhpRi9BL1M5eEh4d0Eva1Q1TUQxbG5ydTB3YnQyejZXRGNVd3JMeDZhRkxlWHpkdEh3dXR0cGl3dWx4VEdMeWVoMisxcE5leFNXb1Fxb0tJQ3FDYnhlR2VzNWdHd2pvUjVVTklyVTREQ1c4VEE3MzJlRHdlajV1Nm8vWDYvWkQwZTcrSHQ5dnYvWjczbHF2NnZabzluajJIT2RIM3UrbzRPVHBPN3lrVTZYN25ubWJzYjAvdlZOUUozZEE2aS9mdUF6ZGRSTVg0RVRXZEFudHo5dzlNNWV1UFZuSlRnd0hQU0owTmFRMlAzOTdtNy95ZGlSbEtVcFNNUkVTbUQyc3I4ZUk4TFljSWluWjA3Nmg4WWVxTzQ4YTM5MWlqdWpDbkRZWGlFMXdramd5SERqc1RSYUNFb2FHNGtrZnU1Q3VIeEhyRElpQVE2VDJMTEI5U2RrQ0JJRUI4NmoyOENCeG1DcjRRQXpFSFdLa0lCSklKZEZJNEFKQVRRRkEwVDJIbFBPWUFBYm43bmI1NlVvZ3RpV080VW5PRmpCU0xBbi9vQUNNM043RWFSTndNSmJMS0YvaUFwTGxGcEVwRm9sQ2dlbUNVbm9nVDRKNmVQSkVVVi9mQU81RWlycTZJcFNIY29QSkJOb0pRVUo1bmdJZVloZlJhalFLeTBMU3lWQVJJekltVmFJWld3cFNDVXljU1R0M2FoU2xMYTIrUjI2a1RxQVQ1Q2Q4WUFnb3dpa0ZBV0FLcytYK2crVXpNekRHYVNUaUlFTERpQjNHajBRZXJSYWs3Q1pQRVBoK29DUDFSaythQ0pFK1gyUSt1cS9nSlJnVXNSWXhVU2ZoTFJGV0xCVlJHSUtaWXFPRUpTV1NUQ0tpU0lSUVloRXVQZEQ0UWd4a0ltU2Z6K2xTeVhKaEFvZ1JrSU9IM2VRbjYrR1QyQjlvZlp5VHVxWmZESm00NTVUVVBnVW9LRElEUmNGWUVFWWtJZ1FHSkNLR2l1WnI2Rlp5N2g1dmoxekxpWTNLVnJpVEE2TVFZQ0l3Q0VXUUp1b0NnZ3kzZXJxTitDRVZPWVFnTVBiOElyZ2ErOHZqZ251dzhJOWdpS0pFUWtta0NLSDlwSjNoQzBWVVJSVmlpU0JOeURlNlh1U1RhRWtZQVYwT2lBWEFqemdDQUhNVU14aXBvdmljQXVLSGNGSVVielNpZ3FqR3k3aGRscGV0U0dzcFVVRzV5VERTS3pOWUdHL1F4VG9TZDdwdzNJUVRFY3lSaHgwdkN1SmlDOHpxYm5nSGtNczl4d3FhclpYQTQ0SjBEdjcvQUtnVklhblh4K1MycXZUS0psVVJ0cldxbHRiYmppb25wemkyK1hTUk5xUFkrUWRBNXlTK0tuY1VHQTJxVW5ZRzBzSGYyYVZUeTlXakRrbThVV1VUZTJIUGV0MXJQRXd5WXhvb2pHTUZnakdJS3A0OTV4RFpKTlRnSU04NTJrUTlCTzVXUE9kNTdpTEpGaDI3dlB1ek1iYmFxMkRiR1ZWZzBWcGJuaDZQTm8wNnpZR2pyOWM5MnFWS2xDc0FjVnhFcDVJT2ZYT2VMTU1WRGdrdm9BK1ZwWDdHQWtPMGg1QTcxMkdDWGhROGU1SjhGbkYyak14QkNXMldWRnFVcElUTTN2ak5ZM1dybnFuZ2VRUTZFRDRBNmFZeFJyMXR0UWtJRUFCSmtKSmt5U0dHR0JJWUFCa0ZxOThBSndQQUJ5Qk9ZQWdGaDU3WW9wN3dmRGZSS29Lek53YUFhb0FGSEpQRTVoRDV3UU5kSDBCaUo4VmxRL0Noc2diWW1qSWNJVUUwUk1BczN3T3lBVGU4RStJZHVXMGNSdWFESnIrWTh3Z2RnSDE1UWlqRldESUFRSUF6V2xQc1JPZ0NQeW0vMGVrK2M2T1JmZkY2L2FVektSNmlnU0Q3eTdnTnJDUHhBKzllYUNmNi9DSGNwdkZEVlR3VkE5UkNnUk9DanNMREhjUURDQXZKN1JPaFFFRHRSOHZQa0VGcnFVVzc0RUJkY2dUWlI3UTRFaW83bEVMTnpEWWtmNWV2OWhMUTVjbGdlOERvbnM3UkJ5SDNlSWZpRU9iQS8rTjcrRm8wUUhkeDY2d3dvd3h1cnNRNGh3aDl5SVdjZXFRd2t6OGFMUWVsSlJrNlVGSkJWV0JuMWl5OUp1UVBhZ2Vya25zaVRSSWcvSnZYNG9aTWt1Z05MQ2dxZzR3c1R3QkJoc0l2QzlJYlVhWUlMMWJBV3h5ZE5uSk5paDJNRE1RVzd2NHlHNU5sTE9BWFZnc0dXVzJnWVN4aEFIbUd5UitmSTlFMkpBaUVISWowb2VTY1ZlaG4vVHVBNlhROUVRaG9ia1BWUzkzanNzVFFqRGxkc2piRGpJWXBPb2pNbEJsRTJaYXJrTXNTWTRYRnhFUnF1QWt3UmdLQXdsSmxoREZrRmtRaklzQ0Vnd0pJOERpRGV2K3FPMGVpd2UxQk9ST1VEaUhVZmNEWHg3NjV6bURIVUVUT0JUSnBRRldpRk10a2lRWkJTZHhoY2s3NEZvVkJJelpTVkJXSG1UZFVEYmQrRkFsR1NUSm9CbE5FQ2tDdHdQbEFrc1VCd2xBM0FrcEhLYU5iQVNRWklDSkdjZWdPVTRPd29xUFU4bUVFMWFhZ2tRaWtDSnlrQXNrSkI4VXhVTmRFTmhRTzh3LzZSUENvYU80bmdaUEJhRzduSWdacUc1VDVJSGFwdE1KazBzT2hRVVNXSGZXYlFOaFdTMUUydW1oNEVpWTBHd214cG9mb3RjNkFlVVZQdlVDTDdla0lITDFlVC93b1I5ZW85NXBJa0JoQWM2YTNwYVlKajZYYmtwejhqcEJnaXdZUzIwc2plcERKUUdZRFNhbW9ISEVNNEp1dXplR0pzZW1Fb25FQ3lFUmd4WnAyQ0kzcFROYXVPc3VlL2xPZ0NFclZKSUlsSU83MUVra0NnTkpzTGtwU2ppVHFLblFFcXJLSGROZHVIWnFaR3Fqcmw3elF3cndpZXljQTBONGFNZlZUVk5SM3RRSWNzQmd5UXlFR21BRUFMMEREcU4wVHVDNWtvQVhJbXArMkRBUXFvU1JJZUlvYXplZktrSnNKblZrQXZIQmlzUkhVa2taQ0pJaUtUeklOS0txTVJWRVZWRVVvcVVWUVFXdFJVUlZSVVZGUlZWVm9yU0ZrSWtvZm5rWkdHakpQdU1JYUUvSUNDbjRvSUhZaFNDOEFYeEE3M3dmbTBJZEFYeCt3Tkw1QzJkaWdjbnhNa3FwVkVrZ3RCVVVtWmhsVzI1bHh0eTF5cVNIU1FueGZCNEhmRHZoOUh0NUNRSW40RDBpdWlZV04vVDVmQUJYc2ZOUVQ5UEVOb0hZUVVPSTVVOERSQWdjb0RvQnhCYzdrdWluT0wrNkx5TlVGNW53N1RVVlFNY3lFQ0VRT1lwQjV1aFhrb2RxS0ZJTEE4Mi9RTkFaQkhLTDkvWTdyYS9tZ2NwSjdJeUJrK2tyRDMva0ZLMHZ5NTdIVVRJaHhrNmQ1RW45VHdvWlBEd29taEptVXBrNWdFV2tta3QwNFpqV29vcHlzMGhRNWNhNVhjVFhFbWNycmJkVUQwRW9jYWhVT1RFU2xOazhJZWdlWktFa3p6UkFpVEVDVFE0OHg1a29UT2lidkVQUzBEdS9vZUlnQ0lhSWdLdmZGQUdCeWlvZGZNZUNOQkZUMUhpV2dUcTk0QlhGT0RtU3ZJYmlFejJCQjBadVI4UUVUNDAzSUNlTGgzYnUzdmwzSldMczRJa0M3M2sweDNYVWt4UmM4RlBvR0hKNGtUYXhWaU1uV0FVUG9oUyt3RHlPUndRZ2hOR3hpZ0xSVmlxNGdZSm5nRDZZQkR4VWE0SWVpajJVVUppRnBBWUVmekFNQkJDRUVjRkZwVFBVSXk0RjdXS0U2SGxXKzlBUTBBMEhGVE1FTHFRcEc0cDduQ2RqQ0dpUVdnZ21lWTBvNVFGaW53WG1XR1ZEaHloUWZpMTNocnpCSXlDdUNsa3BkbjFCQk43TTZKM2hZUURlZ2diSzRjV2hJRWhHQVJJbmxDcWdTQjJNWVFxaG5VMkFkWXJDQ3I3UDRxbG9KeFR1UmdmRVVGaHdndVFrUnpCd3NZZXZ2ZXJmWElHRnhZUVlSUnpBZHljd0RlRVlzSHlKaUIza0VEeUV4MGdCQms5TUlaZUtMY1BYNUtiejZnUlF3aCs2QkZDUVE1dm1kM0U3ckNaVXNSN2hJL0FJUWdhcm9jRWUxQ0dNQzlqNzRSUElFNzFkT3JOV0FFVGo5L0VEQXhpd1F5QWxaQ2UxYWZUUzNPR3N5cm51K0pPZTRwd0xhZ2dvMWxNWVFva0ZDUlJaQVVXU0Zha0xJbFJZRW9oVUZnWW8xVUZwYURBaUtMRzBLTmtvTUJFZ2xiTFN4bFJGRXFCYlcyRWxFcGxYVmxvNENvRTR1Slo1SUxPdmNua0l2MWZpWkQwTzlBUElObHYwQXJ3QUErNWhTaDdKNUIrY0lSSUYyZ2lRQlhrQjkwSjFnYXRjK3BDanFDMUdyRnFBVTBYYzRkeU9YVHROdzV5T3NEUUlDZG9neU1nYUE3Q3lVaFFUSVp1em5TaU1WT1prWTdUVTNoOGhFc1crYUFVdklCd1FJbldKb0FrY3lISktZYWI4UGxtbDBiRGpWS2ttakpEaUJETzg1VGxLMHlvR1h2RG1wbzY4T1pxSEJSMm5VMnV6eWM2cDJvU0pQVjF3UGI0a05vSVNKMkR3RmZVQThxbXdMeVRWZkY4VURMMmdBYkRJSGFBOFFwMlF4RktBVGFuUDJKM0tMelU4QU12b2lIaG9nYkZTT29GbGVHb0NjMFRldXZCVHVRd0JydmFIS1dhRkJoeDJtdU10VmhDVUJhaitrS1ZoWVdtcFI3QjI2aFNTSmtOUXA2S3NGZHpzRVBJN1N3UE1JZStiYmlFaEpJUWc4ZHB5VUhqM2cvVHdLOEF3UUl6ZDZEaFRpVFpKRGM1dzZxcSt6czVuczBpaWlpaWk0SEZPRU5CZTBBTjl6TUptMXZ0UmxrY29FQTNzVWFRNHFkNThsVTBNc2dpWjB3M2VLa3h3cDI1cXlUTk9nZGVYSEVwdFpaVnNyYWJ3UmkyV1ljajhEWkRRUlFhRi9SR1RkYUdvcGs5Rk9XbXZLaW9kR1ZkRlRRTWtUYlZIVlJ4WEhKK2RURk1BekZ5UXVsV1N4MFZBOWpCYWhoTkpkb2hsU1JJOVJPZ0x1YkRjeWFpa2pJSXdXc1VKRnBBeGZQU2lucVNDbUFIU0NhQ0NVZ2cyS0haZ0tCUVNvRDFqWk1TT0JRWXFFWURBa3RKRDR5QTIxQmVDS1g2RGdNWG9DT0hXSWVNMCtBZk04cGduaGZrVllDSlpBRWdlbnVkSlgwQU9JQ3ZMSWpPVUZnakJJZUpSMDlaNFZFZDRpZEFQU01HeHdJTklIYS9XYmt2YW9sMGdnL29IYXJoY3p3RVQrVENRb0tmakRVb0ROaENmQlNIaFFEVjdnNHpuUGhFRS9PUEdhR29weEoxVFhZZDZPNEVPOGRPUkN1bytMU25DcXNYWTZnc3hORkIvS3JNQ2VFV1FrV1FVRDRvOG9LMGduMDlpTDNlbmxlSThDREF3SG1CYWFOaXVzRWhEeEF3TkRZME5RQXNDL1VDMFR1QkRWVUQzL012SGZRTzBVR01VZDREajBaVEtUbktEbXNWZW1sMDZReVhUVk5WcFYzUnVWVUNQQmVRcndFRVBRTWlvZjFGWFFPaUM4elloWUhoemdMdmlrby9PQ2VwUklLQXBGaklFRVdLd1NKRWh4UTlGRFh4QVUzbmdMdkVTRCtBanN3d0xBWE9JbFNSUnZTS1RTbHFpbGJGaWxKVmdKS2lMc3NoWXhDbzBJSnFVRDdZQjc0U0dRTlZXa3dHaW1wcUlKM0tIbUNGTHNBN3dYbjRhaGFwQ0l4R0psQlB1VGdHaHJ1UUY3dzV3MTArdGFGQ2xmY0JLTkJLTlBlb1pJakJFTE1GcFRFTUVwRDBDSFFEWnRGRkhNZVErRGNndU40a2dIWG85ZDZMMVVyVk43d2dwemtVZGtBdWluSUFRVjNIcDl6VTc0RDA2bmNqeUE5bVBDVlZIbDZmTDNMcmQrYTh4aWJWTFdnc1Vpd2xzM2FWdHJDcmg4Ri9zc05FYmxVUWlnOUFuS0tzTzQ3NmdXRWVsZ1FnUWtJS1hBaUlMMUk1WndtZGpFaWZFbmtPdEorTkVhSS9PaklORXg0R1BVWm9aa1BrYVh6dE4yaHZqUmdpNlN3UjNTeFJRWEFvMjVGUDJOcjhJR2dPeE5BMXZGTjJWc3RjaHJrVTlEVEVvZHJNd0R3UHpEeE0rdGZlWEFLYkV1cnBmbmN3QTVqRklRRU5lb2FlM21lQzM2RklmVkU4bUxFZk1JSUI3T053aGVQWnFnenl2YzczdklhdHQ0Z2JTUzNpaGllRWdBUWJsU2J5V1ZDcjBVUThNNExsM0t3Q0haMmlGZ3hCZGlRN096Z3lSTTBtZ3hNS0haeXhKY096bHc2d1ltL0d1RjF2Tk90YnpLY2crQWgwQTllQnZkcUFsNU5rZ1VoQXFCSUt2RkhEQ0tOWDVEVDFqSVEzYXkyMUcxcWtJekx6T2JCWG0xRUhWeVE5TTRSQkx1eHJBb2NGN1hLaXZpRHlFRjdob0lmRUtjcUZDSFJOa09hTkFTU1NBcHQzK2RtSVNUeTR2RVZEZ2FxYXBsREFUcXpXNDZSQ1RVSWxVVVdUQUI0SXMrUGcxRnNiUmlSa0FnakJpZEY1RUc3TE5xckhpeWErUmh0aGJyTmJDUTlRZ0RJa2ZiWUtTYlpXU1RDVXpEQkNjMlFvd0lJUVNwS3d4SkRCSVpHUkJNakt4VVRoelZBTlNFeGtoWklLUUxXdFNtWTBobUJhRmxpT0lVakJHVkp4Tnk4aG1vSkhaRFdxM1d1T05HbVRielRPSTRoWmhvcU5jM2dZRHA0NDVacEJUT0NtczBva2lDYXFhaEFZUXlYaXFKb0l5N0xta2NhclJpbEVkQTBIWDRXZUpzTmlXYXJzc0tJVTFUaWkxRnRBM0FiaEF3R0RKVFJZZ2JYQ051bVZDMEtWTmFBc1EwRUNrQURSQVhUdEZPUnkxVUV5aWI2V2xIZEVJUUFqQ01SQ0lBZC9ab2N3aWo2dXJvQnlRWDhxallxSEJieUR1bnZqUGNFQ2lTakFVNmpWZTZ0Q3BVOGs0UU9FSGNSVmI0NWxPaUZ5STBhVERZNkY0TDRvaHpLWnU3YUFBYktlMG82ZzV4TTFFcmREQUN3WFpzTmc1VXNVMEZINW9qNzdCTVE1RlFwVmRGUTdrT2JvVVRpRk5rd1RQcklRbDE2cEFPT0FOU0ZGSjVpRUZ0aXFVaHFHd0F5YjBYNFFFQ1IyanQ0c0pLQ0VKVUp1N0E1SHF2RkxEcWhRSHcrcnJHQ29xMUNIRmFkSU9jcVkrNjBCaVJLY1RoT0U0STB6dTZnNWpEbWNrd0w2ZnNIeThsZjFiZ0hzaElUaTVIYlBBSUVCaEFneFVJQ0hvQWV1aWF3b1grUWptS3lNaXdnb2txVUxJTVVJZ0VlOGtrWkJJU1NLUlJnSFIzSEVnV0ZIa05BbmdoRUtJc0NsaDdJOFdvZUVTcGpWS1Y5bkJQc2FnUk5vVXFZMkE5cjBXNFNFaEpkcmJZcklSVVVaRllnYmdkR0U5cUtFdktOeGtrblhjNXF5ckNRQk9UUGVPaGNRU2xxOXRHWUtMeUNKNFhJekVhOGRyaklqSXJJeUIzajJuWTM2MVlaQ0VZSkNCUnR0dHVnZVd6R2huTy84Y1hFMU5MTGpHam1ZWTh2dThhT0hieW9XR21NZWlYa1dpS09wQVB0L2ZQdmsvU0oxNUREaThtK291T29tc1VUczdobWdFRG9tOEtSRkhYV0hFZ2NJWG11V01YN3A2bzQweDdrTE1oTUJ4OEFlNkFaSUFGQmZ0TXc0UlJEUGRFR1FCaEFGUHpjbjVkYm4va3hrU1FrRkYvQ0x5d29QL3hkeVJUaFFrTHRnUjk0CiIiIgojIERlY29tcHJlc3MgdGhlIENVREEgc291cmNlCkNVREFfU1JDID0gYnoyLmRlY29tcHJlc3MoYmFzZTY0LmI2NGRlY29kZShDVURBX1NSQ19DT01QUkVTU0VEKSkuZGVjb2RlKCd1dGYtOCcpCmltcG9ydCBvcwppbXBvcnQgdG9yY2gKb3MuZW52aXJvblsiQ1hYIl0gPSAiY2xhbmcrKyIKbW9kdWxlID0gbG9hZF9pbmxpbmUoCiAgICBuYW1lPSdydW5fZnJvbV9weXRob24nLAogICAgY3BwX3NvdXJjZXM9W0NQUF9XUkFQUEVSXSwKICAgIGN1ZGFfc291cmNlcz1bQ1VEQV9TUkNdLAogICAgZnVuY3Rpb25zPVsncnVuX2Zyb21fcHl0aG9uJ10sCiAgICB2ZXJib3NlPVRydWUsCiAgICBleHRyYV9jdWRhX2NmbGFncz1bIi0tb2ZmbG9hZC1hcmNoPWdmeDk0MiIsICItc3RkPWMrKzIwIiwgIi1VX19ISVBfTk9fSEFMRl9PUEVSQVRPUlNfXyIsICItVV9fSElQX05PX0hBTEZfQ09OVkVSU0lPTlNfXyJdLAopCmRlZiBjdXN0b21fa2VybmVsKGRhdGE6IGlucHV0X3QpIC0+IG91dHB1dF90OgogICAgaW5wdXRfdGVuc29yLCB3ZWlnaHRzLCBjb25maWcgPSBkYXRhCiAgICBvdXRwdXRfdGVuc29yID0gZW1wdHlfbGlrZShpbnB1dF90ZW5zb3IpCiAgICBiYXRjaF9zaXplID0gaW5wdXRfdGVuc29yLnNpemUoMCkKICAgIHNlcV9sZW4gPSBpbnB1dF90ZW5zb3Iuc2l6ZSgxKQogICAgbl9yb3V0ZWRfZXhwZXJ0cyA9IGNvbmZpZ1sibl9yb3V0ZWRfZXhwZXJ0cyJdCiAgICBuX3NoYXJlZF9leHBlcnRzID0gY29uZmlnWyJuX3NoYXJlZF9leHBlcnRzIl0KICAgIG5fZXhwZXJ0c19wZXJfdG9rZW4gPSBjb25maWdbIm5fZXhwZXJ0c19wZXJfdG9rZW4iXQogICAgZF9oaWRkZW4gPSBjb25maWdbImRfaGlkZGVuIl0KICAgIGRfZXhwZXJ0ID0gY29uZmlnWyJkX2V4cGVydCJdCiAgICBleHBlcnRfd2VpZ2h0X2dhdGVfcCA9IFtdCiAgICBleHBlcnRfd2VpZ2h0X3VwX3AgPSBbXQogICAgZXhwZXJ0X3dlaWdodF9kb3duX3AgPSBbXQogICAgZm9yIGkgaW4gcmFuZ2Uobl9yb3V0ZWRfZXhwZXJ0cyk6CiAgICAgICAgZXhwZXJ0X3dlaWdodF9nYXRlX3AuYXBwZW5kKGludCh3ZWlnaHRzW2YnZXhwZXJ0cy57aX0uMC53ZWlnaHQnXS5kYXRhX3B0cigpKSkKICAgICAgICBleHBlcnRfd2VpZ2h0X3VwX3AuYXBwZW5kKGludCh3ZWlnaHRzW2YnZXhwZXJ0cy57aX0uMS53ZWlnaHQnXS5kYXRhX3B0cigpKSkKICAgICAgICBleHBlcnRfd2VpZ2h0X2Rvd25fcC5hcHBlbmQoaW50KHdlaWdodHNbZidleHBlcnRzLntpfS4yLndlaWdodCddLmRhdGFfcHRyKCkpKQogICAgCiAgICBzaGFyZWRfZXhwZXJ0X3dlaWdodF9nYXRlID0gaW50KHdlaWdodHNbJ3NoYXJlZF9leHBlcnRzLjAud2VpZ2h0J10uZGF0YV9wdHIoKSkKICAgIHNoYXJlZF9leHBlcnRfd2VpZ2h0X3VwID0gaW50KHdlaWdodHNbJ3NoYXJlZF9leHBlcnRzLjEud2VpZ2h0J10uZGF0YV9wdHIoKSkKICAgIHNoYXJlZF9leHBlcnRfd2VpZ2h0X2Rvd24gPSBpbnQod2VpZ2h0c1snc2hhcmVkX2V4cGVydHMuMi53ZWlnaHQnXS5kYXRhX3B0cigpKQogICAgCiAgICByb3V0ZXJfd2VpZ2h0ID0gaW50KHdlaWdodHNbJ3JvdXRlci53ZWlnaHQnXS5kYXRhX3B0cigpKQogICAgCiAgICBleHBlcnRfc2NvcmVzID0gdG9yY2gubWF0bXVsKGlucHV0X3RlbnNvci52aWV3KC0xLCBkX2hpZGRlbiksIHdlaWdodHNbJ3JvdXRlci53ZWlnaHQnXS50cmFuc3Bvc2UoMCwgMSkpLmNvbnRpZ3VvdXMoKQogICAgCiAgICBtb2R1bGUucnVuX2Zyb21fcHl0aG9uKHNlcV9sZW4sIGJhdGNoX3NpemUsIGRfaGlkZGVuLCBkX2V4cGVydCwgbl9yb3V0ZWRfZXhwZXJ0cywgbl9leHBlcnRzX3Blcl90b2tlbiwgbl9zaGFyZWRfZXhwZXJ0cywgaW50KGlucHV0X3RlbnNvci5kYXRhX3B0cigpKSwgaW50KGV4cGVydF9zY29yZXMuZGF0YV9wdHIoKSksIGV4cGVydF93ZWlnaHRfZ2F0ZV9wLCBleHBlcnRfd2VpZ2h0X3VwX3AsIGV4cGVydF93ZWlnaHRfZG93bl9wLCBzaGFyZWRfZXhwZXJ0X3dlaWdodF9nYXRlLCBzaGFyZWRfZXhwZXJ0X3dlaWdodF91cCwgc2hhcmVkX2V4cGVydF93ZWlnaHRfZG93biwgcm91dGVyX3dlaWdodCwgaW50KG91dHB1dF90ZW5zb3IuZGF0YV9wdHIoKSkpCiAgICAKICAgIHJldHVybiBvdXRwdXRfdGVuc29ySource code from GPU Mode and the KernelBot dataset · June 9 Researcher Reciprocity License v1.0
Changes from previous submission
Against this author's previous submission amd-mixture-of-experts · submission 21721.
- IyFQT1BDT1JOIGxlYWRlcmJvYXJkIGFtZC1taXh0dXJlLW9mLWV4cGVydHMKIyBUaGlzIHNjcmlwdCBwcm92aWRlcyBhIHRlbXBsYXRlIGZvciB1c2luZyBsb2FkX2lubGluZSB0byBydW4gYSBISVAga2VybmVsIGZvciBNT0UKZnJvbSB0b3JjaC51dGlscy5jcHBfZXh0ZW5zaW9uIGltcG9ydCBsb2FkX2lubGluZQpmcm9tIHRvcmNoIGltcG9ydCBlbXB0eV9saWtlCmZyb20gdGFzayBpbXBvcnQgaW5wdXRfdCwgb3V0cHV0X3QKaW1wb3J0IGJhc2U2NAppbXBvcnQgYnoyCkNQUF9XUkFQUEVSID0gIiIiCnZvaWQgcnVuX2Zyb21fcHl0aG9uKGludCBzZXFfbGVuLCBpbnQgYmF0Y2hfc2l6ZSwgaW50IGRfaGlkZGVuLCBpbnQgZF9leHBlcnQsIGludCBuX3JvdXRlZF9leHBlcnRzLAogICAgICAgICAgICAgICAgICAgICBpbnQgbl9leHBlcnRzX3Blcl90b2tlbiwgaW50IG5fc2hhcmVkX2V4cGVydHMsIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnB1dF9zZXEsIHVuc2lnbmVkIGxvbmcgbG9uZyBleHBlcnRfc2NvcmVzLAogICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3Rvcjx1bnNpZ25lZCBsb25nIGxvbmc+IGV4cGVydF93ZWlnaHRfZ2F0ZV9wLCBzdGQ6OnZlY3Rvcjx1bnNpZ25lZCBsb25nIGxvbmc+IGV4cGVydF93ZWlnaHRfdXBfcCwKICAgICAgICAgICAgICAgICAgICAgc3RkOjp2ZWN0b3I8dW5zaWduZWQgbG9uZyBsb25nPiBleHBlcnRfd2VpZ2h0X2Rvd25fcCwgdW5zaWduZWQgbG9uZyBsb25nIHNoYXJlZF9leHBlcnRfd2VpZ2h0X2dhdGUsCiAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBzaGFyZWRfZXhwZXJ0X3dlaWdodF91cCwgdW5zaWduZWQgbG9uZyBsb25nIHNoYXJlZF9leHBlcnRfd2VpZ2h0X2Rvd24sIHVuc2lnbmVkIGxvbmcgbG9uZyByb3V0ZXJfd2VpZ2h0LAogICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgZmluYWxfb3V0cHV0KTsKIiIiCiMgQ29tcHJlc3NlZCBDVURBIHNvdXJjZSBjb2RlCkNVREFfU1JDX0NPTVBSRVNTRUQgPSAiIiIKUWxwb09URkJXU1pUV1IrTHY2a0FDQ3gvZ0NlMUNvUjdmLy8vdi8vLy9yLy8vLzVnSlErODlBZTkyMXpIZlk4dnZ2bm9mYzNQT2R1Y1c4MmI0MTI3bTZadHR6NjhYbnBUUHZiNzJjUzlzbnNMdHlLS3ZuMXg5N052cnRTcFZDek83dVlocXQyM091WTI5N0E2V0cwRFJSb0FOQzJ6ZWNkVEdOMmVuUjdONEpRZ2dBUTBFeE1RRlAxVHlUeUptVWVveWFacWFOTkRRRDFNZzlROVRRU21oQ05FMDBwUEdxWjZnbVRUVGFtbnFhTWdhR2cwTkFBTkFhQUFKQklrcW50bFNlakpxWUpnbVJpWUNiUkdUMUdFTVRFWVF3UVlFRW1raVRTU1BScFQwMU5rbW1SNmpJME1ob2FBTkFNUUFBQUFDSkpKcWFhcC9xTkdqRVBWTTBxZXdLbmhxaDZuNm5vcDZqMG0wbTFIcHFEUWFBTkdnMEVTUWdnQk5BVFRVeENabE5SNVRhVGFUMGcwTVFOQUFEUUhxYVo2MER3ZTcwNVRhY3ZyNE9NNFhjWHI1NDl5d21rLzFrN1dyY1Z6c3YvRVdyQy9aNnROMnMxZGt0NlZUYWk4YXN3eHN2ZUllOURydVh1Tys0WkxJY1dYVG1MTVpBd3lnMG9vb0l4VmxIclI0a205R0hybG00SWNKcTNGUXFWS3hHbHNKQnlDdlk3TkVjTnMwZFZJOWt4ak9PVVdNTStrM0RNckNzRFRXSXBhV1hqWEUxUm1tQ2haeFpVeEpOeEZab2ZUK05UT0IyZUkxcklJeFdJcEJZaU9nVHUxcUhQYnZCUTRUU2VaMHNTZVRucHp2b1hoaGxLWlhMNFFwV0oxRXFheXlYS2JPL1pxS0tvby9FYkYyWGNPQmpRckFtdVV1Yk9jS3MxUkZZb0tJaXdaYlRocXNIQmxFVUdMQlZCZ2lLdFdNSldkUTFBS1E0RGdYSTFGSWlqTTNnRXd4ZktoVkRWNVVzM0VJS2lIS1NVUUR0T2ltUSszMm1uVnIvV0xNQ2hBVVVjSTNVbHFLdDkxU1BDbk1QVTlMMk5GS1RZSmkvRWJmQU45dW1KSUdGTTVSZVdLRFVIWS9ibDBaajR6YWEvNys1eUhUZzhlKzFReWFqRlVtSitVOXpDdVBTbjlla3I2N0MwcVVxV2hLUndPV2dVUTlyc3RyMFB6eERRUVA0aHJsOTdZZVVNQ3VidVUrRXU5SWlKcUptb2t5U1lUbFltRzkyNXhKQmlmNUxKd2l3UkhDbDZBODMwZEJySkZnNkN3dUN5d3RJc1VVVVdXRmdSWjZQcktlNWlGbGtKaGMzUVlpd3A3bk8xWGJnZUxURktZVFYvMjV4SHRLREZOVkpiYU14VEJ1WVRSTEVzVFlidW9YTFQ0TTJOZEJ3YWlUK0Vyb1AyYmZ4RHNWQXRZOERWWEJITHZ1ZFhVU3JTbmg5VndLcWJVVkUyQ3FvSlltWWZyY3BwSzVub0F3cGZqdEdqWnRLZWdFT0JsZ2d0Rk5FU2lsb2o5aGllZkFnLzhHanAzcnNuUHpsenhtdDhVMHpPVTIrWjNDZ2lPeUpLRzNoalYzYTVEUVRxRWpybnl6OTZ4RkpMeTJvdzRCQzhSNE9KN0tNV3pYc240TWNCbVNERUhkME1od2w1aU9JSEhLbHppNHg0VTdLQ3VZbDJybVdvVE9zeVNtUXBpdzJraGlKdHE1cUhXdWVFa0VDZmhsWEtLUlhqdEJ4aXgwTU1lZ1hsMDhiN1pDeEtYbHhITkY1eDlCbTdmbDN4MjVYN2FwU21td3kyR3VtRmVPQzVsaG5EMnp6bXFrVWlxcGdDQnZEcHFZVTc0VnRQMmVUc3FmYU1MVFgwZFcvVXFhU3ZnRXVhVHVhTDhuc3dINE8vNk9mN2lQNUNrL1pDOVVFSXBHOGY3eXdVME1LQ01HSkxVYVFZVlMxa0dGRlAwdEs4WWJwb2locGJVWndiQ0lvWVE3bDQwUWEwV29uRjRaaERBaEVQZ2xWaUdVajZDL1BEclNFZHdja2g0dmxEVzhVNTRTMW1UWEljUlllUVVJY1I2aFFxS3NOd3pteGFSUTFJckV1MjBGQTNxMXRNNVFUUmhBdTROYzdsR1F4QSs2L0pjMU9UR1BvakZFTTREUnQ4UnVFSVRnelkzdHJRVWlJalJwYzltbnNpMnpoT1VhNHVoa2x1Q2VGSlVtVUxLa3l0NjVnczNBUVlrcVZCZ0ZMdGs1ekIwNW9NOTVRV2RFZUJpUFAxeE5HUkdKUVI4QzNXTkR6b2lNdzk3aWltRkJKV3gyVk1LOFNhb3A1aEpwYVlNVDVrRVFTNklSMDhvRlE3WExuZjIyRlR0bkpob0dia3Y3VWtrbnZBRHRUUXMxRTI1M0VVNUlqZEk2aUZ2V3FFaEpxY1lpWXd0S1YxSVE1TUJtanNMc0x6Vld5VGtGcUtPazQ0THV6THNzMXhIQTRhU2JSS1N5UkxGQ25neTVrUmhWb1JjblpCOUp4eURLREloNFFJd0lvc1dDa0dNRmlpd1JxRUdoUXJaUVN4UWVScXJNaFJNWVl1R1huV25CRlZRaDE3Mk9Zb0xtUkQ2d1FZeFZKbk15NWhCbHRLS29za2JWWEEzTUVpMWVKZGpIVU10ZXd0YnNJWlJzUWRzQzR3L0pSMlNzaDBPNEZpSzhvVmloZFdiVVRKbmpzeUVaVnllR1lJbHZBaUcyNWh0Q3JkOG9aV2VWRDNVOVBMRHp4TlZTblJ5UzFlSHM3MnhRWHE3Z2RSSjBJb2s2MDVPUkx4RHJhYnNnZUhNOWk2blFHUEplVXdwS2RtNmEzdTVVUTE0dWMxcTlkRktaSVZBSFNxeGM0Qm9EaXZNSEdHeGtDUUtMY0NqRHkwaEJmVENvNjJUaVRIZ2FrVVBEbFFsb0E5MEFLZ2hDQ2VaTjhROGV2a1BKM1VhcmZTZ09tQXYxR1JYbVlKQWdudVpFWVNTY2ovZGowdmxpT2ZKZk91SWZicU03cDQ5WmNVY283UndRd0JFSVEyaDBpQmcxenByTFFDamFieitkek5UMWNya0RhRmwrSW82ZUpMNm9aR2lzSS9KUlNhTWQxc0hNemszeTV1VU1HWXBjK3J0eVJEdGgxN05Cc3B4MUtuRUpSTzhnVnBRME9kcGN4WXNFZnZsMVdOdENvTTBtNzRHYjVQVkR1cmlPdzhNTDVGSXFZVUQ1azhwMGMzVlpwVlg2dm9JWUZpQmhTdjFuMG00WWpnMTQzSVNJR2w4L25oNWZJMmdKVzhuSGZnZnBuNnk3emtHZ1pyTG8rSWk1K1h6ZDZjVWpvZHExWDM3OWVQaXFtVE5iYXprMFVhZHN4bWsyV1VHajJlWDJTRXBhWjdqaTJMVmtHWlJ2eStmdDV0dnZTUmtnWjY1eUk4NnJvejNTdUpvWjZ0ZE1FTEVlcVNwUW9pY3VTRzZwMXEydTNpZk54TXpibEh2bDdWRUw4L0J4V3lGSzdOdW0xTlJhK3daejFrWTZhOURBeDQ3UGt0VldTTU1YMXpyU2w4Szgzam51MjZHODRlNExaYmRrNGJhNDhBK0Q2TzgzNCtsVlg3Q0xtd0dNQUwyQWhSRkJvR0FoWUNDaklLdmFxUU9UVW9jbHJLNFZ3NEZPZVFTUlVFVVRBWkptYXJDYXc0ejBEc0JvSkRYT3BOTytKd0srN1ZveTU1WUNxVkRvMHdqSzBncTdoc09kSUhIalY5MjRzSElxK3VWdG1YRTNrZmd2MExDRWhQaFUybEhiM0dtNmFzV2RyaDBiclpnTklqaWdPdVFPeU1ocUowb09ZZkN5Rnl6Z0l3bzhYK00vTWFoVjhqbTZZTE1PWnJBOFh2djNhR2JtUUxrN2JuWjBUeXdiemVVT2Z3dVQ4ZjE1TDZqMVorYkxQUG4zMmhjRUtHTXRlNjR1VW9rdUhHRVhWSkVwS0NDTmExYm11WTJrQ25BMDJKWGRqMnlqNTJaek1qemp5eGVwUWkyR0ZXWFltTXhrazRGa2dqY2I0TjRXTzVQQWk5TE1MdUdBN0ZXNlE5c0xFTlFyRmFpVzJIRUQ1RFpyTE9lalZVZUpwdjhiY1p4YSt1L2pnejY5dFptb1VyaW5semp3M0htN0xRK1kwUWlraEVXbXQxazRSSWd0MnZaU05pRzNBVFlZYkI0d0w4TkpPd0JWaG03WHhEM2UxaEQrR2VaSlp0WUQ2b1c5WGwzUG1ua3gyczJXU1NrcUZWU2NoeEtiRWlteEkwY0lBNS9GNFU0WWRtbmF1ZFpTYnBMRW01Ukk1RFdkd0ZsRTR0N1BCR3Z2S0xBNndiN0hvcDZNOVExV28xaG9nRjVhVm02OTllcGJHVWhvbzlhMkQ4SWkrb2gzUkZ5V05oaGY4VUNzRG1Rc2NCUzRISDJIMjh6SzcybDdEWXEwUDFVU1hERWUrWUpJbC9RdHNCUHQxK0pNeXpFN0xId2NMMU1VeFQxUk53SEZLM0RzZmpIUGdZZUxOYkxTUUR5Z2dOQ2ZZVFl0Rk1ISGFONXBqRzg1dEpzM3puUEFpMlNKNWlGbWZyRUFVdDVPL1l6ZFp0ejdqZEpSRUJ5Y2pJYkZRTytxTUtkVUc3NmdRVk9scFlITnpmREk5WlZKenBLaDUwa0poZDJuZ3R6dXdjUmt5OHd4UFcyblBrNjY3K3Q4K0llbXhSejRVUEYxTTBoOUZTaVU5YmtLQjBVM09RSlpnSlMra2F0YWZqWWhveXhMUEhublV6V1JzOGN4RFBDZVlXUWprR3pLajFTcGNzbExwTG80Y0RtTThkZVRNdnpQQ3hXVGpHeFloYkVGeEtYTXpSOW10WjhqUGh3eURrUUxxNHdkU2NJOGtSakR5bXlYV1VMcE85RS9NNDYzcUtxaXRLeVN5czljVmJiTVpLNk85dXUzTDJzdUdCNWZUSVJUamNNbWxSSUJ2TUZXdlVmWXJ4SlFqdWpnc0dHS1lTbTZZNTRwZWxWMXRuTituemdKSW5KNWxzQmFEOXpqSnlocGp3WEZBNUx3a3BYMmhtTEpsUzRhUnNRYUU3V0MwaDd4K2Fsa2dVR0JCU1B2eG9MQVdHQ2lLQWRzUW9pa2dKWWduNm8ySWw0cHR2UW9ZZ0xpTkFSRUpBRTFZQnN6U1NjWlJvSlJGNXI3WDdRWUJMeisvWDdhdzdQZ0hIQjFmelBGYVJRenlhUnFNU0lkR1F4V0xHOVFQTGtNdTJXb0NRQmp3S1ZLZU5CRXYzakFoWWtCQU8wVC9FUjFIcFFmZ0xiVGNHYzcxVWhkY0I4b3JWeTlxaVlIMHJDTWdjWDVKSzJ3U0VDTEZUM0pTbElkUXhFN0dFaUppSk1GQU1mK2hIUVhOQjk0b2RGRnlTd0pncmZDU0NmbGVoY1VPNEFMSDZVQnpEZXVtakVOeEVoa2k0RmcyREU3Z0F3Y0xCQWczUkN5Mm85NzhwMmZHdDMvVGpWQXpoUU5DdWhaSVV4WXBBSllpdEVJd1F6dklSRjRRSkpGQ0cxMFUzQkFlZ2dmaGhKc0VsU0JRVVV3RWFJdGlSc3FKWkVvQ2lldVFEdmRmK2JNQUViSmk2bFFMeGQzS3VWYlA1ZEhmc0RLQUR1NnlPc2lrU05TaUNSSWtPMTZMNjI0VkRlZjRWbkFrQ1NCRk93UjFUM0htaU5sU3gxSWN3Z2daRUxHYXhRQWVNVVBPNENOakVBTVJwZHN6Qm1ySUZnTWhZQUNlQ0hLRWhFTStHeDBVYm9UVFV3S0MxcWpiQm5YZ29taXBNalpCbVFyVjdLU0tpbUFEcGlja0c0alpnSnFvd0VQWXZZVmtHQ0tGa0dxSTZLTHFtNHpNaFlacGxNcFBiQ2dnTUV1VWxGNGxSU3V4OVlDWjlUNUFFeUEzak5DQnNTeUpTNnA2Z0RuQm5HMXpDRkJLWURNNUtDcUlOd3RwWUJDbEl4UXFnaWlaQWppSlZCRlVUQ3lqTUVLTER4eEtlRHJBTy9uRU5ienBmS2xpb1dMTnpEc2loaGJORGxMd0VrTURFNklBYndHdDBLbkNtRStJYmFHeUJyUlE0em9hUitBQU1IRE1CODRLdS84Nm9HQ0lZM3doTlpVaENKWUFUUjlvTEE1SGVsQWxFK3NPMFFPQ0krZmpia0RzZW9BWUR0R0dQdFRBaThFWmRBYnZTS2dWRUYzRUFFK2szdW9Ha1JaNVRvVjJTdzBGVURDdWlCZ0Z4bXBRRFFCWXZoalZCVnc0SnV2aUVPczJFZytpV0E5SUNTUXNRanVQWFBmK1FoODN1NzhiYzR3TnZCc0ZnaEJ1V0lRdEN4U1dxaEwrQW9kUVhsMFR4TzAyTmtXNUY5YlpVejh4M0loWUZXRzBzbENNUlBXK0ozRFVMMEc4UEVLWUlFQmF3WGNFeGl2SVRBcnhVS1lFQkFvV1VHSUVJSEpVQ05zOUNjb0tzYmFFQU9vN3ozZXp5K0l1VFNmSTB4dGZiSmY0Zm90RXMxakI2R05hMFlucXVkNUZLUGFxRVJMNHU2aHpCQ0ZoZ3JBeVl5TWlaTGxyQXJsUEswdGlzYVh1cSsvZFRYM2FrcDBjL0NmQjFySkp6enRnak1vNXZSb0tFSHVEZUhjNTRtWlh3VmxRWEx5c1d5UGtSam5tWHhyQkd6ejl4dWh1eVp0b2FOM0RuTThBcUU5Mnhra0NpVWJ6dlBZSys4WDNqUWZHcCtCQjkrOUE1RUQ3d3VhUEtJd2dFa2lYVkk2QUE2SjhEM25Rd0FHSDMvUkdFQ1JnWnBoaVNESWcvY3F3anR0Y01GZ3BFcFNxbFpHVkg3QUdDbzFUS2xBSzRteWhqQWRpWis0QXpva1ZibTVVb3Rub0lVMHlnaEZYYXF3TlRaT1JKU0VCZ1V3cGpDS1JhZVE2WUdHUWpxL25SZ1NFUmtFa0FrRU50cjJQZ1A2RnR0SzFqQmJUU1VSdEpITEV4Z01rWVNCTndQT2RyUElRZXdJUkppSG9HRVQwbE1GakZXVDNDMFJWV0NqRUZMY1FzaUVMQkdBeFdNQ0hiM0oyc1NvdE1UdzZ5ZmozSVE3K0VsLzdKTGh3RFZMcVlESlNCQ0NRWUNmTXJvZk4ra0xPVHZJODMyNmphMXNJY2dNblZLVXNTeWhDaVUxQ2JYN3dPWTQ2aitzb0E1QkQxK2hKS0RBZTZXZTRxcjJJb2tUdWxrQXhnUmZnSk8yQVdxeEVZc0ZIeHhraDlNVlJWUlJIdW5CM0pJZnBPeXBJK0VrTHFjSGJXQURtRU5CT3FHRjhEYUdESWVnRmdVbEVSaHZzeWRNcFJHNTBFd05LV0wyQ3h6eVpEVVdQSmlOakl3ZEFtL2RDUmtaQ0VNMFRWc0I0R3BySkNxbE5UWEF3czRYZUc1VTd1eDgxZWxLSmxMYmFWVkVWRkxscXBvNytyVlZ4Uk9hUDZBNGRJOFpKUjA0SzlDZ3dHdzJJVG5hcER5WVU4cWF4UlpSTmExbXEzd0dVWEdORVFZaklrSVJqSVNTSEhjYWpnVnU1QXg2T3hZRkhBZVQxaXNraWRRMmdhbTFiQjNISEd3K1RCeC9QbjVQQVByRDhmbHUrY2hZc2VKOUJSaHRVYkdEQmNxcGE1NFRwemsySEZBc0lkd2FBcVVBZFFoeEE2dmpwVEtvSzBBd0lCNU9xK1FMVitPV1NUamM5RSsrSm9nYVlsQXNSeVhIUVF2QlVyMit2cnZBOXB3Ty95cXAxTEFIekVOQ3FPSDRQUWJ4MXFZb1pBMHFZbEF3NmxnY3FCMEh3TDFYY3B6VlNIQXJlUURWRWRqNXNOd2NFZDZDODFUMUtxYVlCOHhUNWhUUlZ6ZDVjMUNBZW84TzV1SUtCNzU0Zm1sUEVLcEJqWnhTanRLb1lZanVKaG5kd0tRMzd5TFFRRUVJZTB6MVVsQlBrelFIa0E5Z09VQXhYUTFBNVJVdnErRkJTRkY2aHdvVVhLWjcrUkEyazMvM2JqNWl4ZzBRVzd3UTZFTmdSM3RSWGNOeUFPWnlqOG5FOEVkNDY3bGVaK2pRT096aW81R1lHeVZCU0k3akVZZUhKVGlaS0ZLYU10VndReEJBYVlVUnhGQkt3b3dZc0dKQmhNSWtoVmtFR0tnaXlJS2RRbXlmREp4ZWVydWZNTlBqenJrY0E3QVIwaTZRS2pyQUxDUVNRZG9QTkxscjFpS0VMV2JMRFhYdmdTV1ZCdUZOb2tsSTRUSXFRTUFRVWlDUU10NFp1cWp6SWFsRkpWSVVoekNBMkNLZTZiVk13Tm9xY1NRL2dpYzZtVnpFeFpNYlF6YXlDNVZEbVFJdFdpZG1sTDBNZm1MQU5qVVRVeU5EMWxpNGRvSE5SL1Fnd0RIamhHRy9pYjc5ZEt0T3pnVElrVWhCeExnTDQyaDdvVTlwaElNU0l3RFFyVVN5VUVTdzBteWFKejZjM0lhblE1bWJ6RENvY3NtTVJNcDVlVjBZS3RHYXdzNWxGeGs2bHNnbXpiN1F0bUxmVjFORzRxd2RBb01MZ1M0MHdocVViUWdwcFpCREk5QUtvcUNNN3UwaHE2QURrVlJSUUJFVTc0bEtRa2taQlNsR0R0bGg2aG9zSzlJUFVJaGdONG9aaE40VGpEbFNBRzRIWU1FMENib3E4MVVGMGpiYUtyU3h1U1ZXVnlTbGpya0FYWkJkV1p6TDFhMXNNRTFJSm1EZ0JROU8rR1FUQjB1c2dVNzBUUVNJcHdYOTEydHhROHp1N1RNVkJ2dUpHRURjNE94UXNjUVNDaEU2dHJBUDVScFYxRHhmRUl4amtud09kTThyQzYwWmhNY0I2ZHV0U1NaMmg2aHRxdU9NYkcwZVRGakNCdmVjU2FJWnRLMmZidTNOM2VDd1pkT1hWMWdUQ0JxeTZzOGkyUzEyNGtLVzN3QUlkQnJpZGdRRTlCMG9VaWErcEJMaS9iWThJZkEySEF3SW1xYlFQcURZZysxMlo2VGp6bHJTb2NVWVFSa0trRHFydXBjNGwxQWdCeG9HNzJKQjJRYzRNYW5RNlNRRUp4dEZpZS9nWU1FUkRCZ3BySjJoT2FEeVVheGp5UStjVWhCSDc2alFSU0d1UE9xcTRybUtRQ0NlajB4UE91SWduY0RraG1vRmhLUjVuc1lRTzVLQ2hzZEhsUFlpTng5Rm9NS2Jjb1VId2E4dzZlNkFHVGNNajlnZ1F5d1cxaHZhRlhidkVRaXZBMUdCQmlSK21KU1NMMmtJSmtxL09JYW5GOFVVNUZpemkxaHExMFN4Y2llaWtVRGpYUW4wZStsK3lEdXdqQUlQblhLQnlDSWNRbTlrQUlNbmxjY1BKRkxUNG5NMys5WU54L2hJRWp5UEE2RU40ajVFUFVrWEMzQTJxY2dJWHVMeWZYZEUrWVRpbDRsNGJPZXNFdVl4WXBjR2xKQ01oR0ZybG15OGV0MHliMUxtVXVlMTRDZGVJcHNXMUJCUnJLWWtLa0dNR01Ga2tVaUlzZ0l5V1JBRWFKQlF3YWhVaVdnZ1JGRmpiS0ZrS2hFU2d4aGJMRzBSUktySmJhTVlRcTFpaHVGZUFvVjI5UjhGRTlwY1BFNkNtV2gwcERvRGdPbUNwa0Y2SU9zSGJLTTRkZERld0toSUZNZXVsbjRHcGJHVWNCRGl1Y1J3QnNKRm9TZ2dWZldMcW1Sa2U0QktFZUFEUU80WU03REtGeXhQbDVaRjRTRnpCbEFzM1F5R0JoMURhUTJ3b3VnOHcxRk9oUUY4Q1JKb0xsRVdST0JOb3U5RTBIQzhCTWJ3R3hlRm1JRklhSGMrbzNLbnJRNUlHMTdGSE5BMFZJNUp6SzF6UTRJbTB6Tnh4QTVHNU5IV0NYZHBseVQ3SUtXcDZnZDNZRkpvR2VBSkdBNkdpUE1wZkVoNDNzMmlFakNCQ0R5dE9kQnNHY2phUUZnYlZ1SlFsbTZjWVhFK1ZSM2JVTG13a0pDbmdwa0JxUVVvZFZPSjVDcGtHRUhHVjIwNU5YYnZzczAwVm5FMGEyYk5rWWFwd21DRHhSSXlpOXlnb1JLVTlJeWFXVXlWTkRJNFpaL2RUVUo5MUZUVU5WZFFYZS92Z2JRdFZ3SVlzMk9DcWVCY3NvWEFpcjBFNGlVbWdLWjVJU0RZU3pCVitOSWcyQWJRU0NpbENoVEVCUTJtRFRFb0lLRlVBVnMyZ2REYWRBczlROVpuOHIrMjhYQjZQckFXeEJXQjZsRGdnbTFVMm5zVWZ2aUFhZ0o4UVBZTVExUVlnY0gwaG9HNVJNYm0rUW9wN0IxUXlUb3FGSitrb1BxRFV1Qm13aUdiK0lPSi9JOER1TXdEaW50bW83RWRCWHhiNHFoTG9FcWRWVXNoeWlFa2l5QUFhaWtRVHk3aUw4dlhwYTVEUWl3TGgyQVdUSXNnNWtPMVM0ME1HVUJidU9Mc1ZUMmU5ZU45QTlvQ3U5RTkrVU11bllXRC91eHN0ZVprdm5aeklFdTN0bExYbzJxb081ZUFEM3RnQVBvQmNCeUZEaVpwWkR1UWg0SWVoSkJrQWtBa1pDSWpKR1NKQmlEc0h4Ry9nZ0pxZDZ1cW9RZWNVUXNoRFFGbWhLYmhMSmtLVXlZaUw1aWthR0lQN3lqNUlKWURNRnBjS1ptUjRpK1FybW5SVTdPNHpDd0RDSXdoc0M1cWlQUUt5Z1NQaFZIYzJJc0lVTHFocWFDaGJJL1hGeWZHNVI5bmxWc2Juc0RtaW5KU0k3VDhQMDZIaUE5dlh2UGVqMkljdVhUdHYvZTlmWjZHQXphV1ZxZ3NVRVpDMmVLMHJiZDE1QzNoZU5GeEtJUlFkVHdxSjhERUJwWEZnUWdRZ1FncGNpS2g0am5wRGZyZGZBeW9ZVDZuMlVKNnhmR2NibnFIVE1iVGRzS0lsYXNSUlJpaXhhRkd5bnM4ejBrTUIxTHRodkpYME8wN1QyM3ZycWtqYVdrdlZBemdXMUZJZEtwb0RuTWI4aUpmallvR2RXcnplbUdtekpsMkdOSWszQnNxOE5BbXQzVTQzTVR4NWt4UEhtVEU5Sk81bDhiY3VwTzZ2QWRnUXpxUXgyNUxoQ0lPNUc2alY0OFl5RU5jcGFHNnFrSTdheTZQam1YZ1pHK1dKZzNpaStBTzlCZkZvWWVJVU9GQ2hETGR1QnBRa2tuczVCc0FBdml3bUhNb2dkbk1UcElMSVI3akpsYXBLdnFvUEZ6UkNIcEVFZmtneURJQTBNSVJUT0RSQldDRVFXUWxFaFFTTUU1R1ZGQUVDUkFpa2dyYk14cEN5SUl5c0xJeXB1Y0JaME5iRVk3THZleFlMVGZJaEd4bThOVll4dTY0dU1WMGJLaXNTWERTUndHQTJhVlk5dmJLK0Faa1FoYkRoYU5JeEdvb01paExDZ0lvQnk0RUdCamhLR2l3aFpHbkhlUndvWFFwRTRsRmhESVFvUURZcXBuZ0EzbTdOQU1Jd1lJbWd3Z284dWZRNEJtS2VBR2daZ2RUbUtIemhjQURldDVEeit3aVNJa0ZPd2FyNTFhRlNwNFR0a2twd2drTWhoZmJkcXNMd3J2Njl0TTJLam1iOXBFSW1jb0tOK1ptNEV1QVpBRDhRSmdMdmdZM0Qyd2lBUUlkd0VGb0lnbEJrQjNLZHU4RlROTjdDRU5VU1E0bXgzbWdkbzZCc2FBa0IyOE9KaHZGQWRVd0c4ZVRCWXl6SlJLSlFScG5SQzV0TmlkdndPcXVZRHloSVRZK1k1em9FQ0F3Z1FZUVY5YW1wa0dmZWgvVkZCUllRaHdBTWtqUENxaXJJSXdrUVBZOGpRQThqd1dCNG83elpEckdwZUMvTzVtUWhrUE40QnBDU2xnSlNNQ0JoRFpBV0VRV2pSUkNGNFNMMU1pellJVVNqVzVWakpWZXAzKzFka0trR2huOFl1ZG5LTEd1blRndUtScklvMDF3YnRieDQ2OTJjWUd4QmpXWGdwUkZIVUNlOGZBVHFiR2RFM25EbUhjWnAxQk5Zb25VWFoxUDJVM3dBKzZIVUxJcWhyb1EwaFJlUGtkN2JFOHBSY0pkdy9oRDFnZTJHZ0N0Z3llTTNVQnk2aUFoSXNJaUI5SHQ5bTNjLzZJRWpmSUNIMndRZEJBRFlSNFlmV0gveGR5UlRoUWtCK0x2Nms9CiIiIgojIERlY29tcHJlc3MgdGhlIENVREEgc291cmNlCkNVREFfU1JDID0gYnoyLmRlY29tcHJlc3MoYmFzZTY0LmI2NGRlY29kZShDVURBX1NSQ19DT01QUkVTU0VEKSkuZGVjb2RlKCd1dGYtOCcpCmltcG9ydCBvcwppbXBvcnQgdG9yY2gKb3MuZW52aXJvblsiQ1hYIl0gPSAiY2xhbmcrKyIKbW9kdWxlID0gbG9hZF9pbmxpbmUoCiAgICBuYW1lPSdydW5fZnJvbV9weXRob24nLAogICAgY3BwX3NvdXJjZXM9W0NQUF9XUkFQUEVSXSwKICAgIGN1ZGFfc291cmNlcz1bQ1VEQV9TUkNdLAogICAgZnVuY3Rpb25zPVsncnVuX2Zyb21fcHl0aG9uJ10sCiAgICB2ZXJib3NlPVRydWUsCiAgICBleHRyYV9jdWRhX2NmbGFncz1bIi0tb2ZmbG9hZC1hcmNoPWdmeDk0MiIsICItc3RkPWMrKzIwIiwgIi1VX19ISVBfTk9fSEFMRl9PUEVSQVRPUlNfXyIsICItVV9fSElQX05PX0hBTEZfQ09OVkVSU0lPTlNfXyJdLAopCmRlZiBjdXN0b21fa2VybmVsKGRhdGE6IGlucHV0X3QpIC0+IG91dHB1dF90OgogICAgaW5wdXRfdGVuc29yLCB3ZWlnaHRzLCBjb25maWcgPSBkYXRhCiAgICBvdXRwdXRfdGVuc29yID0gZW1wdHlfbGlrZShpbnB1dF90ZW5zb3IpCiAgICBiYXRjaF9zaXplID0gaW5wdXRfdGVuc29yLnNpemUoMCkKICAgIHNlcV9sZW4gPSBpbnB1dF90ZW5zb3Iuc2l6ZSgxKQogICAgbl9yb3V0ZWRfZXhwZXJ0cyA9IGNvbmZpZ1sibl9yb3V0ZWRfZXhwZXJ0cyJdCiAgICBuX3NoYXJlZF9leHBlcnRzID0gY29uZmlnWyJuX3NoYXJlZF9leHBlcnRzIl0KICAgIG5fZXhwZXJ0c19wZXJfdG9rZW4gPSBjb25maWdbIm5fZXhwZXJ0c19wZXJfdG9rZW4iXQogICAgZF9oaWRkZW4gPSBjb25maWdbImRfaGlkZGVuIl0KICAgIGRfZXhwZXJ0ID0gY29uZmlnWyJkX2V4cGVydCJdCiAgICBleHBlcnRfd2VpZ2h0X2dhdGVfcCA9IFtdCiAgICBleHBlcnRfd2VpZ2h0X3VwX3AgPSBbXQogICAgZXhwZXJ0X3dlaWdodF9kb3duX3AgPSBbXQogICAgZm9yIGkgaW4gcmFuZ2Uobl9yb3V0ZWRfZXhwZXJ0cyk6CiAgICAgICAgZXhwZXJ0X3dlaWdodF9nYXRlX3AuYXBwZW5kKGludCh3ZWlnaHRzW2YnZXhwZXJ0cy57aX0uMC53ZWlnaHQnXS5kYXRhX3B0cigpKSkKICAgICAgICBleHBlcnRfd2VpZ2h0X3VwX3AuYXBwZW5kKGludCh3ZWlnaHRzW2YnZXhwZXJ0cy57aX0uMS53ZWlnaHQnXS5kYXRhX3B0cigpKSkKICAgICAgICBleHBlcnRfd2VpZ2h0X2Rvd25fcC5hcHBlbmQoaW50KHdlaWdodHNbZidleHBlcnRzLntpfS4yLndlaWdodCddLmRhdGFfcHRyKCkpKQogICAgCiAgICBzaGFyZWRfZXhwZXJ0X3dlaWdodF9nYXRlID0gaW50KHdlaWdodHNbJ3NoYXJlZF9leHBlcnRzLjAud2VpZ2h0J10uZGF0YV9wdHIoKSkKICAgIHNoYXJlZF9leHBlcnRfd2VpZ2h0X3VwID0gaW50KHdlaWdodHNbJ3NoYXJlZF9leHBlcnRzLjEud2VpZ2h0J10uZGF0YV9wdHIoKSkKICAgIHNoYXJlZF9leHBlcnRfd2VpZ2h0X2Rvd24gPSBpbnQod2VpZ2h0c1snc2hhcmVkX2V4cGVydHMuMi53ZWlnaHQnXS5kYXRhX3B0cigpKQogICAgCiAgICByb3V0ZXJfd2VpZ2h0ID0gaW50KHdlaWdodHNbJ3JvdXRlci53ZWlnaHQnXS5kYXRhX3B0cigpKQogICAgCiAgICBleHBlcnRfc2NvcmVzID0gdG9yY2gubWF0bXVsKGlucHV0X3RlbnNvci52aWV3KC0xLCBkX2hpZGRlbiksIHdlaWdodHNbJ3JvdXRlci53ZWlnaHQnXS50cmFuc3Bvc2UoMCwgMSkpLmNvbnRpZ3VvdXMoKQogICAgCiAgICBtb2R1bGUucnVuX2Zyb21fcHl0aG9uKHNlcV9sZW4sIGJhdGNoX3NpemUsIGRfaGlkZGVuLCBkX2V4cGVydCwgbl9yb3V0ZWRfZXhwZXJ0cywgbl9leHBlcnRzX3Blcl90b2tlbiwgbl9zaGFyZWRfZXhwZXJ0cywgaW50KGlucHV0X3RlbnNvci5kYXRhX3B0cigpKSwgaW50KGV4cGVydF9zY29yZXMuZGF0YV9wdHIoKSksIGV4cGVydF93ZWlnaHRfZ2F0ZV9wLCBleHBlcnRfd2VpZ2h0X3VwX3AsIGV4cGVydF93ZWlnaHRfZG93bl9wLCBzaGFyZWRfZXhwZXJ0X3dlaWdodF9nYXRlLCBzaGFyZWRfZXhwZXJ0X3dlaWdodF91cCwgc2hhcmVkX2V4cGVydF93ZWlnaHRfZG93biwgcm91dGVyX3dlaWdodCwgaW50KG91dHB1dF90ZW5zb3IuZGF0YV9wdHIoKSkpCiAgICAKICAgIHJldHVybiBvdXRwdXRfdGVuc29yNo newline at end of file+ IyFQT1BDT1JOIGxlYWRlcmJvYXJkIGFtZC1taXh0dXJlLW9mLWV4cGVydHMKIyBUaGlzIHNjcmlwdCBwcm92aWRlcyBhIHRlbXBsYXRlIGZvciB1c2luZyBsb2FkX2lubGluZSB0byBydW4gYSBISVAga2VybmVsIGZvciBNT0UKaW1wb3J0IG9zCm9zLmVudmlyb25bJ1BZVE9SQ0hfUk9DTV9BUkNIJ10gPSAnZ2Z4OTQyJwpmcm9tIHRvcmNoLnV0aWxzLmNwcF9leHRlbnNpb24gaW1wb3J0IGxvYWRfaW5saW5lCmZyb20gdG9yY2ggaW1wb3J0IGVtcHR5X2xpa2UKZnJvbSB0YXNrIGltcG9ydCBpbnB1dF90LCBvdXRwdXRfdAppbXBvcnQgYmFzZTY0CmltcG9ydCBiejIKQ1BQX1dSQVBQRVIgPSAiIiIKdm9pZCBydW5fZnJvbV9weXRob24oaW50IHNlcV9sZW4sIGludCBiYXRjaF9zaXplLCBpbnQgZF9oaWRkZW4sIGludCBkX2V4cGVydCwgaW50IG5fcm91dGVkX2V4cGVydHMsCiAgICAgICAgICAgICAgICAgICAgIGludCBuX2V4cGVydHNfcGVyX3Rva2VuLCBpbnQgbl9zaGFyZWRfZXhwZXJ0cywgdW5zaWduZWQgbG9uZyBsb25nIGlucHV0X3NlcSwgdW5zaWduZWQgbG9uZyBsb25nIGV4cGVydF9zY29yZXMsCiAgICAgICAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPHVuc2lnbmVkIGxvbmcgbG9uZz4gZXhwZXJ0X3dlaWdodF9nYXRlX3AsIHN0ZDo6dmVjdG9yPHVuc2lnbmVkIGxvbmcgbG9uZz4gZXhwZXJ0X3dlaWdodF91cF9wLAogICAgICAgICAgICAgICAgICAgICBzdGQ6OnZlY3Rvcjx1bnNpZ25lZCBsb25nIGxvbmc+IGV4cGVydF93ZWlnaHRfZG93bl9wLCB1bnNpZ25lZCBsb25nIGxvbmcgc2hhcmVkX2V4cGVydF93ZWlnaHRfZ2F0ZSwKICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHNoYXJlZF9leHBlcnRfd2VpZ2h0X3VwLCB1bnNpZ25lZCBsb25nIGxvbmcgc2hhcmVkX2V4cGVydF93ZWlnaHRfZG93biwgdW5zaWduZWQgbG9uZyBsb25nIHJvdXRlcl93ZWlnaHQsCiAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBmaW5hbF9vdXRwdXQpOwoiIiIKIyBDb21wcmVzc2VkIENVREEgc291cmNlIGNvZGUKQ1VEQV9TUkNfQ09NUFJFU1NFRCA9ICIiIgpRbHBvT1RGQldTWlRXYnRnUjk0QURGOS9nSDYvZmxGN2YvLy92Ky8vL3IvLy8vNWdOUTk5OEFBeGRxc2RqaVBCZUFlaFQyeTJHcVZkWEkyNjREMGU5N2p0aDZ1eHp1eTlZZTlVWHM0ejNhNTNiU0RKdGliTmJHTWpRR3J2VXNlUFFHTFR0dW1oNzIrdlMrbFl0R1d6V2FzZlp6akswM3FjN2xsdHRzTUpyVmFDMXRhcmJWSXBwU1pUYXE4dDBtQmdXYW4wYWMyeXdTbW9FQUFRRU5BbUpvWk5KNkFreUdOTkdoQXlNUUFEVE1pRFRRUVJvVXlOTVRUVkg2VThvOUpvQWFhZXA2RUFOQUdnQm9BOVEwQUludFJKVU1DTUNZRTBHQUFtQUFtSmlhWk1BUVlUQVJnQ1RTUklFSnBsRlAwSjVTUDBKb25vbnFaQXhNUTAwMEdtZ0JrQU5BMEFFU1JBVFNBQkdrUFZUMktubnBIcE1tSVVlbWsvUWg2cDVHb1pHMUJvTkFlcDZqUUlrUkVBSU5BbUlKcE1xZm1xbWhpQjZCcHFaRFFEUUFBQUdtalN6ZHdRQjlhQVk5Nzh2cDVEdFBMTjFkaDF2OFAyZWlYdFVhSnZZNy96cmJhWXFNM3AwOXY3TXY4YzlvVCtBVXlPNmdwb3B3MTk3WXZpUkNlZ1huT1NIajVZTXJBa2hvUlpBY1FxRytMZnhJLzBQcDh5c1h2MzloL1FURDZIN0Z2WHZpSGUyZmpFVGxrTVJZcUlvcXcwUGhSbmlDZ2VsaG9tR2l6a1c0eXNSVkZaT0V5ME10aVdoTWFXMk05ZnNwZ3dtdmRzd2JhWThybWNvYU1NTUg5VFdYREN6TWl4ZGpKK1E0WmU2bFZoZ3hwUkZOVXhqZ2NhdzVhSnJsTHBIUmRvS1ZyREFaUktraXdDc2hxSXFjbjZiZDNTZlBjeVJHS3hGa1dMRVJVVWF3NDc5WXBNWVZJelFORG82Nkh0OWZQbno1RUlqVmVKY3duT0dJbm1sUkVPMmxodnJlVGM5SU9PbWhiV0plVUx5Y3FtWVpoUTErc1U1YzdKZFY2UzhDUThVNkhFS3FLUDBLZTFtTVhtRm5JT2pXWlEwbUlvRU1jN3hVdUlqSW9WQk5wWW9MRVlNeTFlNjFFWXhoZ2xZcEZHTVdDb29zYlF3ekl3TVF3YWlDYW5nREFrS2ZLdFZtVVZWQXFmcWxtQUsyQWRJSmd4RWpDTUUybkY4MTFzVlJsdEdFTUNGRzR4WFJSUHdQOC9yNVByTVY3VGQvdDcxczcxVEwxWkxkT0orY0dGZi9iUFI5bzd6L2dKQWgrYjJkZW1LWVhtUWZGbGpPa0YrOWNBaC92M1liSHJtWWsyTW1hUDFsMTV3ZlU1Z3dJT0lRekJ6dnhNdjZ3Ry9raElnZjgyVXpGaDI0eTd0KzdRU0VkWklyQ1FtaG5DRlltWjhodmRKYkJFbUQwUyt3L0t3SGp2dWtmYXpvUVNUTm1VeXpNYkxrVEJXUEJ1S1JpdisrSFh1TmVWa0lreXlDUUpKbmwwZzhodjBJNEdqRXAwZ2pMUURXRTIxcXVRWUJXdFArZytrcGRGNzN3a0xFazVKUVZpc2lxbVlPTVRSeHhibnNJVGM1aHpSUW1vbi9OaGhxalJvMGJCRVVTZzlQZzBHZitHdVhFbW1EM0JZWGdXV0ZwRmlpaWlpalNVU2lVU2lVVWxZSVd6c1VlZlRiWmpzckdld2ZHZS9Mcy9WV2FEMnFHY3Q0cEVidDAxQ2s2LzhKUWhnTU5OSDc1elNyYnJzR3VLNnpFdkh3SG1ta0pQRkI3L0N3Rlp3VDRuR2NwdmhJYVRuTXdhTGRubDNqZ09iNCtRbis1c1Nxei9idWZRUGpzMXRhUHdOWk1Ka0JqRWlYMmc1MnJlL0w2dVZQT1ZSUklERjhKSkFXN0Z1OTBvcXNGcTNvWDRxY0c5cldKakE5SG56VzBJZkhJMytReHdNRTlKR2tKQ1FkMTdGaHRCcGl3dkRXelJYbS9kSy9sODQ5bzErSnpuUm9aQjdBY2VEWkNQZWVISEE3L2YvSWxCcUNLN3IzZHZFWGRKMFQ0c3dITDduTzNOZkR6VEg0MzVrOW8wcUkwTm9vYzhTTmt0aG9xME14c0RTelBEVVZaWDJhKy9uVnFjL3orRFpDSGdnOXBEdENmOUcwOFRYYSt3T3c4emFiWVdMUU5rdFNkQ2RWQmNMckRXWnBjK3IycERkc2h0SzFvY2lremNMQ2dsTzhzQ3F0ekRPTDlkdVZySEhGVEZjTm15bHFDWXdLN211dWFFM0R3eEVxbmpOWEd3Ry9ndkhCYU02UTJPMk1EY0xJMGdqS25UaGFMdWF3VDArZVZyczFyK2t4RWIySXdxTStWT1BsRk5zQ3d3dXhaYTQ0dWt4dm9haGlDUVNSTVVBTldjSVhSem9Xb05DUlVjNGE3SXhYUUJteXk0K3FYczlXWnBEaFdYYzFhNDBseVc2aG9reTBzNGhveHhiS1VZV2czVWRmdTBkbVhvOXdkVDdPR1N3S1VzUHNGbUdDTktTSWY1NSt1WFdpdkl3MldaTUJRRWdrS2dVR29GQy9ZNTZOVTNoZ2I1YUROZE41dm5lSWNRRVNwWjBPQXVRRVEwRktYalJSbWpNaGVNNFRVbjdYT0Y1anVjaTRPQmhTaDRoMjl2Q3J2ZVBmem12eWQvV1BHdVlJVkU0THoxZ2h4T0drMlN5Q2tGaEdrU2tpV2xxaVdCUUtCeHFtdTVKTnd3TjJ6S0R2N1dFbWdNM1RCT3o5M3hLOWFSaHE3RVFPUlF2U2pPMkV6QTFnVW9vTFE2Y01Yemw4Q2pSa2tTVFdpNnJnNWRhWWFITnMzQk1EZzRlbFdsS1dHcFRRSnVITWNOeE1NTjVvM0UyWWJnbTJ6WVUxa01oc3lkdEZPQ25BRE50NWNzd3VZWnBEWmhzM21pYWRpZCtVamhRTFRuUk5oOTJuZ0dpY1NKRUJyVWlCWk93OFNIM25SOVZ2dVpRUjFtbXlycm4wc3c0alhIVCtLYjE1R3BycVNHK2RNTkh2Tk9DME9nTUVZVS9nVGh5aFdjK2VacUZ0R0xPKzdmcG0vSXg2OG5WY21xS2RqcFRaRUZTQkZtd1VGQzhZSnhubEJzSFpweEJBZ1c5ZHFMTkVXcnVqWkRtUEdqRmVabGVPbmdhbXY4WWg5dmhnMlNFeUhsMjh6ZWtEMzByRTQ0elBkMFZ6RThIellvS0JwTm82dkxXbDZPcGxOWVlJZURKOHNZZkxIamExWjlPT0hmY0ZTdHVPdGhYRkRLR1dvMmxtNFR3eWxwRXlhQmFCMzVJR05naEN0RzlCRHZWUTZEMVFmSE9QTk1ZTVNjaGtFV0pBVUJqQlVZSWtTTllFVW9JRmJHQ3lNWUtUb05TaVlZT01NWERLODlZNlNxbEVwNmVPNE5FN3AwbUtCZ0RVb21WSEU3alVMTlc0N2xJTWwwUHFPSjI1VFVadENzYmU0eGNRaGlHNTMzdE4zSkcvUFdtUTZ5b2EwL3FEY3F3RWpDaE5jeUVYMXd2TjBkN3dlaEViblQ0OUFZNGE5L09yb3N4a3FFcFF6YlB0OGl6RHRPL21IZWJEOWVoeTJYVGw3M1h4ZUdIaUpvcFR0enVpV3FjdTJ6Y1VuY3pxM3B5NTRuVURmU0VsR1NJd2hRTUpVUW5GT0RvSldVdE9COHMxbk9sQUx3NjR4bzBzZ1BTYU8xQ1RjUXUwcFlVNzkwMXZkeXZiSjgyYU9pY3FYcnFRTG5odWFaSW1McTdra1oxQWJEeTVtU0c0S3h4MXU1QTlIcjZKMmlTWkpKaFJ1TXAzb1JkeGttcGlDTVd6dEZPRGtVQ29uUFZFNWQxRGNINTFRQklqNlJaRktpU0NrZ2xRbXNzY2NlYmJqcm9xbDIvbnlvMVc5dnhKWUZnM0ttOVNiZGY5b3pNYnlZWC9Vd1J4L2pLSUVIK0VzSkFDRDdvL2g0YUY5azd4T1RzaHpENkwxWjc4OHV3L28wbnRjN29WYncyYlRDbThLMmpUUmQ0RUtScUdBMG9kSklzQjcxSFk0ZEVFeE1QNk93Tnp4amNVQ2NONU5JM2d6WWJmcjFWRTRVdURNQjhVOHFKeGhwV25zUko3aE9rZC9LTWJTVzFHa3FYeThqektmWnpGZDdEVWxqREp0NGNkYnh3YnhqMjZEOFlCbUc4MnZQc1JQZ1EwMm1va1ZjbjlubjAwTllvSFhIcTBHb01kOEoyVUhFdmVhM2tocmxSYU5BSjVIWkVMcVBNOHk0aFBUU2Rwa2x3UEU1R1Q3SnVuRjl0eUY0RFp3RWJYUGRQeW1tMS9wK2lQZlBqK2kzVTRRM29jUjYzNE9QbWQxbGpYSkpNaGt3aE53cFgwakRiZVB2SEtJUkkvUVUvVDM5YjZ3cFFXTlppZS9IVm1ZbEhySjJEbjlQcjM3L1c3NE1jWEZVOGFybnJVcGtWYWlONVA0YXMrSG0yMTVSVS9ROThNZms3WnRkZzk4K082Si9UYnpXVDQ2OFRETENUYjNMUnlQZ1g2OU9qRi9xOEZadXA3bWkweDZ0bmJONDkyRFoxcXR3U0hFTzljTlQwVDZwOERBcVRSQjd4WVBDQ01HWENqeFM3bFBOdG82Mkx6R01kelBxREFvUjl1a0lDQkhNRHVvSThFOVlLYkl6NDhzZFRUSnJKbnRBRWdCM2k0b0lYeXJlMjZOdHpwaDFWRlRXYXFyNW41WFlPbmVaaTRwblFqTmpma3E5ZktoTkFkcEp4TzJ3b0JZblJSUVN4S2tMd0xvYmZtcEJrUFp5ditDZlJ5VnpaV3FTVHJ6REN5TWR4NjVXOU9yZW13bGFsTW5Cakx6alFmbkd4ejlaU1JSS1Y2bnl3aFJ1bFlqWE92bjkrUExxNkpZMXp4T1VNYUZoM004TXc0RlJqalUzZkp1Wmd1RUc0YmMrMUdTZkVySStWbVlSMWlvblVpT0ZZaVFZYjRBYU1CUXNqQ1NnUklVRWlpcWlTYVFRR1FnSmxJb0h3aTVjM21oSjQvbXNFK1RKQXlpQ1JBNFRpMHF1L29adWtOeG5rMGpyNGpwcUVScXFtbloyMWgrVzR6SUVDQWtXOS84M1hqak56OVU2djQ3NVdNeFpjU1IxSGtiRXp6ZENXVHpVelhzM1l6WnlXdUlSU25zME1NYXNITTFldHhLcWhtc0F6ekZMU2FHcEx1ZDQ4Zml6YmwwelIyR0tKSHhMR3h6WklZd21LZFRnZVg0MGNpQnRIVU1ZZVEzRG1Hd1ltQVM4WSsvZ0JrWm5MaVBUcFRtTHg0OWg0aVJVeUJkSVVGa3lNeHRPaTRvSmd0TEN4QTdacXJhNGtJdkJNdGIzcFZBcWcwbFJPSkpTMWtva0lKL2tLQWNOM2U3d3lDbUpVRk5Rc0FGQWFEMFRhNlhSbEliZ05HRzVudGxxSUxicUFqUFdhK0taeGNTekM0N2RsWEMxc3JlU3B3V3dpUGhZaWRoblhqMGl5Sm9FOUhGUmxUVFlxclI4MG1iQklOOWxBWXVSQWNQU1k3cWU5dDhON1dZWkF1eDVtK2V2SUhFMEp4bjUxZ2JMaEZrdUlWeHhJU1hiZHRRSzVkM0E1WEhreW1na25JRm1Rd2VzeVRKcEIybHJlcnJBeDlQYjlCdXp6eG5aaE93MFNucWZxM0hGeFZlenM3cDN2eloyekxkdzdVa0crS1NjaGJrNU9md3cwMXRkYVdDWmI1dUl0RGRHMlJBS1lWNFR1TFMyeHc5VmFBSjJwS0ZBdmNtYWRNSkxHT2RaemJEbHo4OFRUalp6a0hsVHNsdkxmNlFKeG1KaGhqd3orSDV5RVhaayt5M25rbkE0b0grRWRsdjhYazRmWlBENS9EcHRwSkpxdGt0QzFVRDBDM1c3MkErTVlsRUpCd3VVdHk3UkdkQ2dIWnpibFZNTGN3OFFUZE5RVUpoWUtoYjRZV0REQWxHaEdSd3lvQmNkQS9MMDVXVmFHQlV5SHpOcC9BR1pLUTlUUTNoTi9nekM4dlBlS0NvM01DYWpjdmpGL1YxTDk2SlJsQXhNcXFyVEhLZmRYMUkyWCt0Y1N1bWova0N4L1VvaCtCRDFRQmNMSDNPYi9YeXZqRTVuTThUT1BGblVBTFFncDErODczTnZtWkt3aWRQOENkN3IvR1RrYUVuNVVYd0poeUtlemtIWkR3TW9haTZteWJNSnNLMWZjenhCQ0JCNHB2RDZwZ2IxVU5GT2ptRTFibnhZcmlHQktlUmFRZzlsUEdoWnBjM2dFdFB0a0s3Unp4RDk1QjRuVUswZVk3Skkvdlc2SEFlNGx3TUpKaXhSQXdBMFNKbXV5Ull2MGxtRC9aN3U4dVlZWWM3aThaVFRxK1BOa1YvWk8zcTdDdVU4aFhxcUVTbElNL2hjOFh6a1dUcUdBWkZYUDYvZVF2Q1djWGk4NVhMMElDRExuUWJTQWc3QmNqdXF0WFR1TWdGU2c5anRNMm1pb2JkSGNjWDU1RjdRNE5uNXA3ZW5HTlVGdy9FOW9YK0IrakNIVmRVM1J6K1lvY0o2eTMzaWV4V3RxUG0xV3djSnBtWE9wODdMbU95Q3ZDVXhLRGVkYTBVUnJ1MXpVem5FVHpseVlJSjZISml0QldtR1BUbVVteW9kZ3JQamNSNE1aRm56YkNCdGRidllUditpWWpyalRlcHBPb2VCdklwR0cwN1hqVW9DcEJjaXFad1cyT254bXp5ZTR0bDRrTnQ1ZHB2YzBXdXoraDVsRUhlQTdnNkdScElDcjlZS0FTckVhVlZWbDNadFdkRU0rU1dQSnlZQk5CU05xNGxUMW1kejEvSHdaMllkaER5Y3QwTDROOUtYNlY0K0xXUHpOaDc2S2ljcVpuRDg2S29RazY3eHVLMFhDTVRNTXdwbk80M1ROUUlrNDQ1eHpOT2dyNWVRK1JRQ0tadDV6aXVtWTN6S2lUY2pQMzNsNk1UZ3hQdmZNQ2tpZWRDa0tEN2lpQjJIZUR2V3Q4d1dPY3NIVEdzU2xDNDVtYVdFYUlBLzBsajBtOHVPQ1pobVdHd01aVXdNQ2dibzl6QmFBOVF3RDdpSVVRQWx0Zy9pallEMVdnVVFOQ29UNVdERW94R2FZRXJFUlFocGhQeTRGUkZnYlpEZXFDT1lpNWcwQkFFSktVSXI2RUVmZ2N3M0hGdnBidGplUkd4RHhHK2djVU9IVVVoZXlnZnh6N204MFRaTWVWdDdvRm1VajIvbDZGK1Q2SHRVMmZTSWhPWmJCU0FjMFRrNm1pUUlSY2hJU0ZGREFQQ3lYd0h6Y1ErNklFN0J6RzNlZHdFcjJBQVlnOWNmYU9rUDFuRjg1OWdDYzlMQ0JGV0orTU94RlBiUFdvL3RYTkw0WUM3SDBDSkM5d1AwZ3RZQTkxQURJbjhmOXJvSFJmZitLU3RGR0I5cWRTUmluVVRFazBFR0pLSVZZRzJNR0FIMVFEVmdTMUJpV29TUktQeHFLTUVyMDZoMGdrMFVmck1qcWgvZFB4VTRnaDVnSThFMkNHUUVocWVnaGg2eVE0S1BENG9mTzZBN3pRQUNpQ0h0Z0FVVS9lZ093RGM2RjIzVGFKTTBYRmQ0SlNRbHl5TVV4aVlGRzNMNFlNQWtjQXdzSUZRVE1CcHloaXo0bXA1L3lqRDk0RDRqL09QSm9RU0pRbk9KSUJhcDd4RHdXU2dvdUl3R0F5Uk1oVFVXREFoU1FDUlVwa0lJZGo4eUl2ODRoRUtVNG5tcVdFVVl4a2toR0VrNHZOVG9FQis1T1NqdythMHRWVVNsUzFFU1N4SkswS0xDclNGYVZaV0pDMUZSQmxLZ2kySkd5d2hTd3BHUWg2cUFjdHVVNDZHQVZEUlNDZ0dYbTlVQkRMeVEwQWRxd2VrQTJtSVNCaDRCdkNIOFJLbEJFN2o0Zlo2ZXdpZStIQ0FnNUw0QmdrSXoyRENrK0NkME1GbmlmaXBuRlZZb3ZtQjd5UVB0cC9BbTlNUHlSVEtwWjVrT29zUEZTQUFiVGVsR1NyS0FEQUlmMWg1Q3RueEFBK0tKUW9iVGNJN3F5aFlHVFFCTUtJMTlqODM2TUNCRWtHQ1I4dS80NTdMNkE5NlZrUXA0Q0RiREphRk5JYU5CWVVSaUNXc2FvakhTVVdZMzFRa0xEc2RRME9LQnhnSkZBUGxUY3VrNHVsSUk1Q04yQW55T1NqU0lINEtmZ0tIbVh0TlNLblUrb0NaVWNkb0NQYW5VMm1WM3A3cHFmRGVSSHdzaENFSWNlemdQUkVMR1VtSlVHRkFUQXdERWprSUZXTUVzbmUzckZPckNpSVV3V21Ec2xLRUVQRUlHdzlaM3hBMEE0QmhvRTJJN2FCeXBpaVVQUkozb1Q3MEw0YTU4ZEJJU1ZDWU5LVVFUWWdZeFl1dFlVd3FTa3BjR1NVUWxJbEpsRUdGd3NpUmxabGxHR1VLS0loNjJIem9iOEVzNytDQmVxWGx5Y1FvcVJvb2RwZ3lHUmtXU2JvcVhhRk85clc2bVpJZzl4Vk93WWVTQ1BjQjR2VkZQZ25LYmdzRTd5SW5Wd2dkcUtPNzNQczJQY0NnUjNHbzR3aEpHTkFmcEFST2J5b0NHQ0ljdU1JVG5La0lSTEFLWkFKbTlvcmZqWHFUQXJSK2dObVE4RkFPQ3ZqRTVvcDdlbWVJY3VvQWJVTkJmQkVocHRJbnpUVVJUUkdaQlREbUlDRlFFRG1XSlNyQklndjRuTk5vSnNpb2Nnb0N2U1FMVkdlZ3RQTzAwa3dNc0RTWEh5SVpGd2I2VVJ4ZFA1SGNCU3Rwc1lFaXdpMGtpeUx3ZUw3Z1dmUTlTUWZkTUFlOEJKSVdRanhQYWZiNmZtUDZ5eTBQdE1pNzJSMWQvQnNzSVlJUUtHRUxLQ0Z3b0xMU3FvVEhON2lLZVlJZFFWN2JmUTZtOXRGd2ZXaFNRWEFDZkZ5aW4xQk5zQlBpaWMxRndBaVI1RWJZQU1VL05EM0hvZVlCc0lwMnA2Q25BU0FyeUVMNGdVZTBRZWhQd1ZZRkdJcnhJV1FUZ0lJRkZrYW5sUFBkTklFSW1UdlFFSlZpcWR0QS9NQkV4WFVGSDhpRi9BL1M5eEh4d0Eva1Q1TUQxbG5ydTB3YnQyejZXRGNVd3JMeDZhRkxlWHpkdEh3dXR0cGl3dWx4VEdMeWVoMisxcE5leFNXb1Fxb0tJQ3FDYnhlR2VzNWdHd2pvUjVVTklyVTREQ1c4VEE3MzJlRHdlajV1Nm8vWDYvWkQwZTcrSHQ5dnYvWjczbHF2NnZabzluajJIT2RIM3UrbzRPVHBPN3lrVTZYN25ubWJzYjAvdlZOUUozZEE2aS9mdUF6ZGRSTVg0RVRXZEFudHo5dzlNNWV1UFZuSlRnd0hQU0owTmFRMlAzOTdtNy95ZGlSbEtVcFNNUkVTbUQyc3I4ZUk4TFljSWluWjA3Nmg4WWVxTzQ4YTM5MWlqdWpDbkRZWGlFMXdramd5SERqc1RSYUNFb2FHNGtrZnU1Q3VIeEhyRElpQVE2VDJMTEI5U2RrQ0JJRUI4NmoyOENCeG1DcjRRQXpFSFdLa0lCSklKZEZJNEFKQVRRRkEwVDJIbFBPWUFBYm43bmI1NlVvZ3RpV080VW5PRmpCU0xBbi9vQUNNM043RWFSTndNSmJMS0YvaUFwTGxGcEVwRm9sQ2dlbUNVbm9nVDRKNmVQSkVVVi9mQU81RWlycTZJcFNIY29QSkJOb0pRVUo1bmdJZVloZlJhalFLeTBMU3lWQVJJekltVmFJWld3cFNDVXljU1R0M2FoU2xMYTIrUjI2a1RxQVQ1Q2Q4WUFnb3dpa0ZBV0FLcytYK2crVXpNekRHYVNUaUlFTERpQjNHajBRZXJSYWs3Q1pQRVBoK29DUDFSaythQ0pFK1gyUSt1cS9nSlJnVXNSWXhVU2ZoTFJGV0xCVlJHSUtaWXFPRUpTV1NUQ0tpU0lSUVloRXVQZEQ0UWd4a0ltU2Z6K2xTeVhKaEFvZ1JrSU9IM2VRbjYrR1QyQjlvZlp5VHVxWmZESm00NTVUVVBnVW9LRElEUmNGWUVFWWtJZ1FHSkNLR2l1WnI2Rlp5N2g1dmoxekxpWTNLVnJpVEE2TVFZQ0l3Q0VXUUp1b0NnZ3kzZXJxTitDRVZPWVFnTVBiOElyZ2ErOHZqZ251dzhJOWdpS0pFUWtta0NLSDlwSjNoQzBWVVJSVmlpU0JOeURlNlh1U1RhRWtZQVYwT2lBWEFqemdDQUhNVU14aXBvdmljQXVLSGNGSVVielNpZ3FqR3k3aGRscGV0U0dzcFVVRzV5VERTS3pOWUdHL1F4VG9TZDdwdzNJUVRFY3lSaHgwdkN1SmlDOHpxYm5nSGtNczl4d3FhclpYQTQ0SjBEdjcvQUtnVklhblh4K1MycXZUS0psVVJ0cldxbHRiYmppb25wemkyK1hTUk5xUFkrUWRBNXlTK0tuY1VHQTJxVW5ZRzBzSGYyYVZUeTlXakRrbThVV1VUZTJIUGV0MXJQRXd5WXhvb2pHTUZnakdJS3A0OTV4RFpKTlRnSU04NTJrUTlCTzVXUE9kNTdpTEpGaDI3dlB1ek1iYmFxMkRiR1ZWZzBWcGJuaDZQTm8wNnpZR2pyOWM5MnFWS2xDc0FjVnhFcDVJT2ZYT2VMTU1WRGdrdm9BK1ZwWDdHQWtPMGg1QTcxMkdDWGhROGU1SjhGbkYyak14QkNXMldWRnFVcElUTTN2ak5ZM1dybnFuZ2VRUTZFRDRBNmFZeFJyMXR0UWtJRUFCSmtKSmt5U0dHR0JJWUFCa0ZxOThBSndQQUJ5Qk9ZQWdGaDU3WW9wN3dmRGZSS29Lek53YUFhb0FGSEpQRTVoRDV3UU5kSDBCaUo4VmxRL0Noc2diWW1qSWNJVUUwUk1BczN3T3lBVGU4RStJZHVXMGNSdWFESnIrWTh3Z2RnSDE1UWlqRldESUFRSUF6V2xQc1JPZ0NQeW0vMGVrK2M2T1JmZkY2L2FVektSNmlnU0Q3eTdnTnJDUHhBKzllYUNmNi9DSGNwdkZEVlR3VkE5UkNnUk9DanNMREhjUURDQXZKN1JPaFFFRHRSOHZQa0VGcnFVVzc0RUJkY2dUWlI3UTRFaW83bEVMTnpEWWtmNWV2OWhMUTVjbGdlOERvbnM3UkJ5SDNlSWZpRU9iQS8rTjcrRm8wUUhkeDY2d3dvd3h1cnNRNGh3aDl5SVdjZXFRd2t6OGFMUWVsSlJrNlVGSkJWV0JuMWl5OUp1UVBhZ2Vya25zaVRSSWcvSnZYNG9aTWt1Z05MQ2dxZzR3c1R3QkJoc0l2QzlJYlVhWUlMMWJBV3h5ZE5uSk5paDJNRE1RVzd2NHlHNU5sTE9BWFZnc0dXVzJnWVN4aEFIbUd5UitmSTlFMkpBaUVISWowb2VTY1ZlaG4vVHVBNlhROUVRaG9ia1BWUzkzanNzVFFqRGxkc2piRGpJWXBPb2pNbEJsRTJaYXJrTXNTWTRYRnhFUnF1QWt3UmdLQXdsSmxoREZrRmtRaklzQ0Vnd0pJOERpRGV2K3FPMGVpd2UxQk9ST1VEaUhVZmNEWHg3NjV6bURIVUVUT0JUSnBRRldpRk10a2lRWkJTZHhoY2s3NEZvVkJJelpTVkJXSG1UZFVEYmQrRkFsR1NUSm9CbE5FQ2tDdHdQbEFrc1VCd2xBM0FrcEhLYU5iQVNRWklDSkdjZWdPVTRPd29xUFU4bUVFMWFhZ2tRaWtDSnlrQXNrSkI4VXhVTmRFTmhRTzh3LzZSUENvYU80bmdaUEJhRzduSWdacUc1VDVJSGFwdE1KazBzT2hRVVNXSGZXYlFOaFdTMUUydW1oNEVpWTBHd214cG9mb3RjNkFlVVZQdlVDTDdla0lITDFlVC93b1I5ZW85NXBJa0JoQWM2YTNwYVlKajZYYmtwejhqcEJnaXdZUzIwc2plcERKUUdZRFNhbW9ISEVNNEp1dXplR0pzZW1Fb25FQ3lFUmd4WnAyQ0kzcFROYXVPc3VlL2xPZ0NFclZKSUlsSU83MUVra0NnTkpzTGtwU2ppVHFLblFFcXJLSGROZHVIWnFaR3Fqcmw3elF3cndpZXljQTBONGFNZlZUVk5SM3RRSWNzQmd5UXlFR21BRUFMMEREcU4wVHVDNWtvQVhJbXArMkRBUXFvU1JJZUlvYXplZktrSnNKblZrQXZIQmlzUkhVa2taQ0pJaUtUeklOS0txTVJWRVZWRVVvcVVWUVFXdFJVUlZSVVZGUlZWVm9yU0ZrSWtvZm5rWkdHakpQdU1JYUUvSUNDbjRvSUhZaFNDOEFYeEE3M3dmbTBJZEFYeCt3Tkw1QzJkaWdjbnhNa3FwVkVrZ3RCVVVtWmhsVzI1bHh0eTF5cVNIU1FueGZCNEhmRHZoOUh0NUNRSW40RDBpdWlZV04vVDVmQUJYc2ZOUVQ5UEVOb0hZUVVPSTVVOERSQWdjb0RvQnhCYzdrdWluT0wrNkx5TlVGNW53N1RVVlFNY3lFQ0VRT1lwQjV1aFhrb2RxS0ZJTEE4Mi9RTkFaQkhLTDkvWTdyYS9tZ2NwSjdJeUJrK2tyRDMva0ZLMHZ5NTdIVVRJaHhrNmQ1RW45VHdvWlBEd29taEptVXBrNWdFV2tta3QwNFpqV29vcHlzMGhRNWNhNVhjVFhFbWNycmJkVUQwRW9jYWhVT1RFU2xOazhJZWdlWktFa3p6UkFpVEVDVFE0OHg1a29UT2lidkVQUzBEdS9vZUlnQ0lhSWdLdmZGQUdCeWlvZGZNZUNOQkZUMUhpV2dUcTk0QlhGT0RtU3ZJYmlFejJCQjBadVI4UUVUNDAzSUNlTGgzYnUzdmwzSldMczRJa0M3M2sweDNYVWt4UmM4RlBvR0hKNGtUYXhWaU1uV0FVUG9oUyt3RHlPUndRZ2hOR3hpZ0xSVmlxNGdZSm5nRDZZQkR4VWE0SWVpajJVVUppRnBBWUVmekFNQkJDRUVjRkZwVFBVSXk0RjdXS0U2SGxXKzlBUTBBMEhGVE1FTHFRcEc0cDduQ2RqQ0dpUVdnZ21lWTBvNVFGaW53WG1XR1ZEaHloUWZpMTNocnpCSXlDdUNsa3BkbjFCQk43TTZKM2hZUURlZ2diSzRjV2hJRWhHQVJJbmxDcWdTQjJNWVFxaG5VMkFkWXJDQ3I3UDRxbG9KeFR1UmdmRVVGaHdndVFrUnpCd3NZZXZ2ZXJmWElHRnhZUVlSUnpBZHljd0RlRVlzSHlKaUIza0VEeUV4MGdCQms5TUlaZUtMY1BYNUtiejZnUlF3aCs2QkZDUVE1dm1kM0U3ckNaVXNSN2hJL0FJUWdhcm9jRWUxQ0dNQzlqNzRSUElFNzFkT3JOV0FFVGo5L0VEQXhpd1F5QWxaQ2UxYWZUUzNPR3N5cm51K0pPZTRwd0xhZ2dvMWxNWVFva0ZDUlJaQVVXU0Zha0xJbFJZRW9oVUZnWW8xVUZwYURBaUtMRzBLTmtvTUJFZ2xiTFN4bFJGRXFCYlcyRWxFcGxYVmxvNENvRTR1Slo1SUxPdmNua0l2MWZpWkQwTzlBUElObHYwQXJ3QUErNWhTaDdKNUIrY0lSSUYyZ2lRQlhrQjkwSjFnYXRjK3BDanFDMUdyRnFBVTBYYzRkeU9YVHROdzV5T3NEUUlDZG9neU1nYUE3Q3lVaFFUSVp1em5TaU1WT1prWTdUVTNoOGhFc1crYUFVdklCd1FJbldKb0FrY3lISktZYWI4UGxtbDBiRGpWS2ttakpEaUJETzg1VGxLMHlvR1h2RG1wbzY4T1pxSEJSMm5VMnV6eWM2cDJvU0pQVjF3UGI0a05vSVNKMkR3RmZVQThxbXdMeVRWZkY4VURMMmdBYkRJSGFBOFFwMlF4RktBVGFuUDJKM0tMelU4QU12b2lIaG9nYkZTT29GbGVHb0NjMFRldXZCVHVRd0JydmFIS1dhRkJoeDJtdU10VmhDVUJhaitrS1ZoWVdtcFI3QjI2aFNTSmtOUXA2S3NGZHpzRVBJN1N3UE1JZStiYmlFaEpJUWc4ZHB5VUhqM2cvVHdLOEF3UUl6ZDZEaFRpVFpKRGM1dzZxcSt6czVuczBpaWlpaWk0SEZPRU5CZTBBTjl6TUptMXZ0UmxrY29FQTNzVWFRNHFkNThsVTBNc2dpWjB3M2VLa3h3cDI1cXlUTk9nZGVYSEVwdFpaVnNyYWJ3UmkyV1ljajhEWkRRUlFhRi9SR1RkYUdvcGs5Rk9XbXZLaW9kR1ZkRlRRTWtUYlZIVlJ4WEhKK2RURk1BekZ5UXVsV1N4MFZBOWpCYWhoTkpkb2hsU1JJOVJPZ0x1YkRjeWFpa2pJSXdXc1VKRnBBeGZQU2lucVNDbUFIU0NhQ0NVZ2cyS0haZ0tCUVNvRDFqWk1TT0JRWXFFWURBa3RKRDR5QTIxQmVDS1g2RGdNWG9DT0hXSWVNMCtBZk04cGduaGZrVllDSlpBRWdlbnVkSlgwQU9JQ3ZMSWpPVUZnakJJZUpSMDlaNFZFZDRpZEFQU01HeHdJTklIYS9XYmt2YW9sMGdnL29IYXJoY3p3RVQrVENRb0tmakRVb0ROaENmQlNIaFFEVjdnNHpuUGhFRS9PUEdhR29weEoxVFhZZDZPNEVPOGRPUkN1bytMU25DcXNYWTZnc3hORkIvS3JNQ2VFV1FrV1FVRDRvOG9LMGduMDlpTDNlbmxlSThDREF3SG1CYWFOaXVzRWhEeEF3TkRZME5RQXNDL1VDMFR1QkRWVUQzL012SGZRTzBVR01VZDREajBaVEtUbktEbXNWZW1sMDZReVhUVk5WcFYzUnVWVUNQQmVRcndFRVBRTWlvZjFGWFFPaUM4elloWUhoemdMdmlrby9PQ2VwUklLQXBGaklFRVdLd1NKRWh4UTlGRFh4QVUzbmdMdkVTRCtBanN3d0xBWE9JbFNSUnZTS1RTbHFpbGJGaWxKVmdKS2lMc3NoWXhDbzBJSnFVRDdZQjc0U0dRTlZXa3dHaW1wcUlKM0tIbUNGTHNBN3dYbjRhaGFwQ0l4R0psQlB1VGdHaHJ1UUY3dzV3MTArdGFGQ2xmY0JLTkJLTlBlb1pJakJFTE1GcFRFTUVwRDBDSFFEWnRGRkhNZVErRGNndU40a2dIWG85ZDZMMVVyVk43d2dwemtVZGtBdWluSUFRVjNIcDl6VTc0RDA2bmNqeUE5bVBDVlZIbDZmTDNMcmQrYTh4aWJWTFdnc1Vpd2xzM2FWdHJDcmg4Ri9zc05FYmxVUWlnOUFuS0tzTzQ3NmdXRWVsZ1FnUWtJS1hBaUlMMUk1WndtZGpFaWZFbmtPdEorTkVhSS9PaklORXg0R1BVWm9aa1BrYVh6dE4yaHZqUmdpNlN3UjNTeFJRWEFvMjVGUDJOcjhJR2dPeE5BMXZGTjJWc3RjaHJrVTlEVEVvZHJNd0R3UHpEeE0rdGZlWEFLYkV1cnBmbmN3QTVqRklRRU5lb2FlM21lQzM2RklmVkU4bUxFZk1JSUI3T053aGVQWnFnenl2YzczdklhdHQ0Z2JTUzNpaGllRWdBUWJsU2J5V1ZDcjBVUThNNExsM0t3Q0haMmlGZ3hCZGlRN096Z3lSTTBtZ3hNS0haeXhKY096bHc2d1ltL0d1RjF2Tk90YnpLY2crQWgwQTllQnZkcUFsNU5rZ1VoQXFCSUt2RkhEQ0tOWDVEVDFqSVEzYXkyMUcxcWtJekx6T2JCWG0xRUhWeVE5TTRSQkx1eHJBb2NGN1hLaXZpRHlFRjdob0lmRUtjcUZDSFJOa09hTkFTU1NBcHQzK2RtSVNUeTR2RVZEZ2FxYXBsREFUcXpXNDZSQ1RVSWxVVVdUQUI0SXMrUGcxRnNiUmlSa0FnakJpZEY1RUc3TE5xckhpeWErUmh0aGJyTmJDUTlRZ0RJa2ZiWUtTYlpXU1RDVXpEQkNjMlFvd0lJUVNwS3d4SkRCSVpHUkJNakt4VVRoelZBTlNFeGtoWklLUUxXdFNtWTBobUJhRmxpT0lVakJHVkp4Tnk4aG1vSkhaRFdxM1d1T05HbVRielRPSTRoWmhvcU5jM2dZRHA0NDVacEJUT0NtczBva2lDYXFhaEFZUXlYaXFKb0l5N0xta2NhclJpbEVkQTBIWDRXZUpzTmlXYXJzc0tJVTFUaWkxRnRBM0FiaEF3R0RKVFJZZ2JYQ051bVZDMEtWTmFBc1EwRUNrQURSQVhUdEZPUnkxVUV5aWI2V2xIZEVJUUFqQ01SQ0lBZC9ab2N3aWo2dXJvQnlRWDhxallxSEJieUR1bnZqUGNFQ2lTakFVNmpWZTZ0Q3BVOGs0UU9FSGNSVmI0NWxPaUZ5STBhVERZNkY0TDRvaHpLWnU3YUFBYktlMG82ZzV4TTFFcmREQUN3WFpzTmc1VXNVMEZINW9qNzdCTVE1RlFwVmRGUTdrT2JvVVRpRk5rd1RQcklRbDE2cEFPT0FOU0ZGSjVpRUZ0aXFVaHFHd0F5YjBYNFFFQ1IyanQ0c0pLQ0VKVUp1N0E1SHF2RkxEcWhRSHcrcnJHQ29xMUNIRmFkSU9jcVkrNjBCaVJLY1RoT0U0STB6dTZnNWpEbWNrd0w2ZnNIeThsZjFiZ0hzaElUaTVIYlBBSUVCaEFneFVJQ0hvQWV1aWF3b1grUWptS3lNaXdnb2txVUxJTVVJZ0VlOGtrWkJJU1NLUlJnSFIzSEVnV0ZIa05BbmdoRUtJc0NsaDdJOFdvZUVTcGpWS1Y5bkJQc2FnUk5vVXFZMkE5cjBXNFNFaEpkcmJZcklSVVVaRllnYmdkR0U5cUtFdktOeGtrblhjNXF5ckNRQk9UUGVPaGNRU2xxOXRHWUtMeUNKNFhJekVhOGRyaklqSXJJeUIzajJuWTM2MVlaQ0VZSkNCUnR0dHVnZVd6R2huTy84Y1hFMU5MTGpHam1ZWTh2dThhT0hieW9XR21NZWlYa1dpS09wQVB0L2ZQdmsvU0oxNUREaThtK291T29tc1VUczdobWdFRG9tOEtSRkhYV0hFZ2NJWG11V01YN3A2bzQweDdrTE1oTUJ4OEFlNkFaSUFGQmZ0TXc0UlJEUGRFR1FCaEFGUHpjbjVkYm4va3hrU1FrRkYvQ0x5d29QL3hkeVJUaFFrTHRnUjk0CiIiIgojIERlY29tcHJlc3MgdGhlIENVREEgc291cmNlCkNVREFfU1JDID0gYnoyLmRlY29tcHJlc3MoYmFzZTY0LmI2NGRlY29kZShDVURBX1NSQ19DT01QUkVTU0VEKSkuZGVjb2RlKCd1dGYtOCcpCmltcG9ydCBvcwppbXBvcnQgdG9yY2gKb3MuZW52aXJvblsiQ1hYIl0gPSAiY2xhbmcrKyIKbW9kdWxlID0gbG9hZF9pbmxpbmUoCiAgICBuYW1lPSdydW5fZnJvbV9weXRob24nLAogICAgY3BwX3NvdXJjZXM9W0NQUF9XUkFQUEVSXSwKICAgIGN1ZGFfc291cmNlcz1bQ1VEQV9TUkNdLAogICAgZnVuY3Rpb25zPVsncnVuX2Zyb21fcHl0aG9uJ10sCiAgICB2ZXJib3NlPVRydWUsCiAgICBleHRyYV9jdWRhX2NmbGFncz1bIi0tb2ZmbG9hZC1hcmNoPWdmeDk0MiIsICItc3RkPWMrKzIwIiwgIi1VX19ISVBfTk9fSEFMRl9PUEVSQVRPUlNfXyIsICItVV9fSElQX05PX0hBTEZfQ09OVkVSU0lPTlNfXyJdLAopCmRlZiBjdXN0b21fa2VybmVsKGRhdGE6IGlucHV0X3QpIC0+IG91dHB1dF90OgogICAgaW5wdXRfdGVuc29yLCB3ZWlnaHRzLCBjb25maWcgPSBkYXRhCiAgICBvdXRwdXRfdGVuc29yID0gZW1wdHlfbGlrZShpbnB1dF90ZW5zb3IpCiAgICBiYXRjaF9zaXplID0gaW5wdXRfdGVuc29yLnNpemUoMCkKICAgIHNlcV9sZW4gPSBpbnB1dF90ZW5zb3Iuc2l6ZSgxKQogICAgbl9yb3V0ZWRfZXhwZXJ0cyA9IGNvbmZpZ1sibl9yb3V0ZWRfZXhwZXJ0cyJdCiAgICBuX3NoYXJlZF9leHBlcnRzID0gY29uZmlnWyJuX3NoYXJlZF9leHBlcnRzIl0KICAgIG5fZXhwZXJ0c19wZXJfdG9rZW4gPSBjb25maWdbIm5fZXhwZXJ0c19wZXJfdG9rZW4iXQogICAgZF9oaWRkZW4gPSBjb25maWdbImRfaGlkZGVuIl0KICAgIGRfZXhwZXJ0ID0gY29uZmlnWyJkX2V4cGVydCJdCiAgICBleHBlcnRfd2VpZ2h0X2dhdGVfcCA9IFtdCiAgICBleHBlcnRfd2VpZ2h0X3VwX3AgPSBbXQogICAgZXhwZXJ0X3dlaWdodF9kb3duX3AgPSBbXQogICAgZm9yIGkgaW4gcmFuZ2Uobl9yb3V0ZWRfZXhwZXJ0cyk6CiAgICAgICAgZXhwZXJ0X3dlaWdodF9nYXRlX3AuYXBwZW5kKGludCh3ZWlnaHRzW2YnZXhwZXJ0cy57aX0uMC53ZWlnaHQnXS5kYXRhX3B0cigpKSkKICAgICAgICBleHBlcnRfd2VpZ2h0X3VwX3AuYXBwZW5kKGludCh3ZWlnaHRzW2YnZXhwZXJ0cy57aX0uMS53ZWlnaHQnXS5kYXRhX3B0cigpKSkKICAgICAgICBleHBlcnRfd2VpZ2h0X2Rvd25fcC5hcHBlbmQoaW50KHdlaWdodHNbZidleHBlcnRzLntpfS4yLndlaWdodCddLmRhdGFfcHRyKCkpKQogICAgCiAgICBzaGFyZWRfZXhwZXJ0X3dlaWdodF9nYXRlID0gaW50KHdlaWdodHNbJ3NoYXJlZF9leHBlcnRzLjAud2VpZ2h0J10uZGF0YV9wdHIoKSkKICAgIHNoYXJlZF9leHBlcnRfd2VpZ2h0X3VwID0gaW50KHdlaWdodHNbJ3NoYXJlZF9leHBlcnRzLjEud2VpZ2h0J10uZGF0YV9wdHIoKSkKICAgIHNoYXJlZF9leHBlcnRfd2VpZ2h0X2Rvd24gPSBpbnQod2VpZ2h0c1snc2hhcmVkX2V4cGVydHMuMi53ZWlnaHQnXS5kYXRhX3B0cigpKQogICAgCiAgICByb3V0ZXJfd2VpZ2h0ID0gaW50KHdlaWdodHNbJ3JvdXRlci53ZWlnaHQnXS5kYXRhX3B0cigpKQogICAgCiAgICBleHBlcnRfc2NvcmVzID0gdG9yY2gubWF0bXVsKGlucHV0X3RlbnNvci52aWV3KC0xLCBkX2hpZGRlbiksIHdlaWdodHNbJ3JvdXRlci53ZWlnaHQnXS50cmFuc3Bvc2UoMCwgMSkpLmNvbnRpZ3VvdXMoKQogICAgCiAgICBtb2R1bGUucnVuX2Zyb21fcHl0aG9uKHNlcV9sZW4sIGJhdGNoX3NpemUsIGRfaGlkZGVuLCBkX2V4cGVydCwgbl9yb3V0ZWRfZXhwZXJ0cywgbl9leHBlcnRzX3Blcl90b2tlbiwgbl9zaGFyZWRfZXhwZXJ0cywgaW50KGlucHV0X3RlbnNvci5kYXRhX3B0cigpKSwgaW50KGV4cGVydF9zY29yZXMuZGF0YV9wdHIoKSksIGV4cGVydF93ZWlnaHRfZ2F0ZV9wLCBleHBlcnRfd2VpZ2h0X3VwX3AsIGV4cGVydF93ZWlnaHRfZG93bl9wLCBzaGFyZWRfZXhwZXJ0X3dlaWdodF9nYXRlLCBzaGFyZWRfZXhwZXJ0X3dlaWdodF91cCwgc2hhcmVkX2V4cGVydF93ZWlnaHRfZG93biwgcm91dGVyX3dlaWdodCwgaW50KG91dHB1dF90ZW5zb3IuZGF0YV9wdHIoKSkpCiAgICAKICAgIHJldHVybiBvdXRwdXRfdGVuc29yNo newline at end of file
Best evidence level for this revision: reported
JSON