IyB0aGUgdmVyc2lvbiBpbiB0aGUgdGFyIG5hbWUKJWRlZmluZSByZWFsX3ZlcnNpb24gMy4yLjAKIyB0aGUgZGlzcGxheSB2ZXJzaW9uIG51bWJlcgolZGVmaW5lIHZlcnNpb24gJXtyZWFsX3ZlcnNpb259CgolZGVmaW5lIF91bnBhY2thZ2VkX2ZpbGVzX3Rlcm1pbmF0ZV9idWlsZCAgICAgICAwCiVkZWZpbmUgX21pc3NpbmdfZG9jX2ZpbGVzX3Rlcm1pbmF0ZV9idWlsZCAgICAgIDAKJWRlZmluZSBwZXJsX3NpdGVsaWIgJShldmFsICJgJXtfX3Blcmx9IC1WOmluc3RhbGxzaXRlbGliYCI7IGVjaG8gIiRpbnN0YWxsc2l0ZWxpYiIpCgolZGVmaW5lIHBkaXIgICAgTWFpbAolZGVmaW5lIHBuYW0gICAgU3BhbUFzc2Fzc2luCiVkZWZpbmUgZGVidWdfcGFja2FnZSAle25pbH0KClN1bW1hcnk6ICAgICAgICBhIHNwYW0gZmlsdGVyIGZvciBlbWFpbCB3aGljaCBjYW4gYmUgaW52b2tlZCBmcm9tIG1haWwgZGVsaXZlcnkgYWdlbnRzClN1bW1hcnkocGwpOiAgICBGaWx0ciBhbnR5c3BhbW93eSwgcHJ6ZXpuYWN6b255IGRsYSBwcm9ncmFt83cgZG9zdGFyY3pharFjeWNoIHBvY3p06iAoTURBKQpHcm91cDogICAgICAgICAgQXBwbGljYXRpb25zL01haWwKCiMgUmVsZWFzZSBudW1iZXIgY2FuIGJlIHNwZWNpZmllZCB3aXRoIHJwbWJ1aWxkIC0tZGVmaW5lICdyZWxlYXNlIFNPTUVUSElORycgLi4uCiMgSWYgbm8gc3VjaCAtLWRlZmluZSBpcyB1c2VkLCB0aGUgcmVsZWFzZSBudW1iZXIgaXMgMS4KIwojIFNvdXJjZSBhcmNoaXZlJ3MgZXh0ZW5zaW9uIGNhbiBiZSBzcGVjaWZpZWQgd2l0aCAtLWRlZmluZSAnc3JjZXh0IC5mb28nCiMgd2hlcmUgLmZvbyBpcyB0aGUgc291cmNlIGFyY2hpdmUncyBhY3R1YWwgZXh0ZW5zaW9uLgojIFRvIGNvbXBpbGUgYW4gUlBNIGZyb20gYSAuYnoyIHNvdXJjZSBhcmNoaXZlLCBnaXZlIHRoZSBjb21tYW5kCiMgICBycG1idWlsZCAtdGIgLS1kZWZpbmUgJ3NyY2V4dCAuYnoyJyBAUEFDS0FHRUAtQFZFUlNJT05ALnRhci5iejIKIwolaWYgJXs/cmVsZWFzZTowfSV7IT9yZWxlYXNlOjF9CiVkZWZpbmUgcmVsZWFzZSAxCiVlbmRpZgolaWYgJXs/c3JjZXh0OjB9JXshP3NyY2V4dDoxfQolZGVmaW5lIHNyY2V4dCAuZ3oKJWVuZGlmCgoKJWRlZmluZSBuYW1lICAgIHNwYW1hc3Nhc3NpbgolZGVmaW5lIGluaXRkaXIgJXtfaW5pdHJkZGlyfQoKTmFtZTogJXtuYW1lfQpWZXJzaW9uOiAle3ZlcnNpb259ClJlbGVhc2U6ICV7cmVsZWFzZX0KTGljZW5zZTogQXBhY2hlIExpY2Vuc2UgMi4wClVSTDogaHR0cDovL3NwYW1hc3Nhc3Npbi5hcGFjaGUub3JnLwpTb3VyY2U6IGh0dHA6Ly9zcGFtYXNzYXNzaW4uYXBhY2hlLm9yZy9yZWxlYXNlZC9NYWlsLVNwYW1Bc3Nhc3Npbi0le3JlYWxfdmVyc2lvbn0udGFyJXtzcmNleHR9CkJ1aWxkcm9vdDogJXtfdG1wcGF0aH0vJXtuYW1lfS1yb290ClByZWZpeDogJXtfcHJlZml4fQpQcmVyZXE6IC9zYmluL2Noa2NvbmZpZwpSZXF1aXJlczogcGVybC1NYWlsLVNwYW1Bc3Nhc3NpbiA9ICV7dmVyc2lvbn0tJXtyZWxlYXNlfQpEaXN0cmlidXRpb246IFNwYW1Bc3Nhc3NpbgpSZXF1aXJlczogcGVybChQb2Q6OlVzYWdlKQpCdWlsZFJlcXVpcmVzOiBwZXJsID49IDUuNi4xIHBlcmwoRGlnZXN0OjpTSEExKQoKJWRlZmluZSBfX2ZpbmRfcHJvdmlkZXMgL3Vzci9saWIvcnBtL2ZpbmQtcHJvdmlkZXMucGVybAolZGVmaW5lIF9fZmluZF9yZXF1aXJlcyAvdXNyL2xpYi9ycG0vZmluZC1yZXF1aXJlcy5wZXJsCgolZGVzY3JpcHRpb24KU3BhbUFzc2Fzc2luIHByb3ZpZGVzIHlvdSB3aXRoIGEgd2F5IHRvIHJlZHVjZSwgaWYgbm90IGNvbXBsZXRlbHkgZWxpbWluYXRlLApVbnNvbGljaXRlZCBCdWxrIEVtYWlsIChvciAic3BhbSIpIGZyb20geW91ciBpbmNvbWluZyBlbWFpbC4gIEl0IGNhbiBiZQppbnZva2VkIGJ5IGEgTURBIHN1Y2ggYXMgc2VuZG1haWwgb3IgcG9zdGZpeCwgb3IgY2FuIGJlIGNhbGxlZCBmcm9tIGEgcHJvY21haWwKc2NyaXB0LCAuZm9yd2FyZCBmaWxlLCBldGMuICBJdCB1c2VzIGEgcGVyY2VwdHJvbi1vcHRpbWl6ZWQgc2NvcmluZyBzeXN0ZW0KdG8gaWRlbnRpZnkgbWVzc2FnZXMgd2hpY2ggbG9vayBzcGFtbXksIHRoZW4gYWRkcyBoZWFkZXJzIHRvIHRoZSBtZXNzYWdlIHNvCnRoZXkgY2FuIGJlIGZpbHRlcmVkIGJ5IHRoZSB1c2VyJ3MgbWFpbCByZWFkaW5nIHNvZnR3YXJlLiAgVGhpcyBkaXN0cmlidXRpb24KaW5jbHVkZXMgdGhlIHNwYW1jL3NwYW1jIGNvbXBvbmVudHMgd2hpY2ggY29uc2lkZXJhYmx5IHNwZWVkcyBwcm9jZXNzaW5nIG9mCm1haWwuCgolcGFja2FnZSAtbiBwZXJsLU1haWwtU3BhbUFzc2Fzc2luClN1bW1hcnk6ICAgICAgICAle3BkaXJ9Ojole3BuYW19IC0tIFNwYW1Bc3Nhc3NpbiBlLW1haWwgZmlsdGVyIFBlcmwgbW9kdWxlcwpTdW1tYXJ5KHBsKTogICAgJXtwZGlyfTo6JXtwbmFtfSAtLSBtb2R1s3kgUGVybGEgZmlsdHJ1IHBvY3p0eSBTcGFtQXNzYXNzaW4KUmVxdWlyZXM6IHBlcmwgPj0gNS42LjEgcGVybChIVE1MOjpQYXJzZXIpIHBlcmwoRGlnZXN0OjpTSEExKSBwZXJsKE5ldDo6RE5TKQpCdWlsZFJlcXVpcmVzOiBwZXJsID49IDUuNi4xIHBlcmwoSFRNTDo6UGFyc2VyKSBwZXJsKERpZ2VzdDo6U0hBMSkgcGVybChOZXQ6OkROUykKR3JvdXA6ICAgICAgICAgIERldmVsb3BtZW50L0xpYnJhcmllcwoKJWRlc2NyaXB0aW9uIC1uIHBlcmwtTWFpbC1TcGFtQXNzYXNzaW4KTWFpbDo6U3BhbUFzc2Fzc2luIGlzIGEgbW9kdWxlIHRvIGlkZW50aWZ5IHNwYW0gdXNpbmcgdGV4dCBhbmFseXNpcyBhbmQKc2V2ZXJhbCBpbnRlcm5ldC1iYXNlZCByZWFsdGltZSBibGFja2xpc3RzLiBVc2luZyBpdHMgcnVsZSBiYXNlLCBpdCB1c2VzIGEKd2lkZSByYW5nZSBvZiBoZXVyaXN0aWMgdGVzdHMgb24gbWFpbCBoZWFkZXJzIGFuZCBib2R5IHRleHQgdG8gaWRlbnRpZnkKYGBzcGFtJycsIGFsc28ga25vd24gYXMgdW5zb2xpY2l0ZWQgY29tbWVyY2lhbCBlbWFpbC4gT25jZSBpZGVudGlmaWVkLCB0aGUKbWFpbCBjYW4gdGhlbiBiZSBvcHRpb25hbGx5IHRhZ2dlZCBhcyBzcGFtIGZvciBsYXRlciBmaWx0ZXJpbmcgdXNpbmcgdGhlCnVzZXIncyBvd24gbWFpbCB1c2VyLWFnZW50IGFwcGxpY2F0aW9uLgoKJXByZXAKJXNldHVwIC1xIC1uICV7cGRpcn0tJXtwbmFtfS0le3JlYWxfdmVyc2lvbn0KCiVidWlsZApDRkxBR1M9IiRSUE1fT1BUX0ZMQUdTIjsgZXhwb3J0IENGTEFHUwole19fcGVybH0gTWFrZWZpbGUuUEwgUFJFRklYPSV7X3ByZWZpeH0gU1lTQ09ORkRJUj0le19zeXNjb25mZGlyfSBERVNURElSPSRSUE1fQlVJTERfUk9PVCA8IC9kZXYvbnVsbAole19fbWFrZX0KIyV7X19tYWtlfSBzcGFtYy9saWJzcGFtYy5zbwoKJWluc3RhbGwKWyAiJFJQTV9CVUlMRF9ST09UIiAhPSAiLyIgXSAmJiBybSAtcmYgJFJQTV9CVUlMRF9ST09UCiMgU3BlY2lmeSB0aGUgbWFuIGRpciBsb2NhdGlvbnMgc2luY2UgUGVybCBzb21ldGltZXMgZ2V0cyBpdCB3cm9uZy4uLiA6KAolbWFrZWluc3RhbGwgXAoJSU5TVEFMTE1BTjFESVI9JXtfbWFuZGlyfS9tYW4xIFwKCUlOU1RBTExNQU4zRElSPSV7X21hbmRpcn0vbWFuMyBcCglJTlNUQUxMU0lURU1BTjFESVI9JXtfbWFuZGlyfS9tYW4xIFwKCUlOU1RBTExTSVRFTUFOM0RJUj0le19tYW5kaXJ9L21hbjMgXAoJSU5TVEFMTFZFTkRPUk1BTjFESVI9JXtfbWFuZGlyfS9tYW4xIFwKCUlOU1RBTExWRU5ET1JNQU4zRElSPSV7X21hbmRpcn0vbWFuMwoKaW5zdGFsbCAtZCAlYnVpbGRyb290LyV7aW5pdGRpcn0KaW5zdGFsbCAtZCAlYnVpbGRyb290LyV7X2luY2x1ZGVkaXJ9Cmluc3RhbGwgLW0gMDc1NSBzcGFtZC9yZWRoYXQtcmMtc2NyaXB0LnNoICVidWlsZHJvb3QvJXtpbml0ZGlyfS9zcGFtYXNzYXNzaW4KI2luc3RhbGwgLW0gMDY0NCBzcGFtYy9saWJzcGFtYy5zbyAlYnVpbGRyb290LyV7X2xpYmRpcn0KI2luc3RhbGwgLW0gMDY0NCBzcGFtYy9saWJzcGFtYy5oICVidWlsZHJvb3QvJXtfaW5jbHVkZWRpcn0vbGlic3BhbWMuaAoKIyBEbyB0aGlzIHNvIHRoYXQgdGhlIHNwYW1kIFJFQURNRSBmaWxlIGhhcyBhIGRpZmZlcmVudCBuYW1lIC4uLgole19fbXZ9IHNwYW1kL1JFQURNRSBzcGFtZC9SRUFETUUuc3BhbWQKCm1rZGlyIC1wICV7YnVpbGRyb290fS9ldGMvbWFpbC9zcGFtYXNzYXNzaW4KClsgLXggL3Vzci9saWIvcnBtL2JycC1jb21wcmVzcyBdICYmIC91c3IvbGliL3JwbS9icnAtY29tcHJlc3MKCiVmaWxlcyAKJWRlZmF0dHIoLSxyb290LHJvb3QpCiVkb2MgUkVBRE1FIENoYW5nZXMgc2FtcGxlLW5vbnNwYW0udHh0IHNhbXBsZS1zcGFtLnR4dCBzcGFtZC9SRUFETUUuc3BhbWQgSU5TVEFMTCBCVUdTIExJQ0VOU0UgVFJBREVNQVJLIFVTQUdFIHNxbCBVUEdSQURFCiVhdHRyKDc1NSxyb290LHJvb3QpICV7X2JpbmRpcn0vKgojJWF0dHIoNjQ0LHJvb3Qscm9vdCkgJXtfaW5jbHVkZWRpcn0vKgojJWF0dHIoNjQ0LHJvb3Qscm9vdCkgJXtfbGliZGlyfS8qLnNvCiVjb25maWcobm9yZXBsYWNlKSAlYXR0cig3NTUscm9vdCxyb290KSAle2luaXRkaXJ9L3NwYW1hc3Nhc3Npbgole19tYW5kaXJ9L21hbjEvKgoKJWZpbGVzIC1uIHBlcmwtTWFpbC1TcGFtQXNzYXNzaW4KJWRlZmF0dHIoNjQ0LHJvb3Qscm9vdCw3NTUpCiV7cGVybF9zaXRlbGlifS8qCiVjb25maWcobm9yZXBsYWNlKSAle19zeXNjb25mZGlyfS9tYWlsL3NwYW1hc3Nhc3Npbgole19kYXRhZGlyfS9zcGFtYXNzYXNzaW4KJXtfbWFuZGlyfS9tYW4zLyoKCiVjbGVhbgpbICIkUlBNX0JVSUxEX1JPT1QiICE9ICIvIiBdICYmIHJtIC1yZiAkUlBNX0JVSUxEX1JPT1QKCiVwb3N0Ci9zYmluL2Noa2NvbmZpZyAtLWFkZCBzcGFtYXNzYXNzaW4KCiMgb2xkZXIgdmVyc2lvbnMgdXNlZCAvZXRjL3N5c2NvbmZpZy9zcGFtZCB3aGVyZWFzIGl0IHNob3VsZCBoYXZlIGJlZW4KIyBzcGFtYXNzYXNzaW4sIHNvIGZpeCBpdCBoZXJlCmlmIFsgLWYgL2V0Yy9zeXNjb25maWcvc3BhbWQgXTsgdGhlbgogICV7X19zZWR9IC1lICdzL15PUFRJT05TPS9TUEFNRE9QVElPTlM9LycgL2V0Yy9zeXNjb25maWcvc3BhbWQgPiAvZXRjL3N5c2NvbmZpZy9zcGFtYXNzYXNzaW4KICAle19fbXZ9IC9ldGMvc3lzY29uZmlnL3NwYW1kIC9ldGMvc3lzY29uZmlnL3NwYW1hc3Nhc3Npbi5ycG1vbGQKZmkKIyBJZiBzcGFtZCBpcyBydW5uaW5nLCBsZXQncyBiZSBzdXJlIHRvIGNoYW5nZSB0aGUgbG9jayBmaWxlIGFzIHdlbGwgLi4uCmlmIFsgLWYgL3Zhci9sb2NrL3N1YnN5cy9zcGFtZCBdOyB0aGVuCiAgJXtfX212fSAvdmFyL2xvY2svc3Vic3lzL3NwYW1kIC92YXIvbG9jay9zdWJzeXMvc3BhbWFzc2Fzc2luCmZpCi9zYmluL3NlcnZpY2Ugc3BhbWFzc2Fzc2luIGNvbmRyZXN0YXJ0CgolcHJldW4KaWYgWyAkMSA9IDAgXTsgdGhlbgogICAgL3NiaW4vc2VydmljZSBzcGFtYXNzYXNzaW4gc3RvcCA+L2Rldi9udWxsIDI+JjEKICAgIC9zYmluL2Noa2NvbmZpZyAtLWRlbCBzcGFtYXNzYXNzaW4KZmkKCiVwb3N0dW4KaWYgWyAiJDEiIC1nZSAiMSIgXTsgdGhlbgogICAgL3NiaW4vc2VydmljZSBzcGFtYXNzYXNzaW4gY29uZHJlc3RhcnQgPiAvZGV2L251bGwgMj4mMQpmaQo=