IyBTcGFtQXNzYXNzaW4gdHJhbnNsYXRpb25zOiBGcmFu52Fpc2UKIwojIFdyaXR0ZW4gYnkgTWljaGVsIEJvdWlzc291IDxtaWNoZWxAYm91aXNzb3UubmV0PiBmb3IgU3BhbUFzc2Fzc2luIDIuNjAKIyBMYXRlc3QgcmV2aXNpb246IDIwMDMvMTEvMTQKIwojIFBsZWFzZSBkb24ndCBtb2RpZnkgdGhpcyBmaWxlIGFzIHlvdXIgY2hhbmdlcyB3aWxsIGJlIG92ZXJ3cml0dGVuIHdpdGgKIyB0aGUgbmV4dCB1cGRhdGUuIFVzZSBAQExPQ0FMX1JVTEVTX0RJUkBAL2xvY2FsLmNmIGluc3RlYWQuCiMgU2VlICdwZXJsZG9jIE1haWw6OlNwYW1Bc3Nhc3Npbjo6Q29uZicgZm9yIGRldGFpbHMuCiMKIyA8QExJQ0VOU0U+CiMgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZSBvciBtb3JlCiMgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZSBkaXN0cmlidXRlZCB3aXRoCiMgdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLgojIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wCiMgKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgKIyB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdDoKIyAKIyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiMgCiMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQojIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCiMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAojIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgojIDwvQExJQ0VOU0U+CiMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojICAgICAgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgpsYW5nIGZyIGNsZWFyLXJlcG9ydC10ZW1wbGF0ZQpsYW5nIGZyIHJlcG9ydCAtLS0tLS0tLS0tLS0tLS0tLS0gROlidXQgZGUgUmFwcG9ydCBTcGFtQXNzYXNzaW4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmxhbmcgZnIgcmVwb3J0IENlIG1lc3NhZ2UgZXN0IHByb2JhYmxlbWVudCBkdSBTUEFNIChtZXNzYWdlIG5vbiBzb2xsaWNpdOkgZW52b3npIGVuCmxhbmcgZnIgcmVwb3J0IG1hc3NlLCBwdWJsaWNpdOksIGVzY3JvcXVlcmllLi4uKS4KbGFuZyBmciByZXBvcnQKbGFuZyBmciByZXBvcnQgQ2V0dGUgbm90aWNlIGEg6XTpIGFqb3V06WUgcGFyIGxlIHN5c3TobWUgZCdhbmFseXNlICJTcGFtQXNzYXNzaW4iIHN1cgpsYW5nIGZyIHJlcG9ydCB2b3RyZSBzZXJ2ZXVyIGRlIGNvdXJyaWVyICJfSE9TVE5BTUVfIiwgcG91ciB2b3VzCmxhbmcgZnIgcmVwb3J0IGFpZGVyIOAgaWRlbnRpZmllciBjZSB0eXBlIGRlIG1lc3NhZ2VzLgpsYW5nIGZyIHJlcG9ydApsYW5nIGZyIHJlcG9ydCBMZSBzeXN06G1lIFNwYW1Bc3Nhc3NpbiBham91dGUgdW4gZW4tdOp0ZSAiWC1TcGFtLUZsYWc6IFlFUyIgYXV4CmxhbmcgZnIgcmVwb3J0IG1lc3NhZ2VzIHF1J2lsIGNvbnNpZOhyZSBjb21tZSDpdGFudCBwcm9iYWJsZW1lbnQgZHUgU3BhbS4KbGFuZyBmciByZXBvcnQgVm91cyBwb3V2ZXogc2kgdm91cyBsZSBzb3VoYWl0ZXogdXRpbGlzZXIgY2V0dGUgY2FyYWN06XJpc3RpcXVlCmxhbmcgZnIgcmVwb3J0IHBvdXIgculnbGVyIHVuIGZpbHRyZSBkYW5zIHZvdHJlIGxvZ2ljaWVsIGRlIGxlY3R1cmUgZGUgY291cnJpZXIsCmxhbmcgZnIgcmVwb3J0IGFmaW4gZGUgZOl0cnVpcmUgb3UgZGUgY2xhc3NlciDgIHBhcnQgY2UgdHlwZSBkZSBtZXNzYWdlLgpsYW5nIGZyIHJlcG9ydApsYW5nIGZyIHJlcG9ydCBTaSBjZSByb2JvdCBhIGNsYXNzaWZp6SBpbmNvcnJlY3RlbWVudCB1biBtZXNzYWdlIHF1aSB2b3VzIOl0YWl0CmxhbmcgZnIgcmVwb3J0IGRlc3RpbuksIG91IHBvdXIgdG91dGUgcXVlc3Rpb24sIHZldWlsbGV6IGNvbnRhY3RlciBsJ2FkbWluaXN0cmF0ZXVyCmxhbmcgZnIgcmVwb3J0IGR1IHN5c3TobWUgcGFyIGUtbWFpbCDgIF9DT05UQUNUQUREUkVTU18gLgpsYW5nIGZyIHJlcG9ydApsYW5nIGZyIHJlcG9ydCBWb2lyIGh0dHA6Ly9zcGFtYXNzYXNzaW4uYXBhY2hlLm9yZy90YWcvIHBvdXIgcGx1cyBkZSBk6XRhaWxzIChlbiBhbmdsYWlzKS4KbGFuZyBmciByZXBvcnQKbGFuZyBmciByZXBvcnQgROl0YWlscyBkZSBsJ2FuYWx5c2UgZHUgbWVzc2FnZTogICAoX1NDT1JFXyBwb2ludHMsIF9SRVFEXyByZXF1aXMpCmxhbmcgZnIgcmVwb3J0IF9TVU1NQVJZXwpsYW5nIGZyIHJlcG9ydCAtLS0tLS0tLS0tLS0tLS0tLS0tLSBGaW4gZGUgUmFwcG9ydCBTcGFtQXNzYXNzaW4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgojICAgICAgLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgojIFZvdXMgZGV2cmlleiBjaGFuZ2VyICJyZXBvcnRfY29udGFjdCIgZGFucyBsZSBmaWNoaWVyIDEwX21pc2MuY2YuCiMgX0NPTlRBQ1RBRERSRVNTXyBlc3QgcmVtcGxhY+llIHBhciBjZSB0ZXh0ZS4KIyAgICAgIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KCiMgICAgICAgICAgICAgICAgICAgICAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCmxhbmcgZnIgY2xlYXItdW5zYWZlLXJlcG9ydC10ZW1wbGF0ZQpsYW5nIGZyIHVuc2FmZS1yZXBvcnQgTGUgbWVzc2FnZSBvcmlnaW5hbCBuJ+l0YW50IHBhcyBhdSBmb3JtYXQgdGV4dCBicnV0LCBpbCBlc3QgcGV1dC3qdHJlCmxhbmcgZnIgdW5zYWZlLXJlcG9ydCBkYW5nZXJldXggZGUgbCdvdXZyaXIgYXZlYyB2b3RyZSBsb2dpY2llbCBlLW1haWwgOyBlbiBwYXJ0aWN1bGllciBpbApsYW5nIGZyIHVuc2FmZS1yZXBvcnQgcG91cnJhaXQgY29udGVuaXIgdW4gdmlydXMsIG91IGNvbmZpcm1lciDgIGwnZXhw6WRpdGV1ciBxdWUgdm90cmUKbGFuZyBmciB1bnNhZmUtcmVwb3J0IGFkcmVzc2UgZS1tYWlsIGVzdCBhY3RpdmUsIGV0IHBldXQgcmVjZXZvaXIgZHUgc3BhbS4gU2kgdm91cyB2b3VsZXoKbGFuZyBmciB1bnNhZmUtcmVwb3J0IGxpcmUgY2UgbWVzc2FnZSwgZXQgbifqdGVzIHBhcyBjZXJ0YWluIGRlIGxhIHPpY3VyaXTpIGRlIHZvdHJlIGxvZ2ljaWVsCmxhbmcgZnIgdW5zYWZlLXJlcG9ydCBlLW1haWwsIGlsIGVzdCBwbHVzIHBydWRlbnQgZCdlbnJlZ2lzdHJlciBjZSBtZXNzYWdlIHN1ciB2b3RyZSBkaXNxdWUKbGFuZyBmciB1bnNhZmUtcmVwb3J0IGR1ciwgZXQgZGUgbCdhZmZpY2hlciBlbnN1aXRlIGF2ZWMgdW4g6WRpdGV1ciBkZSB0ZXh0ZS4KIyAgICAgICAgICAgICAgICAgICAgIC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KCiMjIyMjIyMjIyMjIyMKIyAyM19iYXllcy5jZgpsYW5nIGZyIGRlc2NyaWJlIEJBWUVTXzAwCUwnYWxnb3JpdGhtZSBCYXnpc2llbiBhIOl2YWx16SBsYSBwcm9iYWJpbGl06SBkZSBzcGFtIGVudHJlIDAgZXQgMSUKbGFuZyBmciBkZXNjcmliZSBCQVlFU18wNQlMJ2FsZ29yaXRobWUgQmF56XNpZW4gYSDpdmFsdekgbGEgcHJvYmFiaWxpdOkgZGUgc3BhbSBlbnRyZSAxIGV0IDUlCmxhbmcgZnIgZGVzY3JpYmUgQkFZRVNfMjAJTCdhbGdvcml0aG1lIEJheelzaWVuIGEg6XZhbHXpIGxhIHByb2JhYmlsaXTpIGRlIHNwYW0gZW50cmUgNSBldCAyMCUKbGFuZyBmciBkZXNjcmliZSBCQVlFU180MAlMJ2FsZ29yaXRobWUgQmF56XNpZW4gYSDpdmFsdekgbGEgcHJvYmFiaWxpdOkgZGUgc3BhbSBlbnRyZSAyMCBldCA0MCUKbGFuZyBmciBkZXNjcmliZSBCQVlFU181MAlMJ2FsZ29yaXRobWUgQmF56XNpZW4gYSDpdmFsdekgbGEgcHJvYmFiaWxpdOkgZGUgc3BhbSBlbnRyZSA0MCBldCA2MCUKbGFuZyBmciBkZXNjcmliZSBCQVlFU182MAlMJ2FsZ29yaXRobWUgQmF56XNpZW4gYSDpdmFsdekgbGEgcHJvYmFiaWxpdOkgZGUgc3BhbSBlbnRyZSA2MCBldCA4MCUKbGFuZyBmciBkZXNjcmliZSBCQVlFU184MAlMJ2FsZ29yaXRobWUgQmF56XNpZW4gYSDpdmFsdekgbGEgcHJvYmFiaWxpdOkgZGUgc3BhbSBlbnRyZSA4MCBldCA5NSUKbGFuZyBmciBkZXNjcmliZSBCQVlFU185NQlMJ2FsZ29yaXRobWUgQmF56XNpZW4gYSDpdmFsdekgbGEgcHJvYmFiaWxpdOkgZGUgc3BhbSBlbnRyZSA5NSBldCA5OSUKbGFuZyBmciBkZXNjcmliZSBCQVlFU185OQlMJ2FsZ29yaXRobWUgQmF56XNpZW4gYSDpdmFsdekgbGEgcHJvYmFiaWxpdOkgZGUgc3BhbSBlbnRyZSA5OSBldCAxMDAlCgpsYW5nIGZyIGRlc2NyaWJlIEFDVF9OT1dfQ0FQUwkJRGVtYW5kZSBkJ2FnaXIgaW1t6WRpYXRlbWVudCAoZW4gbWFqdXNjdWxlcykKbGFuZyBmciBkZXNjcmliZSBCQURfQ1JFRElUCQlDb250aWVudCAiRWxpbWluYXRlIEJhZCBDcmVkaXQiCmxhbmcgZnIgZGVzY3JpYmUgQkFOR19HVUFSCQlRdWVscXVlIGNob3NlIGVzdCAiZ2FyYW50aSIgZGUgbWFuaehyZSBlbXBoYXRpcXVlCmxhbmcgZnIgZGVzY3JpYmUgQkFOR19PUFJBSCAgICAgIAlQYXJsZSBkJ09wcmFoIGF2ZWMgcG9pbnQgZCdleGNsYW1hdGlvbiAhCmxhbmcgZnIgZGVzY3JpYmUgQklMTElPTl9ET0xMQVJTICAgICAgICBFdm9xdWUgZGVzIG1pbGxpb25zIG91IG1pbGxpYXJkcyBkZSBkb2xsYXJzCmxhbmcgZnIgZGVzY3JpYmUgQkxBTktfTElORVNfODBfOTAJTGUgY29ycHMgZHUgbWVzc2FnZSBhIDgwIOAgOTAlIGRlIGxpZ25lcyB2aWRlcwpsYW5nIGZyIGRlc2NyaWJlIENIQVJTRVRfRkFSQVdBWQlNZXNzYWdlIHV0aWxpc2FudCB1biBqZXUgZGUgY2FyYWN06HJlcyBleG90aXF1ZQpsYW5nIGZyIGRlc2NyaWJlIENIQVJTRVRfRkFSQVdBWV9IRUFERVIJRW4tdOp0ZSB1dGlsaXNhbnQgdW4gamV1IGRlIGNhcmFjdOhyZXMgZXhvdGlxdWUKbGFuZyBmciBkZXNjcmliZSBDT05GSVJNRURfRk9SR0VECUxlcyBlbi106nRlcyAiUmVjZWl2ZWQ6IiBvbnQg6XTpIGZhbHNpZmnpcwpsYW5nIGZyIGRlc2NyaWJlIENVTV9TSE9UICAgICAgICAgICAgICAgUG9ybm9ncmFwaGllIHByb2JhYmxlLCAiZ3JvcyBwbGFucyBkJ+lqYWN1bGF0aW9ucyIKbGFuZyBmciBkZXNjcmliZSBEQVRFX0lOX1BBU1RfMDNfMDYJRGF0ZTogZXN0IDMg4CA2IGhldXJlcyBhdmFudCBsYSBkYXRlIGRlIGwnZW4tdOp0ZSBSZWNlaXZlZDoKbGFuZyBmciBkZXNjcmliZSBEQVRFX0lOX1BBU1RfMDZfMTIJRGF0ZTogZXN0IDYg4CAxMiBoZXVyZXMgYXZhbnQgbGEgZGF0ZSBkZSBsJ2VuLXTqdGUgUmVjZWl2ZWQ6CmxhbmcgZnIgZGVzY3JpYmUgREFURV9JTl9QQVNUXzEyXzI0CURhdGU6IGVzdCAxMiDgIDI0IGhldXJlcyBhdmFudCBsYSBkYXRlIGRlIGwnZW4tdOp0ZSBSZWNlaXZlZDoKbGFuZyBmciBkZXNjcmliZSBEQVRFX0lOX1BBU1RfMjRfNDgJRGF0ZTogZXN0IDI0IOAgNDggaGV1cmVzIGF2YW50IGxhIGRhdGUgZGUgbCdlbi106nRlIFJlY2VpdmVkOgpsYW5nIGZyIGRlc2NyaWJlIERBVEVfSU5fUEFTVF85Nl9YWAlEYXRlOiBlc3QgcGx1cyBkZSA5NiBoZXVyZXMgYXZhbnQgbGEgZGF0ZSBkZSBsJ2VuLXTqdGUgUmVjZWl2ZWQ6CmxhbmcgZnIgZGVzY3JpYmUgREFURV9JTl9GVVRVUkVfMDNfMDYJRGF0ZTogZXN0IDMg4CA2IGhldXJlcyBhcHLocyBsYSBkYXRlIGRlIGwnZW4tdOp0ZSBSZWNlaXZlZDoKbGFuZyBmciBkZXNjcmliZSBEQVRFX0lOX0ZVVFVSRV8wNl8xMglEYXRlOiBlc3QgNiDgIDEyIGhldXJlcyBhcHLocyBsYSBkYXRlIGRlIGwnZW4tdOp0ZSBSZWNlaXZlZDoKbGFuZyBmciBkZXNjcmliZSBEQVRFX0lOX0ZVVFVSRV8xMl8yNAlEYXRlOiBlc3QgMTIg4CAyNCBoZXVyZXMgYXBy6HMgbGEgZGF0ZSBkZSBsJ2VuLXTqdGUgUmVjZWl2ZWQ6CmxhbmcgZnIgZGVzY3JpYmUgREFURV9JTl9GVVRVUkVfMjRfNDgJRGF0ZTogZXN0IDI0IOAgNDggaGV1cmVzIGFwcuhzIGxhIGRhdGUgZGUgbCdlbi106nRlIFJlY2VpdmVkOgpsYW5nIGZyIGRlc2NyaWJlIERBVEVfSU5fRlVUVVJFXzQ4Xzk2CURhdGU6IGVzdCA0OCDgIDk2IGhldXJlcyBhcHLocyBsYSBkYXRlIGRlIGwnZW4tdOp0ZSBSZWNlaXZlZDoKbGFuZyBmciBkZXNjcmliZSBEQVRFX0lOX0ZVVFVSRV85Nl9YWAlEYXRlOiBlc3QgcGx1cyBkZSA5NiBoZXVyZXMgYXBy6HMgbGEgZGF0ZSBkZSBsJ2VuLXTqdGUgUmVjZWl2ZWQ6CmxhbmcgZnIgZGVzY3JpYmUgTUlTU0lOR19EQVRFCQlFbi106nRlICJEYXRlOiIgYWJzZW50CmxhbmcgZnIgZGVzY3JpYmUgREFURV9TUEFNV0FSRV9ZMksJTCdlbi106nRlIGRhdGUgdXRpbGlzZSB1biBmb3JtYXQgWTJLIGluaGFiaXR1ZWwKbGFuZyBmciBkZXNjcmliZSBERUFSX0ZSSUVORAkJQ29udGllbnQgbGEgZm9ybXVsZSAiRGVhciBmcmllbmQiCmxhbmcgZnIgZGVzY3JpYmUgREVBUl9TT01FVEhJTkcJCUxlIG1lc3NhZ2UgY29udGllbnQgIkRlYXIuLi4gKHF1ZWxxdSd1bikiCmxhbmcgZnIgZGVzY3JpYmUgRElFVF8xCQkJU3BhbSBwcm9wb3NhbnQgdW5lIHBlcnRlIGRlIHBvaWRzCmxhbmcgZnIgZGVzY3JpYmUgRU1BSUxfUk9UMTMJCUNvcnBzIGNvbnRpZW50IHVuZSBhZHJlc3NlIG1haWwgZW5jb2TpZSBlbiBST1QxMwpsYW5nIGZyIGRlc2NyaWJlIEVYQ1VTRV9SRU1PVkUJCUV4cGxpcXVlIGNvbW1lbnQg6nRyZSByZXRpcukgZGVzIGxpc3RlcyBkZSBtYWlsaW5nIChzb2ktZGlzYW50Li4uKQpsYW5nIGZyIGRlc2NyaWJlIEVYQ1VTRV80CQlQcul0ZW5kIHF1ZSB2b3VzIHBvdXZleiB2b3VzIGZhaXJlIHN1cHByaW1lciBkZSBsZXVyIGxpc3RlCmxhbmcgZnIgZGVzY3JpYmUgRVhDVVNFXzI0CQlQcul0ZW5kIHF1ZSB2b3VzIGF2ZXogZGVtYW5k6SDgIHJlY2V2b2lyIGNldHRlIHB1YmxpY2l06QpsYW5nIGZyIGRlc2NyaWJlIEVYVFJBX01QQVJUX1RZUEUJRW4tdOp0ZSAiQ29udGVudC10eXBlOi4uLnR5cGU9IiBzdXJudW3pcmFpcmUKbGFuZyBmciBkZXNjcmliZSBGQUtFX0hFTE9fRU1BSUxfQ09NCUxlIEhFTE8gbmUgY29ycmVzcG9uZCBwYXMgYXUgckROUzogZW1haWwuY29tCmxhbmcgZnIgZGVzY3JpYmUgRkFLRV9IRUxPX0VYQ0lURQlMZSBIRUxPIG5lIGNvcnJlc3BvbmQgcGFzIGF1IHJETlM6IGV4Y2l0ZS5jb20KbGFuZyBmciBkZXNjcmliZSBGQUtFX0hFTE9fTFlDT1MJTGUgSEVMTyBuZSBjb3JyZXNwb25kIHBhcyBhdSByRE5TOiBseWNvcy5jb20KbGFuZyBmciBkZXNjcmliZSBGQUtFX0hFTE9fTUFJTF9DT00JTGUgSEVMTyBuZSBjb3JyZXNwb25kIHBhcyBhdSByRE5TOiBtYWlsLmNvbQpsYW5nIGZyIGRlc2NyaWJlIEZBS0VfSEVMT19NU04JCUxlIEhFTE8gbmUgY29ycmVzcG9uZCBwYXMgYXUgckROUzogbXNuLmNvbQpsYW5nIGZyIGRlc2NyaWJlIEZBS0VfSEVMT19ZQUhPT19DQQlMZSBIRUxPIG5lIGNvcnJlc3BvbmQgcGFzIGF1IHJETlM6IHlhaG9vLmNhCmxhbmcgZnIgZGVzY3JpYmUgRkFLRV9IRUxPX1lBSE9PX0NBCUxlIEhFTE8gbmUgY29ycmVzcG9uZCBwYXMgYXUgckROUzogeWFob28uY2EKbGFuZyBmciBkZXNjcmliZSBGQUtFX0hFTE9fWUFIT09fQ0EJTGUgSEVMTyBuZSBjb3JyZXNwb25kIHBhcyBhdSByRE5TOiB5YWhvby5jYQpsYW5nIGZyIGRlc2NyaWJlIEZJTl9GUkVFIAkJUGFybGUgZGUgImxpYmVydOkgZmluYW5jaehyZSIgKEZpbmFuY2lhbCBGcmVlZG9tKQpsYW5nIGZyIGRlc2NyaWJlIEZPUkdFRF9IT1RNQUlMX1JDVkQyCUZyb20gaG90bWFpbC5jb20sIG1haXMgc2FucyAiUmVjZWl2ZWQ6IgpsYW5nIGZyIGRlc2NyaWJlIEZPUkdFRF9BT0xfVEFHUwlBT0wgbidlbnZvaWUgcGFzIGRlIEhUTUwgZGFucyBjZSBmb3JtYXQKbGFuZyBmciBkZXNjcmliZSBGT1JHRURfSU1TX0hUTUwJSU1TIG4nZW52b2llIHBhcyBkZSBtZXNzYWdlcyBlbiBIVE1MIHNldWwKbGFuZyBmciBkZXNjcmliZSBGT1JHRURfSU1TX1RBR1MJSU1TIG4nZW52b2llIHBhcyBkZSBIVE1MIGRhbnMgY2UgZm9ybWF0CmxhbmcgZnIgZGVzY3JpYmUgRk9SR0VEX01VQV9BT0xfRlJPTQlNYWlsIGZhbHNpZmnpIHBy6XRlbmRhbnQgdmVuaXIgZCdBT0wgKHNlbG9uIEZyb20pCmxhbmcgZnIgZGVzY3JpYmUgRk9SR0VEX01VQV9FVURPUkEJTWVzc2FnZSBmYWxzaWZp6SBwcul0ZW5kYW50IHByb3ZlbmlyIGR1IGxvZ2ljaWVsIEV1ZG9yYQpsYW5nIGZyIGRlc2NyaWJlIEZPUkdFRF9NVUFfSU1TCQlNZXNzYWdlIGZhbHNpZmnpIHBy6XRlbmRhbnQgcHJvdmVuaXIgZHUgbG9naWNpZWwgSU1TCmxhbmcgZnIgZGVzY3JpYmUgRk9SR0VEX01VQV9NT1pJTExBCU1lc3NhZ2UgZmFsc2lmaekgcHLpdGVuZGFudCBwcm92ZW5pciBkdSBsb2dpY2llbCBNb3ppbGxhCmxhbmcgZnIgZGVzY3JpYmUgRk9SR0VEX01VQV9PSU1PCU1lc3NhZ2UgZmFsc2lmaekgcHLpdGVuZGFudCBwcm92ZW5pciBkdSBsb2dpY2llbCBNUyBPdXRsb29rIElNTwpsYW5nIGZyIGRlc2NyaWJlIEZPUkdFRF9NVUFfT1VUTE9PSwlNZXNzYWdlIGZhbHNpZmnpIHBy6XRlbmRhbnQgcHJvdmVuaXIgZHUgbG9naWNpZWwgTVMgT3V0bG9vawpsYW5nIGZyIGRlc2NyaWJlIEZPUkdFRF9NVUFfVEhFQkFUX0JPVU4gTWFpbCBwcul0ZW5kYW50IHByb3ZlbmlyIGRlIFRoZSBCYXQhIChib3VuZGFyeSkKbGFuZyBmciBkZXNjcmliZSBGT1JHRURfTVVBX1RIRUJBVF9DUwlNYWlsIHByZXRlbmRhbnQgcHJvdmVuaXIgZGUgVGhlIEJhdCEgKGNoYXJzZXQpCmxhbmcgZnIgZGVzY3JpYmUgRk9SR0VEX09VVExPT0tfSFRNTAlPdXRsb29rIG4nZW52b2llIHBhcyBkZSBtZXNzYWdlcyBlbiBIVE1MIHNldWwKbGFuZyBmciBkZXNjcmliZSBGT1JHRURfT1VUTE9PS19UQUdTCU91dGxvb2sgbidlbnZvaWUgcGFzIGRlIEhUTUwgc291cyBjZSBmb3JtYXQKbGFuZyBmciBkZXNjcmliZSBGT1JHRURfUVVBTENPTU1fVEFHUwlRVUFMQ09NTSBtYWlsZXJzIG4nZW52b2llbnQgcGFzIGRlIEhUTUwgc291cyBjZSBmb3JtYXQKbGFuZyBmciBkZXNjcmliZSBGT1JHRURfVEVMRVNQX1JDVkQJQ29udGllbnQgdW4gbm9tIGRlIG1hY2hpbmUgZmFsc2lmaekgY2hleiB1biBGLkEuSS4gYnLpc2lsaWVuCmxhbmcgZnIgZGVzY3JpYmUgRk9SR0VEX1RIRUJBVF9IVE1MCVRoZSBCYXQhIG4nZW52b2llIHBhcyBkZSBtZXNzYWdlcyBlbiBIVE1MIHNldWwKbGFuZyBmciBkZXNjcmliZSBGT1JHRURfWUFIT09fUkNWRAlDb250aWVudCB1biBlbi106nRlIGZhbHNpZmnpIFJlY2VpdmVkOiB5YWhvby5jb20KbGFuZyBmciBkZXNjcmliZSBGT1JXQVJEX0xPT0tJTkcJQ29udGllbnQgdW4gIlN0b2NrIERpc2NsYWltZXIgU3RhdGVtZW50IiAoYm91cnNlKQpsYW5nIGZyIGRlc2NyaWJlIEZSRUVfUE9STiAgICAgICAgICAgICAgUG9ybm9ncmFwaGllIHByb2JhYmxlICJGcmVlIHBvcm4iCmxhbmcgZnIgZGVzY3JpYmUgRlJFRV9RVU9URV9JTlNUQU5UCUNvbnRpZW50IGZvcm11bGUgdHlwZSAiRnJlZSBleHByZXNzIiBvdSAibm8gb2JsaWdhdGlvbiIKbGFuZyBmciBkZXNjcmliZSBGUk9NX0lMTEVHQUxfQ0hBUlMJRnJvbTogY29udGllbnQgdHJvcCBkZSBjYXJhY3TocmVzIGJydXRzIGludmFsaWRlcwpsYW5nIGZyIGRlc2NyaWJlIEZST01fTk9fVVNFUgkJTCdlbi106nRlIEZyb206IG4nYSBwYXMgZGUgbm9tIGQndXRpbGlzYXRldXIgYXZhbnQgbGUgc2lnbmUgQApsYW5nIGZyIGRlc2NyaWJlIEZST01fT0ZGRVJTCQlMJ2FkcmVzc2UgZCdleHDpZGl0ZXVyIGVzdCAiYXQgc29tZXRoaW5nLW9mZmVycyIKbGFuZyBmciBkZXNjcmliZSBGUk9NX1NUQVJUU19XSVRIX05VTVMJTCdlbi106nRlIEZyb206IGNvbW1lbmNlIHBhciBkZXMgY2hpZmZyZXMKbGFuZyBmciBkZXNjcmliZSBHQVBQWV9TVUJKRUNUCQlMJ2VuLXTqdGUgU3ViamVjdDogY29udGllbnQgZHUgInQgZSB4IHQgZSAgZSBzIHAgYSBjIOkiCmxhbmcgZnIgZGVzY3JpYmUgR1RVQkUJCQlUZXN0IGfpbulyaXF1ZSBkZSBjb3VycmllciBub24gc29sbGljdOkgZW4gbWFzc2UKbGFuZyBmciBkZXNjcmliZSBHVUFSQU5URUVEXzEwMF9QRVJDRU5UCUNvbnRpZW50ICJPbmUgaHVuZHJlZCBwZXJjZW50IGd1YXJhbnRlZWQiICgxMDAlIGdhcmFudGkpCmxhbmcgZnIgZGVzY3JpYmUgSEVBRF9JTExFR0FMX0NIQVJTCUVuLXTqdGUgY29udGllbnQgdHJvcCBkZSBjYXJhY3TocmVzIGJydXRzIGludmFsaWRlcwpsYW5nIGZyIGRlc2NyaWJlIEhFQURFUl9DT1VOVF9DVFlQRQlQbHVzaWV1cnMgZW4tdOp0ZXMgQ29udGVudC1UeXBlCmxhbmcgZnIgZGVzY3JpYmUgSEdfSE9STU9ORQkJUGFybGUgZCdob3Jtb25lIGRlIGNyb2lzc2FuY2UgaHVtYWluZQpsYW5nIGZyIGRlc2NyaWJlIEhJREVfV0lOX1NUQVRVUwlKYXZhc2NyaXB0IGRlc3Rpbukg4CBjYW1vdWZsZXIgdW5lIFVSTCBkYW5zIGxlIG5hdmlnYXRldXIKbGFuZyBmciBkZXNjcmliZSBIVE1MX0NIQVJTRVRfRkFSQVdBWQlKZXUgZGUgY2FyYWN06HJlcyBleG90aXF1ZSB1dGlsaXPpIHBvdXIgbGUgSFRNTApsYW5nIGZyIGRlc2NyaWJlIEhUTUxfQ09NTUVOVF9TQVZFRF9VUkwJTGUgbWVzc2FnZSBIVE1MIGVzdCB1bmUgcGFnZSB3ZWIgc2F1dmVnYXJk6WUKbGFuZyBmciBkZXNjcmliZSBIVE1MX0VNQkVEUwkJSFRNTDogSW5jbHVzaW9uIGQnb2JqZXRzCmxhbmcgZnIgZGVzY3JpYmUgSFRNTF9GT05UX0ZBQ0VfQkFECUxlIG5vbSBkZSBsYSBwb2xpY2UgSFRNTCBuJ2VzdCBwYXMgdW4gbW90CmxhbmcgZnIgZGVzY3JpYmUgSFRNTF9GT05UX0xPV19DT05UUkFTVAlQb2xpY2UgSFRNTCBkZSBsYSBt6m1lIGNvdWxldXIgcXVlIGxlIGZvbmQKbGFuZyBmciBkZXNjcmliZSBIVE1MX0ZPUk1BQ1RJT05fTUFJTFRPCUhUTUwgaW5jbHV0IHVuIGZvcm11bGFpcmUgZCdlbnZvaSBkZSBtYWlsCmxhbmcgZnIgZGVzY3JpYmUgSFRNTF9JTUFHRV9PTkxZXzA0CUhUTUwgY29udGllbnQgaW1hZ2VzIGF2ZWMgMjAwIOAgNDAwIG9jdGV0cyBkZSB0ZXh0ZQpsYW5nIGZyIGRlc2NyaWJlIEhUTUxfSU1BR0VfT05MWV8wOAlIVE1MIGNvbnRpZW50IGltYWdlcyBhdmVjIDYwMCDgIDgwMCBvY3RldHMgZGUgdGV4dGUKbGFuZyBmciBkZXNjcmliZSBIVE1MX0lNQUdFX09OTFlfMTIJSFRNTCBjb250aWVudCBpbWFnZXMgYXZlYyAxMDAwIOAgMTIwMCBvY3RldHMgZGUgdGV4dGUKbGFuZyBmciBkZXNjcmliZSBIVE1MX0lNQUdFX1JBVElPXzAyCUhUTUwgRmFpYmxlIHJhdGlvIGRlIHRleHRlIHBhciByYXBwb3J0IGF1eCBpbWFnZXMKbGFuZyBmciBkZXNjcmliZSBIVE1MX0lNQUdFX1JBVElPXzA0ICAgSFRNTCBGYWlibGUgcmF0aW8gZGUgdGV4dGUgcGFyIHJhcHBvcnQgYXV4IGltYWdlcwpsYW5nIGZyIGRlc2NyaWJlIEhUTUxfSU1BR0VfUkFUSU9fMDYgICBIVE1MIEZhaWJsZSByYXRpbyBkZSB0ZXh0ZSBwYXIgcmFwcG9ydCBhdXggaW1hZ2VzCmxhbmcgZnIgZGVzY3JpYmUgSFRNTF9JTUFHRV9SQVRJT18wOCAgIEhUTUwgRmFpYmxlIHJhdGlvIGRlIHRleHRlIHBhciByYXBwb3J0IGF1eCBpbWFnZXMKbGFuZyBmciBkZXNjcmliZSBIVE1MX01FU1NBR0UJCUhUTUwgaW5jbHVzIGRhbnMgbGUgbWVzc2FnZQpsYW5nIGZyIGRlc2NyaWJlIEhUTUxfTUlNRV9OT19IVE1MX1RBRwlNZXNzYWdlIGVuIEhUTUwgc2V1bCwgbWFpcyBzYW5zIHRhZ3MgSFRNTApsYW5nIGZyIGRlc2NyaWJlIEhUTUxfVEFHX0JBTEFOQ0VfQk9EWQlMZSB0YWcgZGUgZmVybWV0dXJlIGRlICJib2R5IiBIVE1MIGVzdCBtYW5xdWFudApsYW5nIGZyIGRlc2NyaWJlIEhUTUxfVEFHX0JBTEFOQ0VfSEVBRAlMZSB0YWcgZGUgZmVybWV0dXJlIGRlICJoZWFkIiBIVE1MIGVzdCBtYW5xdWFudApsYW5nIGZyIGRlc2NyaWJlIEhUVFBfRVNDQVBFRF9IT1NUCVVSSTogQ29udGllbnQgZGVzICUtZXNjYXBlcyBkYW5zIGxlIG5vbSBkZSBtYWNoaW5lCmxhbmcgZnIgZGVzY3JpYmUgSFRUUF9FWENFU1NJVkVfRVNDQVBFUwlVUkk6IENvbnRpZW50IGRlcyAlLWVzY2FwZXMgbm9tYnJldXggZXQgc3VwZXJmbHVzCmxhbmcgZnIgZGVzY3JpYmUgSU1QT1RFTkNFCQlQcul0ZW5kIHBlcm1ldHRyZSBkZSBjb21iYXR0cmUgbCdpbXB1aXNzYW5jZQpsYW5nIGZyIGRlc2NyaWJlIE1PUkVfU0VYIAkJUGFybGUgZCdhdWdtZW50ZXIgbGUgZOlzaXIgc2V4dWVsCmxhbmcgZnIgZGVzY3JpYmUgSU5WQUxJRF9EQVRFCQlMJ2VuLXTqdGUgRGF0ZTogZXN0IGluY29ycmVjdCAoaWwgY29udGllbnQgQU0vUE0pCmxhbmcgZnIgZGVzY3JpYmUgSU5WQUxJRF9EQVRFX1RaX0FCU1VSRAlMJ2VuLXTqdGUgRGF0ZTogZXN0IGluY29ycmVjdCAobGEgem9uZSBkZSB0ZW1wcyBuJ2V4aXN0ZSBwYXMpCmxhbmcgZnIgZGVzY3JpYmUgSU5WQUxJRF9NU0dJRAkJTGUgTWVzc2FnZS1JRCBlc3QgaW52YWxpZGUsIHNlbG9uIGxhIFJGQy0yODIyCmxhbmcgZnIgZGVzY3JpYmUgSVBfTElOS19QTFVTCQlBZHJlc3NlIElQIGVuIGTpY2ltYWwgc3VpdmllIGQndW4gQ0dJCmxhbmcgZnIgZGVzY3JpYmUgSkFQQU5FU0VfVUNFX1NVQkpFQ1QJU3VqZXQgY29udGllbnQgdW5lIG1hcnF1ZSBqYXBvbmFpc2UgZGUgc3BhbQpsYW5nIGZyIGRlc2NyaWJlIEpPSU5fTUlMTElPTlMJCUNvbnRpZW50ICJKb2luIE1pbGxpb25zIG9mIEFtZXJpY2FucyIKbGFuZyBmciBkZXNjcmliZSBLT1JFQU5fVUNFX1NVQkpFQ1QJTGUgc3VqZXQgY29udGllbnQgZGVzIGNhcmFjdOhyZXMgY29y6WVucwpsYW5nIGZyIGRlc2NyaWJlIExJVkVfUE9STiAgICAgICAgICAgICAgUG9ybm9ncmFwaGllIHByb2JhYmxlOiBwb3JubyBlbiBkaXJlY3QtbGl2ZQpsYW5nIGZyIGRlc2NyaWJlIFNVQkpFQ1RfRElFVCAgICAgICAgICAgIExlIHN1amV0IHBhcmxlIGRlIHBlcnRlIGRlIHBvaWRzCmxhbmcgZnIgZGVzY3JpYmUgTE9XX1BSSUNFICAgICAgICAgICAgICBDb250aWVudCAiTG93ZXN0IFByaWNlIiAobGUgcHJpeCBsZSBwbHVzIGJhcykKbGFuZyBmciBkZXNjcmliZSBNQVJLRVRJTkdfUEFSVE5FUlMJUHLpdGVuZCBxdWUgdm91cyB2b3VzIOp0ZXMgZW5yZWdpc3Ry6SBhdXBy6HMgZCd1biAicGFydGVuYWlyZSIgcXVlbGNvbnF1ZQpsYW5nIGZyIGRlc2NyaWJlIE1JTExJT05fVVNEIAkJUGhyYXNlIGNs6SBkJ2VzY3JvcXVlcmllIG5pZ+lyaWVubmUgKG1pbGxpb25zIG9mIGRvbGxhcnMpCmxhbmcgZnIgZGVzY3JpYmUgX19NSU1FX0JBU0U2NAkJSW5jbHV0IHVuIGF0dGFjaGVtZW50IGVuIEJBU0U2NApsYW5nIGZyIGRlc2NyaWJlIE1JTUVfQkFTRTY0X0JMQU5LUwlMaWduZSBibGFuY2hlcyBzdXJudW3pcmFpcmVzIGRhbnMgbCdlbmNvZGFnZSBCQVNFNjQKbGFuZyBmciBkZXNjcmliZSBNSU1FX0JBU0U2NF9URVhUCVRleHRlIGR1IG1lc3NhZ2UgY2Ftb3VmbOkgcGFyIGVuY29kYWdlIGVuIEJBU0U2NApsYW5nIGZyIGRlc2NyaWJlIE1JTUVfQk9VTkRfTUFOWV9IRVgJTW90aWYgY2FyYWN06XJpc3RpcXVlIGQnb3V0aWwgZGUgc3BhbSBkYW5zIGxlcyBk6WxpbWl0ZXVycyBNSU1FCmxhbmcgZnIgZGVzY3JpYmUgTUlNRV9DSEFSU0VUX0ZBUkFXQVkJSmV1IGRlIGNhcmFjdOhyZXMgTUlNRSBleG90aXF1ZQpsYW5nIGZyIGRlc2NyaWJlIE1JTUVfSEVBREVSX0NUWVBFX09OTFkgRW4tdOp0ZSAiQ29udGVudC1UeXBlIiBwculzZW50IHNhbnMgbGVzIGVuLXTqdGVzIE1JTUUgcmVxdWlzCmxhbmcgZnIgZGVzY3JpYmUgTUlNRV9IVE1MX01PU1RMWQlNZXNzYWdlIG11bHRpcGFydCBwcmluY2lwYWxlbWVudCBlbiBNSU1FIHRleHQvaHRtbApsYW5nIGZyIGRlc2NyaWJlIE1JTUVfSFRNTF9PTkxZCQlMZSBtZXNzYWdlIHBvc3PoZGUgdW5pcXVlbWVudCBkZXMgcGFydGllcyBNSU1FIHRleHQvaHRtbApsYW5nIGZyIGRlc2NyaWJlIE1JTUVfSFRNTF9PTkxZX01VTFRJCU1lc3NhZ2UgbXVsdGlwYXJ0IHVuaXF1ZW1lbnQgZW4gTUlNRSB0ZXh0L2h0bWwKbGFuZyBmciBkZXNjcmliZSBfX01JTUVfUVAJCUNvbnRpZW50IGVuIGF0dGFjaGVtZW50IGVuIHF1b3RlZC1wcmludGFibGUKbGFuZyBmciBkZXNjcmliZSBNSU1FX1FQX0xPTkdfTElORQlMaWduZSBxdW90ZWQtcHJpbnRhYmxlIGRlIHBsdXMgZGUgNzYgY2FyYWN06HJlcwpsYW5nIGZyIGRlc2NyaWJlIE1JU1NJTkdfSEVBREVSUwlMZSBtZXNzYWdlIG5lIGNvbXBvcnRlIHBhcyBsJ2VuLXTqdGUgVG86CmxhbmcgZnIgZGVzY3JpYmUgTUlTU0lOR19NSU1FT0xFCVBvc3PoZGUgdW4gZW4tdOp0ZSBYLU1TTWFpbC1Qcmlvcml0eSwgbWFpcyBwYXMgZGUgWC1NaW1lT0xFCmxhbmcgZnIgZGVzY3JpYmUgTU9ORVlfQkFDSwkJVm91cyBnYXJhbnRpdCB1biAicmVtYm91cnNlbWVudCBzaSBpbnNhdGlzZmFpdCIgKGVuIGFuZ2xhaXMpCmxhbmcgZnIgZGVzY3JpYmUgTVNHSURfRlJPTV9NVEFfSEVBREVSCU1lc3NhZ2UtSUQgYWpvdXTpIHBhciB1biByZWxhaXMKbGFuZyBmciBkZXNjcmliZSBNU0dJRF9PVVRMT09LX0lOVkFMSUQJTWVzc2FnZS1JRCBmYWxzaWZp6SAoZm9ydG1hdCBPdXRsb29rIEV4cHJlc3MpCmxhbmcgZnIgZGVzY3JpYmUgTVVMVElfRk9SR0VECQlsZXMgZW4tdOp0ZXMgIlJlY2VpdmVkIiBtb250cmVudCBkZSBub21icmV1c2VzIGZhbHNpZmljYXRpb25zCmxhbmcgZnIgZGVzY3JpYmUgTkFfRE9MTEFSUwkJUGFybGUgZCd1biBtaWxsaW9uIGRlIGRvbGxhcnMgIm5vcmQtYW3pcmljYWlucyIKbGFuZyBmciBkZXNjcmliZSBOT05FWElTVEVOVF9DSEFSU0VUCU1lc3NhZ2UgculkaWfpIGRhbnMgdW4gamV1IGRlIGNhcmFjdOhyZXMgaW5leGlzdGFudApsYW5nIGZyIGRlc2NyaWJlIE5PVF9BRFZJU09SCQlDb250aWVudCAiTm90IHJlZ2lzdGVyZWQgaW52ZXN0bWVudCBhZHZpc29yIgpsYW5nIGZyIGRlc2NyaWJlIE5PX0ROU19GT1JfRlJPTQlBZHJlc3NlIEZyb206IGluY29ubnVlIGVuIEROUyAocGFzIGQnZW5yZWdpc3RyZW1lbnQgTVgpCmxhbmcgZnIgZGVzY3JpYmUgTk9fTUVESUNBTAkJQ29udGllbnQgIk5vIE1lZGljYWwgRXhhbXMiIChzYW5zIGV4YW1lbiBt6WRpY2FsKQpsYW5nIGZyIGRlc2NyaWJlIE5PX1JETlNfRE9UQ09NX0hFTE8JSEVMTyBkZSBGLkEuSS4gaW1wb3J0YW50LCBtYWlzIHBhcyBkZSByRE5TCmxhbmcgZnIgZGVzY3JpYmUgTlVNRVJJQ19IVFRQX0FERFIJVXRpbGlzZSB1bmUgYWRyZXNzZSBJUCwgc2FucyBwb2ludHMsIGRhbnMgdW5lIFVSTApsYW5nIGZyIGRlc2NyaWJlIE9CRlVTQ0FUSU5HX0NPTU1FTlQJQ29tbWVudGFpcmVzIEhUTUwgaW51dGlsZXMgZGVzdGlu6XMg4CBjYW1vdWZsZXIgbGUgdGV4dGUKbGFuZyBmciBkZXNjcmliZSBPQlNDVVJFRF9FTUFJTCAgICAgICAgIExlIG1lc3NhZ2Ugc2VtYmxlIGNvbnRlbmlyIHVuZSBhZHJlc3NlIG1haWwgY2Ftb3VmbOllIHBhciByb3QxMwpsYW5nIGZyIGRlc2NyaWJlIE9OTElORV9QSEFSTUFDWQlQcm9kdWl0cyBwaGFybWFjZXV0aXF1ZXMgZW4gbGlnbmUKbGFuZyBmciBkZXNjcmliZSBCT0RZX0VOSEFOQ0VNRU5UCQlBcm5hcXVlIHBy6XRlbmRhbnQgYXVnbWVudGVyIGxhIHRhaWxlIGRlIHZvdHJlIHDpbmlzCmxhbmcgZnIgZGVzY3JpYmUgQk9EWV9FTkhBTkNFTUVOVDIJCUFybmFxdWUgcHLpdGVuZGFudCBhdWdtZW50ZXIgbGEgdGFpbGUgZGUgdm90cmUgcOluaXMKbGFuZyBmciBkZXNjcmliZSBQTElOR19RVUVSWQkJTGUgc3VqZXQgYSB1biBwb2ludCBkJ2ludGVycm9nYXRpb24gRVQgdW4gcG9pbnQgZCdleGNsYW1hdGlvbgpsYW5nIGZyIGRlc2NyaWJlIFBSRVNUX05PTl9BQ0NSRURJVEVECUZhaXQgculm6XJlbmNlIGEgdW5lICJwcmVzdGlnaWV1c2UgdW5pdmVyc2l06SIgbm9uIHJlY29ubnVlCmxhbmcgZnIgZGVzY3JpYmUgUkFUV0FSRV9FR1JPVVBTCVRyYWNlIGRlIGxvZ2ljaWVsIGRlIG1haWxpbmcgZW4gbWFzc2UgKGVHcm91cHMpIGRhbnMgbGVzIGVuLXTqdGVzCmxhbmcgZnIgZGVzY3JpYmUgUkFUV0FSRV9IQVNIX0RBU0gJQ29udGllbnQgdW4gImhhc2hidXN0ZXIiIGF1IGZvcm1hdCBTZW5kLVNhZmUKbGFuZyBmciBkZXNjcmliZSBSQVRXQVJFX09FX01BTEZPUk1FRAlFbi106nRlIFgtTWFpbGVyIGluZGlxdWUgTm8gZGUgdmVyc2lvbiBPdXRsb29rIEV4cHJlc3MgbWFsZm9ybekKbGFuZyBmciBkZXNjcmliZSBSQ1ZEX0FNX1BNCQlFbi106nRlIFJlY2VpdmVkOiBmYWxzaWZp6SAoQU0vUE0pCmxhbmcgZnIgZGVzY3JpYmUgUkNWRF9GQUtFX0hFTE9fRE9UQ09NICBFbi106nRlIFJlY2VpdmVkIGNvbnRpZW50IG5vbSBkJ2j0dGUgZmFsc2lmaekgZGFucyBsZSBIRUxPCmxhbmcgZnIgZGVzY3JpYmUgUkNWRF9JTl9CTF9TUEFNQ09QX05FVAlSZWxhaXMgbGlzdOkgZGFucyBodHRwOi8vc3BhbWNvcC5uZXQvYmwuc2h0bWwKbGFuZyBmciBkZXNjcmliZSBSQ1ZEX0lOX0JTUF9PVEhFUglSZWxhaXMgcGFydGljaXBhbnQgYXUgQm9uZGVkIFNlbmRlciBQcm9ncmFtIChhdXRyZSByZWxhaXMpCmxhbmcgZnIgZGVzY3JpYmUgUkNWRF9JTl9CU1BfVFJVU1RFRAlSZWxhaXMgcGFydGljaXBhbnQgYXUgQm9uZGVkIFNlbmRlciBQcm9ncmFtIChyZWxhaXMgY29ubnUpCmxhbmcgZnIgZGVzY3JpYmUgUkNWRF9JTl9EU0JMCQlSZWxhaXMgbGlzdOkgZGFucyBsaXN0LmRzYmwub3JnLCB2b2lyIGh0dHA6Ly9kc2JsLm9yZwpsYW5nIGZyIGRlc2NyaWJlIFJDVkRfSU5fU09SQlNfRFVMCUVudm956SBkaXJlY3RlbWVudCBkZXB1aXMgdW5lIGFkcmVzc2UgSVAgZHluYW1pcXVlCmxhbmcgZnIgZGVzY3JpYmUgUkNWRF9JTl9NQVBTX0RVTAlSZWxhaXMgbGlzdOkgZGFucyBEVUwsIGh0dHA6Ly93d3cubWFpbC1hYnVzZS5vcmcvZHVsLwpsYW5nIGZyIGRlc2NyaWJlIFJDVkRfSU5fTUFQU19OTUwJUmVsYWlzIGxpc3TpIGRhbnMgTk1MLCBodHRwOi8vd3d3Lm1haWwtYWJ1c2Uub3JnL25tbC8KbGFuZyBmciBkZXNjcmliZSBSQ1ZEX0lOX01BUFNfUkJMCVJlbGFpcyBsaXN06SBkYW5zIFJCTCwgaHR0cDovL3d3dy5tYWlsLWFidXNlLm9yZy9yYmwvCmxhbmcgZnIgZGVzY3JpYmUgUkNWRF9JTl9NQVBTX1JTUwlSZWxhaXMgbGlzdOkgZGFucyBSU1MsIGh0dHA6Ly93d3cubWFpbC1hYnVzZS5vcmcvcnNzLwpsYW5nIGZyIGRlc2NyaWJlIFJDVkRfSU5fTkpBQkxfQ0dJCU5KQUJMOiBFbWlzIHBhciB1biBzY3JpcHQgZm9ybW1haWwgdnVsbulyYWJsZQpsYW5nIGZyIGRlc2NyaWJlIFJDVkRfSU5fTkpBQkxfTVVMVEkJTkpBQkw6IEVudm956SBwYXIgdW4gcmVsYWlzIG91dmVydCBtdWx0aS3pdGFnZXMKbGFuZyBmciBkZXNjcmliZSBSQ1ZEX0lOX05KQUJMX1BST1hZCU5KQUJMOiBFbnZveekgZGVwdWlzIHVuIHByb3h5IG91dmVydApsYW5nIGZyIGRlc2NyaWJlIFJDVkRfSU5fTkpBQkxfUkVMQVkJTkpBQkw6IEVudm956SBwYXIgdW4gcmVsYWlzIG91dmVydCBjb25maXJt6QpsYW5nIGZyIGRlc2NyaWJlIFJDVkRfSU5fTkpBQkxfU1BBTQlOSkFCTDogRW52b3npIGRlcHVpcyB1bmUgc291cmNlIGRlIHNwYW0gY29uZmlybellCmxhbmcgZnIgZGVzY3JpYmUgUkNWRF9JTl9TQkwJCVJlbGFpcyBsaXN06SBkYW5zIGh0dHA6Ly93d3cuc3BhbWhhdXMub3JnL3NibC8KbGFuZyBmciBkZXNjcmliZSBSQ1ZEX0lOX1NPUkJTX0JMT0NLCVNPUkJTOiBSZWxhaXMgcmVmdXNhbnQgZCfqdHJlIHRlc3TpIHBhciBTT1JCUwpsYW5nIGZyIGRlc2NyaWJlIFJDVkRfSU5fU09SQlNfSFRUUAlTT1JCUzogRW52b3npIHBhciB1biBwcm94eSBIVFRQIG91dmVydApsYW5nIGZyIGRlc2NyaWJlIFJDVkRfSU5fU09SQlNfTUlTQwlTT1JCUzogRW52b3npIHBhciB1biBwcm94eSBvdXZlcnQKbGFuZyBmciBkZXNjcmliZSBSQ1ZEX0lOX1NPUkJTX1NNVFAJU09SQlM6IEVudm956SBwYXIgdW4gcmVsYWlzIFNNVFAgb3V2ZXJ0CmxhbmcgZnIgZGVzY3JpYmUgUkNWRF9JTl9TT1JCU19TT0NLUwlTT1JCUzogRW52b3npIHBhciB1biBwcm94eSBTT0NLUyBvdXZlcnQKbGFuZyBmciBkZXNjcmliZSBSQ1ZEX0lOX1NPUkJTX1dFQglTT1JCUzogRW52b3npIGRlcHVpcyB1biBzZXJ2ZXVyIHdlYiB2dWxu6XJhYmxlCmxhbmcgZnIgZGVzY3JpYmUgUkNWRF9JTl9TT1JCU19aT01CSUUJU09SQlM6IEVudm956SBkZXB1aXMgdW4gculzZWF1IElQIHBpcmF06QpsYW5nIGZyIGRlc2NyaWJlIFJDVkRfTlVNRVJJQ19IRUxPCVJlY2VpdmVkOiBjb250aWVudCB1biBIRUxPIG51belyaXF1ZQpsYW5nIGZyIGRlc2NyaWJlIFJFRklOQU5DRV9OT1cgICAgICAgICAgT2ZmcmUgZGUgcmVmaW5hbmNlbWVudCBpbW1vYmlsaWVyCmxhbmcgZnIgZGVzY3JpYmUgUkVGSU5BTkNFX1lPVVJfSE9NRQlPZmZyZSBkZSByZWZpbmFuY2VtZW50IGltbW9iaWxpZXIKbGFuZyBmciBkZXNjcmliZSBST1VORF9USEVfV09STEQJTGVzIGVuLXTqdGVzIFJlY2VpdmVkOiBtb250cmVudCBxdWUgY2UgbWVzc2FnZSBhIGZhaXQgbGUgdG91ciBkdSBtb25kZQpsYW5nIGZyIGRlc2NyaWJlIFJPVU5EX1RIRV9XT1JMRF9MT0NBTAlFbi106nRlcyBSZWNlaXZlZDogZG9ubmVudCBsJ2ltcHJlc3Npb24gcXVlIGxlIG1lc3NhZ2UgYSBmYWl0IGxlIHRvdXIgZHUgbW9uZGUKbGFuZyBmciBkZXNjcmliZSBTT1JURURfUkVDSVBTCQlMYSBsaXN0ZSBkZXMgZGVzdGluYXRhaXJlcyBlc3QgdHJp6WUgcGFyIG9yZHJlIGFscGhhYul0aXF1ZQpsYW5nIGZyIGRlc2NyaWJlIFNUT0NLX0FMRVJUCQlDb250aWVudCBsYSBmb3JtdWxlICJzdG9jayBhbGVydCIKbGFuZyBmciBkZXNjcmliZSBTVFJPTkdfQlVZCQlDb250aWVudCBsYSBmb3JtdWxlICJzdHJvbmcgYnV5IgpsYW5nIGZyIGRlc2NyaWJlIFNVQkpfQUxMX0NBUFMJCUxlIHN1amV0IGVzdCBlbiBtYWp1c2N1bGVzCmxhbmcgZnIgZGVzY3JpYmUgU1VCSl9BU19TRUVOCQlMZSBzdWpldCBjb250aWVudCAiQXMgU2VlbiIgKGfpbulyYWxlbWVudCAidnUg4CBsYSB06WzpIi4uLikKbGFuZyBmciBkZXNjcmliZSBTVUJKX0JVWSAgICAgICAgICAgICAgIExlIHN1amV0IGNvbW1lbmNlIHBhciAiQnV5LCBCdXlpbmciIChhY2hldGV6LCBhY2hhdCkKbGFuZyBmciBkZXNjcmliZSBTVUJKX0RPTExBUlMgICAgICAgICAgIExlIHN1amV0IGNvbW1lbmNlIHBhciB1bmUgc29tbWUgZW4gZG9sbGFycwpsYW5nIGZyIGRlc2NyaWJlIFNVQkpfSUxMRUdBTF9DSEFSUwlTdWJqZWN0OiBjb250aWVudCB0cm9wIGRlIGNhcmFjdOhyZXMgYnJ1dHMgaW52YWxpZGVzCmxhbmcgZnIgZGVzY3JpYmUgU1VCSl9ZT1VSX0RFQlQJCUxlIHN1amV0IGNvbnRpZW50ICJZb3VyIEJpbGxzIiAodm9zIGZhY3R1cmVzKSBvdSBzaW1pbGFpcmUKbGFuZyBmciBkZXNjcmliZSBTVUJKX1lPVVJfRkFNSUxZCUxlIHN1amV0IGNvbnRpZW50ICJZb3VyIEZhbWlseSIgKHZvdHJlIGZhbWlsbGUpCmxhbmcgZnIgZGVzY3JpYmUgU1VTUElDSU9VU19SRUNJUFMJTCdlbi106nRlIFRvOiBjb250aWVudCBwbHVzIGRlIGRpeCBmb2lzIGxlIG3qbWUgbm9tIGRlIGRvbWFpbmUKbGFuZyBmciBkZXNjcmliZSBUT19NQUxGT1JNRUQJCUwnZW4tdOp0ZSBUbzogY29udGllbnQgdW5lIGFkcmVzc2UgbWFsIGZvcm3pZQpsYW5nIGZyIGRlc2NyaWJlIFRSQUNLRVJfSUQJCUNvbnRpZW50IHVuIG51belybyBwZXJtZXR0YW50IGRlIHZvdXMgaWRlbnRpZmllcgpsYW5nIGZyIGRlc2NyaWJlIFVOQ0xBSU1FRF9NT05FWSAgICAgICAgQXJnZW50IG5vbiBy6WNsYW3pOiBDaGFjdW4gc2FpdCBxdWUgYydlc3QgY291cmFudCA7LSkKbGFuZyBmciBkZXNjcmliZSBVUFBFUkNBU0VfNTBfNzUJTWVzc2FnZSBjb21wb3PpIGRlIDUwIOAgNzUlIGRlIG1hanVzY3VsZXMKbGFuZyBmciBkZXNjcmliZSBVUFBFUkNBU0VfNzVfMTAwCU1lc3NhZ2UgY29tcG9z6SBkZSA3NSDgIDEwMCUgZGUgbWFqdXNjdWxlcwpsYW5nIGZyIGRlc2NyaWJlIFVSR19CSVoJCUNvbnRpZW50IGxhIGZvcm11bGUgInVyZ2VudCBidXNpbmVzcyIKbGFuZyBmciBkZXNjcmliZSBVU0VSX0lOX0FMTF9TUEFNX1RPCURlc3RpbmF0YWlyZSBzdXIgbGEgbGlzdGUgImFsbF9zcGFtX3RvIiAoY29uZmlnIFNBIGxvY2FsZSkKbGFuZyBmciBkZXNjcmliZSBVU0VSX0lOX0JMQUNLTElTVAlFeHDpZGl0ZXVyIHN1ciBsYSBsaXN0ZSBub2lyZSAoY29uZmlnIFNBIGxvY2FsZSkKbGFuZyBmciBkZXNjcmliZSBVU0VSX0lOX0JMQUNLTElTVF9UTyAgIERlc3RpbmF0YWlyZSBzdXIgbGEgbGlzdGUgImJsYWNrbGlzdF90byIgKGNvbmZpZyBTQSBsb2NhbGUpCmxhbmcgZnIgZGVzY3JpYmUgVVNFUl9JTl9ERUZfV0hJVEVMSVNUCUV4cOlkaXRldXIgZGFucyBsYSBsaXN0ZSBPSyBwYXIgZOlmYXV0IGRlIFNwYW1Bc3Nhc3NpbgpsYW5nIGZyIGRlc2NyaWJlIFVTRVJfSU5fTU9SRV9TUEFNX1RPCURlc3RpbmF0YWlyZSBzdXIgbGEgbGlzdGUgIm1vcmVfc3BhbV90byIgKGNvbmZpZyBTQSBsb2NhbGUpCmxhbmcgZnIgZGVzY3JpYmUgVVNFUl9JTl9XSElURUxJU1QJRXhw6WRpdGV1ciBzdXIgbGEgbGlzdGUgYmxhbmNoZSAoT0spIChjb25maWcgU0EgbG9jYWxlKQpsYW5nIGZyIGRlc2NyaWJlIFVTRVJfSU5fV0hJVEVMSVNUX1RPCURlc3RpbmF0YWlyZSBzdXIgbGEgbGlzdGUgYmxhbmNoZSAoY29uZmlnIFNBKQpsYW5nIGZyIGRlc2NyaWJlIFVTX0RPTExBUlNfMyAgICAgICAgICAgRXNjcm9xLiBuaWfpcmllbm5lLCB2ZXJzaW9uIG1vZGlmaellLCBwaHJhc2UgY2zpICgkTk4sTk5OLE5OTi5OTikKbGFuZyBmciBkZXNjcmliZSBEUlVHX0VEX09OTElORSAgICAgICAgICBWZW50ZSBkZSBWaWFncmEgcGFyIGNvcnJlc3BvbmRhbmNlCmxhbmcgZnIgZGVzY3JpYmUgV0VJUkRfUE9SVAkJTGllbiBIVFRQIHZlcnMgdW4gbnVt6XJvIGRlIHBvcnQgbm9uIHN0YW5kYXJkCmxhbmcgZnIgZGVzY3JpYmUgV0VJUkRfUVVPVElORwkJVXRpbGlzYXRpb24g6XRyYW5nZSBkZSBzeW1ib2xlcyBkZSBjaXRhdGlvbnMKbGFuZyBmciBkZXNjcmliZSBXSVRIX0xDX1NNVFAJCVVuZSBsaWduZSBSZWNlaXZlZDogY29udGllbnQgdW4gc2lnbmUgZGUgc3BhbSAoInNtdHAiIGVuIG1pbnVzY3VsZXMpCgppZnBsdWdpbiBNYWlsOjpTcGFtQXNzYXNzaW46OlBsdWdpbjo6QW50aVZpcnVzCmxhbmcgZnIgZGVzY3JpYmUgTUlNRV9TVVNQRUNUX05BTUUgICAgCUxlIG5vbSBkdSBmaWNoaWVyIGpvaW50IE1JTUUgc2VtYmxlIHN1c3BlY3QgKHZpcnVzID8pCmVuZGlmCgppZnBsdWdpbiBNYWlsOjpTcGFtQXNzYXNzaW46OlBsdWdpbjo6RENDCmxhbmcgZnIgZGVzY3JpYmUgRENDX0NIRUNLCQlNZXNzYWdlIGxpc3TpIHBhciBEQ0M6IGh0dHA6Ly93d3cucmh5b2xpdGUuY29tL2FudGktc3BhbS9kY2MvCmVuZGlmCgppZnBsdWdpbiBNYWlsOjpTcGFtQXNzYXNzaW46OlBsdWdpbjo6UHl6b3IKbGFuZyBmciBkZXNjcmliZSBQWVpPUl9DSEVDSwkJTWVzc2FnZSBsaXN06SBwYXIgUHl6b3IsIHZvaXIgaHR0cDovL3B5em9yLnNmLm5ldC8KZW5kaWYKCmlmcGx1Z2luIE1haWw6OlNwYW1Bc3Nhc3Npbjo6UGx1Z2luOjpUZXh0Q2F0CmxhbmcgZnIgZGVzY3JpYmUgQk9EWV84QklUUwkJQ29udGllbnQgcGx1c2lldXJzIGNhcmFjdOhyZXMgOC1iaXRzIGNvbnPpY3V0aWZzCmxhbmcgZnIgZGVzY3JpYmUgVU5XQU5URURfTEFOR1VBR0VfQk9EWQlNZXNzYWdlIGRhbnMgdW5lIGxhbmd1ZSBub24gZOlzaXLpZSAoY29uZmlnIGxvY2FsZSkKZW5kaWYKCmlmcGx1Z2luIE1haWw6OlNwYW1Bc3Nhc3Npbjo6UGx1Z2luOjpBY2Nlc3NEQgpsYW5nIGZyIGRlc2NyaWJlIEFDQ0VTU0RCCQlDZSBtZXNzYWdlIGF1cmFpdCDpdOkgYmxvcXXpIHBhciBhY2Nlc3NkYgplbmRpZgoKbGFuZyBmciBkZXNjcmliZSBOT1JNQUxfSFRUUF9UT19JUCAgICAgVVJJOiBDb250aWVudCB1bmUgYWRyZXNzZSBJUCBlbiBub3RhdGlvbiBk6WNpbWFsZQoK