IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICA9PT09PT09PT09PT1MSUNFTlNFX1NUQVJUPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojICBvcmcub25hcC5kbWFhcAojICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojICBDb3B5cmlnaHQgqSAyMDE3IEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5LiBBbGwgcmlnaHRzIHJlc2VydmVkLgojICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKIyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgojICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKIyAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiMgIAojICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiMgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiMgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgojICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiMgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgojICA9PT09PT09PT09PT1MSUNFTlNFX0VORD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojCiMgIEVDT01QIGlzIGEgdHJhZGVtYXJrIGFuZCBzZXJ2aWNlIG1hcmsgb2YgQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuCiMgIAojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyMKIyMgQ2FtYnJpYSBBUEkgU2VydmVyIGNvbmZpZwojIwojIwktIERlZmF1bHQgdmFsdWVzIGFyZSBzaG93biBhcyBjb21tZW50ZWQgc2V0dGluZ3MuCiMjCgoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIwojIyBIVFRQIHNlcnZpY2UKIyMKIyMJCS0gMzkwNCBpcyBzdGFuZGFyZCBhcyBvZiA3LzI5LzE0LgojIwkJLSBBdCB0aGlzIHRpbWUsIENhbWJyaWEgYWx3YXlzIGJpbmRzIHRvIDAuMC4wLjAKIyMKY2FtYnJpYS5zZXJ2aWNlLnBvcnQ9JHtDQU1CUklBX1NFUlZJQ0VfUE9SVH0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyMKIyMgQnJva2VyIFR5cGUKIyMKIyMJVGhlIENhbWJyaWEgc2VydmVyIGNhbiBydW4gZWl0aGVyIGFzIGEgbWVtb3J5LW9ubHkgaW1wbGVtZW50YXRpb24sIG1lYW50CiMjCWZvciB0ZXN0aW5nLCBvciBhZ2FpbnN0IEthZmthLiBGb3IgYSBtZW1vcnktb25seSBzZXJ2ZXIsIHVzZSAibWVtb3J5IiBmb3IKIyMJdGhlIGJyb2tlci50eXBlIHNldHRpbmcuCiMjCmJyb2tlci50eXBlPSR7Q0FNQlJJQV9CUk9LRVJfVFlQRX0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyMKIyMgWm9va2VlcGVyIENvbm5lY3Rpb24KIyMKIyMJQm90aCBDYW1icmlhIGFuZCBLYWZrYSBtYWtlIHVzZSBvZiBab29rZWVwZXIuCiMKY29uZmlnLnprLnNlcnZlcnM9JHtDQU1CUklBX1pPT0tFRVBFUl9OT0RFU30KY29uZmlnLnprLnJvb3Q9L2ZlM2MvY2FtYnJpYS9jb25maWcKCgojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMjCiMjIEthZmthIENvbm5lY3Rpb24KIyMKIyMJSXRlbXMgYmVsb3cgYXJlIHBhc3NlZCB0aHJvdWdoIHRvIEthZmthJ3MgcHJvZHVjZXIgYW5kIGNvbnN1bWVyCiMjCWNvbmZpZ3VyYXRpb25zIChhZnRlciByZW1vdmluZyAia2Fma2EuIikKIyMKa2Fma2EubWV0YWRhdGEuYnJva2VyLmxpc3Q9JHtLQUZLQV9CUk9LRVJfTElTVH0Ka2Fma2EuY2xpZW50Lnpvb2tlZXBlcj0ke0NBTUJSSUFfWk9PS0VFUEVSX05PREVTfQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIwojIwlTZWN1cmVkIENvbmZpZwojIwojIwlTb21lIGRhdGEgc3RvcmVkIGluIHRoZSBjb25maWcgc3lzdGVtIGlzIHNlbnNpdGl2ZSAtLSBBUEkga2V5cyBhbmQgc2VjcmV0cywKIyMJZm9yIGV4YW1wbGUuIHRvIHByb3RlY3QgaXQsIHdlIHVzZSBhbiBlbmNyeXB0aW9uIGxheWVyIGZvciB0aGlzIHNlY3Rpb24KIyMJb2YgdGhlIGNvbmZpZy4KIyMKIyMgVGhlIGtleSBpcyBhIGJhc2U2NCBlbmNvZGUgQUVTIGtleS4gVGhpcyBtdXN0IGJlIGNyZWF0ZWQvY29uZmlndXJlZCBmb3IKIyMgZWFjaCBpbnN0YWxsYXRpb24uCiNjYW1icmlhLnNlY3VyZUNvbmZpZy5rZXk9CiMjCiMjIFRoZSBpbml0aWFsaXphdGlvbiB2ZWN0b3IgaXMgYSAxNiBieXRlIHZhbHVlIHNwZWNpZmljIHRvIHRoZSBzZWN1cmVkIHN0b3JlLgojIyBUaGlzIG11c3QgYmUgY3JlYXRlZC9jb25maWd1cmVkIGZvciBlYWNoIGluc3RhbGxhdGlvbi4KI2NhbWJyaWEuc2VjdXJlQ29uZmlnLml2PQoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIwojIyBDb25zdW1lciBDYWNoaW5nCiMjCiMjCUthZmthIGV4cGVjdHMgbGl2ZSBjb25uZWN0aW9ucyBmcm9tIHRoZSBjb25zdW1lciB0byB0aGUgYnJva2VyLCB3aGljaAojIwlvYnZpb3VzbHkgZG9lc24ndCB3b3JrIG92ZXIgY29ubmVjdGlvbmxlc3MgSFRUUCByZXF1ZXN0cy4gVGhlIENhbWJyaWEKIyMJc2VydmVyIHByb3hpZXMgSFRUUCByZXF1ZXN0cyBpbnRvIEthZmthIGNvbnN1bWVyIHNlc3Npb25zIHRoYXQgYXJlIGtlcHQKIyMJYXJvdW5kIGZvciBsYXRlciByZS11c2UuIE5vdCBkb2luZyBzbyBpcyBjb3N0bHkgZm9yIHNldHVwIHBlciByZXF1ZXN0LAojIwl3aGljaCB3b3VsZCBzdWJzdGFudGlhbGx5IGltcGFjdCBhIGhpZ2ggdm9sdW1lIGNvbnN1bWVyJ3MgcGVyZm9ybWFuY2UuCiMjCiMjCVRoaXMgY29tcGxpY2F0ZXMgQ2FtYnJpYSBzZXJ2ZXIgZmFpbG92ZXIsIGJlY2F1c2Ugd2Ugb2Z0ZW4gbmVlZCBzZXJ2ZXIKIyMJQSB0byBjbG9zZSBpdHMgY29ubmVjdGlvbiBiZWZvcmUgc2VydmVyIEIgYnJpbmdzIHVwIHRoZSByZXBsYWNlbWVudC4gICAgCiMjCgojIyBUaGUgY29uc3VtZXIgY2FjaGUgaXMgbm9ybWFsbHkgZW5hYmxlZC4KY2FtYnJpYS5jb25zdW1lci5jYWNoZS5lbmFibGVkPXRydWUKCiMjIENhY2hlZCBjb25zdW1lcnMgYXJlIGNsZWFuZWQgdXAgYWZ0ZXIgYSBwZXJpb2Qgb2YgZGlzdXNlLiBUaGUgc2VydmVyIGluc3BlY3RzCiMjIGNvbnN1bWVycyBldmVyeSBzd2VlcEZyZXFTZWNvbmRzIGFuZCB3aWxsIGNsZWFuIHVwIGFueSBjb25uZWN0aW9ucyB0aGF0IGFyZQojIyBkb3JtYW50IGZvciB0b3VjaEZyZXFNcy4KY2FtYnJpYS5jb25zdW1lci5jYWNoZS5zd2VlcEZyZXFTZWNvbmRzPTE1CmNhbWJyaWEuY29uc3VtZXIuY2FjaGUudG91Y2hGcmVxTXM9MTIwMDAwCgojIyBUaGUgY2FjaGUgaXMgbWFuYWdlZCB0aHJvdWdoIFpLLiBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIFpLIGNvbm5lY3Rpb24KIyMgc3RyaW5nIGlzIHRoZSBzYW1lIGFzIGNvbmZpZy56ay5zZXJ2ZXJzLgpjYW1icmlhLmNvbnN1bWVyLmNhY2hlLnprQ29ubmVjdD0ke0NBTUJSSUFfWk9PS0VFUEVSX05PREVTfQoKIyMKIyMgU2hhcmVkIGNhY2hlIGluZm9ybWF0aW9uIGlzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIG5vZGUncyBuYW1lLiBUaGUgZGVmYXVsdAojIyBuYW1lIGlzIHRoZSBob3N0bmFtZSBwbHVzIHRoZSBIVFRQIHNlcnZpY2UgcG9ydCB0aGlzIGhvc3QgcnVucyBvbi4gKFRoZQojIyBob3N0bmFtZSBpcyBkZXRlcm1pbmVkIHZpYSBJbmV0QWRkcmVzcy5nZXRMb2NhbEhvc3QgKCkuZ2V0Q2Fub25pY2FsSG9zdE5hbWUoKSwKIyMgd2hpY2ggaXMgbm90IGFsd2F5cyBhZGVxdWF0ZS4pIFlvdSBjYW4gc2V0IHRoaXMgdmFsdWUgZXhwbGljaXRseSBoZXJlLgojIwojY2FtYnJpYS5hcGkubm9kZS5pZGVudGlmaWVyPTx1c2Utc29tZXRoaW5nLXVuaXF1ZS10by10aGlzLWluc3RhbmNlPgoKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIwojIyBNZXRyaWNzIFJlcG9ydGluZwojIwojIwlUaGlzIHNlcnZlciBjYW4gcmVwb3J0IGl0cyBtZXRyaWNzIHBlcmlvZGljYWxseSBvbiBhIHRvcGljLgojIwptZXRyaWNzLnNlbmQuY2FtYnJpYS5lbmFibGVkPXRydWUKbWV0cmljcy5zZW5kLmNhbWJyaWEuYmFzZVVybD1sb2NhbGhvc3Q6JHtDQU1CUklBX1NFUlZJQ0VfUE9SVH0KbWV0cmljcy5zZW5kLmNhbWJyaWEudG9waWM9Y2FtYnJpYS5hcGlub2RlLm1ldHJpY3MKbWV0cmljcy5zZW5kLmNhbWJyaWEuc2VuZEV2ZXJ5U2Vjb25kcz02MAoK