UDoAWDEgeyB9CkRFRklOSVRJT05TIElNUExJQ0lUIFRBR1MgOjo9CkJFR0lOCmlkLWNlIE9CSkVDVCBJREVOVElGSUVSICA6Oj0gIHtqb2ludC1pLS07Ci0tCnNvLWNjaXR0IDQpcyhkKDUpIDI5fQppZC1jZS1hdXRob3JpdHlLZXlJZGVudGlmaWVyIE9CSkVDVCBJREVOVElGSUVSIDo6PSAgeyBpZC1jZSAzNSB9CkF1dGhvcml0eUtleUlkZW50aWZpZXIgOjo9IFNFUVVFTkNFIHsKICAgICAga2ZpbmVkQXR0cmlidXRlIDo6PSBTRVFVRU5DRSB7CiAgIHR5cGVzKSA0MCkgeDlhbGdvcml0aG0oNCkgMyB9CkRzcy1TaWctVmFsdWUgOjo9IFNFUVVFTkNFIHsKICAgcm1zICA6Oj0gIFNFUVVFTkNFICB7CiAgICAgcCAgICAgICAgICAgICBJTlRFR0VSLAogICAgIHEgICAgICAgICAgICAgSU5URUdFUiwKICAgICBnICAgICAgICBlZSBhbHNvIGV4dGVuZGVkLW5ldHdvcmstYWRkcmVzcwpYMTIxQWRkcmVzcyA6Oj0gTnVtZXJpY1N0cmluZyAoU0laRSAoMS4udWIteDEyMS1hZGRyZXNzLWxlbmd0aCkpClRlcm1pbmFsSWRlbnRpZmllciA6Oj0gUHJpbnRhYmxlU3RyaW5nIChTSVpFICgxLi51Yi10ZXJtaW5hbC1pZC1sZW5ndGgpKQpQcml2YXRlRG9tYWluTmFtZSA6Oj0gQ0hPSUNFIHsKICAgbnVtZXJpYyBOdW1lcmljU3RyaW5nIChTSVpFICgxLi51Yi1kb21haW4tbmFtZS1sZW5ndGgpKSwKICAgcHJpbnRhYmxlIFByaW50YWJsZVN0cmluZyAoU0laRSAoMS4udWItZG9tYWluLW5hbWUtbGVuZ3RoKSkgfQpPcmdhbml6YXRpb25OYW1lIDo6PSBQcmludGFibGVTdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTSVpFICgxLi51Yi1vcmdhbml6YXRpb24tbmFtZS1sZW5ndGgpKQpOdW1lcmljVXNlcklkZW50aWZpZXIgOjo9IE51bWVyaWNTdHJpbmcKICAgICAgICAgICAgICAgICAgICAgIGAgICAgIChTSVpFICgxLi51Yi1udW1lcmljLXVzZXItaWQtbWUgT1BUSU9OQUwsCiAgIGFkbWluaXN0cmF0aW9uLWRvbWFpbi1uYW1yYXRpb25Eb21haW5OYW1lIDo6PSBbQVBQTElDQVRJT04gMl0gRVhQTElDSVQgQ0hPSUNFIHsKICAgbnVtZXJpYyBOdW1lcmljU3RyaW5nIChTSVpFICgwLi51Yi1kb21haW4tbmFtZS1sZW5ndGgpKSwKICAgcHJpbnRhYmxlIFByaW50YWJsZVN0cmluZyAoU0laRSAoMC4udWItZG9tYWluLW5hbWUtbGVuZ3RoKSkgfQpOZXR3b3JrQWRkcmVzcyA6Oj0gWDEyMUFkZHIgYWxzbyBleHRlbmRlZC1uZXR3b3JrLWFkZHJlc3MKWDEyMUFkZHJlc3MgOjo9IE51bWVyaWNTdHJpbmcgKFNJWkUgKDEuLnViLXgxMjEtYWRkcmVzcy1sZW5ndGgpKQpUZXJtaW5hbElkZW50aWZpZXIgOjo9IFByaW50YWJsZVN0cmluZyAoU0laRSAoMS4udWItdGVybWluYWwtaWQtbGVuZ3RoKSkKUHJpdmF0ZURvbWFpbk5hbWUgOjo9IENIT0lDRSB7CiAgIG51bWVyaWMgTnVtZXJpY1N0cmluZyAoU0laRSAoMS4udWItZG9tYWluLW5hbWUtbGVuZ3RoKSksCiAgIHByaW50YWJsZSBQcmludGFibGVTdHJpbmcgKFNJWkUgKDEuLnViLWRvbWFpbi1uYW1lLWxlbmd0aCkpIH0KT3JnYW5pemF0aW9uTmFtZSA6Oj0gUHJpbnRhYmxlU3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU0laRSAoMS4udWItb3JnYW5pemF0aW9uLW5hbWUtbGVuZ3RoKSkKTnVtZXJpY1VzZXJJZGVudGlmaWVyIDo6PSBOdW1lcmljU3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICBgICAgICAoU0laRSAoMS4udWItbnVtZXJpYy11c2VyLWlkLWxlbmd0aCkpLS0KLS0KClBlcnNvbmFsTmFtZSA6Oj0gU0VUIHsKICAgc3VybmFtZSBbMF0gUHJpbnRhYmxlU3RyaW5nIChTSVpFICgxLi51Yi1zdXJuYW1lLWxlbmd0aCkpLAogICBnaXZlbi1uYW1lIFsxXSBQcmludGFibGVTdHJpbmcKICAgICAgICAgICAgICAgICAgICAgICAgKFNJWkUgKDEuLnViLWdpdmVuLW5hbWUtbGVuZ3RoKSkgT1BUSU9OQUwsCiAgIGluaXRpYWxzIFsyXSBQcmludGFibGVTdHJpbmcgKFNJWkUgKDEuLnViLWluaXRpYWxzLWxlbmd0aCkpIE9QVElPTkFMLAogICBnZW5lcmF0aW9uLXF1YWxpZmllciBbM10gUHJpbnRhYmxlU3RyaW5nCiAgICAgICAgICAgICAgICAoU0laRSAoMS4udWItZ2VuZXJhdGlvbi1xdWFsaWZpZXItbGVuZ3RoKSkgT1BUSU9OQUwgfQpPcmdhbml6YXRpb25hbFVuaXROYW1lcyA6Oj0gU0VRVUVOQ0UgU0laRSAoMS4udWItb3JnYW5pemF0aW9uYWwtdW5pdHMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxLi51Yi1kb21haW4tZGVmaW5lZC1hdHRyaWJ1dGUtdmFsdWUtbGVuZ3RoICAgICBnICAgICAgICBlZSBhbHNvIGV4dGVuZGVkLW5ldHdvcmstYWRkcmVzcwpYMTIxQWRkcmVzcyA6Oj10ZXMpIE9GCiAgICAgICAgICAgICAgICAgICAgICAgIEV4Ci0tCnRlbnNpb25BdHRyaWJ1dGUKRXgtdGVuc2lvbkF0dHJpYnV0nSA6Oj0gIFNFUVVFTkNFIHsKICAgZXh0ZW5zaW9uLWF0dHJpYnV0ZfN0LQp5cGUgWzBdIEVYUExJQ0lUIElOVEVHRVIgKDAuLnViLWV4O2Vuc2lvbi1hdHRyaWJ1dGVz