IyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiMqILDmyKjL+dPQIChDKTIwMTUsINbQ0MvNqNG2ucm33dPQz965q8u+oaMNCiMqIA0KIyogzsS8/sP7s8Y6ICAgICBNYWtlZmlsZQ0KIyogzsS8/rHqyrY6ICAgICBNYWtlZmlsZQ0KIyogxNrI3dWq0qo6ICAgICBNYWtlZmlsZSBvZiBaVEUgbGlicmFyeXMNCiMqIMq508O3vbeoOiAgICAgdm9pZA0KIyogDQojKiDQ3rjEyNXG2iAgICAgICAgsOaxvrrFICAgICAg0N64xLHqvMcgICAgICAgINDeuMTIyyAgICAgICAgICDQ3rjExNrI3Q0KIyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMqIDIwMTkvMDkvMjUgICAgIFYxLjAgICAgICAgIENyZWF0ZSAgICAgICAgICB4eHEgICAgICAgILS0vagNCiMqIA0KIyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQoNCiMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQojIGluY2x1ZGUgWlRFIGxpYnJhcnkgbWFrZWZpbGUNCiMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQppbmNsdWRlICQoQ09NTU9OX01LKQ0KDQoNCiMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQojIGxpYnJhcnkNCiMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQpMSUJfU0hBUkVEID0gbGlidm9pY2Uuc28NCkxJQl9TVEFUSUMgPSBsaWJ2b2ljZS5hDQppZmVxICgkKFVTRV9WT0lDRV9BTFNBKSx5ZXMpDQpPQkpTID0gdm9pY2UubyBhbHNhX2NhbGwubyB2b2ljZV9hcGkubyB2b2ljZWlwYy5vDQplbHNlDQpPQkpTID0gdm9pY2Uubw0KZW5kaWYNCiANCkNGTEFHUyArPSAtZw0KTERGTEFHUyArPSAtbHB0aHJlYWQNCg0KIyMjIyMjIyMjIyMjIyNVU0VSIENPTUlaRSBFTkQjIyMjIyMjIyMjIyMjIyMjIyMNCg0KQ0ZMQUdTICs9IC1JJCh6dGVfbGliX3BhdGgpL2xpYnRpbnlhbHNhL2luY2x1ZGUNCkNGTEFHUyArPSAtSSQoU1RBR0VESVIpL2luY2x1ZGUNCkNGTEFHUyArPSAtSSQoQVBQX0RJUikvaW5jbHVkZQ0KQ0ZMQUdTICs9IC1JJChMSU5VWF9ESVIpL2luY2x1ZGUNCkNGTEFHUyArPSAtZlBJQw0KDQpMREZMQUdTX1NIQVJFRCArPSAtc2hhcmVkDQoNCg0KIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiMgY29tcCB0ZXN0IGFwcCBhbmQgDQojKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgkNCmlmZXEgKCQoVVNFX1ZPSUNFX0FMU0EpLHllcykNCkVYRUNfdm9pY2VpcGMgPSB2b2ljZWlwYw0KZW5kaWYNCgkNCiMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQojIG9iamVjdHMNCiMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQppZmVxICgkKFVTRV9WT0lDRV9BTFNBKSx5ZXMpDQp2b2ljZWlwY19PQkpFQ1RTICs9IGFsc2FfY2FsbC5vIHZvaWNlX2FwaS5vIHZvaWNlaXBjLm8NCmVuZGlmDQoNCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI2ZvciBsaW51eCMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQoNCg0KDQoNCg0KQ0ZMQUdTCSs9IC1JLi9pbmNsdWRlLw0KQ0ZMQUdTICs9IC1nIC1XZXJyb3I9aW1wbGljaXQtZnVuY3Rpb24tZGVjbGFyYXRpb24NClNIQVJFREZMQUcgOj0gLXNoYXJlZCAtbGMNCkxETElCUyArPSAtTCQoTElCX0RJUikvbGlidGlueWFsc2ENCkxETElCUyArPSAtbHRpbnlhbHNhDQpMRExJQlMgICs9IC1sbnZyYW1fc2MgLUwkKHp0ZV9saWJfcGF0aCkvbGlibnZyYW0NCkxETElCUyAgKz0gLWxzb2Z0YXAgLUwkKHp0ZV9saWJfcGF0aCkvbGlic29mdGFwDQpMRExJQlMgICs9IC1sc29mdF90aW1lcl9zYyAtTCQoenRlX2xpYl9wYXRoKS9saWJzb2Z0X3RpbWVyDQoNCmlmZXEgKCQoVVNFX1ZPSUNFX0FMU0EpLHllcykNCmFsbDogJChMSUJfU1RBVElDKSAkKExJQl9TSEFSRUQpICQoRVhFQ192b2ljZWlwYykNCg0KJChMSUJfU1RBVElDKSA6ICQoT0JKUykNCgkkKEFSKSByY3MgJChMSUJfU1RBVElDKSAkKE9CSlMpDQoNCiQoTElCX1NIQVJFRCk6ICQoT0JKUykNCgkkKENDKSAkKExERkxBR1MpICQoTERGTEFHU19TSEFSRUQpIC1vICRAICReDQoNCgkNCiQoRVhFQ192b2ljZWlwYyk6ICQodm9pY2VpcGNfT0JKRUNUUykNCgkkKENDKSAkKExERkxBR1MpIC1vICRAICQodm9pY2VpcGNfT0JKRUNUUykgLVdsLC0tc3RhcnQtZ3JvdXAgJChMRExJQlMpIC1XbCwtLWVuZC1ncm91cA0KCQ0KY2xlYW46DQoJcm0gLWYgJCh2b2ljZWlwY19PQkpFQ1RTKSAkKGxpYl9PQkpFQ1RTKSAkKExJQl9TSEFSRUQpICQoTElCX1NUQVRJQykgJChFWEVDX3ZvaWNlaXBjKSAqLmVsZiAqLmdkYiAqLm8gY29yZQ0KDQpyb21mczoNCgkkKFJPTUZTSU5TVCkgJChMSUJfU0hBUkVEKSAvbGliLyQoTElCX1NIQVJFRCkNCgkkKFJPTUZTSU5TVCkgJChFWEVDX3ZvaWNlaXBjKSAvYmluLyQoRVhFQ192b2ljZWlwYykNCg0KCWNwIC12ICQoRVhFQ192b2ljZWlwYykgICAgJChBUFBfRElSKS90ZXN0X3Rvb2xzLw0KZWxzZQ0KYWxsOiAkKExJQl9TVEFUSUMpICQoTElCX1NIQVJFRCkNCg0KJChMSUJfU1RBVElDKSA6ICQoT0JKUykNCgkkKEFSKSByY3MgJChMSUJfU1RBVElDKSAkKE9CSlMpDQoNCiQoTElCX1NIQVJFRCk6ICQoT0JKUykNCgkkKENDKSAkKExERkxBR1MpICQoTERGTEFHU19TSEFSRUQpIC1vICRAICReDQoNCgkNCg0KCQ0KY2xlYW46DQoJcm0gLWYgICQobGliX09CSkVDVFMpICQoTElCX1NIQVJFRCkgJChMSUJfU1RBVElDKSAgKi5lbGYgKi5nZGIgKi5vIGNvcmUNCg0Kcm9tZnM6DQoJJChST01GU0lOU1QpICQoTElCX1NIQVJFRCkgL2xpYi8kKExJQl9TSEFSRUQpDQplbmRpZg0KDQoNCg==