IyBUZXN0cyBvZiBzdWplY3QgZGF0YSBmcm9tIFBoaWwgVG9tJ3MgU1BBTURCCiMgKGFzIGNvbXBpbGVkIGludG8gcnVsZXMgYnkgQWRhbSBLYXR6KQojIExhc3QgdXBkYXRlZCAyMDEwLTA1LTEyIDAwOjAwOjAwCgojIGhlYWRlcgkgS0hPUF9TUEFNREJfU1VCSiBTdWJqZWN0ID1+IG17KD8teGlzbTpeKD86QSg/OmRvYmUgKD86KD86Q3JlYXRpdmUgU3VpdGUgNCBNYXN0ZXIgQ29sbGVjdGlvbi4gT3VyIFByaWNlOiAuMzJ8QWNyb2JhdCA5IFBybyBmb3IgTUFDIC0gT3VyIFByaWNlOiAuOSk5Ljk1LnxQaG90b3Nob3AgQ1M1IEV4dGVuZGVkIC0gIC4xOTkuOTUpfGNhZGVtaWMgYW5kIHN0dWRlbnQgZGlzY291bnQgc29mdHdhcmUgLSBNYWMgc29mdHdhcmUuIE1pY3Jvc29mdHwoPzp2aXJhIFByZW1pdW0gU2VjdXJpdHkgU3VpdGUgOSAtIC58dXRvQ0FEIDIwMTEgLSAuMykxOS45NXxDRFNlZS4gQWRvYmUgTWFjcm9tZWRpYS4gQW50aS1WaXJ1cy4gU2VjdXJpdHl8IGdyZWF0IHRvb2wgZm9yIGdyZWF0IGZvY3VzLiBBZGRlcmFsbC58big/Oi10aSB2aS1ydXMgc29mdHdhcmUufHkgcHJvYmxlbXMpfGZmb3JkYWJsZSBob21lIG93bmVyc2hpcCBmb3IgdmV0cyl8KD86WGFyYSBYdHJlbWUgUFJPIDUgZm9yIFdpbmRvd3MgKD86d2lsbCAoPzphbGxvdyB5b3UgdG8gYXBwbHkgdmFyaW91cyBlZmZlY3RzIG9uIGltYWdlfGhlbHAgeW91IGNyZWF0ZSBwcm9mZXNzaW9uYWwgM0Qgb2JqZWN0KXN8Zm9yIG9ubHkgNzkuOTUgZG9sbGFycy4gb2J0YWluIG9uZSByaWdodCBub3cpfElmIHlvdSB3b3JrIHdpdGggZHJhd2luZ3MgYW5kIHdlYnNpdGVzLiB1c2UgWGFyYSBYdHJlbWUgUFJPIDUgZm9yIFdpbmRvd3MgYXQgd29ya3xMaWNlbnNlZCBYYXJhIFh0cmVtZSBQUk8gNSBmb3IgV2luZG93cyBmb3IgYXMgbG93IGFzIC43OS45NS4gYnV5IGl0IHJpZ2h0IG5vd3w5MCUgU0FMRSBmb3IgTUlDUk9TT0ZUIFdJTkRPV1MgNyBVTFRJTUFURSAuNjQgQklULiApLnxTKD86KD86ZWxmLXRlc3QgeW91ciBibG9vZCBnbHVjb3NlIHdpdGggYSBmcmVlIG1ldGVyIGZyb20gTGliZXJ0eXxpY2sgYW5kIHRpcmVkIG9mIHlvdXIgb2xkIHRpbWUtcGllY2UuIEdldCBhIG5ldyBvbmUgaGVyZSkufHQoPzpheSBIYXJkIGFuZCBMb25nIEFMTCBuaWdodCBTdGFydGluZyBUb2RheS58b3AgeW91ciBkb2cucyBhbm5veWluZyBiYXJraW5nKXxvZnR3YXJlIGxpY2Vuc2UgKD86bG9jYWxsemVkIGxhbmd1YWdlIHZlcnNpb258VmlkZW8gYW5kIEF1ZGlvIEVkaXRvcilzfFBFQ0lBTCBPRkZFUlMgLSBXaW5kb3dzIDcgYW5kIE9mZmljZSAyMDA3IC42NGJpdC4gLSAuMTQ5Ljk1fHBlbmQgZW5kbGVzcyBuaWdodHMgb2YgcGxlYXN1cmV8dXBlciBDb2xsZWN0aW9uKXxDKD86byg/OnJlbCg/Oi4gQ3liZXJsaW5rIERWRC5GaWxlTWFrZXIuIE1hY3JvbWVkaWF8RFJBVyBHcmFwaGljcyBTdWl0ZSBYNCAtIC4xMTkuOTUpfG1wYXJlIGZpcmUgYWxhcm0gc3lzdGVtIHByaWNlcy4gRmluZCB0aGUgYmVzdCBkZWFsIGFuZCBzYXZlIHRvZGF5Lil8aCg/OmVhcCBwb3B1bGFyIGxpY2Vuc2VkIHNvZnR3YXJlfGlsZCBTYWZldHkgSUQgS2l0KXxhbmFkaWFuIFBoYXJtYWN5IGlzIHdvcnRoIGEgdHJ5Lil8UmUoPzo6ICg/OlJlOiAoPzpoKD86aSAoPzptYXRlfGJ1ZCl8ZXkgbWF0ZSl8eW8gKD86bWF0ZXxidWQpKXxQbGVhc2UuIHRlbGwgbWUgc3VjY2VzcyBzdG9yaWVzIGFib3V0IFZ8U2Vjb25kIHRpbWUgaW4geW91IG9yZGVyfHdvcmxkd2lkZSBkZWxpdmVyeSBpbmZvfE9yZGVyIHByb2Nlc3MpfGFsKD86IFVuaXZlcnNpdHkgZGlwbG9tYXMufGlzdGljIFNvbHV0aW9uKSl8WW91KD86IGNhbiAoPzpldmVuIGNyZWF0ZSB3ZWJzaXRlcyBkdWUgdG8gWGFyYSBYdHJlbWUgUFJPIDUgZm9yIFdpbmRvd3MgZmVhdHVyZXMufGJ1eSBQaGVudGVybWluIE9uLUxpbmUgVG9kYXkuIMKgIMKgKXxyICg/OmZyZWUgZ2x1Y29zZSBtZXRlciBpcyB3YWl0aW5nIGZvciB5b3UufHN1cHBsaWVzIG1heSBiZSBjb3ZlcmVkIHdpdGggTWVkaWNhcmUpKXxPKD86ZmZpY2UgKD86SG9tZSBhbmQgU3R1ZGVudCAyMDA3IC0gLiAuNjkuOTV8c3VpdGVzIHNvZnR3YXJlIGZyZWUpLnxyZGVyIG5vdyBiZXN0IHNvZnR3YXJlLiBNaWNyb3NvZnQgT2ZmaWNlIDIwMTAgZm9yIE1BQ3xuZSBvZiBldmVyeSB0ZW4gbWVuIGlzIGNvbXBsZXRlbHkgaW1wb3RlbnR8cHBvcnR1bml0aWVzIGluIG1lZGljYWwgYmlsbGluZyl8Tig/Om8oPzogbW9yZSBoYXJkIHdvcmsuIFhhcmEgWHRyZW1lIFBSTyA1IGZvciBXaW5kb3dzIHdpbGwgZG8gZXZlcnl0aGluZyBmb3IgeW91LnxydG9uIDM2MCBWZXJzaW9uIDMuMCBQcmVtaWVyIEVkaXRpb24gLSAuNDkuOTUpfGUoPzplZCBwYWluIGtpbGxlcnMuLkdldCB0aGVtIEhlcnx3IHJlc3VtKWUufGljZSBDb2xsZWN0aW9uKXxQKD86byg/OnR0eSBwYWQgdGhhdCBwcmV2ZW50cyBzdGFpbnMgYW5kIHJpbnNlcyBjbGVhbiBpbiBzZWNvbmRzfHNzaWJsZSBTb2x1dGlvbil8ZXQgbWVkcyBmb3IgbGVzcyBhdCBQZXRDYXJlUnggLSBvcmRlciB0b2RheXxyaW50IG9ubGluZSBhbnl0aW1lLiBhbnl3aGVyZS58bGVhc2UgUmVhZHxGSVpFUiBJbmMpfFcoPzooPzpoYXQoPzogKD86ZG8geW91IGtub3d8Z2l2ZXMpfC5zICg/Om5ld3x1cCkpfGUgd2lsbCBjYWxsIHlvdSBiYWNrKS58aW5kb3dzIDcgVWx0aW1hdGUgKD86NjQgYml0LiBPdXIgUHJpY2U6IC45OS45NXwzMiBiaXQgLSAtLjE0OS45NS0pKXxUaCg/OmEoPzpuayB5b3UgZm9yIGJ1eWluZyBpVHVuZXMgR2lmdCBDZXJ0aWZpY2F0ZS58dCdzIHRoZSBsYXRlc3QgbmV3cyl8ZSAoPzpCZXN0IFNvZnR3YXJlIGZvciBNYWMgT1MgWCAuT1NYLnxiZXN0IHBob3RvIGVkaXRpbmcgc29mdHdhcmUpKXxHKD86byg/Om9kIGNoZWFwIHNvZnR3YXJlIGNoZWFwIHNvZnR3YXJlIE1hY3wgTW9iaWxlLiBHZXQgU2F2aW5ncy58cmdlb3VzIENvbGxlY3Rpb24pfEkgQmlsbCBCZW5lZml0IEFsZXJ0IGZvciBTb2xkaWVyc3xyZWF0IENvbGxlY3Rpb24pfEQoPzppcyg/OmFwcG9pbnRlZCB3aXRoIHlvdXIgYmFkIHBlcmZvcm1hbmNlIGluIGJlZC58Y291bnQgKD86T0VNIFNvZnR3YXJlLnxXSU5ET1dTIDcpKXxvIHlvdSBuZWVkIHRvIGxvc2VfczBtZV93ZWlnaHQuKXxGKD86cmVlICg/Oig/OlNvZnR3YXJlIGFuZCBTaGFyZXdhcmUgRG93bmxvYWRzfCg/OkZvciBBbGwgU3xzKW9mdHdhcmUpLnxPZmZpY2UgMjAxMCl8YWJ1bG91cyBDb2xsZWN0aW9ufGluZCBvdXQpfE0oPzplZGljYXJlIG1heSBjb3ZlciB0aGUgY29zdCBvZiB5b3VyIGRpYWJldGVzIHN1cHBsaWVzfGFzdGVycyBkZWdyZWUgd2l0aCBubyBlZmZvcnRzLnxpY3Jvc29mdCBPZmZpY2UgMjAxMCl8KD86wP7AuiAuLsDaLs3AxyDA4cDaLi61tSAuxS7hx88u1Hy54y4uLtkgLu0u/cfPLsIgs7K8ui4uLtQgKSAgICAuLrnfLi4u4i4uus7A/CAxMDAlx9gu4bn9Lvgus3xCKD86ZSg/OnRhIElzIEp1c3QgVGhlIEJlZ2lubmluZ3xhdXRpZnVsIENvbGxlY3Rpb24pfHV5IENoZWFwIE1pY3Jvc29mdCBXaW5kb3dzIDcgVWx0aW1hdGUpfLOyxu3AxyC53y7ius7A/CDH2C7hx8+8xb7fwdIgICAgLi653y4uLuIuLsQuLuHBLiA1MCXH0b3DU0FMRXxRdWFyayBYUHJlc3MuIFJveGlvLiBVdGlsaXRlcyBhbmQgUHJvZ3JhbW1pbmd8SG90IENvbGxlY3Rpb24pJCl9CiMgZGVzY3JpYmUgS0hPUF9TUEFNREJfU1VCSiBNYXRjaGVzIG9uZSBvZiB0aGUgU1BBTURCIHRvcCAxMDAgc3BhbSBzdWJqZWN0cwojIHRmbGFncwkgS0hPUF9TUEFNREJfU1VCSiBub3B1Ymxpc2ggIyBhdXRvLWdlbmVyYXRlZCBydWxlCgo=