Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi8vIFNQRFgtRmlsZUNvcHlyaWdodFRleHQ6IFN5bnRhY29yZSBMTEMgqSAyMDE2LTIwMjEKLy8gCi8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwovLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAovLwovLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAovLwovLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgovLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgovLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMAovLyBTUERYLUZpbGVDb250cmlidXRvcjogU3ludGFjb3JlIExMQwovLyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwovLy8gQGZpbGUgICAgICAgPHNjcjFfYWhiLnN2aD4KLy8vIEBicmllZiAgICAgIEFIQiBoZWFkZXIgZmlsZQovLy8KCmBpZm5kZWYgU0NSMV9BSEJfU1ZICmBkZWZpbmUgU0NSMV9BSEJfU1ZICgpgaW5jbHVkZSAic2NyMV9hcmNoX2Rlc2NyaXB0aW9uLnN2aCIKCnBhcmFtZXRlciBTQ1IxX0FIQl9XSURUSCAgPSAzMjsKCi8vIEVuY29kaW5nIGZvciBIVFJBTlMgc2lnbmFsCnBhcmFtZXRlciBsb2dpYyBbMTowXSBTQ1IxX0hUUkFOU19JRExFICAgPSAyJ2IwMDsKcGFyYW1ldGVyIGxvZ2ljIFsxOjBdIFNDUjFfSFRSQU5TX05PTlNFUSA9IDInYjEwOwpgaWZkZWYgU0NSMV9YUFJPUF9FTgpwYXJhbWV0ZXIgbG9naWMgWzE6MF0gU0NSMV9IVFJBTlNfRVJSICAgID0gJ3g7CmBlbHNlIC8vIFNDUjFfWFBST1BfRU4KcGFyYW1ldGVyIGxvZ2ljIFsxOjBdIFNDUjFfSFRSQU5TX0VSUiAgICA9ICcwOwpgZW5kaWYgLy8gU0NSMV9YUFJPUF9FTgoKLy8gRW5jb2RpbmcgZm9yIEhCVVJTVCBzaWduYWwKcGFyYW1ldGVyIGxvZ2ljIFsyOjBdIFNDUjFfSEJVUlNUX1NJTkdMRSA9IDMnYjAwMDsKYGlmZGVmIFNDUjFfWFBST1BfRU4KcGFyYW1ldGVyIGxvZ2ljIFsyOjBdIFNDUjFfSEJVUlNUX0VSUiAgICA9ICd4OwpgZWxzZSAvLyBTQ1IxX1hQUk9QX0VOCnBhcmFtZXRlciBsb2dpYyBbMTowXSBTQ1IxX0hCVVJTVF9FUlIgICAgPSAnMDsKYGVuZGlmIC8vIFNDUjFfWFBST1BfRU4KCi8vIEVuY29kaW5nIGZvciBIU0laRSBzaWduYWwKcGFyYW1ldGVyIGxvZ2ljIFsyOjBdIFNDUjFfSFNJWkVfOEIgICAgPSAzJ2IwMDA7CnBhcmFtZXRlciBsb2dpYyBbMjowXSBTQ1IxX0hTSVpFXzE2QiAgID0gMydiMDAxOwpwYXJhbWV0ZXIgbG9naWMgWzI6MF0gU0NSMV9IU0laRV8zMkIgICA9IDMnYjAxMDsKYGlmZGVmIFNDUjFfWFBST1BfRU4KcGFyYW1ldGVyIGxvZ2ljIFsyOjBdIFNDUjFfSFNJWkVfRVJSICAgPSAneDsKYGVsc2UgLy8gU0NSMV9YUFJPUF9FTgpwYXJhbWV0ZXIgbG9naWMgWzE6MF0gU0NSMV9IU0laRV9FUlIgICA9ICcwOwpgZW5kaWYgLy8gU0NSMV9YUFJPUF9FTgoKLy8gRW5jb2RpbmcgSFBST1Qgc2lnbmFsCi8vIEhQUk9UWzBdIDogMCAtIGluc3RyOyAgICAgIDEgLSBkYXRhCi8vIEhQUk9UWzFdIDogMCAtIHVzZXI7ICAgICAgIDEgLSBwcml2aWxlZ2UKLy8gSFBST1RbMl0gOiAwIC0gbm90IGJ1ZmZlcjsgMSAtIGJ1ZmZlcgovLyBIUFJPVFszXSA6IDAgLSBjYWNoZWFibGU7ICAxIC0gY2FjaGVhYmxlCnBhcmFtZXRlciBTQ1IxX0hQUk9UX0RBVEEgID0gMDsKcGFyYW1ldGVyIFNDUjFfSFBST1RfUFJWICAgPSAxOwpwYXJhbWV0ZXIgU0NSMV9IUFJPVF9CVUYgICA9IDI7CnBhcmFtZXRlciBTQ1IxX0hQUk9UX0NBQ0hFID0gMzsKCi8vIEVuY29kaW5nIEhSRVNQIHNpZ25hbApwYXJhbWV0ZXIgbG9naWMgU0NSMV9IUkVTUF9PS0FZICA9IDEnYjA7CnBhcmFtZXRlciBsb2dpYyBTQ1IxX0hSRVNQX0VSUk9SID0gMSdiMTsKYGlmZGVmIFNDUjFfWFBST1BfRU4KcGFyYW1ldGVyIGxvZ2ljIFNDUjFfSFJFU1BfRVJSICAgPSAxJ2J4OwpgZWxzZSAvLyBTQ1IxX1hQUk9QX0VOCnBhcmFtZXRlciBsb2dpYyBTQ1IxX0hSRVNQX0VSUiAgID0gMSdiMDsKYGVuZGlmIC8vIFNDUjFfWFBST1BfRU4KCmBlbmRpZiAvLyBTQ1IxX0FIQl9TVkgK