Name: series-workflowsz9mm Phase: Succeeded StartedAt: 2026-09-10 19:21:56 +0000 UTC FinishedAt: 2026-09-10 23:27:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsz9mm[0] Phase: Succeeded StartedAt: 2026-09-10 19:21:56 +0000 UTC FinishedAt: 2026-09-10 19:44:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsz9mm[0].run-triage Phase: Succeeded StartedAt: 2026-09-10 19:21:57 +0000 UTC FinishedAt: 2026-09-10 19:44:55 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "2ac09b5353fe6858411fdc8c6efa60d832e20f13", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET", "UNIX" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "2ac09b5353fe6858411fdc8c6efa60d832e20f13", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET", "UNIX" ], "series_id": "1ba08323-d282-46d6-a5ec-142a7e190a27" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "__sys_socketpair", "unix_socketpair" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE5OjQzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVCYjMzQ7LAogICAgJiMzNDtVTklYJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19zeXNfc29ja2V0cGFpciYjMzQ7LAogICAgJiMzNDt1bml4X3NvY2tldHBhaXImIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgX19zeXNfc29ja2V0cGFpcmAgdG8gZGVmZXIgY29weWluZyBmaWxlIGRlc2NyaXB0b3IgbnVtYmVycyAoYGZkMWAgYW5kIGBmZDJgKSB0byB1c2Vyc3BhY2UgKGB1c29ja3ZlY2ApIHVudGlsIGFmdGVyIHNvY2tldCBjcmVhdGlvbiwgcHJvdG9jb2wgc2V0dXAsIGFuZCBmaWxlIGFsbG9jYXRpb24gaGF2ZSBzdWNjZWVkZWQuXG5cbi0gVGhlIHZhbHVlcyB3cml0dGVuIHRvIHVzZXJzcGFjZSB2aWEgYHB1dF91c2VyYCBhcmUgc2ltcGxlIHNjYWxhciBpbnRlZ2VycyAoYGZkMWAsIGBmZDJgKSByZXR1cm5lZCBkaXJlY3RseSBmcm9tIGBnZXRfdW51c2VkX2ZkX2ZsYWdzKClgLCB3aGljaCBhcmUgZnVsbHkgaW5pdGlhbGl6ZWQgYW5kIHZhbGlkYXRlZCBwcmlvciB0byB1c2UuXG4tIE5vIG5ldyB1bmluaXRpYWxpemVkIGhlYXAgb3Igc3RhY2sgYnVmZmVycywgdW5pbml0aWFsaXplZCBzdHJ1Y3QgcGFkZGluZywgb3IgdW5pbml0aWFsaXplZCB2YXJpYWJsZSByZWFkcyBhcmUgaW50cm9kdWNlZC5cbi0gQW55IHBvdGVudGlhbCByZXNvdXJjZSBtYW5hZ2VtZW50IG9yIGxpZmVjeWNsZSBidWdzIChzdWNoIGFzIGZkL2ZpbGUgY2xlYW51cCBvciByZWZjb3VudGluZyBpc3N1ZXMgb24gZXJyb3IgcGF0aHMpIGFyZSBhZGRyZXNzZWQgYnkgc3RhbmRhcmQgc2FuaXRpemVycyAoS0FTQU4sIHJlZmNvdW50IGNoZWNrcykuXG5cbkNvbnNlcXVlbnRseSwgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIG9yIGluZm8tbGVha3MsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZXJyb3IgaGFuZGxpbmcgYW5kIGRlc2NyaXB0b3IgaW5zdGFsbGF0aW9uIGluIF9fc3lzX3NvY2tldHBhaXIoKSBieSBkZWZlcnJpbmcgcHV0X3VzZXIoKSB1bnRpbCBhZnRlciBzb2NrZXQgYW5kIGZpbGUgYWxsb2NhdGlvbiwgYW5kIGFkZGluZyBmcHV0KCkgY2xlYW51cCBpZiBwdWJsaXNoaW5nIHRvIHVzZXIgc3BhY2UgZmFpbHMuIFRoaXMgYWZmZWN0cyBjb3JlIG5ldHdvcmtpbmcgc3lzY2FsbCBoYW5kbGluZyBhbmQgcmVzb3VyY2UgbWFuYWdlbWVudCwgd2hpY2ggaXMgZnVsbHkgcmVhY2hhYmxlIGFuZCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE5OjQzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNTUzZTE1MmQ4YzYzM2Q2NTNiMGE1NGQ0MTI3MzQ0ZjQwOTI5Yjc2M1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgU2VwIDEwIDE5OjQzOjU2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zb2NrZXQuYyBiL25ldC9zb2NrZXQuY1xuaW5kZXggYzA1ZDg2ZTYzYWJmNy4uNGNiODY2Mjg2OWYwOSAxMDA2NDRcbi0tLSBhL25ldC9zb2NrZXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NvY2tldC5jXG5AQCAtMTg1MSwxMCAmIzQzOzE4NTEsNyBAQCBpbnQgX19zeXNfc29ja2V0cGFpcihpbnQgZmFtaWx5LCBpbnQgdHlwZSwgaW50IHByb3RvY29sLCBpbnQgX191c2VyICp1c29ja3ZlYylcbiBcdGlmIChTT0NLX05PTkJMT0NLICE9IE9fTk9OQkxPQ0sgXHUwMDI2XHUwMDI2IChmbGFncyBcdTAwMjYgU09DS19OT05CTE9DSykpXG4gXHRcdGZsYWdzID0gKGZsYWdzIFx1MDAyNiB+U09DS19OT05CTE9DSykgfCBPX05PTkJMT0NLO1xuIFxuLVx0Lypcbi1cdCAqIHJlc2VydmUgZGVzY3JpcHRvcnMgYW5kIG1ha2Ugc3VyZSB3ZSB3b24mIzM5O3QgZmFpbFxuLVx0ICogdG8gcmV0dXJuIHRoZW0gdG8gdXNlcmxhbmQuXG4tXHQgKi9cbiYjNDM7XHQvKiBSZXNlcnZlIGJvdGggZGVzY3JpcHRvcnMgYmVmb3JlIGNyZWF0aW5nIHRoZSBzb2NrZXRzLiAqL1xuIFx0ZmQxID0gZ2V0X3VudXNlZF9mZF9mbGFncyhmbGFncyk7XG4gXHRpZiAodW5saWtlbHkoZmQxIFx1MDAzYyAwKSlcbiBcdFx0cmV0dXJuIGZkMTtcbkBAIC0xODY1LDE0ICYjNDM7MTg2Miw2IEBAIGludCBfX3N5c19zb2NrZXRwYWlyKGludCBmYW1pbHksIGludCB0eXBlLCBpbnQgcHJvdG9jb2wsIGludCBfX3VzZXIgKnVzb2NrdmVjKVxuIFx0XHRyZXR1cm4gZmQyO1xuIFx0fVxuIFxuLVx0ZXJyID0gcHV0X3VzZXIoZmQxLCBcdTAwMjZ1c29ja3ZlY1swXSk7XG4tXHRpZiAoZXJyKVxuLVx0XHRnb3RvIG91dDtcbi1cbi1cdGVyciA9IHB1dF91c2VyKGZkMiwgXHUwMDI2dXNvY2t2ZWNbMV0pO1xuLVx0aWYgKGVycilcbi1cdFx0Z290byBvdXQ7XG4tXG4gXHQvKlxuIFx0ICogT2J0YWluIHRoZSBmaXJzdCBzb2NrZXQgYW5kIGNoZWNrIGlmIHRoZSB1bmRlcmx5aW5nIHByb3RvY29sXG4gXHQgKiBzdXBwb3J0cyB0aGUgc29ja2V0cGFpciBjYWxsLlxuQEAgLTE5MTYsNiAmIzQzOzE5MDUsMTYgQEAgaW50IF9fc3lzX3NvY2tldHBhaXIoaW50IGZhbWlseSwgaW50IHR5cGUsIGludCBwcm90b2NvbCwgaW50IF9fdXNlciAqdXNvY2t2ZWMpXG4gXHRcdGdvdG8gb3V0O1xuIFx0fVxuIFxuJiM0MztcdC8qIFB1Ymxpc2ggdGhlIGRlc2NyaXB0b3JzIG5vdyB0aGF0IGl0IHNob3VsZG4mIzM5O3QgZmFpbC4gKi9cbiYjNDM7XHRlcnIgPSBwdXRfdXNlcihmZDEsIFx1MDAyNnVzb2NrdmVjWzBdKTtcbiYjNDM7XHRpZiAoIWVycilcbiYjNDM7XHRcdGVyciA9IHB1dF91c2VyKGZkMiwgXHUwMDI2dXNvY2t2ZWNbMV0pO1xuJiM0MztcdGlmIChlcnIpIHtcbiYjNDM7XHRcdGZwdXQobmV3ZmlsZTIpO1xuJiM0MztcdFx0ZnB1dChuZXdmaWxlMSk7XG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0YXVkaXRfZmRfcGFpcihmZDEsIGZkMik7XG4gXG4gXHRmZF9pbnN0YWxsKGZkMSwgbmV3ZmlsZTEpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE5OjQzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVCYjMzQ7LAogICAgJiMzNDtVTklYJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19zeXNfc29ja2V0cGFpciYjMzQ7LAogICAgJiMzNDt1bml4X3NvY2tldHBhaXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZXJyb3IgaGFuZGxpbmcgYW5kIGRlc2NyaXB0b3IgaW5zdGFsbGF0aW9uIGluIF9fc3lzX3NvY2tldHBhaXIoKSBieSBkZWZlcnJpbmcgcHV0X3VzZXIoKSB1bnRpbCBhZnRlciBzb2NrZXQgYW5kIGZpbGUgYWxsb2NhdGlvbiwgYW5kIGFkZGluZyBmcHV0KCkgY2xlYW51cCBpZiBwdWJsaXNoaW5nIHRvIHVzZXIgc3BhY2UgZmFpbHMuIFRoaXMgYWZmZWN0cyBjb3JlIG5ldHdvcmtpbmcgc3lzY2FsbCBoYW5kbGluZyBhbmQgcmVzb3VyY2UgbWFuYWdlbWVudCwgd2hpY2ggaXMgZnVsbHkgcmVhY2hhYmxlIGFuZCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTUzZTE1MmQ4YzYzM2Q2NTNiMGE1NGQ0MTI3MzQ0ZjQwOTI5Yjc2MwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgU2VwIDEwIDE5OjQzOjU2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3NvY2tldC5jIGIvbmV0L3NvY2tldC5jCmluZGV4IGMwNWQ4NmU2M2FiZjcuLjRjYjg2NjI4NjlmMDkgMTAwNjQ0Ci0tLSBhL25ldC9zb2NrZXQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc29ja2V0LmMKQEAgLTE4NTEsMTAgJiM0MzsxODUxLDcgQEAgaW50IF9fc3lzX3NvY2tldHBhaXIoaW50IGZhbWlseSwgaW50IHR5cGUsIGludCBwcm90b2NvbCwgaW50IF9fdXNlciAqdXNvY2t2ZWMpCiAJaWYgKFNPQ0tfTk9OQkxPQ0sgIT0gT19OT05CTE9DSyAmYW1wOyZhbXA7IChmbGFncyAmYW1wOyBTT0NLX05PTkJMT0NLKSkKIAkJZmxhZ3MgPSAoZmxhZ3MgJmFtcDsgflNPQ0tfTk9OQkxPQ0spIHwgT19OT05CTE9DSzsKIAotCS8qCi0JICogcmVzZXJ2ZSBkZXNjcmlwdG9ycyBhbmQgbWFrZSBzdXJlIHdlIHdvbiYjMzk7dCBmYWlsCi0JICogdG8gcmV0dXJuIHRoZW0gdG8gdXNlcmxhbmQuCi0JICovCiYjNDM7CS8qIFJlc2VydmUgYm90aCBkZXNjcmlwdG9ycyBiZWZvcmUgY3JlYXRpbmcgdGhlIHNvY2tldHMuICovCiAJZmQxID0gZ2V0X3VudXNlZF9mZF9mbGFncyhmbGFncyk7CiAJaWYgKHVubGlrZWx5KGZkMSAmbHQ7IDApKQogCQlyZXR1cm4gZmQxOwpAQCAtMTg2NSwxNCAmIzQzOzE4NjIsNiBAQCBpbnQgX19zeXNfc29ja2V0cGFpcihpbnQgZmFtaWx5LCBpbnQgdHlwZSwgaW50IHByb3RvY29sLCBpbnQgX191c2VyICp1c29ja3ZlYykKIAkJcmV0dXJuIGZkMjsKIAl9CiAKLQllcnIgPSBwdXRfdXNlcihmZDEsICZhbXA7dXNvY2t2ZWNbMF0pOwotCWlmIChlcnIpCi0JCWdvdG8gb3V0OwotCi0JZXJyID0gcHV0X3VzZXIoZmQyLCAmYW1wO3Vzb2NrdmVjWzFdKTsKLQlpZiAoZXJyKQotCQlnb3RvIG91dDsKLQogCS8qCiAJICogT2J0YWluIHRoZSBmaXJzdCBzb2NrZXQgYW5kIGNoZWNrIGlmIHRoZSB1bmRlcmx5aW5nIHByb3RvY29sCiAJICogc3VwcG9ydHMgdGhlIHNvY2tldHBhaXIgY2FsbC4KQEAgLTE5MTYsNiAmIzQzOzE5MDUsMTYgQEAgaW50IF9fc3lzX3NvY2tldHBhaXIoaW50IGZhbWlseSwgaW50IHR5cGUsIGludCBwcm90b2NvbCwgaW50IF9fdXNlciAqdXNvY2t2ZWMpCiAJCWdvdG8gb3V0OwogCX0KIAomIzQzOwkvKiBQdWJsaXNoIHRoZSBkZXNjcmlwdG9ycyBub3cgdGhhdCBpdCBzaG91bGRuJiMzOTt0IGZhaWwuICovCiYjNDM7CWVyciA9IHB1dF91c2VyKGZkMSwgJmFtcDt1c29ja3ZlY1swXSk7CiYjNDM7CWlmICghZXJyKQomIzQzOwkJZXJyID0gcHV0X3VzZXIoZmQyLCAmYW1wO3Vzb2NrdmVjWzFdKTsKJiM0MzsJaWYgKGVycikgewomIzQzOwkJZnB1dChuZXdmaWxlMik7CiYjNDM7CQlmcHV0KG5ld2ZpbGUxKTsKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwl9CiYjNDM7CiAJYXVkaXRfZmRfcGFpcihmZDEsIGZkMik7CiAKIAlmZF9pbnN0YWxsKGZkMSwgbmV3ZmlsZTEpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxOTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjQzCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGl2aW5nIGludG8gdGhlIFNvY2tldHBhaXIgSW1wbGVtZW50YXRpb24qKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgcGF0Y2gsIGFuZCB0aGUgYmVzdCB3YXkgdG8gZG8gdGhhdCwgYXMgYWx3YXlzLCBpcyB0byBnZXQgaW50byB0aGUgY29kZSBpdHNlbGYuIE15IGluaXRpYWwgbW92ZSB3aWxsIGJlIHRvIGV4YW1pbmUgdGhlIGBuZXQvc29ja2V0LmNgIGZpbGUuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0YXJnZXRpbmcgdGhlIHZpY2luaXR5IG9mIGxpbmUgMTg1MSwgaG9waW5nIHRvIHVuY292ZXIgdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kLCBjcnVjaWFsbHksIGdhaW4gYSBjb250ZXh0IGZvciB0aGUgYF9fc3lzX3NvY2tldHBhaXJgIGZ1bmN0aW9uLiBVbmRlcnN0YW5kaW5nIGl0cyBpbW1lZGlhdGUgcHVycG9zZSBhbmQgdXNhZ2Ugd2l0aGluIHRoYXQgc3BlY2lmaWMgYXJlYSBvZiBgbmV0L3NvY2tldC5jYCB3aWxsIGdpdmUgbWUgYSBzb2xpZCBmb3VuZGF0aW9uIGZvciBldmFsdWF0aW5nIHRoZSBwYXRjaCYjMzk7cyBpbXBhY3QuIEkgd2FudCB0byBzZWUgaG93IGl0JiMzOTtzIGJlaW5nIGNhbGxlZCwgd2hhdCBhcmd1bWVudHMgaXQmIzM5O3MgcmVjZWl2aW5nLCBhbmQgd2hhdCB0aGUgb3ZlcmFsbCBmbG93IGxvb2tzIGxpa2UuIFRoaXMgaW5pdGlhbCByZWFkaW5nIHdpbGwgaW5mb3JtIG15IG5leHQgc3RlcHMsIGFsbG93aW5nIG1lIHRvIGZvY3VzIG9uIHRoZSBrZXkgYXJlYXMgdGhhdCBhcmUgcmVsZXZhbnQgdG8gdGhpcyBjaGFuZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTk6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvc29ja2V0LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxODQwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxODQwOlx0e1xuMTg0MTpcdFx0c3RydWN0IHNvY2tldCAqc29jazEsICpzb2NrMjtcbjE4NDI6XHRcdGludCBmZDEsIGZkMiwgZXJyO1xuMTg0MzpcdFx0c3RydWN0IGZpbGUgKm5ld2ZpbGUxLCAqbmV3ZmlsZTI7XG4xODQ0Olx0XHRpbnQgZmxhZ3M7XG4xODQ1Olx0XG4xODQ2Olx0XHRmbGFncyA9IHR5cGUgXHUwMDI2IH5TT0NLX1RZUEVfTUFTSztcbjE4NDc6XHRcdGlmIChmbGFncyBcdTAwMjYgfihTT0NLX0NMT0VYRUMgfCBTT0NLX05PTkJMT0NLKSlcbjE4NDg6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4xODQ5Olx0XHR0eXBlIFx1MDAyNj0gU09DS19UWVBFX01BU0s7XG4xODUwOlx0XG4xODUxOlx0XHRpZiAoU09DS19OT05CTE9DSyAhPSBPX05PTkJMT0NLIFx1MDAyNlx1MDAyNiAoZmxhZ3MgXHUwMDI2IFNPQ0tfTk9OQkxPQ0spKVxuMTg1MjpcdFx0XHRmbGFncyA9IChmbGFncyBcdTAwMjYgflNPQ0tfTk9OQkxPQ0spIHwgT19OT05CTE9DSztcbjE4NTM6XHRcbjE4NTQ6XHRcdC8qIFJlc2VydmUgYm90aCBkZXNjcmlwdG9ycyBiZWZvcmUgY3JlYXRpbmcgdGhlIHNvY2tldHMuICovXG4xODU1Olx0XHRmZDEgPSBnZXRfdW51c2VkX2ZkX2ZsYWdzKGZsYWdzKTtcbjE4NTY6XHRcdGlmICh1bmxpa2VseShmZDEgXHUwMDNjIDApKVxuMTg1NzpcdFx0XHRyZXR1cm4gZmQxO1xuMTg1ODpcdFxuMTg1OTpcdFx0ZmQyID0gZ2V0X3VudXNlZF9mZF9mbGFncyhmbGFncyk7XG4xODYwOlx0XHRpZiAodW5saWtlbHkoZmQyIFx1MDAzYyAwKSkge1xuMTg2MTpcdFx0XHRwdXRfdW51c2VkX2ZkKGZkMSk7XG4xODYyOlx0XHRcdHJldHVybiBmZDI7XG4xODYzOlx0XHR9XG4xODY0Olx0XG4xODY1Olx0XHQvKlxuMTg2NjpcdFx0ICogT2J0YWluIHRoZSBmaXJzdCBzb2NrZXQgYW5kIGNoZWNrIGlmIHRoZSB1bmRlcmx5aW5nIHByb3RvY29sXG4xODY3Olx0XHQgKiBzdXBwb3J0cyB0aGUgc29ja2V0cGFpciBjYWxsLlxuMTg2ODpcdFx0ICovXG4xODY5Olx0XG4xODcwOlx0XHRlcnIgPSBzb2NrX2NyZWF0ZShmYW1pbHksIHR5cGUsIHByb3RvY29sLCBcdTAwMjZzb2NrMSk7XG4xODcxOlx0XHRpZiAodW5saWtlbHkoZXJyIFx1MDAzYyAwKSlcbjE4NzI6XHRcdFx0Z290byBvdXQ7XG4xODczOlx0XG4xODc0Olx0XHRlcnIgPSBzb2NrX2NyZWF0ZShmYW1pbHksIHR5cGUsIHByb3RvY29sLCBcdTAwMjZzb2NrMik7XG4xODc1Olx0XHRpZiAodW5saWtlbHkoZXJyIFx1MDAzYyAwKSkge1xuMTg3NjpcdFx0XHRzb2NrX3JlbGVhc2Uoc29jazEpO1xuMTg3NzpcdFx0XHRnb3RvIG91dDtcbjE4Nzg6XHRcdH1cbjE4Nzk6XHRcbjE4ODA6XHRcdGVyciA9IHNlY3VyaXR5X3NvY2tldF9zb2NrZXRwYWlyKHNvY2sxLCBzb2NrMik7XG4xODgxOlx0XHRpZiAodW5saWtlbHkoZXJyKSkge1xuMTg4MjpcdFx0XHRzb2NrX3JlbGVhc2Uoc29jazIpO1xuMTg4MzpcdFx0XHRzb2NrX3JlbGVhc2Uoc29jazEpO1xuMTg4NDpcdFx0XHRnb3RvIG91dDtcbjE4ODU6XHRcdH1cbjE4ODY6XHRcbjE4ODc6XHRcdGVyciA9IFJFQURfT05DRShzb2NrMS1cdTAwM2VvcHMpLVx1MDAzZXNvY2tldHBhaXIoc29jazEsIHNvY2syKTtcbjE4ODg6XHRcdGlmICh1bmxpa2VseShlcnIgXHUwMDNjIDApKSB7XG4xODg5Olx0XHRcdHNvY2tfcmVsZWFzZShzb2NrMik7XG4xODkwOlx0XHRcdHNvY2tfcmVsZWFzZShzb2NrMSk7XG4xODkxOlx0XHRcdGdvdG8gb3V0O1xuMTg5MjpcdFx0fVxuMTg5MzpcdFxuMTg5NDpcdFx0bmV3ZmlsZTEgPSBzb2NrX2FsbG9jX2ZpbGUoc29jazEsIGZsYWdzLCBOVUxMKTtcbjE4OTU6XHRcdGlmIChJU19FUlIobmV3ZmlsZTEpKSB7XG4xODk2Olx0XHRcdGVyciA9IFBUUl9FUlIobmV3ZmlsZTEpO1xuMTg5NzpcdFx0XHRzb2NrX3JlbGVhc2Uoc29jazIpO1xuMTg5ODpcdFx0XHRnb3RvIG91dDtcbjE4OTk6XHRcdH1cbjE5MDA6XHRcbjE5MDE6XHRcdG5ld2ZpbGUyID0gc29ja19hbGxvY19maWxlKHNvY2syLCBmbGFncywgTlVMTCk7XG4xOTAyOlx0XHRpZiAoSVNfRVJSKG5ld2ZpbGUyKSkge1xuMTkwMzpcdFx0XHRlcnIgPSBQVFJfRVJSKG5ld2ZpbGUyKTtcbjE5MDQ6XHRcdFx0ZnB1dChuZXdmaWxlMSk7XG4xOTA1Olx0XHRcdGdvdG8gb3V0O1xuMTkwNjpcdFx0fVxuMTkwNzpcdFxuMTkwODpcdFx0LyogUHVibGlzaCB0aGUgZGVzY3JpcHRvcnMgbm93IHRoYXQgaXQgc2hvdWxkbiYjMzk7dCBmYWlsLiAqL1xuMTkwOTpcdFx0ZXJyID0gcHV0X3VzZXIoZmQxLCBcdTAwMjZ1c29ja3ZlY1swXSk7XG4xOTEwOlx0XHRpZiAoIWVycilcbjE5MTE6XHRcdFx0ZXJyID0gcHV0X3VzZXIoZmQyLCBcdTAwMjZ1c29ja3ZlY1sxXSk7XG4xOTEyOlx0XHRpZiAoZXJyKSB7XG4xOTEzOlx0XHRcdGZwdXQobmV3ZmlsZTIpO1xuMTkxNDpcdFx0XHRmcHV0KG5ld2ZpbGUxKTtcbjE5MTU6XHRcdFx0Z290byBvdXQ7XG4xOTE2Olx0XHR9XG4xOTE3Olx0XG4xOTE4Olx0XHRhdWRpdF9mZF9wYWlyKGZkMSwgZmQyKTtcbjE5MTk6XHRcbjE5MjA6XHRcdGZkX2luc3RhbGwoZmQxLCBuZXdmaWxlMSk7XG4xOTIxOlx0XHRmZF9pbnN0YWxsKGZkMiwgbmV3ZmlsZTIpO1xuMTkyMjpcdFx0cmV0dXJuIDA7XG4xOTIzOlx0XG4xOTI0Olx0b3V0OlxuMTkyNTpcdFx0cHV0X3VudXNlZF9mZChmZDIpO1xuMTkyNjpcdFx0cHV0X3VudXNlZF9mZChmZDEpO1xuMTkyNzpcdFx0cmV0dXJuIGVycjtcbjE5Mjg6XHR9XG4xOTI5Olx0XG4xOTMwOlx0U1lTQ0FMTF9ERUZJTkU0KHNvY2tldHBhaXIsIGludCwgZmFtaWx5LCBpbnQsIHR5cGUsIGludCwgcHJvdG9jb2wsXG4xOTMxOlx0XHRcdGludCBfX3VzZXIgKiwgdXNvY2t2ZWMpXG4xOTMyOlx0e1xuMTkzMzpcdFx0cmV0dXJuIF9fc3lzX3NvY2tldHBhaXIoZmFtaWx5LCB0eXBlLCBwcm90b2NvbCwgdXNvY2t2ZWMpO1xuMTkzNDpcdH1cbjE5MzU6XHRcbjE5MzY6XHRpbnQgX19zeXNfYmluZF9zb2NrZXQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKmFkZHJlc3MsXG4xOTM3Olx0XHRcdCAgICAgIGludCBhZGRybGVuKVxuMTkzODpcdHtcbjE5Mzk6XHRcdGludCBlcnI7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTk6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDkwMAoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDMzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBTb2NrZXRwYWlyIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEl0IGxvb2tzIGxpa2Ugd2UgaGF2ZSBhIHBhdGNoIHRoYXQmIzM5O3MgdHdlYWtpbmcgdGhlIGBfX3N5c19zb2NrZXRwYWlyYCBmdW5jdGlvbiB3aXRoaW4gYG5ldC9zb2NrZXQuY2AuIE15IGluaXRpYWwgb2JzZXJ2YXRpb24gaXMgdGhhdCB0aGV5JiMzOTt2ZSBjaGFuZ2VkIHRoZSBwbGFjZW1lbnQgb2YgdGhvc2UgYHB1dF91c2VyYCBjYWxscyB0aGF0IHdyaXRlIGZpbGUgZGVzY3JpcHRvcnMgKGBmZDFgIGFuZCBgZmQyYCkgdG8gdXNlciBzcGFjZS4gSXQgdXNlZCB0byBiZSAqYmVmb3JlKiB0aGUgc29ja2V0IGZpbGUgYWxsb2NhdGlvbiwgYnV0IG5vdyBpdCYjMzk7cyAqYWZ0ZXIqLCByaWdodCBiZWZvcmUgYXVkaXQgbG9nZ2luZyBhbmQgZmlsZSBkZXNjcmlwdG9yIGluc3RhbGxhdGlvbiwgYW5kIHRoZXJlJiMzOTtzIGEgc3BlY2lmaWMgY2xlYW51cCBwYXRoIGlmIHRob3NlIHVzZXItc3BhY2Ugd3JpdGVzIGZhaWwuIFRoaXMgaXMgY3J1Y2lhbCBiZWNhdXNlIGl0IGFsdGVycyB0aGUgZXJyb3IgaGFuZGxpbmcgZmxvdyBzaWduaWZpY2FudGx5LgoKVGhlIGtleSBxdWVzdGlvbiBpcyBhbHdheXM6IGlzIHRoaXMgZXZlbiBmdXp6YWJsZT8gQmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgdHJpYWdlIGNyaXRlcmlhLCB0aGlzIHBhdGNoIGRlZmluaXRlbHkgbG9va3MgcHJvbWlzaW5nLgoKKiAgICoqUmVhY2hhYmlsaXR5PyoqIEFic29sdXRlbHkuIGBfX3N5c19zb2NrZXRwYWlyYCBpcyBkaXJlY3RseSBpbnZva2VkIGJ5IHRoZSBzdGFuZGFyZCBgc3lzX3NvY2tldHBhaXJgIHN5c2NhbGwsIHdoaWNoIGlzIHBhcnQgb2YgdGhlIGNvcmUgTGludXggbmV0d29ya2luZyBzdGFjayBpbiBgbmV0L3NvY2tldC5jYC4gVGhpcyBtZWFucyBpdCYjMzk7cyBlYXNpbHkgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlLCBtYWtpbmcgaXQgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcgaW4gc3RhbmRhcmQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuCgoqICAgKipDb3JlIFN1YnN5c3RlbXM/KiogVGhpcyBpcyBpbiBjb3JlIG5ldHdvcmtpbmcgY29kZS4gVGhpcyBpcyBleGFjdGx5IHRoZSBraW5kIG9mIGNyaXRpY2FsIHN1YnN5c3RlbSB3aGVyZSB3ZSBuZWVkIHRvIGxvb2sgZm9yIHZ1bG5lcmFiaWxpdGllcy4KCiogICAqKldvcnRoIEZ1enppbmc/KiogWWVzLCB3aXRob3V0IGEgZG91YnQuIFRoZSBjb21iaW5hdGlvbiBvZiBpdHMgY2VudHJhbCBsb2NhdGlvbiwgdGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aCwgYW5kIHRoYXQgbmV3IGNsZWFudXAgcHJvY2VkdXJlIG1ha2VzIGl0IGEgY29tcGVsbGluZyBjYW5kaWRhdGUuCgpOb3csIEkgbmVlZCB0byBjaGVjayB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMuIEkmIzM5O20gZ29pbmcgdG8gZGlnIGludG8gYG5ldC9LY29uZmlnYCBvciBgbmV0L01ha2VmaWxlYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBrZXJuZWwgY29uZmlndXJhdGlvbnMgb3IgYnVpbGQgZmxhZ3MgdGhhdCBuZWVkIHRvIGJlIGVuYWJsZWQgZm9yIGBuZXQvc29ja2V0LmNgIG9yLCBtb3JlIHNwZWNpZmljYWxseSwgYHNvY2tldHBhaXJgLiBJdOKAmXMgaW1wb3J0YW50IHRvIG1ha2Ugc3VyZSB3ZSBoYXZlIGEgZnVsbHkgZnVuY3Rpb25hbCBzZXR1cCB0aGF0JiMzOTtzIGdvaW5nIHRvIGFsbG93IHRoaXMgY29kZSB0byBydW4gYW5kIHRvIG1heGltaXplIHRoZSBwcm9iYWJpbGl0eSBvZiBmdXp6aW5nIHN1Y2Nlc3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTk6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c29ja2V0XFwubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L01ha2VmaWxlLTgtXG5uZXQvTWFrZWZpbGU6OTpvYmoteVx0XHRcdFx0Oj0gZGV2cmVzLm8gc29ja2V0Lm8gY29yZS9cbm5ldC9NYWtlZmlsZS0xMC1cbi0tXG5uZXQvY2FuL2oxOTM5L01ha2VmaWxlPTU9Y2FuLWoxOTM5LW9ianMgOj0gXFxcbi0tXG5uZXQvY2FuL2oxOTM5L01ha2VmaWxlLTgtXHRtYWluLm8gXFxcbm5ldC9jYW4vajE5MzkvTWFrZWZpbGU6OTpcdHNvY2tldC5vIFxcXG5uZXQvY2FuL2oxOTM5L01ha2VmaWxlLTEwLVx0dHJhbnNwb3J0Lm9cbi0tXG5uZXQvaWVlZTgwMjE1NC9NYWtlZmlsZT0yPW9iai0kKENPTkZJR19JRUVFODAyMTU0KSAmIzQzOz0gaWVlZTgwMjE1NC5vXG5uZXQvaWVlZTgwMjE1NC9NYWtlZmlsZTozOm9iai0kKENPTkZJR19JRUVFODAyMTU0X1NPQ0tFVCkgJiM0Mzs9IGllZWU4MDIxNTRfc29ja2V0Lm9cbm5ldC9pZWVlODAyMTU0L01ha2VmaWxlLTQtb2JqLXkgJiM0Mzs9IDZsb3dwYW4vXG4tLVxubmV0L2llZWU4MDIxNTQvTWFrZWZpbGU9Nj1pZWVlODAyMTU0LXkgOj0gbmV0bGluay5vIG5sLW1hYy5vIG5sLXBoeS5vIG5sX3BvbGljeS5vIGNvcmUubyBcXFxubmV0L2llZWU4MDIxNTQvTWFrZWZpbGUtNy0gICAgICAgICAgICAgICAgaGVhZGVyX29wcy5vIHN5c2ZzLm8gbmw4MDIxNTQubyB0cmFjZS5vIHBhbi5vXG5uZXQvaWVlZTgwMjE1NC9NYWtlZmlsZTo4OmllZWU4MDIxNTRfc29ja2V0LXkgOj0gc29ja2V0Lm9cbm5ldC9pZWVlODAyMTU0L01ha2VmaWxlLTktXG4tLVxubmV0L25ldGZpbHRlci9NYWtlZmlsZT0xMjg9b2JqLSQoQ09ORklHX05GVF9GSUJfTkVUREVWKVx0JiM0Mzs9IG5mdF9maWJfbmV0ZGV2Lm9cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6MTI5Om9iai0kKENPTkZJR19ORlRfU09DS0VUKVx0JiM0Mzs9IG5mdF9zb2NrZXQub1xubmV0L25ldGZpbHRlci9NYWtlZmlsZS0xMzAtb2JqLSQoQ09ORklHX05GVF9PU0YpXHRcdCYjNDM7PSBuZnRfb3NmLm9cbi0tXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTIyNj1vYmotJChDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1NDVFApICYjNDM7PSB4dF9zY3RwLm9cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6MjI3Om9iai0kKENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfU09DS0VUKSAmIzQzOz0geHRfc29ja2V0Lm9cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMjI4LW9iai0kKENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfU1RBVEUpICYjNDM7PSB4dF9zdGF0ZS5vXG4tLVxubmV0L3Bob25ldC9NYWtlZmlsZT00PXBob25ldC15IDo9IFxcXG4tLVxubmV0L3Bob25ldC9NYWtlZmlsZS02LVx0cG5fbmV0bGluay5vIFxcXG5uZXQvcGhvbmV0L01ha2VmaWxlOjc6XHRzb2NrZXQubyBcXFxubmV0L3Bob25ldC9NYWtlZmlsZS04LVx0ZGF0YWdyYW0ubyBcXFxuLS1cbm5ldC9zY3RwL01ha2VmaWxlPTk9c2N0cC15IDo9IHNtX3N0YXRldGFibGUubyBzbV9zdGF0ZWZ1bnMubyBzbV9zaWRlZWZmZWN0Lm8gXFxcbi0tXG5uZXQvc2N0cC9NYWtlZmlsZS0xMi1cdCAgaW5xdWV1ZS5vIG91dHF1ZXVlLm8gdWxwcXVldWUubyBcXFxubmV0L3NjdHAvTWFrZWZpbGU6MTM6XHQgIHRzbm1hcC5vIGJpbmRfYWRkci5vIHNvY2tldC5vIHByaW1pdGl2ZS5vIFxcXG5uZXQvc2N0cC9NYWtlZmlsZS0xNC1cdCAgb3V0cHV0Lm8gaW5wdXQubyBkZWJ1Zy5vIHN0cmVhbS5vIGF1dGgubyBcXFxuLS1cbm5ldC9zb2NrZXQuYz0zMjY9c3RhdGljIHN0cnVjdCBpbm9kZSAqc29ja19hbGxvY19pbm9kZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxuLS1cbm5ldC9zb2NrZXQuYy0zNDEtXHRzaS1cdTAwM2Vzb2NrZXQuZmxhZ3MgPSAwO1xubmV0L3NvY2tldC5jOjM0MjpcdHNpLVx1MDAzZXNvY2tldC5vcHMgPSBOVUxMO1xubmV0L3NvY2tldC5jLTM0My1cdHNpLVx1MDAzZXNvY2tldC5zayA9IE5VTEw7XG4tLVxubmV0L3RpcGMvTWFrZWZpbGU9OD10aXBjLXlcdCYjNDM7PSBhZGRyLm8gYmNhc3QubyBiZWFyZXIubyBcXFxuLS1cbm5ldC90aXBjL01ha2VmaWxlLTEwLVx0ICAgbmFtZV9kaXN0ci5vICBzdWJzY3IubyBtb25pdG9yLm8gbmFtZV90YWJsZS5vIG5ldC5vICBcXFxubmV0L3RpcGMvTWFrZWZpbGU6MTE6XHQgICBuZXRsaW5rLm8gbmV0bGlua19jb21wYXQubyBub2RlLm8gc29ja2V0Lm8gZXRoX21lZGlhLm8gXFxcbm5ldC90aXBjL01ha2VmaWxlLTEyLVx0ICAgdG9wc3J2Lm8gZ3JvdXAubyB0cmFjZS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTk6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjY4MQoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBteXNlbGY6CgoqKkludmVzdGlnYXRpbmcgTmV0d29yayBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYG5ldC9NYWtlZmlsZWAuIEkgc2VlIHNvbWUgb2JqZWN0IGRlZmluaXRpb25zIHRoYXQgYXJlIGxpa2VseSBjb25kaXRpb25hbCwgdXNpbmcgYG9iai0kKENPTkZJR19ORVQpIDo9IC4uLmAuIFRoZSBxdWVzdGlvbiBpcywgaXMgKmV2ZXJ5dGhpbmcqIHVuZGVyIGBuZXQvYCBlZmZlY3RpdmVseSBndWFyZGVkIGJ5IGBDT05GSUdfTkVUYD8gIE9yLCBhcmUgdGhlcmUgbW9yZSBmaW5lLWdyYWluZWQgZGVwZW5kZW5jaWVzIHdpdGhpbiB0aGUgYG5ldC9gIGRpcmVjdG9yeSB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZj8KClRvIGNsYXJpZnkgdGhpcywgSSByZWFsbHkgbmVlZCB0byBjaGVjayB0aGUgcm9vdCBgTWFrZWZpbGVgIOKAkyB0aGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgY29uZmlndXJhdGlvbiBkZWNpc2lvbnMuICBBbmQsIG9mIGNvdXJzZSwgdGhlIGBuZXQvS2NvbmZpZ2AgZmlsZSBpcyBnb2luZyB0byBiZSBjcnVjaWFsLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSAqYWN0dWFsKiBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGRlZmluZWQsIGFuZCB3aGVyZSBgQ09ORklHX05FVGAgaXRzZWxmIGlzIHByb2JhYmx5IGRlY2xhcmVkLiAgSSYjMzk7bGwgZ28gdGhlcmUgbmV4dC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSBgQ09ORklHX05FVGAgc3ltYm9sIGFuZCB0aGUgY29tcG9uZW50cyB3aXRoaW4gdGhlIGBuZXQvYCBkaXJlY3RvcnkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTk6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfTkVUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7TWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE5OjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5NzgKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzOgoKKipJbnZlc3RpZ2F0aW5nIE5ldHdvcmsgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgbWFpbiBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgZGVmaW5lZCB3aXRoaW4gdGhpcyBwcm9qZWN0LiBNeSBmaXJzdCBpbnN0aW5jdCwgZ2l2ZW4gbXkgZXhwZXJpZW5jZSB3aXRoIHNpbWlsYXIgc3lzdGVtcywgaXMgdG8gc3RhcnQgd2l0aCB0aGUgc3RhbmRhcmQgcGxhY2VzLiBUeXBpY2FsbHksIHRoZSB0b3AtbGV2ZWwgYEtjb25maWdgIGZpbGVzIGFyZSB0aGUgY2VudHJhbCByZXBvc2l0b3J5IGZvciBmZWF0dXJlIGZsYWdzIGFuZCBvcHRpb25zLCBhbmQgb2Z0ZW4gaGF2ZSBgaW5jbHVkZWAgc3RhdGVtZW50cyBmb3Igc3ViZGlyZWN0b3JpZXMuIFNvLCBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGUgYG5ldC9LY29uZmlnYCBmaWxlLiBUaGF0JiMzOTtzIHRoZSBtb3N0IGxpa2VseSBwbGFjZSB0byBmaW5kIHdoYXQgSSYjMzk7bSBsb29raW5nIGZvciwgc2luY2UgaXQmIzM5O3MgbG9naWNhbCB0byBoYXZlIG5ldHdvcmstc3BlY2lmaWMgY29uZmlndXJhdGlvbiB3aXRoaW4gdGhlIGBuZXRgIGRpcmVjdG9yeS4KCkhvd2V2ZXIsIHNvbWV0aW1lcyB0aGUgcHJvamVjdCBlbXBsb3lzIGEgbW9yZSBmbGF0IGFwcHJvYWNoIG9yIGhhcyBpdHMgY29uZmlndXJhdGlvbiBmaWxlcyBpbiBsZXNzIGV4cGVjdGVkIGxvY2F0aW9ucy4gSW4gdGhvc2UgY2FzZXMsIHRoZSByb290IGBNYWtlZmlsZWAgb2Z0ZW4gaG9sZHMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGJ1aWxkIHByb2Nlc3MgYW5kIGhvdyBkaWZmZXJlbnQgcGFydHMgb2YgdGhlIHByb2plY3QsIGluY2x1ZGluZyB0aGUgYG5ldC9gIGRpcmVjdG9yeSwgYXJlIGludGVncmF0ZWQuIEl0IG1pZ2h0IGluY2x1ZGUgdmFyaWFibGVzIG9yIGNvbmRpdGlvbmFsIGxvZ2ljIHRoYXQgcG9pbnRzIHRvIHRoZSByZWxldmFudCBgS2NvbmZpZ2AgZmlsZXMgb3IgZGVmaW5lcyBzb21lIHRvcC1sZXZlbCBuZXR3b3JrIG9wdGlvbnMgZGlyZWN0bHkuIFNvIEkmIzM5O2xsIG1ha2UgYSBtZW50YWwgbm90ZSB0byBjaGVjayB0aGUgcm9vdCBgTWFrZWZpbGVgIGFzIGEgYmFja3VwIGlmIGBuZXQvS2NvbmZpZ2AgZG9lc24mIzM5O3QgcHJvdmlkZSBlbm91Z2ggaW5mb3JtYXRpb24sIG9yIGlmIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgbmV0d29ya2luZyBzdWJzeXN0ZW0gaXMgYmVpbmcgaW50ZWdyYXRlZCBpbnRvIHRoZSBidWlsZC4gSXQmIzM5O3MgYWx3YXlzIGdvb2QgdG8gYmUgdGhvcm91Z2ggYW5kIGNvbnNpZGVyIGFsbCB0aGUgbGlrZWx5IGxvY2F0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTk6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXQvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7TWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxOTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MzIzCgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCB3ZW50OgoKKipFeGFtaW5pbmcgdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIG5ldHdvcmstcmVsYXRlZCBmdW5jdGlvbmFsaXR5IGlzIGJlaW5nIG1hbmFnZWQgd2l0aGluIHRoZSBidWlsZCBzeXN0ZW0uIE15IGltbWVkaWF0ZSBpbnN0aW5jdCwgZ2l2ZW4gdGhlIGNvbnRleHQgb2Yga2VybmVsIGNvbmZpZ3VyYXRpb24sIGlzIHRvIGRpdmUgaW50byB0aGUgYEtjb25maWdgIGZpbGVzLiBUaGF0JiMzOTtzIHdoZXJlIGFsbCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBkZWZpbmVkLCBhbmQgd2hlcmUgdGhlIGRlcGVuZGVuY2llcyBhbmQgcmVsYXRpb25zaGlwcyBhcmUgc3BlY2lmaWVkLiBJJiMzOTttIHRoaW5raW5nIEkmIzM5O2xsIGVpdGhlcjoKCiogICAqKkRpcmVjdGx5IGluc3BlY3QgYEtjb25maWdgOioqIEkmIzM5O2xsIHN0YXJ0IGJ5IG9wZW5pbmcgdGhlIHJlbGV2YW50IGBLY29uZmlnYCBmaWxlcyB0byBzZWUgaWYgSSBjYW4gZmluZCBhIGNvbmZpZ3VyYXRpb24gc3ltYm9sLCBsaWtlIGBDT05GSUdfTkVUYCBpdHNlbGYsIGFuZCB0cmFjZSBpdHMgZGVwZW5kZW5jaWVzLCBkZWZhdWx0IHZhbHVlcywgYW5kIGltcGxpY2F0aW9ucy4gSSBtaWdodCBiZSBhYmxlIHRvIGZpZ3VyZSBvdXQgaG93IG5ldHdvcmsgZmVhdHVyZXMgYXJlIGVuYWJsZWQsIGRpc2FibGVkLCBvciBjb25kaXRpb25hbGx5IGNvbXBpbGVkLgoKKiAgICoqVXNlIGdyZXAgZm9yIGZhc3RlciBzZWFyY2hpbmc6KiogSWYgdGhhdCBzZWVtcyBsaWtlIGEgbG90IG9mIGh1bnRpbmcsIG9yIGlmIEkga25vdyB0aGUgYnVpbGQgc3lzdGVtIG1pZ2h0IHJlZmVyIHRvIHRoZSBgQ09ORklHX05FVGAgdmFyaWFibGUgaW4gYSBwYXJ0aWN1bGFyIHdheSAoZS5nLiwgdXNpbmcgaXQgaW4gYW4gb2JqZWN0IGZpbGUgZGVwZW5kZW5jeSksIHRoZW4gSSYjMzk7bGwgcmVhY2ggZm9yIGdyZXAuIFNwZWNpZmljYWxseSwgSSYjMzk7bGwgc2VhcmNoIGZvciB0aGUgY29tbW9uIGJ1aWxkIHN5bnRheCBgb2JqLSQoQ09ORklHX05FVClgIHRvIHNlZSB3aGVyZSBhbmQgaG93IHRoZSBwcmVzZW5jZSBvZiB0aGUgYENPTkZJR19ORVRgIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGluZmx1ZW5jaW5nIHRoZSBpbmNsdXNpb24gb3IgZXhjbHVzaW9uIG9mIG9iamVjdCBmaWxlcy4gVGhpcyBzaG91bGQgcXVpY2tseSBsb2NhdGUgYW55IGJ1aWxkIHJ1bGVzIHRoYXQgZGlyZWN0bHkgZGVwZW5kIG9uIHRoZSBgQ09ORklHX05FVGAgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTk6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b2JqLS4qbmV0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7S2J1aWxkJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0tidWlsZD0xMTM9b2JqLSQoQ09ORklHX1NBTVBMRVMpXHQmIzQzOz0gc2FtcGxlcy9cbktidWlsZDoxMTQ6b2JqLSQoQ09ORklHX05FVClcdCYjNDM7PSBuZXQvXG5LYnVpbGQtMTE1LW9iai15XHRcdFx0JiM0Mzs9IHZpcnQvXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE5OjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3MjcKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiA1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBgc29ja2V0cGFpcmAgSW1wbGVtZW50YXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBDT05GSUdfTkVUYCBhbmQgc3BlY2lmaWNhbGx5IHRoZSBpbXBsaWNhdGlvbnMgb2YgYHNvY2tldHBhaXJgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIHdoYXQgKnNwZWNpZmljKiBwcm90b2NvbHMgbGV2ZXJhZ2UgdGhhdCBmdW5jdGlvbj8gSXQmIzM5O3MgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIGxhbmRzY2FwZS4gSSBhbHJlYWR5IGtub3cgdGhhdCBVbml4IGRvbWFpbiBzb2NrZXRzLCBjb250cm9sbGVkIGJ5IGBDT05GSUdfVU5JWGAsIGFyZSBhIG1ham9yLCBpZiBub3QgdGhlIHByaW1hcnksIGltcGxlbWVudGF0aW9uIG9mIGBzb2NrZXRwYWlyYC4gTm93LCBJIG5lZWQgdG8gZ2V0IGRvd24gdG8gYnJhc3MgdGFja3M6IEkgbmVlZCB0byB2ZXJpZnkgd2hpY2ggc29ja2V0IGZhbWlsaWVzIGFjdHVhbGx5IHByb3ZpZGUgYSBgLnNvY2tldHBhaXJgIGltcGxlbWVudGF0aW9uLCBiZWNhdXNlIHRoYXQgd2lsbCBhbGxvdyBtZSB0byBhc3Nlc3MgdGhlIGFyY2hpdGVjdHVyZSBvdmVyYWxsLiBJIHdhbnQgdG8gYnVpbGQgYSBwcm9wZXIgb3ZlcnZpZXcgb2Ygd2hhdCYjMzk7cyBzdXBwb3J0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE5OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1xcLnNvY2tldHBhaXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9hdG0vcHZjLmM9MTA2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHB2Y19wcm90b19vcHMgPSB7XG4tLVxubmV0L2F0bS9wdmMuYy0xMTItXHQuY29ubmVjdCA9XHRwdmNfY29ubmVjdCxcbm5ldC9hdG0vcHZjLmM6MTEzOlx0LnNvY2tldHBhaXIgPVx0c29ja19ub19zb2NrZXRwYWlyLFxubmV0L2F0bS9wdmMuYy0xMTQtXHQuYWNjZXB0ID1cdHNvY2tfbm9fYWNjZXB0LFxuLS1cbm5ldC9ibHVldG9vdGgvYm5lcC9zb2NrLmM9MTY5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIGJuZXBfc29ja19vcHMgPSB7XG4tLVxubmV0L2JsdWV0b290aC9ibmVwL3NvY2suYy0xODMtXHQuY29ubmVjdFx0PSBzb2NrX25vX2Nvbm5lY3QsXG5uZXQvYmx1ZXRvb3RoL2JuZXAvc29jay5jOjE4NDpcdC5zb2NrZXRwYWlyXHQ9IHNvY2tfbm9fc29ja2V0cGFpcixcbm5ldC9ibHVldG9vdGgvYm5lcC9zb2NrLmMtMTg1LVx0LmFjY2VwdFx0XHQ9IHNvY2tfbm9fYWNjZXB0LFxuLS1cbm5ldC9ibHVldG9vdGgvaGNpX3NvY2suYz0yMTczPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIGhjaV9zb2NrX29wcyA9IHtcbi0tXG5uZXQvYmx1ZXRvb3RoL2hjaV9zb2NrLmMtMjE5MC1cdC5jb25uZWN0XHQ9IHNvY2tfbm9fY29ubmVjdCxcbm5ldC9ibHVldG9vdGgvaGNpX3NvY2suYzoyMTkxOlx0LnNvY2tldHBhaXJcdD0gc29ja19ub19zb2NrZXRwYWlyLFxubmV0L2JsdWV0b290aC9oY2lfc29jay5jLTIxOTItXHQuYWNjZXB0XHRcdD0gc29ja19ub19hY2NlcHQsXG4tLVxubmV0L2JsdWV0b290aC9oaWRwL3NvY2suYz0yMjA9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgaGlkcF9zb2NrX29wcyA9IHtcbi0tXG5uZXQvYmx1ZXRvb3RoL2hpZHAvc29jay5jLTIzNC1cdC5jb25uZWN0XHQ9IHNvY2tfbm9fY29ubmVjdCxcbm5ldC9ibHVldG9vdGgvaGlkcC9zb2NrLmM6MjM1Olx0LnNvY2tldHBhaXJcdD0gc29ja19ub19zb2NrZXRwYWlyLFxubmV0L2JsdWV0b290aC9oaWRwL3NvY2suYy0yMzYtXHQuYWNjZXB0XHRcdD0gc29ja19ub19hY2NlcHQsXG4tLVxubmV0L2JsdWV0b290aC9pc28uYz0yODM5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIGlzb19zb2NrX29wcyA9IHtcbi0tXG5uZXQvYmx1ZXRvb3RoL2lzby5jLTI4NTItXHQubW1hcFx0XHQ9IHNvY2tfbm9fbW1hcCxcbm5ldC9ibHVldG9vdGgvaXNvLmM6Mjg1MzpcdC5zb2NrZXRwYWlyXHQ9IHNvY2tfbm9fc29ja2V0cGFpcixcbm5ldC9ibHVldG9vdGgvaXNvLmMtMjg1NC1cdC5zaHV0ZG93blx0PSBpc29fc29ja19zaHV0ZG93bixcbi0tXG5uZXQvYmx1ZXRvb3RoL2wyY2FwX3NvY2suYz0yMDc4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIGwyY2FwX3NvY2tfb3BzID0ge1xuLS1cbm5ldC9ibHVldG9vdGgvbDJjYXBfc29jay5jLTIwOTItXHQubW1hcFx0XHQ9IHNvY2tfbm9fbW1hcCxcbm5ldC9ibHVldG9vdGgvbDJjYXBfc29jay5jOjIwOTM6XHQuc29ja2V0cGFpclx0PSBzb2NrX25vX3NvY2tldHBhaXIsXG5uZXQvYmx1ZXRvb3RoL2wyY2FwX3NvY2suYy0yMDk0LVx0LnNodXRkb3duXHQ9IGwyY2FwX3NvY2tfc2h1dGRvd24sXG4tLVxubmV0L2JsdWV0b290aC9yZmNvbW0vc29jay5jPTEwMzE9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcmZjb21tX3NvY2tfb3BzID0ge1xuLS1cbm5ldC9ibHVldG9vdGgvcmZjb21tL3NvY2suYy0xMDQ3LVx0LnBvbGxcdFx0PSBidF9zb2NrX3BvbGwsXG5uZXQvYmx1ZXRvb3RoL3JmY29tbS9zb2NrLmM6MTA0ODpcdC5zb2NrZXRwYWlyXHQ9IHNvY2tfbm9fc29ja2V0cGFpcixcbm5ldC9ibHVldG9vdGgvcmZjb21tL3NvY2suYy0xMDQ5LVx0Lm1tYXBcdFx0PSBzb2NrX25vX21tYXAsXG4tLVxubmV0L2JsdWV0b290aC9zY28uYz0xNTk2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHNjb19zb2NrX29wcyA9IHtcbi0tXG5uZXQvYmx1ZXRvb3RoL3Njby5jLTE2MTAtXHQubW1hcFx0XHQ9IHNvY2tfbm9fbW1hcCxcbm5ldC9ibHVldG9vdGgvc2NvLmM6MTYxMTpcdC5zb2NrZXRwYWlyXHQ9IHNvY2tfbm9fc29ja2V0cGFpcixcbm5ldC9ibHVldG9vdGgvc2NvLmMtMTYxMi1cdC5zaHV0ZG93blx0PSBzY29fc29ja19zaHV0ZG93bixcbi0tXG5uZXQvY2FuL2JjbS5jPTIxMTA9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgYmNtX29wcyA9IHtcbi0tXG5uZXQvY2FuL2JjbS5jLTIxMTQtXHQuY29ubmVjdCAgICAgICA9IGJjbV9jb25uZWN0LFxubmV0L2Nhbi9iY20uYzoyMTE1Olx0LnNvY2tldHBhaXIgICAgPSBzb2NrX25vX3NvY2tldHBhaXIsXG5uZXQvY2FuL2JjbS5jLTIxMTYtXHQuYWNjZXB0ICAgICAgICA9IHNvY2tfbm9fYWNjZXB0LFxuLS1cbm5ldC9jYW4vaXNvdHAuYz0yMDA2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIGlzb3RwX29wcyA9IHtcbi0tXG5uZXQvY2FuL2lzb3RwLmMtMjAxMC1cdC5jb25uZWN0ID0gc29ja19ub19jb25uZWN0LFxubmV0L2Nhbi9pc290cC5jOjIwMTE6XHQuc29ja2V0cGFpciA9IHNvY2tfbm9fc29ja2V0cGFpcixcbm5ldC9jYW4vaXNvdHAuYy0yMDEyLVx0LmFjY2VwdCA9IHNvY2tfbm9fYWNjZXB0LFxuLS1cbm5ldC9jYW4vajE5Mzkvc29ja2V0LmM9MTM3NT1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBqMTkzOV9vcHMgPSB7XG4tLVxubmV0L2Nhbi9qMTkzOS9zb2NrZXQuYy0xMzc5LVx0LmNvbm5lY3QgPSBqMTkzOV9za19jb25uZWN0LFxubmV0L2Nhbi9qMTkzOS9zb2NrZXQuYzoxMzgwOlx0LnNvY2tldHBhaXIgPSBzb2NrX25vX3NvY2tldHBhaXIsXG5uZXQvY2FuL2oxOTM5L3NvY2tldC5jLTEzODEtXHQuYWNjZXB0ID0gc29ja19ub19hY2NlcHQsXG4tLVxubmV0L2Nhbi9yYXcuYz0xMDY4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHJhd19vcHMgPSB7XG4tLVxubmV0L2Nhbi9yYXcuYy0xMDcyLVx0LmNvbm5lY3QgICAgICAgPSBzb2NrX25vX2Nvbm5lY3QsXG5uZXQvY2FuL3Jhdy5jOjEwNzM6XHQuc29ja2V0cGFpciAgICA9IHNvY2tfbm9fc29ja2V0cGFpcixcbm5ldC9jYW4vcmF3LmMtMTA3NC1cdC5hY2NlcHQgICAgICAgID0gc29ja19ub19hY2NlcHQsXG4tLVxubmV0L2llZWU4MDIxNTQvc29ja2V0LmM9NDEwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIGllZWU4MDIxNTRfcmF3X29wcyA9IHtcbi0tXG5uZXQvaWVlZTgwMjE1NC9zb2NrZXQuYy00MTUtXHQuY29ubmVjdFx0ICAgPSBpZWVlODAyMTU0X3NvY2tfY29ubmVjdCxcbm5ldC9pZWVlODAyMTU0L3NvY2tldC5jOjQxNjpcdC5zb2NrZXRwYWlyXHQgICA9IHNvY2tfbm9fc29ja2V0cGFpcixcbm5ldC9pZWVlODAyMTU0L3NvY2tldC5jLTQxNy1cdC5hY2NlcHRcdFx0ICAgPSBzb2NrX25vX2FjY2VwdCxcbi0tXG5uZXQvaWVlZTgwMjE1NC9zb2NrZXQuYz05ODY9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgaWVlZTgwMjE1NF9kZ3JhbV9vcHMgPSB7XG4tLVxubmV0L2llZWU4MDIxNTQvc29ja2V0LmMtOTkxLVx0LmNvbm5lY3RcdCAgID0gaWVlZTgwMjE1NF9zb2NrX2Nvbm5lY3QsXG5uZXQvaWVlZTgwMjE1NC9zb2NrZXQuYzo5OTI6XHQuc29ja2V0cGFpclx0ICAgPSBzb2NrX25vX3NvY2tldHBhaXIsXG5uZXQvaWVlZTgwMjE1NC9zb2NrZXQuYy05OTMtXHQuYWNjZXB0XHRcdCAgID0gc29ja19ub19hY2NlcHQsXG4tLVxubmV0L2lwdjQvYWZfaW5ldC5jPTEwNjA9Y29uc3Qgc3RydWN0IHByb3RvX29wcyBpbmV0X3N0cmVhbV9vcHMgPSB7XG4tLVxubmV0L2lwdjQvYWZfaW5ldC5jLTEwNjUtXHQuY29ubmVjdFx0ICAgPSBpbmV0X3N0cmVhbV9jb25uZWN0LFxubmV0L2lwdjQvYWZfaW5ldC5jOjEwNjY6XHQuc29ja2V0cGFpclx0ICAgPSBzb2NrX25vX3NvY2tldHBhaXIsXG5uZXQvaXB2NC9hZl9pbmV0LmMtMTA2Ny1cdC5hY2NlcHRcdFx0ICAgPSBpbmV0X2FjY2VwdCxcbi0tXG5uZXQvaXB2NC9hZl9pbmV0LmM9MTA5Nj1jb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIGluZXRfZGdyYW1fb3BzID0ge1xuLS1cbm5ldC9pcHY0L2FmX2luZXQuYy0xMTAxLVx0LmNvbm5lY3RcdCAgID0gaW5ldF9kZ3JhbV9jb25uZWN0LFxubmV0L2lwdjQvYWZfaW5ldC5jOjExMDI6XHQuc29ja2V0cGFpclx0ICAgPSBzb2NrX25vX3NvY2tldHBhaXIsXG5uZXQvaXB2NC9hZl9pbmV0LmMtMTEwMy1cdC5hY2NlcHRcdFx0ICAgPSBzb2NrX25vX2FjY2VwdCxcbi0tXG5uZXQvaXB2NC9hZl9pbmV0LmM9MTEyOD1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBpbmV0X3NvY2tyYXdfb3BzID0ge1xuLS1cbm5ldC9pcHY0L2FmX2luZXQuYy0xMTMzLVx0LmNvbm5lY3RcdCAgID0gaW5ldF9kZ3JhbV9jb25uZWN0LFxubmV0L2lwdjQvYWZfaW5ldC5jOjExMzQ6XHQuc29ja2V0cGFpclx0ICAgPSBzb2NrX25vX3NvY2tldHBhaXIsXG5uZXQvaXB2NC9hZl9pbmV0LmMtMTEzNS1cdC5hY2NlcHRcdFx0ICAgPSBzb2NrX25vX2FjY2VwdCxcbi0tXG5uZXQvaXB2Ni9hZl9pbmV0Ni5jPTY2MD1jb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIGluZXQ2X3N0cmVhbV9vcHMgPSB7XG4tLVxubmV0L2lwdjYvYWZfaW5ldDYuYy02NjUtXHQuY29ubmVjdFx0ICAgPSBpbmV0X3N0cmVhbV9jb25uZWN0LFx0Lyogb2tcdFx0Ki9cbm5ldC9pcHY2L2FmX2luZXQ2LmM6NjY2Olx0LnNvY2tldHBhaXJcdCAgID0gc29ja19ub19zb2NrZXRwYWlyLFx0LyogYSBkbyBub3RoaW5nXHQqL1xubmV0L2lwdjYvYWZfaW5ldDYuYy02NjctXHQuYWNjZXB0XHRcdCAgID0gaW5ldF9hY2NlcHQsXHRcdC8qIG9rXHRcdCovXG4tLVxubmV0L2lwdjYvYWZfaW5ldDYuYz02OTY9Y29uc3Qgc3RydWN0IHByb3RvX29wcyBpbmV0Nl9kZ3JhbV9vcHMgPSB7XG4tLVxubmV0L2lwdjYvYWZfaW5ldDYuYy03MDEtXHQuY29ubmVjdFx0ICAgPSBpbmV0X2RncmFtX2Nvbm5lY3QsXHQvKiBva1x0XHQqL1xubmV0L2lwdjYvYWZfaW5ldDYuYzo3MDI6XHQuc29ja2V0cGFpclx0ICAgPSBzb2NrX25vX3NvY2tldHBhaXIsXHQvKiBhIGRvIG5vdGhpbmdcdCovXG5uZXQvaXB2Ni9hZl9pbmV0Ni5jLTcwMy1cdC5hY2NlcHRcdFx0ICAgPSBzb2NrX25vX2FjY2VwdCxcdFx0LyogYSBkbyBub3RoaW5nXHQqL1xuLS1cbm5ldC9pcHY2L3Jhdy5jPTEyODc9Y29uc3Qgc3RydWN0IHByb3RvX29wcyBpbmV0Nl9zb2NrcmF3X29wcyA9IHtcbi0tXG5uZXQvaXB2Ni9yYXcuYy0xMjkyLVx0LmNvbm5lY3RcdCAgID0gaW5ldF9kZ3JhbV9jb25uZWN0LFx0Lyogb2tcdFx0Ki9cbm5ldC9pcHY2L3Jhdy5jOjEyOTM6XHQuc29ja2V0cGFpclx0ICAgPSBzb2NrX25vX3NvY2tldHBhaXIsXHQvKiBhIGRvIG5vdGhpbmdcdCovXG5uZXQvaXB2Ni9yYXcuYy0xMjk0LVx0LmFjY2VwdFx0XHQgICA9IHNvY2tfbm9fYWNjZXB0LFx0XHQvKiBhIGRvIG5vdGhpbmdcdCovXG4tLVxubmV0L2l1Y3YvYWZfaXVjdi5jPTIyNDk9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgaXVjdl9zb2NrX29wcyA9IHtcbi0tXG5uZXQvaXVjdi9hZl9pdWN2LmMtMjI2Mi1cdC5tbWFwXHRcdD0gc29ja19ub19tbWFwLFxubmV0L2l1Y3YvYWZfaXVjdi5jOjIyNjM6XHQuc29ja2V0cGFpclx0PSBzb2NrX25vX3NvY2tldHBhaXIsXG5uZXQvaXVjdi9hZl9pdWN2LmMtMjI2NC1cdC5zaHV0ZG93blx0PSBpdWN2X3NvY2tfc2h1dGRvd24sXG4tLVxubmV0L2tjbS9rY21zb2NrLmM9MTc0NT1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBrY21fZGdyYW1fb3BzID0ge1xuLS1cbm5ldC9rY20va2Ntc29jay5jLTE3NTAtXHQuY29ubmVjdCA9XHRzb2NrX25vX2Nvbm5lY3QsXG5uZXQva2NtL2tjbXNvY2suYzoxNzUxOlx0LnNvY2tldHBhaXIgPVx0c29ja19ub19zb2NrZXRwYWlyLFxubmV0L2tjbS9rY21zb2NrLmMtMTc1Mi1cdC5hY2NlcHQgPVx0c29ja19ub19hY2NlcHQsXG4tLVxubmV0L2tjbS9rY21zb2NrLmM9MTc2Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBrY21fc2VxcGFja2V0X29wcyA9IHtcbi0tXG5uZXQva2NtL2tjbXNvY2suYy0xNzcxLVx0LmNvbm5lY3QgPVx0c29ja19ub19jb25uZWN0LFxubmV0L2tjbS9rY21zb2NrLmM6MTc3MjpcdC5zb2NrZXRwYWlyID1cdHNvY2tfbm9fc29ja2V0cGFpcixcbm5ldC9rY20va2Ntc29jay5jLTE3NzMtXHQuYWNjZXB0ID1cdHNvY2tfbm9fYWNjZXB0LFxuLS1cbm5ldC9rZXkvYWZfa2V5LmM9Mzc3Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBwZmtleV9vcHMgPSB7XG4tLVxubmV0L2tleS9hZl9rZXkuYy0zNzc4LVx0LmNvbm5lY3RcdD1cdHNvY2tfbm9fY29ubmVjdCxcbm5ldC9rZXkvYWZfa2V5LmM6Mzc3OTpcdC5zb2NrZXRwYWlyXHQ9XHRzb2NrX25vX3NvY2tldHBhaXIsXG5uZXQva2V5L2FmX2tleS5jLTM3ODAtXHQuYWNjZXB0XHRcdD1cdHNvY2tfbm9fYWNjZXB0LFxuLS1cbm5ldC9sMnRwL2wydHBfaXAuYz02Mjg9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgbDJ0cF9pcF9vcHMgPSB7XG4tLVxubmV0L2wydHAvbDJ0cF9pcC5jLTYzMy1cdC5jb25uZWN0XHQgICA9IGluZXRfZGdyYW1fY29ubmVjdCxcbm5ldC9sMnRwL2wydHBfaXAuYzo2MzQ6XHQuc29ja2V0cGFpclx0ICAgPSBzb2NrX25vX3NvY2tldHBhaXIsXG5uZXQvbDJ0cC9sMnRwX2lwLmMtNjM1LVx0LmFjY2VwdFx0XHQgICA9IHNvY2tfbm9fYWNjZXB0LFxuLS1cbm5ldC9sMnRwL2wydHBfaXA2LmM9NzU3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIGwydHBfaXA2X29wcyA9IHtcbi0tXG5uZXQvbDJ0cC9sMnRwX2lwNi5jLTc2Mi1cdC5jb25uZWN0XHQgICA9IGluZXRfZGdyYW1fY29ubmVjdCxcbm5ldC9sMnRwL2wydHBfaXA2LmM6NzYzOlx0LnNvY2tldHBhaXJcdCAgID0gc29ja19ub19zb2NrZXRwYWlyLFxubmV0L2wydHAvbDJ0cF9pcDYuYy03NjQtXHQuYWNjZXB0XHRcdCAgID0gc29ja19ub19hY2NlcHQsXG4tLVxubmV0L2wydHAvbDJ0cF9wcHAuYz0xNjg2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHBwcG9sMnRwX29wcyA9IHtcbi0tXG5uZXQvbDJ0cC9sMnRwX3BwcC5jLTE2OTEtXHQuY29ubmVjdFx0PSBwcHBvbDJ0cF9jb25uZWN0LFxubmV0L2wydHAvbDJ0cF9wcHAuYzoxNjkyOlx0LnNvY2tldHBhaXJcdD0gc29ja19ub19zb2NrZXRwYWlyLFxubmV0L2wydHAvbDJ0cF9wcHAuYy0xNjkzLVx0LmFjY2VwdFx0XHQ9IHNvY2tfbm9fYWNjZXB0LFxuLS1cbm5ldC9sbGMvYWZfbGxjLmM9MTIyMT1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBsbGNfdWlfb3BzID0ge1xuLS1cbm5ldC9sbGMvYWZfbGxjLmMtMTIyNi1cdC5jb25uZWN0ICAgICA9IGxsY191aV9jb25uZWN0LFxubmV0L2xsYy9hZl9sbGMuYzoxMjI3Olx0LnNvY2tldHBhaXIgID0gc29ja19ub19zb2NrZXRwYWlyLFxubmV0L2xsYy9hZl9sbGMuYy0xMjI4LVx0LmFjY2VwdCAgICAgID0gbGxjX3VpX2FjY2VwdCxcbi0tXG5uZXQvbWN0cC9hZl9tY3RwLmM9NjI4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIG1jdHBfZGdyYW1fb3BzID0ge1xuLS1cbm5ldC9tY3RwL2FmX21jdHAuYy02MzItXHQuY29ubmVjdFx0PSBtY3RwX2Nvbm5lY3QsXG5uZXQvbWN0cC9hZl9tY3RwLmM6NjMzOlx0LnNvY2tldHBhaXJcdD0gc29ja19ub19zb2NrZXRwYWlyLFxubmV0L21jdHAvYWZfbWN0cC5jLTYzNC1cdC5hY2NlcHRcdFx0PSBzb2NrX25vX2FjY2VwdCxcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYz00NzI0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIG1wdGNwX3N0cmVhbV9vcHMgPSB7XG4tLVxubmV0L21wdGNwL3Byb3RvY29sLmMtNDcyOS1cdC5jb25uZWN0XHQgICA9IGluZXRfc3RyZWFtX2Nvbm5lY3QsXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzo0NzMwOlx0LnNvY2tldHBhaXJcdCAgID0gc29ja19ub19zb2NrZXRwYWlyLFxubmV0L21wdGNwL3Byb3RvY29sLmMtNDczMS1cdC5hY2NlcHRcdFx0ICAgPSBtcHRjcF9zdHJlYW1fYWNjZXB0LFxuLS1cbm5ldC9tcHRjcC9wcm90b2NvbC5jPTQ4MzM9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgbXB0Y3BfdjZfc3RyZWFtX29wcyA9IHtcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy00ODM4LVx0LmNvbm5lY3RcdCAgID0gaW5ldF9zdHJlYW1fY29ubmVjdCxcbm5ldC9tcHRjcC9wcm90b2NvbC5jOjQ4Mzk6XHQuc29ja2V0cGFpclx0ICAgPSBzb2NrX25vX3NvY2tldHBhaXIsXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy00ODQwLVx0LmFjY2VwdFx0XHQgICA9IG1wdGNwX3N0cmVhbV9hY2NlcHQsXG4tLVxubmV0L25ldGxpbmsvYWZfbmV0bGluay5jPTI4MDg9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgbmV0bGlua19vcHMgPSB7XG4tLVxubmV0L25ldGxpbmsvYWZfbmV0bGluay5jLTI4MTMtXHQuY29ubmVjdCA9XHRuZXRsaW5rX2Nvbm5lY3QsXG5uZXQvbmV0bGluay9hZl9uZXRsaW5rLmM6MjgxNDpcdC5zb2NrZXRwYWlyID1cdHNvY2tfbm9fc29ja2V0cGFpcixcbm5ldC9uZXRsaW5rL2FmX25ldGxpbmsuYy0yODE1LVx0LmFjY2VwdCA9XHRzb2NrX25vX2FjY2VwdCxcbi0tXG5uZXQvbmZjL2xsY3Bfc29jay5jPTkyNz1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBsbGNwX3NvY2tfb3BzID0ge1xuLS1cbm5ldC9uZmMvbGxjcF9zb2NrLmMtOTMyLVx0LnJlbGVhc2UgICAgICAgID0gbGxjcF9zb2NrX3JlbGVhc2UsXG5uZXQvbmZjL2xsY3Bfc29jay5jOjkzMzpcdC5zb2NrZXRwYWlyICAgICA9IHNvY2tfbm9fc29ja2V0cGFpcixcbm5ldC9uZmMvbGxjcF9zb2NrLmMtOTM0LVx0LmFjY2VwdCAgICAgICAgID0gbGxjcF9zb2NrX2FjY2VwdCxcbi0tXG5uZXQvbmZjL2xsY3Bfc29jay5jPTk0Nz1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBsbGNwX3Jhd3NvY2tfb3BzID0ge1xuLS1cbm5ldC9uZmMvbGxjcF9zb2NrLmMtOTUyLVx0LnJlbGVhc2UgICAgICAgID0gbGxjcF9zb2NrX3JlbGVhc2UsXG5uZXQvbmZjL2xsY3Bfc29jay5jOjk1MzpcdC5zb2NrZXRwYWlyICAgICA9IHNvY2tfbm9fc29ja2V0cGFpcixcbm5ldC9uZmMvbGxjcF9zb2NrLmMtOTU0LVx0LmFjY2VwdCAgICAgICAgID0gc29ja19ub19hY2NlcHQsXG4tLVxubmV0L25mYy9yYXdzb2NrLmM9Mjc5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHJhd3NvY2tfb3BzID0ge1xuLS1cbm5ldC9uZmMvcmF3c29jay5jLTI4NC1cdC5jb25uZWN0ICAgICAgICA9IHJhd3NvY2tfY29ubmVjdCxcbm5ldC9uZmMvcmF3c29jay5jOjI4NTpcdC5zb2NrZXRwYWlyICAgICA9IHNvY2tfbm9fc29ja2V0cGFpcixcbm5ldC9uZmMvcmF3c29jay5jLTI4Ni1cdC5hY2NlcHQgICAgICAgICA9IHNvY2tfbm9fYWNjZXB0LFxuLS1cbm5ldC9uZmMvcmF3c29jay5jPTI5Nz1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyByYXdzb2NrX3Jhd19vcHMgPSB7XG4tLVxubmV0L25mYy9yYXdzb2NrLmMtMzAyLVx0LmNvbm5lY3QgICAgICAgID0gc29ja19ub19jb25uZWN0LFxubmV0L25mYy9yYXdzb2NrLmM6MzAzOlx0LnNvY2tldHBhaXIgICAgID0gc29ja19ub19zb2NrZXRwYWlyLFxubmV0L25mYy9yYXdzb2NrLmMtMzA0LVx0LmFjY2VwdCAgICAgICAgID0gc29ja19ub19hY2NlcHQsXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz00NzUzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHBhY2tldF9vcHNfc3BrdCA9IHtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTQ3NTgtXHQuY29ubmVjdCA9XHRzb2NrX25vX2Nvbm5lY3QsXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjQ3NTk6XHQuc29ja2V0cGFpciA9XHRzb2NrX25vX3NvY2tldHBhaXIsXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTQ3NjAtXHQuYWNjZXB0ID1cdHNvY2tfbm9fYWNjZXB0LFxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9NDc3Mj1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBwYWNrZXRfb3BzID0ge1xuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDc3Ny1cdC5jb25uZWN0ID1cdHNvY2tfbm9fY29ubmVjdCxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6NDc3ODpcdC5zb2NrZXRwYWlyID1cdHNvY2tfbm9fc29ja2V0cGFpcixcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDc3OS1cdC5hY2NlcHQgPVx0c29ja19ub19hY2NlcHQsXG4tLVxubmV0L3Bob25ldC9zb2NrZXQuYz00MzM9Y29uc3Qgc3RydWN0IHByb3RvX29wcyBwaG9uZXRfZGdyYW1fb3BzID0ge1xuLS1cbm5ldC9waG9uZXQvc29ja2V0LmMtNDM4LVx0LmNvbm5lY3RcdD0gc29ja19ub19jb25uZWN0LFxubmV0L3Bob25ldC9zb2NrZXQuYzo0Mzk6XHQuc29ja2V0cGFpclx0PSBzb2NrX25vX3NvY2tldHBhaXIsXG5uZXQvcGhvbmV0L3NvY2tldC5jLTQ0MC1cdC5hY2NlcHRcdFx0PSBzb2NrX25vX2FjY2VwdCxcbi0tXG5uZXQvcGhvbmV0L3NvY2tldC5jPTQ1MT1jb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHBob25ldF9zdHJlYW1fb3BzID0ge1xuLS1cbm5ldC9waG9uZXQvc29ja2V0LmMtNDU2LVx0LmNvbm5lY3RcdD0gcG5fc29ja2V0X2Nvbm5lY3QsXG5uZXQvcGhvbmV0L3NvY2tldC5jOjQ1NzpcdC5zb2NrZXRwYWlyXHQ9IHNvY2tfbm9fc29ja2V0cGFpcixcbm5ldC9waG9uZXQvc29ja2V0LmMtNDU4LVx0LmFjY2VwdFx0XHQ9IHBuX3NvY2tldF9hY2NlcHQsXG4tLVxubmV0L3FydHIvYWZfcXJ0ci5jPTEyOTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcXJ0cl9wcm90b19vcHMgPSB7XG4tLVxubmV0L3FydHIvYWZfcXJ0ci5jLTEyOTgtXHQuY29ubmVjdFx0PSBxcnRyX2Nvbm5lY3QsXG5uZXQvcXJ0ci9hZl9xcnRyLmM6MTI5OTpcdC5zb2NrZXRwYWlyXHQ9IHNvY2tfbm9fc29ja2V0cGFpcixcbm5ldC9xcnRyL2FmX3FydHIuYy0xMzAwLVx0LmFjY2VwdFx0XHQ9IHNvY2tfbm9fYWNjZXB0LFxuLS1cbm5ldC9yZHMvYWZfcmRzLmM9NjQ2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHJkc19wcm90b19vcHMgPSB7XG4tLVxubmV0L3Jkcy9hZl9yZHMuYy02NTEtXHQuY29ubmVjdCA9XHRyZHNfY29ubmVjdCxcbm5ldC9yZHMvYWZfcmRzLmM6NjUyOlx0LnNvY2tldHBhaXIgPVx0c29ja19ub19zb2NrZXRwYWlyLFxubmV0L3Jkcy9hZl9yZHMuYy02NTMtXHQuYWNjZXB0ID1cdHNvY2tfbm9fYWNjZXB0LFxuLS1cbm5ldC9yeHJwYy9hZl9yeHJwYy5jPTEwMDA9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcnhycGNfcnBjX29wcyA9IHtcbi0tXG5uZXQvcnhycGMvYWZfcnhycGMuYy0xMDA1LVx0LmNvbm5lY3RcdD0gcnhycGNfY29ubmVjdCxcbm5ldC9yeHJwYy9hZl9yeHJwYy5jOjEwMDY6XHQuc29ja2V0cGFpclx0PSBzb2NrX25vX3NvY2tldHBhaXIsXG5uZXQvcnhycGMvYWZfcnhycGMuYy0xMDA3LVx0LmFjY2VwdFx0XHQ9IHNvY2tfbm9fYWNjZXB0LFxuLS1cbm5ldC9zY3RwL2lwdjYuYz0xMDQzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIGluZXQ2X3NlcXBhY2tldF9vcHMgPSB7XG4tLVxubmV0L3NjdHAvaXB2Ni5jLTEwNDgtXHQuY29ubmVjdFx0ICAgPSBzY3RwX2luZXRfY29ubmVjdCxcbm5ldC9zY3RwL2lwdjYuYzoxMDQ5Olx0LnNvY2tldHBhaXJcdCAgID0gc29ja19ub19zb2NrZXRwYWlyLFxubmV0L3NjdHAvaXB2Ni5jLTEwNTAtXHQuYWNjZXB0XHRcdCAgID0gaW5ldF9hY2NlcHQsXG4tLVxubmV0L3NjdHAvcHJvdG9jb2wuYz0xMTA2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIGluZXRfc2VxcGFja2V0X29wcyA9IHtcbi0tXG5uZXQvc2N0cC9wcm90b2NvbC5jLTExMTEtXHQuY29ubmVjdFx0ICAgPSBzY3RwX2luZXRfY29ubmVjdCxcbm5ldC9zY3RwL3Byb3RvY29sLmM6MTExMjpcdC5zb2NrZXRwYWlyXHQgICA9IHNvY2tfbm9fc29ja2V0cGFpcixcbm5ldC9zY3RwL3Byb3RvY29sLmMtMTExMy1cdC5hY2NlcHRcdFx0ICAgPSBpbmV0X2FjY2VwdCxcbi0tXG5uZXQvc21jL2FmX3NtYy5jPTMzMzI9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgc21jX3NvY2tfb3BzID0ge1xuLS1cbm5ldC9zbWMvYWZfc21jLmMtMzMzNy1cdC5jb25uZWN0XHQ9IHNtY19jb25uZWN0LFxubmV0L3NtYy9hZl9zbWMuYzozMzM4Olx0LnNvY2tldHBhaXJcdD0gc29ja19ub19zb2NrZXRwYWlyLFxubmV0L3NtYy9hZl9zbWMuYy0zMzM5LVx0LmFjY2VwdFx0XHQ9IHNtY19hY2NlcHQsXG4tLVxubmV0L3NtYy9zbWNfaW5ldC5jPTM2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHNtY19pbmV0X3N0cmVhbV9vcHMgPSB7XG4tLVxubmV0L3NtYy9zbWNfaW5ldC5jLTQxLVx0LmNvbm5lY3RcdD0gc21jX2Nvbm5lY3QsXG5uZXQvc21jL3NtY19pbmV0LmM6NDI6XHQuc29ja2V0cGFpclx0PSBzb2NrX25vX3NvY2tldHBhaXIsXG5uZXQvc21jL3NtY19pbmV0LmMtNDMtXHQuYWNjZXB0XHRcdD0gc21jX2FjY2VwdCxcbi0tXG5uZXQvc21jL3NtY19pbmV0LmM9ODQ9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgc21jX2luZXQ2X3N0cmVhbV9vcHMgPSB7XG4tLVxubmV0L3NtYy9zbWNfaW5ldC5jLTg5LVx0LmNvbm5lY3RcdD0gc21jX2Nvbm5lY3QsXG5uZXQvc21jL3NtY19pbmV0LmM6OTA6XHQuc29ja2V0cGFpclx0PSBzb2NrX25vX3NvY2tldHBhaXIsXG5uZXQvc21jL3NtY19pbmV0LmMtOTEtXHQuYWNjZXB0XHRcdD0gc21jX2FjY2VwdCxcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYz0zMzU5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIG1zZ19vcHMgPSB7XG4tLVxubmV0L3RpcGMvc29ja2V0LmMtMzM2NC1cdC5jb25uZWN0XHQ9IHRpcGNfY29ubmVjdCxcbm5ldC90aXBjL3NvY2tldC5jOjMzNjU6XHQuc29ja2V0cGFpclx0PSB0aXBjX3NvY2tldHBhaXIsXG5uZXQvdGlwYy9zb2NrZXQuYy0zMzY2LVx0LmFjY2VwdFx0XHQ9IHNvY2tfbm9fYWNjZXB0LFxuLS1cbm5ldC90aXBjL3NvY2tldC5jPTMzNzk9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcGFja2V0X29wcyA9IHtcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0zMzg0LVx0LmNvbm5lY3RcdD0gdGlwY19jb25uZWN0LFxubmV0L3RpcGMvc29ja2V0LmM6MzM4NTpcdC5zb2NrZXRwYWlyXHQ9IHRpcGNfc29ja2V0cGFpcixcbm5ldC90aXBjL3NvY2tldC5jLTMzODYtXHQuYWNjZXB0XHRcdD0gdGlwY19hY2NlcHQsXG4tLVxubmV0L3RpcGMvc29ja2V0LmM9MzM5OT1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBzdHJlYW1fb3BzID0ge1xuLS1cbm5ldC90aXBjL3NvY2tldC5jLTM0MDQtXHQuY29ubmVjdFx0PSB0aXBjX2Nvbm5lY3QsXG5uZXQvdGlwYy9zb2NrZXQuYzozNDA1Olx0LnNvY2tldHBhaXJcdD0gdGlwY19zb2NrZXRwYWlyLFxubmV0L3RpcGMvc29ja2V0LmMtMzQwNi1cdC5hY2NlcHRcdFx0PSB0aXBjX2FjY2VwdCxcbi0tXG5uZXQvdW5peC9hZl91bml4LmM9OTc2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHVuaXhfc3RyZWFtX29wcyA9IHtcbi0tXG5uZXQvdW5peC9hZl91bml4LmMtOTgxLVx0LmNvbm5lY3QgPVx0dW5peF9zdHJlYW1fY29ubmVjdCxcbm5ldC91bml4L2FmX3VuaXguYzo5ODI6XHQuc29ja2V0cGFpciA9XHR1bml4X3NvY2tldHBhaXIsXG5uZXQvdW5peC9hZl91bml4LmMtOTgzLVx0LmFjY2VwdCA9XHR1bml4X2FjY2VwdCxcbi0tXG5uZXQvdW5peC9hZl91bml4LmM9MTAwMj1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyB1bml4X2RncmFtX29wcyA9IHtcbi0tXG5uZXQvdW5peC9hZl91bml4LmMtMTAwNy1cdC5jb25uZWN0ID1cdHVuaXhfZGdyYW1fY29ubmVjdCxcbm5ldC91bml4L2FmX3VuaXguYzoxMDA4Olx0LnNvY2tldHBhaXIgPVx0dW5peF9zb2NrZXRwYWlyLFxubmV0L3VuaXgvYWZfdW5peC5jLTEwMDktXHQuYWNjZXB0ID1cdHNvY2tfbm9fYWNjZXB0LFxuLS1cbm5ldC91bml4L2FmX3VuaXguYz0xMDI3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHVuaXhfc2VxcGFja2V0X29wcyA9IHtcbi0tXG5uZXQvdW5peC9hZl91bml4LmMtMTAzMi1cdC5jb25uZWN0ID1cdHVuaXhfc3RyZWFtX2Nvbm5lY3QsXG5uZXQvdW5peC9hZl91bml4LmM6MTAzMzpcdC5zb2NrZXRwYWlyID1cdHVuaXhfc29ja2V0cGFpcixcbm5ldC91bml4L2FmX3VuaXguYy0xMDM0LVx0LmFjY2VwdCA9XHR1bml4X2FjY2VwdCxcbi0tXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmM9MTY1Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyB2c29ja19kZ3JhbV9vcHMgPSB7XG4tLVxubmV0L3Ztd192c29jay9hZl92c29jay5jLTE2NTgtXHQuY29ubmVjdCA9IHZzb2NrX2RncmFtX2Nvbm5lY3QsXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmM6MTY1OTpcdC5zb2NrZXRwYWlyID0gc29ja19ub19zb2NrZXRwYWlyLFxubmV0L3Ztd192c29jay9hZl92c29jay5jLTE2NjAtXHQuYWNjZXB0ID0gc29ja19ub19hY2NlcHQsXG4tLVxubmV0L3Ztd192c29jay9hZl92c29jay5jPTI2NTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgdnNvY2tfc3RyZWFtX29wcyA9IHtcbi0tXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmMtMjY1OS1cdC5jb25uZWN0ID0gdnNvY2tfY29ubmVjdCxcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYzoyNjYwOlx0LnNvY2tldHBhaXIgPSBzb2NrX25vX3NvY2tldHBhaXIsXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmMtMjY2MS1cdC5hY2NlcHQgPSB2c29ja19hY2NlcHQsXG4tLVxubmV0L3Ztd192c29jay9hZl92c29jay5jPTI2NzY9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgdnNvY2tfc2VxcGFja2V0X29wcyA9IHtcbi0tXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmMtMjY4MS1cdC5jb25uZWN0ID0gdnNvY2tfY29ubmVjdCxcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYzoyNjgyOlx0LnNvY2tldHBhaXIgPSBzb2NrX25vX3NvY2tldHBhaXIsXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmMtMjY4My1cdC5hY2NlcHQgPSB2c29ja19hY2NlcHQsXG4tLVxubmV0L3gyNS9hZl94MjUuYz0xNzM0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHgyNV9wcm90b19vcHMgPSB7XG4tLVxubmV0L3gyNS9hZl94MjUuYy0xNzM5LVx0LmNvbm5lY3QgPVx0eDI1X2Nvbm5lY3QsXG5uZXQveDI1L2FmX3gyNS5jOjE3NDA6XHQuc29ja2V0cGFpciA9XHRzb2NrX25vX3NvY2tldHBhaXIsXG5uZXQveDI1L2FmX3gyNS5jLTE3NDEtXHQuYWNjZXB0ID1cdHgyNV9hY2NlcHQsXG4tLVxubmV0L3hkcC94c2suYz0yMTU5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHhza19wcm90b19vcHMgPSB7XG4tLVxubmV0L3hkcC94c2suYy0yMTY0LVx0LmNvbm5lY3RcdD0gc29ja19ub19jb25uZWN0LFxubmV0L3hkcC94c2suYzoyMTY1Olx0LnNvY2tldHBhaXJcdD0gc29ja19ub19zb2NrZXRwYWlyLFxubmV0L3hkcC94c2suYy0yMTY2LVx0LmFjY2VwdFx0XHQ9IHNvY2tfbm9fYWNjZXB0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxOTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTE2MgoJCQkJCQkJb3V0cHV0OiAxMTQKCQkJCQkJCXRob3VnaHRzOiA1MzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIGBzb2NrZXRwYWlyYCBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGRpZ2dpbmcgaW50byB0aGUgYHNvY2tldHBhaXJgIGltcGxlbWVudGF0aW9uLCBzcGVjaWZpY2FsbHkgbG9va2luZyBhdCBjaGFuZ2VzIHJlbGF0ZWQgdG8gQUZfVU5JWCBhbmQgVElQQy4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgYF9fc3lzX3NvY2tldHBhaXJgIGZ1bmN0aW9uIHdpdGhpbiBgbmV0L3NvY2tldC5jYCwgd2hpY2gsIGFzIEkgdW5kZXJzdGFuZCBpdCwgaXMgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgYHN5c19zb2NrZXRwYWlyYCBzeXN0ZW0gY2FsbC4gSSBhbHNvIG5vdGVkIHRoYXQgYF9fc3lzX3NvY2tldHBhaXJgIGlzIGRpcmVjdGx5IGNhbGxlZCBieSBgX19kb19zeXNfc29ja2V0cGFpcmAsIG9yIHBvdGVudGlhbGx5IGBfX3NlX3N5c19zb2NrZXRwYWlyYCBkZXBlbmRpbmcgb24gdGhlIGV4YWN0IGtlcm5lbCB2ZXJzaW9uLgoKSSYjMzk7dmUgY29uZmlybWVkIHRoZSBkZWNsYXJhdGlvbjogYGludCBfX3N5c19zb2NrZXRwYWlyKGludCBmYW1pbHksIGludCB0eXBlLCBpbnQgcHJvdG9jb2wsIGludCBfX3VzZXIgKnVzb2NrdmVjKWAgYW5kIGl0cyBhc3NvY2lhdGlvbiB3aXRoIGBTWVNDQUxMX0RFRklORTQoc29ja2V0cGFpciwgaW50LCBmYW1pbHksIGludCwgdHlwZSwgaW50LCBwcm90b2NvbCwgaW50IF9fdXNlciAqLCB1c29ja3ZlYylgIHdpdGhpbiBgbmV0L3NvY2tldC5jYC4KCkkmIzM5O3ZlIHNjYW5uZWQgdGhlIHJlbGV2YW50IGNvZGUgdG8gY29uZmlybSB0aGF0IGBfX3N5c19zb2NrZXRwYWlyYCwgYF9fZG9fc3lzX3NvY2tldHBhaXJgIChvciBhbnkgb2YgdGhlIHZhcmlhbnRzKSBhcmUgdGhlIGtleSBzeW1ib2xzIHRvIHRyYWNrLiBJIGFscmVhZHkga25vdyB0aGF0IHN5emthbGxlciBzcGVjaWZpY2FsbHkgcG9pbnRzIHRvIGBfX3N5c19zb2NrZXRwYWlyYCBhcyB0aGUgY3JpdGljYWwgZnVuY3Rpb24uCgpJJiMzOTt2ZSBhbHNvIHZlcmlmaWVkIHRoYXQgYENPTkZJR19ORVRgIGFuZCBgQ09ORklHX1VOSVhgIGFyZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBgQ09ORklHX05FVGAgaXMgdGhlIGJhc2UgZm9yIHRoZSBuZXR3b3JraW5nIHN1YnN5c3RlbSwgYW5kIGBDT05GSUdfVU5JWGAgc3BlY2lmaWNhbGx5IGVuYWJsZXMgdGhlIEFGX1VOSVggc29ja2V0cGFpciBmdW5jdGlvbmFsaXR5LgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEkmIzM5O3ZlIHJlLWV4YW1pbmVkIGFsbCB0aGUgZGV0YWlsczoKCiogICAqKldvcnRoRnV6emluZzoqKiBUcnVlLCBkZWZpbml0ZWx5LgoqICAgKipSZWFzb25pbmc6KiogVGhlIHBhdGNoJiMzOTtzIGNvcmUgbW9kaWZpY2F0aW9uIHNlZW1zIHRvIGJlIGEgcmVmYWN0b3Jpbmcgb2YgYF9fc3lzX3NvY2tldHBhaXIoKWAgd2hlcmUgaXQgZGVmZXJzIHRoZSB1c2VyLXNwYWNlIGZpbGUgZGVzY3JpcHRvciBjb3B5IChgcHV0X3VzZXIoKWApIHVudGlsICphZnRlciogc29ja2V0cyBhbmQgZmlsZXMgaGF2ZSBiZWVuIHN1Y2Nlc3NmdWxseSBjcmVhdGVkIGFuZCBhbGxvY2F0ZWQgdmlhIGBzb2NrX2FsbG9jX2ZpbGUoKWAuIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UsIGlmIGBwdXRfdXNlcigpYCBmYWlscywgaXQgbm93IHBlcmZvcm1zIHByb3BlciBjbGVhbnVwICh1c2luZyBgZnB1dCgpYCBhbmQgcmVsZWFzaW5nIGRlc2NyaXB0b3JzKS4gVGhpcyBhbHRlcnMgdGhlIHN5c2NhbGwmIzM5O3MgZXJyb3IgaGFuZGxpbmcgYW5kIHJlc291cmNlIGxpZmV0aW1lIG1hbmFnZW1lbnQgaW4gYSBjcml0aWNhbCBhcmVhIG9mIG5ldHdvcmsvVkZTIGludGVncmF0aW9uLgoqICAgKipGb2N1c1N5bWJvbHM6KiogU3BlY2lmaWNhbGx5IGBfX3N5c19zb2NrZXRwYWlyYC4gT3IgcG90ZW50aWFsbHkgYFsmIzM0O19fc3lzX3NvY2tldHBhaXImIzM0OywgJiMzNDt1bml4X3NvY2tldHBhaXImIzM0O11gIHRob3VnaCBgX19zeXNfc29ja2V0cGFpcmAgaXMgbW9yZSBkaXJlY3QuCiogICAqKkVuYWJsZUNvbmZpZ3M6KiogYFsmIzM0O05FVCYjMzQ7LCAmIzM0O1VOSVgmIzM0O11gLgoKSSYjMzk7dmUgZG91YmxlLWNoZWNrZWQgdGhhdCBldmVyeXRoaW5nIGFsaWducyB3aXRoIG15IHJlcXVpcmVtZW50czogYFdvcnRoRnV6emluZ2AgaXMgYSBib29sZWFuLCBgRm9jdXNTeW1ib2xzYCBpcyBhIHN0cmluZyBsaXN0LCBgRW5hYmxlQ29uZmlnc2AgaXMgYSBzdHJpbmcgbGlzdCwgYW5kIHRoZSBgUmVhc29uaW5nYCBwcm92aWRlcyBhIGNvbmNpc2UgZXhwbGFuYXRpb24uCgpFdmVyeXRoaW5nIGlzIGxvb2tpbmcgZ29vZC4gSSYjMzk7bSByZWFkeSB0byBtb3ZlIGZvcndhcmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE5OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVQmIzM0OywKICAgICYjMzQ7VU5JWCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fc3lzX3NvY2tldHBhaXImIzM0OywKICAgICYjMzQ7dW5peF9zb2NrZXRwYWlyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGVycm9yIGhhbmRsaW5nIGFuZCBkZXNjcmlwdG9yIGluc3RhbGxhdGlvbiBpbiBfX3N5c19zb2NrZXRwYWlyKCkgYnkgZGVmZXJyaW5nIHB1dF91c2VyKCkgdW50aWwgYWZ0ZXIgc29ja2V0IGFuZCBmaWxlIGFsbG9jYXRpb24sIGFuZCBhZGRpbmcgZnB1dCgpIGNsZWFudXAgaWYgcHVibGlzaGluZyB0byB1c2VyIHNwYWNlIGZhaWxzLiBUaGlzIGFmZmVjdHMgY29yZSBuZXR3b3JraW5nIHN5c2NhbGwgaGFuZGxpbmcgYW5kIHJlc291cmNlIG1hbmFnZW1lbnQsIHdoaWNoIGlzIGZ1bGx5IHJlYWNoYWJsZSBhbmQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUJiMzNDssCiAgICAmIzM0O1VOSVgmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX3N5c19zb2NrZXRwYWlyJiMzNDssCiAgICAmIzM0O3VuaXhfc29ja2V0cGFpciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBlcnJvciBoYW5kbGluZyBhbmQgZGVzY3JpcHRvciBpbnN0YWxsYXRpb24gaW4gX19zeXNfc29ja2V0cGFpcigpIGJ5IGRlZmVycmluZyBwdXRfdXNlcigpIHVudGlsIGFmdGVyIHNvY2tldCBhbmQgZmlsZSBhbGxvY2F0aW9uLCBhbmQgYWRkaW5nIGZwdXQoKSBjbGVhbnVwIGlmIHB1Ymxpc2hpbmcgdG8gdXNlciBzcGFjZSBmYWlscy4gVGhpcyBhZmZlY3RzIGNvcmUgbmV0d29ya2luZyBzeXNjYWxsIGhhbmRsaW5nIGFuZCByZXNvdXJjZSBtYW5hZ2VtZW50LCB3aGljaCBpcyBmdWxseSByZWFjaGFibGUgYW5kIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE5OjQ0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTk6NDQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgX19zeXNfc29ja2V0cGFpcmAgdG8gZGVmZXIgY29weWluZyBmaWxlIGRlc2NyaXB0b3IgbnVtYmVycyAoYGZkMWAgYW5kIGBmZDJgKSB0byB1c2Vyc3BhY2UgKGB1c29ja3ZlY2ApIHVudGlsIGFmdGVyIHNvY2tldCBjcmVhdGlvbiwgcHJvdG9jb2wgc2V0dXAsIGFuZCBmaWxlIGFsbG9jYXRpb24gaGF2ZSBzdWNjZWVkZWQuXG5cbi0gVGhlIHZhbHVlcyB3cml0dGVuIHRvIHVzZXJzcGFjZSB2aWEgYHB1dF91c2VyYCBhcmUgc2ltcGxlIHNjYWxhciBpbnRlZ2VycyAoYGZkMWAsIGBmZDJgKSByZXR1cm5lZCBkaXJlY3RseSBmcm9tIGBnZXRfdW51c2VkX2ZkX2ZsYWdzKClgLCB3aGljaCBhcmUgZnVsbHkgaW5pdGlhbGl6ZWQgYW5kIHZhbGlkYXRlZCBwcmlvciB0byB1c2UuXG4tIE5vIG5ldyB1bmluaXRpYWxpemVkIGhlYXAgb3Igc3RhY2sgYnVmZmVycywgdW5pbml0aWFsaXplZCBzdHJ1Y3QgcGFkZGluZywgb3IgdW5pbml0aWFsaXplZCB2YXJpYWJsZSByZWFkcyBhcmUgaW50cm9kdWNlZC5cbi0gQW55IHBvdGVudGlhbCByZXNvdXJjZSBtYW5hZ2VtZW50IG9yIGxpZmVjeWNsZSBidWdzIChzdWNoIGFzIGZkL2ZpbGUgY2xlYW51cCBvciByZWZjb3VudGluZyBpc3N1ZXMgb24gZXJyb3IgcGF0aHMpIGFyZSBhZGRyZXNzZWQgYnkgc3RhbmRhcmQgc2FuaXRpemVycyAoS0FTQU4sIHJlZmNvdW50IGNoZWNrcykuXG5cbkNvbnNlcXVlbnRseSwgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIG9yIGluZm8tbGVha3MsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDU1M2UxNTJkOGM2MzNkNjUzYjBhNTRkNDEyNzM0NGY0MDkyOWI3NjMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IFNlcCAxMCAxOTo0Mzo1NiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9zb2NrZXQuYyBiL25ldC9zb2NrZXQuYwppbmRleCBjMDVkODZlNjNhYmY3Li40Y2I4NjYyODY5ZjA5IDEwMDY0NAotLS0gYS9uZXQvc29ja2V0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NvY2tldC5jCkBAIC0xODUxLDEwICYjNDM7MTg1MSw3IEBAIGludCBfX3N5c19zb2NrZXRwYWlyKGludCBmYW1pbHksIGludCB0eXBlLCBpbnQgcHJvdG9jb2wsIGludCBfX3VzZXIgKnVzb2NrdmVjKQogCWlmIChTT0NLX05PTkJMT0NLICE9IE9fTk9OQkxPQ0sgJmFtcDsmYW1wOyAoZmxhZ3MgJmFtcDsgU09DS19OT05CTE9DSykpCiAJCWZsYWdzID0gKGZsYWdzICZhbXA7IH5TT0NLX05PTkJMT0NLKSB8IE9fTk9OQkxPQ0s7CiAKLQkvKgotCSAqIHJlc2VydmUgZGVzY3JpcHRvcnMgYW5kIG1ha2Ugc3VyZSB3ZSB3b24mIzM5O3QgZmFpbAotCSAqIHRvIHJldHVybiB0aGVtIHRvIHVzZXJsYW5kLgotCSAqLwomIzQzOwkvKiBSZXNlcnZlIGJvdGggZGVzY3JpcHRvcnMgYmVmb3JlIGNyZWF0aW5nIHRoZSBzb2NrZXRzLiAqLwogCWZkMSA9IGdldF91bnVzZWRfZmRfZmxhZ3MoZmxhZ3MpOwogCWlmICh1bmxpa2VseShmZDEgJmx0OyAwKSkKIAkJcmV0dXJuIGZkMTsKQEAgLTE4NjUsMTQgJiM0MzsxODYyLDYgQEAgaW50IF9fc3lzX3NvY2tldHBhaXIoaW50IGZhbWlseSwgaW50IHR5cGUsIGludCBwcm90b2NvbCwgaW50IF9fdXNlciAqdXNvY2t2ZWMpCiAJCXJldHVybiBmZDI7CiAJfQogCi0JZXJyID0gcHV0X3VzZXIoZmQxLCAmYW1wO3Vzb2NrdmVjWzBdKTsKLQlpZiAoZXJyKQotCQlnb3RvIG91dDsKLQotCWVyciA9IHB1dF91c2VyKGZkMiwgJmFtcDt1c29ja3ZlY1sxXSk7Ci0JaWYgKGVycikKLQkJZ290byBvdXQ7Ci0KIAkvKgogCSAqIE9idGFpbiB0aGUgZmlyc3Qgc29ja2V0IGFuZCBjaGVjayBpZiB0aGUgdW5kZXJseWluZyBwcm90b2NvbAogCSAqIHN1cHBvcnRzIHRoZSBzb2NrZXRwYWlyIGNhbGwuCkBAIC0xOTE2LDYgJiM0MzsxOTA1LDE2IEBAIGludCBfX3N5c19zb2NrZXRwYWlyKGludCBmYW1pbHksIGludCB0eXBlLCBpbnQgcHJvdG9jb2wsIGludCBfX3VzZXIgKnVzb2NrdmVjKQogCQlnb3RvIG91dDsKIAl9CiAKJiM0MzsJLyogUHVibGlzaCB0aGUgZGVzY3JpcHRvcnMgbm93IHRoYXQgaXQgc2hvdWxkbiYjMzk7dCBmYWlsLiAqLwomIzQzOwllcnIgPSBwdXRfdXNlcihmZDEsICZhbXA7dXNvY2t2ZWNbMF0pOwomIzQzOwlpZiAoIWVycikKJiM0MzsJCWVyciA9IHB1dF91c2VyKGZkMiwgJmFtcDt1c29ja3ZlY1sxXSk7CiYjNDM7CWlmIChlcnIpIHsKJiM0MzsJCWZwdXQobmV3ZmlsZTIpOwomIzQzOwkJZnB1dChuZXdmaWxlMSk7CiYjNDM7CQlnb3RvIG91dDsKJiM0MzsJfQomIzQzOwogCWF1ZGl0X2ZkX3BhaXIoZmQxLCBmZDIpOwogCiAJZmRfaW5zdGFsbChmZDEsIG5ld2ZpbGUxKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE5OjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0NTUKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgU29ja2V0cGFpciBEaXZlKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGNoYW5nZWQuIEZpcnN0IHRoaW5ncyBmaXJzdCwgbGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IHRoZSBkaWZmLiBTcGVjaWZpY2FsbHksIEkgc2VlIGFsdGVyYXRpb25zIHRvIGBfX3N5c19zb2NrZXRwYWlyYCB3aXRoaW4gYG5ldC9zb2NrZXQuY2AuIFRoaXMgaXNuJiMzOTt0IHVuZXhwZWN0ZWQsIHNvY2tldHBhaXIgaXMgYSB0cmlja3kgZnVuY3Rpb24sIGFuZCBhbnkgbW9kaWZpY2F0aW9uIHdhcnJhbnRzIGNhcmVmdWwgc2NydXRpbnkuIE5vdywgbGV0JiMzOTtzIHpvb20gaW4gb24gYG5ldC9zb2NrZXQuY2AuIEkmIzM5O20gZ29pbmcgdG8ganVtcCBpbiBhcm91bmQgbGluZSAxODUxLiBNeSBzcGlkZXIgc2Vuc2VzIGFyZSB0aW5nbGluZywgSSBoYXZlIGEgZ29vZCBmZWVsaW5nIHRoYXQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgd2lsbCBzaGVkIGxpZ2h0IG9uIHdoYXQmIzM5O3MgZHJpdmluZyB0aGlzIGNoYW5nZS4gTGV0JiMzOTtzIHNlZSB3aGF0IGludGVyZXN0aW5nIHRpZGJpdHMgYW5kIGdvdGNoYXMgYXJlIGx1cmtpbmcgaW4gdGhpcyBzZWN0aW9uIG9mIHRoZSBjb2RlYmFzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTk6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvc29ja2V0LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxODQwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxODQwOlx0e1xuMTg0MTpcdFx0c3RydWN0IHNvY2tldCAqc29jazEsICpzb2NrMjtcbjE4NDI6XHRcdGludCBmZDEsIGZkMiwgZXJyO1xuMTg0MzpcdFx0c3RydWN0IGZpbGUgKm5ld2ZpbGUxLCAqbmV3ZmlsZTI7XG4xODQ0Olx0XHRpbnQgZmxhZ3M7XG4xODQ1Olx0XG4xODQ2Olx0XHRmbGFncyA9IHR5cGUgXHUwMDI2IH5TT0NLX1RZUEVfTUFTSztcbjE4NDc6XHRcdGlmIChmbGFncyBcdTAwMjYgfihTT0NLX0NMT0VYRUMgfCBTT0NLX05PTkJMT0NLKSlcbjE4NDg6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4xODQ5Olx0XHR0eXBlIFx1MDAyNj0gU09DS19UWVBFX01BU0s7XG4xODUwOlx0XG4xODUxOlx0XHRpZiAoU09DS19OT05CTE9DSyAhPSBPX05PTkJMT0NLIFx1MDAyNlx1MDAyNiAoZmxhZ3MgXHUwMDI2IFNPQ0tfTk9OQkxPQ0spKVxuMTg1MjpcdFx0XHRmbGFncyA9IChmbGFncyBcdTAwMjYgflNPQ0tfTk9OQkxPQ0spIHwgT19OT05CTE9DSztcbjE4NTM6XHRcbjE4NTQ6XHRcdC8qIFJlc2VydmUgYm90aCBkZXNjcmlwdG9ycyBiZWZvcmUgY3JlYXRpbmcgdGhlIHNvY2tldHMuICovXG4xODU1Olx0XHRmZDEgPSBnZXRfdW51c2VkX2ZkX2ZsYWdzKGZsYWdzKTtcbjE4NTY6XHRcdGlmICh1bmxpa2VseShmZDEgXHUwMDNjIDApKVxuMTg1NzpcdFx0XHRyZXR1cm4gZmQxO1xuMTg1ODpcdFxuMTg1OTpcdFx0ZmQyID0gZ2V0X3VudXNlZF9mZF9mbGFncyhmbGFncyk7XG4xODYwOlx0XHRpZiAodW5saWtlbHkoZmQyIFx1MDAzYyAwKSkge1xuMTg2MTpcdFx0XHRwdXRfdW51c2VkX2ZkKGZkMSk7XG4xODYyOlx0XHRcdHJldHVybiBmZDI7XG4xODYzOlx0XHR9XG4xODY0Olx0XG4xODY1Olx0XHQvKlxuMTg2NjpcdFx0ICogT2J0YWluIHRoZSBmaXJzdCBzb2NrZXQgYW5kIGNoZWNrIGlmIHRoZSB1bmRlcmx5aW5nIHByb3RvY29sXG4xODY3Olx0XHQgKiBzdXBwb3J0cyB0aGUgc29ja2V0cGFpciBjYWxsLlxuMTg2ODpcdFx0ICovXG4xODY5Olx0XG4xODcwOlx0XHRlcnIgPSBzb2NrX2NyZWF0ZShmYW1pbHksIHR5cGUsIHByb3RvY29sLCBcdTAwMjZzb2NrMSk7XG4xODcxOlx0XHRpZiAodW5saWtlbHkoZXJyIFx1MDAzYyAwKSlcbjE4NzI6XHRcdFx0Z290byBvdXQ7XG4xODczOlx0XG4xODc0Olx0XHRlcnIgPSBzb2NrX2NyZWF0ZShmYW1pbHksIHR5cGUsIHByb3RvY29sLCBcdTAwMjZzb2NrMik7XG4xODc1Olx0XHRpZiAodW5saWtlbHkoZXJyIFx1MDAzYyAwKSkge1xuMTg3NjpcdFx0XHRzb2NrX3JlbGVhc2Uoc29jazEpO1xuMTg3NzpcdFx0XHRnb3RvIG91dDtcbjE4Nzg6XHRcdH1cbjE4Nzk6XHRcbjE4ODA6XHRcdGVyciA9IHNlY3VyaXR5X3NvY2tldF9zb2NrZXRwYWlyKHNvY2sxLCBzb2NrMik7XG4xODgxOlx0XHRpZiAodW5saWtlbHkoZXJyKSkge1xuMTg4MjpcdFx0XHRzb2NrX3JlbGVhc2Uoc29jazIpO1xuMTg4MzpcdFx0XHRzb2NrX3JlbGVhc2Uoc29jazEpO1xuMTg4NDpcdFx0XHRnb3RvIG91dDtcbjE4ODU6XHRcdH1cbjE4ODY6XHRcbjE4ODc6XHRcdGVyciA9IFJFQURfT05DRShzb2NrMS1cdTAwM2VvcHMpLVx1MDAzZXNvY2tldHBhaXIoc29jazEsIHNvY2syKTtcbjE4ODg6XHRcdGlmICh1bmxpa2VseShlcnIgXHUwMDNjIDApKSB7XG4xODg5Olx0XHRcdHNvY2tfcmVsZWFzZShzb2NrMik7XG4xODkwOlx0XHRcdHNvY2tfcmVsZWFzZShzb2NrMSk7XG4xODkxOlx0XHRcdGdvdG8gb3V0O1xuMTg5MjpcdFx0fVxuMTg5MzpcdFxuMTg5NDpcdFx0bmV3ZmlsZTEgPSBzb2NrX2FsbG9jX2ZpbGUoc29jazEsIGZsYWdzLCBOVUxMKTtcbjE4OTU6XHRcdGlmIChJU19FUlIobmV3ZmlsZTEpKSB7XG4xODk2Olx0XHRcdGVyciA9IFBUUl9FUlIobmV3ZmlsZTEpO1xuMTg5NzpcdFx0XHRzb2NrX3JlbGVhc2Uoc29jazIpO1xuMTg5ODpcdFx0XHRnb3RvIG91dDtcbjE4OTk6XHRcdH1cbjE5MDA6XHRcbjE5MDE6XHRcdG5ld2ZpbGUyID0gc29ja19hbGxvY19maWxlKHNvY2syLCBmbGFncywgTlVMTCk7XG4xOTAyOlx0XHRpZiAoSVNfRVJSKG5ld2ZpbGUyKSkge1xuMTkwMzpcdFx0XHRlcnIgPSBQVFJfRVJSKG5ld2ZpbGUyKTtcbjE5MDQ6XHRcdFx0ZnB1dChuZXdmaWxlMSk7XG4xOTA1Olx0XHRcdGdvdG8gb3V0O1xuMTkwNjpcdFx0fVxuMTkwNzpcdFxuMTkwODpcdFx0LyogUHVibGlzaCB0aGUgZGVzY3JpcHRvcnMgbm93IHRoYXQgaXQgc2hvdWxkbiYjMzk7dCBmYWlsLiAqL1xuMTkwOTpcdFx0ZXJyID0gcHV0X3VzZXIoZmQxLCBcdTAwMjZ1c29ja3ZlY1swXSk7XG4xOTEwOlx0XHRpZiAoIWVycilcbjE5MTE6XHRcdFx0ZXJyID0gcHV0X3VzZXIoZmQyLCBcdTAwMjZ1c29ja3ZlY1sxXSk7XG4xOTEyOlx0XHRpZiAoZXJyKSB7XG4xOTEzOlx0XHRcdGZwdXQobmV3ZmlsZTIpO1xuMTkxNDpcdFx0XHRmcHV0KG5ld2ZpbGUxKTtcbjE5MTU6XHRcdFx0Z290byBvdXQ7XG4xOTE2Olx0XHR9XG4xOTE3Olx0XG4xOTE4Olx0XHRhdWRpdF9mZF9wYWlyKGZkMSwgZmQyKTtcbjE5MTk6XHRcbjE5MjA6XHRcdGZkX2luc3RhbGwoZmQxLCBuZXdmaWxlMSk7XG4xOTIxOlx0XHRmZF9pbnN0YWxsKGZkMiwgbmV3ZmlsZTIpO1xuMTkyMjpcdFx0cmV0dXJuIDA7XG4xOTIzOlx0XG4xOTI0Olx0b3V0OlxuMTkyNTpcdFx0cHV0X3VudXNlZF9mZChmZDIpO1xuMTkyNjpcdFx0cHV0X3VudXNlZF9mZChmZDEpO1xuMTkyNzpcdFx0cmV0dXJuIGVycjtcbjE5Mjg6XHR9XG4xOTI5Olx0XG4xOTMwOlx0U1lTQ0FMTF9ERUZJTkU0KHNvY2tldHBhaXIsIGludCwgZmFtaWx5LCBpbnQsIHR5cGUsIGludCwgcHJvdG9jb2wsXG4xOTMxOlx0XHRcdGludCBfX3VzZXIgKiwgdXNvY2t2ZWMpXG4xOTMyOlx0e1xuMTkzMzpcdFx0cmV0dXJuIF9fc3lzX3NvY2tldHBhaXIoZmFtaWx5LCB0eXBlLCBwcm90b2NvbCwgdXNvY2t2ZWMpO1xuMTkzNDpcdH1cbjE5MzU6XHRcbjE5MzY6XHRpbnQgX19zeXNfYmluZF9zb2NrZXQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKmFkZHJlc3MsXG4xOTM3Olx0XHRcdCAgICAgIGludCBhZGRybGVuKVxuMTkzODpcdHtcbjE5Mzk6XHRcdGludCBlcnI7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE5OjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxMDkKCQkJCQkJCW91dHB1dDogMjEzCgkJCQkJCQl0aG91Z2h0czogNjE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBTb2NrZXRwYWlyIFBhdGNoIGFuZCBLTVNBTiBBcHBsaWNhYmlsaXR5KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBjb3JlIGlzc3VlIGlzIHRoZSBvcmlnaW5hbCBvcmRlciBvZiBvcGVyYXRpb25zIGluIGBfX3N5c19zb2NrZXRwYWlyYC4gVGhlIG9sZCBjb2RlIHdhcyB3cml0aW5nIGZpbGUgZGVzY3JpcHRvciBudW1iZXJzIHRvIHVzZXIgc3BhY2UgKmJlZm9yZSogYWN0dWFsbHkgY29tcGxldGluZyBzb2NrZXQgY3JlYXRpb24gYW5kIGZpbGUgYWxsb2NhdGlvbiwgaW5jbHVkaW5nIGFsbCB0aGUgc2VjdXJpdHkgY2hlY2tzIGFuZCBwcm90b2NvbCBjYWxsYmFja3MuIFRoaXMgY3JlYXRlZCBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBhbmQgYSBwb3NzaWJsZSBpbmZvcm1hdGlvbiBsZWFrOiBpZiBzb21ldGhpbmcgd2VudCB3cm9uZyAqYWZ0ZXIqIGBwdXRfdXNlcmAgYnV0ICpiZWZvcmUqIHRoZSBzZXR1cCB3YXMgY29tcGxldGUsIHVzZXIgc3BhY2Ugd291bGQgaGF2ZSBvYnNlcnZlZCB0aGVzZSBwb3RlbnRpYWxseSBpbnZhbGlkIGZpbGUgZGVzY3JpcHRvcnMuIFRoZSBwYXRjaCBhaW1zIHRvIGZpeCB0aGlzLgoKTm93LCB0aGUgcGF0Y2ggbW92ZXMgdGhvc2UgYHB1dF91c2VyYCBjYWxsc+KAlHdoZXJlIHdlIHdyaXRlIHRoZSBmaWxlIGRlc2NyaXB0b3JzIHRvIHVzZXIgc3BhY2XigJR0byB0aGUgZW5kLCAqcmlnaHQqIGJlZm9yZSB3ZSBpbnN0YWxsIHRoZSBmaWxlIGRlc2NyaXB0b3JzIHVzaW5nIGBmZF9pbnN0YWxsYC4gVGhpcyBpcyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgZml4IHRvIGFkZHJlc3MgdGhpcyBmbGF3LiBFc3NlbnRpYWxseSwgaWYgYSBmYWlsdXJlIG9jY3VycywgdGhlIGNvZGUgY29ycmVjdGx5IGhhbmRsZXMgdGhpcyBhbmQgY2xlYW5zIHVwIHRoZSBuZXdseS1jcmVhdGVkIGZpbGVzIGFuZCBzb2NrZXRzLgoKTXkgbmV4dCB0YXNrIGlzIHRvIHZlcmlmeSB0aGF0IHRoaXMgY2hhbmdlIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3Vlcy4gTGV0JiMzOTtzIHdhbGsgdGhyb3VnaCB0aGUgdmFyaWFibGVzIGludm9sdmVkOgoKKiAgIGBmZDFgIGFuZCBgZmQyYDogVGhlc2UgYXJlIGludGVnZXJzIHJldHVybmVkIGZyb20gYGdldF91bnVzZWRfZmRfZmxhZ3MoZmxhZ3MpYC4gQ3J1Y2lhbGx5LCB0aGV5IGFyZSBjaGVja2VkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBjYWxsIGZvciBlcnJvciBjb25kaXRpb25zIGFuZCBhcmUgdGhlcmVmb3JlIGRlZmluaXRlbHkgaW5pdGlhbGl6ZWQgaW50ZWdlciB2YWx1ZXMuIFRoZSBzdWJzZXF1ZW50IGBwdXRfdXNlcmAgY2FsbHMgc2ltcGx5IHdyaXRlIHRoZXNlIGluaXRpYWxpemVkIGludGVnZXJzIHRvIHVzZXIgc3BhY2UuCgoqICAgTm8gY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2l0aCBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIGZpZWxkcyBhcmUgdXNlZC4gVGhlIHZhcmlhYmxlcyBhcmUgcHJpbWl0aXZlIHR5cGVzLCB3aGljaCBtZWFucyB0aGVyZSBhcmUgbm8gY29uY2VybnMgYWJvdXQgdW5pbml0aWFsaXplZCBzdHJ1Y3QgZmllbGRzLCBzdGFjayB2YXJpYWJsZXMsIG9yIHBvdGVudGlhbCBpbmZvcm1hdGlvbiBsZWFrcyBvZiB1bmluaXRpYWxpemVkIGRhdGEuCgpUaGlzIGlzIGFsbCBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGFuZCBJIGFtIGNvbmZpZGVudCB0aGF0IEtNU0FOIGRvZXNuJiMzOTt0IG5lZWQgdG8gYmUgY29uY2VybmVkIHdpdGggdGhpcyBwYXRjaC4gVGhpcyBjaGFuZ2Ugb25seSByZW9yZGVycyB0aGUgZXJyb3IgaGFuZGxpbmcgYW5kIHRoZSB0aW1pbmcgb2YgYHB1dF91c2VyYCBhbmQgYGZwdXRgIGNhbGxzLCBzbyB0aGlzIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgbmV3IHJpc2tzLCBzdWNoIGFzIGlzc3VlcyB3aXRoIGRvdWJsZSBgZnB1dGAsIHVzZS1hZnRlci1mcmVlLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSB0aGF0IGNhbiBiZSBleHBvc2VkLiBGdXJ0aGVybW9yZSwgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBtZWNoYW5pc21zIHdpbGwgYmUgYWJsZSB0byBjYXRjaCBhbnkgcG90ZW50aWFsIGlzc3Vlcy4KClRoZXJlZm9yZSwgc2luY2UgdGhlIHZhcmlhYmxlcyBhcmUgZXhwbGljaXRseSBpbml0aWFsaXplZCBiZWZvcmUgYmVpbmcgd3JpdHRlbiB0byB1c2VyIHNwYWNlLCBhbmQgdGhlIGNoYW5nZXMgYXJlIGxpbWl0ZWQgdG8gY29udHJvbCBmbG93IGFuZCB0aGUgdGltaW5nIG9mIGBwdXRfdXNlcmAsIEkmIzM5O3ZlIHZlcmlmaWVkIHRoYXQgdGhlIGBOZWVkc0tNU0FOYCBmbGFnIGNhbiByZW1haW4gYGZhbHNlYC4KCkdpdmVuIHRoaXMsIEkgYW0gY29tZm9ydGFibGUgd3JpdGluZyBhIGRldGFpbGVkIGFuZCBzdHJ1Y3R1cmVkIEtNU0FOUmVhc29uaW5nIGp1c3RpZnlpbmcgdGhpcyBjb25jbHVzaW9uLiBUaGUgbWFpbiBnb2FsIGhlcmUgaXMgdG8gZW5zdXJlIHRoYXQgdGhlIHVzZXIgY2FuIHVuZGVyc3RhbmQgd2h5IHRoZSBwYXRjaCBpcyBjb25zaWRlcmVkIHNhZmUgaW4gdGVybXMgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE5OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBfX3N5c19zb2NrZXRwYWlyYCB0byBkZWZlciBjb3B5aW5nIGZpbGUgZGVzY3JpcHRvciBudW1iZXJzIChgZmQxYCBhbmQgYGZkMmApIHRvIHVzZXJzcGFjZSAoYHVzb2NrdmVjYCkgdW50aWwgYWZ0ZXIgc29ja2V0IGNyZWF0aW9uLCBwcm90b2NvbCBzZXR1cCwgYW5kIGZpbGUgYWxsb2NhdGlvbiBoYXZlIHN1Y2NlZWRlZC5cblxuLSBUaGUgdmFsdWVzIHdyaXR0ZW4gdG8gdXNlcnNwYWNlIHZpYSBgcHV0X3VzZXJgIGFyZSBzaW1wbGUgc2NhbGFyIGludGVnZXJzIChgZmQxYCwgYGZkMmApIHJldHVybmVkIGRpcmVjdGx5IGZyb20gYGdldF91bnVzZWRfZmRfZmxhZ3MoKWAsIHdoaWNoIGFyZSBmdWxseSBpbml0aWFsaXplZCBhbmQgdmFsaWRhdGVkIHByaW9yIHRvIHVzZS5cbi0gTm8gbmV3IHVuaW5pdGlhbGl6ZWQgaGVhcCBvciBzdGFjayBidWZmZXJzLCB1bmluaXRpYWxpemVkIHN0cnVjdCBwYWRkaW5nLCBvciB1bmluaXRpYWxpemVkIHZhcmlhYmxlIHJlYWRzIGFyZSBpbnRyb2R1Y2VkLlxuLSBBbnkgcG90ZW50aWFsIHJlc291cmNlIG1hbmFnZW1lbnQgb3IgbGlmZWN5Y2xlIGJ1Z3MgKHN1Y2ggYXMgZmQvZmlsZSBjbGVhbnVwIG9yIHJlZmNvdW50aW5nIGlzc3VlcyBvbiBlcnJvciBwYXRocykgYXJlIGFkZHJlc3NlZCBieSBzdGFuZGFyZCBzYW5pdGl6ZXJzIChLQVNBTiwgcmVmY291bnQgY2hlY2tzKS5cblxuQ29uc2VxdWVudGx5LCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fc3lzX3NvY2tldHBhaXJgIHRvIGRlZmVyIGNvcHlpbmcgZmlsZSBkZXNjcmlwdG9yIG51bWJlcnMgKGBmZDFgIGFuZCBgZmQyYCkgdG8gdXNlcnNwYWNlIChgdXNvY2t2ZWNgKSB1bnRpbCBhZnRlciBzb2NrZXQgY3JlYXRpb24sIHByb3RvY29sIHNldHVwLCBhbmQgZmlsZSBhbGxvY2F0aW9uIGhhdmUgc3VjY2VlZGVkLlxuXG4tIFRoZSB2YWx1ZXMgd3JpdHRlbiB0byB1c2Vyc3BhY2UgdmlhIGBwdXRfdXNlcmAgYXJlIHNpbXBsZSBzY2FsYXIgaW50ZWdlcnMgKGBmZDFgLCBgZmQyYCkgcmV0dXJuZWQgZGlyZWN0bHkgZnJvbSBgZ2V0X3VudXNlZF9mZF9mbGFncygpYCwgd2hpY2ggYXJlIGZ1bGx5IGluaXRpYWxpemVkIGFuZCB2YWxpZGF0ZWQgcHJpb3IgdG8gdXNlLlxuLSBObyBuZXcgdW5pbml0aWFsaXplZCBoZWFwIG9yIHN0YWNrIGJ1ZmZlcnMsIHVuaW5pdGlhbGl6ZWQgc3RydWN0IHBhZGRpbmcsIG9yIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgcmVhZHMgYXJlIGludHJvZHVjZWQuXG4tIEFueSBwb3RlbnRpYWwgcmVzb3VyY2UgbWFuYWdlbWVudCBvciBsaWZlY3ljbGUgYnVncyAoc3VjaCBhcyBmZC9maWxlIGNsZWFudXAgb3IgcmVmY291bnRpbmcgaXNzdWVzIG9uIGVycm9yIHBhdGhzKSBhcmUgYWRkcmVzc2VkIGJ5IHN0YW5kYXJkIHNhbml0aXplcnMgKEtBU0FOLCByZWZjb3VudCBjaGVja3MpLlxuXG5Db25zZXF1ZW50bHksIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzLCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE5OjQzOjU3LjgxNDI2ODU5NloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MTA0Mjk5NDI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVFwiLFxuICAgIFwiVU5JWFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fc3lzX3NvY2tldHBhaXJcIixcbiAgICBcInVuaXhfc29ja2V0cGFpclwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fc3lzX3NvY2tldHBhaXJgIHRvIGRlZmVyIGNvcHlpbmcgZmlsZSBkZXNjcmlwdG9yIG51bWJlcnMgKGBmZDFgIGFuZCBgZmQyYCkgdG8gdXNlcnNwYWNlIChgdXNvY2t2ZWNgKSB1bnRpbCBhZnRlciBzb2NrZXQgY3JlYXRpb24sIHByb3RvY29sIHNldHVwLCBhbmQgZmlsZSBhbGxvY2F0aW9uIGhhdmUgc3VjY2VlZGVkLlxcblxcbi0gVGhlIHZhbHVlcyB3cml0dGVuIHRvIHVzZXJzcGFjZSB2aWEgYHB1dF91c2VyYCBhcmUgc2ltcGxlIHNjYWxhciBpbnRlZ2VycyAoYGZkMWAsIGBmZDJgKSByZXR1cm5lZCBkaXJlY3RseSBmcm9tIGBnZXRfdW51c2VkX2ZkX2ZsYWdzKClgLCB3aGljaCBhcmUgZnVsbHkgaW5pdGlhbGl6ZWQgYW5kIHZhbGlkYXRlZCBwcmlvciB0byB1c2UuXFxuLSBObyBuZXcgdW5pbml0aWFsaXplZCBoZWFwIG9yIHN0YWNrIGJ1ZmZlcnMsIHVuaW5pdGlhbGl6ZWQgc3RydWN0IHBhZGRpbmcsIG9yIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgcmVhZHMgYXJlIGludHJvZHVjZWQuXFxuLSBBbnkgcG90ZW50aWFsIHJlc291cmNlIG1hbmFnZW1lbnQgb3IgbGlmZWN5Y2xlIGJ1Z3MgKHN1Y2ggYXMgZmQvZmlsZSBjbGVhbnVwIG9yIHJlZmNvdW50aW5nIGlzc3VlcyBvbiBlcnJvciBwYXRocykgYXJlIGFkZHJlc3NlZCBieSBzdGFuZGFyZCBzYW5pdGl6ZXJzIChLQVNBTiwgcmVmY291bnQgY2hlY2tzKS5cXG5cXG5Db25zZXF1ZW50bHksIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzLCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgZXJyb3IgaGFuZGxpbmcgYW5kIGRlc2NyaXB0b3IgaW5zdGFsbGF0aW9uIGluIF9fc3lzX3NvY2tldHBhaXIoKSBieSBkZWZlcnJpbmcgcHV0X3VzZXIoKSB1bnRpbCBhZnRlciBzb2NrZXQgYW5kIGZpbGUgYWxsb2NhdGlvbiwgYW5kIGFkZGluZyBmcHV0KCkgY2xlYW51cCBpZiBwdWJsaXNoaW5nIHRvIHVzZXIgc3BhY2UgZmFpbHMuIFRoaXMgYWZmZWN0cyBjb3JlIG5ldHdvcmtpbmcgc3lzY2FsbCBoYW5kbGluZyBhbmQgcmVzb3VyY2UgbWFuYWdlbWVudCwgd2hpY2ggaXMgZnVsbHkgcmVhY2hhYmxlIGFuZCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxOTo0Mzo1Ny44MTQyNzQ2NDdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxMDg5MDkwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDU1M2UxNTJkOGM2MzNkNjUzYjBhNTRkNDEyNzM0NGY0MDkyOWI3NjNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBTZXAgMTAgMTk6NDM6NTYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L3NvY2tldC5jIGIvbmV0L3NvY2tldC5jXFxuaW5kZXggYzA1ZDg2ZTYzYWJmNy4uNGNiODY2Mjg2OWYwOSAxMDA2NDRcXG4tLS0gYS9uZXQvc29ja2V0LmNcXG4rKysgYi9uZXQvc29ja2V0LmNcXG5AQCAtMTg1MSwxMCArMTg1MSw3IEBAIGludCBfX3N5c19zb2NrZXRwYWlyKGludCBmYW1pbHksIGludCB0eXBlLCBpbnQgcHJvdG9jb2wsIGludCBfX3VzZXIgKnVzb2NrdmVjKVxcbiBcXHRpZiAoU09DS19OT05CTE9DSyAhPSBPX05PTkJMT0NLIFxcdTAwMjZcXHUwMDI2IChmbGFncyBcXHUwMDI2IFNPQ0tfTk9OQkxPQ0spKVxcbiBcXHRcXHRmbGFncyA9IChmbGFncyBcXHUwMDI2IH5TT0NLX05PTkJMT0NLKSB8IE9fTk9OQkxPQ0s7XFxuIFxcbi1cXHQvKlxcbi1cXHQgKiByZXNlcnZlIGRlc2NyaXB0b3JzIGFuZCBtYWtlIHN1cmUgd2Ugd29uJ3QgZmFpbFxcbi1cXHQgKiB0byByZXR1cm4gdGhlbSB0byB1c2VybGFuZC5cXG4tXFx0ICovXFxuK1xcdC8qIFJlc2VydmUgYm90aCBkZXNjcmlwdG9ycyBiZWZvcmUgY3JlYXRpbmcgdGhlIHNvY2tldHMuICovXFxuIFxcdGZkMSA9IGdldF91bnVzZWRfZmRfZmxhZ3MoZmxhZ3MpO1xcbiBcXHRpZiAodW5saWtlbHkoZmQxIFxcdTAwM2MgMCkpXFxuIFxcdFxcdHJldHVybiBmZDE7XFxuQEAgLTE4NjUsMTQgKzE4NjIsNiBAQCBpbnQgX19zeXNfc29ja2V0cGFpcihpbnQgZmFtaWx5LCBpbnQgdHlwZSwgaW50IHByb3RvY29sLCBpbnQgX191c2VyICp1c29ja3ZlYylcXG4gXFx0XFx0cmV0dXJuIGZkMjtcXG4gXFx0fVxcbiBcXG4tXFx0ZXJyID0gcHV0X3VzZXIoZmQxLCBcXHUwMDI2dXNvY2t2ZWNbMF0pO1xcbi1cXHRpZiAoZXJyKVxcbi1cXHRcXHRnb3RvIG91dDtcXG4tXFxuLVxcdGVyciA9IHB1dF91c2VyKGZkMiwgXFx1MDAyNnVzb2NrdmVjWzFdKTtcXG4tXFx0aWYgKGVycilcXG4tXFx0XFx0Z290byBvdXQ7XFxuLVxcbiBcXHQvKlxcbiBcXHQgKiBPYnRhaW4gdGhlIGZpcnN0IHNvY2tldCBhbmQgY2hlY2sgaWYgdGhlIHVuZGVybHlpbmcgcHJvdG9jb2xcXG4gXFx0ICogc3VwcG9ydHMgdGhlIHNvY2tldHBhaXIgY2FsbC5cXG5AQCAtMTkxNiw2ICsxOTA1LDE2IEBAIGludCBfX3N5c19zb2NrZXRwYWlyKGludCBmYW1pbHksIGludCB0eXBlLCBpbnQgcHJvdG9jb2wsIGludCBfX3VzZXIgKnVzb2NrdmVjKVxcbiBcXHRcXHRnb3RvIG91dDtcXG4gXFx0fVxcbiBcXG4rXFx0LyogUHVibGlzaCB0aGUgZGVzY3JpcHRvcnMgbm93IHRoYXQgaXQgc2hvdWxkbid0IGZhaWwuICovXFxuK1xcdGVyciA9IHB1dF91c2VyKGZkMSwgXFx1MDAyNnVzb2NrdmVjWzBdKTtcXG4rXFx0aWYgKCFlcnIpXFxuK1xcdFxcdGVyciA9IHB1dF91c2VyKGZkMiwgXFx1MDAyNnVzb2NrdmVjWzFdKTtcXG4rXFx0aWYgKGVycikge1xcbitcXHRcXHRmcHV0KG5ld2ZpbGUyKTtcXG4rXFx0XFx0ZnB1dChuZXdmaWxlMSk7XFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXHR9XFxuK1xcbiBcXHRhdWRpdF9mZF9wYWlyKGZkMSwgZmQyKTtcXG4gXFxuIFxcdGZkX2luc3RhbGwoZmQxLCBuZXdmaWxlMSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE5OjQzOjU4LjQyNjIxOTU0N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MzU2NTA4OTgxMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUXCIsXG4gICAgXCJVTklYXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19zeXNfc29ja2V0cGFpclwiLFxuICAgIFwidW5peF9zb2NrZXRwYWlyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgZXJyb3IgaGFuZGxpbmcgYW5kIGRlc2NyaXB0b3IgaW5zdGFsbGF0aW9uIGluIF9fc3lzX3NvY2tldHBhaXIoKSBieSBkZWZlcnJpbmcgcHV0X3VzZXIoKSB1bnRpbCBhZnRlciBzb2NrZXQgYW5kIGZpbGUgYWxsb2NhdGlvbiwgYW5kIGFkZGluZyBmcHV0KCkgY2xlYW51cCBpZiBwdWJsaXNoaW5nIHRvIHVzZXIgc3BhY2UgZmFpbHMuIFRoaXMgYWZmZWN0cyBjb3JlIG5ldHdvcmtpbmcgc3lzY2FsbCBoYW5kbGluZyBhbmQgcmVzb3VyY2UgbWFuYWdlbWVudCwgd2hpY2ggaXMgZnVsbHkgcmVhY2hhYmxlIGFuZCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDU1M2UxNTJkOGM2MzNkNjUzYjBhNTRkNDEyNzM0NGY0MDkyOWI3NjNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IFNlcCAxMCAxOTo0Mzo1NiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zb2NrZXQuYyBiL25ldC9zb2NrZXQuY1xuaW5kZXggYzA1ZDg2ZTYzYWJmNy4uNGNiODY2Mjg2OWYwOSAxMDA2NDRcbi0tLSBhL25ldC9zb2NrZXQuY1xuKysrIGIvbmV0L3NvY2tldC5jXG5AQCAtMTg1MSwxMCArMTg1MSw3IEBAIGludCBfX3N5c19zb2NrZXRwYWlyKGludCBmYW1pbHksIGludCB0eXBlLCBpbnQgcHJvdG9jb2wsIGludCBfX3VzZXIgKnVzb2NrdmVjKVxuIFx0aWYgKFNPQ0tfTk9OQkxPQ0sgIT0gT19OT05CTE9DSyBcdTAwMjZcdTAwMjYgKGZsYWdzIFx1MDAyNiBTT0NLX05PTkJMT0NLKSlcbiBcdFx0ZmxhZ3MgPSAoZmxhZ3MgXHUwMDI2IH5TT0NLX05PTkJMT0NLKSB8IE9fTk9OQkxPQ0s7XG4gXG4tXHQvKlxuLVx0ICogcmVzZXJ2ZSBkZXNjcmlwdG9ycyBhbmQgbWFrZSBzdXJlIHdlIHdvbid0IGZhaWxcbi1cdCAqIHRvIHJldHVybiB0aGVtIHRvIHVzZXJsYW5kLlxuLVx0ICovXG4rXHQvKiBSZXNlcnZlIGJvdGggZGVzY3JpcHRvcnMgYmVmb3JlIGNyZWF0aW5nIHRoZSBzb2NrZXRzLiAqL1xuIFx0ZmQxID0gZ2V0X3VudXNlZF9mZF9mbGFncyhmbGFncyk7XG4gXHRpZiAodW5saWtlbHkoZmQxIFx1MDAzYyAwKSlcbiBcdFx0cmV0dXJuIGZkMTtcbkBAIC0xODY1LDE0ICsxODYyLDYgQEAgaW50IF9fc3lzX3NvY2tldHBhaXIoaW50IGZhbWlseSwgaW50IHR5cGUsIGludCBwcm90b2NvbCwgaW50IF9fdXNlciAqdXNvY2t2ZWMpXG4gXHRcdHJldHVybiBmZDI7XG4gXHR9XG4gXG4tXHRlcnIgPSBwdXRfdXNlcihmZDEsIFx1MDAyNnVzb2NrdmVjWzBdKTtcbi1cdGlmIChlcnIpXG4tXHRcdGdvdG8gb3V0O1xuLVxuLVx0ZXJyID0gcHV0X3VzZXIoZmQyLCBcdTAwMjZ1c29ja3ZlY1sxXSk7XG4tXHRpZiAoZXJyKVxuLVx0XHRnb3RvIG91dDtcbi1cbiBcdC8qXG4gXHQgKiBPYnRhaW4gdGhlIGZpcnN0IHNvY2tldCBhbmQgY2hlY2sgaWYgdGhlIHVuZGVybHlpbmcgcHJvdG9jb2xcbiBcdCAqIHN1cHBvcnRzIHRoZSBzb2NrZXRwYWlyIGNhbGwuXG5AQCAtMTkxNiw2ICsxOTA1LDE2IEBAIGludCBfX3N5c19zb2NrZXRwYWlyKGludCBmYW1pbHksIGludCB0eXBlLCBpbnQgcHJvdG9jb2wsIGludCBfX3VzZXIgKnVzb2NrdmVjKVxuIFx0XHRnb3RvIG91dDtcbiBcdH1cbiBcbitcdC8qIFB1Ymxpc2ggdGhlIGRlc2NyaXB0b3JzIG5vdyB0aGF0IGl0IHNob3VsZG4ndCBmYWlsLiAqL1xuK1x0ZXJyID0gcHV0X3VzZXIoZmQxLCBcdTAwMjZ1c29ja3ZlY1swXSk7XG4rXHRpZiAoIWVycilcbitcdFx0ZXJyID0gcHV0X3VzZXIoZmQyLCBcdTAwMjZ1c29ja3ZlY1sxXSk7XG4rXHRpZiAoZXJyKSB7XG4rXHRcdGZwdXQobmV3ZmlsZTIpO1xuK1x0XHRmcHV0KG5ld2ZpbGUxKTtcbitcdFx0Z290byBvdXQ7XG4rXHR9XG4rXG4gXHRhdWRpdF9mZF9wYWlyKGZkMSwgZmQyKTtcbiBcbiBcdGZkX2luc3RhbGwoZmQxLCBuZXdmaWxlMSk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxOTo0Mzo1OC40MjYyMjI0NDdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMjQwMzY4MDAyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEaXZpbmcgaW50byB0aGUgU29ja2V0cGFpciBJbXBsZW1lbnRhdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHBhdGNoLCBhbmQgdGhlIGJlc3Qgd2F5IHRvIGRvIHRoYXQsIGFzIGFsd2F5cywgaXMgdG8gZ2V0IGludG8gdGhlIGNvZGUgaXRzZWxmLiBNeSBpbml0aWFsIG1vdmUgd2lsbCBiZSB0byBleGFtaW5lIHRoZSBgbmV0L3NvY2tldC5jYCBmaWxlLiBTcGVjaWZpY2FsbHksIEknbSB0YXJnZXRpbmcgdGhlIHZpY2luaXR5IG9mIGxpbmUgMTg1MSwgaG9waW5nIHRvIHVuY292ZXIgdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kLCBjcnVjaWFsbHksIGdhaW4gYSBjb250ZXh0IGZvciB0aGUgYF9fc3lzX3NvY2tldHBhaXJgIGZ1bmN0aW9uLiBVbmRlcnN0YW5kaW5nIGl0cyBpbW1lZGlhdGUgcHVycG9zZSBhbmQgdXNhZ2Ugd2l0aGluIHRoYXQgc3BlY2lmaWMgYXJlYSBvZiBgbmV0L3NvY2tldC5jYCB3aWxsIGdpdmUgbWUgYSBzb2xpZCBmb3VuZGF0aW9uIGZvciBldmFsdWF0aW5nIHRoZSBwYXRjaCdzIGltcGFjdC4gSSB3YW50IHRvIHNlZSBob3cgaXQncyBiZWluZyBjYWxsZWQsIHdoYXQgYXJndW1lbnRzIGl0J3MgcmVjZWl2aW5nLCBhbmQgd2hhdCB0aGUgb3ZlcmFsbCBmbG93IGxvb2tzIGxpa2UuIFRoaXMgaW5pdGlhbCByZWFkaW5nIHdpbGwgaW5mb3JtIG15IG5leHQgc3RlcHMsIGFsbG93aW5nIG1lIHRvIGZvY3VzIG9uIHRoZSBrZXkgYXJlYXMgdGhhdCBhcmUgcmVsZXZhbnQgdG8gdGhpcyBjaGFuZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyNDMsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE5OjQ0OjEwLjgyOTkwNzY4NloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1NjAxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc29ja2V0LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTg0MCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE4NDA6XFx0e1xcbjE4NDE6XFx0XFx0c3RydWN0IHNvY2tldCAqc29jazEsICpzb2NrMjtcXG4xODQyOlxcdFxcdGludCBmZDEsIGZkMiwgZXJyO1xcbjE4NDM6XFx0XFx0c3RydWN0IGZpbGUgKm5ld2ZpbGUxLCAqbmV3ZmlsZTI7XFxuMTg0NDpcXHRcXHRpbnQgZmxhZ3M7XFxuMTg0NTpcXHRcXG4xODQ2OlxcdFxcdGZsYWdzID0gdHlwZSBcXHUwMDI2IH5TT0NLX1RZUEVfTUFTSztcXG4xODQ3OlxcdFxcdGlmIChmbGFncyBcXHUwMDI2IH4oU09DS19DTE9FWEVDIHwgU09DS19OT05CTE9DSykpXFxuMTg0ODpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4xODQ5OlxcdFxcdHR5cGUgXFx1MDAyNj0gU09DS19UWVBFX01BU0s7XFxuMTg1MDpcXHRcXG4xODUxOlxcdFxcdGlmIChTT0NLX05PTkJMT0NLICE9IE9fTk9OQkxPQ0sgXFx1MDAyNlxcdTAwMjYgKGZsYWdzIFxcdTAwMjYgU09DS19OT05CTE9DSykpXFxuMTg1MjpcXHRcXHRcXHRmbGFncyA9IChmbGFncyBcXHUwMDI2IH5TT0NLX05PTkJMT0NLKSB8IE9fTk9OQkxPQ0s7XFxuMTg1MzpcXHRcXG4xODU0OlxcdFxcdC8qIFJlc2VydmUgYm90aCBkZXNjcmlwdG9ycyBiZWZvcmUgY3JlYXRpbmcgdGhlIHNvY2tldHMuICovXFxuMTg1NTpcXHRcXHRmZDEgPSBnZXRfdW51c2VkX2ZkX2ZsYWdzKGZsYWdzKTtcXG4xODU2OlxcdFxcdGlmICh1bmxpa2VseShmZDEgXFx1MDAzYyAwKSlcXG4xODU3OlxcdFxcdFxcdHJldHVybiBmZDE7XFxuMTg1ODpcXHRcXG4xODU5OlxcdFxcdGZkMiA9IGdldF91bnVzZWRfZmRfZmxhZ3MoZmxhZ3MpO1xcbjE4NjA6XFx0XFx0aWYgKHVubGlrZWx5KGZkMiBcXHUwMDNjIDApKSB7XFxuMTg2MTpcXHRcXHRcXHRwdXRfdW51c2VkX2ZkKGZkMSk7XFxuMTg2MjpcXHRcXHRcXHRyZXR1cm4gZmQyO1xcbjE4NjM6XFx0XFx0fVxcbjE4NjQ6XFx0XFxuMTg2NTpcXHRcXHQvKlxcbjE4NjY6XFx0XFx0ICogT2J0YWluIHRoZSBmaXJzdCBzb2NrZXQgYW5kIGNoZWNrIGlmIHRoZSB1bmRlcmx5aW5nIHByb3RvY29sXFxuMTg2NzpcXHRcXHQgKiBzdXBwb3J0cyB0aGUgc29ja2V0cGFpciBjYWxsLlxcbjE4Njg6XFx0XFx0ICovXFxuMTg2OTpcXHRcXG4xODcwOlxcdFxcdGVyciA9IHNvY2tfY3JlYXRlKGZhbWlseSwgdHlwZSwgcHJvdG9jb2wsIFxcdTAwMjZzb2NrMSk7XFxuMTg3MTpcXHRcXHRpZiAodW5saWtlbHkoZXJyIFxcdTAwM2MgMCkpXFxuMTg3MjpcXHRcXHRcXHRnb3RvIG91dDtcXG4xODczOlxcdFxcbjE4NzQ6XFx0XFx0ZXJyID0gc29ja19jcmVhdGUoZmFtaWx5LCB0eXBlLCBwcm90b2NvbCwgXFx1MDAyNnNvY2syKTtcXG4xODc1OlxcdFxcdGlmICh1bmxpa2VseShlcnIgXFx1MDAzYyAwKSkge1xcbjE4NzY6XFx0XFx0XFx0c29ja19yZWxlYXNlKHNvY2sxKTtcXG4xODc3OlxcdFxcdFxcdGdvdG8gb3V0O1xcbjE4Nzg6XFx0XFx0fVxcbjE4Nzk6XFx0XFxuMTg4MDpcXHRcXHRlcnIgPSBzZWN1cml0eV9zb2NrZXRfc29ja2V0cGFpcihzb2NrMSwgc29jazIpO1xcbjE4ODE6XFx0XFx0aWYgKHVubGlrZWx5KGVycikpIHtcXG4xODgyOlxcdFxcdFxcdHNvY2tfcmVsZWFzZShzb2NrMik7XFxuMTg4MzpcXHRcXHRcXHRzb2NrX3JlbGVhc2Uoc29jazEpO1xcbjE4ODQ6XFx0XFx0XFx0Z290byBvdXQ7XFxuMTg4NTpcXHRcXHR9XFxuMTg4NjpcXHRcXG4xODg3OlxcdFxcdGVyciA9IFJFQURfT05DRShzb2NrMS1cXHUwMDNlb3BzKS1cXHUwMDNlc29ja2V0cGFpcihzb2NrMSwgc29jazIpO1xcbjE4ODg6XFx0XFx0aWYgKHVubGlrZWx5KGVyciBcXHUwMDNjIDApKSB7XFxuMTg4OTpcXHRcXHRcXHRzb2NrX3JlbGVhc2Uoc29jazIpO1xcbjE4OTA6XFx0XFx0XFx0c29ja19yZWxlYXNlKHNvY2sxKTtcXG4xODkxOlxcdFxcdFxcdGdvdG8gb3V0O1xcbjE4OTI6XFx0XFx0fVxcbjE4OTM6XFx0XFxuMTg5NDpcXHRcXHRuZXdmaWxlMSA9IHNvY2tfYWxsb2NfZmlsZShzb2NrMSwgZmxhZ3MsIE5VTEwpO1xcbjE4OTU6XFx0XFx0aWYgKElTX0VSUihuZXdmaWxlMSkpIHtcXG4xODk2OlxcdFxcdFxcdGVyciA9IFBUUl9FUlIobmV3ZmlsZTEpO1xcbjE4OTc6XFx0XFx0XFx0c29ja19yZWxlYXNlKHNvY2syKTtcXG4xODk4OlxcdFxcdFxcdGdvdG8gb3V0O1xcbjE4OTk6XFx0XFx0fVxcbjE5MDA6XFx0XFxuMTkwMTpcXHRcXHRuZXdmaWxlMiA9IHNvY2tfYWxsb2NfZmlsZShzb2NrMiwgZmxhZ3MsIE5VTEwpO1xcbjE5MDI6XFx0XFx0aWYgKElTX0VSUihuZXdmaWxlMikpIHtcXG4xOTAzOlxcdFxcdFxcdGVyciA9IFBUUl9FUlIobmV3ZmlsZTIpO1xcbjE5MDQ6XFx0XFx0XFx0ZnB1dChuZXdmaWxlMSk7XFxuMTkwNTpcXHRcXHRcXHRnb3RvIG91dDtcXG4xOTA2OlxcdFxcdH1cXG4xOTA3OlxcdFxcbjE5MDg6XFx0XFx0LyogUHVibGlzaCB0aGUgZGVzY3JpcHRvcnMgbm93IHRoYXQgaXQgc2hvdWxkbid0IGZhaWwuICovXFxuMTkwOTpcXHRcXHRlcnIgPSBwdXRfdXNlcihmZDEsIFxcdTAwMjZ1c29ja3ZlY1swXSk7XFxuMTkxMDpcXHRcXHRpZiAoIWVycilcXG4xOTExOlxcdFxcdFxcdGVyciA9IHB1dF91c2VyKGZkMiwgXFx1MDAyNnVzb2NrdmVjWzFdKTtcXG4xOTEyOlxcdFxcdGlmIChlcnIpIHtcXG4xOTEzOlxcdFxcdFxcdGZwdXQobmV3ZmlsZTIpO1xcbjE5MTQ6XFx0XFx0XFx0ZnB1dChuZXdmaWxlMSk7XFxuMTkxNTpcXHRcXHRcXHRnb3RvIG91dDtcXG4xOTE2OlxcdFxcdH1cXG4xOTE3OlxcdFxcbjE5MTg6XFx0XFx0YXVkaXRfZmRfcGFpcihmZDEsIGZkMik7XFxuMTkxOTpcXHRcXG4xOTIwOlxcdFxcdGZkX2luc3RhbGwoZmQxLCBuZXdmaWxlMSk7XFxuMTkyMTpcXHRcXHRmZF9pbnN0YWxsKGZkMiwgbmV3ZmlsZTIpO1xcbjE5MjI6XFx0XFx0cmV0dXJuIDA7XFxuMTkyMzpcXHRcXG4xOTI0OlxcdG91dDpcXG4xOTI1OlxcdFxcdHB1dF91bnVzZWRfZmQoZmQyKTtcXG4xOTI2OlxcdFxcdHB1dF91bnVzZWRfZmQoZmQxKTtcXG4xOTI3OlxcdFxcdHJldHVybiBlcnI7XFxuMTkyODpcXHR9XFxuMTkyOTpcXHRcXG4xOTMwOlxcdFNZU0NBTExfREVGSU5FNChzb2NrZXRwYWlyLCBpbnQsIGZhbWlseSwgaW50LCB0eXBlLCBpbnQsIHByb3RvY29sLFxcbjE5MzE6XFx0XFx0XFx0aW50IF9fdXNlciAqLCB1c29ja3ZlYylcXG4xOTMyOlxcdHtcXG4xOTMzOlxcdFxcdHJldHVybiBfX3N5c19zb2NrZXRwYWlyKGZhbWlseSwgdHlwZSwgcHJvdG9jb2wsIHVzb2NrdmVjKTtcXG4xOTM0OlxcdH1cXG4xOTM1OlxcdFxcbjE5MzY6XFx0aW50IF9fc3lzX2JpbmRfc29ja2V0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlICphZGRyZXNzLFxcbjE5Mzc6XFx0XFx0XFx0ICAgICAgaW50IGFkZHJsZW4pXFxuMTkzODpcXHR7XFxuMTkzOTpcXHRcXHRpbnQgZXJyO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxOTo0NDoxMC44MzAxNjY3NDZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozODM3MDI5NDE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFNvY2tldHBhaXIgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEl0IGxvb2tzIGxpa2Ugd2UgaGF2ZSBhIHBhdGNoIHRoYXQncyB0d2Vha2luZyB0aGUgYF9fc3lzX3NvY2tldHBhaXJgIGZ1bmN0aW9uIHdpdGhpbiBgbmV0L3NvY2tldC5jYC4gTXkgaW5pdGlhbCBvYnNlcnZhdGlvbiBpcyB0aGF0IHRoZXkndmUgY2hhbmdlZCB0aGUgcGxhY2VtZW50IG9mIHRob3NlIGBwdXRfdXNlcmAgY2FsbHMgdGhhdCB3cml0ZSBmaWxlIGRlc2NyaXB0b3JzIChgZmQxYCBhbmQgYGZkMmApIHRvIHVzZXIgc3BhY2UuIEl0IHVzZWQgdG8gYmUgKmJlZm9yZSogdGhlIHNvY2tldCBmaWxlIGFsbG9jYXRpb24sIGJ1dCBub3cgaXQncyAqYWZ0ZXIqLCByaWdodCBiZWZvcmUgYXVkaXQgbG9nZ2luZyBhbmQgZmlsZSBkZXNjcmlwdG9yIGluc3RhbGxhdGlvbiwgYW5kIHRoZXJlJ3MgYSBzcGVjaWZpYyBjbGVhbnVwIHBhdGggaWYgdGhvc2UgdXNlci1zcGFjZSB3cml0ZXMgZmFpbC4gVGhpcyBpcyBjcnVjaWFsIGJlY2F1c2UgaXQgYWx0ZXJzIHRoZSBlcnJvciBoYW5kbGluZyBmbG93IHNpZ25pZmljYW50bHkuXG5cblRoZSBrZXkgcXVlc3Rpb24gaXMgYWx3YXlzOiBpcyB0aGlzIGV2ZW4gZnV6emFibGU/IEJhc2VkIG9uIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHRyaWFnZSBjcml0ZXJpYSwgdGhpcyBwYXRjaCBkZWZpbml0ZWx5IGxvb2tzIHByb21pc2luZy5cblxuKiAgICoqUmVhY2hhYmlsaXR5PyoqIEFic29sdXRlbHkuIGBfX3N5c19zb2NrZXRwYWlyYCBpcyBkaXJlY3RseSBpbnZva2VkIGJ5IHRoZSBzdGFuZGFyZCBgc3lzX3NvY2tldHBhaXJgIHN5c2NhbGwsIHdoaWNoIGlzIHBhcnQgb2YgdGhlIGNvcmUgTGludXggbmV0d29ya2luZyBzdGFjayBpbiBgbmV0L3NvY2tldC5jYC4gVGhpcyBtZWFucyBpdCdzIGVhc2lseSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UsIG1ha2luZyBpdCBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZyBpbiBzdGFuZGFyZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS5cblxuKiAgICoqQ29yZSBTdWJzeXN0ZW1zPyoqIFRoaXMgaXMgaW4gY29yZSBuZXR3b3JraW5nIGNvZGUuIFRoaXMgaXMgZXhhY3RseSB0aGUga2luZCBvZiBjcml0aWNhbCBzdWJzeXN0ZW0gd2hlcmUgd2UgbmVlZCB0byBsb29rIGZvciB2dWxuZXJhYmlsaXRpZXMuXG5cbiogICAqKldvcnRoIEZ1enppbmc/KiogWWVzLCB3aXRob3V0IGEgZG91YnQuIFRoZSBjb21iaW5hdGlvbiBvZiBpdHMgY2VudHJhbCBsb2NhdGlvbiwgdGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aCwgYW5kIHRoYXQgbmV3IGNsZWFudXAgcHJvY2VkdXJlIG1ha2VzIGl0IGEgY29tcGVsbGluZyBjYW5kaWRhdGUuXG5cbk5vdywgSSBuZWVkIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cy4gSSdtIGdvaW5nIHRvIGRpZyBpbnRvIGBuZXQvS2NvbmZpZ2Agb3IgYG5ldC9NYWtlZmlsZWAgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMga2VybmVsIGNvbmZpZ3VyYXRpb25zIG9yIGJ1aWxkIGZsYWdzIHRoYXQgbmVlZCB0byBiZSBlbmFibGVkIGZvciBgbmV0L3NvY2tldC5jYCBvciwgbW9yZSBzcGVjaWZpY2FsbHksIGBzb2NrZXRwYWlyYC4gSXTigJlzIGltcG9ydGFudCB0byBtYWtlIHN1cmUgd2UgaGF2ZSBhIGZ1bGx5IGZ1bmN0aW9uYWwgc2V0dXAgdGhhdCdzIGdvaW5nIHRvIGFsbG93IHRoaXMgY29kZSB0byBydW4gYW5kIHRvIG1heGltaXplIHRoZSBwcm9iYWJpbGl0eSBvZiBmdXp6aW5nIHN1Y2Nlc3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ5MDAsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMzUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxOTo0NDoxNC42NjcxOTgwN1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDAwMzQ4MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic29ja2V0XFxcXC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L01ha2VmaWxlLTgtXFxubmV0L01ha2VmaWxlOjk6b2JqLXlcXHRcXHRcXHRcXHQ6PSBkZXZyZXMubyBzb2NrZXQubyBjb3JlL1xcbm5ldC9NYWtlZmlsZS0xMC1cXG4tLVxcbm5ldC9jYW4vajE5MzkvTWFrZWZpbGU9NT1jYW4tajE5Mzktb2JqcyA6PSBcXFxcXFxuLS1cXG5uZXQvY2FuL2oxOTM5L01ha2VmaWxlLTgtXFx0bWFpbi5vIFxcXFxcXG5uZXQvY2FuL2oxOTM5L01ha2VmaWxlOjk6XFx0c29ja2V0Lm8gXFxcXFxcbm5ldC9jYW4vajE5MzkvTWFrZWZpbGUtMTAtXFx0dHJhbnNwb3J0Lm9cXG4tLVxcbm5ldC9pZWVlODAyMTU0L01ha2VmaWxlPTI9b2JqLSQoQ09ORklHX0lFRUU4MDIxNTQpICs9IGllZWU4MDIxNTQub1xcbm5ldC9pZWVlODAyMTU0L01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX0lFRUU4MDIxNTRfU09DS0VUKSArPSBpZWVlODAyMTU0X3NvY2tldC5vXFxubmV0L2llZWU4MDIxNTQvTWFrZWZpbGUtNC1vYmoteSArPSA2bG93cGFuL1xcbi0tXFxubmV0L2llZWU4MDIxNTQvTWFrZWZpbGU9Nj1pZWVlODAyMTU0LXkgOj0gbmV0bGluay5vIG5sLW1hYy5vIG5sLXBoeS5vIG5sX3BvbGljeS5vIGNvcmUubyBcXFxcXFxubmV0L2llZWU4MDIxNTQvTWFrZWZpbGUtNy0gICAgICAgICAgICAgICAgaGVhZGVyX29wcy5vIHN5c2ZzLm8gbmw4MDIxNTQubyB0cmFjZS5vIHBhbi5vXFxubmV0L2llZWU4MDIxNTQvTWFrZWZpbGU6ODppZWVlODAyMTU0X3NvY2tldC15IDo9IHNvY2tldC5vXFxubmV0L2llZWU4MDIxNTQvTWFrZWZpbGUtOS1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9MTI4PW9iai0kKENPTkZJR19ORlRfRklCX05FVERFVilcXHQrPSBuZnRfZmliX25ldGRldi5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZToxMjk6b2JqLSQoQ09ORklHX05GVF9TT0NLRVQpXFx0Kz0gbmZ0X3NvY2tldC5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0xMzAtb2JqLSQoQ09ORklHX05GVF9PU0YpXFx0XFx0Kz0gbmZ0X29zZi5vXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTIyNj1vYmotJChDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1NDVFApICs9IHh0X3NjdHAub1xcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6MjI3Om9iai0kKENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfU09DS0VUKSArPSB4dF9zb2NrZXQub1xcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMjI4LW9iai0kKENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfU1RBVEUpICs9IHh0X3N0YXRlLm9cXG4tLVxcbm5ldC9waG9uZXQvTWFrZWZpbGU9ND1waG9uZXQteSA6PSBcXFxcXFxuLS1cXG5uZXQvcGhvbmV0L01ha2VmaWxlLTYtXFx0cG5fbmV0bGluay5vIFxcXFxcXG5uZXQvcGhvbmV0L01ha2VmaWxlOjc6XFx0c29ja2V0Lm8gXFxcXFxcbm5ldC9waG9uZXQvTWFrZWZpbGUtOC1cXHRkYXRhZ3JhbS5vIFxcXFxcXG4tLVxcbm5ldC9zY3RwL01ha2VmaWxlPTk9c2N0cC15IDo9IHNtX3N0YXRldGFibGUubyBzbV9zdGF0ZWZ1bnMubyBzbV9zaWRlZWZmZWN0Lm8gXFxcXFxcbi0tXFxubmV0L3NjdHAvTWFrZWZpbGUtMTItXFx0ICBpbnF1ZXVlLm8gb3V0cXVldWUubyB1bHBxdWV1ZS5vIFxcXFxcXG5uZXQvc2N0cC9NYWtlZmlsZToxMzpcXHQgIHRzbm1hcC5vIGJpbmRfYWRkci5vIHNvY2tldC5vIHByaW1pdGl2ZS5vIFxcXFxcXG5uZXQvc2N0cC9NYWtlZmlsZS0xNC1cXHQgIG91dHB1dC5vIGlucHV0Lm8gZGVidWcubyBzdHJlYW0ubyBhdXRoLm8gXFxcXFxcbi0tXFxubmV0L3NvY2tldC5jPTMyNj1zdGF0aWMgc3RydWN0IGlub2RlICpzb2NrX2FsbG9jX2lub2RlKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXFxuLS1cXG5uZXQvc29ja2V0LmMtMzQxLVxcdHNpLVxcdTAwM2Vzb2NrZXQuZmxhZ3MgPSAwO1xcbm5ldC9zb2NrZXQuYzozNDI6XFx0c2ktXFx1MDAzZXNvY2tldC5vcHMgPSBOVUxMO1xcbm5ldC9zb2NrZXQuYy0zNDMtXFx0c2ktXFx1MDAzZXNvY2tldC5zayA9IE5VTEw7XFxuLS1cXG5uZXQvdGlwYy9NYWtlZmlsZT04PXRpcGMteVxcdCs9IGFkZHIubyBiY2FzdC5vIGJlYXJlci5vIFxcXFxcXG4tLVxcbm5ldC90aXBjL01ha2VmaWxlLTEwLVxcdCAgIG5hbWVfZGlzdHIubyAgc3Vic2NyLm8gbW9uaXRvci5vIG5hbWVfdGFibGUubyBuZXQubyAgXFxcXFxcbm5ldC90aXBjL01ha2VmaWxlOjExOlxcdCAgIG5ldGxpbmsubyBuZXRsaW5rX2NvbXBhdC5vIG5vZGUubyBzb2NrZXQubyBldGhfbWVkaWEubyBcXFxcXFxubmV0L3RpcGMvTWFrZWZpbGUtMTItXFx0ICAgdG9wc3J2Lm8gZ3JvdXAubyB0cmFjZS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE5OjQ0OjE0Ljc2NzI0MDEwOFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIxMTkwMTg0NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBteXNlbGY6XG5cbioqSW52ZXN0aWdhdGluZyBOZXR3b3JrIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYG5ldC9NYWtlZmlsZWAuIEkgc2VlIHNvbWUgb2JqZWN0IGRlZmluaXRpb25zIHRoYXQgYXJlIGxpa2VseSBjb25kaXRpb25hbCwgdXNpbmcgYG9iai0kKENPTkZJR19ORVQpIDo9IC4uLmAuIFRoZSBxdWVzdGlvbiBpcywgaXMgKmV2ZXJ5dGhpbmcqIHVuZGVyIGBuZXQvYCBlZmZlY3RpdmVseSBndWFyZGVkIGJ5IGBDT05GSUdfTkVUYD8gIE9yLCBhcmUgdGhlcmUgbW9yZSBmaW5lLWdyYWluZWQgZGVwZW5kZW5jaWVzIHdpdGhpbiB0aGUgYG5ldC9gIGRpcmVjdG9yeSB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZj9cblxuVG8gY2xhcmlmeSB0aGlzLCBJIHJlYWxseSBuZWVkIHRvIGNoZWNrIHRoZSByb290IGBNYWtlZmlsZWAg4oCTIHRoYXQncyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIGNvbmZpZ3VyYXRpb24gZGVjaXNpb25zLiAgQW5kLCBvZiBjb3Vyc2UsIHRoZSBgbmV0L0tjb25maWdgIGZpbGUgaXMgZ29pbmcgdG8gYmUgY3J1Y2lhbC4gVGhhdCdzIHdoZXJlIHRoZSAqYWN0dWFsKiBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGRlZmluZWQsIGFuZCB3aGVyZSBgQ09ORklHX05FVGAgaXRzZWxmIGlzIHByb2JhYmx5IGRlY2xhcmVkLiAgSSdsbCBnbyB0aGVyZSBuZXh0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIGBDT05GSUdfTkVUYCBzeW1ib2wgYW5kIHRoZSBjb21wb25lbnRzIHdpdGhpbiB0aGUgYG5ldC9gIGRpcmVjdG9yeS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjY4MSwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE5OjQ0OjE2Ljg4NjI2MTU0OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Mjg0NzgwOSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX05FVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJNYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTk6NDQ6MTYuOTU5MTE5OTk2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDg3NTUxMDgzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXM6XG5cbioqSW52ZXN0aWdhdGluZyBOZXR3b3JrIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgbWFpbiBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgZGVmaW5lZCB3aXRoaW4gdGhpcyBwcm9qZWN0LiBNeSBmaXJzdCBpbnN0aW5jdCwgZ2l2ZW4gbXkgZXhwZXJpZW5jZSB3aXRoIHNpbWlsYXIgc3lzdGVtcywgaXMgdG8gc3RhcnQgd2l0aCB0aGUgc3RhbmRhcmQgcGxhY2VzLiBUeXBpY2FsbHksIHRoZSB0b3AtbGV2ZWwgYEtjb25maWdgIGZpbGVzIGFyZSB0aGUgY2VudHJhbCByZXBvc2l0b3J5IGZvciBmZWF0dXJlIGZsYWdzIGFuZCBvcHRpb25zLCBhbmQgb2Z0ZW4gaGF2ZSBgaW5jbHVkZWAgc3RhdGVtZW50cyBmb3Igc3ViZGlyZWN0b3JpZXMuIFNvLCBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGUgYG5ldC9LY29uZmlnYCBmaWxlLiBUaGF0J3MgdGhlIG1vc3QgbGlrZWx5IHBsYWNlIHRvIGZpbmQgd2hhdCBJJ20gbG9va2luZyBmb3IsIHNpbmNlIGl0J3MgbG9naWNhbCB0byBoYXZlIG5ldHdvcmstc3BlY2lmaWMgY29uZmlndXJhdGlvbiB3aXRoaW4gdGhlIGBuZXRgIGRpcmVjdG9yeS5cblxuSG93ZXZlciwgc29tZXRpbWVzIHRoZSBwcm9qZWN0IGVtcGxveXMgYSBtb3JlIGZsYXQgYXBwcm9hY2ggb3IgaGFzIGl0cyBjb25maWd1cmF0aW9uIGZpbGVzIGluIGxlc3MgZXhwZWN0ZWQgbG9jYXRpb25zLiBJbiB0aG9zZSBjYXNlcywgdGhlIHJvb3QgYE1ha2VmaWxlYCBvZnRlbiBob2xkcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYnVpbGQgcHJvY2VzcyBhbmQgaG93IGRpZmZlcmVudCBwYXJ0cyBvZiB0aGUgcHJvamVjdCwgaW5jbHVkaW5nIHRoZSBgbmV0L2AgZGlyZWN0b3J5LCBhcmUgaW50ZWdyYXRlZC4gSXQgbWlnaHQgaW5jbHVkZSB2YXJpYWJsZXMgb3IgY29uZGl0aW9uYWwgbG9naWMgdGhhdCBwb2ludHMgdG8gdGhlIHJlbGV2YW50IGBLY29uZmlnYCBmaWxlcyBvciBkZWZpbmVzIHNvbWUgdG9wLWxldmVsIG5ldHdvcmsgb3B0aW9ucyBkaXJlY3RseS4gU28gSSdsbCBtYWtlIGEgbWVudGFsIG5vdGUgdG8gY2hlY2sgdGhlIHJvb3QgYE1ha2VmaWxlYCBhcyBhIGJhY2t1cCBpZiBgbmV0L0tjb25maWdgIGRvZXNuJ3QgcHJvdmlkZSBlbm91Z2ggaW5mb3JtYXRpb24sIG9yIGlmIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgbmV0d29ya2luZyBzdWJzeXN0ZW0gaXMgYmVpbmcgaW50ZWdyYXRlZCBpbnRvIHRoZSBidWlsZC4gSXQncyBhbHdheXMgZ29vZCB0byBiZSB0aG9yb3VnaCBhbmQgY29uc2lkZXIgYWxsIHRoZSBsaWtlbHkgbG9jYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTc4LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTk6NDQ6MjEuODM0NjM0Njg1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDM2MjUzNjgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5ldC9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE5OjQ0OjIxLjkzODI2ODkzNFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NjIyMjEwMDMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCB3ZW50OlxuXG4qKkV4YW1pbmluZyB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhpcyBuZXR3b3JrLXJlbGF0ZWQgZnVuY3Rpb25hbGl0eSBpcyBiZWluZyBtYW5hZ2VkIHdpdGhpbiB0aGUgYnVpbGQgc3lzdGVtLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QsIGdpdmVuIHRoZSBjb250ZXh0IG9mIGtlcm5lbCBjb25maWd1cmF0aW9uLCBpcyB0byBkaXZlIGludG8gdGhlIGBLY29uZmlnYCBmaWxlcy4gVGhhdCdzIHdoZXJlIGFsbCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBkZWZpbmVkLCBhbmQgd2hlcmUgdGhlIGRlcGVuZGVuY2llcyBhbmQgcmVsYXRpb25zaGlwcyBhcmUgc3BlY2lmaWVkLiBJJ20gdGhpbmtpbmcgSSdsbCBlaXRoZXI6XG5cbiogICAqKkRpcmVjdGx5IGluc3BlY3QgYEtjb25maWdgOioqIEknbGwgc3RhcnQgYnkgb3BlbmluZyB0aGUgcmVsZXZhbnQgYEtjb25maWdgIGZpbGVzIHRvIHNlZSBpZiBJIGNhbiBmaW5kIGEgY29uZmlndXJhdGlvbiBzeW1ib2wsIGxpa2UgYENPTkZJR19ORVRgIGl0c2VsZiwgYW5kIHRyYWNlIGl0cyBkZXBlbmRlbmNpZXMsIGRlZmF1bHQgdmFsdWVzLCBhbmQgaW1wbGljYXRpb25zLiBJIG1pZ2h0IGJlIGFibGUgdG8gZmlndXJlIG91dCBob3cgbmV0d29yayBmZWF0dXJlcyBhcmUgZW5hYmxlZCwgZGlzYWJsZWQsIG9yIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQuXG5cbiogICAqKlVzZSBncmVwIGZvciBmYXN0ZXIgc2VhcmNoaW5nOioqIElmIHRoYXQgc2VlbXMgbGlrZSBhIGxvdCBvZiBodW50aW5nLCBvciBpZiBJIGtub3cgdGhlIGJ1aWxkIHN5c3RlbSBtaWdodCByZWZlciB0byB0aGUgYENPTkZJR19ORVRgIHZhcmlhYmxlIGluIGEgcGFydGljdWxhciB3YXkgKGUuZy4sIHVzaW5nIGl0IGluIGFuIG9iamVjdCBmaWxlIGRlcGVuZGVuY3kpLCB0aGVuIEknbGwgcmVhY2ggZm9yIGdyZXAuIFNwZWNpZmljYWxseSwgSSdsbCBzZWFyY2ggZm9yIHRoZSBjb21tb24gYnVpbGQgc3ludGF4IGBvYmotJChDT05GSUdfTkVUKWAgdG8gc2VlIHdoZXJlIGFuZCBob3cgdGhlIHByZXNlbmNlIG9mIHRoZSBgQ09ORklHX05FVGAgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgaW5mbHVlbmNpbmcgdGhlIGluY2x1c2lvbiBvciBleGNsdXNpb24gb2Ygb2JqZWN0IGZpbGVzLiBUaGlzIHNob3VsZCBxdWlja2x5IGxvY2F0ZSBhbnkgYnVpbGQgcnVsZXMgdGhhdCBkaXJlY3RseSBkZXBlbmQgb24gdGhlIGBDT05GSUdfTkVUYCBjb25maWd1cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MzIzLCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTk6NDQ6MjYuNTYwNDgxNTU2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NjA4MTY4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvYmotLipuZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiS2J1aWxkXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIktidWlsZD0xMTM9b2JqLSQoQ09ORklHX1NBTVBMRVMpXFx0Kz0gc2FtcGxlcy9cXG5LYnVpbGQ6MTE0Om9iai0kKENPTkZJR19ORVQpXFx0Kz0gbmV0L1xcbktidWlsZC0xMTUtb2JqLXlcXHRcXHRcXHQrPSB2aXJ0L1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxOTo0NDoyNi42NDY1NjkyMDVaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTg1OTgxOTkyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBgc29ja2V0cGFpcmAgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgQ09ORklHX05FVGAgYW5kIHNwZWNpZmljYWxseSB0aGUgaW1wbGljYXRpb25zIG9mIGBzb2NrZXRwYWlyYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB3aGF0ICpzcGVjaWZpYyogcHJvdG9jb2xzIGxldmVyYWdlIHRoYXQgZnVuY3Rpb24/IEl0J3MgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIGxhbmRzY2FwZS4gSSBhbHJlYWR5IGtub3cgdGhhdCBVbml4IGRvbWFpbiBzb2NrZXRzLCBjb250cm9sbGVkIGJ5IGBDT05GSUdfVU5JWGAsIGFyZSBhIG1ham9yLCBpZiBub3QgdGhlIHByaW1hcnksIGltcGxlbWVudGF0aW9uIG9mIGBzb2NrZXRwYWlyYC4gTm93LCBJIG5lZWQgdG8gZ2V0IGRvd24gdG8gYnJhc3MgdGFja3M6IEkgbmVlZCB0byB2ZXJpZnkgd2hpY2ggc29ja2V0IGZhbWlsaWVzIGFjdHVhbGx5IHByb3ZpZGUgYSBgLnNvY2tldHBhaXJgIGltcGxlbWVudGF0aW9uLCBiZWNhdXNlIHRoYXQgd2lsbCBhbGxvdyBtZSB0byBhc3Nlc3MgdGhlIGFyY2hpdGVjdHVyZSBvdmVyYWxsLiBJIHdhbnQgdG8gYnVpbGQgYSBwcm9wZXIgb3ZlcnZpZXcgb2Ygd2hhdCdzIHN1cHBvcnRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzcyNywiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE5OjQ0OjI4LjUwNjM5MTY5OFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM1MDY5MTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlxcXFwuc29ja2V0cGFpclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9hdG0vcHZjLmM9MTA2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHB2Y19wcm90b19vcHMgPSB7XFxuLS1cXG5uZXQvYXRtL3B2Yy5jLTExMi1cXHQuY29ubmVjdCA9XFx0cHZjX2Nvbm5lY3QsXFxubmV0L2F0bS9wdmMuYzoxMTM6XFx0LnNvY2tldHBhaXIgPVxcdHNvY2tfbm9fc29ja2V0cGFpcixcXG5uZXQvYXRtL3B2Yy5jLTExNC1cXHQuYWNjZXB0ID1cXHRzb2NrX25vX2FjY2VwdCxcXG4tLVxcbm5ldC9ibHVldG9vdGgvYm5lcC9zb2NrLmM9MTY5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIGJuZXBfc29ja19vcHMgPSB7XFxuLS1cXG5uZXQvYmx1ZXRvb3RoL2JuZXAvc29jay5jLTE4My1cXHQuY29ubmVjdFxcdD0gc29ja19ub19jb25uZWN0LFxcbm5ldC9ibHVldG9vdGgvYm5lcC9zb2NrLmM6MTg0OlxcdC5zb2NrZXRwYWlyXFx0PSBzb2NrX25vX3NvY2tldHBhaXIsXFxubmV0L2JsdWV0b290aC9ibmVwL3NvY2suYy0xODUtXFx0LmFjY2VwdFxcdFxcdD0gc29ja19ub19hY2NlcHQsXFxuLS1cXG5uZXQvYmx1ZXRvb3RoL2hjaV9zb2NrLmM9MjE3Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBoY2lfc29ja19vcHMgPSB7XFxuLS1cXG5uZXQvYmx1ZXRvb3RoL2hjaV9zb2NrLmMtMjE5MC1cXHQuY29ubmVjdFxcdD0gc29ja19ub19jb25uZWN0LFxcbm5ldC9ibHVldG9vdGgvaGNpX3NvY2suYzoyMTkxOlxcdC5zb2NrZXRwYWlyXFx0PSBzb2NrX25vX3NvY2tldHBhaXIsXFxubmV0L2JsdWV0b290aC9oY2lfc29jay5jLTIxOTItXFx0LmFjY2VwdFxcdFxcdD0gc29ja19ub19hY2NlcHQsXFxuLS1cXG5uZXQvYmx1ZXRvb3RoL2hpZHAvc29jay5jPTIyMD1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBoaWRwX3NvY2tfb3BzID0ge1xcbi0tXFxubmV0L2JsdWV0b290aC9oaWRwL3NvY2suYy0yMzQtXFx0LmNvbm5lY3RcXHQ9IHNvY2tfbm9fY29ubmVjdCxcXG5uZXQvYmx1ZXRvb3RoL2hpZHAvc29jay5jOjIzNTpcXHQuc29ja2V0cGFpclxcdD0gc29ja19ub19zb2NrZXRwYWlyLFxcbm5ldC9ibHVldG9vdGgvaGlkcC9zb2NrLmMtMjM2LVxcdC5hY2NlcHRcXHRcXHQ9IHNvY2tfbm9fYWNjZXB0LFxcbi0tXFxubmV0L2JsdWV0b290aC9pc28uYz0yODM5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIGlzb19zb2NrX29wcyA9IHtcXG4tLVxcbm5ldC9ibHVldG9vdGgvaXNvLmMtMjg1Mi1cXHQubW1hcFxcdFxcdD0gc29ja19ub19tbWFwLFxcbm5ldC9ibHVldG9vdGgvaXNvLmM6Mjg1MzpcXHQuc29ja2V0cGFpclxcdD0gc29ja19ub19zb2NrZXRwYWlyLFxcbm5ldC9ibHVldG9vdGgvaXNvLmMtMjg1NC1cXHQuc2h1dGRvd25cXHQ9IGlzb19zb2NrX3NodXRkb3duLFxcbi0tXFxubmV0L2JsdWV0b290aC9sMmNhcF9zb2NrLmM9MjA3OD1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBsMmNhcF9zb2NrX29wcyA9IHtcXG4tLVxcbm5ldC9ibHVldG9vdGgvbDJjYXBfc29jay5jLTIwOTItXFx0Lm1tYXBcXHRcXHQ9IHNvY2tfbm9fbW1hcCxcXG5uZXQvYmx1ZXRvb3RoL2wyY2FwX3NvY2suYzoyMDkzOlxcdC5zb2NrZXRwYWlyXFx0PSBzb2NrX25vX3NvY2tldHBhaXIsXFxubmV0L2JsdWV0b290aC9sMmNhcF9zb2NrLmMtMjA5NC1cXHQuc2h1dGRvd25cXHQ9IGwyY2FwX3NvY2tfc2h1dGRvd24sXFxuLS1cXG5uZXQvYmx1ZXRvb3RoL3JmY29tbS9zb2NrLmM9MTAzMT1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyByZmNvbW1fc29ja19vcHMgPSB7XFxuLS1cXG5uZXQvYmx1ZXRvb3RoL3JmY29tbS9zb2NrLmMtMTA0Ny1cXHQucG9sbFxcdFxcdD0gYnRfc29ja19wb2xsLFxcbm5ldC9ibHVldG9vdGgvcmZjb21tL3NvY2suYzoxMDQ4OlxcdC5zb2NrZXRwYWlyXFx0PSBzb2NrX25vX3NvY2tldHBhaXIsXFxubmV0L2JsdWV0b290aC9yZmNvbW0vc29jay5jLTEwNDktXFx0Lm1tYXBcXHRcXHQ9IHNvY2tfbm9fbW1hcCxcXG4tLVxcbm5ldC9ibHVldG9vdGgvc2NvLmM9MTU5Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBzY29fc29ja19vcHMgPSB7XFxuLS1cXG5uZXQvYmx1ZXRvb3RoL3Njby5jLTE2MTAtXFx0Lm1tYXBcXHRcXHQ9IHNvY2tfbm9fbW1hcCxcXG5uZXQvYmx1ZXRvb3RoL3Njby5jOjE2MTE6XFx0LnNvY2tldHBhaXJcXHQ9IHNvY2tfbm9fc29ja2V0cGFpcixcXG5uZXQvYmx1ZXRvb3RoL3Njby5jLTE2MTItXFx0LnNodXRkb3duXFx0PSBzY29fc29ja19zaHV0ZG93bixcXG4tLVxcbm5ldC9jYW4vYmNtLmM9MjExMD1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBiY21fb3BzID0ge1xcbi0tXFxubmV0L2Nhbi9iY20uYy0yMTE0LVxcdC5jb25uZWN0ICAgICAgID0gYmNtX2Nvbm5lY3QsXFxubmV0L2Nhbi9iY20uYzoyMTE1OlxcdC5zb2NrZXRwYWlyICAgID0gc29ja19ub19zb2NrZXRwYWlyLFxcbm5ldC9jYW4vYmNtLmMtMjExNi1cXHQuYWNjZXB0ICAgICAgICA9IHNvY2tfbm9fYWNjZXB0LFxcbi0tXFxubmV0L2Nhbi9pc290cC5jPTIwMDY9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgaXNvdHBfb3BzID0ge1xcbi0tXFxubmV0L2Nhbi9pc290cC5jLTIwMTAtXFx0LmNvbm5lY3QgPSBzb2NrX25vX2Nvbm5lY3QsXFxubmV0L2Nhbi9pc290cC5jOjIwMTE6XFx0LnNvY2tldHBhaXIgPSBzb2NrX25vX3NvY2tldHBhaXIsXFxubmV0L2Nhbi9pc290cC5jLTIwMTItXFx0LmFjY2VwdCA9IHNvY2tfbm9fYWNjZXB0LFxcbi0tXFxubmV0L2Nhbi9qMTkzOS9zb2NrZXQuYz0xMzc1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIGoxOTM5X29wcyA9IHtcXG4tLVxcbm5ldC9jYW4vajE5Mzkvc29ja2V0LmMtMTM3OS1cXHQuY29ubmVjdCA9IGoxOTM5X3NrX2Nvbm5lY3QsXFxubmV0L2Nhbi9qMTkzOS9zb2NrZXQuYzoxMzgwOlxcdC5zb2NrZXRwYWlyID0gc29ja19ub19zb2NrZXRwYWlyLFxcbm5ldC9jYW4vajE5Mzkvc29ja2V0LmMtMTM4MS1cXHQuYWNjZXB0ID0gc29ja19ub19hY2NlcHQsXFxuLS1cXG5uZXQvY2FuL3Jhdy5jPTEwNjg9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcmF3X29wcyA9IHtcXG4tLVxcbm5ldC9jYW4vcmF3LmMtMTA3Mi1cXHQuY29ubmVjdCAgICAgICA9IHNvY2tfbm9fY29ubmVjdCxcXG5uZXQvY2FuL3Jhdy5jOjEwNzM6XFx0LnNvY2tldHBhaXIgICAgPSBzb2NrX25vX3NvY2tldHBhaXIsXFxubmV0L2Nhbi9yYXcuYy0xMDc0LVxcdC5hY2NlcHQgICAgICAgID0gc29ja19ub19hY2NlcHQsXFxuLS1cXG5uZXQvaWVlZTgwMjE1NC9zb2NrZXQuYz00MTA9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgaWVlZTgwMjE1NF9yYXdfb3BzID0ge1xcbi0tXFxubmV0L2llZWU4MDIxNTQvc29ja2V0LmMtNDE1LVxcdC5jb25uZWN0XFx0ICAgPSBpZWVlODAyMTU0X3NvY2tfY29ubmVjdCxcXG5uZXQvaWVlZTgwMjE1NC9zb2NrZXQuYzo0MTY6XFx0LnNvY2tldHBhaXJcXHQgICA9IHNvY2tfbm9fc29ja2V0cGFpcixcXG5uZXQvaWVlZTgwMjE1NC9zb2NrZXQuYy00MTctXFx0LmFjY2VwdFxcdFxcdCAgID0gc29ja19ub19hY2NlcHQsXFxuLS1cXG5uZXQvaWVlZTgwMjE1NC9zb2NrZXQuYz05ODY9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgaWVlZTgwMjE1NF9kZ3JhbV9vcHMgPSB7XFxuLS1cXG5uZXQvaWVlZTgwMjE1NC9zb2NrZXQuYy05OTEtXFx0LmNvbm5lY3RcXHQgICA9IGllZWU4MDIxNTRfc29ja19jb25uZWN0LFxcbm5ldC9pZWVlODAyMTU0L3NvY2tldC5jOjk5MjpcXHQuc29ja2V0cGFpclxcdCAgID0gc29ja19ub19zb2NrZXRwYWlyLFxcbm5ldC9pZWVlODAyMTU0L3NvY2tldC5jLTk5My1cXHQuYWNjZXB0XFx0XFx0ICAgPSBzb2NrX25vX2FjY2VwdCxcXG4tLVxcbm5ldC9pcHY0L2FmX2luZXQuYz0xMDYwPWNvbnN0IHN0cnVjdCBwcm90b19vcHMgaW5ldF9zdHJlYW1fb3BzID0ge1xcbi0tXFxubmV0L2lwdjQvYWZfaW5ldC5jLTEwNjUtXFx0LmNvbm5lY3RcXHQgICA9IGluZXRfc3RyZWFtX2Nvbm5lY3QsXFxubmV0L2lwdjQvYWZfaW5ldC5jOjEwNjY6XFx0LnNvY2tldHBhaXJcXHQgICA9IHNvY2tfbm9fc29ja2V0cGFpcixcXG5uZXQvaXB2NC9hZl9pbmV0LmMtMTA2Ny1cXHQuYWNjZXB0XFx0XFx0ICAgPSBpbmV0X2FjY2VwdCxcXG4tLVxcbm5ldC9pcHY0L2FmX2luZXQuYz0xMDk2PWNvbnN0IHN0cnVjdCBwcm90b19vcHMgaW5ldF9kZ3JhbV9vcHMgPSB7XFxuLS1cXG5uZXQvaXB2NC9hZl9pbmV0LmMtMTEwMS1cXHQuY29ubmVjdFxcdCAgID0gaW5ldF9kZ3JhbV9jb25uZWN0LFxcbm5ldC9pcHY0L2FmX2luZXQuYzoxMTAyOlxcdC5zb2NrZXRwYWlyXFx0ICAgPSBzb2NrX25vX3NvY2tldHBhaXIsXFxubmV0L2lwdjQvYWZfaW5ldC5jLTExMDMtXFx0LmFjY2VwdFxcdFxcdCAgID0gc29ja19ub19hY2NlcHQsXFxuLS1cXG5uZXQvaXB2NC9hZl9pbmV0LmM9MTEyOD1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBpbmV0X3NvY2tyYXdfb3BzID0ge1xcbi0tXFxubmV0L2lwdjQvYWZfaW5ldC5jLTExMzMtXFx0LmNvbm5lY3RcXHQgICA9IGluZXRfZGdyYW1fY29ubmVjdCxcXG5uZXQvaXB2NC9hZl9pbmV0LmM6MTEzNDpcXHQuc29ja2V0cGFpclxcdCAgID0gc29ja19ub19zb2NrZXRwYWlyLFxcbm5ldC9pcHY0L2FmX2luZXQuYy0xMTM1LVxcdC5hY2NlcHRcXHRcXHQgICA9IHNvY2tfbm9fYWNjZXB0LFxcbi0tXFxubmV0L2lwdjYvYWZfaW5ldDYuYz02NjA9Y29uc3Qgc3RydWN0IHByb3RvX29wcyBpbmV0Nl9zdHJlYW1fb3BzID0ge1xcbi0tXFxubmV0L2lwdjYvYWZfaW5ldDYuYy02NjUtXFx0LmNvbm5lY3RcXHQgICA9IGluZXRfc3RyZWFtX2Nvbm5lY3QsXFx0Lyogb2tcXHRcXHQqL1xcbm5ldC9pcHY2L2FmX2luZXQ2LmM6NjY2OlxcdC5zb2NrZXRwYWlyXFx0ICAgPSBzb2NrX25vX3NvY2tldHBhaXIsXFx0LyogYSBkbyBub3RoaW5nXFx0Ki9cXG5uZXQvaXB2Ni9hZl9pbmV0Ni5jLTY2Ny1cXHQuYWNjZXB0XFx0XFx0ICAgPSBpbmV0X2FjY2VwdCxcXHRcXHQvKiBva1xcdFxcdCovXFxuLS1cXG5uZXQvaXB2Ni9hZl9pbmV0Ni5jPTY5Nj1jb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIGluZXQ2X2RncmFtX29wcyA9IHtcXG4tLVxcbm5ldC9pcHY2L2FmX2luZXQ2LmMtNzAxLVxcdC5jb25uZWN0XFx0ICAgPSBpbmV0X2RncmFtX2Nvbm5lY3QsXFx0Lyogb2tcXHRcXHQqL1xcbm5ldC9pcHY2L2FmX2luZXQ2LmM6NzAyOlxcdC5zb2NrZXRwYWlyXFx0ICAgPSBzb2NrX25vX3NvY2tldHBhaXIsXFx0LyogYSBkbyBub3RoaW5nXFx0Ki9cXG5uZXQvaXB2Ni9hZl9pbmV0Ni5jLTcwMy1cXHQuYWNjZXB0XFx0XFx0ICAgPSBzb2NrX25vX2FjY2VwdCxcXHRcXHQvKiBhIGRvIG5vdGhpbmdcXHQqL1xcbi0tXFxubmV0L2lwdjYvcmF3LmM9MTI4Nz1jb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIGluZXQ2X3NvY2tyYXdfb3BzID0ge1xcbi0tXFxubmV0L2lwdjYvcmF3LmMtMTI5Mi1cXHQuY29ubmVjdFxcdCAgID0gaW5ldF9kZ3JhbV9jb25uZWN0LFxcdC8qIG9rXFx0XFx0Ki9cXG5uZXQvaXB2Ni9yYXcuYzoxMjkzOlxcdC5zb2NrZXRwYWlyXFx0ICAgPSBzb2NrX25vX3NvY2tldHBhaXIsXFx0LyogYSBkbyBub3RoaW5nXFx0Ki9cXG5uZXQvaXB2Ni9yYXcuYy0xMjk0LVxcdC5hY2NlcHRcXHRcXHQgICA9IHNvY2tfbm9fYWNjZXB0LFxcdFxcdC8qIGEgZG8gbm90aGluZ1xcdCovXFxuLS1cXG5uZXQvaXVjdi9hZl9pdWN2LmM9MjI0OT1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBpdWN2X3NvY2tfb3BzID0ge1xcbi0tXFxubmV0L2l1Y3YvYWZfaXVjdi5jLTIyNjItXFx0Lm1tYXBcXHRcXHQ9IHNvY2tfbm9fbW1hcCxcXG5uZXQvaXVjdi9hZl9pdWN2LmM6MjI2MzpcXHQuc29ja2V0cGFpclxcdD0gc29ja19ub19zb2NrZXRwYWlyLFxcbm5ldC9pdWN2L2FmX2l1Y3YuYy0yMjY0LVxcdC5zaHV0ZG93blxcdD0gaXVjdl9zb2NrX3NodXRkb3duLFxcbi0tXFxubmV0L2tjbS9rY21zb2NrLmM9MTc0NT1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBrY21fZGdyYW1fb3BzID0ge1xcbi0tXFxubmV0L2tjbS9rY21zb2NrLmMtMTc1MC1cXHQuY29ubmVjdCA9XFx0c29ja19ub19jb25uZWN0LFxcbm5ldC9rY20va2Ntc29jay5jOjE3NTE6XFx0LnNvY2tldHBhaXIgPVxcdHNvY2tfbm9fc29ja2V0cGFpcixcXG5uZXQva2NtL2tjbXNvY2suYy0xNzUyLVxcdC5hY2NlcHQgPVxcdHNvY2tfbm9fYWNjZXB0LFxcbi0tXFxubmV0L2tjbS9rY21zb2NrLmM9MTc2Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBrY21fc2VxcGFja2V0X29wcyA9IHtcXG4tLVxcbm5ldC9rY20va2Ntc29jay5jLTE3NzEtXFx0LmNvbm5lY3QgPVxcdHNvY2tfbm9fY29ubmVjdCxcXG5uZXQva2NtL2tjbXNvY2suYzoxNzcyOlxcdC5zb2NrZXRwYWlyID1cXHRzb2NrX25vX3NvY2tldHBhaXIsXFxubmV0L2tjbS9rY21zb2NrLmMtMTc3My1cXHQuYWNjZXB0ID1cXHRzb2NrX25vX2FjY2VwdCxcXG4tLVxcbm5ldC9rZXkvYWZfa2V5LmM9Mzc3Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBwZmtleV9vcHMgPSB7XFxuLS1cXG5uZXQva2V5L2FmX2tleS5jLTM3NzgtXFx0LmNvbm5lY3RcXHQ9XFx0c29ja19ub19jb25uZWN0LFxcbm5ldC9rZXkvYWZfa2V5LmM6Mzc3OTpcXHQuc29ja2V0cGFpclxcdD1cXHRzb2NrX25vX3NvY2tldHBhaXIsXFxubmV0L2tleS9hZl9rZXkuYy0zNzgwLVxcdC5hY2NlcHRcXHRcXHQ9XFx0c29ja19ub19hY2NlcHQsXFxuLS1cXG5uZXQvbDJ0cC9sMnRwX2lwLmM9NjI4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIGwydHBfaXBfb3BzID0ge1xcbi0tXFxubmV0L2wydHAvbDJ0cF9pcC5jLTYzMy1cXHQuY29ubmVjdFxcdCAgID0gaW5ldF9kZ3JhbV9jb25uZWN0LFxcbm5ldC9sMnRwL2wydHBfaXAuYzo2MzQ6XFx0LnNvY2tldHBhaXJcXHQgICA9IHNvY2tfbm9fc29ja2V0cGFpcixcXG5uZXQvbDJ0cC9sMnRwX2lwLmMtNjM1LVxcdC5hY2NlcHRcXHRcXHQgICA9IHNvY2tfbm9fYWNjZXB0LFxcbi0tXFxubmV0L2wydHAvbDJ0cF9pcDYuYz03NTc9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgbDJ0cF9pcDZfb3BzID0ge1xcbi0tXFxubmV0L2wydHAvbDJ0cF9pcDYuYy03NjItXFx0LmNvbm5lY3RcXHQgICA9IGluZXRfZGdyYW1fY29ubmVjdCxcXG5uZXQvbDJ0cC9sMnRwX2lwNi5jOjc2MzpcXHQuc29ja2V0cGFpclxcdCAgID0gc29ja19ub19zb2NrZXRwYWlyLFxcbm5ldC9sMnRwL2wydHBfaXA2LmMtNzY0LVxcdC5hY2NlcHRcXHRcXHQgICA9IHNvY2tfbm9fYWNjZXB0LFxcbi0tXFxubmV0L2wydHAvbDJ0cF9wcHAuYz0xNjg2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHBwcG9sMnRwX29wcyA9IHtcXG4tLVxcbm5ldC9sMnRwL2wydHBfcHBwLmMtMTY5MS1cXHQuY29ubmVjdFxcdD0gcHBwb2wydHBfY29ubmVjdCxcXG5uZXQvbDJ0cC9sMnRwX3BwcC5jOjE2OTI6XFx0LnNvY2tldHBhaXJcXHQ9IHNvY2tfbm9fc29ja2V0cGFpcixcXG5uZXQvbDJ0cC9sMnRwX3BwcC5jLTE2OTMtXFx0LmFjY2VwdFxcdFxcdD0gc29ja19ub19hY2NlcHQsXFxuLS1cXG5uZXQvbGxjL2FmX2xsYy5jPTEyMjE9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgbGxjX3VpX29wcyA9IHtcXG4tLVxcbm5ldC9sbGMvYWZfbGxjLmMtMTIyNi1cXHQuY29ubmVjdCAgICAgPSBsbGNfdWlfY29ubmVjdCxcXG5uZXQvbGxjL2FmX2xsYy5jOjEyMjc6XFx0LnNvY2tldHBhaXIgID0gc29ja19ub19zb2NrZXRwYWlyLFxcbm5ldC9sbGMvYWZfbGxjLmMtMTIyOC1cXHQuYWNjZXB0ICAgICAgPSBsbGNfdWlfYWNjZXB0LFxcbi0tXFxubmV0L21jdHAvYWZfbWN0cC5jPTYyOD1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBtY3RwX2RncmFtX29wcyA9IHtcXG4tLVxcbm5ldC9tY3RwL2FmX21jdHAuYy02MzItXFx0LmNvbm5lY3RcXHQ9IG1jdHBfY29ubmVjdCxcXG5uZXQvbWN0cC9hZl9tY3RwLmM6NjMzOlxcdC5zb2NrZXRwYWlyXFx0PSBzb2NrX25vX3NvY2tldHBhaXIsXFxubmV0L21jdHAvYWZfbWN0cC5jLTYzNC1cXHQuYWNjZXB0XFx0XFx0PSBzb2NrX25vX2FjY2VwdCxcXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jPTQ3MjQ9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgbXB0Y3Bfc3RyZWFtX29wcyA9IHtcXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTQ3MjktXFx0LmNvbm5lY3RcXHQgICA9IGluZXRfc3RyZWFtX2Nvbm5lY3QsXFxubmV0L21wdGNwL3Byb3RvY29sLmM6NDczMDpcXHQuc29ja2V0cGFpclxcdCAgID0gc29ja19ub19zb2NrZXRwYWlyLFxcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTQ3MzEtXFx0LmFjY2VwdFxcdFxcdCAgID0gbXB0Y3Bfc3RyZWFtX2FjY2VwdCxcXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jPTQ4MzM9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgbXB0Y3BfdjZfc3RyZWFtX29wcyA9IHtcXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTQ4MzgtXFx0LmNvbm5lY3RcXHQgICA9IGluZXRfc3RyZWFtX2Nvbm5lY3QsXFxubmV0L21wdGNwL3Byb3RvY29sLmM6NDgzOTpcXHQuc29ja2V0cGFpclxcdCAgID0gc29ja19ub19zb2NrZXRwYWlyLFxcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTQ4NDAtXFx0LmFjY2VwdFxcdFxcdCAgID0gbXB0Y3Bfc3RyZWFtX2FjY2VwdCxcXG4tLVxcbm5ldC9uZXRsaW5rL2FmX25ldGxpbmsuYz0yODA4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIG5ldGxpbmtfb3BzID0ge1xcbi0tXFxubmV0L25ldGxpbmsvYWZfbmV0bGluay5jLTI4MTMtXFx0LmNvbm5lY3QgPVxcdG5ldGxpbmtfY29ubmVjdCxcXG5uZXQvbmV0bGluay9hZl9uZXRsaW5rLmM6MjgxNDpcXHQuc29ja2V0cGFpciA9XFx0c29ja19ub19zb2NrZXRwYWlyLFxcbm5ldC9uZXRsaW5rL2FmX25ldGxpbmsuYy0yODE1LVxcdC5hY2NlcHQgPVxcdHNvY2tfbm9fYWNjZXB0LFxcbi0tXFxubmV0L25mYy9sbGNwX3NvY2suYz05Mjc9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgbGxjcF9zb2NrX29wcyA9IHtcXG4tLVxcbm5ldC9uZmMvbGxjcF9zb2NrLmMtOTMyLVxcdC5yZWxlYXNlICAgICAgICA9IGxsY3Bfc29ja19yZWxlYXNlLFxcbm5ldC9uZmMvbGxjcF9zb2NrLmM6OTMzOlxcdC5zb2NrZXRwYWlyICAgICA9IHNvY2tfbm9fc29ja2V0cGFpcixcXG5uZXQvbmZjL2xsY3Bfc29jay5jLTkzNC1cXHQuYWNjZXB0ICAgICAgICAgPSBsbGNwX3NvY2tfYWNjZXB0LFxcbi0tXFxubmV0L25mYy9sbGNwX3NvY2suYz05NDc9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgbGxjcF9yYXdzb2NrX29wcyA9IHtcXG4tLVxcbm5ldC9uZmMvbGxjcF9zb2NrLmMtOTUyLVxcdC5yZWxlYXNlICAgICAgICA9IGxsY3Bfc29ja19yZWxlYXNlLFxcbm5ldC9uZmMvbGxjcF9zb2NrLmM6OTUzOlxcdC5zb2NrZXRwYWlyICAgICA9IHNvY2tfbm9fc29ja2V0cGFpcixcXG5uZXQvbmZjL2xsY3Bfc29jay5jLTk1NC1cXHQuYWNjZXB0ICAgICAgICAgPSBzb2NrX25vX2FjY2VwdCxcXG4tLVxcbm5ldC9uZmMvcmF3c29jay5jPTI3OT1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyByYXdzb2NrX29wcyA9IHtcXG4tLVxcbm5ldC9uZmMvcmF3c29jay5jLTI4NC1cXHQuY29ubmVjdCAgICAgICAgPSByYXdzb2NrX2Nvbm5lY3QsXFxubmV0L25mYy9yYXdzb2NrLmM6Mjg1OlxcdC5zb2NrZXRwYWlyICAgICA9IHNvY2tfbm9fc29ja2V0cGFpcixcXG5uZXQvbmZjL3Jhd3NvY2suYy0yODYtXFx0LmFjY2VwdCAgICAgICAgID0gc29ja19ub19hY2NlcHQsXFxuLS1cXG5uZXQvbmZjL3Jhd3NvY2suYz0yOTc9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcmF3c29ja19yYXdfb3BzID0ge1xcbi0tXFxubmV0L25mYy9yYXdzb2NrLmMtMzAyLVxcdC5jb25uZWN0ICAgICAgICA9IHNvY2tfbm9fY29ubmVjdCxcXG5uZXQvbmZjL3Jhd3NvY2suYzozMDM6XFx0LnNvY2tldHBhaXIgICAgID0gc29ja19ub19zb2NrZXRwYWlyLFxcbm5ldC9uZmMvcmF3c29jay5jLTMwNC1cXHQuYWNjZXB0ICAgICAgICAgPSBzb2NrX25vX2FjY2VwdCxcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9NDc1Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBwYWNrZXRfb3BzX3Nwa3QgPSB7XFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTQ3NTgtXFx0LmNvbm5lY3QgPVxcdHNvY2tfbm9fY29ubmVjdCxcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjQ3NTk6XFx0LnNvY2tldHBhaXIgPVxcdHNvY2tfbm9fc29ja2V0cGFpcixcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTQ3NjAtXFx0LmFjY2VwdCA9XFx0c29ja19ub19hY2NlcHQsXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTQ3NzI9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcGFja2V0X29wcyA9IHtcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDc3Ny1cXHQuY29ubmVjdCA9XFx0c29ja19ub19jb25uZWN0LFxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6NDc3ODpcXHQuc29ja2V0cGFpciA9XFx0c29ja19ub19zb2NrZXRwYWlyLFxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDc3OS1cXHQuYWNjZXB0ID1cXHRzb2NrX25vX2FjY2VwdCxcXG4tLVxcbm5ldC9waG9uZXQvc29ja2V0LmM9NDMzPWNvbnN0IHN0cnVjdCBwcm90b19vcHMgcGhvbmV0X2RncmFtX29wcyA9IHtcXG4tLVxcbm5ldC9waG9uZXQvc29ja2V0LmMtNDM4LVxcdC5jb25uZWN0XFx0PSBzb2NrX25vX2Nvbm5lY3QsXFxubmV0L3Bob25ldC9zb2NrZXQuYzo0Mzk6XFx0LnNvY2tldHBhaXJcXHQ9IHNvY2tfbm9fc29ja2V0cGFpcixcXG5uZXQvcGhvbmV0L3NvY2tldC5jLTQ0MC1cXHQuYWNjZXB0XFx0XFx0PSBzb2NrX25vX2FjY2VwdCxcXG4tLVxcbm5ldC9waG9uZXQvc29ja2V0LmM9NDUxPWNvbnN0IHN0cnVjdCBwcm90b19vcHMgcGhvbmV0X3N0cmVhbV9vcHMgPSB7XFxuLS1cXG5uZXQvcGhvbmV0L3NvY2tldC5jLTQ1Ni1cXHQuY29ubmVjdFxcdD0gcG5fc29ja2V0X2Nvbm5lY3QsXFxubmV0L3Bob25ldC9zb2NrZXQuYzo0NTc6XFx0LnNvY2tldHBhaXJcXHQ9IHNvY2tfbm9fc29ja2V0cGFpcixcXG5uZXQvcGhvbmV0L3NvY2tldC5jLTQ1OC1cXHQuYWNjZXB0XFx0XFx0PSBwbl9zb2NrZXRfYWNjZXB0LFxcbi0tXFxubmV0L3FydHIvYWZfcXJ0ci5jPTEyOTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcXJ0cl9wcm90b19vcHMgPSB7XFxuLS1cXG5uZXQvcXJ0ci9hZl9xcnRyLmMtMTI5OC1cXHQuY29ubmVjdFxcdD0gcXJ0cl9jb25uZWN0LFxcbm5ldC9xcnRyL2FmX3FydHIuYzoxMjk5OlxcdC5zb2NrZXRwYWlyXFx0PSBzb2NrX25vX3NvY2tldHBhaXIsXFxubmV0L3FydHIvYWZfcXJ0ci5jLTEzMDAtXFx0LmFjY2VwdFxcdFxcdD0gc29ja19ub19hY2NlcHQsXFxuLS1cXG5uZXQvcmRzL2FmX3Jkcy5jPTY0Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyByZHNfcHJvdG9fb3BzID0ge1xcbi0tXFxubmV0L3Jkcy9hZl9yZHMuYy02NTEtXFx0LmNvbm5lY3QgPVxcdHJkc19jb25uZWN0LFxcbm5ldC9yZHMvYWZfcmRzLmM6NjUyOlxcdC5zb2NrZXRwYWlyID1cXHRzb2NrX25vX3NvY2tldHBhaXIsXFxubmV0L3Jkcy9hZl9yZHMuYy02NTMtXFx0LmFjY2VwdCA9XFx0c29ja19ub19hY2NlcHQsXFxuLS1cXG5uZXQvcnhycGMvYWZfcnhycGMuYz0xMDAwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHJ4cnBjX3JwY19vcHMgPSB7XFxuLS1cXG5uZXQvcnhycGMvYWZfcnhycGMuYy0xMDA1LVxcdC5jb25uZWN0XFx0PSByeHJwY19jb25uZWN0LFxcbm5ldC9yeHJwYy9hZl9yeHJwYy5jOjEwMDY6XFx0LnNvY2tldHBhaXJcXHQ9IHNvY2tfbm9fc29ja2V0cGFpcixcXG5uZXQvcnhycGMvYWZfcnhycGMuYy0xMDA3LVxcdC5hY2NlcHRcXHRcXHQ9IHNvY2tfbm9fYWNjZXB0LFxcbi0tXFxubmV0L3NjdHAvaXB2Ni5jPTEwNDM9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgaW5ldDZfc2VxcGFja2V0X29wcyA9IHtcXG4tLVxcbm5ldC9zY3RwL2lwdjYuYy0xMDQ4LVxcdC5jb25uZWN0XFx0ICAgPSBzY3RwX2luZXRfY29ubmVjdCxcXG5uZXQvc2N0cC9pcHY2LmM6MTA0OTpcXHQuc29ja2V0cGFpclxcdCAgID0gc29ja19ub19zb2NrZXRwYWlyLFxcbm5ldC9zY3RwL2lwdjYuYy0xMDUwLVxcdC5hY2NlcHRcXHRcXHQgICA9IGluZXRfYWNjZXB0LFxcbi0tXFxubmV0L3NjdHAvcHJvdG9jb2wuYz0xMTA2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIGluZXRfc2VxcGFja2V0X29wcyA9IHtcXG4tLVxcbm5ldC9zY3RwL3Byb3RvY29sLmMtMTExMS1cXHQuY29ubmVjdFxcdCAgID0gc2N0cF9pbmV0X2Nvbm5lY3QsXFxubmV0L3NjdHAvcHJvdG9jb2wuYzoxMTEyOlxcdC5zb2NrZXRwYWlyXFx0ICAgPSBzb2NrX25vX3NvY2tldHBhaXIsXFxubmV0L3NjdHAvcHJvdG9jb2wuYy0xMTEzLVxcdC5hY2NlcHRcXHRcXHQgICA9IGluZXRfYWNjZXB0LFxcbi0tXFxubmV0L3NtYy9hZl9zbWMuYz0zMzMyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHNtY19zb2NrX29wcyA9IHtcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtMzMzNy1cXHQuY29ubmVjdFxcdD0gc21jX2Nvbm5lY3QsXFxubmV0L3NtYy9hZl9zbWMuYzozMzM4OlxcdC5zb2NrZXRwYWlyXFx0PSBzb2NrX25vX3NvY2tldHBhaXIsXFxubmV0L3NtYy9hZl9zbWMuYy0zMzM5LVxcdC5hY2NlcHRcXHRcXHQ9IHNtY19hY2NlcHQsXFxuLS1cXG5uZXQvc21jL3NtY19pbmV0LmM9MzY9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgc21jX2luZXRfc3RyZWFtX29wcyA9IHtcXG4tLVxcbm5ldC9zbWMvc21jX2luZXQuYy00MS1cXHQuY29ubmVjdFxcdD0gc21jX2Nvbm5lY3QsXFxubmV0L3NtYy9zbWNfaW5ldC5jOjQyOlxcdC5zb2NrZXRwYWlyXFx0PSBzb2NrX25vX3NvY2tldHBhaXIsXFxubmV0L3NtYy9zbWNfaW5ldC5jLTQzLVxcdC5hY2NlcHRcXHRcXHQ9IHNtY19hY2NlcHQsXFxuLS1cXG5uZXQvc21jL3NtY19pbmV0LmM9ODQ9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgc21jX2luZXQ2X3N0cmVhbV9vcHMgPSB7XFxuLS1cXG5uZXQvc21jL3NtY19pbmV0LmMtODktXFx0LmNvbm5lY3RcXHQ9IHNtY19jb25uZWN0LFxcbm5ldC9zbWMvc21jX2luZXQuYzo5MDpcXHQuc29ja2V0cGFpclxcdD0gc29ja19ub19zb2NrZXRwYWlyLFxcbm5ldC9zbWMvc21jX2luZXQuYy05MS1cXHQuYWNjZXB0XFx0XFx0PSBzbWNfYWNjZXB0LFxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmM9MzM1OT1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBtc2dfb3BzID0ge1xcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMzM2NC1cXHQuY29ubmVjdFxcdD0gdGlwY19jb25uZWN0LFxcbm5ldC90aXBjL3NvY2tldC5jOjMzNjU6XFx0LnNvY2tldHBhaXJcXHQ9IHRpcGNfc29ja2V0cGFpcixcXG5uZXQvdGlwYy9zb2NrZXQuYy0zMzY2LVxcdC5hY2NlcHRcXHRcXHQ9IHNvY2tfbm9fYWNjZXB0LFxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmM9MzM3OT1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBwYWNrZXRfb3BzID0ge1xcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMzM4NC1cXHQuY29ubmVjdFxcdD0gdGlwY19jb25uZWN0LFxcbm5ldC90aXBjL3NvY2tldC5jOjMzODU6XFx0LnNvY2tldHBhaXJcXHQ9IHRpcGNfc29ja2V0cGFpcixcXG5uZXQvdGlwYy9zb2NrZXQuYy0zMzg2LVxcdC5hY2NlcHRcXHRcXHQ9IHRpcGNfYWNjZXB0LFxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmM9MzM5OT1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBzdHJlYW1fb3BzID0ge1xcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMzQwNC1cXHQuY29ubmVjdFxcdD0gdGlwY19jb25uZWN0LFxcbm5ldC90aXBjL3NvY2tldC5jOjM0MDU6XFx0LnNvY2tldHBhaXJcXHQ9IHRpcGNfc29ja2V0cGFpcixcXG5uZXQvdGlwYy9zb2NrZXQuYy0zNDA2LVxcdC5hY2NlcHRcXHRcXHQ9IHRpcGNfYWNjZXB0LFxcbi0tXFxubmV0L3VuaXgvYWZfdW5peC5jPTk3Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyB1bml4X3N0cmVhbV9vcHMgPSB7XFxuLS1cXG5uZXQvdW5peC9hZl91bml4LmMtOTgxLVxcdC5jb25uZWN0ID1cXHR1bml4X3N0cmVhbV9jb25uZWN0LFxcbm5ldC91bml4L2FmX3VuaXguYzo5ODI6XFx0LnNvY2tldHBhaXIgPVxcdHVuaXhfc29ja2V0cGFpcixcXG5uZXQvdW5peC9hZl91bml4LmMtOTgzLVxcdC5hY2NlcHQgPVxcdHVuaXhfYWNjZXB0LFxcbi0tXFxubmV0L3VuaXgvYWZfdW5peC5jPTEwMDI9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgdW5peF9kZ3JhbV9vcHMgPSB7XFxuLS1cXG5uZXQvdW5peC9hZl91bml4LmMtMTAwNy1cXHQuY29ubmVjdCA9XFx0dW5peF9kZ3JhbV9jb25uZWN0LFxcbm5ldC91bml4L2FmX3VuaXguYzoxMDA4OlxcdC5zb2NrZXRwYWlyID1cXHR1bml4X3NvY2tldHBhaXIsXFxubmV0L3VuaXgvYWZfdW5peC5jLTEwMDktXFx0LmFjY2VwdCA9XFx0c29ja19ub19hY2NlcHQsXFxuLS1cXG5uZXQvdW5peC9hZl91bml4LmM9MTAyNz1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyB1bml4X3NlcXBhY2tldF9vcHMgPSB7XFxuLS1cXG5uZXQvdW5peC9hZl91bml4LmMtMTAzMi1cXHQuY29ubmVjdCA9XFx0dW5peF9zdHJlYW1fY29ubmVjdCxcXG5uZXQvdW5peC9hZl91bml4LmM6MTAzMzpcXHQuc29ja2V0cGFpciA9XFx0dW5peF9zb2NrZXRwYWlyLFxcbm5ldC91bml4L2FmX3VuaXguYy0xMDM0LVxcdC5hY2NlcHQgPVxcdHVuaXhfYWNjZXB0LFxcbi0tXFxubmV0L3Ztd192c29jay9hZl92c29jay5jPTE2NTM9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgdnNvY2tfZGdyYW1fb3BzID0ge1xcbi0tXFxubmV0L3Ztd192c29jay9hZl92c29jay5jLTE2NTgtXFx0LmNvbm5lY3QgPSB2c29ja19kZ3JhbV9jb25uZWN0LFxcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYzoxNjU5OlxcdC5zb2NrZXRwYWlyID0gc29ja19ub19zb2NrZXRwYWlyLFxcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYy0xNjYwLVxcdC5hY2NlcHQgPSBzb2NrX25vX2FjY2VwdCxcXG4tLVxcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYz0yNjU0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHZzb2NrX3N0cmVhbV9vcHMgPSB7XFxuLS1cXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmMtMjY1OS1cXHQuY29ubmVjdCA9IHZzb2NrX2Nvbm5lY3QsXFxubmV0L3Ztd192c29jay9hZl92c29jay5jOjI2NjA6XFx0LnNvY2tldHBhaXIgPSBzb2NrX25vX3NvY2tldHBhaXIsXFxubmV0L3Ztd192c29jay9hZl92c29jay5jLTI2NjEtXFx0LmFjY2VwdCA9IHZzb2NrX2FjY2VwdCxcXG4tLVxcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYz0yNjc2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHZzb2NrX3NlcXBhY2tldF9vcHMgPSB7XFxuLS1cXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmMtMjY4MS1cXHQuY29ubmVjdCA9IHZzb2NrX2Nvbm5lY3QsXFxubmV0L3Ztd192c29jay9hZl92c29jay5jOjI2ODI6XFx0LnNvY2tldHBhaXIgPSBzb2NrX25vX3NvY2tldHBhaXIsXFxubmV0L3Ztd192c29jay9hZl92c29jay5jLTI2ODMtXFx0LmFjY2VwdCA9IHZzb2NrX2FjY2VwdCxcXG4tLVxcbm5ldC94MjUvYWZfeDI1LmM9MTczND1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyB4MjVfcHJvdG9fb3BzID0ge1xcbi0tXFxubmV0L3gyNS9hZl94MjUuYy0xNzM5LVxcdC5jb25uZWN0ID1cXHR4MjVfY29ubmVjdCxcXG5uZXQveDI1L2FmX3gyNS5jOjE3NDA6XFx0LnNvY2tldHBhaXIgPVxcdHNvY2tfbm9fc29ja2V0cGFpcixcXG5uZXQveDI1L2FmX3gyNS5jLTE3NDEtXFx0LmFjY2VwdCA9XFx0eDI1X2FjY2VwdCxcXG4tLVxcbm5ldC94ZHAveHNrLmM9MjE1OT1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyB4c2tfcHJvdG9fb3BzID0ge1xcbi0tXFxubmV0L3hkcC94c2suYy0yMTY0LVxcdC5jb25uZWN0XFx0PSBzb2NrX25vX2Nvbm5lY3QsXFxubmV0L3hkcC94c2suYzoyMTY1OlxcdC5zb2NrZXRwYWlyXFx0PSBzb2NrX25vX3NvY2tldHBhaXIsXFxubmV0L3hkcC94c2suYy0yMTY2LVxcdC5hY2NlcHRcXHRcXHQ9IHNvY2tfbm9fYWNjZXB0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxOTo0NDoyOC42NDE0NjcyNTZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTMxNzY0MDYyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgYHNvY2tldHBhaXJgIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGRpZ2dpbmcgaW50byB0aGUgYHNvY2tldHBhaXJgIGltcGxlbWVudGF0aW9uLCBzcGVjaWZpY2FsbHkgbG9va2luZyBhdCBjaGFuZ2VzIHJlbGF0ZWQgdG8gQUZfVU5JWCBhbmQgVElQQy4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgYF9fc3lzX3NvY2tldHBhaXJgIGZ1bmN0aW9uIHdpdGhpbiBgbmV0L3NvY2tldC5jYCwgd2hpY2gsIGFzIEkgdW5kZXJzdGFuZCBpdCwgaXMgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgYHN5c19zb2NrZXRwYWlyYCBzeXN0ZW0gY2FsbC4gSSBhbHNvIG5vdGVkIHRoYXQgYF9fc3lzX3NvY2tldHBhaXJgIGlzIGRpcmVjdGx5IGNhbGxlZCBieSBgX19kb19zeXNfc29ja2V0cGFpcmAsIG9yIHBvdGVudGlhbGx5IGBfX3NlX3N5c19zb2NrZXRwYWlyYCBkZXBlbmRpbmcgb24gdGhlIGV4YWN0IGtlcm5lbCB2ZXJzaW9uLlxuXG5JJ3ZlIGNvbmZpcm1lZCB0aGUgZGVjbGFyYXRpb246IGBpbnQgX19zeXNfc29ja2V0cGFpcihpbnQgZmFtaWx5LCBpbnQgdHlwZSwgaW50IHByb3RvY29sLCBpbnQgX191c2VyICp1c29ja3ZlYylgIGFuZCBpdHMgYXNzb2NpYXRpb24gd2l0aCBgU1lTQ0FMTF9ERUZJTkU0KHNvY2tldHBhaXIsIGludCwgZmFtaWx5LCBpbnQsIHR5cGUsIGludCwgcHJvdG9jb2wsIGludCBfX3VzZXIgKiwgdXNvY2t2ZWMpYCB3aXRoaW4gYG5ldC9zb2NrZXQuY2AuXG5cbkkndmUgc2Nhbm5lZCB0aGUgcmVsZXZhbnQgY29kZSB0byBjb25maXJtIHRoYXQgYF9fc3lzX3NvY2tldHBhaXJgLCBgX19kb19zeXNfc29ja2V0cGFpcmAgKG9yIGFueSBvZiB0aGUgdmFyaWFudHMpIGFyZSB0aGUga2V5IHN5bWJvbHMgdG8gdHJhY2suIEkgYWxyZWFkeSBrbm93IHRoYXQgc3l6a2FsbGVyIHNwZWNpZmljYWxseSBwb2ludHMgdG8gYF9fc3lzX3NvY2tldHBhaXJgIGFzIHRoZSBjcml0aWNhbCBmdW5jdGlvbi5cblxuSSd2ZSBhbHNvIHZlcmlmaWVkIHRoYXQgYENPTkZJR19ORVRgIGFuZCBgQ09ORklHX1VOSVhgIGFyZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBgQ09ORklHX05FVGAgaXMgdGhlIGJhc2UgZm9yIHRoZSBuZXR3b3JraW5nIHN1YnN5c3RlbSwgYW5kIGBDT05GSUdfVU5JWGAgc3BlY2lmaWNhbGx5IGVuYWJsZXMgdGhlIEFGX1VOSVggc29ja2V0cGFpciBmdW5jdGlvbmFsaXR5LlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSd2ZSByZS1leGFtaW5lZCBhbGwgdGhlIGRldGFpbHM6XG5cbiogICAqKldvcnRoRnV6emluZzoqKiBUcnVlLCBkZWZpbml0ZWx5LlxuKiAgICoqUmVhc29uaW5nOioqIFRoZSBwYXRjaCdzIGNvcmUgbW9kaWZpY2F0aW9uIHNlZW1zIHRvIGJlIGEgcmVmYWN0b3Jpbmcgb2YgYF9fc3lzX3NvY2tldHBhaXIoKWAgd2hlcmUgaXQgZGVmZXJzIHRoZSB1c2VyLXNwYWNlIGZpbGUgZGVzY3JpcHRvciBjb3B5IChgcHV0X3VzZXIoKWApIHVudGlsICphZnRlciogc29ja2V0cyBhbmQgZmlsZXMgaGF2ZSBiZWVuIHN1Y2Nlc3NmdWxseSBjcmVhdGVkIGFuZCBhbGxvY2F0ZWQgdmlhIGBzb2NrX2FsbG9jX2ZpbGUoKWAuIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UsIGlmIGBwdXRfdXNlcigpYCBmYWlscywgaXQgbm93IHBlcmZvcm1zIHByb3BlciBjbGVhbnVwICh1c2luZyBgZnB1dCgpYCBhbmQgcmVsZWFzaW5nIGRlc2NyaXB0b3JzKS4gVGhpcyBhbHRlcnMgdGhlIHN5c2NhbGwncyBlcnJvciBoYW5kbGluZyBhbmQgcmVzb3VyY2UgbGlmZXRpbWUgbWFuYWdlbWVudCBpbiBhIGNyaXRpY2FsIGFyZWEgb2YgbmV0d29yay9WRlMgaW50ZWdyYXRpb24uXG4qICAgKipGb2N1c1N5bWJvbHM6KiogU3BlY2lmaWNhbGx5IGBfX3N5c19zb2NrZXRwYWlyYC4gT3IgcG90ZW50aWFsbHkgYFtcIl9fc3lzX3NvY2tldHBhaXJcIiwgXCJ1bml4X3NvY2tldHBhaXJcIl1gIHRob3VnaCBgX19zeXNfc29ja2V0cGFpcmAgaXMgbW9yZSBkaXJlY3QuXG4qICAgKipFbmFibGVDb25maWdzOioqIGBbXCJORVRcIiwgXCJVTklYXCJdYC5cblxuSSd2ZSBkb3VibGUtY2hlY2tlZCB0aGF0IGV2ZXJ5dGhpbmcgYWxpZ25zIHdpdGggbXkgcmVxdWlyZW1lbnRzOiBgV29ydGhGdXp6aW5nYCBpcyBhIGJvb2xlYW4sIGBGb2N1c1N5bWJvbHNgIGlzIGEgc3RyaW5nIGxpc3QsIGBFbmFibGVDb25maWdzYCBpcyBhIHN0cmluZyBsaXN0LCBhbmQgdGhlIGBSZWFzb25pbmdgIHByb3ZpZGVzIGEgY29uY2lzZSBleHBsYW5hdGlvbi5cblxuRXZlcnl0aGluZyBpcyBsb29raW5nIGdvb2QuIEknbSByZWFkeSB0byBtb3ZlIGZvcndhcmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MTYyLCJPdXRwdXRUb2tlbnMiOjExNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxOTo0NDozMy45NTkxMTAwMzhaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTgwMDMyMjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVFwiLFxuICAgIFwiVU5JWFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fc3lzX3NvY2tldHBhaXJcIixcbiAgICBcInVuaXhfc29ja2V0cGFpclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGVycm9yIGhhbmRsaW5nIGFuZCBkZXNjcmlwdG9yIGluc3RhbGxhdGlvbiBpbiBfX3N5c19zb2NrZXRwYWlyKCkgYnkgZGVmZXJyaW5nIHB1dF91c2VyKCkgdW50aWwgYWZ0ZXIgc29ja2V0IGFuZCBmaWxlIGFsbG9jYXRpb24sIGFuZCBhZGRpbmcgZnB1dCgpIGNsZWFudXAgaWYgcHVibGlzaGluZyB0byB1c2VyIHNwYWNlIGZhaWxzLiBUaGlzIGFmZmVjdHMgY29yZSBuZXR3b3JraW5nIHN5c2NhbGwgaGFuZGxpbmcgYW5kIHJlc291cmNlIG1hbmFnZW1lbnQsIHdoaWNoIGlzIGZ1bGx5IHJlYWNoYWJsZSBhbmQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRcIixcbiAgICBcIlVOSVhcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX3N5c19zb2NrZXRwYWlyXCIsXG4gICAgXCJ1bml4X3NvY2tldHBhaXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBlcnJvciBoYW5kbGluZyBhbmQgZGVzY3JpcHRvciBpbnN0YWxsYXRpb24gaW4gX19zeXNfc29ja2V0cGFpcigpIGJ5IGRlZmVycmluZyBwdXRfdXNlcigpIHVudGlsIGFmdGVyIHNvY2tldCBhbmQgZmlsZSBhbGxvY2F0aW9uLCBhbmQgYWRkaW5nIGZwdXQoKSBjbGVhbnVwIGlmIHB1Ymxpc2hpbmcgdG8gdXNlciBzcGFjZSBmYWlscy4gVGhpcyBhZmZlY3RzIGNvcmUgbmV0d29ya2luZyBzeXNjYWxsIGhhbmRsaW5nIGFuZCByZXNvdXJjZSBtYW5hZ2VtZW50LCB3aGljaCBpcyBmdWxseSByZWFjaGFibGUgYW5kIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE5OjQ0OjM0LjA3NzEyMjg4NloiLCJTZXEiOjE3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTg0MTQyOTUzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE5OjQ0OjM0LjA3NzkxOTQxNloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjk4NDA2MTc2ODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBfX3N5c19zb2NrZXRwYWlyYCB0byBkZWZlciBjb3B5aW5nIGZpbGUgZGVzY3JpcHRvciBudW1iZXJzIChgZmQxYCBhbmQgYGZkMmApIHRvIHVzZXJzcGFjZSAoYHVzb2NrdmVjYCkgdW50aWwgYWZ0ZXIgc29ja2V0IGNyZWF0aW9uLCBwcm90b2NvbCBzZXR1cCwgYW5kIGZpbGUgYWxsb2NhdGlvbiBoYXZlIHN1Y2NlZWRlZC5cXG5cXG4tIFRoZSB2YWx1ZXMgd3JpdHRlbiB0byB1c2Vyc3BhY2UgdmlhIGBwdXRfdXNlcmAgYXJlIHNpbXBsZSBzY2FsYXIgaW50ZWdlcnMgKGBmZDFgLCBgZmQyYCkgcmV0dXJuZWQgZGlyZWN0bHkgZnJvbSBgZ2V0X3VudXNlZF9mZF9mbGFncygpYCwgd2hpY2ggYXJlIGZ1bGx5IGluaXRpYWxpemVkIGFuZCB2YWxpZGF0ZWQgcHJpb3IgdG8gdXNlLlxcbi0gTm8gbmV3IHVuaW5pdGlhbGl6ZWQgaGVhcCBvciBzdGFjayBidWZmZXJzLCB1bmluaXRpYWxpemVkIHN0cnVjdCBwYWRkaW5nLCBvciB1bmluaXRpYWxpemVkIHZhcmlhYmxlIHJlYWRzIGFyZSBpbnRyb2R1Y2VkLlxcbi0gQW55IHBvdGVudGlhbCByZXNvdXJjZSBtYW5hZ2VtZW50IG9yIGxpZmVjeWNsZSBidWdzIChzdWNoIGFzIGZkL2ZpbGUgY2xlYW51cCBvciByZWZjb3VudGluZyBpc3N1ZXMgb24gZXJyb3IgcGF0aHMpIGFyZSBhZGRyZXNzZWQgYnkgc3RhbmRhcmQgc2FuaXRpemVycyAoS0FTQU4sIHJlZmNvdW50IGNoZWNrcykuXFxuXFxuQ29uc2VxdWVudGx5LCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDU1M2UxNTJkOGM2MzNkNjUzYjBhNTRkNDEyNzM0NGY0MDkyOWI3NjNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IFNlcCAxMCAxOTo0Mzo1NiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zb2NrZXQuYyBiL25ldC9zb2NrZXQuY1xuaW5kZXggYzA1ZDg2ZTYzYWJmNy4uNGNiODY2Mjg2OWYwOSAxMDA2NDRcbi0tLSBhL25ldC9zb2NrZXQuY1xuKysrIGIvbmV0L3NvY2tldC5jXG5AQCAtMTg1MSwxMCArMTg1MSw3IEBAIGludCBfX3N5c19zb2NrZXRwYWlyKGludCBmYW1pbHksIGludCB0eXBlLCBpbnQgcHJvdG9jb2wsIGludCBfX3VzZXIgKnVzb2NrdmVjKVxuIFx0aWYgKFNPQ0tfTk9OQkxPQ0sgIT0gT19OT05CTE9DSyBcdTAwMjZcdTAwMjYgKGZsYWdzIFx1MDAyNiBTT0NLX05PTkJMT0NLKSlcbiBcdFx0ZmxhZ3MgPSAoZmxhZ3MgXHUwMDI2IH5TT0NLX05PTkJMT0NLKSB8IE9fTk9OQkxPQ0s7XG4gXG4tXHQvKlxuLVx0ICogcmVzZXJ2ZSBkZXNjcmlwdG9ycyBhbmQgbWFrZSBzdXJlIHdlIHdvbid0IGZhaWxcbi1cdCAqIHRvIHJldHVybiB0aGVtIHRvIHVzZXJsYW5kLlxuLVx0ICovXG4rXHQvKiBSZXNlcnZlIGJvdGggZGVzY3JpcHRvcnMgYmVmb3JlIGNyZWF0aW5nIHRoZSBzb2NrZXRzLiAqL1xuIFx0ZmQxID0gZ2V0X3VudXNlZF9mZF9mbGFncyhmbGFncyk7XG4gXHRpZiAodW5saWtlbHkoZmQxIFx1MDAzYyAwKSlcbiBcdFx0cmV0dXJuIGZkMTtcbkBAIC0xODY1LDE0ICsxODYyLDYgQEAgaW50IF9fc3lzX3NvY2tldHBhaXIoaW50IGZhbWlseSwgaW50IHR5cGUsIGludCBwcm90b2NvbCwgaW50IF9fdXNlciAqdXNvY2t2ZWMpXG4gXHRcdHJldHVybiBmZDI7XG4gXHR9XG4gXG4tXHRlcnIgPSBwdXRfdXNlcihmZDEsIFx1MDAyNnVzb2NrdmVjWzBdKTtcbi1cdGlmIChlcnIpXG4tXHRcdGdvdG8gb3V0O1xuLVxuLVx0ZXJyID0gcHV0X3VzZXIoZmQyLCBcdTAwMjZ1c29ja3ZlY1sxXSk7XG4tXHRpZiAoZXJyKVxuLVx0XHRnb3RvIG91dDtcbi1cbiBcdC8qXG4gXHQgKiBPYnRhaW4gdGhlIGZpcnN0IHNvY2tldCBhbmQgY2hlY2sgaWYgdGhlIHVuZGVybHlpbmcgcHJvdG9jb2xcbiBcdCAqIHN1cHBvcnRzIHRoZSBzb2NrZXRwYWlyIGNhbGwuXG5AQCAtMTkxNiw2ICsxOTA1LDE2IEBAIGludCBfX3N5c19zb2NrZXRwYWlyKGludCBmYW1pbHksIGludCB0eXBlLCBpbnQgcHJvdG9jb2wsIGludCBfX3VzZXIgKnVzb2NrdmVjKVxuIFx0XHRnb3RvIG91dDtcbiBcdH1cbiBcbitcdC8qIFB1Ymxpc2ggdGhlIGRlc2NyaXB0b3JzIG5vdyB0aGF0IGl0IHNob3VsZG4ndCBmYWlsLiAqL1xuK1x0ZXJyID0gcHV0X3VzZXIoZmQxLCBcdTAwMjZ1c29ja3ZlY1swXSk7XG4rXHRpZiAoIWVycilcbitcdFx0ZXJyID0gcHV0X3VzZXIoZmQyLCBcdTAwMjZ1c29ja3ZlY1sxXSk7XG4rXHRpZiAoZXJyKSB7XG4rXHRcdGZwdXQobmV3ZmlsZTIpO1xuK1x0XHRmcHV0KG5ld2ZpbGUxKTtcbitcdFx0Z290byBvdXQ7XG4rXHR9XG4rXG4gXHRhdWRpdF9mZF9wYWlyKGZkMSwgZmQyKTtcbiBcbiBcdGZkX2luc3RhbGwoZmQxLCBuZXdmaWxlMSk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxOTo0NDozNC4wNzc5MjExOTZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzkxMzI3MDA3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIFNvY2tldHBhaXIgRGl2ZSoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgY2hhbmdlZC4gRmlyc3QgdGhpbmdzIGZpcnN0LCBsZXQncyB0YWtlIGEgbG9vayBhdCB0aGUgZGlmZi4gU3BlY2lmaWNhbGx5LCBJIHNlZSBhbHRlcmF0aW9ucyB0byBgX19zeXNfc29ja2V0cGFpcmAgd2l0aGluIGBuZXQvc29ja2V0LmNgLiBUaGlzIGlzbid0IHVuZXhwZWN0ZWQsIHNvY2tldHBhaXIgaXMgYSB0cmlja3kgZnVuY3Rpb24sIGFuZCBhbnkgbW9kaWZpY2F0aW9uIHdhcnJhbnRzIGNhcmVmdWwgc2NydXRpbnkuIE5vdywgbGV0J3Mgem9vbSBpbiBvbiBgbmV0L3NvY2tldC5jYC4gSSdtIGdvaW5nIHRvIGp1bXAgaW4gYXJvdW5kIGxpbmUgMTg1MS4gTXkgc3BpZGVyIHNlbnNlcyBhcmUgdGluZ2xpbmcsIEkgaGF2ZSBhIGdvb2QgZmVlbGluZyB0aGF0IHRoZSBzdXJyb3VuZGluZyBjb2RlIHdpbGwgc2hlZCBsaWdodCBvbiB3aGF0J3MgZHJpdmluZyB0aGlzIGNoYW5nZS4gTGV0J3Mgc2VlIHdoYXQgaW50ZXJlc3RpbmcgdGlkYml0cyBhbmQgZ290Y2hhcyBhcmUgbHVya2luZyBpbiB0aGlzIHNlY3Rpb24gb2YgdGhlIGNvZGViYXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDU1LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxOTo0NDozNy45OTExOTQ0NjhaIiwiU2VxIjoyMCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzM4NDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9zb2NrZXQuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxODQwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTg0MDpcXHR7XFxuMTg0MTpcXHRcXHRzdHJ1Y3Qgc29ja2V0ICpzb2NrMSwgKnNvY2syO1xcbjE4NDI6XFx0XFx0aW50IGZkMSwgZmQyLCBlcnI7XFxuMTg0MzpcXHRcXHRzdHJ1Y3QgZmlsZSAqbmV3ZmlsZTEsICpuZXdmaWxlMjtcXG4xODQ0OlxcdFxcdGludCBmbGFncztcXG4xODQ1OlxcdFxcbjE4NDY6XFx0XFx0ZmxhZ3MgPSB0eXBlIFxcdTAwMjYgflNPQ0tfVFlQRV9NQVNLO1xcbjE4NDc6XFx0XFx0aWYgKGZsYWdzIFxcdTAwMjYgfihTT0NLX0NMT0VYRUMgfCBTT0NLX05PTkJMT0NLKSlcXG4xODQ4OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjE4NDk6XFx0XFx0dHlwZSBcXHUwMDI2PSBTT0NLX1RZUEVfTUFTSztcXG4xODUwOlxcdFxcbjE4NTE6XFx0XFx0aWYgKFNPQ0tfTk9OQkxPQ0sgIT0gT19OT05CTE9DSyBcXHUwMDI2XFx1MDAyNiAoZmxhZ3MgXFx1MDAyNiBTT0NLX05PTkJMT0NLKSlcXG4xODUyOlxcdFxcdFxcdGZsYWdzID0gKGZsYWdzIFxcdTAwMjYgflNPQ0tfTk9OQkxPQ0spIHwgT19OT05CTE9DSztcXG4xODUzOlxcdFxcbjE4NTQ6XFx0XFx0LyogUmVzZXJ2ZSBib3RoIGRlc2NyaXB0b3JzIGJlZm9yZSBjcmVhdGluZyB0aGUgc29ja2V0cy4gKi9cXG4xODU1OlxcdFxcdGZkMSA9IGdldF91bnVzZWRfZmRfZmxhZ3MoZmxhZ3MpO1xcbjE4NTY6XFx0XFx0aWYgKHVubGlrZWx5KGZkMSBcXHUwMDNjIDApKVxcbjE4NTc6XFx0XFx0XFx0cmV0dXJuIGZkMTtcXG4xODU4OlxcdFxcbjE4NTk6XFx0XFx0ZmQyID0gZ2V0X3VudXNlZF9mZF9mbGFncyhmbGFncyk7XFxuMTg2MDpcXHRcXHRpZiAodW5saWtlbHkoZmQyIFxcdTAwM2MgMCkpIHtcXG4xODYxOlxcdFxcdFxcdHB1dF91bnVzZWRfZmQoZmQxKTtcXG4xODYyOlxcdFxcdFxcdHJldHVybiBmZDI7XFxuMTg2MzpcXHRcXHR9XFxuMTg2NDpcXHRcXG4xODY1OlxcdFxcdC8qXFxuMTg2NjpcXHRcXHQgKiBPYnRhaW4gdGhlIGZpcnN0IHNvY2tldCBhbmQgY2hlY2sgaWYgdGhlIHVuZGVybHlpbmcgcHJvdG9jb2xcXG4xODY3OlxcdFxcdCAqIHN1cHBvcnRzIHRoZSBzb2NrZXRwYWlyIGNhbGwuXFxuMTg2ODpcXHRcXHQgKi9cXG4xODY5OlxcdFxcbjE4NzA6XFx0XFx0ZXJyID0gc29ja19jcmVhdGUoZmFtaWx5LCB0eXBlLCBwcm90b2NvbCwgXFx1MDAyNnNvY2sxKTtcXG4xODcxOlxcdFxcdGlmICh1bmxpa2VseShlcnIgXFx1MDAzYyAwKSlcXG4xODcyOlxcdFxcdFxcdGdvdG8gb3V0O1xcbjE4NzM6XFx0XFxuMTg3NDpcXHRcXHRlcnIgPSBzb2NrX2NyZWF0ZShmYW1pbHksIHR5cGUsIHByb3RvY29sLCBcXHUwMDI2c29jazIpO1xcbjE4NzU6XFx0XFx0aWYgKHVubGlrZWx5KGVyciBcXHUwMDNjIDApKSB7XFxuMTg3NjpcXHRcXHRcXHRzb2NrX3JlbGVhc2Uoc29jazEpO1xcbjE4Nzc6XFx0XFx0XFx0Z290byBvdXQ7XFxuMTg3ODpcXHRcXHR9XFxuMTg3OTpcXHRcXG4xODgwOlxcdFxcdGVyciA9IHNlY3VyaXR5X3NvY2tldF9zb2NrZXRwYWlyKHNvY2sxLCBzb2NrMik7XFxuMTg4MTpcXHRcXHRpZiAodW5saWtlbHkoZXJyKSkge1xcbjE4ODI6XFx0XFx0XFx0c29ja19yZWxlYXNlKHNvY2syKTtcXG4xODgzOlxcdFxcdFxcdHNvY2tfcmVsZWFzZShzb2NrMSk7XFxuMTg4NDpcXHRcXHRcXHRnb3RvIG91dDtcXG4xODg1OlxcdFxcdH1cXG4xODg2OlxcdFxcbjE4ODc6XFx0XFx0ZXJyID0gUkVBRF9PTkNFKHNvY2sxLVxcdTAwM2VvcHMpLVxcdTAwM2Vzb2NrZXRwYWlyKHNvY2sxLCBzb2NrMik7XFxuMTg4ODpcXHRcXHRpZiAodW5saWtlbHkoZXJyIFxcdTAwM2MgMCkpIHtcXG4xODg5OlxcdFxcdFxcdHNvY2tfcmVsZWFzZShzb2NrMik7XFxuMTg5MDpcXHRcXHRcXHRzb2NrX3JlbGVhc2Uoc29jazEpO1xcbjE4OTE6XFx0XFx0XFx0Z290byBvdXQ7XFxuMTg5MjpcXHRcXHR9XFxuMTg5MzpcXHRcXG4xODk0OlxcdFxcdG5ld2ZpbGUxID0gc29ja19hbGxvY19maWxlKHNvY2sxLCBmbGFncywgTlVMTCk7XFxuMTg5NTpcXHRcXHRpZiAoSVNfRVJSKG5ld2ZpbGUxKSkge1xcbjE4OTY6XFx0XFx0XFx0ZXJyID0gUFRSX0VSUihuZXdmaWxlMSk7XFxuMTg5NzpcXHRcXHRcXHRzb2NrX3JlbGVhc2Uoc29jazIpO1xcbjE4OTg6XFx0XFx0XFx0Z290byBvdXQ7XFxuMTg5OTpcXHRcXHR9XFxuMTkwMDpcXHRcXG4xOTAxOlxcdFxcdG5ld2ZpbGUyID0gc29ja19hbGxvY19maWxlKHNvY2syLCBmbGFncywgTlVMTCk7XFxuMTkwMjpcXHRcXHRpZiAoSVNfRVJSKG5ld2ZpbGUyKSkge1xcbjE5MDM6XFx0XFx0XFx0ZXJyID0gUFRSX0VSUihuZXdmaWxlMik7XFxuMTkwNDpcXHRcXHRcXHRmcHV0KG5ld2ZpbGUxKTtcXG4xOTA1OlxcdFxcdFxcdGdvdG8gb3V0O1xcbjE5MDY6XFx0XFx0fVxcbjE5MDc6XFx0XFxuMTkwODpcXHRcXHQvKiBQdWJsaXNoIHRoZSBkZXNjcmlwdG9ycyBub3cgdGhhdCBpdCBzaG91bGRuJ3QgZmFpbC4gKi9cXG4xOTA5OlxcdFxcdGVyciA9IHB1dF91c2VyKGZkMSwgXFx1MDAyNnVzb2NrdmVjWzBdKTtcXG4xOTEwOlxcdFxcdGlmICghZXJyKVxcbjE5MTE6XFx0XFx0XFx0ZXJyID0gcHV0X3VzZXIoZmQyLCBcXHUwMDI2dXNvY2t2ZWNbMV0pO1xcbjE5MTI6XFx0XFx0aWYgKGVycikge1xcbjE5MTM6XFx0XFx0XFx0ZnB1dChuZXdmaWxlMik7XFxuMTkxNDpcXHRcXHRcXHRmcHV0KG5ld2ZpbGUxKTtcXG4xOTE1OlxcdFxcdFxcdGdvdG8gb3V0O1xcbjE5MTY6XFx0XFx0fVxcbjE5MTc6XFx0XFxuMTkxODpcXHRcXHRhdWRpdF9mZF9wYWlyKGZkMSwgZmQyKTtcXG4xOTE5OlxcdFxcbjE5MjA6XFx0XFx0ZmRfaW5zdGFsbChmZDEsIG5ld2ZpbGUxKTtcXG4xOTIxOlxcdFxcdGZkX2luc3RhbGwoZmQyLCBuZXdmaWxlMik7XFxuMTkyMjpcXHRcXHRyZXR1cm4gMDtcXG4xOTIzOlxcdFxcbjE5MjQ6XFx0b3V0OlxcbjE5MjU6XFx0XFx0cHV0X3VudXNlZF9mZChmZDIpO1xcbjE5MjY6XFx0XFx0cHV0X3VudXNlZF9mZChmZDEpO1xcbjE5Mjc6XFx0XFx0cmV0dXJuIGVycjtcXG4xOTI4OlxcdH1cXG4xOTI5OlxcdFxcbjE5MzA6XFx0U1lTQ0FMTF9ERUZJTkU0KHNvY2tldHBhaXIsIGludCwgZmFtaWx5LCBpbnQsIHR5cGUsIGludCwgcHJvdG9jb2wsXFxuMTkzMTpcXHRcXHRcXHRpbnQgX191c2VyICosIHVzb2NrdmVjKVxcbjE5MzI6XFx0e1xcbjE5MzM6XFx0XFx0cmV0dXJuIF9fc3lzX3NvY2tldHBhaXIoZmFtaWx5LCB0eXBlLCBwcm90b2NvbCwgdXNvY2t2ZWMpO1xcbjE5MzQ6XFx0fVxcbjE5MzU6XFx0XFxuMTkzNjpcXHRpbnQgX19zeXNfYmluZF9zb2NrZXQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKmFkZHJlc3MsXFxuMTkzNzpcXHRcXHRcXHQgICAgICBpbnQgYWRkcmxlbilcXG4xOTM4OlxcdHtcXG4xOTM5OlxcdFxcdGludCBlcnI7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE5OjQ0OjM3Ljk5MTUzNjY0OFoiLCJTZXEiOjIxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1OTI2OTczMjAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBTb2NrZXRwYWlyIFBhdGNoIGFuZCBLTVNBTiBBcHBsaWNhYmlsaXR5KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgY29yZSBpc3N1ZSBpcyB0aGUgb3JpZ2luYWwgb3JkZXIgb2Ygb3BlcmF0aW9ucyBpbiBgX19zeXNfc29ja2V0cGFpcmAuIFRoZSBvbGQgY29kZSB3YXMgd3JpdGluZyBmaWxlIGRlc2NyaXB0b3IgbnVtYmVycyB0byB1c2VyIHNwYWNlICpiZWZvcmUqIGFjdHVhbGx5IGNvbXBsZXRpbmcgc29ja2V0IGNyZWF0aW9uIGFuZCBmaWxlIGFsbG9jYXRpb24sIGluY2x1ZGluZyBhbGwgdGhlIHNlY3VyaXR5IGNoZWNrcyBhbmQgcHJvdG9jb2wgY2FsbGJhY2tzLiBUaGlzIGNyZWF0ZWQgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gYW5kIGEgcG9zc2libGUgaW5mb3JtYXRpb24gbGVhazogaWYgc29tZXRoaW5nIHdlbnQgd3JvbmcgKmFmdGVyKiBgcHV0X3VzZXJgIGJ1dCAqYmVmb3JlKiB0aGUgc2V0dXAgd2FzIGNvbXBsZXRlLCB1c2VyIHNwYWNlIHdvdWxkIGhhdmUgb2JzZXJ2ZWQgdGhlc2UgcG90ZW50aWFsbHkgaW52YWxpZCBmaWxlIGRlc2NyaXB0b3JzLiBUaGUgcGF0Y2ggYWltcyB0byBmaXggdGhpcy5cblxuTm93LCB0aGUgcGF0Y2ggbW92ZXMgdGhvc2UgYHB1dF91c2VyYCBjYWxsc+KAlHdoZXJlIHdlIHdyaXRlIHRoZSBmaWxlIGRlc2NyaXB0b3JzIHRvIHVzZXIgc3BhY2XigJR0byB0aGUgZW5kLCAqcmlnaHQqIGJlZm9yZSB3ZSBpbnN0YWxsIHRoZSBmaWxlIGRlc2NyaXB0b3JzIHVzaW5nIGBmZF9pbnN0YWxsYC4gVGhpcyBpcyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgZml4IHRvIGFkZHJlc3MgdGhpcyBmbGF3LiBFc3NlbnRpYWxseSwgaWYgYSBmYWlsdXJlIG9jY3VycywgdGhlIGNvZGUgY29ycmVjdGx5IGhhbmRsZXMgdGhpcyBhbmQgY2xlYW5zIHVwIHRoZSBuZXdseS1jcmVhdGVkIGZpbGVzIGFuZCBzb2NrZXRzLlxuXG5NeSBuZXh0IHRhc2sgaXMgdG8gdmVyaWZ5IHRoYXQgdGhpcyBjaGFuZ2UgZG9lc24ndCBpbnRyb2R1Y2UgYW55IG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMuIExldCdzIHdhbGsgdGhyb3VnaCB0aGUgdmFyaWFibGVzIGludm9sdmVkOlxuXG4qICAgYGZkMWAgYW5kIGBmZDJgOiBUaGVzZSBhcmUgaW50ZWdlcnMgcmV0dXJuZWQgZnJvbSBgZ2V0X3VudXNlZF9mZF9mbGFncyhmbGFncylgLiBDcnVjaWFsbHksIHRoZXkgYXJlIGNoZWNrZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGNhbGwgZm9yIGVycm9yIGNvbmRpdGlvbnMgYW5kIGFyZSB0aGVyZWZvcmUgZGVmaW5pdGVseSBpbml0aWFsaXplZCBpbnRlZ2VyIHZhbHVlcy4gVGhlIHN1YnNlcXVlbnQgYHB1dF91c2VyYCBjYWxscyBzaW1wbHkgd3JpdGUgdGhlc2UgaW5pdGlhbGl6ZWQgaW50ZWdlcnMgdG8gdXNlciBzcGFjZS5cblxuKiAgIE5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdpdGggcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCBmaWVsZHMgYXJlIHVzZWQuIFRoZSB2YXJpYWJsZXMgYXJlIHByaW1pdGl2ZSB0eXBlcywgd2hpY2ggbWVhbnMgdGhlcmUgYXJlIG5vIGNvbmNlcm5zIGFib3V0IHVuaW5pdGlhbGl6ZWQgc3RydWN0IGZpZWxkcywgc3RhY2sgdmFyaWFibGVzLCBvciBwb3RlbnRpYWwgaW5mb3JtYXRpb24gbGVha3Mgb2YgdW5pbml0aWFsaXplZCBkYXRhLlxuXG5UaGlzIGlzIGFsbCBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGFuZCBJIGFtIGNvbmZpZGVudCB0aGF0IEtNU0FOIGRvZXNuJ3QgbmVlZCB0byBiZSBjb25jZXJuZWQgd2l0aCB0aGlzIHBhdGNoLiBUaGlzIGNoYW5nZSBvbmx5IHJlb3JkZXJzIHRoZSBlcnJvciBoYW5kbGluZyBhbmQgdGhlIHRpbWluZyBvZiBgcHV0X3VzZXJgIGFuZCBgZnB1dGAgY2FsbHMsIHNvIHRoaXMgZG9lc24ndCBpbnRyb2R1Y2UgYW55IG5ldyByaXNrcywgc3VjaCBhcyBpc3N1ZXMgd2l0aCBkb3VibGUgYGZwdXRgLCB1c2UtYWZ0ZXItZnJlZSwgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgdGhhdCBjYW4gYmUgZXhwb3NlZC4gRnVydGhlcm1vcmUsIEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgbWVjaGFuaXNtcyB3aWxsIGJlIGFibGUgdG8gY2F0Y2ggYW55IHBvdGVudGlhbCBpc3N1ZXMuXG5cblRoZXJlZm9yZSwgc2luY2UgdGhlIHZhcmlhYmxlcyBhcmUgZXhwbGljaXRseSBpbml0aWFsaXplZCBiZWZvcmUgYmVpbmcgd3JpdHRlbiB0byB1c2VyIHNwYWNlLCBhbmQgdGhlIGNoYW5nZXMgYXJlIGxpbWl0ZWQgdG8gY29udHJvbCBmbG93IGFuZCB0aGUgdGltaW5nIG9mIGBwdXRfdXNlcmAsIEkndmUgdmVyaWZpZWQgdGhhdCB0aGUgYE5lZWRzS01TQU5gIGZsYWcgY2FuIHJlbWFpbiBgZmFsc2VgLlxuXG5HaXZlbiB0aGlzLCBJIGFtIGNvbWZvcnRhYmxlIHdyaXRpbmcgYSBkZXRhaWxlZCBhbmQgc3RydWN0dXJlZCBLTVNBTlJlYXNvbmluZyBqdXN0aWZ5aW5nIHRoaXMgY29uY2x1c2lvbi4gVGhlIG1haW4gZ29hbCBoZXJlIGlzIHRvIGVuc3VyZSB0aGF0IHRoZSB1c2VyIGNhbiB1bmRlcnN0YW5kIHdoeSB0aGUgcGF0Y2ggaXMgY29uc2lkZXJlZCBzYWZlIGluIHRlcm1zIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTA5LCJPdXRwdXRUb2tlbnMiOjIxMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYxOSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE5OjQ0OjQzLjkxODUxMjg5MloiLCJTZXEiOjIyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fc3lzX3NvY2tldHBhaXJgIHRvIGRlZmVyIGNvcHlpbmcgZmlsZSBkZXNjcmlwdG9yIG51bWJlcnMgKGBmZDFgIGFuZCBgZmQyYCkgdG8gdXNlcnNwYWNlIChgdXNvY2t2ZWNgKSB1bnRpbCBhZnRlciBzb2NrZXQgY3JlYXRpb24sIHByb3RvY29sIHNldHVwLCBhbmQgZmlsZSBhbGxvY2F0aW9uIGhhdmUgc3VjY2VlZGVkLlxcblxcbi0gVGhlIHZhbHVlcyB3cml0dGVuIHRvIHVzZXJzcGFjZSB2aWEgYHB1dF91c2VyYCBhcmUgc2ltcGxlIHNjYWxhciBpbnRlZ2VycyAoYGZkMWAsIGBmZDJgKSByZXR1cm5lZCBkaXJlY3RseSBmcm9tIGBnZXRfdW51c2VkX2ZkX2ZsYWdzKClgLCB3aGljaCBhcmUgZnVsbHkgaW5pdGlhbGl6ZWQgYW5kIHZhbGlkYXRlZCBwcmlvciB0byB1c2UuXFxuLSBObyBuZXcgdW5pbml0aWFsaXplZCBoZWFwIG9yIHN0YWNrIGJ1ZmZlcnMsIHVuaW5pdGlhbGl6ZWQgc3RydWN0IHBhZGRpbmcsIG9yIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgcmVhZHMgYXJlIGludHJvZHVjZWQuXFxuLSBBbnkgcG90ZW50aWFsIHJlc291cmNlIG1hbmFnZW1lbnQgb3IgbGlmZWN5Y2xlIGJ1Z3MgKHN1Y2ggYXMgZmQvZmlsZSBjbGVhbnVwIG9yIHJlZmNvdW50aW5nIGlzc3VlcyBvbiBlcnJvciBwYXRocykgYXJlIGFkZHJlc3NlZCBieSBzdGFuZGFyZCBzYW5pdGl6ZXJzIChLQVNBTiwgcmVmY291bnQgY2hlY2tzKS5cXG5cXG5Db25zZXF1ZW50bHksIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzLCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fc3lzX3NvY2tldHBhaXJgIHRvIGRlZmVyIGNvcHlpbmcgZmlsZSBkZXNjcmlwdG9yIG51bWJlcnMgKGBmZDFgIGFuZCBgZmQyYCkgdG8gdXNlcnNwYWNlIChgdXNvY2t2ZWNgKSB1bnRpbCBhZnRlciBzb2NrZXQgY3JlYXRpb24sIHByb3RvY29sIHNldHVwLCBhbmQgZmlsZSBhbGxvY2F0aW9uIGhhdmUgc3VjY2VlZGVkLlxcblxcbi0gVGhlIHZhbHVlcyB3cml0dGVuIHRvIHVzZXJzcGFjZSB2aWEgYHB1dF91c2VyYCBhcmUgc2ltcGxlIHNjYWxhciBpbnRlZ2VycyAoYGZkMWAsIGBmZDJgKSByZXR1cm5lZCBkaXJlY3RseSBmcm9tIGBnZXRfdW51c2VkX2ZkX2ZsYWdzKClgLCB3aGljaCBhcmUgZnVsbHkgaW5pdGlhbGl6ZWQgYW5kIHZhbGlkYXRlZCBwcmlvciB0byB1c2UuXFxuLSBObyBuZXcgdW5pbml0aWFsaXplZCBoZWFwIG9yIHN0YWNrIGJ1ZmZlcnMsIHVuaW5pdGlhbGl6ZWQgc3RydWN0IHBhZGRpbmcsIG9yIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgcmVhZHMgYXJlIGludHJvZHVjZWQuXFxuLSBBbnkgcG90ZW50aWFsIHJlc291cmNlIG1hbmFnZW1lbnQgb3IgbGlmZWN5Y2xlIGJ1Z3MgKHN1Y2ggYXMgZmQvZmlsZSBjbGVhbnVwIG9yIHJlZmNvdW50aW5nIGlzc3VlcyBvbiBlcnJvciBwYXRocykgYXJlIGFkZHJlc3NlZCBieSBzdGFuZGFyZCBzYW5pdGl6ZXJzIChLQVNBTiwgcmVmY291bnQgY2hlY2tzKS5cXG5cXG5Db25zZXF1ZW50bHksIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzLCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowsz9mm[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-10 19:21:57 +0000 UTC FinishedAt: 2026-09-10 19:44:45 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "2ac09b5353fe6858411fdc8c6efa60d832e20f13", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET", "UNIX" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "2ac09b5353fe6858411fdc8c6efa60d832e20f13", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET", "UNIX" ], "series_id": "1ba08323-d282-46d6-a5ec-142a7e190a27" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "__sys_socketpair", "unix_socketpair" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE5OjQzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVCYjMzQ7LAogICAgJiMzNDtVTklYJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19zeXNfc29ja2V0cGFpciYjMzQ7LAogICAgJiMzNDt1bml4X3NvY2tldHBhaXImIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgX19zeXNfc29ja2V0cGFpcmAgdG8gZGVmZXIgY29weWluZyBmaWxlIGRlc2NyaXB0b3IgbnVtYmVycyAoYGZkMWAgYW5kIGBmZDJgKSB0byB1c2Vyc3BhY2UgKGB1c29ja3ZlY2ApIHVudGlsIGFmdGVyIHNvY2tldCBjcmVhdGlvbiwgcHJvdG9jb2wgc2V0dXAsIGFuZCBmaWxlIGFsbG9jYXRpb24gaGF2ZSBzdWNjZWVkZWQuXG5cbi0gVGhlIHZhbHVlcyB3cml0dGVuIHRvIHVzZXJzcGFjZSB2aWEgYHB1dF91c2VyYCBhcmUgc2ltcGxlIHNjYWxhciBpbnRlZ2VycyAoYGZkMWAsIGBmZDJgKSByZXR1cm5lZCBkaXJlY3RseSBmcm9tIGBnZXRfdW51c2VkX2ZkX2ZsYWdzKClgLCB3aGljaCBhcmUgZnVsbHkgaW5pdGlhbGl6ZWQgYW5kIHZhbGlkYXRlZCBwcmlvciB0byB1c2UuXG4tIE5vIG5ldyB1bmluaXRpYWxpemVkIGhlYXAgb3Igc3RhY2sgYnVmZmVycywgdW5pbml0aWFsaXplZCBzdHJ1Y3QgcGFkZGluZywgb3IgdW5pbml0aWFsaXplZCB2YXJpYWJsZSByZWFkcyBhcmUgaW50cm9kdWNlZC5cbi0gQW55IHBvdGVudGlhbCByZXNvdXJjZSBtYW5hZ2VtZW50IG9yIGxpZmVjeWNsZSBidWdzIChzdWNoIGFzIGZkL2ZpbGUgY2xlYW51cCBvciByZWZjb3VudGluZyBpc3N1ZXMgb24gZXJyb3IgcGF0aHMpIGFyZSBhZGRyZXNzZWQgYnkgc3RhbmRhcmQgc2FuaXRpemVycyAoS0FTQU4sIHJlZmNvdW50IGNoZWNrcykuXG5cbkNvbnNlcXVlbnRseSwgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIG9yIGluZm8tbGVha3MsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZXJyb3IgaGFuZGxpbmcgYW5kIGRlc2NyaXB0b3IgaW5zdGFsbGF0aW9uIGluIF9fc3lzX3NvY2tldHBhaXIoKSBieSBkZWZlcnJpbmcgcHV0X3VzZXIoKSB1bnRpbCBhZnRlciBzb2NrZXQgYW5kIGZpbGUgYWxsb2NhdGlvbiwgYW5kIGFkZGluZyBmcHV0KCkgY2xlYW51cCBpZiBwdWJsaXNoaW5nIHRvIHVzZXIgc3BhY2UgZmFpbHMuIFRoaXMgYWZmZWN0cyBjb3JlIG5ldHdvcmtpbmcgc3lzY2FsbCBoYW5kbGluZyBhbmQgcmVzb3VyY2UgbWFuYWdlbWVudCwgd2hpY2ggaXMgZnVsbHkgcmVhY2hhYmxlIGFuZCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE5OjQzPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgNTUzZTE1MmQ4YzYzM2Q2NTNiMGE1NGQ0MTI3MzQ0ZjQwOTI5Yjc2M1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgU2VwIDEwIDE5OjQzOjU2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zb2NrZXQuYyBiL25ldC9zb2NrZXQuY1xuaW5kZXggYzA1ZDg2ZTYzYWJmNy4uNGNiODY2Mjg2OWYwOSAxMDA2NDRcbi0tLSBhL25ldC9zb2NrZXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NvY2tldC5jXG5AQCAtMTg1MSwxMCAmIzQzOzE4NTEsNyBAQCBpbnQgX19zeXNfc29ja2V0cGFpcihpbnQgZmFtaWx5LCBpbnQgdHlwZSwgaW50IHByb3RvY29sLCBpbnQgX191c2VyICp1c29ja3ZlYylcbiBcdGlmIChTT0NLX05PTkJMT0NLICE9IE9fTk9OQkxPQ0sgXHUwMDI2XHUwMDI2IChmbGFncyBcdTAwMjYgU09DS19OT05CTE9DSykpXG4gXHRcdGZsYWdzID0gKGZsYWdzIFx1MDAyNiB+U09DS19OT05CTE9DSykgfCBPX05PTkJMT0NLO1xuIFxuLVx0Lypcbi1cdCAqIHJlc2VydmUgZGVzY3JpcHRvcnMgYW5kIG1ha2Ugc3VyZSB3ZSB3b24mIzM5O3QgZmFpbFxuLVx0ICogdG8gcmV0dXJuIHRoZW0gdG8gdXNlcmxhbmQuXG4tXHQgKi9cbiYjNDM7XHQvKiBSZXNlcnZlIGJvdGggZGVzY3JpcHRvcnMgYmVmb3JlIGNyZWF0aW5nIHRoZSBzb2NrZXRzLiAqL1xuIFx0ZmQxID0gZ2V0X3VudXNlZF9mZF9mbGFncyhmbGFncyk7XG4gXHRpZiAodW5saWtlbHkoZmQxIFx1MDAzYyAwKSlcbiBcdFx0cmV0dXJuIGZkMTtcbkBAIC0xODY1LDE0ICYjNDM7MTg2Miw2IEBAIGludCBfX3N5c19zb2NrZXRwYWlyKGludCBmYW1pbHksIGludCB0eXBlLCBpbnQgcHJvdG9jb2wsIGludCBfX3VzZXIgKnVzb2NrdmVjKVxuIFx0XHRyZXR1cm4gZmQyO1xuIFx0fVxuIFxuLVx0ZXJyID0gcHV0X3VzZXIoZmQxLCBcdTAwMjZ1c29ja3ZlY1swXSk7XG4tXHRpZiAoZXJyKVxuLVx0XHRnb3RvIG91dDtcbi1cbi1cdGVyciA9IHB1dF91c2VyKGZkMiwgXHUwMDI2dXNvY2t2ZWNbMV0pO1xuLVx0aWYgKGVycilcbi1cdFx0Z290byBvdXQ7XG4tXG4gXHQvKlxuIFx0ICogT2J0YWluIHRoZSBmaXJzdCBzb2NrZXQgYW5kIGNoZWNrIGlmIHRoZSB1bmRlcmx5aW5nIHByb3RvY29sXG4gXHQgKiBzdXBwb3J0cyB0aGUgc29ja2V0cGFpciBjYWxsLlxuQEAgLTE5MTYsNiAmIzQzOzE5MDUsMTYgQEAgaW50IF9fc3lzX3NvY2tldHBhaXIoaW50IGZhbWlseSwgaW50IHR5cGUsIGludCBwcm90b2NvbCwgaW50IF9fdXNlciAqdXNvY2t2ZWMpXG4gXHRcdGdvdG8gb3V0O1xuIFx0fVxuIFxuJiM0MztcdC8qIFB1Ymxpc2ggdGhlIGRlc2NyaXB0b3JzIG5vdyB0aGF0IGl0IHNob3VsZG4mIzM5O3QgZmFpbC4gKi9cbiYjNDM7XHRlcnIgPSBwdXRfdXNlcihmZDEsIFx1MDAyNnVzb2NrdmVjWzBdKTtcbiYjNDM7XHRpZiAoIWVycilcbiYjNDM7XHRcdGVyciA9IHB1dF91c2VyKGZkMiwgXHUwMDI2dXNvY2t2ZWNbMV0pO1xuJiM0MztcdGlmIChlcnIpIHtcbiYjNDM7XHRcdGZwdXQobmV3ZmlsZTIpO1xuJiM0MztcdFx0ZnB1dChuZXdmaWxlMSk7XG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0YXVkaXRfZmRfcGFpcihmZDEsIGZkMik7XG4gXG4gXHRmZF9pbnN0YWxsKGZkMSwgbmV3ZmlsZTEpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE5OjQzPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmNvcmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVCYjMzQ7LAogICAgJiMzNDtVTklYJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7X19zeXNfc29ja2V0cGFpciYjMzQ7LAogICAgJiMzNDt1bml4X3NvY2tldHBhaXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgZXJyb3IgaGFuZGxpbmcgYW5kIGRlc2NyaXB0b3IgaW5zdGFsbGF0aW9uIGluIF9fc3lzX3NvY2tldHBhaXIoKSBieSBkZWZlcnJpbmcgcHV0X3VzZXIoKSB1bnRpbCBhZnRlciBzb2NrZXQgYW5kIGZpbGUgYWxsb2NhdGlvbiwgYW5kIGFkZGluZyBmcHV0KCkgY2xlYW51cCBpZiBwdWJsaXNoaW5nIHRvIHVzZXIgc3BhY2UgZmFpbHMuIFRoaXMgYWZmZWN0cyBjb3JlIG5ldHdvcmtpbmcgc3lzY2FsbCBoYW5kbGluZyBhbmQgcmVzb3VyY2UgbWFuYWdlbWVudCwgd2hpY2ggaXMgZnVsbHkgcmVhY2hhYmxlIGFuZCB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNTUzZTE1MmQ4YzYzM2Q2NTNiMGE1NGQ0MTI3MzQ0ZjQwOTI5Yjc2MwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgU2VwIDEwIDE5OjQzOjU2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3NvY2tldC5jIGIvbmV0L3NvY2tldC5jCmluZGV4IGMwNWQ4NmU2M2FiZjcuLjRjYjg2NjI4NjlmMDkgMTAwNjQ0Ci0tLSBhL25ldC9zb2NrZXQuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc29ja2V0LmMKQEAgLTE4NTEsMTAgJiM0MzsxODUxLDcgQEAgaW50IF9fc3lzX3NvY2tldHBhaXIoaW50IGZhbWlseSwgaW50IHR5cGUsIGludCBwcm90b2NvbCwgaW50IF9fdXNlciAqdXNvY2t2ZWMpCiAJaWYgKFNPQ0tfTk9OQkxPQ0sgIT0gT19OT05CTE9DSyAmYW1wOyZhbXA7IChmbGFncyAmYW1wOyBTT0NLX05PTkJMT0NLKSkKIAkJZmxhZ3MgPSAoZmxhZ3MgJmFtcDsgflNPQ0tfTk9OQkxPQ0spIHwgT19OT05CTE9DSzsKIAotCS8qCi0JICogcmVzZXJ2ZSBkZXNjcmlwdG9ycyBhbmQgbWFrZSBzdXJlIHdlIHdvbiYjMzk7dCBmYWlsCi0JICogdG8gcmV0dXJuIHRoZW0gdG8gdXNlcmxhbmQuCi0JICovCiYjNDM7CS8qIFJlc2VydmUgYm90aCBkZXNjcmlwdG9ycyBiZWZvcmUgY3JlYXRpbmcgdGhlIHNvY2tldHMuICovCiAJZmQxID0gZ2V0X3VudXNlZF9mZF9mbGFncyhmbGFncyk7CiAJaWYgKHVubGlrZWx5KGZkMSAmbHQ7IDApKQogCQlyZXR1cm4gZmQxOwpAQCAtMTg2NSwxNCAmIzQzOzE4NjIsNiBAQCBpbnQgX19zeXNfc29ja2V0cGFpcihpbnQgZmFtaWx5LCBpbnQgdHlwZSwgaW50IHByb3RvY29sLCBpbnQgX191c2VyICp1c29ja3ZlYykKIAkJcmV0dXJuIGZkMjsKIAl9CiAKLQllcnIgPSBwdXRfdXNlcihmZDEsICZhbXA7dXNvY2t2ZWNbMF0pOwotCWlmIChlcnIpCi0JCWdvdG8gb3V0OwotCi0JZXJyID0gcHV0X3VzZXIoZmQyLCAmYW1wO3Vzb2NrdmVjWzFdKTsKLQlpZiAoZXJyKQotCQlnb3RvIG91dDsKLQogCS8qCiAJICogT2J0YWluIHRoZSBmaXJzdCBzb2NrZXQgYW5kIGNoZWNrIGlmIHRoZSB1bmRlcmx5aW5nIHByb3RvY29sCiAJICogc3VwcG9ydHMgdGhlIHNvY2tldHBhaXIgY2FsbC4KQEAgLTE5MTYsNiAmIzQzOzE5MDUsMTYgQEAgaW50IF9fc3lzX3NvY2tldHBhaXIoaW50IGZhbWlseSwgaW50IHR5cGUsIGludCBwcm90b2NvbCwgaW50IF9fdXNlciAqdXNvY2t2ZWMpCiAJCWdvdG8gb3V0OwogCX0KIAomIzQzOwkvKiBQdWJsaXNoIHRoZSBkZXNjcmlwdG9ycyBub3cgdGhhdCBpdCBzaG91bGRuJiMzOTt0IGZhaWwuICovCiYjNDM7CWVyciA9IHB1dF91c2VyKGZkMSwgJmFtcDt1c29ja3ZlY1swXSk7CiYjNDM7CWlmICghZXJyKQomIzQzOwkJZXJyID0gcHV0X3VzZXIoZmQyLCAmYW1wO3Vzb2NrdmVjWzFdKTsKJiM0MzsJaWYgKGVycikgewomIzQzOwkJZnB1dChuZXdmaWxlMik7CiYjNDM7CQlmcHV0KG5ld2ZpbGUxKTsKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwl9CiYjNDM7CiAJYXVkaXRfZmRfcGFpcihmZDEsIGZkMik7CiAKIAlmZF9pbnN0YWxsKGZkMSwgbmV3ZmlsZTEpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxOTo0MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjQzCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGl2aW5nIGludG8gdGhlIFNvY2tldHBhaXIgSW1wbGVtZW50YXRpb24qKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgcGF0Y2gsIGFuZCB0aGUgYmVzdCB3YXkgdG8gZG8gdGhhdCwgYXMgYWx3YXlzLCBpcyB0byBnZXQgaW50byB0aGUgY29kZSBpdHNlbGYuIE15IGluaXRpYWwgbW92ZSB3aWxsIGJlIHRvIGV4YW1pbmUgdGhlIGBuZXQvc29ja2V0LmNgIGZpbGUuIFNwZWNpZmljYWxseSwgSSYjMzk7bSB0YXJnZXRpbmcgdGhlIHZpY2luaXR5IG9mIGxpbmUgMTg1MSwgaG9waW5nIHRvIHVuY292ZXIgdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kLCBjcnVjaWFsbHksIGdhaW4gYSBjb250ZXh0IGZvciB0aGUgYF9fc3lzX3NvY2tldHBhaXJgIGZ1bmN0aW9uLiBVbmRlcnN0YW5kaW5nIGl0cyBpbW1lZGlhdGUgcHVycG9zZSBhbmQgdXNhZ2Ugd2l0aGluIHRoYXQgc3BlY2lmaWMgYXJlYSBvZiBgbmV0L3NvY2tldC5jYCB3aWxsIGdpdmUgbWUgYSBzb2xpZCBmb3VuZGF0aW9uIGZvciBldmFsdWF0aW5nIHRoZSBwYXRjaCYjMzk7cyBpbXBhY3QuIEkgd2FudCB0byBzZWUgaG93IGl0JiMzOTtzIGJlaW5nIGNhbGxlZCwgd2hhdCBhcmd1bWVudHMgaXQmIzM5O3MgcmVjZWl2aW5nLCBhbmQgd2hhdCB0aGUgb3ZlcmFsbCBmbG93IGxvb2tzIGxpa2UuIFRoaXMgaW5pdGlhbCByZWFkaW5nIHdpbGwgaW5mb3JtIG15IG5leHQgc3RlcHMsIGFsbG93aW5nIG1lIHRvIGZvY3VzIG9uIHRoZSBrZXkgYXJlYXMgdGhhdCBhcmUgcmVsZXZhbnQgdG8gdGhpcyBjaGFuZ2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTk6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvc29ja2V0LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxODQwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxODQwOlx0e1xuMTg0MTpcdFx0c3RydWN0IHNvY2tldCAqc29jazEsICpzb2NrMjtcbjE4NDI6XHRcdGludCBmZDEsIGZkMiwgZXJyO1xuMTg0MzpcdFx0c3RydWN0IGZpbGUgKm5ld2ZpbGUxLCAqbmV3ZmlsZTI7XG4xODQ0Olx0XHRpbnQgZmxhZ3M7XG4xODQ1Olx0XG4xODQ2Olx0XHRmbGFncyA9IHR5cGUgXHUwMDI2IH5TT0NLX1RZUEVfTUFTSztcbjE4NDc6XHRcdGlmIChmbGFncyBcdTAwMjYgfihTT0NLX0NMT0VYRUMgfCBTT0NLX05PTkJMT0NLKSlcbjE4NDg6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4xODQ5Olx0XHR0eXBlIFx1MDAyNj0gU09DS19UWVBFX01BU0s7XG4xODUwOlx0XG4xODUxOlx0XHRpZiAoU09DS19OT05CTE9DSyAhPSBPX05PTkJMT0NLIFx1MDAyNlx1MDAyNiAoZmxhZ3MgXHUwMDI2IFNPQ0tfTk9OQkxPQ0spKVxuMTg1MjpcdFx0XHRmbGFncyA9IChmbGFncyBcdTAwMjYgflNPQ0tfTk9OQkxPQ0spIHwgT19OT05CTE9DSztcbjE4NTM6XHRcbjE4NTQ6XHRcdC8qIFJlc2VydmUgYm90aCBkZXNjcmlwdG9ycyBiZWZvcmUgY3JlYXRpbmcgdGhlIHNvY2tldHMuICovXG4xODU1Olx0XHRmZDEgPSBnZXRfdW51c2VkX2ZkX2ZsYWdzKGZsYWdzKTtcbjE4NTY6XHRcdGlmICh1bmxpa2VseShmZDEgXHUwMDNjIDApKVxuMTg1NzpcdFx0XHRyZXR1cm4gZmQxO1xuMTg1ODpcdFxuMTg1OTpcdFx0ZmQyID0gZ2V0X3VudXNlZF9mZF9mbGFncyhmbGFncyk7XG4xODYwOlx0XHRpZiAodW5saWtlbHkoZmQyIFx1MDAzYyAwKSkge1xuMTg2MTpcdFx0XHRwdXRfdW51c2VkX2ZkKGZkMSk7XG4xODYyOlx0XHRcdHJldHVybiBmZDI7XG4xODYzOlx0XHR9XG4xODY0Olx0XG4xODY1Olx0XHQvKlxuMTg2NjpcdFx0ICogT2J0YWluIHRoZSBmaXJzdCBzb2NrZXQgYW5kIGNoZWNrIGlmIHRoZSB1bmRlcmx5aW5nIHByb3RvY29sXG4xODY3Olx0XHQgKiBzdXBwb3J0cyB0aGUgc29ja2V0cGFpciBjYWxsLlxuMTg2ODpcdFx0ICovXG4xODY5Olx0XG4xODcwOlx0XHRlcnIgPSBzb2NrX2NyZWF0ZShmYW1pbHksIHR5cGUsIHByb3RvY29sLCBcdTAwMjZzb2NrMSk7XG4xODcxOlx0XHRpZiAodW5saWtlbHkoZXJyIFx1MDAzYyAwKSlcbjE4NzI6XHRcdFx0Z290byBvdXQ7XG4xODczOlx0XG4xODc0Olx0XHRlcnIgPSBzb2NrX2NyZWF0ZShmYW1pbHksIHR5cGUsIHByb3RvY29sLCBcdTAwMjZzb2NrMik7XG4xODc1Olx0XHRpZiAodW5saWtlbHkoZXJyIFx1MDAzYyAwKSkge1xuMTg3NjpcdFx0XHRzb2NrX3JlbGVhc2Uoc29jazEpO1xuMTg3NzpcdFx0XHRnb3RvIG91dDtcbjE4Nzg6XHRcdH1cbjE4Nzk6XHRcbjE4ODA6XHRcdGVyciA9IHNlY3VyaXR5X3NvY2tldF9zb2NrZXRwYWlyKHNvY2sxLCBzb2NrMik7XG4xODgxOlx0XHRpZiAodW5saWtlbHkoZXJyKSkge1xuMTg4MjpcdFx0XHRzb2NrX3JlbGVhc2Uoc29jazIpO1xuMTg4MzpcdFx0XHRzb2NrX3JlbGVhc2Uoc29jazEpO1xuMTg4NDpcdFx0XHRnb3RvIG91dDtcbjE4ODU6XHRcdH1cbjE4ODY6XHRcbjE4ODc6XHRcdGVyciA9IFJFQURfT05DRShzb2NrMS1cdTAwM2VvcHMpLVx1MDAzZXNvY2tldHBhaXIoc29jazEsIHNvY2syKTtcbjE4ODg6XHRcdGlmICh1bmxpa2VseShlcnIgXHUwMDNjIDApKSB7XG4xODg5Olx0XHRcdHNvY2tfcmVsZWFzZShzb2NrMik7XG4xODkwOlx0XHRcdHNvY2tfcmVsZWFzZShzb2NrMSk7XG4xODkxOlx0XHRcdGdvdG8gb3V0O1xuMTg5MjpcdFx0fVxuMTg5MzpcdFxuMTg5NDpcdFx0bmV3ZmlsZTEgPSBzb2NrX2FsbG9jX2ZpbGUoc29jazEsIGZsYWdzLCBOVUxMKTtcbjE4OTU6XHRcdGlmIChJU19FUlIobmV3ZmlsZTEpKSB7XG4xODk2Olx0XHRcdGVyciA9IFBUUl9FUlIobmV3ZmlsZTEpO1xuMTg5NzpcdFx0XHRzb2NrX3JlbGVhc2Uoc29jazIpO1xuMTg5ODpcdFx0XHRnb3RvIG91dDtcbjE4OTk6XHRcdH1cbjE5MDA6XHRcbjE5MDE6XHRcdG5ld2ZpbGUyID0gc29ja19hbGxvY19maWxlKHNvY2syLCBmbGFncywgTlVMTCk7XG4xOTAyOlx0XHRpZiAoSVNfRVJSKG5ld2ZpbGUyKSkge1xuMTkwMzpcdFx0XHRlcnIgPSBQVFJfRVJSKG5ld2ZpbGUyKTtcbjE5MDQ6XHRcdFx0ZnB1dChuZXdmaWxlMSk7XG4xOTA1Olx0XHRcdGdvdG8gb3V0O1xuMTkwNjpcdFx0fVxuMTkwNzpcdFxuMTkwODpcdFx0LyogUHVibGlzaCB0aGUgZGVzY3JpcHRvcnMgbm93IHRoYXQgaXQgc2hvdWxkbiYjMzk7dCBmYWlsLiAqL1xuMTkwOTpcdFx0ZXJyID0gcHV0X3VzZXIoZmQxLCBcdTAwMjZ1c29ja3ZlY1swXSk7XG4xOTEwOlx0XHRpZiAoIWVycilcbjE5MTE6XHRcdFx0ZXJyID0gcHV0X3VzZXIoZmQyLCBcdTAwMjZ1c29ja3ZlY1sxXSk7XG4xOTEyOlx0XHRpZiAoZXJyKSB7XG4xOTEzOlx0XHRcdGZwdXQobmV3ZmlsZTIpO1xuMTkxNDpcdFx0XHRmcHV0KG5ld2ZpbGUxKTtcbjE5MTU6XHRcdFx0Z290byBvdXQ7XG4xOTE2Olx0XHR9XG4xOTE3Olx0XG4xOTE4Olx0XHRhdWRpdF9mZF9wYWlyKGZkMSwgZmQyKTtcbjE5MTk6XHRcbjE5MjA6XHRcdGZkX2luc3RhbGwoZmQxLCBuZXdmaWxlMSk7XG4xOTIxOlx0XHRmZF9pbnN0YWxsKGZkMiwgbmV3ZmlsZTIpO1xuMTkyMjpcdFx0cmV0dXJuIDA7XG4xOTIzOlx0XG4xOTI0Olx0b3V0OlxuMTkyNTpcdFx0cHV0X3VudXNlZF9mZChmZDIpO1xuMTkyNjpcdFx0cHV0X3VudXNlZF9mZChmZDEpO1xuMTkyNzpcdFx0cmV0dXJuIGVycjtcbjE5Mjg6XHR9XG4xOTI5Olx0XG4xOTMwOlx0U1lTQ0FMTF9ERUZJTkU0KHNvY2tldHBhaXIsIGludCwgZmFtaWx5LCBpbnQsIHR5cGUsIGludCwgcHJvdG9jb2wsXG4xOTMxOlx0XHRcdGludCBfX3VzZXIgKiwgdXNvY2t2ZWMpXG4xOTMyOlx0e1xuMTkzMzpcdFx0cmV0dXJuIF9fc3lzX3NvY2tldHBhaXIoZmFtaWx5LCB0eXBlLCBwcm90b2NvbCwgdXNvY2t2ZWMpO1xuMTkzNDpcdH1cbjE5MzU6XHRcbjE5MzY6XHRpbnQgX19zeXNfYmluZF9zb2NrZXQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKmFkZHJlc3MsXG4xOTM3Olx0XHRcdCAgICAgIGludCBhZGRybGVuKVxuMTkzODpcdHtcbjE5Mzk6XHRcdGludCBlcnI7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTk6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDkwMAoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDMzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBTb2NrZXRwYWlyIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEl0IGxvb2tzIGxpa2Ugd2UgaGF2ZSBhIHBhdGNoIHRoYXQmIzM5O3MgdHdlYWtpbmcgdGhlIGBfX3N5c19zb2NrZXRwYWlyYCBmdW5jdGlvbiB3aXRoaW4gYG5ldC9zb2NrZXQuY2AuIE15IGluaXRpYWwgb2JzZXJ2YXRpb24gaXMgdGhhdCB0aGV5JiMzOTt2ZSBjaGFuZ2VkIHRoZSBwbGFjZW1lbnQgb2YgdGhvc2UgYHB1dF91c2VyYCBjYWxscyB0aGF0IHdyaXRlIGZpbGUgZGVzY3JpcHRvcnMgKGBmZDFgIGFuZCBgZmQyYCkgdG8gdXNlciBzcGFjZS4gSXQgdXNlZCB0byBiZSAqYmVmb3JlKiB0aGUgc29ja2V0IGZpbGUgYWxsb2NhdGlvbiwgYnV0IG5vdyBpdCYjMzk7cyAqYWZ0ZXIqLCByaWdodCBiZWZvcmUgYXVkaXQgbG9nZ2luZyBhbmQgZmlsZSBkZXNjcmlwdG9yIGluc3RhbGxhdGlvbiwgYW5kIHRoZXJlJiMzOTtzIGEgc3BlY2lmaWMgY2xlYW51cCBwYXRoIGlmIHRob3NlIHVzZXItc3BhY2Ugd3JpdGVzIGZhaWwuIFRoaXMgaXMgY3J1Y2lhbCBiZWNhdXNlIGl0IGFsdGVycyB0aGUgZXJyb3IgaGFuZGxpbmcgZmxvdyBzaWduaWZpY2FudGx5LgoKVGhlIGtleSBxdWVzdGlvbiBpcyBhbHdheXM6IGlzIHRoaXMgZXZlbiBmdXp6YWJsZT8gQmFzZWQgb24gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgdHJpYWdlIGNyaXRlcmlhLCB0aGlzIHBhdGNoIGRlZmluaXRlbHkgbG9va3MgcHJvbWlzaW5nLgoKKiAgICoqUmVhY2hhYmlsaXR5PyoqIEFic29sdXRlbHkuIGBfX3N5c19zb2NrZXRwYWlyYCBpcyBkaXJlY3RseSBpbnZva2VkIGJ5IHRoZSBzdGFuZGFyZCBgc3lzX3NvY2tldHBhaXJgIHN5c2NhbGwsIHdoaWNoIGlzIHBhcnQgb2YgdGhlIGNvcmUgTGludXggbmV0d29ya2luZyBzdGFjayBpbiBgbmV0L3NvY2tldC5jYC4gVGhpcyBtZWFucyBpdCYjMzk7cyBlYXNpbHkgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlLCBtYWtpbmcgaXQgYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcgaW4gc3RhbmRhcmQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBvciBHQ0UuCgoqICAgKipDb3JlIFN1YnN5c3RlbXM/KiogVGhpcyBpcyBpbiBjb3JlIG5ldHdvcmtpbmcgY29kZS4gVGhpcyBpcyBleGFjdGx5IHRoZSBraW5kIG9mIGNyaXRpY2FsIHN1YnN5c3RlbSB3aGVyZSB3ZSBuZWVkIHRvIGxvb2sgZm9yIHZ1bG5lcmFiaWxpdGllcy4KCiogICAqKldvcnRoIEZ1enppbmc/KiogWWVzLCB3aXRob3V0IGEgZG91YnQuIFRoZSBjb21iaW5hdGlvbiBvZiBpdHMgY2VudHJhbCBsb2NhdGlvbiwgdGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aCwgYW5kIHRoYXQgbmV3IGNsZWFudXAgcHJvY2VkdXJlIG1ha2VzIGl0IGEgY29tcGVsbGluZyBjYW5kaWRhdGUuCgpOb3csIEkgbmVlZCB0byBjaGVjayB0aGUgY29uZmlndXJhdGlvbiByZXF1aXJlbWVudHMuIEkmIzM5O20gZ29pbmcgdG8gZGlnIGludG8gYG5ldC9LY29uZmlnYCBvciBgbmV0L01ha2VmaWxlYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBrZXJuZWwgY29uZmlndXJhdGlvbnMgb3IgYnVpbGQgZmxhZ3MgdGhhdCBuZWVkIHRvIGJlIGVuYWJsZWQgZm9yIGBuZXQvc29ja2V0LmNgIG9yLCBtb3JlIHNwZWNpZmljYWxseSwgYHNvY2tldHBhaXJgLiBJdOKAmXMgaW1wb3J0YW50IHRvIG1ha2Ugc3VyZSB3ZSBoYXZlIGEgZnVsbHkgZnVuY3Rpb25hbCBzZXR1cCB0aGF0JiMzOTtzIGdvaW5nIHRvIGFsbG93IHRoaXMgY29kZSB0byBydW4gYW5kIHRvIG1heGltaXplIHRoZSBwcm9iYWJpbGl0eSBvZiBmdXp6aW5nIHN1Y2Nlc3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTk6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c29ja2V0XFwubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L01ha2VmaWxlLTgtXG5uZXQvTWFrZWZpbGU6OTpvYmoteVx0XHRcdFx0Oj0gZGV2cmVzLm8gc29ja2V0Lm8gY29yZS9cbm5ldC9NYWtlZmlsZS0xMC1cbi0tXG5uZXQvY2FuL2oxOTM5L01ha2VmaWxlPTU9Y2FuLWoxOTM5LW9ianMgOj0gXFxcbi0tXG5uZXQvY2FuL2oxOTM5L01ha2VmaWxlLTgtXHRtYWluLm8gXFxcbm5ldC9jYW4vajE5MzkvTWFrZWZpbGU6OTpcdHNvY2tldC5vIFxcXG5uZXQvY2FuL2oxOTM5L01ha2VmaWxlLTEwLVx0dHJhbnNwb3J0Lm9cbi0tXG5uZXQvaWVlZTgwMjE1NC9NYWtlZmlsZT0yPW9iai0kKENPTkZJR19JRUVFODAyMTU0KSAmIzQzOz0gaWVlZTgwMjE1NC5vXG5uZXQvaWVlZTgwMjE1NC9NYWtlZmlsZTozOm9iai0kKENPTkZJR19JRUVFODAyMTU0X1NPQ0tFVCkgJiM0Mzs9IGllZWU4MDIxNTRfc29ja2V0Lm9cbm5ldC9pZWVlODAyMTU0L01ha2VmaWxlLTQtb2JqLXkgJiM0Mzs9IDZsb3dwYW4vXG4tLVxubmV0L2llZWU4MDIxNTQvTWFrZWZpbGU9Nj1pZWVlODAyMTU0LXkgOj0gbmV0bGluay5vIG5sLW1hYy5vIG5sLXBoeS5vIG5sX3BvbGljeS5vIGNvcmUubyBcXFxubmV0L2llZWU4MDIxNTQvTWFrZWZpbGUtNy0gICAgICAgICAgICAgICAgaGVhZGVyX29wcy5vIHN5c2ZzLm8gbmw4MDIxNTQubyB0cmFjZS5vIHBhbi5vXG5uZXQvaWVlZTgwMjE1NC9NYWtlZmlsZTo4OmllZWU4MDIxNTRfc29ja2V0LXkgOj0gc29ja2V0Lm9cbm5ldC9pZWVlODAyMTU0L01ha2VmaWxlLTktXG4tLVxubmV0L25ldGZpbHRlci9NYWtlZmlsZT0xMjg9b2JqLSQoQ09ORklHX05GVF9GSUJfTkVUREVWKVx0JiM0Mzs9IG5mdF9maWJfbmV0ZGV2Lm9cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6MTI5Om9iai0kKENPTkZJR19ORlRfU09DS0VUKVx0JiM0Mzs9IG5mdF9zb2NrZXQub1xubmV0L25ldGZpbHRlci9NYWtlZmlsZS0xMzAtb2JqLSQoQ09ORklHX05GVF9PU0YpXHRcdCYjNDM7PSBuZnRfb3NmLm9cbi0tXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTIyNj1vYmotJChDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1NDVFApICYjNDM7PSB4dF9zY3RwLm9cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6MjI3Om9iai0kKENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfU09DS0VUKSAmIzQzOz0geHRfc29ja2V0Lm9cbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMjI4LW9iai0kKENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfU1RBVEUpICYjNDM7PSB4dF9zdGF0ZS5vXG4tLVxubmV0L3Bob25ldC9NYWtlZmlsZT00PXBob25ldC15IDo9IFxcXG4tLVxubmV0L3Bob25ldC9NYWtlZmlsZS02LVx0cG5fbmV0bGluay5vIFxcXG5uZXQvcGhvbmV0L01ha2VmaWxlOjc6XHRzb2NrZXQubyBcXFxubmV0L3Bob25ldC9NYWtlZmlsZS04LVx0ZGF0YWdyYW0ubyBcXFxuLS1cbm5ldC9zY3RwL01ha2VmaWxlPTk9c2N0cC15IDo9IHNtX3N0YXRldGFibGUubyBzbV9zdGF0ZWZ1bnMubyBzbV9zaWRlZWZmZWN0Lm8gXFxcbi0tXG5uZXQvc2N0cC9NYWtlZmlsZS0xMi1cdCAgaW5xdWV1ZS5vIG91dHF1ZXVlLm8gdWxwcXVldWUubyBcXFxubmV0L3NjdHAvTWFrZWZpbGU6MTM6XHQgIHRzbm1hcC5vIGJpbmRfYWRkci5vIHNvY2tldC5vIHByaW1pdGl2ZS5vIFxcXG5uZXQvc2N0cC9NYWtlZmlsZS0xNC1cdCAgb3V0cHV0Lm8gaW5wdXQubyBkZWJ1Zy5vIHN0cmVhbS5vIGF1dGgubyBcXFxuLS1cbm5ldC9zb2NrZXQuYz0zMjY9c3RhdGljIHN0cnVjdCBpbm9kZSAqc29ja19hbGxvY19pbm9kZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxuLS1cbm5ldC9zb2NrZXQuYy0zNDEtXHRzaS1cdTAwM2Vzb2NrZXQuZmxhZ3MgPSAwO1xubmV0L3NvY2tldC5jOjM0MjpcdHNpLVx1MDAzZXNvY2tldC5vcHMgPSBOVUxMO1xubmV0L3NvY2tldC5jLTM0My1cdHNpLVx1MDAzZXNvY2tldC5zayA9IE5VTEw7XG4tLVxubmV0L3RpcGMvTWFrZWZpbGU9OD10aXBjLXlcdCYjNDM7PSBhZGRyLm8gYmNhc3QubyBiZWFyZXIubyBcXFxuLS1cbm5ldC90aXBjL01ha2VmaWxlLTEwLVx0ICAgbmFtZV9kaXN0ci5vICBzdWJzY3IubyBtb25pdG9yLm8gbmFtZV90YWJsZS5vIG5ldC5vICBcXFxubmV0L3RpcGMvTWFrZWZpbGU6MTE6XHQgICBuZXRsaW5rLm8gbmV0bGlua19jb21wYXQubyBub2RlLm8gc29ja2V0Lm8gZXRoX21lZGlhLm8gXFxcbm5ldC90aXBjL01ha2VmaWxlLTEyLVx0ICAgdG9wc3J2Lm8gZ3JvdXAubyB0cmFjZS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTk6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjY4MQoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBteXNlbGY6CgoqKkludmVzdGlnYXRpbmcgTmV0d29yayBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYG5ldC9NYWtlZmlsZWAuIEkgc2VlIHNvbWUgb2JqZWN0IGRlZmluaXRpb25zIHRoYXQgYXJlIGxpa2VseSBjb25kaXRpb25hbCwgdXNpbmcgYG9iai0kKENPTkZJR19ORVQpIDo9IC4uLmAuIFRoZSBxdWVzdGlvbiBpcywgaXMgKmV2ZXJ5dGhpbmcqIHVuZGVyIGBuZXQvYCBlZmZlY3RpdmVseSBndWFyZGVkIGJ5IGBDT05GSUdfTkVUYD8gIE9yLCBhcmUgdGhlcmUgbW9yZSBmaW5lLWdyYWluZWQgZGVwZW5kZW5jaWVzIHdpdGhpbiB0aGUgYG5ldC9gIGRpcmVjdG9yeSB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZj8KClRvIGNsYXJpZnkgdGhpcywgSSByZWFsbHkgbmVlZCB0byBjaGVjayB0aGUgcm9vdCBgTWFrZWZpbGVgIOKAkyB0aGF0JiMzOTtzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgY29uZmlndXJhdGlvbiBkZWNpc2lvbnMuICBBbmQsIG9mIGNvdXJzZSwgdGhlIGBuZXQvS2NvbmZpZ2AgZmlsZSBpcyBnb2luZyB0byBiZSBjcnVjaWFsLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSAqYWN0dWFsKiBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGRlZmluZWQsIGFuZCB3aGVyZSBgQ09ORklHX05FVGAgaXRzZWxmIGlzIHByb2JhYmx5IGRlY2xhcmVkLiAgSSYjMzk7bGwgZ28gdGhlcmUgbmV4dC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSBgQ09ORklHX05FVGAgc3ltYm9sIGFuZCB0aGUgY29tcG9uZW50cyB3aXRoaW4gdGhlIGBuZXQvYCBkaXJlY3RvcnkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTk6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfTkVUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7TWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE5OjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5NzgKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzOgoKKipJbnZlc3RpZ2F0aW5nIE5ldHdvcmsgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgbWFpbiBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgZGVmaW5lZCB3aXRoaW4gdGhpcyBwcm9qZWN0LiBNeSBmaXJzdCBpbnN0aW5jdCwgZ2l2ZW4gbXkgZXhwZXJpZW5jZSB3aXRoIHNpbWlsYXIgc3lzdGVtcywgaXMgdG8gc3RhcnQgd2l0aCB0aGUgc3RhbmRhcmQgcGxhY2VzLiBUeXBpY2FsbHksIHRoZSB0b3AtbGV2ZWwgYEtjb25maWdgIGZpbGVzIGFyZSB0aGUgY2VudHJhbCByZXBvc2l0b3J5IGZvciBmZWF0dXJlIGZsYWdzIGFuZCBvcHRpb25zLCBhbmQgb2Z0ZW4gaGF2ZSBgaW5jbHVkZWAgc3RhdGVtZW50cyBmb3Igc3ViZGlyZWN0b3JpZXMuIFNvLCBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGUgYG5ldC9LY29uZmlnYCBmaWxlLiBUaGF0JiMzOTtzIHRoZSBtb3N0IGxpa2VseSBwbGFjZSB0byBmaW5kIHdoYXQgSSYjMzk7bSBsb29raW5nIGZvciwgc2luY2UgaXQmIzM5O3MgbG9naWNhbCB0byBoYXZlIG5ldHdvcmstc3BlY2lmaWMgY29uZmlndXJhdGlvbiB3aXRoaW4gdGhlIGBuZXRgIGRpcmVjdG9yeS4KCkhvd2V2ZXIsIHNvbWV0aW1lcyB0aGUgcHJvamVjdCBlbXBsb3lzIGEgbW9yZSBmbGF0IGFwcHJvYWNoIG9yIGhhcyBpdHMgY29uZmlndXJhdGlvbiBmaWxlcyBpbiBsZXNzIGV4cGVjdGVkIGxvY2F0aW9ucy4gSW4gdGhvc2UgY2FzZXMsIHRoZSByb290IGBNYWtlZmlsZWAgb2Z0ZW4gaG9sZHMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGJ1aWxkIHByb2Nlc3MgYW5kIGhvdyBkaWZmZXJlbnQgcGFydHMgb2YgdGhlIHByb2plY3QsIGluY2x1ZGluZyB0aGUgYG5ldC9gIGRpcmVjdG9yeSwgYXJlIGludGVncmF0ZWQuIEl0IG1pZ2h0IGluY2x1ZGUgdmFyaWFibGVzIG9yIGNvbmRpdGlvbmFsIGxvZ2ljIHRoYXQgcG9pbnRzIHRvIHRoZSByZWxldmFudCBgS2NvbmZpZ2AgZmlsZXMgb3IgZGVmaW5lcyBzb21lIHRvcC1sZXZlbCBuZXR3b3JrIG9wdGlvbnMgZGlyZWN0bHkuIFNvIEkmIzM5O2xsIG1ha2UgYSBtZW50YWwgbm90ZSB0byBjaGVjayB0aGUgcm9vdCBgTWFrZWZpbGVgIGFzIGEgYmFja3VwIGlmIGBuZXQvS2NvbmZpZ2AgZG9lc24mIzM5O3QgcHJvdmlkZSBlbm91Z2ggaW5mb3JtYXRpb24sIG9yIGlmIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgbmV0d29ya2luZyBzdWJzeXN0ZW0gaXMgYmVpbmcgaW50ZWdyYXRlZCBpbnRvIHRoZSBidWlsZC4gSXQmIzM5O3MgYWx3YXlzIGdvb2QgdG8gYmUgdGhvcm91Z2ggYW5kIGNvbnNpZGVyIGFsbCB0aGUgbGlrZWx5IGxvY2F0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTk6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZXQvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7TWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxOTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MzIzCgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCB3ZW50OgoKKipFeGFtaW5pbmcgdGhlIEtlcm5lbCBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIG5ldHdvcmstcmVsYXRlZCBmdW5jdGlvbmFsaXR5IGlzIGJlaW5nIG1hbmFnZWQgd2l0aGluIHRoZSBidWlsZCBzeXN0ZW0uIE15IGltbWVkaWF0ZSBpbnN0aW5jdCwgZ2l2ZW4gdGhlIGNvbnRleHQgb2Yga2VybmVsIGNvbmZpZ3VyYXRpb24sIGlzIHRvIGRpdmUgaW50byB0aGUgYEtjb25maWdgIGZpbGVzLiBUaGF0JiMzOTtzIHdoZXJlIGFsbCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBkZWZpbmVkLCBhbmQgd2hlcmUgdGhlIGRlcGVuZGVuY2llcyBhbmQgcmVsYXRpb25zaGlwcyBhcmUgc3BlY2lmaWVkLiBJJiMzOTttIHRoaW5raW5nIEkmIzM5O2xsIGVpdGhlcjoKCiogICAqKkRpcmVjdGx5IGluc3BlY3QgYEtjb25maWdgOioqIEkmIzM5O2xsIHN0YXJ0IGJ5IG9wZW5pbmcgdGhlIHJlbGV2YW50IGBLY29uZmlnYCBmaWxlcyB0byBzZWUgaWYgSSBjYW4gZmluZCBhIGNvbmZpZ3VyYXRpb24gc3ltYm9sLCBsaWtlIGBDT05GSUdfTkVUYCBpdHNlbGYsIGFuZCB0cmFjZSBpdHMgZGVwZW5kZW5jaWVzLCBkZWZhdWx0IHZhbHVlcywgYW5kIGltcGxpY2F0aW9ucy4gSSBtaWdodCBiZSBhYmxlIHRvIGZpZ3VyZSBvdXQgaG93IG5ldHdvcmsgZmVhdHVyZXMgYXJlIGVuYWJsZWQsIGRpc2FibGVkLCBvciBjb25kaXRpb25hbGx5IGNvbXBpbGVkLgoKKiAgICoqVXNlIGdyZXAgZm9yIGZhc3RlciBzZWFyY2hpbmc6KiogSWYgdGhhdCBzZWVtcyBsaWtlIGEgbG90IG9mIGh1bnRpbmcsIG9yIGlmIEkga25vdyB0aGUgYnVpbGQgc3lzdGVtIG1pZ2h0IHJlZmVyIHRvIHRoZSBgQ09ORklHX05FVGAgdmFyaWFibGUgaW4gYSBwYXJ0aWN1bGFyIHdheSAoZS5nLiwgdXNpbmcgaXQgaW4gYW4gb2JqZWN0IGZpbGUgZGVwZW5kZW5jeSksIHRoZW4gSSYjMzk7bGwgcmVhY2ggZm9yIGdyZXAuIFNwZWNpZmljYWxseSwgSSYjMzk7bGwgc2VhcmNoIGZvciB0aGUgY29tbW9uIGJ1aWxkIHN5bnRheCBgb2JqLSQoQ09ORklHX05FVClgIHRvIHNlZSB3aGVyZSBhbmQgaG93IHRoZSBwcmVzZW5jZSBvZiB0aGUgYENPTkZJR19ORVRgIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGluZmx1ZW5jaW5nIHRoZSBpbmNsdXNpb24gb3IgZXhjbHVzaW9uIG9mIG9iamVjdCBmaWxlcy4gVGhpcyBzaG91bGQgcXVpY2tseSBsb2NhdGUgYW55IGJ1aWxkIHJ1bGVzIHRoYXQgZGlyZWN0bHkgZGVwZW5kIG9uIHRoZSBgQ09ORklHX05FVGAgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTk6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b2JqLS4qbmV0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7S2J1aWxkJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O0tidWlsZD0xMTM9b2JqLSQoQ09ORklHX1NBTVBMRVMpXHQmIzQzOz0gc2FtcGxlcy9cbktidWlsZDoxMTQ6b2JqLSQoQ09ORklHX05FVClcdCYjNDM7PSBuZXQvXG5LYnVpbGQtMTE1LW9iai15XHRcdFx0JiM0Mzs9IHZpcnQvXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE5OjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc3MjcKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiA1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBgc29ja2V0cGFpcmAgSW1wbGVtZW50YXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGBDT05GSUdfTkVUYCBhbmQgc3BlY2lmaWNhbGx5IHRoZSBpbXBsaWNhdGlvbnMgb2YgYHNvY2tldHBhaXJgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIHdoYXQgKnNwZWNpZmljKiBwcm90b2NvbHMgbGV2ZXJhZ2UgdGhhdCBmdW5jdGlvbj8gSXQmIzM5O3MgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIGxhbmRzY2FwZS4gSSBhbHJlYWR5IGtub3cgdGhhdCBVbml4IGRvbWFpbiBzb2NrZXRzLCBjb250cm9sbGVkIGJ5IGBDT05GSUdfVU5JWGAsIGFyZSBhIG1ham9yLCBpZiBub3QgdGhlIHByaW1hcnksIGltcGxlbWVudGF0aW9uIG9mIGBzb2NrZXRwYWlyYC4gTm93LCBJIG5lZWQgdG8gZ2V0IGRvd24gdG8gYnJhc3MgdGFja3M6IEkgbmVlZCB0byB2ZXJpZnkgd2hpY2ggc29ja2V0IGZhbWlsaWVzIGFjdHVhbGx5IHByb3ZpZGUgYSBgLnNvY2tldHBhaXJgIGltcGxlbWVudGF0aW9uLCBiZWNhdXNlIHRoYXQgd2lsbCBhbGxvdyBtZSB0byBhc3Nlc3MgdGhlIGFyY2hpdGVjdHVyZSBvdmVyYWxsLiBJIHdhbnQgdG8gYnVpbGQgYSBwcm9wZXIgb3ZlcnZpZXcgb2Ygd2hhdCYjMzk7cyBzdXBwb3J0ZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE5OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1xcLnNvY2tldHBhaXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9hdG0vcHZjLmM9MTA2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHB2Y19wcm90b19vcHMgPSB7XG4tLVxubmV0L2F0bS9wdmMuYy0xMTItXHQuY29ubmVjdCA9XHRwdmNfY29ubmVjdCxcbm5ldC9hdG0vcHZjLmM6MTEzOlx0LnNvY2tldHBhaXIgPVx0c29ja19ub19zb2NrZXRwYWlyLFxubmV0L2F0bS9wdmMuYy0xMTQtXHQuYWNjZXB0ID1cdHNvY2tfbm9fYWNjZXB0LFxuLS1cbm5ldC9ibHVldG9vdGgvYm5lcC9zb2NrLmM9MTY5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIGJuZXBfc29ja19vcHMgPSB7XG4tLVxubmV0L2JsdWV0b290aC9ibmVwL3NvY2suYy0xODMtXHQuY29ubmVjdFx0PSBzb2NrX25vX2Nvbm5lY3QsXG5uZXQvYmx1ZXRvb3RoL2JuZXAvc29jay5jOjE4NDpcdC5zb2NrZXRwYWlyXHQ9IHNvY2tfbm9fc29ja2V0cGFpcixcbm5ldC9ibHVldG9vdGgvYm5lcC9zb2NrLmMtMTg1LVx0LmFjY2VwdFx0XHQ9IHNvY2tfbm9fYWNjZXB0LFxuLS1cbm5ldC9ibHVldG9vdGgvaGNpX3NvY2suYz0yMTczPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIGhjaV9zb2NrX29wcyA9IHtcbi0tXG5uZXQvYmx1ZXRvb3RoL2hjaV9zb2NrLmMtMjE5MC1cdC5jb25uZWN0XHQ9IHNvY2tfbm9fY29ubmVjdCxcbm5ldC9ibHVldG9vdGgvaGNpX3NvY2suYzoyMTkxOlx0LnNvY2tldHBhaXJcdD0gc29ja19ub19zb2NrZXRwYWlyLFxubmV0L2JsdWV0b290aC9oY2lfc29jay5jLTIxOTItXHQuYWNjZXB0XHRcdD0gc29ja19ub19hY2NlcHQsXG4tLVxubmV0L2JsdWV0b290aC9oaWRwL3NvY2suYz0yMjA9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgaGlkcF9zb2NrX29wcyA9IHtcbi0tXG5uZXQvYmx1ZXRvb3RoL2hpZHAvc29jay5jLTIzNC1cdC5jb25uZWN0XHQ9IHNvY2tfbm9fY29ubmVjdCxcbm5ldC9ibHVldG9vdGgvaGlkcC9zb2NrLmM6MjM1Olx0LnNvY2tldHBhaXJcdD0gc29ja19ub19zb2NrZXRwYWlyLFxubmV0L2JsdWV0b290aC9oaWRwL3NvY2suYy0yMzYtXHQuYWNjZXB0XHRcdD0gc29ja19ub19hY2NlcHQsXG4tLVxubmV0L2JsdWV0b290aC9pc28uYz0yODM5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIGlzb19zb2NrX29wcyA9IHtcbi0tXG5uZXQvYmx1ZXRvb3RoL2lzby5jLTI4NTItXHQubW1hcFx0XHQ9IHNvY2tfbm9fbW1hcCxcbm5ldC9ibHVldG9vdGgvaXNvLmM6Mjg1MzpcdC5zb2NrZXRwYWlyXHQ9IHNvY2tfbm9fc29ja2V0cGFpcixcbm5ldC9ibHVldG9vdGgvaXNvLmMtMjg1NC1cdC5zaHV0ZG93blx0PSBpc29fc29ja19zaHV0ZG93bixcbi0tXG5uZXQvYmx1ZXRvb3RoL2wyY2FwX3NvY2suYz0yMDc4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIGwyY2FwX3NvY2tfb3BzID0ge1xuLS1cbm5ldC9ibHVldG9vdGgvbDJjYXBfc29jay5jLTIwOTItXHQubW1hcFx0XHQ9IHNvY2tfbm9fbW1hcCxcbm5ldC9ibHVldG9vdGgvbDJjYXBfc29jay5jOjIwOTM6XHQuc29ja2V0cGFpclx0PSBzb2NrX25vX3NvY2tldHBhaXIsXG5uZXQvYmx1ZXRvb3RoL2wyY2FwX3NvY2suYy0yMDk0LVx0LnNodXRkb3duXHQ9IGwyY2FwX3NvY2tfc2h1dGRvd24sXG4tLVxubmV0L2JsdWV0b290aC9yZmNvbW0vc29jay5jPTEwMzE9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcmZjb21tX3NvY2tfb3BzID0ge1xuLS1cbm5ldC9ibHVldG9vdGgvcmZjb21tL3NvY2suYy0xMDQ3LVx0LnBvbGxcdFx0PSBidF9zb2NrX3BvbGwsXG5uZXQvYmx1ZXRvb3RoL3JmY29tbS9zb2NrLmM6MTA0ODpcdC5zb2NrZXRwYWlyXHQ9IHNvY2tfbm9fc29ja2V0cGFpcixcbm5ldC9ibHVldG9vdGgvcmZjb21tL3NvY2suYy0xMDQ5LVx0Lm1tYXBcdFx0PSBzb2NrX25vX21tYXAsXG4tLVxubmV0L2JsdWV0b290aC9zY28uYz0xNTk2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHNjb19zb2NrX29wcyA9IHtcbi0tXG5uZXQvYmx1ZXRvb3RoL3Njby5jLTE2MTAtXHQubW1hcFx0XHQ9IHNvY2tfbm9fbW1hcCxcbm5ldC9ibHVldG9vdGgvc2NvLmM6MTYxMTpcdC5zb2NrZXRwYWlyXHQ9IHNvY2tfbm9fc29ja2V0cGFpcixcbm5ldC9ibHVldG9vdGgvc2NvLmMtMTYxMi1cdC5zaHV0ZG93blx0PSBzY29fc29ja19zaHV0ZG93bixcbi0tXG5uZXQvY2FuL2JjbS5jPTIxMTA9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgYmNtX29wcyA9IHtcbi0tXG5uZXQvY2FuL2JjbS5jLTIxMTQtXHQuY29ubmVjdCAgICAgICA9IGJjbV9jb25uZWN0LFxubmV0L2Nhbi9iY20uYzoyMTE1Olx0LnNvY2tldHBhaXIgICAgPSBzb2NrX25vX3NvY2tldHBhaXIsXG5uZXQvY2FuL2JjbS5jLTIxMTYtXHQuYWNjZXB0ICAgICAgICA9IHNvY2tfbm9fYWNjZXB0LFxuLS1cbm5ldC9jYW4vaXNvdHAuYz0yMDA2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIGlzb3RwX29wcyA9IHtcbi0tXG5uZXQvY2FuL2lzb3RwLmMtMjAxMC1cdC5jb25uZWN0ID0gc29ja19ub19jb25uZWN0LFxubmV0L2Nhbi9pc290cC5jOjIwMTE6XHQuc29ja2V0cGFpciA9IHNvY2tfbm9fc29ja2V0cGFpcixcbm5ldC9jYW4vaXNvdHAuYy0yMDEyLVx0LmFjY2VwdCA9IHNvY2tfbm9fYWNjZXB0LFxuLS1cbm5ldC9jYW4vajE5Mzkvc29ja2V0LmM9MTM3NT1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBqMTkzOV9vcHMgPSB7XG4tLVxubmV0L2Nhbi9qMTkzOS9zb2NrZXQuYy0xMzc5LVx0LmNvbm5lY3QgPSBqMTkzOV9za19jb25uZWN0LFxubmV0L2Nhbi9qMTkzOS9zb2NrZXQuYzoxMzgwOlx0LnNvY2tldHBhaXIgPSBzb2NrX25vX3NvY2tldHBhaXIsXG5uZXQvY2FuL2oxOTM5L3NvY2tldC5jLTEzODEtXHQuYWNjZXB0ID0gc29ja19ub19hY2NlcHQsXG4tLVxubmV0L2Nhbi9yYXcuYz0xMDY4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHJhd19vcHMgPSB7XG4tLVxubmV0L2Nhbi9yYXcuYy0xMDcyLVx0LmNvbm5lY3QgICAgICAgPSBzb2NrX25vX2Nvbm5lY3QsXG5uZXQvY2FuL3Jhdy5jOjEwNzM6XHQuc29ja2V0cGFpciAgICA9IHNvY2tfbm9fc29ja2V0cGFpcixcbm5ldC9jYW4vcmF3LmMtMTA3NC1cdC5hY2NlcHQgICAgICAgID0gc29ja19ub19hY2NlcHQsXG4tLVxubmV0L2llZWU4MDIxNTQvc29ja2V0LmM9NDEwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIGllZWU4MDIxNTRfcmF3X29wcyA9IHtcbi0tXG5uZXQvaWVlZTgwMjE1NC9zb2NrZXQuYy00MTUtXHQuY29ubmVjdFx0ICAgPSBpZWVlODAyMTU0X3NvY2tfY29ubmVjdCxcbm5ldC9pZWVlODAyMTU0L3NvY2tldC5jOjQxNjpcdC5zb2NrZXRwYWlyXHQgICA9IHNvY2tfbm9fc29ja2V0cGFpcixcbm5ldC9pZWVlODAyMTU0L3NvY2tldC5jLTQxNy1cdC5hY2NlcHRcdFx0ICAgPSBzb2NrX25vX2FjY2VwdCxcbi0tXG5uZXQvaWVlZTgwMjE1NC9zb2NrZXQuYz05ODY9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgaWVlZTgwMjE1NF9kZ3JhbV9vcHMgPSB7XG4tLVxubmV0L2llZWU4MDIxNTQvc29ja2V0LmMtOTkxLVx0LmNvbm5lY3RcdCAgID0gaWVlZTgwMjE1NF9zb2NrX2Nvbm5lY3QsXG5uZXQvaWVlZTgwMjE1NC9zb2NrZXQuYzo5OTI6XHQuc29ja2V0cGFpclx0ICAgPSBzb2NrX25vX3NvY2tldHBhaXIsXG5uZXQvaWVlZTgwMjE1NC9zb2NrZXQuYy05OTMtXHQuYWNjZXB0XHRcdCAgID0gc29ja19ub19hY2NlcHQsXG4tLVxubmV0L2lwdjQvYWZfaW5ldC5jPTEwNjA9Y29uc3Qgc3RydWN0IHByb3RvX29wcyBpbmV0X3N0cmVhbV9vcHMgPSB7XG4tLVxubmV0L2lwdjQvYWZfaW5ldC5jLTEwNjUtXHQuY29ubmVjdFx0ICAgPSBpbmV0X3N0cmVhbV9jb25uZWN0LFxubmV0L2lwdjQvYWZfaW5ldC5jOjEwNjY6XHQuc29ja2V0cGFpclx0ICAgPSBzb2NrX25vX3NvY2tldHBhaXIsXG5uZXQvaXB2NC9hZl9pbmV0LmMtMTA2Ny1cdC5hY2NlcHRcdFx0ICAgPSBpbmV0X2FjY2VwdCxcbi0tXG5uZXQvaXB2NC9hZl9pbmV0LmM9MTA5Nj1jb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIGluZXRfZGdyYW1fb3BzID0ge1xuLS1cbm5ldC9pcHY0L2FmX2luZXQuYy0xMTAxLVx0LmNvbm5lY3RcdCAgID0gaW5ldF9kZ3JhbV9jb25uZWN0LFxubmV0L2lwdjQvYWZfaW5ldC5jOjExMDI6XHQuc29ja2V0cGFpclx0ICAgPSBzb2NrX25vX3NvY2tldHBhaXIsXG5uZXQvaXB2NC9hZl9pbmV0LmMtMTEwMy1cdC5hY2NlcHRcdFx0ICAgPSBzb2NrX25vX2FjY2VwdCxcbi0tXG5uZXQvaXB2NC9hZl9pbmV0LmM9MTEyOD1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBpbmV0X3NvY2tyYXdfb3BzID0ge1xuLS1cbm5ldC9pcHY0L2FmX2luZXQuYy0xMTMzLVx0LmNvbm5lY3RcdCAgID0gaW5ldF9kZ3JhbV9jb25uZWN0LFxubmV0L2lwdjQvYWZfaW5ldC5jOjExMzQ6XHQuc29ja2V0cGFpclx0ICAgPSBzb2NrX25vX3NvY2tldHBhaXIsXG5uZXQvaXB2NC9hZl9pbmV0LmMtMTEzNS1cdC5hY2NlcHRcdFx0ICAgPSBzb2NrX25vX2FjY2VwdCxcbi0tXG5uZXQvaXB2Ni9hZl9pbmV0Ni5jPTY2MD1jb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIGluZXQ2X3N0cmVhbV9vcHMgPSB7XG4tLVxubmV0L2lwdjYvYWZfaW5ldDYuYy02NjUtXHQuY29ubmVjdFx0ICAgPSBpbmV0X3N0cmVhbV9jb25uZWN0LFx0Lyogb2tcdFx0Ki9cbm5ldC9pcHY2L2FmX2luZXQ2LmM6NjY2Olx0LnNvY2tldHBhaXJcdCAgID0gc29ja19ub19zb2NrZXRwYWlyLFx0LyogYSBkbyBub3RoaW5nXHQqL1xubmV0L2lwdjYvYWZfaW5ldDYuYy02NjctXHQuYWNjZXB0XHRcdCAgID0gaW5ldF9hY2NlcHQsXHRcdC8qIG9rXHRcdCovXG4tLVxubmV0L2lwdjYvYWZfaW5ldDYuYz02OTY9Y29uc3Qgc3RydWN0IHByb3RvX29wcyBpbmV0Nl9kZ3JhbV9vcHMgPSB7XG4tLVxubmV0L2lwdjYvYWZfaW5ldDYuYy03MDEtXHQuY29ubmVjdFx0ICAgPSBpbmV0X2RncmFtX2Nvbm5lY3QsXHQvKiBva1x0XHQqL1xubmV0L2lwdjYvYWZfaW5ldDYuYzo3MDI6XHQuc29ja2V0cGFpclx0ICAgPSBzb2NrX25vX3NvY2tldHBhaXIsXHQvKiBhIGRvIG5vdGhpbmdcdCovXG5uZXQvaXB2Ni9hZl9pbmV0Ni5jLTcwMy1cdC5hY2NlcHRcdFx0ICAgPSBzb2NrX25vX2FjY2VwdCxcdFx0LyogYSBkbyBub3RoaW5nXHQqL1xuLS1cbm5ldC9pcHY2L3Jhdy5jPTEyODc9Y29uc3Qgc3RydWN0IHByb3RvX29wcyBpbmV0Nl9zb2NrcmF3X29wcyA9IHtcbi0tXG5uZXQvaXB2Ni9yYXcuYy0xMjkyLVx0LmNvbm5lY3RcdCAgID0gaW5ldF9kZ3JhbV9jb25uZWN0LFx0Lyogb2tcdFx0Ki9cbm5ldC9pcHY2L3Jhdy5jOjEyOTM6XHQuc29ja2V0cGFpclx0ICAgPSBzb2NrX25vX3NvY2tldHBhaXIsXHQvKiBhIGRvIG5vdGhpbmdcdCovXG5uZXQvaXB2Ni9yYXcuYy0xMjk0LVx0LmFjY2VwdFx0XHQgICA9IHNvY2tfbm9fYWNjZXB0LFx0XHQvKiBhIGRvIG5vdGhpbmdcdCovXG4tLVxubmV0L2l1Y3YvYWZfaXVjdi5jPTIyNDk9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgaXVjdl9zb2NrX29wcyA9IHtcbi0tXG5uZXQvaXVjdi9hZl9pdWN2LmMtMjI2Mi1cdC5tbWFwXHRcdD0gc29ja19ub19tbWFwLFxubmV0L2l1Y3YvYWZfaXVjdi5jOjIyNjM6XHQuc29ja2V0cGFpclx0PSBzb2NrX25vX3NvY2tldHBhaXIsXG5uZXQvaXVjdi9hZl9pdWN2LmMtMjI2NC1cdC5zaHV0ZG93blx0PSBpdWN2X3NvY2tfc2h1dGRvd24sXG4tLVxubmV0L2tjbS9rY21zb2NrLmM9MTc0NT1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBrY21fZGdyYW1fb3BzID0ge1xuLS1cbm5ldC9rY20va2Ntc29jay5jLTE3NTAtXHQuY29ubmVjdCA9XHRzb2NrX25vX2Nvbm5lY3QsXG5uZXQva2NtL2tjbXNvY2suYzoxNzUxOlx0LnNvY2tldHBhaXIgPVx0c29ja19ub19zb2NrZXRwYWlyLFxubmV0L2tjbS9rY21zb2NrLmMtMTc1Mi1cdC5hY2NlcHQgPVx0c29ja19ub19hY2NlcHQsXG4tLVxubmV0L2tjbS9rY21zb2NrLmM9MTc2Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBrY21fc2VxcGFja2V0X29wcyA9IHtcbi0tXG5uZXQva2NtL2tjbXNvY2suYy0xNzcxLVx0LmNvbm5lY3QgPVx0c29ja19ub19jb25uZWN0LFxubmV0L2tjbS9rY21zb2NrLmM6MTc3MjpcdC5zb2NrZXRwYWlyID1cdHNvY2tfbm9fc29ja2V0cGFpcixcbm5ldC9rY20va2Ntc29jay5jLTE3NzMtXHQuYWNjZXB0ID1cdHNvY2tfbm9fYWNjZXB0LFxuLS1cbm5ldC9rZXkvYWZfa2V5LmM9Mzc3Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBwZmtleV9vcHMgPSB7XG4tLVxubmV0L2tleS9hZl9rZXkuYy0zNzc4LVx0LmNvbm5lY3RcdD1cdHNvY2tfbm9fY29ubmVjdCxcbm5ldC9rZXkvYWZfa2V5LmM6Mzc3OTpcdC5zb2NrZXRwYWlyXHQ9XHRzb2NrX25vX3NvY2tldHBhaXIsXG5uZXQva2V5L2FmX2tleS5jLTM3ODAtXHQuYWNjZXB0XHRcdD1cdHNvY2tfbm9fYWNjZXB0LFxuLS1cbm5ldC9sMnRwL2wydHBfaXAuYz02Mjg9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgbDJ0cF9pcF9vcHMgPSB7XG4tLVxubmV0L2wydHAvbDJ0cF9pcC5jLTYzMy1cdC5jb25uZWN0XHQgICA9IGluZXRfZGdyYW1fY29ubmVjdCxcbm5ldC9sMnRwL2wydHBfaXAuYzo2MzQ6XHQuc29ja2V0cGFpclx0ICAgPSBzb2NrX25vX3NvY2tldHBhaXIsXG5uZXQvbDJ0cC9sMnRwX2lwLmMtNjM1LVx0LmFjY2VwdFx0XHQgICA9IHNvY2tfbm9fYWNjZXB0LFxuLS1cbm5ldC9sMnRwL2wydHBfaXA2LmM9NzU3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIGwydHBfaXA2X29wcyA9IHtcbi0tXG5uZXQvbDJ0cC9sMnRwX2lwNi5jLTc2Mi1cdC5jb25uZWN0XHQgICA9IGluZXRfZGdyYW1fY29ubmVjdCxcbm5ldC9sMnRwL2wydHBfaXA2LmM6NzYzOlx0LnNvY2tldHBhaXJcdCAgID0gc29ja19ub19zb2NrZXRwYWlyLFxubmV0L2wydHAvbDJ0cF9pcDYuYy03NjQtXHQuYWNjZXB0XHRcdCAgID0gc29ja19ub19hY2NlcHQsXG4tLVxubmV0L2wydHAvbDJ0cF9wcHAuYz0xNjg2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHBwcG9sMnRwX29wcyA9IHtcbi0tXG5uZXQvbDJ0cC9sMnRwX3BwcC5jLTE2OTEtXHQuY29ubmVjdFx0PSBwcHBvbDJ0cF9jb25uZWN0LFxubmV0L2wydHAvbDJ0cF9wcHAuYzoxNjkyOlx0LnNvY2tldHBhaXJcdD0gc29ja19ub19zb2NrZXRwYWlyLFxubmV0L2wydHAvbDJ0cF9wcHAuYy0xNjkzLVx0LmFjY2VwdFx0XHQ9IHNvY2tfbm9fYWNjZXB0LFxuLS1cbm5ldC9sbGMvYWZfbGxjLmM9MTIyMT1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBsbGNfdWlfb3BzID0ge1xuLS1cbm5ldC9sbGMvYWZfbGxjLmMtMTIyNi1cdC5jb25uZWN0ICAgICA9IGxsY191aV9jb25uZWN0LFxubmV0L2xsYy9hZl9sbGMuYzoxMjI3Olx0LnNvY2tldHBhaXIgID0gc29ja19ub19zb2NrZXRwYWlyLFxubmV0L2xsYy9hZl9sbGMuYy0xMjI4LVx0LmFjY2VwdCAgICAgID0gbGxjX3VpX2FjY2VwdCxcbi0tXG5uZXQvbWN0cC9hZl9tY3RwLmM9NjI4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIG1jdHBfZGdyYW1fb3BzID0ge1xuLS1cbm5ldC9tY3RwL2FmX21jdHAuYy02MzItXHQuY29ubmVjdFx0PSBtY3RwX2Nvbm5lY3QsXG5uZXQvbWN0cC9hZl9tY3RwLmM6NjMzOlx0LnNvY2tldHBhaXJcdD0gc29ja19ub19zb2NrZXRwYWlyLFxubmV0L21jdHAvYWZfbWN0cC5jLTYzNC1cdC5hY2NlcHRcdFx0PSBzb2NrX25vX2FjY2VwdCxcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYz00NzI0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIG1wdGNwX3N0cmVhbV9vcHMgPSB7XG4tLVxubmV0L21wdGNwL3Byb3RvY29sLmMtNDcyOS1cdC5jb25uZWN0XHQgICA9IGluZXRfc3RyZWFtX2Nvbm5lY3QsXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYzo0NzMwOlx0LnNvY2tldHBhaXJcdCAgID0gc29ja19ub19zb2NrZXRwYWlyLFxubmV0L21wdGNwL3Byb3RvY29sLmMtNDczMS1cdC5hY2NlcHRcdFx0ICAgPSBtcHRjcF9zdHJlYW1fYWNjZXB0LFxuLS1cbm5ldC9tcHRjcC9wcm90b2NvbC5jPTQ4MzM9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgbXB0Y3BfdjZfc3RyZWFtX29wcyA9IHtcbi0tXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy00ODM4LVx0LmNvbm5lY3RcdCAgID0gaW5ldF9zdHJlYW1fY29ubmVjdCxcbm5ldC9tcHRjcC9wcm90b2NvbC5jOjQ4Mzk6XHQuc29ja2V0cGFpclx0ICAgPSBzb2NrX25vX3NvY2tldHBhaXIsXG5uZXQvbXB0Y3AvcHJvdG9jb2wuYy00ODQwLVx0LmFjY2VwdFx0XHQgICA9IG1wdGNwX3N0cmVhbV9hY2NlcHQsXG4tLVxubmV0L25ldGxpbmsvYWZfbmV0bGluay5jPTI4MDg9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgbmV0bGlua19vcHMgPSB7XG4tLVxubmV0L25ldGxpbmsvYWZfbmV0bGluay5jLTI4MTMtXHQuY29ubmVjdCA9XHRuZXRsaW5rX2Nvbm5lY3QsXG5uZXQvbmV0bGluay9hZl9uZXRsaW5rLmM6MjgxNDpcdC5zb2NrZXRwYWlyID1cdHNvY2tfbm9fc29ja2V0cGFpcixcbm5ldC9uZXRsaW5rL2FmX25ldGxpbmsuYy0yODE1LVx0LmFjY2VwdCA9XHRzb2NrX25vX2FjY2VwdCxcbi0tXG5uZXQvbmZjL2xsY3Bfc29jay5jPTkyNz1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBsbGNwX3NvY2tfb3BzID0ge1xuLS1cbm5ldC9uZmMvbGxjcF9zb2NrLmMtOTMyLVx0LnJlbGVhc2UgICAgICAgID0gbGxjcF9zb2NrX3JlbGVhc2UsXG5uZXQvbmZjL2xsY3Bfc29jay5jOjkzMzpcdC5zb2NrZXRwYWlyICAgICA9IHNvY2tfbm9fc29ja2V0cGFpcixcbm5ldC9uZmMvbGxjcF9zb2NrLmMtOTM0LVx0LmFjY2VwdCAgICAgICAgID0gbGxjcF9zb2NrX2FjY2VwdCxcbi0tXG5uZXQvbmZjL2xsY3Bfc29jay5jPTk0Nz1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBsbGNwX3Jhd3NvY2tfb3BzID0ge1xuLS1cbm5ldC9uZmMvbGxjcF9zb2NrLmMtOTUyLVx0LnJlbGVhc2UgICAgICAgID0gbGxjcF9zb2NrX3JlbGVhc2UsXG5uZXQvbmZjL2xsY3Bfc29jay5jOjk1MzpcdC5zb2NrZXRwYWlyICAgICA9IHNvY2tfbm9fc29ja2V0cGFpcixcbm5ldC9uZmMvbGxjcF9zb2NrLmMtOTU0LVx0LmFjY2VwdCAgICAgICAgID0gc29ja19ub19hY2NlcHQsXG4tLVxubmV0L25mYy9yYXdzb2NrLmM9Mjc5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHJhd3NvY2tfb3BzID0ge1xuLS1cbm5ldC9uZmMvcmF3c29jay5jLTI4NC1cdC5jb25uZWN0ICAgICAgICA9IHJhd3NvY2tfY29ubmVjdCxcbm5ldC9uZmMvcmF3c29jay5jOjI4NTpcdC5zb2NrZXRwYWlyICAgICA9IHNvY2tfbm9fc29ja2V0cGFpcixcbm5ldC9uZmMvcmF3c29jay5jLTI4Ni1cdC5hY2NlcHQgICAgICAgICA9IHNvY2tfbm9fYWNjZXB0LFxuLS1cbm5ldC9uZmMvcmF3c29jay5jPTI5Nz1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyByYXdzb2NrX3Jhd19vcHMgPSB7XG4tLVxubmV0L25mYy9yYXdzb2NrLmMtMzAyLVx0LmNvbm5lY3QgICAgICAgID0gc29ja19ub19jb25uZWN0LFxubmV0L25mYy9yYXdzb2NrLmM6MzAzOlx0LnNvY2tldHBhaXIgICAgID0gc29ja19ub19zb2NrZXRwYWlyLFxubmV0L25mYy9yYXdzb2NrLmMtMzA0LVx0LmFjY2VwdCAgICAgICAgID0gc29ja19ub19hY2NlcHQsXG4tLVxubmV0L3BhY2tldC9hZl9wYWNrZXQuYz00NzUzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHBhY2tldF9vcHNfc3BrdCA9IHtcbi0tXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTQ3NTgtXHQuY29ubmVjdCA9XHRzb2NrX25vX2Nvbm5lY3QsXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjQ3NTk6XHQuc29ja2V0cGFpciA9XHRzb2NrX25vX3NvY2tldHBhaXIsXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTQ3NjAtXHQuYWNjZXB0ID1cdHNvY2tfbm9fYWNjZXB0LFxuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9NDc3Mj1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBwYWNrZXRfb3BzID0ge1xuLS1cbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDc3Ny1cdC5jb25uZWN0ID1cdHNvY2tfbm9fY29ubmVjdCxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6NDc3ODpcdC5zb2NrZXRwYWlyID1cdHNvY2tfbm9fc29ja2V0cGFpcixcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDc3OS1cdC5hY2NlcHQgPVx0c29ja19ub19hY2NlcHQsXG4tLVxubmV0L3Bob25ldC9zb2NrZXQuYz00MzM9Y29uc3Qgc3RydWN0IHByb3RvX29wcyBwaG9uZXRfZGdyYW1fb3BzID0ge1xuLS1cbm5ldC9waG9uZXQvc29ja2V0LmMtNDM4LVx0LmNvbm5lY3RcdD0gc29ja19ub19jb25uZWN0LFxubmV0L3Bob25ldC9zb2NrZXQuYzo0Mzk6XHQuc29ja2V0cGFpclx0PSBzb2NrX25vX3NvY2tldHBhaXIsXG5uZXQvcGhvbmV0L3NvY2tldC5jLTQ0MC1cdC5hY2NlcHRcdFx0PSBzb2NrX25vX2FjY2VwdCxcbi0tXG5uZXQvcGhvbmV0L3NvY2tldC5jPTQ1MT1jb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHBob25ldF9zdHJlYW1fb3BzID0ge1xuLS1cbm5ldC9waG9uZXQvc29ja2V0LmMtNDU2LVx0LmNvbm5lY3RcdD0gcG5fc29ja2V0X2Nvbm5lY3QsXG5uZXQvcGhvbmV0L3NvY2tldC5jOjQ1NzpcdC5zb2NrZXRwYWlyXHQ9IHNvY2tfbm9fc29ja2V0cGFpcixcbm5ldC9waG9uZXQvc29ja2V0LmMtNDU4LVx0LmFjY2VwdFx0XHQ9IHBuX3NvY2tldF9hY2NlcHQsXG4tLVxubmV0L3FydHIvYWZfcXJ0ci5jPTEyOTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcXJ0cl9wcm90b19vcHMgPSB7XG4tLVxubmV0L3FydHIvYWZfcXJ0ci5jLTEyOTgtXHQuY29ubmVjdFx0PSBxcnRyX2Nvbm5lY3QsXG5uZXQvcXJ0ci9hZl9xcnRyLmM6MTI5OTpcdC5zb2NrZXRwYWlyXHQ9IHNvY2tfbm9fc29ja2V0cGFpcixcbm5ldC9xcnRyL2FmX3FydHIuYy0xMzAwLVx0LmFjY2VwdFx0XHQ9IHNvY2tfbm9fYWNjZXB0LFxuLS1cbm5ldC9yZHMvYWZfcmRzLmM9NjQ2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHJkc19wcm90b19vcHMgPSB7XG4tLVxubmV0L3Jkcy9hZl9yZHMuYy02NTEtXHQuY29ubmVjdCA9XHRyZHNfY29ubmVjdCxcbm5ldC9yZHMvYWZfcmRzLmM6NjUyOlx0LnNvY2tldHBhaXIgPVx0c29ja19ub19zb2NrZXRwYWlyLFxubmV0L3Jkcy9hZl9yZHMuYy02NTMtXHQuYWNjZXB0ID1cdHNvY2tfbm9fYWNjZXB0LFxuLS1cbm5ldC9yeHJwYy9hZl9yeHJwYy5jPTEwMDA9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcnhycGNfcnBjX29wcyA9IHtcbi0tXG5uZXQvcnhycGMvYWZfcnhycGMuYy0xMDA1LVx0LmNvbm5lY3RcdD0gcnhycGNfY29ubmVjdCxcbm5ldC9yeHJwYy9hZl9yeHJwYy5jOjEwMDY6XHQuc29ja2V0cGFpclx0PSBzb2NrX25vX3NvY2tldHBhaXIsXG5uZXQvcnhycGMvYWZfcnhycGMuYy0xMDA3LVx0LmFjY2VwdFx0XHQ9IHNvY2tfbm9fYWNjZXB0LFxuLS1cbm5ldC9zY3RwL2lwdjYuYz0xMDQzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIGluZXQ2X3NlcXBhY2tldF9vcHMgPSB7XG4tLVxubmV0L3NjdHAvaXB2Ni5jLTEwNDgtXHQuY29ubmVjdFx0ICAgPSBzY3RwX2luZXRfY29ubmVjdCxcbm5ldC9zY3RwL2lwdjYuYzoxMDQ5Olx0LnNvY2tldHBhaXJcdCAgID0gc29ja19ub19zb2NrZXRwYWlyLFxubmV0L3NjdHAvaXB2Ni5jLTEwNTAtXHQuYWNjZXB0XHRcdCAgID0gaW5ldF9hY2NlcHQsXG4tLVxubmV0L3NjdHAvcHJvdG9jb2wuYz0xMTA2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIGluZXRfc2VxcGFja2V0X29wcyA9IHtcbi0tXG5uZXQvc2N0cC9wcm90b2NvbC5jLTExMTEtXHQuY29ubmVjdFx0ICAgPSBzY3RwX2luZXRfY29ubmVjdCxcbm5ldC9zY3RwL3Byb3RvY29sLmM6MTExMjpcdC5zb2NrZXRwYWlyXHQgICA9IHNvY2tfbm9fc29ja2V0cGFpcixcbm5ldC9zY3RwL3Byb3RvY29sLmMtMTExMy1cdC5hY2NlcHRcdFx0ICAgPSBpbmV0X2FjY2VwdCxcbi0tXG5uZXQvc21jL2FmX3NtYy5jPTMzMzI9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgc21jX3NvY2tfb3BzID0ge1xuLS1cbm5ldC9zbWMvYWZfc21jLmMtMzMzNy1cdC5jb25uZWN0XHQ9IHNtY19jb25uZWN0LFxubmV0L3NtYy9hZl9zbWMuYzozMzM4Olx0LnNvY2tldHBhaXJcdD0gc29ja19ub19zb2NrZXRwYWlyLFxubmV0L3NtYy9hZl9zbWMuYy0zMzM5LVx0LmFjY2VwdFx0XHQ9IHNtY19hY2NlcHQsXG4tLVxubmV0L3NtYy9zbWNfaW5ldC5jPTM2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHNtY19pbmV0X3N0cmVhbV9vcHMgPSB7XG4tLVxubmV0L3NtYy9zbWNfaW5ldC5jLTQxLVx0LmNvbm5lY3RcdD0gc21jX2Nvbm5lY3QsXG5uZXQvc21jL3NtY19pbmV0LmM6NDI6XHQuc29ja2V0cGFpclx0PSBzb2NrX25vX3NvY2tldHBhaXIsXG5uZXQvc21jL3NtY19pbmV0LmMtNDMtXHQuYWNjZXB0XHRcdD0gc21jX2FjY2VwdCxcbi0tXG5uZXQvc21jL3NtY19pbmV0LmM9ODQ9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgc21jX2luZXQ2X3N0cmVhbV9vcHMgPSB7XG4tLVxubmV0L3NtYy9zbWNfaW5ldC5jLTg5LVx0LmNvbm5lY3RcdD0gc21jX2Nvbm5lY3QsXG5uZXQvc21jL3NtY19pbmV0LmM6OTA6XHQuc29ja2V0cGFpclx0PSBzb2NrX25vX3NvY2tldHBhaXIsXG5uZXQvc21jL3NtY19pbmV0LmMtOTEtXHQuYWNjZXB0XHRcdD0gc21jX2FjY2VwdCxcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYz0zMzU5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIG1zZ19vcHMgPSB7XG4tLVxubmV0L3RpcGMvc29ja2V0LmMtMzM2NC1cdC5jb25uZWN0XHQ9IHRpcGNfY29ubmVjdCxcbm5ldC90aXBjL3NvY2tldC5jOjMzNjU6XHQuc29ja2V0cGFpclx0PSB0aXBjX3NvY2tldHBhaXIsXG5uZXQvdGlwYy9zb2NrZXQuYy0zMzY2LVx0LmFjY2VwdFx0XHQ9IHNvY2tfbm9fYWNjZXB0LFxuLS1cbm5ldC90aXBjL3NvY2tldC5jPTMzNzk9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcGFja2V0X29wcyA9IHtcbi0tXG5uZXQvdGlwYy9zb2NrZXQuYy0zMzg0LVx0LmNvbm5lY3RcdD0gdGlwY19jb25uZWN0LFxubmV0L3RpcGMvc29ja2V0LmM6MzM4NTpcdC5zb2NrZXRwYWlyXHQ9IHRpcGNfc29ja2V0cGFpcixcbm5ldC90aXBjL3NvY2tldC5jLTMzODYtXHQuYWNjZXB0XHRcdD0gdGlwY19hY2NlcHQsXG4tLVxubmV0L3RpcGMvc29ja2V0LmM9MzM5OT1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBzdHJlYW1fb3BzID0ge1xuLS1cbm5ldC90aXBjL3NvY2tldC5jLTM0MDQtXHQuY29ubmVjdFx0PSB0aXBjX2Nvbm5lY3QsXG5uZXQvdGlwYy9zb2NrZXQuYzozNDA1Olx0LnNvY2tldHBhaXJcdD0gdGlwY19zb2NrZXRwYWlyLFxubmV0L3RpcGMvc29ja2V0LmMtMzQwNi1cdC5hY2NlcHRcdFx0PSB0aXBjX2FjY2VwdCxcbi0tXG5uZXQvdW5peC9hZl91bml4LmM9OTc2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHVuaXhfc3RyZWFtX29wcyA9IHtcbi0tXG5uZXQvdW5peC9hZl91bml4LmMtOTgxLVx0LmNvbm5lY3QgPVx0dW5peF9zdHJlYW1fY29ubmVjdCxcbm5ldC91bml4L2FmX3VuaXguYzo5ODI6XHQuc29ja2V0cGFpciA9XHR1bml4X3NvY2tldHBhaXIsXG5uZXQvdW5peC9hZl91bml4LmMtOTgzLVx0LmFjY2VwdCA9XHR1bml4X2FjY2VwdCxcbi0tXG5uZXQvdW5peC9hZl91bml4LmM9MTAwMj1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyB1bml4X2RncmFtX29wcyA9IHtcbi0tXG5uZXQvdW5peC9hZl91bml4LmMtMTAwNy1cdC5jb25uZWN0ID1cdHVuaXhfZGdyYW1fY29ubmVjdCxcbm5ldC91bml4L2FmX3VuaXguYzoxMDA4Olx0LnNvY2tldHBhaXIgPVx0dW5peF9zb2NrZXRwYWlyLFxubmV0L3VuaXgvYWZfdW5peC5jLTEwMDktXHQuYWNjZXB0ID1cdHNvY2tfbm9fYWNjZXB0LFxuLS1cbm5ldC91bml4L2FmX3VuaXguYz0xMDI3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHVuaXhfc2VxcGFja2V0X29wcyA9IHtcbi0tXG5uZXQvdW5peC9hZl91bml4LmMtMTAzMi1cdC5jb25uZWN0ID1cdHVuaXhfc3RyZWFtX2Nvbm5lY3QsXG5uZXQvdW5peC9hZl91bml4LmM6MTAzMzpcdC5zb2NrZXRwYWlyID1cdHVuaXhfc29ja2V0cGFpcixcbm5ldC91bml4L2FmX3VuaXguYy0xMDM0LVx0LmFjY2VwdCA9XHR1bml4X2FjY2VwdCxcbi0tXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmM9MTY1Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyB2c29ja19kZ3JhbV9vcHMgPSB7XG4tLVxubmV0L3Ztd192c29jay9hZl92c29jay5jLTE2NTgtXHQuY29ubmVjdCA9IHZzb2NrX2RncmFtX2Nvbm5lY3QsXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmM6MTY1OTpcdC5zb2NrZXRwYWlyID0gc29ja19ub19zb2NrZXRwYWlyLFxubmV0L3Ztd192c29jay9hZl92c29jay5jLTE2NjAtXHQuYWNjZXB0ID0gc29ja19ub19hY2NlcHQsXG4tLVxubmV0L3Ztd192c29jay9hZl92c29jay5jPTI2NTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgdnNvY2tfc3RyZWFtX29wcyA9IHtcbi0tXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmMtMjY1OS1cdC5jb25uZWN0ID0gdnNvY2tfY29ubmVjdCxcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYzoyNjYwOlx0LnNvY2tldHBhaXIgPSBzb2NrX25vX3NvY2tldHBhaXIsXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmMtMjY2MS1cdC5hY2NlcHQgPSB2c29ja19hY2NlcHQsXG4tLVxubmV0L3Ztd192c29jay9hZl92c29jay5jPTI2NzY9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgdnNvY2tfc2VxcGFja2V0X29wcyA9IHtcbi0tXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmMtMjY4MS1cdC5jb25uZWN0ID0gdnNvY2tfY29ubmVjdCxcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYzoyNjgyOlx0LnNvY2tldHBhaXIgPSBzb2NrX25vX3NvY2tldHBhaXIsXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmMtMjY4My1cdC5hY2NlcHQgPSB2c29ja19hY2NlcHQsXG4tLVxubmV0L3gyNS9hZl94MjUuYz0xNzM0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHgyNV9wcm90b19vcHMgPSB7XG4tLVxubmV0L3gyNS9hZl94MjUuYy0xNzM5LVx0LmNvbm5lY3QgPVx0eDI1X2Nvbm5lY3QsXG5uZXQveDI1L2FmX3gyNS5jOjE3NDA6XHQuc29ja2V0cGFpciA9XHRzb2NrX25vX3NvY2tldHBhaXIsXG5uZXQveDI1L2FmX3gyNS5jLTE3NDEtXHQuYWNjZXB0ID1cdHgyNV9hY2NlcHQsXG4tLVxubmV0L3hkcC94c2suYz0yMTU5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHhza19wcm90b19vcHMgPSB7XG4tLVxubmV0L3hkcC94c2suYy0yMTY0LVx0LmNvbm5lY3RcdD0gc29ja19ub19jb25uZWN0LFxubmV0L3hkcC94c2suYzoyMTY1Olx0LnNvY2tldHBhaXJcdD0gc29ja19ub19zb2NrZXRwYWlyLFxubmV0L3hkcC94c2suYy0yMTY2LVx0LmFjY2VwdFx0XHQ9IHNvY2tfbm9fYWNjZXB0LFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAxOTo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTE2MgoJCQkJCQkJb3V0cHV0OiAxMTQKCQkJCQkJCXRob3VnaHRzOiA1MzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIGBzb2NrZXRwYWlyYCBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBiZWVuIGRpZ2dpbmcgaW50byB0aGUgYHNvY2tldHBhaXJgIGltcGxlbWVudGF0aW9uLCBzcGVjaWZpY2FsbHkgbG9va2luZyBhdCBjaGFuZ2VzIHJlbGF0ZWQgdG8gQUZfVU5JWCBhbmQgVElQQy4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgYF9fc3lzX3NvY2tldHBhaXJgIGZ1bmN0aW9uIHdpdGhpbiBgbmV0L3NvY2tldC5jYCwgd2hpY2gsIGFzIEkgdW5kZXJzdGFuZCBpdCwgaXMgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgYHN5c19zb2NrZXRwYWlyYCBzeXN0ZW0gY2FsbC4gSSBhbHNvIG5vdGVkIHRoYXQgYF9fc3lzX3NvY2tldHBhaXJgIGlzIGRpcmVjdGx5IGNhbGxlZCBieSBgX19kb19zeXNfc29ja2V0cGFpcmAsIG9yIHBvdGVudGlhbGx5IGBfX3NlX3N5c19zb2NrZXRwYWlyYCBkZXBlbmRpbmcgb24gdGhlIGV4YWN0IGtlcm5lbCB2ZXJzaW9uLgoKSSYjMzk7dmUgY29uZmlybWVkIHRoZSBkZWNsYXJhdGlvbjogYGludCBfX3N5c19zb2NrZXRwYWlyKGludCBmYW1pbHksIGludCB0eXBlLCBpbnQgcHJvdG9jb2wsIGludCBfX3VzZXIgKnVzb2NrdmVjKWAgYW5kIGl0cyBhc3NvY2lhdGlvbiB3aXRoIGBTWVNDQUxMX0RFRklORTQoc29ja2V0cGFpciwgaW50LCBmYW1pbHksIGludCwgdHlwZSwgaW50LCBwcm90b2NvbCwgaW50IF9fdXNlciAqLCB1c29ja3ZlYylgIHdpdGhpbiBgbmV0L3NvY2tldC5jYC4KCkkmIzM5O3ZlIHNjYW5uZWQgdGhlIHJlbGV2YW50IGNvZGUgdG8gY29uZmlybSB0aGF0IGBfX3N5c19zb2NrZXRwYWlyYCwgYF9fZG9fc3lzX3NvY2tldHBhaXJgIChvciBhbnkgb2YgdGhlIHZhcmlhbnRzKSBhcmUgdGhlIGtleSBzeW1ib2xzIHRvIHRyYWNrLiBJIGFscmVhZHkga25vdyB0aGF0IHN5emthbGxlciBzcGVjaWZpY2FsbHkgcG9pbnRzIHRvIGBfX3N5c19zb2NrZXRwYWlyYCBhcyB0aGUgY3JpdGljYWwgZnVuY3Rpb24uCgpJJiMzOTt2ZSBhbHNvIHZlcmlmaWVkIHRoYXQgYENPTkZJR19ORVRgIGFuZCBgQ09ORklHX1VOSVhgIGFyZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBgQ09ORklHX05FVGAgaXMgdGhlIGJhc2UgZm9yIHRoZSBuZXR3b3JraW5nIHN1YnN5c3RlbSwgYW5kIGBDT05GSUdfVU5JWGAgc3BlY2lmaWNhbGx5IGVuYWJsZXMgdGhlIEFGX1VOSVggc29ja2V0cGFpciBmdW5jdGlvbmFsaXR5LgoKSnVzdCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUsIEkmIzM5O3ZlIHJlLWV4YW1pbmVkIGFsbCB0aGUgZGV0YWlsczoKCiogICAqKldvcnRoRnV6emluZzoqKiBUcnVlLCBkZWZpbml0ZWx5LgoqICAgKipSZWFzb25pbmc6KiogVGhlIHBhdGNoJiMzOTtzIGNvcmUgbW9kaWZpY2F0aW9uIHNlZW1zIHRvIGJlIGEgcmVmYWN0b3Jpbmcgb2YgYF9fc3lzX3NvY2tldHBhaXIoKWAgd2hlcmUgaXQgZGVmZXJzIHRoZSB1c2VyLXNwYWNlIGZpbGUgZGVzY3JpcHRvciBjb3B5IChgcHV0X3VzZXIoKWApIHVudGlsICphZnRlciogc29ja2V0cyBhbmQgZmlsZXMgaGF2ZSBiZWVuIHN1Y2Nlc3NmdWxseSBjcmVhdGVkIGFuZCBhbGxvY2F0ZWQgdmlhIGBzb2NrX2FsbG9jX2ZpbGUoKWAuIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UsIGlmIGBwdXRfdXNlcigpYCBmYWlscywgaXQgbm93IHBlcmZvcm1zIHByb3BlciBjbGVhbnVwICh1c2luZyBgZnB1dCgpYCBhbmQgcmVsZWFzaW5nIGRlc2NyaXB0b3JzKS4gVGhpcyBhbHRlcnMgdGhlIHN5c2NhbGwmIzM5O3MgZXJyb3IgaGFuZGxpbmcgYW5kIHJlc291cmNlIGxpZmV0aW1lIG1hbmFnZW1lbnQgaW4gYSBjcml0aWNhbCBhcmVhIG9mIG5ldHdvcmsvVkZTIGludGVncmF0aW9uLgoqICAgKipGb2N1c1N5bWJvbHM6KiogU3BlY2lmaWNhbGx5IGBfX3N5c19zb2NrZXRwYWlyYC4gT3IgcG90ZW50aWFsbHkgYFsmIzM0O19fc3lzX3NvY2tldHBhaXImIzM0OywgJiMzNDt1bml4X3NvY2tldHBhaXImIzM0O11gIHRob3VnaCBgX19zeXNfc29ja2V0cGFpcmAgaXMgbW9yZSBkaXJlY3QuCiogICAqKkVuYWJsZUNvbmZpZ3M6KiogYFsmIzM0O05FVCYjMzQ7LCAmIzM0O1VOSVgmIzM0O11gLgoKSSYjMzk7dmUgZG91YmxlLWNoZWNrZWQgdGhhdCBldmVyeXRoaW5nIGFsaWducyB3aXRoIG15IHJlcXVpcmVtZW50czogYFdvcnRoRnV6emluZ2AgaXMgYSBib29sZWFuLCBgRm9jdXNTeW1ib2xzYCBpcyBhIHN0cmluZyBsaXN0LCBgRW5hYmxlQ29uZmlnc2AgaXMgYSBzdHJpbmcgbGlzdCwgYW5kIHRoZSBgUmVhc29uaW5nYCBwcm92aWRlcyBhIGNvbmNpc2UgZXhwbGFuYXRpb24uCgpFdmVyeXRoaW5nIGlzIGxvb2tpbmcgZ29vZC4gSSYjMzk7bSByZWFkeSB0byBtb3ZlIGZvcndhcmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE5OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVQmIzM0OywKICAgICYjMzQ7VU5JWCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fc3lzX3NvY2tldHBhaXImIzM0OywKICAgICYjMzQ7dW5peF9zb2NrZXRwYWlyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGVycm9yIGhhbmRsaW5nIGFuZCBkZXNjcmlwdG9yIGluc3RhbGxhdGlvbiBpbiBfX3N5c19zb2NrZXRwYWlyKCkgYnkgZGVmZXJyaW5nIHB1dF91c2VyKCkgdW50aWwgYWZ0ZXIgc29ja2V0IGFuZCBmaWxlIGFsbG9jYXRpb24sIGFuZCBhZGRpbmcgZnB1dCgpIGNsZWFudXAgaWYgcHVibGlzaGluZyB0byB1c2VyIHNwYWNlIGZhaWxzLiBUaGlzIGFmZmVjdHMgY29yZSBuZXR3b3JraW5nIHN5c2NhbGwgaGFuZGxpbmcgYW5kIHJlc291cmNlIG1hbmFnZW1lbnQsIHdoaWNoIGlzIGZ1bGx5IHJlYWNoYWJsZSBhbmQgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUJiMzNDssCiAgICAmIzM0O1VOSVgmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX3N5c19zb2NrZXRwYWlyJiMzNDssCiAgICAmIzM0O3VuaXhfc29ja2V0cGFpciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBlcnJvciBoYW5kbGluZyBhbmQgZGVzY3JpcHRvciBpbnN0YWxsYXRpb24gaW4gX19zeXNfc29ja2V0cGFpcigpIGJ5IGRlZmVycmluZyBwdXRfdXNlcigpIHVudGlsIGFmdGVyIHNvY2tldCBhbmQgZmlsZSBhbGxvY2F0aW9uLCBhbmQgYWRkaW5nIGZwdXQoKSBjbGVhbnVwIGlmIHB1Ymxpc2hpbmcgdG8gdXNlciBzcGFjZSBmYWlscy4gVGhpcyBhZmZlY3RzIGNvcmUgbmV0d29ya2luZyBzeXNjYWxsIGhhbmRsaW5nIGFuZCByZXNvdXJjZSBtYW5hZ2VtZW50LCB3aGljaCBpcyBmdWxseSByZWFjaGFibGUgYW5kIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE5OjQ0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTk6NDQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgX19zeXNfc29ja2V0cGFpcmAgdG8gZGVmZXIgY29weWluZyBmaWxlIGRlc2NyaXB0b3IgbnVtYmVycyAoYGZkMWAgYW5kIGBmZDJgKSB0byB1c2Vyc3BhY2UgKGB1c29ja3ZlY2ApIHVudGlsIGFmdGVyIHNvY2tldCBjcmVhdGlvbiwgcHJvdG9jb2wgc2V0dXAsIGFuZCBmaWxlIGFsbG9jYXRpb24gaGF2ZSBzdWNjZWVkZWQuXG5cbi0gVGhlIHZhbHVlcyB3cml0dGVuIHRvIHVzZXJzcGFjZSB2aWEgYHB1dF91c2VyYCBhcmUgc2ltcGxlIHNjYWxhciBpbnRlZ2VycyAoYGZkMWAsIGBmZDJgKSByZXR1cm5lZCBkaXJlY3RseSBmcm9tIGBnZXRfdW51c2VkX2ZkX2ZsYWdzKClgLCB3aGljaCBhcmUgZnVsbHkgaW5pdGlhbGl6ZWQgYW5kIHZhbGlkYXRlZCBwcmlvciB0byB1c2UuXG4tIE5vIG5ldyB1bmluaXRpYWxpemVkIGhlYXAgb3Igc3RhY2sgYnVmZmVycywgdW5pbml0aWFsaXplZCBzdHJ1Y3QgcGFkZGluZywgb3IgdW5pbml0aWFsaXplZCB2YXJpYWJsZSByZWFkcyBhcmUgaW50cm9kdWNlZC5cbi0gQW55IHBvdGVudGlhbCByZXNvdXJjZSBtYW5hZ2VtZW50IG9yIGxpZmVjeWNsZSBidWdzIChzdWNoIGFzIGZkL2ZpbGUgY2xlYW51cCBvciByZWZjb3VudGluZyBpc3N1ZXMgb24gZXJyb3IgcGF0aHMpIGFyZSBhZGRyZXNzZWQgYnkgc3RhbmRhcmQgc2FuaXRpemVycyAoS0FTQU4sIHJlZmNvdW50IGNoZWNrcykuXG5cbkNvbnNlcXVlbnRseSwgdGhlcmUgYXJlIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIG9yIGluZm8tbGVha3MsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDU1M2UxNTJkOGM2MzNkNjUzYjBhNTRkNDEyNzM0NGY0MDkyOWI3NjMKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IFNlcCAxMCAxOTo0Mzo1NiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9zb2NrZXQuYyBiL25ldC9zb2NrZXQuYwppbmRleCBjMDVkODZlNjNhYmY3Li40Y2I4NjYyODY5ZjA5IDEwMDY0NAotLS0gYS9uZXQvc29ja2V0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NvY2tldC5jCkBAIC0xODUxLDEwICYjNDM7MTg1MSw3IEBAIGludCBfX3N5c19zb2NrZXRwYWlyKGludCBmYW1pbHksIGludCB0eXBlLCBpbnQgcHJvdG9jb2wsIGludCBfX3VzZXIgKnVzb2NrdmVjKQogCWlmIChTT0NLX05PTkJMT0NLICE9IE9fTk9OQkxPQ0sgJmFtcDsmYW1wOyAoZmxhZ3MgJmFtcDsgU09DS19OT05CTE9DSykpCiAJCWZsYWdzID0gKGZsYWdzICZhbXA7IH5TT0NLX05PTkJMT0NLKSB8IE9fTk9OQkxPQ0s7CiAKLQkvKgotCSAqIHJlc2VydmUgZGVzY3JpcHRvcnMgYW5kIG1ha2Ugc3VyZSB3ZSB3b24mIzM5O3QgZmFpbAotCSAqIHRvIHJldHVybiB0aGVtIHRvIHVzZXJsYW5kLgotCSAqLwomIzQzOwkvKiBSZXNlcnZlIGJvdGggZGVzY3JpcHRvcnMgYmVmb3JlIGNyZWF0aW5nIHRoZSBzb2NrZXRzLiAqLwogCWZkMSA9IGdldF91bnVzZWRfZmRfZmxhZ3MoZmxhZ3MpOwogCWlmICh1bmxpa2VseShmZDEgJmx0OyAwKSkKIAkJcmV0dXJuIGZkMTsKQEAgLTE4NjUsMTQgJiM0MzsxODYyLDYgQEAgaW50IF9fc3lzX3NvY2tldHBhaXIoaW50IGZhbWlseSwgaW50IHR5cGUsIGludCBwcm90b2NvbCwgaW50IF9fdXNlciAqdXNvY2t2ZWMpCiAJCXJldHVybiBmZDI7CiAJfQogCi0JZXJyID0gcHV0X3VzZXIoZmQxLCAmYW1wO3Vzb2NrdmVjWzBdKTsKLQlpZiAoZXJyKQotCQlnb3RvIG91dDsKLQotCWVyciA9IHB1dF91c2VyKGZkMiwgJmFtcDt1c29ja3ZlY1sxXSk7Ci0JaWYgKGVycikKLQkJZ290byBvdXQ7Ci0KIAkvKgogCSAqIE9idGFpbiB0aGUgZmlyc3Qgc29ja2V0IGFuZCBjaGVjayBpZiB0aGUgdW5kZXJseWluZyBwcm90b2NvbAogCSAqIHN1cHBvcnRzIHRoZSBzb2NrZXRwYWlyIGNhbGwuCkBAIC0xOTE2LDYgJiM0MzsxOTA1LDE2IEBAIGludCBfX3N5c19zb2NrZXRwYWlyKGludCBmYW1pbHksIGludCB0eXBlLCBpbnQgcHJvdG9jb2wsIGludCBfX3VzZXIgKnVzb2NrdmVjKQogCQlnb3RvIG91dDsKIAl9CiAKJiM0MzsJLyogUHVibGlzaCB0aGUgZGVzY3JpcHRvcnMgbm93IHRoYXQgaXQgc2hvdWxkbiYjMzk7dCBmYWlsLiAqLwomIzQzOwllcnIgPSBwdXRfdXNlcihmZDEsICZhbXA7dXNvY2t2ZWNbMF0pOwomIzQzOwlpZiAoIWVycikKJiM0MzsJCWVyciA9IHB1dF91c2VyKGZkMiwgJmFtcDt1c29ja3ZlY1sxXSk7CiYjNDM7CWlmIChlcnIpIHsKJiM0MzsJCWZwdXQobmV3ZmlsZTIpOwomIzQzOwkJZnB1dChuZXdmaWxlMSk7CiYjNDM7CQlnb3RvIG91dDsKJiM0MzsJfQomIzQzOwogCWF1ZGl0X2ZkX3BhaXIoZmQxLCBmZDIpOwogCiAJZmRfaW5zdGFsbChmZDEsIG5ld2ZpbGUxKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE5OjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0NTUKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA1MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgU29ja2V0cGFpciBEaXZlKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGNoYW5nZWQuIEZpcnN0IHRoaW5ncyBmaXJzdCwgbGV0JiMzOTtzIHRha2UgYSBsb29rIGF0IHRoZSBkaWZmLiBTcGVjaWZpY2FsbHksIEkgc2VlIGFsdGVyYXRpb25zIHRvIGBfX3N5c19zb2NrZXRwYWlyYCB3aXRoaW4gYG5ldC9zb2NrZXQuY2AuIFRoaXMgaXNuJiMzOTt0IHVuZXhwZWN0ZWQsIHNvY2tldHBhaXIgaXMgYSB0cmlja3kgZnVuY3Rpb24sIGFuZCBhbnkgbW9kaWZpY2F0aW9uIHdhcnJhbnRzIGNhcmVmdWwgc2NydXRpbnkuIE5vdywgbGV0JiMzOTtzIHpvb20gaW4gb24gYG5ldC9zb2NrZXQuY2AuIEkmIzM5O20gZ29pbmcgdG8ganVtcCBpbiBhcm91bmQgbGluZSAxODUxLiBNeSBzcGlkZXIgc2Vuc2VzIGFyZSB0aW5nbGluZywgSSBoYXZlIGEgZ29vZCBmZWVsaW5nIHRoYXQgdGhlIHN1cnJvdW5kaW5nIGNvZGUgd2lsbCBzaGVkIGxpZ2h0IG9uIHdoYXQmIzM5O3MgZHJpdmluZyB0aGlzIGNoYW5nZS4gTGV0JiMzOTtzIHNlZSB3aGF0IGludGVyZXN0aW5nIHRpZGJpdHMgYW5kIGdvdGNoYXMgYXJlIGx1cmtpbmcgaW4gdGhpcyBzZWN0aW9uIG9mIHRoZSBjb2RlYmFzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMTk6NDQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvc29ja2V0LmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxODQwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxODQwOlx0e1xuMTg0MTpcdFx0c3RydWN0IHNvY2tldCAqc29jazEsICpzb2NrMjtcbjE4NDI6XHRcdGludCBmZDEsIGZkMiwgZXJyO1xuMTg0MzpcdFx0c3RydWN0IGZpbGUgKm5ld2ZpbGUxLCAqbmV3ZmlsZTI7XG4xODQ0Olx0XHRpbnQgZmxhZ3M7XG4xODQ1Olx0XG4xODQ2Olx0XHRmbGFncyA9IHR5cGUgXHUwMDI2IH5TT0NLX1RZUEVfTUFTSztcbjE4NDc6XHRcdGlmIChmbGFncyBcdTAwMjYgfihTT0NLX0NMT0VYRUMgfCBTT0NLX05PTkJMT0NLKSlcbjE4NDg6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4xODQ5Olx0XHR0eXBlIFx1MDAyNj0gU09DS19UWVBFX01BU0s7XG4xODUwOlx0XG4xODUxOlx0XHRpZiAoU09DS19OT05CTE9DSyAhPSBPX05PTkJMT0NLIFx1MDAyNlx1MDAyNiAoZmxhZ3MgXHUwMDI2IFNPQ0tfTk9OQkxPQ0spKVxuMTg1MjpcdFx0XHRmbGFncyA9IChmbGFncyBcdTAwMjYgflNPQ0tfTk9OQkxPQ0spIHwgT19OT05CTE9DSztcbjE4NTM6XHRcbjE4NTQ6XHRcdC8qIFJlc2VydmUgYm90aCBkZXNjcmlwdG9ycyBiZWZvcmUgY3JlYXRpbmcgdGhlIHNvY2tldHMuICovXG4xODU1Olx0XHRmZDEgPSBnZXRfdW51c2VkX2ZkX2ZsYWdzKGZsYWdzKTtcbjE4NTY6XHRcdGlmICh1bmxpa2VseShmZDEgXHUwMDNjIDApKVxuMTg1NzpcdFx0XHRyZXR1cm4gZmQxO1xuMTg1ODpcdFxuMTg1OTpcdFx0ZmQyID0gZ2V0X3VudXNlZF9mZF9mbGFncyhmbGFncyk7XG4xODYwOlx0XHRpZiAodW5saWtlbHkoZmQyIFx1MDAzYyAwKSkge1xuMTg2MTpcdFx0XHRwdXRfdW51c2VkX2ZkKGZkMSk7XG4xODYyOlx0XHRcdHJldHVybiBmZDI7XG4xODYzOlx0XHR9XG4xODY0Olx0XG4xODY1Olx0XHQvKlxuMTg2NjpcdFx0ICogT2J0YWluIHRoZSBmaXJzdCBzb2NrZXQgYW5kIGNoZWNrIGlmIHRoZSB1bmRlcmx5aW5nIHByb3RvY29sXG4xODY3Olx0XHQgKiBzdXBwb3J0cyB0aGUgc29ja2V0cGFpciBjYWxsLlxuMTg2ODpcdFx0ICovXG4xODY5Olx0XG4xODcwOlx0XHRlcnIgPSBzb2NrX2NyZWF0ZShmYW1pbHksIHR5cGUsIHByb3RvY29sLCBcdTAwMjZzb2NrMSk7XG4xODcxOlx0XHRpZiAodW5saWtlbHkoZXJyIFx1MDAzYyAwKSlcbjE4NzI6XHRcdFx0Z290byBvdXQ7XG4xODczOlx0XG4xODc0Olx0XHRlcnIgPSBzb2NrX2NyZWF0ZShmYW1pbHksIHR5cGUsIHByb3RvY29sLCBcdTAwMjZzb2NrMik7XG4xODc1Olx0XHRpZiAodW5saWtlbHkoZXJyIFx1MDAzYyAwKSkge1xuMTg3NjpcdFx0XHRzb2NrX3JlbGVhc2Uoc29jazEpO1xuMTg3NzpcdFx0XHRnb3RvIG91dDtcbjE4Nzg6XHRcdH1cbjE4Nzk6XHRcbjE4ODA6XHRcdGVyciA9IHNlY3VyaXR5X3NvY2tldF9zb2NrZXRwYWlyKHNvY2sxLCBzb2NrMik7XG4xODgxOlx0XHRpZiAodW5saWtlbHkoZXJyKSkge1xuMTg4MjpcdFx0XHRzb2NrX3JlbGVhc2Uoc29jazIpO1xuMTg4MzpcdFx0XHRzb2NrX3JlbGVhc2Uoc29jazEpO1xuMTg4NDpcdFx0XHRnb3RvIG91dDtcbjE4ODU6XHRcdH1cbjE4ODY6XHRcbjE4ODc6XHRcdGVyciA9IFJFQURfT05DRShzb2NrMS1cdTAwM2VvcHMpLVx1MDAzZXNvY2tldHBhaXIoc29jazEsIHNvY2syKTtcbjE4ODg6XHRcdGlmICh1bmxpa2VseShlcnIgXHUwMDNjIDApKSB7XG4xODg5Olx0XHRcdHNvY2tfcmVsZWFzZShzb2NrMik7XG4xODkwOlx0XHRcdHNvY2tfcmVsZWFzZShzb2NrMSk7XG4xODkxOlx0XHRcdGdvdG8gb3V0O1xuMTg5MjpcdFx0fVxuMTg5MzpcdFxuMTg5NDpcdFx0bmV3ZmlsZTEgPSBzb2NrX2FsbG9jX2ZpbGUoc29jazEsIGZsYWdzLCBOVUxMKTtcbjE4OTU6XHRcdGlmIChJU19FUlIobmV3ZmlsZTEpKSB7XG4xODk2Olx0XHRcdGVyciA9IFBUUl9FUlIobmV3ZmlsZTEpO1xuMTg5NzpcdFx0XHRzb2NrX3JlbGVhc2Uoc29jazIpO1xuMTg5ODpcdFx0XHRnb3RvIG91dDtcbjE4OTk6XHRcdH1cbjE5MDA6XHRcbjE5MDE6XHRcdG5ld2ZpbGUyID0gc29ja19hbGxvY19maWxlKHNvY2syLCBmbGFncywgTlVMTCk7XG4xOTAyOlx0XHRpZiAoSVNfRVJSKG5ld2ZpbGUyKSkge1xuMTkwMzpcdFx0XHRlcnIgPSBQVFJfRVJSKG5ld2ZpbGUyKTtcbjE5MDQ6XHRcdFx0ZnB1dChuZXdmaWxlMSk7XG4xOTA1Olx0XHRcdGdvdG8gb3V0O1xuMTkwNjpcdFx0fVxuMTkwNzpcdFxuMTkwODpcdFx0LyogUHVibGlzaCB0aGUgZGVzY3JpcHRvcnMgbm93IHRoYXQgaXQgc2hvdWxkbiYjMzk7dCBmYWlsLiAqL1xuMTkwOTpcdFx0ZXJyID0gcHV0X3VzZXIoZmQxLCBcdTAwMjZ1c29ja3ZlY1swXSk7XG4xOTEwOlx0XHRpZiAoIWVycilcbjE5MTE6XHRcdFx0ZXJyID0gcHV0X3VzZXIoZmQyLCBcdTAwMjZ1c29ja3ZlY1sxXSk7XG4xOTEyOlx0XHRpZiAoZXJyKSB7XG4xOTEzOlx0XHRcdGZwdXQobmV3ZmlsZTIpO1xuMTkxNDpcdFx0XHRmcHV0KG5ld2ZpbGUxKTtcbjE5MTU6XHRcdFx0Z290byBvdXQ7XG4xOTE2Olx0XHR9XG4xOTE3Olx0XG4xOTE4Olx0XHRhdWRpdF9mZF9wYWlyKGZkMSwgZmQyKTtcbjE5MTk6XHRcbjE5MjA6XHRcdGZkX2luc3RhbGwoZmQxLCBuZXdmaWxlMSk7XG4xOTIxOlx0XHRmZF9pbnN0YWxsKGZkMiwgbmV3ZmlsZTIpO1xuMTkyMjpcdFx0cmV0dXJuIDA7XG4xOTIzOlx0XG4xOTI0Olx0b3V0OlxuMTkyNTpcdFx0cHV0X3VudXNlZF9mZChmZDIpO1xuMTkyNjpcdFx0cHV0X3VudXNlZF9mZChmZDEpO1xuMTkyNzpcdFx0cmV0dXJuIGVycjtcbjE5Mjg6XHR9XG4xOTI5Olx0XG4xOTMwOlx0U1lTQ0FMTF9ERUZJTkU0KHNvY2tldHBhaXIsIGludCwgZmFtaWx5LCBpbnQsIHR5cGUsIGludCwgcHJvdG9jb2wsXG4xOTMxOlx0XHRcdGludCBfX3VzZXIgKiwgdXNvY2t2ZWMpXG4xOTMyOlx0e1xuMTkzMzpcdFx0cmV0dXJuIF9fc3lzX3NvY2tldHBhaXIoZmFtaWx5LCB0eXBlLCBwcm90b2NvbCwgdXNvY2t2ZWMpO1xuMTkzNDpcdH1cbjE5MzU6XHRcbjE5MzY6XHRpbnQgX19zeXNfYmluZF9zb2NrZXQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKmFkZHJlc3MsXG4xOTM3Olx0XHRcdCAgICAgIGludCBhZGRybGVuKVxuMTkzODpcdHtcbjE5Mzk6XHRcdGludCBlcnI7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE5OjQ0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxMDkKCQkJCQkJCW91dHB1dDogMjEzCgkJCQkJCQl0aG91Z2h0czogNjE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBTb2NrZXRwYWlyIFBhdGNoIGFuZCBLTVNBTiBBcHBsaWNhYmlsaXR5KioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBjb3JlIGlzc3VlIGlzIHRoZSBvcmlnaW5hbCBvcmRlciBvZiBvcGVyYXRpb25zIGluIGBfX3N5c19zb2NrZXRwYWlyYC4gVGhlIG9sZCBjb2RlIHdhcyB3cml0aW5nIGZpbGUgZGVzY3JpcHRvciBudW1iZXJzIHRvIHVzZXIgc3BhY2UgKmJlZm9yZSogYWN0dWFsbHkgY29tcGxldGluZyBzb2NrZXQgY3JlYXRpb24gYW5kIGZpbGUgYWxsb2NhdGlvbiwgaW5jbHVkaW5nIGFsbCB0aGUgc2VjdXJpdHkgY2hlY2tzIGFuZCBwcm90b2NvbCBjYWxsYmFja3MuIFRoaXMgY3JlYXRlZCBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBhbmQgYSBwb3NzaWJsZSBpbmZvcm1hdGlvbiBsZWFrOiBpZiBzb21ldGhpbmcgd2VudCB3cm9uZyAqYWZ0ZXIqIGBwdXRfdXNlcmAgYnV0ICpiZWZvcmUqIHRoZSBzZXR1cCB3YXMgY29tcGxldGUsIHVzZXIgc3BhY2Ugd291bGQgaGF2ZSBvYnNlcnZlZCB0aGVzZSBwb3RlbnRpYWxseSBpbnZhbGlkIGZpbGUgZGVzY3JpcHRvcnMuIFRoZSBwYXRjaCBhaW1zIHRvIGZpeCB0aGlzLgoKTm93LCB0aGUgcGF0Y2ggbW92ZXMgdGhvc2UgYHB1dF91c2VyYCBjYWxsc+KAlHdoZXJlIHdlIHdyaXRlIHRoZSBmaWxlIGRlc2NyaXB0b3JzIHRvIHVzZXIgc3BhY2XigJR0byB0aGUgZW5kLCAqcmlnaHQqIGJlZm9yZSB3ZSBpbnN0YWxsIHRoZSBmaWxlIGRlc2NyaXB0b3JzIHVzaW5nIGBmZF9pbnN0YWxsYC4gVGhpcyBpcyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgZml4IHRvIGFkZHJlc3MgdGhpcyBmbGF3LiBFc3NlbnRpYWxseSwgaWYgYSBmYWlsdXJlIG9jY3VycywgdGhlIGNvZGUgY29ycmVjdGx5IGhhbmRsZXMgdGhpcyBhbmQgY2xlYW5zIHVwIHRoZSBuZXdseS1jcmVhdGVkIGZpbGVzIGFuZCBzb2NrZXRzLgoKTXkgbmV4dCB0YXNrIGlzIHRvIHZlcmlmeSB0aGF0IHRoaXMgY2hhbmdlIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzc3Vlcy4gTGV0JiMzOTtzIHdhbGsgdGhyb3VnaCB0aGUgdmFyaWFibGVzIGludm9sdmVkOgoKKiAgIGBmZDFgIGFuZCBgZmQyYDogVGhlc2UgYXJlIGludGVnZXJzIHJldHVybmVkIGZyb20gYGdldF91bnVzZWRfZmRfZmxhZ3MoZmxhZ3MpYC4gQ3J1Y2lhbGx5LCB0aGV5IGFyZSBjaGVja2VkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBjYWxsIGZvciBlcnJvciBjb25kaXRpb25zIGFuZCBhcmUgdGhlcmVmb3JlIGRlZmluaXRlbHkgaW5pdGlhbGl6ZWQgaW50ZWdlciB2YWx1ZXMuIFRoZSBzdWJzZXF1ZW50IGBwdXRfdXNlcmAgY2FsbHMgc2ltcGx5IHdyaXRlIHRoZXNlIGluaXRpYWxpemVkIGludGVnZXJzIHRvIHVzZXIgc3BhY2UuCgoqICAgTm8gY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2l0aCBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIGZpZWxkcyBhcmUgdXNlZC4gVGhlIHZhcmlhYmxlcyBhcmUgcHJpbWl0aXZlIHR5cGVzLCB3aGljaCBtZWFucyB0aGVyZSBhcmUgbm8gY29uY2VybnMgYWJvdXQgdW5pbml0aWFsaXplZCBzdHJ1Y3QgZmllbGRzLCBzdGFjayB2YXJpYWJsZXMsIG9yIHBvdGVudGlhbCBpbmZvcm1hdGlvbiBsZWFrcyBvZiB1bmluaXRpYWxpemVkIGRhdGEuCgpUaGlzIGlzIGFsbCBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGFuZCBJIGFtIGNvbmZpZGVudCB0aGF0IEtNU0FOIGRvZXNuJiMzOTt0IG5lZWQgdG8gYmUgY29uY2VybmVkIHdpdGggdGhpcyBwYXRjaC4gVGhpcyBjaGFuZ2Ugb25seSByZW9yZGVycyB0aGUgZXJyb3IgaGFuZGxpbmcgYW5kIHRoZSB0aW1pbmcgb2YgYHB1dF91c2VyYCBhbmQgYGZwdXRgIGNhbGxzLCBzbyB0aGlzIGRvZXNuJiMzOTt0IGludHJvZHVjZSBhbnkgbmV3IHJpc2tzLCBzdWNoIGFzIGlzc3VlcyB3aXRoIGRvdWJsZSBgZnB1dGAsIHVzZS1hZnRlci1mcmVlLCBvciB1bmluaXRpYWxpemVkIG1lbW9yeSB0aGF0IGNhbiBiZSBleHBvc2VkLiBGdXJ0aGVybW9yZSwgS0FTQU4gYW5kIHN0YW5kYXJkIGtlcm5lbCBtZWNoYW5pc21zIHdpbGwgYmUgYWJsZSB0byBjYXRjaCBhbnkgcG90ZW50aWFsIGlzc3Vlcy4KClRoZXJlZm9yZSwgc2luY2UgdGhlIHZhcmlhYmxlcyBhcmUgZXhwbGljaXRseSBpbml0aWFsaXplZCBiZWZvcmUgYmVpbmcgd3JpdHRlbiB0byB1c2VyIHNwYWNlLCBhbmQgdGhlIGNoYW5nZXMgYXJlIGxpbWl0ZWQgdG8gY29udHJvbCBmbG93IGFuZCB0aGUgdGltaW5nIG9mIGBwdXRfdXNlcmAsIEkmIzM5O3ZlIHZlcmlmaWVkIHRoYXQgdGhlIGBOZWVkc0tNU0FOYCBmbGFnIGNhbiByZW1haW4gYGZhbHNlYC4KCkdpdmVuIHRoaXMsIEkgYW0gY29tZm9ydGFibGUgd3JpdGluZyBhIGRldGFpbGVkIGFuZCBzdHJ1Y3R1cmVkIEtNU0FOUmVhc29uaW5nIGp1c3RpZnlpbmcgdGhpcyBjb25jbHVzaW9uLiBUaGUgbWFpbiBnb2FsIGhlcmUgaXMgdG8gZW5zdXJlIHRoYXQgdGhlIHVzZXIgY2FuIHVuZGVyc3RhbmQgd2h5IHRoZSBwYXRjaCBpcyBjb25zaWRlcmVkIHNhZmUgaW4gdGVybXMgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDE5OjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBfX3N5c19zb2NrZXRwYWlyYCB0byBkZWZlciBjb3B5aW5nIGZpbGUgZGVzY3JpcHRvciBudW1iZXJzIChgZmQxYCBhbmQgYGZkMmApIHRvIHVzZXJzcGFjZSAoYHVzb2NrdmVjYCkgdW50aWwgYWZ0ZXIgc29ja2V0IGNyZWF0aW9uLCBwcm90b2NvbCBzZXR1cCwgYW5kIGZpbGUgYWxsb2NhdGlvbiBoYXZlIHN1Y2NlZWRlZC5cblxuLSBUaGUgdmFsdWVzIHdyaXR0ZW4gdG8gdXNlcnNwYWNlIHZpYSBgcHV0X3VzZXJgIGFyZSBzaW1wbGUgc2NhbGFyIGludGVnZXJzIChgZmQxYCwgYGZkMmApIHJldHVybmVkIGRpcmVjdGx5IGZyb20gYGdldF91bnVzZWRfZmRfZmxhZ3MoKWAsIHdoaWNoIGFyZSBmdWxseSBpbml0aWFsaXplZCBhbmQgdmFsaWRhdGVkIHByaW9yIHRvIHVzZS5cbi0gTm8gbmV3IHVuaW5pdGlhbGl6ZWQgaGVhcCBvciBzdGFjayBidWZmZXJzLCB1bmluaXRpYWxpemVkIHN0cnVjdCBwYWRkaW5nLCBvciB1bmluaXRpYWxpemVkIHZhcmlhYmxlIHJlYWRzIGFyZSBpbnRyb2R1Y2VkLlxuLSBBbnkgcG90ZW50aWFsIHJlc291cmNlIG1hbmFnZW1lbnQgb3IgbGlmZWN5Y2xlIGJ1Z3MgKHN1Y2ggYXMgZmQvZmlsZSBjbGVhbnVwIG9yIHJlZmNvdW50aW5nIGlzc3VlcyBvbiBlcnJvciBwYXRocykgYXJlIGFkZHJlc3NlZCBieSBzdGFuZGFyZCBzYW5pdGl6ZXJzIChLQVNBTiwgcmVmY291bnQgY2hlY2tzKS5cblxuQ29uc2VxdWVudGx5LCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fc3lzX3NvY2tldHBhaXJgIHRvIGRlZmVyIGNvcHlpbmcgZmlsZSBkZXNjcmlwdG9yIG51bWJlcnMgKGBmZDFgIGFuZCBgZmQyYCkgdG8gdXNlcnNwYWNlIChgdXNvY2t2ZWNgKSB1bnRpbCBhZnRlciBzb2NrZXQgY3JlYXRpb24sIHByb3RvY29sIHNldHVwLCBhbmQgZmlsZSBhbGxvY2F0aW9uIGhhdmUgc3VjY2VlZGVkLlxuXG4tIFRoZSB2YWx1ZXMgd3JpdHRlbiB0byB1c2Vyc3BhY2UgdmlhIGBwdXRfdXNlcmAgYXJlIHNpbXBsZSBzY2FsYXIgaW50ZWdlcnMgKGBmZDFgLCBgZmQyYCkgcmV0dXJuZWQgZGlyZWN0bHkgZnJvbSBgZ2V0X3VudXNlZF9mZF9mbGFncygpYCwgd2hpY2ggYXJlIGZ1bGx5IGluaXRpYWxpemVkIGFuZCB2YWxpZGF0ZWQgcHJpb3IgdG8gdXNlLlxuLSBObyBuZXcgdW5pbml0aWFsaXplZCBoZWFwIG9yIHN0YWNrIGJ1ZmZlcnMsIHVuaW5pdGlhbGl6ZWQgc3RydWN0IHBhZGRpbmcsIG9yIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgcmVhZHMgYXJlIGludHJvZHVjZWQuXG4tIEFueSBwb3RlbnRpYWwgcmVzb3VyY2UgbWFuYWdlbWVudCBvciBsaWZlY3ljbGUgYnVncyAoc3VjaCBhcyBmZC9maWxlIGNsZWFudXAgb3IgcmVmY291bnRpbmcgaXNzdWVzIG9uIGVycm9yIHBhdGhzKSBhcmUgYWRkcmVzc2VkIGJ5IHN0YW5kYXJkIHNhbml0aXplcnMgKEtBU0FOLCByZWZjb3VudCBjaGVja3MpLlxuXG5Db25zZXF1ZW50bHksIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzLCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE5OjQzOjU3LjgxNDI2ODU5NloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MTA0Mjk5NDI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVFwiLFxuICAgIFwiVU5JWFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fc3lzX3NvY2tldHBhaXJcIixcbiAgICBcInVuaXhfc29ja2V0cGFpclwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fc3lzX3NvY2tldHBhaXJgIHRvIGRlZmVyIGNvcHlpbmcgZmlsZSBkZXNjcmlwdG9yIG51bWJlcnMgKGBmZDFgIGFuZCBgZmQyYCkgdG8gdXNlcnNwYWNlIChgdXNvY2t2ZWNgKSB1bnRpbCBhZnRlciBzb2NrZXQgY3JlYXRpb24sIHByb3RvY29sIHNldHVwLCBhbmQgZmlsZSBhbGxvY2F0aW9uIGhhdmUgc3VjY2VlZGVkLlxcblxcbi0gVGhlIHZhbHVlcyB3cml0dGVuIHRvIHVzZXJzcGFjZSB2aWEgYHB1dF91c2VyYCBhcmUgc2ltcGxlIHNjYWxhciBpbnRlZ2VycyAoYGZkMWAsIGBmZDJgKSByZXR1cm5lZCBkaXJlY3RseSBmcm9tIGBnZXRfdW51c2VkX2ZkX2ZsYWdzKClgLCB3aGljaCBhcmUgZnVsbHkgaW5pdGlhbGl6ZWQgYW5kIHZhbGlkYXRlZCBwcmlvciB0byB1c2UuXFxuLSBObyBuZXcgdW5pbml0aWFsaXplZCBoZWFwIG9yIHN0YWNrIGJ1ZmZlcnMsIHVuaW5pdGlhbGl6ZWQgc3RydWN0IHBhZGRpbmcsIG9yIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgcmVhZHMgYXJlIGludHJvZHVjZWQuXFxuLSBBbnkgcG90ZW50aWFsIHJlc291cmNlIG1hbmFnZW1lbnQgb3IgbGlmZWN5Y2xlIGJ1Z3MgKHN1Y2ggYXMgZmQvZmlsZSBjbGVhbnVwIG9yIHJlZmNvdW50aW5nIGlzc3VlcyBvbiBlcnJvciBwYXRocykgYXJlIGFkZHJlc3NlZCBieSBzdGFuZGFyZCBzYW5pdGl6ZXJzIChLQVNBTiwgcmVmY291bnQgY2hlY2tzKS5cXG5cXG5Db25zZXF1ZW50bHksIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzLCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgZXJyb3IgaGFuZGxpbmcgYW5kIGRlc2NyaXB0b3IgaW5zdGFsbGF0aW9uIGluIF9fc3lzX3NvY2tldHBhaXIoKSBieSBkZWZlcnJpbmcgcHV0X3VzZXIoKSB1bnRpbCBhZnRlciBzb2NrZXQgYW5kIGZpbGUgYWxsb2NhdGlvbiwgYW5kIGFkZGluZyBmcHV0KCkgY2xlYW51cCBpZiBwdWJsaXNoaW5nIHRvIHVzZXIgc3BhY2UgZmFpbHMuIFRoaXMgYWZmZWN0cyBjb3JlIG5ldHdvcmtpbmcgc3lzY2FsbCBoYW5kbGluZyBhbmQgcmVzb3VyY2UgbWFuYWdlbWVudCwgd2hpY2ggaXMgZnVsbHkgcmVhY2hhYmxlIGFuZCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxOTo0Mzo1Ny44MTQyNzQ2NDdaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYxMDg5MDkwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDU1M2UxNTJkOGM2MzNkNjUzYjBhNTRkNDEyNzM0NGY0MDkyOWI3NjNcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBTZXAgMTAgMTk6NDM6NTYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L3NvY2tldC5jIGIvbmV0L3NvY2tldC5jXFxuaW5kZXggYzA1ZDg2ZTYzYWJmNy4uNGNiODY2Mjg2OWYwOSAxMDA2NDRcXG4tLS0gYS9uZXQvc29ja2V0LmNcXG4rKysgYi9uZXQvc29ja2V0LmNcXG5AQCAtMTg1MSwxMCArMTg1MSw3IEBAIGludCBfX3N5c19zb2NrZXRwYWlyKGludCBmYW1pbHksIGludCB0eXBlLCBpbnQgcHJvdG9jb2wsIGludCBfX3VzZXIgKnVzb2NrdmVjKVxcbiBcXHRpZiAoU09DS19OT05CTE9DSyAhPSBPX05PTkJMT0NLIFxcdTAwMjZcXHUwMDI2IChmbGFncyBcXHUwMDI2IFNPQ0tfTk9OQkxPQ0spKVxcbiBcXHRcXHRmbGFncyA9IChmbGFncyBcXHUwMDI2IH5TT0NLX05PTkJMT0NLKSB8IE9fTk9OQkxPQ0s7XFxuIFxcbi1cXHQvKlxcbi1cXHQgKiByZXNlcnZlIGRlc2NyaXB0b3JzIGFuZCBtYWtlIHN1cmUgd2Ugd29uJ3QgZmFpbFxcbi1cXHQgKiB0byByZXR1cm4gdGhlbSB0byB1c2VybGFuZC5cXG4tXFx0ICovXFxuK1xcdC8qIFJlc2VydmUgYm90aCBkZXNjcmlwdG9ycyBiZWZvcmUgY3JlYXRpbmcgdGhlIHNvY2tldHMuICovXFxuIFxcdGZkMSA9IGdldF91bnVzZWRfZmRfZmxhZ3MoZmxhZ3MpO1xcbiBcXHRpZiAodW5saWtlbHkoZmQxIFxcdTAwM2MgMCkpXFxuIFxcdFxcdHJldHVybiBmZDE7XFxuQEAgLTE4NjUsMTQgKzE4NjIsNiBAQCBpbnQgX19zeXNfc29ja2V0cGFpcihpbnQgZmFtaWx5LCBpbnQgdHlwZSwgaW50IHByb3RvY29sLCBpbnQgX191c2VyICp1c29ja3ZlYylcXG4gXFx0XFx0cmV0dXJuIGZkMjtcXG4gXFx0fVxcbiBcXG4tXFx0ZXJyID0gcHV0X3VzZXIoZmQxLCBcXHUwMDI2dXNvY2t2ZWNbMF0pO1xcbi1cXHRpZiAoZXJyKVxcbi1cXHRcXHRnb3RvIG91dDtcXG4tXFxuLVxcdGVyciA9IHB1dF91c2VyKGZkMiwgXFx1MDAyNnVzb2NrdmVjWzFdKTtcXG4tXFx0aWYgKGVycilcXG4tXFx0XFx0Z290byBvdXQ7XFxuLVxcbiBcXHQvKlxcbiBcXHQgKiBPYnRhaW4gdGhlIGZpcnN0IHNvY2tldCBhbmQgY2hlY2sgaWYgdGhlIHVuZGVybHlpbmcgcHJvdG9jb2xcXG4gXFx0ICogc3VwcG9ydHMgdGhlIHNvY2tldHBhaXIgY2FsbC5cXG5AQCAtMTkxNiw2ICsxOTA1LDE2IEBAIGludCBfX3N5c19zb2NrZXRwYWlyKGludCBmYW1pbHksIGludCB0eXBlLCBpbnQgcHJvdG9jb2wsIGludCBfX3VzZXIgKnVzb2NrdmVjKVxcbiBcXHRcXHRnb3RvIG91dDtcXG4gXFx0fVxcbiBcXG4rXFx0LyogUHVibGlzaCB0aGUgZGVzY3JpcHRvcnMgbm93IHRoYXQgaXQgc2hvdWxkbid0IGZhaWwuICovXFxuK1xcdGVyciA9IHB1dF91c2VyKGZkMSwgXFx1MDAyNnVzb2NrdmVjWzBdKTtcXG4rXFx0aWYgKCFlcnIpXFxuK1xcdFxcdGVyciA9IHB1dF91c2VyKGZkMiwgXFx1MDAyNnVzb2NrdmVjWzFdKTtcXG4rXFx0aWYgKGVycikge1xcbitcXHRcXHRmcHV0KG5ld2ZpbGUyKTtcXG4rXFx0XFx0ZnB1dChuZXdmaWxlMSk7XFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXHR9XFxuK1xcbiBcXHRhdWRpdF9mZF9wYWlyKGZkMSwgZmQyKTtcXG4gXFxuIFxcdGZkX2luc3RhbGwoZmQxLCBuZXdmaWxlMSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE5OjQzOjU4LjQyNjIxOTU0N1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImNvcmUiLCJEdXJhdGlvbiI6MzU2NTA4OTgxMjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUXCIsXG4gICAgXCJVTklYXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19zeXNfc29ja2V0cGFpclwiLFxuICAgIFwidW5peF9zb2NrZXRwYWlyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgZXJyb3IgaGFuZGxpbmcgYW5kIGRlc2NyaXB0b3IgaW5zdGFsbGF0aW9uIGluIF9fc3lzX3NvY2tldHBhaXIoKSBieSBkZWZlcnJpbmcgcHV0X3VzZXIoKSB1bnRpbCBhZnRlciBzb2NrZXQgYW5kIGZpbGUgYWxsb2NhdGlvbiwgYW5kIGFkZGluZyBmcHV0KCkgY2xlYW51cCBpZiBwdWJsaXNoaW5nIHRvIHVzZXIgc3BhY2UgZmFpbHMuIFRoaXMgYWZmZWN0cyBjb3JlIG5ldHdvcmtpbmcgc3lzY2FsbCBoYW5kbGluZyBhbmQgcmVzb3VyY2UgbWFuYWdlbWVudCwgd2hpY2ggaXMgZnVsbHkgcmVhY2hhYmxlIGFuZCB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDU1M2UxNTJkOGM2MzNkNjUzYjBhNTRkNDEyNzM0NGY0MDkyOWI3NjNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IFNlcCAxMCAxOTo0Mzo1NiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zb2NrZXQuYyBiL25ldC9zb2NrZXQuY1xuaW5kZXggYzA1ZDg2ZTYzYWJmNy4uNGNiODY2Mjg2OWYwOSAxMDA2NDRcbi0tLSBhL25ldC9zb2NrZXQuY1xuKysrIGIvbmV0L3NvY2tldC5jXG5AQCAtMTg1MSwxMCArMTg1MSw3IEBAIGludCBfX3N5c19zb2NrZXRwYWlyKGludCBmYW1pbHksIGludCB0eXBlLCBpbnQgcHJvdG9jb2wsIGludCBfX3VzZXIgKnVzb2NrdmVjKVxuIFx0aWYgKFNPQ0tfTk9OQkxPQ0sgIT0gT19OT05CTE9DSyBcdTAwMjZcdTAwMjYgKGZsYWdzIFx1MDAyNiBTT0NLX05PTkJMT0NLKSlcbiBcdFx0ZmxhZ3MgPSAoZmxhZ3MgXHUwMDI2IH5TT0NLX05PTkJMT0NLKSB8IE9fTk9OQkxPQ0s7XG4gXG4tXHQvKlxuLVx0ICogcmVzZXJ2ZSBkZXNjcmlwdG9ycyBhbmQgbWFrZSBzdXJlIHdlIHdvbid0IGZhaWxcbi1cdCAqIHRvIHJldHVybiB0aGVtIHRvIHVzZXJsYW5kLlxuLVx0ICovXG4rXHQvKiBSZXNlcnZlIGJvdGggZGVzY3JpcHRvcnMgYmVmb3JlIGNyZWF0aW5nIHRoZSBzb2NrZXRzLiAqL1xuIFx0ZmQxID0gZ2V0X3VudXNlZF9mZF9mbGFncyhmbGFncyk7XG4gXHRpZiAodW5saWtlbHkoZmQxIFx1MDAzYyAwKSlcbiBcdFx0cmV0dXJuIGZkMTtcbkBAIC0xODY1LDE0ICsxODYyLDYgQEAgaW50IF9fc3lzX3NvY2tldHBhaXIoaW50IGZhbWlseSwgaW50IHR5cGUsIGludCBwcm90b2NvbCwgaW50IF9fdXNlciAqdXNvY2t2ZWMpXG4gXHRcdHJldHVybiBmZDI7XG4gXHR9XG4gXG4tXHRlcnIgPSBwdXRfdXNlcihmZDEsIFx1MDAyNnVzb2NrdmVjWzBdKTtcbi1cdGlmIChlcnIpXG4tXHRcdGdvdG8gb3V0O1xuLVxuLVx0ZXJyID0gcHV0X3VzZXIoZmQyLCBcdTAwMjZ1c29ja3ZlY1sxXSk7XG4tXHRpZiAoZXJyKVxuLVx0XHRnb3RvIG91dDtcbi1cbiBcdC8qXG4gXHQgKiBPYnRhaW4gdGhlIGZpcnN0IHNvY2tldCBhbmQgY2hlY2sgaWYgdGhlIHVuZGVybHlpbmcgcHJvdG9jb2xcbiBcdCAqIHN1cHBvcnRzIHRoZSBzb2NrZXRwYWlyIGNhbGwuXG5AQCAtMTkxNiw2ICsxOTA1LDE2IEBAIGludCBfX3N5c19zb2NrZXRwYWlyKGludCBmYW1pbHksIGludCB0eXBlLCBpbnQgcHJvdG9jb2wsIGludCBfX3VzZXIgKnVzb2NrdmVjKVxuIFx0XHRnb3RvIG91dDtcbiBcdH1cbiBcbitcdC8qIFB1Ymxpc2ggdGhlIGRlc2NyaXB0b3JzIG5vdyB0aGF0IGl0IHNob3VsZG4ndCBmYWlsLiAqL1xuK1x0ZXJyID0gcHV0X3VzZXIoZmQxLCBcdTAwMjZ1c29ja3ZlY1swXSk7XG4rXHRpZiAoIWVycilcbitcdFx0ZXJyID0gcHV0X3VzZXIoZmQyLCBcdTAwMjZ1c29ja3ZlY1sxXSk7XG4rXHRpZiAoZXJyKSB7XG4rXHRcdGZwdXQobmV3ZmlsZTIpO1xuK1x0XHRmcHV0KG5ld2ZpbGUxKTtcbitcdFx0Z290byBvdXQ7XG4rXHR9XG4rXG4gXHRhdWRpdF9mZF9wYWlyKGZkMSwgZmQyKTtcbiBcbiBcdGZkX2luc3RhbGwoZmQxLCBuZXdmaWxlMSk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxOTo0Mzo1OC40MjYyMjI0NDdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoxMjQwMzY4MDAyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipEaXZpbmcgaW50byB0aGUgU29ja2V0cGFpciBJbXBsZW1lbnRhdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIHBhdGNoLCBhbmQgdGhlIGJlc3Qgd2F5IHRvIGRvIHRoYXQsIGFzIGFsd2F5cywgaXMgdG8gZ2V0IGludG8gdGhlIGNvZGUgaXRzZWxmLiBNeSBpbml0aWFsIG1vdmUgd2lsbCBiZSB0byBleGFtaW5lIHRoZSBgbmV0L3NvY2tldC5jYCBmaWxlLiBTcGVjaWZpY2FsbHksIEknbSB0YXJnZXRpbmcgdGhlIHZpY2luaXR5IG9mIGxpbmUgMTg1MSwgaG9waW5nIHRvIHVuY292ZXIgdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kLCBjcnVjaWFsbHksIGdhaW4gYSBjb250ZXh0IGZvciB0aGUgYF9fc3lzX3NvY2tldHBhaXJgIGZ1bmN0aW9uLiBVbmRlcnN0YW5kaW5nIGl0cyBpbW1lZGlhdGUgcHVycG9zZSBhbmQgdXNhZ2Ugd2l0aGluIHRoYXQgc3BlY2lmaWMgYXJlYSBvZiBgbmV0L3NvY2tldC5jYCB3aWxsIGdpdmUgbWUgYSBzb2xpZCBmb3VuZGF0aW9uIGZvciBldmFsdWF0aW5nIHRoZSBwYXRjaCdzIGltcGFjdC4gSSB3YW50IHRvIHNlZSBob3cgaXQncyBiZWluZyBjYWxsZWQsIHdoYXQgYXJndW1lbnRzIGl0J3MgcmVjZWl2aW5nLCBhbmQgd2hhdCB0aGUgb3ZlcmFsbCBmbG93IGxvb2tzIGxpa2UuIFRoaXMgaW5pdGlhbCByZWFkaW5nIHdpbGwgaW5mb3JtIG15IG5leHQgc3RlcHMsIGFsbG93aW5nIG1lIHRvIGZvY3VzIG9uIHRoZSBrZXkgYXJlYXMgdGhhdCBhcmUgcmVsZXZhbnQgdG8gdGhpcyBjaGFuZ2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMyNDMsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE5OjQ0OjEwLjgyOTkwNzY4NloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1NjAxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc29ja2V0LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTg0MCxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjE4NDA6XFx0e1xcbjE4NDE6XFx0XFx0c3RydWN0IHNvY2tldCAqc29jazEsICpzb2NrMjtcXG4xODQyOlxcdFxcdGludCBmZDEsIGZkMiwgZXJyO1xcbjE4NDM6XFx0XFx0c3RydWN0IGZpbGUgKm5ld2ZpbGUxLCAqbmV3ZmlsZTI7XFxuMTg0NDpcXHRcXHRpbnQgZmxhZ3M7XFxuMTg0NTpcXHRcXG4xODQ2OlxcdFxcdGZsYWdzID0gdHlwZSBcXHUwMDI2IH5TT0NLX1RZUEVfTUFTSztcXG4xODQ3OlxcdFxcdGlmIChmbGFncyBcXHUwMDI2IH4oU09DS19DTE9FWEVDIHwgU09DS19OT05CTE9DSykpXFxuMTg0ODpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4xODQ5OlxcdFxcdHR5cGUgXFx1MDAyNj0gU09DS19UWVBFX01BU0s7XFxuMTg1MDpcXHRcXG4xODUxOlxcdFxcdGlmIChTT0NLX05PTkJMT0NLICE9IE9fTk9OQkxPQ0sgXFx1MDAyNlxcdTAwMjYgKGZsYWdzIFxcdTAwMjYgU09DS19OT05CTE9DSykpXFxuMTg1MjpcXHRcXHRcXHRmbGFncyA9IChmbGFncyBcXHUwMDI2IH5TT0NLX05PTkJMT0NLKSB8IE9fTk9OQkxPQ0s7XFxuMTg1MzpcXHRcXG4xODU0OlxcdFxcdC8qIFJlc2VydmUgYm90aCBkZXNjcmlwdG9ycyBiZWZvcmUgY3JlYXRpbmcgdGhlIHNvY2tldHMuICovXFxuMTg1NTpcXHRcXHRmZDEgPSBnZXRfdW51c2VkX2ZkX2ZsYWdzKGZsYWdzKTtcXG4xODU2OlxcdFxcdGlmICh1bmxpa2VseShmZDEgXFx1MDAzYyAwKSlcXG4xODU3OlxcdFxcdFxcdHJldHVybiBmZDE7XFxuMTg1ODpcXHRcXG4xODU5OlxcdFxcdGZkMiA9IGdldF91bnVzZWRfZmRfZmxhZ3MoZmxhZ3MpO1xcbjE4NjA6XFx0XFx0aWYgKHVubGlrZWx5KGZkMiBcXHUwMDNjIDApKSB7XFxuMTg2MTpcXHRcXHRcXHRwdXRfdW51c2VkX2ZkKGZkMSk7XFxuMTg2MjpcXHRcXHRcXHRyZXR1cm4gZmQyO1xcbjE4NjM6XFx0XFx0fVxcbjE4NjQ6XFx0XFxuMTg2NTpcXHRcXHQvKlxcbjE4NjY6XFx0XFx0ICogT2J0YWluIHRoZSBmaXJzdCBzb2NrZXQgYW5kIGNoZWNrIGlmIHRoZSB1bmRlcmx5aW5nIHByb3RvY29sXFxuMTg2NzpcXHRcXHQgKiBzdXBwb3J0cyB0aGUgc29ja2V0cGFpciBjYWxsLlxcbjE4Njg6XFx0XFx0ICovXFxuMTg2OTpcXHRcXG4xODcwOlxcdFxcdGVyciA9IHNvY2tfY3JlYXRlKGZhbWlseSwgdHlwZSwgcHJvdG9jb2wsIFxcdTAwMjZzb2NrMSk7XFxuMTg3MTpcXHRcXHRpZiAodW5saWtlbHkoZXJyIFxcdTAwM2MgMCkpXFxuMTg3MjpcXHRcXHRcXHRnb3RvIG91dDtcXG4xODczOlxcdFxcbjE4NzQ6XFx0XFx0ZXJyID0gc29ja19jcmVhdGUoZmFtaWx5LCB0eXBlLCBwcm90b2NvbCwgXFx1MDAyNnNvY2syKTtcXG4xODc1OlxcdFxcdGlmICh1bmxpa2VseShlcnIgXFx1MDAzYyAwKSkge1xcbjE4NzY6XFx0XFx0XFx0c29ja19yZWxlYXNlKHNvY2sxKTtcXG4xODc3OlxcdFxcdFxcdGdvdG8gb3V0O1xcbjE4Nzg6XFx0XFx0fVxcbjE4Nzk6XFx0XFxuMTg4MDpcXHRcXHRlcnIgPSBzZWN1cml0eV9zb2NrZXRfc29ja2V0cGFpcihzb2NrMSwgc29jazIpO1xcbjE4ODE6XFx0XFx0aWYgKHVubGlrZWx5KGVycikpIHtcXG4xODgyOlxcdFxcdFxcdHNvY2tfcmVsZWFzZShzb2NrMik7XFxuMTg4MzpcXHRcXHRcXHRzb2NrX3JlbGVhc2Uoc29jazEpO1xcbjE4ODQ6XFx0XFx0XFx0Z290byBvdXQ7XFxuMTg4NTpcXHRcXHR9XFxuMTg4NjpcXHRcXG4xODg3OlxcdFxcdGVyciA9IFJFQURfT05DRShzb2NrMS1cXHUwMDNlb3BzKS1cXHUwMDNlc29ja2V0cGFpcihzb2NrMSwgc29jazIpO1xcbjE4ODg6XFx0XFx0aWYgKHVubGlrZWx5KGVyciBcXHUwMDNjIDApKSB7XFxuMTg4OTpcXHRcXHRcXHRzb2NrX3JlbGVhc2Uoc29jazIpO1xcbjE4OTA6XFx0XFx0XFx0c29ja19yZWxlYXNlKHNvY2sxKTtcXG4xODkxOlxcdFxcdFxcdGdvdG8gb3V0O1xcbjE4OTI6XFx0XFx0fVxcbjE4OTM6XFx0XFxuMTg5NDpcXHRcXHRuZXdmaWxlMSA9IHNvY2tfYWxsb2NfZmlsZShzb2NrMSwgZmxhZ3MsIE5VTEwpO1xcbjE4OTU6XFx0XFx0aWYgKElTX0VSUihuZXdmaWxlMSkpIHtcXG4xODk2OlxcdFxcdFxcdGVyciA9IFBUUl9FUlIobmV3ZmlsZTEpO1xcbjE4OTc6XFx0XFx0XFx0c29ja19yZWxlYXNlKHNvY2syKTtcXG4xODk4OlxcdFxcdFxcdGdvdG8gb3V0O1xcbjE4OTk6XFx0XFx0fVxcbjE5MDA6XFx0XFxuMTkwMTpcXHRcXHRuZXdmaWxlMiA9IHNvY2tfYWxsb2NfZmlsZShzb2NrMiwgZmxhZ3MsIE5VTEwpO1xcbjE5MDI6XFx0XFx0aWYgKElTX0VSUihuZXdmaWxlMikpIHtcXG4xOTAzOlxcdFxcdFxcdGVyciA9IFBUUl9FUlIobmV3ZmlsZTIpO1xcbjE5MDQ6XFx0XFx0XFx0ZnB1dChuZXdmaWxlMSk7XFxuMTkwNTpcXHRcXHRcXHRnb3RvIG91dDtcXG4xOTA2OlxcdFxcdH1cXG4xOTA3OlxcdFxcbjE5MDg6XFx0XFx0LyogUHVibGlzaCB0aGUgZGVzY3JpcHRvcnMgbm93IHRoYXQgaXQgc2hvdWxkbid0IGZhaWwuICovXFxuMTkwOTpcXHRcXHRlcnIgPSBwdXRfdXNlcihmZDEsIFxcdTAwMjZ1c29ja3ZlY1swXSk7XFxuMTkxMDpcXHRcXHRpZiAoIWVycilcXG4xOTExOlxcdFxcdFxcdGVyciA9IHB1dF91c2VyKGZkMiwgXFx1MDAyNnVzb2NrdmVjWzFdKTtcXG4xOTEyOlxcdFxcdGlmIChlcnIpIHtcXG4xOTEzOlxcdFxcdFxcdGZwdXQobmV3ZmlsZTIpO1xcbjE5MTQ6XFx0XFx0XFx0ZnB1dChuZXdmaWxlMSk7XFxuMTkxNTpcXHRcXHRcXHRnb3RvIG91dDtcXG4xOTE2OlxcdFxcdH1cXG4xOTE3OlxcdFxcbjE5MTg6XFx0XFx0YXVkaXRfZmRfcGFpcihmZDEsIGZkMik7XFxuMTkxOTpcXHRcXG4xOTIwOlxcdFxcdGZkX2luc3RhbGwoZmQxLCBuZXdmaWxlMSk7XFxuMTkyMTpcXHRcXHRmZF9pbnN0YWxsKGZkMiwgbmV3ZmlsZTIpO1xcbjE5MjI6XFx0XFx0cmV0dXJuIDA7XFxuMTkyMzpcXHRcXG4xOTI0OlxcdG91dDpcXG4xOTI1OlxcdFxcdHB1dF91bnVzZWRfZmQoZmQyKTtcXG4xOTI2OlxcdFxcdHB1dF91bnVzZWRfZmQoZmQxKTtcXG4xOTI3OlxcdFxcdHJldHVybiBlcnI7XFxuMTkyODpcXHR9XFxuMTkyOTpcXHRcXG4xOTMwOlxcdFNZU0NBTExfREVGSU5FNChzb2NrZXRwYWlyLCBpbnQsIGZhbWlseSwgaW50LCB0eXBlLCBpbnQsIHByb3RvY29sLFxcbjE5MzE6XFx0XFx0XFx0aW50IF9fdXNlciAqLCB1c29ja3ZlYylcXG4xOTMyOlxcdHtcXG4xOTMzOlxcdFxcdHJldHVybiBfX3N5c19zb2NrZXRwYWlyKGZhbWlseSwgdHlwZSwgcHJvdG9jb2wsIHVzb2NrdmVjKTtcXG4xOTM0OlxcdH1cXG4xOTM1OlxcdFxcbjE5MzY6XFx0aW50IF9fc3lzX2JpbmRfc29ja2V0KHN0cnVjdCBzb2NrZXQgKnNvY2ssIHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlICphZGRyZXNzLFxcbjE5Mzc6XFx0XFx0XFx0ICAgICAgaW50IGFkZHJsZW4pXFxuMTkzODpcXHR7XFxuMTkzOTpcXHRcXHRpbnQgZXJyO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxOTo0NDoxMC44MzAxNjY3NDZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjozODM3MDI5NDE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFNvY2tldHBhaXIgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEl0IGxvb2tzIGxpa2Ugd2UgaGF2ZSBhIHBhdGNoIHRoYXQncyB0d2Vha2luZyB0aGUgYF9fc3lzX3NvY2tldHBhaXJgIGZ1bmN0aW9uIHdpdGhpbiBgbmV0L3NvY2tldC5jYC4gTXkgaW5pdGlhbCBvYnNlcnZhdGlvbiBpcyB0aGF0IHRoZXkndmUgY2hhbmdlZCB0aGUgcGxhY2VtZW50IG9mIHRob3NlIGBwdXRfdXNlcmAgY2FsbHMgdGhhdCB3cml0ZSBmaWxlIGRlc2NyaXB0b3JzIChgZmQxYCBhbmQgYGZkMmApIHRvIHVzZXIgc3BhY2UuIEl0IHVzZWQgdG8gYmUgKmJlZm9yZSogdGhlIHNvY2tldCBmaWxlIGFsbG9jYXRpb24sIGJ1dCBub3cgaXQncyAqYWZ0ZXIqLCByaWdodCBiZWZvcmUgYXVkaXQgbG9nZ2luZyBhbmQgZmlsZSBkZXNjcmlwdG9yIGluc3RhbGxhdGlvbiwgYW5kIHRoZXJlJ3MgYSBzcGVjaWZpYyBjbGVhbnVwIHBhdGggaWYgdGhvc2UgdXNlci1zcGFjZSB3cml0ZXMgZmFpbC4gVGhpcyBpcyBjcnVjaWFsIGJlY2F1c2UgaXQgYWx0ZXJzIHRoZSBlcnJvciBoYW5kbGluZyBmbG93IHNpZ25pZmljYW50bHkuXG5cblRoZSBrZXkgcXVlc3Rpb24gaXMgYWx3YXlzOiBpcyB0aGlzIGV2ZW4gZnV6emFibGU/IEJhc2VkIG9uIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHRyaWFnZSBjcml0ZXJpYSwgdGhpcyBwYXRjaCBkZWZpbml0ZWx5IGxvb2tzIHByb21pc2luZy5cblxuKiAgICoqUmVhY2hhYmlsaXR5PyoqIEFic29sdXRlbHkuIGBfX3N5c19zb2NrZXRwYWlyYCBpcyBkaXJlY3RseSBpbnZva2VkIGJ5IHRoZSBzdGFuZGFyZCBgc3lzX3NvY2tldHBhaXJgIHN5c2NhbGwsIHdoaWNoIGlzIHBhcnQgb2YgdGhlIGNvcmUgTGludXggbmV0d29ya2luZyBzdGFjayBpbiBgbmV0L3NvY2tldC5jYC4gVGhpcyBtZWFucyBpdCdzIGVhc2lseSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UsIG1ha2luZyBpdCBhIHByaW1lIHRhcmdldCBmb3IgZnV6emluZyBpbiBzdGFuZGFyZCBlbnZpcm9ubWVudHMgbGlrZSBRRU1VIG9yIEdDRS5cblxuKiAgICoqQ29yZSBTdWJzeXN0ZW1zPyoqIFRoaXMgaXMgaW4gY29yZSBuZXR3b3JraW5nIGNvZGUuIFRoaXMgaXMgZXhhY3RseSB0aGUga2luZCBvZiBjcml0aWNhbCBzdWJzeXN0ZW0gd2hlcmUgd2UgbmVlZCB0byBsb29rIGZvciB2dWxuZXJhYmlsaXRpZXMuXG5cbiogICAqKldvcnRoIEZ1enppbmc/KiogWWVzLCB3aXRob3V0IGEgZG91YnQuIFRoZSBjb21iaW5hdGlvbiBvZiBpdHMgY2VudHJhbCBsb2NhdGlvbiwgdGhlIG1vZGlmaWNhdGlvbiB0byB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aCwgYW5kIHRoYXQgbmV3IGNsZWFudXAgcHJvY2VkdXJlIG1ha2VzIGl0IGEgY29tcGVsbGluZyBjYW5kaWRhdGUuXG5cbk5vdywgSSBuZWVkIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIHJlcXVpcmVtZW50cy4gSSdtIGdvaW5nIHRvIGRpZyBpbnRvIGBuZXQvS2NvbmZpZ2Agb3IgYG5ldC9NYWtlZmlsZWAgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMga2VybmVsIGNvbmZpZ3VyYXRpb25zIG9yIGJ1aWxkIGZsYWdzIHRoYXQgbmVlZCB0byBiZSBlbmFibGVkIGZvciBgbmV0L3NvY2tldC5jYCBvciwgbW9yZSBzcGVjaWZpY2FsbHksIGBzb2NrZXRwYWlyYC4gSXTigJlzIGltcG9ydGFudCB0byBtYWtlIHN1cmUgd2UgaGF2ZSBhIGZ1bGx5IGZ1bmN0aW9uYWwgc2V0dXAgdGhhdCdzIGdvaW5nIHRvIGFsbG93IHRoaXMgY29kZSB0byBydW4gYW5kIHRvIG1heGltaXplIHRoZSBwcm9iYWJpbGl0eSBvZiBmdXp6aW5nIHN1Y2Nlc3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ5MDAsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMzUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxOTo0NDoxNC42NjcxOTgwN1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDAwMzQ4MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic29ja2V0XFxcXC5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L01ha2VmaWxlLTgtXFxubmV0L01ha2VmaWxlOjk6b2JqLXlcXHRcXHRcXHRcXHQ6PSBkZXZyZXMubyBzb2NrZXQubyBjb3JlL1xcbm5ldC9NYWtlZmlsZS0xMC1cXG4tLVxcbm5ldC9jYW4vajE5MzkvTWFrZWZpbGU9NT1jYW4tajE5Mzktb2JqcyA6PSBcXFxcXFxuLS1cXG5uZXQvY2FuL2oxOTM5L01ha2VmaWxlLTgtXFx0bWFpbi5vIFxcXFxcXG5uZXQvY2FuL2oxOTM5L01ha2VmaWxlOjk6XFx0c29ja2V0Lm8gXFxcXFxcbm5ldC9jYW4vajE5MzkvTWFrZWZpbGUtMTAtXFx0dHJhbnNwb3J0Lm9cXG4tLVxcbm5ldC9pZWVlODAyMTU0L01ha2VmaWxlPTI9b2JqLSQoQ09ORklHX0lFRUU4MDIxNTQpICs9IGllZWU4MDIxNTQub1xcbm5ldC9pZWVlODAyMTU0L01ha2VmaWxlOjM6b2JqLSQoQ09ORklHX0lFRUU4MDIxNTRfU09DS0VUKSArPSBpZWVlODAyMTU0X3NvY2tldC5vXFxubmV0L2llZWU4MDIxNTQvTWFrZWZpbGUtNC1vYmoteSArPSA2bG93cGFuL1xcbi0tXFxubmV0L2llZWU4MDIxNTQvTWFrZWZpbGU9Nj1pZWVlODAyMTU0LXkgOj0gbmV0bGluay5vIG5sLW1hYy5vIG5sLXBoeS5vIG5sX3BvbGljeS5vIGNvcmUubyBcXFxcXFxubmV0L2llZWU4MDIxNTQvTWFrZWZpbGUtNy0gICAgICAgICAgICAgICAgaGVhZGVyX29wcy5vIHN5c2ZzLm8gbmw4MDIxNTQubyB0cmFjZS5vIHBhbi5vXFxubmV0L2llZWU4MDIxNTQvTWFrZWZpbGU6ODppZWVlODAyMTU0X3NvY2tldC15IDo9IHNvY2tldC5vXFxubmV0L2llZWU4MDIxNTQvTWFrZWZpbGUtOS1cXG4tLVxcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU9MTI4PW9iai0kKENPTkZJR19ORlRfRklCX05FVERFVilcXHQrPSBuZnRfZmliX25ldGRldi5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZToxMjk6b2JqLSQoQ09ORklHX05GVF9TT0NLRVQpXFx0Kz0gbmZ0X3NvY2tldC5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0xMzAtb2JqLSQoQ09ORklHX05GVF9PU0YpXFx0XFx0Kz0gbmZ0X29zZi5vXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTIyNj1vYmotJChDT05GSUdfTkVURklMVEVSX1hUX01BVENIX1NDVFApICs9IHh0X3NjdHAub1xcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGU6MjI3Om9iai0kKENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfU09DS0VUKSArPSB4dF9zb2NrZXQub1xcbm5ldC9uZXRmaWx0ZXIvTWFrZWZpbGUtMjI4LW9iai0kKENPTkZJR19ORVRGSUxURVJfWFRfTUFUQ0hfU1RBVEUpICs9IHh0X3N0YXRlLm9cXG4tLVxcbm5ldC9waG9uZXQvTWFrZWZpbGU9ND1waG9uZXQteSA6PSBcXFxcXFxuLS1cXG5uZXQvcGhvbmV0L01ha2VmaWxlLTYtXFx0cG5fbmV0bGluay5vIFxcXFxcXG5uZXQvcGhvbmV0L01ha2VmaWxlOjc6XFx0c29ja2V0Lm8gXFxcXFxcbm5ldC9waG9uZXQvTWFrZWZpbGUtOC1cXHRkYXRhZ3JhbS5vIFxcXFxcXG4tLVxcbm5ldC9zY3RwL01ha2VmaWxlPTk9c2N0cC15IDo9IHNtX3N0YXRldGFibGUubyBzbV9zdGF0ZWZ1bnMubyBzbV9zaWRlZWZmZWN0Lm8gXFxcXFxcbi0tXFxubmV0L3NjdHAvTWFrZWZpbGUtMTItXFx0ICBpbnF1ZXVlLm8gb3V0cXVldWUubyB1bHBxdWV1ZS5vIFxcXFxcXG5uZXQvc2N0cC9NYWtlZmlsZToxMzpcXHQgIHRzbm1hcC5vIGJpbmRfYWRkci5vIHNvY2tldC5vIHByaW1pdGl2ZS5vIFxcXFxcXG5uZXQvc2N0cC9NYWtlZmlsZS0xNC1cXHQgIG91dHB1dC5vIGlucHV0Lm8gZGVidWcubyBzdHJlYW0ubyBhdXRoLm8gXFxcXFxcbi0tXFxubmV0L3NvY2tldC5jPTMyNj1zdGF0aWMgc3RydWN0IGlub2RlICpzb2NrX2FsbG9jX2lub2RlKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXFxuLS1cXG5uZXQvc29ja2V0LmMtMzQxLVxcdHNpLVxcdTAwM2Vzb2NrZXQuZmxhZ3MgPSAwO1xcbm5ldC9zb2NrZXQuYzozNDI6XFx0c2ktXFx1MDAzZXNvY2tldC5vcHMgPSBOVUxMO1xcbm5ldC9zb2NrZXQuYy0zNDMtXFx0c2ktXFx1MDAzZXNvY2tldC5zayA9IE5VTEw7XFxuLS1cXG5uZXQvdGlwYy9NYWtlZmlsZT04PXRpcGMteVxcdCs9IGFkZHIubyBiY2FzdC5vIGJlYXJlci5vIFxcXFxcXG4tLVxcbm5ldC90aXBjL01ha2VmaWxlLTEwLVxcdCAgIG5hbWVfZGlzdHIubyAgc3Vic2NyLm8gbW9uaXRvci5vIG5hbWVfdGFibGUubyBuZXQubyAgXFxcXFxcbm5ldC90aXBjL01ha2VmaWxlOjExOlxcdCAgIG5ldGxpbmsubyBuZXRsaW5rX2NvbXBhdC5vIG5vZGUubyBzb2NrZXQubyBldGhfbWVkaWEubyBcXFxcXFxubmV0L3RpcGMvTWFrZWZpbGUtMTItXFx0ICAgdG9wc3J2Lm8gZ3JvdXAubyB0cmFjZS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE5OjQ0OjE0Ljc2NzI0MDEwOFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjIxMTkwMTg0NjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBteXNlbGY6XG5cbioqSW52ZXN0aWdhdGluZyBOZXR3b3JrIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYG5ldC9NYWtlZmlsZWAuIEkgc2VlIHNvbWUgb2JqZWN0IGRlZmluaXRpb25zIHRoYXQgYXJlIGxpa2VseSBjb25kaXRpb25hbCwgdXNpbmcgYG9iai0kKENPTkZJR19ORVQpIDo9IC4uLmAuIFRoZSBxdWVzdGlvbiBpcywgaXMgKmV2ZXJ5dGhpbmcqIHVuZGVyIGBuZXQvYCBlZmZlY3RpdmVseSBndWFyZGVkIGJ5IGBDT05GSUdfTkVUYD8gIE9yLCBhcmUgdGhlcmUgbW9yZSBmaW5lLWdyYWluZWQgZGVwZW5kZW5jaWVzIHdpdGhpbiB0aGUgYG5ldC9gIGRpcmVjdG9yeSB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZj9cblxuVG8gY2xhcmlmeSB0aGlzLCBJIHJlYWxseSBuZWVkIHRvIGNoZWNrIHRoZSByb290IGBNYWtlZmlsZWAg4oCTIHRoYXQncyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIGNvbmZpZ3VyYXRpb24gZGVjaXNpb25zLiAgQW5kLCBvZiBjb3Vyc2UsIHRoZSBgbmV0L0tjb25maWdgIGZpbGUgaXMgZ29pbmcgdG8gYmUgY3J1Y2lhbC4gVGhhdCdzIHdoZXJlIHRoZSAqYWN0dWFsKiBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGRlZmluZWQsIGFuZCB3aGVyZSBgQ09ORklHX05FVGAgaXRzZWxmIGlzIHByb2JhYmx5IGRlY2xhcmVkLiAgSSdsbCBnbyB0aGVyZSBuZXh0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIGBDT05GSUdfTkVUYCBzeW1ib2wgYW5kIHRoZSBjb21wb25lbnRzIHdpdGhpbiB0aGUgYG5ldC9gIGRpcmVjdG9yeS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjY4MSwiT3V0cHV0VG9rZW5zIjoyNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE5OjQ0OjE2Ljg4NjI2MTU0OFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3Mjg0NzgwOSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX05FVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJNYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTk6NDQ6MTYuOTU5MTE5OTk2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDg3NTUxMDgzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXM6XG5cbioqSW52ZXN0aWdhdGluZyBOZXR3b3JrIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgbWFpbiBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgZGVmaW5lZCB3aXRoaW4gdGhpcyBwcm9qZWN0LiBNeSBmaXJzdCBpbnN0aW5jdCwgZ2l2ZW4gbXkgZXhwZXJpZW5jZSB3aXRoIHNpbWlsYXIgc3lzdGVtcywgaXMgdG8gc3RhcnQgd2l0aCB0aGUgc3RhbmRhcmQgcGxhY2VzLiBUeXBpY2FsbHksIHRoZSB0b3AtbGV2ZWwgYEtjb25maWdgIGZpbGVzIGFyZSB0aGUgY2VudHJhbCByZXBvc2l0b3J5IGZvciBmZWF0dXJlIGZsYWdzIGFuZCBvcHRpb25zLCBhbmQgb2Z0ZW4gaGF2ZSBgaW5jbHVkZWAgc3RhdGVtZW50cyBmb3Igc3ViZGlyZWN0b3JpZXMuIFNvLCBJIHNob3VsZCBwcm9iYWJseSBjaGVjayB0aGUgYG5ldC9LY29uZmlnYCBmaWxlLiBUaGF0J3MgdGhlIG1vc3QgbGlrZWx5IHBsYWNlIHRvIGZpbmQgd2hhdCBJJ20gbG9va2luZyBmb3IsIHNpbmNlIGl0J3MgbG9naWNhbCB0byBoYXZlIG5ldHdvcmstc3BlY2lmaWMgY29uZmlndXJhdGlvbiB3aXRoaW4gdGhlIGBuZXRgIGRpcmVjdG9yeS5cblxuSG93ZXZlciwgc29tZXRpbWVzIHRoZSBwcm9qZWN0IGVtcGxveXMgYSBtb3JlIGZsYXQgYXBwcm9hY2ggb3IgaGFzIGl0cyBjb25maWd1cmF0aW9uIGZpbGVzIGluIGxlc3MgZXhwZWN0ZWQgbG9jYXRpb25zLiBJbiB0aG9zZSBjYXNlcywgdGhlIHJvb3QgYE1ha2VmaWxlYCBvZnRlbiBob2xkcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYnVpbGQgcHJvY2VzcyBhbmQgaG93IGRpZmZlcmVudCBwYXJ0cyBvZiB0aGUgcHJvamVjdCwgaW5jbHVkaW5nIHRoZSBgbmV0L2AgZGlyZWN0b3J5LCBhcmUgaW50ZWdyYXRlZC4gSXQgbWlnaHQgaW5jbHVkZSB2YXJpYWJsZXMgb3IgY29uZGl0aW9uYWwgbG9naWMgdGhhdCBwb2ludHMgdG8gdGhlIHJlbGV2YW50IGBLY29uZmlnYCBmaWxlcyBvciBkZWZpbmVzIHNvbWUgdG9wLWxldmVsIG5ldHdvcmsgb3B0aW9ucyBkaXJlY3RseS4gU28gSSdsbCBtYWtlIGEgbWVudGFsIG5vdGUgdG8gY2hlY2sgdGhlIHJvb3QgYE1ha2VmaWxlYCBhcyBhIGJhY2t1cCBpZiBgbmV0L0tjb25maWdgIGRvZXNuJ3QgcHJvdmlkZSBlbm91Z2ggaW5mb3JtYXRpb24sIG9yIGlmIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgbmV0d29ya2luZyBzdWJzeXN0ZW0gaXMgYmVpbmcgaW50ZWdyYXRlZCBpbnRvIHRoZSBidWlsZC4gSXQncyBhbHdheXMgZ29vZCB0byBiZSB0aG9yb3VnaCBhbmQgY29uc2lkZXIgYWxsIHRoZSBsaWtlbHkgbG9jYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTc4LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTk6NDQ6MjEuODM0NjM0Njg1WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDM2MjUzNjgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5ldC9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE5OjQ0OjIxLjkzODI2ODkzNFoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NjIyMjEwMDMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpdCB3ZW50OlxuXG4qKkV4YW1pbmluZyB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhpcyBuZXR3b3JrLXJlbGF0ZWQgZnVuY3Rpb25hbGl0eSBpcyBiZWluZyBtYW5hZ2VkIHdpdGhpbiB0aGUgYnVpbGQgc3lzdGVtLiBNeSBpbW1lZGlhdGUgaW5zdGluY3QsIGdpdmVuIHRoZSBjb250ZXh0IG9mIGtlcm5lbCBjb25maWd1cmF0aW9uLCBpcyB0byBkaXZlIGludG8gdGhlIGBLY29uZmlnYCBmaWxlcy4gVGhhdCdzIHdoZXJlIGFsbCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBkZWZpbmVkLCBhbmQgd2hlcmUgdGhlIGRlcGVuZGVuY2llcyBhbmQgcmVsYXRpb25zaGlwcyBhcmUgc3BlY2lmaWVkLiBJJ20gdGhpbmtpbmcgSSdsbCBlaXRoZXI6XG5cbiogICAqKkRpcmVjdGx5IGluc3BlY3QgYEtjb25maWdgOioqIEknbGwgc3RhcnQgYnkgb3BlbmluZyB0aGUgcmVsZXZhbnQgYEtjb25maWdgIGZpbGVzIHRvIHNlZSBpZiBJIGNhbiBmaW5kIGEgY29uZmlndXJhdGlvbiBzeW1ib2wsIGxpa2UgYENPTkZJR19ORVRgIGl0c2VsZiwgYW5kIHRyYWNlIGl0cyBkZXBlbmRlbmNpZXMsIGRlZmF1bHQgdmFsdWVzLCBhbmQgaW1wbGljYXRpb25zLiBJIG1pZ2h0IGJlIGFibGUgdG8gZmlndXJlIG91dCBob3cgbmV0d29yayBmZWF0dXJlcyBhcmUgZW5hYmxlZCwgZGlzYWJsZWQsIG9yIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQuXG5cbiogICAqKlVzZSBncmVwIGZvciBmYXN0ZXIgc2VhcmNoaW5nOioqIElmIHRoYXQgc2VlbXMgbGlrZSBhIGxvdCBvZiBodW50aW5nLCBvciBpZiBJIGtub3cgdGhlIGJ1aWxkIHN5c3RlbSBtaWdodCByZWZlciB0byB0aGUgYENPTkZJR19ORVRgIHZhcmlhYmxlIGluIGEgcGFydGljdWxhciB3YXkgKGUuZy4sIHVzaW5nIGl0IGluIGFuIG9iamVjdCBmaWxlIGRlcGVuZGVuY3kpLCB0aGVuIEknbGwgcmVhY2ggZm9yIGdyZXAuIFNwZWNpZmljYWxseSwgSSdsbCBzZWFyY2ggZm9yIHRoZSBjb21tb24gYnVpbGQgc3ludGF4IGBvYmotJChDT05GSUdfTkVUKWAgdG8gc2VlIHdoZXJlIGFuZCBob3cgdGhlIHByZXNlbmNlIG9mIHRoZSBgQ09ORklHX05FVGAgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgaW5mbHVlbmNpbmcgdGhlIGluY2x1c2lvbiBvciBleGNsdXNpb24gb2Ygb2JqZWN0IGZpbGVzLiBUaGlzIHNob3VsZCBxdWlja2x5IGxvY2F0ZSBhbnkgYnVpbGQgcnVsZXMgdGhhdCBkaXJlY3RseSBkZXBlbmQgb24gdGhlIGBDT05GSUdfTkVUYCBjb25maWd1cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MzIzLCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMTk6NDQ6MjYuNTYwNDgxNTU2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NjA4MTY4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvYmotLipuZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiS2J1aWxkXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIktidWlsZD0xMTM9b2JqLSQoQ09ORklHX1NBTVBMRVMpXFx0Kz0gc2FtcGxlcy9cXG5LYnVpbGQ6MTE0Om9iai0kKENPTkZJR19ORVQpXFx0Kz0gbmV0L1xcbktidWlsZC0xMTUtb2JqLXlcXHRcXHRcXHQrPSB2aXJ0L1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxOTo0NDoyNi42NDY1NjkyMDVaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTg1OTgxOTkyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBgc29ja2V0cGFpcmAgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBgQ09ORklHX05FVGAgYW5kIHNwZWNpZmljYWxseSB0aGUgaW1wbGljYXRpb25zIG9mIGBzb2NrZXRwYWlyYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB3aGF0ICpzcGVjaWZpYyogcHJvdG9jb2xzIGxldmVyYWdlIHRoYXQgZnVuY3Rpb24/IEl0J3MgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIGxhbmRzY2FwZS4gSSBhbHJlYWR5IGtub3cgdGhhdCBVbml4IGRvbWFpbiBzb2NrZXRzLCBjb250cm9sbGVkIGJ5IGBDT05GSUdfVU5JWGAsIGFyZSBhIG1ham9yLCBpZiBub3QgdGhlIHByaW1hcnksIGltcGxlbWVudGF0aW9uIG9mIGBzb2NrZXRwYWlyYC4gTm93LCBJIG5lZWQgdG8gZ2V0IGRvd24gdG8gYnJhc3MgdGFja3M6IEkgbmVlZCB0byB2ZXJpZnkgd2hpY2ggc29ja2V0IGZhbWlsaWVzIGFjdHVhbGx5IHByb3ZpZGUgYSBgLnNvY2tldHBhaXJgIGltcGxlbWVudGF0aW9uLCBiZWNhdXNlIHRoYXQgd2lsbCBhbGxvdyBtZSB0byBhc3Nlc3MgdGhlIGFyY2hpdGVjdHVyZSBvdmVyYWxsLiBJIHdhbnQgdG8gYnVpbGQgYSBwcm9wZXIgb3ZlcnZpZXcgb2Ygd2hhdCdzIHN1cHBvcnRlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzcyNywiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE5OjQ0OjI4LjUwNjM5MTY5OFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM1MDY5MTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlxcXFwuc29ja2V0cGFpclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9hdG0vcHZjLmM9MTA2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHB2Y19wcm90b19vcHMgPSB7XFxuLS1cXG5uZXQvYXRtL3B2Yy5jLTExMi1cXHQuY29ubmVjdCA9XFx0cHZjX2Nvbm5lY3QsXFxubmV0L2F0bS9wdmMuYzoxMTM6XFx0LnNvY2tldHBhaXIgPVxcdHNvY2tfbm9fc29ja2V0cGFpcixcXG5uZXQvYXRtL3B2Yy5jLTExNC1cXHQuYWNjZXB0ID1cXHRzb2NrX25vX2FjY2VwdCxcXG4tLVxcbm5ldC9ibHVldG9vdGgvYm5lcC9zb2NrLmM9MTY5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIGJuZXBfc29ja19vcHMgPSB7XFxuLS1cXG5uZXQvYmx1ZXRvb3RoL2JuZXAvc29jay5jLTE4My1cXHQuY29ubmVjdFxcdD0gc29ja19ub19jb25uZWN0LFxcbm5ldC9ibHVldG9vdGgvYm5lcC9zb2NrLmM6MTg0OlxcdC5zb2NrZXRwYWlyXFx0PSBzb2NrX25vX3NvY2tldHBhaXIsXFxubmV0L2JsdWV0b290aC9ibmVwL3NvY2suYy0xODUtXFx0LmFjY2VwdFxcdFxcdD0gc29ja19ub19hY2NlcHQsXFxuLS1cXG5uZXQvYmx1ZXRvb3RoL2hjaV9zb2NrLmM9MjE3Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBoY2lfc29ja19vcHMgPSB7XFxuLS1cXG5uZXQvYmx1ZXRvb3RoL2hjaV9zb2NrLmMtMjE5MC1cXHQuY29ubmVjdFxcdD0gc29ja19ub19jb25uZWN0LFxcbm5ldC9ibHVldG9vdGgvaGNpX3NvY2suYzoyMTkxOlxcdC5zb2NrZXRwYWlyXFx0PSBzb2NrX25vX3NvY2tldHBhaXIsXFxubmV0L2JsdWV0b290aC9oY2lfc29jay5jLTIxOTItXFx0LmFjY2VwdFxcdFxcdD0gc29ja19ub19hY2NlcHQsXFxuLS1cXG5uZXQvYmx1ZXRvb3RoL2hpZHAvc29jay5jPTIyMD1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBoaWRwX3NvY2tfb3BzID0ge1xcbi0tXFxubmV0L2JsdWV0b290aC9oaWRwL3NvY2suYy0yMzQtXFx0LmNvbm5lY3RcXHQ9IHNvY2tfbm9fY29ubmVjdCxcXG5uZXQvYmx1ZXRvb3RoL2hpZHAvc29jay5jOjIzNTpcXHQuc29ja2V0cGFpclxcdD0gc29ja19ub19zb2NrZXRwYWlyLFxcbm5ldC9ibHVldG9vdGgvaGlkcC9zb2NrLmMtMjM2LVxcdC5hY2NlcHRcXHRcXHQ9IHNvY2tfbm9fYWNjZXB0LFxcbi0tXFxubmV0L2JsdWV0b290aC9pc28uYz0yODM5PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIGlzb19zb2NrX29wcyA9IHtcXG4tLVxcbm5ldC9ibHVldG9vdGgvaXNvLmMtMjg1Mi1cXHQubW1hcFxcdFxcdD0gc29ja19ub19tbWFwLFxcbm5ldC9ibHVldG9vdGgvaXNvLmM6Mjg1MzpcXHQuc29ja2V0cGFpclxcdD0gc29ja19ub19zb2NrZXRwYWlyLFxcbm5ldC9ibHVldG9vdGgvaXNvLmMtMjg1NC1cXHQuc2h1dGRvd25cXHQ9IGlzb19zb2NrX3NodXRkb3duLFxcbi0tXFxubmV0L2JsdWV0b290aC9sMmNhcF9zb2NrLmM9MjA3OD1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBsMmNhcF9zb2NrX29wcyA9IHtcXG4tLVxcbm5ldC9ibHVldG9vdGgvbDJjYXBfc29jay5jLTIwOTItXFx0Lm1tYXBcXHRcXHQ9IHNvY2tfbm9fbW1hcCxcXG5uZXQvYmx1ZXRvb3RoL2wyY2FwX3NvY2suYzoyMDkzOlxcdC5zb2NrZXRwYWlyXFx0PSBzb2NrX25vX3NvY2tldHBhaXIsXFxubmV0L2JsdWV0b290aC9sMmNhcF9zb2NrLmMtMjA5NC1cXHQuc2h1dGRvd25cXHQ9IGwyY2FwX3NvY2tfc2h1dGRvd24sXFxuLS1cXG5uZXQvYmx1ZXRvb3RoL3JmY29tbS9zb2NrLmM9MTAzMT1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyByZmNvbW1fc29ja19vcHMgPSB7XFxuLS1cXG5uZXQvYmx1ZXRvb3RoL3JmY29tbS9zb2NrLmMtMTA0Ny1cXHQucG9sbFxcdFxcdD0gYnRfc29ja19wb2xsLFxcbm5ldC9ibHVldG9vdGgvcmZjb21tL3NvY2suYzoxMDQ4OlxcdC5zb2NrZXRwYWlyXFx0PSBzb2NrX25vX3NvY2tldHBhaXIsXFxubmV0L2JsdWV0b290aC9yZmNvbW0vc29jay5jLTEwNDktXFx0Lm1tYXBcXHRcXHQ9IHNvY2tfbm9fbW1hcCxcXG4tLVxcbm5ldC9ibHVldG9vdGgvc2NvLmM9MTU5Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBzY29fc29ja19vcHMgPSB7XFxuLS1cXG5uZXQvYmx1ZXRvb3RoL3Njby5jLTE2MTAtXFx0Lm1tYXBcXHRcXHQ9IHNvY2tfbm9fbW1hcCxcXG5uZXQvYmx1ZXRvb3RoL3Njby5jOjE2MTE6XFx0LnNvY2tldHBhaXJcXHQ9IHNvY2tfbm9fc29ja2V0cGFpcixcXG5uZXQvYmx1ZXRvb3RoL3Njby5jLTE2MTItXFx0LnNodXRkb3duXFx0PSBzY29fc29ja19zaHV0ZG93bixcXG4tLVxcbm5ldC9jYW4vYmNtLmM9MjExMD1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBiY21fb3BzID0ge1xcbi0tXFxubmV0L2Nhbi9iY20uYy0yMTE0LVxcdC5jb25uZWN0ICAgICAgID0gYmNtX2Nvbm5lY3QsXFxubmV0L2Nhbi9iY20uYzoyMTE1OlxcdC5zb2NrZXRwYWlyICAgID0gc29ja19ub19zb2NrZXRwYWlyLFxcbm5ldC9jYW4vYmNtLmMtMjExNi1cXHQuYWNjZXB0ICAgICAgICA9IHNvY2tfbm9fYWNjZXB0LFxcbi0tXFxubmV0L2Nhbi9pc290cC5jPTIwMDY9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgaXNvdHBfb3BzID0ge1xcbi0tXFxubmV0L2Nhbi9pc290cC5jLTIwMTAtXFx0LmNvbm5lY3QgPSBzb2NrX25vX2Nvbm5lY3QsXFxubmV0L2Nhbi9pc290cC5jOjIwMTE6XFx0LnNvY2tldHBhaXIgPSBzb2NrX25vX3NvY2tldHBhaXIsXFxubmV0L2Nhbi9pc290cC5jLTIwMTItXFx0LmFjY2VwdCA9IHNvY2tfbm9fYWNjZXB0LFxcbi0tXFxubmV0L2Nhbi9qMTkzOS9zb2NrZXQuYz0xMzc1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIGoxOTM5X29wcyA9IHtcXG4tLVxcbm5ldC9jYW4vajE5Mzkvc29ja2V0LmMtMTM3OS1cXHQuY29ubmVjdCA9IGoxOTM5X3NrX2Nvbm5lY3QsXFxubmV0L2Nhbi9qMTkzOS9zb2NrZXQuYzoxMzgwOlxcdC5zb2NrZXRwYWlyID0gc29ja19ub19zb2NrZXRwYWlyLFxcbm5ldC9jYW4vajE5Mzkvc29ja2V0LmMtMTM4MS1cXHQuYWNjZXB0ID0gc29ja19ub19hY2NlcHQsXFxuLS1cXG5uZXQvY2FuL3Jhdy5jPTEwNjg9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcmF3X29wcyA9IHtcXG4tLVxcbm5ldC9jYW4vcmF3LmMtMTA3Mi1cXHQuY29ubmVjdCAgICAgICA9IHNvY2tfbm9fY29ubmVjdCxcXG5uZXQvY2FuL3Jhdy5jOjEwNzM6XFx0LnNvY2tldHBhaXIgICAgPSBzb2NrX25vX3NvY2tldHBhaXIsXFxubmV0L2Nhbi9yYXcuYy0xMDc0LVxcdC5hY2NlcHQgICAgICAgID0gc29ja19ub19hY2NlcHQsXFxuLS1cXG5uZXQvaWVlZTgwMjE1NC9zb2NrZXQuYz00MTA9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgaWVlZTgwMjE1NF9yYXdfb3BzID0ge1xcbi0tXFxubmV0L2llZWU4MDIxNTQvc29ja2V0LmMtNDE1LVxcdC5jb25uZWN0XFx0ICAgPSBpZWVlODAyMTU0X3NvY2tfY29ubmVjdCxcXG5uZXQvaWVlZTgwMjE1NC9zb2NrZXQuYzo0MTY6XFx0LnNvY2tldHBhaXJcXHQgICA9IHNvY2tfbm9fc29ja2V0cGFpcixcXG5uZXQvaWVlZTgwMjE1NC9zb2NrZXQuYy00MTctXFx0LmFjY2VwdFxcdFxcdCAgID0gc29ja19ub19hY2NlcHQsXFxuLS1cXG5uZXQvaWVlZTgwMjE1NC9zb2NrZXQuYz05ODY9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgaWVlZTgwMjE1NF9kZ3JhbV9vcHMgPSB7XFxuLS1cXG5uZXQvaWVlZTgwMjE1NC9zb2NrZXQuYy05OTEtXFx0LmNvbm5lY3RcXHQgICA9IGllZWU4MDIxNTRfc29ja19jb25uZWN0LFxcbm5ldC9pZWVlODAyMTU0L3NvY2tldC5jOjk5MjpcXHQuc29ja2V0cGFpclxcdCAgID0gc29ja19ub19zb2NrZXRwYWlyLFxcbm5ldC9pZWVlODAyMTU0L3NvY2tldC5jLTk5My1cXHQuYWNjZXB0XFx0XFx0ICAgPSBzb2NrX25vX2FjY2VwdCxcXG4tLVxcbm5ldC9pcHY0L2FmX2luZXQuYz0xMDYwPWNvbnN0IHN0cnVjdCBwcm90b19vcHMgaW5ldF9zdHJlYW1fb3BzID0ge1xcbi0tXFxubmV0L2lwdjQvYWZfaW5ldC5jLTEwNjUtXFx0LmNvbm5lY3RcXHQgICA9IGluZXRfc3RyZWFtX2Nvbm5lY3QsXFxubmV0L2lwdjQvYWZfaW5ldC5jOjEwNjY6XFx0LnNvY2tldHBhaXJcXHQgICA9IHNvY2tfbm9fc29ja2V0cGFpcixcXG5uZXQvaXB2NC9hZl9pbmV0LmMtMTA2Ny1cXHQuYWNjZXB0XFx0XFx0ICAgPSBpbmV0X2FjY2VwdCxcXG4tLVxcbm5ldC9pcHY0L2FmX2luZXQuYz0xMDk2PWNvbnN0IHN0cnVjdCBwcm90b19vcHMgaW5ldF9kZ3JhbV9vcHMgPSB7XFxuLS1cXG5uZXQvaXB2NC9hZl9pbmV0LmMtMTEwMS1cXHQuY29ubmVjdFxcdCAgID0gaW5ldF9kZ3JhbV9jb25uZWN0LFxcbm5ldC9pcHY0L2FmX2luZXQuYzoxMTAyOlxcdC5zb2NrZXRwYWlyXFx0ICAgPSBzb2NrX25vX3NvY2tldHBhaXIsXFxubmV0L2lwdjQvYWZfaW5ldC5jLTExMDMtXFx0LmFjY2VwdFxcdFxcdCAgID0gc29ja19ub19hY2NlcHQsXFxuLS1cXG5uZXQvaXB2NC9hZl9pbmV0LmM9MTEyOD1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBpbmV0X3NvY2tyYXdfb3BzID0ge1xcbi0tXFxubmV0L2lwdjQvYWZfaW5ldC5jLTExMzMtXFx0LmNvbm5lY3RcXHQgICA9IGluZXRfZGdyYW1fY29ubmVjdCxcXG5uZXQvaXB2NC9hZl9pbmV0LmM6MTEzNDpcXHQuc29ja2V0cGFpclxcdCAgID0gc29ja19ub19zb2NrZXRwYWlyLFxcbm5ldC9pcHY0L2FmX2luZXQuYy0xMTM1LVxcdC5hY2NlcHRcXHRcXHQgICA9IHNvY2tfbm9fYWNjZXB0LFxcbi0tXFxubmV0L2lwdjYvYWZfaW5ldDYuYz02NjA9Y29uc3Qgc3RydWN0IHByb3RvX29wcyBpbmV0Nl9zdHJlYW1fb3BzID0ge1xcbi0tXFxubmV0L2lwdjYvYWZfaW5ldDYuYy02NjUtXFx0LmNvbm5lY3RcXHQgICA9IGluZXRfc3RyZWFtX2Nvbm5lY3QsXFx0Lyogb2tcXHRcXHQqL1xcbm5ldC9pcHY2L2FmX2luZXQ2LmM6NjY2OlxcdC5zb2NrZXRwYWlyXFx0ICAgPSBzb2NrX25vX3NvY2tldHBhaXIsXFx0LyogYSBkbyBub3RoaW5nXFx0Ki9cXG5uZXQvaXB2Ni9hZl9pbmV0Ni5jLTY2Ny1cXHQuYWNjZXB0XFx0XFx0ICAgPSBpbmV0X2FjY2VwdCxcXHRcXHQvKiBva1xcdFxcdCovXFxuLS1cXG5uZXQvaXB2Ni9hZl9pbmV0Ni5jPTY5Nj1jb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIGluZXQ2X2RncmFtX29wcyA9IHtcXG4tLVxcbm5ldC9pcHY2L2FmX2luZXQ2LmMtNzAxLVxcdC5jb25uZWN0XFx0ICAgPSBpbmV0X2RncmFtX2Nvbm5lY3QsXFx0Lyogb2tcXHRcXHQqL1xcbm5ldC9pcHY2L2FmX2luZXQ2LmM6NzAyOlxcdC5zb2NrZXRwYWlyXFx0ICAgPSBzb2NrX25vX3NvY2tldHBhaXIsXFx0LyogYSBkbyBub3RoaW5nXFx0Ki9cXG5uZXQvaXB2Ni9hZl9pbmV0Ni5jLTcwMy1cXHQuYWNjZXB0XFx0XFx0ICAgPSBzb2NrX25vX2FjY2VwdCxcXHRcXHQvKiBhIGRvIG5vdGhpbmdcXHQqL1xcbi0tXFxubmV0L2lwdjYvcmF3LmM9MTI4Nz1jb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIGluZXQ2X3NvY2tyYXdfb3BzID0ge1xcbi0tXFxubmV0L2lwdjYvcmF3LmMtMTI5Mi1cXHQuY29ubmVjdFxcdCAgID0gaW5ldF9kZ3JhbV9jb25uZWN0LFxcdC8qIG9rXFx0XFx0Ki9cXG5uZXQvaXB2Ni9yYXcuYzoxMjkzOlxcdC5zb2NrZXRwYWlyXFx0ICAgPSBzb2NrX25vX3NvY2tldHBhaXIsXFx0LyogYSBkbyBub3RoaW5nXFx0Ki9cXG5uZXQvaXB2Ni9yYXcuYy0xMjk0LVxcdC5hY2NlcHRcXHRcXHQgICA9IHNvY2tfbm9fYWNjZXB0LFxcdFxcdC8qIGEgZG8gbm90aGluZ1xcdCovXFxuLS1cXG5uZXQvaXVjdi9hZl9pdWN2LmM9MjI0OT1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBpdWN2X3NvY2tfb3BzID0ge1xcbi0tXFxubmV0L2l1Y3YvYWZfaXVjdi5jLTIyNjItXFx0Lm1tYXBcXHRcXHQ9IHNvY2tfbm9fbW1hcCxcXG5uZXQvaXVjdi9hZl9pdWN2LmM6MjI2MzpcXHQuc29ja2V0cGFpclxcdD0gc29ja19ub19zb2NrZXRwYWlyLFxcbm5ldC9pdWN2L2FmX2l1Y3YuYy0yMjY0LVxcdC5zaHV0ZG93blxcdD0gaXVjdl9zb2NrX3NodXRkb3duLFxcbi0tXFxubmV0L2tjbS9rY21zb2NrLmM9MTc0NT1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBrY21fZGdyYW1fb3BzID0ge1xcbi0tXFxubmV0L2tjbS9rY21zb2NrLmMtMTc1MC1cXHQuY29ubmVjdCA9XFx0c29ja19ub19jb25uZWN0LFxcbm5ldC9rY20va2Ntc29jay5jOjE3NTE6XFx0LnNvY2tldHBhaXIgPVxcdHNvY2tfbm9fc29ja2V0cGFpcixcXG5uZXQva2NtL2tjbXNvY2suYy0xNzUyLVxcdC5hY2NlcHQgPVxcdHNvY2tfbm9fYWNjZXB0LFxcbi0tXFxubmV0L2tjbS9rY21zb2NrLmM9MTc2Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBrY21fc2VxcGFja2V0X29wcyA9IHtcXG4tLVxcbm5ldC9rY20va2Ntc29jay5jLTE3NzEtXFx0LmNvbm5lY3QgPVxcdHNvY2tfbm9fY29ubmVjdCxcXG5uZXQva2NtL2tjbXNvY2suYzoxNzcyOlxcdC5zb2NrZXRwYWlyID1cXHRzb2NrX25vX3NvY2tldHBhaXIsXFxubmV0L2tjbS9rY21zb2NrLmMtMTc3My1cXHQuYWNjZXB0ID1cXHRzb2NrX25vX2FjY2VwdCxcXG4tLVxcbm5ldC9rZXkvYWZfa2V5LmM9Mzc3Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBwZmtleV9vcHMgPSB7XFxuLS1cXG5uZXQva2V5L2FmX2tleS5jLTM3NzgtXFx0LmNvbm5lY3RcXHQ9XFx0c29ja19ub19jb25uZWN0LFxcbm5ldC9rZXkvYWZfa2V5LmM6Mzc3OTpcXHQuc29ja2V0cGFpclxcdD1cXHRzb2NrX25vX3NvY2tldHBhaXIsXFxubmV0L2tleS9hZl9rZXkuYy0zNzgwLVxcdC5hY2NlcHRcXHRcXHQ9XFx0c29ja19ub19hY2NlcHQsXFxuLS1cXG5uZXQvbDJ0cC9sMnRwX2lwLmM9NjI4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIGwydHBfaXBfb3BzID0ge1xcbi0tXFxubmV0L2wydHAvbDJ0cF9pcC5jLTYzMy1cXHQuY29ubmVjdFxcdCAgID0gaW5ldF9kZ3JhbV9jb25uZWN0LFxcbm5ldC9sMnRwL2wydHBfaXAuYzo2MzQ6XFx0LnNvY2tldHBhaXJcXHQgICA9IHNvY2tfbm9fc29ja2V0cGFpcixcXG5uZXQvbDJ0cC9sMnRwX2lwLmMtNjM1LVxcdC5hY2NlcHRcXHRcXHQgICA9IHNvY2tfbm9fYWNjZXB0LFxcbi0tXFxubmV0L2wydHAvbDJ0cF9pcDYuYz03NTc9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgbDJ0cF9pcDZfb3BzID0ge1xcbi0tXFxubmV0L2wydHAvbDJ0cF9pcDYuYy03NjItXFx0LmNvbm5lY3RcXHQgICA9IGluZXRfZGdyYW1fY29ubmVjdCxcXG5uZXQvbDJ0cC9sMnRwX2lwNi5jOjc2MzpcXHQuc29ja2V0cGFpclxcdCAgID0gc29ja19ub19zb2NrZXRwYWlyLFxcbm5ldC9sMnRwL2wydHBfaXA2LmMtNzY0LVxcdC5hY2NlcHRcXHRcXHQgICA9IHNvY2tfbm9fYWNjZXB0LFxcbi0tXFxubmV0L2wydHAvbDJ0cF9wcHAuYz0xNjg2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHBwcG9sMnRwX29wcyA9IHtcXG4tLVxcbm5ldC9sMnRwL2wydHBfcHBwLmMtMTY5MS1cXHQuY29ubmVjdFxcdD0gcHBwb2wydHBfY29ubmVjdCxcXG5uZXQvbDJ0cC9sMnRwX3BwcC5jOjE2OTI6XFx0LnNvY2tldHBhaXJcXHQ9IHNvY2tfbm9fc29ja2V0cGFpcixcXG5uZXQvbDJ0cC9sMnRwX3BwcC5jLTE2OTMtXFx0LmFjY2VwdFxcdFxcdD0gc29ja19ub19hY2NlcHQsXFxuLS1cXG5uZXQvbGxjL2FmX2xsYy5jPTEyMjE9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgbGxjX3VpX29wcyA9IHtcXG4tLVxcbm5ldC9sbGMvYWZfbGxjLmMtMTIyNi1cXHQuY29ubmVjdCAgICAgPSBsbGNfdWlfY29ubmVjdCxcXG5uZXQvbGxjL2FmX2xsYy5jOjEyMjc6XFx0LnNvY2tldHBhaXIgID0gc29ja19ub19zb2NrZXRwYWlyLFxcbm5ldC9sbGMvYWZfbGxjLmMtMTIyOC1cXHQuYWNjZXB0ICAgICAgPSBsbGNfdWlfYWNjZXB0LFxcbi0tXFxubmV0L21jdHAvYWZfbWN0cC5jPTYyOD1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBtY3RwX2RncmFtX29wcyA9IHtcXG4tLVxcbm5ldC9tY3RwL2FmX21jdHAuYy02MzItXFx0LmNvbm5lY3RcXHQ9IG1jdHBfY29ubmVjdCxcXG5uZXQvbWN0cC9hZl9tY3RwLmM6NjMzOlxcdC5zb2NrZXRwYWlyXFx0PSBzb2NrX25vX3NvY2tldHBhaXIsXFxubmV0L21jdHAvYWZfbWN0cC5jLTYzNC1cXHQuYWNjZXB0XFx0XFx0PSBzb2NrX25vX2FjY2VwdCxcXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jPTQ3MjQ9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgbXB0Y3Bfc3RyZWFtX29wcyA9IHtcXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTQ3MjktXFx0LmNvbm5lY3RcXHQgICA9IGluZXRfc3RyZWFtX2Nvbm5lY3QsXFxubmV0L21wdGNwL3Byb3RvY29sLmM6NDczMDpcXHQuc29ja2V0cGFpclxcdCAgID0gc29ja19ub19zb2NrZXRwYWlyLFxcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTQ3MzEtXFx0LmFjY2VwdFxcdFxcdCAgID0gbXB0Y3Bfc3RyZWFtX2FjY2VwdCxcXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jPTQ4MzM9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgbXB0Y3BfdjZfc3RyZWFtX29wcyA9IHtcXG4tLVxcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTQ4MzgtXFx0LmNvbm5lY3RcXHQgICA9IGluZXRfc3RyZWFtX2Nvbm5lY3QsXFxubmV0L21wdGNwL3Byb3RvY29sLmM6NDgzOTpcXHQuc29ja2V0cGFpclxcdCAgID0gc29ja19ub19zb2NrZXRwYWlyLFxcbm5ldC9tcHRjcC9wcm90b2NvbC5jLTQ4NDAtXFx0LmFjY2VwdFxcdFxcdCAgID0gbXB0Y3Bfc3RyZWFtX2FjY2VwdCxcXG4tLVxcbm5ldC9uZXRsaW5rL2FmX25ldGxpbmsuYz0yODA4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIG5ldGxpbmtfb3BzID0ge1xcbi0tXFxubmV0L25ldGxpbmsvYWZfbmV0bGluay5jLTI4MTMtXFx0LmNvbm5lY3QgPVxcdG5ldGxpbmtfY29ubmVjdCxcXG5uZXQvbmV0bGluay9hZl9uZXRsaW5rLmM6MjgxNDpcXHQuc29ja2V0cGFpciA9XFx0c29ja19ub19zb2NrZXRwYWlyLFxcbm5ldC9uZXRsaW5rL2FmX25ldGxpbmsuYy0yODE1LVxcdC5hY2NlcHQgPVxcdHNvY2tfbm9fYWNjZXB0LFxcbi0tXFxubmV0L25mYy9sbGNwX3NvY2suYz05Mjc9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgbGxjcF9zb2NrX29wcyA9IHtcXG4tLVxcbm5ldC9uZmMvbGxjcF9zb2NrLmMtOTMyLVxcdC5yZWxlYXNlICAgICAgICA9IGxsY3Bfc29ja19yZWxlYXNlLFxcbm5ldC9uZmMvbGxjcF9zb2NrLmM6OTMzOlxcdC5zb2NrZXRwYWlyICAgICA9IHNvY2tfbm9fc29ja2V0cGFpcixcXG5uZXQvbmZjL2xsY3Bfc29jay5jLTkzNC1cXHQuYWNjZXB0ICAgICAgICAgPSBsbGNwX3NvY2tfYWNjZXB0LFxcbi0tXFxubmV0L25mYy9sbGNwX3NvY2suYz05NDc9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgbGxjcF9yYXdzb2NrX29wcyA9IHtcXG4tLVxcbm5ldC9uZmMvbGxjcF9zb2NrLmMtOTUyLVxcdC5yZWxlYXNlICAgICAgICA9IGxsY3Bfc29ja19yZWxlYXNlLFxcbm5ldC9uZmMvbGxjcF9zb2NrLmM6OTUzOlxcdC5zb2NrZXRwYWlyICAgICA9IHNvY2tfbm9fc29ja2V0cGFpcixcXG5uZXQvbmZjL2xsY3Bfc29jay5jLTk1NC1cXHQuYWNjZXB0ICAgICAgICAgPSBzb2NrX25vX2FjY2VwdCxcXG4tLVxcbm5ldC9uZmMvcmF3c29jay5jPTI3OT1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyByYXdzb2NrX29wcyA9IHtcXG4tLVxcbm5ldC9uZmMvcmF3c29jay5jLTI4NC1cXHQuY29ubmVjdCAgICAgICAgPSByYXdzb2NrX2Nvbm5lY3QsXFxubmV0L25mYy9yYXdzb2NrLmM6Mjg1OlxcdC5zb2NrZXRwYWlyICAgICA9IHNvY2tfbm9fc29ja2V0cGFpcixcXG5uZXQvbmZjL3Jhd3NvY2suYy0yODYtXFx0LmFjY2VwdCAgICAgICAgID0gc29ja19ub19hY2NlcHQsXFxuLS1cXG5uZXQvbmZjL3Jhd3NvY2suYz0yOTc9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcmF3c29ja19yYXdfb3BzID0ge1xcbi0tXFxubmV0L25mYy9yYXdzb2NrLmMtMzAyLVxcdC5jb25uZWN0ICAgICAgICA9IHNvY2tfbm9fY29ubmVjdCxcXG5uZXQvbmZjL3Jhd3NvY2suYzozMDM6XFx0LnNvY2tldHBhaXIgICAgID0gc29ja19ub19zb2NrZXRwYWlyLFxcbm5ldC9uZmMvcmF3c29jay5jLTMwNC1cXHQuYWNjZXB0ICAgICAgICAgPSBzb2NrX25vX2FjY2VwdCxcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM9NDc1Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBwYWNrZXRfb3BzX3Nwa3QgPSB7XFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTQ3NTgtXFx0LmNvbm5lY3QgPVxcdHNvY2tfbm9fY29ubmVjdCxcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jOjQ3NTk6XFx0LnNvY2tldHBhaXIgPVxcdHNvY2tfbm9fc29ja2V0cGFpcixcXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jLTQ3NjAtXFx0LmFjY2VwdCA9XFx0c29ja19ub19hY2NlcHQsXFxuLS1cXG5uZXQvcGFja2V0L2FmX3BhY2tldC5jPTQ3NzI9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcGFja2V0X29wcyA9IHtcXG4tLVxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDc3Ny1cXHQuY29ubmVjdCA9XFx0c29ja19ub19jb25uZWN0LFxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmM6NDc3ODpcXHQuc29ja2V0cGFpciA9XFx0c29ja19ub19zb2NrZXRwYWlyLFxcbm5ldC9wYWNrZXQvYWZfcGFja2V0LmMtNDc3OS1cXHQuYWNjZXB0ID1cXHRzb2NrX25vX2FjY2VwdCxcXG4tLVxcbm5ldC9waG9uZXQvc29ja2V0LmM9NDMzPWNvbnN0IHN0cnVjdCBwcm90b19vcHMgcGhvbmV0X2RncmFtX29wcyA9IHtcXG4tLVxcbm5ldC9waG9uZXQvc29ja2V0LmMtNDM4LVxcdC5jb25uZWN0XFx0PSBzb2NrX25vX2Nvbm5lY3QsXFxubmV0L3Bob25ldC9zb2NrZXQuYzo0Mzk6XFx0LnNvY2tldHBhaXJcXHQ9IHNvY2tfbm9fc29ja2V0cGFpcixcXG5uZXQvcGhvbmV0L3NvY2tldC5jLTQ0MC1cXHQuYWNjZXB0XFx0XFx0PSBzb2NrX25vX2FjY2VwdCxcXG4tLVxcbm5ldC9waG9uZXQvc29ja2V0LmM9NDUxPWNvbnN0IHN0cnVjdCBwcm90b19vcHMgcGhvbmV0X3N0cmVhbV9vcHMgPSB7XFxuLS1cXG5uZXQvcGhvbmV0L3NvY2tldC5jLTQ1Ni1cXHQuY29ubmVjdFxcdD0gcG5fc29ja2V0X2Nvbm5lY3QsXFxubmV0L3Bob25ldC9zb2NrZXQuYzo0NTc6XFx0LnNvY2tldHBhaXJcXHQ9IHNvY2tfbm9fc29ja2V0cGFpcixcXG5uZXQvcGhvbmV0L3NvY2tldC5jLTQ1OC1cXHQuYWNjZXB0XFx0XFx0PSBwbl9zb2NrZXRfYWNjZXB0LFxcbi0tXFxubmV0L3FydHIvYWZfcXJ0ci5jPTEyOTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgcXJ0cl9wcm90b19vcHMgPSB7XFxuLS1cXG5uZXQvcXJ0ci9hZl9xcnRyLmMtMTI5OC1cXHQuY29ubmVjdFxcdD0gcXJ0cl9jb25uZWN0LFxcbm5ldC9xcnRyL2FmX3FydHIuYzoxMjk5OlxcdC5zb2NrZXRwYWlyXFx0PSBzb2NrX25vX3NvY2tldHBhaXIsXFxubmV0L3FydHIvYWZfcXJ0ci5jLTEzMDAtXFx0LmFjY2VwdFxcdFxcdD0gc29ja19ub19hY2NlcHQsXFxuLS1cXG5uZXQvcmRzL2FmX3Jkcy5jPTY0Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyByZHNfcHJvdG9fb3BzID0ge1xcbi0tXFxubmV0L3Jkcy9hZl9yZHMuYy02NTEtXFx0LmNvbm5lY3QgPVxcdHJkc19jb25uZWN0LFxcbm5ldC9yZHMvYWZfcmRzLmM6NjUyOlxcdC5zb2NrZXRwYWlyID1cXHRzb2NrX25vX3NvY2tldHBhaXIsXFxubmV0L3Jkcy9hZl9yZHMuYy02NTMtXFx0LmFjY2VwdCA9XFx0c29ja19ub19hY2NlcHQsXFxuLS1cXG5uZXQvcnhycGMvYWZfcnhycGMuYz0xMDAwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHJ4cnBjX3JwY19vcHMgPSB7XFxuLS1cXG5uZXQvcnhycGMvYWZfcnhycGMuYy0xMDA1LVxcdC5jb25uZWN0XFx0PSByeHJwY19jb25uZWN0LFxcbm5ldC9yeHJwYy9hZl9yeHJwYy5jOjEwMDY6XFx0LnNvY2tldHBhaXJcXHQ9IHNvY2tfbm9fc29ja2V0cGFpcixcXG5uZXQvcnhycGMvYWZfcnhycGMuYy0xMDA3LVxcdC5hY2NlcHRcXHRcXHQ9IHNvY2tfbm9fYWNjZXB0LFxcbi0tXFxubmV0L3NjdHAvaXB2Ni5jPTEwNDM9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgaW5ldDZfc2VxcGFja2V0X29wcyA9IHtcXG4tLVxcbm5ldC9zY3RwL2lwdjYuYy0xMDQ4LVxcdC5jb25uZWN0XFx0ICAgPSBzY3RwX2luZXRfY29ubmVjdCxcXG5uZXQvc2N0cC9pcHY2LmM6MTA0OTpcXHQuc29ja2V0cGFpclxcdCAgID0gc29ja19ub19zb2NrZXRwYWlyLFxcbm5ldC9zY3RwL2lwdjYuYy0xMDUwLVxcdC5hY2NlcHRcXHRcXHQgICA9IGluZXRfYWNjZXB0LFxcbi0tXFxubmV0L3NjdHAvcHJvdG9jb2wuYz0xMTA2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIGluZXRfc2VxcGFja2V0X29wcyA9IHtcXG4tLVxcbm5ldC9zY3RwL3Byb3RvY29sLmMtMTExMS1cXHQuY29ubmVjdFxcdCAgID0gc2N0cF9pbmV0X2Nvbm5lY3QsXFxubmV0L3NjdHAvcHJvdG9jb2wuYzoxMTEyOlxcdC5zb2NrZXRwYWlyXFx0ICAgPSBzb2NrX25vX3NvY2tldHBhaXIsXFxubmV0L3NjdHAvcHJvdG9jb2wuYy0xMTEzLVxcdC5hY2NlcHRcXHRcXHQgICA9IGluZXRfYWNjZXB0LFxcbi0tXFxubmV0L3NtYy9hZl9zbWMuYz0zMzMyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHNtY19zb2NrX29wcyA9IHtcXG4tLVxcbm5ldC9zbWMvYWZfc21jLmMtMzMzNy1cXHQuY29ubmVjdFxcdD0gc21jX2Nvbm5lY3QsXFxubmV0L3NtYy9hZl9zbWMuYzozMzM4OlxcdC5zb2NrZXRwYWlyXFx0PSBzb2NrX25vX3NvY2tldHBhaXIsXFxubmV0L3NtYy9hZl9zbWMuYy0zMzM5LVxcdC5hY2NlcHRcXHRcXHQ9IHNtY19hY2NlcHQsXFxuLS1cXG5uZXQvc21jL3NtY19pbmV0LmM9MzY9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgc21jX2luZXRfc3RyZWFtX29wcyA9IHtcXG4tLVxcbm5ldC9zbWMvc21jX2luZXQuYy00MS1cXHQuY29ubmVjdFxcdD0gc21jX2Nvbm5lY3QsXFxubmV0L3NtYy9zbWNfaW5ldC5jOjQyOlxcdC5zb2NrZXRwYWlyXFx0PSBzb2NrX25vX3NvY2tldHBhaXIsXFxubmV0L3NtYy9zbWNfaW5ldC5jLTQzLVxcdC5hY2NlcHRcXHRcXHQ9IHNtY19hY2NlcHQsXFxuLS1cXG5uZXQvc21jL3NtY19pbmV0LmM9ODQ9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgc21jX2luZXQ2X3N0cmVhbV9vcHMgPSB7XFxuLS1cXG5uZXQvc21jL3NtY19pbmV0LmMtODktXFx0LmNvbm5lY3RcXHQ9IHNtY19jb25uZWN0LFxcbm5ldC9zbWMvc21jX2luZXQuYzo5MDpcXHQuc29ja2V0cGFpclxcdD0gc29ja19ub19zb2NrZXRwYWlyLFxcbm5ldC9zbWMvc21jX2luZXQuYy05MS1cXHQuYWNjZXB0XFx0XFx0PSBzbWNfYWNjZXB0LFxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmM9MzM1OT1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBtc2dfb3BzID0ge1xcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMzM2NC1cXHQuY29ubmVjdFxcdD0gdGlwY19jb25uZWN0LFxcbm5ldC90aXBjL3NvY2tldC5jOjMzNjU6XFx0LnNvY2tldHBhaXJcXHQ9IHRpcGNfc29ja2V0cGFpcixcXG5uZXQvdGlwYy9zb2NrZXQuYy0zMzY2LVxcdC5hY2NlcHRcXHRcXHQ9IHNvY2tfbm9fYWNjZXB0LFxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmM9MzM3OT1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBwYWNrZXRfb3BzID0ge1xcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMzM4NC1cXHQuY29ubmVjdFxcdD0gdGlwY19jb25uZWN0LFxcbm5ldC90aXBjL3NvY2tldC5jOjMzODU6XFx0LnNvY2tldHBhaXJcXHQ9IHRpcGNfc29ja2V0cGFpcixcXG5uZXQvdGlwYy9zb2NrZXQuYy0zMzg2LVxcdC5hY2NlcHRcXHRcXHQ9IHRpcGNfYWNjZXB0LFxcbi0tXFxubmV0L3RpcGMvc29ja2V0LmM9MzM5OT1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyBzdHJlYW1fb3BzID0ge1xcbi0tXFxubmV0L3RpcGMvc29ja2V0LmMtMzQwNC1cXHQuY29ubmVjdFxcdD0gdGlwY19jb25uZWN0LFxcbm5ldC90aXBjL3NvY2tldC5jOjM0MDU6XFx0LnNvY2tldHBhaXJcXHQ9IHRpcGNfc29ja2V0cGFpcixcXG5uZXQvdGlwYy9zb2NrZXQuYy0zNDA2LVxcdC5hY2NlcHRcXHRcXHQ9IHRpcGNfYWNjZXB0LFxcbi0tXFxubmV0L3VuaXgvYWZfdW5peC5jPTk3Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyB1bml4X3N0cmVhbV9vcHMgPSB7XFxuLS1cXG5uZXQvdW5peC9hZl91bml4LmMtOTgxLVxcdC5jb25uZWN0ID1cXHR1bml4X3N0cmVhbV9jb25uZWN0LFxcbm5ldC91bml4L2FmX3VuaXguYzo5ODI6XFx0LnNvY2tldHBhaXIgPVxcdHVuaXhfc29ja2V0cGFpcixcXG5uZXQvdW5peC9hZl91bml4LmMtOTgzLVxcdC5hY2NlcHQgPVxcdHVuaXhfYWNjZXB0LFxcbi0tXFxubmV0L3VuaXgvYWZfdW5peC5jPTEwMDI9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgdW5peF9kZ3JhbV9vcHMgPSB7XFxuLS1cXG5uZXQvdW5peC9hZl91bml4LmMtMTAwNy1cXHQuY29ubmVjdCA9XFx0dW5peF9kZ3JhbV9jb25uZWN0LFxcbm5ldC91bml4L2FmX3VuaXguYzoxMDA4OlxcdC5zb2NrZXRwYWlyID1cXHR1bml4X3NvY2tldHBhaXIsXFxubmV0L3VuaXgvYWZfdW5peC5jLTEwMDktXFx0LmFjY2VwdCA9XFx0c29ja19ub19hY2NlcHQsXFxuLS1cXG5uZXQvdW5peC9hZl91bml4LmM9MTAyNz1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyB1bml4X3NlcXBhY2tldF9vcHMgPSB7XFxuLS1cXG5uZXQvdW5peC9hZl91bml4LmMtMTAzMi1cXHQuY29ubmVjdCA9XFx0dW5peF9zdHJlYW1fY29ubmVjdCxcXG5uZXQvdW5peC9hZl91bml4LmM6MTAzMzpcXHQuc29ja2V0cGFpciA9XFx0dW5peF9zb2NrZXRwYWlyLFxcbm5ldC91bml4L2FmX3VuaXguYy0xMDM0LVxcdC5hY2NlcHQgPVxcdHVuaXhfYWNjZXB0LFxcbi0tXFxubmV0L3Ztd192c29jay9hZl92c29jay5jPTE2NTM9c3RhdGljIGNvbnN0IHN0cnVjdCBwcm90b19vcHMgdnNvY2tfZGdyYW1fb3BzID0ge1xcbi0tXFxubmV0L3Ztd192c29jay9hZl92c29jay5jLTE2NTgtXFx0LmNvbm5lY3QgPSB2c29ja19kZ3JhbV9jb25uZWN0LFxcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYzoxNjU5OlxcdC5zb2NrZXRwYWlyID0gc29ja19ub19zb2NrZXRwYWlyLFxcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYy0xNjYwLVxcdC5hY2NlcHQgPSBzb2NrX25vX2FjY2VwdCxcXG4tLVxcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYz0yNjU0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHZzb2NrX3N0cmVhbV9vcHMgPSB7XFxuLS1cXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmMtMjY1OS1cXHQuY29ubmVjdCA9IHZzb2NrX2Nvbm5lY3QsXFxubmV0L3Ztd192c29jay9hZl92c29jay5jOjI2NjA6XFx0LnNvY2tldHBhaXIgPSBzb2NrX25vX3NvY2tldHBhaXIsXFxubmV0L3Ztd192c29jay9hZl92c29jay5jLTI2NjEtXFx0LmFjY2VwdCA9IHZzb2NrX2FjY2VwdCxcXG4tLVxcbm5ldC92bXdfdnNvY2svYWZfdnNvY2suYz0yNjc2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcHJvdG9fb3BzIHZzb2NrX3NlcXBhY2tldF9vcHMgPSB7XFxuLS1cXG5uZXQvdm13X3Zzb2NrL2FmX3Zzb2NrLmMtMjY4MS1cXHQuY29ubmVjdCA9IHZzb2NrX2Nvbm5lY3QsXFxubmV0L3Ztd192c29jay9hZl92c29jay5jOjI2ODI6XFx0LnNvY2tldHBhaXIgPSBzb2NrX25vX3NvY2tldHBhaXIsXFxubmV0L3Ztd192c29jay9hZl92c29jay5jLTI2ODMtXFx0LmFjY2VwdCA9IHZzb2NrX2FjY2VwdCxcXG4tLVxcbm5ldC94MjUvYWZfeDI1LmM9MTczND1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyB4MjVfcHJvdG9fb3BzID0ge1xcbi0tXFxubmV0L3gyNS9hZl94MjUuYy0xNzM5LVxcdC5jb25uZWN0ID1cXHR4MjVfY29ubmVjdCxcXG5uZXQveDI1L2FmX3gyNS5jOjE3NDA6XFx0LnNvY2tldHBhaXIgPVxcdHNvY2tfbm9fc29ja2V0cGFpcixcXG5uZXQveDI1L2FmX3gyNS5jLTE3NDEtXFx0LmFjY2VwdCA9XFx0eDI1X2FjY2VwdCxcXG4tLVxcbm5ldC94ZHAveHNrLmM9MjE1OT1zdGF0aWMgY29uc3Qgc3RydWN0IHByb3RvX29wcyB4c2tfcHJvdG9fb3BzID0ge1xcbi0tXFxubmV0L3hkcC94c2suYy0yMTY0LVxcdC5jb25uZWN0XFx0PSBzb2NrX25vX2Nvbm5lY3QsXFxubmV0L3hkcC94c2suYzoyMTY1OlxcdC5zb2NrZXRwYWlyXFx0PSBzb2NrX25vX3NvY2tldHBhaXIsXFxubmV0L3hkcC94c2suYy0yMTY2LVxcdC5hY2NlcHRcXHRcXHQ9IHNvY2tfbm9fYWNjZXB0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxOTo0NDoyOC42NDE0NjcyNTZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTMxNzY0MDYyMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgYHNvY2tldHBhaXJgIEltcGxlbWVudGF0aW9uKipcblxuT2theSwgc28gSSd2ZSBiZWVuIGRpZ2dpbmcgaW50byB0aGUgYHNvY2tldHBhaXJgIGltcGxlbWVudGF0aW9uLCBzcGVjaWZpY2FsbHkgbG9va2luZyBhdCBjaGFuZ2VzIHJlbGF0ZWQgdG8gQUZfVU5JWCBhbmQgVElQQy4gTXkgaW5pdGlhbCBmb2N1cyBpcyBvbiB0aGUgYF9fc3lzX3NvY2tldHBhaXJgIGZ1bmN0aW9uIHdpdGhpbiBgbmV0L3NvY2tldC5jYCwgd2hpY2gsIGFzIEkgdW5kZXJzdGFuZCBpdCwgaXMgdGhlIGVudHJ5IHBvaW50IGZvciB0aGUgYHN5c19zb2NrZXRwYWlyYCBzeXN0ZW0gY2FsbC4gSSBhbHNvIG5vdGVkIHRoYXQgYF9fc3lzX3NvY2tldHBhaXJgIGlzIGRpcmVjdGx5IGNhbGxlZCBieSBgX19kb19zeXNfc29ja2V0cGFpcmAsIG9yIHBvdGVudGlhbGx5IGBfX3NlX3N5c19zb2NrZXRwYWlyYCBkZXBlbmRpbmcgb24gdGhlIGV4YWN0IGtlcm5lbCB2ZXJzaW9uLlxuXG5JJ3ZlIGNvbmZpcm1lZCB0aGUgZGVjbGFyYXRpb246IGBpbnQgX19zeXNfc29ja2V0cGFpcihpbnQgZmFtaWx5LCBpbnQgdHlwZSwgaW50IHByb3RvY29sLCBpbnQgX191c2VyICp1c29ja3ZlYylgIGFuZCBpdHMgYXNzb2NpYXRpb24gd2l0aCBgU1lTQ0FMTF9ERUZJTkU0KHNvY2tldHBhaXIsIGludCwgZmFtaWx5LCBpbnQsIHR5cGUsIGludCwgcHJvdG9jb2wsIGludCBfX3VzZXIgKiwgdXNvY2t2ZWMpYCB3aXRoaW4gYG5ldC9zb2NrZXQuY2AuXG5cbkkndmUgc2Nhbm5lZCB0aGUgcmVsZXZhbnQgY29kZSB0byBjb25maXJtIHRoYXQgYF9fc3lzX3NvY2tldHBhaXJgLCBgX19kb19zeXNfc29ja2V0cGFpcmAgKG9yIGFueSBvZiB0aGUgdmFyaWFudHMpIGFyZSB0aGUga2V5IHN5bWJvbHMgdG8gdHJhY2suIEkgYWxyZWFkeSBrbm93IHRoYXQgc3l6a2FsbGVyIHNwZWNpZmljYWxseSBwb2ludHMgdG8gYF9fc3lzX3NvY2tldHBhaXJgIGFzIHRoZSBjcml0aWNhbCBmdW5jdGlvbi5cblxuSSd2ZSBhbHNvIHZlcmlmaWVkIHRoYXQgYENPTkZJR19ORVRgIGFuZCBgQ09ORklHX1VOSVhgIGFyZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLiBgQ09ORklHX05FVGAgaXMgdGhlIGJhc2UgZm9yIHRoZSBuZXR3b3JraW5nIHN1YnN5c3RlbSwgYW5kIGBDT05GSUdfVU5JWGAgc3BlY2lmaWNhbGx5IGVuYWJsZXMgdGhlIEFGX1VOSVggc29ja2V0cGFpciBmdW5jdGlvbmFsaXR5LlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSd2ZSByZS1leGFtaW5lZCBhbGwgdGhlIGRldGFpbHM6XG5cbiogICAqKldvcnRoRnV6emluZzoqKiBUcnVlLCBkZWZpbml0ZWx5LlxuKiAgICoqUmVhc29uaW5nOioqIFRoZSBwYXRjaCdzIGNvcmUgbW9kaWZpY2F0aW9uIHNlZW1zIHRvIGJlIGEgcmVmYWN0b3Jpbmcgb2YgYF9fc3lzX3NvY2tldHBhaXIoKWAgd2hlcmUgaXQgZGVmZXJzIHRoZSB1c2VyLXNwYWNlIGZpbGUgZGVzY3JpcHRvciBjb3B5IChgcHV0X3VzZXIoKWApIHVudGlsICphZnRlciogc29ja2V0cyBhbmQgZmlsZXMgaGF2ZSBiZWVuIHN1Y2Nlc3NmdWxseSBjcmVhdGVkIGFuZCBhbGxvY2F0ZWQgdmlhIGBzb2NrX2FsbG9jX2ZpbGUoKWAuIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UsIGlmIGBwdXRfdXNlcigpYCBmYWlscywgaXQgbm93IHBlcmZvcm1zIHByb3BlciBjbGVhbnVwICh1c2luZyBgZnB1dCgpYCBhbmQgcmVsZWFzaW5nIGRlc2NyaXB0b3JzKS4gVGhpcyBhbHRlcnMgdGhlIHN5c2NhbGwncyBlcnJvciBoYW5kbGluZyBhbmQgcmVzb3VyY2UgbGlmZXRpbWUgbWFuYWdlbWVudCBpbiBhIGNyaXRpY2FsIGFyZWEgb2YgbmV0d29yay9WRlMgaW50ZWdyYXRpb24uXG4qICAgKipGb2N1c1N5bWJvbHM6KiogU3BlY2lmaWNhbGx5IGBfX3N5c19zb2NrZXRwYWlyYC4gT3IgcG90ZW50aWFsbHkgYFtcIl9fc3lzX3NvY2tldHBhaXJcIiwgXCJ1bml4X3NvY2tldHBhaXJcIl1gIHRob3VnaCBgX19zeXNfc29ja2V0cGFpcmAgaXMgbW9yZSBkaXJlY3QuXG4qICAgKipFbmFibGVDb25maWdzOioqIGBbXCJORVRcIiwgXCJVTklYXCJdYC5cblxuSSd2ZSBkb3VibGUtY2hlY2tlZCB0aGF0IGV2ZXJ5dGhpbmcgYWxpZ25zIHdpdGggbXkgcmVxdWlyZW1lbnRzOiBgV29ydGhGdXp6aW5nYCBpcyBhIGJvb2xlYW4sIGBGb2N1c1N5bWJvbHNgIGlzIGEgc3RyaW5nIGxpc3QsIGBFbmFibGVDb25maWdzYCBpcyBhIHN0cmluZyBsaXN0LCBhbmQgdGhlIGBSZWFzb25pbmdgIHByb3ZpZGVzIGEgY29uY2lzZSBleHBsYW5hdGlvbi5cblxuRXZlcnl0aGluZyBpcyBsb29raW5nIGdvb2QuIEknbSByZWFkeSB0byBtb3ZlIGZvcndhcmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MTYyLCJPdXRwdXRUb2tlbnMiOjExNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxOTo0NDozMy45NTkxMTAwMzhaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTgwMDMyMjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVFwiLFxuICAgIFwiVU5JWFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fc3lzX3NvY2tldHBhaXJcIixcbiAgICBcInVuaXhfc29ja2V0cGFpclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGVycm9yIGhhbmRsaW5nIGFuZCBkZXNjcmlwdG9yIGluc3RhbGxhdGlvbiBpbiBfX3N5c19zb2NrZXRwYWlyKCkgYnkgZGVmZXJyaW5nIHB1dF91c2VyKCkgdW50aWwgYWZ0ZXIgc29ja2V0IGFuZCBmaWxlIGFsbG9jYXRpb24sIGFuZCBhZGRpbmcgZnB1dCgpIGNsZWFudXAgaWYgcHVibGlzaGluZyB0byB1c2VyIHNwYWNlIGZhaWxzLiBUaGlzIGFmZmVjdHMgY29yZSBuZXR3b3JraW5nIHN5c2NhbGwgaGFuZGxpbmcgYW5kIHJlc291cmNlIG1hbmFnZW1lbnQsIHdoaWNoIGlzIGZ1bGx5IHJlYWNoYWJsZSBhbmQgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRcIixcbiAgICBcIlVOSVhcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX3N5c19zb2NrZXRwYWlyXCIsXG4gICAgXCJ1bml4X3NvY2tldHBhaXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBlcnJvciBoYW5kbGluZyBhbmQgZGVzY3JpcHRvciBpbnN0YWxsYXRpb24gaW4gX19zeXNfc29ja2V0cGFpcigpIGJ5IGRlZmVycmluZyBwdXRfdXNlcigpIHVudGlsIGFmdGVyIHNvY2tldCBhbmQgZmlsZSBhbGxvY2F0aW9uLCBhbmQgYWRkaW5nIGZwdXQoKSBjbGVhbnVwIGlmIHB1Ymxpc2hpbmcgdG8gdXNlciBzcGFjZSBmYWlscy4gVGhpcyBhZmZlY3RzIGNvcmUgbmV0d29ya2luZyBzeXNjYWxsIGhhbmRsaW5nIGFuZCByZXNvdXJjZSBtYW5hZ2VtZW50LCB3aGljaCBpcyBmdWxseSByZWFjaGFibGUgYW5kIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE5OjQ0OjM0LjA3NzEyMjg4NloiLCJTZXEiOjE3LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTg0MTQyOTUzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE5OjQ0OjM0LjA3NzkxOTQxNloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjk4NDA2MTc2ODYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBfX3N5c19zb2NrZXRwYWlyYCB0byBkZWZlciBjb3B5aW5nIGZpbGUgZGVzY3JpcHRvciBudW1iZXJzIChgZmQxYCBhbmQgYGZkMmApIHRvIHVzZXJzcGFjZSAoYHVzb2NrdmVjYCkgdW50aWwgYWZ0ZXIgc29ja2V0IGNyZWF0aW9uLCBwcm90b2NvbCBzZXR1cCwgYW5kIGZpbGUgYWxsb2NhdGlvbiBoYXZlIHN1Y2NlZWRlZC5cXG5cXG4tIFRoZSB2YWx1ZXMgd3JpdHRlbiB0byB1c2Vyc3BhY2UgdmlhIGBwdXRfdXNlcmAgYXJlIHNpbXBsZSBzY2FsYXIgaW50ZWdlcnMgKGBmZDFgLCBgZmQyYCkgcmV0dXJuZWQgZGlyZWN0bHkgZnJvbSBgZ2V0X3VudXNlZF9mZF9mbGFncygpYCwgd2hpY2ggYXJlIGZ1bGx5IGluaXRpYWxpemVkIGFuZCB2YWxpZGF0ZWQgcHJpb3IgdG8gdXNlLlxcbi0gTm8gbmV3IHVuaW5pdGlhbGl6ZWQgaGVhcCBvciBzdGFjayBidWZmZXJzLCB1bmluaXRpYWxpemVkIHN0cnVjdCBwYWRkaW5nLCBvciB1bmluaXRpYWxpemVkIHZhcmlhYmxlIHJlYWRzIGFyZSBpbnRyb2R1Y2VkLlxcbi0gQW55IHBvdGVudGlhbCByZXNvdXJjZSBtYW5hZ2VtZW50IG9yIGxpZmVjeWNsZSBidWdzIChzdWNoIGFzIGZkL2ZpbGUgY2xlYW51cCBvciByZWZjb3VudGluZyBpc3N1ZXMgb24gZXJyb3IgcGF0aHMpIGFyZSBhZGRyZXNzZWQgYnkgc3RhbmRhcmQgc2FuaXRpemVycyAoS0FTQU4sIHJlZmNvdW50IGNoZWNrcykuXFxuXFxuQ29uc2VxdWVudGx5LCB0aGVyZSBhcmUgbm8gdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcywgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDU1M2UxNTJkOGM2MzNkNjUzYjBhNTRkNDEyNzM0NGY0MDkyOWI3NjNcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IFNlcCAxMCAxOTo0Mzo1NiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zb2NrZXQuYyBiL25ldC9zb2NrZXQuY1xuaW5kZXggYzA1ZDg2ZTYzYWJmNy4uNGNiODY2Mjg2OWYwOSAxMDA2NDRcbi0tLSBhL25ldC9zb2NrZXQuY1xuKysrIGIvbmV0L3NvY2tldC5jXG5AQCAtMTg1MSwxMCArMTg1MSw3IEBAIGludCBfX3N5c19zb2NrZXRwYWlyKGludCBmYW1pbHksIGludCB0eXBlLCBpbnQgcHJvdG9jb2wsIGludCBfX3VzZXIgKnVzb2NrdmVjKVxuIFx0aWYgKFNPQ0tfTk9OQkxPQ0sgIT0gT19OT05CTE9DSyBcdTAwMjZcdTAwMjYgKGZsYWdzIFx1MDAyNiBTT0NLX05PTkJMT0NLKSlcbiBcdFx0ZmxhZ3MgPSAoZmxhZ3MgXHUwMDI2IH5TT0NLX05PTkJMT0NLKSB8IE9fTk9OQkxPQ0s7XG4gXG4tXHQvKlxuLVx0ICogcmVzZXJ2ZSBkZXNjcmlwdG9ycyBhbmQgbWFrZSBzdXJlIHdlIHdvbid0IGZhaWxcbi1cdCAqIHRvIHJldHVybiB0aGVtIHRvIHVzZXJsYW5kLlxuLVx0ICovXG4rXHQvKiBSZXNlcnZlIGJvdGggZGVzY3JpcHRvcnMgYmVmb3JlIGNyZWF0aW5nIHRoZSBzb2NrZXRzLiAqL1xuIFx0ZmQxID0gZ2V0X3VudXNlZF9mZF9mbGFncyhmbGFncyk7XG4gXHRpZiAodW5saWtlbHkoZmQxIFx1MDAzYyAwKSlcbiBcdFx0cmV0dXJuIGZkMTtcbkBAIC0xODY1LDE0ICsxODYyLDYgQEAgaW50IF9fc3lzX3NvY2tldHBhaXIoaW50IGZhbWlseSwgaW50IHR5cGUsIGludCBwcm90b2NvbCwgaW50IF9fdXNlciAqdXNvY2t2ZWMpXG4gXHRcdHJldHVybiBmZDI7XG4gXHR9XG4gXG4tXHRlcnIgPSBwdXRfdXNlcihmZDEsIFx1MDAyNnVzb2NrdmVjWzBdKTtcbi1cdGlmIChlcnIpXG4tXHRcdGdvdG8gb3V0O1xuLVxuLVx0ZXJyID0gcHV0X3VzZXIoZmQyLCBcdTAwMjZ1c29ja3ZlY1sxXSk7XG4tXHRpZiAoZXJyKVxuLVx0XHRnb3RvIG91dDtcbi1cbiBcdC8qXG4gXHQgKiBPYnRhaW4gdGhlIGZpcnN0IHNvY2tldCBhbmQgY2hlY2sgaWYgdGhlIHVuZGVybHlpbmcgcHJvdG9jb2xcbiBcdCAqIHN1cHBvcnRzIHRoZSBzb2NrZXRwYWlyIGNhbGwuXG5AQCAtMTkxNiw2ICsxOTA1LDE2IEBAIGludCBfX3N5c19zb2NrZXRwYWlyKGludCBmYW1pbHksIGludCB0eXBlLCBpbnQgcHJvdG9jb2wsIGludCBfX3VzZXIgKnVzb2NrdmVjKVxuIFx0XHRnb3RvIG91dDtcbiBcdH1cbiBcbitcdC8qIFB1Ymxpc2ggdGhlIGRlc2NyaXB0b3JzIG5vdyB0aGF0IGl0IHNob3VsZG4ndCBmYWlsLiAqL1xuK1x0ZXJyID0gcHV0X3VzZXIoZmQxLCBcdTAwMjZ1c29ja3ZlY1swXSk7XG4rXHRpZiAoIWVycilcbitcdFx0ZXJyID0gcHV0X3VzZXIoZmQyLCBcdTAwMjZ1c29ja3ZlY1sxXSk7XG4rXHRpZiAoZXJyKSB7XG4rXHRcdGZwdXQobmV3ZmlsZTIpO1xuK1x0XHRmcHV0KG5ld2ZpbGUxKTtcbitcdFx0Z290byBvdXQ7XG4rXHR9XG4rXG4gXHRhdWRpdF9mZF9wYWlyKGZkMSwgZmQyKTtcbiBcbiBcdGZkX2luc3RhbGwoZmQxLCBuZXdmaWxlMSk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxOTo0NDozNC4wNzc5MjExOTZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MzkxMzI3MDA3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gdGhlIFNvY2tldHBhaXIgRGl2ZSoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgY2hhbmdlZC4gRmlyc3QgdGhpbmdzIGZpcnN0LCBsZXQncyB0YWtlIGEgbG9vayBhdCB0aGUgZGlmZi4gU3BlY2lmaWNhbGx5LCBJIHNlZSBhbHRlcmF0aW9ucyB0byBgX19zeXNfc29ja2V0cGFpcmAgd2l0aGluIGBuZXQvc29ja2V0LmNgLiBUaGlzIGlzbid0IHVuZXhwZWN0ZWQsIHNvY2tldHBhaXIgaXMgYSB0cmlja3kgZnVuY3Rpb24sIGFuZCBhbnkgbW9kaWZpY2F0aW9uIHdhcnJhbnRzIGNhcmVmdWwgc2NydXRpbnkuIE5vdywgbGV0J3Mgem9vbSBpbiBvbiBgbmV0L3NvY2tldC5jYC4gSSdtIGdvaW5nIHRvIGp1bXAgaW4gYXJvdW5kIGxpbmUgMTg1MS4gTXkgc3BpZGVyIHNlbnNlcyBhcmUgdGluZ2xpbmcsIEkgaGF2ZSBhIGdvb2QgZmVlbGluZyB0aGF0IHRoZSBzdXJyb3VuZGluZyBjb2RlIHdpbGwgc2hlZCBsaWdodCBvbiB3aGF0J3MgZHJpdmluZyB0aGlzIGNoYW5nZS4gTGV0J3Mgc2VlIHdoYXQgaW50ZXJlc3RpbmcgdGlkYml0cyBhbmQgZ290Y2hhcyBhcmUgbHVya2luZyBpbiB0aGlzIHNlY3Rpb24gb2YgdGhlIGNvZGViYXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDU1LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQxOTo0NDozNy45OTExOTQ0NjhaIiwiU2VxIjoyMCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzM4NDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9zb2NrZXQuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxODQwLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTg0MDpcXHR7XFxuMTg0MTpcXHRcXHRzdHJ1Y3Qgc29ja2V0ICpzb2NrMSwgKnNvY2syO1xcbjE4NDI6XFx0XFx0aW50IGZkMSwgZmQyLCBlcnI7XFxuMTg0MzpcXHRcXHRzdHJ1Y3QgZmlsZSAqbmV3ZmlsZTEsICpuZXdmaWxlMjtcXG4xODQ0OlxcdFxcdGludCBmbGFncztcXG4xODQ1OlxcdFxcbjE4NDY6XFx0XFx0ZmxhZ3MgPSB0eXBlIFxcdTAwMjYgflNPQ0tfVFlQRV9NQVNLO1xcbjE4NDc6XFx0XFx0aWYgKGZsYWdzIFxcdTAwMjYgfihTT0NLX0NMT0VYRUMgfCBTT0NLX05PTkJMT0NLKSlcXG4xODQ4OlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbjE4NDk6XFx0XFx0dHlwZSBcXHUwMDI2PSBTT0NLX1RZUEVfTUFTSztcXG4xODUwOlxcdFxcbjE4NTE6XFx0XFx0aWYgKFNPQ0tfTk9OQkxPQ0sgIT0gT19OT05CTE9DSyBcXHUwMDI2XFx1MDAyNiAoZmxhZ3MgXFx1MDAyNiBTT0NLX05PTkJMT0NLKSlcXG4xODUyOlxcdFxcdFxcdGZsYWdzID0gKGZsYWdzIFxcdTAwMjYgflNPQ0tfTk9OQkxPQ0spIHwgT19OT05CTE9DSztcXG4xODUzOlxcdFxcbjE4NTQ6XFx0XFx0LyogUmVzZXJ2ZSBib3RoIGRlc2NyaXB0b3JzIGJlZm9yZSBjcmVhdGluZyB0aGUgc29ja2V0cy4gKi9cXG4xODU1OlxcdFxcdGZkMSA9IGdldF91bnVzZWRfZmRfZmxhZ3MoZmxhZ3MpO1xcbjE4NTY6XFx0XFx0aWYgKHVubGlrZWx5KGZkMSBcXHUwMDNjIDApKVxcbjE4NTc6XFx0XFx0XFx0cmV0dXJuIGZkMTtcXG4xODU4OlxcdFxcbjE4NTk6XFx0XFx0ZmQyID0gZ2V0X3VudXNlZF9mZF9mbGFncyhmbGFncyk7XFxuMTg2MDpcXHRcXHRpZiAodW5saWtlbHkoZmQyIFxcdTAwM2MgMCkpIHtcXG4xODYxOlxcdFxcdFxcdHB1dF91bnVzZWRfZmQoZmQxKTtcXG4xODYyOlxcdFxcdFxcdHJldHVybiBmZDI7XFxuMTg2MzpcXHRcXHR9XFxuMTg2NDpcXHRcXG4xODY1OlxcdFxcdC8qXFxuMTg2NjpcXHRcXHQgKiBPYnRhaW4gdGhlIGZpcnN0IHNvY2tldCBhbmQgY2hlY2sgaWYgdGhlIHVuZGVybHlpbmcgcHJvdG9jb2xcXG4xODY3OlxcdFxcdCAqIHN1cHBvcnRzIHRoZSBzb2NrZXRwYWlyIGNhbGwuXFxuMTg2ODpcXHRcXHQgKi9cXG4xODY5OlxcdFxcbjE4NzA6XFx0XFx0ZXJyID0gc29ja19jcmVhdGUoZmFtaWx5LCB0eXBlLCBwcm90b2NvbCwgXFx1MDAyNnNvY2sxKTtcXG4xODcxOlxcdFxcdGlmICh1bmxpa2VseShlcnIgXFx1MDAzYyAwKSlcXG4xODcyOlxcdFxcdFxcdGdvdG8gb3V0O1xcbjE4NzM6XFx0XFxuMTg3NDpcXHRcXHRlcnIgPSBzb2NrX2NyZWF0ZShmYW1pbHksIHR5cGUsIHByb3RvY29sLCBcXHUwMDI2c29jazIpO1xcbjE4NzU6XFx0XFx0aWYgKHVubGlrZWx5KGVyciBcXHUwMDNjIDApKSB7XFxuMTg3NjpcXHRcXHRcXHRzb2NrX3JlbGVhc2Uoc29jazEpO1xcbjE4Nzc6XFx0XFx0XFx0Z290byBvdXQ7XFxuMTg3ODpcXHRcXHR9XFxuMTg3OTpcXHRcXG4xODgwOlxcdFxcdGVyciA9IHNlY3VyaXR5X3NvY2tldF9zb2NrZXRwYWlyKHNvY2sxLCBzb2NrMik7XFxuMTg4MTpcXHRcXHRpZiAodW5saWtlbHkoZXJyKSkge1xcbjE4ODI6XFx0XFx0XFx0c29ja19yZWxlYXNlKHNvY2syKTtcXG4xODgzOlxcdFxcdFxcdHNvY2tfcmVsZWFzZShzb2NrMSk7XFxuMTg4NDpcXHRcXHRcXHRnb3RvIG91dDtcXG4xODg1OlxcdFxcdH1cXG4xODg2OlxcdFxcbjE4ODc6XFx0XFx0ZXJyID0gUkVBRF9PTkNFKHNvY2sxLVxcdTAwM2VvcHMpLVxcdTAwM2Vzb2NrZXRwYWlyKHNvY2sxLCBzb2NrMik7XFxuMTg4ODpcXHRcXHRpZiAodW5saWtlbHkoZXJyIFxcdTAwM2MgMCkpIHtcXG4xODg5OlxcdFxcdFxcdHNvY2tfcmVsZWFzZShzb2NrMik7XFxuMTg5MDpcXHRcXHRcXHRzb2NrX3JlbGVhc2Uoc29jazEpO1xcbjE4OTE6XFx0XFx0XFx0Z290byBvdXQ7XFxuMTg5MjpcXHRcXHR9XFxuMTg5MzpcXHRcXG4xODk0OlxcdFxcdG5ld2ZpbGUxID0gc29ja19hbGxvY19maWxlKHNvY2sxLCBmbGFncywgTlVMTCk7XFxuMTg5NTpcXHRcXHRpZiAoSVNfRVJSKG5ld2ZpbGUxKSkge1xcbjE4OTY6XFx0XFx0XFx0ZXJyID0gUFRSX0VSUihuZXdmaWxlMSk7XFxuMTg5NzpcXHRcXHRcXHRzb2NrX3JlbGVhc2Uoc29jazIpO1xcbjE4OTg6XFx0XFx0XFx0Z290byBvdXQ7XFxuMTg5OTpcXHRcXHR9XFxuMTkwMDpcXHRcXG4xOTAxOlxcdFxcdG5ld2ZpbGUyID0gc29ja19hbGxvY19maWxlKHNvY2syLCBmbGFncywgTlVMTCk7XFxuMTkwMjpcXHRcXHRpZiAoSVNfRVJSKG5ld2ZpbGUyKSkge1xcbjE5MDM6XFx0XFx0XFx0ZXJyID0gUFRSX0VSUihuZXdmaWxlMik7XFxuMTkwNDpcXHRcXHRcXHRmcHV0KG5ld2ZpbGUxKTtcXG4xOTA1OlxcdFxcdFxcdGdvdG8gb3V0O1xcbjE5MDY6XFx0XFx0fVxcbjE5MDc6XFx0XFxuMTkwODpcXHRcXHQvKiBQdWJsaXNoIHRoZSBkZXNjcmlwdG9ycyBub3cgdGhhdCBpdCBzaG91bGRuJ3QgZmFpbC4gKi9cXG4xOTA5OlxcdFxcdGVyciA9IHB1dF91c2VyKGZkMSwgXFx1MDAyNnVzb2NrdmVjWzBdKTtcXG4xOTEwOlxcdFxcdGlmICghZXJyKVxcbjE5MTE6XFx0XFx0XFx0ZXJyID0gcHV0X3VzZXIoZmQyLCBcXHUwMDI2dXNvY2t2ZWNbMV0pO1xcbjE5MTI6XFx0XFx0aWYgKGVycikge1xcbjE5MTM6XFx0XFx0XFx0ZnB1dChuZXdmaWxlMik7XFxuMTkxNDpcXHRcXHRcXHRmcHV0KG5ld2ZpbGUxKTtcXG4xOTE1OlxcdFxcdFxcdGdvdG8gb3V0O1xcbjE5MTY6XFx0XFx0fVxcbjE5MTc6XFx0XFxuMTkxODpcXHRcXHRhdWRpdF9mZF9wYWlyKGZkMSwgZmQyKTtcXG4xOTE5OlxcdFxcbjE5MjA6XFx0XFx0ZmRfaW5zdGFsbChmZDEsIG5ld2ZpbGUxKTtcXG4xOTIxOlxcdFxcdGZkX2luc3RhbGwoZmQyLCBuZXdmaWxlMik7XFxuMTkyMjpcXHRcXHRyZXR1cm4gMDtcXG4xOTIzOlxcdFxcbjE5MjQ6XFx0b3V0OlxcbjE5MjU6XFx0XFx0cHV0X3VudXNlZF9mZChmZDIpO1xcbjE5MjY6XFx0XFx0cHV0X3VudXNlZF9mZChmZDEpO1xcbjE5Mjc6XFx0XFx0cmV0dXJuIGVycjtcXG4xOTI4OlxcdH1cXG4xOTI5OlxcdFxcbjE5MzA6XFx0U1lTQ0FMTF9ERUZJTkU0KHNvY2tldHBhaXIsIGludCwgZmFtaWx5LCBpbnQsIHR5cGUsIGludCwgcHJvdG9jb2wsXFxuMTkzMTpcXHRcXHRcXHRpbnQgX191c2VyICosIHVzb2NrdmVjKVxcbjE5MzI6XFx0e1xcbjE5MzM6XFx0XFx0cmV0dXJuIF9fc3lzX3NvY2tldHBhaXIoZmFtaWx5LCB0eXBlLCBwcm90b2NvbCwgdXNvY2t2ZWMpO1xcbjE5MzQ6XFx0fVxcbjE5MzU6XFx0XFxuMTkzNjpcXHRpbnQgX19zeXNfYmluZF9zb2NrZXQoc3RydWN0IHNvY2tldCAqc29jaywgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKmFkZHJlc3MsXFxuMTkzNzpcXHRcXHRcXHQgICAgICBpbnQgYWRkcmxlbilcXG4xOTM4OlxcdHtcXG4xOTM5OlxcdFxcdGludCBlcnI7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE5OjQ0OjM3Ljk5MTUzNjY0OFoiLCJTZXEiOjIxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1OTI2OTczMjAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBTb2NrZXRwYWlyIFBhdGNoIGFuZCBLTVNBTiBBcHBsaWNhYmlsaXR5KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBUaGUgY29yZSBpc3N1ZSBpcyB0aGUgb3JpZ2luYWwgb3JkZXIgb2Ygb3BlcmF0aW9ucyBpbiBgX19zeXNfc29ja2V0cGFpcmAuIFRoZSBvbGQgY29kZSB3YXMgd3JpdGluZyBmaWxlIGRlc2NyaXB0b3IgbnVtYmVycyB0byB1c2VyIHNwYWNlICpiZWZvcmUqIGFjdHVhbGx5IGNvbXBsZXRpbmcgc29ja2V0IGNyZWF0aW9uIGFuZCBmaWxlIGFsbG9jYXRpb24sIGluY2x1ZGluZyBhbGwgdGhlIHNlY3VyaXR5IGNoZWNrcyBhbmQgcHJvdG9jb2wgY2FsbGJhY2tzLiBUaGlzIGNyZWF0ZWQgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gYW5kIGEgcG9zc2libGUgaW5mb3JtYXRpb24gbGVhazogaWYgc29tZXRoaW5nIHdlbnQgd3JvbmcgKmFmdGVyKiBgcHV0X3VzZXJgIGJ1dCAqYmVmb3JlKiB0aGUgc2V0dXAgd2FzIGNvbXBsZXRlLCB1c2VyIHNwYWNlIHdvdWxkIGhhdmUgb2JzZXJ2ZWQgdGhlc2UgcG90ZW50aWFsbHkgaW52YWxpZCBmaWxlIGRlc2NyaXB0b3JzLiBUaGUgcGF0Y2ggYWltcyB0byBmaXggdGhpcy5cblxuTm93LCB0aGUgcGF0Y2ggbW92ZXMgdGhvc2UgYHB1dF91c2VyYCBjYWxsc+KAlHdoZXJlIHdlIHdyaXRlIHRoZSBmaWxlIGRlc2NyaXB0b3JzIHRvIHVzZXIgc3BhY2XigJR0byB0aGUgZW5kLCAqcmlnaHQqIGJlZm9yZSB3ZSBpbnN0YWxsIHRoZSBmaWxlIGRlc2NyaXB0b3JzIHVzaW5nIGBmZF9pbnN0YWxsYC4gVGhpcyBpcyBhIHByZXR0eSBzdHJhaWdodGZvcndhcmQgZml4IHRvIGFkZHJlc3MgdGhpcyBmbGF3LiBFc3NlbnRpYWxseSwgaWYgYSBmYWlsdXJlIG9jY3VycywgdGhlIGNvZGUgY29ycmVjdGx5IGhhbmRsZXMgdGhpcyBhbmQgY2xlYW5zIHVwIHRoZSBuZXdseS1jcmVhdGVkIGZpbGVzIGFuZCBzb2NrZXRzLlxuXG5NeSBuZXh0IHRhc2sgaXMgdG8gdmVyaWZ5IHRoYXQgdGhpcyBjaGFuZ2UgZG9lc24ndCBpbnRyb2R1Y2UgYW55IG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMuIExldCdzIHdhbGsgdGhyb3VnaCB0aGUgdmFyaWFibGVzIGludm9sdmVkOlxuXG4qICAgYGZkMWAgYW5kIGBmZDJgOiBUaGVzZSBhcmUgaW50ZWdlcnMgcmV0dXJuZWQgZnJvbSBgZ2V0X3VudXNlZF9mZF9mbGFncyhmbGFncylgLiBDcnVjaWFsbHksIHRoZXkgYXJlIGNoZWNrZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGNhbGwgZm9yIGVycm9yIGNvbmRpdGlvbnMgYW5kIGFyZSB0aGVyZWZvcmUgZGVmaW5pdGVseSBpbml0aWFsaXplZCBpbnRlZ2VyIHZhbHVlcy4gVGhlIHN1YnNlcXVlbnQgYHB1dF91c2VyYCBjYWxscyBzaW1wbHkgd3JpdGUgdGhlc2UgaW5pdGlhbGl6ZWQgaW50ZWdlcnMgdG8gdXNlciBzcGFjZS5cblxuKiAgIE5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdpdGggcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCBmaWVsZHMgYXJlIHVzZWQuIFRoZSB2YXJpYWJsZXMgYXJlIHByaW1pdGl2ZSB0eXBlcywgd2hpY2ggbWVhbnMgdGhlcmUgYXJlIG5vIGNvbmNlcm5zIGFib3V0IHVuaW5pdGlhbGl6ZWQgc3RydWN0IGZpZWxkcywgc3RhY2sgdmFyaWFibGVzLCBvciBwb3RlbnRpYWwgaW5mb3JtYXRpb24gbGVha3Mgb2YgdW5pbml0aWFsaXplZCBkYXRhLlxuXG5UaGlzIGlzIGFsbCBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIGFuZCBJIGFtIGNvbmZpZGVudCB0aGF0IEtNU0FOIGRvZXNuJ3QgbmVlZCB0byBiZSBjb25jZXJuZWQgd2l0aCB0aGlzIHBhdGNoLiBUaGlzIGNoYW5nZSBvbmx5IHJlb3JkZXJzIHRoZSBlcnJvciBoYW5kbGluZyBhbmQgdGhlIHRpbWluZyBvZiBgcHV0X3VzZXJgIGFuZCBgZnB1dGAgY2FsbHMsIHNvIHRoaXMgZG9lc24ndCBpbnRyb2R1Y2UgYW55IG5ldyByaXNrcywgc3VjaCBhcyBpc3N1ZXMgd2l0aCBkb3VibGUgYGZwdXRgLCB1c2UtYWZ0ZXItZnJlZSwgb3IgdW5pbml0aWFsaXplZCBtZW1vcnkgdGhhdCBjYW4gYmUgZXhwb3NlZC4gRnVydGhlcm1vcmUsIEtBU0FOIGFuZCBzdGFuZGFyZCBrZXJuZWwgbWVjaGFuaXNtcyB3aWxsIGJlIGFibGUgdG8gY2F0Y2ggYW55IHBvdGVudGlhbCBpc3N1ZXMuXG5cblRoZXJlZm9yZSwgc2luY2UgdGhlIHZhcmlhYmxlcyBhcmUgZXhwbGljaXRseSBpbml0aWFsaXplZCBiZWZvcmUgYmVpbmcgd3JpdHRlbiB0byB1c2VyIHNwYWNlLCBhbmQgdGhlIGNoYW5nZXMgYXJlIGxpbWl0ZWQgdG8gY29udHJvbCBmbG93IGFuZCB0aGUgdGltaW5nIG9mIGBwdXRfdXNlcmAsIEkndmUgdmVyaWZpZWQgdGhhdCB0aGUgYE5lZWRzS01TQU5gIGZsYWcgY2FuIHJlbWFpbiBgZmFsc2VgLlxuXG5HaXZlbiB0aGlzLCBJIGFtIGNvbWZvcnRhYmxlIHdyaXRpbmcgYSBkZXRhaWxlZCBhbmQgc3RydWN0dXJlZCBLTVNBTlJlYXNvbmluZyBqdXN0aWZ5aW5nIHRoaXMgY29uY2x1c2lvbi4gVGhlIG1haW4gZ29hbCBoZXJlIGlzIHRvIGVuc3VyZSB0aGF0IHRoZSB1c2VyIGNhbiB1bmRlcnN0YW5kIHdoeSB0aGUgcGF0Y2ggaXMgY29uc2lkZXJlZCBzYWZlIGluIHRlcm1zIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTA5LCJPdXRwdXRUb2tlbnMiOjIxMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjYxOSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDE5OjQ0OjQzLjkxODUxMjg5MloiLCJTZXEiOjIyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fc3lzX3NvY2tldHBhaXJgIHRvIGRlZmVyIGNvcHlpbmcgZmlsZSBkZXNjcmlwdG9yIG51bWJlcnMgKGBmZDFgIGFuZCBgZmQyYCkgdG8gdXNlcnNwYWNlIChgdXNvY2t2ZWNgKSB1bnRpbCBhZnRlciBzb2NrZXQgY3JlYXRpb24sIHByb3RvY29sIHNldHVwLCBhbmQgZmlsZSBhbGxvY2F0aW9uIGhhdmUgc3VjY2VlZGVkLlxcblxcbi0gVGhlIHZhbHVlcyB3cml0dGVuIHRvIHVzZXJzcGFjZSB2aWEgYHB1dF91c2VyYCBhcmUgc2ltcGxlIHNjYWxhciBpbnRlZ2VycyAoYGZkMWAsIGBmZDJgKSByZXR1cm5lZCBkaXJlY3RseSBmcm9tIGBnZXRfdW51c2VkX2ZkX2ZsYWdzKClgLCB3aGljaCBhcmUgZnVsbHkgaW5pdGlhbGl6ZWQgYW5kIHZhbGlkYXRlZCBwcmlvciB0byB1c2UuXFxuLSBObyBuZXcgdW5pbml0aWFsaXplZCBoZWFwIG9yIHN0YWNrIGJ1ZmZlcnMsIHVuaW5pdGlhbGl6ZWQgc3RydWN0IHBhZGRpbmcsIG9yIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgcmVhZHMgYXJlIGludHJvZHVjZWQuXFxuLSBBbnkgcG90ZW50aWFsIHJlc291cmNlIG1hbmFnZW1lbnQgb3IgbGlmZWN5Y2xlIGJ1Z3MgKHN1Y2ggYXMgZmQvZmlsZSBjbGVhbnVwIG9yIHJlZmNvdW50aW5nIGlzc3VlcyBvbiBlcnJvciBwYXRocykgYXJlIGFkZHJlc3NlZCBieSBzdGFuZGFyZCBzYW5pdGl6ZXJzIChLQVNBTiwgcmVmY291bnQgY2hlY2tzKS5cXG5cXG5Db25zZXF1ZW50bHksIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzLCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgYF9fc3lzX3NvY2tldHBhaXJgIHRvIGRlZmVyIGNvcHlpbmcgZmlsZSBkZXNjcmlwdG9yIG51bWJlcnMgKGBmZDFgIGFuZCBgZmQyYCkgdG8gdXNlcnNwYWNlIChgdXNvY2t2ZWNgKSB1bnRpbCBhZnRlciBzb2NrZXQgY3JlYXRpb24sIHByb3RvY29sIHNldHVwLCBhbmQgZmlsZSBhbGxvY2F0aW9uIGhhdmUgc3VjY2VlZGVkLlxcblxcbi0gVGhlIHZhbHVlcyB3cml0dGVuIHRvIHVzZXJzcGFjZSB2aWEgYHB1dF91c2VyYCBhcmUgc2ltcGxlIHNjYWxhciBpbnRlZ2VycyAoYGZkMWAsIGBmZDJgKSByZXR1cm5lZCBkaXJlY3RseSBmcm9tIGBnZXRfdW51c2VkX2ZkX2ZsYWdzKClgLCB3aGljaCBhcmUgZnVsbHkgaW5pdGlhbGl6ZWQgYW5kIHZhbGlkYXRlZCBwcmlvciB0byB1c2UuXFxuLSBObyBuZXcgdW5pbml0aWFsaXplZCBoZWFwIG9yIHN0YWNrIGJ1ZmZlcnMsIHVuaW5pdGlhbGl6ZWQgc3RydWN0IHBhZGRpbmcsIG9yIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgcmVhZHMgYXJlIGludHJvZHVjZWQuXFxuLSBBbnkgcG90ZW50aWFsIHJlc291cmNlIG1hbmFnZW1lbnQgb3IgbGlmZWN5Y2xlIGJ1Z3MgKHN1Y2ggYXMgZmQvZmlsZSBjbGVhbnVwIG9yIHJlZmNvdW50aW5nIGlzc3VlcyBvbiBlcnJvciBwYXRocykgYXJlIGFkZHJlc3NlZCBieSBzdGFuZGFyZCBzYW5pdGl6ZXJzIChLQVNBTiwgcmVmY291bnQgY2hlY2tzKS5cXG5cXG5Db25zZXF1ZW50bHksIHRoZXJlIGFyZSBubyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzLCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowsz9mm[1] Phase: Succeeded StartedAt: 2026-09-10 19:44:55 +0000 UTC FinishedAt: 2026-09-10 19:44:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsz9mm[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-10 19:44:55 +0000 UTC FinishedAt: 2026-09-10 19:44:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsz9mm[2] Phase: Succeeded StartedAt: 2026-09-10 19:44:55 +0000 UTC FinishedAt: 2026-09-10 23:27:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsz9mm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__sys_socketpair","unix_socketpair"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"1ba08323-d282-46d6-a5ec-142a7e190a27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-09-10 19:44:55 +0000 UTC FinishedAt: 2026-09-10 23:27:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__sys_socketpair","unix_socketpair"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"1ba08323-d282-46d6-a5ec-142a7e190a27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowsz9mm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__sys_socketpair","unix_socketpair"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"1ba08323-d282-46d6-a5ec-142a7e190a27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-10 19:44:55 +0000 UTC FinishedAt: 2026-09-10 19:45:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsz9mm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__sys_socketpair","unix_socketpair"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"1ba08323-d282-46d6-a5ec-142a7e190a27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-10 19:44:55 +0000 UTC FinishedAt: 2026-09-10 19:45:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowsz9mm/series-workflowsz9mm-convert-artifact-1228866872/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsz9mm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__sys_socketpair","unix_socketpair"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"1ba08323-d282-46d6-a5ec-142a7e190a27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-10 19:45:05 +0000 UTC FinishedAt: 2026-09-10 20:05:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsz9mm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__sys_socketpair","unix_socketpair"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"1ba08323-d282-46d6-a5ec-142a7e190a27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-10 19:45:05 +0000 UTC FinishedAt: 2026-09-10 20:05:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*db81a620-a091-43d4-851b-d01c88fb66bf,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowsz9mm/series-workflowsz9mm-convert-artifact-1228866872/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "fbe2ded0-fcc6-4677-876d-a11d9a5b2e07", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowsz9mm/series-workflowsz9mm-build-action-3614460654/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsz9mm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__sys_socketpair","unix_socketpair"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"1ba08323-d282-46d6-a5ec-142a7e190a27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-10 19:45:05 +0000 UTC FinishedAt: 2026-09-10 20:04:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*db81a620-a091-43d4-851b-d01c88fb66bf,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowsz9mm/series-workflowsz9mm-convert-artifact-1228866872/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "fbe2ded0-fcc6-4677-876d-a11d9a5b2e07", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowsz9mm/series-workflowsz9mm-build-action-3614460654/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsz9mm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__sys_socketpair","unix_socketpair"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"1ba08323-d282-46d6-a5ec-142a7e190a27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-10 20:05:04 +0000 UTC FinishedAt: 2026-09-10 20:05:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsz9mm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__sys_socketpair","unix_socketpair"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"1ba08323-d282-46d6-a5ec-142a7e190a27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-10 20:05:04 +0000 UTC FinishedAt: 2026-09-10 20:05:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsz9mm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__sys_socketpair","unix_socketpair"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"1ba08323-d282-46d6-a5ec-142a7e190a27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-10 20:05:04 +0000 UTC FinishedAt: 2026-09-10 20:05:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsz9mm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__sys_socketpair","unix_socketpair"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"1ba08323-d282-46d6-a5ec-142a7e190a27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-10 20:05:04 +0000 UTC FinishedAt: 2026-09-10 20:05:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"1ba08323-d282-46d6-a5ec-142a7e190a27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowsz9mm/series-workflowsz9mm-convert-artifact-3909787295/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsz9mm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__sys_socketpair","unix_socketpair"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"1ba08323-d282-46d6-a5ec-142a7e190a27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-10 20:05:14 +0000 UTC FinishedAt: 2026-09-10 20:07:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsz9mm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__sys_socketpair","unix_socketpair"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"1ba08323-d282-46d6-a5ec-142a7e190a27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-10 20:05:14 +0000 UTC FinishedAt: 2026-09-10 20:07:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*fbe2ded0-fcc6-4677-876d-a11d9a5b2e07,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowsz9mm/series-workflowsz9mm-build-action-3614460654/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowsz9mm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__sys_socketpair","unix_socketpair"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"1ba08323-d282-46d6-a5ec-142a7e190a27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-10 20:07:20 +0000 UTC FinishedAt: 2026-09-10 20:07:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsz9mm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__sys_socketpair","unix_socketpair"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"1ba08323-d282-46d6-a5ec-142a7e190a27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-10 20:07:20 +0000 UTC FinishedAt: 2026-09-10 20:07:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsz9mm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__sys_socketpair","unix_socketpair"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"1ba08323-d282-46d6-a5ec-142a7e190a27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-10 20:07:20 +0000 UTC FinishedAt: 2026-09-10 20:23:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsz9mm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__sys_socketpair","unix_socketpair"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"1ba08323-d282-46d6-a5ec-142a7e190a27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-10 20:07:20 +0000 UTC FinishedAt: 2026-09-10 20:23:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*db81a620-a091-43d4-851b-d01c88fb66bf,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowsz9mm/series-workflowsz9mm-convert-artifact-3909787295/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "16cb0183-ae2b-4b54-9227-6744846e8411", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowsz9mm/series-workflowsz9mm-build-action-1310093619/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsz9mm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__sys_socketpair","unix_socketpair"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"1ba08323-d282-46d6-a5ec-142a7e190a27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-10 20:07:20 +0000 UTC FinishedAt: 2026-09-10 20:23:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*db81a620-a091-43d4-851b-d01c88fb66bf,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowsz9mm/series-workflowsz9mm-convert-artifact-3909787295/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "16cb0183-ae2b-4b54-9227-6744846e8411", "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowsz9mm/series-workflowsz9mm-build-action-1310093619/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsz9mm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__sys_socketpair","unix_socketpair"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"1ba08323-d282-46d6-a5ec-142a7e190a27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-09-10 20:23:46 +0000 UTC FinishedAt: 2026-09-10 20:23:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsz9mm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__sys_socketpair","unix_socketpair"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"1ba08323-d282-46d6-a5ec-142a7e190a27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-09-10 20:23:46 +0000 UTC FinishedAt: 2026-09-10 20:23:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsz9mm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__sys_socketpair","unix_socketpair"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"1ba08323-d282-46d6-a5ec-142a7e190a27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-09-10 20:23:46 +0000 UTC FinishedAt: 2026-09-10 20:25:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsz9mm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__sys_socketpair","unix_socketpair"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"1ba08323-d282-46d6-a5ec-142a7e190a27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-09-10 20:23:46 +0000 UTC FinishedAt: 2026-09-10 20:25:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*16cb0183-ae2b-4b54-9227-6744846e8411,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowsz9mm/series-workflowsz9mm-build-action-1310093619/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowsz9mm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__sys_socketpair","unix_socketpair"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"1ba08323-d282-46d6-a5ec-142a7e190a27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-09-10 20:25:52 +0000 UTC FinishedAt: 2026-09-10 23:27:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsz9mm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__sys_socketpair","unix_socketpair"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"1ba08323-d282-46d6-a5ec-142a7e190a27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-09-10 20:25:52 +0000 UTC FinishedAt: 2026-09-10 23:27:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__sys_socketpair","unix_socketpair"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*fbe2ded0-fcc6-4677-876d-a11d9a5b2e07,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*16cb0183-ae2b-4b54-9227-6744846e8411,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowsz9mm/series-workflowsz9mm-build-action-3614460654/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowsz9mm/series-workflowsz9mm-build-action-1310093619/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowsz9mm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__sys_socketpair","unix_socketpair"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"1ba08323-d282-46d6-a5ec-142a7e190a27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-09-10 20:25:52 +0000 UTC FinishedAt: 2026-09-10 20:26:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsz9mm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__sys_socketpair","unix_socketpair"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"1ba08323-d282-46d6-a5ec-142a7e190a27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-09-10 20:25:52 +0000 UTC FinishedAt: 2026-09-10 20:25:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__sys_socketpair","unix_socketpair"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowsz9mm/series-workflowsz9mm-convert-artifact-1208723640/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowsz9mm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__sys_socketpair","unix_socketpair"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"1ba08323-d282-46d6-a5ec-142a7e190a27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-09-10 20:25:52 +0000 UTC FinishedAt: 2026-09-10 20:25:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsz9mm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__sys_socketpair","unix_socketpair"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"1ba08323-d282-46d6-a5ec-142a7e190a27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-09-10 20:25:52 +0000 UTC FinishedAt: 2026-09-10 20:25:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsz9mm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__sys_socketpair","unix_socketpair"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"1ba08323-d282-46d6-a5ec-142a7e190a27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-09-10 20:25:52 +0000 UTC FinishedAt: 2026-09-10 20:25:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsz9mm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__sys_socketpair","unix_socketpair"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"1ba08323-d282-46d6-a5ec-142a7e190a27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-09-10 20:26:02 +0000 UTC FinishedAt: 2026-09-10 23:27:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowsz9mm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__sys_socketpair","unix_socketpair"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"2ac09b5353fe6858411fdc8c6efa60d832e20f13","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET","UNIX"],"series_id":"1ba08323-d282-46d6-a5ec-142a7e190a27","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-09-10 20:26:02 +0000 UTC FinishedAt: 2026-09-10 23:27:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*fbe2ded0-fcc6-4677-876d-a11d9a5b2e07,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*16cb0183-ae2b-4b54-9227-6744846e8411,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowsz9mm/series-workflowsz9mm-build-action-3614460654/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowsz9mm/series-workflowsz9mm-build-action-1310093619/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowsz9mm/series-workflowsz9mm-convert-artifact-1208723640/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}