Name: series-workflow98gh2 Phase: Succeeded StartedAt: 2026-09-10 08:25:11 +0000 UTC FinishedAt: 2026-09-10 09:28:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98gh2[0] Phase: Succeeded StartedAt: 2026-09-10 08:25:11 +0000 UTC FinishedAt: 2026-09-10 08:43:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98gh2[0].run-triage Phase: Succeeded StartedAt: 2026-09-10 08:25:11 +0000 UTC FinishedAt: 2026-09-10 08:43:15 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "13e51269b6656768dc595ed6025e4974f2026543", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH10K", "ATH10K_USB", "ATH10K_DEBUGFS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "13e51269b6656768dc595ed6025e4974f2026543", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH10K", "ATH10K_USB", "ATH10K_DEBUGFS" ], "series_id": "576ba9bc-1756-4f5a-9fa2-c13dc11f2a6d" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ath10k_htt_rx_proc_rx_frag_ind_hl", "ath10k_reg_value_write", "ath10k_mem_value_write", "ath10k_htt_t2h_msg_handler" ], "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+CgkJCTx0ZD4yMDI2LzA5LzEwIDA4OjQxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDEwSyYjMzQ7LAogICAgJiMzNDtBVEgxMEtfVVNCJiMzNDssCiAgICAmIzM0O0FUSDEwS19ERUJVR0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsJiMzNDssCiAgICAmIzM0O2F0aDEwa19yZWdfdmFsdWVfd3JpdGUmIzM0OywKICAgICYjMzQ7YXRoMTBrX21lbV92YWx1ZV93cml0ZSYjMzQ7LAogICAgJiMzNDthdGgxMGtfaHR0X3QyaF9tc2dfaGFuZGxlciYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGFuZCB2YWxpZGl0eSBjaGVja3MgaW4gYXRoMTBrIGRlYnVnZnMgd3JpdGUgaGFuZGxlcnMgKGF0aDEwa19yZWdfdmFsdWVfd3JpdGUsIGF0aDEwa19tZW1fdmFsdWVfd3JpdGUpIGFuZCBpbiB0aGUgSFRUIFJYIGZyYWdtZW50IHByb2Nlc3NpbmcgZnVuY3Rpb24gKGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obCkuIFxuXG5TcGVjaWZpY2FsbHk6XG4tIFJlZ2lzdGVyIGFkZHJlc3MgYW5kIG1lbW9yeSBvZmZzZXQvY291bnQgdmFsaWRhdGlvbnMgcHJldmVudCBvdXQtb2YtYm91bmRzIEhJRiBkaWFnbm9zdGljcyBhbmQgcmVnaXN0ZXIgd3JpdGVzLlxuLSBMZW5ndGggY2hlY2tzIG9uIHNrYiBhbmQgaGVhZGVyIG9mZnNldHMgaW4gYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyBpbnRvIHNrYiBidWZmZXIgZGF0YS5cbi0gQW55IHBvdGVudGlhbCBlcnJvci1wYXRoIGlzc3VlcyAoc3VjaCBhcyBlYXJseSByZXR1cm4gd2l0aG91dCB1bmxvY2tpbmcgY29uZl9tdXRleCkgYXJlIGxvY2tpbmcgYnVncyBkZXRlY3RlZCBieSBMT0NLREVQLlxuXG5ObyB1bmluaXRpYWxpemVkIG1lbW9yeSBhbGxvY2F0aW9ucywgcmVhZHMgb2YgdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIGZpZWxkcywgb3Iga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MgYXJlIGludHJvZHVjZWQgb3IgZXhwb3NlZC4gVGhlcmVmb3JlLCBzdGFuZGFyZCBLQVNBTiBhbmQgTE9DS0RFUCBjb25maWd1cmF0aW9ucyBhcmUgZnVsbHkgc3VmZmljaWVudCwgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kYXJ5IGFuZCBsZW5ndGggdmFsaWRhdGlvbiBjaGVja3MgdG8gYXRoMTBrIGRlYnVnZnMgd3JpdGUgaGFuZGxlcnMgKGF0aDEwa19yZWdfdmFsdWVfd3JpdGUsIGF0aDEwa19tZW1fdmFsdWVfd3JpdGUpIGFuZCBSWCBmcmFnbWVudCBwYWNrZXQgcHJvY2Vzc2luZyBpbiBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGwuIEF0aDEwayBzdXBwb3J0cyBVU0IgZGV2aWNlcyAoQVRIMTBLX1VTQikgYW5kIGRlYnVnZnMgb3BlcmF0aW9ucywgd2hpY2ggY2FuIGJlIHJlYWNoZWQgYW5kIGZ1enplZCB2aWEgVVNCIGVtdWxhdGlvbiAoUmF3IEdhZGdldCkgYW5kIGRlYnVnZnMgaW50ZXJmYWNlcyBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwODo0MTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDBjMWUyNjkxMWQxZjU4NGQ1YzBiYzE5YjBhNmU0ZDJlY2NhMDZlNzhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IFNlcCAxMCAwODo0MTozMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmNcbmluZGV4IGZiNjFlNTNmZjRjMzQuLjUwZTAxNzAyMTFiODEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuY1xuQEAgLTcyOSw2ICYjNDM7NzI5LDEzIEBAIHN0YXRpYyBzc2l6ZV90IGF0aDEwa19yZWdfdmFsdWVfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsXG4gXG4gXHRyZWdfYWRkciA9IGFyLVx1MDAzZWRlYnVnLnJlZ19hZGRyO1xuIFxuJiM0MztcdC8qIEZJWDogVmFsaWRhdGUgcmVnaXN0ZXIgYWRkcmVzcyAqL1xuJiM0MztcdGlmIChyZWdfYWRkciBcdTAwM2UgYXItXHUwMDNlaHdfcGFyYW1zLnJlZ19zaXplKSB7XG4mIzQzO1x0XHRhdGgxMGtfd2FybihhciwgXCYjMzQ7SW52YWxpZCByZWdpc3RlciBhZGRyZXNzIDB4JTA4eFxcblwmIzM0OywgcmVnX2FkZHIpO1xuJiM0MztcdFx0cmV0ID0gLUVJTlZBTDtcbiYjNDM7XHRcdGdvdG8gZXhpdDtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0cmV0ID0ga3N0cnRvdTMyX2Zyb21fdXNlcih1c2VyX2J1ZiwgY291bnQsIDAsIFx1MDAyNnJlZ192YWwpO1xuIFx0aWYgKHJldClcbiBcdFx0Z290byBleGl0O1xuQEAgLTgxOSw2ICYjNDM7ODI2LDE5IEBAIHN0YXRpYyBzc2l6ZV90IGF0aDEwa19tZW1fdmFsdWVfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsXG4gXG4gXHRtdXRleF9sb2NrKFx1MDAyNmFyLVx1MDAzZWNvbmZfbXV0ZXgpO1xuIFxuJiM0MztcdC8qIEZJWDogVmFsaWRhdGUgYWRkcmVzcyBhZ2FpbnN0IG1lbW9yeSBzaXplICovXG4mIzQzO1x0aWYgKCpwcG9zIFx1MDAzZSBhci1cdTAwM2Vod19wYXJhbXMubWVtX3NpemUpIHtcbiYjNDM7XHRcdGF0aDEwa193YXJuKGFyLCBcJiMzNDtJbnZhbGlkIGFkZHJlc3MgMHglMDh4IGZvciBtZW1fdmFsdWVcXG5cJiMzNDssICh1MzIpKnBwb3MpO1xuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHQvKiBGSVg6IFZhbGlkYXRlIHNpemUgYWdhaW5zdCByZW1haW5pbmcgbWVtb3J5ICovXG4mIzQzO1x0aWYgKGNvdW50IFx1MDAzZSBhci1cdTAwM2Vod19wYXJhbXMubWVtX3NpemUgLSAqcHBvcykge1xuJiM0MztcdFx0YXRoMTBrX3dhcm4oYXIsIFwmIzM0O0ludmFsaWQgc2l6ZSAlenUgZm9yIG1lbV92YWx1ZSBhdCAweCUwOHhcXG5cJiMzNDssXG4mIzQzO1x0XHRcdCAgICBjb3VudCwgKHUzMikqcHBvcyk7XG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0YnVmID0gdm1hbGxvYyhjb3VudCk7XG4gXHRpZiAoIWJ1Zikge1xuIFx0XHRyZXQgPSAtRU5PTUVNO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jXG5pbmRleCBhYjJkMzczYjQ3NTBkLi40ZmFiYjkyNjQ3ZDlmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguY1xuQEAgLTI3NzUsNiAmIzQzOzI3NzUsMTMgQEAgc3RhdGljIGJvb2wgYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsKHN0cnVjdCBhdGgxMGtfaHR0ICpodHQsXG4gXHRzdHJ1Y3QgaHR0X3Jlc3AgKnJlc3A7XG4gXHRzaXplX3QgdG90X2hkcl9sZW47XG4gXG4mIzQzO1xuJiM0MztcdC8qIEZJWDogVmFsaWRhdGUgc2tiIGxlbmd0aCBiZWZvcmUgc2tiX3B1bGwgKi9cbiYjNDM7XHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2MgSFRUX1JYX0ZSQUdfSU5EX0lORk8wX0hFQURFUl9MRU4pIHtcbiYjNDM7XHRcdGF0aDEwa193YXJuKGFyLCBcJiMzNDtJbnZhbGlkIHNrYiBsZW4gJWQgZm9yIFJYX0ZSQUdfSU5EXFxuXCYjMzQ7LCBza2ItXHUwMDNlbGVuKTtcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0cmVzcCA9IChzdHJ1Y3QgaHR0X3Jlc3AgKikoc2tiLVx1MDAzZWRhdGEgJiM0MzsgSFRUX1JYX0ZSQUdfSU5EX0lORk8wX0hFQURFUl9MRU4pO1xuIFx0c2tiX3B1bGwoc2tiLCBIVFRfUlhfRlJBR19JTkRfSU5GTzBfSEVBREVSX0xFTik7XG4gXHRza2JfdHJpbShza2IsIHNrYi1cdTAwM2VsZW4gLSBGQ1NfTEVOKTtcbkBAIC0yNzkyLDYgJiM0MzsyNzk5LDEzIEBAIHN0YXRpYyBib29sIGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obChzdHJ1Y3QgYXRoMTBrX2h0dCAqaHR0LFxuIFx0bnVtX21wZHVfcmFuZ2VzID0gTVMoX19sZTMyX3RvX2NwdShyeF9obC1cdTAwM2VoZHIuaW5mbzEpLFxuIFx0XHRcdCAgICAgSFRUX1JYX0lORElDQVRJT05fSU5GTzFfTlVNX01QRFVfUkFOR0VTKTtcbiBcbiYjNDM7XHQvKiBGSVg6IFZhbGlkYXRlIG51bV9tcGR1X3JhbmdlcyAqL1xuJiM0MztcdGlmIChudW1fbXBkdV9yYW5nZXMgXHUwMDNlIDEpIHtcbiYjNDM7XHRcdGF0aDEwa193YXJuKGFyLCBcJiMzNDtJbnZhbGlkIG51bV9tcGR1X3JhbmdlcyAlZFxcblwmIzM0OywgbnVtX21wZHVfcmFuZ2VzKTtcbiYjNDM7XHRcdGdvdG8gZXJyO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1xuIFx0dG90X2hkcl9sZW4gPSBzaXplb2Yoc3RydWN0IGh0dF9yZXNwX2hkcikgJiM0MztcbiBcdFx0ICAgICAgc2l6ZW9mKHJ4X2hsLVx1MDAzZWhkcikgJiM0MztcbiBcdFx0ICAgICAgc2l6ZW9mKHJ4X2hsLVx1MDAzZXBwZHUpICYjNDM7XG5AQCAtMjc5OSwxMCAmIzQzOzI4MTMsMjYgQEAgc3RhdGljIGJvb2wgYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsKHN0cnVjdCBhdGgxMGtfaHR0ICpodHQsXG4gXHRcdCAgICAgIHNpemVvZihyeF9obC1cdTAwM2Vmd19kZXNjKSAmIzQzO1xuIFx0XHQgICAgICBzaXplb2Yoc3RydWN0IGh0dF9yeF9pbmRpY2F0aW9uX21wZHVfcmFuZ2UpICogbnVtX21wZHVfcmFuZ2VzO1xuIFxuJiM0MztcdC8qIEZJWDogVmFsaWRhdGUgdG90X2hkcl9sZW4gYWdhaW5zdCBza2IgbGVuZ3RoICovXG4mIzQzO1x0aWYgKHRvdF9oZHJfbGVuIFx1MDAzZSBza2ItXHUwMDNlbGVuKSB7XG4mIzQzO1x0XHRhdGgxMGtfd2FybihhciwgXCYjMzQ7SW52YWxpZCB0b3RfaGRyX2xlbiAlenUgXHUwMDNlIHNrYi1cdTAwM2VsZW4gJXVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdCAgICB0b3RfaGRyX2xlbiwgc2tiLVx1MDAzZWxlbik7XG4mIzQzO1x0XHRnb3RvIGVycjtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcbiBcdHRpZCA9ICBNUyhyeF9obC1cdTAwM2VoZHIuaW5mbzAsIEhUVF9SWF9JTkRJQ0FUSU9OX0lORk8wX0VYVF9USUQpO1xuIFx0cnhfZGVzYyA9IChzdHJ1Y3QgaHR0X2hsX3J4X2Rlc2MgKikoc2tiLVx1MDAzZWRhdGEgJiM0MzsgdG90X2hkcl9sZW4pO1xuIFx0cnhfZGVzY19pbmZvID0gX19sZTMyX3RvX2NwdShyeF9kZXNjLVx1MDAzZWluZm8pO1xuIFxuJiM0MztcbiYjNDM7XHQvKiBGSVg6IFZhbGlkYXRlIGZ3X2Rlc2MubGVuIGFnYWluc3QgcmVtYWluaW5nIHNrYiBsZW5ndGggKi9cbiYjNDM7XHRpZiAocnhfaGwtXHUwMDNlZndfZGVzYy5sZW4gXHUwMDNlIHNrYi1cdTAwM2VsZW4gLSB0b3RfaGRyX2xlbikge1xuJiM0MztcdFx0YXRoMTBrX3dhcm4oYXIsIFwmIzM0O0ludmFsaWQgZndfZGVzYy5sZW4gJXUgXHUwMDNlIHJlbWFpbmluZyBza2IgbGVuXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHQgICAgcnhfaGwtXHUwMDNlZndfZGVzYy5sZW4pO1xuJiM0MztcdFx0Z290byBlcnI7XG4mIzQzO1x0fVxuJiM0MztcbiBcdGhkciA9IChzdHJ1Y3QgaWVlZTgwMjExX2hkciAqKSgodTggKilyeF9kZXNjICYjNDM7IHJ4X2hsLVx1MDAzZWZ3X2Rlc2MubGVuKTtcbiBcbiBcdGlmIChpc19tdWx0aWNhc3RfZXRoZXJfYWRkcihoZHItXHUwMDNlYWRkcjEpKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDg6NDE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QVRIMTBLJiMzNDssCiAgICAmIzM0O0FUSDEwS19VU0ImIzM0OywKICAgICYjMzQ7QVRIMTBLX0RFQlVHRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGwmIzM0OywKICAgICYjMzQ7YXRoMTBrX3JlZ192YWx1ZV93cml0ZSYjMzQ7LAogICAgJiMzNDthdGgxMGtfbWVtX3ZhbHVlX3dyaXRlJiMzNDssCiAgICAmIzM0O2F0aDEwa19odHRfdDJoX21zZ19oYW5kbGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRhcnkgYW5kIGxlbmd0aCB2YWxpZGF0aW9uIGNoZWNrcyB0byBhdGgxMGsgZGVidWdmcyB3cml0ZSBoYW5kbGVycyAoYXRoMTBrX3JlZ192YWx1ZV93cml0ZSwgYXRoMTBrX21lbV92YWx1ZV93cml0ZSkgYW5kIFJYIGZyYWdtZW50IHBhY2tldCBwcm9jZXNzaW5nIGluIGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obC4gQXRoMTBrIHN1cHBvcnRzIFVTQiBkZXZpY2VzIChBVEgxMEtfVVNCKSBhbmQgZGVidWdmcyBvcGVyYXRpb25zLCB3aGljaCBjYW4gYmUgcmVhY2hlZCBhbmQgZnV6emVkIHZpYSBVU0IgZW11bGF0aW9uIChSYXcgR2FkZ2V0KSBhbmQgZGVidWdmcyBpbnRlcmZhY2VzIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMGMxZTI2OTExZDFmNTg0ZDVjMGJjMTliMGE2ZTRkMmVjY2EwNmU3OApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgU2VwIDEwIDA4OjQxOjMzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jCmluZGV4IGZiNjFlNTNmZjRjMzQuLjUwZTAxNzAyMTFiODEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmMKQEAgLTcyOSw2ICYjNDM7NzI5LDEzIEBAIHN0YXRpYyBzc2l6ZV90IGF0aDEwa19yZWdfdmFsdWVfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsCiAKIAlyZWdfYWRkciA9IGFyLSZndDtkZWJ1Zy5yZWdfYWRkcjsKIAomIzQzOwkvKiBGSVg6IFZhbGlkYXRlIHJlZ2lzdGVyIGFkZHJlc3MgKi8KJiM0MzsJaWYgKHJlZ19hZGRyICZndDsgYXItJmd0O2h3X3BhcmFtcy5yZWdfc2l6ZSkgewomIzQzOwkJYXRoMTBrX3dhcm4oYXIsICYjMzQ7SW52YWxpZCByZWdpc3RlciBhZGRyZXNzIDB4JTA4eFxuJiMzNDssIHJlZ19hZGRyKTsKJiM0MzsJCXJldCA9IC1FSU5WQUw7CiYjNDM7CQlnb3RvIGV4aXQ7CiYjNDM7CX0KJiM0MzsKIAlyZXQgPSBrc3RydG91MzJfZnJvbV91c2VyKHVzZXJfYnVmLCBjb3VudCwgMCwgJmFtcDtyZWdfdmFsKTsKIAlpZiAocmV0KQogCQlnb3RvIGV4aXQ7CkBAIC04MTksNiAmIzQzOzgyNiwxOSBAQCBzdGF0aWMgc3NpemVfdCBhdGgxMGtfbWVtX3ZhbHVlX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLAogCiAJbXV0ZXhfbG9jaygmYW1wO2FyLSZndDtjb25mX211dGV4KTsKIAomIzQzOwkvKiBGSVg6IFZhbGlkYXRlIGFkZHJlc3MgYWdhaW5zdCBtZW1vcnkgc2l6ZSAqLwomIzQzOwlpZiAoKnBwb3MgJmd0OyBhci0mZ3Q7aHdfcGFyYW1zLm1lbV9zaXplKSB7CiYjNDM7CQlhdGgxMGtfd2FybihhciwgJiMzNDtJbnZhbGlkIGFkZHJlc3MgMHglMDh4IGZvciBtZW1fdmFsdWVcbiYjMzQ7LCAodTMyKSpwcG9zKTsKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwl9CiYjNDM7CiYjNDM7CS8qIEZJWDogVmFsaWRhdGUgc2l6ZSBhZ2FpbnN0IHJlbWFpbmluZyBtZW1vcnkgKi8KJiM0MzsJaWYgKGNvdW50ICZndDsgYXItJmd0O2h3X3BhcmFtcy5tZW1fc2l6ZSAtICpwcG9zKSB7CiYjNDM7CQlhdGgxMGtfd2FybihhciwgJiMzNDtJbnZhbGlkIHNpemUgJXp1IGZvciBtZW1fdmFsdWUgYXQgMHglMDh4XG4mIzM0OywKJiM0MzsJCQkgICAgY291bnQsICh1MzIpKnBwb3MpOwomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KJiM0MzsKIAlidWYgPSB2bWFsbG9jKGNvdW50KTsKIAlpZiAoIWJ1ZikgewogCQlyZXQgPSAtRU5PTUVNOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmMKaW5kZXggYWIyZDM3M2I0NzUwZC4uNGZhYmI5MjY0N2Q5ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jCkBAIC0yNzc1LDYgJiM0MzsyNzc1LDEzIEBAIHN0YXRpYyBib29sIGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obChzdHJ1Y3QgYXRoMTBrX2h0dCAqaHR0LAogCXN0cnVjdCBodHRfcmVzcCAqcmVzcDsKIAlzaXplX3QgdG90X2hkcl9sZW47CiAKJiM0MzsKJiM0MzsJLyogRklYOiBWYWxpZGF0ZSBza2IgbGVuZ3RoIGJlZm9yZSBza2JfcHVsbCAqLwomIzQzOwlpZiAoc2tiLSZndDtsZW4gJmx0OyBIVFRfUlhfRlJBR19JTkRfSU5GTzBfSEVBREVSX0xFTikgewomIzQzOwkJYXRoMTBrX3dhcm4oYXIsICYjMzQ7SW52YWxpZCBza2IgbGVuICVkIGZvciBSWF9GUkFHX0lORFxuJiMzNDssIHNrYi0mZ3Q7bGVuKTsKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsJfQomIzQzOwogCXJlc3AgPSAoc3RydWN0IGh0dF9yZXNwICopKHNrYi0mZ3Q7ZGF0YSAmIzQzOyBIVFRfUlhfRlJBR19JTkRfSU5GTzBfSEVBREVSX0xFTik7CiAJc2tiX3B1bGwoc2tiLCBIVFRfUlhfRlJBR19JTkRfSU5GTzBfSEVBREVSX0xFTik7CiAJc2tiX3RyaW0oc2tiLCBza2ItJmd0O2xlbiAtIEZDU19MRU4pOwpAQCAtMjc5Miw2ICYjNDM7Mjc5OSwxMyBAQCBzdGF0aWMgYm9vbCBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGwoc3RydWN0IGF0aDEwa19odHQgKmh0dCwKIAludW1fbXBkdV9yYW5nZXMgPSBNUyhfX2xlMzJfdG9fY3B1KHJ4X2hsLSZndDtoZHIuaW5mbzEpLAogCQkJICAgICBIVFRfUlhfSU5ESUNBVElPTl9JTkZPMV9OVU1fTVBEVV9SQU5HRVMpOwogCiYjNDM7CS8qIEZJWDogVmFsaWRhdGUgbnVtX21wZHVfcmFuZ2VzICovCiYjNDM7CWlmIChudW1fbXBkdV9yYW5nZXMgJmd0OyAxKSB7CiYjNDM7CQlhdGgxMGtfd2FybihhciwgJiMzNDtJbnZhbGlkIG51bV9tcGR1X3JhbmdlcyAlZFxuJiMzNDssIG51bV9tcGR1X3Jhbmdlcyk7CiYjNDM7CQlnb3RvIGVycjsKJiM0MzsJfQomIzQzOwomIzQzOwogCXRvdF9oZHJfbGVuID0gc2l6ZW9mKHN0cnVjdCBodHRfcmVzcF9oZHIpICYjNDM7CiAJCSAgICAgIHNpemVvZihyeF9obC0mZ3Q7aGRyKSAmIzQzOwogCQkgICAgICBzaXplb2YocnhfaGwtJmd0O3BwZHUpICYjNDM7CkBAIC0yNzk5LDEwICYjNDM7MjgxMywyNiBAQCBzdGF0aWMgYm9vbCBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGwoc3RydWN0IGF0aDEwa19odHQgKmh0dCwKIAkJICAgICAgc2l6ZW9mKHJ4X2hsLSZndDtmd19kZXNjKSAmIzQzOwogCQkgICAgICBzaXplb2Yoc3RydWN0IGh0dF9yeF9pbmRpY2F0aW9uX21wZHVfcmFuZ2UpICogbnVtX21wZHVfcmFuZ2VzOwogCiYjNDM7CS8qIEZJWDogVmFsaWRhdGUgdG90X2hkcl9sZW4gYWdhaW5zdCBza2IgbGVuZ3RoICovCiYjNDM7CWlmICh0b3RfaGRyX2xlbiAmZ3Q7IHNrYi0mZ3Q7bGVuKSB7CiYjNDM7CQlhdGgxMGtfd2FybihhciwgJiMzNDtJbnZhbGlkIHRvdF9oZHJfbGVuICV6dSAmZ3Q7IHNrYi0mZ3Q7bGVuICV1XG4mIzM0OywKJiM0MzsJCQkgICAgdG90X2hkcl9sZW4sIHNrYi0mZ3Q7bGVuKTsKJiM0MzsJCWdvdG8gZXJyOwomIzQzOwl9CiYjNDM7CiYjNDM7CiAJdGlkID0gIE1TKHJ4X2hsLSZndDtoZHIuaW5mbzAsIEhUVF9SWF9JTkRJQ0FUSU9OX0lORk8wX0VYVF9USUQpOwogCXJ4X2Rlc2MgPSAoc3RydWN0IGh0dF9obF9yeF9kZXNjICopKHNrYi0mZ3Q7ZGF0YSAmIzQzOyB0b3RfaGRyX2xlbik7CiAJcnhfZGVzY19pbmZvID0gX19sZTMyX3RvX2NwdShyeF9kZXNjLSZndDtpbmZvKTsKIAomIzQzOwomIzQzOwkvKiBGSVg6IFZhbGlkYXRlIGZ3X2Rlc2MubGVuIGFnYWluc3QgcmVtYWluaW5nIHNrYiBsZW5ndGggKi8KJiM0MzsJaWYgKHJ4X2hsLSZndDtmd19kZXNjLmxlbiAmZ3Q7IHNrYi0mZ3Q7bGVuIC0gdG90X2hkcl9sZW4pIHsKJiM0MzsJCWF0aDEwa193YXJuKGFyLCAmIzM0O0ludmFsaWQgZndfZGVzYy5sZW4gJXUgJmd0OyByZW1haW5pbmcgc2tiIGxlblxuJiMzNDssCiYjNDM7CQkJICAgIHJ4X2hsLSZndDtmd19kZXNjLmxlbik7CiYjNDM7CQlnb3RvIGVycjsKJiM0MzsJfQomIzQzOwogCWhkciA9IChzdHJ1Y3QgaWVlZTgwMjExX2hkciAqKSgodTggKilyeF9kZXNjICYjNDM7IHJ4X2hsLSZndDtmd19kZXNjLmxlbik7CiAKIAlpZiAoaXNfbXVsdGljYXN0X2V0aGVyX2FkZHIoaGRyLSZndDthZGRyMSkpIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDg6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDIzNwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEF0aGVyb3MgV2lyZWxlc3MgRHJpdmVyIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZGV0ZXJtaW5lIGlmIGl0JiMzOTtzIGV2ZW4gKndvcnRoKiBmdXp6aW5nLCBvciBpZiBpdCYjMzk7cyB0b3VjaGluZyBjb2RlIHRoYXQmIzM5O3MgZnVuZGFtZW50YWxseSB1bnJlYWNoYWJsZSB1bmRlciBub3JtYWwgY2lyY3Vtc3RhbmNlcy4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgYmVpbmcgbW9kaWZpZWQuIEFoLCBpdCYjMzk7cyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jYCBhbmQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmNgLiBSaWdodCwgYXRoMTBrIOKAkyB0aGF0JiMzOTtzIHRoZSB3aXJlbGVzcyBkcml2ZXIgZm9yIHRob3NlIFF1YWxjb21tIEF0aGVyb3MgODAyLjExYWMgZGV2aWNlcy4gVGhpbmsgUUNBOTg4eCwgUUNBNjE3NCwgUUNBOTM3Ny4uLiB5b3Uga25vdywgdGhlIHVzdWFsIHN1c3BlY3RzLgoKTm93LCBteSBuZXh0IHF1ZXN0aW9uIGlzLCB3aGF0JiMzOTtzIHRoZSBhY2Nlc3MgdmVjdG9yIGhlcmU/IERvZXMgdGhpcyBkcml2ZXIgc3VwcG9ydCBVU0IsIFNESU8sIG9yIGlzIGl0IGlzb2xhdGVkIHRvIFBDST8gQ2FuIEkgZ2V0IGF0IGl0IHRocm91Z2ggc29tZXRoaW5nIGxpa2UgYG1hYzgwMjExX2h3c2ltYCBvciwgZXZlbiBiZXR0ZXIsIHRocm91Z2ggVVNCIGdhZGdldCBlbXVsYXRpb24gb3IgYSBzaW1pbGFyIG1ldGhvZCB0aGF0IFN5emthbGxlciBtaWdodCBvZmZlcj8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGF0dGFjayBzdXJmYWNlLgoKVGltZSBmb3Igc29tZSBncmVwLWZ1ISBMZXQmIzM5O3Mgc2NhbiB0aGUgY29kZSBiYXNlIHRvIGRldGVybWluZSB0aGUgYnVzIHN1cHBvcnQuIEkmIzM5O2xsIG5lZWQgdG8ga25vdyB3aGljaCBidXNlcyBhcmUgc3VwcG9ydGVkIHRvIGtub3cgd2hhdCBoYXJkd2FyZSBJIG5lZWQgdG8gdGFyZ2V0IGFuZCB3aGF0IHRoZSBiZXN0IGF2ZW51ZSBmb3IgZnV6emluZyB0aGlzIHdpbGwgYmUuIFNvIFBDSSwgVVNCLCBTRElPLCBBSEIsIFNOT0MuLi4gbGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBncmVwIHJldmVhbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDg6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTBrX3VzYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9NYWtlZmlsZT0zND1hdGgxMGtfc2Rpby15ICYjNDM7PSBzZGlvLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvTWFrZWZpbGUtMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL01ha2VmaWxlOjM2Om9iai0kKENPTkZJR19BVEgxMEtfVVNCKSAmIzQzOz0gYXRoMTBrX3VzYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL01ha2VmaWxlOjM3OmF0aDEwa191c2IteSAmIzQzOz0gdXNiLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvTWFrZWZpbGUtMzgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTg6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9wb3N0X3JlY3ZfdHJhbnNmZXJzKHN0cnVjdCBhdGgxMGsgKmFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxOTpcdFx0XHRcdFx0ICAgc3RydWN0IGF0aDEwa191c2JfcGlwZSAqcmVjdl9waXBlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYz0zNT1zdGF0aWMgc3RydWN0IGF0aDEwa191cmJfY29udGV4dCAqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM2OmF0aDEwa191c2JfYWxsb2NfdXJiX2Zyb21fcGlwZShzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zNy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTc6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9mcmVlX3VyYl90b19waXBlKHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU4LVx0XHRcdFx0XHRzdHJ1Y3QgYXRoMTBrX3VyYl9jb250ZXh0ICp1cmJfY29udGV4dClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTczLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3NDpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2NsZWFudXBfcmVjdl91cmIoc3RydWN0IGF0aDEwa191cmJfY29udGV4dCAqdXJiX2NvbnRleHQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTc1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTc4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3OTpcdGF0aDEwa191c2JfZnJlZV91cmJfdG9fcGlwZSh1cmJfY29udGV4dC1cdTAwM2VwaXBlLCB1cmJfY29udGV4dCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgwLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjgyOnN0YXRpYyB2b2lkIGF0aDEwa191c2JfZnJlZV9waXBlX3Jlc291cmNlcyhzdHJ1Y3QgYXRoMTBrICphcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6ODM6XHRcdFx0XHRcdCAgIHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTg0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwNC1cdGZvciAoOzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA1Olx0XHR1cmJfY29udGV4dCA9IGF0aDEwa191c2JfYWxsb2NfdXJiX2Zyb21fcGlwZShwaXBlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTQ6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9jbGVhbnVwX3BpcGVfcmVzb3VyY2VzKHN0cnVjdCBhdGgxMGsgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTY6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTE3LVx0aW50IGk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTktXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBVEgxMEtfVVNCX1BJUEVfTUFYOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTIwOlx0XHRhdGgxMGtfdXNiX2ZyZWVfcGlwZV9yZXNvdXJjZXMoYXIsIFx1MDAyNmFyX3VzYi1cdTAwM2VwaXBlc1tpXSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEyMS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEyNTpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX3JlY3ZfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMjYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMjctXHRzdHJ1Y3QgYXRoMTBrX3VyYl9jb250ZXh0ICp1cmJfY29udGV4dCA9IHVyYi1cdTAwM2Vjb250ZXh0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMjg6XHRzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlID0gdXJiX2NvbnRleHQtXHUwMDNlcGlwZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTI5LVx0c3RydWN0IGF0aDEwayAqYXIgPSBwaXBlLVx1MDAzZWFyX3VzYi1cdTAwM2Vhcjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE3Mi1jbGVhbnVwX3JlY3ZfdXJiOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxNzM6XHRhdGgxMGtfdXNiX2NsZWFudXBfcmVjdl91cmIodXJiX2NvbnRleHQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xNzQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xNzctXHRcdC8qIG91ciBmcmVlIHVyYnMgYXJlIHBpbGluZyB1cCwgcG9zdCBtb3JlIHRyYW5zZmVycyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxNzg6XHRcdGF0aDEwa191c2JfcG9zdF9yZWN2X3RyYW5zZmVycyhhciwgcGlwZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE3OS1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE4MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTgyOnN0YXRpYyB2b2lkIGF0aDEwa191c2JfdHJhbnNtaXRfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xODMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xODQtXHRzdHJ1Y3QgYXRoMTBrX3VyYl9jb250ZXh0ICp1cmJfY29udGV4dCA9IHVyYi1cdTAwM2Vjb250ZXh0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxODU6XHRzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlID0gdXJiX2NvbnRleHQtXHUwMDNlcGlwZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTg2LVx0c3RydWN0IGF0aDEwayAqYXIgPSBwaXBlLVx1MDAzZWFyX3VzYi1cdTAwM2Vhcjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE5Ni1cdHVyYl9jb250ZXh0LVx1MDAzZXNrYiA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjE5NzpcdGF0aDEwa191c2JfZnJlZV91cmJfdG9fcGlwZSh1cmJfY29udGV4dC1cdTAwM2VwaXBlLCB1cmJfY29udGV4dCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE5OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTIwNC0vKiBwaXBlIG9wZXJhdGlvbnMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjA1OnN0YXRpYyB2b2lkIGF0aDEwa191c2JfcG9zdF9yZWN2X3RyYW5zZmVycyhzdHJ1Y3QgYXRoMTBrICphcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjA2Olx0XHRcdFx0XHQgICBzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpyZWN2X3BpcGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTIwNy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yMTItXHRmb3IgKDs7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjIxMzpcdFx0dXJiX2NvbnRleHQgPSBhdGgxMGtfdXNiX2FsbG9jX3VyYl9mcm9tX3BpcGUocmVjdl9waXBlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjE0LVx0XHRpZiAoIXVyYl9jb250ZXh0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjI5LVx0XHRcdFx0ICBBVEgxMEtfVVNCX1JYX0JVRkZFUl9TSVpFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoyMzA6XHRcdFx0XHQgIGF0aDEwa191c2JfcmVjdl9jb21wbGV0ZSwgdXJiX2NvbnRleHQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yMzEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yNTQtZXJyOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoyNTU6XHRhdGgxMGtfdXNiX2NsZWFudXBfcmVjdl91cmIodXJiX2NvbnRleHQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yNTYtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjI1ODpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2ZsdXNoX2FsbChzdHJ1Y3QgYXRoMTBrICphcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjU5LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjYwOlx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI2MS1cdGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjcwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoyNzE6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9zdGFydF9yZWN2X3BpcGVzKHN0cnVjdCBhdGgxMGsgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yNzIte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoyNzM6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjc0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjc2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoyNzc6XHRhdGgxMGtfdXNiX3Bvc3RfcmVjdl90cmFuc2ZlcnMoYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI3OC1cdFx0XHRcdCAgICAgICBcdTAwMjZhcl91c2ItXHUwMDNlcGlwZXNbQVRIMTBLX1VTQl9QSVBFX1JYX0RBVEFdKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI4MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjgxOnN0YXRpYyB2b2lkIGF0aDEwa191c2JfdHhfY29tcGxldGUoc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI4Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yOTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjI5MjpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX3J4X2NvbXBsZXRlKHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yOTMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozNjA6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9pb19jb21wX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zNjEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozNjI6XHRzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlID0gY29udGFpbmVyX29mKHdvcmssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM2MzpcdFx0XHRcdFx0XHQgICAgc3RydWN0IGF0aDEwa191c2JfcGlwZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzY0LVx0XHRcdFx0XHRcdCAgICBpb19jb21wbGV0ZV93b3JrKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM2OS1cdFx0aWYgKHBpcGUtXHUwMDNlZmxhZ3MgXHUwMDI2IEFUSDEwS19VU0JfUElQRV9GTEFHX1RYKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozNzA6XHRcdFx0YXRoMTBrX3VzYl90eF9jb21wbGV0ZShhciwgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzcxLVx0XHRlbHNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM3MjpcdFx0XHRhdGgxMGtfdXNiX3J4X2NvbXBsZXRlKGFyLCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zNzMtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zNzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM3NjojZGVmaW5lIEFUSDEwS19VU0JfTUFYX0RJQUdfQ01EIChzaXplb2Yoc3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX2NtZF93cml0ZSkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM3NzojZGVmaW5lIEFUSDEwS19VU0JfTUFYX0RJQUdfUkVTUCAoc2l6ZW9mKHN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19yZXNwX3JlYWQpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zNzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM3OTpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2Rlc3Ryb3koc3RydWN0IGF0aDEwayAqYXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM4MC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM4MTpcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zODItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM4MzpcdGF0aDEwa191c2JfZmx1c2hfYWxsKGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6Mzg0Olx0YXRoMTBrX3VzYl9jbGVhbnVwX3BpcGVfcmVzb3VyY2VzKGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzg1LVx0dXNiX3NldF9pbnRmZGF0YShhcl91c2ItXHUwMDNlaW50ZXJmYWNlLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM5MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MzkxOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9oaWZfc3RhcnQoc3RydWN0IGF0aDEwayAqYXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM5Mi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM5My1cdGludCBpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozOTQ6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzk1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zOTYtXHRhdGgxMGtfY29yZV9uYXBpX2VuYWJsZShhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM5NzpcdGF0aDEwa191c2Jfc3RhcnRfcmVjdl9waXBlcyhhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM5OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQwOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NDA5OnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9oaWZfdHhfc2coc3RydWN0IGF0aDEwayAqYXIsIHU4IHBpcGVfaWQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQxMC1cdFx0XHRcdHN0cnVjdCBhdGgxMGtfaGlmX3NnX2l0ZW0gKml0ZW1zLCBpbnQgbl9pdGVtcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDExLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NDEyOlx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQxMzpcdHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGUgPSBcdTAwMjZhcl91c2ItXHUwMDNlcGlwZXNbcGlwZV9pZF07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQxNC1cdHN0cnVjdCBhdGgxMGtfdXJiX2NvbnRleHQgKnVyYl9jb250ZXh0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDE5LVx0Zm9yIChpID0gMDsgaSBcdTAwM2Mgbl9pdGVtczsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NDIwOlx0XHR1cmJfY29udGV4dCA9IGF0aDEwa191c2JfYWxsb2NfdXJiX2Zyb21fcGlwZShwaXBlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDIxLVx0XHRpZiAoIXVyYl9jb250ZXh0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00MzktXHRcdFx0XHQgIHNrYi1cdTAwM2VsZW4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQ0MDpcdFx0XHRcdCAgYXRoMTBrX3VzYl90cmFuc21pdF9jb21wbGV0ZSwgdXJiX2NvbnRleHQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00NDEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00NjMtZXJyX2ZyZWVfdXJiX3RvX3BpcGU6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQ2NDpcdGF0aDEwa191c2JfZnJlZV91cmJfdG9fcGlwZSh1cmJfY29udGV4dC1cdTAwM2VwaXBlLCB1cmJfY29udGV4dCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ2NS1lcnI6XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00NjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQ2OTpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2hpZl9zdG9wKHN0cnVjdCBhdGgxMGsgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00NzAte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo0NzE6XHRhdGgxMGtfdXNiX2ZsdXNoX2FsbChhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ3Mi1cdGF0aDEwa19jb3JlX25hcGlfc3luY19kaXNhYmxlKGFyKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ3NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NDc1OnN0YXRpYyB1MTYgYXRoMTBrX3VzYl9oaWZfZ2V0X2ZyZWVfcXVldWVfbnVtYmVyKHN0cnVjdCBhdGgxMGsgKmFyLCB1OCBwaXBlX2lkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00NzYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo0Nzc6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDc4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDgxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo0ODI6c3RhdGljIGludCBhdGgxMGtfdXNiX3N1Ym1pdF9jdHJsX291dChzdHJ1Y3QgYXRoMTBrICphcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDgzLVx0XHRcdFx0ICAgICAgdTggcmVxLCB1MTYgdmFsdWUsIHUxNiBpbmRleCwgdm9pZCAqZGF0YSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ4NS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQ4NjpcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00ODctXHR1OCAqYnVmID0gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTUxNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTE2OnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9zdWJtaXRfY3RybF9pbihzdHJ1Y3QgYXRoMTBrICphcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTE3LVx0XHRcdFx0ICAgICB1OCByZXEsIHUxNiB2YWx1ZSwgdTE2IGluZGV4LCB2b2lkICpkYXRhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTE5LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTIwOlx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTUyMS1cdHU4ICpidWYgPSBOVUxMO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo1NTI6c3RhdGljIGludCBhdGgxMGtfdXNiX2N0cmxfbXNnX2V4Y2hhbmdlKHN0cnVjdCBhdGgxMGsgKmFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01NTMtXHRcdFx0XHRcdHU4IHJlcV92YWwsIHU4ICpyZXFfYnVmLCB1MzIgcmVxX2xlbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU1OS1cdC8qIHNlbmQgY29tbWFuZCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo1NjA6XHRyZXQgPSBhdGgxMGtfdXNiX3N1Ym1pdF9jdHJsX291dChhciwgcmVxX3ZhbCwgMCwgMCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTYxLVx0XHRcdFx0XHQgcmVxX2J1ZiwgcmVxX2xlbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01NjYtXHRpZiAocmVzcF9idWYpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTY3Olx0XHRyZXQgPSBhdGgxMGtfdXNiX3N1Ym1pdF9jdHJsX2luKGFyLCByZXNwX3ZhbCwgMCwgMCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTY4LVx0XHRcdFx0XHRcdHJlc3BfYnVmLCAqcmVzcF9sZW4pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo1Nzg6c3RhdGljIGludCBhdGgxMGtfdXNiX2hpZl9kaWFnX3JlYWQoc3RydWN0IGF0aDEwayAqYXIsIHUzMiBhZGRyZXNzLCB2b2lkICpidWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU3OS1cdFx0XHRcdCAgICBzaXplX3QgYnVmX2xlbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTgwLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTgxOlx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjU4MjpcdHN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19jbWRfcmVhZCAqY21kO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01ODMtXHR1MzIgcmVzcF9sZW47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01ODUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjU4NjpcdGlmIChidWZfbGVuIFx1MDAzYyBzaXplb2Yoc3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX3Jlc3BfcmVhZCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU4Ny1cdFx0cmV0dXJuIC1FSU5WQUw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU4OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTg5Olx0Y21kID0gKHN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19jbWRfcmVhZCAqKWFyX3VzYi1cdTAwM2VkaWFnX2NtZF9idWZmZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU5MC1cdG1lbXNldChjbWQsIDAsIHNpemVvZigqY21kKSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01OTItXHRjbWQtXHUwMDNlYWRkcmVzcyA9IGNwdV90b19sZTMyKGFkZHJlc3MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo1OTM6XHRyZXNwX2xlbiA9IHNpemVvZihzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfcmVzcF9yZWFkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTk0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo1OTU6XHRyZXQgPSBhdGgxMGtfdXNiX2N0cmxfbXNnX2V4Y2hhbmdlKGFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01OTYtXHRcdFx0XHRcdCAgIEFUSDEwS19VU0JfQ09OVFJPTF9SRVFfRElBR19DTUQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02MDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjYwNDpcdGlmIChyZXNwX2xlbiAhPSBzaXplb2Yoc3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX3Jlc3BfcmVhZCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTYwNS1cdFx0cmV0dXJuIC1FTVNHU0laRTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTYwNy1cdG1lbWNweShidWYsIGFyX3VzYi1cdTAwM2VkaWFnX3Jlc3BfYnVmZmVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo2MDg6XHQgICAgICAgc2l6ZW9mKHN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19yZXNwX3JlYWQpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjA5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo2MTM6c3RhdGljIGludCBhdGgxMGtfdXNiX2hpZl9kaWFnX3dyaXRlKHN0cnVjdCBhdGgxMGsgKmFyLCB1MzIgYWRkcmVzcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjE0LVx0XHRcdFx0ICAgICBjb25zdCB2b2lkICpkYXRhLCBpbnQgbmJ5dGVzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02MTUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo2MTY6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjE3Olx0c3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX2NtZF93cml0ZSAqY21kO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02MTgtXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo2MjM6XHRjbWQgPSAoc3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX2NtZF93cml0ZSAqKWFyX3VzYi1cdTAwM2VkaWFnX2NtZF9idWZmZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTYyNC1cdG1lbXNldChjbWQsIDAsIHNpemVvZigqY21kKSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02MjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjYyOTpcdHJldCA9IGF0aDEwa191c2JfY3RybF9tc2dfZXhjaGFuZ2UoYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTYzMC1cdFx0XHRcdFx0ICAgQVRIMTBLX1VTQl9DT05UUk9MX1JFUV9ESUFHX0NNRCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTYzOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjQwOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9ibWlfZXhjaGFuZ2VfbXNnKHN0cnVjdCBhdGgxMGsgKmFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02NDEtXHRcdFx0XHQgICAgICAgdm9pZCAqcmVxLCB1MzIgcmVxX2xlbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTY0Ni1cdGlmIChyZXEpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjQ3Olx0XHRyZXQgPSBhdGgxMGtfdXNiX3N1Ym1pdF9jdHJsX291dChhcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjQ4LVx0XHRcdFx0XHRcdCBBVEgxMEtfVVNCX0NPTlRST0xfUkVRX1NFTkRfQk1JX0NNRCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTY1OC1cdGlmIChyZXNwKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjY1OTpcdFx0cmV0ID0gYXRoMTBrX3VzYl9zdWJtaXRfY3RybF9pbihhcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjYwLVx0XHRcdFx0XHRcdEFUSDEwS19VU0JfQ09OVFJPTF9SRVFfUkVDVl9CTUlfUkVTUCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTY3Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjczOnN0YXRpYyB2b2lkIGF0aDEwa191c2JfaGlmX2dldF9kZWZhdWx0X3BpcGUoc3RydWN0IGF0aDEwayAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTY3NC1cdFx0XHRcdFx0ICAgIHU4ICp1bF9waXBlLCB1OCAqZGxfcGlwZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTY3OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjgwOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9oaWZfbWFwX3NlcnZpY2VfdG9fcGlwZShzdHJ1Y3QgYXRoMTBrICphciwgdTE2IHN2Y19pZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjgxLVx0XHRcdFx0XHQgICAgICB1OCAqdWxfcGlwZSwgdTggKmRsX3BpcGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03MDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjcwNDpzdGF0aWMgaW50IGF0aDEwa191c2JfaGlmX3Bvd2VyX3VwKHN0cnVjdCBhdGgxMGsgKmFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03MDUtXHRcdFx0XHQgICBlbnVtIGF0aDEwa19maXJtd2FyZV9tb2RlIGZ3X21vZGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03MDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjcxMDpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2hpZl9wb3dlcl9kb3duKHN0cnVjdCBhdGgxMGsgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03MTEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MTI6XHRhdGgxMGtfdXNiX2ZsdXNoX2FsbChhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTcxMy19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03MTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjcxNzpzdGF0aWMgaW50IGF0aDEwa191c2JfaGlmX3N1c3BlbmQoc3RydWN0IGF0aDEwayAqYXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTcxOC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03MjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjcyMjpzdGF0aWMgaW50IGF0aDEwa191c2JfaGlmX3Jlc3VtZShzdHJ1Y3QgYXRoMTBrICphcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzIzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTcyNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzI4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTBrX2hpZl9vcHMgYXRoMTBrX3VzYl9oaWZfb3BzID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3Mjk6XHQudHhfc2dcdFx0XHQ9IGF0aDEwa191c2JfaGlmX3R4X3NnLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MzA6XHQuZGlhZ19yZWFkXHRcdD0gYXRoMTBrX3VzYl9oaWZfZGlhZ19yZWFkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MzE6XHQuZGlhZ193cml0ZVx0XHQ9IGF0aDEwa191c2JfaGlmX2RpYWdfd3JpdGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjczMjpcdC5leGNoYW5nZV9ibWlfbXNnXHQ9IGF0aDEwa191c2JfYm1pX2V4Y2hhbmdlX21zZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzMzOlx0LnN0YXJ0XHRcdFx0PSBhdGgxMGtfdXNiX2hpZl9zdGFydCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzM0Olx0LnN0b3BcdFx0XHQ9IGF0aDEwa191c2JfaGlmX3N0b3AsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjczNTpcdC5tYXBfc2VydmljZV90b19waXBlXHQ9IGF0aDEwa191c2JfaGlmX21hcF9zZXJ2aWNlX3RvX3BpcGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjczNjpcdC5nZXRfZGVmYXVsdF9waXBlXHQ9IGF0aDEwa191c2JfaGlmX2dldF9kZWZhdWx0X3BpcGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjczNzpcdC5nZXRfZnJlZV9xdWV1ZV9udW1iZXJcdD0gYXRoMTBrX3VzYl9oaWZfZ2V0X2ZyZWVfcXVldWVfbnVtYmVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3Mzg6XHQucG93ZXJfdXBcdFx0PSBhdGgxMGtfdXNiX2hpZl9wb3dlcl91cCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzM5Olx0LnBvd2VyX2Rvd25cdFx0PSBhdGgxMGtfdXNiX2hpZl9wb3dlcl9kb3duLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03NDAtI2lmZGVmIENPTkZJR19QTVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3NDE6XHQuc3VzcGVuZFx0XHQ9IGF0aDEwa191c2JfaGlmX3N1c3BlbmQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjc0MjpcdC5yZXN1bWVcdFx0XHQ9IGF0aDEwa191c2JfaGlmX3Jlc3VtZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzQzLSNlbmRpZlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3NDY6c3RhdGljIHU4IGF0aDEwa191c2JfZ2V0X2xvZ2ljYWxfcGlwZV9udW0odTggZXBfYWRkcmVzcywgaW50ICp1cmJfY291bnQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTc0Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03OTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjc5MTpzdGF0aWMgaW50IGF0aDEwa191c2JfYWxsb2NfcGlwZV9yZXNvdXJjZXMoc3RydWN0IGF0aDEwayAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjc5MjpcdFx0XHRcdFx0ICAgc3RydWN0IGF0aDEwa191c2JfcGlwZSAqcGlwZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzkzLVx0XHRcdFx0XHQgICBpbnQgdXJiX2NudClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgxMS1cdFx0cGlwZS1cdTAwM2V1cmJfYWxsb2MmIzQzOyYjNDM7O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo4MTI6XHRcdGF0aDEwa191c2JfZnJlZV91cmJfdG9fcGlwZShwaXBlLCB1cmJfY29udGV4dCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgxMy1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgyMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6ODIzOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9zZXR1cF9waXBlX3Jlc291cmNlcyhzdHJ1Y3QgYXRoMTBrICphcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODI0LVx0XHRcdFx0XHQgICBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04MjUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo4MjY6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODI3LVx0c3RydWN0IHVzYl9ob3N0X2ludGVyZmFjZSAqaWZhY2VfZGVzYyA9IGludGVyZmFjZS1cdTAwM2VjdXJfYWx0c2V0dGluZztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODI4LVx0c3RydWN0IHVzYl9lbmRwb2ludF9kZXNjcmlwdG9yICplbmRwb2ludDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6ODI5Olx0c3RydWN0IGF0aDEwa191c2JfcGlwZSAqcGlwZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODMwLVx0aW50IHJldCwgaSwgdXJiY291bnQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04NzEtXHRcdHBpcGVfbnVtID1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6ODcyOlx0XHQgICAgYXRoMTBrX3VzYl9nZXRfbG9naWNhbF9waXBlX251bShlbmRwb2ludC1cdTAwM2ViRW5kcG9pbnRBZGRyZXNzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04NzMtXHRcdFx0XHRcdFx0ICAgIFx1MDAyNnVyYmNvdW50KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTkyNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6OTI1Olx0XHRyZXQgPSBhdGgxMGtfdXNiX2FsbG9jX3BpcGVfcmVzb3VyY2VzKGFyLCBwaXBlLCB1cmJjb3VudCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTkyNi1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTkzMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6OTMzOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9jcmVhdGUoc3RydWN0IGF0aDEwayAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTkzNC1cdFx0XHQgICAgIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2UpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTkzNS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjkzNjpcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05MzctXHRzdHJ1Y3QgdXNiX2RldmljZSAqZGV2ID0gaW50ZXJmYWNlX3RvX3VzYmRldihpbnRlcmZhY2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo5Mzg6XHRzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05MzktXHRpbnQgcmV0LCBpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTQ4LVx0XHRJTklUX1dPUksoXHUwMDI2cGlwZS1cdTAwM2Vpb19jb21wbGV0ZV93b3JrLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo5NDk6XHRcdFx0ICBhdGgxMGtfdXNiX2lvX2NvbXBfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTk1MC1cdFx0c2tiX3F1ZXVlX2hlYWRfaW5pdChcdTAwMjZwaXBlLVx1MDAzZWlvX2NvbXBfcXVldWUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTY1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo5NjY6XHRyZXQgPSBhdGgxMGtfdXNiX3NldHVwX3BpcGVfcmVzb3VyY2VzKGFyLCBpbnRlcmZhY2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05NjctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTcyLWVycjpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6OTczOlx0YXRoMTBrX3VzYl9kZXN0cm95KGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTc0LVx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTk3Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6OTc3OnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9uYXBpX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpjdHgsIGludCBidWRnZXQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTk3OC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05OTEtLyogYXRoMTBrIHVzYiBkcml2ZXIgcmVnaXN0ZXJlZCBmdW5jdGlvbnMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6OTkyOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05OTMtXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTk5NS1cdHN0cnVjdCBhdGgxMGsgKmFyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo5OTY6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05OTctXHRzdHJ1Y3QgdXNiX2RldmljZSAqZGV2ID0gaW50ZXJmYWNlX3RvX3VzYmRldihpbnRlcmZhY2UpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTAxMC1cdGFyID0gYXRoMTBrX2NvcmVfY3JlYXRlKHNpemVvZigqYXJfdXNiKSwgXHUwMDI2ZGV2LVx1MDAzZWRldiwgQVRIMTBLX0JVU19VU0IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwMTE6XHRcdFx0XHRod19yZXYsIFx1MDAyNmF0aDEwa191c2JfaGlmX29wcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwMTItXHRpZiAoIWFyKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDE3Olx0bmV0aWZfbmFwaV9hZGQoYXItXHUwMDNlbmFwaV9kZXYsIFx1MDAyNmFyLVx1MDAzZW5hcGksIGF0aDEwa191c2JfbmFwaV9wb2xsKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTAxOC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwMjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwMjY6XHRhcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDI3Olx0cmV0ID0gYXRoMTBrX3VzYl9jcmVhdGUoYXIsIGludGVyZmFjZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwMjgtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA1MS1lcnJfdXNiX2Rlc3Ryb3k6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwNTI6XHRhdGgxMGtfdXNiX2Rlc3Ryb3koYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDUzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA1OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA2MDpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA2MS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwNjI6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDYzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA2OS1cdG5ldGlmX25hcGlfZGVsKFx1MDAyNmFyX3VzYi1cdTAwM2Vhci1cdTAwM2VuYXBpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA3MDpcdGF0aDEwa191c2JfZGVzdHJveShhcl91c2ItXHUwMDNlYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDcxLVx0YXRoMTBrX2NvcmVfZGVzdHJveShhcl91c2ItXHUwMDNlYXIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA3NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA3NjpzdGF0aWMgaW50IGF0aDEwa191c2JfcG1fc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDc3LVx0XHRcdFx0IHBtX21lc3NhZ2VfdCBtZXNzYWdlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDc4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA3OTpcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSB1c2JfZ2V0X2ludGZkYXRhKGludGVyZmFjZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwODAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwODE6XHRhdGgxMGtfdXNiX2ZsdXNoX2FsbChhcl91c2ItXHUwMDNlYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDgyLVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDg0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDg1OnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9wbV9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA4Ni17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwODc6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gdXNiX2dldF9pbnRmZGF0YShpbnRlcmZhY2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDg4LVx0c3RydWN0IGF0aDEwayAqYXIgPSBhcl91c2ItXHUwMDNlYXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwODktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwOTA6XHRhdGgxMGtfdXNiX3Bvc3RfcmVjdl90cmFuc2ZlcnMoYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwOTEtXHRcdFx0XHQgICAgICAgXHUwMDI2YXJfdXNiLVx1MDAzZXBpcGVzW0FUSDEwS19VU0JfUElQRV9SWF9EQVRBXSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDk3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDk4OiNkZWZpbmUgYXRoMTBrX3VzYl9wbV9zdXNwZW5kIE5VTExcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA5OTojZGVmaW5lIGF0aDEwa191c2JfcG1fcmVzdW1lIE5VTExcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTEwMC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTExMDMtLyogdGFibGUgb2YgZGV2aWNlcyB0aGF0IHdvcmsgd2l0aCB0aGlzIGRyaXZlciAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTA0OnN0YXRpYyBzdHJ1Y3QgdXNiX2RldmljZV9pZCBhdGgxMGtfdXNiX2lkc1tdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTA1LVx0e1VTQl9ERVZJQ0UoMHgxM2IxLCAweDAwNDIpfSwgLyogTGlua3N5cyBXVVNCNjEwME0gKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTExMDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMDk6TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIGF0aDEwa191c2JfaWRzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTExMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTExMTpzdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgYXRoMTBrX3VzYl9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMTI6XHQubmFtZSA9IFwmIzM0O2F0aDEwa191c2JcJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMTM6XHQucHJvYmUgPSBhdGgxMGtfdXNiX3Byb2JlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTE0Olx0LnN1c3BlbmQgPSBhdGgxMGtfdXNiX3BtX3N1c3BlbmQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMTU6XHQucmVzdW1lID0gYXRoMTBrX3VzYl9wbV9yZXN1bWUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMTY6XHQuZGlzY29ubmVjdCA9IGF0aDEwa191c2JfZGlzY29ubmVjdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTExNzpcdC5pZF90YWJsZSA9IGF0aDEwa191c2JfaWRzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTE4LVx0LnN1cHBvcnRzX2F1dG9zdXNwZW5kID0gdHJ1ZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTExMjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMjI6bW9kdWxlX3VzYl9kcml2ZXIoYXRoMTBrX3VzYl9kcml2ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTIzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oOjQ0OnN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19jbWRfd3JpdGUge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC00NS1cdF9fbGUzMiBjbWQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC01MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmg6NTE6c3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX2NtZF9yZWFkIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtNTItXHRfX2xlMzIgY21kO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtNTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oOjU2OnN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19yZXNwX3JlYWQge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC01Ny1cdHU4IHZhbHVlWzRdO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtNjAtLyogdHgvcnggcGlwZXMgZm9yIHVzYiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDo2MTplbnVtIGF0aDEwa191c2JfcGlwZV9pZCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTYyLVx0QVRIMTBLX1VTQl9QSVBFX1RYX0NUUkwgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtNzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oOjczOnN0cnVjdCBhdGgxMGtfdXNiX3BpcGUge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC03NC1cdHN0cnVjdCBsaXN0X2hlYWQgdXJiX2xpc3RfaGVhZDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTgyLVx0dTggbG9naWNhbF9waXBlX251bTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmg6ODM6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC04NC1cdHUxNiBtYXhfcGFja2V0X3NpemU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC05Mi0vKiB1c2IgZGV2aWNlIG9iamVjdCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDo5MzpzdHJ1Y3QgYXRoMTBrX3VzYiB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTk0LVx0LyogcHJvdGVjdHMgcGlwZS1cdTAwM2V1cmJfbGlzdF9oZWFkIGFuZCAgcGlwZS1cdTAwM2V1cmJfY250ICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC05OC1cdHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2U7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oOjk5Olx0c3RydWN0IGF0aDEwa191c2JfcGlwZSBwaXBlc1tBVEgxMEtfVVNCX1BJUEVfTUFYXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtMTAwLVx0dTggKmRpYWdfY21kX2J1ZmZlcjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oPTEwNj1zdHJ1Y3QgYXRoMTBrX3VyYl9jb250ZXh0IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtMTA3LVx0c3RydWN0IGxpc3RfaGVhZCBsaW5rO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDoxMDg6XHRzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC0xMDktXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtMTEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDoxMTM6c3RhdGljIGlubGluZSBzdHJ1Y3QgYXRoMTBrX3VzYiAqYXRoMTBrX3VzYl9wcml2KHN0cnVjdCBhdGgxMGsgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC0xMTQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDoxMTU6XHRyZXR1cm4gKHN0cnVjdCBhdGgxMGtfdXNiICopYXItXHUwMDNlZHJ2X3ByaXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTExNi19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDg6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgxNDYKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiA5NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIGF0aDEwayBVU0IgRnVuY3Rpb25hbGl0eSBhbmQgSGlnaCBMYXRlbmN5IEltcGFjdCoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGUgYGF0aDEwa2AgZHJpdmVyIGFuZCBpdHMgVVNCIGNhcGFiaWxpdGllcy4gR29vZCB0byBrbm93IGl0IGhhcyBVU0Igc3VwcG9ydCB2aWEgYENPTkZJR19BVEgxMEtfVVNCYCwgd2hpY2ggaXMgcHJldHR5IHVzZWZ1bCBiZWNhdXNlIGl0IG9wZW5zIHVwIGVtdWxhdGlvbiBwb3NzaWJpbGl0aWVzIHRocm91Z2ggVVNCIGdhZGdldCwgUmF3IEdhZGdldCwgYW5kLCBvZiBjb3Vyc2UsIHN5emthbGxlci4gU2luY2UgVVNCIGFuZCBTRElPIGRldmljZXMgb2Z0ZW4gb3BlcmF0ZSBpbiBhIGhpZ2gtbGF0ZW5jeSAoSEwpIGVudmlyb25tZW50LCBteSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBzZWUgaWYgd2UgY2FuIGFjdHVhbGx5IHJlYWNoIHRoZSBgYXRoMTBrYCYjMzk7cyBgaHR0X3J4YCBmdW5jdGlvbnMgd2l0aGluIHRoYXQgSEwgY29udGV4dC4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGwgcGF0aHMgdG8gZGV0ZXJtaW5lIGlmIHRoZSBgYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsYCBmdW5jdGlvbiBpcyBiZWluZyBpbnZva2VkIHdoZW4gdGhlc2UgaGlnaGVyIGxhdGVuY3kgZGV2aWNlcyBhcmUgaW50ZXJhY3RpbmcuIFRoaXMgd2lsbCBob3BlZnVsbHkgcHJvdmlkZSBpbnNpZ2h0IGludG8gcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyBvciBzdGFiaWxpdHkgaXNzdWVzIHdpdGhpbiB0aGF0IHNwZWNpZmljIHN1YnN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwODo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmM9Mjc0Mz1zdGF0aWMgaW50IGF0aDEwa19odHRfcnhfZnJhZ193ZXBfZGVjYXAoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jLTI3NTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jOjI3NTg6c3RhdGljIGJvb2wgYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsKHN0cnVjdCBhdGgxMGtfaHR0ICpodHQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jLTI3NTktXHRcdFx0XHRcdCAgICAgIHN0cnVjdCBodHRfcnhfZnJhZ21lbnRfaW5kaWNhdGlvbiAqcngsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguYz00NDkwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTBrX2h0dF9yeF9vcHMgaHR0X3J4X29wc19obCA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmM6NDQ5MTpcdC5odHRfcnhfcHJvY19yeF9mcmFnX2luZCA9IGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmMtNDQ5Mi19O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA4OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4ODA2CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqVHJhY2luZyB0aGUgVXNhZ2Ugb2YgYGh0dF9yeF9vcHNfaGxgKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtXaGVyZSYjMzk7cyB0aGlzIGBodHRfcnhfb3BzX2hsYCBmdW5jdGlvbiBhY3R1YWxseSAqZG9pbmcqIHdvcms/JiMzNDsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQuIEkgbmVlZCB0byBrbm93IHdoYXQgY29kZSBpcyBjYWxsaW5nIGl0IGFuZCB3aHkuIElzIGl0IHBhcnQgb2YgdGhlIGRhdGEgcGF0aCwgY29udHJvbCBwbGFuZSwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgc2l0ZXMgaXMgdGhlIGtleSB0byBmaWd1cmluZyBvdXQgaXRzIGZ1bmN0aW9uIGFuZCBpdHMgcm9sZSBpbiB0aGUgc3lzdGVtLiBJJiMzOTtsbCBzdGFydCBieSBsb29raW5nIGZvciBkaXJlY3QgdXNhZ2VzIGFuZCB0aGVuIHdvcmsgbXkgd2F5IHVwIHRoZSBjYWxsIHN0YWNrIHRvIHNlZSB3aGVyZSBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZS4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBjb2RlIGhhcyB0byBzaG93IG1lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA4OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2h0dF9yeF9vcHNfaGwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmM9NDQ4Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGF0aDEwa19odHRfcnhfb3BzIGh0dF9yeF9vcHNfNjQgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguYy00NDg5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguYzo0NDkwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTBrX2h0dF9yeF9vcHMgaHR0X3J4X29wc19obCA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmMtNDQ5MS1cdC5odHRfcnhfcHJvY19yeF9mcmFnX2luZCA9IGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jPTQ0OTQ9dm9pZCBhdGgxMGtfaHR0X3NldF9yeF9vcHMoc3RydWN0IGF0aDEwa19odHQgKmh0dClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jLTQ0OTgtXHRpZiAoYXItXHUwMDNlYnVzX3BhcmFtLmRldl90eXBlID09IEFUSDEwS19ERVZfVFlQRV9ITClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmM6NDQ5OTpcdFx0aHR0LVx1MDAzZXJ4X29wcyA9IFx1MDAyNmh0dF9yeF9vcHNfaGw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jLTQ1MDAtXHRlbHNlIGlmIChhci1cdTAwM2Vod19wYXJhbXMudGFyZ2V0XzY0Yml0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA4OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MzkzCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTAzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQVRIMTBLIEhpZ2ggTGF0ZW5jeSBSWCBGcmFnbWVudCBJbmRpY2F0b3IqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IGBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGxgIGlzIHNwZWNpZmljYWxseSBlbXBsb3llZCB3aXRoaW4gdGhlICYjMzQ7SGlnaCBMYXRlbmN5JiMzNDsgZGV2aWNlIGNvbnRleHQsIHdoaWNoLCBmcm9tIG15IGV4cGVyaWVuY2UsIGVuY29tcGFzc2VzIFVTQiBhbmQgU0RJTyBpbXBsZW1lbnRhdGlvbnMsIGNoYXJhY3Rlcml6ZWQgYnkgdGhvc2UgaGlnaGVyIGxhdGVuY2llcy4gR2l2ZW4gdGhhdCwgSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGV4YWN0IGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggdGhpcyBmdW5jdGlvbiBpcyBpbnZva2VkLiBUaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gdHJhY2UgY2FsbHMgdG8gYGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obGAgYnkgZXhhbWluaW5nIHRoZSBgaHR0LSZndDtyeF9vcHMtJmd0O2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kYCBzdHJ1Y3R1cmUuIFRoaXMgd2lsbCByZXZlYWwgdGhlIGNhbGxpbmcgY29udGV4dCBhbmQgcG90ZW50aWFsbHkgZWx1Y2lkYXRlIHRoZSB0cmlnZ2VycyB0aGF0IGxlYWQgdG8gaXRzIGV4ZWN1dGlvbiB3aXRoaW4gdGhlIGJyb2FkZXIgYGF0aDEwa2AgcmVjZWl2ZSBwYXRoLCBwYXJ0aWN1bGFybHkgZm9yIHRob3NlIGhpZ2hlciBsYXRlbmN5IGNvbmZpZ3VyYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwODo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtodHRfcnhfcHJvY19yeF9mcmFnX2luZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHQuaD0yMDE5PXN0cnVjdCBhdGgxMGtfaHR0X3J4X29wcyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHQuaC0yMDI1LVx0dm9pZCAoKmh0dF9yZXNldF9wYWRkcnNfcmluZykoc3RydWN0IGF0aDEwa19odHQgKmh0dCwgaW50IGlkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dC5oOjIwMjY6XHRib29sICgqaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmQpKHN0cnVjdCBhdGgxMGtfaHR0ICpodHQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dC5oLTIwMjctXHRcdFx0XHRcdHN0cnVjdCBodHRfcnhfZnJhZ21lbnRfaW5kaWNhdGlvbiAqcngsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHQuaD0yMDYyPXN0YXRpYyBpbmxpbmUgdm9pZCBhdGgxMGtfaHR0X3Jlc2V0X3BhZGRyc19yaW5nKHN0cnVjdCBhdGgxMGtfaHR0ICpodHQsIGludCBpZHgpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHQuaC0yMDY3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHQuaDoyMDY4OnN0YXRpYyBpbmxpbmUgYm9vbCBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmQoc3RydWN0IGF0aDEwa19odHQgKmh0dCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0LmgtMjA2OS1cdFx0XHRcdFx0XHQgIHN0cnVjdCBodHRfcnhfZnJhZ21lbnRfaW5kaWNhdGlvbiAqcngsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHQuaC0yMDcxLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0Lmg6MjA3MjpcdGlmICghaHR0LVx1MDAzZXJ4X29wcy1cdTAwM2VodHRfcnhfcHJvY19yeF9mcmFnX2luZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0LmgtMjA3My1cdFx0cmV0dXJuIHRydWU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dC5oLTIwNzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dC5oOjIwNzU6XHRyZXR1cm4gaHR0LVx1MDAzZXJ4X29wcy1cdTAwM2VodHRfcnhfcHJvY19yeF9mcmFnX2luZChodHQsIHJ4LCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHQuaC0yMDc2LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jPTI3NDM9c3RhdGljIGludCBhdGgxMGtfaHR0X3J4X2ZyYWdfd2VwX2RlY2FwKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguYy0yNzU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguYzoyNzU4OnN0YXRpYyBib29sIGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obChzdHJ1Y3QgYXRoMTBrX2h0dCAqaHR0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguYy0yNzU5LVx0XHRcdFx0XHQgICAgICBzdHJ1Y3QgaHR0X3J4X2ZyYWdtZW50X2luZGljYXRpb24gKnJ4LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmM9NDEwNT1ib29sIGF0aDEwa19odHRfdDJoX21zZ19oYW5kbGVyKHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmMtNDIyMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmM6NDIyMTpcdFx0cmV0dXJuIGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZChodHQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jLTQyMjItXHRcdFx0XHRcdFx0ICAgICAgXHUwMDI2cmVzcC1cdTAwM2VyeF9mcmFnX2luZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jPTQ0OTA9c3RhdGljIGNvbnN0IHN0cnVjdCBhdGgxMGtfaHR0X3J4X29wcyBodHRfcnhfb3BzX2hsID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguYzo0NDkxOlx0Lmh0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kID0gYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguYy00NDkyLX07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA4OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNzQ2CgkJCQkJCQlvdXRwdXQ6IDUzCgkJCQkJCQl0aG91Z2h0czogMTM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IERlZXAgRGl2ZSBpbnRvIGF0aDEwayYjMzk7cyBNZXNzYWdlIEhhbmRsaW5nIGFuZCBEZWJ1Z2dpbmcqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGUgYXRoMTBrIGRyaXZlciBhZ2Fpbiwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIGhvdyBpdCBtYW5hZ2VzIGNvbW11bmljYXRpb24gd2l0aCB0aGUgZmlybXdhcmUuICBJJiMzOTttIHRyYWNraW5nIHRoZSBwYXRoIG9mIG1lc3NhZ2VzICpmcm9tKiB0aGUgZGV2aWNlLCAqdG8qIHRoZSBob3N0LiAgTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IGBhdGgxMGtfaHR0X3QyaF9tc2dfaGFuZGxlcmAgaXMgdGhlIGNydWNpYWwgZnVuY3Rpb24gaGVyZSwgZGVhbGluZyB3aXRoIHRoZSB0YXJnZXQtdG8taG9zdCBtZXNzYWdlcy4gIEVzc2VudGlhbGx5LCBpdCYjMzk7cyB0aGUgY2VudHJhbCBwb2ludCB3aGVyZSB0aGUgZHJpdmVyIHByb2Nlc3NlcyBkYXRhIGNvbWluZyBmcm9tIHRoZSBmaXJtd2FyZSBvdmVyIHRoZSBVU0IsIFNESU8sIG9yIFBDSSBpbnRlcmZhY2VzIOKAkyB0aGUgcHJpbWFyeSBjb21tdW5pY2F0aW9uIGNoYW5uZWxzLgoKTm93LCB3aGVyZSBkbyB0aGVzZSBtZXNzYWdlcyAqY29tZSBmcm9tKj8gQWgsIHllcywgYGF0aDEwa191c2JfcnhfY29tcGxldGVgIGluIGB1c2IuY2AhIEl0JiMzOTtzIHRoZSByZWNlaXZlciBmdW5jdGlvbi4gVGhpcyBmdW5jdGlvbiByZWNlaXZlcyB0aGUgU0tCcyBmcm9tIHRoZSBVU0IgZW5kcG9pbnRzIGFuZCB0aGVuIGhhbmRzIHRoZW0gZGlyZWN0bHkgb2ZmIHRvIGBhdGgxMGtfaHR0X3QyaF9tc2dfaGFuZGxlcmAgZm9yIHByb2Nlc3NpbmcuIFRoYXQmIzM5O3MgYSBjbGVhbiBoYW5kb3Zlci4KCkkgYWxzbyB3YW50IHRvIGV4cGxvcmUgdGhlIGRlYnVnIGZhY2lsaXRpZXMuIGBkZWJ1Zy5jYCBzaG91bGQgaG9sZCB0aGUga2V5cyB0byB1bmRlcnN0YW5kaW5nIGFuZCBwb3RlbnRpYWxseSBtb2RpZnlpbmcgdGhlIGRyaXZlciYjMzk7cyBpbnRlcm5hbHMuIExldCYjMzk7cyBkaWcgaW4gYW5kIHNlZS4gUmlnaHQgbm93LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRob3NlIGRlYnVnZnMgZmlsZSBvcGVyYXRpb25zIC0gYGF0aDEwa19yZWdfdmFsdWVfd3JpdGVgIGFuZCBgYXRoMTBrX21lbV92YWx1ZV93cml0ZWAuIFRoZXNlIHNvdW5kIGxpa2UgY3JpdGljYWwgdG9vbHMgZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcgcmVnaXN0ZXIgYW5kIG1lbW9yeSB2YWx1ZXMgZGlyZWN0bHksIHdoaWNoIGFyZSBpbnZhbHVhYmxlIGZvciBkZWJ1Z2dpbmcgYW5kIGZpbmUtdHVuaW5nIHRoZSBkcml2ZXImIzM5O3MgYmVoYXZpb3IuIFRpbWUgdG8gb3BlbiBgZGVidWcuY2AgYW5kIGdldCBteSBoYW5kcyBkaXJ0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDg6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTBrX3JlZ192YWx1ZV93cml0ZXxhdGgxMGtfbWVtX3ZhbHVlX3dyaXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEwayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmM9NjgzPXN0YXRpYyBzc2l6ZV90IGF0aDEwa19yZWdfdmFsdWVfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmMtNzEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jOjcxNDpzdGF0aWMgc3NpemVfdCBhdGgxMGtfcmVnX3ZhbHVlX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jLTcxNS1cdFx0XHRcdCAgICAgIGNvbnN0IGNoYXIgX191c2VyICp1c2VyX2J1Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmM9NzUzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfcmVnX3ZhbHVlID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jLTc1NC1cdC5yZWFkID0gYXRoMTBrX3JlZ192YWx1ZV9yZWFkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jOjc1NTpcdC53cml0ZSA9IGF0aDEwa19yZWdfdmFsdWVfd3JpdGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmMtNzU2LVx0Lm9wZW4gPSBzaW1wbGVfb3Blbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmM9NzYxPXN0YXRpYyBzc2l6ZV90IGF0aDEwa19tZW1fdmFsdWVfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmMtODEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jOjgxMzpzdGF0aWMgc3NpemVfdCBhdGgxMGtfbWVtX3ZhbHVlX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jLTgxNC1cdFx0XHRcdCAgICAgIGNvbnN0IGNoYXIgX191c2VyICp1c2VyX2J1Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmM9ODc3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfbWVtX3ZhbHVlID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jLTg3OC1cdC5yZWFkID0gYXRoMTBrX21lbV92YWx1ZV9yZWFkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jOjg3OTpcdC53cml0ZSA9IGF0aDEwa19tZW1fdmFsdWVfd3JpdGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmMtODgwLVx0Lm9wZW4gPSBzaW1wbGVfb3BlbixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDg6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE4NjEKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRlYnVnZ2luZyB0aGUgYXRoMTBrIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgYGF0aDEwa2AgaXNzdWUuIE15IGZpcnN0IGluc3RpbmN0LCBnaXZlbiB0aGUgbmF0dXJlIG9mIHRoZXNlIHByb2JsZW1zLCBpcyB0byBzdGFydCB3aXRoIHRoZSBkZWJ1ZyByZWdpc3RlcnMgYW5kIGNyZWF0aW9uIHByb2Nlc3Nlcy4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0JiMzOTtzIGdvaW5nIG9uIGF0IHRoZSBsb3dlc3QgbGV2ZWwuIExldCYjMzk7cyBzdGFydCBieSBzY3J1dGluaXppbmcgdGhlIGBhdGgxMGtfZGVidWdfcmVnaXN0ZXJgIGZ1bmN0aW9uLCB0byBzZWUgaG93IHRoZSBkZWJ1ZyBtZWNoYW5pc21zIGFyZSBzZXQgdXAgaW5pdGlhbGx5LiBJJiMzOTttIHdvbmRlcmluZyBpZiB0aGVyZSYjMzk7cyBhbiBpc3N1ZSB3aXRoIHRoZSByZWdpc3RyYXRpb24gcHJvY2VzcyBpdHNlbGYsIG1heWJlIHNvbWV0aGluZyByZWxhdGVkIHRvIGhvdyB0aGUgZGVidWcgaW5mcmFzdHJ1Y3R1cmUgaXMgZXhwb3NlZCB0byB0aGUgdXNlciBzcGFjZSBvciBob3cgdGhlIHJlZ2lzdGVycyBhcmUgZ2V0dGluZyBpbml0aWFsaXplZC4gQWx0ZXJuYXRpdmVseSwgdGhlIGBhdGgxMGtfZGVidWdfY3JlYXRlYCBmdW5jdGlvbiBtaWdodCBiZSBtb3JlIHJlbGV2YW50LiBQZXJoYXBzIHNvbWV0aGluZyBpc24mIzM5O3QgYmVpbmcgcHJvcGVybHkgaW5pdGlhbGl6ZWQsIG9yIG1heWJlIHRoZXJlIGlzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIGNyZWF0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGEgcmVsYXRlZCBvYmplY3QuIEZyb20gdGhpcywgSSB3aWxsIG1vdmUgdG8gZnVydGhlciBhY3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwODo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmb3BzX3JlZ192YWx1ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jPTcxND1zdGF0aWMgc3NpemVfdCBhdGgxMGtfcmVnX3ZhbHVlX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy03NTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmM6NzUzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfcmVnX3ZhbHVlID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jLTc1NC1cdC5yZWFkID0gYXRoMTBrX3JlZ192YWx1ZV9yZWFkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYz0yNTQ0PWludCBhdGgxMGtfZGVidWdfcmVnaXN0ZXIoc3RydWN0IGF0aDEwayAqYXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jLTI1NzYtXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwmIzM0O3JlZ192YWx1ZVwmIzM0OywgMDYwMCwgYXItXHUwMDNlZGVidWcuZGVidWdmc19waHksIGFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jOjI1Nzc6XHRcdFx0ICAgIFx1MDAyNmZvcHNfcmVnX3ZhbHVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy0yNTc4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwODo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjQzNwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKktjb25maWcsIGF0aDEwaywgRGVidWdmcywgYW5kIFVTQiDigJMgVGltZSB0byBDb25uZWN0IHRoZSBEb3RzKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyB0aGUgY29uZmlndXJhdGlvbiBsYW5kc2NhcGUgaW50ZXJzZWN0cyB3aXRoIHRoZSBwaWVjZXMgSSYjMzk7bSB3b3JraW5nIHdpdGggcmlnaHQgbm93LiBGaXJzdCBhbmQgZm9yZW1vc3QsIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGNvcmUgYXRoMTBrIHN1cHBvcnQgaXMgcHJvcGVybHkgZW5hYmxlZCBpbiBLY29uZmlnLiBUaGlzIGlzIHRoZSBmb3VuZGF0aW9uOyB3aXRob3V0IHRoYXQsIG5vdGhpbmcgZWxzZSBtYXR0ZXJzLiBJIG5lZWQgdG8gc3BlY2lmaWNhbGx5IGxvb2sgZm9yIHRoZSBhdGgxMGsgb3B0aW9ucywgYnV0IEkgYWxzbyBuZWVkIHRvIGJlIGNlcnRhaW4gYWJvdXQgdGhlIGRlcGVuZGVuY2llcyB0b28gLSB3aGljaCBJIHVzdWFsbHkgY2hlY2sgYXMgYSBtYXR0ZXIgb2YgaGFiaXQuCgpUaGVuLCBJJiMzOTttIHRoaW5raW5nIGFib3V0IGRlYnVnZnMuIElzIGl0IHByb3Blcmx5IGNvbmZpZ3VyZWQgZm9yIG15IHRhcmdldD8gSXMgaXQgZW5hYmxlZD8gSSYjMzk7bGwgcHJvYmFibHkgbmVlZCBpdCB0byBwcm9iZSB0aGUgZmlybXdhcmUgbG9hZGluZywgZGV2aWNlIHN0YXRlLCBhbmQgb3ZlcmFsbCBvcGVyYXRpb24uIEkmIzM5O20gYXNzdW1pbmcgdGhhdCBpdCBpcyBlbmFibGVkLCBidXQgSSBzaG91bGQgdmVyaWZ5IHRoYXQuIEkmIzM5O3ZlIGJlZW4gYnVybmVkIGJ5IGFzc3VtaW5nIGJlZm9yZSEKCkZpbmFsbHksIHRoZSBVU0IgY29ubmVjdGlvbiBpcyBpbiB0aGUgcGljdHVyZS4gVGhpcyBpcyBsaWtlbHkgaG93IEkmIzM5O20gaW50ZXJhY3Rpbmcgd2l0aCB0aGUgaGFyZHdhcmUuIFRoZXJlZm9yZSwgSSBuZWVkIHRvIGVuc3VyZSB0aGUgVVNCIGhvc3QgYW5kIGRldmljZSBkcml2ZXJzIGFyZSBjb3JyZWN0bHkgc2V0IHVwIGFuZCBjb25maWd1cmVkLiBUaGlzIGVuY29tcGFzc2VzIHRoZSB3aG9sZSBVU0Igc3RhY2sgdG9vLCBpbmNsdWRpbmcgdGhlIFVTQiBzdWJzeXN0ZW0uIEl0JiMzOTtzIG9mdGVuIHRoZSBib3R0bGVuZWNrLCBzbyBJIG5lZWQgdG8gYW50aWNpcGF0ZSB0aG9zZSBwb3RlbnRpYWwgcHJvYmxlbXMuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIHN5c3RlbSByZWNvZ25pemVzIHRoZSBoYXJkd2FyZS4gSXQmIzM5O3MgdGltZSB0byBjb3JyZWxhdGUgdGhlc2UgaXRlbXMgdG8gZ2V0IHRoZSB3aG9sZSBzeXN0ZW0gd29ya2luZy4KCkVzc2VudGlhbGx5LCBJJiMzOTttIG1lbnRhbGx5IGxheWluZyBvdXQgdGhlIHN0ZXBzIGFuZCBjb25maXJtaW5nIG15IGFzc3VtcHRpb25zIHRvIGF2b2lkIGFueSB3YXN0ZWQgdGltZSBsYXRlci4gQSBxdWljayBLY29uZmlnIGNoZWNrIGlzIGFsd2F5cyBhIHNtYXJ0IHN0YXJ0aW5nIHBvaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwODo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQVRIMTBLJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEwayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzoyOmNvbmZpZyBBVEgxMEtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyA4MDIuMTFhYyB3aXJlbGVzcyBjYXJkcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnOjE1OmNvbmZpZyBBVEgxMEtfQ0VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy0xNi1cdGJvb2xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy0xNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzoxODpjb25maWcgQVRIMTBLX1BDSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTE5LVx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyBhdGgxMGsgUENJIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctMjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWc6MjQ6Y29uZmlnIEFUSDEwS19BSEJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy0yNS1cdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGgxMGsgQUhCIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctMjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWc6MzA6Y29uZmlnIEFUSDEwS19TRElPXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctMzEtXHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIGF0aDEwayBTRElPIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWc6MzY6Y29uZmlnIEFUSDEwS19VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy0zNy1cdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgYXRoMTBrIFVTQiBzdXBwb3J0IChFWFBFUklNRU5UQUwpXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnOjQzOmNvbmZpZyBBVEgxMEtfU05PQ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTQ0LVx0dHJpc3RhdGUgXCYjMzQ7UXVhbGNvbW0gYXRoMTBrIFNOT0Mgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy01NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzo1Njpjb25maWcgQVRIMTBLX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctNTctXHRib29sIFwmIzM0O0F0aGVyb3MgYXRoMTBrIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy02My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzo2NDpjb25maWcgQVRIMTBLX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy02NS1cdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGgxMGsgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTcxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnOjcyOmNvbmZpZyBBVEgxMEtfTEVEU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTczLVx0Ym9vbFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy03Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzo3ODpjb25maWcgQVRIMTBLX1NQRUNUUkFMXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctNzktXHRib29sIFwmIzM0O0F0aGVyb3MgYXRoMTBrIHNwZWN0cmFsIHNjYW4gc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy04NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzo4Njpjb25maWcgQVRIMTBLX1RSQUNJTkdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy04Ny1cdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGgxMGsgdHJhY2luZyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnOjkzOmNvbmZpZyBBVEgxMEtfREZTX0NFUlRJRklFRFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTk0LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIERGUyBzdXBwb3J0IGZvciBjZXJ0aWZpZWQgcGxhdGZvcm1zXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA4OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzOTEwCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUgd2UgZ28uIExldCYjMzk7cyBkaXZlIGluIGFuZCBkaXNzZWN0IHRoaXMgS2NvbmZpZyBmaWxlIGZvciBBVEgxMEtfVVNCIGFuZCBBVEgxMEtfREVCVUdGUyB3aXRoaW4gdGhlIGF0aDEwayBkcml2ZXIuCioqRXhhbWluaW5nIHRoZSBBVEgxMEsgS2NvbmZpZyBPcHRpb25zKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IGludG8gdGhlIG5pdHR5LWdyaXR0eS4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBnb2luZyBvdmVyIHRoZSBmdWxsIEtjb25maWcgZmlsZSBmb3IgQVRIMTBLX1VTQiBhbmQgQVRIMTBLX0RFQlVHRlMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IHRoZXNlIG9wdGlvbnMgYXJlIHN0cnVjdHVyZWQsIHdoYXQgZGVwZW5kZW5jaWVzIHRoZXkgaGF2ZSwgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgYnJvYWRlciBBVEgxMEsgZnJhbWV3b3JrLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZToKCiogICAqKkRlcGVuZGVuY2llczoqKiBXaGF0IG90aGVyIEtjb25maWcgc3ltYm9scyBuZWVkIHRvIGJlIGVuYWJsZWQgZm9yIHRoZXNlIHRvIGV2ZW4gc2hvdyB1cD8gQXJlIHRoZXkgZGVwZW5kZW50IG9uIHNwZWNpZmljIFVTQiBkcml2ZXIgY29uZmlndXJhdGlvbnMgb3IgZGVidWdnaW5nIG9wdGlvbnM/CiogICAqKkRlZmF1bHQgVmFsdWVzOioqIFdoYXQmIzM5O3MgdGhlIGRlZmF1bHQgYmVoYXZpb3I/IEFyZSB0aGV5IGVuYWJsZWQgYnkgZGVmYXVsdCwgb3IgZGlzYWJsZWQ/IFVuZGVyc3RhbmRpbmcgdGhlIGRlZmF1bHRzIHRlbGxzIG1lIHdoYXQgdGhlIGRldmVsb3BlcnMgcHJpb3JpdGl6ZWQuCiogICAqKkhlbHAgVGV4dDoqKiBUaGUgaGVscCB0ZXh0IGlzLCBvZiBjb3Vyc2UsIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgaW50ZW50IG9mIHRoZSBvcHRpb25zLiBJJiMzOTtsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBkZXNjcmlwdGlvbnMgdG8gc2VlIHdoYXQgZmVhdHVyZXMgb3IgZGVidWdnaW5nIGNhcGFiaWxpdGllcyB0aGVzZSBLY29uZmlnIHN5bWJvbHMgYWN0dWFsbHkgYWN0aXZhdGUuCiogICAqKkNvbmRpdGlvbmFsIExvZ2ljOioqIEFyZSB0aGVyZSBhbnkgY29tcGxleCBgaWZgIHN0YXRlbWVudHMgb3IgYm9vbGVhbiBsb2dpYyB0aGF0IGdvdmVybnMgd2hlbiB0aGVzZSBvcHRpb25zIGFyZSBhdmFpbGFibGU/IFRoaXMgd2lsbCBzaG93IGhvdyBjb25maWd1cmFibGUgdGhlIGRyaXZlcnMgYXJlLgoqICAgKipJbXBsaWNhdGlvbnM6KiogV2hhdCBhcmUgdGhlIHRyYWRlLW9mZnMgb2YgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIHRoZXNlIG9wdGlvbnM/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIGltcGFjdHMgb24ga2VybmVsIHNpemUsIHJlc291cmNlIHVzYWdlLCBvciBwZXJmb3JtYW5jZSB0aGF0IEkgc2hvdWxkIGJlIGF3YXJlIG9mPwoKTXkgZ29hbCBpcyB0byB0aG9yb3VnaGx5IGFuYWx5emUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIEFUSDEwSyBVU0IgZHJpdmVyLiBJdCB3aWxsIGdpdmUgbWUgYSBkZWVwIGluc2lnaHQgaW50byBob3cgdGhlIGRyaXZlcnMgYXJlIGJ1aWx0IGFuZCB3aGF0IGZlYXR1cmVzIGFyZSBhdmFpbGFibGUgZm9yIHRoZXNlIGRldmljZXMsIGFuZCBob3cgdG8gY29uZmlndXJlIHRoZW0gZm9yIGRpZmZlcmVudCB1c2UgY2FzZXMuIEl0JiMzOTtzIGEgZnVuZGFtZW50YWwgcGFydCBvZiByZWFsbHkgdW5kZXJzdGFuZGluZyBob3cgdG8gd29yayB3aXRoIHRoaXMgZHJpdmVyIGFuZCBtYWtlIHRoZSBtb3N0IG9mIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwODo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xuICAgMjpcdGNvbmZpZyBBVEgxMEtcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgODAyLjExYWMgd2lyZWxlc3MgY2FyZHMgc3VwcG9ydFwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMSBcdTAwMjZcdTAwMjYgSEFTX0RNQVxuICAgNTpcdFx0c2VsZWN0IEFUSF9DT01NT05cbiAgIDY6XHRcdHNlbGVjdCBDUkMzMlxuICAgNzpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gICA4Olx0XHRzZWxlY3QgQVRIMTBLX0NFXG4gICA5Olx0XHRoZWxwXG4gIDEwOlx0XHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb25cbiAgMTE6XHRcdCAgQXRoZXJvcyBJRUVFIDgwMi4xMWFjIGZhbWlseSBvZiBjaGlwc2V0cy5cbiAgMTI6XHRcbiAgMTM6XHRcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQmIzM5O2xsIGJlIGNhbGxlZCBhdGgxMGsuXG4gIDE0Olx0XG4gIDE1Olx0Y29uZmlnIEFUSDEwS19DRVxuICAxNjpcdFx0Ym9vbFxuICAxNzpcdFxuICAxODpcdGNvbmZpZyBBVEgxMEtfUENJXG4gIDE5Olx0XHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIGF0aDEwayBQQ0kgc3VwcG9ydFwmIzM0O1xuICAyMDpcdFx0ZGVwZW5kcyBvbiBBVEgxMEsgXHUwMDI2XHUwMDI2IFBDSVxuICAyMTpcdFx0aGVscFxuICAyMjpcdFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIFBDSUUgYnVzXG4gIDIzOlx0XG4gIDI0Olx0Y29uZmlnIEFUSDEwS19BSEJcbiAgMjU6XHRcdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGgxMGsgQUhCIHN1cHBvcnRcJiMzNDtcbiAgMjY6XHRcdGRlcGVuZHMgb24gQVRIMTBLX1BDSSBcdTAwMjZcdTAwMjYgT0YgXHUwMDI2XHUwMDI2IFJFU0VUX0NPTlRST0xMRVJcbiAgMjc6XHRcdGhlbHBcbiAgMjg6XHRcdCAgVGhpcyBtb2R1bGUgYWRkcyBzdXBwb3J0IGZvciBBSEIgYnVzXG4gIDI5Olx0XG4gIDMwOlx0Y29uZmlnIEFUSDEwS19TRElPXG4gIDMxOlx0XHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIGF0aDEwayBTRElPIHN1cHBvcnRcJiMzNDtcbiAgMzI6XHRcdGRlcGVuZHMgb24gQVRIMTBLIFx1MDAyNlx1MDAyNiBNTUNcbiAgMzM6XHRcdGhlbHBcbiAgMzQ6XHRcdCAgVGhpcyBtb2R1bGUgYWRkcyBzdXBwb3J0IGZvciBTRElPL01NQyBidXMuXG4gIDM1Olx0XG4gIDM2Olx0Y29uZmlnIEFUSDEwS19VU0JcbiAgMzc6XHRcdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgYXRoMTBrIFVTQiBzdXBwb3J0IChFWFBFUklNRU5UQUwpXCYjMzQ7XG4gIDM4Olx0XHRkZXBlbmRzIG9uIEFUSDEwSyBcdTAwMjZcdTAwMjYgVVNCXG4gIDM5Olx0XHRoZWxwXG4gIDQwOlx0XHQgIFRoaXMgbW9kdWxlIGFkZHMgZXhwZXJpbWVudGFsIHN1cHBvcnQgZm9yIFVTQiBidXMuIEN1cnJlbnRseVxuICA0MTpcdFx0ICB3b3JrIGluIHByb2dyZXNzIGFuZCB3aWxsIG5vdCBmdWxseSB3b3JrLlxuICA0MjpcdFxuICA0MzpcdGNvbmZpZyBBVEgxMEtfU05PQ1xuICA0NDpcdFx0dHJpc3RhdGUgXCYjMzQ7UXVhbGNvbW0gYXRoMTBrIFNOT0Mgc3VwcG9ydFwmIzM0O1xuICA0NTpcdFx0ZGVwZW5kcyBvbiBBVEgxMEtcbiAgNDY6XHRcdGRlcGVuZHMgb24gQVJDSF9RQ09NIHx8IENPTVBJTEVfVEVTVFxuICA0NzpcdFx0ZGVwZW5kcyBvbiBRQ09NX1NNRU1cbiAgNDg6XHRcdGRlcGVuZHMgb24gUUNPTV9SUFJPQ19DT01NT04gfHwgUUNPTV9SUFJPQ19DT01NT049blxuICA0OTpcdFx0c2VsZWN0IFBPV0VSX1NFUVVFTkNJTkdcbiAgNTA6XHRcdHNlbGVjdCBRQ09NX1NDTVxuICA1MTpcdFx0c2VsZWN0IFFDT01fUU1JX0hFTFBFUlNcbiAgNTI6XHRcdGhlbHBcbiAgNTM6XHRcdCAgVGhpcyBtb2R1bGUgYWRkcyBzdXBwb3J0IGZvciBpbnRlZ3JhdGVkIFdDTjM5OTAgY2hpcCBjb25uZWN0ZWRcbiAgNTQ6XHRcdCAgdG8gc3lzdGVtIE5PQyhTTk9DKS5cbiAgNTU6XHRcbiAgNTY6XHRjb25maWcgQVRIMTBLX0RFQlVHXG4gIDU3Olx0XHRib29sIFwmIzM0O0F0aGVyb3MgYXRoMTBrIGRlYnVnZ2luZ1wmIzM0O1xuICA1ODpcdFx0ZGVwZW5kcyBvbiBBVEgxMEtcbiAgNTk6XHRcdGhlbHBcbiAgNjA6XHRcdCAgRW5hYmxlcyBkZWJ1ZyBzdXBwb3J0XG4gIDYxOlx0XG4gIDYyOlx0XHQgIElmIHVuc3VyZSwgc2F5IFkgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZGVidWcgcHJvYmxlbXMuXG4gIDYzOlx0XG4gIDY0Olx0Y29uZmlnIEFUSDEwS19ERUJVR0ZTXG4gIDY1Olx0XHRib29sIFwmIzM0O0F0aGVyb3MgYXRoMTBrIGRlYnVnZnMgc3VwcG9ydFwmIzM0O1xuICA2NjpcdFx0ZGVwZW5kcyBvbiBBVEgxMEsgXHUwMDI2XHUwMDI2IERFQlVHX0ZTXG4gIDY3Olx0XHRoZWxwXG4gIDY4Olx0XHQgIEVuYWJsZWQgZGVidWdmcyBzdXBwb3J0XG4gIDY5Olx0XG4gIDcwOlx0XHQgIElmIHVuc3VyZSwgc2F5IFkgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZGVidWcgcHJvYmxlbXMuXG4gIDcxOlx0XG4gIDcyOlx0Y29uZmlnIEFUSDEwS19MRURTXG4gIDczOlx0XHRib29sXG4gIDc0Olx0XHRkZXBlbmRzIG9uIEFUSDEwS1xuICA3NTpcdFx0ZGVwZW5kcyBvbiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1NQUM4MDIxMVxuICA3NjpcdFx0ZGVmYXVsdCB5XG4gIDc3Olx0XG4gIDc4Olx0Y29uZmlnIEFUSDEwS19TUEVDVFJBTFxuICA3OTpcdFx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDEwayBzcGVjdHJhbCBzY2FuIHN1cHBvcnRcJiMzNDtcbiAgODA6XHRcdGRlcGVuZHMgb24gQVRIMTBLX0RFQlVHRlNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDg6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU0NDcKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgdGhlIEJ1aWxkIFByb2Nlc3MqKgoKT2theSwgdGltZSB0byBnZXQgYSBoYW5kbGUgb24gd2hhdCYjMzk7cyBhY3R1YWxseSBoYXBwZW5pbmcgZHVyaW5nIHRoZSBidWlsZC4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBkaXZlIHN0cmFpZ2h0IGludG8gdGhlIGBNYWtlZmlsZWAuIFRoYXQmIzM5O3Mgd2hlcmUgYWxsIHRoZSBvcmNoZXN0cmF0aW9uIGhhcHBlbnMsIHJpZ2h0PyBJdCYjMzk7cyB0aGUgY2VudHJhbCBodWIgZm9yIGRlZmluaW5nIGRlcGVuZGVuY2llcyBhbmQgY29tbWFuZHMuIEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IHdoaWNoIGZpbGVzIGFyZSBiZWluZyBjb21waWxlZCwgbGlua2VkLCBvciBvdGhlcndpc2UgcHJvY2Vzc2VkLiBVbmRlcnN0YW5kaW5nIHRoaXMgd2lsbCBnaXZlIG1lIGEgc29saWQgcGljdHVyZSBvZiB0aGUgZW50aXJlIGJ1aWxkIHByb2Nlc3MuIEkmIzM5O20gZ29pbmcgdG8gbG9vayBmb3IgdGhlIGtleSB0YXJnZXRzIGFuZCB0aGVpciBhc3NvY2lhdGVkIHJ1bGVzIHRvIHRyYWNlIHRoZSBmbG93LiBUaGlzIGlzIGZ1bmRhbWVudGFsIGZvciBkaWFnbm9zaW5nIGFueSBwb3RlbnRpYWwgYnVpbGQgaXNzdWVzIG9yIGluZWZmaWNpZW5jaWVzLCBhbmQgdG8gaW1wcm92ZSBteSBvdmVyYWxsIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGJ1aWxkIHNldHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwODo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvTWFrZWZpbGUmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgIDI6XHRvYmotJChDT05GSUdfQVRIMTBLKSAmIzQzOz0gYXRoMTBrX2NvcmUub1xuICAgMzpcdGF0aDEwa19jb3JlLXkgJiM0Mzs9IG1hYy5vIFxcXG4gICA0Olx0XHRcdCBkZWJ1Zy5vIFxcXG4gICA1Olx0XHRcdCBjb3JlLm8gXFxcbiAgIDY6XHRcdFx0IGh0Yy5vIFxcXG4gICA3Olx0XHRcdCBodHQubyBcXFxuICAgODpcdFx0XHQgaHR0X3J4Lm8gXFxcbiAgIDk6XHRcdFx0IGh0dF90eC5vIFxcXG4gIDEwOlx0XHRcdCB0eHJ4Lm8gXFxcbiAgMTE6XHRcdFx0IHdtaS5vIFxcXG4gIDEyOlx0XHRcdCB3bWktdGx2Lm8gXFxcbiAgMTM6XHRcdFx0IGJtaS5vIFxcXG4gIDE0Olx0XHRcdCBody5vIFxcXG4gIDE1Olx0XHRcdCBwMnAubyBcXFxuICAxNjpcdFx0XHQgc3dhcC5vXG4gIDE3Olx0XG4gIDE4Olx0YXRoMTBrX2NvcmUtJChDT05GSUdfQVRIMTBLX1NQRUNUUkFMKSAmIzQzOz0gc3BlY3RyYWwub1xuICAxOTpcdGF0aDEwa19jb3JlLSQoQ09ORklHX05MODAyMTFfVEVTVE1PREUpICYjNDM7PSB0ZXN0bW9kZS5vXG4gIDIwOlx0YXRoMTBrX2NvcmUtJChDT05GSUdfQVRIMTBLX1RSQUNJTkcpICYjNDM7PSB0cmFjZS5vXG4gIDIxOlx0YXRoMTBrX2NvcmUtJChDT05GSUdfVEhFUk1BTCkgJiM0Mzs9IHRoZXJtYWwub1xuICAyMjpcdGF0aDEwa19jb3JlLSQoQ09ORklHX0FUSDEwS19MRURTKSAmIzQzOz0gbGVkcy5vXG4gIDIzOlx0YXRoMTBrX2NvcmUtJChDT05GSUdfTUFDODAyMTFfREVCVUdGUykgJiM0Mzs9IGRlYnVnZnNfc3RhLm9cbiAgMjQ6XHRhdGgxMGtfY29yZS0kKENPTkZJR19QTSkgJiM0Mzs9IHdvdy5vXG4gIDI1Olx0YXRoMTBrX2NvcmUtJChDT05GSUdfREVWX0NPUkVEVU1QKSAmIzQzOz0gY29yZWR1bXAub1xuICAyNjpcdGF0aDEwa19jb3JlLSQoQ09ORklHX0FUSDEwS19DRSkgJiM0Mzs9IGNlLm9cbiAgMjc6XHRcbiAgMjg6XHRvYmotJChDT05GSUdfQVRIMTBLX1BDSSkgJiM0Mzs9IGF0aDEwa19wY2kub1xuICAyOTpcdGF0aDEwa19wY2kteSAmIzQzOz0gcGNpLm9cbiAgMzA6XHRcbiAgMzE6XHRhdGgxMGtfcGNpLSQoQ09ORklHX0FUSDEwS19BSEIpICYjNDM7PSBhaGIub1xuICAzMjpcdFxuICAzMzpcdG9iai0kKENPTkZJR19BVEgxMEtfU0RJTykgJiM0Mzs9IGF0aDEwa19zZGlvLm9cbiAgMzQ6XHRhdGgxMGtfc2Rpby15ICYjNDM7PSBzZGlvLm9cbiAgMzU6XHRcbiAgMzY6XHRvYmotJChDT05GSUdfQVRIMTBLX1VTQikgJiM0Mzs9IGF0aDEwa191c2Iub1xuICAzNzpcdGF0aDEwa191c2IteSAmIzQzOz0gdXNiLm9cbiAgMzg6XHRcbiAgMzk6XHRvYmotJChDT05GSUdfQVRIMTBLX1NOT0MpICYjNDM7PSBhdGgxMGtfc25vYy5vXG4gIDQwOlx0YXRoMTBrX3Nub2MteSAmIzQzOz0gcW1pLm8gXFxcbiAgNDE6XHRcdFx0IHFtaV93bGZ3X3YwMS5vIFxcXG4gIDQyOlx0XHRcdCBzbm9jLm9cbiAgNDM6XHRcbiAgNDQ6XHQjIGZvciB0cmFjaW5nIGZyYW1ld29yayB0byBmaW5kIHRyYWNlLmhcbiAgNDU6XHRDRkxBR1NfdHJhY2UubyA6PSAtSSQoc3JjKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwODo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjQxMAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDE1MjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgVnVsbmVyYWJpbGl0eSBTdXJmYWNlIGFuZCBGdXp6aW5nIFN0cmF0ZWd5IGZvciBhdGgxMGsgRHJpdmVyKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIHJldm9sdmVzIGFyb3VuZCBhc3Nlc3NpbmcgdGhlIHBvdGVudGlhbCBmb3IgZnV6emluZyB0aGUgYGF0aDEwa2AgZHJpdmVyLiBJJiMzOTt2ZSBwaW5wb2ludGVkIHRocmVlIGtleSBhcmVhcyB3aXRoaW4gdGhlIGRyaXZlciYjMzk7cyBjb2RlIHRoYXQgbm93IGhhdmUgYWRkZWQgZGVmZW5zaXZlIGNoZWNrcyDigJMgbmFtZWx5LCBgZGVidWcuY2AgKHNwZWNpZmljYWxseSBgYXRoMTBrX3JlZ192YWx1ZV93cml0ZWAgYW5kIGBhdGgxMGtfbWVtX3ZhbHVlX3dyaXRlYCkgYW5kIGBodHRfcnguY2AgKGBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGxgKS4gVGhlc2UgYXJlIGludGVyZXN0aW5nIGJlY2F1c2UgdGhlIGFkZGVkIGlucHV0IHZhbGlkYXRpb24gc3VnZ2VzdHMgYSB2dWxuZXJhYmlsaXR5IG1heSBoYXZlIGJlZW4gcHJlc2VudCwgd2hpY2ggbWFrZXMgdGhlbSBwcmltZSB0YXJnZXRzLgoKRmlyc3QsIEkgb2JzZXJ2ZSB0aGF0IFN5emthbGxlciBpcyByZWxldmFudC4gSXQgZW11bGF0ZXMgVVNCIGRldmljZXMsIHdoaWNoIGFyZSBhIHZpYWJsZSBhdHRhY2sgc3VyZmFjZSBmb3Igd2lyZWxlc3MgZG9uZ2xlcy4gSXQmIzM5O3MgZnV6emluZyBVU0IgZHJpdmVycywgd2hpY2ggaXMgd2hhdCBgYXRoMTBrX3VzYmAgaXMuIFRoZSBjcml0aWNhbCBwaWVjZSBoZXJlIGlzIHRoZSBVU0IgSUQgdGFibGU6IHRoZSBkZXZpY2UgSUQgYDB4MTNiMToweDAwNDJgIGlzIGEgbWF0Y2gsIG1lYW5pbmcgSSBjYW4gcG90ZW50aWFsbHkgdHJpZ2dlciB0aGUgZHJpdmVyIGFuZCB0aGUgdnVsbmVyYWJpbGl0eS4KClRoZSBpbmNsdXNpb24gb2YgdGhlc2UgZGVmZW5zaXZlIGNoZWNrcyBtYWtlcyBtZSB0aGluayB0aGF0IHRoZXNlIGNvZGUgcGF0aHMsIGFuZCB0aGVyZWZvcmUgdGhlc2UgZnVuY3Rpb25zLCBhcmUgV29ydGhGdXp6aW5nLiBUaGUgY2hhbmdlcyBhcmUgc3BlY2lmaWNhbGx5IGFib3V0IGFkZGVkIGlucHV0IHZhbGlkYXRpb24sIHdoaWNoIGZpdHMgdGhlIGdlbmVyYWwgV29ydGhGdXp6aW5nIGNyaXRlcmlhLgoKTm93LCBsZXQmIzM5O3MgaWRlbnRpZnkgdGhlIHNwZWNpZmljIHN5bWJvbHMgdG8gdGFyZ2V0LiBUaGUgdGhyZWUga2V5IHN5bWJvbHMgYXJlIGBhdGgxMGtfcmVnX3ZhbHVlX3dyaXRlYCwgYGF0aDEwa19tZW1fdmFsdWVfd3JpdGVgLCBhbmQgYGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obGAuIEZ1cnRoZXJtb3JlLCBJJiMzOTt2ZSBpZGVudGlmaWVkIHRoYXQgYGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obGAgaXMgY2FsbGVkIGJ5IGBhdGgxMGtfaHR0X3QyaF9tc2dfaGFuZGxlcmAuCgpDcnVjaWFsbHksIEkgbmVlZCB0byBrbm93IGlmIHRoZXNlIGZ1bmN0aW9ucyBhcmUgaW5saW5lLWFibGUuIEkgY2FuIHNlZSB0aGF0IGBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGxgIGNhbm5vdCBiZSBpbmxpbmVkLCBhcyBpdHMgcG9pbnRlciBpcyBzdG9yZWQuIExpa2V3aXNlLCBgYXRoMTBrX3JlZ192YWx1ZV93cml0ZWAgYW5kIGBhdGgxMGtfbWVtX3ZhbHVlX3dyaXRlYCwgZHVlIHRvIHRoZWlyIHBvaW50ZXIgYXNzaWdubWVudHMsIGFyZSBhbHNvIGxpa2VseSB0byBiZSBwcmVzZW50IGluIHRoZSBzeW1ib2wgdGFibGUsIHNpbmNlIHRoZXkgY2FuJiMzOTt0IGJlIGlubGluZWQgZWl0aGVyLiBUaGlzIGlzIGNydWNpYWwgZm9yIFN5emthbGxlciB0byByZWFjaCB0aGVtLgoKRmluYWxseSwgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSByZXF1aXJlZCBrZXJuZWwgbW9kdWxlcywgcGFydGljdWxhcmx5IGBBVEgxMEtgLCBgQVRIMTBLX1VTQmAgYW5kIHByb2JhYmx5IGBBVEgxMEtfREVCVUdGU2AsIGFyZSBlbmFibGVkLiBUaGUgZGVidWdmcyBlbnRyaWVzIHJlcXVpcmUgdGhlIGRlYnVnZnMgY29uZmlnIHNldHRpbmcsIHNvIEkgbmVlZCB0byB2ZXJpZnkgdGhhdC4KCkluIHN1bW1hcnksIG15IHN0cmF0ZWd5IGlzIHRvIGxldmVyYWdlIFN5emthbGxlciYjMzk7cyBVU0IgZW11bGF0aW9uIGNhcGFiaWxpdGllcyB0byByZWFjaCBgYXRoMTBrX3JlZ192YWx1ZV93cml0ZWAsIGBhdGgxMGtfbWVtX3ZhbHVlX3dyaXRlYCwgYW5kIGBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGxgIHRocm91Z2ggdmFsaWQgZGV2aWNlIGVtdWxhdGlvbi4gSSBleHBlY3QgdGhlc2UgZW50cnkgcG9pbnRzIHRvIGJlIHJlYWRpbHkgYWNjZXNzaWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDg6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX0FUSDEwS19ERUJVR0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEwayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaD0xMDExPXN0cnVjdCBhdGgxMGsge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvY29yZS5oLTEyMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaDoxMjM5OiNpZmRlZiBDT05GSUdfQVRIMTBLX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvY29yZS5oLTEyNDAtXHRzdHJ1Y3QgYXRoMTBrX2RlYnVnIGRlYnVnO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYz00Mj12b2lkIGF0aDEwa19kZWJ1Z19wcmludF9od2Z3X2luZm8oc3RydWN0IGF0aDEwayAqYXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jLTU3LVx0XHQgICAgSVNfRU5BQkxFRChDT05GSUdfQVRIMTBLX0RFQlVHKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYzo1ODpcdFx0ICAgIElTX0VOQUJMRUQoQ09ORklHX0FUSDEwS19ERUJVR0ZTKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy01OS1cdFx0ICAgIElTX0VOQUJMRUQoQ09ORklHX0FUSDEwS19UUkFDSU5HKSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmM9MTQ4PUVYUE9SVF9TWU1CT0woYXRoMTBrX3dhcm4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jLTE0OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYzoxNTA6I2lmZGVmIENPTkZJR19BVEgxMEtfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jLTE1MS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmM9MjY2OD12b2lkIGF0aDEwa19kZWJ1Z191bnJlZ2lzdGVyKHN0cnVjdCBhdGgxMGsgKmFyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy0yNjcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jOjI2NzM6I2VuZGlmIC8qIENPTkZJR19BVEgxMEtfREVCVUdGUyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jLTI2NzQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5oPTg3PXZvaWQgYXRoMTBrX3ByaW50X2RyaXZlcl9pbmZvKHN0cnVjdCBhdGgxMGsgKmFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuaC04OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuaDo4OTojaWZkZWYgQ09ORklHX0FUSDEwS19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmgtOTAtaW50IGF0aDEwa19kZWJ1Z19zdGFydChzdHJ1Y3QgYXRoMTBrICphcik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5oPTE5OT1zdGF0aWMgaW5saW5lIGludCBhdGgxMGtfZGVidWdfZndfc3RhdHNfcmVxdWVzdChzdHJ1Y3QgYXRoMTBrICphcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmgtMjA5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5oOjIxMDojZW5kaWYgLyogQ09ORklHX0FUSDEwS19ERUJVR0ZTICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmgtMjExLSNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwODo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTQyOQoJCQkJCQkJb3V0cHV0OiAyMzAKCQkJCQkJCXRob3VnaHRzOiAzMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIGF0aDEwayBEcml2ZXIgRnV6emluZyBDb25maWd1cmF0aW9uKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEl0IGxvb2tzIGxpa2UgdGhlIGBhdGgxMGtfcmVnX3ZhbHVlX3dyaXRlYCBhbmQgYGF0aDEwa19tZW1fdmFsdWVfd3JpdGVgIGZ1bmN0aW9ucyBhcmUgZ2F0ZWQgYmVoaW5kIGAjaWZkZWYgQ09ORklHX0FUSDEwS19ERUJVR0ZTYC4gTWFrZXMgc2Vuc2UsIHRoZXkmIzM5O3JlIGxpa2VseSBkZWJ1Z2dpbmcgb3IgdGVzdGluZyB1dGlsaXRpZXMuIEFuZCBvZiBjb3Vyc2UsIGBDT05GSUdfQVRIMTBLX0RFQlVHRlNgIGlzIGRlcGVuZGVudCBvbiBib3RoIGBBVEgxMEtgIGFuZCBgREVCVUdfRlNgLCB3aGljaCBpbiB0dXJuIGhpbmdlcyBvbiBgTUFDODAyMTFgIGFuZCBgSEFTX0RNQWAuIEZ1cnRoZXJtb3JlLCBgQVRIMTBLX1VTQmAgaXMgZGVwZW5kZW50IG9uIGBBVEgxMEtgIGFuZCBgVVNCYC4gVGhpcyBzZWVtcyBsaWtlIGEgZmFpcmx5IHN0YW5kYXJkLCBsb2dpY2FsIGRlcGVuZGVuY3kgY2hhaW4uIE5vdGhpbmcgdW5leHBlY3RlZCB0aGVyZSwgYW5kIG5vIG9idmlvdXMgcmVkIGZsYWdzLgoKTm93LCBsZXQmIzM5O3MgdmVyaWZ5IGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWdzIG9yIHN5bWJvbHMuIE9rYXksIGl0IGhhcyBwcm92aWRlZCBhIGxpc3Qgb2YgYEZvY3VzU3ltYm9sc2A6IGAmIzM0O2F0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obCYjMzQ7YCwgYCYjMzQ7YXRoMTBrX3JlZ192YWx1ZV93cml0ZSYjMzQ7YCwgYCYjMzQ7YXRoMTBrX21lbV92YWx1ZV93cml0ZSYjMzQ7YCwgYW5kIGAmIzM0O2F0aDEwa19odHRfdDJoX21zZ19oYW5kbGVyJiMzNDtgLiBUaG9zZSBhcmUgYWxsIHNwZWNpZmljIHRvIHRoZSBhdGgxMGsgZHJpdmVyLCBzbyB0aGF0IG1hdGNoZXMgdXAuIEFuZCB0aGUgYEVuYWJsZUNvbmZpZ3NgIGxpc3QgLSBgJiMzNDtBVEgxMEsmIzM0O2AsIGAmIzM0O0FUSDEwS19VU0ImIzM0O2AsIGFuZCBgJiMzNDtBVEgxMEtfREVCVUdGUyYjMzQ7YCAtIG1ha2VzIHBlcmZlY3Qgc2Vuc2UgZ2l2ZW4gdGhlIGRlcGVuZGVuY2llcyB3ZSBpZGVudGlmaWVkLgoKTG9va2luZyBhdCB0aGUgaW5zdHJ1Y3Rpb25zIGFuZCBndWlkZWxpbmVzLCAmIzM0O1dvcnRoRnV6emluZyYjMzQ7IGlzIHNldCB0byB0cnVlLCBzbyB0aGF0IGlzIHRha2VuIGNhcmUgb2YuIFRoZSBgRm9jdXNTeW1ib2xzYCBhcmUgdGhlcmUsIGFuZCB0aGUgYEVuYWJsZUNvbmZpZ3NgIGFyZSBjb3JyZWN0bHkgbGlzdGVkLiBUaGUgcmVhc29uaW5nIHNlZW1zIGNvbmNpc2UgYW5kIGFjY3VyYXRlIGZvciB0aGUgY29uY2x1c2lvbi4gQmFzZWQgb24gYWxsIG9mIHRoaXMsIGV2ZXJ5dGhpbmcgc2VlbXMgYWNjdXJhdGUgYW5kIHN0cmFpZ2h0LWZvcndhcmQsIHNvIEkgYW0gcmVhZHkgdG8gbW92ZSBmb3J3YXJkLiBMZXQmIzM5O3MgY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwODo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QVRIMTBLJiMzNDssCiAgICAmIzM0O0FUSDEwS19VU0ImIzM0OywKICAgICYjMzQ7QVRIMTBLX0RFQlVHRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGwmIzM0OywKICAgICYjMzQ7YXRoMTBrX3JlZ192YWx1ZV93cml0ZSYjMzQ7LAogICAgJiMzNDthdGgxMGtfbWVtX3ZhbHVlX3dyaXRlJiMzNDssCiAgICAmIzM0O2F0aDEwa19odHRfdDJoX21zZ19oYW5kbGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRhcnkgYW5kIGxlbmd0aCB2YWxpZGF0aW9uIGNoZWNrcyB0byBhdGgxMGsgZGVidWdmcyB3cml0ZSBoYW5kbGVycyAoYXRoMTBrX3JlZ192YWx1ZV93cml0ZSwgYXRoMTBrX21lbV92YWx1ZV93cml0ZSkgYW5kIFJYIGZyYWdtZW50IHBhY2tldCBwcm9jZXNzaW5nIGluIGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obC4gQXRoMTBrIHN1cHBvcnRzIFVTQiBkZXZpY2VzIChBVEgxMEtfVVNCKSBhbmQgZGVidWdmcyBvcGVyYXRpb25zLCB3aGljaCBjYW4gYmUgcmVhY2hlZCBhbmQgZnV6emVkIHZpYSBVU0IgZW11bGF0aW9uIChSYXcgR2FkZ2V0KSBhbmQgZGVidWdmcyBpbnRlcmZhY2VzIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBVEgxMEsmIzM0OywKICAgICYjMzQ7QVRIMTBLX1VTQiYjMzQ7LAogICAgJiMzNDtBVEgxMEtfREVCVUdGUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2F0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obCYjMzQ7LAogICAgJiMzNDthdGgxMGtfcmVnX3ZhbHVlX3dyaXRlJiMzNDssCiAgICAmIzM0O2F0aDEwa19tZW1fdmFsdWVfd3JpdGUmIzM0OywKICAgICYjMzQ7YXRoMTBrX2h0dF90MmhfbXNnX2hhbmRsZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZGFyeSBhbmQgbGVuZ3RoIHZhbGlkYXRpb24gY2hlY2tzIHRvIGF0aDEwayBkZWJ1Z2ZzIHdyaXRlIGhhbmRsZXJzIChhdGgxMGtfcmVnX3ZhbHVlX3dyaXRlLCBhdGgxMGtfbWVtX3ZhbHVlX3dyaXRlKSBhbmQgUlggZnJhZ21lbnQgcGFja2V0IHByb2Nlc3NpbmcgaW4gYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsLiBBdGgxMGsgc3VwcG9ydHMgVVNCIGRldmljZXMgKEFUSDEwS19VU0IpIGFuZCBkZWJ1Z2ZzIG9wZXJhdGlvbnMsIHdoaWNoIGNhbiBiZSByZWFjaGVkIGFuZCBmdXp6ZWQgdmlhIFVTQiBlbXVsYXRpb24gKFJhdyBHYWRnZXQpIGFuZCBkZWJ1Z2ZzIGludGVyZmFjZXMgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA4OjQyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDg6NDI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBhbmQgdmFsaWRpdHkgY2hlY2tzIGluIGF0aDEwayBkZWJ1Z2ZzIHdyaXRlIGhhbmRsZXJzIChhdGgxMGtfcmVnX3ZhbHVlX3dyaXRlLCBhdGgxMGtfbWVtX3ZhbHVlX3dyaXRlKSBhbmQgaW4gdGhlIEhUVCBSWCBmcmFnbWVudCBwcm9jZXNzaW5nIGZ1bmN0aW9uIChhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGwpLiBcblxuU3BlY2lmaWNhbGx5OlxuLSBSZWdpc3RlciBhZGRyZXNzIGFuZCBtZW1vcnkgb2Zmc2V0L2NvdW50IHZhbGlkYXRpb25zIHByZXZlbnQgb3V0LW9mLWJvdW5kcyBISUYgZGlhZ25vc3RpY3MgYW5kIHJlZ2lzdGVyIHdyaXRlcy5cbi0gTGVuZ3RoIGNoZWNrcyBvbiBza2IgYW5kIGhlYWRlciBvZmZzZXRzIGluIGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obCBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgaW50byBza2IgYnVmZmVyIGRhdGEuXG4tIEFueSBwb3RlbnRpYWwgZXJyb3ItcGF0aCBpc3N1ZXMgKHN1Y2ggYXMgZWFybHkgcmV0dXJuIHdpdGhvdXQgdW5sb2NraW5nIGNvbmZfbXV0ZXgpIGFyZSBsb2NraW5nIGJ1Z3MgZGV0ZWN0ZWQgYnkgTE9DS0RFUC5cblxuTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgYWxsb2NhdGlvbnMsIHJlYWRzIG9mIHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBmaWVsZHMsIG9yIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzIGFyZSBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQuIFRoZXJlZm9yZSwgc3RhbmRhcmQgS0FTQU4gYW5kIExPQ0tERVAgY29uZmlndXJhdGlvbnMgYXJlIGZ1bGx5IHN1ZmZpY2llbnQsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDBjMWUyNjkxMWQxZjU4NGQ1YzBiYzE5YjBhNmU0ZDJlY2NhMDZlNzgKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IFNlcCAxMCAwODo0MTozMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYwppbmRleCBmYjYxZTUzZmY0YzM0Li41MGUwMTcwMjExYjgxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jCkBAIC03MjksNiAmIzQzOzcyOSwxMyBAQCBzdGF0aWMgc3NpemVfdCBhdGgxMGtfcmVnX3ZhbHVlX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLAogCiAJcmVnX2FkZHIgPSBhci0mZ3Q7ZGVidWcucmVnX2FkZHI7CiAKJiM0MzsJLyogRklYOiBWYWxpZGF0ZSByZWdpc3RlciBhZGRyZXNzICovCiYjNDM7CWlmIChyZWdfYWRkciAmZ3Q7IGFyLSZndDtod19wYXJhbXMucmVnX3NpemUpIHsKJiM0MzsJCWF0aDEwa193YXJuKGFyLCAmIzM0O0ludmFsaWQgcmVnaXN0ZXIgYWRkcmVzcyAweCUwOHhcbiYjMzQ7LCByZWdfYWRkcik7CiYjNDM7CQlyZXQgPSAtRUlOVkFMOwomIzQzOwkJZ290byBleGl0OwomIzQzOwl9CiYjNDM7CiAJcmV0ID0ga3N0cnRvdTMyX2Zyb21fdXNlcih1c2VyX2J1ZiwgY291bnQsIDAsICZhbXA7cmVnX3ZhbCk7CiAJaWYgKHJldCkKIAkJZ290byBleGl0OwpAQCAtODE5LDYgJiM0Mzs4MjYsMTkgQEAgc3RhdGljIHNzaXplX3QgYXRoMTBrX21lbV92YWx1ZV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwKIAogCW11dGV4X2xvY2soJmFtcDthci0mZ3Q7Y29uZl9tdXRleCk7CiAKJiM0MzsJLyogRklYOiBWYWxpZGF0ZSBhZGRyZXNzIGFnYWluc3QgbWVtb3J5IHNpemUgKi8KJiM0MzsJaWYgKCpwcG9zICZndDsgYXItJmd0O2h3X3BhcmFtcy5tZW1fc2l6ZSkgewomIzQzOwkJYXRoMTBrX3dhcm4oYXIsICYjMzQ7SW52YWxpZCBhZGRyZXNzIDB4JTA4eCBmb3IgbWVtX3ZhbHVlXG4mIzM0OywgKHUzMikqcHBvcyk7CiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQomIzQzOwomIzQzOwkvKiBGSVg6IFZhbGlkYXRlIHNpemUgYWdhaW5zdCByZW1haW5pbmcgbWVtb3J5ICovCiYjNDM7CWlmIChjb3VudCAmZ3Q7IGFyLSZndDtod19wYXJhbXMubWVtX3NpemUgLSAqcHBvcykgewomIzQzOwkJYXRoMTBrX3dhcm4oYXIsICYjMzQ7SW52YWxpZCBzaXplICV6dSBmb3IgbWVtX3ZhbHVlIGF0IDB4JTA4eFxuJiMzNDssCiYjNDM7CQkJICAgIGNvdW50LCAodTMyKSpwcG9zKTsKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwl9CiYjNDM7CiAJYnVmID0gdm1hbGxvYyhjb3VudCk7CiAJaWYgKCFidWYpIHsKIAkJcmV0ID0gLUVOT01FTTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jCmluZGV4IGFiMmQzNzNiNDc1MGQuLjRmYWJiOTI2NDdkOWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguYwpAQCAtMjc3NSw2ICYjNDM7Mjc3NSwxMyBAQCBzdGF0aWMgYm9vbCBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGwoc3RydWN0IGF0aDEwa19odHQgKmh0dCwKIAlzdHJ1Y3QgaHR0X3Jlc3AgKnJlc3A7CiAJc2l6ZV90IHRvdF9oZHJfbGVuOwogCiYjNDM7CiYjNDM7CS8qIEZJWDogVmFsaWRhdGUgc2tiIGxlbmd0aCBiZWZvcmUgc2tiX3B1bGwgKi8KJiM0MzsJaWYgKHNrYi0mZ3Q7bGVuICZsdDsgSFRUX1JYX0ZSQUdfSU5EX0lORk8wX0hFQURFUl9MRU4pIHsKJiM0MzsJCWF0aDEwa193YXJuKGFyLCAmIzM0O0ludmFsaWQgc2tiIGxlbiAlZCBmb3IgUlhfRlJBR19JTkRcbiYjMzQ7LCBza2ItJmd0O2xlbik7CiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CX0KJiM0MzsKIAlyZXNwID0gKHN0cnVjdCBodHRfcmVzcCAqKShza2ItJmd0O2RhdGEgJiM0MzsgSFRUX1JYX0ZSQUdfSU5EX0lORk8wX0hFQURFUl9MRU4pOwogCXNrYl9wdWxsKHNrYiwgSFRUX1JYX0ZSQUdfSU5EX0lORk8wX0hFQURFUl9MRU4pOwogCXNrYl90cmltKHNrYiwgc2tiLSZndDtsZW4gLSBGQ1NfTEVOKTsKQEAgLTI3OTIsNiAmIzQzOzI3OTksMTMgQEAgc3RhdGljIGJvb2wgYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsKHN0cnVjdCBhdGgxMGtfaHR0ICpodHQsCiAJbnVtX21wZHVfcmFuZ2VzID0gTVMoX19sZTMyX3RvX2NwdShyeF9obC0mZ3Q7aGRyLmluZm8xKSwKIAkJCSAgICAgSFRUX1JYX0lORElDQVRJT05fSU5GTzFfTlVNX01QRFVfUkFOR0VTKTsKIAomIzQzOwkvKiBGSVg6IFZhbGlkYXRlIG51bV9tcGR1X3JhbmdlcyAqLwomIzQzOwlpZiAobnVtX21wZHVfcmFuZ2VzICZndDsgMSkgewomIzQzOwkJYXRoMTBrX3dhcm4oYXIsICYjMzQ7SW52YWxpZCBudW1fbXBkdV9yYW5nZXMgJWRcbiYjMzQ7LCBudW1fbXBkdV9yYW5nZXMpOwomIzQzOwkJZ290byBlcnI7CiYjNDM7CX0KJiM0MzsKJiM0MzsKIAl0b3RfaGRyX2xlbiA9IHNpemVvZihzdHJ1Y3QgaHR0X3Jlc3BfaGRyKSAmIzQzOwogCQkgICAgICBzaXplb2YocnhfaGwtJmd0O2hkcikgJiM0MzsKIAkJICAgICAgc2l6ZW9mKHJ4X2hsLSZndDtwcGR1KSAmIzQzOwpAQCAtMjc5OSwxMCAmIzQzOzI4MTMsMjYgQEAgc3RhdGljIGJvb2wgYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsKHN0cnVjdCBhdGgxMGtfaHR0ICpodHQsCiAJCSAgICAgIHNpemVvZihyeF9obC0mZ3Q7ZndfZGVzYykgJiM0MzsKIAkJICAgICAgc2l6ZW9mKHN0cnVjdCBodHRfcnhfaW5kaWNhdGlvbl9tcGR1X3JhbmdlKSAqIG51bV9tcGR1X3JhbmdlczsKIAomIzQzOwkvKiBGSVg6IFZhbGlkYXRlIHRvdF9oZHJfbGVuIGFnYWluc3Qgc2tiIGxlbmd0aCAqLwomIzQzOwlpZiAodG90X2hkcl9sZW4gJmd0OyBza2ItJmd0O2xlbikgewomIzQzOwkJYXRoMTBrX3dhcm4oYXIsICYjMzQ7SW52YWxpZCB0b3RfaGRyX2xlbiAlenUgJmd0OyBza2ItJmd0O2xlbiAldVxuJiMzNDssCiYjNDM7CQkJICAgIHRvdF9oZHJfbGVuLCBza2ItJmd0O2xlbik7CiYjNDM7CQlnb3RvIGVycjsKJiM0MzsJfQomIzQzOwomIzQzOwogCXRpZCA9ICBNUyhyeF9obC0mZ3Q7aGRyLmluZm8wLCBIVFRfUlhfSU5ESUNBVElPTl9JTkZPMF9FWFRfVElEKTsKIAlyeF9kZXNjID0gKHN0cnVjdCBodHRfaGxfcnhfZGVzYyAqKShza2ItJmd0O2RhdGEgJiM0MzsgdG90X2hkcl9sZW4pOwogCXJ4X2Rlc2NfaW5mbyA9IF9fbGUzMl90b19jcHUocnhfZGVzYy0mZ3Q7aW5mbyk7CiAKJiM0MzsKJiM0MzsJLyogRklYOiBWYWxpZGF0ZSBmd19kZXNjLmxlbiBhZ2FpbnN0IHJlbWFpbmluZyBza2IgbGVuZ3RoICovCiYjNDM7CWlmIChyeF9obC0mZ3Q7ZndfZGVzYy5sZW4gJmd0OyBza2ItJmd0O2xlbiAtIHRvdF9oZHJfbGVuKSB7CiYjNDM7CQlhdGgxMGtfd2FybihhciwgJiMzNDtJbnZhbGlkIGZ3X2Rlc2MubGVuICV1ICZndDsgcmVtYWluaW5nIHNrYiBsZW5cbiYjMzQ7LAomIzQzOwkJCSAgICByeF9obC0mZ3Q7ZndfZGVzYy5sZW4pOwomIzQzOwkJZ290byBlcnI7CiYjNDM7CX0KJiM0MzsKIAloZHIgPSAoc3RydWN0IGllZWU4MDIxMV9oZHIgKikoKHU4ICopcnhfZGVzYyAmIzQzOyByeF9obC0mZ3Q7ZndfZGVzYy5sZW4pOwogCiAJaWYgKGlzX211bHRpY2FzdF9ldGhlcl9hZGRyKGhkci0mZ3Q7YWRkcjEpKSB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwODo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDQ5CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMjk4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2g6IEEgRGVlcCBEaXZlKioKCk9rYXksIGxldCYjMzk7cyBkaXNzZWN0IHRoaXMgcGF0Y2guIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBwdXJwb3NlIGJlaGluZCB0aGVzZSBjaGFuZ2VzLiBJdCBsb29rcyBsaWtlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggbW9kaWZpY2F0aW9ucyB3aXRoaW4gdGhlIGBhdGgxMGtgIHdpcmVsZXNzIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIHRoZSBgYXRoMTBrL2AgZGlyZWN0b3J5LiBUaGF0IGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdDsgYW55dGhpbmcgcmVsYXRlZCB0byBsb3ctbGV2ZWwgd2lyZWxlc3MgaW50ZXJhY3Rpb24gd2FycmFudHMgY2FyZWZ1bCBzY3J1dGlueSwgZ2l2ZW4gdGhlIHBvdGVudGlhbCBmb3IgcGVyZm9ybWFuY2UgaW1wYWN0cyBhbmQsIG9mIGNvdXJzZSwgc2VjdXJpdHkgaW1wbGljYXRpb25zLgoKVGhlIHBhdGNoIHNlZW1zIHRvIGJlIGludHJvZHVjaW5nIHNldmVyYWwgY3J1Y2lhbCBjaGVja3MsIGd1YXJkaW5nIGFnYWluc3QgcG90ZW50aWFsbHkgcHJvYmxlbWF0aWMgc2NlbmFyaW9zLiBJdCYjMzk7cyBtb2RpZnlpbmcgdHdvIGZpbGVzOiBgZGVidWcuY2AgYW5kIGBodHRfcnguY2AuCgpJbiBgZGVidWcuY2AsIHRoZSBhZGRpdGlvbnMgdG8gYGF0aDEwa19yZWdfdmFsdWVfd3JpdGVgIGFuZCBgYXRoMTBrX21lbV92YWx1ZV93cml0ZWAgYXJlIHBhcnRpY3VsYXJseSBub3Rld29ydGh5LiBXZSYjMzk7cmUgbm93IHZhbGlkYXRpbmcgcmVnaXN0ZXIgYW5kIG1lbW9yeSBhZGRyZXNzZXMgYWdhaW5zdCB0aGUgaGFyZHdhcmUgcGFyYW1ldGVycyAoYGFyLSZndDtod19wYXJhbXMucmVnX3NpemVgIGFuZCBgYXItJmd0O2h3X3BhcmFtcy5tZW1fc2l6ZWAgcmVzcGVjdGl2ZWx5KS4gVGhpcyBzdHJvbmdseSBzdWdnZXN0cyBhbiBhdHRlbXB0IHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyB3cml0ZXMuIFRoZSBjb3JlIG9mIHRoaXMgaXMgdG8gcHJldmVudCBidWZmZXIgb3ZlcmZsb3dzLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgdGhlc2UgdHlwZXMgb2YgY2hlY2tzIGFyZSBjcml0aWNhbCBmb3IgbWl0aWdhdGluZyB2dWxuZXJhYmlsaXRpZXMgdGhhdCBjb3VsZCBsZWFkIHRvIHN5c3RlbSBpbnN0YWJpbGl0eSBvciBldmVuIHJlbW90ZSBjb2RlIGV4ZWN1dGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHByZWNpc2UgY29udGV4dCBvZiB0aGVzZSB3cml0ZXMgdG8gYXNzZXNzIHRoZSBzZXZlcml0eSBvZiB0aGUgb3JpZ2luYWwgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkuCgpUaGVuLCBtb3ZpbmcgdG8gYGh0dF9yeC5jYCwgdGhlIGZvY3VzIHNoaWZ0cyB0byB0aGUgYGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obGAgZnVuY3Rpb24uIFRoZXJlIGFyZSBhIHNlcmllcyBvZiBjaGVja3MgYmVpbmcgYWRkZWQuIFRoZSBuZXcgY2hlY2tzIGluY2x1ZGUgdmVyaWZ5aW5nIHRoZSBzaXplIG9mIHRoZSByZWNlaXZlZCBgc2tiYCAoc29ja2V0IGJ1ZmZlcikgYWdhaW5zdCB0aGUgaGVhZGVyIGxlbmd0aCBhbmQgb3RoZXIgcGFyYW1ldGVycy4gVGhlIGNvZGUgc2VlbXMgdG8gYmUgdmFsaWRhdGluZyB2YXJpb3VzIGRhdGEgc3RydWN0dXJlcyB0aGF0IGFyZSBkZXJpdmVkIGZyb20gaW5jb21pbmcgZnJhZ21lbnRzLCBjaGVja2luZyB0aGUgdG90YWwgbGVuZ3RoIGFnYWluc3QgdGhlIHNvY2tldCBidWZmZXImIzM5O3MgY3VycmVudCBhdmFpbGFibGUgc2l6ZS4gVGhlIGBpZiAobnVtX21wZHVfcmFuZ2VzICZndDsgMSlgLCBgaWYgKHRvdF9oZHJfbGVuICZndDsgc2tiLSZndDtsZW4pYCBhbmQgYGlmIChyeF9obC0mZ3Q7ZndfZGVzYy5sZW4gJmd0OyBza2ItJmd0O2xlbiAtIHRvdF9oZHJfbGVuKWAgY2hlY2tzIGFyZSBzcGVjaWZpY2FsbHkgaW50ZXJlc3RpbmcgYmVjYXVzZSB0aGV5IGFyZSBjbGVhcmx5IGRlc2lnbmVkIHRvIHZhbGlkYXRlIHRoZSBpbnRlZ3JpdHkgYW5kIHN0cnVjdHVyZSBvZiBpbmNvbWluZyBkYXRhLiBUaGlzIHNpZ25hbHMgY29uY2VybiBhYm91dCB0aGUgcG90ZW50aWFsIGZvciBmcmFnbWVudGF0aW9uLXJlbGF0ZWQgdnVsbmVyYWJpbGl0aWVzIG9yIGRlbmlhbC1vZi1zZXJ2aWNlIGF0dGFja3MuIEkgbmVlZCB0byBmYW1pbGlhcml6ZSBteXNlbGYgd2l0aCB0aGUgc3BlY2lmaWMgZGF0YSBzdHJ1Y3R1cmVzIGFuZCB0aGUgZXhwZWN0ZWQgZmxvdyBvZiBkYXRhIHdpdGhpbiBgYXRoMTBrYCYjMzk7cyBSWCBwYXRoLiBJdOKAmXMgbGlrZWx5IGFuIGF0dGVtcHQgdG8gbWl0aWdhdGUgYnVmZmVyIG92ZXJmbG93cyBvciBwb3RlbnRpYWxseSBtYWxmb3JtZWQgcGFja2V0cy4KClRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSwgSSYjMzk7bSBnb2luZyB0byBsZXZlcmFnZSBteSB1c3VhbCB3b3JrZmxvdy4gSeKAmWxsIHVzZSBgcmVhZC1maWxlYCBvciBgZ3JlcHBlcmAgdG8gZXhhbWluZSB0aGUgc3Vycm91bmRpbmcgY29kZSBpbiBib3RoIGZpbGVzLiBVbmRlcnN0YW5kaW5nIHRoZSBjb250ZXh0IG9mIHRoZXNlIGNoZWNrcyB3aWxsIGlsbHVtaW5hdGUgdGhlIHNwZWNpZmljIHRocmVhdCBtb2RlbCBiZWluZyBhZGRyZXNzZWQuIEkgbmVlZCB0byBpZGVudGlmeSB0aGUgZXhhY3QgY29uZGl0aW9ucyB0aGF0IHRyaWdnZXJlZCB0aGlzIHBhdGNoIGFuZCB1bmRlcnN0YW5kIHRoZSBjb21wbGV0ZSBwaWN0dXJlIG9mIHRoZSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDg6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3MjUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDcyNTpcdFx0ICAgIGFyLVx1MDAzZXN0YXRlICE9IEFUSDEwS19TVEFURV9VVEYpIHtcbiA3MjY6XHRcdFx0cmV0ID0gLUVORVRET1dOO1xuIDcyNzpcdFx0XHRnb3RvIGV4aXQ7XG4gNzI4Olx0XHR9XG4gNzI5Olx0XG4gNzMwOlx0XHRyZWdfYWRkciA9IGFyLVx1MDAzZWRlYnVnLnJlZ19hZGRyO1xuIDczMTpcdFxuIDczMjpcdFx0LyogRklYOiBWYWxpZGF0ZSByZWdpc3RlciBhZGRyZXNzICovXG4gNzMzOlx0XHRpZiAocmVnX2FkZHIgXHUwMDNlIGFyLVx1MDAzZWh3X3BhcmFtcy5yZWdfc2l6ZSkge1xuIDczNDpcdFx0XHRhdGgxMGtfd2FybihhciwgXCYjMzQ7SW52YWxpZCByZWdpc3RlciBhZGRyZXNzIDB4JTA4eFxcblwmIzM0OywgcmVnX2FkZHIpO1xuIDczNTpcdFx0XHRyZXQgPSAtRUlOVkFMO1xuIDczNjpcdFx0XHRnb3RvIGV4aXQ7XG4gNzM3Olx0XHR9XG4gNzM4Olx0XG4gNzM5Olx0XHRyZXQgPSBrc3RydG91MzJfZnJvbV91c2VyKHVzZXJfYnVmLCBjb3VudCwgMCwgXHUwMDI2cmVnX3ZhbCk7XG4gNzQwOlx0XHRpZiAocmV0KVxuIDc0MTpcdFx0XHRnb3RvIGV4aXQ7XG4gNzQyOlx0XG4gNzQzOlx0XHRhdGgxMGtfaGlmX3dyaXRlMzIoYXIsIHJlZ19hZGRyLCByZWdfdmFsKTtcbiA3NDQ6XHRcbiA3NDU6XHRcdHJldCA9IGNvdW50O1xuIDc0NjpcdFxuIDc0NzpcdGV4aXQ6XG4gNzQ4Olx0XHRtdXRleF91bmxvY2soXHUwMDI2YXItXHUwMDNlY29uZl9tdXRleCk7XG4gNzQ5Olx0XG4gNzUwOlx0XHRyZXR1cm4gcmV0O1xuIDc1MTpcdH1cbiA3NTI6XHRcbiA3NTM6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzX3JlZ192YWx1ZSA9IHtcbiA3NTQ6XHRcdC5yZWFkID0gYXRoMTBrX3JlZ192YWx1ZV9yZWFkLFxuIDc1NTpcdFx0LndyaXRlID0gYXRoMTBrX3JlZ192YWx1ZV93cml0ZSxcbiA3NTY6XHRcdC5vcGVuID0gc2ltcGxlX29wZW4sXG4gNzU3Olx0XHQub3duZXIgPSBUSElTX01PRFVMRSxcbiA3NTg6XHRcdC5sbHNlZWsgPSBkZWZhdWx0X2xsc2VlayxcbiA3NTk6XHR9O1xuIDc2MDpcdFxuIDc2MTpcdHN0YXRpYyBzc2l6ZV90IGF0aDEwa19tZW1fdmFsdWVfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSxcbiA3NjI6XHRcdFx0XHRcdCAgICAgY2hhciBfX3VzZXIgKnVzZXJfYnVmLFxuIDc2MzpcdFx0XHRcdFx0ICAgICBzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcylcbiA3NjQ6XHR7XG4gNzY1Olx0XHRzdHJ1Y3QgYXRoMTBrICphciA9IGZpbGUtXHUwMDNlcHJpdmF0ZV9kYXRhO1xuIDc2NjpcdFx0dTggKmJ1ZjtcbiA3Njc6XHRcdGludCByZXQ7XG4gNzY4Olx0XG4gNzY5Olx0XHRpZiAoKnBwb3MgXHUwMDNjIDApXG4gNzcwOlx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDc3MTpcdFxuIDc3MjpcdFx0aWYgKCFjb3VudClcbiA3NzM6XHRcdFx0cmV0dXJuIDA7XG4gNzc0Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA4OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwNzgKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgdGhvdWdodDoKCioqRGl2aW5nIGludG8gdGhlIEF0aGVyb3MgQ29kZSoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSBgYXRoMTBrYCBkcml2ZXIgYWdhaW4sIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiBzb21lIGNyaXRpY2FsIGFyZWFzLiBGaXJzdCB1cCwgSSB3YW50IHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBtZW1vcnkgd3JpdGUgZnVuY3Rpb24sIHRoYXQgYGF0aDEwa19tZW1fdmFsdWVfd3JpdGVgLiBVbmRlcnN0YW5kaW5nIGhvdyB0aGF0JiMzOTtzIGhhbmRsZWQgaXMgZXNzZW50aWFsIGZvciB0cmFja2luZyBkb3duIGEgcmVjZW50IGlzc3VlLiBJJiMzOTtsbCBuZWVkIHRvIHJlbWVtYmVyIHRoZSBpbnRyaWNhY2llcyBvZiBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGhhcmR3YXJlLgoKTmV4dCwgSSBzaG91bGQgdGFrZSBhIGZyZXNoIGxvb2sgYXQgYGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obGAuIEZyYWdtZW50ZWQgcGFja2V0cyBjYW4gYmUgYSBwYWluLCBhbmQgSSBuZWVkIHRvIHJlLWZhbWlsaWFyaXplIG15c2VsZiB3aXRoIHRoZSBIaWdoLUxldmVsIChITCkgaGFuZGxpbmcgb2YgdGhvc2UgcmVjZWl2ZWQgZnJhZ21lbnRzLCBtYWtpbmcgc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhIGNydWNpYWwgcGllY2Ugb2YgdGhlIHB1enpsZSB3aXRoaW4gdGhhdCBmdW5jdGlvbi4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgcG90ZW50aWFsIGJvdHRsZW5lY2tzLCByYWNlIGNvbmRpdGlvbnMsIG9yIGFueXRoaW5nIG91dCBvZiB0aGUgb3JkaW5hcnkgdGhhdCBjb3VsZCBjb250cmlidXRlIHRvIHBlcmZvcm1hbmNlIGRlZ3JhZGF0aW9uIG9yIGVycm9ycy4gVGltZSB0byBjcmFjayBvcGVuIHRoZSBzb3VyY2UgYW5kIGdldCB0byBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDg6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA4MTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDgxNTpcdFx0XHRcdFx0ICAgICAgc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpXG4gODE2Olx0e1xuIDgxNzpcdFx0c3RydWN0IGF0aDEwayAqYXIgPSBmaWxlLVx1MDAzZXByaXZhdGVfZGF0YTtcbiA4MTg6XHRcdHU4ICpidWY7XG4gODE5Olx0XHRpbnQgcmV0O1xuIDgyMDpcdFxuIDgyMTpcdFx0aWYgKCpwcG9zIFx1MDAzYyAwKVxuIDgyMjpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA4MjM6XHRcbiA4MjQ6XHRcdGlmICghY291bnQpXG4gODI1Olx0XHRcdHJldHVybiAwO1xuIDgyNjpcdFxuIDgyNzpcdFx0bXV0ZXhfbG9jayhcdTAwMjZhci1cdTAwM2Vjb25mX211dGV4KTtcbiA4Mjg6XHRcbiA4Mjk6XHRcdC8qIEZJWDogVmFsaWRhdGUgYWRkcmVzcyBhZ2FpbnN0IG1lbW9yeSBzaXplICovXG4gODMwOlx0XHRpZiAoKnBwb3MgXHUwMDNlIGFyLVx1MDAzZWh3X3BhcmFtcy5tZW1fc2l6ZSkge1xuIDgzMTpcdFx0XHRhdGgxMGtfd2FybihhciwgXCYjMzQ7SW52YWxpZCBhZGRyZXNzIDB4JTA4eCBmb3IgbWVtX3ZhbHVlXFxuXCYjMzQ7LCAodTMyKSpwcG9zKTtcbiA4MzI6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gODMzOlx0XHR9XG4gODM0Olx0XG4gODM1Olx0XHQvKiBGSVg6IFZhbGlkYXRlIHNpemUgYWdhaW5zdCByZW1haW5pbmcgbWVtb3J5ICovXG4gODM2Olx0XHRpZiAoY291bnQgXHUwMDNlIGFyLVx1MDAzZWh3X3BhcmFtcy5tZW1fc2l6ZSAtICpwcG9zKSB7XG4gODM3Olx0XHRcdGF0aDEwa193YXJuKGFyLCBcJiMzNDtJbnZhbGlkIHNpemUgJXp1IGZvciBtZW1fdmFsdWUgYXQgMHglMDh4XFxuXCYjMzQ7LFxuIDgzODpcdFx0XHRcdCAgICBjb3VudCwgKHUzMikqcHBvcyk7XG4gODM5Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDg0MDpcdFx0fVxuIDg0MTpcdFxuIDg0MjpcdFx0YnVmID0gdm1hbGxvYyhjb3VudCk7XG4gODQzOlx0XHRpZiAoIWJ1Zikge1xuIDg0NDpcdFx0XHRyZXQgPSAtRU5PTUVNO1xuIDg0NTpcdFx0XHRnb3RvIGV4aXQ7XG4gODQ2Olx0XHR9XG4gODQ3Olx0XG4gODQ4Olx0XHRpZiAoYXItXHUwMDNlc3RhdGUgIT0gQVRIMTBLX1NUQVRFX09OIFx1MDAyNlx1MDAyNlxuIDg0OTpcdFx0ICAgIGFyLVx1MDAzZXN0YXRlICE9IEFUSDEwS19TVEFURV9VVEYpIHtcbiA4NTA6XHRcdFx0cmV0ID0gLUVORVRET1dOO1xuIDg1MTpcdFx0XHRnb3RvIGV4aXQ7XG4gODUyOlx0XHR9XG4gODUzOlx0XG4gODU0Olx0XHRyZXQgPSBjb3B5X2Zyb21fdXNlcihidWYsIHVzZXJfYnVmLCBjb3VudCk7XG4gODU1Olx0XHRpZiAocmV0KSB7XG4gODU2Olx0XHRcdHJldCA9IC1FRkFVTFQ7XG4gODU3Olx0XHRcdGdvdG8gZXhpdDtcbiA4NTg6XHRcdH1cbiA4NTk6XHRcbiA4NjA6XHRcdHJldCA9IGF0aDEwa19oaWZfZGlhZ193cml0ZShhciwgKnBwb3MsIGJ1ZiwgY291bnQpO1xuIDg2MTpcdFx0aWYgKHJldCkge1xuIDg2MjpcdFx0XHRhdGgxMGtfd2FybihhciwgXCYjMzQ7ZmFpbGVkIHRvIHdyaXRlIGFkZHJlc3MgMHglMDh4IHZpYSBkaWFnbm9zZSB3aW5kb3cgZnJvbSBkZWJ1Z2ZzOiAlZFxcblwmIzM0OyxcbiA4NjM6XHRcdFx0XHQgICAgKHUzMikoKnBwb3MpLCByZXQpO1xuIDg2NDpcdFx0XHRnb3RvIGV4aXQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA4OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxMzYKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAxMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTG9ja2luZyBCdWcgRGlzY292ZXJ5IGFuZCBJbnZlc3RpZ2F0aW9uKioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQuLi4gc29tZXRoaW5nIGp1c3QgY2xpY2tlZCBsb29raW5nIGF0IGBhdGgxMGtfbWVtX3ZhbHVlX3dyaXRlYC4gU3BlY2lmaWNhbGx5LCBsaW5lcyA4MzAtODQwLiBCaW5nbyEgVGhleSYjMzk7cmUgcmV0dXJuaW5nIGAtRUlOVkFMYCBpZiB0aGUgdmFsaWRhdGlvbiBmYWlscywgKndoaWxlIHN0aWxsIGhvbGRpbmcgYGFyLSZndDtjb25mX211dGV4YCouIFRoYXQmIzM5O3MgYSBjbGFzc2ljIGxvY2tpbmcgYnVnIOKAkyBhIHBvdGVudGlhbCBkZWFkbG9jayBzaXR1YXRpb24gb3IgYXQgbGVhc3QgYW4gdW5iYWxhbmNlZCBtdXRleCB1bmxvY2ssIGFuZCBvbmUgdGhhdCBMT0NLREVQIHNob3VsZCBkZWZpbml0ZWx5IGNhdGNoLiBJdCYjMzk7cyB0aGUga2luZCBvZiB0aGluZyB0aGF0IG1ha2VzIGEgc2Vhc29uZWQgZGV2ZWxvcGVyIHNpdCB1cCBhbmQgdGFrZSBub3RpY2UuCgpOb3csIHRvIGZvbGxvdyB0aGlzIHRocmVhZCBhbmQgY29uZmlybSBpdCYjMzk7cyBhbiBhY3R1YWwgaXNzdWUsIEkgbmVlZCB0byBjaGVjayBgYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsYCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguY2AuIEkmIzM5O20gZ29pbmcgdG8gZGlnIGludG8gdGhlIGNhbGwgc3RhY2tzIGFuZCBtYWtlIHN1cmUgdGhpcyBpcyB0aGUgcHJpbWFyeSBzb3VyY2Ugb2YgdGhlIGRlYWRsb2NrLiBUaGlzIG1pZ2h0IGp1c3QgYmUgdGhlIG5lZWRsZSBpbiB0aGUgaGF5c3RhY2sgSSB3YXMgbG9va2luZyBmb3IuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA4OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI3NzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7Mjc3MDpcdFx0dTE2IHBlZXJfaWQsIHNjLCBoZHJfc3BhY2U7XG4yNzcxOlx0XHR1bmlvbiBodHRfcnhfcG5fdCAqbGFzdF9wbjtcbjI3NzI6XHRcdHN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHI7XG4yNzczOlx0XHRpbnQgcmV0LCBudW1fbXBkdV9yYW5nZXM7XG4yNzc0Olx0XHRzdHJ1Y3QgYXRoMTBrX3BlZXIgKnBlZXI7XG4yNzc1Olx0XHRzdHJ1Y3QgaHR0X3Jlc3AgKnJlc3A7XG4yNzc2Olx0XHRzaXplX3QgdG90X2hkcl9sZW47XG4yNzc3Olx0XG4yNzc4Olx0XG4yNzc5Olx0XHQvKiBGSVg6IFZhbGlkYXRlIHNrYiBsZW5ndGggYmVmb3JlIHNrYl9wdWxsICovXG4yNzgwOlx0XHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2MgSFRUX1JYX0ZSQUdfSU5EX0lORk8wX0hFQURFUl9MRU4pIHtcbjI3ODE6XHRcdFx0YXRoMTBrX3dhcm4oYXIsIFwmIzM0O0ludmFsaWQgc2tiIGxlbiAlZCBmb3IgUlhfRlJBR19JTkRcXG5cJiMzNDssIHNrYi1cdTAwM2VsZW4pO1xuMjc4MjpcdFx0XHRyZXR1cm4gZmFsc2U7XG4yNzgzOlx0XHR9XG4yNzg0Olx0XG4yNzg1Olx0XHRyZXNwID0gKHN0cnVjdCBodHRfcmVzcCAqKShza2ItXHUwMDNlZGF0YSAmIzQzOyBIVFRfUlhfRlJBR19JTkRfSU5GTzBfSEVBREVSX0xFTik7XG4yNzg2Olx0XHRza2JfcHVsbChza2IsIEhUVF9SWF9GUkFHX0lORF9JTkZPMF9IRUFERVJfTEVOKTtcbjI3ODc6XHRcdHNrYl90cmltKHNrYiwgc2tiLVx1MDAzZWxlbiAtIEZDU19MRU4pO1xuMjc4ODpcdFxuMjc4OTpcdFx0cGVlcl9pZCA9IF9fbGUxNl90b19jcHUocngtXHUwMDNlcGVlcl9pZCk7XG4yNzkwOlx0XHRyeF9obCA9IChzdHJ1Y3QgaHR0X3J4X2luZGljYXRpb25faGwgKikoXHUwMDI2cmVzcC1cdTAwM2VyeF9pbmRfaGwpO1xuMjc5MTpcdFxuMjc5MjpcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmFyLVx1MDAzZWRhdGFfbG9jayk7XG4yNzkzOlx0XHRwZWVyID0gYXRoMTBrX3BlZXJfZmluZF9ieV9pZChhciwgcGVlcl9pZCk7XG4yNzk0Olx0XHRpZiAoIXBlZXIpIHtcbjI3OTU6XHRcdFx0YXRoMTBrX2RiZyhhciwgQVRIMTBLX0RCR19IVFQsIFwmIzM0O2ludmFsaWQgcGVlcjogJXVcXG5cJiMzNDssIHBlZXJfaWQpO1xuMjc5NjpcdFx0XHRnb3RvIGVycjtcbjI3OTc6XHRcdH1cbjI3OTg6XHRcbjI3OTk6XHRcdG51bV9tcGR1X3JhbmdlcyA9IE1TKF9fbGUzMl90b19jcHUocnhfaGwtXHUwMDNlaGRyLmluZm8xKSxcbjI4MDA6XHRcdFx0XHQgICAgIEhUVF9SWF9JTkRJQ0FUSU9OX0lORk8xX05VTV9NUERVX1JBTkdFUyk7XG4yODAxOlx0XG4yODAyOlx0XHQvKiBGSVg6IFZhbGlkYXRlIG51bV9tcGR1X3JhbmdlcyAqL1xuMjgwMzpcdFx0aWYgKG51bV9tcGR1X3JhbmdlcyBcdTAwM2UgMSkge1xuMjgwNDpcdFx0XHRhdGgxMGtfd2FybihhciwgXCYjMzQ7SW52YWxpZCBudW1fbXBkdV9yYW5nZXMgJWRcXG5cJiMzNDssIG51bV9tcGR1X3Jhbmdlcyk7XG4yODA1Olx0XHRcdGdvdG8gZXJyO1xuMjgwNjpcdFx0fVxuMjgwNzpcdFxuMjgwODpcdFxuMjgwOTpcdFx0dG90X2hkcl9sZW4gPSBzaXplb2Yoc3RydWN0IGh0dF9yZXNwX2hkcikgJiM0MztcbjI4MTA6XHRcdFx0ICAgICAgc2l6ZW9mKHJ4X2hsLVx1MDAzZWhkcikgJiM0MztcbjI4MTE6XHRcdFx0ICAgICAgc2l6ZW9mKHJ4X2hsLVx1MDAzZXBwZHUpICYjNDM7XG4yODEyOlx0XHRcdCAgICAgIHNpemVvZihyeF9obC1cdTAwM2VwcmVmaXgpICYjNDM7XG4yODEzOlx0XHRcdCAgICAgIHNpemVvZihyeF9obC1cdTAwM2Vmd19kZXNjKSAmIzQzO1xuMjgxNDpcdFx0XHQgICAgICBzaXplb2Yoc3RydWN0IGh0dF9yeF9pbmRpY2F0aW9uX21wZHVfcmFuZ2UpICogbnVtX21wZHVfcmFuZ2VzO1xuMjgxNTpcdFxuMjgxNjpcdFx0LyogRklYOiBWYWxpZGF0ZSB0b3RfaGRyX2xlbiBhZ2FpbnN0IHNrYiBsZW5ndGggKi9cbjI4MTc6XHRcdGlmICh0b3RfaGRyX2xlbiBcdTAwM2Ugc2tiLVx1MDAzZWxlbikge1xuMjgxODpcdFx0XHRhdGgxMGtfd2FybihhciwgXCYjMzQ7SW52YWxpZCB0b3RfaGRyX2xlbiAlenUgXHUwMDNlIHNrYi1cdTAwM2VsZW4gJXVcXG5cJiMzNDssXG4yODE5Olx0XHRcdFx0ICAgIHRvdF9oZHJfbGVuLCBza2ItXHUwMDNlbGVuKTtcbjI4MjA6XHRcdFx0Z290byBlcnI7XG4yODIxOlx0XHR9XG4yODIyOlx0XG4yODIzOlx0XG4yODI0Olx0XHR0aWQgPSAgTVMocnhfaGwtXHUwMDNlaGRyLmluZm8wLCBIVFRfUlhfSU5ESUNBVElPTl9JTkZPMF9FWFRfVElEKTtcbjI4MjU6XHRcdHJ4X2Rlc2MgPSAoc3RydWN0IGh0dF9obF9yeF9kZXNjICopKHNrYi1cdTAwM2VkYXRhICYjNDM7IHRvdF9oZHJfbGVuKTtcbjI4MjY6XHRcdHJ4X2Rlc2NfaW5mbyA9IF9fbGUzMl90b19jcHUocnhfZGVzYy1cdTAwM2VpbmZvKTtcbjI4Mjc6XHRcbjI4Mjg6XHRcbjI4Mjk6XHRcdC8qIEZJWDogVmFsaWRhdGUgZndfZGVzYy5sZW4gYWdhaW5zdCByZW1haW5pbmcgc2tiIGxlbmd0aCAqL1xuMjgzMDpcdFx0aWYgKHJ4X2hsLVx1MDAzZWZ3X2Rlc2MubGVuIFx1MDAzZSBza2ItXHUwMDNlbGVuIC0gdG90X2hkcl9sZW4pIHtcbjI4MzE6XHRcdFx0YXRoMTBrX3dhcm4oYXIsIFwmIzM0O0ludmFsaWQgZndfZGVzYy5sZW4gJXUgXHUwMDNlIHJlbWFpbmluZyBza2IgbGVuXFxuXCYjMzQ7LFxuMjgzMjpcdFx0XHRcdCAgICByeF9obC1cdTAwM2Vmd19kZXNjLmxlbik7XG4yODMzOlx0XHRcdGdvdG8gZXJyO1xuMjgzNDpcdFx0fVxuMjgzNTpcdFxuMjgzNjpcdFx0aGRyID0gKHN0cnVjdCBpZWVlODAyMTFfaGRyICopKCh1OCAqKXJ4X2Rlc2MgJiM0MzsgcnhfaGwtXHUwMDNlZndfZGVzYy5sZW4pO1xuMjgzNzpcdFxuMjgzODpcdFx0aWYgKGlzX211bHRpY2FzdF9ldGhlcl9hZGRyKGhkci1cdTAwM2VhZGRyMSkpIHtcbjI4Mzk6XHRcdFx0LyogRGlzY2FyZCB0aGUgZnJhZ21lbnQgd2l0aCBtdWx0aWNhc3QgREEgKi9cbjI4NDA6XHRcdFx0Z290byBlcnI7XG4yODQxOlx0XHR9XG4yODQyOlx0XG4yODQzOlx0XHRpZiAoIU1TKHJ4X2Rlc2NfaW5mbywgSFRUX1JYX0RFU0NfSExfSU5GT19FTkNSWVBURUQpKSB7XG4yODQ0Olx0XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmFyLVx1MDAzZWRhdGFfbG9jayk7XG4yODQ1Olx0XHRcdHJldHVybiBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfaW5kX2hsKGh0dCwgXHUwMDI2cmVzcC1cdTAwM2VyeF9pbmRfaGwsIHNrYixcbjI4NDY6XHRcdFx0XHRcdFx0XHQgICAgSFRUX1JYX05PTl9QTl9DSEVDSyxcbjI4NDc6XHRcdFx0XHRcdFx0XHQgICAgSFRUX1JYX05PTl9US0lQX01JQyk7XG4yODQ4Olx0XHR9XG4yODQ5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA4OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc5OTQKCQkJCQkJCW91dHB1dDogMjQ3CgkJCQkJCQl0aG91Z2h0czogNzYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJiMzOTtzIEltcGFjdCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIHBhdGNoIGFjdHVhbGx5ICpkb2VzKi4gSSBzZWUgaXQgbWFrZXMgc29tZSBrZXkgY2hhbmdlczoKCjEuICAqKmBhdGgxMGtfcmVnX3ZhbHVlX3dyaXRlYCoqOiBUaGUgY29kZSBub3cgdmFsaWRhdGVzIGByZWdfYWRkcmAgYWdhaW5zdCBgYXItJmd0O2h3X3BhcmFtcy5yZWdfc2l6ZWAgYmVmb3JlIHdyaXRpbmcgdG8gaGFyZHdhcmUuIEdvb2QsIHRoYXQmIzM5O3MgYSBjcnVjaWFsIGJvdW5kcyBjaGVjay4KMi4gICoqYGF0aDEwa19tZW1fdmFsdWVfd3JpdGVgKio6IFRoaXMgdmFsaWRhdGVzIGJvdGggYCpwcG9zYCBhbmQgYGNvdW50YCBhZ2FpbnN0IGBhci0mZ3Q7aHdfcGFyYW1zLm1lbV9zaXplYCBiZWZvcmUgaXQgZ2V0cyBpbnRvIGFsbG9jYXRpbmcgYW5kIGNvcHlpbmcuIFRoaXMgaXMgc291bmQsIHByZXZlbnRpbmcgcG90ZW50aWFsIG92ZXJmbG93cy4KMy4gICoqYGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obGAqKjogVGhpcyBhZGRzIHNldmVyYWwgYm91bmRzIGNoZWNrcy4gU3BlY2lmaWNhbGx5LCBvbiBgc2tiLSZndDtsZW5gLCBgbnVtX21wZHVfcmFuZ2VzYCwgYHRvdF9oZHJfbGVuYCwgYW5kIGByeF9obC0mZ3Q7ZndfZGVzYy5sZW5gLiBQcmV2ZW50aW5nIG91dCBvZiBib3VuZHMgcmVhZHMgYW5kIGludmFsaWQgb2Zmc2V0cy4KCk5vdywgdGhlIHJlYWwgcXVlc3Rpb246IGRvZXMgdGhpcyBpbnRyb2R1Y2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlcyBvciwgY3JpdGljYWxseSwga2VybmVsLXRvLXVzZXIgaW5mbyBsZWFrcz8gTGV0JiMzOTtzIGdvIHRocm91Z2ggdGhlIGNoZWNrbGlzdDoKCiogICAqKlVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIGludHJvZHVjZWQ/KiogTm8sIG5vdGhpbmcgbmV3IGhlcmUuCiogICAqKkFueSBgY29weV90b191c2VyYCwgYHB1dF91c2VyYCwgb3IgTmV0bGluayBsZWFrcz8qKiBOb3BlLCBub3Qgc2VlaW5nIGFueXRoaW5nIGxpa2UgdGhhdC4KKiAgICoqQWx0ZXJlZCBsZW5ndGggY2FsY3VsYXRpb25zIG9yIGJvdW5kcyBjaGVja3MgdGhhdCBjb3VsZCAqYWxsb3cqIGFjY2VzcyB0byB1bmluaXRpYWxpemVkIGJ5dGVzPyoqIE5vIHdheSwgaW4gZmFjdCwgdGhpcyBwYXRjaCAqYWRkcyogc3RyaWN0ZXIgYm91bmRzIGNoZWNrcyBhbmQgdmFsaWRhdGlvbiwgbWFraW5nIGl0ICptb3JlKiByb2J1c3QuCiogICAqKkNvbmRpdGlvbmFsIGxvZ2ljIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzPyoqIE5vLCB0aGUgZGF0YSBzb3VyY2VzIHNlZW0gc2FmZTogYHJlZ19hZGRyYCBjb21lcyBmcm9tIGBhci0mZ3Q7ZGVidWcucmVnX2FkZHJgLCBgcHBvc2AgZnJvbSB0aGUgY2FsbGVyLCBwYWNrZXQgZGF0YSAoc2tiIG1ldGFkYXRhKSBhbmQgcmVjZWl2ZWQgZGF0YSBmcm9tIHRoZSBwYWNrZXQuCgpUaGUgcG90ZW50aWFsIGlzc3VlcyBhZGRyZXNzZWQgc2VlbSB0byBiZSBvdXQtb2YtYm91bmRzIGFjY2VzcywgYnVmZmVyIG92ZXJmbG93cywgYW5kIGludmFsaWQgZGV2aWNlIG1lbW9yeSBhY2Nlc3MuIEkgYWxzbyBzcG90dGVkIHRoYXQgbWlzc2VkIG11dGV4IHVubG9jayBpbiB0aGUgZXJyb3IgcGF0aCBvZiBgYXRoMTBrX21lbV92YWx1ZV93cml0ZWAuIExvY2tpbmcgYnVncyBhcmUgTE9DS0RFUCB0ZXJyaXRvcnksIG91dC1vZi1ib3VuZHMgaXNzdWVzIEtBU0FOLgoKTGV0JiMzOTtzIGRvdWJsZS1jaGVjayB0aGUgcnVsZXMgcmVnYXJkaW5nIEtNU0FOLiBUaGUgJiMzNDtSdWxlJiMzNDsgY2xlYXJseSBzdGF0ZXMgS01TQU4gaXMgZm9yICp1bmluaXRpYWxpemVkIG1lbW9yeSogcmlza3Mgb25seS4gSWYgc29tZXRoaW5nIGVsc2UgaXMgYWxyZWFkeSBjb3ZlcmVkIGJ5IEtBU0FOIG9yIExPQ0tERVAsIHdlIGRvbiYjMzk7dCBuZWVkIGl0LgoKVGhlICYjMzQ7U2V0IE5lZWRzS01TQU49ZmFsc2UmIzM0OyBjcml0ZXJpYSBwZXJmZWN0bHkgZml0cyBoZXJlOgoKKiAgIFRoZSByaXNrcyBhcmUgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIHdoaWNoIGlzIEtBU0FOJiMzOTtzIGpvYi4KKiAgIEV2ZXJ5dGhpbmcgaXMgZnVsbHkgemVyb2VkIG9yIGluaXRpYWxpemVkLgoqICAgTm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2Ugb3IgbGVha3MuCgpPa2F5LCBsZXQmIzM5O3MgZG8gYSBxdWljayBmaW5hbCBzd2VlcCB0aHJvdWdoIHRoZSBwYXRjaCBhbmQgcmVsYXRlZCBmaWxlcywganVzdCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcuIEFsbCBsb29rcyBnb29kLiBJdCBzZWVtcyBzYWZlIHRvIHNldCBgTmVlZHNLTVNBTj1mYWxzZWAuCgpOb3csIHRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwODo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBhbmQgdmFsaWRpdHkgY2hlY2tzIGluIGF0aDEwayBkZWJ1Z2ZzIHdyaXRlIGhhbmRsZXJzIChhdGgxMGtfcmVnX3ZhbHVlX3dyaXRlLCBhdGgxMGtfbWVtX3ZhbHVlX3dyaXRlKSBhbmQgaW4gdGhlIEhUVCBSWCBmcmFnbWVudCBwcm9jZXNzaW5nIGZ1bmN0aW9uIChhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGwpLiBcblxuU3BlY2lmaWNhbGx5OlxuLSBSZWdpc3RlciBhZGRyZXNzIGFuZCBtZW1vcnkgb2Zmc2V0L2NvdW50IHZhbGlkYXRpb25zIHByZXZlbnQgb3V0LW9mLWJvdW5kcyBISUYgZGlhZ25vc3RpY3MgYW5kIHJlZ2lzdGVyIHdyaXRlcy5cbi0gTGVuZ3RoIGNoZWNrcyBvbiBza2IgYW5kIGhlYWRlciBvZmZzZXRzIGluIGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obCBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgaW50byBza2IgYnVmZmVyIGRhdGEuXG4tIEFueSBwb3RlbnRpYWwgZXJyb3ItcGF0aCBpc3N1ZXMgKHN1Y2ggYXMgZWFybHkgcmV0dXJuIHdpdGhvdXQgdW5sb2NraW5nIGNvbmZfbXV0ZXgpIGFyZSBsb2NraW5nIGJ1Z3MgZGV0ZWN0ZWQgYnkgTE9DS0RFUC5cblxuTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgYWxsb2NhdGlvbnMsIHJlYWRzIG9mIHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBmaWVsZHMsIG9yIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzIGFyZSBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQuIFRoZXJlZm9yZSwgc3RhbmRhcmQgS0FTQU4gYW5kIExPQ0tERVAgY29uZmlndXJhdGlvbnMgYXJlIGZ1bGx5IHN1ZmZpY2llbnQsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGFuZCB2YWxpZGl0eSBjaGVja3MgaW4gYXRoMTBrIGRlYnVnZnMgd3JpdGUgaGFuZGxlcnMgKGF0aDEwa19yZWdfdmFsdWVfd3JpdGUsIGF0aDEwa19tZW1fdmFsdWVfd3JpdGUpIGFuZCBpbiB0aGUgSFRUIFJYIGZyYWdtZW50IHByb2Nlc3NpbmcgZnVuY3Rpb24gKGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obCkuIFxuXG5TcGVjaWZpY2FsbHk6XG4tIFJlZ2lzdGVyIGFkZHJlc3MgYW5kIG1lbW9yeSBvZmZzZXQvY291bnQgdmFsaWRhdGlvbnMgcHJldmVudCBvdXQtb2YtYm91bmRzIEhJRiBkaWFnbm9zdGljcyBhbmQgcmVnaXN0ZXIgd3JpdGVzLlxuLSBMZW5ndGggY2hlY2tzIG9uIHNrYiBhbmQgaGVhZGVyIG9mZnNldHMgaW4gYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyBpbnRvIHNrYiBidWZmZXIgZGF0YS5cbi0gQW55IHBvdGVudGlhbCBlcnJvci1wYXRoIGlzc3VlcyAoc3VjaCBhcyBlYXJseSByZXR1cm4gd2l0aG91dCB1bmxvY2tpbmcgY29uZl9tdXRleCkgYXJlIGxvY2tpbmcgYnVncyBkZXRlY3RlZCBieSBMT0NLREVQLlxuXG5ObyB1bmluaXRpYWxpemVkIG1lbW9yeSBhbGxvY2F0aW9ucywgcmVhZHMgb2YgdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIGZpZWxkcywgb3Iga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MgYXJlIGludHJvZHVjZWQgb3IgZXhwb3NlZC4gVGhlcmVmb3JlLCBzdGFuZGFyZCBLQVNBTiBhbmQgTE9DS0RFUCBjb25maWd1cmF0aW9ucyBhcmUgZnVsbHkgc3VmZmljaWVudCwgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwODo0MTozNC41MDE2MjkyNjJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTI3MTQ0MzQzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVEgxMEtcIixcbiAgICBcIkFUSDEwS19VU0JcIixcbiAgICBcIkFUSDEwS19ERUJVR0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsXCIsXG4gICAgXCJhdGgxMGtfcmVnX3ZhbHVlX3dyaXRlXCIsXG4gICAgXCJhdGgxMGtfbWVtX3ZhbHVlX3dyaXRlXCIsXG4gICAgXCJhdGgxMGtfaHR0X3QyaF9tc2dfaGFuZGxlclwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgYW5kIHZhbGlkaXR5IGNoZWNrcyBpbiBhdGgxMGsgZGVidWdmcyB3cml0ZSBoYW5kbGVycyAoYXRoMTBrX3JlZ192YWx1ZV93cml0ZSwgYXRoMTBrX21lbV92YWx1ZV93cml0ZSkgYW5kIGluIHRoZSBIVFQgUlggZnJhZ21lbnQgcHJvY2Vzc2luZyBmdW5jdGlvbiAoYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsKS4gXFxuXFxuU3BlY2lmaWNhbGx5Olxcbi0gUmVnaXN0ZXIgYWRkcmVzcyBhbmQgbWVtb3J5IG9mZnNldC9jb3VudCB2YWxpZGF0aW9ucyBwcmV2ZW50IG91dC1vZi1ib3VuZHMgSElGIGRpYWdub3N0aWNzIGFuZCByZWdpc3RlciB3cml0ZXMuXFxuLSBMZW5ndGggY2hlY2tzIG9uIHNrYiBhbmQgaGVhZGVyIG9mZnNldHMgaW4gYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyBpbnRvIHNrYiBidWZmZXIgZGF0YS5cXG4tIEFueSBwb3RlbnRpYWwgZXJyb3ItcGF0aCBpc3N1ZXMgKHN1Y2ggYXMgZWFybHkgcmV0dXJuIHdpdGhvdXQgdW5sb2NraW5nIGNvbmZfbXV0ZXgpIGFyZSBsb2NraW5nIGJ1Z3MgZGV0ZWN0ZWQgYnkgTE9DS0RFUC5cXG5cXG5ObyB1bmluaXRpYWxpemVkIG1lbW9yeSBhbGxvY2F0aW9ucywgcmVhZHMgb2YgdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIGZpZWxkcywgb3Iga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MgYXJlIGludHJvZHVjZWQgb3IgZXhwb3NlZC4gVGhlcmVmb3JlLCBzdGFuZGFyZCBLQVNBTiBhbmQgTE9DS0RFUCBjb25maWd1cmF0aW9ucyBhcmUgZnVsbHkgc3VmZmljaWVudCwgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYm91bmRhcnkgYW5kIGxlbmd0aCB2YWxpZGF0aW9uIGNoZWNrcyB0byBhdGgxMGsgZGVidWdmcyB3cml0ZSBoYW5kbGVycyAoYXRoMTBrX3JlZ192YWx1ZV93cml0ZSwgYXRoMTBrX21lbV92YWx1ZV93cml0ZSkgYW5kIFJYIGZyYWdtZW50IHBhY2tldCBwcm9jZXNzaW5nIGluIGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obC4gQXRoMTBrIHN1cHBvcnRzIFVTQiBkZXZpY2VzIChBVEgxMEtfVVNCKSBhbmQgZGVidWdmcyBvcGVyYXRpb25zLCB3aGljaCBjYW4gYmUgcmVhY2hlZCBhbmQgZnV6emVkIHZpYSBVU0IgZW11bGF0aW9uIChSYXcgR2FkZ2V0KSBhbmQgZGVidWdmcyBpbnRlcmZhY2VzIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwODo0MTozNC41MDE2MzQzNjJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5MTAyMDgxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDBjMWUyNjkxMWQxZjU4NGQ1YzBiYzE5YjBhNmU0ZDJlY2NhMDZlNzhcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBTZXAgMTAgMDg6NDE6MzMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jXFxuaW5kZXggZmI2MWU1M2ZmNGMzNC4uNTBlMDE3MDIxMWI4MSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmNcXG5AQCAtNzI5LDYgKzcyOSwxMyBAQCBzdGF0aWMgc3NpemVfdCBhdGgxMGtfcmVnX3ZhbHVlX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLFxcbiBcXG4gXFx0cmVnX2FkZHIgPSBhci1cXHUwMDNlZGVidWcucmVnX2FkZHI7XFxuIFxcbitcXHQvKiBGSVg6IFZhbGlkYXRlIHJlZ2lzdGVyIGFkZHJlc3MgKi9cXG4rXFx0aWYgKHJlZ19hZGRyIFxcdTAwM2UgYXItXFx1MDAzZWh3X3BhcmFtcy5yZWdfc2l6ZSkge1xcbitcXHRcXHRhdGgxMGtfd2FybihhciwgXFxcIkludmFsaWQgcmVnaXN0ZXIgYWRkcmVzcyAweCUwOHhcXFxcblxcXCIsIHJlZ19hZGRyKTtcXG4rXFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4rXFx0XFx0Z290byBleGl0O1xcbitcXHR9XFxuK1xcbiBcXHRyZXQgPSBrc3RydG91MzJfZnJvbV91c2VyKHVzZXJfYnVmLCBjb3VudCwgMCwgXFx1MDAyNnJlZ192YWwpO1xcbiBcXHRpZiAocmV0KVxcbiBcXHRcXHRnb3RvIGV4aXQ7XFxuQEAgLTgxOSw2ICs4MjYsMTkgQEAgc3RhdGljIHNzaXplX3QgYXRoMTBrX21lbV92YWx1ZV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4gXFxuIFxcdG11dGV4X2xvY2soXFx1MDAyNmFyLVxcdTAwM2Vjb25mX211dGV4KTtcXG4gXFxuK1xcdC8qIEZJWDogVmFsaWRhdGUgYWRkcmVzcyBhZ2FpbnN0IG1lbW9yeSBzaXplICovXFxuK1xcdGlmICgqcHBvcyBcXHUwMDNlIGFyLVxcdTAwM2Vod19wYXJhbXMubWVtX3NpemUpIHtcXG4rXFx0XFx0YXRoMTBrX3dhcm4oYXIsIFxcXCJJbnZhbGlkIGFkZHJlc3MgMHglMDh4IGZvciBtZW1fdmFsdWVcXFxcblxcXCIsICh1MzIpKnBwb3MpO1xcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0fVxcbitcXG4rXFx0LyogRklYOiBWYWxpZGF0ZSBzaXplIGFnYWluc3QgcmVtYWluaW5nIG1lbW9yeSAqL1xcbitcXHRpZiAoY291bnQgXFx1MDAzZSBhci1cXHUwMDNlaHdfcGFyYW1zLm1lbV9zaXplIC0gKnBwb3MpIHtcXG4rXFx0XFx0YXRoMTBrX3dhcm4oYXIsIFxcXCJJbnZhbGlkIHNpemUgJXp1IGZvciBtZW1fdmFsdWUgYXQgMHglMDh4XFxcXG5cXFwiLFxcbitcXHRcXHRcXHQgICAgY291bnQsICh1MzIpKnBwb3MpO1xcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0fVxcbitcXG4gXFx0YnVmID0gdm1hbGxvYyhjb3VudCk7XFxuIFxcdGlmICghYnVmKSB7XFxuIFxcdFxcdHJldCA9IC1FTk9NRU07XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jXFxuaW5kZXggYWIyZDM3M2I0NzUwZC4uNGZhYmI5MjY0N2Q5ZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguY1xcbkBAIC0yNzc1LDYgKzI3NzUsMTMgQEAgc3RhdGljIGJvb2wgYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsKHN0cnVjdCBhdGgxMGtfaHR0ICpodHQsXFxuIFxcdHN0cnVjdCBodHRfcmVzcCAqcmVzcDtcXG4gXFx0c2l6ZV90IHRvdF9oZHJfbGVuO1xcbiBcXG4rXFxuK1xcdC8qIEZJWDogVmFsaWRhdGUgc2tiIGxlbmd0aCBiZWZvcmUgc2tiX3B1bGwgKi9cXG4rXFx0aWYgKHNrYi1cXHUwMDNlbGVuIFxcdTAwM2MgSFRUX1JYX0ZSQUdfSU5EX0lORk8wX0hFQURFUl9MRU4pIHtcXG4rXFx0XFx0YXRoMTBrX3dhcm4oYXIsIFxcXCJJbnZhbGlkIHNrYiBsZW4gJWQgZm9yIFJYX0ZSQUdfSU5EXFxcXG5cXFwiLCBza2ItXFx1MDAzZWxlbik7XFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0fVxcbitcXG4gXFx0cmVzcCA9IChzdHJ1Y3QgaHR0X3Jlc3AgKikoc2tiLVxcdTAwM2VkYXRhICsgSFRUX1JYX0ZSQUdfSU5EX0lORk8wX0hFQURFUl9MRU4pO1xcbiBcXHRza2JfcHVsbChza2IsIEhUVF9SWF9GUkFHX0lORF9JTkZPMF9IRUFERVJfTEVOKTtcXG4gXFx0c2tiX3RyaW0oc2tiLCBza2ItXFx1MDAzZWxlbiAtIEZDU19MRU4pO1xcbkBAIC0yNzkyLDYgKzI3OTksMTMgQEAgc3RhdGljIGJvb2wgYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsKHN0cnVjdCBhdGgxMGtfaHR0ICpodHQsXFxuIFxcdG51bV9tcGR1X3JhbmdlcyA9IE1TKF9fbGUzMl90b19jcHUocnhfaGwtXFx1MDAzZWhkci5pbmZvMSksXFxuIFxcdFxcdFxcdCAgICAgSFRUX1JYX0lORElDQVRJT05fSU5GTzFfTlVNX01QRFVfUkFOR0VTKTtcXG4gXFxuK1xcdC8qIEZJWDogVmFsaWRhdGUgbnVtX21wZHVfcmFuZ2VzICovXFxuK1xcdGlmIChudW1fbXBkdV9yYW5nZXMgXFx1MDAzZSAxKSB7XFxuK1xcdFxcdGF0aDEwa193YXJuKGFyLCBcXFwiSW52YWxpZCBudW1fbXBkdV9yYW5nZXMgJWRcXFxcblxcXCIsIG51bV9tcGR1X3Jhbmdlcyk7XFxuK1xcdFxcdGdvdG8gZXJyO1xcbitcXHR9XFxuK1xcbitcXG4gXFx0dG90X2hkcl9sZW4gPSBzaXplb2Yoc3RydWN0IGh0dF9yZXNwX2hkcikgK1xcbiBcXHRcXHQgICAgICBzaXplb2YocnhfaGwtXFx1MDAzZWhkcikgK1xcbiBcXHRcXHQgICAgICBzaXplb2YocnhfaGwtXFx1MDAzZXBwZHUpICtcXG5AQCAtMjc5OSwxMCArMjgxMywyNiBAQCBzdGF0aWMgYm9vbCBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGwoc3RydWN0IGF0aDEwa19odHQgKmh0dCxcXG4gXFx0XFx0ICAgICAgc2l6ZW9mKHJ4X2hsLVxcdTAwM2Vmd19kZXNjKSArXFxuIFxcdFxcdCAgICAgIHNpemVvZihzdHJ1Y3QgaHR0X3J4X2luZGljYXRpb25fbXBkdV9yYW5nZSkgKiBudW1fbXBkdV9yYW5nZXM7XFxuIFxcbitcXHQvKiBGSVg6IFZhbGlkYXRlIHRvdF9oZHJfbGVuIGFnYWluc3Qgc2tiIGxlbmd0aCAqL1xcbitcXHRpZiAodG90X2hkcl9sZW4gXFx1MDAzZSBza2ItXFx1MDAzZWxlbikge1xcbitcXHRcXHRhdGgxMGtfd2FybihhciwgXFxcIkludmFsaWQgdG90X2hkcl9sZW4gJXp1IFxcdTAwM2Ugc2tiLVxcdTAwM2VsZW4gJXVcXFxcblxcXCIsXFxuK1xcdFxcdFxcdCAgICB0b3RfaGRyX2xlbiwgc2tiLVxcdTAwM2VsZW4pO1xcbitcXHRcXHRnb3RvIGVycjtcXG4rXFx0fVxcbitcXG4rXFxuIFxcdHRpZCA9ICBNUyhyeF9obC1cXHUwMDNlaGRyLmluZm8wLCBIVFRfUlhfSU5ESUNBVElPTl9JTkZPMF9FWFRfVElEKTtcXG4gXFx0cnhfZGVzYyA9IChzdHJ1Y3QgaHR0X2hsX3J4X2Rlc2MgKikoc2tiLVxcdTAwM2VkYXRhICsgdG90X2hkcl9sZW4pO1xcbiBcXHRyeF9kZXNjX2luZm8gPSBfX2xlMzJfdG9fY3B1KHJ4X2Rlc2MtXFx1MDAzZWluZm8pO1xcbiBcXG4rXFxuK1xcdC8qIEZJWDogVmFsaWRhdGUgZndfZGVzYy5sZW4gYWdhaW5zdCByZW1haW5pbmcgc2tiIGxlbmd0aCAqL1xcbitcXHRpZiAocnhfaGwtXFx1MDAzZWZ3X2Rlc2MubGVuIFxcdTAwM2Ugc2tiLVxcdTAwM2VsZW4gLSB0b3RfaGRyX2xlbikge1xcbitcXHRcXHRhdGgxMGtfd2FybihhciwgXFxcIkludmFsaWQgZndfZGVzYy5sZW4gJXUgXFx1MDAzZSByZW1haW5pbmcgc2tiIGxlblxcXFxuXFxcIixcXG4rXFx0XFx0XFx0ICAgIHJ4X2hsLVxcdTAwM2Vmd19kZXNjLmxlbik7XFxuK1xcdFxcdGdvdG8gZXJyO1xcbitcXHR9XFxuK1xcbiBcXHRoZHIgPSAoc3RydWN0IGllZWU4MDIxMV9oZHIgKikoKHU4ICopcnhfZGVzYyArIHJ4X2hsLVxcdTAwM2Vmd19kZXNjLmxlbik7XFxuIFxcbiBcXHRpZiAoaXNfbXVsdGljYXN0X2V0aGVyX2FkZHIoaGRyLVxcdTAwM2VhZGRyMSkpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDg6NDE6MzUuMDk0MTkwMzY3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo2OTY2NTIzMjQ5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVEgxMEtcIixcbiAgICBcIkFUSDEwS19VU0JcIixcbiAgICBcIkFUSDEwS19ERUJVR0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsXCIsXG4gICAgXCJhdGgxMGtfcmVnX3ZhbHVlX3dyaXRlXCIsXG4gICAgXCJhdGgxMGtfbWVtX3ZhbHVlX3dyaXRlXCIsXG4gICAgXCJhdGgxMGtfaHR0X3QyaF9tc2dfaGFuZGxlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYm91bmRhcnkgYW5kIGxlbmd0aCB2YWxpZGF0aW9uIGNoZWNrcyB0byBhdGgxMGsgZGVidWdmcyB3cml0ZSBoYW5kbGVycyAoYXRoMTBrX3JlZ192YWx1ZV93cml0ZSwgYXRoMTBrX21lbV92YWx1ZV93cml0ZSkgYW5kIFJYIGZyYWdtZW50IHBhY2tldCBwcm9jZXNzaW5nIGluIGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obC4gQXRoMTBrIHN1cHBvcnRzIFVTQiBkZXZpY2VzIChBVEgxMEtfVVNCKSBhbmQgZGVidWdmcyBvcGVyYXRpb25zLCB3aGljaCBjYW4gYmUgcmVhY2hlZCBhbmQgZnV6emVkIHZpYSBVU0IgZW11bGF0aW9uIChSYXcgR2FkZ2V0KSBhbmQgZGVidWdmcyBpbnRlcmZhY2VzIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDBjMWUyNjkxMWQxZjU4NGQ1YzBiYzE5YjBhNmU0ZDJlY2NhMDZlNzhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IFNlcCAxMCAwODo0MTozMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuY1xuaW5kZXggZmI2MWU1M2ZmNGMzNC4uNTBlMDE3MDIxMWI4MSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jXG5AQCAtNzI5LDYgKzcyOSwxMyBAQCBzdGF0aWMgc3NpemVfdCBhdGgxMGtfcmVnX3ZhbHVlX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLFxuIFxuIFx0cmVnX2FkZHIgPSBhci1cdTAwM2VkZWJ1Zy5yZWdfYWRkcjtcbiBcbitcdC8qIEZJWDogVmFsaWRhdGUgcmVnaXN0ZXIgYWRkcmVzcyAqL1xuK1x0aWYgKHJlZ19hZGRyIFx1MDAzZSBhci1cdTAwM2Vod19wYXJhbXMucmVnX3NpemUpIHtcbitcdFx0YXRoMTBrX3dhcm4oYXIsIFwiSW52YWxpZCByZWdpc3RlciBhZGRyZXNzIDB4JTA4eFxcblwiLCByZWdfYWRkcik7XG4rXHRcdHJldCA9IC1FSU5WQUw7XG4rXHRcdGdvdG8gZXhpdDtcbitcdH1cbitcbiBcdHJldCA9IGtzdHJ0b3UzMl9mcm9tX3VzZXIodXNlcl9idWYsIGNvdW50LCAwLCBcdTAwMjZyZWdfdmFsKTtcbiBcdGlmIChyZXQpXG4gXHRcdGdvdG8gZXhpdDtcbkBAIC04MTksNiArODI2LDE5IEBAIHN0YXRpYyBzc2l6ZV90IGF0aDEwa19tZW1fdmFsdWVfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsXG4gXG4gXHRtdXRleF9sb2NrKFx1MDAyNmFyLVx1MDAzZWNvbmZfbXV0ZXgpO1xuIFxuK1x0LyogRklYOiBWYWxpZGF0ZSBhZGRyZXNzIGFnYWluc3QgbWVtb3J5IHNpemUgKi9cbitcdGlmICgqcHBvcyBcdTAwM2UgYXItXHUwMDNlaHdfcGFyYW1zLm1lbV9zaXplKSB7XG4rXHRcdGF0aDEwa193YXJuKGFyLCBcIkludmFsaWQgYWRkcmVzcyAweCUwOHggZm9yIG1lbV92YWx1ZVxcblwiLCAodTMyKSpwcG9zKTtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4rXG4rXHQvKiBGSVg6IFZhbGlkYXRlIHNpemUgYWdhaW5zdCByZW1haW5pbmcgbWVtb3J5ICovXG4rXHRpZiAoY291bnQgXHUwMDNlIGFyLVx1MDAzZWh3X3BhcmFtcy5tZW1fc2l6ZSAtICpwcG9zKSB7XG4rXHRcdGF0aDEwa193YXJuKGFyLCBcIkludmFsaWQgc2l6ZSAlenUgZm9yIG1lbV92YWx1ZSBhdCAweCUwOHhcXG5cIixcbitcdFx0XHQgICAgY291bnQsICh1MzIpKnBwb3MpO1xuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcdH1cbitcbiBcdGJ1ZiA9IHZtYWxsb2MoY291bnQpO1xuIFx0aWYgKCFidWYpIHtcbiBcdFx0cmV0ID0gLUVOT01FTTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguY1xuaW5kZXggYWIyZDM3M2I0NzUwZC4uNGZhYmI5MjY0N2Q5ZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmNcbkBAIC0yNzc1LDYgKzI3NzUsMTMgQEAgc3RhdGljIGJvb2wgYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsKHN0cnVjdCBhdGgxMGtfaHR0ICpodHQsXG4gXHRzdHJ1Y3QgaHR0X3Jlc3AgKnJlc3A7XG4gXHRzaXplX3QgdG90X2hkcl9sZW47XG4gXG4rXG4rXHQvKiBGSVg6IFZhbGlkYXRlIHNrYiBsZW5ndGggYmVmb3JlIHNrYl9wdWxsICovXG4rXHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2MgSFRUX1JYX0ZSQUdfSU5EX0lORk8wX0hFQURFUl9MRU4pIHtcbitcdFx0YXRoMTBrX3dhcm4oYXIsIFwiSW52YWxpZCBza2IgbGVuICVkIGZvciBSWF9GUkFHX0lORFxcblwiLCBza2ItXHUwMDNlbGVuKTtcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1x0fVxuK1xuIFx0cmVzcCA9IChzdHJ1Y3QgaHR0X3Jlc3AgKikoc2tiLVx1MDAzZWRhdGEgKyBIVFRfUlhfRlJBR19JTkRfSU5GTzBfSEVBREVSX0xFTik7XG4gXHRza2JfcHVsbChza2IsIEhUVF9SWF9GUkFHX0lORF9JTkZPMF9IRUFERVJfTEVOKTtcbiBcdHNrYl90cmltKHNrYiwgc2tiLVx1MDAzZWxlbiAtIEZDU19MRU4pO1xuQEAgLTI3OTIsNiArMjc5OSwxMyBAQCBzdGF0aWMgYm9vbCBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGwoc3RydWN0IGF0aDEwa19odHQgKmh0dCxcbiBcdG51bV9tcGR1X3JhbmdlcyA9IE1TKF9fbGUzMl90b19jcHUocnhfaGwtXHUwMDNlaGRyLmluZm8xKSxcbiBcdFx0XHQgICAgIEhUVF9SWF9JTkRJQ0FUSU9OX0lORk8xX05VTV9NUERVX1JBTkdFUyk7XG4gXG4rXHQvKiBGSVg6IFZhbGlkYXRlIG51bV9tcGR1X3JhbmdlcyAqL1xuK1x0aWYgKG51bV9tcGR1X3JhbmdlcyBcdTAwM2UgMSkge1xuK1x0XHRhdGgxMGtfd2FybihhciwgXCJJbnZhbGlkIG51bV9tcGR1X3JhbmdlcyAlZFxcblwiLCBudW1fbXBkdV9yYW5nZXMpO1xuK1x0XHRnb3RvIGVycjtcbitcdH1cbitcbitcbiBcdHRvdF9oZHJfbGVuID0gc2l6ZW9mKHN0cnVjdCBodHRfcmVzcF9oZHIpICtcbiBcdFx0ICAgICAgc2l6ZW9mKHJ4X2hsLVx1MDAzZWhkcikgK1xuIFx0XHQgICAgICBzaXplb2YocnhfaGwtXHUwMDNlcHBkdSkgK1xuQEAgLTI3OTksMTAgKzI4MTMsMjYgQEAgc3RhdGljIGJvb2wgYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsKHN0cnVjdCBhdGgxMGtfaHR0ICpodHQsXG4gXHRcdCAgICAgIHNpemVvZihyeF9obC1cdTAwM2Vmd19kZXNjKSArXG4gXHRcdCAgICAgIHNpemVvZihzdHJ1Y3QgaHR0X3J4X2luZGljYXRpb25fbXBkdV9yYW5nZSkgKiBudW1fbXBkdV9yYW5nZXM7XG4gXG4rXHQvKiBGSVg6IFZhbGlkYXRlIHRvdF9oZHJfbGVuIGFnYWluc3Qgc2tiIGxlbmd0aCAqL1xuK1x0aWYgKHRvdF9oZHJfbGVuIFx1MDAzZSBza2ItXHUwMDNlbGVuKSB7XG4rXHRcdGF0aDEwa193YXJuKGFyLCBcIkludmFsaWQgdG90X2hkcl9sZW4gJXp1IFx1MDAzZSBza2ItXHUwMDNlbGVuICV1XFxuXCIsXG4rXHRcdFx0ICAgIHRvdF9oZHJfbGVuLCBza2ItXHUwMDNlbGVuKTtcbitcdFx0Z290byBlcnI7XG4rXHR9XG4rXG4rXG4gXHR0aWQgPSAgTVMocnhfaGwtXHUwMDNlaGRyLmluZm8wLCBIVFRfUlhfSU5ESUNBVElPTl9JTkZPMF9FWFRfVElEKTtcbiBcdHJ4X2Rlc2MgPSAoc3RydWN0IGh0dF9obF9yeF9kZXNjICopKHNrYi1cdTAwM2VkYXRhICsgdG90X2hkcl9sZW4pO1xuIFx0cnhfZGVzY19pbmZvID0gX19sZTMyX3RvX2NwdShyeF9kZXNjLVx1MDAzZWluZm8pO1xuIFxuK1xuK1x0LyogRklYOiBWYWxpZGF0ZSBmd19kZXNjLmxlbiBhZ2FpbnN0IHJlbWFpbmluZyBza2IgbGVuZ3RoICovXG4rXHRpZiAocnhfaGwtXHUwMDNlZndfZGVzYy5sZW4gXHUwMDNlIHNrYi1cdTAwM2VsZW4gLSB0b3RfaGRyX2xlbikge1xuK1x0XHRhdGgxMGtfd2FybihhciwgXCJJbnZhbGlkIGZ3X2Rlc2MubGVuICV1IFx1MDAzZSByZW1haW5pbmcgc2tiIGxlblxcblwiLFxuK1x0XHRcdCAgICByeF9obC1cdTAwM2Vmd19kZXNjLmxlbik7XG4rXHRcdGdvdG8gZXJyO1xuK1x0fVxuK1xuIFx0aGRyID0gKHN0cnVjdCBpZWVlODAyMTFfaGRyICopKCh1OCAqKXJ4X2Rlc2MgKyByeF9obC1cdTAwM2Vmd19kZXNjLmxlbik7XG4gXG4gXHRpZiAoaXNfbXVsdGljYXN0X2V0aGVyX2FkZHIoaGRyLVx1MDAzZWFkZHIxKSkge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDg6NDE6MzUuMDk0MTkyMjU3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTk5ODc5NTUzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEF0aGVyb3MgV2lyZWxlc3MgRHJpdmVyIFBhdGNoKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGRldGVybWluZSBpZiBpdCdzIGV2ZW4gKndvcnRoKiBmdXp6aW5nLCBvciBpZiBpdCdzIHRvdWNoaW5nIGNvZGUgdGhhdCdzIGZ1bmRhbWVudGFsbHkgdW5yZWFjaGFibGUgdW5kZXIgbm9ybWFsIGNpcmN1bXN0YW5jZXMuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgYmVpbmcgbW9kaWZpZWQuIEFoLCBpdCdzIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmNgIGFuZCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguY2AuIFJpZ2h0LCBhdGgxMGsg4oCTIHRoYXQncyB0aGUgd2lyZWxlc3MgZHJpdmVyIGZvciB0aG9zZSBRdWFsY29tbSBBdGhlcm9zIDgwMi4xMWFjIGRldmljZXMuIFRoaW5rIFFDQTk4OHgsIFFDQTYxNzQsIFFDQTkzNzcuLi4geW91IGtub3csIHRoZSB1c3VhbCBzdXNwZWN0cy5cblxuTm93LCBteSBuZXh0IHF1ZXN0aW9uIGlzLCB3aGF0J3MgdGhlIGFjY2VzcyB2ZWN0b3IgaGVyZT8gRG9lcyB0aGlzIGRyaXZlciBzdXBwb3J0IFVTQiwgU0RJTywgb3IgaXMgaXQgaXNvbGF0ZWQgdG8gUENJPyBDYW4gSSBnZXQgYXQgaXQgdGhyb3VnaCBzb21ldGhpbmcgbGlrZSBgbWFjODAyMTFfaHdzaW1gIG9yLCBldmVuIGJldHRlciwgdGhyb3VnaCBVU0IgZ2FkZ2V0IGVtdWxhdGlvbiBvciBhIHNpbWlsYXIgbWV0aG9kIHRoYXQgU3l6a2FsbGVyIG1pZ2h0IG9mZmVyPyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgYXR0YWNrIHN1cmZhY2UuXG5cblRpbWUgZm9yIHNvbWUgZ3JlcC1mdSEgTGV0J3Mgc2NhbiB0aGUgY29kZSBiYXNlIHRvIGRldGVybWluZSB0aGUgYnVzIHN1cHBvcnQuIEknbGwgbmVlZCB0byBrbm93IHdoaWNoIGJ1c2VzIGFyZSBzdXBwb3J0ZWQgdG8ga25vdyB3aGF0IGhhcmR3YXJlIEkgbmVlZCB0byB0YXJnZXQgYW5kIHdoYXQgdGhlIGJlc3QgYXZlbnVlIGZvciBmdXp6aW5nIHRoaXMgd2lsbCBiZS4gU28gUENJLCBVU0IsIFNESU8sIEFIQiwgU05PQy4uLiBsZXQncyBzZWUgd2hhdCB0aGUgZ3JlcCByZXZlYWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjM3LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDg6NDE6NDEuMDkyOTkwNDk2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwODU2MDE4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGgxMGtfdXNiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9NYWtlZmlsZT0zND1hdGgxMGtfc2Rpby15ICs9IHNkaW8ub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvTWFrZWZpbGUtMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9NYWtlZmlsZTozNjpvYmotJChDT05GSUdfQVRIMTBLX1VTQikgKz0gYXRoMTBrX3VzYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9NYWtlZmlsZTozNzphdGgxMGtfdXNiLXkgKz0gdXNiLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL01ha2VmaWxlLTM4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjE4OnN0YXRpYyB2b2lkIGF0aDEwa191c2JfcG9zdF9yZWN2X3RyYW5zZmVycyhzdHJ1Y3QgYXRoMTBrICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjE5OlxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnJlY3ZfcGlwZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM9MzU9c3RhdGljIHN0cnVjdCBhdGgxMGtfdXJiX2NvbnRleHQgKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MzY6YXRoMTBrX3VzYl9hbGxvY191cmJfZnJvbV9waXBlKHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zNy17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTc6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9mcmVlX3VyYl90b19waXBlKHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01OC1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgYXRoMTBrX3VyYl9jb250ZXh0ICp1cmJfY29udGV4dClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3NDpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2NsZWFudXBfcmVjdl91cmIoc3RydWN0IGF0aDEwa191cmJfY29udGV4dCAqdXJiX2NvbnRleHQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTc4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6Nzk6XFx0YXRoMTBrX3VzYl9mcmVlX3VyYl90b19waXBlKHVyYl9jb250ZXh0LVxcdTAwM2VwaXBlLCB1cmJfY29udGV4dCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04MC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjgyOnN0YXRpYyB2b2lkIGF0aDEwa191c2JfZnJlZV9waXBlX3Jlc291cmNlcyhzdHJ1Y3QgYXRoMTBrICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjgzOlxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwNC1cXHRmb3IgKDs7KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDU6XFx0XFx0dXJiX2NvbnRleHQgPSBhdGgxMGtfdXNiX2FsbG9jX3VyYl9mcm9tX3BpcGUocGlwZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTExMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExNDpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2NsZWFudXBfcGlwZV9yZXNvdXJjZXMoc3RydWN0IGF0aDEwayAqYXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTE2OlxcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTE3LVxcdGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTktXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFUSDEwS19VU0JfUElQRV9NQVg7IGkrKylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEyMDpcXHRcXHRhdGgxMGtfdXNiX2ZyZWVfcGlwZV9yZXNvdXJjZXMoYXIsIFxcdTAwMjZhcl91c2ItXFx1MDAzZXBpcGVzW2ldKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEyMS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEyNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEyNTpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX3JlY3ZfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTI2LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEyNy1cXHRzdHJ1Y3QgYXRoMTBrX3VyYl9jb250ZXh0ICp1cmJfY29udGV4dCA9IHVyYi1cXHUwMDNlY29udGV4dDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEyODpcXHRzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlID0gdXJiX2NvbnRleHQtXFx1MDAzZXBpcGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMjktXFx0c3RydWN0IGF0aDEwayAqYXIgPSBwaXBlLVxcdTAwM2Vhcl91c2ItXFx1MDAzZWFyO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xNzItY2xlYW51cF9yZWN2X3VyYjpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjE3MzpcXHRhdGgxMGtfdXNiX2NsZWFudXBfcmVjdl91cmIodXJiX2NvbnRleHQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTc0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xNzctXFx0XFx0Lyogb3VyIGZyZWUgdXJicyBhcmUgcGlsaW5nIHVwLCBwb3N0IG1vcmUgdHJhbnNmZXJzICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxNzg6XFx0XFx0YXRoMTBrX3VzYl9wb3N0X3JlY3ZfdHJhbnNmZXJzKGFyLCBwaXBlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE3OS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE4MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjE4MjpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX3RyYW5zbWl0X2NvbXBsZXRlKHN0cnVjdCB1cmIgKnVyYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE4My17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xODQtXFx0c3RydWN0IGF0aDEwa191cmJfY29udGV4dCAqdXJiX2NvbnRleHQgPSB1cmItXFx1MDAzZWNvbnRleHQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxODU6XFx0c3RydWN0IGF0aDEwa191c2JfcGlwZSAqcGlwZSA9IHVyYl9jb250ZXh0LVxcdTAwM2VwaXBlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTg2LVxcdHN0cnVjdCBhdGgxMGsgKmFyID0gcGlwZS1cXHUwMDNlYXJfdXNiLVxcdTAwM2VhcjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTk2LVxcdHVyYl9jb250ZXh0LVxcdTAwM2Vza2IgPSBOVUxMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTk3OlxcdGF0aDEwa191c2JfZnJlZV91cmJfdG9fcGlwZSh1cmJfY29udGV4dC1cXHUwMDNlcGlwZSwgdXJiX2NvbnRleHQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTk4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yMDQtLyogcGlwZSBvcGVyYXRpb25zICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoyMDU6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9wb3N0X3JlY3ZfdHJhbnNmZXJzKHN0cnVjdCBhdGgxMGsgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjA2OlxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnJlY3ZfcGlwZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTIwNy17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTIxMi1cXHRmb3IgKDs7KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoyMTM6XFx0XFx0dXJiX2NvbnRleHQgPSBhdGgxMGtfdXNiX2FsbG9jX3VyYl9mcm9tX3BpcGUocmVjdl9waXBlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTIxNC1cXHRcXHRpZiAoIXVyYl9jb250ZXh0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yMjktXFx0XFx0XFx0XFx0ICBBVEgxMEtfVVNCX1JYX0JVRkZFUl9TSVpFLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjMwOlxcdFxcdFxcdFxcdCAgYXRoMTBrX3VzYl9yZWN2X2NvbXBsZXRlLCB1cmJfY29udGV4dCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yMzEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI1NC1lcnI6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoyNTU6XFx0YXRoMTBrX3VzYl9jbGVhbnVwX3JlY3ZfdXJiKHVyYl9jb250ZXh0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI1Ni19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoyNTg6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9mbHVzaF9hbGwoc3RydWN0IGF0aDEwayAqYXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yNTkte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjYwOlxcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjYxLVxcdGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yNzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoyNzE6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9zdGFydF9yZWN2X3BpcGVzKHN0cnVjdCBhdGgxMGsgKmFyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjcyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjI3MzpcXHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI3NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjc2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6Mjc3OlxcdGF0aDEwa191c2JfcG9zdF9yZWN2X3RyYW5zZmVycyhhcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI3OC1cXHRcXHRcXHRcXHQgICAgICAgXFx1MDAyNmFyX3VzYi1cXHUwMDNlcGlwZXNbQVRIMTBLX1VTQl9QSVBFX1JYX0RBVEFdKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjgwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjgxOnN0YXRpYyB2b2lkIGF0aDEwa191c2JfdHhfY29tcGxldGUoc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yODIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yOTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoyOTI6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9yeF9jb21wbGV0ZShzdHJ1Y3QgYXRoMTBrICphciwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI5My17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM1OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM2MDpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2lvX2NvbXBfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zNjEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MzYyOlxcdHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGUgPSBjb250YWluZXJfb2Yod29yayxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM2MzpcXHRcXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IGF0aDEwa191c2JfcGlwZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM2NC1cXHRcXHRcXHRcXHRcXHRcXHQgICAgaW9fY29tcGxldGVfd29yayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM2OS1cXHRcXHRpZiAocGlwZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBBVEgxMEtfVVNCX1BJUEVfRkxBR19UWClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM3MDpcXHRcXHRcXHRhdGgxMGtfdXNiX3R4X2NvbXBsZXRlKGFyLCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzcxLVxcdFxcdGVsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM3MjpcXHRcXHRcXHRhdGgxMGtfdXNiX3J4X2NvbXBsZXRlKGFyLCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzczLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzc1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6Mzc2OiNkZWZpbmUgQVRIMTBLX1VTQl9NQVhfRElBR19DTUQgKHNpemVvZihzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfY21kX3dyaXRlKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM3NzojZGVmaW5lIEFUSDEwS19VU0JfTUFYX0RJQUdfUkVTUCAoc2l6ZW9mKHN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19yZXNwX3JlYWQpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzc4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6Mzc5OnN0YXRpYyB2b2lkIGF0aDEwa191c2JfZGVzdHJveShzdHJ1Y3QgYXRoMTBrICphcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM4MC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozODE6XFx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zODItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozODM6XFx0YXRoMTBrX3VzYl9mbHVzaF9hbGwoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6Mzg0OlxcdGF0aDEwa191c2JfY2xlYW51cF9waXBlX3Jlc291cmNlcyhhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zODUtXFx0dXNiX3NldF9pbnRmZGF0YShhcl91c2ItXFx1MDAzZWludGVyZmFjZSwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM5MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM5MTpzdGF0aWMgaW50IGF0aDEwa191c2JfaGlmX3N0YXJ0KHN0cnVjdCBhdGgxMGsgKmFyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzkyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM5My1cXHRpbnQgaTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM5NDpcXHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM5NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM5Ni1cXHRhdGgxMGtfY29yZV9uYXBpX2VuYWJsZShhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozOTc6XFx0YXRoMTBrX3VzYl9zdGFydF9yZWN2X3BpcGVzKGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM5OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NDA5OnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9oaWZfdHhfc2coc3RydWN0IGF0aDEwayAqYXIsIHU4IHBpcGVfaWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00MTAtXFx0XFx0XFx0XFx0c3RydWN0IGF0aDEwa19oaWZfc2dfaXRlbSAqaXRlbXMsIGludCBuX2l0ZW1zKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDExLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQxMjpcXHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQxMzpcXHRzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlID0gXFx1MDAyNmFyX3VzYi1cXHUwMDNlcGlwZXNbcGlwZV9pZF07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00MTQtXFx0c3RydWN0IGF0aDEwa191cmJfY29udGV4dCAqdXJiX2NvbnRleHQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQxOS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2Mgbl9pdGVtczsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo0MjA6XFx0XFx0dXJiX2NvbnRleHQgPSBhdGgxMGtfdXNiX2FsbG9jX3VyYl9mcm9tX3BpcGUocGlwZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00MjEtXFx0XFx0aWYgKCF1cmJfY29udGV4dCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00MzktXFx0XFx0XFx0XFx0ICBza2ItXFx1MDAzZWxlbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQ0MDpcXHRcXHRcXHRcXHQgIGF0aDEwa191c2JfdHJhbnNtaXRfY29tcGxldGUsIHVyYl9jb250ZXh0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ0MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDYzLWVycl9mcmVlX3VyYl90b19waXBlOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NDY0OlxcdGF0aDEwa191c2JfZnJlZV91cmJfdG9fcGlwZSh1cmJfY29udGV4dC1cXHUwMDNlcGlwZSwgdXJiX2NvbnRleHQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDY1LWVycjpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NDY5OnN0YXRpYyB2b2lkIGF0aDEwa191c2JfaGlmX3N0b3Aoc3RydWN0IGF0aDEwayAqYXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00NzAte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NDcxOlxcdGF0aDEwa191c2JfZmx1c2hfYWxsKGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ3Mi1cXHRhdGgxMGtfY29yZV9uYXBpX3N5bmNfZGlzYWJsZShhcik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ3NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQ3NTpzdGF0aWMgdTE2IGF0aDEwa191c2JfaGlmX2dldF9mcmVlX3F1ZXVlX251bWJlcihzdHJ1Y3QgYXRoMTBrICphciwgdTggcGlwZV9pZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ3Ni17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo0Nzc6XFx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00NzgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ4MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQ4MjpzdGF0aWMgaW50IGF0aDEwa191c2Jfc3VibWl0X2N0cmxfb3V0KHN0cnVjdCBhdGgxMGsgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDgzLVxcdFxcdFxcdFxcdCAgICAgIHU4IHJlcSwgdTE2IHZhbHVlLCB1MTYgaW5kZXgsIHZvaWQgKmRhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ4NS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo0ODY6XFx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00ODctXFx0dTggKmJ1ZiA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTUxNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjUxNjpzdGF0aWMgaW50IGF0aDEwa191c2Jfc3VibWl0X2N0cmxfaW4oc3RydWN0IGF0aDEwayAqYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01MTctXFx0XFx0XFx0XFx0ICAgICB1OCByZXEsIHUxNiB2YWx1ZSwgdTE2IGluZGV4LCB2b2lkICpkYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01MTkte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTIwOlxcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTIxLVxcdHU4ICpidWYgPSBOVUxMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01NTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo1NTI6c3RhdGljIGludCBhdGgxMGtfdXNiX2N0cmxfbXNnX2V4Y2hhbmdlKHN0cnVjdCBhdGgxMGsgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTUzLVxcdFxcdFxcdFxcdFxcdHU4IHJlcV92YWwsIHU4ICpyZXFfYnVmLCB1MzIgcmVxX2xlbixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTU5LVxcdC8qIHNlbmQgY29tbWFuZCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTYwOlxcdHJldCA9IGF0aDEwa191c2Jfc3VibWl0X2N0cmxfb3V0KGFyLCByZXFfdmFsLCAwLCAwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTYxLVxcdFxcdFxcdFxcdFxcdCByZXFfYnVmLCByZXFfbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTY2LVxcdGlmIChyZXNwX2J1Zikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTY3OlxcdFxcdHJldCA9IGF0aDEwa191c2Jfc3VibWl0X2N0cmxfaW4oYXIsIHJlc3BfdmFsLCAwLCAwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTY4LVxcdFxcdFxcdFxcdFxcdFxcdHJlc3BfYnVmLCAqcmVzcF9sZW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01NzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo1Nzg6c3RhdGljIGludCBhdGgxMGtfdXNiX2hpZl9kaWFnX3JlYWQoc3RydWN0IGF0aDEwayAqYXIsIHUzMiBhZGRyZXNzLCB2b2lkICpidWYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01NzktXFx0XFx0XFx0XFx0ICAgIHNpemVfdCBidWZfbGVuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTgwLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjU4MTpcXHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjU4MjpcXHRzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfY21kX3JlYWQgKmNtZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU4My1cXHR1MzIgcmVzcF9sZW47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU4NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjU4NjpcXHRpZiAoYnVmX2xlbiBcXHUwMDNjIHNpemVvZihzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfcmVzcF9yZWFkKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU4Ny1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU4OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjU4OTpcXHRjbWQgPSAoc3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX2NtZF9yZWFkICopYXJfdXNiLVxcdTAwM2VkaWFnX2NtZF9idWZmZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01OTAtXFx0bWVtc2V0KGNtZCwgMCwgc2l6ZW9mKCpjbWQpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTkyLVxcdGNtZC1cXHUwMDNlYWRkcmVzcyA9IGNwdV90b19sZTMyKGFkZHJlc3MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTkzOlxcdHJlc3BfbGVuID0gc2l6ZW9mKHN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19yZXNwX3JlYWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTk0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTk1OlxcdHJldCA9IGF0aDEwa191c2JfY3RybF9tc2dfZXhjaGFuZ2UoYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01OTYtXFx0XFx0XFx0XFx0XFx0ICAgQVRIMTBLX1VTQl9DT05UUk9MX1JFUV9ESUFHX0NNRCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjAzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjA0OlxcdGlmIChyZXNwX2xlbiAhPSBzaXplb2Yoc3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX3Jlc3BfcmVhZCkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02MDUtXFx0XFx0cmV0dXJuIC1FTVNHU0laRTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjA3LVxcdG1lbWNweShidWYsIGFyX3VzYi1cXHUwMDNlZGlhZ19yZXNwX2J1ZmZlcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjYwODpcXHQgICAgICAgc2l6ZW9mKHN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19yZXNwX3JlYWQpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTYwOS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjEzOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9oaWZfZGlhZ193cml0ZShzdHJ1Y3QgYXRoMTBrICphciwgdTMyIGFkZHJlc3MsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02MTQtXFx0XFx0XFx0XFx0ICAgICBjb25zdCB2b2lkICpkYXRhLCBpbnQgbmJ5dGVzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjE1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjYxNjpcXHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjYxNzpcXHRzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfY21kX3dyaXRlICpjbWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02MTgtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjIzOlxcdGNtZCA9IChzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfY21kX3dyaXRlICopYXJfdXNiLVxcdTAwM2VkaWFnX2NtZF9idWZmZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02MjQtXFx0bWVtc2V0KGNtZCwgMCwgc2l6ZW9mKCpjbWQpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjI5OlxcdHJldCA9IGF0aDEwa191c2JfY3RybF9tc2dfZXhjaGFuZ2UoYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02MzAtXFx0XFx0XFx0XFx0XFx0ICAgQVRIMTBLX1VTQl9DT05UUk9MX1JFUV9ESUFHX0NNRCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjQwOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9ibWlfZXhjaGFuZ2VfbXNnKHN0cnVjdCBhdGgxMGsgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjQxLVxcdFxcdFxcdFxcdCAgICAgICB2b2lkICpyZXEsIHUzMiByZXFfbGVuLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02NDYtXFx0aWYgKHJlcSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjQ3OlxcdFxcdHJldCA9IGF0aDEwa191c2Jfc3VibWl0X2N0cmxfb3V0KGFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjQ4LVxcdFxcdFxcdFxcdFxcdFxcdCBBVEgxMEtfVVNCX0NPTlRST0xfUkVRX1NFTkRfQk1JX0NNRCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjU4LVxcdGlmIChyZXNwKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo2NTk6XFx0XFx0cmV0ID0gYXRoMTBrX3VzYl9zdWJtaXRfY3RybF9pbihhcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTY2MC1cXHRcXHRcXHRcXHRcXHRcXHRBVEgxMEtfVVNCX0NPTlRST0xfUkVRX1JFQ1ZfQk1JX1JFU1AsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTY3Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjY3MzpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2hpZl9nZXRfZGVmYXVsdF9waXBlKHN0cnVjdCBhdGgxMGsgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjc0LVxcdFxcdFxcdFxcdFxcdCAgICB1OCAqdWxfcGlwZSwgdTggKmRsX3BpcGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTY3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjY4MDpzdGF0aWMgaW50IGF0aDEwa191c2JfaGlmX21hcF9zZXJ2aWNlX3RvX3BpcGUoc3RydWN0IGF0aDEwayAqYXIsIHUxNiBzdmNfaWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02ODEtXFx0XFx0XFx0XFx0XFx0ICAgICAgdTggKnVsX3BpcGUsIHU4ICpkbF9waXBlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03MDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MDQ6c3RhdGljIGludCBhdGgxMGtfdXNiX2hpZl9wb3dlcl91cChzdHJ1Y3QgYXRoMTBrICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTcwNS1cXHRcXHRcXHRcXHQgICBlbnVtIGF0aDEwa19maXJtd2FyZV9tb2RlIGZ3X21vZGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTcwOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjcxMDpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2hpZl9wb3dlcl9kb3duKHN0cnVjdCBhdGgxMGsgKmFyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzExLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjcxMjpcXHRhdGgxMGtfdXNiX2ZsdXNoX2FsbChhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03MTMtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03MTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MTc6c3RhdGljIGludCBhdGgxMGtfdXNiX2hpZl9zdXNwZW5kKHN0cnVjdCBhdGgxMGsgKmFyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzE4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzIxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzIyOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9oaWZfcmVzdW1lKHN0cnVjdCBhdGgxMGsgKmFyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzIzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzI4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTBrX2hpZl9vcHMgYXRoMTBrX3VzYl9oaWZfb3BzID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzI5OlxcdC50eF9zZ1xcdFxcdFxcdD0gYXRoMTBrX3VzYl9oaWZfdHhfc2csXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MzA6XFx0LmRpYWdfcmVhZFxcdFxcdD0gYXRoMTBrX3VzYl9oaWZfZGlhZ19yZWFkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzMxOlxcdC5kaWFnX3dyaXRlXFx0XFx0PSBhdGgxMGtfdXNiX2hpZl9kaWFnX3dyaXRlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzMyOlxcdC5leGNoYW5nZV9ibWlfbXNnXFx0PSBhdGgxMGtfdXNiX2JtaV9leGNoYW5nZV9tc2csXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MzM6XFx0LnN0YXJ0XFx0XFx0XFx0PSBhdGgxMGtfdXNiX2hpZl9zdGFydCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjczNDpcXHQuc3RvcFxcdFxcdFxcdD0gYXRoMTBrX3VzYl9oaWZfc3RvcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjczNTpcXHQubWFwX3NlcnZpY2VfdG9fcGlwZVxcdD0gYXRoMTBrX3VzYl9oaWZfbWFwX3NlcnZpY2VfdG9fcGlwZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjczNjpcXHQuZ2V0X2RlZmF1bHRfcGlwZVxcdD0gYXRoMTBrX3VzYl9oaWZfZ2V0X2RlZmF1bHRfcGlwZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjczNzpcXHQuZ2V0X2ZyZWVfcXVldWVfbnVtYmVyXFx0PSBhdGgxMGtfdXNiX2hpZl9nZXRfZnJlZV9xdWV1ZV9udW1iZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3Mzg6XFx0LnBvd2VyX3VwXFx0XFx0PSBhdGgxMGtfdXNiX2hpZl9wb3dlcl91cCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjczOTpcXHQucG93ZXJfZG93blxcdFxcdD0gYXRoMTBrX3VzYl9oaWZfcG93ZXJfZG93bixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTc0MC0jaWZkZWYgQ09ORklHX1BNXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3NDE6XFx0LnN1c3BlbmRcXHRcXHQ9IGF0aDEwa191c2JfaGlmX3N1c3BlbmQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3NDI6XFx0LnJlc3VtZVxcdFxcdFxcdD0gYXRoMTBrX3VzYl9oaWZfcmVzdW1lLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzQzLSNlbmRpZlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03NDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3NDY6c3RhdGljIHU4IGF0aDEwa191c2JfZ2V0X2xvZ2ljYWxfcGlwZV9udW0odTggZXBfYWRkcmVzcywgaW50ICp1cmJfY291bnQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03NDcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03OTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3OTE6c3RhdGljIGludCBhdGgxMGtfdXNiX2FsbG9jX3BpcGVfcmVzb3VyY2VzKHN0cnVjdCBhdGgxMGsgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzkyOlxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03OTMtXFx0XFx0XFx0XFx0XFx0ICAgaW50IHVyYl9jbnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgxMS1cXHRcXHRwaXBlLVxcdTAwM2V1cmJfYWxsb2MrKztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjgxMjpcXHRcXHRhdGgxMGtfdXNiX2ZyZWVfdXJiX3RvX3BpcGUocGlwZSwgdXJiX2NvbnRleHQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODEzLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6ODIzOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9zZXR1cF9waXBlX3Jlc291cmNlcyhzdHJ1Y3QgYXRoMTBrICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgyNC1cXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODI1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjgyNjpcXHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgyNy1cXHRzdHJ1Y3QgdXNiX2hvc3RfaW50ZXJmYWNlICppZmFjZV9kZXNjID0gaW50ZXJmYWNlLVxcdTAwM2VjdXJfYWx0c2V0dGluZztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgyOC1cXHRzdHJ1Y3QgdXNiX2VuZHBvaW50X2Rlc2NyaXB0b3IgKmVuZHBvaW50O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6ODI5OlxcdHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04MzAtXFx0aW50IHJldCwgaSwgdXJiY291bnQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTg3MS1cXHRcXHRwaXBlX251bSA9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo4NzI6XFx0XFx0ICAgIGF0aDEwa191c2JfZ2V0X2xvZ2ljYWxfcGlwZV9udW0oZW5kcG9pbnQtXFx1MDAzZWJFbmRwb2ludEFkZHJlc3MsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04NzMtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZ1cmJjb3VudCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTkyNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjkyNTpcXHRcXHRyZXQgPSBhdGgxMGtfdXNiX2FsbG9jX3BpcGVfcmVzb3VyY2VzKGFyLCBwaXBlLCB1cmJjb3VudCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05MjYtXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTMyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6OTMzOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9jcmVhdGUoc3RydWN0IGF0aDEwayAqYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05MzQtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTM1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjkzNjpcXHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTkzNy1cXHRzdHJ1Y3QgdXNiX2RldmljZSAqZGV2ID0gaW50ZXJmYWNlX3RvX3VzYmRldihpbnRlcmZhY2UpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6OTM4OlxcdHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05MzktXFx0aW50IHJldCwgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTQ4LVxcdFxcdElOSVRfV09SSyhcXHUwMDI2cGlwZS1cXHUwMDNlaW9fY29tcGxldGVfd29yayxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjk0OTpcXHRcXHRcXHQgIGF0aDEwa191c2JfaW9fY29tcF93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTk1MC1cXHRcXHRza2JfcXVldWVfaGVhZF9pbml0KFxcdTAwMjZwaXBlLVxcdTAwM2Vpb19jb21wX3F1ZXVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTY1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6OTY2OlxcdHJldCA9IGF0aDEwa191c2Jfc2V0dXBfcGlwZV9yZXNvdXJjZXMoYXIsIGludGVyZmFjZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05NjctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTcyLWVycjpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjk3MzpcXHRhdGgxMGtfdXNiX2Rlc3Ryb3koYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTc0LVxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTk3Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjk3NzpzdGF0aWMgaW50IGF0aDEwa191c2JfbmFwaV9wb2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqY3R4LCBpbnQgYnVkZ2V0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTc4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTkxLS8qIGF0aDEwayB1c2IgZHJpdmVyIHJlZ2lzdGVyZWQgZnVuY3Rpb25zICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo5OTI6c3RhdGljIGludCBhdGgxMGtfdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2UsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05OTMtXFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTk1LVxcdHN0cnVjdCBhdGgxMGsgKmFyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6OTk2OlxcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2I7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05OTctXFx0c3RydWN0IHVzYl9kZXZpY2UgKmRldiA9IGludGVyZmFjZV90b191c2JkZXYoaW50ZXJmYWNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTAxMC1cXHRhciA9IGF0aDEwa19jb3JlX2NyZWF0ZShzaXplb2YoKmFyX3VzYiksIFxcdTAwMjZkZXYtXFx1MDAzZWRldiwgQVRIMTBLX0JVU19VU0IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDExOlxcdFxcdFxcdFxcdGh3X3JldiwgXFx1MDAyNmF0aDEwa191c2JfaGlmX29wcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDEyLVxcdGlmICghYXIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTAxNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwMTc6XFx0bmV0aWZfbmFwaV9hZGQoYXItXFx1MDAzZW5hcGlfZGV2LCBcXHUwMDI2YXItXFx1MDAzZW5hcGksIGF0aDEwa191c2JfbmFwaV9wb2xsKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwMTgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwMjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDI2OlxcdGFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDI3OlxcdHJldCA9IGF0aDEwa191c2JfY3JlYXRlKGFyLCBpbnRlcmZhY2UpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTAyOC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDUxLWVycl91c2JfZGVzdHJveTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwNTI6XFx0YXRoMTBrX3VzYl9kZXN0cm95KGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwNTMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwNTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDYwOnN0YXRpYyB2b2lkIGF0aDEwa191c2JfZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA2MS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDYyOlxcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2I7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDYzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDY5LVxcdG5ldGlmX25hcGlfZGVsKFxcdTAwMjZhcl91c2ItXFx1MDAzZWFyLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwNzA6XFx0YXRoMTBrX3VzYl9kZXN0cm95KGFyX3VzYi1cXHUwMDNlYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA3MS1cXHRhdGgxMGtfY29yZV9kZXN0cm95KGFyX3VzYi1cXHUwMDNlYXIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDc1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA3NjpzdGF0aWMgaW50IGF0aDEwa191c2JfcG1fc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA3Ny1cXHRcXHRcXHRcXHQgcG1fbWVzc2FnZV90IG1lc3NhZ2UpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDc4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwNzk6XFx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IHVzYl9nZXRfaW50ZmRhdGEoaW50ZXJmYWNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwODAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDgxOlxcdGF0aDEwa191c2JfZmx1c2hfYWxsKGFyX3VzYi1cXHUwMDNlYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA4Mi1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA4NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwODU6c3RhdGljIGludCBhdGgxMGtfdXNiX3BtX3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA4Ni17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDg3OlxcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSB1c2JfZ2V0X2ludGZkYXRhKGludGVyZmFjZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDg4LVxcdHN0cnVjdCBhdGgxMGsgKmFyID0gYXJfdXNiLVxcdTAwM2VhcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwODktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDkwOlxcdGF0aDEwa191c2JfcG9zdF9yZWN2X3RyYW5zZmVycyhhcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwOTEtXFx0XFx0XFx0XFx0ICAgICAgIFxcdTAwMjZhcl91c2ItXFx1MDAzZXBpcGVzW0FUSDEwS19VU0JfUElQRV9SWF9EQVRBXSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwOTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDk4OiNkZWZpbmUgYXRoMTBrX3VzYl9wbV9zdXNwZW5kIE5VTExcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwOTk6I2RlZmluZSBhdGgxMGtfdXNiX3BtX3Jlc3VtZSBOVUxMXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTAwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTAzLS8qIHRhYmxlIG9mIGRldmljZXMgdGhhdCB3b3JrIHdpdGggdGhpcyBkcml2ZXIgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMDQ6c3RhdGljIHN0cnVjdCB1c2JfZGV2aWNlX2lkIGF0aDEwa191c2JfaWRzW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTA1LVxcdHtVU0JfREVWSUNFKDB4MTNiMSwgMHgwMDQyKX0sIC8qIExpbmtzeXMgV1VTQjYxMDBNICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTExMDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTA5Ok1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBhdGgxMGtfdXNiX2lkcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTExMTpzdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgYXRoMTBrX3VzYl9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTEyOlxcdC5uYW1lID0gXFxcImF0aDEwa191c2JcXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTExMzpcXHQucHJvYmUgPSBhdGgxMGtfdXNiX3Byb2JlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTExNDpcXHQuc3VzcGVuZCA9IGF0aDEwa191c2JfcG1fc3VzcGVuZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMTU6XFx0LnJlc3VtZSA9IGF0aDEwa191c2JfcG1fcmVzdW1lLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTExNjpcXHQuZGlzY29ubmVjdCA9IGF0aDEwa191c2JfZGlzY29ubmVjdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMTc6XFx0LmlkX3RhYmxlID0gYXRoMTBrX3VzYl9pZHMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTE4LVxcdC5zdXBwb3J0c19hdXRvc3VzcGVuZCA9IHRydWUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTExMjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTIyOm1vZHVsZV91c2JfZHJpdmVyKGF0aDEwa191c2JfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTExMjMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmg6NDQ6c3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX2NtZF93cml0ZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC00NS1cXHRfX2xlMzIgY21kO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC01MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oOjUxOnN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19jbWRfcmVhZCB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC01Mi1cXHRfX2xlMzIgY21kO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC01NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oOjU2OnN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19yZXNwX3JlYWQge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtNTctXFx0dTggdmFsdWVbNF07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTYwLS8qIHR4L3J4IHBpcGVzIGZvciB1c2IgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oOjYxOmVudW0gYXRoMTBrX3VzYl9waXBlX2lkIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTYyLVxcdEFUSDEwS19VU0JfUElQRV9UWF9DVFJMID0gMCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtNzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDo3MzpzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTc0LVxcdHN0cnVjdCBsaXN0X2hlYWQgdXJiX2xpc3RfaGVhZDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtODItXFx0dTggbG9naWNhbF9waXBlX251bTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oOjgzOlxcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2I7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC04NC1cXHR1MTYgbWF4X3BhY2tldF9zaXplO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC05Mi0vKiB1c2IgZGV2aWNlIG9iamVjdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmg6OTM6c3RydWN0IGF0aDEwa191c2Ige1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtOTQtXFx0LyogcHJvdGVjdHMgcGlwZS1cXHUwMDNldXJiX2xpc3RfaGVhZCBhbmQgIHBpcGUtXFx1MDAzZXVyYl9jbnQgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtOTgtXFx0c3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oOjk5OlxcdHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgcGlwZXNbQVRIMTBLX1VTQl9QSVBFX01BWF07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC0xMDAtXFx0dTggKmRpYWdfY21kX2J1ZmZlcjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmg9MTA2PXN0cnVjdCBhdGgxMGtfdXJiX2NvbnRleHQge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtMTA3LVxcdHN0cnVjdCBsaXN0X2hlYWQgbGluaztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oOjEwODpcXHRzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtMTA5LVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTExMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oOjExMzpzdGF0aWMgaW5saW5lIHN0cnVjdCBhdGgxMGtfdXNiICphdGgxMGtfdXNiX3ByaXYoc3RydWN0IGF0aDEwayAqYXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC0xMTQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmg6MTE1OlxcdHJldHVybiAoc3RydWN0IGF0aDEwa191c2IgKilhci1cXHUwMDNlZHJ2X3ByaXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC0xMTYtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwODo0MTo0MS4yMDE1NTczNzFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1NjAyOTIyMDc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgYXRoMTBrIFVTQiBGdW5jdGlvbmFsaXR5IGFuZCBIaWdoIExhdGVuY3kgSW1wYWN0KipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGUgYGF0aDEwa2AgZHJpdmVyIGFuZCBpdHMgVVNCIGNhcGFiaWxpdGllcy4gR29vZCB0byBrbm93IGl0IGhhcyBVU0Igc3VwcG9ydCB2aWEgYENPTkZJR19BVEgxMEtfVVNCYCwgd2hpY2ggaXMgcHJldHR5IHVzZWZ1bCBiZWNhdXNlIGl0IG9wZW5zIHVwIGVtdWxhdGlvbiBwb3NzaWJpbGl0aWVzIHRocm91Z2ggVVNCIGdhZGdldCwgUmF3IEdhZGdldCwgYW5kLCBvZiBjb3Vyc2UsIHN5emthbGxlci4gU2luY2UgVVNCIGFuZCBTRElPIGRldmljZXMgb2Z0ZW4gb3BlcmF0ZSBpbiBhIGhpZ2gtbGF0ZW5jeSAoSEwpIGVudmlyb25tZW50LCBteSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBzZWUgaWYgd2UgY2FuIGFjdHVhbGx5IHJlYWNoIHRoZSBgYXRoMTBrYCdzIGBodHRfcnhgIGZ1bmN0aW9ucyB3aXRoaW4gdGhhdCBITCBjb250ZXh0LiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBwYXRocyB0byBkZXRlcm1pbmUgaWYgdGhlIGBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGxgIGZ1bmN0aW9uIGlzIGJlaW5nIGludm9rZWQgd2hlbiB0aGVzZSBoaWdoZXIgbGF0ZW5jeSBkZXZpY2VzIGFyZSBpbnRlcmFjdGluZy4gVGhpcyB3aWxsIGhvcGVmdWxseSBwcm92aWRlIGluc2lnaHQgaW50byBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIG9yIHN0YWJpbGl0eSBpc3N1ZXMgd2l0aGluIHRoYXQgc3BlY2lmaWMgc3Vic3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODE0NiwiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA4OjQxOjQ2LjgwNDQ4MTM5NVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NjY4NDczNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEwa1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jPTI3NDM9c3RhdGljIGludCBhdGgxMGtfaHR0X3J4X2ZyYWdfd2VwX2RlY2FwKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jLTI3NTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguYzoyNzU4OnN0YXRpYyBib29sIGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obChzdHJ1Y3QgYXRoMTBrX2h0dCAqaHR0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmMtMjc1OS1cXHRcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgaHR0X3J4X2ZyYWdtZW50X2luZGljYXRpb24gKnJ4LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguYz00NDkwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTBrX2h0dF9yeF9vcHMgaHR0X3J4X29wc19obCA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jOjQ0OTE6XFx0Lmh0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kID0gYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmMtNDQ5Mi19O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwODo0MTo0Ni45MDExNzEwMzlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNTQyNDQ2ODQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipUcmFjaW5nIHRoZSBVc2FnZSBvZiBgaHR0X3J4X29wc19obGAqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXaGVyZSdzIHRoaXMgYGh0dF9yeF9vcHNfaGxgIGZ1bmN0aW9uIGFjdHVhbGx5ICpkb2luZyogd29yaz9cIiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29udGV4dC4gSSBuZWVkIHRvIGtub3cgd2hhdCBjb2RlIGlzIGNhbGxpbmcgaXQgYW5kIHdoeS4gSXMgaXQgcGFydCBvZiB0aGUgZGF0YSBwYXRoLCBjb250cm9sIHBsYW5lLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBzaXRlcyBpcyB0aGUga2V5IHRvIGZpZ3VyaW5nIG91dCBpdHMgZnVuY3Rpb24gYW5kIGl0cyByb2xlIGluIHRoZSBzeXN0ZW0uIEknbGwgc3RhcnQgYnkgbG9va2luZyBmb3IgZGlyZWN0IHVzYWdlcyBhbmQgdGhlbiB3b3JrIG15IHdheSB1cCB0aGUgY2FsbCBzdGFjayB0byBzZWUgd2hlcmUgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUuIExldCdzIHNlZSB3aGF0IHRoZSBjb2RlIGhhcyB0byBzaG93IG1lLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODgwNiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA4OjQxOjQ5LjQ0MzYyMDQ2OVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDkyNzI4MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJodHRfcnhfb3BzX2hsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguYz00NDgyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTBrX2h0dF9yeF9vcHMgaHR0X3J4X29wc182NCA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmMtNDQ4OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jOjQ0OTA6c3RhdGljIGNvbnN0IHN0cnVjdCBhdGgxMGtfaHR0X3J4X29wcyBodHRfcnhfb3BzX2hsID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmMtNDQ5MS1cXHQuaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmQgPSBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGwsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jPTQ0OTQ9dm9pZCBhdGgxMGtfaHR0X3NldF9yeF9vcHMoc3RydWN0IGF0aDEwa19odHQgKmh0dClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmMtNDQ5OC1cXHRpZiAoYXItXFx1MDAzZWJ1c19wYXJhbS5kZXZfdHlwZSA9PSBBVEgxMEtfREVWX1RZUEVfSEwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguYzo0NDk5OlxcdFxcdGh0dC1cXHUwMDNlcnhfb3BzID0gXFx1MDAyNmh0dF9yeF9vcHNfaGw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguYy00NTAwLVxcdGVsc2UgaWYgKGFyLVxcdTAwM2Vod19wYXJhbXMudGFyZ2V0XzY0Yml0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwODo0MTo0OS41MDg1NTE4NjJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NDMxOTQ0OTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQVRIMTBLIEhpZ2ggTGF0ZW5jeSBSWCBGcmFnbWVudCBJbmRpY2F0b3IqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgaHVuY2ggaXMgdGhhdCBgYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsYCBpcyBzcGVjaWZpY2FsbHkgZW1wbG95ZWQgd2l0aGluIHRoZSBcIkhpZ2ggTGF0ZW5jeVwiIGRldmljZSBjb250ZXh0LCB3aGljaCwgZnJvbSBteSBleHBlcmllbmNlLCBlbmNvbXBhc3NlcyBVU0IgYW5kIFNESU8gaW1wbGVtZW50YXRpb25zLCBjaGFyYWN0ZXJpemVkIGJ5IHRob3NlIGhpZ2hlciBsYXRlbmNpZXMuIEdpdmVuIHRoYXQsIEkgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBleGFjdCBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoaXMgZnVuY3Rpb24gaXMgaW52b2tlZC4gVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHRyYWNlIGNhbGxzIHRvIGBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGxgIGJ5IGV4YW1pbmluZyB0aGUgYGh0dC1cdTAwM2VyeF9vcHMtXHUwMDNlaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRgIHN0cnVjdHVyZS4gVGhpcyB3aWxsIHJldmVhbCB0aGUgY2FsbGluZyBjb250ZXh0IGFuZCBwb3RlbnRpYWxseSBlbHVjaWRhdGUgdGhlIHRyaWdnZXJzIHRoYXQgbGVhZCB0byBpdHMgZXhlY3V0aW9uIHdpdGhpbiB0aGUgYnJvYWRlciBgYXRoMTBrYCByZWNlaXZlIHBhdGgsIHBhcnRpY3VsYXJseSBmb3IgdGhvc2UgaGlnaGVyIGxhdGVuY3kgY29uZmlndXJhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5MzkzLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA4OjQxOjUzLjk0MDUwMTUzOFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjY3MjYwNDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEwa1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dC5oPTIwMTk9c3RydWN0IGF0aDEwa19odHRfcnhfb3BzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0LmgtMjAyNS1cXHR2b2lkICgqaHR0X3Jlc2V0X3BhZGRyc19yaW5nKShzdHJ1Y3QgYXRoMTBrX2h0dCAqaHR0LCBpbnQgaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dC5oOjIwMjY6XFx0Ym9vbCAoKmh0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kKShzdHJ1Y3QgYXRoMTBrX2h0dCAqaHR0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0LmgtMjAyNy1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgaHR0X3J4X2ZyYWdtZW50X2luZGljYXRpb24gKnJ4LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHQuaD0yMDYyPXN0YXRpYyBpbmxpbmUgdm9pZCBhdGgxMGtfaHR0X3Jlc2V0X3BhZGRyc19yaW5nKHN0cnVjdCBhdGgxMGtfaHR0ICpodHQsIGludCBpZHgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dC5oLTIwNjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHQuaDoyMDY4OnN0YXRpYyBpbmxpbmUgYm9vbCBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmQoc3RydWN0IGF0aDEwa19odHQgKmh0dCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dC5oLTIwNjktXFx0XFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgaHR0X3J4X2ZyYWdtZW50X2luZGljYXRpb24gKnJ4LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHQuaC0yMDcxLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dC5oOjIwNzI6XFx0aWYgKCFodHQtXFx1MDAzZXJ4X29wcy1cXHUwMDNlaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHQuaC0yMDczLVxcdFxcdHJldHVybiB0cnVlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0LmgtMjA3NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dC5oOjIwNzU6XFx0cmV0dXJuIGh0dC1cXHUwMDNlcnhfb3BzLVxcdTAwM2VodHRfcnhfcHJvY19yeF9mcmFnX2luZChodHQsIHJ4LCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0LmgtMjA3Ni19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jPTI3NDM9c3RhdGljIGludCBhdGgxMGtfaHR0X3J4X2ZyYWdfd2VwX2RlY2FwKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jLTI3NTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguYzoyNzU4OnN0YXRpYyBib29sIGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obChzdHJ1Y3QgYXRoMTBrX2h0dCAqaHR0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmMtMjc1OS1cXHRcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgaHR0X3J4X2ZyYWdtZW50X2luZGljYXRpb24gKnJ4LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguYz00MTA1PWJvb2wgYXRoMTBrX2h0dF90MmhfbXNnX2hhbmRsZXIoc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jLTQyMjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguYzo0MjIxOlxcdFxcdHJldHVybiBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmQoaHR0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmMtNDIyMi1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICBcXHUwMDI2cmVzcC1cXHUwMDNlcnhfZnJhZ19pbmQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jPTQ0OTA9c3RhdGljIGNvbnN0IHN0cnVjdCBhdGgxMGtfaHR0X3J4X29wcyBodHRfcnhfb3BzX2hsID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmM6NDQ5MTpcXHQuaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmQgPSBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGwsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguYy00NDkyLX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA4OjQxOjU0LjAwNzIzMjc5M1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3NTQ0NTIwMjQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IERlZXAgRGl2ZSBpbnRvIGF0aDEwaydzIE1lc3NhZ2UgSGFuZGxpbmcgYW5kIERlYnVnZ2luZyoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGUgYXRoMTBrIGRyaXZlciBhZ2Fpbiwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIGhvdyBpdCBtYW5hZ2VzIGNvbW11bmljYXRpb24gd2l0aCB0aGUgZmlybXdhcmUuICBJJ20gdHJhY2tpbmcgdGhlIHBhdGggb2YgbWVzc2FnZXMgKmZyb20qIHRoZSBkZXZpY2UsICp0byogdGhlIGhvc3QuICBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgYGF0aDEwa19odHRfdDJoX21zZ19oYW5kbGVyYCBpcyB0aGUgY3J1Y2lhbCBmdW5jdGlvbiBoZXJlLCBkZWFsaW5nIHdpdGggdGhlIHRhcmdldC10by1ob3N0IG1lc3NhZ2VzLiAgRXNzZW50aWFsbHksIGl0J3MgdGhlIGNlbnRyYWwgcG9pbnQgd2hlcmUgdGhlIGRyaXZlciBwcm9jZXNzZXMgZGF0YSBjb21pbmcgZnJvbSB0aGUgZmlybXdhcmUgb3ZlciB0aGUgVVNCLCBTRElPLCBvciBQQ0kgaW50ZXJmYWNlcyDigJMgdGhlIHByaW1hcnkgY29tbXVuaWNhdGlvbiBjaGFubmVscy5cblxuTm93LCB3aGVyZSBkbyB0aGVzZSBtZXNzYWdlcyAqY29tZSBmcm9tKj8gQWgsIHllcywgYGF0aDEwa191c2JfcnhfY29tcGxldGVgIGluIGB1c2IuY2AhIEl0J3MgdGhlIHJlY2VpdmVyIGZ1bmN0aW9uLiBUaGlzIGZ1bmN0aW9uIHJlY2VpdmVzIHRoZSBTS0JzIGZyb20gdGhlIFVTQiBlbmRwb2ludHMgYW5kIHRoZW4gaGFuZHMgdGhlbSBkaXJlY3RseSBvZmYgdG8gYGF0aDEwa19odHRfdDJoX21zZ19oYW5kbGVyYCBmb3IgcHJvY2Vzc2luZy4gVGhhdCdzIGEgY2xlYW4gaGFuZG92ZXIuXG5cbkkgYWxzbyB3YW50IHRvIGV4cGxvcmUgdGhlIGRlYnVnIGZhY2lsaXRpZXMuIGBkZWJ1Zy5jYCBzaG91bGQgaG9sZCB0aGUga2V5cyB0byB1bmRlcnN0YW5kaW5nIGFuZCBwb3RlbnRpYWxseSBtb2RpZnlpbmcgdGhlIGRyaXZlcidzIGludGVybmFscy4gTGV0J3MgZGlnIGluIGFuZCBzZWUuIFJpZ2h0IG5vdywgSSdtIHRoaW5raW5nIGFib3V0IHRob3NlIGRlYnVnZnMgZmlsZSBvcGVyYXRpb25zIC0gYGF0aDEwa19yZWdfdmFsdWVfd3JpdGVgIGFuZCBgYXRoMTBrX21lbV92YWx1ZV93cml0ZWAuIFRoZXNlIHNvdW5kIGxpa2UgY3JpdGljYWwgdG9vbHMgZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcgcmVnaXN0ZXIgYW5kIG1lbW9yeSB2YWx1ZXMgZGlyZWN0bHksIHdoaWNoIGFyZSBpbnZhbHVhYmxlIGZvciBkZWJ1Z2dpbmcgYW5kIGZpbmUtdHVuaW5nIHRoZSBkcml2ZXIncyBiZWhhdmlvci4gVGltZSB0byBvcGVuIGBkZWJ1Zy5jYCBhbmQgZ2V0IG15IGhhbmRzIGRpcnR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDc0NiwiT3V0cHV0VG9rZW5zIjo1MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwODo0MjowMS41NTE3NTc4MTRaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk1MjE4MTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDEwa19yZWdfdmFsdWVfd3JpdGV8YXRoMTBrX21lbV92YWx1ZV93cml0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYz02ODM9c3RhdGljIHNzaXplX3QgYXRoMTBrX3JlZ192YWx1ZV9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jLTcxMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmM6NzE0OnN0YXRpYyBzc2l6ZV90IGF0aDEwa19yZWdfdmFsdWVfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jLTcxNS1cXHRcXHRcXHRcXHQgICAgICBjb25zdCBjaGFyIF9fdXNlciAqdXNlcl9idWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmM9NzUzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfcmVnX3ZhbHVlID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy03NTQtXFx0LnJlYWQgPSBhdGgxMGtfcmVnX3ZhbHVlX3JlYWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jOjc1NTpcXHQud3JpdGUgPSBhdGgxMGtfcmVnX3ZhbHVlX3dyaXRlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy03NTYtXFx0Lm9wZW4gPSBzaW1wbGVfb3BlbixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYz03NjE9c3RhdGljIHNzaXplX3QgYXRoMTBrX21lbV92YWx1ZV9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jLTgxMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmM6ODEzOnN0YXRpYyBzc2l6ZV90IGF0aDEwa19tZW1fdmFsdWVfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jLTgxNC1cXHRcXHRcXHRcXHQgICAgICBjb25zdCBjaGFyIF9fdXNlciAqdXNlcl9idWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmM9ODc3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfbWVtX3ZhbHVlID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy04NzgtXFx0LnJlYWQgPSBhdGgxMGtfbWVtX3ZhbHVlX3JlYWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jOjg3OTpcXHQud3JpdGUgPSBhdGgxMGtfbWVtX3ZhbHVlX3dyaXRlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy04ODAtXFx0Lm9wZW4gPSBzaW1wbGVfb3BlbixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDg6NDI6MDEuNjQ4ODE3MTc4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjc0NDI1NDQ0MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGVidWdnaW5nIHRoZSBhdGgxMGsgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgYGF0aDEwa2AgaXNzdWUuIE15IGZpcnN0IGluc3RpbmN0LCBnaXZlbiB0aGUgbmF0dXJlIG9mIHRoZXNlIHByb2JsZW1zLCBpcyB0byBzdGFydCB3aXRoIHRoZSBkZWJ1ZyByZWdpc3RlcnMgYW5kIGNyZWF0aW9uIHByb2Nlc3Nlcy4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0J3MgZ29pbmcgb24gYXQgdGhlIGxvd2VzdCBsZXZlbC4gTGV0J3Mgc3RhcnQgYnkgc2NydXRpbml6aW5nIHRoZSBgYXRoMTBrX2RlYnVnX3JlZ2lzdGVyYCBmdW5jdGlvbiwgdG8gc2VlIGhvdyB0aGUgZGVidWcgbWVjaGFuaXNtcyBhcmUgc2V0IHVwIGluaXRpYWxseS4gSSdtIHdvbmRlcmluZyBpZiB0aGVyZSdzIGFuIGlzc3VlIHdpdGggdGhlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzIGl0c2VsZiwgbWF5YmUgc29tZXRoaW5nIHJlbGF0ZWQgdG8gaG93IHRoZSBkZWJ1ZyBpbmZyYXN0cnVjdHVyZSBpcyBleHBvc2VkIHRvIHRoZSB1c2VyIHNwYWNlIG9yIGhvdyB0aGUgcmVnaXN0ZXJzIGFyZSBnZXR0aW5nIGluaXRpYWxpemVkLiBBbHRlcm5hdGl2ZWx5LCB0aGUgYGF0aDEwa19kZWJ1Z19jcmVhdGVgIGZ1bmN0aW9uIG1pZ2h0IGJlIG1vcmUgcmVsZXZhbnQuIFBlcmhhcHMgc29tZXRoaW5nIGlzbid0IGJlaW5nIHByb3Blcmx5IGluaXRpYWxpemVkLCBvciBtYXliZSB0aGVyZSBpcyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBjcmVhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBhIHJlbGF0ZWQgb2JqZWN0LiBGcm9tIHRoaXMsIEkgd2lsbCBtb3ZlIHRvIGZ1cnRoZXIgYWN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE4NjEsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwODo0MjowOS4wOTEzNjQzODlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNjAyOTE0MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmb3BzX3JlZ192YWx1ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYz03MTQ9c3RhdGljIHNzaXplX3QgYXRoMTBrX3JlZ192YWx1ZV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy03NTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jOjc1MzpzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzX3JlZ192YWx1ZSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmMtNzU0LVxcdC5yZWFkID0gYXRoMTBrX3JlZ192YWx1ZV9yZWFkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jPTI1NDQ9aW50IGF0aDEwa19kZWJ1Z19yZWdpc3RlcihzdHJ1Y3QgYXRoMTBrICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy0yNTc2LVxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXFxcInJlZ192YWx1ZVxcXCIsIDA2MDAsIGFyLVxcdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSwgYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jOjI1Nzc6XFx0XFx0XFx0ICAgIFxcdTAwMjZmb3BzX3JlZ192YWx1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jLTI1NzgtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA4OjQyOjA5LjE5NzM5NzQ0MloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyODkwMjg3Njg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipLY29uZmlnLCBhdGgxMGssIERlYnVnZnMsIGFuZCBVU0Ig4oCTIFRpbWUgdG8gQ29ubmVjdCB0aGUgRG90cyoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW4uIEknbSB0aGlua2luZyBhYm91dCBob3cgdGhlIGNvbmZpZ3VyYXRpb24gbGFuZHNjYXBlIGludGVyc2VjdHMgd2l0aCB0aGUgcGllY2VzIEknbSB3b3JraW5nIHdpdGggcmlnaHQgbm93LiBGaXJzdCBhbmQgZm9yZW1vc3QsIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGNvcmUgYXRoMTBrIHN1cHBvcnQgaXMgcHJvcGVybHkgZW5hYmxlZCBpbiBLY29uZmlnLiBUaGlzIGlzIHRoZSBmb3VuZGF0aW9uOyB3aXRob3V0IHRoYXQsIG5vdGhpbmcgZWxzZSBtYXR0ZXJzLiBJIG5lZWQgdG8gc3BlY2lmaWNhbGx5IGxvb2sgZm9yIHRoZSBhdGgxMGsgb3B0aW9ucywgYnV0IEkgYWxzbyBuZWVkIHRvIGJlIGNlcnRhaW4gYWJvdXQgdGhlIGRlcGVuZGVuY2llcyB0b28gLSB3aGljaCBJIHVzdWFsbHkgY2hlY2sgYXMgYSBtYXR0ZXIgb2YgaGFiaXQuXG5cblRoZW4sIEknbSB0aGlua2luZyBhYm91dCBkZWJ1Z2ZzLiBJcyBpdCBwcm9wZXJseSBjb25maWd1cmVkIGZvciBteSB0YXJnZXQ/IElzIGl0IGVuYWJsZWQ/IEknbGwgcHJvYmFibHkgbmVlZCBpdCB0byBwcm9iZSB0aGUgZmlybXdhcmUgbG9hZGluZywgZGV2aWNlIHN0YXRlLCBhbmQgb3ZlcmFsbCBvcGVyYXRpb24uIEknbSBhc3N1bWluZyB0aGF0IGl0IGlzIGVuYWJsZWQsIGJ1dCBJIHNob3VsZCB2ZXJpZnkgdGhhdC4gSSd2ZSBiZWVuIGJ1cm5lZCBieSBhc3N1bWluZyBiZWZvcmUhXG5cbkZpbmFsbHksIHRoZSBVU0IgY29ubmVjdGlvbiBpcyBpbiB0aGUgcGljdHVyZS4gVGhpcyBpcyBsaWtlbHkgaG93IEknbSBpbnRlcmFjdGluZyB3aXRoIHRoZSBoYXJkd2FyZS4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gZW5zdXJlIHRoZSBVU0IgaG9zdCBhbmQgZGV2aWNlIGRyaXZlcnMgYXJlIGNvcnJlY3RseSBzZXQgdXAgYW5kIGNvbmZpZ3VyZWQuIFRoaXMgZW5jb21wYXNzZXMgdGhlIHdob2xlIFVTQiBzdGFjayB0b28sIGluY2x1ZGluZyB0aGUgVVNCIHN1YnN5c3RlbS4gSXQncyBvZnRlbiB0aGUgYm90dGxlbmVjaywgc28gSSBuZWVkIHRvIGFudGljaXBhdGUgdGhvc2UgcG90ZW50aWFsIHByb2JsZW1zLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBzeXN0ZW0gcmVjb2duaXplcyB0aGUgaGFyZHdhcmUuIEl0J3MgdGltZSB0byBjb3JyZWxhdGUgdGhlc2UgaXRlbXMgdG8gZ2V0IHRoZSB3aG9sZSBzeXN0ZW0gd29ya2luZy5cblxuRXNzZW50aWFsbHksIEknbSBtZW50YWxseSBsYXlpbmcgb3V0IHRoZSBzdGVwcyBhbmQgY29uZmlybWluZyBteSBhc3N1bXB0aW9ucyB0byBhdm9pZCBhbnkgd2FzdGVkIHRpbWUgbGF0ZXIuIEEgcXVpY2sgS2NvbmZpZyBjaGVjayBpcyBhbHdheXMgYSBzbWFydCBzdGFydGluZyBwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI0MzcsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwODo0MjoxMi4wODc2ODc2MloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTc3NjMyMTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEFUSDEwS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzoyOmNvbmZpZyBBVEgxMEtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiQXRoZXJvcyA4MDIuMTFhYyB3aXJlbGVzcyBjYXJkcyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzoxNTpjb25maWcgQVRIMTBLX0NFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTE2LVxcdGJvb2xcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctMTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnOjE4OmNvbmZpZyBBVEgxMEtfUENJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTE5LVxcdHRyaXN0YXRlIFxcXCJBdGhlcm9zIGF0aDEwayBQQ0kgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy0yMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWc6MjQ6Y29uZmlnIEFUSDEwS19BSEJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctMjUtXFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGgxMGsgQUhCIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctMjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnOjMwOmNvbmZpZyBBVEgxMEtfU0RJT1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy0zMS1cXHR0cmlzdGF0ZSBcXFwiQXRoZXJvcyBhdGgxMGsgU0RJTyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTM1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzozNjpjb25maWcgQVRIMTBLX1VTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy0zNy1cXHR0cmlzdGF0ZSBcXFwiQXRoZXJvcyBhdGgxMGsgVVNCIHN1cHBvcnQgKEVYUEVSSU1FTlRBTClcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctNDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnOjQzOmNvbmZpZyBBVEgxMEtfU05PQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy00NC1cXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gYXRoMTBrIFNOT0Mgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy01NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWc6NTY6Y29uZmlnIEFUSDEwS19ERUJVR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy01Ny1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDEwayBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctNjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnOjY0OmNvbmZpZyBBVEgxMEtfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy02NS1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDEwayBkZWJ1Z2ZzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctNzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnOjcyOmNvbmZpZyBBVEgxMEtfTEVEU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy03My1cXHRib29sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctNzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnOjc4OmNvbmZpZyBBVEgxMEtfU1BFQ1RSQUxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctNzktXFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGgxMGsgc3BlY3RyYWwgc2NhbiBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTg1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzo4Njpjb25maWcgQVRIMTBLX1RSQUNJTkdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctODctXFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGgxMGsgdHJhY2luZyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTkyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzo5Mzpjb25maWcgQVRIMTBLX0RGU19DRVJUSUZJRURcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctOTQtXFx0Ym9vbCBcXFwiQXRoZXJvcyBERlMgc3VwcG9ydCBmb3IgY2VydGlmaWVkIHBsYXRmb3Jtc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDg6NDI6MTIuMTg1NDU1MDk1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjc1NTMyMTA5MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUgd2UgZ28uIExldCdzIGRpdmUgaW4gYW5kIGRpc3NlY3QgdGhpcyBLY29uZmlnIGZpbGUgZm9yIEFUSDEwS19VU0IgYW5kIEFUSDEwS19ERUJVR0ZTIHdpdGhpbiB0aGUgYXRoMTBrIGRyaXZlci5cbioqRXhhbWluaW5nIHRoZSBBVEgxMEsgS2NvbmZpZyBPcHRpb25zKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgaW50byB0aGUgbml0dHktZ3JpdHR5LiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgZ29pbmcgb3ZlciB0aGUgZnVsbCBLY29uZmlnIGZpbGUgZm9yIEFUSDEwS19VU0IgYW5kIEFUSDEwS19ERUJVR0ZTLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGVzZSBvcHRpb25zIGFyZSBzdHJ1Y3R1cmVkLCB3aGF0IGRlcGVuZGVuY2llcyB0aGV5IGhhdmUsIGFuZCBob3cgdGhleSByZWxhdGUgdG8gdGhlIGJyb2FkZXIgQVRIMTBLIGZyYW1ld29yay4gSSdsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZTpcblxuKiAgICoqRGVwZW5kZW5jaWVzOioqIFdoYXQgb3RoZXIgS2NvbmZpZyBzeW1ib2xzIG5lZWQgdG8gYmUgZW5hYmxlZCBmb3IgdGhlc2UgdG8gZXZlbiBzaG93IHVwPyBBcmUgdGhleSBkZXBlbmRlbnQgb24gc3BlY2lmaWMgVVNCIGRyaXZlciBjb25maWd1cmF0aW9ucyBvciBkZWJ1Z2dpbmcgb3B0aW9ucz9cbiogICAqKkRlZmF1bHQgVmFsdWVzOioqIFdoYXQncyB0aGUgZGVmYXVsdCBiZWhhdmlvcj8gQXJlIHRoZXkgZW5hYmxlZCBieSBkZWZhdWx0LCBvciBkaXNhYmxlZD8gVW5kZXJzdGFuZGluZyB0aGUgZGVmYXVsdHMgdGVsbHMgbWUgd2hhdCB0aGUgZGV2ZWxvcGVycyBwcmlvcml0aXplZC5cbiogICAqKkhlbHAgVGV4dDoqKiBUaGUgaGVscCB0ZXh0IGlzLCBvZiBjb3Vyc2UsIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgaW50ZW50IG9mIHRoZSBvcHRpb25zLiBJJ2xsIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGRlc2NyaXB0aW9ucyB0byBzZWUgd2hhdCBmZWF0dXJlcyBvciBkZWJ1Z2dpbmcgY2FwYWJpbGl0aWVzIHRoZXNlIEtjb25maWcgc3ltYm9scyBhY3R1YWxseSBhY3RpdmF0ZS5cbiogICAqKkNvbmRpdGlvbmFsIExvZ2ljOioqIEFyZSB0aGVyZSBhbnkgY29tcGxleCBgaWZgIHN0YXRlbWVudHMgb3IgYm9vbGVhbiBsb2dpYyB0aGF0IGdvdmVybnMgd2hlbiB0aGVzZSBvcHRpb25zIGFyZSBhdmFpbGFibGU/IFRoaXMgd2lsbCBzaG93IGhvdyBjb25maWd1cmFibGUgdGhlIGRyaXZlcnMgYXJlLlxuKiAgICoqSW1wbGljYXRpb25zOioqIFdoYXQgYXJlIHRoZSB0cmFkZS1vZmZzIG9mIGVuYWJsaW5nIG9yIGRpc2FibGluZyB0aGVzZSBvcHRpb25zPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBpbXBhY3RzIG9uIGtlcm5lbCBzaXplLCByZXNvdXJjZSB1c2FnZSwgb3IgcGVyZm9ybWFuY2UgdGhhdCBJIHNob3VsZCBiZSBhd2FyZSBvZj9cblxuTXkgZ29hbCBpcyB0byB0aG9yb3VnaGx5IGFuYWx5emUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIEFUSDEwSyBVU0IgZHJpdmVyLiBJdCB3aWxsIGdpdmUgbWUgYSBkZWVwIGluc2lnaHQgaW50byBob3cgdGhlIGRyaXZlcnMgYXJlIGJ1aWx0IGFuZCB3aGF0IGZlYXR1cmVzIGFyZSBhdmFpbGFibGUgZm9yIHRoZXNlIGRldmljZXMsIGFuZCBob3cgdG8gY29uZmlndXJlIHRoZW0gZm9yIGRpZmZlcmVudCB1c2UgY2FzZXMuIEl0J3MgYSBmdW5kYW1lbnRhbCBwYXJ0IG9mIHJlYWxseSB1bmRlcnN0YW5kaW5nIGhvdyB0byB3b3JrIHdpdGggdGhpcyBkcml2ZXIgYW5kIG1ha2UgdGhlIG1vc3Qgb2YgaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzOTEwLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDg6NDI6MTkuNzM4NjcwMzA0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMjY3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcXG4gICAyOlxcdGNvbmZpZyBBVEgxMEtcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJBdGhlcm9zIDgwMi4xMWFjIHdpcmVsZXNzIGNhcmRzIHN1cHBvcnRcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExIFxcdTAwMjZcXHUwMDI2IEhBU19ETUFcXG4gICA1OlxcdFxcdHNlbGVjdCBBVEhfQ09NTU9OXFxuICAgNjpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gICA3OlxcdFxcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxcbiAgIDg6XFx0XFx0c2VsZWN0IEFUSDEwS19DRVxcbiAgIDk6XFx0XFx0aGVscFxcbiAgMTA6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uXFxuICAxMTpcXHRcXHQgIEF0aGVyb3MgSUVFRSA4MDIuMTFhYyBmYW1pbHkgb2YgY2hpcHNldHMuXFxuICAxMjpcXHRcXG4gIDEzOlxcdFxcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQnbGwgYmUgY2FsbGVkIGF0aDEway5cXG4gIDE0OlxcdFxcbiAgMTU6XFx0Y29uZmlnIEFUSDEwS19DRVxcbiAgMTY6XFx0XFx0Ym9vbFxcbiAgMTc6XFx0XFxuICAxODpcXHRjb25maWcgQVRIMTBLX1BDSVxcbiAgMTk6XFx0XFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgYXRoMTBrIFBDSSBzdXBwb3J0XFxcIlxcbiAgMjA6XFx0XFx0ZGVwZW5kcyBvbiBBVEgxMEsgXFx1MDAyNlxcdTAwMjYgUENJXFxuICAyMTpcXHRcXHRoZWxwXFxuICAyMjpcXHRcXHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3IgUENJRSBidXNcXG4gIDIzOlxcdFxcbiAgMjQ6XFx0Y29uZmlnIEFUSDEwS19BSEJcXG4gIDI1OlxcdFxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoMTBrIEFIQiBzdXBwb3J0XFxcIlxcbiAgMjY6XFx0XFx0ZGVwZW5kcyBvbiBBVEgxMEtfUENJIFxcdTAwMjZcXHUwMDI2IE9GIFxcdTAwMjZcXHUwMDI2IFJFU0VUX0NPTlRST0xMRVJcXG4gIDI3OlxcdFxcdGhlbHBcXG4gIDI4OlxcdFxcdCAgVGhpcyBtb2R1bGUgYWRkcyBzdXBwb3J0IGZvciBBSEIgYnVzXFxuICAyOTpcXHRcXG4gIDMwOlxcdGNvbmZpZyBBVEgxMEtfU0RJT1xcbiAgMzE6XFx0XFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgYXRoMTBrIFNESU8gc3VwcG9ydFxcXCJcXG4gIDMyOlxcdFxcdGRlcGVuZHMgb24gQVRIMTBLIFxcdTAwMjZcXHUwMDI2IE1NQ1xcbiAgMzM6XFx0XFx0aGVscFxcbiAgMzQ6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIFNESU8vTU1DIGJ1cy5cXG4gIDM1OlxcdFxcbiAgMzY6XFx0Y29uZmlnIEFUSDEwS19VU0JcXG4gIDM3OlxcdFxcdHRyaXN0YXRlIFxcXCJBdGhlcm9zIGF0aDEwayBVU0Igc3VwcG9ydCAoRVhQRVJJTUVOVEFMKVxcXCJcXG4gIDM4OlxcdFxcdGRlcGVuZHMgb24gQVRIMTBLIFxcdTAwMjZcXHUwMDI2IFVTQlxcbiAgMzk6XFx0XFx0aGVscFxcbiAgNDA6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIGV4cGVyaW1lbnRhbCBzdXBwb3J0IGZvciBVU0IgYnVzLiBDdXJyZW50bHlcXG4gIDQxOlxcdFxcdCAgd29yayBpbiBwcm9ncmVzcyBhbmQgd2lsbCBub3QgZnVsbHkgd29yay5cXG4gIDQyOlxcdFxcbiAgNDM6XFx0Y29uZmlnIEFUSDEwS19TTk9DXFxuICA0NDpcXHRcXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gYXRoMTBrIFNOT0Mgc3VwcG9ydFxcXCJcXG4gIDQ1OlxcdFxcdGRlcGVuZHMgb24gQVRIMTBLXFxuICA0NjpcXHRcXHRkZXBlbmRzIG9uIEFSQ0hfUUNPTSB8fCBDT01QSUxFX1RFU1RcXG4gIDQ3OlxcdFxcdGRlcGVuZHMgb24gUUNPTV9TTUVNXFxuICA0ODpcXHRcXHRkZXBlbmRzIG9uIFFDT01fUlBST0NfQ09NTU9OIHx8IFFDT01fUlBST0NfQ09NTU9OPW5cXG4gIDQ5OlxcdFxcdHNlbGVjdCBQT1dFUl9TRVFVRU5DSU5HXFxuICA1MDpcXHRcXHRzZWxlY3QgUUNPTV9TQ01cXG4gIDUxOlxcdFxcdHNlbGVjdCBRQ09NX1FNSV9IRUxQRVJTXFxuICA1MjpcXHRcXHRoZWxwXFxuICA1MzpcXHRcXHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3IgaW50ZWdyYXRlZCBXQ04zOTkwIGNoaXAgY29ubmVjdGVkXFxuICA1NDpcXHRcXHQgIHRvIHN5c3RlbSBOT0MoU05PQykuXFxuICA1NTpcXHRcXG4gIDU2OlxcdGNvbmZpZyBBVEgxMEtfREVCVUdcXG4gIDU3OlxcdFxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoMTBrIGRlYnVnZ2luZ1xcXCJcXG4gIDU4OlxcdFxcdGRlcGVuZHMgb24gQVRIMTBLXFxuICA1OTpcXHRcXHRoZWxwXFxuICA2MDpcXHRcXHQgIEVuYWJsZXMgZGVidWcgc3VwcG9ydFxcbiAgNjE6XFx0XFxuICA2MjpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IFkgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZGVidWcgcHJvYmxlbXMuXFxuICA2MzpcXHRcXG4gIDY0OlxcdGNvbmZpZyBBVEgxMEtfREVCVUdGU1xcbiAgNjU6XFx0XFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGgxMGsgZGVidWdmcyBzdXBwb3J0XFxcIlxcbiAgNjY6XFx0XFx0ZGVwZW5kcyBvbiBBVEgxMEsgXFx1MDAyNlxcdTAwMjYgREVCVUdfRlNcXG4gIDY3OlxcdFxcdGhlbHBcXG4gIDY4OlxcdFxcdCAgRW5hYmxlZCBkZWJ1Z2ZzIHN1cHBvcnRcXG4gIDY5OlxcdFxcbiAgNzA6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBZIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRlYnVnIHByb2JsZW1zLlxcbiAgNzE6XFx0XFxuICA3MjpcXHRjb25maWcgQVRIMTBLX0xFRFNcXG4gIDczOlxcdFxcdGJvb2xcXG4gIDc0OlxcdFxcdGRlcGVuZHMgb24gQVRIMTBLXFxuICA3NTpcXHRcXHRkZXBlbmRzIG9uIExFRFNfQ0xBU1M9eSB8fCBMRURTX0NMQVNTPU1BQzgwMjExXFxuICA3NjpcXHRcXHRkZWZhdWx0IHlcXG4gIDc3OlxcdFxcbiAgNzg6XFx0Y29uZmlnIEFUSDEwS19TUEVDVFJBTFxcbiAgNzk6XFx0XFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGgxMGsgc3BlY3RyYWwgc2NhbiBzdXBwb3J0XFxcIlxcbiAgODA6XFx0XFx0ZGVwZW5kcyBvbiBBVEgxMEtfREVCVUdGU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwODo0MjoxOS43Mzg4MDUyMzRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTgyNDMyNzgxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIEJ1aWxkIFByb2Nlc3MqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0J3MgYWN0dWFsbHkgaGFwcGVuaW5nIGR1cmluZyB0aGUgYnVpbGQuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gZGl2ZSBzdHJhaWdodCBpbnRvIHRoZSBgTWFrZWZpbGVgLiBUaGF0J3Mgd2hlcmUgYWxsIHRoZSBvcmNoZXN0cmF0aW9uIGhhcHBlbnMsIHJpZ2h0PyBJdCdzIHRoZSBjZW50cmFsIGh1YiBmb3IgZGVmaW5pbmcgZGVwZW5kZW5jaWVzIGFuZCBjb21tYW5kcy4gSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgd2hpY2ggZmlsZXMgYXJlIGJlaW5nIGNvbXBpbGVkLCBsaW5rZWQsIG9yIG90aGVyd2lzZSBwcm9jZXNzZWQuIFVuZGVyc3RhbmRpbmcgdGhpcyB3aWxsIGdpdmUgbWUgYSBzb2xpZCBwaWN0dXJlIG9mIHRoZSBlbnRpcmUgYnVpbGQgcHJvY2Vzcy4gSSdtIGdvaW5nIHRvIGxvb2sgZm9yIHRoZSBrZXkgdGFyZ2V0cyBhbmQgdGhlaXIgYXNzb2NpYXRlZCBydWxlcyB0byB0cmFjZSB0aGUgZmxvdy4gVGhpcyBpcyBmdW5kYW1lbnRhbCBmb3IgZGlhZ25vc2luZyBhbnkgcG90ZW50aWFsIGJ1aWxkIGlzc3VlcyBvciBpbmVmZmljaWVuY2llcywgYW5kIHRvIGltcHJvdmUgbXkgb3ZlcmFsbCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBidWlsZCBzZXR1cC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU0NDcsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA4OjQyOjIxLjU2MzEzNzE2N1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDQ0MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9NYWtlZmlsZVwiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xcbiAgIDI6XFx0b2JqLSQoQ09ORklHX0FUSDEwSykgKz0gYXRoMTBrX2NvcmUub1xcbiAgIDM6XFx0YXRoMTBrX2NvcmUteSArPSBtYWMubyBcXFxcXFxuICAgNDpcXHRcXHRcXHQgZGVidWcubyBcXFxcXFxuICAgNTpcXHRcXHRcXHQgY29yZS5vIFxcXFxcXG4gICA2OlxcdFxcdFxcdCBodGMubyBcXFxcXFxuICAgNzpcXHRcXHRcXHQgaHR0Lm8gXFxcXFxcbiAgIDg6XFx0XFx0XFx0IGh0dF9yeC5vIFxcXFxcXG4gICA5OlxcdFxcdFxcdCBodHRfdHgubyBcXFxcXFxuICAxMDpcXHRcXHRcXHQgdHhyeC5vIFxcXFxcXG4gIDExOlxcdFxcdFxcdCB3bWkubyBcXFxcXFxuICAxMjpcXHRcXHRcXHQgd21pLXRsdi5vIFxcXFxcXG4gIDEzOlxcdFxcdFxcdCBibWkubyBcXFxcXFxuICAxNDpcXHRcXHRcXHQgaHcubyBcXFxcXFxuICAxNTpcXHRcXHRcXHQgcDJwLm8gXFxcXFxcbiAgMTY6XFx0XFx0XFx0IHN3YXAub1xcbiAgMTc6XFx0XFxuICAxODpcXHRhdGgxMGtfY29yZS0kKENPTkZJR19BVEgxMEtfU1BFQ1RSQUwpICs9IHNwZWN0cmFsLm9cXG4gIDE5OlxcdGF0aDEwa19jb3JlLSQoQ09ORklHX05MODAyMTFfVEVTVE1PREUpICs9IHRlc3Rtb2RlLm9cXG4gIDIwOlxcdGF0aDEwa19jb3JlLSQoQ09ORklHX0FUSDEwS19UUkFDSU5HKSArPSB0cmFjZS5vXFxuICAyMTpcXHRhdGgxMGtfY29yZS0kKENPTkZJR19USEVSTUFMKSArPSB0aGVybWFsLm9cXG4gIDIyOlxcdGF0aDEwa19jb3JlLSQoQ09ORklHX0FUSDEwS19MRURTKSArPSBsZWRzLm9cXG4gIDIzOlxcdGF0aDEwa19jb3JlLSQoQ09ORklHX01BQzgwMjExX0RFQlVHRlMpICs9IGRlYnVnZnNfc3RhLm9cXG4gIDI0OlxcdGF0aDEwa19jb3JlLSQoQ09ORklHX1BNKSArPSB3b3cub1xcbiAgMjU6XFx0YXRoMTBrX2NvcmUtJChDT05GSUdfREVWX0NPUkVEVU1QKSArPSBjb3JlZHVtcC5vXFxuICAyNjpcXHRhdGgxMGtfY29yZS0kKENPTkZJR19BVEgxMEtfQ0UpICs9IGNlLm9cXG4gIDI3OlxcdFxcbiAgMjg6XFx0b2JqLSQoQ09ORklHX0FUSDEwS19QQ0kpICs9IGF0aDEwa19wY2kub1xcbiAgMjk6XFx0YXRoMTBrX3BjaS15ICs9IHBjaS5vXFxuICAzMDpcXHRcXG4gIDMxOlxcdGF0aDEwa19wY2ktJChDT05GSUdfQVRIMTBLX0FIQikgKz0gYWhiLm9cXG4gIDMyOlxcdFxcbiAgMzM6XFx0b2JqLSQoQ09ORklHX0FUSDEwS19TRElPKSArPSBhdGgxMGtfc2Rpby5vXFxuICAzNDpcXHRhdGgxMGtfc2Rpby15ICs9IHNkaW8ub1xcbiAgMzU6XFx0XFxuICAzNjpcXHRvYmotJChDT05GSUdfQVRIMTBLX1VTQikgKz0gYXRoMTBrX3VzYi5vXFxuICAzNzpcXHRhdGgxMGtfdXNiLXkgKz0gdXNiLm9cXG4gIDM4OlxcdFxcbiAgMzk6XFx0b2JqLSQoQ09ORklHX0FUSDEwS19TTk9DKSArPSBhdGgxMGtfc25vYy5vXFxuICA0MDpcXHRhdGgxMGtfc25vYy15ICs9IHFtaS5vIFxcXFxcXG4gIDQxOlxcdFxcdFxcdCBxbWlfd2xmd192MDEubyBcXFxcXFxuICA0MjpcXHRcXHRcXHQgc25vYy5vXFxuICA0MzpcXHRcXG4gIDQ0OlxcdCMgZm9yIHRyYWNpbmcgZnJhbWV3b3JrIHRvIGZpbmQgdHJhY2UuaFxcbiAgNDU6XFx0Q0ZMQUdTX3RyYWNlLm8gOj0gLUkkKHNyYylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDg6NDI6MjEuNTYzMjQ0MDA3WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjc4ODE0MDY5MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgVnVsbmVyYWJpbGl0eSBTdXJmYWNlIGFuZCBGdXp6aW5nIFN0cmF0ZWd5IGZvciBhdGgxMGsgRHJpdmVyKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyByZXZvbHZlcyBhcm91bmQgYXNzZXNzaW5nIHRoZSBwb3RlbnRpYWwgZm9yIGZ1enppbmcgdGhlIGBhdGgxMGtgIGRyaXZlci4gSSd2ZSBwaW5wb2ludGVkIHRocmVlIGtleSBhcmVhcyB3aXRoaW4gdGhlIGRyaXZlcidzIGNvZGUgdGhhdCBub3cgaGF2ZSBhZGRlZCBkZWZlbnNpdmUgY2hlY2tzIOKAkyBuYW1lbHksIGBkZWJ1Zy5jYCAoc3BlY2lmaWNhbGx5IGBhdGgxMGtfcmVnX3ZhbHVlX3dyaXRlYCBhbmQgYGF0aDEwa19tZW1fdmFsdWVfd3JpdGVgKSBhbmQgYGh0dF9yeC5jYCAoYGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obGApLiBUaGVzZSBhcmUgaW50ZXJlc3RpbmcgYmVjYXVzZSB0aGUgYWRkZWQgaW5wdXQgdmFsaWRhdGlvbiBzdWdnZXN0cyBhIHZ1bG5lcmFiaWxpdHkgbWF5IGhhdmUgYmVlbiBwcmVzZW50LCB3aGljaCBtYWtlcyB0aGVtIHByaW1lIHRhcmdldHMuXG5cbkZpcnN0LCBJIG9ic2VydmUgdGhhdCBTeXprYWxsZXIgaXMgcmVsZXZhbnQuIEl0IGVtdWxhdGVzIFVTQiBkZXZpY2VzLCB3aGljaCBhcmUgYSB2aWFibGUgYXR0YWNrIHN1cmZhY2UgZm9yIHdpcmVsZXNzIGRvbmdsZXMuIEl0J3MgZnV6emluZyBVU0IgZHJpdmVycywgd2hpY2ggaXMgd2hhdCBgYXRoMTBrX3VzYmAgaXMuIFRoZSBjcml0aWNhbCBwaWVjZSBoZXJlIGlzIHRoZSBVU0IgSUQgdGFibGU6IHRoZSBkZXZpY2UgSUQgYDB4MTNiMToweDAwNDJgIGlzIGEgbWF0Y2gsIG1lYW5pbmcgSSBjYW4gcG90ZW50aWFsbHkgdHJpZ2dlciB0aGUgZHJpdmVyIGFuZCB0aGUgdnVsbmVyYWJpbGl0eS5cblxuVGhlIGluY2x1c2lvbiBvZiB0aGVzZSBkZWZlbnNpdmUgY2hlY2tzIG1ha2VzIG1lIHRoaW5rIHRoYXQgdGhlc2UgY29kZSBwYXRocywgYW5kIHRoZXJlZm9yZSB0aGVzZSBmdW5jdGlvbnMsIGFyZSBXb3J0aEZ1enppbmcuIFRoZSBjaGFuZ2VzIGFyZSBzcGVjaWZpY2FsbHkgYWJvdXQgYWRkZWQgaW5wdXQgdmFsaWRhdGlvbiwgd2hpY2ggZml0cyB0aGUgZ2VuZXJhbCBXb3J0aEZ1enppbmcgY3JpdGVyaWEuXG5cbk5vdywgbGV0J3MgaWRlbnRpZnkgdGhlIHNwZWNpZmljIHN5bWJvbHMgdG8gdGFyZ2V0LiBUaGUgdGhyZWUga2V5IHN5bWJvbHMgYXJlIGBhdGgxMGtfcmVnX3ZhbHVlX3dyaXRlYCwgYGF0aDEwa19tZW1fdmFsdWVfd3JpdGVgLCBhbmQgYGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obGAuIEZ1cnRoZXJtb3JlLCBJJ3ZlIGlkZW50aWZpZWQgdGhhdCBgYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsYCBpcyBjYWxsZWQgYnkgYGF0aDEwa19odHRfdDJoX21zZ19oYW5kbGVyYC5cblxuQ3J1Y2lhbGx5LCBJIG5lZWQgdG8ga25vdyBpZiB0aGVzZSBmdW5jdGlvbnMgYXJlIGlubGluZS1hYmxlLiBJIGNhbiBzZWUgdGhhdCBgYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsYCBjYW5ub3QgYmUgaW5saW5lZCwgYXMgaXRzIHBvaW50ZXIgaXMgc3RvcmVkLiBMaWtld2lzZSwgYGF0aDEwa19yZWdfdmFsdWVfd3JpdGVgIGFuZCBgYXRoMTBrX21lbV92YWx1ZV93cml0ZWAsIGR1ZSB0byB0aGVpciBwb2ludGVyIGFzc2lnbm1lbnRzLCBhcmUgYWxzbyBsaWtlbHkgdG8gYmUgcHJlc2VudCBpbiB0aGUgc3ltYm9sIHRhYmxlLCBzaW5jZSB0aGV5IGNhbid0IGJlIGlubGluZWQgZWl0aGVyLiBUaGlzIGlzIGNydWNpYWwgZm9yIFN5emthbGxlciB0byByZWFjaCB0aGVtLlxuXG5GaW5hbGx5LCBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIHJlcXVpcmVkIGtlcm5lbCBtb2R1bGVzLCBwYXJ0aWN1bGFybHkgYEFUSDEwS2AsIGBBVEgxMEtfVVNCYCBhbmQgcHJvYmFibHkgYEFUSDEwS19ERUJVR0ZTYCwgYXJlIGVuYWJsZWQuIFRoZSBkZWJ1Z2ZzIGVudHJpZXMgcmVxdWlyZSB0aGUgZGVidWdmcyBjb25maWcgc2V0dGluZywgc28gSSBuZWVkIHRvIHZlcmlmeSB0aGF0LlxuXG5JbiBzdW1tYXJ5LCBteSBzdHJhdGVneSBpcyB0byBsZXZlcmFnZSBTeXprYWxsZXIncyBVU0IgZW11bGF0aW9uIGNhcGFiaWxpdGllcyB0byByZWFjaCBgYXRoMTBrX3JlZ192YWx1ZV93cml0ZWAsIGBhdGgxMGtfbWVtX3ZhbHVlX3dyaXRlYCwgYW5kIGBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGxgIHRocm91Z2ggdmFsaWQgZGV2aWNlIGVtdWxhdGlvbi4gSSBleHBlY3QgdGhlc2UgZW50cnkgcG9pbnRzIHRvIGJlIHJlYWRpbHkgYWNjZXNzaWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY0MTAsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTI3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDg6NDI6MjkuNDQ0NjUzOTQ1WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDk1NzUxMzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX0FUSDEwS19ERUJVR0ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmg9MTAxMT1zdHJ1Y3QgYXRoMTBrIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvY29yZS5oLTEyMzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmg6MTIzOTojaWZkZWYgQ09ORklHX0FUSDEwS19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmgtMTI0MC1cXHRzdHJ1Y3QgYXRoMTBrX2RlYnVnIGRlYnVnO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jPTQyPXZvaWQgYXRoMTBrX2RlYnVnX3ByaW50X2h3ZndfaW5mbyhzdHJ1Y3QgYXRoMTBrICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy01Ny1cXHRcXHQgICAgSVNfRU5BQkxFRChDT05GSUdfQVRIMTBLX0RFQlVHKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmM6NTg6XFx0XFx0ICAgIElTX0VOQUJMRUQoQ09ORklHX0FUSDEwS19ERUJVR0ZTKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmMtNTktXFx0XFx0ICAgIElTX0VOQUJMRUQoQ09ORklHX0FUSDEwS19UUkFDSU5HKSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYz0xNDg9RVhQT1JUX1NZTUJPTChhdGgxMGtfd2Fybik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jLTE0OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmM6MTUwOiNpZmRlZiBDT05GSUdfQVRIMTBLX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmMtMTUxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jPTI2Njg9dm9pZCBhdGgxMGtfZGVidWdfdW5yZWdpc3RlcihzdHJ1Y3QgYXRoMTBrICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy0yNjcyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYzoyNjczOiNlbmRpZiAvKiBDT05GSUdfQVRIMTBLX0RFQlVHRlMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmMtMjY3NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuaD04Nz12b2lkIGF0aDEwa19wcmludF9kcml2ZXJfaW5mbyhzdHJ1Y3QgYXRoMTBrICphcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5oLTg4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuaDo4OTojaWZkZWYgQ09ORklHX0FUSDEwS19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5oLTkwLWludCBhdGgxMGtfZGVidWdfc3RhcnQoc3RydWN0IGF0aDEwayAqYXIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5oPTE5OT1zdGF0aWMgaW5saW5lIGludCBhdGgxMGtfZGVidWdfZndfc3RhdHNfcmVxdWVzdChzdHJ1Y3QgYXRoMTBrICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuaC0yMDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5oOjIxMDojZW5kaWYgLyogQ09ORklHX0FUSDEwS19ERUJVR0ZTICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5oLTIxMS0jaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDg6NDI6MjkuNTk0MjMzOTNaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTUwMDkyMzk0NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIGF0aDEwayBEcml2ZXIgRnV6emluZyBDb25maWd1cmF0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIHRoZSBgYXRoMTBrX3JlZ192YWx1ZV93cml0ZWAgYW5kIGBhdGgxMGtfbWVtX3ZhbHVlX3dyaXRlYCBmdW5jdGlvbnMgYXJlIGdhdGVkIGJlaGluZCBgI2lmZGVmIENPTkZJR19BVEgxMEtfREVCVUdGU2AuIE1ha2VzIHNlbnNlLCB0aGV5J3JlIGxpa2VseSBkZWJ1Z2dpbmcgb3IgdGVzdGluZyB1dGlsaXRpZXMuIEFuZCBvZiBjb3Vyc2UsIGBDT05GSUdfQVRIMTBLX0RFQlVHRlNgIGlzIGRlcGVuZGVudCBvbiBib3RoIGBBVEgxMEtgIGFuZCBgREVCVUdfRlNgLCB3aGljaCBpbiB0dXJuIGhpbmdlcyBvbiBgTUFDODAyMTFgIGFuZCBgSEFTX0RNQWAuIEZ1cnRoZXJtb3JlLCBgQVRIMTBLX1VTQmAgaXMgZGVwZW5kZW50IG9uIGBBVEgxMEtgIGFuZCBgVVNCYC4gVGhpcyBzZWVtcyBsaWtlIGEgZmFpcmx5IHN0YW5kYXJkLCBsb2dpY2FsIGRlcGVuZGVuY3kgY2hhaW4uIE5vdGhpbmcgdW5leHBlY3RlZCB0aGVyZSwgYW5kIG5vIG9idmlvdXMgcmVkIGZsYWdzLlxuXG5Ob3csIGxldCdzIHZlcmlmeSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlncyBvciBzeW1ib2xzLiBPa2F5LCBpdCBoYXMgcHJvdmlkZWQgYSBsaXN0IG9mIGBGb2N1c1N5bWJvbHNgOiBgXCJhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGxcImAsIGBcImF0aDEwa19yZWdfdmFsdWVfd3JpdGVcImAsIGBcImF0aDEwa19tZW1fdmFsdWVfd3JpdGVcImAsIGFuZCBgXCJhdGgxMGtfaHR0X3QyaF9tc2dfaGFuZGxlclwiYC4gVGhvc2UgYXJlIGFsbCBzcGVjaWZpYyB0byB0aGUgYXRoMTBrIGRyaXZlciwgc28gdGhhdCBtYXRjaGVzIHVwLiBBbmQgdGhlIGBFbmFibGVDb25maWdzYCBsaXN0IC0gYFwiQVRIMTBLXCJgLCBgXCJBVEgxMEtfVVNCXCJgLCBhbmQgYFwiQVRIMTBLX0RFQlVHRlNcImAgLSBtYWtlcyBwZXJmZWN0IHNlbnNlIGdpdmVuIHRoZSBkZXBlbmRlbmNpZXMgd2UgaWRlbnRpZmllZC5cblxuTG9va2luZyBhdCB0aGUgaW5zdHJ1Y3Rpb25zIGFuZCBndWlkZWxpbmVzLCBcIldvcnRoRnV6emluZ1wiIGlzIHNldCB0byB0cnVlLCBzbyB0aGF0IGlzIHRha2VuIGNhcmUgb2YuIFRoZSBgRm9jdXNTeW1ib2xzYCBhcmUgdGhlcmUsIGFuZCB0aGUgYEVuYWJsZUNvbmZpZ3NgIGFyZSBjb3JyZWN0bHkgbGlzdGVkLiBUaGUgcmVhc29uaW5nIHNlZW1zIGNvbmNpc2UgYW5kIGFjY3VyYXRlIGZvciB0aGUgY29uY2x1c2lvbi4gQmFzZWQgb24gYWxsIG9mIHRoaXMsIGV2ZXJ5dGhpbmcgc2VlbXMgYWNjdXJhdGUgYW5kIHN0cmFpZ2h0LWZvcndhcmQsIHNvIEkgYW0gcmVhZHkgdG8gbW92ZSBmb3J3YXJkLiBMZXQncyBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NDI5LCJPdXRwdXRUb2tlbnMiOjIzMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwODo0Mjo0NC42MDM0NzU1NzNaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTU5NDIxOTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFUSDEwS1wiLFxuICAgIFwiQVRIMTBLX1VTQlwiLFxuICAgIFwiQVRIMTBLX0RFQlVHRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGxcIixcbiAgICBcImF0aDEwa19yZWdfdmFsdWVfd3JpdGVcIixcbiAgICBcImF0aDEwa19tZW1fdmFsdWVfd3JpdGVcIixcbiAgICBcImF0aDEwa19odHRfdDJoX21zZ19oYW5kbGVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZGFyeSBhbmQgbGVuZ3RoIHZhbGlkYXRpb24gY2hlY2tzIHRvIGF0aDEwayBkZWJ1Z2ZzIHdyaXRlIGhhbmRsZXJzIChhdGgxMGtfcmVnX3ZhbHVlX3dyaXRlLCBhdGgxMGtfbWVtX3ZhbHVlX3dyaXRlKSBhbmQgUlggZnJhZ21lbnQgcGFja2V0IHByb2Nlc3NpbmcgaW4gYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsLiBBdGgxMGsgc3VwcG9ydHMgVVNCIGRldmljZXMgKEFUSDEwS19VU0IpIGFuZCBkZWJ1Z2ZzIG9wZXJhdGlvbnMsIHdoaWNoIGNhbiBiZSByZWFjaGVkIGFuZCBmdXp6ZWQgdmlhIFVTQiBlbXVsYXRpb24gKFJhdyBHYWRnZXQpIGFuZCBkZWJ1Z2ZzIGludGVyZmFjZXMgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVRIMTBLXCIsXG4gICAgXCJBVEgxMEtfVVNCXCIsXG4gICAgXCJBVEgxMEtfREVCVUdGU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obFwiLFxuICAgIFwiYXRoMTBrX3JlZ192YWx1ZV93cml0ZVwiLFxuICAgIFwiYXRoMTBrX21lbV92YWx1ZV93cml0ZVwiLFxuICAgIFwiYXRoMTBrX2h0dF90MmhfbXNnX2hhbmRsZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kYXJ5IGFuZCBsZW5ndGggdmFsaWRhdGlvbiBjaGVja3MgdG8gYXRoMTBrIGRlYnVnZnMgd3JpdGUgaGFuZGxlcnMgKGF0aDEwa19yZWdfdmFsdWVfd3JpdGUsIGF0aDEwa19tZW1fdmFsdWVfd3JpdGUpIGFuZCBSWCBmcmFnbWVudCBwYWNrZXQgcHJvY2Vzc2luZyBpbiBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGwuIEF0aDEwayBzdXBwb3J0cyBVU0IgZGV2aWNlcyAoQVRIMTBLX1VTQikgYW5kIGRlYnVnZnMgb3BlcmF0aW9ucywgd2hpY2ggY2FuIGJlIHJlYWNoZWQgYW5kIGZ1enplZCB2aWEgVVNCIGVtdWxhdGlvbiAoUmF3IEdhZGdldCkgYW5kIGRlYnVnZnMgaW50ZXJmYWNlcyBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDg6NDI6NDQuNzU5NDI4NjE0WiIsIlNlcSI6MjUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTAxMzYyOTUwNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA4OjQyOjQ0Ljc2MjI4ODk0N1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjE5MDEwNzYyMzExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBhbmQgdmFsaWRpdHkgY2hlY2tzIGluIGF0aDEwayBkZWJ1Z2ZzIHdyaXRlIGhhbmRsZXJzIChhdGgxMGtfcmVnX3ZhbHVlX3dyaXRlLCBhdGgxMGtfbWVtX3ZhbHVlX3dyaXRlKSBhbmQgaW4gdGhlIEhUVCBSWCBmcmFnbWVudCBwcm9jZXNzaW5nIGZ1bmN0aW9uIChhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGwpLiBcXG5cXG5TcGVjaWZpY2FsbHk6XFxuLSBSZWdpc3RlciBhZGRyZXNzIGFuZCBtZW1vcnkgb2Zmc2V0L2NvdW50IHZhbGlkYXRpb25zIHByZXZlbnQgb3V0LW9mLWJvdW5kcyBISUYgZGlhZ25vc3RpY3MgYW5kIHJlZ2lzdGVyIHdyaXRlcy5cXG4tIExlbmd0aCBjaGVja3Mgb24gc2tiIGFuZCBoZWFkZXIgb2Zmc2V0cyBpbiBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGwgcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIGludG8gc2tiIGJ1ZmZlciBkYXRhLlxcbi0gQW55IHBvdGVudGlhbCBlcnJvci1wYXRoIGlzc3VlcyAoc3VjaCBhcyBlYXJseSByZXR1cm4gd2l0aG91dCB1bmxvY2tpbmcgY29uZl9tdXRleCkgYXJlIGxvY2tpbmcgYnVncyBkZXRlY3RlZCBieSBMT0NLREVQLlxcblxcbk5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFsbG9jYXRpb25zLCByZWFkcyBvZiB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgZmllbGRzLCBvciBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcyBhcmUgaW50cm9kdWNlZCBvciBleHBvc2VkLiBUaGVyZWZvcmUsIHN0YW5kYXJkIEtBU0FOIGFuZCBMT0NLREVQIGNvbmZpZ3VyYXRpb25zIGFyZSBmdWxseSBzdWZmaWNpZW50LCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMGMxZTI2OTExZDFmNTg0ZDVjMGJjMTliMGE2ZTRkMmVjY2EwNmU3OFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgU2VwIDEwIDA4OjQxOjMzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jXG5pbmRleCBmYjYxZTUzZmY0YzM0Li41MGUwMTcwMjExYjgxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmNcbkBAIC03MjksNiArNzI5LDEzIEBAIHN0YXRpYyBzc2l6ZV90IGF0aDEwa19yZWdfdmFsdWVfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsXG4gXG4gXHRyZWdfYWRkciA9IGFyLVx1MDAzZWRlYnVnLnJlZ19hZGRyO1xuIFxuK1x0LyogRklYOiBWYWxpZGF0ZSByZWdpc3RlciBhZGRyZXNzICovXG4rXHRpZiAocmVnX2FkZHIgXHUwMDNlIGFyLVx1MDAzZWh3X3BhcmFtcy5yZWdfc2l6ZSkge1xuK1x0XHRhdGgxMGtfd2FybihhciwgXCJJbnZhbGlkIHJlZ2lzdGVyIGFkZHJlc3MgMHglMDh4XFxuXCIsIHJlZ19hZGRyKTtcbitcdFx0cmV0ID0gLUVJTlZBTDtcbitcdFx0Z290byBleGl0O1xuK1x0fVxuK1xuIFx0cmV0ID0ga3N0cnRvdTMyX2Zyb21fdXNlcih1c2VyX2J1ZiwgY291bnQsIDAsIFx1MDAyNnJlZ192YWwpO1xuIFx0aWYgKHJldClcbiBcdFx0Z290byBleGl0O1xuQEAgLTgxOSw2ICs4MjYsMTkgQEAgc3RhdGljIHNzaXplX3QgYXRoMTBrX21lbV92YWx1ZV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSxcbiBcbiBcdG11dGV4X2xvY2soXHUwMDI2YXItXHUwMDNlY29uZl9tdXRleCk7XG4gXG4rXHQvKiBGSVg6IFZhbGlkYXRlIGFkZHJlc3MgYWdhaW5zdCBtZW1vcnkgc2l6ZSAqL1xuK1x0aWYgKCpwcG9zIFx1MDAzZSBhci1cdTAwM2Vod19wYXJhbXMubWVtX3NpemUpIHtcbitcdFx0YXRoMTBrX3dhcm4oYXIsIFwiSW52YWxpZCBhZGRyZXNzIDB4JTA4eCBmb3IgbWVtX3ZhbHVlXFxuXCIsICh1MzIpKnBwb3MpO1xuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcdH1cbitcbitcdC8qIEZJWDogVmFsaWRhdGUgc2l6ZSBhZ2FpbnN0IHJlbWFpbmluZyBtZW1vcnkgKi9cbitcdGlmIChjb3VudCBcdTAwM2UgYXItXHUwMDNlaHdfcGFyYW1zLm1lbV9zaXplIC0gKnBwb3MpIHtcbitcdFx0YXRoMTBrX3dhcm4oYXIsIFwiSW52YWxpZCBzaXplICV6dSBmb3IgbWVtX3ZhbHVlIGF0IDB4JTA4eFxcblwiLFxuK1x0XHRcdCAgICBjb3VudCwgKHUzMikqcHBvcyk7XG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0fVxuK1xuIFx0YnVmID0gdm1hbGxvYyhjb3VudCk7XG4gXHRpZiAoIWJ1Zikge1xuIFx0XHRyZXQgPSAtRU5PTUVNO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jXG5pbmRleCBhYjJkMzczYjQ3NTBkLi40ZmFiYjkyNjQ3ZDlmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguY1xuQEAgLTI3NzUsNiArMjc3NSwxMyBAQCBzdGF0aWMgYm9vbCBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGwoc3RydWN0IGF0aDEwa19odHQgKmh0dCxcbiBcdHN0cnVjdCBodHRfcmVzcCAqcmVzcDtcbiBcdHNpemVfdCB0b3RfaGRyX2xlbjtcbiBcbitcbitcdC8qIEZJWDogVmFsaWRhdGUgc2tiIGxlbmd0aCBiZWZvcmUgc2tiX3B1bGwgKi9cbitcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYyBIVFRfUlhfRlJBR19JTkRfSU5GTzBfSEVBREVSX0xFTikge1xuK1x0XHRhdGgxMGtfd2FybihhciwgXCJJbnZhbGlkIHNrYiBsZW4gJWQgZm9yIFJYX0ZSQUdfSU5EXFxuXCIsIHNrYi1cdTAwM2VsZW4pO1xuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXHR9XG4rXG4gXHRyZXNwID0gKHN0cnVjdCBodHRfcmVzcCAqKShza2ItXHUwMDNlZGF0YSArIEhUVF9SWF9GUkFHX0lORF9JTkZPMF9IRUFERVJfTEVOKTtcbiBcdHNrYl9wdWxsKHNrYiwgSFRUX1JYX0ZSQUdfSU5EX0lORk8wX0hFQURFUl9MRU4pO1xuIFx0c2tiX3RyaW0oc2tiLCBza2ItXHUwMDNlbGVuIC0gRkNTX0xFTik7XG5AQCAtMjc5Miw2ICsyNzk5LDEzIEBAIHN0YXRpYyBib29sIGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obChzdHJ1Y3QgYXRoMTBrX2h0dCAqaHR0LFxuIFx0bnVtX21wZHVfcmFuZ2VzID0gTVMoX19sZTMyX3RvX2NwdShyeF9obC1cdTAwM2VoZHIuaW5mbzEpLFxuIFx0XHRcdCAgICAgSFRUX1JYX0lORElDQVRJT05fSU5GTzFfTlVNX01QRFVfUkFOR0VTKTtcbiBcbitcdC8qIEZJWDogVmFsaWRhdGUgbnVtX21wZHVfcmFuZ2VzICovXG4rXHRpZiAobnVtX21wZHVfcmFuZ2VzIFx1MDAzZSAxKSB7XG4rXHRcdGF0aDEwa193YXJuKGFyLCBcIkludmFsaWQgbnVtX21wZHVfcmFuZ2VzICVkXFxuXCIsIG51bV9tcGR1X3Jhbmdlcyk7XG4rXHRcdGdvdG8gZXJyO1xuK1x0fVxuK1xuK1xuIFx0dG90X2hkcl9sZW4gPSBzaXplb2Yoc3RydWN0IGh0dF9yZXNwX2hkcikgK1xuIFx0XHQgICAgICBzaXplb2YocnhfaGwtXHUwMDNlaGRyKSArXG4gXHRcdCAgICAgIHNpemVvZihyeF9obC1cdTAwM2VwcGR1KSArXG5AQCAtMjc5OSwxMCArMjgxMywyNiBAQCBzdGF0aWMgYm9vbCBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGwoc3RydWN0IGF0aDEwa19odHQgKmh0dCxcbiBcdFx0ICAgICAgc2l6ZW9mKHJ4X2hsLVx1MDAzZWZ3X2Rlc2MpICtcbiBcdFx0ICAgICAgc2l6ZW9mKHN0cnVjdCBodHRfcnhfaW5kaWNhdGlvbl9tcGR1X3JhbmdlKSAqIG51bV9tcGR1X3JhbmdlcztcbiBcbitcdC8qIEZJWDogVmFsaWRhdGUgdG90X2hkcl9sZW4gYWdhaW5zdCBza2IgbGVuZ3RoICovXG4rXHRpZiAodG90X2hkcl9sZW4gXHUwMDNlIHNrYi1cdTAwM2VsZW4pIHtcbitcdFx0YXRoMTBrX3dhcm4oYXIsIFwiSW52YWxpZCB0b3RfaGRyX2xlbiAlenUgXHUwMDNlIHNrYi1cdTAwM2VsZW4gJXVcXG5cIixcbitcdFx0XHQgICAgdG90X2hkcl9sZW4sIHNrYi1cdTAwM2VsZW4pO1xuK1x0XHRnb3RvIGVycjtcbitcdH1cbitcbitcbiBcdHRpZCA9ICBNUyhyeF9obC1cdTAwM2VoZHIuaW5mbzAsIEhUVF9SWF9JTkRJQ0FUSU9OX0lORk8wX0VYVF9USUQpO1xuIFx0cnhfZGVzYyA9IChzdHJ1Y3QgaHR0X2hsX3J4X2Rlc2MgKikoc2tiLVx1MDAzZWRhdGEgKyB0b3RfaGRyX2xlbik7XG4gXHRyeF9kZXNjX2luZm8gPSBfX2xlMzJfdG9fY3B1KHJ4X2Rlc2MtXHUwMDNlaW5mbyk7XG4gXG4rXG4rXHQvKiBGSVg6IFZhbGlkYXRlIGZ3X2Rlc2MubGVuIGFnYWluc3QgcmVtYWluaW5nIHNrYiBsZW5ndGggKi9cbitcdGlmIChyeF9obC1cdTAwM2Vmd19kZXNjLmxlbiBcdTAwM2Ugc2tiLVx1MDAzZWxlbiAtIHRvdF9oZHJfbGVuKSB7XG4rXHRcdGF0aDEwa193YXJuKGFyLCBcIkludmFsaWQgZndfZGVzYy5sZW4gJXUgXHUwMDNlIHJlbWFpbmluZyBza2IgbGVuXFxuXCIsXG4rXHRcdFx0ICAgIHJ4X2hsLVx1MDAzZWZ3X2Rlc2MubGVuKTtcbitcdFx0Z290byBlcnI7XG4rXHR9XG4rXG4gXHRoZHIgPSAoc3RydWN0IGllZWU4MDIxMV9oZHIgKikoKHU4ICopcnhfZGVzYyArIHJ4X2hsLVx1MDAzZWZ3X2Rlc2MubGVuKTtcbiBcbiBcdGlmIChpc19tdWx0aWNhc3RfZXRoZXJfYWRkcihoZHItXHUwMDNlYWRkcjEpKSB7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwODo0Mjo0NC43NjIyOTE0NDdaIiwiU2VxIjoyNywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDkyNjYyNTk3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoOiBBIERlZXAgRGl2ZSoqXG5cbk9rYXksIGxldCdzIGRpc3NlY3QgdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIHB1cnBvc2UgYmVoaW5kIHRoZXNlIGNoYW5nZXMuIEl0IGxvb2tzIGxpa2Ugd2UncmUgZGVhbGluZyB3aXRoIG1vZGlmaWNhdGlvbnMgd2l0aGluIHRoZSBgYXRoMTBrYCB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiB0aGUgYGF0aDEway9gIGRpcmVjdG9yeS4gVGhhdCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3Q7IGFueXRoaW5nIHJlbGF0ZWQgdG8gbG93LWxldmVsIHdpcmVsZXNzIGludGVyYWN0aW9uIHdhcnJhbnRzIGNhcmVmdWwgc2NydXRpbnksIGdpdmVuIHRoZSBwb3RlbnRpYWwgZm9yIHBlcmZvcm1hbmNlIGltcGFjdHMgYW5kLCBvZiBjb3Vyc2UsIHNlY3VyaXR5IGltcGxpY2F0aW9ucy5cblxuVGhlIHBhdGNoIHNlZW1zIHRvIGJlIGludHJvZHVjaW5nIHNldmVyYWwgY3J1Y2lhbCBjaGVja3MsIGd1YXJkaW5nIGFnYWluc3QgcG90ZW50aWFsbHkgcHJvYmxlbWF0aWMgc2NlbmFyaW9zLiBJdCdzIG1vZGlmeWluZyB0d28gZmlsZXM6IGBkZWJ1Zy5jYCBhbmQgYGh0dF9yeC5jYC5cblxuSW4gYGRlYnVnLmNgLCB0aGUgYWRkaXRpb25zIHRvIGBhdGgxMGtfcmVnX3ZhbHVlX3dyaXRlYCBhbmQgYGF0aDEwa19tZW1fdmFsdWVfd3JpdGVgIGFyZSBwYXJ0aWN1bGFybHkgbm90ZXdvcnRoeS4gV2UncmUgbm93IHZhbGlkYXRpbmcgcmVnaXN0ZXIgYW5kIG1lbW9yeSBhZGRyZXNzZXMgYWdhaW5zdCB0aGUgaGFyZHdhcmUgcGFyYW1ldGVycyAoYGFyLVx1MDAzZWh3X3BhcmFtcy5yZWdfc2l6ZWAgYW5kIGBhci1cdTAwM2Vod19wYXJhbXMubWVtX3NpemVgIHJlc3BlY3RpdmVseSkuIFRoaXMgc3Ryb25nbHkgc3VnZ2VzdHMgYW4gYXR0ZW1wdCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgd3JpdGVzLiBUaGUgY29yZSBvZiB0aGlzIGlzIHRvIHByZXZlbnQgYnVmZmVyIG92ZXJmbG93cy4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IHRoZXNlIHR5cGVzIG9mIGNoZWNrcyBhcmUgY3JpdGljYWwgZm9yIG1pdGlnYXRpbmcgdnVsbmVyYWJpbGl0aWVzIHRoYXQgY291bGQgbGVhZCB0byBzeXN0ZW0gaW5zdGFiaWxpdHkgb3IgZXZlbiByZW1vdGUgY29kZSBleGVjdXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBwcmVjaXNlIGNvbnRleHQgb2YgdGhlc2Ugd3JpdGVzIHRvIGFzc2VzcyB0aGUgc2V2ZXJpdHkgb2YgdGhlIG9yaWdpbmFsIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5LlxuXG5UaGVuLCBtb3ZpbmcgdG8gYGh0dF9yeC5jYCwgdGhlIGZvY3VzIHNoaWZ0cyB0byB0aGUgYGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obGAgZnVuY3Rpb24uIFRoZXJlIGFyZSBhIHNlcmllcyBvZiBjaGVja3MgYmVpbmcgYWRkZWQuIFRoZSBuZXcgY2hlY2tzIGluY2x1ZGUgdmVyaWZ5aW5nIHRoZSBzaXplIG9mIHRoZSByZWNlaXZlZCBgc2tiYCAoc29ja2V0IGJ1ZmZlcikgYWdhaW5zdCB0aGUgaGVhZGVyIGxlbmd0aCBhbmQgb3RoZXIgcGFyYW1ldGVycy4gVGhlIGNvZGUgc2VlbXMgdG8gYmUgdmFsaWRhdGluZyB2YXJpb3VzIGRhdGEgc3RydWN0dXJlcyB0aGF0IGFyZSBkZXJpdmVkIGZyb20gaW5jb21pbmcgZnJhZ21lbnRzLCBjaGVja2luZyB0aGUgdG90YWwgbGVuZ3RoIGFnYWluc3QgdGhlIHNvY2tldCBidWZmZXIncyBjdXJyZW50IGF2YWlsYWJsZSBzaXplLiBUaGUgYGlmIChudW1fbXBkdV9yYW5nZXMgXHUwMDNlIDEpYCwgYGlmICh0b3RfaGRyX2xlbiBcdTAwM2Ugc2tiLVx1MDAzZWxlbilgIGFuZCBgaWYgKHJ4X2hsLVx1MDAzZWZ3X2Rlc2MubGVuIFx1MDAzZSBza2ItXHUwMDNlbGVuIC0gdG90X2hkcl9sZW4pYCBjaGVja3MgYXJlIHNwZWNpZmljYWxseSBpbnRlcmVzdGluZyBiZWNhdXNlIHRoZXkgYXJlIGNsZWFybHkgZGVzaWduZWQgdG8gdmFsaWRhdGUgdGhlIGludGVncml0eSBhbmQgc3RydWN0dXJlIG9mIGluY29taW5nIGRhdGEuIFRoaXMgc2lnbmFscyBjb25jZXJuIGFib3V0IHRoZSBwb3RlbnRpYWwgZm9yIGZyYWdtZW50YXRpb24tcmVsYXRlZCB2dWxuZXJhYmlsaXRpZXMgb3IgZGVuaWFsLW9mLXNlcnZpY2UgYXR0YWNrcy4gSSBuZWVkIHRvIGZhbWlsaWFyaXplIG15c2VsZiB3aXRoIHRoZSBzcGVjaWZpYyBkYXRhIHN0cnVjdHVyZXMgYW5kIHRoZSBleHBlY3RlZCBmbG93IG9mIGRhdGEgd2l0aGluIGBhdGgxMGtgJ3MgUlggcGF0aC4gSXTigJlzIGxpa2VseSBhbiBhdHRlbXB0IHRvIG1pdGlnYXRlIGJ1ZmZlciBvdmVyZmxvd3Mgb3IgcG90ZW50aWFsbHkgbWFsZm9ybWVkIHBhY2tldHMuXG5cblRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSwgSSdtIGdvaW5nIHRvIGxldmVyYWdlIG15IHVzdWFsIHdvcmtmbG93LiBJ4oCZbGwgdXNlIGByZWFkLWZpbGVgIG9yIGBncmVwcGVyYCB0byBleGFtaW5lIHRoZSBzdXJyb3VuZGluZyBjb2RlIGluIGJvdGggZmlsZXMuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbnRleHQgb2YgdGhlc2UgY2hlY2tzIHdpbGwgaWxsdW1pbmF0ZSB0aGUgc3BlY2lmaWMgdGhyZWF0IG1vZGVsIGJlaW5nIGFkZHJlc3NlZC4gSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSBleGFjdCBjb25kaXRpb25zIHRoYXQgdHJpZ2dlcmVkIHRoaXMgcGF0Y2ggYW5kIHVuZGVyc3RhbmQgdGhlIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDQ5LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjk4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDg6NDI6NDkuNjg4OTE5Nzk0WiIsIlNlcSI6MjgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MDkzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNzI1LFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNzI1OlxcdFxcdCAgICBhci1cXHUwMDNlc3RhdGUgIT0gQVRIMTBLX1NUQVRFX1VURikge1xcbiA3MjY6XFx0XFx0XFx0cmV0ID0gLUVORVRET1dOO1xcbiA3Mjc6XFx0XFx0XFx0Z290byBleGl0O1xcbiA3Mjg6XFx0XFx0fVxcbiA3Mjk6XFx0XFxuIDczMDpcXHRcXHRyZWdfYWRkciA9IGFyLVxcdTAwM2VkZWJ1Zy5yZWdfYWRkcjtcXG4gNzMxOlxcdFxcbiA3MzI6XFx0XFx0LyogRklYOiBWYWxpZGF0ZSByZWdpc3RlciBhZGRyZXNzICovXFxuIDczMzpcXHRcXHRpZiAocmVnX2FkZHIgXFx1MDAzZSBhci1cXHUwMDNlaHdfcGFyYW1zLnJlZ19zaXplKSB7XFxuIDczNDpcXHRcXHRcXHRhdGgxMGtfd2FybihhciwgXFxcIkludmFsaWQgcmVnaXN0ZXIgYWRkcmVzcyAweCUwOHhcXFxcblxcXCIsIHJlZ19hZGRyKTtcXG4gNzM1OlxcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuIDczNjpcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuIDczNzpcXHRcXHR9XFxuIDczODpcXHRcXG4gNzM5OlxcdFxcdHJldCA9IGtzdHJ0b3UzMl9mcm9tX3VzZXIodXNlcl9idWYsIGNvdW50LCAwLCBcXHUwMDI2cmVnX3ZhbCk7XFxuIDc0MDpcXHRcXHRpZiAocmV0KVxcbiA3NDE6XFx0XFx0XFx0Z290byBleGl0O1xcbiA3NDI6XFx0XFxuIDc0MzpcXHRcXHRhdGgxMGtfaGlmX3dyaXRlMzIoYXIsIHJlZ19hZGRyLCByZWdfdmFsKTtcXG4gNzQ0OlxcdFxcbiA3NDU6XFx0XFx0cmV0ID0gY291bnQ7XFxuIDc0NjpcXHRcXG4gNzQ3OlxcdGV4aXQ6XFxuIDc0ODpcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNmFyLVxcdTAwM2Vjb25mX211dGV4KTtcXG4gNzQ5OlxcdFxcbiA3NTA6XFx0XFx0cmV0dXJuIHJldDtcXG4gNzUxOlxcdH1cXG4gNzUyOlxcdFxcbiA3NTM6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wc19yZWdfdmFsdWUgPSB7XFxuIDc1NDpcXHRcXHQucmVhZCA9IGF0aDEwa19yZWdfdmFsdWVfcmVhZCxcXG4gNzU1OlxcdFxcdC53cml0ZSA9IGF0aDEwa19yZWdfdmFsdWVfd3JpdGUsXFxuIDc1NjpcXHRcXHQub3BlbiA9IHNpbXBsZV9vcGVuLFxcbiA3NTc6XFx0XFx0Lm93bmVyID0gVEhJU19NT0RVTEUsXFxuIDc1ODpcXHRcXHQubGxzZWVrID0gZGVmYXVsdF9sbHNlZWssXFxuIDc1OTpcXHR9O1xcbiA3NjA6XFx0XFxuIDc2MTpcXHRzdGF0aWMgc3NpemVfdCBhdGgxMGtfbWVtX3ZhbHVlX3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsXFxuIDc2MjpcXHRcXHRcXHRcXHRcXHQgICAgIGNoYXIgX191c2VyICp1c2VyX2J1ZixcXG4gNzYzOlxcdFxcdFxcdFxcdFxcdCAgICAgc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpXFxuIDc2NDpcXHR7XFxuIDc2NTpcXHRcXHRzdHJ1Y3QgYXRoMTBrICphciA9IGZpbGUtXFx1MDAzZXByaXZhdGVfZGF0YTtcXG4gNzY2OlxcdFxcdHU4ICpidWY7XFxuIDc2NzpcXHRcXHRpbnQgcmV0O1xcbiA3Njg6XFx0XFxuIDc2OTpcXHRcXHRpZiAoKnBwb3MgXFx1MDAzYyAwKVxcbiA3NzA6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDc3MTpcXHRcXG4gNzcyOlxcdFxcdGlmICghY291bnQpXFxuIDc3MzpcXHRcXHRcXHRyZXR1cm4gMDtcXG4gNzc0OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwODo0Mjo0OS42ODkwNzI2NDRaIiwiU2VxIjoyOSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDQ3NDYzNjkyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiB0aG91Z2h0OlxuXG4qKkRpdmluZyBpbnRvIHRoZSBBdGhlcm9zIENvZGUqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSBgYXRoMTBrYCBkcml2ZXIgYWdhaW4sIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiBzb21lIGNyaXRpY2FsIGFyZWFzLiBGaXJzdCB1cCwgSSB3YW50IHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBtZW1vcnkgd3JpdGUgZnVuY3Rpb24sIHRoYXQgYGF0aDEwa19tZW1fdmFsdWVfd3JpdGVgLiBVbmRlcnN0YW5kaW5nIGhvdyB0aGF0J3MgaGFuZGxlZCBpcyBlc3NlbnRpYWwgZm9yIHRyYWNraW5nIGRvd24gYSByZWNlbnQgaXNzdWUuIEknbGwgbmVlZCB0byByZW1lbWJlciB0aGUgaW50cmljYWNpZXMgb2YgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZS5cblxuTmV4dCwgSSBzaG91bGQgdGFrZSBhIGZyZXNoIGxvb2sgYXQgYGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obGAuIEZyYWdtZW50ZWQgcGFja2V0cyBjYW4gYmUgYSBwYWluLCBhbmQgSSBuZWVkIHRvIHJlLWZhbWlsaWFyaXplIG15c2VsZiB3aXRoIHRoZSBIaWdoLUxldmVsIChITCkgaGFuZGxpbmcgb2YgdGhvc2UgcmVjZWl2ZWQgZnJhZ21lbnRzLCBtYWtpbmcgc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGEgY3J1Y2lhbCBwaWVjZSBvZiB0aGUgcHV6emxlIHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHBvdGVudGlhbCBib3R0bGVuZWNrcywgcmFjZSBjb25kaXRpb25zLCBvciBhbnl0aGluZyBvdXQgb2YgdGhlIG9yZGluYXJ5IHRoYXQgY291bGQgY29udHJpYnV0ZSB0byBwZXJmb3JtYW5jZSBkZWdyYWRhdGlvbiBvciBlcnJvcnMuIFRpbWUgdG8gY3JhY2sgb3BlbiB0aGUgc291cmNlIGFuZCBnZXQgdG8gaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwNzgsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA4OjQyOjU0LjE2MzcxMjIzMloiLCJTZXEiOjMwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTY2MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDgxNSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDgxNTpcXHRcXHRcXHRcXHRcXHQgICAgICBzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcylcXG4gODE2OlxcdHtcXG4gODE3OlxcdFxcdHN0cnVjdCBhdGgxMGsgKmFyID0gZmlsZS1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbiA4MTg6XFx0XFx0dTggKmJ1ZjtcXG4gODE5OlxcdFxcdGludCByZXQ7XFxuIDgyMDpcXHRcXG4gODIxOlxcdFxcdGlmICgqcHBvcyBcXHUwMDNjIDApXFxuIDgyMjpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gODIzOlxcdFxcbiA4MjQ6XFx0XFx0aWYgKCFjb3VudClcXG4gODI1OlxcdFxcdFxcdHJldHVybiAwO1xcbiA4MjY6XFx0XFxuIDgyNzpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZhci1cXHUwMDNlY29uZl9tdXRleCk7XFxuIDgyODpcXHRcXG4gODI5OlxcdFxcdC8qIEZJWDogVmFsaWRhdGUgYWRkcmVzcyBhZ2FpbnN0IG1lbW9yeSBzaXplICovXFxuIDgzMDpcXHRcXHRpZiAoKnBwb3MgXFx1MDAzZSBhci1cXHUwMDNlaHdfcGFyYW1zLm1lbV9zaXplKSB7XFxuIDgzMTpcXHRcXHRcXHRhdGgxMGtfd2FybihhciwgXFxcIkludmFsaWQgYWRkcmVzcyAweCUwOHggZm9yIG1lbV92YWx1ZVxcXFxuXFxcIiwgKHUzMikqcHBvcyk7XFxuIDgzMjpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gODMzOlxcdFxcdH1cXG4gODM0OlxcdFxcbiA4MzU6XFx0XFx0LyogRklYOiBWYWxpZGF0ZSBzaXplIGFnYWluc3QgcmVtYWluaW5nIG1lbW9yeSAqL1xcbiA4MzY6XFx0XFx0aWYgKGNvdW50IFxcdTAwM2UgYXItXFx1MDAzZWh3X3BhcmFtcy5tZW1fc2l6ZSAtICpwcG9zKSB7XFxuIDgzNzpcXHRcXHRcXHRhdGgxMGtfd2FybihhciwgXFxcIkludmFsaWQgc2l6ZSAlenUgZm9yIG1lbV92YWx1ZSBhdCAweCUwOHhcXFxcblxcXCIsXFxuIDgzODpcXHRcXHRcXHRcXHQgICAgY291bnQsICh1MzIpKnBwb3MpO1xcbiA4Mzk6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDg0MDpcXHRcXHR9XFxuIDg0MTpcXHRcXG4gODQyOlxcdFxcdGJ1ZiA9IHZtYWxsb2MoY291bnQpO1xcbiA4NDM6XFx0XFx0aWYgKCFidWYpIHtcXG4gODQ0OlxcdFxcdFxcdHJldCA9IC1FTk9NRU07XFxuIDg0NTpcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuIDg0NjpcXHRcXHR9XFxuIDg0NzpcXHRcXG4gODQ4OlxcdFxcdGlmIChhci1cXHUwMDNlc3RhdGUgIT0gQVRIMTBLX1NUQVRFX09OIFxcdTAwMjZcXHUwMDI2XFxuIDg0OTpcXHRcXHQgICAgYXItXFx1MDAzZXN0YXRlICE9IEFUSDEwS19TVEFURV9VVEYpIHtcXG4gODUwOlxcdFxcdFxcdHJldCA9IC1FTkVURE9XTjtcXG4gODUxOlxcdFxcdFxcdGdvdG8gZXhpdDtcXG4gODUyOlxcdFxcdH1cXG4gODUzOlxcdFxcbiA4NTQ6XFx0XFx0cmV0ID0gY29weV9mcm9tX3VzZXIoYnVmLCB1c2VyX2J1ZiwgY291bnQpO1xcbiA4NTU6XFx0XFx0aWYgKHJldCkge1xcbiA4NTY6XFx0XFx0XFx0cmV0ID0gLUVGQVVMVDtcXG4gODU3OlxcdFxcdFxcdGdvdG8gZXhpdDtcXG4gODU4OlxcdFxcdH1cXG4gODU5OlxcdFxcbiA4NjA6XFx0XFx0cmV0ID0gYXRoMTBrX2hpZl9kaWFnX3dyaXRlKGFyLCAqcHBvcywgYnVmLCBjb3VudCk7XFxuIDg2MTpcXHRcXHRpZiAocmV0KSB7XFxuIDg2MjpcXHRcXHRcXHRhdGgxMGtfd2FybihhciwgXFxcImZhaWxlZCB0byB3cml0ZSBhZGRyZXNzIDB4JTA4eCB2aWEgZGlhZ25vc2Ugd2luZG93IGZyb20gZGVidWdmczogJWRcXFxcblxcXCIsXFxuIDg2MzpcXHRcXHRcXHRcXHQgICAgKHUzMikoKnBwb3MpLCByZXQpO1xcbiA4NjQ6XFx0XFx0XFx0Z290byBleGl0O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwODo0Mjo1NC4xNjM5NzE0NjJaIiwiU2VxIjozMSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjM5NzYyNjE0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipMb2NraW5nIEJ1ZyBEaXNjb3ZlcnkgYW5kIEludmVzdGlnYXRpb24qKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLi4uIHNvbWV0aGluZyBqdXN0IGNsaWNrZWQgbG9va2luZyBhdCBgYXRoMTBrX21lbV92YWx1ZV93cml0ZWAuIFNwZWNpZmljYWxseSwgbGluZXMgODMwLTg0MC4gQmluZ28hIFRoZXkncmUgcmV0dXJuaW5nIGAtRUlOVkFMYCBpZiB0aGUgdmFsaWRhdGlvbiBmYWlscywgKndoaWxlIHN0aWxsIGhvbGRpbmcgYGFyLVx1MDAzZWNvbmZfbXV0ZXhgKi4gVGhhdCdzIGEgY2xhc3NpYyBsb2NraW5nIGJ1ZyDigJMgYSBwb3RlbnRpYWwgZGVhZGxvY2sgc2l0dWF0aW9uIG9yIGF0IGxlYXN0IGFuIHVuYmFsYW5jZWQgbXV0ZXggdW5sb2NrLCBhbmQgb25lIHRoYXQgTE9DS0RFUCBzaG91bGQgZGVmaW5pdGVseSBjYXRjaC4gSXQncyB0aGUga2luZCBvZiB0aGluZyB0aGF0IG1ha2VzIGEgc2Vhc29uZWQgZGV2ZWxvcGVyIHNpdCB1cCBhbmQgdGFrZSBub3RpY2UuXG5cbk5vdywgdG8gZm9sbG93IHRoaXMgdGhyZWFkIGFuZCBjb25maXJtIGl0J3MgYW4gYWN0dWFsIGlzc3VlLCBJIG5lZWQgdG8gY2hlY2sgYGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obGAgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmNgLiBJJ20gZ29pbmcgdG8gZGlnIGludG8gdGhlIGNhbGwgc3RhY2tzIGFuZCBtYWtlIHN1cmUgdGhpcyBpcyB0aGUgcHJpbWFyeSBzb3VyY2Ugb2YgdGhlIGRlYWRsb2NrLiBUaGlzIG1pZ2h0IGp1c3QgYmUgdGhlIG5lZWRsZSBpbiB0aGUgaGF5c3RhY2sgSSB3YXMgbG9va2luZyBmb3IuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxMzYsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwODo0Mjo1Ni41NjE2MDAzMjFaIiwiU2VxIjozMiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgxMjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjc3MCxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjc3MDpcXHRcXHR1MTYgcGVlcl9pZCwgc2MsIGhkcl9zcGFjZTtcXG4yNzcxOlxcdFxcdHVuaW9uIGh0dF9yeF9wbl90ICpsYXN0X3BuO1xcbjI3NzI6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9oZHIgKmhkcjtcXG4yNzczOlxcdFxcdGludCByZXQsIG51bV9tcGR1X3JhbmdlcztcXG4yNzc0OlxcdFxcdHN0cnVjdCBhdGgxMGtfcGVlciAqcGVlcjtcXG4yNzc1OlxcdFxcdHN0cnVjdCBodHRfcmVzcCAqcmVzcDtcXG4yNzc2OlxcdFxcdHNpemVfdCB0b3RfaGRyX2xlbjtcXG4yNzc3OlxcdFxcbjI3Nzg6XFx0XFxuMjc3OTpcXHRcXHQvKiBGSVg6IFZhbGlkYXRlIHNrYiBsZW5ndGggYmVmb3JlIHNrYl9wdWxsICovXFxuMjc4MDpcXHRcXHRpZiAoc2tiLVxcdTAwM2VsZW4gXFx1MDAzYyBIVFRfUlhfRlJBR19JTkRfSU5GTzBfSEVBREVSX0xFTikge1xcbjI3ODE6XFx0XFx0XFx0YXRoMTBrX3dhcm4oYXIsIFxcXCJJbnZhbGlkIHNrYiBsZW4gJWQgZm9yIFJYX0ZSQUdfSU5EXFxcXG5cXFwiLCBza2ItXFx1MDAzZWxlbik7XFxuMjc4MjpcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuMjc4MzpcXHRcXHR9XFxuMjc4NDpcXHRcXG4yNzg1OlxcdFxcdHJlc3AgPSAoc3RydWN0IGh0dF9yZXNwICopKHNrYi1cXHUwMDNlZGF0YSArIEhUVF9SWF9GUkFHX0lORF9JTkZPMF9IRUFERVJfTEVOKTtcXG4yNzg2OlxcdFxcdHNrYl9wdWxsKHNrYiwgSFRUX1JYX0ZSQUdfSU5EX0lORk8wX0hFQURFUl9MRU4pO1xcbjI3ODc6XFx0XFx0c2tiX3RyaW0oc2tiLCBza2ItXFx1MDAzZWxlbiAtIEZDU19MRU4pO1xcbjI3ODg6XFx0XFxuMjc4OTpcXHRcXHRwZWVyX2lkID0gX19sZTE2X3RvX2NwdShyeC1cXHUwMDNlcGVlcl9pZCk7XFxuMjc5MDpcXHRcXHRyeF9obCA9IChzdHJ1Y3QgaHR0X3J4X2luZGljYXRpb25faGwgKikoXFx1MDAyNnJlc3AtXFx1MDAzZXJ4X2luZF9obCk7XFxuMjc5MTpcXHRcXG4yNzkyOlxcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2YXItXFx1MDAzZWRhdGFfbG9jayk7XFxuMjc5MzpcXHRcXHRwZWVyID0gYXRoMTBrX3BlZXJfZmluZF9ieV9pZChhciwgcGVlcl9pZCk7XFxuMjc5NDpcXHRcXHRpZiAoIXBlZXIpIHtcXG4yNzk1OlxcdFxcdFxcdGF0aDEwa19kYmcoYXIsIEFUSDEwS19EQkdfSFRULCBcXFwiaW52YWxpZCBwZWVyOiAldVxcXFxuXFxcIiwgcGVlcl9pZCk7XFxuMjc5NjpcXHRcXHRcXHRnb3RvIGVycjtcXG4yNzk3OlxcdFxcdH1cXG4yNzk4OlxcdFxcbjI3OTk6XFx0XFx0bnVtX21wZHVfcmFuZ2VzID0gTVMoX19sZTMyX3RvX2NwdShyeF9obC1cXHUwMDNlaGRyLmluZm8xKSxcXG4yODAwOlxcdFxcdFxcdFxcdCAgICAgSFRUX1JYX0lORElDQVRJT05fSU5GTzFfTlVNX01QRFVfUkFOR0VTKTtcXG4yODAxOlxcdFxcbjI4MDI6XFx0XFx0LyogRklYOiBWYWxpZGF0ZSBudW1fbXBkdV9yYW5nZXMgKi9cXG4yODAzOlxcdFxcdGlmIChudW1fbXBkdV9yYW5nZXMgXFx1MDAzZSAxKSB7XFxuMjgwNDpcXHRcXHRcXHRhdGgxMGtfd2FybihhciwgXFxcIkludmFsaWQgbnVtX21wZHVfcmFuZ2VzICVkXFxcXG5cXFwiLCBudW1fbXBkdV9yYW5nZXMpO1xcbjI4MDU6XFx0XFx0XFx0Z290byBlcnI7XFxuMjgwNjpcXHRcXHR9XFxuMjgwNzpcXHRcXG4yODA4OlxcdFxcbjI4MDk6XFx0XFx0dG90X2hkcl9sZW4gPSBzaXplb2Yoc3RydWN0IGh0dF9yZXNwX2hkcikgK1xcbjI4MTA6XFx0XFx0XFx0ICAgICAgc2l6ZW9mKHJ4X2hsLVxcdTAwM2VoZHIpICtcXG4yODExOlxcdFxcdFxcdCAgICAgIHNpemVvZihyeF9obC1cXHUwMDNlcHBkdSkgK1xcbjI4MTI6XFx0XFx0XFx0ICAgICAgc2l6ZW9mKHJ4X2hsLVxcdTAwM2VwcmVmaXgpICtcXG4yODEzOlxcdFxcdFxcdCAgICAgIHNpemVvZihyeF9obC1cXHUwMDNlZndfZGVzYykgK1xcbjI4MTQ6XFx0XFx0XFx0ICAgICAgc2l6ZW9mKHN0cnVjdCBodHRfcnhfaW5kaWNhdGlvbl9tcGR1X3JhbmdlKSAqIG51bV9tcGR1X3JhbmdlcztcXG4yODE1OlxcdFxcbjI4MTY6XFx0XFx0LyogRklYOiBWYWxpZGF0ZSB0b3RfaGRyX2xlbiBhZ2FpbnN0IHNrYiBsZW5ndGggKi9cXG4yODE3OlxcdFxcdGlmICh0b3RfaGRyX2xlbiBcXHUwMDNlIHNrYi1cXHUwMDNlbGVuKSB7XFxuMjgxODpcXHRcXHRcXHRhdGgxMGtfd2FybihhciwgXFxcIkludmFsaWQgdG90X2hkcl9sZW4gJXp1IFxcdTAwM2Ugc2tiLVxcdTAwM2VsZW4gJXVcXFxcblxcXCIsXFxuMjgxOTpcXHRcXHRcXHRcXHQgICAgdG90X2hkcl9sZW4sIHNrYi1cXHUwMDNlbGVuKTtcXG4yODIwOlxcdFxcdFxcdGdvdG8gZXJyO1xcbjI4MjE6XFx0XFx0fVxcbjI4MjI6XFx0XFxuMjgyMzpcXHRcXG4yODI0OlxcdFxcdHRpZCA9ICBNUyhyeF9obC1cXHUwMDNlaGRyLmluZm8wLCBIVFRfUlhfSU5ESUNBVElPTl9JTkZPMF9FWFRfVElEKTtcXG4yODI1OlxcdFxcdHJ4X2Rlc2MgPSAoc3RydWN0IGh0dF9obF9yeF9kZXNjICopKHNrYi1cXHUwMDNlZGF0YSArIHRvdF9oZHJfbGVuKTtcXG4yODI2OlxcdFxcdHJ4X2Rlc2NfaW5mbyA9IF9fbGUzMl90b19jcHUocnhfZGVzYy1cXHUwMDNlaW5mbyk7XFxuMjgyNzpcXHRcXG4yODI4OlxcdFxcbjI4Mjk6XFx0XFx0LyogRklYOiBWYWxpZGF0ZSBmd19kZXNjLmxlbiBhZ2FpbnN0IHJlbWFpbmluZyBza2IgbGVuZ3RoICovXFxuMjgzMDpcXHRcXHRpZiAocnhfaGwtXFx1MDAzZWZ3X2Rlc2MubGVuIFxcdTAwM2Ugc2tiLVxcdTAwM2VsZW4gLSB0b3RfaGRyX2xlbikge1xcbjI4MzE6XFx0XFx0XFx0YXRoMTBrX3dhcm4oYXIsIFxcXCJJbnZhbGlkIGZ3X2Rlc2MubGVuICV1IFxcdTAwM2UgcmVtYWluaW5nIHNrYiBsZW5cXFxcblxcXCIsXFxuMjgzMjpcXHRcXHRcXHRcXHQgICAgcnhfaGwtXFx1MDAzZWZ3X2Rlc2MubGVuKTtcXG4yODMzOlxcdFxcdFxcdGdvdG8gZXJyO1xcbjI4MzQ6XFx0XFx0fVxcbjI4MzU6XFx0XFxuMjgzNjpcXHRcXHRoZHIgPSAoc3RydWN0IGllZWU4MDIxMV9oZHIgKikoKHU4ICopcnhfZGVzYyArIHJ4X2hsLVxcdTAwM2Vmd19kZXNjLmxlbik7XFxuMjgzNzpcXHRcXG4yODM4OlxcdFxcdGlmIChpc19tdWx0aWNhc3RfZXRoZXJfYWRkcihoZHItXFx1MDAzZWFkZHIxKSkge1xcbjI4Mzk6XFx0XFx0XFx0LyogRGlzY2FyZCB0aGUgZnJhZ21lbnQgd2l0aCBtdWx0aWNhc3QgREEgKi9cXG4yODQwOlxcdFxcdFxcdGdvdG8gZXJyO1xcbjI4NDE6XFx0XFx0fVxcbjI4NDI6XFx0XFxuMjg0MzpcXHRcXHRpZiAoIU1TKHJ4X2Rlc2NfaW5mbywgSFRUX1JYX0RFU0NfSExfSU5GT19FTkNSWVBURUQpKSB7XFxuMjg0NDpcXHRcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2YXItXFx1MDAzZWRhdGFfbG9jayk7XFxuMjg0NTpcXHRcXHRcXHRyZXR1cm4gYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2luZF9obChodHQsIFxcdTAwMjZyZXNwLVxcdTAwM2VyeF9pbmRfaGwsIHNrYixcXG4yODQ2OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBIVFRfUlhfTk9OX1BOX0NIRUNLLFxcbjI4NDc6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIEhUVF9SWF9OT05fVEtJUF9NSUMpO1xcbjI4NDg6XFx0XFx0fVxcbjI4NDk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA4OjQyOjU2LjU2MjA4MzkxMloiLCJTZXEiOjMzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3MjEwOTIzNzE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJ3MgSW1wYWN0KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIHBhdGNoIGFjdHVhbGx5ICpkb2VzKi4gSSBzZWUgaXQgbWFrZXMgc29tZSBrZXkgY2hhbmdlczpcblxuMS4gICoqYGF0aDEwa19yZWdfdmFsdWVfd3JpdGVgKio6IFRoZSBjb2RlIG5vdyB2YWxpZGF0ZXMgYHJlZ19hZGRyYCBhZ2FpbnN0IGBhci1cdTAwM2Vod19wYXJhbXMucmVnX3NpemVgIGJlZm9yZSB3cml0aW5nIHRvIGhhcmR3YXJlLiBHb29kLCB0aGF0J3MgYSBjcnVjaWFsIGJvdW5kcyBjaGVjay5cbjIuICAqKmBhdGgxMGtfbWVtX3ZhbHVlX3dyaXRlYCoqOiBUaGlzIHZhbGlkYXRlcyBib3RoIGAqcHBvc2AgYW5kIGBjb3VudGAgYWdhaW5zdCBgYXItXHUwMDNlaHdfcGFyYW1zLm1lbV9zaXplYCBiZWZvcmUgaXQgZ2V0cyBpbnRvIGFsbG9jYXRpbmcgYW5kIGNvcHlpbmcuIFRoaXMgaXMgc291bmQsIHByZXZlbnRpbmcgcG90ZW50aWFsIG92ZXJmbG93cy5cbjMuICAqKmBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGxgKio6IFRoaXMgYWRkcyBzZXZlcmFsIGJvdW5kcyBjaGVja3MuIFNwZWNpZmljYWxseSwgb24gYHNrYi1cdTAwM2VsZW5gLCBgbnVtX21wZHVfcmFuZ2VzYCwgYHRvdF9oZHJfbGVuYCwgYW5kIGByeF9obC1cdTAwM2Vmd19kZXNjLmxlbmAuIFByZXZlbnRpbmcgb3V0IG9mIGJvdW5kcyByZWFkcyBhbmQgaW52YWxpZCBvZmZzZXRzLlxuXG5Ob3csIHRoZSByZWFsIHF1ZXN0aW9uOiBkb2VzIHRoaXMgaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZXMgb3IsIGNyaXRpY2FsbHksIGtlcm5lbC10by11c2VyIGluZm8gbGVha3M/IExldCdzIGdvIHRocm91Z2ggdGhlIGNoZWNrbGlzdDpcblxuKiAgICoqVW5pbml0aWFsaXplZCB2YXJpYWJsZXMgaW50cm9kdWNlZD8qKiBObywgbm90aGluZyBuZXcgaGVyZS5cbiogICAqKkFueSBgY29weV90b191c2VyYCwgYHB1dF91c2VyYCwgb3IgTmV0bGluayBsZWFrcz8qKiBOb3BlLCBub3Qgc2VlaW5nIGFueXRoaW5nIGxpa2UgdGhhdC5cbiogICAqKkFsdGVyZWQgbGVuZ3RoIGNhbGN1bGF0aW9ucyBvciBib3VuZHMgY2hlY2tzIHRoYXQgY291bGQgKmFsbG93KiBhY2Nlc3MgdG8gdW5pbml0aWFsaXplZCBieXRlcz8qKiBObyB3YXksIGluIGZhY3QsIHRoaXMgcGF0Y2ggKmFkZHMqIHN0cmljdGVyIGJvdW5kcyBjaGVja3MgYW5kIHZhbGlkYXRpb24sIG1ha2luZyBpdCAqbW9yZSogcm9idXN0LlxuKiAgICoqQ29uZGl0aW9uYWwgbG9naWMgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXM/KiogTm8sIHRoZSBkYXRhIHNvdXJjZXMgc2VlbSBzYWZlOiBgcmVnX2FkZHJgIGNvbWVzIGZyb20gYGFyLVx1MDAzZWRlYnVnLnJlZ19hZGRyYCwgYHBwb3NgIGZyb20gdGhlIGNhbGxlciwgcGFja2V0IGRhdGEgKHNrYiBtZXRhZGF0YSkgYW5kIHJlY2VpdmVkIGRhdGEgZnJvbSB0aGUgcGFja2V0LlxuXG5UaGUgcG90ZW50aWFsIGlzc3VlcyBhZGRyZXNzZWQgc2VlbSB0byBiZSBvdXQtb2YtYm91bmRzIGFjY2VzcywgYnVmZmVyIG92ZXJmbG93cywgYW5kIGludmFsaWQgZGV2aWNlIG1lbW9yeSBhY2Nlc3MuIEkgYWxzbyBzcG90dGVkIHRoYXQgbWlzc2VkIG11dGV4IHVubG9jayBpbiB0aGUgZXJyb3IgcGF0aCBvZiBgYXRoMTBrX21lbV92YWx1ZV93cml0ZWAuIExvY2tpbmcgYnVncyBhcmUgTE9DS0RFUCB0ZXJyaXRvcnksIG91dC1vZi1ib3VuZHMgaXNzdWVzIEtBU0FOLlxuXG5MZXQncyBkb3VibGUtY2hlY2sgdGhlIHJ1bGVzIHJlZ2FyZGluZyBLTVNBTi4gVGhlIFwiUnVsZVwiIGNsZWFybHkgc3RhdGVzIEtNU0FOIGlzIGZvciAqdW5pbml0aWFsaXplZCBtZW1vcnkqIHJpc2tzIG9ubHkuIElmIHNvbWV0aGluZyBlbHNlIGlzIGFscmVhZHkgY292ZXJlZCBieSBLQVNBTiBvciBMT0NLREVQLCB3ZSBkb24ndCBuZWVkIGl0LlxuXG5UaGUgXCJTZXQgTmVlZHNLTVNBTj1mYWxzZVwiIGNyaXRlcmlhIHBlcmZlY3RseSBmaXRzIGhlcmU6XG5cbiogICBUaGUgcmlza3MgYXJlIG91dC1vZi1ib3VuZHMgYWNjZXNzLCB3aGljaCBpcyBLQVNBTidzIGpvYi5cbiogICBFdmVyeXRoaW5nIGlzIGZ1bGx5IHplcm9lZCBvciBpbml0aWFsaXplZC5cbiogICBObyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzZSBvciBsZWFrcy5cblxuT2theSwgbGV0J3MgZG8gYSBxdWljayBmaW5hbCBzd2VlcCB0aHJvdWdoIHRoZSBwYXRjaCBhbmQgcmVsYXRlZCBmaWxlcywganVzdCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZy4gQWxsIGxvb2tzIGdvb2QuIEl0IHNlZW1zIHNhZmUgdG8gc2V0IGBOZWVkc0tNU0FOPWZhbHNlYC5cblxuTm93LCB0aW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzk5NCwiT3V0cHV0VG9rZW5zIjoyNDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NjIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwODo0MzowMy43NzMwMTI0NzhaIiwiU2VxIjozNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTU0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYm91bmRzIGFuZCB2YWxpZGl0eSBjaGVja3MgaW4gYXRoMTBrIGRlYnVnZnMgd3JpdGUgaGFuZGxlcnMgKGF0aDEwa19yZWdfdmFsdWVfd3JpdGUsIGF0aDEwa19tZW1fdmFsdWVfd3JpdGUpIGFuZCBpbiB0aGUgSFRUIFJYIGZyYWdtZW50IHByb2Nlc3NpbmcgZnVuY3Rpb24gKGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obCkuIFxcblxcblNwZWNpZmljYWxseTpcXG4tIFJlZ2lzdGVyIGFkZHJlc3MgYW5kIG1lbW9yeSBvZmZzZXQvY291bnQgdmFsaWRhdGlvbnMgcHJldmVudCBvdXQtb2YtYm91bmRzIEhJRiBkaWFnbm9zdGljcyBhbmQgcmVnaXN0ZXIgd3JpdGVzLlxcbi0gTGVuZ3RoIGNoZWNrcyBvbiBza2IgYW5kIGhlYWRlciBvZmZzZXRzIGluIGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obCBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgaW50byBza2IgYnVmZmVyIGRhdGEuXFxuLSBBbnkgcG90ZW50aWFsIGVycm9yLXBhdGggaXNzdWVzIChzdWNoIGFzIGVhcmx5IHJldHVybiB3aXRob3V0IHVubG9ja2luZyBjb25mX211dGV4KSBhcmUgbG9ja2luZyBidWdzIGRldGVjdGVkIGJ5IExPQ0tERVAuXFxuXFxuTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgYWxsb2NhdGlvbnMsIHJlYWRzIG9mIHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBmaWVsZHMsIG9yIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzIGFyZSBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQuIFRoZXJlZm9yZSwgc3RhbmRhcmQgS0FTQU4gYW5kIExPQ0tERVAgY29uZmlndXJhdGlvbnMgYXJlIGZ1bGx5IHN1ZmZpY2llbnQsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBhbmQgdmFsaWRpdHkgY2hlY2tzIGluIGF0aDEwayBkZWJ1Z2ZzIHdyaXRlIGhhbmRsZXJzIChhdGgxMGtfcmVnX3ZhbHVlX3dyaXRlLCBhdGgxMGtfbWVtX3ZhbHVlX3dyaXRlKSBhbmQgaW4gdGhlIEhUVCBSWCBmcmFnbWVudCBwcm9jZXNzaW5nIGZ1bmN0aW9uIChhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGwpLiBcXG5cXG5TcGVjaWZpY2FsbHk6XFxuLSBSZWdpc3RlciBhZGRyZXNzIGFuZCBtZW1vcnkgb2Zmc2V0L2NvdW50IHZhbGlkYXRpb25zIHByZXZlbnQgb3V0LW9mLWJvdW5kcyBISUYgZGlhZ25vc3RpY3MgYW5kIHJlZ2lzdGVyIHdyaXRlcy5cXG4tIExlbmd0aCBjaGVja3Mgb24gc2tiIGFuZCBoZWFkZXIgb2Zmc2V0cyBpbiBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGwgcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIGludG8gc2tiIGJ1ZmZlciBkYXRhLlxcbi0gQW55IHBvdGVudGlhbCBlcnJvci1wYXRoIGlzc3VlcyAoc3VjaCBhcyBlYXJseSByZXR1cm4gd2l0aG91dCB1bmxvY2tpbmcgY29uZl9tdXRleCkgYXJlIGxvY2tpbmcgYnVncyBkZXRlY3RlZCBieSBMT0NLREVQLlxcblxcbk5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFsbG9jYXRpb25zLCByZWFkcyBvZiB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgZmllbGRzLCBvciBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcyBhcmUgaW50cm9kdWNlZCBvciBleHBvc2VkLiBUaGVyZWZvcmUsIHN0YW5kYXJkIEtBU0FOIGFuZCBMT0NLREVQIGNvbmZpZ3VyYXRpb25zIGFyZSBmdWxseSBzdWZmaWNpZW50LCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow98gh2[0].run-triage(0) Phase: Succeeded StartedAt: 2026-09-10 08:25:11 +0000 UTC FinishedAt: 2026-09-10 08:43:05 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "13e51269b6656768dc595ed6025e4974f2026543", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH10K", "ATH10K_USB", "ATH10K_DEBUGFS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "wireless-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git", "commit_hash": "13e51269b6656768dc595ed6025e4974f2026543", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "ATH10K", "ATH10K_USB", "ATH10K_DEBUGFS" ], "series_id": "576ba9bc-1756-4f5a-9fa2-c13dc11f2a6d" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ath10k_htt_rx_proc_rx_frag_ind_hl", "ath10k_reg_value_write", "ath10k_mem_value_write", "ath10k_htt_t2h_msg_handler" ], "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+CgkJCTx0ZD4yMDI2LzA5LzEwIDA4OjQxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0FUSDEwSyYjMzQ7LAogICAgJiMzNDtBVEgxMEtfVVNCJiMzNDssCiAgICAmIzM0O0FUSDEwS19ERUJVR0ZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsJiMzNDssCiAgICAmIzM0O2F0aDEwa19yZWdfdmFsdWVfd3JpdGUmIzM0OywKICAgICYjMzQ7YXRoMTBrX21lbV92YWx1ZV93cml0ZSYjMzQ7LAogICAgJiMzNDthdGgxMGtfaHR0X3QyaF9tc2dfaGFuZGxlciYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGFuZCB2YWxpZGl0eSBjaGVja3MgaW4gYXRoMTBrIGRlYnVnZnMgd3JpdGUgaGFuZGxlcnMgKGF0aDEwa19yZWdfdmFsdWVfd3JpdGUsIGF0aDEwa19tZW1fdmFsdWVfd3JpdGUpIGFuZCBpbiB0aGUgSFRUIFJYIGZyYWdtZW50IHByb2Nlc3NpbmcgZnVuY3Rpb24gKGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obCkuIFxuXG5TcGVjaWZpY2FsbHk6XG4tIFJlZ2lzdGVyIGFkZHJlc3MgYW5kIG1lbW9yeSBvZmZzZXQvY291bnQgdmFsaWRhdGlvbnMgcHJldmVudCBvdXQtb2YtYm91bmRzIEhJRiBkaWFnbm9zdGljcyBhbmQgcmVnaXN0ZXIgd3JpdGVzLlxuLSBMZW5ndGggY2hlY2tzIG9uIHNrYiBhbmQgaGVhZGVyIG9mZnNldHMgaW4gYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyBpbnRvIHNrYiBidWZmZXIgZGF0YS5cbi0gQW55IHBvdGVudGlhbCBlcnJvci1wYXRoIGlzc3VlcyAoc3VjaCBhcyBlYXJseSByZXR1cm4gd2l0aG91dCB1bmxvY2tpbmcgY29uZl9tdXRleCkgYXJlIGxvY2tpbmcgYnVncyBkZXRlY3RlZCBieSBMT0NLREVQLlxuXG5ObyB1bmluaXRpYWxpemVkIG1lbW9yeSBhbGxvY2F0aW9ucywgcmVhZHMgb2YgdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIGZpZWxkcywgb3Iga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MgYXJlIGludHJvZHVjZWQgb3IgZXhwb3NlZC4gVGhlcmVmb3JlLCBzdGFuZGFyZCBLQVNBTiBhbmQgTE9DS0RFUCBjb25maWd1cmF0aW9ucyBhcmUgZnVsbHkgc3VmZmljaWVudCwgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kYXJ5IGFuZCBsZW5ndGggdmFsaWRhdGlvbiBjaGVja3MgdG8gYXRoMTBrIGRlYnVnZnMgd3JpdGUgaGFuZGxlcnMgKGF0aDEwa19yZWdfdmFsdWVfd3JpdGUsIGF0aDEwa19tZW1fdmFsdWVfd3JpdGUpIGFuZCBSWCBmcmFnbWVudCBwYWNrZXQgcHJvY2Vzc2luZyBpbiBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGwuIEF0aDEwayBzdXBwb3J0cyBVU0IgZGV2aWNlcyAoQVRIMTBLX1VTQikgYW5kIGRlYnVnZnMgb3BlcmF0aW9ucywgd2hpY2ggY2FuIGJlIHJlYWNoZWQgYW5kIGZ1enplZCB2aWEgVVNCIGVtdWxhdGlvbiAoUmF3IEdhZGdldCkgYW5kIGRlYnVnZnMgaW50ZXJmYWNlcyBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwODo0MTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDBjMWUyNjkxMWQxZjU4NGQ1YzBiYzE5YjBhNmU0ZDJlY2NhMDZlNzhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IFNlcCAxMCAwODo0MTozMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmNcbmluZGV4IGZiNjFlNTNmZjRjMzQuLjUwZTAxNzAyMTFiODEgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuY1xuQEAgLTcyOSw2ICYjNDM7NzI5LDEzIEBAIHN0YXRpYyBzc2l6ZV90IGF0aDEwa19yZWdfdmFsdWVfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsXG4gXG4gXHRyZWdfYWRkciA9IGFyLVx1MDAzZWRlYnVnLnJlZ19hZGRyO1xuIFxuJiM0MztcdC8qIEZJWDogVmFsaWRhdGUgcmVnaXN0ZXIgYWRkcmVzcyAqL1xuJiM0MztcdGlmIChyZWdfYWRkciBcdTAwM2UgYXItXHUwMDNlaHdfcGFyYW1zLnJlZ19zaXplKSB7XG4mIzQzO1x0XHRhdGgxMGtfd2FybihhciwgXCYjMzQ7SW52YWxpZCByZWdpc3RlciBhZGRyZXNzIDB4JTA4eFxcblwmIzM0OywgcmVnX2FkZHIpO1xuJiM0MztcdFx0cmV0ID0gLUVJTlZBTDtcbiYjNDM7XHRcdGdvdG8gZXhpdDtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0cmV0ID0ga3N0cnRvdTMyX2Zyb21fdXNlcih1c2VyX2J1ZiwgY291bnQsIDAsIFx1MDAyNnJlZ192YWwpO1xuIFx0aWYgKHJldClcbiBcdFx0Z290byBleGl0O1xuQEAgLTgxOSw2ICYjNDM7ODI2LDE5IEBAIHN0YXRpYyBzc2l6ZV90IGF0aDEwa19tZW1fdmFsdWVfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsXG4gXG4gXHRtdXRleF9sb2NrKFx1MDAyNmFyLVx1MDAzZWNvbmZfbXV0ZXgpO1xuIFxuJiM0MztcdC8qIEZJWDogVmFsaWRhdGUgYWRkcmVzcyBhZ2FpbnN0IG1lbW9yeSBzaXplICovXG4mIzQzO1x0aWYgKCpwcG9zIFx1MDAzZSBhci1cdTAwM2Vod19wYXJhbXMubWVtX3NpemUpIHtcbiYjNDM7XHRcdGF0aDEwa193YXJuKGFyLCBcJiMzNDtJbnZhbGlkIGFkZHJlc3MgMHglMDh4IGZvciBtZW1fdmFsdWVcXG5cJiMzNDssICh1MzIpKnBwb3MpO1xuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHQvKiBGSVg6IFZhbGlkYXRlIHNpemUgYWdhaW5zdCByZW1haW5pbmcgbWVtb3J5ICovXG4mIzQzO1x0aWYgKGNvdW50IFx1MDAzZSBhci1cdTAwM2Vod19wYXJhbXMubWVtX3NpemUgLSAqcHBvcykge1xuJiM0MztcdFx0YXRoMTBrX3dhcm4oYXIsIFwmIzM0O0ludmFsaWQgc2l6ZSAlenUgZm9yIG1lbV92YWx1ZSBhdCAweCUwOHhcXG5cJiMzNDssXG4mIzQzO1x0XHRcdCAgICBjb3VudCwgKHUzMikqcHBvcyk7XG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0YnVmID0gdm1hbGxvYyhjb3VudCk7XG4gXHRpZiAoIWJ1Zikge1xuIFx0XHRyZXQgPSAtRU5PTUVNO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jXG5pbmRleCBhYjJkMzczYjQ3NTBkLi40ZmFiYjkyNjQ3ZDlmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguY1xuQEAgLTI3NzUsNiAmIzQzOzI3NzUsMTMgQEAgc3RhdGljIGJvb2wgYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsKHN0cnVjdCBhdGgxMGtfaHR0ICpodHQsXG4gXHRzdHJ1Y3QgaHR0X3Jlc3AgKnJlc3A7XG4gXHRzaXplX3QgdG90X2hkcl9sZW47XG4gXG4mIzQzO1xuJiM0MztcdC8qIEZJWDogVmFsaWRhdGUgc2tiIGxlbmd0aCBiZWZvcmUgc2tiX3B1bGwgKi9cbiYjNDM7XHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2MgSFRUX1JYX0ZSQUdfSU5EX0lORk8wX0hFQURFUl9MRU4pIHtcbiYjNDM7XHRcdGF0aDEwa193YXJuKGFyLCBcJiMzNDtJbnZhbGlkIHNrYiBsZW4gJWQgZm9yIFJYX0ZSQUdfSU5EXFxuXCYjMzQ7LCBza2ItXHUwMDNlbGVuKTtcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XHR9XG4mIzQzO1xuIFx0cmVzcCA9IChzdHJ1Y3QgaHR0X3Jlc3AgKikoc2tiLVx1MDAzZWRhdGEgJiM0MzsgSFRUX1JYX0ZSQUdfSU5EX0lORk8wX0hFQURFUl9MRU4pO1xuIFx0c2tiX3B1bGwoc2tiLCBIVFRfUlhfRlJBR19JTkRfSU5GTzBfSEVBREVSX0xFTik7XG4gXHRza2JfdHJpbShza2IsIHNrYi1cdTAwM2VsZW4gLSBGQ1NfTEVOKTtcbkBAIC0yNzkyLDYgJiM0MzsyNzk5LDEzIEBAIHN0YXRpYyBib29sIGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obChzdHJ1Y3QgYXRoMTBrX2h0dCAqaHR0LFxuIFx0bnVtX21wZHVfcmFuZ2VzID0gTVMoX19sZTMyX3RvX2NwdShyeF9obC1cdTAwM2VoZHIuaW5mbzEpLFxuIFx0XHRcdCAgICAgSFRUX1JYX0lORElDQVRJT05fSU5GTzFfTlVNX01QRFVfUkFOR0VTKTtcbiBcbiYjNDM7XHQvKiBGSVg6IFZhbGlkYXRlIG51bV9tcGR1X3JhbmdlcyAqL1xuJiM0MztcdGlmIChudW1fbXBkdV9yYW5nZXMgXHUwMDNlIDEpIHtcbiYjNDM7XHRcdGF0aDEwa193YXJuKGFyLCBcJiMzNDtJbnZhbGlkIG51bV9tcGR1X3JhbmdlcyAlZFxcblwmIzM0OywgbnVtX21wZHVfcmFuZ2VzKTtcbiYjNDM7XHRcdGdvdG8gZXJyO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1xuIFx0dG90X2hkcl9sZW4gPSBzaXplb2Yoc3RydWN0IGh0dF9yZXNwX2hkcikgJiM0MztcbiBcdFx0ICAgICAgc2l6ZW9mKHJ4X2hsLVx1MDAzZWhkcikgJiM0MztcbiBcdFx0ICAgICAgc2l6ZW9mKHJ4X2hsLVx1MDAzZXBwZHUpICYjNDM7XG5AQCAtMjc5OSwxMCAmIzQzOzI4MTMsMjYgQEAgc3RhdGljIGJvb2wgYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsKHN0cnVjdCBhdGgxMGtfaHR0ICpodHQsXG4gXHRcdCAgICAgIHNpemVvZihyeF9obC1cdTAwM2Vmd19kZXNjKSAmIzQzO1xuIFx0XHQgICAgICBzaXplb2Yoc3RydWN0IGh0dF9yeF9pbmRpY2F0aW9uX21wZHVfcmFuZ2UpICogbnVtX21wZHVfcmFuZ2VzO1xuIFxuJiM0MztcdC8qIEZJWDogVmFsaWRhdGUgdG90X2hkcl9sZW4gYWdhaW5zdCBza2IgbGVuZ3RoICovXG4mIzQzO1x0aWYgKHRvdF9oZHJfbGVuIFx1MDAzZSBza2ItXHUwMDNlbGVuKSB7XG4mIzQzO1x0XHRhdGgxMGtfd2FybihhciwgXCYjMzQ7SW52YWxpZCB0b3RfaGRyX2xlbiAlenUgXHUwMDNlIHNrYi1cdTAwM2VsZW4gJXVcXG5cJiMzNDssXG4mIzQzO1x0XHRcdCAgICB0b3RfaGRyX2xlbiwgc2tiLVx1MDAzZWxlbik7XG4mIzQzO1x0XHRnb3RvIGVycjtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcbiBcdHRpZCA9ICBNUyhyeF9obC1cdTAwM2VoZHIuaW5mbzAsIEhUVF9SWF9JTkRJQ0FUSU9OX0lORk8wX0VYVF9USUQpO1xuIFx0cnhfZGVzYyA9IChzdHJ1Y3QgaHR0X2hsX3J4X2Rlc2MgKikoc2tiLVx1MDAzZWRhdGEgJiM0MzsgdG90X2hkcl9sZW4pO1xuIFx0cnhfZGVzY19pbmZvID0gX19sZTMyX3RvX2NwdShyeF9kZXNjLVx1MDAzZWluZm8pO1xuIFxuJiM0MztcbiYjNDM7XHQvKiBGSVg6IFZhbGlkYXRlIGZ3X2Rlc2MubGVuIGFnYWluc3QgcmVtYWluaW5nIHNrYiBsZW5ndGggKi9cbiYjNDM7XHRpZiAocnhfaGwtXHUwMDNlZndfZGVzYy5sZW4gXHUwMDNlIHNrYi1cdTAwM2VsZW4gLSB0b3RfaGRyX2xlbikge1xuJiM0MztcdFx0YXRoMTBrX3dhcm4oYXIsIFwmIzM0O0ludmFsaWQgZndfZGVzYy5sZW4gJXUgXHUwMDNlIHJlbWFpbmluZyBza2IgbGVuXFxuXCYjMzQ7LFxuJiM0MztcdFx0XHQgICAgcnhfaGwtXHUwMDNlZndfZGVzYy5sZW4pO1xuJiM0MztcdFx0Z290byBlcnI7XG4mIzQzO1x0fVxuJiM0MztcbiBcdGhkciA9IChzdHJ1Y3QgaWVlZTgwMjExX2hkciAqKSgodTggKilyeF9kZXNjICYjNDM7IHJ4X2hsLVx1MDAzZWZ3X2Rlc2MubGVuKTtcbiBcbiBcdGlmIChpc19tdWx0aWNhc3RfZXRoZXJfYWRkcihoZHItXHUwMDNlYWRkcjEpKSB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDg6NDE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QVRIMTBLJiMzNDssCiAgICAmIzM0O0FUSDEwS19VU0ImIzM0OywKICAgICYjMzQ7QVRIMTBLX0RFQlVHRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGwmIzM0OywKICAgICYjMzQ7YXRoMTBrX3JlZ192YWx1ZV93cml0ZSYjMzQ7LAogICAgJiMzNDthdGgxMGtfbWVtX3ZhbHVlX3dyaXRlJiMzNDssCiAgICAmIzM0O2F0aDEwa19odHRfdDJoX21zZ19oYW5kbGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRhcnkgYW5kIGxlbmd0aCB2YWxpZGF0aW9uIGNoZWNrcyB0byBhdGgxMGsgZGVidWdmcyB3cml0ZSBoYW5kbGVycyAoYXRoMTBrX3JlZ192YWx1ZV93cml0ZSwgYXRoMTBrX21lbV92YWx1ZV93cml0ZSkgYW5kIFJYIGZyYWdtZW50IHBhY2tldCBwcm9jZXNzaW5nIGluIGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obC4gQXRoMTBrIHN1cHBvcnRzIFVTQiBkZXZpY2VzIChBVEgxMEtfVVNCKSBhbmQgZGVidWdmcyBvcGVyYXRpb25zLCB3aGljaCBjYW4gYmUgcmVhY2hlZCBhbmQgZnV6emVkIHZpYSBVU0IgZW11bGF0aW9uIChSYXcgR2FkZ2V0KSBhbmQgZGVidWdmcyBpbnRlcmZhY2VzIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZXZhbHVhdGUgd2hldGhlciBpdCB3YXJyYW50cyBmdXp6aW5nIHdpdGggc3l6a2FsbGVyLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiBpbnRlcm5hbCBhc3N1bXB0aW9ucy4gWW91IG11c3QgYWN0aXZlbHkgdXNlIHlvdXIgY29kZSBhY2Nlc3MKdG9vbHMgdG8gaW5zcGVjdCB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlLCBjYWxsZXJzLCBhbmQgc3Vycm91bmRpbmcgY29udGV4dC4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjEuIENPUkUgVFJJQUdFIFBISUxPU09QSFkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KVGhlIGdvYWwgb2YgcGF0Y2ggZnV6emluZyBpcyB0byBkaXNjb3ZlciBjcmFzaGVzLCByZWdyZXNzaW9ucywgZXhwb3NlZCBsYXRlbnQgYnVncywKYW5kIG5ld2x5IHRyaWdnZXJlZCBhc3NlcnRpb25zIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIHNlcmllcy4KCi0gUkVBQ0hBQklMSVRZIElTIFRIRSBQUklNQVJZIEdBVEU6CiAgRnV6emluZyBjYW4gb25seSBkaXNjb3ZlciBidWdzIGluIGNvZGUgdGhhdCBjYW4gYWN0dWFsbHkgZXhlY3V0ZSBpbiBzdGFuZGFyZCB2aXJ0dWFsaXplZAogIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuCiAgSWYgdGhlIG1vZGlmaWVkIGNvZGUgaXMgc3RydWN0dXJhbGx5IHVucmVhY2hhYmxlIChzZWUgU2VjdGlvbiAyKSwgaXQgTVVTVCBOT1QgYmUgZnV6emVkLAogIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBhZGRzIGFzc2VydGlvbnMgb3IgY29tcGxleCBsb2dpYy4KCi0gRE8gTk9UIEJMSU5ETFkgVFJVU1QgJiMzNDtOTyBGVU5DVElPTkFMIENIQU5HRSYjMzQ7IChORkNJKSBPUiAmIzM0O1JFRkFDVE9SSU5HJiMzNDsgQ0xBSU1TOgogIFBhdGNoIGF1dGhvcnMgcm91dGluZWx5IGxhYmVsIGNoYW5nZXMgYXMgJiMzNDtjbGVhbnVwcyYjMzQ7LCAmIzM0O3JlZmFjdG9yaW5ncyYjMzQ7LCBvciBzdGF0ZQogICYjMzQ7Tm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWQmIzM0Oy4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuCiAgQ29kZSByZWZhY3RvcmluZ3MgdGhhdCByZWFycmFuZ2UgbG9naWMsIGludHJvZHVjZSBoZWxwZXIgZnVuY3Rpb25zLCBvciBhbHRlciBzdGF0ZSBtYW5hZ2VtZW50CiAgaW4gY29yZSBzdWJzeXN0ZW1zIGZyZXF1ZW50bHkgaW50cm9kdWNlIHN1YnRsZSBzZW1hbnRpYyBzaGlmdHMgb3IgdW5jb3ZlciBsYXRlbnQga2VybmVsIGJ1Z3MuCiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC4KCi0gTkVXIE9SIE1PRElGSUVEIEFTU0VSVElPTlMgSU4gUkVBQ0hBQkxFIENPREUgTVVTVCBCRSBGVVpaRUQ6CiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLAogIEJVR19PTiosIGxvY2tkZXBfYXNzZXJ0KikgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMsIGl0IGVuZm9yY2VzIG5ldyBvciBzdHJpY3RlciBpbnZhcmlhbnRzLgogIEV2ZW4gaWYgdGhlIGF1dGhvciBiZWxpZXZlcyB0aGUgaW52YXJpYW50IGFsd2F5cyBob2xkcywgZnV6emluZyBpcyBlc3NlbnRpYWwgdG8gdmVyaWZ5IHdoZXRoZXIKICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoyLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIE9OTFkgSUYgYWxsIG1vZGlmaWVkIGNvZGUgZmFsbHMgc3RyaWN0bHkgaW50byBvbmUgb3IgbW9yZSBvZiB0aGVzZSBjYXRlZ29yaWVzOgoKLSBOb24ta2VybmVsIGFuZCBub24tZXhlY3V0YWJsZSBjaGFuZ2VzOgogICogTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgY29tbWVudHMsIG9yIHNwZWxsaW5nIGZpeGVzLgogICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pCiAgICB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIGNvbXBpbGVkIGtlcm5lbCBpbWFnZSAodm1saW51eCkgb3Iga2VybmVsIG1vZHVsZXMuCiAgKiBQdXJlbHkgZGVjb3JhdGl2ZSBsb2dnaW5nIChlLmcuLCBtZXNzYWdlIHN0cmluZ3MgaW4gcHJfZXJyLCBwcmludGssIGRldl9pbmZvKSBvciB0cmFjZXBvaW50cwogICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy4KICAqIEJ1aWxkIHN5c3RlbSBvciBLY29uZmlnIGNoYW5nZXMgdGhhdCBkbyBub3QgYWx0ZXIgY29tcGlsZWQgQyBsb2dpYy4KLSBTdHJ1Y3R1cmFsbHkgdW5yZWFjaGFibGUgaGFyZHdhcmU6CiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgICBpb25pYywgYW1kZ3B1KSByZXF1aXJpbmcgcGh5c2ljYWwgQVNJQy9QQ0llIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIFVucmVhY2hhYmxlIGV4ZWN1dGlvbiBwYXRoczoKICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZwogICAgcGh5c2ljYWwgUENJIGhvdC11bnBsdWcgb3IgbWFudWFsIHN5c2ZzIGRyaXZlciB1bmJpbmRpbmcuCiAgKiBDb2RlIHBhdGhzIGV4Y2x1c2l2ZSB0byBhcmNoaXRlY3R1cmVzIG90aGVyIHRoYW4gdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUuCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQozLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9dHJ1ZSAoUE9TSVRJVkUgQ1JJVEVSSUEpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZSB3aGVuZXZlciB0aGUgcGF0Y2ggdG91Y2hlcyByZWFjaGFibGUgZXhlY3V0YWJsZSBjb2RlLCBpbmNsdWRpbmc6Ci0gQ29yZSBTdWJzeXN0ZW1zOgogICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLAogICAgQlBGLCBzY2hlZHVsZXIsIGNvcmUgbmV0d29ya2luZywgVkZTLCBvciBzeXNjYWxsIGhhbmRsaW5nLgotIFJlZmFjdG9yaW5ncyBhbmQgQ29kZSBDbGVhbnVwczoKICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy4KLSBSdW50aW1lIEFzc2VydGlvbnMgYW5kIERlZmVuc2l2ZSBDaGVja3M6CiAgKiBBbnkgaW50cm9kdWN0aW9uIG9yIGFsdGVyYXRpb24gb2YgYXNzZXJ0aW9ucyAoV0FSTl9PTiosIFZNX1dBUk5fT04qLCBCVUdfT04qLCBldGMuKSBpbiByZWFjaGFibGUgcGF0aHMuCi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczoKICAqIERyaXZlcnMgYWNjZXNzaWJsZSB2aWEgdmlydHVhbCBidXNlcyAodmlydGlvLCBVU0IgZ2FkZ2V0LCBsb29wYmFjaywgbmV0bGluaywgYmluZGVyLCBzb2NrZXRzLCBldGMuKS4KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CjQuIEVYVFJBQ1RJTkcgRm9jdXNTeW1ib2xzIChQUkVWRU5USU5HIERJTFVUSU9OKQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpXaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjoKCi0gQVZPSUQgVUJJUVVJVE9VUyBMSUZFQ1lDTEUgSE9ULVBBVEhTOgogIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzCiAgKGluY2x1ZGluZywgYnV0IG5vdCBsaW1pdGVkIHRvOiBnZW5lcmFsIG1lbW9yeSBhbGxvY2F0b3JzIGFuZCBkZWFsbG9jYXRvcnMsIHBhZ2UgZmF1bHQKICBhbmQgdHJhcCBoYW5kbGVycywgb3IgY29yZSBzeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlczsgdGhpcyBpcyBub3QgYW4gZXhoYXVzdGl2ZSBsaXN0KS4KICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgJiMzNDtmb2N1c2VkJiMzNDssCiAgd2hpY2ggc2V2ZXJlbHkgZGlsdXRlcyBmdXp6aW5nIGVmZm9ydCBhd2F5IGZyb20gdGhlIGFjdHVhbCBjaGFuZ2VzLgoKLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6CiAgTGlzdCBmdW5jdGlvbnMgdGhhdCBzcGVjaWZpY2FsbHkgaW1wbGVtZW50IHRoZSBsb2dpYyBiZWluZyBhZGRlZCBvciBhbHRlcmVkLCBvciBkaXJlY3QgQVBJIGVudHJ5cG9pbnRzCiAgZm9yIHRoZSBzdWJzeXN0ZW0gZmVhdHVyZSB1bmRlciByZXZpZXcuCgotIEhBTkRMSU5HIFNUQVRJQyBJTkxJTkUgRlVOQ1RJT05TIElOIEhFQURFUlMgKC5oKToKICBDb21waWxlci1pbmxpbmVkIHN0YXRpYyBmdW5jdGlvbnMgKHN1Y2ggYXMgc3RhdGljIGlubGluZXMgaW4gbW0vKi5oIG9yIGluY2x1ZGUvbGludXgvKi5oKSBsYWNrCiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuCiAgSWYgdGhlIGNoYW5nZXMgYXJlIHByaW1hcmlseSBpbiBzdGF0aWMgaW5saW5lIGhlbHBlcnMsIGlkZW50aWZ5IG5vbi1zdGF0aWMsIGZlYXR1cmUtc3BlY2lmaWMgY2FsbGVyCiAgZnVuY3Rpb25zIGluIC5jIGZpbGVzIHRoYXQgZXhlcmNpc2UgdGhlbSAoYXZvaWRpbmcgdWJpcXVpdG91cyBsaWZlY3ljbGUgd3JhcHBlcnMpLgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KNS4gSURFTlRJRllJTkcgRW5hYmxlQ29uZmlncwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IGNvbXBpbGUgYW5kIHJlYWNoIHRoZSBtb2RpZmllZCBjb2RlOgotIEluc3BlY3QgS2NvbmZpZyBmaWxlcyBhbmQgI2lmZGVmIGd1YXJkczsgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCi0gQ2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC4KLSBTdHJpcCBhbnkgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+VGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjQKCkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMGMxZTI2OTExZDFmNTg0ZDVjMGJjMTliMGE2ZTRkMmVjY2EwNmU3OApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgU2VwIDEwIDA4OjQxOjMzIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jCmluZGV4IGZiNjFlNTNmZjRjMzQuLjUwZTAxNzAyMTFiODEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmMKQEAgLTcyOSw2ICYjNDM7NzI5LDEzIEBAIHN0YXRpYyBzc2l6ZV90IGF0aDEwa19yZWdfdmFsdWVfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsCiAKIAlyZWdfYWRkciA9IGFyLSZndDtkZWJ1Zy5yZWdfYWRkcjsKIAomIzQzOwkvKiBGSVg6IFZhbGlkYXRlIHJlZ2lzdGVyIGFkZHJlc3MgKi8KJiM0MzsJaWYgKHJlZ19hZGRyICZndDsgYXItJmd0O2h3X3BhcmFtcy5yZWdfc2l6ZSkgewomIzQzOwkJYXRoMTBrX3dhcm4oYXIsICYjMzQ7SW52YWxpZCByZWdpc3RlciBhZGRyZXNzIDB4JTA4eFxuJiMzNDssIHJlZ19hZGRyKTsKJiM0MzsJCXJldCA9IC1FSU5WQUw7CiYjNDM7CQlnb3RvIGV4aXQ7CiYjNDM7CX0KJiM0MzsKIAlyZXQgPSBrc3RydG91MzJfZnJvbV91c2VyKHVzZXJfYnVmLCBjb3VudCwgMCwgJmFtcDtyZWdfdmFsKTsKIAlpZiAocmV0KQogCQlnb3RvIGV4aXQ7CkBAIC04MTksNiAmIzQzOzgyNiwxOSBAQCBzdGF0aWMgc3NpemVfdCBhdGgxMGtfbWVtX3ZhbHVlX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLAogCiAJbXV0ZXhfbG9jaygmYW1wO2FyLSZndDtjb25mX211dGV4KTsKIAomIzQzOwkvKiBGSVg6IFZhbGlkYXRlIGFkZHJlc3MgYWdhaW5zdCBtZW1vcnkgc2l6ZSAqLwomIzQzOwlpZiAoKnBwb3MgJmd0OyBhci0mZ3Q7aHdfcGFyYW1zLm1lbV9zaXplKSB7CiYjNDM7CQlhdGgxMGtfd2FybihhciwgJiMzNDtJbnZhbGlkIGFkZHJlc3MgMHglMDh4IGZvciBtZW1fdmFsdWVcbiYjMzQ7LCAodTMyKSpwcG9zKTsKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwl9CiYjNDM7CiYjNDM7CS8qIEZJWDogVmFsaWRhdGUgc2l6ZSBhZ2FpbnN0IHJlbWFpbmluZyBtZW1vcnkgKi8KJiM0MzsJaWYgKGNvdW50ICZndDsgYXItJmd0O2h3X3BhcmFtcy5tZW1fc2l6ZSAtICpwcG9zKSB7CiYjNDM7CQlhdGgxMGtfd2FybihhciwgJiMzNDtJbnZhbGlkIHNpemUgJXp1IGZvciBtZW1fdmFsdWUgYXQgMHglMDh4XG4mIzM0OywKJiM0MzsJCQkgICAgY291bnQsICh1MzIpKnBwb3MpOwomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CX0KJiM0MzsKIAlidWYgPSB2bWFsbG9jKGNvdW50KTsKIAlpZiAoIWJ1ZikgewogCQlyZXQgPSAtRU5PTUVNOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmMKaW5kZXggYWIyZDM3M2I0NzUwZC4uNGZhYmI5MjY0N2Q5ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jCkBAIC0yNzc1LDYgJiM0MzsyNzc1LDEzIEBAIHN0YXRpYyBib29sIGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obChzdHJ1Y3QgYXRoMTBrX2h0dCAqaHR0LAogCXN0cnVjdCBodHRfcmVzcCAqcmVzcDsKIAlzaXplX3QgdG90X2hkcl9sZW47CiAKJiM0MzsKJiM0MzsJLyogRklYOiBWYWxpZGF0ZSBza2IgbGVuZ3RoIGJlZm9yZSBza2JfcHVsbCAqLwomIzQzOwlpZiAoc2tiLSZndDtsZW4gJmx0OyBIVFRfUlhfRlJBR19JTkRfSU5GTzBfSEVBREVSX0xFTikgewomIzQzOwkJYXRoMTBrX3dhcm4oYXIsICYjMzQ7SW52YWxpZCBza2IgbGVuICVkIGZvciBSWF9GUkFHX0lORFxuJiMzNDssIHNrYi0mZ3Q7bGVuKTsKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsJfQomIzQzOwogCXJlc3AgPSAoc3RydWN0IGh0dF9yZXNwICopKHNrYi0mZ3Q7ZGF0YSAmIzQzOyBIVFRfUlhfRlJBR19JTkRfSU5GTzBfSEVBREVSX0xFTik7CiAJc2tiX3B1bGwoc2tiLCBIVFRfUlhfRlJBR19JTkRfSU5GTzBfSEVBREVSX0xFTik7CiAJc2tiX3RyaW0oc2tiLCBza2ItJmd0O2xlbiAtIEZDU19MRU4pOwpAQCAtMjc5Miw2ICYjNDM7Mjc5OSwxMyBAQCBzdGF0aWMgYm9vbCBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGwoc3RydWN0IGF0aDEwa19odHQgKmh0dCwKIAludW1fbXBkdV9yYW5nZXMgPSBNUyhfX2xlMzJfdG9fY3B1KHJ4X2hsLSZndDtoZHIuaW5mbzEpLAogCQkJICAgICBIVFRfUlhfSU5ESUNBVElPTl9JTkZPMV9OVU1fTVBEVV9SQU5HRVMpOwogCiYjNDM7CS8qIEZJWDogVmFsaWRhdGUgbnVtX21wZHVfcmFuZ2VzICovCiYjNDM7CWlmIChudW1fbXBkdV9yYW5nZXMgJmd0OyAxKSB7CiYjNDM7CQlhdGgxMGtfd2FybihhciwgJiMzNDtJbnZhbGlkIG51bV9tcGR1X3JhbmdlcyAlZFxuJiMzNDssIG51bV9tcGR1X3Jhbmdlcyk7CiYjNDM7CQlnb3RvIGVycjsKJiM0MzsJfQomIzQzOwomIzQzOwogCXRvdF9oZHJfbGVuID0gc2l6ZW9mKHN0cnVjdCBodHRfcmVzcF9oZHIpICYjNDM7CiAJCSAgICAgIHNpemVvZihyeF9obC0mZ3Q7aGRyKSAmIzQzOwogCQkgICAgICBzaXplb2YocnhfaGwtJmd0O3BwZHUpICYjNDM7CkBAIC0yNzk5LDEwICYjNDM7MjgxMywyNiBAQCBzdGF0aWMgYm9vbCBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGwoc3RydWN0IGF0aDEwa19odHQgKmh0dCwKIAkJICAgICAgc2l6ZW9mKHJ4X2hsLSZndDtmd19kZXNjKSAmIzQzOwogCQkgICAgICBzaXplb2Yoc3RydWN0IGh0dF9yeF9pbmRpY2F0aW9uX21wZHVfcmFuZ2UpICogbnVtX21wZHVfcmFuZ2VzOwogCiYjNDM7CS8qIEZJWDogVmFsaWRhdGUgdG90X2hkcl9sZW4gYWdhaW5zdCBza2IgbGVuZ3RoICovCiYjNDM7CWlmICh0b3RfaGRyX2xlbiAmZ3Q7IHNrYi0mZ3Q7bGVuKSB7CiYjNDM7CQlhdGgxMGtfd2FybihhciwgJiMzNDtJbnZhbGlkIHRvdF9oZHJfbGVuICV6dSAmZ3Q7IHNrYi0mZ3Q7bGVuICV1XG4mIzM0OywKJiM0MzsJCQkgICAgdG90X2hkcl9sZW4sIHNrYi0mZ3Q7bGVuKTsKJiM0MzsJCWdvdG8gZXJyOwomIzQzOwl9CiYjNDM7CiYjNDM7CiAJdGlkID0gIE1TKHJ4X2hsLSZndDtoZHIuaW5mbzAsIEhUVF9SWF9JTkRJQ0FUSU9OX0lORk8wX0VYVF9USUQpOwogCXJ4X2Rlc2MgPSAoc3RydWN0IGh0dF9obF9yeF9kZXNjICopKHNrYi0mZ3Q7ZGF0YSAmIzQzOyB0b3RfaGRyX2xlbik7CiAJcnhfZGVzY19pbmZvID0gX19sZTMyX3RvX2NwdShyeF9kZXNjLSZndDtpbmZvKTsKIAomIzQzOwomIzQzOwkvKiBGSVg6IFZhbGlkYXRlIGZ3X2Rlc2MubGVuIGFnYWluc3QgcmVtYWluaW5nIHNrYiBsZW5ndGggKi8KJiM0MzsJaWYgKHJ4X2hsLSZndDtmd19kZXNjLmxlbiAmZ3Q7IHNrYi0mZ3Q7bGVuIC0gdG90X2hkcl9sZW4pIHsKJiM0MzsJCWF0aDEwa193YXJuKGFyLCAmIzM0O0ludmFsaWQgZndfZGVzYy5sZW4gJXUgJmd0OyByZW1haW5pbmcgc2tiIGxlblxuJiMzNDssCiYjNDM7CQkJICAgIHJ4X2hsLSZndDtmd19kZXNjLmxlbik7CiYjNDM7CQlnb3RvIGVycjsKJiM0MzsJfQomIzQzOwogCWhkciA9IChzdHJ1Y3QgaWVlZTgwMjExX2hkciAqKSgodTggKilyeF9kZXNjICYjNDM7IHJ4X2hsLSZndDtmd19kZXNjLmxlbik7CiAKIAlpZiAoaXNfbXVsdGljYXN0X2V0aGVyX2FkZHIoaGRyLSZndDthZGRyMSkpIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDg6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDIzNwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE5NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEF0aGVyb3MgV2lyZWxlc3MgRHJpdmVyIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBwYXRjaC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMgdG8gZGV0ZXJtaW5lIGlmIGl0JiMzOTtzIGV2ZW4gKndvcnRoKiBmdXp6aW5nLCBvciBpZiBpdCYjMzk7cyB0b3VjaGluZyBjb2RlIHRoYXQmIzM5O3MgZnVuZGFtZW50YWxseSB1bnJlYWNoYWJsZSB1bmRlciBub3JtYWwgY2lyY3Vtc3RhbmNlcy4gRmlyc3QsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgYmVpbmcgbW9kaWZpZWQuIEFoLCBpdCYjMzk7cyBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jYCBhbmQgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmNgLiBSaWdodCwgYXRoMTBrIOKAkyB0aGF0JiMzOTtzIHRoZSB3aXJlbGVzcyBkcml2ZXIgZm9yIHRob3NlIFF1YWxjb21tIEF0aGVyb3MgODAyLjExYWMgZGV2aWNlcy4gVGhpbmsgUUNBOTg4eCwgUUNBNjE3NCwgUUNBOTM3Ny4uLiB5b3Uga25vdywgdGhlIHVzdWFsIHN1c3BlY3RzLgoKTm93LCBteSBuZXh0IHF1ZXN0aW9uIGlzLCB3aGF0JiMzOTtzIHRoZSBhY2Nlc3MgdmVjdG9yIGhlcmU/IERvZXMgdGhpcyBkcml2ZXIgc3VwcG9ydCBVU0IsIFNESU8sIG9yIGlzIGl0IGlzb2xhdGVkIHRvIFBDST8gQ2FuIEkgZ2V0IGF0IGl0IHRocm91Z2ggc29tZXRoaW5nIGxpa2UgYG1hYzgwMjExX2h3c2ltYCBvciwgZXZlbiBiZXR0ZXIsIHRocm91Z2ggVVNCIGdhZGdldCBlbXVsYXRpb24gb3IgYSBzaW1pbGFyIG1ldGhvZCB0aGF0IFN5emthbGxlciBtaWdodCBvZmZlcj8gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGF0dGFjayBzdXJmYWNlLgoKVGltZSBmb3Igc29tZSBncmVwLWZ1ISBMZXQmIzM5O3Mgc2NhbiB0aGUgY29kZSBiYXNlIHRvIGRldGVybWluZSB0aGUgYnVzIHN1cHBvcnQuIEkmIzM5O2xsIG5lZWQgdG8ga25vdyB3aGljaCBidXNlcyBhcmUgc3VwcG9ydGVkIHRvIGtub3cgd2hhdCBoYXJkd2FyZSBJIG5lZWQgdG8gdGFyZ2V0IGFuZCB3aGF0IHRoZSBiZXN0IGF2ZW51ZSBmb3IgZnV6emluZyB0aGlzIHdpbGwgYmUuIFNvIFBDSSwgVVNCLCBTRElPLCBBSEIsIFNOT0MuLi4gbGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBncmVwIHJldmVhbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDg6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTBrX3VzYiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9NYWtlZmlsZT0zND1hdGgxMGtfc2Rpby15ICYjNDM7PSBzZGlvLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvTWFrZWZpbGUtMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL01ha2VmaWxlOjM2Om9iai0kKENPTkZJR19BVEgxMEtfVVNCKSAmIzQzOz0gYXRoMTBrX3VzYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL01ha2VmaWxlOjM3OmF0aDEwa191c2IteSAmIzQzOz0gdXNiLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvTWFrZWZpbGUtMzgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTg6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9wb3N0X3JlY3ZfdHJhbnNmZXJzKHN0cnVjdCBhdGgxMGsgKmFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxOTpcdFx0XHRcdFx0ICAgc3RydWN0IGF0aDEwa191c2JfcGlwZSAqcmVjdl9waXBlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYz0zNT1zdGF0aWMgc3RydWN0IGF0aDEwa191cmJfY29udGV4dCAqXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM2OmF0aDEwa191c2JfYWxsb2NfdXJiX2Zyb21fcGlwZShzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zNy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTc6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9mcmVlX3VyYl90b19waXBlKHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU4LVx0XHRcdFx0XHRzdHJ1Y3QgYXRoMTBrX3VyYl9jb250ZXh0ICp1cmJfY29udGV4dClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTczLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3NDpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2NsZWFudXBfcmVjdl91cmIoc3RydWN0IGF0aDEwa191cmJfY29udGV4dCAqdXJiX2NvbnRleHQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTc1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTc4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3OTpcdGF0aDEwa191c2JfZnJlZV91cmJfdG9fcGlwZSh1cmJfY29udGV4dC1cdTAwM2VwaXBlLCB1cmJfY29udGV4dCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgwLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjgyOnN0YXRpYyB2b2lkIGF0aDEwa191c2JfZnJlZV9waXBlX3Jlc291cmNlcyhzdHJ1Y3QgYXRoMTBrICphcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6ODM6XHRcdFx0XHRcdCAgIHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTg0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwNC1cdGZvciAoOzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA1Olx0XHR1cmJfY29udGV4dCA9IGF0aDEwa191c2JfYWxsb2NfdXJiX2Zyb21fcGlwZShwaXBlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA2LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTQ6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9jbGVhbnVwX3BpcGVfcmVzb3VyY2VzKHN0cnVjdCBhdGgxMGsgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTY6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTE3LVx0aW50IGk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTktXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBBVEgxMEtfVVNCX1BJUEVfTUFYOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTIwOlx0XHRhdGgxMGtfdXNiX2ZyZWVfcGlwZV9yZXNvdXJjZXMoYXIsIFx1MDAyNmFyX3VzYi1cdTAwM2VwaXBlc1tpXSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEyMS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEyNTpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX3JlY3ZfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMjYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMjctXHRzdHJ1Y3QgYXRoMTBrX3VyYl9jb250ZXh0ICp1cmJfY29udGV4dCA9IHVyYi1cdTAwM2Vjb250ZXh0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMjg6XHRzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlID0gdXJiX2NvbnRleHQtXHUwMDNlcGlwZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTI5LVx0c3RydWN0IGF0aDEwayAqYXIgPSBwaXBlLVx1MDAzZWFyX3VzYi1cdTAwM2Vhcjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE3Mi1jbGVhbnVwX3JlY3ZfdXJiOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxNzM6XHRhdGgxMGtfdXNiX2NsZWFudXBfcmVjdl91cmIodXJiX2NvbnRleHQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xNzQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xNzctXHRcdC8qIG91ciBmcmVlIHVyYnMgYXJlIHBpbGluZyB1cCwgcG9zdCBtb3JlIHRyYW5zZmVycyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxNzg6XHRcdGF0aDEwa191c2JfcG9zdF9yZWN2X3RyYW5zZmVycyhhciwgcGlwZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE3OS1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE4MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTgyOnN0YXRpYyB2b2lkIGF0aDEwa191c2JfdHJhbnNtaXRfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xODMte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xODQtXHRzdHJ1Y3QgYXRoMTBrX3VyYl9jb250ZXh0ICp1cmJfY29udGV4dCA9IHVyYi1cdTAwM2Vjb250ZXh0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxODU6XHRzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlID0gdXJiX2NvbnRleHQtXHUwMDNlcGlwZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTg2LVx0c3RydWN0IGF0aDEwayAqYXIgPSBwaXBlLVx1MDAzZWFyX3VzYi1cdTAwM2Vhcjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE5Ni1cdHVyYl9jb250ZXh0LVx1MDAzZXNrYiA9IE5VTEw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjE5NzpcdGF0aDEwa191c2JfZnJlZV91cmJfdG9fcGlwZSh1cmJfY29udGV4dC1cdTAwM2VwaXBlLCB1cmJfY29udGV4dCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE5OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTIwNC0vKiBwaXBlIG9wZXJhdGlvbnMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjA1OnN0YXRpYyB2b2lkIGF0aDEwa191c2JfcG9zdF9yZWN2X3RyYW5zZmVycyhzdHJ1Y3QgYXRoMTBrICphcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjA2Olx0XHRcdFx0XHQgICBzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpyZWN2X3BpcGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTIwNy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yMTItXHRmb3IgKDs7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjIxMzpcdFx0dXJiX2NvbnRleHQgPSBhdGgxMGtfdXNiX2FsbG9jX3VyYl9mcm9tX3BpcGUocmVjdl9waXBlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjE0LVx0XHRpZiAoIXVyYl9jb250ZXh0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjI5LVx0XHRcdFx0ICBBVEgxMEtfVVNCX1JYX0JVRkZFUl9TSVpFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoyMzA6XHRcdFx0XHQgIGF0aDEwa191c2JfcmVjdl9jb21wbGV0ZSwgdXJiX2NvbnRleHQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yMzEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yNTQtZXJyOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoyNTU6XHRhdGgxMGtfdXNiX2NsZWFudXBfcmVjdl91cmIodXJiX2NvbnRleHQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yNTYtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjI1ODpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2ZsdXNoX2FsbChzdHJ1Y3QgYXRoMTBrICphcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjU5LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjYwOlx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI2MS1cdGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjcwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoyNzE6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9zdGFydF9yZWN2X3BpcGVzKHN0cnVjdCBhdGgxMGsgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yNzIte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoyNzM6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjc0LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjc2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoyNzc6XHRhdGgxMGtfdXNiX3Bvc3RfcmVjdl90cmFuc2ZlcnMoYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI3OC1cdFx0XHRcdCAgICAgICBcdTAwMjZhcl91c2ItXHUwMDNlcGlwZXNbQVRIMTBLX1VTQl9QSVBFX1JYX0RBVEFdKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI4MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjgxOnN0YXRpYyB2b2lkIGF0aDEwa191c2JfdHhfY29tcGxldGUoc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBza19idWZmICpza2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI4Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yOTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjI5MjpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX3J4X2NvbXBsZXRlKHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yOTMte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzU5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozNjA6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9pb19jb21wX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zNjEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozNjI6XHRzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlID0gY29udGFpbmVyX29mKHdvcmssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM2MzpcdFx0XHRcdFx0XHQgICAgc3RydWN0IGF0aDEwa191c2JfcGlwZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzY0LVx0XHRcdFx0XHRcdCAgICBpb19jb21wbGV0ZV93b3JrKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM2OS1cdFx0aWYgKHBpcGUtXHUwMDNlZmxhZ3MgXHUwMDI2IEFUSDEwS19VU0JfUElQRV9GTEFHX1RYKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozNzA6XHRcdFx0YXRoMTBrX3VzYl90eF9jb21wbGV0ZShhciwgc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzcxLVx0XHRlbHNlXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM3MjpcdFx0XHRhdGgxMGtfdXNiX3J4X2NvbXBsZXRlKGFyLCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zNzMtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zNzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM3NjojZGVmaW5lIEFUSDEwS19VU0JfTUFYX0RJQUdfQ01EIChzaXplb2Yoc3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX2NtZF93cml0ZSkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM3NzojZGVmaW5lIEFUSDEwS19VU0JfTUFYX0RJQUdfUkVTUCAoc2l6ZW9mKHN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19yZXNwX3JlYWQpKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zNzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM3OTpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2Rlc3Ryb3koc3RydWN0IGF0aDEwayAqYXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM4MC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM4MTpcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zODItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM4MzpcdGF0aDEwa191c2JfZmx1c2hfYWxsKGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6Mzg0Olx0YXRoMTBrX3VzYl9jbGVhbnVwX3BpcGVfcmVzb3VyY2VzKGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzg1LVx0dXNiX3NldF9pbnRmZGF0YShhcl91c2ItXHUwMDNlaW50ZXJmYWNlLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM5MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MzkxOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9oaWZfc3RhcnQoc3RydWN0IGF0aDEwayAqYXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM5Mi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM5My1cdGludCBpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozOTQ6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzk1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zOTYtXHRhdGgxMGtfY29yZV9uYXBpX2VuYWJsZShhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM5NzpcdGF0aDEwa191c2Jfc3RhcnRfcmVjdl9waXBlcyhhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM5OC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQwOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NDA5OnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9oaWZfdHhfc2coc3RydWN0IGF0aDEwayAqYXIsIHU4IHBpcGVfaWQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQxMC1cdFx0XHRcdHN0cnVjdCBhdGgxMGtfaGlmX3NnX2l0ZW0gKml0ZW1zLCBpbnQgbl9pdGVtcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDExLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NDEyOlx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQxMzpcdHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGUgPSBcdTAwMjZhcl91c2ItXHUwMDNlcGlwZXNbcGlwZV9pZF07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQxNC1cdHN0cnVjdCBhdGgxMGtfdXJiX2NvbnRleHQgKnVyYl9jb250ZXh0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDE5LVx0Zm9yIChpID0gMDsgaSBcdTAwM2Mgbl9pdGVtczsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NDIwOlx0XHR1cmJfY29udGV4dCA9IGF0aDEwa191c2JfYWxsb2NfdXJiX2Zyb21fcGlwZShwaXBlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDIxLVx0XHRpZiAoIXVyYl9jb250ZXh0KSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00MzktXHRcdFx0XHQgIHNrYi1cdTAwM2VsZW4sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQ0MDpcdFx0XHRcdCAgYXRoMTBrX3VzYl90cmFuc21pdF9jb21wbGV0ZSwgdXJiX2NvbnRleHQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00NDEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00NjMtZXJyX2ZyZWVfdXJiX3RvX3BpcGU6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQ2NDpcdGF0aDEwa191c2JfZnJlZV91cmJfdG9fcGlwZSh1cmJfY29udGV4dC1cdTAwM2VwaXBlLCB1cmJfY29udGV4dCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ2NS1lcnI6XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00NjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQ2OTpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2hpZl9zdG9wKHN0cnVjdCBhdGgxMGsgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00NzAte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo0NzE6XHRhdGgxMGtfdXNiX2ZsdXNoX2FsbChhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ3Mi1cdGF0aDEwa19jb3JlX25hcGlfc3luY19kaXNhYmxlKGFyKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ3NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NDc1OnN0YXRpYyB1MTYgYXRoMTBrX3VzYl9oaWZfZ2V0X2ZyZWVfcXVldWVfbnVtYmVyKHN0cnVjdCBhdGgxMGsgKmFyLCB1OCBwaXBlX2lkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00NzYte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo0Nzc6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDc4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDgxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo0ODI6c3RhdGljIGludCBhdGgxMGtfdXNiX3N1Ym1pdF9jdHJsX291dChzdHJ1Y3QgYXRoMTBrICphcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDgzLVx0XHRcdFx0ICAgICAgdTggcmVxLCB1MTYgdmFsdWUsIHUxNiBpbmRleCwgdm9pZCAqZGF0YSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ4NS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQ4NjpcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00ODctXHR1OCAqYnVmID0gTlVMTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTUxNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTE2OnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9zdWJtaXRfY3RybF9pbihzdHJ1Y3QgYXRoMTBrICphcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTE3LVx0XHRcdFx0ICAgICB1OCByZXEsIHUxNiB2YWx1ZSwgdTE2IGluZGV4LCB2b2lkICpkYXRhLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTE5LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTIwOlx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTUyMS1cdHU4ICpidWYgPSBOVUxMO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTUxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo1NTI6c3RhdGljIGludCBhdGgxMGtfdXNiX2N0cmxfbXNnX2V4Y2hhbmdlKHN0cnVjdCBhdGgxMGsgKmFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01NTMtXHRcdFx0XHRcdHU4IHJlcV92YWwsIHU4ICpyZXFfYnVmLCB1MzIgcmVxX2xlbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU1OS1cdC8qIHNlbmQgY29tbWFuZCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo1NjA6XHRyZXQgPSBhdGgxMGtfdXNiX3N1Ym1pdF9jdHJsX291dChhciwgcmVxX3ZhbCwgMCwgMCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTYxLVx0XHRcdFx0XHQgcmVxX2J1ZiwgcmVxX2xlbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01NjYtXHRpZiAocmVzcF9idWYpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTY3Olx0XHRyZXQgPSBhdGgxMGtfdXNiX3N1Ym1pdF9jdHJsX2luKGFyLCByZXNwX3ZhbCwgMCwgMCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTY4LVx0XHRcdFx0XHRcdHJlc3BfYnVmLCAqcmVzcF9sZW4pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo1Nzg6c3RhdGljIGludCBhdGgxMGtfdXNiX2hpZl9kaWFnX3JlYWQoc3RydWN0IGF0aDEwayAqYXIsIHUzMiBhZGRyZXNzLCB2b2lkICpidWYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU3OS1cdFx0XHRcdCAgICBzaXplX3QgYnVmX2xlbilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTgwLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTgxOlx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjU4MjpcdHN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19jbWRfcmVhZCAqY21kO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01ODMtXHR1MzIgcmVzcF9sZW47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01ODUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjU4NjpcdGlmIChidWZfbGVuIFx1MDAzYyBzaXplb2Yoc3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX3Jlc3BfcmVhZCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU4Ny1cdFx0cmV0dXJuIC1FSU5WQUw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU4OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTg5Olx0Y21kID0gKHN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19jbWRfcmVhZCAqKWFyX3VzYi1cdTAwM2VkaWFnX2NtZF9idWZmZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU5MC1cdG1lbXNldChjbWQsIDAsIHNpemVvZigqY21kKSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01OTItXHRjbWQtXHUwMDNlYWRkcmVzcyA9IGNwdV90b19sZTMyKGFkZHJlc3MpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo1OTM6XHRyZXNwX2xlbiA9IHNpemVvZihzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfcmVzcF9yZWFkKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTk0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo1OTU6XHRyZXQgPSBhdGgxMGtfdXNiX2N0cmxfbXNnX2V4Y2hhbmdlKGFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01OTYtXHRcdFx0XHRcdCAgIEFUSDEwS19VU0JfQ09OVFJPTF9SRVFfRElBR19DTUQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02MDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjYwNDpcdGlmIChyZXNwX2xlbiAhPSBzaXplb2Yoc3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX3Jlc3BfcmVhZCkpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTYwNS1cdFx0cmV0dXJuIC1FTVNHU0laRTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTYwNy1cdG1lbWNweShidWYsIGFyX3VzYi1cdTAwM2VkaWFnX3Jlc3BfYnVmZmVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo2MDg6XHQgICAgICAgc2l6ZW9mKHN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19yZXNwX3JlYWQpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjA5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo2MTM6c3RhdGljIGludCBhdGgxMGtfdXNiX2hpZl9kaWFnX3dyaXRlKHN0cnVjdCBhdGgxMGsgKmFyLCB1MzIgYWRkcmVzcyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjE0LVx0XHRcdFx0ICAgICBjb25zdCB2b2lkICpkYXRhLCBpbnQgbmJ5dGVzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02MTUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo2MTY6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjE3Olx0c3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX2NtZF93cml0ZSAqY21kO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02MTgtXHRpbnQgcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo2MjM6XHRjbWQgPSAoc3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX2NtZF93cml0ZSAqKWFyX3VzYi1cdTAwM2VkaWFnX2NtZF9idWZmZXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTYyNC1cdG1lbXNldChjbWQsIDAsIHNpemVvZigqY21kKSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02MjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjYyOTpcdHJldCA9IGF0aDEwa191c2JfY3RybF9tc2dfZXhjaGFuZ2UoYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTYzMC1cdFx0XHRcdFx0ICAgQVRIMTBLX1VTQl9DT05UUk9MX1JFUV9ESUFHX0NNRCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTYzOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjQwOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9ibWlfZXhjaGFuZ2VfbXNnKHN0cnVjdCBhdGgxMGsgKmFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02NDEtXHRcdFx0XHQgICAgICAgdm9pZCAqcmVxLCB1MzIgcmVxX2xlbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTY0Ni1cdGlmIChyZXEpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjQ3Olx0XHRyZXQgPSBhdGgxMGtfdXNiX3N1Ym1pdF9jdHJsX291dChhcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjQ4LVx0XHRcdFx0XHRcdCBBVEgxMEtfVVNCX0NPTlRST0xfUkVRX1NFTkRfQk1JX0NNRCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTY1OC1cdGlmIChyZXNwKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjY1OTpcdFx0cmV0ID0gYXRoMTBrX3VzYl9zdWJtaXRfY3RybF9pbihhcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjYwLVx0XHRcdFx0XHRcdEFUSDEwS19VU0JfQ09OVFJPTF9SRVFfUkVDVl9CTUlfUkVTUCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTY3Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjczOnN0YXRpYyB2b2lkIGF0aDEwa191c2JfaGlmX2dldF9kZWZhdWx0X3BpcGUoc3RydWN0IGF0aDEwayAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTY3NC1cdFx0XHRcdFx0ICAgIHU4ICp1bF9waXBlLCB1OCAqZGxfcGlwZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTY3OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjgwOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9oaWZfbWFwX3NlcnZpY2VfdG9fcGlwZShzdHJ1Y3QgYXRoMTBrICphciwgdTE2IHN2Y19pZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjgxLVx0XHRcdFx0XHQgICAgICB1OCAqdWxfcGlwZSwgdTggKmRsX3BpcGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03MDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjcwNDpzdGF0aWMgaW50IGF0aDEwa191c2JfaGlmX3Bvd2VyX3VwKHN0cnVjdCBhdGgxMGsgKmFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03MDUtXHRcdFx0XHQgICBlbnVtIGF0aDEwa19maXJtd2FyZV9tb2RlIGZ3X21vZGUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03MDktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjcxMDpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2hpZl9wb3dlcl9kb3duKHN0cnVjdCBhdGgxMGsgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03MTEte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MTI6XHRhdGgxMGtfdXNiX2ZsdXNoX2FsbChhcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTcxMy19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03MTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjcxNzpzdGF0aWMgaW50IGF0aDEwa191c2JfaGlmX3N1c3BlbmQoc3RydWN0IGF0aDEwayAqYXIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTcxOC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03MjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjcyMjpzdGF0aWMgaW50IGF0aDEwa191c2JfaGlmX3Jlc3VtZShzdHJ1Y3QgYXRoMTBrICphcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzIzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTcyNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzI4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTBrX2hpZl9vcHMgYXRoMTBrX3VzYl9oaWZfb3BzID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3Mjk6XHQudHhfc2dcdFx0XHQ9IGF0aDEwa191c2JfaGlmX3R4X3NnLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MzA6XHQuZGlhZ19yZWFkXHRcdD0gYXRoMTBrX3VzYl9oaWZfZGlhZ19yZWFkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MzE6XHQuZGlhZ193cml0ZVx0XHQ9IGF0aDEwa191c2JfaGlmX2RpYWdfd3JpdGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjczMjpcdC5leGNoYW5nZV9ibWlfbXNnXHQ9IGF0aDEwa191c2JfYm1pX2V4Y2hhbmdlX21zZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzMzOlx0LnN0YXJ0XHRcdFx0PSBhdGgxMGtfdXNiX2hpZl9zdGFydCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzM0Olx0LnN0b3BcdFx0XHQ9IGF0aDEwa191c2JfaGlmX3N0b3AsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjczNTpcdC5tYXBfc2VydmljZV90b19waXBlXHQ9IGF0aDEwa191c2JfaGlmX21hcF9zZXJ2aWNlX3RvX3BpcGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjczNjpcdC5nZXRfZGVmYXVsdF9waXBlXHQ9IGF0aDEwa191c2JfaGlmX2dldF9kZWZhdWx0X3BpcGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjczNzpcdC5nZXRfZnJlZV9xdWV1ZV9udW1iZXJcdD0gYXRoMTBrX3VzYl9oaWZfZ2V0X2ZyZWVfcXVldWVfbnVtYmVyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3Mzg6XHQucG93ZXJfdXBcdFx0PSBhdGgxMGtfdXNiX2hpZl9wb3dlcl91cCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzM5Olx0LnBvd2VyX2Rvd25cdFx0PSBhdGgxMGtfdXNiX2hpZl9wb3dlcl9kb3duLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03NDAtI2lmZGVmIENPTkZJR19QTVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3NDE6XHQuc3VzcGVuZFx0XHQ9IGF0aDEwa191c2JfaGlmX3N1c3BlbmQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjc0MjpcdC5yZXN1bWVcdFx0XHQ9IGF0aDEwa191c2JfaGlmX3Jlc3VtZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzQzLSNlbmRpZlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzQ1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3NDY6c3RhdGljIHU4IGF0aDEwa191c2JfZ2V0X2xvZ2ljYWxfcGlwZV9udW0odTggZXBfYWRkcmVzcywgaW50ICp1cmJfY291bnQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTc0Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03OTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjc5MTpzdGF0aWMgaW50IGF0aDEwa191c2JfYWxsb2NfcGlwZV9yZXNvdXJjZXMoc3RydWN0IGF0aDEwayAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjc5MjpcdFx0XHRcdFx0ICAgc3RydWN0IGF0aDEwa191c2JfcGlwZSAqcGlwZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzkzLVx0XHRcdFx0XHQgICBpbnQgdXJiX2NudClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgxMS1cdFx0cGlwZS1cdTAwM2V1cmJfYWxsb2MmIzQzOyYjNDM7O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo4MTI6XHRcdGF0aDEwa191c2JfZnJlZV91cmJfdG9fcGlwZShwaXBlLCB1cmJfY29udGV4dCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgxMy1cdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgyMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6ODIzOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9zZXR1cF9waXBlX3Jlc291cmNlcyhzdHJ1Y3QgYXRoMTBrICphcixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODI0LVx0XHRcdFx0XHQgICBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04MjUte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo4MjY6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODI3LVx0c3RydWN0IHVzYl9ob3N0X2ludGVyZmFjZSAqaWZhY2VfZGVzYyA9IGludGVyZmFjZS1cdTAwM2VjdXJfYWx0c2V0dGluZztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODI4LVx0c3RydWN0IHVzYl9lbmRwb2ludF9kZXNjcmlwdG9yICplbmRwb2ludDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6ODI5Olx0c3RydWN0IGF0aDEwa191c2JfcGlwZSAqcGlwZTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODMwLVx0aW50IHJldCwgaSwgdXJiY291bnQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04NzEtXHRcdHBpcGVfbnVtID1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6ODcyOlx0XHQgICAgYXRoMTBrX3VzYl9nZXRfbG9naWNhbF9waXBlX251bShlbmRwb2ludC1cdTAwM2ViRW5kcG9pbnRBZGRyZXNzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04NzMtXHRcdFx0XHRcdFx0ICAgIFx1MDAyNnVyYmNvdW50KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTkyNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6OTI1Olx0XHRyZXQgPSBhdGgxMGtfdXNiX2FsbG9jX3BpcGVfcmVzb3VyY2VzKGFyLCBwaXBlLCB1cmJjb3VudCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTkyNi1cdFx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTkzMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6OTMzOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9jcmVhdGUoc3RydWN0IGF0aDEwayAqYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTkzNC1cdFx0XHQgICAgIHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2UpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTkzNS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjkzNjpcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05MzctXHRzdHJ1Y3QgdXNiX2RldmljZSAqZGV2ID0gaW50ZXJmYWNlX3RvX3VzYmRldihpbnRlcmZhY2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo5Mzg6XHRzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05MzktXHRpbnQgcmV0LCBpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTQ4LVx0XHRJTklUX1dPUksoXHUwMDI2cGlwZS1cdTAwM2Vpb19jb21wbGV0ZV93b3JrLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo5NDk6XHRcdFx0ICBhdGgxMGtfdXNiX2lvX2NvbXBfd29yayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTk1MC1cdFx0c2tiX3F1ZXVlX2hlYWRfaW5pdChcdTAwMjZwaXBlLVx1MDAzZWlvX2NvbXBfcXVldWUpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTY1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo5NjY6XHRyZXQgPSBhdGgxMGtfdXNiX3NldHVwX3BpcGVfcmVzb3VyY2VzKGFyLCBpbnRlcmZhY2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05NjctXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTcyLWVycjpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6OTczOlx0YXRoMTBrX3VzYl9kZXN0cm95KGFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTc0LVx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTk3Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6OTc3OnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9uYXBpX3BvbGwoc3RydWN0IG5hcGlfc3RydWN0ICpjdHgsIGludCBidWRnZXQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTk3OC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05OTEtLyogYXRoMTBrIHVzYiBkcml2ZXIgcmVnaXN0ZXJlZCBmdW5jdGlvbnMgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6OTkyOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9wcm9iZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05OTMtXHRcdFx0ICAgIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTk5NS1cdHN0cnVjdCBhdGgxMGsgKmFyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo5OTY6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05OTctXHRzdHJ1Y3QgdXNiX2RldmljZSAqZGV2ID0gaW50ZXJmYWNlX3RvX3VzYmRldihpbnRlcmZhY2UpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTAxMC1cdGFyID0gYXRoMTBrX2NvcmVfY3JlYXRlKHNpemVvZigqYXJfdXNiKSwgXHUwMDI2ZGV2LVx1MDAzZWRldiwgQVRIMTBLX0JVU19VU0IsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwMTE6XHRcdFx0XHRod19yZXYsIFx1MDAyNmF0aDEwa191c2JfaGlmX29wcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwMTItXHRpZiAoIWFyKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDE3Olx0bmV0aWZfbmFwaV9hZGQoYXItXHUwMDNlbmFwaV9kZXYsIFx1MDAyNmFyLVx1MDAzZW5hcGksIGF0aDEwa191c2JfbmFwaV9wb2xsKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTAxOC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwMjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwMjY6XHRhcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDI3Olx0cmV0ID0gYXRoMTBrX3VzYl9jcmVhdGUoYXIsIGludGVyZmFjZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwMjgtXHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA1MS1lcnJfdXNiX2Rlc3Ryb3k6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwNTI6XHRhdGgxMGtfdXNiX2Rlc3Ryb3koYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDUzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA1OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA2MDpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA2MS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwNjI6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDYzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA2OS1cdG5ldGlmX25hcGlfZGVsKFx1MDAyNmFyX3VzYi1cdTAwM2Vhci1cdTAwM2VuYXBpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA3MDpcdGF0aDEwa191c2JfZGVzdHJveShhcl91c2ItXHUwMDNlYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDcxLVx0YXRoMTBrX2NvcmVfZGVzdHJveShhcl91c2ItXHUwMDNlYXIpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA3NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA3NjpzdGF0aWMgaW50IGF0aDEwa191c2JfcG1fc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDc3LVx0XHRcdFx0IHBtX21lc3NhZ2VfdCBtZXNzYWdlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDc4LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA3OTpcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSB1c2JfZ2V0X2ludGZkYXRhKGludGVyZmFjZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwODAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwODE6XHRhdGgxMGtfdXNiX2ZsdXNoX2FsbChhcl91c2ItXHUwMDNlYXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDgyLVx0cmV0dXJuIDA7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDg0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDg1OnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9wbV9yZXN1bWUoc3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA4Ni17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwODc6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gdXNiX2dldF9pbnRmZGF0YShpbnRlcmZhY2UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDg4LVx0c3RydWN0IGF0aDEwayAqYXIgPSBhcl91c2ItXHUwMDNlYXI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwODktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwOTA6XHRhdGgxMGtfdXNiX3Bvc3RfcmVjdl90cmFuc2ZlcnMoYXIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwOTEtXHRcdFx0XHQgICAgICAgXHUwMDI2YXJfdXNiLVx1MDAzZXBpcGVzW0FUSDEwS19VU0JfUElQRV9SWF9EQVRBXSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDk3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDk4OiNkZWZpbmUgYXRoMTBrX3VzYl9wbV9zdXNwZW5kIE5VTExcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA5OTojZGVmaW5lIGF0aDEwa191c2JfcG1fcmVzdW1lIE5VTExcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTEwMC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTExMDMtLyogdGFibGUgb2YgZGV2aWNlcyB0aGF0IHdvcmsgd2l0aCB0aGlzIGRyaXZlciAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTA0OnN0YXRpYyBzdHJ1Y3QgdXNiX2RldmljZV9pZCBhdGgxMGtfdXNiX2lkc1tdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTA1LVx0e1VTQl9ERVZJQ0UoMHgxM2IxLCAweDAwNDIpfSwgLyogTGlua3N5cyBXVVNCNjEwME0gKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTExMDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMDk6TU9EVUxFX0RFVklDRV9UQUJMRSh1c2IsIGF0aDEwa191c2JfaWRzKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTExMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTExMTpzdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgYXRoMTBrX3VzYl9kcml2ZXIgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMTI6XHQubmFtZSA9IFwmIzM0O2F0aDEwa191c2JcJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMTM6XHQucHJvYmUgPSBhdGgxMGtfdXNiX3Byb2JlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTE0Olx0LnN1c3BlbmQgPSBhdGgxMGtfdXNiX3BtX3N1c3BlbmQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMTU6XHQucmVzdW1lID0gYXRoMTBrX3VzYl9wbV9yZXN1bWUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMTY6XHQuZGlzY29ubmVjdCA9IGF0aDEwa191c2JfZGlzY29ubmVjdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTExNzpcdC5pZF90YWJsZSA9IGF0aDEwa191c2JfaWRzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTE4LVx0LnN1cHBvcnRzX2F1dG9zdXNwZW5kID0gdHJ1ZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTExMjEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMjI6bW9kdWxlX3VzYl9kcml2ZXIoYXRoMTBrX3VzYl9kcml2ZXIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTIzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oOjQ0OnN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19jbWRfd3JpdGUge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC00NS1cdF9fbGUzMiBjbWQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC01MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmg6NTE6c3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX2NtZF9yZWFkIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtNTItXHRfX2xlMzIgY21kO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtNTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oOjU2OnN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19yZXNwX3JlYWQge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC01Ny1cdHU4IHZhbHVlWzRdO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtNjAtLyogdHgvcnggcGlwZXMgZm9yIHVzYiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDo2MTplbnVtIGF0aDEwa191c2JfcGlwZV9pZCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTYyLVx0QVRIMTBLX1VTQl9QSVBFX1RYX0NUUkwgPSAwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtNzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oOjczOnN0cnVjdCBhdGgxMGtfdXNiX3BpcGUge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC03NC1cdHN0cnVjdCBsaXN0X2hlYWQgdXJiX2xpc3RfaGVhZDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTgyLVx0dTggbG9naWNhbF9waXBlX251bTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmg6ODM6XHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC04NC1cdHUxNiBtYXhfcGFja2V0X3NpemU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC05Mi0vKiB1c2IgZGV2aWNlIG9iamVjdCAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDo5MzpzdHJ1Y3QgYXRoMTBrX3VzYiB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTk0LVx0LyogcHJvdGVjdHMgcGlwZS1cdTAwM2V1cmJfbGlzdF9oZWFkIGFuZCAgcGlwZS1cdTAwM2V1cmJfY250ICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC05OC1cdHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2U7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oOjk5Olx0c3RydWN0IGF0aDEwa191c2JfcGlwZSBwaXBlc1tBVEgxMEtfVVNCX1BJUEVfTUFYXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtMTAwLVx0dTggKmRpYWdfY21kX2J1ZmZlcjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oPTEwNj1zdHJ1Y3QgYXRoMTBrX3VyYl9jb250ZXh0IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtMTA3LVx0c3RydWN0IGxpc3RfaGVhZCBsaW5rO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDoxMDg6XHRzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC0xMDktXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtMTEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDoxMTM6c3RhdGljIGlubGluZSBzdHJ1Y3QgYXRoMTBrX3VzYiAqYXRoMTBrX3VzYl9wcml2KHN0cnVjdCBhdGgxMGsgKmFyKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC0xMTQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDoxMTU6XHRyZXR1cm4gKHN0cnVjdCBhdGgxMGtfdXNiICopYXItXHUwMDNlZHJ2X3ByaXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTExNi19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDg6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTgxNDYKCQkJCQkJCW91dHB1dDogNTAKCQkJCQkJCXRob3VnaHRzOiA5NwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipJbnZlc3RpZ2F0aW5nIGF0aDEwayBVU0IgRnVuY3Rpb25hbGl0eSBhbmQgSGlnaCBMYXRlbmN5IEltcGFjdCoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGUgYGF0aDEwa2AgZHJpdmVyIGFuZCBpdHMgVVNCIGNhcGFiaWxpdGllcy4gR29vZCB0byBrbm93IGl0IGhhcyBVU0Igc3VwcG9ydCB2aWEgYENPTkZJR19BVEgxMEtfVVNCYCwgd2hpY2ggaXMgcHJldHR5IHVzZWZ1bCBiZWNhdXNlIGl0IG9wZW5zIHVwIGVtdWxhdGlvbiBwb3NzaWJpbGl0aWVzIHRocm91Z2ggVVNCIGdhZGdldCwgUmF3IEdhZGdldCwgYW5kLCBvZiBjb3Vyc2UsIHN5emthbGxlci4gU2luY2UgVVNCIGFuZCBTRElPIGRldmljZXMgb2Z0ZW4gb3BlcmF0ZSBpbiBhIGhpZ2gtbGF0ZW5jeSAoSEwpIGVudmlyb25tZW50LCBteSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBzZWUgaWYgd2UgY2FuIGFjdHVhbGx5IHJlYWNoIHRoZSBgYXRoMTBrYCYjMzk7cyBgaHR0X3J4YCBmdW5jdGlvbnMgd2l0aGluIHRoYXQgSEwgY29udGV4dC4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gdHJhY2UgdGhlIGNhbGwgcGF0aHMgdG8gZGV0ZXJtaW5lIGlmIHRoZSBgYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsYCBmdW5jdGlvbiBpcyBiZWluZyBpbnZva2VkIHdoZW4gdGhlc2UgaGlnaGVyIGxhdGVuY3kgZGV2aWNlcyBhcmUgaW50ZXJhY3RpbmcuIFRoaXMgd2lsbCBob3BlZnVsbHkgcHJvdmlkZSBpbnNpZ2h0IGludG8gcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyBvciBzdGFiaWxpdHkgaXNzdWVzIHdpdGhpbiB0aGF0IHNwZWNpZmljIHN1YnN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwODo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDthdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmM9Mjc0Mz1zdGF0aWMgaW50IGF0aDEwa19odHRfcnhfZnJhZ193ZXBfZGVjYXAoc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jLTI3NTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jOjI3NTg6c3RhdGljIGJvb2wgYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsKHN0cnVjdCBhdGgxMGtfaHR0ICpodHQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jLTI3NTktXHRcdFx0XHRcdCAgICAgIHN0cnVjdCBodHRfcnhfZnJhZ21lbnRfaW5kaWNhdGlvbiAqcngsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguYz00NDkwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTBrX2h0dF9yeF9vcHMgaHR0X3J4X29wc19obCA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmM6NDQ5MTpcdC5odHRfcnhfcHJvY19yeF9mcmFnX2luZCA9IGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmMtNDQ5Mi19O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA4OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4ODA2CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqVHJhY2luZyB0aGUgVXNhZ2Ugb2YgYGh0dF9yeF9vcHNfaGxgKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtXaGVyZSYjMzk7cyB0aGlzIGBodHRfcnhfb3BzX2hsYCBmdW5jdGlvbiBhY3R1YWxseSAqZG9pbmcqIHdvcms/JiMzNDsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGNvbnRleHQuIEkgbmVlZCB0byBrbm93IHdoYXQgY29kZSBpcyBjYWxsaW5nIGl0IGFuZCB3aHkuIElzIGl0IHBhcnQgb2YgdGhlIGRhdGEgcGF0aCwgY29udHJvbCBwbGFuZSwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFVuZGVyc3RhbmRpbmcgdGhlIGNhbGwgc2l0ZXMgaXMgdGhlIGtleSB0byBmaWd1cmluZyBvdXQgaXRzIGZ1bmN0aW9uIGFuZCBpdHMgcm9sZSBpbiB0aGUgc3lzdGVtLiBJJiMzOTtsbCBzdGFydCBieSBsb29raW5nIGZvciBkaXJlY3QgdXNhZ2VzIGFuZCB0aGVuIHdvcmsgbXkgd2F5IHVwIHRoZSBjYWxsIHN0YWNrIHRvIHNlZSB3aGVyZSBpdCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZS4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBjb2RlIGhhcyB0byBzaG93IG1lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA4OjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2h0dF9yeF9vcHNfaGwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmM9NDQ4Mj1zdGF0aWMgY29uc3Qgc3RydWN0IGF0aDEwa19odHRfcnhfb3BzIGh0dF9yeF9vcHNfNjQgPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguYy00NDg5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguYzo0NDkwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTBrX2h0dF9yeF9vcHMgaHR0X3J4X29wc19obCA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmMtNDQ5MS1cdC5odHRfcnhfcHJvY19yeF9mcmFnX2luZCA9IGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jPTQ0OTQ9dm9pZCBhdGgxMGtfaHR0X3NldF9yeF9vcHMoc3RydWN0IGF0aDEwa19odHQgKmh0dClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jLTQ0OTgtXHRpZiAoYXItXHUwMDNlYnVzX3BhcmFtLmRldl90eXBlID09IEFUSDEwS19ERVZfVFlQRV9ITClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmM6NDQ5OTpcdFx0aHR0LVx1MDAzZXJ4X29wcyA9IFx1MDAyNmh0dF9yeF9vcHNfaGw7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jLTQ1MDAtXHRlbHNlIGlmIChhci1cdTAwM2Vod19wYXJhbXMudGFyZ2V0XzY0Yml0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA4OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MzkzCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMTAzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQVRIMTBLIEhpZ2ggTGF0ZW5jeSBSWCBGcmFnbWVudCBJbmRpY2F0b3IqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IGBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGxgIGlzIHNwZWNpZmljYWxseSBlbXBsb3llZCB3aXRoaW4gdGhlICYjMzQ7SGlnaCBMYXRlbmN5JiMzNDsgZGV2aWNlIGNvbnRleHQsIHdoaWNoLCBmcm9tIG15IGV4cGVyaWVuY2UsIGVuY29tcGFzc2VzIFVTQiBhbmQgU0RJTyBpbXBsZW1lbnRhdGlvbnMsIGNoYXJhY3Rlcml6ZWQgYnkgdGhvc2UgaGlnaGVyIGxhdGVuY2llcy4gR2l2ZW4gdGhhdCwgSSB3YW50IHRvIHVuZGVyc3RhbmQgdGhlIGV4YWN0IGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggdGhpcyBmdW5jdGlvbiBpcyBpbnZva2VkLiBUaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gdHJhY2UgY2FsbHMgdG8gYGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obGAgYnkgZXhhbWluaW5nIHRoZSBgaHR0LSZndDtyeF9vcHMtJmd0O2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kYCBzdHJ1Y3R1cmUuIFRoaXMgd2lsbCByZXZlYWwgdGhlIGNhbGxpbmcgY29udGV4dCBhbmQgcG90ZW50aWFsbHkgZWx1Y2lkYXRlIHRoZSB0cmlnZ2VycyB0aGF0IGxlYWQgdG8gaXRzIGV4ZWN1dGlvbiB3aXRoaW4gdGhlIGJyb2FkZXIgYGF0aDEwa2AgcmVjZWl2ZSBwYXRoLCBwYXJ0aWN1bGFybHkgZm9yIHRob3NlIGhpZ2hlciBsYXRlbmN5IGNvbmZpZ3VyYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwODo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtodHRfcnhfcHJvY19yeF9mcmFnX2luZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHQuaD0yMDE5PXN0cnVjdCBhdGgxMGtfaHR0X3J4X29wcyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHQuaC0yMDI1LVx0dm9pZCAoKmh0dF9yZXNldF9wYWRkcnNfcmluZykoc3RydWN0IGF0aDEwa19odHQgKmh0dCwgaW50IGlkeCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dC5oOjIwMjY6XHRib29sICgqaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmQpKHN0cnVjdCBhdGgxMGtfaHR0ICpodHQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dC5oLTIwMjctXHRcdFx0XHRcdHN0cnVjdCBodHRfcnhfZnJhZ21lbnRfaW5kaWNhdGlvbiAqcngsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHQuaD0yMDYyPXN0YXRpYyBpbmxpbmUgdm9pZCBhdGgxMGtfaHR0X3Jlc2V0X3BhZGRyc19yaW5nKHN0cnVjdCBhdGgxMGtfaHR0ICpodHQsIGludCBpZHgpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHQuaC0yMDY3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHQuaDoyMDY4OnN0YXRpYyBpbmxpbmUgYm9vbCBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmQoc3RydWN0IGF0aDEwa19odHQgKmh0dCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0LmgtMjA2OS1cdFx0XHRcdFx0XHQgIHN0cnVjdCBodHRfcnhfZnJhZ21lbnRfaW5kaWNhdGlvbiAqcngsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHQuaC0yMDcxLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0Lmg6MjA3MjpcdGlmICghaHR0LVx1MDAzZXJ4X29wcy1cdTAwM2VodHRfcnhfcHJvY19yeF9mcmFnX2luZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0LmgtMjA3My1cdFx0cmV0dXJuIHRydWU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dC5oLTIwNzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dC5oOjIwNzU6XHRyZXR1cm4gaHR0LVx1MDAzZXJ4X29wcy1cdTAwM2VodHRfcnhfcHJvY19yeF9mcmFnX2luZChodHQsIHJ4LCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHQuaC0yMDc2LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jPTI3NDM9c3RhdGljIGludCBhdGgxMGtfaHR0X3J4X2ZyYWdfd2VwX2RlY2FwKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguYy0yNzU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguYzoyNzU4OnN0YXRpYyBib29sIGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obChzdHJ1Y3QgYXRoMTBrX2h0dCAqaHR0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguYy0yNzU5LVx0XHRcdFx0XHQgICAgICBzdHJ1Y3QgaHR0X3J4X2ZyYWdtZW50X2luZGljYXRpb24gKnJ4LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmM9NDEwNT1ib29sIGF0aDEwa19odHRfdDJoX21zZ19oYW5kbGVyKHN0cnVjdCBhdGgxMGsgKmFyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmMtNDIyMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmM6NDIyMTpcdFx0cmV0dXJuIGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZChodHQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jLTQyMjItXHRcdFx0XHRcdFx0ICAgICAgXHUwMDI2cmVzcC1cdTAwM2VyeF9mcmFnX2luZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jPTQ0OTA9c3RhdGljIGNvbnN0IHN0cnVjdCBhdGgxMGtfaHR0X3J4X29wcyBodHRfcnhfb3BzX2hsID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguYzo0NDkxOlx0Lmh0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kID0gYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguYy00NDkyLX07XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA4OjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNzQ2CgkJCQkJCQlvdXRwdXQ6IDUzCgkJCQkJCQl0aG91Z2h0czogMTM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IERlZXAgRGl2ZSBpbnRvIGF0aDEwayYjMzk7cyBNZXNzYWdlIEhhbmRsaW5nIGFuZCBEZWJ1Z2dpbmcqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGUgYXRoMTBrIGRyaXZlciBhZ2Fpbiwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIGhvdyBpdCBtYW5hZ2VzIGNvbW11bmljYXRpb24gd2l0aCB0aGUgZmlybXdhcmUuICBJJiMzOTttIHRyYWNraW5nIHRoZSBwYXRoIG9mIG1lc3NhZ2VzICpmcm9tKiB0aGUgZGV2aWNlLCAqdG8qIHRoZSBob3N0LiAgTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IGBhdGgxMGtfaHR0X3QyaF9tc2dfaGFuZGxlcmAgaXMgdGhlIGNydWNpYWwgZnVuY3Rpb24gaGVyZSwgZGVhbGluZyB3aXRoIHRoZSB0YXJnZXQtdG8taG9zdCBtZXNzYWdlcy4gIEVzc2VudGlhbGx5LCBpdCYjMzk7cyB0aGUgY2VudHJhbCBwb2ludCB3aGVyZSB0aGUgZHJpdmVyIHByb2Nlc3NlcyBkYXRhIGNvbWluZyBmcm9tIHRoZSBmaXJtd2FyZSBvdmVyIHRoZSBVU0IsIFNESU8sIG9yIFBDSSBpbnRlcmZhY2VzIOKAkyB0aGUgcHJpbWFyeSBjb21tdW5pY2F0aW9uIGNoYW5uZWxzLgoKTm93LCB3aGVyZSBkbyB0aGVzZSBtZXNzYWdlcyAqY29tZSBmcm9tKj8gQWgsIHllcywgYGF0aDEwa191c2JfcnhfY29tcGxldGVgIGluIGB1c2IuY2AhIEl0JiMzOTtzIHRoZSByZWNlaXZlciBmdW5jdGlvbi4gVGhpcyBmdW5jdGlvbiByZWNlaXZlcyB0aGUgU0tCcyBmcm9tIHRoZSBVU0IgZW5kcG9pbnRzIGFuZCB0aGVuIGhhbmRzIHRoZW0gZGlyZWN0bHkgb2ZmIHRvIGBhdGgxMGtfaHR0X3QyaF9tc2dfaGFuZGxlcmAgZm9yIHByb2Nlc3NpbmcuIFRoYXQmIzM5O3MgYSBjbGVhbiBoYW5kb3Zlci4KCkkgYWxzbyB3YW50IHRvIGV4cGxvcmUgdGhlIGRlYnVnIGZhY2lsaXRpZXMuIGBkZWJ1Zy5jYCBzaG91bGQgaG9sZCB0aGUga2V5cyB0byB1bmRlcnN0YW5kaW5nIGFuZCBwb3RlbnRpYWxseSBtb2RpZnlpbmcgdGhlIGRyaXZlciYjMzk7cyBpbnRlcm5hbHMuIExldCYjMzk7cyBkaWcgaW4gYW5kIHNlZS4gUmlnaHQgbm93LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRob3NlIGRlYnVnZnMgZmlsZSBvcGVyYXRpb25zIC0gYGF0aDEwa19yZWdfdmFsdWVfd3JpdGVgIGFuZCBgYXRoMTBrX21lbV92YWx1ZV93cml0ZWAuIFRoZXNlIHNvdW5kIGxpa2UgY3JpdGljYWwgdG9vbHMgZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcgcmVnaXN0ZXIgYW5kIG1lbW9yeSB2YWx1ZXMgZGlyZWN0bHksIHdoaWNoIGFyZSBpbnZhbHVhYmxlIGZvciBkZWJ1Z2dpbmcgYW5kIGZpbmUtdHVuaW5nIHRoZSBkcml2ZXImIzM5O3MgYmVoYXZpb3IuIFRpbWUgdG8gb3BlbiBgZGVidWcuY2AgYW5kIGdldCBteSBoYW5kcyBkaXJ0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDg6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTBrX3JlZ192YWx1ZV93cml0ZXxhdGgxMGtfbWVtX3ZhbHVlX3dyaXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEwayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmM9NjgzPXN0YXRpYyBzc2l6ZV90IGF0aDEwa19yZWdfdmFsdWVfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmMtNzEzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jOjcxNDpzdGF0aWMgc3NpemVfdCBhdGgxMGtfcmVnX3ZhbHVlX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jLTcxNS1cdFx0XHRcdCAgICAgIGNvbnN0IGNoYXIgX191c2VyICp1c2VyX2J1Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmM9NzUzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfcmVnX3ZhbHVlID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jLTc1NC1cdC5yZWFkID0gYXRoMTBrX3JlZ192YWx1ZV9yZWFkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jOjc1NTpcdC53cml0ZSA9IGF0aDEwa19yZWdfdmFsdWVfd3JpdGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmMtNzU2LVx0Lm9wZW4gPSBzaW1wbGVfb3Blbixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmM9NzYxPXN0YXRpYyBzc2l6ZV90IGF0aDEwa19tZW1fdmFsdWVfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmMtODEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jOjgxMzpzdGF0aWMgc3NpemVfdCBhdGgxMGtfbWVtX3ZhbHVlX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jLTgxNC1cdFx0XHRcdCAgICAgIGNvbnN0IGNoYXIgX191c2VyICp1c2VyX2J1Zixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmM9ODc3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfbWVtX3ZhbHVlID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jLTg3OC1cdC5yZWFkID0gYXRoMTBrX21lbV92YWx1ZV9yZWFkLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jOjg3OTpcdC53cml0ZSA9IGF0aDEwa19tZW1fdmFsdWVfd3JpdGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmMtODgwLVx0Lm9wZW4gPSBzaW1wbGVfb3BlbixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDg6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE4NjEKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRlYnVnZ2luZyB0aGUgYXRoMTBrIERyaXZlcioqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgYGF0aDEwa2AgaXNzdWUuIE15IGZpcnN0IGluc3RpbmN0LCBnaXZlbiB0aGUgbmF0dXJlIG9mIHRoZXNlIHByb2JsZW1zLCBpcyB0byBzdGFydCB3aXRoIHRoZSBkZWJ1ZyByZWdpc3RlcnMgYW5kIGNyZWF0aW9uIHByb2Nlc3Nlcy4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0JiMzOTtzIGdvaW5nIG9uIGF0IHRoZSBsb3dlc3QgbGV2ZWwuIExldCYjMzk7cyBzdGFydCBieSBzY3J1dGluaXppbmcgdGhlIGBhdGgxMGtfZGVidWdfcmVnaXN0ZXJgIGZ1bmN0aW9uLCB0byBzZWUgaG93IHRoZSBkZWJ1ZyBtZWNoYW5pc21zIGFyZSBzZXQgdXAgaW5pdGlhbGx5LiBJJiMzOTttIHdvbmRlcmluZyBpZiB0aGVyZSYjMzk7cyBhbiBpc3N1ZSB3aXRoIHRoZSByZWdpc3RyYXRpb24gcHJvY2VzcyBpdHNlbGYsIG1heWJlIHNvbWV0aGluZyByZWxhdGVkIHRvIGhvdyB0aGUgZGVidWcgaW5mcmFzdHJ1Y3R1cmUgaXMgZXhwb3NlZCB0byB0aGUgdXNlciBzcGFjZSBvciBob3cgdGhlIHJlZ2lzdGVycyBhcmUgZ2V0dGluZyBpbml0aWFsaXplZC4gQWx0ZXJuYXRpdmVseSwgdGhlIGBhdGgxMGtfZGVidWdfY3JlYXRlYCBmdW5jdGlvbiBtaWdodCBiZSBtb3JlIHJlbGV2YW50LiBQZXJoYXBzIHNvbWV0aGluZyBpc24mIzM5O3QgYmVpbmcgcHJvcGVybHkgaW5pdGlhbGl6ZWQsIG9yIG1heWJlIHRoZXJlIGlzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIGNyZWF0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGEgcmVsYXRlZCBvYmplY3QuIEZyb20gdGhpcywgSSB3aWxsIG1vdmUgdG8gZnVydGhlciBhY3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwODo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmb3BzX3JlZ192YWx1ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jPTcxND1zdGF0aWMgc3NpemVfdCBhdGgxMGtfcmVnX3ZhbHVlX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy03NTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmM6NzUzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfcmVnX3ZhbHVlID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jLTc1NC1cdC5yZWFkID0gYXRoMTBrX3JlZ192YWx1ZV9yZWFkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYz0yNTQ0PWludCBhdGgxMGtfZGVidWdfcmVnaXN0ZXIoc3RydWN0IGF0aDEwayAqYXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jLTI1NzYtXHRkZWJ1Z2ZzX2NyZWF0ZV9maWxlKFwmIzM0O3JlZ192YWx1ZVwmIzM0OywgMDYwMCwgYXItXHUwMDNlZGVidWcuZGVidWdmc19waHksIGFyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jOjI1Nzc6XHRcdFx0ICAgIFx1MDAyNmZvcHNfcmVnX3ZhbHVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy0yNTc4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwODo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjQzNwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKktjb25maWcsIGF0aDEwaywgRGVidWdmcywgYW5kIFVTQiDigJMgVGltZSB0byBDb25uZWN0IHRoZSBEb3RzKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyB0aGUgY29uZmlndXJhdGlvbiBsYW5kc2NhcGUgaW50ZXJzZWN0cyB3aXRoIHRoZSBwaWVjZXMgSSYjMzk7bSB3b3JraW5nIHdpdGggcmlnaHQgbm93LiBGaXJzdCBhbmQgZm9yZW1vc3QsIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGNvcmUgYXRoMTBrIHN1cHBvcnQgaXMgcHJvcGVybHkgZW5hYmxlZCBpbiBLY29uZmlnLiBUaGlzIGlzIHRoZSBmb3VuZGF0aW9uOyB3aXRob3V0IHRoYXQsIG5vdGhpbmcgZWxzZSBtYXR0ZXJzLiBJIG5lZWQgdG8gc3BlY2lmaWNhbGx5IGxvb2sgZm9yIHRoZSBhdGgxMGsgb3B0aW9ucywgYnV0IEkgYWxzbyBuZWVkIHRvIGJlIGNlcnRhaW4gYWJvdXQgdGhlIGRlcGVuZGVuY2llcyB0b28gLSB3aGljaCBJIHVzdWFsbHkgY2hlY2sgYXMgYSBtYXR0ZXIgb2YgaGFiaXQuCgpUaGVuLCBJJiMzOTttIHRoaW5raW5nIGFib3V0IGRlYnVnZnMuIElzIGl0IHByb3Blcmx5IGNvbmZpZ3VyZWQgZm9yIG15IHRhcmdldD8gSXMgaXQgZW5hYmxlZD8gSSYjMzk7bGwgcHJvYmFibHkgbmVlZCBpdCB0byBwcm9iZSB0aGUgZmlybXdhcmUgbG9hZGluZywgZGV2aWNlIHN0YXRlLCBhbmQgb3ZlcmFsbCBvcGVyYXRpb24uIEkmIzM5O20gYXNzdW1pbmcgdGhhdCBpdCBpcyBlbmFibGVkLCBidXQgSSBzaG91bGQgdmVyaWZ5IHRoYXQuIEkmIzM5O3ZlIGJlZW4gYnVybmVkIGJ5IGFzc3VtaW5nIGJlZm9yZSEKCkZpbmFsbHksIHRoZSBVU0IgY29ubmVjdGlvbiBpcyBpbiB0aGUgcGljdHVyZS4gVGhpcyBpcyBsaWtlbHkgaG93IEkmIzM5O20gaW50ZXJhY3Rpbmcgd2l0aCB0aGUgaGFyZHdhcmUuIFRoZXJlZm9yZSwgSSBuZWVkIHRvIGVuc3VyZSB0aGUgVVNCIGhvc3QgYW5kIGRldmljZSBkcml2ZXJzIGFyZSBjb3JyZWN0bHkgc2V0IHVwIGFuZCBjb25maWd1cmVkLiBUaGlzIGVuY29tcGFzc2VzIHRoZSB3aG9sZSBVU0Igc3RhY2sgdG9vLCBpbmNsdWRpbmcgdGhlIFVTQiBzdWJzeXN0ZW0uIEl0JiMzOTtzIG9mdGVuIHRoZSBib3R0bGVuZWNrLCBzbyBJIG5lZWQgdG8gYW50aWNpcGF0ZSB0aG9zZSBwb3RlbnRpYWwgcHJvYmxlbXMuIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIHN5c3RlbSByZWNvZ25pemVzIHRoZSBoYXJkd2FyZS4gSXQmIzM5O3MgdGltZSB0byBjb3JyZWxhdGUgdGhlc2UgaXRlbXMgdG8gZ2V0IHRoZSB3aG9sZSBzeXN0ZW0gd29ya2luZy4KCkVzc2VudGlhbGx5LCBJJiMzOTttIG1lbnRhbGx5IGxheWluZyBvdXQgdGhlIHN0ZXBzIGFuZCBjb25maXJtaW5nIG15IGFzc3VtcHRpb25zIHRvIGF2b2lkIGFueSB3YXN0ZWQgdGltZSBsYXRlci4gQSBxdWljayBLY29uZmlnIGNoZWNrIGlzIGFsd2F5cyBhIHNtYXJ0IHN0YXJ0aW5nIHBvaW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwODo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQVRIMTBLJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEwayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzoyOmNvbmZpZyBBVEgxMEtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyA4MDIuMTFhYyB3aXJlbGVzcyBjYXJkcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnOjE1OmNvbmZpZyBBVEgxMEtfQ0VcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy0xNi1cdGJvb2xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy0xNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzoxODpjb25maWcgQVRIMTBLX1BDSVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTE5LVx0dHJpc3RhdGUgXCYjMzQ7QXRoZXJvcyBhdGgxMGsgUENJIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctMjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWc6MjQ6Y29uZmlnIEFUSDEwS19BSEJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy0yNS1cdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGgxMGsgQUhCIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctMjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWc6MzA6Y29uZmlnIEFUSDEwS19TRElPXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctMzEtXHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIGF0aDEwayBTRElPIHN1cHBvcnRcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctMzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWc6MzY6Y29uZmlnIEFUSDEwS19VU0JcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy0zNy1cdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgYXRoMTBrIFVTQiBzdXBwb3J0IChFWFBFUklNRU5UQUwpXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTQyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnOjQzOmNvbmZpZyBBVEgxMEtfU05PQ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTQ0LVx0dHJpc3RhdGUgXCYjMzQ7UXVhbGNvbW0gYXRoMTBrIFNOT0Mgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy01NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzo1Njpjb25maWcgQVRIMTBLX0RFQlVHXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctNTctXHRib29sIFwmIzM0O0F0aGVyb3MgYXRoMTBrIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy02My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzo2NDpjb25maWcgQVRIMTBLX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy02NS1cdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGgxMGsgZGVidWdmcyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTcxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnOjcyOmNvbmZpZyBBVEgxMEtfTEVEU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTczLVx0Ym9vbFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy03Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzo3ODpjb25maWcgQVRIMTBLX1NQRUNUUkFMXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctNzktXHRib29sIFwmIzM0O0F0aGVyb3MgYXRoMTBrIHNwZWN0cmFsIHNjYW4gc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy04NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzo4Njpjb25maWcgQVRIMTBLX1RSQUNJTkdcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy04Ny1cdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGgxMGsgdHJhY2luZyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnOjkzOmNvbmZpZyBBVEgxMEtfREZTX0NFUlRJRklFRFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTk0LVx0Ym9vbCBcJiMzNDtBdGhlcm9zIERGUyBzdXBwb3J0IGZvciBjZXJ0aWZpZWQgcGxhdGZvcm1zXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA4OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzOTEwCgkJCQkJCQlvdXRwdXQ6IDQxCgkJCQkJCQl0aG91Z2h0czogMzkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUgd2UgZ28uIExldCYjMzk7cyBkaXZlIGluIGFuZCBkaXNzZWN0IHRoaXMgS2NvbmZpZyBmaWxlIGZvciBBVEgxMEtfVVNCIGFuZCBBVEgxMEtfREVCVUdGUyB3aXRoaW4gdGhlIGF0aDEwayBkcml2ZXIuCioqRXhhbWluaW5nIHRoZSBBVEgxMEsgS2NvbmZpZyBPcHRpb25zKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IGludG8gdGhlIG5pdHR5LWdyaXR0eS4gSSYjMzk7bSBnb2luZyB0byBzdGFydCBieSBnb2luZyBvdmVyIHRoZSBmdWxsIEtjb25maWcgZmlsZSBmb3IgQVRIMTBLX1VTQiBhbmQgQVRIMTBLX0RFQlVHRlMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGV4YWN0bHkgaG93IHRoZXNlIG9wdGlvbnMgYXJlIHN0cnVjdHVyZWQsIHdoYXQgZGVwZW5kZW5jaWVzIHRoZXkgaGF2ZSwgYW5kIGhvdyB0aGV5IHJlbGF0ZSB0byB0aGUgYnJvYWRlciBBVEgxMEsgZnJhbWV3b3JrLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZToKCiogICAqKkRlcGVuZGVuY2llczoqKiBXaGF0IG90aGVyIEtjb25maWcgc3ltYm9scyBuZWVkIHRvIGJlIGVuYWJsZWQgZm9yIHRoZXNlIHRvIGV2ZW4gc2hvdyB1cD8gQXJlIHRoZXkgZGVwZW5kZW50IG9uIHNwZWNpZmljIFVTQiBkcml2ZXIgY29uZmlndXJhdGlvbnMgb3IgZGVidWdnaW5nIG9wdGlvbnM/CiogICAqKkRlZmF1bHQgVmFsdWVzOioqIFdoYXQmIzM5O3MgdGhlIGRlZmF1bHQgYmVoYXZpb3I/IEFyZSB0aGV5IGVuYWJsZWQgYnkgZGVmYXVsdCwgb3IgZGlzYWJsZWQ/IFVuZGVyc3RhbmRpbmcgdGhlIGRlZmF1bHRzIHRlbGxzIG1lIHdoYXQgdGhlIGRldmVsb3BlcnMgcHJpb3JpdGl6ZWQuCiogICAqKkhlbHAgVGV4dDoqKiBUaGUgaGVscCB0ZXh0IGlzLCBvZiBjb3Vyc2UsIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgaW50ZW50IG9mIHRoZSBvcHRpb25zLiBJJiMzOTtsbCBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBkZXNjcmlwdGlvbnMgdG8gc2VlIHdoYXQgZmVhdHVyZXMgb3IgZGVidWdnaW5nIGNhcGFiaWxpdGllcyB0aGVzZSBLY29uZmlnIHN5bWJvbHMgYWN0dWFsbHkgYWN0aXZhdGUuCiogICAqKkNvbmRpdGlvbmFsIExvZ2ljOioqIEFyZSB0aGVyZSBhbnkgY29tcGxleCBgaWZgIHN0YXRlbWVudHMgb3IgYm9vbGVhbiBsb2dpYyB0aGF0IGdvdmVybnMgd2hlbiB0aGVzZSBvcHRpb25zIGFyZSBhdmFpbGFibGU/IFRoaXMgd2lsbCBzaG93IGhvdyBjb25maWd1cmFibGUgdGhlIGRyaXZlcnMgYXJlLgoqICAgKipJbXBsaWNhdGlvbnM6KiogV2hhdCBhcmUgdGhlIHRyYWRlLW9mZnMgb2YgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIHRoZXNlIG9wdGlvbnM/IEFyZSB0aGVyZSBhbnkgcG90ZW50aWFsIGltcGFjdHMgb24ga2VybmVsIHNpemUsIHJlc291cmNlIHVzYWdlLCBvciBwZXJmb3JtYW5jZSB0aGF0IEkgc2hvdWxkIGJlIGF3YXJlIG9mPwoKTXkgZ29hbCBpcyB0byB0aG9yb3VnaGx5IGFuYWx5emUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIEFUSDEwSyBVU0IgZHJpdmVyLiBJdCB3aWxsIGdpdmUgbWUgYSBkZWVwIGluc2lnaHQgaW50byBob3cgdGhlIGRyaXZlcnMgYXJlIGJ1aWx0IGFuZCB3aGF0IGZlYXR1cmVzIGFyZSBhdmFpbGFibGUgZm9yIHRoZXNlIGRldmljZXMsIGFuZCBob3cgdG8gY29uZmlndXJlIHRoZW0gZm9yIGRpZmZlcmVudCB1c2UgY2FzZXMuIEl0JiMzOTtzIGEgZnVuZGFtZW50YWwgcGFydCBvZiByZWFsbHkgdW5kZXJzdGFuZGluZyBob3cgdG8gd29yayB3aXRoIHRoaXMgZHJpdmVyIGFuZCBtYWtlIHRoZSBtb3N0IG9mIGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwODo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xuICAgMjpcdGNvbmZpZyBBVEgxMEtcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgODAyLjExYWMgd2lyZWxlc3MgY2FyZHMgc3VwcG9ydFwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMSBcdTAwMjZcdTAwMjYgSEFTX0RNQVxuICAgNTpcdFx0c2VsZWN0IEFUSF9DT01NT05cbiAgIDY6XHRcdHNlbGVjdCBDUkMzMlxuICAgNzpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gICA4Olx0XHRzZWxlY3QgQVRIMTBLX0NFXG4gICA5Olx0XHRoZWxwXG4gIDEwOlx0XHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3Igd2lyZWxlc3MgYWRhcHRlcnMgYmFzZWQgb25cbiAgMTE6XHRcdCAgQXRoZXJvcyBJRUVFIDgwMi4xMWFjIGZhbWlseSBvZiBjaGlwc2V0cy5cbiAgMTI6XHRcbiAgMTM6XHRcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQmIzM5O2xsIGJlIGNhbGxlZCBhdGgxMGsuXG4gIDE0Olx0XG4gIDE1Olx0Y29uZmlnIEFUSDEwS19DRVxuICAxNjpcdFx0Ym9vbFxuICAxNzpcdFxuICAxODpcdGNvbmZpZyBBVEgxMEtfUENJXG4gIDE5Olx0XHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIGF0aDEwayBQQ0kgc3VwcG9ydFwmIzM0O1xuICAyMDpcdFx0ZGVwZW5kcyBvbiBBVEgxMEsgXHUwMDI2XHUwMDI2IFBDSVxuICAyMTpcdFx0aGVscFxuICAyMjpcdFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIFBDSUUgYnVzXG4gIDIzOlx0XG4gIDI0Olx0Y29uZmlnIEFUSDEwS19BSEJcbiAgMjU6XHRcdGJvb2wgXCYjMzQ7QXRoZXJvcyBhdGgxMGsgQUhCIHN1cHBvcnRcJiMzNDtcbiAgMjY6XHRcdGRlcGVuZHMgb24gQVRIMTBLX1BDSSBcdTAwMjZcdTAwMjYgT0YgXHUwMDI2XHUwMDI2IFJFU0VUX0NPTlRST0xMRVJcbiAgMjc6XHRcdGhlbHBcbiAgMjg6XHRcdCAgVGhpcyBtb2R1bGUgYWRkcyBzdXBwb3J0IGZvciBBSEIgYnVzXG4gIDI5Olx0XG4gIDMwOlx0Y29uZmlnIEFUSDEwS19TRElPXG4gIDMxOlx0XHR0cmlzdGF0ZSBcJiMzNDtBdGhlcm9zIGF0aDEwayBTRElPIHN1cHBvcnRcJiMzNDtcbiAgMzI6XHRcdGRlcGVuZHMgb24gQVRIMTBLIFx1MDAyNlx1MDAyNiBNTUNcbiAgMzM6XHRcdGhlbHBcbiAgMzQ6XHRcdCAgVGhpcyBtb2R1bGUgYWRkcyBzdXBwb3J0IGZvciBTRElPL01NQyBidXMuXG4gIDM1Olx0XG4gIDM2Olx0Y29uZmlnIEFUSDEwS19VU0JcbiAgMzc6XHRcdHRyaXN0YXRlIFwmIzM0O0F0aGVyb3MgYXRoMTBrIFVTQiBzdXBwb3J0IChFWFBFUklNRU5UQUwpXCYjMzQ7XG4gIDM4Olx0XHRkZXBlbmRzIG9uIEFUSDEwSyBcdTAwMjZcdTAwMjYgVVNCXG4gIDM5Olx0XHRoZWxwXG4gIDQwOlx0XHQgIFRoaXMgbW9kdWxlIGFkZHMgZXhwZXJpbWVudGFsIHN1cHBvcnQgZm9yIFVTQiBidXMuIEN1cnJlbnRseVxuICA0MTpcdFx0ICB3b3JrIGluIHByb2dyZXNzIGFuZCB3aWxsIG5vdCBmdWxseSB3b3JrLlxuICA0MjpcdFxuICA0MzpcdGNvbmZpZyBBVEgxMEtfU05PQ1xuICA0NDpcdFx0dHJpc3RhdGUgXCYjMzQ7UXVhbGNvbW0gYXRoMTBrIFNOT0Mgc3VwcG9ydFwmIzM0O1xuICA0NTpcdFx0ZGVwZW5kcyBvbiBBVEgxMEtcbiAgNDY6XHRcdGRlcGVuZHMgb24gQVJDSF9RQ09NIHx8IENPTVBJTEVfVEVTVFxuICA0NzpcdFx0ZGVwZW5kcyBvbiBRQ09NX1NNRU1cbiAgNDg6XHRcdGRlcGVuZHMgb24gUUNPTV9SUFJPQ19DT01NT04gfHwgUUNPTV9SUFJPQ19DT01NT049blxuICA0OTpcdFx0c2VsZWN0IFBPV0VSX1NFUVVFTkNJTkdcbiAgNTA6XHRcdHNlbGVjdCBRQ09NX1NDTVxuICA1MTpcdFx0c2VsZWN0IFFDT01fUU1JX0hFTFBFUlNcbiAgNTI6XHRcdGhlbHBcbiAgNTM6XHRcdCAgVGhpcyBtb2R1bGUgYWRkcyBzdXBwb3J0IGZvciBpbnRlZ3JhdGVkIFdDTjM5OTAgY2hpcCBjb25uZWN0ZWRcbiAgNTQ6XHRcdCAgdG8gc3lzdGVtIE5PQyhTTk9DKS5cbiAgNTU6XHRcbiAgNTY6XHRjb25maWcgQVRIMTBLX0RFQlVHXG4gIDU3Olx0XHRib29sIFwmIzM0O0F0aGVyb3MgYXRoMTBrIGRlYnVnZ2luZ1wmIzM0O1xuICA1ODpcdFx0ZGVwZW5kcyBvbiBBVEgxMEtcbiAgNTk6XHRcdGhlbHBcbiAgNjA6XHRcdCAgRW5hYmxlcyBkZWJ1ZyBzdXBwb3J0XG4gIDYxOlx0XG4gIDYyOlx0XHQgIElmIHVuc3VyZSwgc2F5IFkgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZGVidWcgcHJvYmxlbXMuXG4gIDYzOlx0XG4gIDY0Olx0Y29uZmlnIEFUSDEwS19ERUJVR0ZTXG4gIDY1Olx0XHRib29sIFwmIzM0O0F0aGVyb3MgYXRoMTBrIGRlYnVnZnMgc3VwcG9ydFwmIzM0O1xuICA2NjpcdFx0ZGVwZW5kcyBvbiBBVEgxMEsgXHUwMDI2XHUwMDI2IERFQlVHX0ZTXG4gIDY3Olx0XHRoZWxwXG4gIDY4Olx0XHQgIEVuYWJsZWQgZGVidWdmcyBzdXBwb3J0XG4gIDY5Olx0XG4gIDcwOlx0XHQgIElmIHVuc3VyZSwgc2F5IFkgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZGVidWcgcHJvYmxlbXMuXG4gIDcxOlx0XG4gIDcyOlx0Y29uZmlnIEFUSDEwS19MRURTXG4gIDczOlx0XHRib29sXG4gIDc0Olx0XHRkZXBlbmRzIG9uIEFUSDEwS1xuICA3NTpcdFx0ZGVwZW5kcyBvbiBMRURTX0NMQVNTPXkgfHwgTEVEU19DTEFTUz1NQUM4MDIxMVxuICA3NjpcdFx0ZGVmYXVsdCB5XG4gIDc3Olx0XG4gIDc4Olx0Y29uZmlnIEFUSDEwS19TUEVDVFJBTFxuICA3OTpcdFx0Ym9vbCBcJiMzNDtBdGhlcm9zIGF0aDEwayBzcGVjdHJhbCBzY2FuIHN1cHBvcnRcJiMzNDtcbiAgODA6XHRcdGRlcGVuZHMgb24gQVRIMTBLX0RFQlVHRlNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDg6NDI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjctZmxhc2g8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjU0NDcKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFeGFtaW5pbmcgdGhlIEJ1aWxkIFByb2Nlc3MqKgoKT2theSwgdGltZSB0byBnZXQgYSBoYW5kbGUgb24gd2hhdCYjMzk7cyBhY3R1YWxseSBoYXBwZW5pbmcgZHVyaW5nIHRoZSBidWlsZC4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBkaXZlIHN0cmFpZ2h0IGludG8gdGhlIGBNYWtlZmlsZWAuIFRoYXQmIzM5O3Mgd2hlcmUgYWxsIHRoZSBvcmNoZXN0cmF0aW9uIGhhcHBlbnMsIHJpZ2h0PyBJdCYjMzk7cyB0aGUgY2VudHJhbCBodWIgZm9yIGRlZmluaW5nIGRlcGVuZGVuY2llcyBhbmQgY29tbWFuZHMuIEkgbmVlZCB0byBxdWlja2x5IGlkZW50aWZ5IHdoaWNoIGZpbGVzIGFyZSBiZWluZyBjb21waWxlZCwgbGlua2VkLCBvciBvdGhlcndpc2UgcHJvY2Vzc2VkLiBVbmRlcnN0YW5kaW5nIHRoaXMgd2lsbCBnaXZlIG1lIGEgc29saWQgcGljdHVyZSBvZiB0aGUgZW50aXJlIGJ1aWxkIHByb2Nlc3MuIEkmIzM5O20gZ29pbmcgdG8gbG9vayBmb3IgdGhlIGtleSB0YXJnZXRzIGFuZCB0aGVpciBhc3NvY2lhdGVkIHJ1bGVzIHRvIHRyYWNlIHRoZSBmbG93LiBUaGlzIGlzIGZ1bmRhbWVudGFsIGZvciBkaWFnbm9zaW5nIGFueSBwb3RlbnRpYWwgYnVpbGQgaXNzdWVzIG9yIGluZWZmaWNpZW5jaWVzLCBhbmQgdG8gaW1wcm92ZSBteSBvdmVyYWxsIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGJ1aWxkIHNldHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwODo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvTWFrZWZpbGUmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDUwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcbiAgIDI6XHRvYmotJChDT05GSUdfQVRIMTBLKSAmIzQzOz0gYXRoMTBrX2NvcmUub1xuICAgMzpcdGF0aDEwa19jb3JlLXkgJiM0Mzs9IG1hYy5vIFxcXG4gICA0Olx0XHRcdCBkZWJ1Zy5vIFxcXG4gICA1Olx0XHRcdCBjb3JlLm8gXFxcbiAgIDY6XHRcdFx0IGh0Yy5vIFxcXG4gICA3Olx0XHRcdCBodHQubyBcXFxuICAgODpcdFx0XHQgaHR0X3J4Lm8gXFxcbiAgIDk6XHRcdFx0IGh0dF90eC5vIFxcXG4gIDEwOlx0XHRcdCB0eHJ4Lm8gXFxcbiAgMTE6XHRcdFx0IHdtaS5vIFxcXG4gIDEyOlx0XHRcdCB3bWktdGx2Lm8gXFxcbiAgMTM6XHRcdFx0IGJtaS5vIFxcXG4gIDE0Olx0XHRcdCBody5vIFxcXG4gIDE1Olx0XHRcdCBwMnAubyBcXFxuICAxNjpcdFx0XHQgc3dhcC5vXG4gIDE3Olx0XG4gIDE4Olx0YXRoMTBrX2NvcmUtJChDT05GSUdfQVRIMTBLX1NQRUNUUkFMKSAmIzQzOz0gc3BlY3RyYWwub1xuICAxOTpcdGF0aDEwa19jb3JlLSQoQ09ORklHX05MODAyMTFfVEVTVE1PREUpICYjNDM7PSB0ZXN0bW9kZS5vXG4gIDIwOlx0YXRoMTBrX2NvcmUtJChDT05GSUdfQVRIMTBLX1RSQUNJTkcpICYjNDM7PSB0cmFjZS5vXG4gIDIxOlx0YXRoMTBrX2NvcmUtJChDT05GSUdfVEhFUk1BTCkgJiM0Mzs9IHRoZXJtYWwub1xuICAyMjpcdGF0aDEwa19jb3JlLSQoQ09ORklHX0FUSDEwS19MRURTKSAmIzQzOz0gbGVkcy5vXG4gIDIzOlx0YXRoMTBrX2NvcmUtJChDT05GSUdfTUFDODAyMTFfREVCVUdGUykgJiM0Mzs9IGRlYnVnZnNfc3RhLm9cbiAgMjQ6XHRhdGgxMGtfY29yZS0kKENPTkZJR19QTSkgJiM0Mzs9IHdvdy5vXG4gIDI1Olx0YXRoMTBrX2NvcmUtJChDT05GSUdfREVWX0NPUkVEVU1QKSAmIzQzOz0gY29yZWR1bXAub1xuICAyNjpcdGF0aDEwa19jb3JlLSQoQ09ORklHX0FUSDEwS19DRSkgJiM0Mzs9IGNlLm9cbiAgMjc6XHRcbiAgMjg6XHRvYmotJChDT05GSUdfQVRIMTBLX1BDSSkgJiM0Mzs9IGF0aDEwa19wY2kub1xuICAyOTpcdGF0aDEwa19wY2kteSAmIzQzOz0gcGNpLm9cbiAgMzA6XHRcbiAgMzE6XHRhdGgxMGtfcGNpLSQoQ09ORklHX0FUSDEwS19BSEIpICYjNDM7PSBhaGIub1xuICAzMjpcdFxuICAzMzpcdG9iai0kKENPTkZJR19BVEgxMEtfU0RJTykgJiM0Mzs9IGF0aDEwa19zZGlvLm9cbiAgMzQ6XHRhdGgxMGtfc2Rpby15ICYjNDM7PSBzZGlvLm9cbiAgMzU6XHRcbiAgMzY6XHRvYmotJChDT05GSUdfQVRIMTBLX1VTQikgJiM0Mzs9IGF0aDEwa191c2Iub1xuICAzNzpcdGF0aDEwa191c2IteSAmIzQzOz0gdXNiLm9cbiAgMzg6XHRcbiAgMzk6XHRvYmotJChDT05GSUdfQVRIMTBLX1NOT0MpICYjNDM7PSBhdGgxMGtfc25vYy5vXG4gIDQwOlx0YXRoMTBrX3Nub2MteSAmIzQzOz0gcW1pLm8gXFxcbiAgNDE6XHRcdFx0IHFtaV93bGZ3X3YwMS5vIFxcXG4gIDQyOlx0XHRcdCBzbm9jLm9cbiAgNDM6XHRcbiAgNDQ6XHQjIGZvciB0cmFjaW5nIGZyYW1ld29yayB0byBmaW5kIHRyYWNlLmhcbiAgNDU6XHRDRkxBR1NfdHJhY2UubyA6PSAtSSQoc3JjKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwODo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjQxMAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDE1MjcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHlzaXMgb2YgVnVsbmVyYWJpbGl0eSBTdXJmYWNlIGFuZCBGdXp6aW5nIFN0cmF0ZWd5IGZvciBhdGgxMGsgRHJpdmVyKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgdGhvdWdodCBwcm9jZXNzIHJldm9sdmVzIGFyb3VuZCBhc3Nlc3NpbmcgdGhlIHBvdGVudGlhbCBmb3IgZnV6emluZyB0aGUgYGF0aDEwa2AgZHJpdmVyLiBJJiMzOTt2ZSBwaW5wb2ludGVkIHRocmVlIGtleSBhcmVhcyB3aXRoaW4gdGhlIGRyaXZlciYjMzk7cyBjb2RlIHRoYXQgbm93IGhhdmUgYWRkZWQgZGVmZW5zaXZlIGNoZWNrcyDigJMgbmFtZWx5LCBgZGVidWcuY2AgKHNwZWNpZmljYWxseSBgYXRoMTBrX3JlZ192YWx1ZV93cml0ZWAgYW5kIGBhdGgxMGtfbWVtX3ZhbHVlX3dyaXRlYCkgYW5kIGBodHRfcnguY2AgKGBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGxgKS4gVGhlc2UgYXJlIGludGVyZXN0aW5nIGJlY2F1c2UgdGhlIGFkZGVkIGlucHV0IHZhbGlkYXRpb24gc3VnZ2VzdHMgYSB2dWxuZXJhYmlsaXR5IG1heSBoYXZlIGJlZW4gcHJlc2VudCwgd2hpY2ggbWFrZXMgdGhlbSBwcmltZSB0YXJnZXRzLgoKRmlyc3QsIEkgb2JzZXJ2ZSB0aGF0IFN5emthbGxlciBpcyByZWxldmFudC4gSXQgZW11bGF0ZXMgVVNCIGRldmljZXMsIHdoaWNoIGFyZSBhIHZpYWJsZSBhdHRhY2sgc3VyZmFjZSBmb3Igd2lyZWxlc3MgZG9uZ2xlcy4gSXQmIzM5O3MgZnV6emluZyBVU0IgZHJpdmVycywgd2hpY2ggaXMgd2hhdCBgYXRoMTBrX3VzYmAgaXMuIFRoZSBjcml0aWNhbCBwaWVjZSBoZXJlIGlzIHRoZSBVU0IgSUQgdGFibGU6IHRoZSBkZXZpY2UgSUQgYDB4MTNiMToweDAwNDJgIGlzIGEgbWF0Y2gsIG1lYW5pbmcgSSBjYW4gcG90ZW50aWFsbHkgdHJpZ2dlciB0aGUgZHJpdmVyIGFuZCB0aGUgdnVsbmVyYWJpbGl0eS4KClRoZSBpbmNsdXNpb24gb2YgdGhlc2UgZGVmZW5zaXZlIGNoZWNrcyBtYWtlcyBtZSB0aGluayB0aGF0IHRoZXNlIGNvZGUgcGF0aHMsIGFuZCB0aGVyZWZvcmUgdGhlc2UgZnVuY3Rpb25zLCBhcmUgV29ydGhGdXp6aW5nLiBUaGUgY2hhbmdlcyBhcmUgc3BlY2lmaWNhbGx5IGFib3V0IGFkZGVkIGlucHV0IHZhbGlkYXRpb24sIHdoaWNoIGZpdHMgdGhlIGdlbmVyYWwgV29ydGhGdXp6aW5nIGNyaXRlcmlhLgoKTm93LCBsZXQmIzM5O3MgaWRlbnRpZnkgdGhlIHNwZWNpZmljIHN5bWJvbHMgdG8gdGFyZ2V0LiBUaGUgdGhyZWUga2V5IHN5bWJvbHMgYXJlIGBhdGgxMGtfcmVnX3ZhbHVlX3dyaXRlYCwgYGF0aDEwa19tZW1fdmFsdWVfd3JpdGVgLCBhbmQgYGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obGAuIEZ1cnRoZXJtb3JlLCBJJiMzOTt2ZSBpZGVudGlmaWVkIHRoYXQgYGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obGAgaXMgY2FsbGVkIGJ5IGBhdGgxMGtfaHR0X3QyaF9tc2dfaGFuZGxlcmAuCgpDcnVjaWFsbHksIEkgbmVlZCB0byBrbm93IGlmIHRoZXNlIGZ1bmN0aW9ucyBhcmUgaW5saW5lLWFibGUuIEkgY2FuIHNlZSB0aGF0IGBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGxgIGNhbm5vdCBiZSBpbmxpbmVkLCBhcyBpdHMgcG9pbnRlciBpcyBzdG9yZWQuIExpa2V3aXNlLCBgYXRoMTBrX3JlZ192YWx1ZV93cml0ZWAgYW5kIGBhdGgxMGtfbWVtX3ZhbHVlX3dyaXRlYCwgZHVlIHRvIHRoZWlyIHBvaW50ZXIgYXNzaWdubWVudHMsIGFyZSBhbHNvIGxpa2VseSB0byBiZSBwcmVzZW50IGluIHRoZSBzeW1ib2wgdGFibGUsIHNpbmNlIHRoZXkgY2FuJiMzOTt0IGJlIGlubGluZWQgZWl0aGVyLiBUaGlzIGlzIGNydWNpYWwgZm9yIFN5emthbGxlciB0byByZWFjaCB0aGVtLgoKRmluYWxseSwgY29uZmlndXJhdGlvbi4gSSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZSByZXF1aXJlZCBrZXJuZWwgbW9kdWxlcywgcGFydGljdWxhcmx5IGBBVEgxMEtgLCBgQVRIMTBLX1VTQmAgYW5kIHByb2JhYmx5IGBBVEgxMEtfREVCVUdGU2AsIGFyZSBlbmFibGVkLiBUaGUgZGVidWdmcyBlbnRyaWVzIHJlcXVpcmUgdGhlIGRlYnVnZnMgY29uZmlnIHNldHRpbmcsIHNvIEkgbmVlZCB0byB2ZXJpZnkgdGhhdC4KCkluIHN1bW1hcnksIG15IHN0cmF0ZWd5IGlzIHRvIGxldmVyYWdlIFN5emthbGxlciYjMzk7cyBVU0IgZW11bGF0aW9uIGNhcGFiaWxpdGllcyB0byByZWFjaCBgYXRoMTBrX3JlZ192YWx1ZV93cml0ZWAsIGBhdGgxMGtfbWVtX3ZhbHVlX3dyaXRlYCwgYW5kIGBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGxgIHRocm91Z2ggdmFsaWQgZGV2aWNlIGVtdWxhdGlvbi4gSSBleHBlY3QgdGhlc2UgZW50cnkgcG9pbnRzIHRvIGJlIHJlYWRpbHkgYWNjZXNzaWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDg6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHX0FUSDEwS19ERUJVR0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEwayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaD0xMDExPXN0cnVjdCBhdGgxMGsge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvY29yZS5oLTEyMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2NvcmUuaDoxMjM5OiNpZmRlZiBDT05GSUdfQVRIMTBLX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvY29yZS5oLTEyNDAtXHRzdHJ1Y3QgYXRoMTBrX2RlYnVnIGRlYnVnO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYz00Mj12b2lkIGF0aDEwa19kZWJ1Z19wcmludF9od2Z3X2luZm8oc3RydWN0IGF0aDEwayAqYXIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jLTU3LVx0XHQgICAgSVNfRU5BQkxFRChDT05GSUdfQVRIMTBLX0RFQlVHKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYzo1ODpcdFx0ICAgIElTX0VOQUJMRUQoQ09ORklHX0FUSDEwS19ERUJVR0ZTKSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy01OS1cdFx0ICAgIElTX0VOQUJMRUQoQ09ORklHX0FUSDEwS19UUkFDSU5HKSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmM9MTQ4PUVYUE9SVF9TWU1CT0woYXRoMTBrX3dhcm4pO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jLTE0OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYzoxNTA6I2lmZGVmIENPTkZJR19BVEgxMEtfREVCVUdGU1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jLTE1MS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmM9MjY2OD12b2lkIGF0aDEwa19kZWJ1Z191bnJlZ2lzdGVyKHN0cnVjdCBhdGgxMGsgKmFyKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy0yNjcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jOjI2NzM6I2VuZGlmIC8qIENPTkZJR19BVEgxMEtfREVCVUdGUyAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jLTI2NzQtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5oPTg3PXZvaWQgYXRoMTBrX3ByaW50X2RyaXZlcl9pbmZvKHN0cnVjdCBhdGgxMGsgKmFyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuaC04OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuaDo4OTojaWZkZWYgQ09ORklHX0FUSDEwS19ERUJVR0ZTXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmgtOTAtaW50IGF0aDEwa19kZWJ1Z19zdGFydChzdHJ1Y3QgYXRoMTBrICphcik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5oPTE5OT1zdGF0aWMgaW5saW5lIGludCBhdGgxMGtfZGVidWdfZndfc3RhdHNfcmVxdWVzdChzdHJ1Y3QgYXRoMTBrICphcilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmgtMjA5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5oOjIxMDojZW5kaWYgLyogQ09ORklHX0FUSDEwS19ERUJVR0ZTICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmgtMjExLSNpZmRlZiBDT05GSUdfTUFDODAyMTFfREVCVUdGU1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwODo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTQyOQoJCQkJCQkJb3V0cHV0OiAyMzAKCQkJCQkJCXRob3VnaHRzOiAzMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIGF0aDEwayBEcml2ZXIgRnV6emluZyBDb25maWd1cmF0aW9uKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEl0IGxvb2tzIGxpa2UgdGhlIGBhdGgxMGtfcmVnX3ZhbHVlX3dyaXRlYCBhbmQgYGF0aDEwa19tZW1fdmFsdWVfd3JpdGVgIGZ1bmN0aW9ucyBhcmUgZ2F0ZWQgYmVoaW5kIGAjaWZkZWYgQ09ORklHX0FUSDEwS19ERUJVR0ZTYC4gTWFrZXMgc2Vuc2UsIHRoZXkmIzM5O3JlIGxpa2VseSBkZWJ1Z2dpbmcgb3IgdGVzdGluZyB1dGlsaXRpZXMuIEFuZCBvZiBjb3Vyc2UsIGBDT05GSUdfQVRIMTBLX0RFQlVHRlNgIGlzIGRlcGVuZGVudCBvbiBib3RoIGBBVEgxMEtgIGFuZCBgREVCVUdfRlNgLCB3aGljaCBpbiB0dXJuIGhpbmdlcyBvbiBgTUFDODAyMTFgIGFuZCBgSEFTX0RNQWAuIEZ1cnRoZXJtb3JlLCBgQVRIMTBLX1VTQmAgaXMgZGVwZW5kZW50IG9uIGBBVEgxMEtgIGFuZCBgVVNCYC4gVGhpcyBzZWVtcyBsaWtlIGEgZmFpcmx5IHN0YW5kYXJkLCBsb2dpY2FsIGRlcGVuZGVuY3kgY2hhaW4uIE5vdGhpbmcgdW5leHBlY3RlZCB0aGVyZSwgYW5kIG5vIG9idmlvdXMgcmVkIGZsYWdzLgoKTm93LCBsZXQmIzM5O3MgdmVyaWZ5IGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcmVsYXRlZCBjb25maWdzIG9yIHN5bWJvbHMuIE9rYXksIGl0IGhhcyBwcm92aWRlZCBhIGxpc3Qgb2YgYEZvY3VzU3ltYm9sc2A6IGAmIzM0O2F0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obCYjMzQ7YCwgYCYjMzQ7YXRoMTBrX3JlZ192YWx1ZV93cml0ZSYjMzQ7YCwgYCYjMzQ7YXRoMTBrX21lbV92YWx1ZV93cml0ZSYjMzQ7YCwgYW5kIGAmIzM0O2F0aDEwa19odHRfdDJoX21zZ19oYW5kbGVyJiMzNDtgLiBUaG9zZSBhcmUgYWxsIHNwZWNpZmljIHRvIHRoZSBhdGgxMGsgZHJpdmVyLCBzbyB0aGF0IG1hdGNoZXMgdXAuIEFuZCB0aGUgYEVuYWJsZUNvbmZpZ3NgIGxpc3QgLSBgJiMzNDtBVEgxMEsmIzM0O2AsIGAmIzM0O0FUSDEwS19VU0ImIzM0O2AsIGFuZCBgJiMzNDtBVEgxMEtfREVCVUdGUyYjMzQ7YCAtIG1ha2VzIHBlcmZlY3Qgc2Vuc2UgZ2l2ZW4gdGhlIGRlcGVuZGVuY2llcyB3ZSBpZGVudGlmaWVkLgoKTG9va2luZyBhdCB0aGUgaW5zdHJ1Y3Rpb25zIGFuZCBndWlkZWxpbmVzLCAmIzM0O1dvcnRoRnV6emluZyYjMzQ7IGlzIHNldCB0byB0cnVlLCBzbyB0aGF0IGlzIHRha2VuIGNhcmUgb2YuIFRoZSBgRm9jdXNTeW1ib2xzYCBhcmUgdGhlcmUsIGFuZCB0aGUgYEVuYWJsZUNvbmZpZ3NgIGFyZSBjb3JyZWN0bHkgbGlzdGVkLiBUaGUgcmVhc29uaW5nIHNlZW1zIGNvbmNpc2UgYW5kIGFjY3VyYXRlIGZvciB0aGUgY29uY2x1c2lvbi4gQmFzZWQgb24gYWxsIG9mIHRoaXMsIGV2ZXJ5dGhpbmcgc2VlbXMgYWNjdXJhdGUgYW5kIHN0cmFpZ2h0LWZvcndhcmQsIHNvIEkgYW0gcmVhZHkgdG8gbW92ZSBmb3J3YXJkLiBMZXQmIzM5O3MgY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwODo0MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QVRIMTBLJiMzNDssCiAgICAmIzM0O0FUSDEwS19VU0ImIzM0OywKICAgICYjMzQ7QVRIMTBLX0RFQlVHRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGwmIzM0OywKICAgICYjMzQ7YXRoMTBrX3JlZ192YWx1ZV93cml0ZSYjMzQ7LAogICAgJiMzNDthdGgxMGtfbWVtX3ZhbHVlX3dyaXRlJiMzNDssCiAgICAmIzM0O2F0aDEwa19odHRfdDJoX21zZ19oYW5kbGVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRhcnkgYW5kIGxlbmd0aCB2YWxpZGF0aW9uIGNoZWNrcyB0byBhdGgxMGsgZGVidWdmcyB3cml0ZSBoYW5kbGVycyAoYXRoMTBrX3JlZ192YWx1ZV93cml0ZSwgYXRoMTBrX21lbV92YWx1ZV93cml0ZSkgYW5kIFJYIGZyYWdtZW50IHBhY2tldCBwcm9jZXNzaW5nIGluIGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obC4gQXRoMTBrIHN1cHBvcnRzIFVTQiBkZXZpY2VzIChBVEgxMEtfVVNCKSBhbmQgZGVidWdmcyBvcGVyYXRpb25zLCB3aGljaCBjYW4gYmUgcmVhY2hlZCBhbmQgZnV6emVkIHZpYSBVU0IgZW11bGF0aW9uIChSYXcgR2FkZ2V0KSBhbmQgZGVidWdmcyBpbnRlcmZhY2VzIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtBVEgxMEsmIzM0OywKICAgICYjMzQ7QVRIMTBLX1VTQiYjMzQ7LAogICAgJiMzNDtBVEgxMEtfREVCVUdGUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2F0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obCYjMzQ7LAogICAgJiMzNDthdGgxMGtfcmVnX3ZhbHVlX3dyaXRlJiMzNDssCiAgICAmIzM0O2F0aDEwa19tZW1fdmFsdWVfd3JpdGUmIzM0OywKICAgICYjMzQ7YXRoMTBrX2h0dF90MmhfbXNnX2hhbmRsZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZGFyeSBhbmQgbGVuZ3RoIHZhbGlkYXRpb24gY2hlY2tzIHRvIGF0aDEwayBkZWJ1Z2ZzIHdyaXRlIGhhbmRsZXJzIChhdGgxMGtfcmVnX3ZhbHVlX3dyaXRlLCBhdGgxMGtfbWVtX3ZhbHVlX3dyaXRlKSBhbmQgUlggZnJhZ21lbnQgcGFja2V0IHByb2Nlc3NpbmcgaW4gYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsLiBBdGgxMGsgc3VwcG9ydHMgVVNCIGRldmljZXMgKEFUSDEwS19VU0IpIGFuZCBkZWJ1Z2ZzIG9wZXJhdGlvbnMsIHdoaWNoIGNhbiBiZSByZWFjaGVkIGFuZCBmdXp6ZWQgdmlhIFVTQiBlbXVsYXRpb24gKFJhdyBHYWRnZXQpIGFuZCBkZWJ1Z2ZzIGludGVyZmFjZXMgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA4OjQyPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDg6NDI8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Y29yZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBhbmQgdmFsaWRpdHkgY2hlY2tzIGluIGF0aDEwayBkZWJ1Z2ZzIHdyaXRlIGhhbmRsZXJzIChhdGgxMGtfcmVnX3ZhbHVlX3dyaXRlLCBhdGgxMGtfbWVtX3ZhbHVlX3dyaXRlKSBhbmQgaW4gdGhlIEhUVCBSWCBmcmFnbWVudCBwcm9jZXNzaW5nIGZ1bmN0aW9uIChhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGwpLiBcblxuU3BlY2lmaWNhbGx5OlxuLSBSZWdpc3RlciBhZGRyZXNzIGFuZCBtZW1vcnkgb2Zmc2V0L2NvdW50IHZhbGlkYXRpb25zIHByZXZlbnQgb3V0LW9mLWJvdW5kcyBISUYgZGlhZ25vc3RpY3MgYW5kIHJlZ2lzdGVyIHdyaXRlcy5cbi0gTGVuZ3RoIGNoZWNrcyBvbiBza2IgYW5kIGhlYWRlciBvZmZzZXRzIGluIGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obCBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgaW50byBza2IgYnVmZmVyIGRhdGEuXG4tIEFueSBwb3RlbnRpYWwgZXJyb3ItcGF0aCBpc3N1ZXMgKHN1Y2ggYXMgZWFybHkgcmV0dXJuIHdpdGhvdXQgdW5sb2NraW5nIGNvbmZfbXV0ZXgpIGFyZSBsb2NraW5nIGJ1Z3MgZGV0ZWN0ZWQgYnkgTE9DS0RFUC5cblxuTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgYWxsb2NhdGlvbnMsIHJlYWRzIG9mIHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBmaWVsZHMsIG9yIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzIGFyZSBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQuIFRoZXJlZm9yZSwgc3RhbmRhcmQgS0FTQU4gYW5kIExPQ0tERVAgY29uZmlndXJhdGlvbnMgYXJlIGZ1bGx5IHN1ZmZpY2llbnQsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0CgpGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDBjMWUyNjkxMWQxZjU4NGQ1YzBiYzE5YjBhNmU0ZDJlY2NhMDZlNzgKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVGh1IFNlcCAxMCAwODo0MTozMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYwppbmRleCBmYjYxZTUzZmY0YzM0Li41MGUwMTcwMjExYjgxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jCkBAIC03MjksNiAmIzQzOzcyOSwxMyBAQCBzdGF0aWMgc3NpemVfdCBhdGgxMGtfcmVnX3ZhbHVlX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLAogCiAJcmVnX2FkZHIgPSBhci0mZ3Q7ZGVidWcucmVnX2FkZHI7CiAKJiM0MzsJLyogRklYOiBWYWxpZGF0ZSByZWdpc3RlciBhZGRyZXNzICovCiYjNDM7CWlmIChyZWdfYWRkciAmZ3Q7IGFyLSZndDtod19wYXJhbXMucmVnX3NpemUpIHsKJiM0MzsJCWF0aDEwa193YXJuKGFyLCAmIzM0O0ludmFsaWQgcmVnaXN0ZXIgYWRkcmVzcyAweCUwOHhcbiYjMzQ7LCByZWdfYWRkcik7CiYjNDM7CQlyZXQgPSAtRUlOVkFMOwomIzQzOwkJZ290byBleGl0OwomIzQzOwl9CiYjNDM7CiAJcmV0ID0ga3N0cnRvdTMyX2Zyb21fdXNlcih1c2VyX2J1ZiwgY291bnQsIDAsICZhbXA7cmVnX3ZhbCk7CiAJaWYgKHJldCkKIAkJZ290byBleGl0OwpAQCAtODE5LDYgJiM0Mzs4MjYsMTkgQEAgc3RhdGljIHNzaXplX3QgYXRoMTBrX21lbV92YWx1ZV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSwKIAogCW11dGV4X2xvY2soJmFtcDthci0mZ3Q7Y29uZl9tdXRleCk7CiAKJiM0MzsJLyogRklYOiBWYWxpZGF0ZSBhZGRyZXNzIGFnYWluc3QgbWVtb3J5IHNpemUgKi8KJiM0MzsJaWYgKCpwcG9zICZndDsgYXItJmd0O2h3X3BhcmFtcy5tZW1fc2l6ZSkgewomIzQzOwkJYXRoMTBrX3dhcm4oYXIsICYjMzQ7SW52YWxpZCBhZGRyZXNzIDB4JTA4eCBmb3IgbWVtX3ZhbHVlXG4mIzM0OywgKHUzMikqcHBvcyk7CiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQomIzQzOwomIzQzOwkvKiBGSVg6IFZhbGlkYXRlIHNpemUgYWdhaW5zdCByZW1haW5pbmcgbWVtb3J5ICovCiYjNDM7CWlmIChjb3VudCAmZ3Q7IGFyLSZndDtod19wYXJhbXMubWVtX3NpemUgLSAqcHBvcykgewomIzQzOwkJYXRoMTBrX3dhcm4oYXIsICYjMzQ7SW52YWxpZCBzaXplICV6dSBmb3IgbWVtX3ZhbHVlIGF0IDB4JTA4eFxuJiMzNDssCiYjNDM7CQkJICAgIGNvdW50LCAodTMyKSpwcG9zKTsKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwl9CiYjNDM7CiAJYnVmID0gdm1hbGxvYyhjb3VudCk7CiAJaWYgKCFidWYpIHsKIAkJcmV0ID0gLUVOT01FTTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jCmluZGV4IGFiMmQzNzNiNDc1MGQuLjRmYWJiOTI2NDdkOWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguYwpAQCAtMjc3NSw2ICYjNDM7Mjc3NSwxMyBAQCBzdGF0aWMgYm9vbCBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGwoc3RydWN0IGF0aDEwa19odHQgKmh0dCwKIAlzdHJ1Y3QgaHR0X3Jlc3AgKnJlc3A7CiAJc2l6ZV90IHRvdF9oZHJfbGVuOwogCiYjNDM7CiYjNDM7CS8qIEZJWDogVmFsaWRhdGUgc2tiIGxlbmd0aCBiZWZvcmUgc2tiX3B1bGwgKi8KJiM0MzsJaWYgKHNrYi0mZ3Q7bGVuICZsdDsgSFRUX1JYX0ZSQUdfSU5EX0lORk8wX0hFQURFUl9MRU4pIHsKJiM0MzsJCWF0aDEwa193YXJuKGFyLCAmIzM0O0ludmFsaWQgc2tiIGxlbiAlZCBmb3IgUlhfRlJBR19JTkRcbiYjMzQ7LCBza2ItJmd0O2xlbik7CiYjNDM7CQlyZXR1cm4gZmFsc2U7CiYjNDM7CX0KJiM0MzsKIAlyZXNwID0gKHN0cnVjdCBodHRfcmVzcCAqKShza2ItJmd0O2RhdGEgJiM0MzsgSFRUX1JYX0ZSQUdfSU5EX0lORk8wX0hFQURFUl9MRU4pOwogCXNrYl9wdWxsKHNrYiwgSFRUX1JYX0ZSQUdfSU5EX0lORk8wX0hFQURFUl9MRU4pOwogCXNrYl90cmltKHNrYiwgc2tiLSZndDtsZW4gLSBGQ1NfTEVOKTsKQEAgLTI3OTIsNiAmIzQzOzI3OTksMTMgQEAgc3RhdGljIGJvb2wgYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsKHN0cnVjdCBhdGgxMGtfaHR0ICpodHQsCiAJbnVtX21wZHVfcmFuZ2VzID0gTVMoX19sZTMyX3RvX2NwdShyeF9obC0mZ3Q7aGRyLmluZm8xKSwKIAkJCSAgICAgSFRUX1JYX0lORElDQVRJT05fSU5GTzFfTlVNX01QRFVfUkFOR0VTKTsKIAomIzQzOwkvKiBGSVg6IFZhbGlkYXRlIG51bV9tcGR1X3JhbmdlcyAqLwomIzQzOwlpZiAobnVtX21wZHVfcmFuZ2VzICZndDsgMSkgewomIzQzOwkJYXRoMTBrX3dhcm4oYXIsICYjMzQ7SW52YWxpZCBudW1fbXBkdV9yYW5nZXMgJWRcbiYjMzQ7LCBudW1fbXBkdV9yYW5nZXMpOwomIzQzOwkJZ290byBlcnI7CiYjNDM7CX0KJiM0MzsKJiM0MzsKIAl0b3RfaGRyX2xlbiA9IHNpemVvZihzdHJ1Y3QgaHR0X3Jlc3BfaGRyKSAmIzQzOwogCQkgICAgICBzaXplb2YocnhfaGwtJmd0O2hkcikgJiM0MzsKIAkJICAgICAgc2l6ZW9mKHJ4X2hsLSZndDtwcGR1KSAmIzQzOwpAQCAtMjc5OSwxMCAmIzQzOzI4MTMsMjYgQEAgc3RhdGljIGJvb2wgYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsKHN0cnVjdCBhdGgxMGtfaHR0ICpodHQsCiAJCSAgICAgIHNpemVvZihyeF9obC0mZ3Q7ZndfZGVzYykgJiM0MzsKIAkJICAgICAgc2l6ZW9mKHN0cnVjdCBodHRfcnhfaW5kaWNhdGlvbl9tcGR1X3JhbmdlKSAqIG51bV9tcGR1X3JhbmdlczsKIAomIzQzOwkvKiBGSVg6IFZhbGlkYXRlIHRvdF9oZHJfbGVuIGFnYWluc3Qgc2tiIGxlbmd0aCAqLwomIzQzOwlpZiAodG90X2hkcl9sZW4gJmd0OyBza2ItJmd0O2xlbikgewomIzQzOwkJYXRoMTBrX3dhcm4oYXIsICYjMzQ7SW52YWxpZCB0b3RfaGRyX2xlbiAlenUgJmd0OyBza2ItJmd0O2xlbiAldVxuJiMzNDssCiYjNDM7CQkJICAgIHRvdF9oZHJfbGVuLCBza2ItJmd0O2xlbik7CiYjNDM7CQlnb3RvIGVycjsKJiM0MzsJfQomIzQzOwomIzQzOwogCXRpZCA9ICBNUyhyeF9obC0mZ3Q7aGRyLmluZm8wLCBIVFRfUlhfSU5ESUNBVElPTl9JTkZPMF9FWFRfVElEKTsKIAlyeF9kZXNjID0gKHN0cnVjdCBodHRfaGxfcnhfZGVzYyAqKShza2ItJmd0O2RhdGEgJiM0MzsgdG90X2hkcl9sZW4pOwogCXJ4X2Rlc2NfaW5mbyA9IF9fbGUzMl90b19jcHUocnhfZGVzYy0mZ3Q7aW5mbyk7CiAKJiM0MzsKJiM0MzsJLyogRklYOiBWYWxpZGF0ZSBmd19kZXNjLmxlbiBhZ2FpbnN0IHJlbWFpbmluZyBza2IgbGVuZ3RoICovCiYjNDM7CWlmIChyeF9obC0mZ3Q7ZndfZGVzYy5sZW4gJmd0OyBza2ItJmd0O2xlbiAtIHRvdF9oZHJfbGVuKSB7CiYjNDM7CQlhdGgxMGtfd2FybihhciwgJiMzNDtJbnZhbGlkIGZ3X2Rlc2MubGVuICV1ICZndDsgcmVtYWluaW5nIHNrYiBsZW5cbiYjMzQ7LAomIzQzOwkJCSAgICByeF9obC0mZ3Q7ZndfZGVzYy5sZW4pOwomIzQzOwkJZ290byBlcnI7CiYjNDM7CX0KJiM0MzsKIAloZHIgPSAoc3RydWN0IGllZWU4MDIxMV9oZHIgKikoKHU4ICopcnhfZGVzYyAmIzQzOyByeF9obC0mZ3Q7ZndfZGVzYy5sZW4pOwogCiAJaWYgKGlzX211bHRpY2FzdF9ldGhlcl9hZGRyKGhkci0mZ3Q7YWRkcjEpKSB7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwODo0MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuNy1mbGFzaDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDQ5CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMjk4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUGF0Y2g6IEEgRGVlcCBEaXZlKioKCk9rYXksIGxldCYjMzk7cyBkaXNzZWN0IHRoaXMgcGF0Y2guIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byB1bmRlcnN0YW5kIHRoZSBwdXJwb3NlIGJlaGluZCB0aGVzZSBjaGFuZ2VzLiBJdCBsb29rcyBsaWtlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggbW9kaWZpY2F0aW9ucyB3aXRoaW4gdGhlIGBhdGgxMGtgIHdpcmVsZXNzIGRyaXZlciwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIHRoZSBgYXRoMTBrL2AgZGlyZWN0b3J5LiBUaGF0IGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdDsgYW55dGhpbmcgcmVsYXRlZCB0byBsb3ctbGV2ZWwgd2lyZWxlc3MgaW50ZXJhY3Rpb24gd2FycmFudHMgY2FyZWZ1bCBzY3J1dGlueSwgZ2l2ZW4gdGhlIHBvdGVudGlhbCBmb3IgcGVyZm9ybWFuY2UgaW1wYWN0cyBhbmQsIG9mIGNvdXJzZSwgc2VjdXJpdHkgaW1wbGljYXRpb25zLgoKVGhlIHBhdGNoIHNlZW1zIHRvIGJlIGludHJvZHVjaW5nIHNldmVyYWwgY3J1Y2lhbCBjaGVja3MsIGd1YXJkaW5nIGFnYWluc3QgcG90ZW50aWFsbHkgcHJvYmxlbWF0aWMgc2NlbmFyaW9zLiBJdCYjMzk7cyBtb2RpZnlpbmcgdHdvIGZpbGVzOiBgZGVidWcuY2AgYW5kIGBodHRfcnguY2AuCgpJbiBgZGVidWcuY2AsIHRoZSBhZGRpdGlvbnMgdG8gYGF0aDEwa19yZWdfdmFsdWVfd3JpdGVgIGFuZCBgYXRoMTBrX21lbV92YWx1ZV93cml0ZWAgYXJlIHBhcnRpY3VsYXJseSBub3Rld29ydGh5LiBXZSYjMzk7cmUgbm93IHZhbGlkYXRpbmcgcmVnaXN0ZXIgYW5kIG1lbW9yeSBhZGRyZXNzZXMgYWdhaW5zdCB0aGUgaGFyZHdhcmUgcGFyYW1ldGVycyAoYGFyLSZndDtod19wYXJhbXMucmVnX3NpemVgIGFuZCBgYXItJmd0O2h3X3BhcmFtcy5tZW1fc2l6ZWAgcmVzcGVjdGl2ZWx5KS4gVGhpcyBzdHJvbmdseSBzdWdnZXN0cyBhbiBhdHRlbXB0IHRvIHByZXZlbnQgb3V0LW9mLWJvdW5kcyB3cml0ZXMuIFRoZSBjb3JlIG9mIHRoaXMgaXMgdG8gcHJldmVudCBidWZmZXIgb3ZlcmZsb3dzLiBNeSBleHBlcmllbmNlIHRlbGxzIG1lIHRoYXQgdGhlc2UgdHlwZXMgb2YgY2hlY2tzIGFyZSBjcml0aWNhbCBmb3IgbWl0aWdhdGluZyB2dWxuZXJhYmlsaXRpZXMgdGhhdCBjb3VsZCBsZWFkIHRvIHN5c3RlbSBpbnN0YWJpbGl0eSBvciBldmVuIHJlbW90ZSBjb2RlIGV4ZWN1dGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHByZWNpc2UgY29udGV4dCBvZiB0aGVzZSB3cml0ZXMgdG8gYXNzZXNzIHRoZSBzZXZlcml0eSBvZiB0aGUgb3JpZ2luYWwgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHkuCgpUaGVuLCBtb3ZpbmcgdG8gYGh0dF9yeC5jYCwgdGhlIGZvY3VzIHNoaWZ0cyB0byB0aGUgYGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obGAgZnVuY3Rpb24uIFRoZXJlIGFyZSBhIHNlcmllcyBvZiBjaGVja3MgYmVpbmcgYWRkZWQuIFRoZSBuZXcgY2hlY2tzIGluY2x1ZGUgdmVyaWZ5aW5nIHRoZSBzaXplIG9mIHRoZSByZWNlaXZlZCBgc2tiYCAoc29ja2V0IGJ1ZmZlcikgYWdhaW5zdCB0aGUgaGVhZGVyIGxlbmd0aCBhbmQgb3RoZXIgcGFyYW1ldGVycy4gVGhlIGNvZGUgc2VlbXMgdG8gYmUgdmFsaWRhdGluZyB2YXJpb3VzIGRhdGEgc3RydWN0dXJlcyB0aGF0IGFyZSBkZXJpdmVkIGZyb20gaW5jb21pbmcgZnJhZ21lbnRzLCBjaGVja2luZyB0aGUgdG90YWwgbGVuZ3RoIGFnYWluc3QgdGhlIHNvY2tldCBidWZmZXImIzM5O3MgY3VycmVudCBhdmFpbGFibGUgc2l6ZS4gVGhlIGBpZiAobnVtX21wZHVfcmFuZ2VzICZndDsgMSlgLCBgaWYgKHRvdF9oZHJfbGVuICZndDsgc2tiLSZndDtsZW4pYCBhbmQgYGlmIChyeF9obC0mZ3Q7ZndfZGVzYy5sZW4gJmd0OyBza2ItJmd0O2xlbiAtIHRvdF9oZHJfbGVuKWAgY2hlY2tzIGFyZSBzcGVjaWZpY2FsbHkgaW50ZXJlc3RpbmcgYmVjYXVzZSB0aGV5IGFyZSBjbGVhcmx5IGRlc2lnbmVkIHRvIHZhbGlkYXRlIHRoZSBpbnRlZ3JpdHkgYW5kIHN0cnVjdHVyZSBvZiBpbmNvbWluZyBkYXRhLiBUaGlzIHNpZ25hbHMgY29uY2VybiBhYm91dCB0aGUgcG90ZW50aWFsIGZvciBmcmFnbWVudGF0aW9uLXJlbGF0ZWQgdnVsbmVyYWJpbGl0aWVzIG9yIGRlbmlhbC1vZi1zZXJ2aWNlIGF0dGFja3MuIEkgbmVlZCB0byBmYW1pbGlhcml6ZSBteXNlbGYgd2l0aCB0aGUgc3BlY2lmaWMgZGF0YSBzdHJ1Y3R1cmVzIGFuZCB0aGUgZXhwZWN0ZWQgZmxvdyBvZiBkYXRhIHdpdGhpbiBgYXRoMTBrYCYjMzk7cyBSWCBwYXRoLiBJdOKAmXMgbGlrZWx5IGFuIGF0dGVtcHQgdG8gbWl0aWdhdGUgYnVmZmVyIG92ZXJmbG93cyBvciBwb3RlbnRpYWxseSBtYWxmb3JtZWQgcGFja2V0cy4KClRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSwgSSYjMzk7bSBnb2luZyB0byBsZXZlcmFnZSBteSB1c3VhbCB3b3JrZmxvdy4gSeKAmWxsIHVzZSBgcmVhZC1maWxlYCBvciBgZ3JlcHBlcmAgdG8gZXhhbWluZSB0aGUgc3Vycm91bmRpbmcgY29kZSBpbiBib3RoIGZpbGVzLiBVbmRlcnN0YW5kaW5nIHRoZSBjb250ZXh0IG9mIHRoZXNlIGNoZWNrcyB3aWxsIGlsbHVtaW5hdGUgdGhlIHNwZWNpZmljIHRocmVhdCBtb2RlbCBiZWluZyBhZGRyZXNzZWQuIEkgbmVlZCB0byBpZGVudGlmeSB0aGUgZXhhY3QgY29uZGl0aW9ucyB0aGF0IHRyaWdnZXJlZCB0aGlzIHBhdGNoIGFuZCB1bmRlcnN0YW5kIHRoZSBjb21wbGV0ZSBwaWN0dXJlIG9mIHRoZSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDg6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3MjUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDcyNTpcdFx0ICAgIGFyLVx1MDAzZXN0YXRlICE9IEFUSDEwS19TVEFURV9VVEYpIHtcbiA3MjY6XHRcdFx0cmV0ID0gLUVORVRET1dOO1xuIDcyNzpcdFx0XHRnb3RvIGV4aXQ7XG4gNzI4Olx0XHR9XG4gNzI5Olx0XG4gNzMwOlx0XHRyZWdfYWRkciA9IGFyLVx1MDAzZWRlYnVnLnJlZ19hZGRyO1xuIDczMTpcdFxuIDczMjpcdFx0LyogRklYOiBWYWxpZGF0ZSByZWdpc3RlciBhZGRyZXNzICovXG4gNzMzOlx0XHRpZiAocmVnX2FkZHIgXHUwMDNlIGFyLVx1MDAzZWh3X3BhcmFtcy5yZWdfc2l6ZSkge1xuIDczNDpcdFx0XHRhdGgxMGtfd2FybihhciwgXCYjMzQ7SW52YWxpZCByZWdpc3RlciBhZGRyZXNzIDB4JTA4eFxcblwmIzM0OywgcmVnX2FkZHIpO1xuIDczNTpcdFx0XHRyZXQgPSAtRUlOVkFMO1xuIDczNjpcdFx0XHRnb3RvIGV4aXQ7XG4gNzM3Olx0XHR9XG4gNzM4Olx0XG4gNzM5Olx0XHRyZXQgPSBrc3RydG91MzJfZnJvbV91c2VyKHVzZXJfYnVmLCBjb3VudCwgMCwgXHUwMDI2cmVnX3ZhbCk7XG4gNzQwOlx0XHRpZiAocmV0KVxuIDc0MTpcdFx0XHRnb3RvIGV4aXQ7XG4gNzQyOlx0XG4gNzQzOlx0XHRhdGgxMGtfaGlmX3dyaXRlMzIoYXIsIHJlZ19hZGRyLCByZWdfdmFsKTtcbiA3NDQ6XHRcbiA3NDU6XHRcdHJldCA9IGNvdW50O1xuIDc0NjpcdFxuIDc0NzpcdGV4aXQ6XG4gNzQ4Olx0XHRtdXRleF91bmxvY2soXHUwMDI2YXItXHUwMDNlY29uZl9tdXRleCk7XG4gNzQ5Olx0XG4gNzUwOlx0XHRyZXR1cm4gcmV0O1xuIDc1MTpcdH1cbiA3NTI6XHRcbiA3NTM6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzX3JlZ192YWx1ZSA9IHtcbiA3NTQ6XHRcdC5yZWFkID0gYXRoMTBrX3JlZ192YWx1ZV9yZWFkLFxuIDc1NTpcdFx0LndyaXRlID0gYXRoMTBrX3JlZ192YWx1ZV93cml0ZSxcbiA3NTY6XHRcdC5vcGVuID0gc2ltcGxlX29wZW4sXG4gNzU3Olx0XHQub3duZXIgPSBUSElTX01PRFVMRSxcbiA3NTg6XHRcdC5sbHNlZWsgPSBkZWZhdWx0X2xsc2VlayxcbiA3NTk6XHR9O1xuIDc2MDpcdFxuIDc2MTpcdHN0YXRpYyBzc2l6ZV90IGF0aDEwa19tZW1fdmFsdWVfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSxcbiA3NjI6XHRcdFx0XHRcdCAgICAgY2hhciBfX3VzZXIgKnVzZXJfYnVmLFxuIDc2MzpcdFx0XHRcdFx0ICAgICBzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcylcbiA3NjQ6XHR7XG4gNzY1Olx0XHRzdHJ1Y3QgYXRoMTBrICphciA9IGZpbGUtXHUwMDNlcHJpdmF0ZV9kYXRhO1xuIDc2NjpcdFx0dTggKmJ1ZjtcbiA3Njc6XHRcdGludCByZXQ7XG4gNzY4Olx0XG4gNzY5Olx0XHRpZiAoKnBwb3MgXHUwMDNjIDApXG4gNzcwOlx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDc3MTpcdFxuIDc3MjpcdFx0aWYgKCFjb3VudClcbiA3NzM6XHRcdFx0cmV0dXJuIDA7XG4gNzc0Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA4OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUwNzgKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBwcmVzZW50ZWQgYXMgYSBzdHJlYW0gb2YgdGhvdWdodDoKCioqRGl2aW5nIGludG8gdGhlIEF0aGVyb3MgQ29kZSoqCgpBbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSBgYXRoMTBrYCBkcml2ZXIgYWdhaW4sIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiBzb21lIGNyaXRpY2FsIGFyZWFzLiBGaXJzdCB1cCwgSSB3YW50IHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBtZW1vcnkgd3JpdGUgZnVuY3Rpb24sIHRoYXQgYGF0aDEwa19tZW1fdmFsdWVfd3JpdGVgLiBVbmRlcnN0YW5kaW5nIGhvdyB0aGF0JiMzOTtzIGhhbmRsZWQgaXMgZXNzZW50aWFsIGZvciB0cmFja2luZyBkb3duIGEgcmVjZW50IGlzc3VlLiBJJiMzOTtsbCBuZWVkIHRvIHJlbWVtYmVyIHRoZSBpbnRyaWNhY2llcyBvZiBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIGhhcmR3YXJlLgoKTmV4dCwgSSBzaG91bGQgdGFrZSBhIGZyZXNoIGxvb2sgYXQgYGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obGAuIEZyYWdtZW50ZWQgcGFja2V0cyBjYW4gYmUgYSBwYWluLCBhbmQgSSBuZWVkIHRvIHJlLWZhbWlsaWFyaXplIG15c2VsZiB3aXRoIHRoZSBIaWdoLUxldmVsIChITCkgaGFuZGxpbmcgb2YgdGhvc2UgcmVjZWl2ZWQgZnJhZ21lbnRzLCBtYWtpbmcgc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhIGNydWNpYWwgcGllY2Ugb2YgdGhlIHB1enpsZSB3aXRoaW4gdGhhdCBmdW5jdGlvbi4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgcG90ZW50aWFsIGJvdHRsZW5lY2tzLCByYWNlIGNvbmRpdGlvbnMsIG9yIGFueXRoaW5nIG91dCBvZiB0aGUgb3JkaW5hcnkgdGhhdCBjb3VsZCBjb250cmlidXRlIHRvIHBlcmZvcm1hbmNlIGRlZ3JhZGF0aW9uIG9yIGVycm9ycy4gVGltZSB0byBjcmFjayBvcGVuIHRoZSBzb3VyY2UgYW5kIGdldCB0byBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8zPC90ZD4KCQkJPHRkPjIwMjYvMDkvMTAgMDg6NDI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA4MTUsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDgxNTpcdFx0XHRcdFx0ICAgICAgc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpXG4gODE2Olx0e1xuIDgxNzpcdFx0c3RydWN0IGF0aDEwayAqYXIgPSBmaWxlLVx1MDAzZXByaXZhdGVfZGF0YTtcbiA4MTg6XHRcdHU4ICpidWY7XG4gODE5Olx0XHRpbnQgcmV0O1xuIDgyMDpcdFxuIDgyMTpcdFx0aWYgKCpwcG9zIFx1MDAzYyAwKVxuIDgyMjpcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiA4MjM6XHRcbiA4MjQ6XHRcdGlmICghY291bnQpXG4gODI1Olx0XHRcdHJldHVybiAwO1xuIDgyNjpcdFxuIDgyNzpcdFx0bXV0ZXhfbG9jayhcdTAwMjZhci1cdTAwM2Vjb25mX211dGV4KTtcbiA4Mjg6XHRcbiA4Mjk6XHRcdC8qIEZJWDogVmFsaWRhdGUgYWRkcmVzcyBhZ2FpbnN0IG1lbW9yeSBzaXplICovXG4gODMwOlx0XHRpZiAoKnBwb3MgXHUwMDNlIGFyLVx1MDAzZWh3X3BhcmFtcy5tZW1fc2l6ZSkge1xuIDgzMTpcdFx0XHRhdGgxMGtfd2FybihhciwgXCYjMzQ7SW52YWxpZCBhZGRyZXNzIDB4JTA4eCBmb3IgbWVtX3ZhbHVlXFxuXCYjMzQ7LCAodTMyKSpwcG9zKTtcbiA4MzI6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gODMzOlx0XHR9XG4gODM0Olx0XG4gODM1Olx0XHQvKiBGSVg6IFZhbGlkYXRlIHNpemUgYWdhaW5zdCByZW1haW5pbmcgbWVtb3J5ICovXG4gODM2Olx0XHRpZiAoY291bnQgXHUwMDNlIGFyLVx1MDAzZWh3X3BhcmFtcy5tZW1fc2l6ZSAtICpwcG9zKSB7XG4gODM3Olx0XHRcdGF0aDEwa193YXJuKGFyLCBcJiMzNDtJbnZhbGlkIHNpemUgJXp1IGZvciBtZW1fdmFsdWUgYXQgMHglMDh4XFxuXCYjMzQ7LFxuIDgzODpcdFx0XHRcdCAgICBjb3VudCwgKHUzMikqcHBvcyk7XG4gODM5Olx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDg0MDpcdFx0fVxuIDg0MTpcdFxuIDg0MjpcdFx0YnVmID0gdm1hbGxvYyhjb3VudCk7XG4gODQzOlx0XHRpZiAoIWJ1Zikge1xuIDg0NDpcdFx0XHRyZXQgPSAtRU5PTUVNO1xuIDg0NTpcdFx0XHRnb3RvIGV4aXQ7XG4gODQ2Olx0XHR9XG4gODQ3Olx0XG4gODQ4Olx0XHRpZiAoYXItXHUwMDNlc3RhdGUgIT0gQVRIMTBLX1NUQVRFX09OIFx1MDAyNlx1MDAyNlxuIDg0OTpcdFx0ICAgIGFyLVx1MDAzZXN0YXRlICE9IEFUSDEwS19TVEFURV9VVEYpIHtcbiA4NTA6XHRcdFx0cmV0ID0gLUVORVRET1dOO1xuIDg1MTpcdFx0XHRnb3RvIGV4aXQ7XG4gODUyOlx0XHR9XG4gODUzOlx0XG4gODU0Olx0XHRyZXQgPSBjb3B5X2Zyb21fdXNlcihidWYsIHVzZXJfYnVmLCBjb3VudCk7XG4gODU1Olx0XHRpZiAocmV0KSB7XG4gODU2Olx0XHRcdHJldCA9IC1FRkFVTFQ7XG4gODU3Olx0XHRcdGdvdG8gZXhpdDtcbiA4NTg6XHRcdH1cbiA4NTk6XHRcbiA4NjA6XHRcdHJldCA9IGF0aDEwa19oaWZfZGlhZ193cml0ZShhciwgKnBwb3MsIGJ1ZiwgY291bnQpO1xuIDg2MTpcdFx0aWYgKHJldCkge1xuIDg2MjpcdFx0XHRhdGgxMGtfd2FybihhciwgXCYjMzQ7ZmFpbGVkIHRvIHdyaXRlIGFkZHJlc3MgMHglMDh4IHZpYSBkaWFnbm9zZSB3aW5kb3cgZnJvbSBkZWJ1Z2ZzOiAlZFxcblwmIzM0OyxcbiA4NjM6XHRcdFx0XHQgICAgKHUzMikoKnBwb3MpLCByZXQpO1xuIDg2NDpcdFx0XHRnb3RvIGV4aXQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA4OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYxMzYKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAxMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTG9ja2luZyBCdWcgRGlzY292ZXJ5IGFuZCBJbnZlc3RpZ2F0aW9uKioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQuLi4gc29tZXRoaW5nIGp1c3QgY2xpY2tlZCBsb29raW5nIGF0IGBhdGgxMGtfbWVtX3ZhbHVlX3dyaXRlYC4gU3BlY2lmaWNhbGx5LCBsaW5lcyA4MzAtODQwLiBCaW5nbyEgVGhleSYjMzk7cmUgcmV0dXJuaW5nIGAtRUlOVkFMYCBpZiB0aGUgdmFsaWRhdGlvbiBmYWlscywgKndoaWxlIHN0aWxsIGhvbGRpbmcgYGFyLSZndDtjb25mX211dGV4YCouIFRoYXQmIzM5O3MgYSBjbGFzc2ljIGxvY2tpbmcgYnVnIOKAkyBhIHBvdGVudGlhbCBkZWFkbG9jayBzaXR1YXRpb24gb3IgYXQgbGVhc3QgYW4gdW5iYWxhbmNlZCBtdXRleCB1bmxvY2ssIGFuZCBvbmUgdGhhdCBMT0NLREVQIHNob3VsZCBkZWZpbml0ZWx5IGNhdGNoLiBJdCYjMzk7cyB0aGUga2luZCBvZiB0aGluZyB0aGF0IG1ha2VzIGEgc2Vhc29uZWQgZGV2ZWxvcGVyIHNpdCB1cCBhbmQgdGFrZSBub3RpY2UuCgpOb3csIHRvIGZvbGxvdyB0aGlzIHRocmVhZCBhbmQgY29uZmlybSBpdCYjMzk7cyBhbiBhY3R1YWwgaXNzdWUsIEkgbmVlZCB0byBjaGVjayBgYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsYCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguY2AuIEkmIzM5O20gZ29pbmcgdG8gZGlnIGludG8gdGhlIGNhbGwgc3RhY2tzIGFuZCBtYWtlIHN1cmUgdGhpcyBpcyB0aGUgcHJpbWFyeSBzb3VyY2Ugb2YgdGhlIGRlYWRsb2NrLiBUaGlzIG1pZ2h0IGp1c3QgYmUgdGhlIG5lZWRsZSBpbiB0aGUgaGF5c3RhY2sgSSB3YXMgbG9va2luZyBmb3IuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA4OjQyPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDI3NzAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogODAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7Mjc3MDpcdFx0dTE2IHBlZXJfaWQsIHNjLCBoZHJfc3BhY2U7XG4yNzcxOlx0XHR1bmlvbiBodHRfcnhfcG5fdCAqbGFzdF9wbjtcbjI3NzI6XHRcdHN0cnVjdCBpZWVlODAyMTFfaGRyICpoZHI7XG4yNzczOlx0XHRpbnQgcmV0LCBudW1fbXBkdV9yYW5nZXM7XG4yNzc0Olx0XHRzdHJ1Y3QgYXRoMTBrX3BlZXIgKnBlZXI7XG4yNzc1Olx0XHRzdHJ1Y3QgaHR0X3Jlc3AgKnJlc3A7XG4yNzc2Olx0XHRzaXplX3QgdG90X2hkcl9sZW47XG4yNzc3Olx0XG4yNzc4Olx0XG4yNzc5Olx0XHQvKiBGSVg6IFZhbGlkYXRlIHNrYiBsZW5ndGggYmVmb3JlIHNrYl9wdWxsICovXG4yNzgwOlx0XHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2MgSFRUX1JYX0ZSQUdfSU5EX0lORk8wX0hFQURFUl9MRU4pIHtcbjI3ODE6XHRcdFx0YXRoMTBrX3dhcm4oYXIsIFwmIzM0O0ludmFsaWQgc2tiIGxlbiAlZCBmb3IgUlhfRlJBR19JTkRcXG5cJiMzNDssIHNrYi1cdTAwM2VsZW4pO1xuMjc4MjpcdFx0XHRyZXR1cm4gZmFsc2U7XG4yNzgzOlx0XHR9XG4yNzg0Olx0XG4yNzg1Olx0XHRyZXNwID0gKHN0cnVjdCBodHRfcmVzcCAqKShza2ItXHUwMDNlZGF0YSAmIzQzOyBIVFRfUlhfRlJBR19JTkRfSU5GTzBfSEVBREVSX0xFTik7XG4yNzg2Olx0XHRza2JfcHVsbChza2IsIEhUVF9SWF9GUkFHX0lORF9JTkZPMF9IRUFERVJfTEVOKTtcbjI3ODc6XHRcdHNrYl90cmltKHNrYiwgc2tiLVx1MDAzZWxlbiAtIEZDU19MRU4pO1xuMjc4ODpcdFxuMjc4OTpcdFx0cGVlcl9pZCA9IF9fbGUxNl90b19jcHUocngtXHUwMDNlcGVlcl9pZCk7XG4yNzkwOlx0XHRyeF9obCA9IChzdHJ1Y3QgaHR0X3J4X2luZGljYXRpb25faGwgKikoXHUwMDI2cmVzcC1cdTAwM2VyeF9pbmRfaGwpO1xuMjc5MTpcdFxuMjc5MjpcdFx0c3Bpbl9sb2NrX2JoKFx1MDAyNmFyLVx1MDAzZWRhdGFfbG9jayk7XG4yNzkzOlx0XHRwZWVyID0gYXRoMTBrX3BlZXJfZmluZF9ieV9pZChhciwgcGVlcl9pZCk7XG4yNzk0Olx0XHRpZiAoIXBlZXIpIHtcbjI3OTU6XHRcdFx0YXRoMTBrX2RiZyhhciwgQVRIMTBLX0RCR19IVFQsIFwmIzM0O2ludmFsaWQgcGVlcjogJXVcXG5cJiMzNDssIHBlZXJfaWQpO1xuMjc5NjpcdFx0XHRnb3RvIGVycjtcbjI3OTc6XHRcdH1cbjI3OTg6XHRcbjI3OTk6XHRcdG51bV9tcGR1X3JhbmdlcyA9IE1TKF9fbGUzMl90b19jcHUocnhfaGwtXHUwMDNlaGRyLmluZm8xKSxcbjI4MDA6XHRcdFx0XHQgICAgIEhUVF9SWF9JTkRJQ0FUSU9OX0lORk8xX05VTV9NUERVX1JBTkdFUyk7XG4yODAxOlx0XG4yODAyOlx0XHQvKiBGSVg6IFZhbGlkYXRlIG51bV9tcGR1X3JhbmdlcyAqL1xuMjgwMzpcdFx0aWYgKG51bV9tcGR1X3JhbmdlcyBcdTAwM2UgMSkge1xuMjgwNDpcdFx0XHRhdGgxMGtfd2FybihhciwgXCYjMzQ7SW52YWxpZCBudW1fbXBkdV9yYW5nZXMgJWRcXG5cJiMzNDssIG51bV9tcGR1X3Jhbmdlcyk7XG4yODA1Olx0XHRcdGdvdG8gZXJyO1xuMjgwNjpcdFx0fVxuMjgwNzpcdFxuMjgwODpcdFxuMjgwOTpcdFx0dG90X2hkcl9sZW4gPSBzaXplb2Yoc3RydWN0IGh0dF9yZXNwX2hkcikgJiM0MztcbjI4MTA6XHRcdFx0ICAgICAgc2l6ZW9mKHJ4X2hsLVx1MDAzZWhkcikgJiM0MztcbjI4MTE6XHRcdFx0ICAgICAgc2l6ZW9mKHJ4X2hsLVx1MDAzZXBwZHUpICYjNDM7XG4yODEyOlx0XHRcdCAgICAgIHNpemVvZihyeF9obC1cdTAwM2VwcmVmaXgpICYjNDM7XG4yODEzOlx0XHRcdCAgICAgIHNpemVvZihyeF9obC1cdTAwM2Vmd19kZXNjKSAmIzQzO1xuMjgxNDpcdFx0XHQgICAgICBzaXplb2Yoc3RydWN0IGh0dF9yeF9pbmRpY2F0aW9uX21wZHVfcmFuZ2UpICogbnVtX21wZHVfcmFuZ2VzO1xuMjgxNTpcdFxuMjgxNjpcdFx0LyogRklYOiBWYWxpZGF0ZSB0b3RfaGRyX2xlbiBhZ2FpbnN0IHNrYiBsZW5ndGggKi9cbjI4MTc6XHRcdGlmICh0b3RfaGRyX2xlbiBcdTAwM2Ugc2tiLVx1MDAzZWxlbikge1xuMjgxODpcdFx0XHRhdGgxMGtfd2FybihhciwgXCYjMzQ7SW52YWxpZCB0b3RfaGRyX2xlbiAlenUgXHUwMDNlIHNrYi1cdTAwM2VsZW4gJXVcXG5cJiMzNDssXG4yODE5Olx0XHRcdFx0ICAgIHRvdF9oZHJfbGVuLCBza2ItXHUwMDNlbGVuKTtcbjI4MjA6XHRcdFx0Z290byBlcnI7XG4yODIxOlx0XHR9XG4yODIyOlx0XG4yODIzOlx0XG4yODI0Olx0XHR0aWQgPSAgTVMocnhfaGwtXHUwMDNlaGRyLmluZm8wLCBIVFRfUlhfSU5ESUNBVElPTl9JTkZPMF9FWFRfVElEKTtcbjI4MjU6XHRcdHJ4X2Rlc2MgPSAoc3RydWN0IGh0dF9obF9yeF9kZXNjICopKHNrYi1cdTAwM2VkYXRhICYjNDM7IHRvdF9oZHJfbGVuKTtcbjI4MjY6XHRcdHJ4X2Rlc2NfaW5mbyA9IF9fbGUzMl90b19jcHUocnhfZGVzYy1cdTAwM2VpbmZvKTtcbjI4Mjc6XHRcbjI4Mjg6XHRcbjI4Mjk6XHRcdC8qIEZJWDogVmFsaWRhdGUgZndfZGVzYy5sZW4gYWdhaW5zdCByZW1haW5pbmcgc2tiIGxlbmd0aCAqL1xuMjgzMDpcdFx0aWYgKHJ4X2hsLVx1MDAzZWZ3X2Rlc2MubGVuIFx1MDAzZSBza2ItXHUwMDNlbGVuIC0gdG90X2hkcl9sZW4pIHtcbjI4MzE6XHRcdFx0YXRoMTBrX3dhcm4oYXIsIFwmIzM0O0ludmFsaWQgZndfZGVzYy5sZW4gJXUgXHUwMDNlIHJlbWFpbmluZyBza2IgbGVuXFxuXCYjMzQ7LFxuMjgzMjpcdFx0XHRcdCAgICByeF9obC1cdTAwM2Vmd19kZXNjLmxlbik7XG4yODMzOlx0XHRcdGdvdG8gZXJyO1xuMjgzNDpcdFx0fVxuMjgzNTpcdFxuMjgzNjpcdFx0aGRyID0gKHN0cnVjdCBpZWVlODAyMTFfaGRyICopKCh1OCAqKXJ4X2Rlc2MgJiM0MzsgcnhfaGwtXHUwMDNlZndfZGVzYy5sZW4pO1xuMjgzNzpcdFxuMjgzODpcdFx0aWYgKGlzX211bHRpY2FzdF9ldGhlcl9hZGRyKGhkci1cdTAwM2VhZGRyMSkpIHtcbjI4Mzk6XHRcdFx0LyogRGlzY2FyZCB0aGUgZnJhZ21lbnQgd2l0aCBtdWx0aWNhc3QgREEgKi9cbjI4NDA6XHRcdFx0Z290byBlcnI7XG4yODQxOlx0XHR9XG4yODQyOlx0XG4yODQzOlx0XHRpZiAoIU1TKHJ4X2Rlc2NfaW5mbywgSFRUX1JYX0RFU0NfSExfSU5GT19FTkNSWVBURUQpKSB7XG4yODQ0Olx0XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmFyLVx1MDAzZWRhdGFfbG9jayk7XG4yODQ1Olx0XHRcdHJldHVybiBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfaW5kX2hsKGh0dCwgXHUwMDI2cmVzcC1cdTAwM2VyeF9pbmRfaGwsIHNrYixcbjI4NDY6XHRcdFx0XHRcdFx0XHQgICAgSFRUX1JYX05PTl9QTl9DSEVDSyxcbjI4NDc6XHRcdFx0XHRcdFx0XHQgICAgSFRUX1JYX05PTl9US0lQX01JQyk7XG4yODQ4Olx0XHR9XG4yODQ5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA5LzEwIDA4OjQyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy43LWZsYXNoPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc5OTQKCQkJCQkJCW91dHB1dDogMjQ3CgkJCQkJCQl0aG91Z2h0czogNzYyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJiMzOTtzIEltcGFjdCoqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIHBhdGNoIGFjdHVhbGx5ICpkb2VzKi4gSSBzZWUgaXQgbWFrZXMgc29tZSBrZXkgY2hhbmdlczoKCjEuICAqKmBhdGgxMGtfcmVnX3ZhbHVlX3dyaXRlYCoqOiBUaGUgY29kZSBub3cgdmFsaWRhdGVzIGByZWdfYWRkcmAgYWdhaW5zdCBgYXItJmd0O2h3X3BhcmFtcy5yZWdfc2l6ZWAgYmVmb3JlIHdyaXRpbmcgdG8gaGFyZHdhcmUuIEdvb2QsIHRoYXQmIzM5O3MgYSBjcnVjaWFsIGJvdW5kcyBjaGVjay4KMi4gICoqYGF0aDEwa19tZW1fdmFsdWVfd3JpdGVgKio6IFRoaXMgdmFsaWRhdGVzIGJvdGggYCpwcG9zYCBhbmQgYGNvdW50YCBhZ2FpbnN0IGBhci0mZ3Q7aHdfcGFyYW1zLm1lbV9zaXplYCBiZWZvcmUgaXQgZ2V0cyBpbnRvIGFsbG9jYXRpbmcgYW5kIGNvcHlpbmcuIFRoaXMgaXMgc291bmQsIHByZXZlbnRpbmcgcG90ZW50aWFsIG92ZXJmbG93cy4KMy4gICoqYGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obGAqKjogVGhpcyBhZGRzIHNldmVyYWwgYm91bmRzIGNoZWNrcy4gU3BlY2lmaWNhbGx5LCBvbiBgc2tiLSZndDtsZW5gLCBgbnVtX21wZHVfcmFuZ2VzYCwgYHRvdF9oZHJfbGVuYCwgYW5kIGByeF9obC0mZ3Q7ZndfZGVzYy5sZW5gLiBQcmV2ZW50aW5nIG91dCBvZiBib3VuZHMgcmVhZHMgYW5kIGludmFsaWQgb2Zmc2V0cy4KCk5vdywgdGhlIHJlYWwgcXVlc3Rpb246IGRvZXMgdGhpcyBpbnRyb2R1Y2UgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlcyBvciwgY3JpdGljYWxseSwga2VybmVsLXRvLXVzZXIgaW5mbyBsZWFrcz8gTGV0JiMzOTtzIGdvIHRocm91Z2ggdGhlIGNoZWNrbGlzdDoKCiogICAqKlVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIGludHJvZHVjZWQ/KiogTm8sIG5vdGhpbmcgbmV3IGhlcmUuCiogICAqKkFueSBgY29weV90b191c2VyYCwgYHB1dF91c2VyYCwgb3IgTmV0bGluayBsZWFrcz8qKiBOb3BlLCBub3Qgc2VlaW5nIGFueXRoaW5nIGxpa2UgdGhhdC4KKiAgICoqQWx0ZXJlZCBsZW5ndGggY2FsY3VsYXRpb25zIG9yIGJvdW5kcyBjaGVja3MgdGhhdCBjb3VsZCAqYWxsb3cqIGFjY2VzcyB0byB1bmluaXRpYWxpemVkIGJ5dGVzPyoqIE5vIHdheSwgaW4gZmFjdCwgdGhpcyBwYXRjaCAqYWRkcyogc3RyaWN0ZXIgYm91bmRzIGNoZWNrcyBhbmQgdmFsaWRhdGlvbiwgbWFraW5nIGl0ICptb3JlKiByb2J1c3QuCiogICAqKkNvbmRpdGlvbmFsIGxvZ2ljIG9uIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzPyoqIE5vLCB0aGUgZGF0YSBzb3VyY2VzIHNlZW0gc2FmZTogYHJlZ19hZGRyYCBjb21lcyBmcm9tIGBhci0mZ3Q7ZGVidWcucmVnX2FkZHJgLCBgcHBvc2AgZnJvbSB0aGUgY2FsbGVyLCBwYWNrZXQgZGF0YSAoc2tiIG1ldGFkYXRhKSBhbmQgcmVjZWl2ZWQgZGF0YSBmcm9tIHRoZSBwYWNrZXQuCgpUaGUgcG90ZW50aWFsIGlzc3VlcyBhZGRyZXNzZWQgc2VlbSB0byBiZSBvdXQtb2YtYm91bmRzIGFjY2VzcywgYnVmZmVyIG92ZXJmbG93cywgYW5kIGludmFsaWQgZGV2aWNlIG1lbW9yeSBhY2Nlc3MuIEkgYWxzbyBzcG90dGVkIHRoYXQgbWlzc2VkIG11dGV4IHVubG9jayBpbiB0aGUgZXJyb3IgcGF0aCBvZiBgYXRoMTBrX21lbV92YWx1ZV93cml0ZWAuIExvY2tpbmcgYnVncyBhcmUgTE9DS0RFUCB0ZXJyaXRvcnksIG91dC1vZi1ib3VuZHMgaXNzdWVzIEtBU0FOLgoKTGV0JiMzOTtzIGRvdWJsZS1jaGVjayB0aGUgcnVsZXMgcmVnYXJkaW5nIEtNU0FOLiBUaGUgJiMzNDtSdWxlJiMzNDsgY2xlYXJseSBzdGF0ZXMgS01TQU4gaXMgZm9yICp1bmluaXRpYWxpemVkIG1lbW9yeSogcmlza3Mgb25seS4gSWYgc29tZXRoaW5nIGVsc2UgaXMgYWxyZWFkeSBjb3ZlcmVkIGJ5IEtBU0FOIG9yIExPQ0tERVAsIHdlIGRvbiYjMzk7dCBuZWVkIGl0LgoKVGhlICYjMzQ7U2V0IE5lZWRzS01TQU49ZmFsc2UmIzM0OyBjcml0ZXJpYSBwZXJmZWN0bHkgZml0cyBoZXJlOgoKKiAgIFRoZSByaXNrcyBhcmUgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIHdoaWNoIGlzIEtBU0FOJiMzOTtzIGpvYi4KKiAgIEV2ZXJ5dGhpbmcgaXMgZnVsbHkgemVyb2VkIG9yIGluaXRpYWxpemVkLgoqICAgTm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2Ugb3IgbGVha3MuCgpPa2F5LCBsZXQmIzM5O3MgZG8gYSBxdWljayBmaW5hbCBzd2VlcCB0aHJvdWdoIHRoZSBwYXRjaCBhbmQgcmVsYXRlZCBmaWxlcywganVzdCB0byBtYWtlIHN1cmUgSSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcuIEFsbCBsb29rcyBnb29kLiBJdCBzZWVtcyBzYWZlIHRvIHNldCBgTmVlZHNLTVNBTj1mYWxzZWAuCgpOb3csIHRpbWUgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOS8xMCAwODo0MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBhZGRzIGJvdW5kcyBhbmQgdmFsaWRpdHkgY2hlY2tzIGluIGF0aDEwayBkZWJ1Z2ZzIHdyaXRlIGhhbmRsZXJzIChhdGgxMGtfcmVnX3ZhbHVlX3dyaXRlLCBhdGgxMGtfbWVtX3ZhbHVlX3dyaXRlKSBhbmQgaW4gdGhlIEhUVCBSWCBmcmFnbWVudCBwcm9jZXNzaW5nIGZ1bmN0aW9uIChhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGwpLiBcblxuU3BlY2lmaWNhbGx5OlxuLSBSZWdpc3RlciBhZGRyZXNzIGFuZCBtZW1vcnkgb2Zmc2V0L2NvdW50IHZhbGlkYXRpb25zIHByZXZlbnQgb3V0LW9mLWJvdW5kcyBISUYgZGlhZ25vc3RpY3MgYW5kIHJlZ2lzdGVyIHdyaXRlcy5cbi0gTGVuZ3RoIGNoZWNrcyBvbiBza2IgYW5kIGhlYWRlciBvZmZzZXRzIGluIGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obCBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgaW50byBza2IgYnVmZmVyIGRhdGEuXG4tIEFueSBwb3RlbnRpYWwgZXJyb3ItcGF0aCBpc3N1ZXMgKHN1Y2ggYXMgZWFybHkgcmV0dXJuIHdpdGhvdXQgdW5sb2NraW5nIGNvbmZfbXV0ZXgpIGFyZSBsb2NraW5nIGJ1Z3MgZGV0ZWN0ZWQgYnkgTE9DS0RFUC5cblxuTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgYWxsb2NhdGlvbnMsIHJlYWRzIG9mIHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBmaWVsZHMsIG9yIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzIGFyZSBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQuIFRoZXJlZm9yZSwgc3RhbmRhcmQgS0FTQU4gYW5kIExPQ0tERVAgY29uZmlndXJhdGlvbnMgYXJlIGZ1bGx5IHN1ZmZpY2llbnQsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGFkZHMgYm91bmRzIGFuZCB2YWxpZGl0eSBjaGVja3MgaW4gYXRoMTBrIGRlYnVnZnMgd3JpdGUgaGFuZGxlcnMgKGF0aDEwa19yZWdfdmFsdWVfd3JpdGUsIGF0aDEwa19tZW1fdmFsdWVfd3JpdGUpIGFuZCBpbiB0aGUgSFRUIFJYIGZyYWdtZW50IHByb2Nlc3NpbmcgZnVuY3Rpb24gKGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obCkuIFxuXG5TcGVjaWZpY2FsbHk6XG4tIFJlZ2lzdGVyIGFkZHJlc3MgYW5kIG1lbW9yeSBvZmZzZXQvY291bnQgdmFsaWRhdGlvbnMgcHJldmVudCBvdXQtb2YtYm91bmRzIEhJRiBkaWFnbm9zdGljcyBhbmQgcmVnaXN0ZXIgd3JpdGVzLlxuLSBMZW5ndGggY2hlY2tzIG9uIHNrYiBhbmQgaGVhZGVyIG9mZnNldHMgaW4gYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyBpbnRvIHNrYiBidWZmZXIgZGF0YS5cbi0gQW55IHBvdGVudGlhbCBlcnJvci1wYXRoIGlzc3VlcyAoc3VjaCBhcyBlYXJseSByZXR1cm4gd2l0aG91dCB1bmxvY2tpbmcgY29uZl9tdXRleCkgYXJlIGxvY2tpbmcgYnVncyBkZXRlY3RlZCBieSBMT0NLREVQLlxuXG5ObyB1bmluaXRpYWxpemVkIG1lbW9yeSBhbGxvY2F0aW9ucywgcmVhZHMgb2YgdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIGZpZWxkcywgb3Iga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MgYXJlIGludHJvZHVjZWQgb3IgZXhwb3NlZC4gVGhlcmVmb3JlLCBzdGFuZGFyZCBLQVNBTiBhbmQgTE9DS0RFUCBjb25maWd1cmF0aW9ucyBhcmUgZnVsbHkgc3VmZmljaWVudCwgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwODo0MTozNC41MDE2MjkyNjJaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTI3MTQ0MzQzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVEgxMEtcIixcbiAgICBcIkFUSDEwS19VU0JcIixcbiAgICBcIkFUSDEwS19ERUJVR0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsXCIsXG4gICAgXCJhdGgxMGtfcmVnX3ZhbHVlX3dyaXRlXCIsXG4gICAgXCJhdGgxMGtfbWVtX3ZhbHVlX3dyaXRlXCIsXG4gICAgXCJhdGgxMGtfaHR0X3QyaF9tc2dfaGFuZGxlclwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgYW5kIHZhbGlkaXR5IGNoZWNrcyBpbiBhdGgxMGsgZGVidWdmcyB3cml0ZSBoYW5kbGVycyAoYXRoMTBrX3JlZ192YWx1ZV93cml0ZSwgYXRoMTBrX21lbV92YWx1ZV93cml0ZSkgYW5kIGluIHRoZSBIVFQgUlggZnJhZ21lbnQgcHJvY2Vzc2luZyBmdW5jdGlvbiAoYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsKS4gXFxuXFxuU3BlY2lmaWNhbGx5Olxcbi0gUmVnaXN0ZXIgYWRkcmVzcyBhbmQgbWVtb3J5IG9mZnNldC9jb3VudCB2YWxpZGF0aW9ucyBwcmV2ZW50IG91dC1vZi1ib3VuZHMgSElGIGRpYWdub3N0aWNzIGFuZCByZWdpc3RlciB3cml0ZXMuXFxuLSBMZW5ndGggY2hlY2tzIG9uIHNrYiBhbmQgaGVhZGVyIG9mZnNldHMgaW4gYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsIHByZXZlbnQgb3V0LW9mLWJvdW5kcyByZWFkcyBpbnRvIHNrYiBidWZmZXIgZGF0YS5cXG4tIEFueSBwb3RlbnRpYWwgZXJyb3ItcGF0aCBpc3N1ZXMgKHN1Y2ggYXMgZWFybHkgcmV0dXJuIHdpdGhvdXQgdW5sb2NraW5nIGNvbmZfbXV0ZXgpIGFyZSBsb2NraW5nIGJ1Z3MgZGV0ZWN0ZWQgYnkgTE9DS0RFUC5cXG5cXG5ObyB1bmluaXRpYWxpemVkIG1lbW9yeSBhbGxvY2F0aW9ucywgcmVhZHMgb2YgdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIGZpZWxkcywgb3Iga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MgYXJlIGludHJvZHVjZWQgb3IgZXhwb3NlZC4gVGhlcmVmb3JlLCBzdGFuZGFyZCBLQVNBTiBhbmQgTE9DS0RFUCBjb25maWd1cmF0aW9ucyBhcmUgZnVsbHkgc3VmZmljaWVudCwgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3Qgd2FycmFudGVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYm91bmRhcnkgYW5kIGxlbmd0aCB2YWxpZGF0aW9uIGNoZWNrcyB0byBhdGgxMGsgZGVidWdmcyB3cml0ZSBoYW5kbGVycyAoYXRoMTBrX3JlZ192YWx1ZV93cml0ZSwgYXRoMTBrX21lbV92YWx1ZV93cml0ZSkgYW5kIFJYIGZyYWdtZW50IHBhY2tldCBwcm9jZXNzaW5nIGluIGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obC4gQXRoMTBrIHN1cHBvcnRzIFVTQiBkZXZpY2VzIChBVEgxMEtfVVNCKSBhbmQgZGVidWdmcyBvcGVyYXRpb25zLCB3aGljaCBjYW4gYmUgcmVhY2hlZCBhbmQgZnV6emVkIHZpYSBVU0IgZW11bGF0aW9uIChSYXcgR2FkZ2V0KSBhbmQgZGVidWdmcyBpbnRlcmZhY2VzIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwODo0MTozNC41MDE2MzQzNjJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5MTAyMDgxNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDBjMWUyNjkxMWQxZjU4NGQ1YzBiYzE5YjBhNmU0ZDJlY2NhMDZlNzhcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBTZXAgMTAgMDg6NDE6MzMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jXFxuaW5kZXggZmI2MWU1M2ZmNGMzNC4uNTBlMDE3MDIxMWI4MSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmNcXG5AQCAtNzI5LDYgKzcyOSwxMyBAQCBzdGF0aWMgc3NpemVfdCBhdGgxMGtfcmVnX3ZhbHVlX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLFxcbiBcXG4gXFx0cmVnX2FkZHIgPSBhci1cXHUwMDNlZGVidWcucmVnX2FkZHI7XFxuIFxcbitcXHQvKiBGSVg6IFZhbGlkYXRlIHJlZ2lzdGVyIGFkZHJlc3MgKi9cXG4rXFx0aWYgKHJlZ19hZGRyIFxcdTAwM2UgYXItXFx1MDAzZWh3X3BhcmFtcy5yZWdfc2l6ZSkge1xcbitcXHRcXHRhdGgxMGtfd2FybihhciwgXFxcIkludmFsaWQgcmVnaXN0ZXIgYWRkcmVzcyAweCUwOHhcXFxcblxcXCIsIHJlZ19hZGRyKTtcXG4rXFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4rXFx0XFx0Z290byBleGl0O1xcbitcXHR9XFxuK1xcbiBcXHRyZXQgPSBrc3RydG91MzJfZnJvbV91c2VyKHVzZXJfYnVmLCBjb3VudCwgMCwgXFx1MDAyNnJlZ192YWwpO1xcbiBcXHRpZiAocmV0KVxcbiBcXHRcXHRnb3RvIGV4aXQ7XFxuQEAgLTgxOSw2ICs4MjYsMTkgQEAgc3RhdGljIHNzaXplX3QgYXRoMTBrX21lbV92YWx1ZV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4gXFxuIFxcdG11dGV4X2xvY2soXFx1MDAyNmFyLVxcdTAwM2Vjb25mX211dGV4KTtcXG4gXFxuK1xcdC8qIEZJWDogVmFsaWRhdGUgYWRkcmVzcyBhZ2FpbnN0IG1lbW9yeSBzaXplICovXFxuK1xcdGlmICgqcHBvcyBcXHUwMDNlIGFyLVxcdTAwM2Vod19wYXJhbXMubWVtX3NpemUpIHtcXG4rXFx0XFx0YXRoMTBrX3dhcm4oYXIsIFxcXCJJbnZhbGlkIGFkZHJlc3MgMHglMDh4IGZvciBtZW1fdmFsdWVcXFxcblxcXCIsICh1MzIpKnBwb3MpO1xcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0fVxcbitcXG4rXFx0LyogRklYOiBWYWxpZGF0ZSBzaXplIGFnYWluc3QgcmVtYWluaW5nIG1lbW9yeSAqL1xcbitcXHRpZiAoY291bnQgXFx1MDAzZSBhci1cXHUwMDNlaHdfcGFyYW1zLm1lbV9zaXplIC0gKnBwb3MpIHtcXG4rXFx0XFx0YXRoMTBrX3dhcm4oYXIsIFxcXCJJbnZhbGlkIHNpemUgJXp1IGZvciBtZW1fdmFsdWUgYXQgMHglMDh4XFxcXG5cXFwiLFxcbitcXHRcXHRcXHQgICAgY291bnQsICh1MzIpKnBwb3MpO1xcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0fVxcbitcXG4gXFx0YnVmID0gdm1hbGxvYyhjb3VudCk7XFxuIFxcdGlmICghYnVmKSB7XFxuIFxcdFxcdHJldCA9IC1FTk9NRU07XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jXFxuaW5kZXggYWIyZDM3M2I0NzUwZC4uNGZhYmI5MjY0N2Q5ZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguY1xcbkBAIC0yNzc1LDYgKzI3NzUsMTMgQEAgc3RhdGljIGJvb2wgYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsKHN0cnVjdCBhdGgxMGtfaHR0ICpodHQsXFxuIFxcdHN0cnVjdCBodHRfcmVzcCAqcmVzcDtcXG4gXFx0c2l6ZV90IHRvdF9oZHJfbGVuO1xcbiBcXG4rXFxuK1xcdC8qIEZJWDogVmFsaWRhdGUgc2tiIGxlbmd0aCBiZWZvcmUgc2tiX3B1bGwgKi9cXG4rXFx0aWYgKHNrYi1cXHUwMDNlbGVuIFxcdTAwM2MgSFRUX1JYX0ZSQUdfSU5EX0lORk8wX0hFQURFUl9MRU4pIHtcXG4rXFx0XFx0YXRoMTBrX3dhcm4oYXIsIFxcXCJJbnZhbGlkIHNrYiBsZW4gJWQgZm9yIFJYX0ZSQUdfSU5EXFxcXG5cXFwiLCBza2ItXFx1MDAzZWxlbik7XFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFx0fVxcbitcXG4gXFx0cmVzcCA9IChzdHJ1Y3QgaHR0X3Jlc3AgKikoc2tiLVxcdTAwM2VkYXRhICsgSFRUX1JYX0ZSQUdfSU5EX0lORk8wX0hFQURFUl9MRU4pO1xcbiBcXHRza2JfcHVsbChza2IsIEhUVF9SWF9GUkFHX0lORF9JTkZPMF9IRUFERVJfTEVOKTtcXG4gXFx0c2tiX3RyaW0oc2tiLCBza2ItXFx1MDAzZWxlbiAtIEZDU19MRU4pO1xcbkBAIC0yNzkyLDYgKzI3OTksMTMgQEAgc3RhdGljIGJvb2wgYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsKHN0cnVjdCBhdGgxMGtfaHR0ICpodHQsXFxuIFxcdG51bV9tcGR1X3JhbmdlcyA9IE1TKF9fbGUzMl90b19jcHUocnhfaGwtXFx1MDAzZWhkci5pbmZvMSksXFxuIFxcdFxcdFxcdCAgICAgSFRUX1JYX0lORElDQVRJT05fSU5GTzFfTlVNX01QRFVfUkFOR0VTKTtcXG4gXFxuK1xcdC8qIEZJWDogVmFsaWRhdGUgbnVtX21wZHVfcmFuZ2VzICovXFxuK1xcdGlmIChudW1fbXBkdV9yYW5nZXMgXFx1MDAzZSAxKSB7XFxuK1xcdFxcdGF0aDEwa193YXJuKGFyLCBcXFwiSW52YWxpZCBudW1fbXBkdV9yYW5nZXMgJWRcXFxcblxcXCIsIG51bV9tcGR1X3Jhbmdlcyk7XFxuK1xcdFxcdGdvdG8gZXJyO1xcbitcXHR9XFxuK1xcbitcXG4gXFx0dG90X2hkcl9sZW4gPSBzaXplb2Yoc3RydWN0IGh0dF9yZXNwX2hkcikgK1xcbiBcXHRcXHQgICAgICBzaXplb2YocnhfaGwtXFx1MDAzZWhkcikgK1xcbiBcXHRcXHQgICAgICBzaXplb2YocnhfaGwtXFx1MDAzZXBwZHUpICtcXG5AQCAtMjc5OSwxMCArMjgxMywyNiBAQCBzdGF0aWMgYm9vbCBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGwoc3RydWN0IGF0aDEwa19odHQgKmh0dCxcXG4gXFx0XFx0ICAgICAgc2l6ZW9mKHJ4X2hsLVxcdTAwM2Vmd19kZXNjKSArXFxuIFxcdFxcdCAgICAgIHNpemVvZihzdHJ1Y3QgaHR0X3J4X2luZGljYXRpb25fbXBkdV9yYW5nZSkgKiBudW1fbXBkdV9yYW5nZXM7XFxuIFxcbitcXHQvKiBGSVg6IFZhbGlkYXRlIHRvdF9oZHJfbGVuIGFnYWluc3Qgc2tiIGxlbmd0aCAqL1xcbitcXHRpZiAodG90X2hkcl9sZW4gXFx1MDAzZSBza2ItXFx1MDAzZWxlbikge1xcbitcXHRcXHRhdGgxMGtfd2FybihhciwgXFxcIkludmFsaWQgdG90X2hkcl9sZW4gJXp1IFxcdTAwM2Ugc2tiLVxcdTAwM2VsZW4gJXVcXFxcblxcXCIsXFxuK1xcdFxcdFxcdCAgICB0b3RfaGRyX2xlbiwgc2tiLVxcdTAwM2VsZW4pO1xcbitcXHRcXHRnb3RvIGVycjtcXG4rXFx0fVxcbitcXG4rXFxuIFxcdHRpZCA9ICBNUyhyeF9obC1cXHUwMDNlaGRyLmluZm8wLCBIVFRfUlhfSU5ESUNBVElPTl9JTkZPMF9FWFRfVElEKTtcXG4gXFx0cnhfZGVzYyA9IChzdHJ1Y3QgaHR0X2hsX3J4X2Rlc2MgKikoc2tiLVxcdTAwM2VkYXRhICsgdG90X2hkcl9sZW4pO1xcbiBcXHRyeF9kZXNjX2luZm8gPSBfX2xlMzJfdG9fY3B1KHJ4X2Rlc2MtXFx1MDAzZWluZm8pO1xcbiBcXG4rXFxuK1xcdC8qIEZJWDogVmFsaWRhdGUgZndfZGVzYy5sZW4gYWdhaW5zdCByZW1haW5pbmcgc2tiIGxlbmd0aCAqL1xcbitcXHRpZiAocnhfaGwtXFx1MDAzZWZ3X2Rlc2MubGVuIFxcdTAwM2Ugc2tiLVxcdTAwM2VsZW4gLSB0b3RfaGRyX2xlbikge1xcbitcXHRcXHRhdGgxMGtfd2FybihhciwgXFxcIkludmFsaWQgZndfZGVzYy5sZW4gJXUgXFx1MDAzZSByZW1haW5pbmcgc2tiIGxlblxcXFxuXFxcIixcXG4rXFx0XFx0XFx0ICAgIHJ4X2hsLVxcdTAwM2Vmd19kZXNjLmxlbik7XFxuK1xcdFxcdGdvdG8gZXJyO1xcbitcXHR9XFxuK1xcbiBcXHRoZHIgPSAoc3RydWN0IGllZWU4MDIxMV9oZHIgKikoKHU4ICopcnhfZGVzYyArIHJ4X2hsLVxcdTAwM2Vmd19kZXNjLmxlbik7XFxuIFxcbiBcXHRpZiAoaXNfbXVsdGljYXN0X2V0aGVyX2FkZHIoaGRyLVxcdTAwM2VhZGRyMSkpIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDg6NDE6MzUuMDk0MTkwMzY3WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiY29yZSIsIkR1cmF0aW9uIjo2OTY2NTIzMjQ5NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJBVEgxMEtcIixcbiAgICBcIkFUSDEwS19VU0JcIixcbiAgICBcIkFUSDEwS19ERUJVR0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsXCIsXG4gICAgXCJhdGgxMGtfcmVnX3ZhbHVlX3dyaXRlXCIsXG4gICAgXCJhdGgxMGtfbWVtX3ZhbHVlX3dyaXRlXCIsXG4gICAgXCJhdGgxMGtfaHR0X3QyaF9tc2dfaGFuZGxlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYm91bmRhcnkgYW5kIGxlbmd0aCB2YWxpZGF0aW9uIGNoZWNrcyB0byBhdGgxMGsgZGVidWdmcyB3cml0ZSBoYW5kbGVycyAoYXRoMTBrX3JlZ192YWx1ZV93cml0ZSwgYXRoMTBrX21lbV92YWx1ZV93cml0ZSkgYW5kIFJYIGZyYWdtZW50IHBhY2tldCBwcm9jZXNzaW5nIGluIGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obC4gQXRoMTBrIHN1cHBvcnRzIFVTQiBkZXZpY2VzIChBVEgxMEtfVVNCKSBhbmQgZGVidWdmcyBvcGVyYXRpb25zLCB3aGljaCBjYW4gYmUgcmVhY2hlZCBhbmQgZnV6emVkIHZpYSBVU0IgZW11bGF0aW9uIChSYXcgR2FkZ2V0KSBhbmQgZGVidWdmcyBpbnRlcmZhY2VzIGluIHZpcnR1YWxpemVkIGZ1enppbmcgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lciBhbmQgc2VjdXJpdHkgZW5naW5lZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGV2YWx1YXRlIHdoZXRoZXIgaXQgd2FycmFudHMgZnV6emluZyB3aXRoIHN5emthbGxlci5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24gaW50ZXJuYWwgYXNzdW1wdGlvbnMuIFlvdSBtdXN0IGFjdGl2ZWx5IHVzZSB5b3VyIGNvZGUgYWNjZXNzXG50b29scyB0byBpbnNwZWN0IHRoZSBhY3R1YWwgc291cmNlIGNvZGUsIGNhbGxlcnMsIGFuZCBzdXJyb3VuZGluZyBjb250ZXh0LlxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuMS4gQ09SRSBUUklBR0UgUEhJTE9TT1BIWVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblRoZSBnb2FsIG9mIHBhdGNoIGZ1enppbmcgaXMgdG8gZGlzY292ZXIgY3Jhc2hlcywgcmVncmVzc2lvbnMsIGV4cG9zZWQgbGF0ZW50IGJ1Z3MsXG5hbmQgbmV3bHkgdHJpZ2dlcmVkIGFzc2VydGlvbnMgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggc2VyaWVzLlxuXG4tIFJFQUNIQUJJTElUWSBJUyBUSEUgUFJJTUFSWSBHQVRFOlxuICBGdXp6aW5nIGNhbiBvbmx5IGRpc2NvdmVyIGJ1Z3MgaW4gY29kZSB0aGF0IGNhbiBhY3R1YWxseSBleGVjdXRlIGluIHN0YW5kYXJkIHZpcnR1YWxpemVkXG4gIGVudmlyb25tZW50cyAoR0NFIG9yIFFFTVUsIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBkZXZpY2VzIGxpa2UgVVNCIGdhZGdldHMsIG5ldGRldiwgdHVuL3RhcCkuXG4gIElmIHRoZSBtb2RpZmllZCBjb2RlIGlzIHN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSAoc2VlIFNlY3Rpb24gMiksIGl0IE1VU1QgTk9UIGJlIGZ1enplZCxcbiAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IGFkZHMgYXNzZXJ0aW9ucyBvciBjb21wbGV4IGxvZ2ljLlxuXG4tIERPIE5PVCBCTElORExZIFRSVVNUIFwiTk8gRlVOQ1RJT05BTCBDSEFOR0VcIiAoTkZDSSkgT1IgXCJSRUZBQ1RPUklOR1wiIENMQUlNUzpcbiAgUGF0Y2ggYXV0aG9ycyByb3V0aW5lbHkgbGFiZWwgY2hhbmdlcyBhcyBcImNsZWFudXBzXCIsIFwicmVmYWN0b3JpbmdzXCIsIG9yIHN0YXRlXG4gIFwiTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaW50ZW5kZWRcIi4gRG8gTk9UIHRha2UgdGhlc2UgY2xhaW1zIGF0IGZhY2UgdmFsdWUuXG4gIENvZGUgcmVmYWN0b3JpbmdzIHRoYXQgcmVhcnJhbmdlIGxvZ2ljLCBpbnRyb2R1Y2UgaGVscGVyIGZ1bmN0aW9ucywgb3IgYWx0ZXIgc3RhdGUgbWFuYWdlbWVudFxuICBpbiBjb3JlIHN1YnN5c3RlbXMgZnJlcXVlbnRseSBpbnRyb2R1Y2Ugc3VidGxlIHNlbWFudGljIHNoaWZ0cyBvciB1bmNvdmVyIGxhdGVudCBrZXJuZWwgYnVncy5cbiAgSWYgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSBpcyBtb2RpZmllZCBvciByZWZhY3RvcmVkLCBpdCBNVVNUIGJlIGZ1enplZC5cblxuLSBORVcgT1IgTU9ESUZJRUQgQVNTRVJUSU9OUyBJTiBSRUFDSEFCTEUgQ09ERSBNVVNUIEJFIEZVWlpFRDpcbiAgV2hlbiBhIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXMgcnVudGltZSBjaGVja3Mgb3IgYXNzZXJ0aW9ucyAoZS5nLiwgV0FSTl9PTiosIFZNX1dBUk5fT04qLFxuICBCVUdfT04qLCBsb2NrZGVwX2Fzc2VydCopIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLCBpdCBlbmZvcmNlcyBuZXcgb3Igc3RyaWN0ZXIgaW52YXJpYW50cy5cbiAgRXZlbiBpZiB0aGUgYXV0aG9yIGJlbGlldmVzIHRoZSBpbnZhcmlhbnQgYWx3YXlzIGhvbGRzLCBmdXp6aW5nIGlzIGVzc2VudGlhbCB0byB2ZXJpZnkgd2hldGhlclxuICBhbiB1bnVzdWFsIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgY2FuIHZpb2xhdGUgaXQuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4yLiBXSEVOIFRPIFJFVFVSTiBXb3J0aEZ1enppbmc9ZmFsc2UgKE5FR0FUSVZFIENSSVRFUklBKVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgT05MWSBJRiBhbGwgbW9kaWZpZWQgY29kZSBmYWxscyBzdHJpY3RseSBpbnRvIG9uZSBvciBtb3JlIG9mIHRoZXNlIGNhdGVnb3JpZXM6XG5cbi0gTm9uLWtlcm5lbCBhbmQgbm9uLWV4ZWN1dGFibGUgY2hhbmdlczpcbiAgKiBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBjb21tZW50cywgb3Igc3BlbGxpbmcgZml4ZXMuXG4gICogVXNlci1zcGFjZSBkaXJlY3Rvcmllcywgc2VsZi10ZXN0cywgc2FtcGxlcywgb3Igc2NyaXB0cyAoZS5nLiwgdG9vbHMvLCBzYW1wbGVzLywgc2NyaXB0cy8sIHVzci8pXG4gICAgdGhhdCBkbyBub3QgYWZmZWN0IHRoZSBjb21waWxlZCBrZXJuZWwgaW1hZ2UgKHZtbGludXgpIG9yIGtlcm5lbCBtb2R1bGVzLlxuICAqIFB1cmVseSBkZWNvcmF0aXZlIGxvZ2dpbmcgKGUuZy4sIG1lc3NhZ2Ugc3RyaW5ncyBpbiBwcl9lcnIsIHByaW50aywgZGV2X2luZm8pIG9yIHRyYWNlcG9pbnRzXG4gICAgdGhhdCBkbyBub3QgYWx0ZXIgY29udHJvbCBmbG93IG9yIGRhdGEgc3RydWN0dXJlcy5cbiAgKiBCdWlsZCBzeXN0ZW0gb3IgS2NvbmZpZyBjaGFuZ2VzIHRoYXQgZG8gbm90IGFsdGVyIGNvbXBpbGVkIEMgbG9naWMuXG4tIFN0cnVjdHVyYWxseSB1bnJlYWNoYWJsZSBoYXJkd2FyZTpcbiAgKiBWZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2hlcywgU21hcnROSUNzLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gICAgaW9uaWMsIGFtZGdwdSkgcmVxdWlyaW5nIHBoeXNpY2FsIEFTSUMvUENJZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gVW5yZWFjaGFibGUgZXhlY3V0aW9uIHBhdGhzOlxuICAqIERyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKC5yZW1vdmUsIC5zaHV0ZG93biwgcGNpX3VucmVnaXN0ZXJfZHJpdmVyKSBleGVjdXRlZCBvbmx5IGR1cmluZ1xuICAgIHBoeXNpY2FsIFBDSSBob3QtdW5wbHVnIG9yIG1hbnVhbCBzeXNmcyBkcml2ZXIgdW5iaW5kaW5nLlxuICAqIENvZGUgcGF0aHMgZXhjbHVzaXZlIHRvIGFyY2hpdGVjdHVyZXMgb3RoZXIgdGhhbiB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZS5cblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbjMuIFdIRU4gVE8gUkVUVVJOIFdvcnRoRnV6emluZz10cnVlIChQT1NJVElWRSBDUklURVJJQSlcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5SZXR1cm4gV29ydGhGdXp6aW5nPXRydWUgd2hlbmV2ZXIgdGhlIHBhdGNoIHRvdWNoZXMgcmVhY2hhYmxlIGV4ZWN1dGFibGUgY29kZSwgaW5jbHVkaW5nOlxuLSBDb3JlIFN1YnN5c3RlbXM6XG4gICogQW55IGxvZ2ljIG1vZGlmaWNhdGlvbnMgaW4gbWVtb3J5IG1hbmFnZW1lbnQgKG1tLyksIHN5bmNocm9uaXphdGlvbi9sb2NraW5nIChrZXJuZWwvbG9ja2luZy8pLFxuICAgIEJQRiwgc2NoZWR1bGVyLCBjb3JlIG5ldHdvcmtpbmcsIFZGUywgb3Igc3lzY2FsbCBoYW5kbGluZy5cbi0gUmVmYWN0b3JpbmdzIGFuZCBDb2RlIENsZWFudXBzOlxuICAqIEFueSByZXN0cnVjdHVyaW5nIG9mIHJlYWNoYWJsZSBkYXRhIHN0cnVjdHVyZXMsIGhlbHBlciBhYnN0cmFjdGlvbnMsIG9yIGFsZ29yaXRobSBmbG93cy5cbi0gUnVudGltZSBBc3NlcnRpb25zIGFuZCBEZWZlbnNpdmUgQ2hlY2tzOlxuICAqIEFueSBpbnRyb2R1Y3Rpb24gb3IgYWx0ZXJhdGlvbiBvZiBhc3NlcnRpb25zIChXQVJOX09OKiwgVk1fV0FSTl9PTiosIEJVR19PTiosIGV0Yy4pIGluIHJlYWNoYWJsZSBwYXRocy5cbi0gUmVhY2hhYmxlIERyaXZlcnMgYW5kIFByb3RvY29sczpcbiAgKiBEcml2ZXJzIGFjY2Vzc2libGUgdmlhIHZpcnR1YWwgYnVzZXMgKHZpcnRpbywgVVNCIGdhZGdldCwgbG9vcGJhY2ssIG5ldGxpbmssIGJpbmRlciwgc29ja2V0cywgZXRjLikuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG40LiBFWFRSQUNUSU5HIEZvY3VzU3ltYm9scyAoUFJFVkVOVElORyBESUxVVElPTilcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5XaGVuIFdvcnRoRnV6emluZz10cnVlLCB5b3UgbXVzdCBleHRyYWN0IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgaW50byBGb2N1c1N5bWJvbHMgdG8gZ3VpZGUgdGhlIGZ1enplcjpcblxuLSBBVk9JRCBVQklRVUlUT1VTIExJRkVDWUNMRSBIT1QtUEFUSFM6XG4gIERvIE5PVCBsaXN0IGdlbmVyaWMsIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhbGxlZCBieSBhbG1vc3QgZXZlcnkgcHJvZ3JhbSBpbiB0aGUgY29ycHVzXG4gIChpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bzogZ2VuZXJhbCBtZW1vcnkgYWxsb2NhdG9ycyBhbmQgZGVhbGxvY2F0b3JzLCBwYWdlIGZhdWx0XG4gIGFuZCB0cmFwIGhhbmRsZXJzLCBvciBjb3JlIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzOyB0aGlzIGlzIG5vdCBhbiBleGhhdXN0aXZlIGxpc3QpLlxuICBMaXN0aW5nIHViaXF1aXRvdXMgZnVuY3Rpb25zIGNhdXNlcyB0aGUgZnV6emVyIHRvIGNsYXNzaWZ5IHRob3VzYW5kcyBvZiB1bnJlbGF0ZWQgdGVzdHMgYXMgXCJmb2N1c2VkXCIsXG4gIHdoaWNoIHNldmVyZWx5IGRpbHV0ZXMgZnV6emluZyBlZmZvcnQgYXdheSBmcm9tIHRoZSBhY3R1YWwgY2hhbmdlcy5cblxuLSBUQVJHRVQgU1BFQ0lGSUMgRkVBVFVSRSBMT0dJQyBBTkQgRU5UUllQT0lOVFM6XG4gIExpc3QgZnVuY3Rpb25zIHRoYXQgc3BlY2lmaWNhbGx5IGltcGxlbWVudCB0aGUgbG9naWMgYmVpbmcgYWRkZWQgb3IgYWx0ZXJlZCwgb3IgZGlyZWN0IEFQSSBlbnRyeXBvaW50c1xuICBmb3IgdGhlIHN1YnN5c3RlbSBmZWF0dXJlIHVuZGVyIHJldmlldy5cblxuLSBIQU5ETElORyBTVEFUSUMgSU5MSU5FIEZVTkNUSU9OUyBJTiBIRUFERVJTICguaCk6XG4gIENvbXBpbGVyLWlubGluZWQgc3RhdGljIGZ1bmN0aW9ucyAoc3VjaCBhcyBzdGF0aWMgaW5saW5lcyBpbiBtbS8qLmggb3IgaW5jbHVkZS9saW51eC8qLmgpIGxhY2tcbiAgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcyBpbiB2bWxpbnV4IGFuZCBjYW5ub3QgYmUgdGFyZ2V0ZWQgZGlyZWN0bHkgYnkgc3ltYm9sIGNvdmVyYWdlIGZpbHRlcnMuXG4gIElmIHRoZSBjaGFuZ2VzIGFyZSBwcmltYXJpbHkgaW4gc3RhdGljIGlubGluZSBoZWxwZXJzLCBpZGVudGlmeSBub24tc3RhdGljLCBmZWF0dXJlLXNwZWNpZmljIGNhbGxlclxuICBmdW5jdGlvbnMgaW4gLmMgZmlsZXMgdGhhdCBleGVyY2lzZSB0aGVtIChhdm9pZGluZyB1YmlxdWl0b3VzIGxpZmVjeWNsZSB3cmFwcGVycykuXG5cbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG41LiBJREVOVElGWUlORyBFbmFibGVDb25maWdzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSBjb21waWxlIGFuZCByZWFjaCB0aGUgbW9kaWZpZWQgY29kZTpcbi0gSW5zcGVjdCBLY29uZmlnIGZpbGVzIGFuZCAjaWZkZWYgZ3VhcmRzOyBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbi0gQ2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzIG5lZWRlZC5cbi0gU3RyaXAgYW55ICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IlRhcmdldCBhcmNoaXRlY3R1cmU6IGFtZDY0XG5cbkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDBjMWUyNjkxMWQxZjU4NGQ1YzBiYzE5YjBhNmU0ZDJlY2NhMDZlNzhcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVGh1IFNlcCAxMCAwODo0MTozMyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuY1xuaW5kZXggZmI2MWU1M2ZmNGMzNC4uNTBlMDE3MDIxMWI4MSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jXG5AQCAtNzI5LDYgKzcyOSwxMyBAQCBzdGF0aWMgc3NpemVfdCBhdGgxMGtfcmVnX3ZhbHVlX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLFxuIFxuIFx0cmVnX2FkZHIgPSBhci1cdTAwM2VkZWJ1Zy5yZWdfYWRkcjtcbiBcbitcdC8qIEZJWDogVmFsaWRhdGUgcmVnaXN0ZXIgYWRkcmVzcyAqL1xuK1x0aWYgKHJlZ19hZGRyIFx1MDAzZSBhci1cdTAwM2Vod19wYXJhbXMucmVnX3NpemUpIHtcbitcdFx0YXRoMTBrX3dhcm4oYXIsIFwiSW52YWxpZCByZWdpc3RlciBhZGRyZXNzIDB4JTA4eFxcblwiLCByZWdfYWRkcik7XG4rXHRcdHJldCA9IC1FSU5WQUw7XG4rXHRcdGdvdG8gZXhpdDtcbitcdH1cbitcbiBcdHJldCA9IGtzdHJ0b3UzMl9mcm9tX3VzZXIodXNlcl9idWYsIGNvdW50LCAwLCBcdTAwMjZyZWdfdmFsKTtcbiBcdGlmIChyZXQpXG4gXHRcdGdvdG8gZXhpdDtcbkBAIC04MTksNiArODI2LDE5IEBAIHN0YXRpYyBzc2l6ZV90IGF0aDEwa19tZW1fdmFsdWVfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsXG4gXG4gXHRtdXRleF9sb2NrKFx1MDAyNmFyLVx1MDAzZWNvbmZfbXV0ZXgpO1xuIFxuK1x0LyogRklYOiBWYWxpZGF0ZSBhZGRyZXNzIGFnYWluc3QgbWVtb3J5IHNpemUgKi9cbitcdGlmICgqcHBvcyBcdTAwM2UgYXItXHUwMDNlaHdfcGFyYW1zLm1lbV9zaXplKSB7XG4rXHRcdGF0aDEwa193YXJuKGFyLCBcIkludmFsaWQgYWRkcmVzcyAweCUwOHggZm9yIG1lbV92YWx1ZVxcblwiLCAodTMyKSpwcG9zKTtcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXHR9XG4rXG4rXHQvKiBGSVg6IFZhbGlkYXRlIHNpemUgYWdhaW5zdCByZW1haW5pbmcgbWVtb3J5ICovXG4rXHRpZiAoY291bnQgXHUwMDNlIGFyLVx1MDAzZWh3X3BhcmFtcy5tZW1fc2l6ZSAtICpwcG9zKSB7XG4rXHRcdGF0aDEwa193YXJuKGFyLCBcIkludmFsaWQgc2l6ZSAlenUgZm9yIG1lbV92YWx1ZSBhdCAweCUwOHhcXG5cIixcbitcdFx0XHQgICAgY291bnQsICh1MzIpKnBwb3MpO1xuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcdH1cbitcbiBcdGJ1ZiA9IHZtYWxsb2MoY291bnQpO1xuIFx0aWYgKCFidWYpIHtcbiBcdFx0cmV0ID0gLUVOT01FTTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguY1xuaW5kZXggYWIyZDM3M2I0NzUwZC4uNGZhYmI5MjY0N2Q5ZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmNcbkBAIC0yNzc1LDYgKzI3NzUsMTMgQEAgc3RhdGljIGJvb2wgYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsKHN0cnVjdCBhdGgxMGtfaHR0ICpodHQsXG4gXHRzdHJ1Y3QgaHR0X3Jlc3AgKnJlc3A7XG4gXHRzaXplX3QgdG90X2hkcl9sZW47XG4gXG4rXG4rXHQvKiBGSVg6IFZhbGlkYXRlIHNrYiBsZW5ndGggYmVmb3JlIHNrYl9wdWxsICovXG4rXHRpZiAoc2tiLVx1MDAzZWxlbiBcdTAwM2MgSFRUX1JYX0ZSQUdfSU5EX0lORk8wX0hFQURFUl9MRU4pIHtcbitcdFx0YXRoMTBrX3dhcm4oYXIsIFwiSW52YWxpZCBza2IgbGVuICVkIGZvciBSWF9GUkFHX0lORFxcblwiLCBza2ItXHUwMDNlbGVuKTtcbitcdFx0cmV0dXJuIGZhbHNlO1xuK1x0fVxuK1xuIFx0cmVzcCA9IChzdHJ1Y3QgaHR0X3Jlc3AgKikoc2tiLVx1MDAzZWRhdGEgKyBIVFRfUlhfRlJBR19JTkRfSU5GTzBfSEVBREVSX0xFTik7XG4gXHRza2JfcHVsbChza2IsIEhUVF9SWF9GUkFHX0lORF9JTkZPMF9IRUFERVJfTEVOKTtcbiBcdHNrYl90cmltKHNrYiwgc2tiLVx1MDAzZWxlbiAtIEZDU19MRU4pO1xuQEAgLTI3OTIsNiArMjc5OSwxMyBAQCBzdGF0aWMgYm9vbCBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGwoc3RydWN0IGF0aDEwa19odHQgKmh0dCxcbiBcdG51bV9tcGR1X3JhbmdlcyA9IE1TKF9fbGUzMl90b19jcHUocnhfaGwtXHUwMDNlaGRyLmluZm8xKSxcbiBcdFx0XHQgICAgIEhUVF9SWF9JTkRJQ0FUSU9OX0lORk8xX05VTV9NUERVX1JBTkdFUyk7XG4gXG4rXHQvKiBGSVg6IFZhbGlkYXRlIG51bV9tcGR1X3JhbmdlcyAqL1xuK1x0aWYgKG51bV9tcGR1X3JhbmdlcyBcdTAwM2UgMSkge1xuK1x0XHRhdGgxMGtfd2FybihhciwgXCJJbnZhbGlkIG51bV9tcGR1X3JhbmdlcyAlZFxcblwiLCBudW1fbXBkdV9yYW5nZXMpO1xuK1x0XHRnb3RvIGVycjtcbitcdH1cbitcbitcbiBcdHRvdF9oZHJfbGVuID0gc2l6ZW9mKHN0cnVjdCBodHRfcmVzcF9oZHIpICtcbiBcdFx0ICAgICAgc2l6ZW9mKHJ4X2hsLVx1MDAzZWhkcikgK1xuIFx0XHQgICAgICBzaXplb2YocnhfaGwtXHUwMDNlcHBkdSkgK1xuQEAgLTI3OTksMTAgKzI4MTMsMjYgQEAgc3RhdGljIGJvb2wgYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsKHN0cnVjdCBhdGgxMGtfaHR0ICpodHQsXG4gXHRcdCAgICAgIHNpemVvZihyeF9obC1cdTAwM2Vmd19kZXNjKSArXG4gXHRcdCAgICAgIHNpemVvZihzdHJ1Y3QgaHR0X3J4X2luZGljYXRpb25fbXBkdV9yYW5nZSkgKiBudW1fbXBkdV9yYW5nZXM7XG4gXG4rXHQvKiBGSVg6IFZhbGlkYXRlIHRvdF9oZHJfbGVuIGFnYWluc3Qgc2tiIGxlbmd0aCAqL1xuK1x0aWYgKHRvdF9oZHJfbGVuIFx1MDAzZSBza2ItXHUwMDNlbGVuKSB7XG4rXHRcdGF0aDEwa193YXJuKGFyLCBcIkludmFsaWQgdG90X2hkcl9sZW4gJXp1IFx1MDAzZSBza2ItXHUwMDNlbGVuICV1XFxuXCIsXG4rXHRcdFx0ICAgIHRvdF9oZHJfbGVuLCBza2ItXHUwMDNlbGVuKTtcbitcdFx0Z290byBlcnI7XG4rXHR9XG4rXG4rXG4gXHR0aWQgPSAgTVMocnhfaGwtXHUwMDNlaGRyLmluZm8wLCBIVFRfUlhfSU5ESUNBVElPTl9JTkZPMF9FWFRfVElEKTtcbiBcdHJ4X2Rlc2MgPSAoc3RydWN0IGh0dF9obF9yeF9kZXNjICopKHNrYi1cdTAwM2VkYXRhICsgdG90X2hkcl9sZW4pO1xuIFx0cnhfZGVzY19pbmZvID0gX19sZTMyX3RvX2NwdShyeF9kZXNjLVx1MDAzZWluZm8pO1xuIFxuK1xuK1x0LyogRklYOiBWYWxpZGF0ZSBmd19kZXNjLmxlbiBhZ2FpbnN0IHJlbWFpbmluZyBza2IgbGVuZ3RoICovXG4rXHRpZiAocnhfaGwtXHUwMDNlZndfZGVzYy5sZW4gXHUwMDNlIHNrYi1cdTAwM2VsZW4gLSB0b3RfaGRyX2xlbikge1xuK1x0XHRhdGgxMGtfd2FybihhciwgXCJJbnZhbGlkIGZ3X2Rlc2MubGVuICV1IFx1MDAzZSByZW1haW5pbmcgc2tiIGxlblxcblwiLFxuK1x0XHRcdCAgICByeF9obC1cdTAwM2Vmd19kZXNjLmxlbik7XG4rXHRcdGdvdG8gZXJyO1xuK1x0fVxuK1xuIFx0aGRyID0gKHN0cnVjdCBpZWVlODAyMTFfaGRyICopKCh1OCAqKXJ4X2Rlc2MgKyByeF9obC1cdTAwM2Vmd19kZXNjLmxlbik7XG4gXG4gXHRpZiAoaXNfbXVsdGljYXN0X2V0aGVyX2FkZHIoaGRyLVx1MDAzZWFkZHIxKSkge1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDg6NDE6MzUuMDk0MTkyMjU3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NTk5ODc5NTUzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEF0aGVyb3MgV2lyZWxlc3MgRHJpdmVyIFBhdGNoKipcblxuT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgcGF0Y2guIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRvIGRldGVybWluZSBpZiBpdCdzIGV2ZW4gKndvcnRoKiBmdXp6aW5nLCBvciBpZiBpdCdzIHRvdWNoaW5nIGNvZGUgdGhhdCdzIGZ1bmRhbWVudGFsbHkgdW5yZWFjaGFibGUgdW5kZXIgbm9ybWFsIGNpcmN1bXN0YW5jZXMuIEZpcnN0LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgYmVpbmcgbW9kaWZpZWQuIEFoLCBpdCdzIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmNgIGFuZCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguY2AuIFJpZ2h0LCBhdGgxMGsg4oCTIHRoYXQncyB0aGUgd2lyZWxlc3MgZHJpdmVyIGZvciB0aG9zZSBRdWFsY29tbSBBdGhlcm9zIDgwMi4xMWFjIGRldmljZXMuIFRoaW5rIFFDQTk4OHgsIFFDQTYxNzQsIFFDQTkzNzcuLi4geW91IGtub3csIHRoZSB1c3VhbCBzdXNwZWN0cy5cblxuTm93LCBteSBuZXh0IHF1ZXN0aW9uIGlzLCB3aGF0J3MgdGhlIGFjY2VzcyB2ZWN0b3IgaGVyZT8gRG9lcyB0aGlzIGRyaXZlciBzdXBwb3J0IFVTQiwgU0RJTywgb3IgaXMgaXQgaXNvbGF0ZWQgdG8gUENJPyBDYW4gSSBnZXQgYXQgaXQgdGhyb3VnaCBzb21ldGhpbmcgbGlrZSBgbWFjODAyMTFfaHdzaW1gIG9yLCBldmVuIGJldHRlciwgdGhyb3VnaCBVU0IgZ2FkZ2V0IGVtdWxhdGlvbiBvciBhIHNpbWlsYXIgbWV0aG9kIHRoYXQgU3l6a2FsbGVyIG1pZ2h0IG9mZmVyPyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgYXR0YWNrIHN1cmZhY2UuXG5cblRpbWUgZm9yIHNvbWUgZ3JlcC1mdSEgTGV0J3Mgc2NhbiB0aGUgY29kZSBiYXNlIHRvIGRldGVybWluZSB0aGUgYnVzIHN1cHBvcnQuIEknbGwgbmVlZCB0byBrbm93IHdoaWNoIGJ1c2VzIGFyZSBzdXBwb3J0ZWQgdG8ga25vdyB3aGF0IGhhcmR3YXJlIEkgbmVlZCB0byB0YXJnZXQgYW5kIHdoYXQgdGhlIGJlc3QgYXZlbnVlIGZvciBmdXp6aW5nIHRoaXMgd2lsbCBiZS4gU28gUENJLCBVU0IsIFNESU8sIEFIQiwgU05PQy4uLiBsZXQncyBzZWUgd2hhdCB0aGUgZ3JlcCByZXZlYWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjM3LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDg6NDE6NDEuMDkyOTkwNDk2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwODU2MDE4NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGgxMGtfdXNiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9NYWtlZmlsZT0zND1hdGgxMGtfc2Rpby15ICs9IHNkaW8ub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvTWFrZWZpbGUtMzUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9NYWtlZmlsZTozNjpvYmotJChDT05GSUdfQVRIMTBLX1VTQikgKz0gYXRoMTBrX3VzYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9NYWtlZmlsZTozNzphdGgxMGtfdXNiLXkgKz0gdXNiLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL01ha2VmaWxlLTM4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjE4OnN0YXRpYyB2b2lkIGF0aDEwa191c2JfcG9zdF9yZWN2X3RyYW5zZmVycyhzdHJ1Y3QgYXRoMTBrICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjE5OlxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnJlY3ZfcGlwZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM9MzU9c3RhdGljIHN0cnVjdCBhdGgxMGtfdXJiX2NvbnRleHQgKlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MzY6YXRoMTBrX3VzYl9hbGxvY191cmJfZnJvbV9waXBlKHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zNy17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTc6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9mcmVlX3VyYl90b19waXBlKHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01OC1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgYXRoMTBrX3VyYl9jb250ZXh0ICp1cmJfY29udGV4dClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3NDpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2NsZWFudXBfcmVjdl91cmIoc3RydWN0IGF0aDEwa191cmJfY29udGV4dCAqdXJiX2NvbnRleHQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTc4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6Nzk6XFx0YXRoMTBrX3VzYl9mcmVlX3VyYl90b19waXBlKHVyYl9jb250ZXh0LVxcdTAwM2VwaXBlLCB1cmJfY29udGV4dCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04MC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjgyOnN0YXRpYyB2b2lkIGF0aDEwa191c2JfZnJlZV9waXBlX3Jlc291cmNlcyhzdHJ1Y3QgYXRoMTBrICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjgzOlxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwNC1cXHRmb3IgKDs7KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDU6XFx0XFx0dXJiX2NvbnRleHQgPSBhdGgxMGtfdXNiX2FsbG9jX3VyYl9mcm9tX3BpcGUocGlwZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTExMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExNDpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2NsZWFudXBfcGlwZV9yZXNvdXJjZXMoc3RydWN0IGF0aDEwayAqYXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTUte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTE2OlxcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTE3LVxcdGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTktXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFUSDEwS19VU0JfUElQRV9NQVg7IGkrKylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEyMDpcXHRcXHRhdGgxMGtfdXNiX2ZyZWVfcGlwZV9yZXNvdXJjZXMoYXIsIFxcdTAwMjZhcl91c2ItXFx1MDAzZXBpcGVzW2ldKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEyMS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEyNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEyNTpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX3JlY3ZfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTI2LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEyNy1cXHRzdHJ1Y3QgYXRoMTBrX3VyYl9jb250ZXh0ICp1cmJfY29udGV4dCA9IHVyYi1cXHUwMDNlY29udGV4dDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEyODpcXHRzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlID0gdXJiX2NvbnRleHQtXFx1MDAzZXBpcGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMjktXFx0c3RydWN0IGF0aDEwayAqYXIgPSBwaXBlLVxcdTAwM2Vhcl91c2ItXFx1MDAzZWFyO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xNzItY2xlYW51cF9yZWN2X3VyYjpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjE3MzpcXHRhdGgxMGtfdXNiX2NsZWFudXBfcmVjdl91cmIodXJiX2NvbnRleHQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTc0LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xNzctXFx0XFx0Lyogb3VyIGZyZWUgdXJicyBhcmUgcGlsaW5nIHVwLCBwb3N0IG1vcmUgdHJhbnNmZXJzICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxNzg6XFx0XFx0YXRoMTBrX3VzYl9wb3N0X3JlY3ZfdHJhbnNmZXJzKGFyLCBwaXBlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE3OS1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE4MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjE4MjpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX3RyYW5zbWl0X2NvbXBsZXRlKHN0cnVjdCB1cmIgKnVyYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTE4My17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xODQtXFx0c3RydWN0IGF0aDEwa191cmJfY29udGV4dCAqdXJiX2NvbnRleHQgPSB1cmItXFx1MDAzZWNvbnRleHQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxODU6XFx0c3RydWN0IGF0aDEwa191c2JfcGlwZSAqcGlwZSA9IHVyYl9jb250ZXh0LVxcdTAwM2VwaXBlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTg2LVxcdHN0cnVjdCBhdGgxMGsgKmFyID0gcGlwZS1cXHUwMDNlYXJfdXNiLVxcdTAwM2VhcjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTk2LVxcdHVyYl9jb250ZXh0LVxcdTAwM2Vza2IgPSBOVUxMO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTk3OlxcdGF0aDEwa191c2JfZnJlZV91cmJfdG9fcGlwZSh1cmJfY29udGV4dC1cXHUwMDNlcGlwZSwgdXJiX2NvbnRleHQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTk4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yMDQtLyogcGlwZSBvcGVyYXRpb25zICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoyMDU6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9wb3N0X3JlY3ZfdHJhbnNmZXJzKHN0cnVjdCBhdGgxMGsgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjA2OlxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnJlY3ZfcGlwZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTIwNy17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTIxMi1cXHRmb3IgKDs7KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoyMTM6XFx0XFx0dXJiX2NvbnRleHQgPSBhdGgxMGtfdXNiX2FsbG9jX3VyYl9mcm9tX3BpcGUocmVjdl9waXBlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTIxNC1cXHRcXHRpZiAoIXVyYl9jb250ZXh0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yMjktXFx0XFx0XFx0XFx0ICBBVEgxMEtfVVNCX1JYX0JVRkZFUl9TSVpFLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjMwOlxcdFxcdFxcdFxcdCAgYXRoMTBrX3VzYl9yZWN2X2NvbXBsZXRlLCB1cmJfY29udGV4dCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yMzEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI1NC1lcnI6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoyNTU6XFx0YXRoMTBrX3VzYl9jbGVhbnVwX3JlY3ZfdXJiKHVyYl9jb250ZXh0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI1Ni19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoyNTg6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9mbHVzaF9hbGwoc3RydWN0IGF0aDEwayAqYXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yNTkte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjYwOlxcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjYxLVxcdGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yNzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoyNzE6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9zdGFydF9yZWN2X3BpcGVzKHN0cnVjdCBhdGgxMGsgKmFyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjcyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjI3MzpcXHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI3NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjc2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6Mjc3OlxcdGF0aDEwa191c2JfcG9zdF9yZWN2X3RyYW5zZmVycyhhcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI3OC1cXHRcXHRcXHRcXHQgICAgICAgXFx1MDAyNmFyX3VzYi1cXHUwMDNlcGlwZXNbQVRIMTBLX1VTQl9QSVBFX1JYX0RBVEFdKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMjgwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MjgxOnN0YXRpYyB2b2lkIGF0aDEwa191c2JfdHhfY29tcGxldGUoc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBza19idWZmICpza2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yODIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0yOTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoyOTI6c3RhdGljIHZvaWQgYXRoMTBrX3VzYl9yeF9jb21wbGV0ZShzdHJ1Y3QgYXRoMTBrICphciwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTI5My17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM1OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM2MDpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2lvX2NvbXBfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zNjEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MzYyOlxcdHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGUgPSBjb250YWluZXJfb2Yod29yayxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM2MzpcXHRcXHRcXHRcXHRcXHRcXHQgICAgc3RydWN0IGF0aDEwa191c2JfcGlwZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM2NC1cXHRcXHRcXHRcXHRcXHRcXHQgICAgaW9fY29tcGxldGVfd29yayk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM2OS1cXHRcXHRpZiAocGlwZS1cXHUwMDNlZmxhZ3MgXFx1MDAyNiBBVEgxMEtfVVNCX1BJUEVfRkxBR19UWClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM3MDpcXHRcXHRcXHRhdGgxMGtfdXNiX3R4X2NvbXBsZXRlKGFyLCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzcxLVxcdFxcdGVsc2VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM3MjpcXHRcXHRcXHRhdGgxMGtfdXNiX3J4X2NvbXBsZXRlKGFyLCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzczLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzc1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6Mzc2OiNkZWZpbmUgQVRIMTBLX1VTQl9NQVhfRElBR19DTUQgKHNpemVvZihzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfY21kX3dyaXRlKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM3NzojZGVmaW5lIEFUSDEwS19VU0JfTUFYX0RJQUdfUkVTUCAoc2l6ZW9mKHN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19yZXNwX3JlYWQpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzc4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6Mzc5OnN0YXRpYyB2b2lkIGF0aDEwa191c2JfZGVzdHJveShzdHJ1Y3QgYXRoMTBrICphcilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM4MC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozODE6XFx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zODItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozODM6XFx0YXRoMTBrX3VzYl9mbHVzaF9hbGwoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6Mzg0OlxcdGF0aDEwa191c2JfY2xlYW51cF9waXBlX3Jlc291cmNlcyhhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0zODUtXFx0dXNiX3NldF9pbnRmZGF0YShhcl91c2ItXFx1MDAzZWludGVyZmFjZSwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM5MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM5MTpzdGF0aWMgaW50IGF0aDEwa191c2JfaGlmX3N0YXJ0KHN0cnVjdCBhdGgxMGsgKmFyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMzkyLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM5My1cXHRpbnQgaTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjM5NDpcXHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM5NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM5Ni1cXHRhdGgxMGtfY29yZV9uYXBpX2VuYWJsZShhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzozOTc6XFx0YXRoMTBrX3VzYl9zdGFydF9yZWN2X3BpcGVzKGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTM5OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NDA5OnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9oaWZfdHhfc2coc3RydWN0IGF0aDEwayAqYXIsIHU4IHBpcGVfaWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00MTAtXFx0XFx0XFx0XFx0c3RydWN0IGF0aDEwa19oaWZfc2dfaXRlbSAqaXRlbXMsIGludCBuX2l0ZW1zKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDExLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQxMjpcXHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQxMzpcXHRzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlID0gXFx1MDAyNmFyX3VzYi1cXHUwMDNlcGlwZXNbcGlwZV9pZF07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00MTQtXFx0c3RydWN0IGF0aDEwa191cmJfY29udGV4dCAqdXJiX2NvbnRleHQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQxOS1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2Mgbl9pdGVtczsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo0MjA6XFx0XFx0dXJiX2NvbnRleHQgPSBhdGgxMGtfdXNiX2FsbG9jX3VyYl9mcm9tX3BpcGUocGlwZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00MjEtXFx0XFx0aWYgKCF1cmJfY29udGV4dCkge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00MzktXFx0XFx0XFx0XFx0ICBza2ItXFx1MDAzZWxlbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQ0MDpcXHRcXHRcXHRcXHQgIGF0aDEwa191c2JfdHJhbnNtaXRfY29tcGxldGUsIHVyYl9jb250ZXh0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ0MS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDYzLWVycl9mcmVlX3VyYl90b19waXBlOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NDY0OlxcdGF0aDEwa191c2JfZnJlZV91cmJfdG9fcGlwZSh1cmJfY29udGV4dC1cXHUwMDNlcGlwZSwgdXJiX2NvbnRleHQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDY1LWVycjpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NDY5OnN0YXRpYyB2b2lkIGF0aDEwa191c2JfaGlmX3N0b3Aoc3RydWN0IGF0aDEwayAqYXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00NzAte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NDcxOlxcdGF0aDEwa191c2JfZmx1c2hfYWxsKGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ3Mi1cXHRhdGgxMGtfY29yZV9uYXBpX3N5bmNfZGlzYWJsZShhcik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ3NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQ3NTpzdGF0aWMgdTE2IGF0aDEwa191c2JfaGlmX2dldF9mcmVlX3F1ZXVlX251bWJlcihzdHJ1Y3QgYXRoMTBrICphciwgdTggcGlwZV9pZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ3Ni17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo0Nzc6XFx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00NzgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ4MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjQ4MjpzdGF0aWMgaW50IGF0aDEwa191c2Jfc3VibWl0X2N0cmxfb3V0KHN0cnVjdCBhdGgxMGsgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNDgzLVxcdFxcdFxcdFxcdCAgICAgIHU4IHJlcSwgdTE2IHZhbHVlLCB1MTYgaW5kZXgsIHZvaWQgKmRhdGEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTQ4NS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo0ODY6XFx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy00ODctXFx0dTggKmJ1ZiA9IE5VTEw7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTUxNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjUxNjpzdGF0aWMgaW50IGF0aDEwa191c2Jfc3VibWl0X2N0cmxfaW4oc3RydWN0IGF0aDEwayAqYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01MTctXFx0XFx0XFx0XFx0ICAgICB1OCByZXEsIHUxNiB2YWx1ZSwgdTE2IGluZGV4LCB2b2lkICpkYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01MTkte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTIwOlxcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSBhdGgxMGtfdXNiX3ByaXYoYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTIxLVxcdHU4ICpidWYgPSBOVUxMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01NTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo1NTI6c3RhdGljIGludCBhdGgxMGtfdXNiX2N0cmxfbXNnX2V4Y2hhbmdlKHN0cnVjdCBhdGgxMGsgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTUzLVxcdFxcdFxcdFxcdFxcdHU4IHJlcV92YWwsIHU4ICpyZXFfYnVmLCB1MzIgcmVxX2xlbixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTU5LVxcdC8qIHNlbmQgY29tbWFuZCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTYwOlxcdHJldCA9IGF0aDEwa191c2Jfc3VibWl0X2N0cmxfb3V0KGFyLCByZXFfdmFsLCAwLCAwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTYxLVxcdFxcdFxcdFxcdFxcdCByZXFfYnVmLCByZXFfbGVuKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTY2LVxcdGlmIChyZXNwX2J1Zikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTY3OlxcdFxcdHJldCA9IGF0aDEwa191c2Jfc3VibWl0X2N0cmxfaW4oYXIsIHJlc3BfdmFsLCAwLCAwLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTY4LVxcdFxcdFxcdFxcdFxcdFxcdHJlc3BfYnVmLCAqcmVzcF9sZW4pO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01NzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo1Nzg6c3RhdGljIGludCBhdGgxMGtfdXNiX2hpZl9kaWFnX3JlYWQoc3RydWN0IGF0aDEwayAqYXIsIHUzMiBhZGRyZXNzLCB2b2lkICpidWYsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01NzktXFx0XFx0XFx0XFx0ICAgIHNpemVfdCBidWZfbGVuKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTgwLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjU4MTpcXHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjU4MjpcXHRzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfY21kX3JlYWQgKmNtZDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU4My1cXHR1MzIgcmVzcF9sZW47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU4NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjU4NjpcXHRpZiAoYnVmX2xlbiBcXHUwMDNjIHNpemVvZihzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfcmVzcF9yZWFkKSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU4Ny1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTU4OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjU4OTpcXHRjbWQgPSAoc3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX2NtZF9yZWFkICopYXJfdXNiLVxcdTAwM2VkaWFnX2NtZF9idWZmZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01OTAtXFx0bWVtc2V0KGNtZCwgMCwgc2l6ZW9mKCpjbWQpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTkyLVxcdGNtZC1cXHUwMDNlYWRkcmVzcyA9IGNwdV90b19sZTMyKGFkZHJlc3MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTkzOlxcdHJlc3BfbGVuID0gc2l6ZW9mKHN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19yZXNwX3JlYWQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNTk0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NTk1OlxcdHJldCA9IGF0aDEwa191c2JfY3RybF9tc2dfZXhjaGFuZ2UoYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy01OTYtXFx0XFx0XFx0XFx0XFx0ICAgQVRIMTBLX1VTQl9DT05UUk9MX1JFUV9ESUFHX0NNRCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjAzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjA0OlxcdGlmIChyZXNwX2xlbiAhPSBzaXplb2Yoc3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX3Jlc3BfcmVhZCkpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02MDUtXFx0XFx0cmV0dXJuIC1FTVNHU0laRTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjA3LVxcdG1lbWNweShidWYsIGFyX3VzYi1cXHUwMDNlZGlhZ19yZXNwX2J1ZmZlcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjYwODpcXHQgICAgICAgc2l6ZW9mKHN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19yZXNwX3JlYWQpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTYwOS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjEyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjEzOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9oaWZfZGlhZ193cml0ZShzdHJ1Y3QgYXRoMTBrICphciwgdTMyIGFkZHJlc3MsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02MTQtXFx0XFx0XFx0XFx0ICAgICBjb25zdCB2b2lkICpkYXRhLCBpbnQgbmJ5dGVzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjE1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjYxNjpcXHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjYxNzpcXHRzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfY21kX3dyaXRlICpjbWQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02MTgtXFx0aW50IHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjIzOlxcdGNtZCA9IChzdHJ1Y3QgYXRoMTBrX3VzYl9jdHJsX2RpYWdfY21kX3dyaXRlICopYXJfdXNiLVxcdTAwM2VkaWFnX2NtZF9idWZmZXI7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02MjQtXFx0bWVtc2V0KGNtZCwgMCwgc2l6ZW9mKCpjbWQpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjI5OlxcdHJldCA9IGF0aDEwa191c2JfY3RybF9tc2dfZXhjaGFuZ2UoYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02MzAtXFx0XFx0XFx0XFx0XFx0ICAgQVRIMTBLX1VTQl9DT05UUk9MX1JFUV9ESUFHX0NNRCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjM5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjQwOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9ibWlfZXhjaGFuZ2VfbXNnKHN0cnVjdCBhdGgxMGsgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjQxLVxcdFxcdFxcdFxcdCAgICAgICB2b2lkICpyZXEsIHUzMiByZXFfbGVuLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02NDYtXFx0aWYgKHJlcSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NjQ3OlxcdFxcdHJldCA9IGF0aDEwa191c2Jfc3VibWl0X2N0cmxfb3V0KGFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjQ4LVxcdFxcdFxcdFxcdFxcdFxcdCBBVEgxMEtfVVNCX0NPTlRST0xfUkVRX1NFTkRfQk1JX0NNRCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjU4LVxcdGlmIChyZXNwKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo2NTk6XFx0XFx0cmV0ID0gYXRoMTBrX3VzYl9zdWJtaXRfY3RybF9pbihhcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTY2MC1cXHRcXHRcXHRcXHRcXHRcXHRBVEgxMEtfVVNCX0NPTlRST0xfUkVRX1JFQ1ZfQk1JX1JFU1AsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTY3Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjY3MzpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2hpZl9nZXRfZGVmYXVsdF9waXBlKHN0cnVjdCBhdGgxMGsgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNjc0LVxcdFxcdFxcdFxcdFxcdCAgICB1OCAqdWxfcGlwZSwgdTggKmRsX3BpcGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTY3OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjY4MDpzdGF0aWMgaW50IGF0aDEwa191c2JfaGlmX21hcF9zZXJ2aWNlX3RvX3BpcGUoc3RydWN0IGF0aDEwayAqYXIsIHUxNiBzdmNfaWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy02ODEtXFx0XFx0XFx0XFx0XFx0ICAgICAgdTggKnVsX3BpcGUsIHU4ICpkbF9waXBlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03MDMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MDQ6c3RhdGljIGludCBhdGgxMGtfdXNiX2hpZl9wb3dlcl91cChzdHJ1Y3QgYXRoMTBrICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTcwNS1cXHRcXHRcXHRcXHQgICBlbnVtIGF0aDEwa19maXJtd2FyZV9tb2RlIGZ3X21vZGUpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTcwOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjcxMDpzdGF0aWMgdm9pZCBhdGgxMGtfdXNiX2hpZl9wb3dlcl9kb3duKHN0cnVjdCBhdGgxMGsgKmFyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzExLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjcxMjpcXHRhdGgxMGtfdXNiX2ZsdXNoX2FsbChhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03MTMtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03MTYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MTc6c3RhdGljIGludCBhdGgxMGtfdXNiX2hpZl9zdXNwZW5kKHN0cnVjdCBhdGgxMGsgKmFyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzE4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzIxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzIyOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9oaWZfcmVzdW1lKHN0cnVjdCBhdGgxMGsgKmFyKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzIzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzI4OnN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTBrX2hpZl9vcHMgYXRoMTBrX3VzYl9oaWZfb3BzID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzI5OlxcdC50eF9zZ1xcdFxcdFxcdD0gYXRoMTBrX3VzYl9oaWZfdHhfc2csXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MzA6XFx0LmRpYWdfcmVhZFxcdFxcdD0gYXRoMTBrX3VzYl9oaWZfZGlhZ19yZWFkLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzMxOlxcdC5kaWFnX3dyaXRlXFx0XFx0PSBhdGgxMGtfdXNiX2hpZl9kaWFnX3dyaXRlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzMyOlxcdC5leGNoYW5nZV9ibWlfbXNnXFx0PSBhdGgxMGtfdXNiX2JtaV9leGNoYW5nZV9tc2csXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3MzM6XFx0LnN0YXJ0XFx0XFx0XFx0PSBhdGgxMGtfdXNiX2hpZl9zdGFydCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjczNDpcXHQuc3RvcFxcdFxcdFxcdD0gYXRoMTBrX3VzYl9oaWZfc3RvcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjczNTpcXHQubWFwX3NlcnZpY2VfdG9fcGlwZVxcdD0gYXRoMTBrX3VzYl9oaWZfbWFwX3NlcnZpY2VfdG9fcGlwZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjczNjpcXHQuZ2V0X2RlZmF1bHRfcGlwZVxcdD0gYXRoMTBrX3VzYl9oaWZfZ2V0X2RlZmF1bHRfcGlwZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjczNzpcXHQuZ2V0X2ZyZWVfcXVldWVfbnVtYmVyXFx0PSBhdGgxMGtfdXNiX2hpZl9nZXRfZnJlZV9xdWV1ZV9udW1iZXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3Mzg6XFx0LnBvd2VyX3VwXFx0XFx0PSBhdGgxMGtfdXNiX2hpZl9wb3dlcl91cCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjczOTpcXHQucG93ZXJfZG93blxcdFxcdD0gYXRoMTBrX3VzYl9oaWZfcG93ZXJfZG93bixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTc0MC0jaWZkZWYgQ09ORklHX1BNXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3NDE6XFx0LnN1c3BlbmRcXHRcXHQ9IGF0aDEwa191c2JfaGlmX3N1c3BlbmQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3NDI6XFx0LnJlc3VtZVxcdFxcdFxcdD0gYXRoMTBrX3VzYl9oaWZfcmVzdW1lLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtNzQzLSNlbmRpZlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03NDUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3NDY6c3RhdGljIHU4IGF0aDEwa191c2JfZ2V0X2xvZ2ljYWxfcGlwZV9udW0odTggZXBfYWRkcmVzcywgaW50ICp1cmJfY291bnQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03NDcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03OTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo3OTE6c3RhdGljIGludCBhdGgxMGtfdXNiX2FsbG9jX3BpcGVfcmVzb3VyY2VzKHN0cnVjdCBhdGgxMGsgKmFyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6NzkyOlxcdFxcdFxcdFxcdFxcdCAgIHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy03OTMtXFx0XFx0XFx0XFx0XFx0ICAgaW50IHVyYl9jbnQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgxMS1cXHRcXHRwaXBlLVxcdTAwM2V1cmJfYWxsb2MrKztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjgxMjpcXHRcXHRhdGgxMGtfdXNiX2ZyZWVfdXJiX3RvX3BpcGUocGlwZSwgdXJiX2NvbnRleHQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODEzLVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6ODIzOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9zZXR1cF9waXBlX3Jlc291cmNlcyhzdHJ1Y3QgYXRoMTBrICphcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgyNC1cXHRcXHRcXHRcXHRcXHQgICBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtODI1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjgyNjpcXHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgyNy1cXHRzdHJ1Y3QgdXNiX2hvc3RfaW50ZXJmYWNlICppZmFjZV9kZXNjID0gaW50ZXJmYWNlLVxcdTAwM2VjdXJfYWx0c2V0dGluZztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTgyOC1cXHRzdHJ1Y3QgdXNiX2VuZHBvaW50X2Rlc2NyaXB0b3IgKmVuZHBvaW50O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6ODI5OlxcdHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04MzAtXFx0aW50IHJldCwgaSwgdXJiY291bnQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTg3MS1cXHRcXHRwaXBlX251bSA9XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo4NzI6XFx0XFx0ICAgIGF0aDEwa191c2JfZ2V0X2xvZ2ljYWxfcGlwZV9udW0oZW5kcG9pbnQtXFx1MDAzZWJFbmRwb2ludEFkZHJlc3MsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy04NzMtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZ1cmJjb3VudCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTkyNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjkyNTpcXHRcXHRyZXQgPSBhdGgxMGtfdXNiX2FsbG9jX3BpcGVfcmVzb3VyY2VzKGFyLCBwaXBlLCB1cmJjb3VudCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05MjYtXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTMyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6OTMzOnN0YXRpYyBpbnQgYXRoMTBrX3VzYl9jcmVhdGUoc3RydWN0IGF0aDEwayAqYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05MzQtXFx0XFx0XFx0ICAgICBzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTM1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjkzNjpcXHRzdHJ1Y3QgYXRoMTBrX3VzYiAqYXJfdXNiID0gYXRoMTBrX3VzYl9wcml2KGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTkzNy1cXHRzdHJ1Y3QgdXNiX2RldmljZSAqZGV2ID0gaW50ZXJmYWNlX3RvX3VzYmRldihpbnRlcmZhY2UpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6OTM4OlxcdHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgKnBpcGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05MzktXFx0aW50IHJldCwgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTQ4LVxcdFxcdElOSVRfV09SSyhcXHUwMDI2cGlwZS1cXHUwMDNlaW9fY29tcGxldGVfd29yayxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjk0OTpcXHRcXHRcXHQgIGF0aDEwa191c2JfaW9fY29tcF93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTk1MC1cXHRcXHRza2JfcXVldWVfaGVhZF9pbml0KFxcdTAwMjZwaXBlLVxcdTAwM2Vpb19jb21wX3F1ZXVlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTY1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6OTY2OlxcdHJldCA9IGF0aDEwa191c2Jfc2V0dXBfcGlwZV9yZXNvdXJjZXMoYXIsIGludGVyZmFjZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05NjctXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTcyLWVycjpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjk3MzpcXHRhdGgxMGtfdXNiX2Rlc3Ryb3koYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTc0LVxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTk3Ni1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjk3NzpzdGF0aWMgaW50IGF0aDEwa191c2JfbmFwaV9wb2xsKHN0cnVjdCBuYXBpX3N0cnVjdCAqY3R4LCBpbnQgYnVkZ2V0KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTc4LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTkxLS8qIGF0aDEwayB1c2IgZHJpdmVyIHJlZ2lzdGVyZWQgZnVuY3Rpb25zICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzo5OTI6c3RhdGljIGludCBhdGgxMGtfdXNiX3Byb2JlKHN0cnVjdCB1c2JfaW50ZXJmYWNlICppbnRlcmZhY2UsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05OTMtXFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCB1c2JfZGV2aWNlX2lkICppZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtOTk1LVxcdHN0cnVjdCBhdGgxMGsgKmFyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6OTk2OlxcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2I7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy05OTctXFx0c3RydWN0IHVzYl9kZXZpY2UgKmRldiA9IGludGVyZmFjZV90b191c2JkZXYoaW50ZXJmYWNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTAxMC1cXHRhciA9IGF0aDEwa19jb3JlX2NyZWF0ZShzaXplb2YoKmFyX3VzYiksIFxcdTAwMjZkZXYtXFx1MDAzZWRldiwgQVRIMTBLX0JVU19VU0IsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDExOlxcdFxcdFxcdFxcdGh3X3JldiwgXFx1MDAyNmF0aDEwa191c2JfaGlmX29wcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDEyLVxcdGlmICghYXIpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTAxNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwMTc6XFx0bmV0aWZfbmFwaV9hZGQoYXItXFx1MDAzZW5hcGlfZGV2LCBcXHUwMDI2YXItXFx1MDAzZW5hcGksIGF0aDEwa191c2JfbmFwaV9wb2xsKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwMTgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwMjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDI2OlxcdGFyX3VzYiA9IGF0aDEwa191c2JfcHJpdihhcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDI3OlxcdHJldCA9IGF0aDEwa191c2JfY3JlYXRlKGFyLCBpbnRlcmZhY2UpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTAyOC1cXHRpZiAocmV0KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDUxLWVycl91c2JfZGVzdHJveTpcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwNTI6XFx0YXRoMTBrX3VzYl9kZXN0cm95KGFyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwNTMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwNTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDYwOnN0YXRpYyB2b2lkIGF0aDEwa191c2JfZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA2MS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDYyOlxcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2I7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDYzLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDY5LVxcdG5ldGlmX25hcGlfZGVsKFxcdTAwMjZhcl91c2ItXFx1MDAzZWFyLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwNzA6XFx0YXRoMTBrX3VzYl9kZXN0cm95KGFyX3VzYi1cXHUwMDNlYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA3MS1cXHRhdGgxMGtfY29yZV9kZXN0cm95KGFyX3VzYi1cXHUwMDNlYXIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDc1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTA3NjpzdGF0aWMgaW50IGF0aDEwa191c2JfcG1fc3VzcGVuZChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA3Ny1cXHRcXHRcXHRcXHQgcG1fbWVzc2FnZV90IG1lc3NhZ2UpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDc4LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwNzk6XFx0c3RydWN0IGF0aDEwa191c2IgKmFyX3VzYiA9IHVzYl9nZXRfaW50ZmRhdGEoaW50ZXJmYWNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwODAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDgxOlxcdGF0aDEwa191c2JfZmx1c2hfYWxsKGFyX3VzYi1cXHUwMDNlYXIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA4Mi1cXHRyZXR1cm4gMDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA4NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwODU6c3RhdGljIGludCBhdGgxMGtfdXNiX3BtX3Jlc3VtZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZXJmYWNlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmMtMTA4Ni17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDg3OlxcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2IgPSB1c2JfZ2V0X2ludGZkYXRhKGludGVyZmFjZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMDg4LVxcdHN0cnVjdCBhdGgxMGsgKmFyID0gYXJfdXNiLVxcdTAwM2VhcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwODktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDkwOlxcdGF0aDEwa191c2JfcG9zdF9yZWN2X3RyYW5zZmVycyhhcixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwOTEtXFx0XFx0XFx0XFx0ICAgICAgIFxcdTAwMjZhcl91c2ItXFx1MDAzZXBpcGVzW0FUSDEwS19VU0JfUElQRV9SWF9EQVRBXSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTEwOTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMDk4OiNkZWZpbmUgYXRoMTBrX3VzYl9wbV9zdXNwZW5kIE5VTExcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjEwOTk6I2RlZmluZSBhdGgxMGtfdXNiX3BtX3Jlc3VtZSBOVUxMXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTAwLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTAzLS8qIHRhYmxlIG9mIGRldmljZXMgdGhhdCB3b3JrIHdpdGggdGhpcyBkcml2ZXIgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMDQ6c3RhdGljIHN0cnVjdCB1c2JfZGV2aWNlX2lkIGF0aDEwa191c2JfaWRzW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTA1LVxcdHtVU0JfREVWSUNFKDB4MTNiMSwgMHgwMDQyKX0sIC8qIExpbmtzeXMgV1VTQjYxMDBNICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTExMDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTA5Ok1PRFVMRV9ERVZJQ0VfVEFCTEUodXNiLCBhdGgxMGtfdXNiX2lkcyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTExMTpzdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgYXRoMTBrX3VzYl9kcml2ZXIgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTEyOlxcdC5uYW1lID0gXFxcImF0aDEwa191c2JcXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTExMzpcXHQucHJvYmUgPSBhdGgxMGtfdXNiX3Byb2JlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTExNDpcXHQuc3VzcGVuZCA9IGF0aDEwa191c2JfcG1fc3VzcGVuZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMTU6XFx0LnJlc3VtZSA9IGF0aDEwa191c2JfcG1fcmVzdW1lLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmM6MTExNjpcXHQuZGlzY29ubmVjdCA9IGF0aDEwa191c2JfZGlzY29ubmVjdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jOjExMTc6XFx0LmlkX3RhYmxlID0gYXRoMTBrX3VzYl9pZHMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYy0xMTE4LVxcdC5zdXBwb3J0c19hdXRvc3VzcGVuZCA9IHRydWUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTExMjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuYzoxMTIyOm1vZHVsZV91c2JfZHJpdmVyKGF0aDEwa191c2JfZHJpdmVyKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5jLTExMjMtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmg6NDQ6c3RydWN0IGF0aDEwa191c2JfY3RybF9kaWFnX2NtZF93cml0ZSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC00NS1cXHRfX2xlMzIgY21kO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC01MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oOjUxOnN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19jbWRfcmVhZCB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC01Mi1cXHRfX2xlMzIgY21kO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC01NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oOjU2OnN0cnVjdCBhdGgxMGtfdXNiX2N0cmxfZGlhZ19yZXNwX3JlYWQge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtNTctXFx0dTggdmFsdWVbNF07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTYwLS8qIHR4L3J4IHBpcGVzIGZvciB1c2IgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oOjYxOmVudW0gYXRoMTBrX3VzYl9waXBlX2lkIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTYyLVxcdEFUSDEwS19VU0JfUElQRV9UWF9DVFJMID0gMCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtNzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaDo3MzpzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTc0LVxcdHN0cnVjdCBsaXN0X2hlYWQgdXJiX2xpc3RfaGVhZDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtODItXFx0dTggbG9naWNhbF9waXBlX251bTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oOjgzOlxcdHN0cnVjdCBhdGgxMGtfdXNiICphcl91c2I7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC04NC1cXHR1MTYgbWF4X3BhY2tldF9zaXplO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC05Mi0vKiB1c2IgZGV2aWNlIG9iamVjdCAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmg6OTM6c3RydWN0IGF0aDEwa191c2Ige1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtOTQtXFx0LyogcHJvdGVjdHMgcGlwZS1cXHUwMDNldXJiX2xpc3RfaGVhZCBhbmQgIHBpcGUtXFx1MDAzZXVyYl9jbnQgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtOTgtXFx0c3RydWN0IHVzYl9pbnRlcmZhY2UgKmludGVyZmFjZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oOjk5OlxcdHN0cnVjdCBhdGgxMGtfdXNiX3BpcGUgcGlwZXNbQVRIMTBLX1VTQl9QSVBFX01BWF07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC0xMDAtXFx0dTggKmRpYWdfY21kX2J1ZmZlcjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmg9MTA2PXN0cnVjdCBhdGgxMGtfdXJiX2NvbnRleHQge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtMTA3LVxcdHN0cnVjdCBsaXN0X2hlYWQgbGluaztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oOjEwODpcXHRzdHJ1Y3QgYXRoMTBrX3VzYl9waXBlICpwaXBlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmgtMTA5LVxcdHN0cnVjdCBza19idWZmICpza2I7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oLTExMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL3VzYi5oOjExMzpzdGF0aWMgaW5saW5lIHN0cnVjdCBhdGgxMGtfdXNiICphdGgxMGtfdXNiX3ByaXYoc3RydWN0IGF0aDEwayAqYXIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC0xMTQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvdXNiLmg6MTE1OlxcdHJldHVybiAoc3RydWN0IGF0aDEwa191c2IgKilhci1cXHUwMDNlZHJ2X3ByaXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway91c2IuaC0xMTYtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwODo0MTo0MS4yMDE1NTczNzFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo1NjAyOTIyMDc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgYXRoMTBrIFVTQiBGdW5jdGlvbmFsaXR5IGFuZCBIaWdoIExhdGVuY3kgSW1wYWN0KipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGUgYGF0aDEwa2AgZHJpdmVyIGFuZCBpdHMgVVNCIGNhcGFiaWxpdGllcy4gR29vZCB0byBrbm93IGl0IGhhcyBVU0Igc3VwcG9ydCB2aWEgYENPTkZJR19BVEgxMEtfVVNCYCwgd2hpY2ggaXMgcHJldHR5IHVzZWZ1bCBiZWNhdXNlIGl0IG9wZW5zIHVwIGVtdWxhdGlvbiBwb3NzaWJpbGl0aWVzIHRocm91Z2ggVVNCIGdhZGdldCwgUmF3IEdhZGdldCwgYW5kLCBvZiBjb3Vyc2UsIHN5emthbGxlci4gU2luY2UgVVNCIGFuZCBTRElPIGRldmljZXMgb2Z0ZW4gb3BlcmF0ZSBpbiBhIGhpZ2gtbGF0ZW5jeSAoSEwpIGVudmlyb25tZW50LCBteSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBzZWUgaWYgd2UgY2FuIGFjdHVhbGx5IHJlYWNoIHRoZSBgYXRoMTBrYCdzIGBodHRfcnhgIGZ1bmN0aW9ucyB3aXRoaW4gdGhhdCBITCBjb250ZXh0LiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byB0cmFjZSB0aGUgY2FsbCBwYXRocyB0byBkZXRlcm1pbmUgaWYgdGhlIGBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGxgIGZ1bmN0aW9uIGlzIGJlaW5nIGludm9rZWQgd2hlbiB0aGVzZSBoaWdoZXIgbGF0ZW5jeSBkZXZpY2VzIGFyZSBpbnRlcmFjdGluZy4gVGhpcyB3aWxsIGhvcGVmdWxseSBwcm92aWRlIGluc2lnaHQgaW50byBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIG9yIHN0YWJpbGl0eSBpc3N1ZXMgd2l0aGluIHRoYXQgc3BlY2lmaWMgc3Vic3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODE0NiwiT3V0cHV0VG9rZW5zIjo1MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA4OjQxOjQ2LjgwNDQ4MTM5NVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NjY4NDczNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGxcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEwa1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jPTI3NDM9c3RhdGljIGludCBhdGgxMGtfaHR0X3J4X2ZyYWdfd2VwX2RlY2FwKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jLTI3NTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguYzoyNzU4OnN0YXRpYyBib29sIGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obChzdHJ1Y3QgYXRoMTBrX2h0dCAqaHR0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmMtMjc1OS1cXHRcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgaHR0X3J4X2ZyYWdtZW50X2luZGljYXRpb24gKnJ4LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguYz00NDkwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTBrX2h0dF9yeF9vcHMgaHR0X3J4X29wc19obCA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jOjQ0OTE6XFx0Lmh0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kID0gYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmMtNDQ5Mi19O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwODo0MTo0Ni45MDExNzEwMzlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyNTQyNDQ2ODQwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipUcmFjaW5nIHRoZSBVc2FnZSBvZiBgaHR0X3J4X29wc19obGAqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgXCJXaGVyZSdzIHRoaXMgYGh0dF9yeF9vcHNfaGxgIGZ1bmN0aW9uIGFjdHVhbGx5ICpkb2luZyogd29yaz9cIiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgY29udGV4dC4gSSBuZWVkIHRvIGtub3cgd2hhdCBjb2RlIGlzIGNhbGxpbmcgaXQgYW5kIHdoeS4gSXMgaXQgcGFydCBvZiB0aGUgZGF0YSBwYXRoLCBjb250cm9sIHBsYW5lLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBzaXRlcyBpcyB0aGUga2V5IHRvIGZpZ3VyaW5nIG91dCBpdHMgZnVuY3Rpb24gYW5kIGl0cyByb2xlIGluIHRoZSBzeXN0ZW0uIEknbGwgc3RhcnQgYnkgbG9va2luZyBmb3IgZGlyZWN0IHVzYWdlcyBhbmQgdGhlbiB3b3JrIG15IHdheSB1cCB0aGUgY2FsbCBzdGFjayB0byBzZWUgd2hlcmUgaXQgZml0cyBpbnRvIHRoZSBicm9hZGVyIHBpY3R1cmUuIExldCdzIHNlZSB3aGF0IHRoZSBjb2RlIGhhcyB0byBzaG93IG1lLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODgwNiwiT3V0cHV0VG9rZW5zIjozOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA4OjQxOjQ5LjQ0MzYyMDQ2OVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NDkyNzI4MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJodHRfcnhfb3BzX2hsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguYz00NDgyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTBrX2h0dF9yeF9vcHMgaHR0X3J4X29wc182NCA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmMtNDQ4OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jOjQ0OTA6c3RhdGljIGNvbnN0IHN0cnVjdCBhdGgxMGtfaHR0X3J4X29wcyBodHRfcnhfb3BzX2hsID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmMtNDQ5MS1cXHQuaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmQgPSBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGwsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jPTQ0OTQ9dm9pZCBhdGgxMGtfaHR0X3NldF9yeF9vcHMoc3RydWN0IGF0aDEwa19odHQgKmh0dClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmMtNDQ5OC1cXHRpZiAoYXItXFx1MDAzZWJ1c19wYXJhbS5kZXZfdHlwZSA9PSBBVEgxMEtfREVWX1RZUEVfSEwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguYzo0NDk5OlxcdFxcdGh0dC1cXHUwMDNlcnhfb3BzID0gXFx1MDAyNmh0dF9yeF9vcHNfaGw7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguYy00NTAwLVxcdGVsc2UgaWYgKGFyLVxcdTAwM2Vod19wYXJhbXMudGFyZ2V0XzY0Yml0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwODo0MTo0OS41MDg1NTE4NjJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo0NDMxOTQ0OTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgQVRIMTBLIEhpZ2ggTGF0ZW5jeSBSWCBGcmFnbWVudCBJbmRpY2F0b3IqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayB0aGlzIGRvd24uIE15IGluaXRpYWwgaHVuY2ggaXMgdGhhdCBgYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsYCBpcyBzcGVjaWZpY2FsbHkgZW1wbG95ZWQgd2l0aGluIHRoZSBcIkhpZ2ggTGF0ZW5jeVwiIGRldmljZSBjb250ZXh0LCB3aGljaCwgZnJvbSBteSBleHBlcmllbmNlLCBlbmNvbXBhc3NlcyBVU0IgYW5kIFNESU8gaW1wbGVtZW50YXRpb25zLCBjaGFyYWN0ZXJpemVkIGJ5IHRob3NlIGhpZ2hlciBsYXRlbmNpZXMuIEdpdmVuIHRoYXQsIEkgd2FudCB0byB1bmRlcnN0YW5kIHRoZSBleGFjdCBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoaXMgZnVuY3Rpb24gaXMgaW52b2tlZC4gVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHRyYWNlIGNhbGxzIHRvIGBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGxgIGJ5IGV4YW1pbmluZyB0aGUgYGh0dC1cdTAwM2VyeF9vcHMtXHUwMDNlaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRgIHN0cnVjdHVyZS4gVGhpcyB3aWxsIHJldmVhbCB0aGUgY2FsbGluZyBjb250ZXh0IGFuZCBwb3RlbnRpYWxseSBlbHVjaWRhdGUgdGhlIHRyaWdnZXJzIHRoYXQgbGVhZCB0byBpdHMgZXhlY3V0aW9uIHdpdGhpbiB0aGUgYnJvYWRlciBgYXRoMTBrYCByZWNlaXZlIHBhdGgsIHBhcnRpY3VsYXJseSBmb3IgdGhvc2UgaGlnaGVyIGxhdGVuY3kgY29uZmlndXJhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5MzkzLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA4OjQxOjUzLjk0MDUwMTUzOFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjY3MjYwNDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEwa1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dC5oPTIwMTk9c3RydWN0IGF0aDEwa19odHRfcnhfb3BzIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0LmgtMjAyNS1cXHR2b2lkICgqaHR0X3Jlc2V0X3BhZGRyc19yaW5nKShzdHJ1Y3QgYXRoMTBrX2h0dCAqaHR0LCBpbnQgaWR4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dC5oOjIwMjY6XFx0Ym9vbCAoKmh0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kKShzdHJ1Y3QgYXRoMTBrX2h0dCAqaHR0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0LmgtMjAyNy1cXHRcXHRcXHRcXHRcXHRzdHJ1Y3QgaHR0X3J4X2ZyYWdtZW50X2luZGljYXRpb24gKnJ4LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHQuaD0yMDYyPXN0YXRpYyBpbmxpbmUgdm9pZCBhdGgxMGtfaHR0X3Jlc2V0X3BhZGRyc19yaW5nKHN0cnVjdCBhdGgxMGtfaHR0ICpodHQsIGludCBpZHgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dC5oLTIwNjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHQuaDoyMDY4OnN0YXRpYyBpbmxpbmUgYm9vbCBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmQoc3RydWN0IGF0aDEwa19odHQgKmh0dCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dC5oLTIwNjktXFx0XFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgaHR0X3J4X2ZyYWdtZW50X2luZGljYXRpb24gKnJ4LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHQuaC0yMDcxLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dC5oOjIwNzI6XFx0aWYgKCFodHQtXFx1MDAzZXJ4X29wcy1cXHUwMDNlaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHQuaC0yMDczLVxcdFxcdHJldHVybiB0cnVlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0LmgtMjA3NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dC5oOjIwNzU6XFx0cmV0dXJuIGh0dC1cXHUwMDNlcnhfb3BzLVxcdTAwM2VodHRfcnhfcHJvY19yeF9mcmFnX2luZChodHQsIHJ4LCBza2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0LmgtMjA3Ni19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jPTI3NDM9c3RhdGljIGludCBhdGgxMGtfaHR0X3J4X2ZyYWdfd2VwX2RlY2FwKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jLTI3NTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguYzoyNzU4OnN0YXRpYyBib29sIGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obChzdHJ1Y3QgYXRoMTBrX2h0dCAqaHR0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmMtMjc1OS1cXHRcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgaHR0X3J4X2ZyYWdtZW50X2luZGljYXRpb24gKnJ4LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguYz00MTA1PWJvb2wgYXRoMTBrX2h0dF90MmhfbXNnX2hhbmRsZXIoc3RydWN0IGF0aDEwayAqYXIsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jLTQyMjAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguYzo0MjIxOlxcdFxcdHJldHVybiBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmQoaHR0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmMtNDIyMi1cXHRcXHRcXHRcXHRcXHRcXHQgICAgICBcXHUwMDI2cmVzcC1cXHUwMDNlcnhfZnJhZ19pbmQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jPTQ0OTA9c3RhdGljIGNvbnN0IHN0cnVjdCBhdGgxMGtfaHR0X3J4X29wcyBodHRfcnhfb3BzX2hsID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmM6NDQ5MTpcXHQuaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmQgPSBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGwsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguYy00NDkyLX07XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA4OjQxOjU0LjAwNzIzMjc5M1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3NTQ0NTIwMjQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IERlZXAgRGl2ZSBpbnRvIGF0aDEwaydzIE1lc3NhZ2UgSGFuZGxpbmcgYW5kIERlYnVnZ2luZyoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGUgYXRoMTBrIGRyaXZlciBhZ2Fpbiwgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIGhvdyBpdCBtYW5hZ2VzIGNvbW11bmljYXRpb24gd2l0aCB0aGUgZmlybXdhcmUuICBJJ20gdHJhY2tpbmcgdGhlIHBhdGggb2YgbWVzc2FnZXMgKmZyb20qIHRoZSBkZXZpY2UsICp0byogdGhlIGhvc3QuICBNeSB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgYGF0aDEwa19odHRfdDJoX21zZ19oYW5kbGVyYCBpcyB0aGUgY3J1Y2lhbCBmdW5jdGlvbiBoZXJlLCBkZWFsaW5nIHdpdGggdGhlIHRhcmdldC10by1ob3N0IG1lc3NhZ2VzLiAgRXNzZW50aWFsbHksIGl0J3MgdGhlIGNlbnRyYWwgcG9pbnQgd2hlcmUgdGhlIGRyaXZlciBwcm9jZXNzZXMgZGF0YSBjb21pbmcgZnJvbSB0aGUgZmlybXdhcmUgb3ZlciB0aGUgVVNCLCBTRElPLCBvciBQQ0kgaW50ZXJmYWNlcyDigJMgdGhlIHByaW1hcnkgY29tbXVuaWNhdGlvbiBjaGFubmVscy5cblxuTm93LCB3aGVyZSBkbyB0aGVzZSBtZXNzYWdlcyAqY29tZSBmcm9tKj8gQWgsIHllcywgYGF0aDEwa191c2JfcnhfY29tcGxldGVgIGluIGB1c2IuY2AhIEl0J3MgdGhlIHJlY2VpdmVyIGZ1bmN0aW9uLiBUaGlzIGZ1bmN0aW9uIHJlY2VpdmVzIHRoZSBTS0JzIGZyb20gdGhlIFVTQiBlbmRwb2ludHMgYW5kIHRoZW4gaGFuZHMgdGhlbSBkaXJlY3RseSBvZmYgdG8gYGF0aDEwa19odHRfdDJoX21zZ19oYW5kbGVyYCBmb3IgcHJvY2Vzc2luZy4gVGhhdCdzIGEgY2xlYW4gaGFuZG92ZXIuXG5cbkkgYWxzbyB3YW50IHRvIGV4cGxvcmUgdGhlIGRlYnVnIGZhY2lsaXRpZXMuIGBkZWJ1Zy5jYCBzaG91bGQgaG9sZCB0aGUga2V5cyB0byB1bmRlcnN0YW5kaW5nIGFuZCBwb3RlbnRpYWxseSBtb2RpZnlpbmcgdGhlIGRyaXZlcidzIGludGVybmFscy4gTGV0J3MgZGlnIGluIGFuZCBzZWUuIFJpZ2h0IG5vdywgSSdtIHRoaW5raW5nIGFib3V0IHRob3NlIGRlYnVnZnMgZmlsZSBvcGVyYXRpb25zIC0gYGF0aDEwa19yZWdfdmFsdWVfd3JpdGVgIGFuZCBgYXRoMTBrX21lbV92YWx1ZV93cml0ZWAuIFRoZXNlIHNvdW5kIGxpa2UgY3JpdGljYWwgdG9vbHMgZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcgcmVnaXN0ZXIgYW5kIG1lbW9yeSB2YWx1ZXMgZGlyZWN0bHksIHdoaWNoIGFyZSBpbnZhbHVhYmxlIGZvciBkZWJ1Z2dpbmcgYW5kIGZpbmUtdHVuaW5nIHRoZSBkcml2ZXIncyBiZWhhdmlvci4gVGltZSB0byBvcGVuIGBkZWJ1Zy5jYCBhbmQgZ2V0IG15IGhhbmRzIGRpcnR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDc0NiwiT3V0cHV0VG9rZW5zIjo1MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwODo0MjowMS41NTE3NTc4MTRaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk1MjE4MTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDEwa19yZWdfdmFsdWVfd3JpdGV8YXRoMTBrX21lbV92YWx1ZV93cml0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYz02ODM9c3RhdGljIHNzaXplX3QgYXRoMTBrX3JlZ192YWx1ZV9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jLTcxMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmM6NzE0OnN0YXRpYyBzc2l6ZV90IGF0aDEwa19yZWdfdmFsdWVfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jLTcxNS1cXHRcXHRcXHRcXHQgICAgICBjb25zdCBjaGFyIF9fdXNlciAqdXNlcl9idWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmM9NzUzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfcmVnX3ZhbHVlID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy03NTQtXFx0LnJlYWQgPSBhdGgxMGtfcmVnX3ZhbHVlX3JlYWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jOjc1NTpcXHQud3JpdGUgPSBhdGgxMGtfcmVnX3ZhbHVlX3dyaXRlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy03NTYtXFx0Lm9wZW4gPSBzaW1wbGVfb3BlbixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYz03NjE9c3RhdGljIHNzaXplX3QgYXRoMTBrX21lbV92YWx1ZV9yZWFkKHN0cnVjdCBmaWxlICpmaWxlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jLTgxMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmM6ODEzOnN0YXRpYyBzc2l6ZV90IGF0aDEwa19tZW1fdmFsdWVfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jLTgxNC1cXHRcXHRcXHRcXHQgICAgICBjb25zdCBjaGFyIF9fdXNlciAqdXNlcl9idWYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmM9ODc3PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHNfbWVtX3ZhbHVlID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy04NzgtXFx0LnJlYWQgPSBhdGgxMGtfbWVtX3ZhbHVlX3JlYWQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jOjg3OTpcXHQud3JpdGUgPSBhdGgxMGtfbWVtX3ZhbHVlX3dyaXRlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy04ODAtXFx0Lm9wZW4gPSBzaW1wbGVfb3BlbixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDg6NDI6MDEuNjQ4ODE3MTc4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjc0NDI1NDQ0MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGVidWdnaW5nIHRoZSBhdGgxMGsgRHJpdmVyKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgYGF0aDEwa2AgaXNzdWUuIE15IGZpcnN0IGluc3RpbmN0LCBnaXZlbiB0aGUgbmF0dXJlIG9mIHRoZXNlIHByb2JsZW1zLCBpcyB0byBzdGFydCB3aXRoIHRoZSBkZWJ1ZyByZWdpc3RlcnMgYW5kIGNyZWF0aW9uIHByb2Nlc3Nlcy4gSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0J3MgZ29pbmcgb24gYXQgdGhlIGxvd2VzdCBsZXZlbC4gTGV0J3Mgc3RhcnQgYnkgc2NydXRpbml6aW5nIHRoZSBgYXRoMTBrX2RlYnVnX3JlZ2lzdGVyYCBmdW5jdGlvbiwgdG8gc2VlIGhvdyB0aGUgZGVidWcgbWVjaGFuaXNtcyBhcmUgc2V0IHVwIGluaXRpYWxseS4gSSdtIHdvbmRlcmluZyBpZiB0aGVyZSdzIGFuIGlzc3VlIHdpdGggdGhlIHJlZ2lzdHJhdGlvbiBwcm9jZXNzIGl0c2VsZiwgbWF5YmUgc29tZXRoaW5nIHJlbGF0ZWQgdG8gaG93IHRoZSBkZWJ1ZyBpbmZyYXN0cnVjdHVyZSBpcyBleHBvc2VkIHRvIHRoZSB1c2VyIHNwYWNlIG9yIGhvdyB0aGUgcmVnaXN0ZXJzIGFyZSBnZXR0aW5nIGluaXRpYWxpemVkLiBBbHRlcm5hdGl2ZWx5LCB0aGUgYGF0aDEwa19kZWJ1Z19jcmVhdGVgIGZ1bmN0aW9uIG1pZ2h0IGJlIG1vcmUgcmVsZXZhbnQuIFBlcmhhcHMgc29tZXRoaW5nIGlzbid0IGJlaW5nIHByb3Blcmx5IGluaXRpYWxpemVkLCBvciBtYXliZSB0aGVyZSBpcyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBjcmVhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBhIHJlbGF0ZWQgb2JqZWN0LiBGcm9tIHRoaXMsIEkgd2lsbCBtb3ZlIHRvIGZ1cnRoZXIgYWN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjE4NjEsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwODo0MjowOS4wOTEzNjQzODlaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNjAyOTE0MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmb3BzX3JlZ192YWx1ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYz03MTQ9c3RhdGljIHNzaXplX3QgYXRoMTBrX3JlZ192YWx1ZV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy03NTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jOjc1MzpzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmb3BzX3JlZ192YWx1ZSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmMtNzU0LVxcdC5yZWFkID0gYXRoMTBrX3JlZ192YWx1ZV9yZWFkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jPTI1NDQ9aW50IGF0aDEwa19kZWJ1Z19yZWdpc3RlcihzdHJ1Y3QgYXRoMTBrICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy0yNTc2LVxcdGRlYnVnZnNfY3JlYXRlX2ZpbGUoXFxcInJlZ192YWx1ZVxcXCIsIDA2MDAsIGFyLVxcdTAwM2VkZWJ1Zy5kZWJ1Z2ZzX3BoeSwgYXIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jOjI1Nzc6XFx0XFx0XFx0ICAgIFxcdTAwMjZmb3BzX3JlZ192YWx1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jLTI1NzgtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA4OjQyOjA5LjE5NzM5NzQ0MloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjoyODkwMjg3Njg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipLY29uZmlnLCBhdGgxMGssIERlYnVnZnMsIGFuZCBVU0Ig4oCTIFRpbWUgdG8gQ29ubmVjdCB0aGUgRG90cyoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW4uIEknbSB0aGlua2luZyBhYm91dCBob3cgdGhlIGNvbmZpZ3VyYXRpb24gbGFuZHNjYXBlIGludGVyc2VjdHMgd2l0aCB0aGUgcGllY2VzIEknbSB3b3JraW5nIHdpdGggcmlnaHQgbm93LiBGaXJzdCBhbmQgZm9yZW1vc3QsIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGNvcmUgYXRoMTBrIHN1cHBvcnQgaXMgcHJvcGVybHkgZW5hYmxlZCBpbiBLY29uZmlnLiBUaGlzIGlzIHRoZSBmb3VuZGF0aW9uOyB3aXRob3V0IHRoYXQsIG5vdGhpbmcgZWxzZSBtYXR0ZXJzLiBJIG5lZWQgdG8gc3BlY2lmaWNhbGx5IGxvb2sgZm9yIHRoZSBhdGgxMGsgb3B0aW9ucywgYnV0IEkgYWxzbyBuZWVkIHRvIGJlIGNlcnRhaW4gYWJvdXQgdGhlIGRlcGVuZGVuY2llcyB0b28gLSB3aGljaCBJIHVzdWFsbHkgY2hlY2sgYXMgYSBtYXR0ZXIgb2YgaGFiaXQuXG5cblRoZW4sIEknbSB0aGlua2luZyBhYm91dCBkZWJ1Z2ZzLiBJcyBpdCBwcm9wZXJseSBjb25maWd1cmVkIGZvciBteSB0YXJnZXQ/IElzIGl0IGVuYWJsZWQ/IEknbGwgcHJvYmFibHkgbmVlZCBpdCB0byBwcm9iZSB0aGUgZmlybXdhcmUgbG9hZGluZywgZGV2aWNlIHN0YXRlLCBhbmQgb3ZlcmFsbCBvcGVyYXRpb24uIEknbSBhc3N1bWluZyB0aGF0IGl0IGlzIGVuYWJsZWQsIGJ1dCBJIHNob3VsZCB2ZXJpZnkgdGhhdC4gSSd2ZSBiZWVuIGJ1cm5lZCBieSBhc3N1bWluZyBiZWZvcmUhXG5cbkZpbmFsbHksIHRoZSBVU0IgY29ubmVjdGlvbiBpcyBpbiB0aGUgcGljdHVyZS4gVGhpcyBpcyBsaWtlbHkgaG93IEknbSBpbnRlcmFjdGluZyB3aXRoIHRoZSBoYXJkd2FyZS4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gZW5zdXJlIHRoZSBVU0IgaG9zdCBhbmQgZGV2aWNlIGRyaXZlcnMgYXJlIGNvcnJlY3RseSBzZXQgdXAgYW5kIGNvbmZpZ3VyZWQuIFRoaXMgZW5jb21wYXNzZXMgdGhlIHdob2xlIFVTQiBzdGFjayB0b28sIGluY2x1ZGluZyB0aGUgVVNCIHN1YnN5c3RlbS4gSXQncyBvZnRlbiB0aGUgYm90dGxlbmVjaywgc28gSSBuZWVkIHRvIGFudGljaXBhdGUgdGhvc2UgcG90ZW50aWFsIHByb2JsZW1zLiBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBzeXN0ZW0gcmVjb2duaXplcyB0aGUgaGFyZHdhcmUuIEl0J3MgdGltZSB0byBjb3JyZWxhdGUgdGhlc2UgaXRlbXMgdG8gZ2V0IHRoZSB3aG9sZSBzeXN0ZW0gd29ya2luZy5cblxuRXNzZW50aWFsbHksIEknbSBtZW50YWxseSBsYXlpbmcgb3V0IHRoZSBzdGVwcyBhbmQgY29uZmlybWluZyBteSBhc3N1bXB0aW9ucyB0byBhdm9pZCBhbnkgd2FzdGVkIHRpbWUgbGF0ZXIuIEEgcXVpY2sgS2NvbmZpZyBjaGVjayBpcyBhbHdheXMgYSBzbWFydCBzdGFydGluZyBwb2ludC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjI0MzcsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwODo0MjoxMi4wODc2ODc2MloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTc3NjMyMTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEFUSDEwS1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzoyOmNvbmZpZyBBVEgxMEtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiQXRoZXJvcyA4MDIuMTFhYyB3aXJlbGVzcyBjYXJkcyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTE0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzoxNTpjb25maWcgQVRIMTBLX0NFXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTE2LVxcdGJvb2xcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctMTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnOjE4OmNvbmZpZyBBVEgxMEtfUENJXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTE5LVxcdHRyaXN0YXRlIFxcXCJBdGhlcm9zIGF0aDEwayBQQ0kgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy0yMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWc6MjQ6Y29uZmlnIEFUSDEwS19BSEJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctMjUtXFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGgxMGsgQUhCIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctMjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnOjMwOmNvbmZpZyBBVEgxMEtfU0RJT1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy0zMS1cXHR0cmlzdGF0ZSBcXFwiQXRoZXJvcyBhdGgxMGsgU0RJTyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTM1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzozNjpjb25maWcgQVRIMTBLX1VTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy0zNy1cXHR0cmlzdGF0ZSBcXFwiQXRoZXJvcyBhdGgxMGsgVVNCIHN1cHBvcnQgKEVYUEVSSU1FTlRBTClcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctNDItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnOjQzOmNvbmZpZyBBVEgxMEtfU05PQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy00NC1cXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gYXRoMTBrIFNOT0Mgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy01NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWc6NTY6Y29uZmlnIEFUSDEwS19ERUJVR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy01Ny1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDEwayBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctNjMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnOjY0OmNvbmZpZyBBVEgxMEtfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy02NS1cXHRib29sIFxcXCJBdGhlcm9zIGF0aDEwayBkZWJ1Z2ZzIHN1cHBvcnRcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctNzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnOjcyOmNvbmZpZyBBVEgxMEtfTEVEU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZy03My1cXHRib29sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctNzctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnOjc4OmNvbmZpZyBBVEgxMEtfU1BFQ1RSQUxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctNzktXFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGgxMGsgc3BlY3RyYWwgc2NhbiBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTg1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzo4Njpjb25maWcgQVRIMTBLX1RSQUNJTkdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctODctXFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGgxMGsgdHJhY2luZyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9LY29uZmlnLTkyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvS2NvbmZpZzo5Mzpjb25maWcgQVRIMTBLX0RGU19DRVJUSUZJRURcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWctOTQtXFx0Ym9vbCBcXFwiQXRoZXJvcyBERlMgc3VwcG9ydCBmb3IgY2VydGlmaWVkIHBsYXRmb3Jtc1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDg6NDI6MTIuMTg1NDU1MDk1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjc1NTMyMTA5MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUgd2UgZ28uIExldCdzIGRpdmUgaW4gYW5kIGRpc3NlY3QgdGhpcyBLY29uZmlnIGZpbGUgZm9yIEFUSDEwS19VU0IgYW5kIEFUSDEwS19ERUJVR0ZTIHdpdGhpbiB0aGUgYXRoMTBrIGRyaXZlci5cbioqRXhhbWluaW5nIHRoZSBBVEgxMEsgS2NvbmZpZyBPcHRpb25zKipcblxuQWxyaWdodCwgdGltZSB0byBnZXQgaW50byB0aGUgbml0dHktZ3JpdHR5LiBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgZ29pbmcgb3ZlciB0aGUgZnVsbCBLY29uZmlnIGZpbGUgZm9yIEFUSDEwS19VU0IgYW5kIEFUSDEwS19ERUJVR0ZTLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aGVzZSBvcHRpb25zIGFyZSBzdHJ1Y3R1cmVkLCB3aGF0IGRlcGVuZGVuY2llcyB0aGV5IGhhdmUsIGFuZCBob3cgdGhleSByZWxhdGUgdG8gdGhlIGJyb2FkZXIgQVRIMTBLIGZyYW1ld29yay4gSSdsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZTpcblxuKiAgICoqRGVwZW5kZW5jaWVzOioqIFdoYXQgb3RoZXIgS2NvbmZpZyBzeW1ib2xzIG5lZWQgdG8gYmUgZW5hYmxlZCBmb3IgdGhlc2UgdG8gZXZlbiBzaG93IHVwPyBBcmUgdGhleSBkZXBlbmRlbnQgb24gc3BlY2lmaWMgVVNCIGRyaXZlciBjb25maWd1cmF0aW9ucyBvciBkZWJ1Z2dpbmcgb3B0aW9ucz9cbiogICAqKkRlZmF1bHQgVmFsdWVzOioqIFdoYXQncyB0aGUgZGVmYXVsdCBiZWhhdmlvcj8gQXJlIHRoZXkgZW5hYmxlZCBieSBkZWZhdWx0LCBvciBkaXNhYmxlZD8gVW5kZXJzdGFuZGluZyB0aGUgZGVmYXVsdHMgdGVsbHMgbWUgd2hhdCB0aGUgZGV2ZWxvcGVycyBwcmlvcml0aXplZC5cbiogICAqKkhlbHAgVGV4dDoqKiBUaGUgaGVscCB0ZXh0IGlzLCBvZiBjb3Vyc2UsIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgaW50ZW50IG9mIHRoZSBvcHRpb25zLiBJJ2xsIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGRlc2NyaXB0aW9ucyB0byBzZWUgd2hhdCBmZWF0dXJlcyBvciBkZWJ1Z2dpbmcgY2FwYWJpbGl0aWVzIHRoZXNlIEtjb25maWcgc3ltYm9scyBhY3R1YWxseSBhY3RpdmF0ZS5cbiogICAqKkNvbmRpdGlvbmFsIExvZ2ljOioqIEFyZSB0aGVyZSBhbnkgY29tcGxleCBgaWZgIHN0YXRlbWVudHMgb3IgYm9vbGVhbiBsb2dpYyB0aGF0IGdvdmVybnMgd2hlbiB0aGVzZSBvcHRpb25zIGFyZSBhdmFpbGFibGU/IFRoaXMgd2lsbCBzaG93IGhvdyBjb25maWd1cmFibGUgdGhlIGRyaXZlcnMgYXJlLlxuKiAgICoqSW1wbGljYXRpb25zOioqIFdoYXQgYXJlIHRoZSB0cmFkZS1vZmZzIG9mIGVuYWJsaW5nIG9yIGRpc2FibGluZyB0aGVzZSBvcHRpb25zPyBBcmUgdGhlcmUgYW55IHBvdGVudGlhbCBpbXBhY3RzIG9uIGtlcm5lbCBzaXplLCByZXNvdXJjZSB1c2FnZSwgb3IgcGVyZm9ybWFuY2UgdGhhdCBJIHNob3VsZCBiZSBhd2FyZSBvZj9cblxuTXkgZ29hbCBpcyB0byB0aG9yb3VnaGx5IGFuYWx5emUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIEFUSDEwSyBVU0IgZHJpdmVyLiBJdCB3aWxsIGdpdmUgbWUgYSBkZWVwIGluc2lnaHQgaW50byBob3cgdGhlIGRyaXZlcnMgYXJlIGJ1aWx0IGFuZCB3aGF0IGZlYXR1cmVzIGFyZSBhdmFpbGFibGUgZm9yIHRoZXNlIGRldmljZXMsIGFuZCBob3cgdG8gY29uZmlndXJlIHRoZW0gZm9yIGRpZmZlcmVudCB1c2UgY2FzZXMuIEl0J3MgYSBmdW5kYW1lbnRhbCBwYXJ0IG9mIHJlYWxseSB1bmRlcnN0YW5kaW5nIGhvdyB0byB3b3JrIHdpdGggdGhpcyBkcml2ZXIgYW5kIG1ha2UgdGhlIG1vc3Qgb2YgaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzOTEwLCJPdXRwdXRUb2tlbnMiOjQxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDg6NDI6MTkuNzM4NjcwMzA0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMjY3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBJU0NcXG4gICAyOlxcdGNvbmZpZyBBVEgxMEtcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJBdGhlcm9zIDgwMi4xMWFjIHdpcmVsZXNzIGNhcmRzIHN1cHBvcnRcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExIFxcdTAwMjZcXHUwMDI2IEhBU19ETUFcXG4gICA1OlxcdFxcdHNlbGVjdCBBVEhfQ09NTU9OXFxuICAgNjpcXHRcXHRzZWxlY3QgQ1JDMzJcXG4gICA3OlxcdFxcdHNlbGVjdCBXQU5UX0RFVl9DT1JFRFVNUFxcbiAgIDg6XFx0XFx0c2VsZWN0IEFUSDEwS19DRVxcbiAgIDk6XFx0XFx0aGVscFxcbiAgMTA6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIHdpcmVsZXNzIGFkYXB0ZXJzIGJhc2VkIG9uXFxuICAxMTpcXHRcXHQgIEF0aGVyb3MgSUVFRSA4MDIuMTFhYyBmYW1pbHkgb2YgY2hpcHNldHMuXFxuICAxMjpcXHRcXG4gIDEzOlxcdFxcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQnbGwgYmUgY2FsbGVkIGF0aDEway5cXG4gIDE0OlxcdFxcbiAgMTU6XFx0Y29uZmlnIEFUSDEwS19DRVxcbiAgMTY6XFx0XFx0Ym9vbFxcbiAgMTc6XFx0XFxuICAxODpcXHRjb25maWcgQVRIMTBLX1BDSVxcbiAgMTk6XFx0XFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgYXRoMTBrIFBDSSBzdXBwb3J0XFxcIlxcbiAgMjA6XFx0XFx0ZGVwZW5kcyBvbiBBVEgxMEsgXFx1MDAyNlxcdTAwMjYgUENJXFxuICAyMTpcXHRcXHRoZWxwXFxuICAyMjpcXHRcXHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3IgUENJRSBidXNcXG4gIDIzOlxcdFxcbiAgMjQ6XFx0Y29uZmlnIEFUSDEwS19BSEJcXG4gIDI1OlxcdFxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoMTBrIEFIQiBzdXBwb3J0XFxcIlxcbiAgMjY6XFx0XFx0ZGVwZW5kcyBvbiBBVEgxMEtfUENJIFxcdTAwMjZcXHUwMDI2IE9GIFxcdTAwMjZcXHUwMDI2IFJFU0VUX0NPTlRST0xMRVJcXG4gIDI3OlxcdFxcdGhlbHBcXG4gIDI4OlxcdFxcdCAgVGhpcyBtb2R1bGUgYWRkcyBzdXBwb3J0IGZvciBBSEIgYnVzXFxuICAyOTpcXHRcXG4gIDMwOlxcdGNvbmZpZyBBVEgxMEtfU0RJT1xcbiAgMzE6XFx0XFx0dHJpc3RhdGUgXFxcIkF0aGVyb3MgYXRoMTBrIFNESU8gc3VwcG9ydFxcXCJcXG4gIDMyOlxcdFxcdGRlcGVuZHMgb24gQVRIMTBLIFxcdTAwMjZcXHUwMDI2IE1NQ1xcbiAgMzM6XFx0XFx0aGVscFxcbiAgMzQ6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIFNESU8vTU1DIGJ1cy5cXG4gIDM1OlxcdFxcbiAgMzY6XFx0Y29uZmlnIEFUSDEwS19VU0JcXG4gIDM3OlxcdFxcdHRyaXN0YXRlIFxcXCJBdGhlcm9zIGF0aDEwayBVU0Igc3VwcG9ydCAoRVhQRVJJTUVOVEFMKVxcXCJcXG4gIDM4OlxcdFxcdGRlcGVuZHMgb24gQVRIMTBLIFxcdTAwMjZcXHUwMDI2IFVTQlxcbiAgMzk6XFx0XFx0aGVscFxcbiAgNDA6XFx0XFx0ICBUaGlzIG1vZHVsZSBhZGRzIGV4cGVyaW1lbnRhbCBzdXBwb3J0IGZvciBVU0IgYnVzLiBDdXJyZW50bHlcXG4gIDQxOlxcdFxcdCAgd29yayBpbiBwcm9ncmVzcyBhbmQgd2lsbCBub3QgZnVsbHkgd29yay5cXG4gIDQyOlxcdFxcbiAgNDM6XFx0Y29uZmlnIEFUSDEwS19TTk9DXFxuICA0NDpcXHRcXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gYXRoMTBrIFNOT0Mgc3VwcG9ydFxcXCJcXG4gIDQ1OlxcdFxcdGRlcGVuZHMgb24gQVRIMTBLXFxuICA0NjpcXHRcXHRkZXBlbmRzIG9uIEFSQ0hfUUNPTSB8fCBDT01QSUxFX1RFU1RcXG4gIDQ3OlxcdFxcdGRlcGVuZHMgb24gUUNPTV9TTUVNXFxuICA0ODpcXHRcXHRkZXBlbmRzIG9uIFFDT01fUlBST0NfQ09NTU9OIHx8IFFDT01fUlBST0NfQ09NTU9OPW5cXG4gIDQ5OlxcdFxcdHNlbGVjdCBQT1dFUl9TRVFVRU5DSU5HXFxuICA1MDpcXHRcXHRzZWxlY3QgUUNPTV9TQ01cXG4gIDUxOlxcdFxcdHNlbGVjdCBRQ09NX1FNSV9IRUxQRVJTXFxuICA1MjpcXHRcXHRoZWxwXFxuICA1MzpcXHRcXHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3IgaW50ZWdyYXRlZCBXQ04zOTkwIGNoaXAgY29ubmVjdGVkXFxuICA1NDpcXHRcXHQgIHRvIHN5c3RlbSBOT0MoU05PQykuXFxuICA1NTpcXHRcXG4gIDU2OlxcdGNvbmZpZyBBVEgxMEtfREVCVUdcXG4gIDU3OlxcdFxcdGJvb2wgXFxcIkF0aGVyb3MgYXRoMTBrIGRlYnVnZ2luZ1xcXCJcXG4gIDU4OlxcdFxcdGRlcGVuZHMgb24gQVRIMTBLXFxuICA1OTpcXHRcXHRoZWxwXFxuICA2MDpcXHRcXHQgIEVuYWJsZXMgZGVidWcgc3VwcG9ydFxcbiAgNjE6XFx0XFxuICA2MjpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IFkgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZGVidWcgcHJvYmxlbXMuXFxuICA2MzpcXHRcXG4gIDY0OlxcdGNvbmZpZyBBVEgxMEtfREVCVUdGU1xcbiAgNjU6XFx0XFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGgxMGsgZGVidWdmcyBzdXBwb3J0XFxcIlxcbiAgNjY6XFx0XFx0ZGVwZW5kcyBvbiBBVEgxMEsgXFx1MDAyNlxcdTAwMjYgREVCVUdfRlNcXG4gIDY3OlxcdFxcdGhlbHBcXG4gIDY4OlxcdFxcdCAgRW5hYmxlZCBkZWJ1Z2ZzIHN1cHBvcnRcXG4gIDY5OlxcdFxcbiAgNzA6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBZIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGRlYnVnIHByb2JsZW1zLlxcbiAgNzE6XFx0XFxuICA3MjpcXHRjb25maWcgQVRIMTBLX0xFRFNcXG4gIDczOlxcdFxcdGJvb2xcXG4gIDc0OlxcdFxcdGRlcGVuZHMgb24gQVRIMTBLXFxuICA3NTpcXHRcXHRkZXBlbmRzIG9uIExFRFNfQ0xBU1M9eSB8fCBMRURTX0NMQVNTPU1BQzgwMjExXFxuICA3NjpcXHRcXHRkZWZhdWx0IHlcXG4gIDc3OlxcdFxcbiAgNzg6XFx0Y29uZmlnIEFUSDEwS19TUEVDVFJBTFxcbiAgNzk6XFx0XFx0Ym9vbCBcXFwiQXRoZXJvcyBhdGgxMGsgc3BlY3RyYWwgc2NhbiBzdXBwb3J0XFxcIlxcbiAgODA6XFx0XFx0ZGVwZW5kcyBvbiBBVEgxMEtfREVCVUdGU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwODo0MjoxOS43Mzg4MDUyMzRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTgyNDMyNzgxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIEJ1aWxkIFByb2Nlc3MqKlxuXG5Pa2F5LCB0aW1lIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0J3MgYWN0dWFsbHkgaGFwcGVuaW5nIGR1cmluZyB0aGUgYnVpbGQuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gZGl2ZSBzdHJhaWdodCBpbnRvIHRoZSBgTWFrZWZpbGVgLiBUaGF0J3Mgd2hlcmUgYWxsIHRoZSBvcmNoZXN0cmF0aW9uIGhhcHBlbnMsIHJpZ2h0PyBJdCdzIHRoZSBjZW50cmFsIGh1YiBmb3IgZGVmaW5pbmcgZGVwZW5kZW5jaWVzIGFuZCBjb21tYW5kcy4gSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgd2hpY2ggZmlsZXMgYXJlIGJlaW5nIGNvbXBpbGVkLCBsaW5rZWQsIG9yIG90aGVyd2lzZSBwcm9jZXNzZWQuIFVuZGVyc3RhbmRpbmcgdGhpcyB3aWxsIGdpdmUgbWUgYSBzb2xpZCBwaWN0dXJlIG9mIHRoZSBlbnRpcmUgYnVpbGQgcHJvY2Vzcy4gSSdtIGdvaW5nIHRvIGxvb2sgZm9yIHRoZSBrZXkgdGFyZ2V0cyBhbmQgdGhlaXIgYXNzb2NpYXRlZCBydWxlcyB0byB0cmFjZSB0aGUgZmxvdy4gVGhpcyBpcyBmdW5kYW1lbnRhbCBmb3IgZGlhZ25vc2luZyBhbnkgcG90ZW50aWFsIGJ1aWxkIGlzc3VlcyBvciBpbmVmZmljaWVuY2llcywgYW5kIHRvIGltcHJvdmUgbXkgb3ZlcmFsbCB1bmRlcnN0YW5kaW5nIG9mIHRoZSBidWlsZCBzZXR1cC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU0NDcsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA4OjQyOjIxLjU2MzEzNzE2N1oiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMDQ0MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9NYWtlZmlsZVwiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IElTQ1xcbiAgIDI6XFx0b2JqLSQoQ09ORklHX0FUSDEwSykgKz0gYXRoMTBrX2NvcmUub1xcbiAgIDM6XFx0YXRoMTBrX2NvcmUteSArPSBtYWMubyBcXFxcXFxuICAgNDpcXHRcXHRcXHQgZGVidWcubyBcXFxcXFxuICAgNTpcXHRcXHRcXHQgY29yZS5vIFxcXFxcXG4gICA2OlxcdFxcdFxcdCBodGMubyBcXFxcXFxuICAgNzpcXHRcXHRcXHQgaHR0Lm8gXFxcXFxcbiAgIDg6XFx0XFx0XFx0IGh0dF9yeC5vIFxcXFxcXG4gICA5OlxcdFxcdFxcdCBodHRfdHgubyBcXFxcXFxuICAxMDpcXHRcXHRcXHQgdHhyeC5vIFxcXFxcXG4gIDExOlxcdFxcdFxcdCB3bWkubyBcXFxcXFxuICAxMjpcXHRcXHRcXHQgd21pLXRsdi5vIFxcXFxcXG4gIDEzOlxcdFxcdFxcdCBibWkubyBcXFxcXFxuICAxNDpcXHRcXHRcXHQgaHcubyBcXFxcXFxuICAxNTpcXHRcXHRcXHQgcDJwLm8gXFxcXFxcbiAgMTY6XFx0XFx0XFx0IHN3YXAub1xcbiAgMTc6XFx0XFxuICAxODpcXHRhdGgxMGtfY29yZS0kKENPTkZJR19BVEgxMEtfU1BFQ1RSQUwpICs9IHNwZWN0cmFsLm9cXG4gIDE5OlxcdGF0aDEwa19jb3JlLSQoQ09ORklHX05MODAyMTFfVEVTVE1PREUpICs9IHRlc3Rtb2RlLm9cXG4gIDIwOlxcdGF0aDEwa19jb3JlLSQoQ09ORklHX0FUSDEwS19UUkFDSU5HKSArPSB0cmFjZS5vXFxuICAyMTpcXHRhdGgxMGtfY29yZS0kKENPTkZJR19USEVSTUFMKSArPSB0aGVybWFsLm9cXG4gIDIyOlxcdGF0aDEwa19jb3JlLSQoQ09ORklHX0FUSDEwS19MRURTKSArPSBsZWRzLm9cXG4gIDIzOlxcdGF0aDEwa19jb3JlLSQoQ09ORklHX01BQzgwMjExX0RFQlVHRlMpICs9IGRlYnVnZnNfc3RhLm9cXG4gIDI0OlxcdGF0aDEwa19jb3JlLSQoQ09ORklHX1BNKSArPSB3b3cub1xcbiAgMjU6XFx0YXRoMTBrX2NvcmUtJChDT05GSUdfREVWX0NPUkVEVU1QKSArPSBjb3JlZHVtcC5vXFxuICAyNjpcXHRhdGgxMGtfY29yZS0kKENPTkZJR19BVEgxMEtfQ0UpICs9IGNlLm9cXG4gIDI3OlxcdFxcbiAgMjg6XFx0b2JqLSQoQ09ORklHX0FUSDEwS19QQ0kpICs9IGF0aDEwa19wY2kub1xcbiAgMjk6XFx0YXRoMTBrX3BjaS15ICs9IHBjaS5vXFxuICAzMDpcXHRcXG4gIDMxOlxcdGF0aDEwa19wY2ktJChDT05GSUdfQVRIMTBLX0FIQikgKz0gYWhiLm9cXG4gIDMyOlxcdFxcbiAgMzM6XFx0b2JqLSQoQ09ORklHX0FUSDEwS19TRElPKSArPSBhdGgxMGtfc2Rpby5vXFxuICAzNDpcXHRhdGgxMGtfc2Rpby15ICs9IHNkaW8ub1xcbiAgMzU6XFx0XFxuICAzNjpcXHRvYmotJChDT05GSUdfQVRIMTBLX1VTQikgKz0gYXRoMTBrX3VzYi5vXFxuICAzNzpcXHRhdGgxMGtfdXNiLXkgKz0gdXNiLm9cXG4gIDM4OlxcdFxcbiAgMzk6XFx0b2JqLSQoQ09ORklHX0FUSDEwS19TTk9DKSArPSBhdGgxMGtfc25vYy5vXFxuICA0MDpcXHRhdGgxMGtfc25vYy15ICs9IHFtaS5vIFxcXFxcXG4gIDQxOlxcdFxcdFxcdCBxbWlfd2xmd192MDEubyBcXFxcXFxuICA0MjpcXHRcXHRcXHQgc25vYy5vXFxuICA0MzpcXHRcXG4gIDQ0OlxcdCMgZm9yIHRyYWNpbmcgZnJhbWV3b3JrIHRvIGZpbmQgdHJhY2UuaFxcbiAgNDU6XFx0Q0ZMQUdTX3RyYWNlLm8gOj0gLUkkKHNyYylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDg6NDI6MjEuNTYzMjQ0MDA3WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy43LWZsYXNoIiwiRHVyYXRpb24iOjc4ODE0MDY5MDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHlzaXMgb2YgVnVsbmVyYWJpbGl0eSBTdXJmYWNlIGFuZCBGdXp6aW5nIFN0cmF0ZWd5IGZvciBhdGgxMGsgRHJpdmVyKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyByZXZvbHZlcyBhcm91bmQgYXNzZXNzaW5nIHRoZSBwb3RlbnRpYWwgZm9yIGZ1enppbmcgdGhlIGBhdGgxMGtgIGRyaXZlci4gSSd2ZSBwaW5wb2ludGVkIHRocmVlIGtleSBhcmVhcyB3aXRoaW4gdGhlIGRyaXZlcidzIGNvZGUgdGhhdCBub3cgaGF2ZSBhZGRlZCBkZWZlbnNpdmUgY2hlY2tzIOKAkyBuYW1lbHksIGBkZWJ1Zy5jYCAoc3BlY2lmaWNhbGx5IGBhdGgxMGtfcmVnX3ZhbHVlX3dyaXRlYCBhbmQgYGF0aDEwa19tZW1fdmFsdWVfd3JpdGVgKSBhbmQgYGh0dF9yeC5jYCAoYGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obGApLiBUaGVzZSBhcmUgaW50ZXJlc3RpbmcgYmVjYXVzZSB0aGUgYWRkZWQgaW5wdXQgdmFsaWRhdGlvbiBzdWdnZXN0cyBhIHZ1bG5lcmFiaWxpdHkgbWF5IGhhdmUgYmVlbiBwcmVzZW50LCB3aGljaCBtYWtlcyB0aGVtIHByaW1lIHRhcmdldHMuXG5cbkZpcnN0LCBJIG9ic2VydmUgdGhhdCBTeXprYWxsZXIgaXMgcmVsZXZhbnQuIEl0IGVtdWxhdGVzIFVTQiBkZXZpY2VzLCB3aGljaCBhcmUgYSB2aWFibGUgYXR0YWNrIHN1cmZhY2UgZm9yIHdpcmVsZXNzIGRvbmdsZXMuIEl0J3MgZnV6emluZyBVU0IgZHJpdmVycywgd2hpY2ggaXMgd2hhdCBgYXRoMTBrX3VzYmAgaXMuIFRoZSBjcml0aWNhbCBwaWVjZSBoZXJlIGlzIHRoZSBVU0IgSUQgdGFibGU6IHRoZSBkZXZpY2UgSUQgYDB4MTNiMToweDAwNDJgIGlzIGEgbWF0Y2gsIG1lYW5pbmcgSSBjYW4gcG90ZW50aWFsbHkgdHJpZ2dlciB0aGUgZHJpdmVyIGFuZCB0aGUgdnVsbmVyYWJpbGl0eS5cblxuVGhlIGluY2x1c2lvbiBvZiB0aGVzZSBkZWZlbnNpdmUgY2hlY2tzIG1ha2VzIG1lIHRoaW5rIHRoYXQgdGhlc2UgY29kZSBwYXRocywgYW5kIHRoZXJlZm9yZSB0aGVzZSBmdW5jdGlvbnMsIGFyZSBXb3J0aEZ1enppbmcuIFRoZSBjaGFuZ2VzIGFyZSBzcGVjaWZpY2FsbHkgYWJvdXQgYWRkZWQgaW5wdXQgdmFsaWRhdGlvbiwgd2hpY2ggZml0cyB0aGUgZ2VuZXJhbCBXb3J0aEZ1enppbmcgY3JpdGVyaWEuXG5cbk5vdywgbGV0J3MgaWRlbnRpZnkgdGhlIHNwZWNpZmljIHN5bWJvbHMgdG8gdGFyZ2V0LiBUaGUgdGhyZWUga2V5IHN5bWJvbHMgYXJlIGBhdGgxMGtfcmVnX3ZhbHVlX3dyaXRlYCwgYGF0aDEwa19tZW1fdmFsdWVfd3JpdGVgLCBhbmQgYGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obGAuIEZ1cnRoZXJtb3JlLCBJJ3ZlIGlkZW50aWZpZWQgdGhhdCBgYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsYCBpcyBjYWxsZWQgYnkgYGF0aDEwa19odHRfdDJoX21zZ19oYW5kbGVyYC5cblxuQ3J1Y2lhbGx5LCBJIG5lZWQgdG8ga25vdyBpZiB0aGVzZSBmdW5jdGlvbnMgYXJlIGlubGluZS1hYmxlLiBJIGNhbiBzZWUgdGhhdCBgYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsYCBjYW5ub3QgYmUgaW5saW5lZCwgYXMgaXRzIHBvaW50ZXIgaXMgc3RvcmVkLiBMaWtld2lzZSwgYGF0aDEwa19yZWdfdmFsdWVfd3JpdGVgIGFuZCBgYXRoMTBrX21lbV92YWx1ZV93cml0ZWAsIGR1ZSB0byB0aGVpciBwb2ludGVyIGFzc2lnbm1lbnRzLCBhcmUgYWxzbyBsaWtlbHkgdG8gYmUgcHJlc2VudCBpbiB0aGUgc3ltYm9sIHRhYmxlLCBzaW5jZSB0aGV5IGNhbid0IGJlIGlubGluZWQgZWl0aGVyLiBUaGlzIGlzIGNydWNpYWwgZm9yIFN5emthbGxlciB0byByZWFjaCB0aGVtLlxuXG5GaW5hbGx5LCBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIHJlcXVpcmVkIGtlcm5lbCBtb2R1bGVzLCBwYXJ0aWN1bGFybHkgYEFUSDEwS2AsIGBBVEgxMEtfVVNCYCBhbmQgcHJvYmFibHkgYEFUSDEwS19ERUJVR0ZTYCwgYXJlIGVuYWJsZWQuIFRoZSBkZWJ1Z2ZzIGVudHJpZXMgcmVxdWlyZSB0aGUgZGVidWdmcyBjb25maWcgc2V0dGluZywgc28gSSBuZWVkIHRvIHZlcmlmeSB0aGF0LlxuXG5JbiBzdW1tYXJ5LCBteSBzdHJhdGVneSBpcyB0byBsZXZlcmFnZSBTeXprYWxsZXIncyBVU0IgZW11bGF0aW9uIGNhcGFiaWxpdGllcyB0byByZWFjaCBgYXRoMTBrX3JlZ192YWx1ZV93cml0ZWAsIGBhdGgxMGtfbWVtX3ZhbHVlX3dyaXRlYCwgYW5kIGBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGxgIHRocm91Z2ggdmFsaWQgZGV2aWNlIGVtdWxhdGlvbi4gSSBleHBlY3QgdGhlc2UgZW50cnkgcG9pbnRzIHRvIGJlIHJlYWRpbHkgYWNjZXNzaWJsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY0MTAsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTI3LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDg6NDI6MjkuNDQ0NjUzOTQ1WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDk1NzUxMzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQ09ORklHX0FUSDEwS19ERUJVR0ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmg9MTAxMT1zdHJ1Y3QgYXRoMTBrIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvY29yZS5oLTEyMzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmg6MTIzOTojaWZkZWYgQ09ORklHX0FUSDEwS19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9jb3JlLmgtMTI0MC1cXHRzdHJ1Y3QgYXRoMTBrX2RlYnVnIGRlYnVnO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jPTQyPXZvaWQgYXRoMTBrX2RlYnVnX3ByaW50X2h3ZndfaW5mbyhzdHJ1Y3QgYXRoMTBrICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy01Ny1cXHRcXHQgICAgSVNfRU5BQkxFRChDT05GSUdfQVRIMTBLX0RFQlVHKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmM6NTg6XFx0XFx0ICAgIElTX0VOQUJMRUQoQ09ORklHX0FUSDEwS19ERUJVR0ZTKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmMtNTktXFx0XFx0ICAgIElTX0VOQUJMRUQoQ09ORklHX0FUSDEwS19UUkFDSU5HKSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYz0xNDg9RVhQT1JUX1NZTUJPTChhdGgxMGtfd2Fybik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jLTE0OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmM6MTUwOiNpZmRlZiBDT05GSUdfQVRIMTBLX0RFQlVHRlNcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmMtMTUxLVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jPTI2Njg9dm9pZCBhdGgxMGtfZGVidWdfdW5yZWdpc3RlcihzdHJ1Y3QgYXRoMTBrICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYy0yNjcyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuYzoyNjczOiNlbmRpZiAvKiBDT05GSUdfQVRIMTBLX0RFQlVHRlMgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmMtMjY3NC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuaD04Nz12b2lkIGF0aDEwa19wcmludF9kcml2ZXJfaW5mbyhzdHJ1Y3QgYXRoMTBrICphcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5oLTg4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuaDo4OTojaWZkZWYgQ09ORklHX0FUSDEwS19ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5oLTkwLWludCBhdGgxMGtfZGVidWdfc3RhcnQoc3RydWN0IGF0aDEwayAqYXIpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5oPTE5OT1zdGF0aWMgaW5saW5lIGludCBhdGgxMGtfZGVidWdfZndfc3RhdHNfcmVxdWVzdChzdHJ1Y3QgYXRoMTBrICphcilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvZGVidWcuaC0yMDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5oOjIxMDojZW5kaWYgLyogQ09ORklHX0FUSDEwS19ERUJVR0ZTICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5oLTIxMS0jaWZkZWYgQ09ORklHX01BQzgwMjExX0RFQlVHRlNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDg6NDI6MjkuNTk0MjMzOTNaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MTUwMDkyMzk0NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIGF0aDEwayBEcml2ZXIgRnV6emluZyBDb25maWd1cmF0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBJdCBsb29rcyBsaWtlIHRoZSBgYXRoMTBrX3JlZ192YWx1ZV93cml0ZWAgYW5kIGBhdGgxMGtfbWVtX3ZhbHVlX3dyaXRlYCBmdW5jdGlvbnMgYXJlIGdhdGVkIGJlaGluZCBgI2lmZGVmIENPTkZJR19BVEgxMEtfREVCVUdGU2AuIE1ha2VzIHNlbnNlLCB0aGV5J3JlIGxpa2VseSBkZWJ1Z2dpbmcgb3IgdGVzdGluZyB1dGlsaXRpZXMuIEFuZCBvZiBjb3Vyc2UsIGBDT05GSUdfQVRIMTBLX0RFQlVHRlNgIGlzIGRlcGVuZGVudCBvbiBib3RoIGBBVEgxMEtgIGFuZCBgREVCVUdfRlNgLCB3aGljaCBpbiB0dXJuIGhpbmdlcyBvbiBgTUFDODAyMTFgIGFuZCBgSEFTX0RNQWAuIEZ1cnRoZXJtb3JlLCBgQVRIMTBLX1VTQmAgaXMgZGVwZW5kZW50IG9uIGBBVEgxMEtgIGFuZCBgVVNCYC4gVGhpcyBzZWVtcyBsaWtlIGEgZmFpcmx5IHN0YW5kYXJkLCBsb2dpY2FsIGRlcGVuZGVuY3kgY2hhaW4uIE5vdGhpbmcgdW5leHBlY3RlZCB0aGVyZSwgYW5kIG5vIG9idmlvdXMgcmVkIGZsYWdzLlxuXG5Ob3csIGxldCdzIHZlcmlmeSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIHJlbGF0ZWQgY29uZmlncyBvciBzeW1ib2xzLiBPa2F5LCBpdCBoYXMgcHJvdmlkZWQgYSBsaXN0IG9mIGBGb2N1c1N5bWJvbHNgOiBgXCJhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGxcImAsIGBcImF0aDEwa19yZWdfdmFsdWVfd3JpdGVcImAsIGBcImF0aDEwa19tZW1fdmFsdWVfd3JpdGVcImAsIGFuZCBgXCJhdGgxMGtfaHR0X3QyaF9tc2dfaGFuZGxlclwiYC4gVGhvc2UgYXJlIGFsbCBzcGVjaWZpYyB0byB0aGUgYXRoMTBrIGRyaXZlciwgc28gdGhhdCBtYXRjaGVzIHVwLiBBbmQgdGhlIGBFbmFibGVDb25maWdzYCBsaXN0IC0gYFwiQVRIMTBLXCJgLCBgXCJBVEgxMEtfVVNCXCJgLCBhbmQgYFwiQVRIMTBLX0RFQlVHRlNcImAgLSBtYWtlcyBwZXJmZWN0IHNlbnNlIGdpdmVuIHRoZSBkZXBlbmRlbmNpZXMgd2UgaWRlbnRpZmllZC5cblxuTG9va2luZyBhdCB0aGUgaW5zdHJ1Y3Rpb25zIGFuZCBndWlkZWxpbmVzLCBcIldvcnRoRnV6emluZ1wiIGlzIHNldCB0byB0cnVlLCBzbyB0aGF0IGlzIHRha2VuIGNhcmUgb2YuIFRoZSBgRm9jdXNTeW1ib2xzYCBhcmUgdGhlcmUsIGFuZCB0aGUgYEVuYWJsZUNvbmZpZ3NgIGFyZSBjb3JyZWN0bHkgbGlzdGVkLiBUaGUgcmVhc29uaW5nIHNlZW1zIGNvbmNpc2UgYW5kIGFjY3VyYXRlIGZvciB0aGUgY29uY2x1c2lvbi4gQmFzZWQgb24gYWxsIG9mIHRoaXMsIGV2ZXJ5dGhpbmcgc2VlbXMgYWNjdXJhdGUgYW5kIHN0cmFpZ2h0LWZvcndhcmQsIHNvIEkgYW0gcmVhZHkgdG8gbW92ZSBmb3J3YXJkLiBMZXQncyBjYWxsIGBzZXQtcmVzdWx0c2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI5NDI5LCJPdXRwdXRUb2tlbnMiOjIzMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwODo0Mjo0NC42MDM0NzU1NzNaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTU5NDIxOTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkFUSDEwS1wiLFxuICAgIFwiQVRIMTBLX1VTQlwiLFxuICAgIFwiQVRIMTBLX0RFQlVHRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGxcIixcbiAgICBcImF0aDEwa19yZWdfdmFsdWVfd3JpdGVcIixcbiAgICBcImF0aDEwa19tZW1fdmFsdWVfd3JpdGVcIixcbiAgICBcImF0aDEwa19odHRfdDJoX21zZ19oYW5kbGVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZGFyeSBhbmQgbGVuZ3RoIHZhbGlkYXRpb24gY2hlY2tzIHRvIGF0aDEwayBkZWJ1Z2ZzIHdyaXRlIGhhbmRsZXJzIChhdGgxMGtfcmVnX3ZhbHVlX3dyaXRlLCBhdGgxMGtfbWVtX3ZhbHVlX3dyaXRlKSBhbmQgUlggZnJhZ21lbnQgcGFja2V0IHByb2Nlc3NpbmcgaW4gYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2ZyYWdfaW5kX2hsLiBBdGgxMGsgc3VwcG9ydHMgVVNCIGRldmljZXMgKEFUSDEwS19VU0IpIGFuZCBkZWJ1Z2ZzIG9wZXJhdGlvbnMsIHdoaWNoIGNhbiBiZSByZWFjaGVkIGFuZCBmdXp6ZWQgdmlhIFVTQiBlbXVsYXRpb24gKFJhdyBHYWRnZXQpIGFuZCBkZWJ1Z2ZzIGludGVyZmFjZXMgaW4gdmlydHVhbGl6ZWQgZnV6emluZyBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQVRIMTBLXCIsXG4gICAgXCJBVEgxMEtfVVNCXCIsXG4gICAgXCJBVEgxMEtfREVCVUdGU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obFwiLFxuICAgIFwiYXRoMTBrX3JlZ192YWx1ZV93cml0ZVwiLFxuICAgIFwiYXRoMTBrX21lbV92YWx1ZV93cml0ZVwiLFxuICAgIFwiYXRoMTBrX2h0dF90MmhfbXNnX2hhbmRsZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kYXJ5IGFuZCBsZW5ndGggdmFsaWRhdGlvbiBjaGVja3MgdG8gYXRoMTBrIGRlYnVnZnMgd3JpdGUgaGFuZGxlcnMgKGF0aDEwa19yZWdfdmFsdWVfd3JpdGUsIGF0aDEwa19tZW1fdmFsdWVfd3JpdGUpIGFuZCBSWCBmcmFnbWVudCBwYWNrZXQgcHJvY2Vzc2luZyBpbiBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGwuIEF0aDEwayBzdXBwb3J0cyBVU0IgZGV2aWNlcyAoQVRIMTBLX1VTQikgYW5kIGRlYnVnZnMgb3BlcmF0aW9ucywgd2hpY2ggY2FuIGJlIHJlYWNoZWQgYW5kIGZ1enplZCB2aWEgVVNCIGVtdWxhdGlvbiAoUmF3IEdhZGdldCkgYW5kIGRlYnVnZnMgaW50ZXJmYWNlcyBpbiB2aXJ0dWFsaXplZCBmdXp6aW5nIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDg6NDI6NDQuNzU5NDI4NjE0WiIsIlNlcSI6MjUsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTAxMzYyOTUwNCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA4OjQyOjQ0Ljc2MjI4ODk0N1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJjb3JlIiwiRHVyYXRpb24iOjE5MDEwNzYyMzExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBhbmQgdmFsaWRpdHkgY2hlY2tzIGluIGF0aDEwayBkZWJ1Z2ZzIHdyaXRlIGhhbmRsZXJzIChhdGgxMGtfcmVnX3ZhbHVlX3dyaXRlLCBhdGgxMGtfbWVtX3ZhbHVlX3dyaXRlKSBhbmQgaW4gdGhlIEhUVCBSWCBmcmFnbWVudCBwcm9jZXNzaW5nIGZ1bmN0aW9uIChhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGwpLiBcXG5cXG5TcGVjaWZpY2FsbHk6XFxuLSBSZWdpc3RlciBhZGRyZXNzIGFuZCBtZW1vcnkgb2Zmc2V0L2NvdW50IHZhbGlkYXRpb25zIHByZXZlbnQgb3V0LW9mLWJvdW5kcyBISUYgZGlhZ25vc3RpY3MgYW5kIHJlZ2lzdGVyIHdyaXRlcy5cXG4tIExlbmd0aCBjaGVja3Mgb24gc2tiIGFuZCBoZWFkZXIgb2Zmc2V0cyBpbiBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGwgcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIGludG8gc2tiIGJ1ZmZlciBkYXRhLlxcbi0gQW55IHBvdGVudGlhbCBlcnJvci1wYXRoIGlzc3VlcyAoc3VjaCBhcyBlYXJseSByZXR1cm4gd2l0aG91dCB1bmxvY2tpbmcgY29uZl9tdXRleCkgYXJlIGxvY2tpbmcgYnVncyBkZXRlY3RlZCBieSBMT0NLREVQLlxcblxcbk5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFsbG9jYXRpb25zLCByZWFkcyBvZiB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgZmllbGRzLCBvciBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcyBhcmUgaW50cm9kdWNlZCBvciBleHBvc2VkLiBUaGVyZWZvcmUsIHN0YW5kYXJkIEtBU0FOIGFuZCBMT0NLREVQIGNvbmZpZ3VyYXRpb25zIGFyZSBmdWxseSBzdWZmaWNpZW50LCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiVGFyZ2V0IGFyY2hpdGVjdHVyZTogYW1kNjRcblxuRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMGMxZTI2OTExZDFmNTg0ZDVjMGJjMTliMGE2ZTRkMmVjY2EwNmU3OFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUaHUgU2VwIDEwIDA4OjQxOjMzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jXG5pbmRleCBmYjYxZTUzZmY0YzM0Li41MGUwMTcwMjExYjgxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmNcbkBAIC03MjksNiArNzI5LDEzIEBAIHN0YXRpYyBzc2l6ZV90IGF0aDEwa19yZWdfdmFsdWVfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsXG4gXG4gXHRyZWdfYWRkciA9IGFyLVx1MDAzZWRlYnVnLnJlZ19hZGRyO1xuIFxuK1x0LyogRklYOiBWYWxpZGF0ZSByZWdpc3RlciBhZGRyZXNzICovXG4rXHRpZiAocmVnX2FkZHIgXHUwMDNlIGFyLVx1MDAzZWh3X3BhcmFtcy5yZWdfc2l6ZSkge1xuK1x0XHRhdGgxMGtfd2FybihhciwgXCJJbnZhbGlkIHJlZ2lzdGVyIGFkZHJlc3MgMHglMDh4XFxuXCIsIHJlZ19hZGRyKTtcbitcdFx0cmV0ID0gLUVJTlZBTDtcbitcdFx0Z290byBleGl0O1xuK1x0fVxuK1xuIFx0cmV0ID0ga3N0cnRvdTMyX2Zyb21fdXNlcih1c2VyX2J1ZiwgY291bnQsIDAsIFx1MDAyNnJlZ192YWwpO1xuIFx0aWYgKHJldClcbiBcdFx0Z290byBleGl0O1xuQEAgLTgxOSw2ICs4MjYsMTkgQEAgc3RhdGljIHNzaXplX3QgYXRoMTBrX21lbV92YWx1ZV93cml0ZShzdHJ1Y3QgZmlsZSAqZmlsZSxcbiBcbiBcdG11dGV4X2xvY2soXHUwMDI2YXItXHUwMDNlY29uZl9tdXRleCk7XG4gXG4rXHQvKiBGSVg6IFZhbGlkYXRlIGFkZHJlc3MgYWdhaW5zdCBtZW1vcnkgc2l6ZSAqL1xuK1x0aWYgKCpwcG9zIFx1MDAzZSBhci1cdTAwM2Vod19wYXJhbXMubWVtX3NpemUpIHtcbitcdFx0YXRoMTBrX3dhcm4oYXIsIFwiSW52YWxpZCBhZGRyZXNzIDB4JTA4eCBmb3IgbWVtX3ZhbHVlXFxuXCIsICh1MzIpKnBwb3MpO1xuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcdH1cbitcbitcdC8qIEZJWDogVmFsaWRhdGUgc2l6ZSBhZ2FpbnN0IHJlbWFpbmluZyBtZW1vcnkgKi9cbitcdGlmIChjb3VudCBcdTAwM2UgYXItXHUwMDNlaHdfcGFyYW1zLm1lbV9zaXplIC0gKnBwb3MpIHtcbitcdFx0YXRoMTBrX3dhcm4oYXIsIFwiSW52YWxpZCBzaXplICV6dSBmb3IgbWVtX3ZhbHVlIGF0IDB4JTA4eFxcblwiLFxuK1x0XHRcdCAgICBjb3VudCwgKHUzMikqcHBvcyk7XG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1x0fVxuK1xuIFx0YnVmID0gdm1hbGxvYyhjb3VudCk7XG4gXHRpZiAoIWJ1Zikge1xuIFx0XHRyZXQgPSAtRU5PTUVNO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2h0dF9yeC5jXG5pbmRleCBhYjJkMzczYjQ3NTBkLi40ZmFiYjkyNjQ3ZDlmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9odHRfcnguY1xuQEAgLTI3NzUsNiArMjc3NSwxMyBAQCBzdGF0aWMgYm9vbCBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGwoc3RydWN0IGF0aDEwa19odHQgKmh0dCxcbiBcdHN0cnVjdCBodHRfcmVzcCAqcmVzcDtcbiBcdHNpemVfdCB0b3RfaGRyX2xlbjtcbiBcbitcbitcdC8qIEZJWDogVmFsaWRhdGUgc2tiIGxlbmd0aCBiZWZvcmUgc2tiX3B1bGwgKi9cbitcdGlmIChza2ItXHUwMDNlbGVuIFx1MDAzYyBIVFRfUlhfRlJBR19JTkRfSU5GTzBfSEVBREVSX0xFTikge1xuK1x0XHRhdGgxMGtfd2FybihhciwgXCJJbnZhbGlkIHNrYiBsZW4gJWQgZm9yIFJYX0ZSQUdfSU5EXFxuXCIsIHNrYi1cdTAwM2VsZW4pO1xuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXHR9XG4rXG4gXHRyZXNwID0gKHN0cnVjdCBodHRfcmVzcCAqKShza2ItXHUwMDNlZGF0YSArIEhUVF9SWF9GUkFHX0lORF9JTkZPMF9IRUFERVJfTEVOKTtcbiBcdHNrYl9wdWxsKHNrYiwgSFRUX1JYX0ZSQUdfSU5EX0lORk8wX0hFQURFUl9MRU4pO1xuIFx0c2tiX3RyaW0oc2tiLCBza2ItXHUwMDNlbGVuIC0gRkNTX0xFTik7XG5AQCAtMjc5Miw2ICsyNzk5LDEzIEBAIHN0YXRpYyBib29sIGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obChzdHJ1Y3QgYXRoMTBrX2h0dCAqaHR0LFxuIFx0bnVtX21wZHVfcmFuZ2VzID0gTVMoX19sZTMyX3RvX2NwdShyeF9obC1cdTAwM2VoZHIuaW5mbzEpLFxuIFx0XHRcdCAgICAgSFRUX1JYX0lORElDQVRJT05fSU5GTzFfTlVNX01QRFVfUkFOR0VTKTtcbiBcbitcdC8qIEZJWDogVmFsaWRhdGUgbnVtX21wZHVfcmFuZ2VzICovXG4rXHRpZiAobnVtX21wZHVfcmFuZ2VzIFx1MDAzZSAxKSB7XG4rXHRcdGF0aDEwa193YXJuKGFyLCBcIkludmFsaWQgbnVtX21wZHVfcmFuZ2VzICVkXFxuXCIsIG51bV9tcGR1X3Jhbmdlcyk7XG4rXHRcdGdvdG8gZXJyO1xuK1x0fVxuK1xuK1xuIFx0dG90X2hkcl9sZW4gPSBzaXplb2Yoc3RydWN0IGh0dF9yZXNwX2hkcikgK1xuIFx0XHQgICAgICBzaXplb2YocnhfaGwtXHUwMDNlaGRyKSArXG4gXHRcdCAgICAgIHNpemVvZihyeF9obC1cdTAwM2VwcGR1KSArXG5AQCAtMjc5OSwxMCArMjgxMywyNiBAQCBzdGF0aWMgYm9vbCBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGwoc3RydWN0IGF0aDEwa19odHQgKmh0dCxcbiBcdFx0ICAgICAgc2l6ZW9mKHJ4X2hsLVx1MDAzZWZ3X2Rlc2MpICtcbiBcdFx0ICAgICAgc2l6ZW9mKHN0cnVjdCBodHRfcnhfaW5kaWNhdGlvbl9tcGR1X3JhbmdlKSAqIG51bV9tcGR1X3JhbmdlcztcbiBcbitcdC8qIEZJWDogVmFsaWRhdGUgdG90X2hkcl9sZW4gYWdhaW5zdCBza2IgbGVuZ3RoICovXG4rXHRpZiAodG90X2hkcl9sZW4gXHUwMDNlIHNrYi1cdTAwM2VsZW4pIHtcbitcdFx0YXRoMTBrX3dhcm4oYXIsIFwiSW52YWxpZCB0b3RfaGRyX2xlbiAlenUgXHUwMDNlIHNrYi1cdTAwM2VsZW4gJXVcXG5cIixcbitcdFx0XHQgICAgdG90X2hkcl9sZW4sIHNrYi1cdTAwM2VsZW4pO1xuK1x0XHRnb3RvIGVycjtcbitcdH1cbitcbitcbiBcdHRpZCA9ICBNUyhyeF9obC1cdTAwM2VoZHIuaW5mbzAsIEhUVF9SWF9JTkRJQ0FUSU9OX0lORk8wX0VYVF9USUQpO1xuIFx0cnhfZGVzYyA9IChzdHJ1Y3QgaHR0X2hsX3J4X2Rlc2MgKikoc2tiLVx1MDAzZWRhdGEgKyB0b3RfaGRyX2xlbik7XG4gXHRyeF9kZXNjX2luZm8gPSBfX2xlMzJfdG9fY3B1KHJ4X2Rlc2MtXHUwMDNlaW5mbyk7XG4gXG4rXG4rXHQvKiBGSVg6IFZhbGlkYXRlIGZ3X2Rlc2MubGVuIGFnYWluc3QgcmVtYWluaW5nIHNrYiBsZW5ndGggKi9cbitcdGlmIChyeF9obC1cdTAwM2Vmd19kZXNjLmxlbiBcdTAwM2Ugc2tiLVx1MDAzZWxlbiAtIHRvdF9oZHJfbGVuKSB7XG4rXHRcdGF0aDEwa193YXJuKGFyLCBcIkludmFsaWQgZndfZGVzYy5sZW4gJXUgXHUwMDNlIHJlbWFpbmluZyBza2IgbGVuXFxuXCIsXG4rXHRcdFx0ICAgIHJ4X2hsLVx1MDAzZWZ3X2Rlc2MubGVuKTtcbitcdFx0Z290byBlcnI7XG4rXHR9XG4rXG4gXHRoZHIgPSAoc3RydWN0IGllZWU4MDIxMV9oZHIgKikoKHU4ICopcnhfZGVzYyArIHJ4X2hsLVx1MDAzZWZ3X2Rlc2MubGVuKTtcbiBcbiBcdGlmIChpc19tdWx0aWNhc3RfZXRoZXJfYWRkcihoZHItXHUwMDNlYWRkcjEpKSB7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwODo0Mjo0NC43NjIyOTE0NDdaIiwiU2VxIjoyNywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDkyNjYyNTk3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoOiBBIERlZXAgRGl2ZSoqXG5cbk9rYXksIGxldCdzIGRpc3NlY3QgdGhpcyBwYXRjaC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIHB1cnBvc2UgYmVoaW5kIHRoZXNlIGNoYW5nZXMuIEl0IGxvb2tzIGxpa2Ugd2UncmUgZGVhbGluZyB3aXRoIG1vZGlmaWNhdGlvbnMgd2l0aGluIHRoZSBgYXRoMTBrYCB3aXJlbGVzcyBkcml2ZXIsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiB0aGUgYGF0aDEway9gIGRpcmVjdG9yeS4gVGhhdCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3Q7IGFueXRoaW5nIHJlbGF0ZWQgdG8gbG93LWxldmVsIHdpcmVsZXNzIGludGVyYWN0aW9uIHdhcnJhbnRzIGNhcmVmdWwgc2NydXRpbnksIGdpdmVuIHRoZSBwb3RlbnRpYWwgZm9yIHBlcmZvcm1hbmNlIGltcGFjdHMgYW5kLCBvZiBjb3Vyc2UsIHNlY3VyaXR5IGltcGxpY2F0aW9ucy5cblxuVGhlIHBhdGNoIHNlZW1zIHRvIGJlIGludHJvZHVjaW5nIHNldmVyYWwgY3J1Y2lhbCBjaGVja3MsIGd1YXJkaW5nIGFnYWluc3QgcG90ZW50aWFsbHkgcHJvYmxlbWF0aWMgc2NlbmFyaW9zLiBJdCdzIG1vZGlmeWluZyB0d28gZmlsZXM6IGBkZWJ1Zy5jYCBhbmQgYGh0dF9yeC5jYC5cblxuSW4gYGRlYnVnLmNgLCB0aGUgYWRkaXRpb25zIHRvIGBhdGgxMGtfcmVnX3ZhbHVlX3dyaXRlYCBhbmQgYGF0aDEwa19tZW1fdmFsdWVfd3JpdGVgIGFyZSBwYXJ0aWN1bGFybHkgbm90ZXdvcnRoeS4gV2UncmUgbm93IHZhbGlkYXRpbmcgcmVnaXN0ZXIgYW5kIG1lbW9yeSBhZGRyZXNzZXMgYWdhaW5zdCB0aGUgaGFyZHdhcmUgcGFyYW1ldGVycyAoYGFyLVx1MDAzZWh3X3BhcmFtcy5yZWdfc2l6ZWAgYW5kIGBhci1cdTAwM2Vod19wYXJhbXMubWVtX3NpemVgIHJlc3BlY3RpdmVseSkuIFRoaXMgc3Ryb25nbHkgc3VnZ2VzdHMgYW4gYXR0ZW1wdCB0byBwcmV2ZW50IG91dC1vZi1ib3VuZHMgd3JpdGVzLiBUaGUgY29yZSBvZiB0aGlzIGlzIHRvIHByZXZlbnQgYnVmZmVyIG92ZXJmbG93cy4gTXkgZXhwZXJpZW5jZSB0ZWxscyBtZSB0aGF0IHRoZXNlIHR5cGVzIG9mIGNoZWNrcyBhcmUgY3JpdGljYWwgZm9yIG1pdGlnYXRpbmcgdnVsbmVyYWJpbGl0aWVzIHRoYXQgY291bGQgbGVhZCB0byBzeXN0ZW0gaW5zdGFiaWxpdHkgb3IgZXZlbiByZW1vdGUgY29kZSBleGVjdXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBwcmVjaXNlIGNvbnRleHQgb2YgdGhlc2Ugd3JpdGVzIHRvIGFzc2VzcyB0aGUgc2V2ZXJpdHkgb2YgdGhlIG9yaWdpbmFsIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5LlxuXG5UaGVuLCBtb3ZpbmcgdG8gYGh0dF9yeC5jYCwgdGhlIGZvY3VzIHNoaWZ0cyB0byB0aGUgYGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obGAgZnVuY3Rpb24uIFRoZXJlIGFyZSBhIHNlcmllcyBvZiBjaGVja3MgYmVpbmcgYWRkZWQuIFRoZSBuZXcgY2hlY2tzIGluY2x1ZGUgdmVyaWZ5aW5nIHRoZSBzaXplIG9mIHRoZSByZWNlaXZlZCBgc2tiYCAoc29ja2V0IGJ1ZmZlcikgYWdhaW5zdCB0aGUgaGVhZGVyIGxlbmd0aCBhbmQgb3RoZXIgcGFyYW1ldGVycy4gVGhlIGNvZGUgc2VlbXMgdG8gYmUgdmFsaWRhdGluZyB2YXJpb3VzIGRhdGEgc3RydWN0dXJlcyB0aGF0IGFyZSBkZXJpdmVkIGZyb20gaW5jb21pbmcgZnJhZ21lbnRzLCBjaGVja2luZyB0aGUgdG90YWwgbGVuZ3RoIGFnYWluc3QgdGhlIHNvY2tldCBidWZmZXIncyBjdXJyZW50IGF2YWlsYWJsZSBzaXplLiBUaGUgYGlmIChudW1fbXBkdV9yYW5nZXMgXHUwMDNlIDEpYCwgYGlmICh0b3RfaGRyX2xlbiBcdTAwM2Ugc2tiLVx1MDAzZWxlbilgIGFuZCBgaWYgKHJ4X2hsLVx1MDAzZWZ3X2Rlc2MubGVuIFx1MDAzZSBza2ItXHUwMDNlbGVuIC0gdG90X2hkcl9sZW4pYCBjaGVja3MgYXJlIHNwZWNpZmljYWxseSBpbnRlcmVzdGluZyBiZWNhdXNlIHRoZXkgYXJlIGNsZWFybHkgZGVzaWduZWQgdG8gdmFsaWRhdGUgdGhlIGludGVncml0eSBhbmQgc3RydWN0dXJlIG9mIGluY29taW5nIGRhdGEuIFRoaXMgc2lnbmFscyBjb25jZXJuIGFib3V0IHRoZSBwb3RlbnRpYWwgZm9yIGZyYWdtZW50YXRpb24tcmVsYXRlZCB2dWxuZXJhYmlsaXRpZXMgb3IgZGVuaWFsLW9mLXNlcnZpY2UgYXR0YWNrcy4gSSBuZWVkIHRvIGZhbWlsaWFyaXplIG15c2VsZiB3aXRoIHRoZSBzcGVjaWZpYyBkYXRhIHN0cnVjdHVyZXMgYW5kIHRoZSBleHBlY3RlZCBmbG93IG9mIGRhdGEgd2l0aGluIGBhdGgxMGtgJ3MgUlggcGF0aC4gSXTigJlzIGxpa2VseSBhbiBhdHRlbXB0IHRvIG1pdGlnYXRlIGJ1ZmZlciBvdmVyZmxvd3Mgb3IgcG90ZW50aWFsbHkgbWFsZm9ybWVkIHBhY2tldHMuXG5cblRvIGdldCBhIGNsZWFyZXIgcGljdHVyZSwgSSdtIGdvaW5nIHRvIGxldmVyYWdlIG15IHVzdWFsIHdvcmtmbG93LiBJ4oCZbGwgdXNlIGByZWFkLWZpbGVgIG9yIGBncmVwcGVyYCB0byBleGFtaW5lIHRoZSBzdXJyb3VuZGluZyBjb2RlIGluIGJvdGggZmlsZXMuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbnRleHQgb2YgdGhlc2UgY2hlY2tzIHdpbGwgaWxsdW1pbmF0ZSB0aGUgc3BlY2lmaWMgdGhyZWF0IG1vZGVsIGJlaW5nIGFkZHJlc3NlZC4gSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSBleGFjdCBjb25kaXRpb25zIHRoYXQgdHJpZ2dlcmVkIHRoaXMgcGF0Y2ggYW5kIHVuZGVyc3RhbmQgdGhlIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDQ5LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjk4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDktMTBUMDg6NDI6NDkuNjg4OTE5Nzk0WiIsIlNlcSI6MjgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MDkzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTBrL2RlYnVnLmNcIixcbiAgXCJGaXJzdExpbmVcIjogNzI1LFxuICBcIkxpbmVDb3VudFwiOiA1MFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNzI1OlxcdFxcdCAgICBhci1cXHUwMDNlc3RhdGUgIT0gQVRIMTBLX1NUQVRFX1VURikge1xcbiA3MjY6XFx0XFx0XFx0cmV0ID0gLUVORVRET1dOO1xcbiA3Mjc6XFx0XFx0XFx0Z290byBleGl0O1xcbiA3Mjg6XFx0XFx0fVxcbiA3Mjk6XFx0XFxuIDczMDpcXHRcXHRyZWdfYWRkciA9IGFyLVxcdTAwM2VkZWJ1Zy5yZWdfYWRkcjtcXG4gNzMxOlxcdFxcbiA3MzI6XFx0XFx0LyogRklYOiBWYWxpZGF0ZSByZWdpc3RlciBhZGRyZXNzICovXFxuIDczMzpcXHRcXHRpZiAocmVnX2FkZHIgXFx1MDAzZSBhci1cXHUwMDNlaHdfcGFyYW1zLnJlZ19zaXplKSB7XFxuIDczNDpcXHRcXHRcXHRhdGgxMGtfd2FybihhciwgXFxcIkludmFsaWQgcmVnaXN0ZXIgYWRkcmVzcyAweCUwOHhcXFxcblxcXCIsIHJlZ19hZGRyKTtcXG4gNzM1OlxcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuIDczNjpcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuIDczNzpcXHRcXHR9XFxuIDczODpcXHRcXG4gNzM5OlxcdFxcdHJldCA9IGtzdHJ0b3UzMl9mcm9tX3VzZXIodXNlcl9idWYsIGNvdW50LCAwLCBcXHUwMDI2cmVnX3ZhbCk7XFxuIDc0MDpcXHRcXHRpZiAocmV0KVxcbiA3NDE6XFx0XFx0XFx0Z290byBleGl0O1xcbiA3NDI6XFx0XFxuIDc0MzpcXHRcXHRhdGgxMGtfaGlmX3dyaXRlMzIoYXIsIHJlZ19hZGRyLCByZWdfdmFsKTtcXG4gNzQ0OlxcdFxcbiA3NDU6XFx0XFx0cmV0ID0gY291bnQ7XFxuIDc0NjpcXHRcXG4gNzQ3OlxcdGV4aXQ6XFxuIDc0ODpcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNmFyLVxcdTAwM2Vjb25mX211dGV4KTtcXG4gNzQ5OlxcdFxcbiA3NTA6XFx0XFx0cmV0dXJuIHJldDtcXG4gNzUxOlxcdH1cXG4gNzUyOlxcdFxcbiA3NTM6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgZm9wc19yZWdfdmFsdWUgPSB7XFxuIDc1NDpcXHRcXHQucmVhZCA9IGF0aDEwa19yZWdfdmFsdWVfcmVhZCxcXG4gNzU1OlxcdFxcdC53cml0ZSA9IGF0aDEwa19yZWdfdmFsdWVfd3JpdGUsXFxuIDc1NjpcXHRcXHQub3BlbiA9IHNpbXBsZV9vcGVuLFxcbiA3NTc6XFx0XFx0Lm93bmVyID0gVEhJU19NT0RVTEUsXFxuIDc1ODpcXHRcXHQubGxzZWVrID0gZGVmYXVsdF9sbHNlZWssXFxuIDc1OTpcXHR9O1xcbiA3NjA6XFx0XFxuIDc2MTpcXHRzdGF0aWMgc3NpemVfdCBhdGgxMGtfbWVtX3ZhbHVlX3JlYWQoc3RydWN0IGZpbGUgKmZpbGUsXFxuIDc2MjpcXHRcXHRcXHRcXHRcXHQgICAgIGNoYXIgX191c2VyICp1c2VyX2J1ZixcXG4gNzYzOlxcdFxcdFxcdFxcdFxcdCAgICAgc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBwb3MpXFxuIDc2NDpcXHR7XFxuIDc2NTpcXHRcXHRzdHJ1Y3QgYXRoMTBrICphciA9IGZpbGUtXFx1MDAzZXByaXZhdGVfZGF0YTtcXG4gNzY2OlxcdFxcdHU4ICpidWY7XFxuIDc2NzpcXHRcXHRpbnQgcmV0O1xcbiA3Njg6XFx0XFxuIDc2OTpcXHRcXHRpZiAoKnBwb3MgXFx1MDAzYyAwKVxcbiA3NzA6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDc3MTpcXHRcXG4gNzcyOlxcdFxcdGlmICghY291bnQpXFxuIDc3MzpcXHRcXHRcXHRyZXR1cm4gMDtcXG4gNzc0OlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwODo0Mjo0OS42ODkwNzI2NDRaIiwiU2VxIjoyOSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6NDQ3NDYzNjkyOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiB0aG91Z2h0OlxuXG4qKkRpdmluZyBpbnRvIHRoZSBBdGhlcm9zIENvZGUqKlxuXG5BbHJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IHRoZSBgYXRoMTBrYCBkcml2ZXIgYWdhaW4sIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiBzb21lIGNyaXRpY2FsIGFyZWFzLiBGaXJzdCB1cCwgSSB3YW50IHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBtZW1vcnkgd3JpdGUgZnVuY3Rpb24sIHRoYXQgYGF0aDEwa19tZW1fdmFsdWVfd3JpdGVgLiBVbmRlcnN0YW5kaW5nIGhvdyB0aGF0J3MgaGFuZGxlZCBpcyBlc3NlbnRpYWwgZm9yIHRyYWNraW5nIGRvd24gYSByZWNlbnQgaXNzdWUuIEknbGwgbmVlZCB0byByZW1lbWJlciB0aGUgaW50cmljYWNpZXMgb2YgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBoYXJkd2FyZS5cblxuTmV4dCwgSSBzaG91bGQgdGFrZSBhIGZyZXNoIGxvb2sgYXQgYGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obGAuIEZyYWdtZW50ZWQgcGFja2V0cyBjYW4gYmUgYSBwYWluLCBhbmQgSSBuZWVkIHRvIHJlLWZhbWlsaWFyaXplIG15c2VsZiB3aXRoIHRoZSBIaWdoLUxldmVsIChITCkgaGFuZGxpbmcgb2YgdGhvc2UgcmVjZWl2ZWQgZnJhZ21lbnRzLCBtYWtpbmcgc3VyZSBJIGhhdmVuJ3QgbWlzc2VkIGEgY3J1Y2lhbCBwaWVjZSBvZiB0aGUgcHV6emxlIHdpdGhpbiB0aGF0IGZ1bmN0aW9uLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHBvdGVudGlhbCBib3R0bGVuZWNrcywgcmFjZSBjb25kaXRpb25zLCBvciBhbnl0aGluZyBvdXQgb2YgdGhlIG9yZGluYXJ5IHRoYXQgY291bGQgY29udHJpYnV0ZSB0byBwZXJmb3JtYW5jZSBkZWdyYWRhdGlvbiBvciBlcnJvcnMuIFRpbWUgdG8gY3JhY2sgb3BlbiB0aGUgc291cmNlIGFuZCBnZXQgdG8gaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUwNzgsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA4OjQyOjU0LjE2MzcxMjIzMloiLCJTZXEiOjMwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTY2MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEway9kZWJ1Zy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDgxNSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDgxNTpcXHRcXHRcXHRcXHRcXHQgICAgICBzaXplX3QgY291bnQsIGxvZmZfdCAqcHBvcylcXG4gODE2OlxcdHtcXG4gODE3OlxcdFxcdHN0cnVjdCBhdGgxMGsgKmFyID0gZmlsZS1cXHUwMDNlcHJpdmF0ZV9kYXRhO1xcbiA4MTg6XFx0XFx0dTggKmJ1ZjtcXG4gODE5OlxcdFxcdGludCByZXQ7XFxuIDgyMDpcXHRcXG4gODIxOlxcdFxcdGlmICgqcHBvcyBcXHUwMDNjIDApXFxuIDgyMjpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gODIzOlxcdFxcbiA4MjQ6XFx0XFx0aWYgKCFjb3VudClcXG4gODI1OlxcdFxcdFxcdHJldHVybiAwO1xcbiA4MjY6XFx0XFxuIDgyNzpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZhci1cXHUwMDNlY29uZl9tdXRleCk7XFxuIDgyODpcXHRcXG4gODI5OlxcdFxcdC8qIEZJWDogVmFsaWRhdGUgYWRkcmVzcyBhZ2FpbnN0IG1lbW9yeSBzaXplICovXFxuIDgzMDpcXHRcXHRpZiAoKnBwb3MgXFx1MDAzZSBhci1cXHUwMDNlaHdfcGFyYW1zLm1lbV9zaXplKSB7XFxuIDgzMTpcXHRcXHRcXHRhdGgxMGtfd2FybihhciwgXFxcIkludmFsaWQgYWRkcmVzcyAweCUwOHggZm9yIG1lbV92YWx1ZVxcXFxuXFxcIiwgKHUzMikqcHBvcyk7XFxuIDgzMjpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gODMzOlxcdFxcdH1cXG4gODM0OlxcdFxcbiA4MzU6XFx0XFx0LyogRklYOiBWYWxpZGF0ZSBzaXplIGFnYWluc3QgcmVtYWluaW5nIG1lbW9yeSAqL1xcbiA4MzY6XFx0XFx0aWYgKGNvdW50IFxcdTAwM2UgYXItXFx1MDAzZWh3X3BhcmFtcy5tZW1fc2l6ZSAtICpwcG9zKSB7XFxuIDgzNzpcXHRcXHRcXHRhdGgxMGtfd2FybihhciwgXFxcIkludmFsaWQgc2l6ZSAlenUgZm9yIG1lbV92YWx1ZSBhdCAweCUwOHhcXFxcblxcXCIsXFxuIDgzODpcXHRcXHRcXHRcXHQgICAgY291bnQsICh1MzIpKnBwb3MpO1xcbiA4Mzk6XFx0XFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIDg0MDpcXHRcXHR9XFxuIDg0MTpcXHRcXG4gODQyOlxcdFxcdGJ1ZiA9IHZtYWxsb2MoY291bnQpO1xcbiA4NDM6XFx0XFx0aWYgKCFidWYpIHtcXG4gODQ0OlxcdFxcdFxcdHJldCA9IC1FTk9NRU07XFxuIDg0NTpcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuIDg0NjpcXHRcXHR9XFxuIDg0NzpcXHRcXG4gODQ4OlxcdFxcdGlmIChhci1cXHUwMDNlc3RhdGUgIT0gQVRIMTBLX1NUQVRFX09OIFxcdTAwMjZcXHUwMDI2XFxuIDg0OTpcXHRcXHQgICAgYXItXFx1MDAzZXN0YXRlICE9IEFUSDEwS19TVEFURV9VVEYpIHtcXG4gODUwOlxcdFxcdFxcdHJldCA9IC1FTkVURE9XTjtcXG4gODUxOlxcdFxcdFxcdGdvdG8gZXhpdDtcXG4gODUyOlxcdFxcdH1cXG4gODUzOlxcdFxcbiA4NTQ6XFx0XFx0cmV0ID0gY29weV9mcm9tX3VzZXIoYnVmLCB1c2VyX2J1ZiwgY291bnQpO1xcbiA4NTU6XFx0XFx0aWYgKHJldCkge1xcbiA4NTY6XFx0XFx0XFx0cmV0ID0gLUVGQVVMVDtcXG4gODU3OlxcdFxcdFxcdGdvdG8gZXhpdDtcXG4gODU4OlxcdFxcdH1cXG4gODU5OlxcdFxcbiA4NjA6XFx0XFx0cmV0ID0gYXRoMTBrX2hpZl9kaWFnX3dyaXRlKGFyLCAqcHBvcywgYnVmLCBjb3VudCk7XFxuIDg2MTpcXHRcXHRpZiAocmV0KSB7XFxuIDg2MjpcXHRcXHRcXHRhdGgxMGtfd2FybihhciwgXFxcImZhaWxlZCB0byB3cml0ZSBhZGRyZXNzIDB4JTA4eCB2aWEgZGlhZ25vc2Ugd2luZG93IGZyb20gZGVidWdmczogJWRcXFxcblxcXCIsXFxuIDg2MzpcXHRcXHRcXHRcXHQgICAgKHUzMikoKnBwb3MpLCByZXQpO1xcbiA4NjQ6XFx0XFx0XFx0Z290byBleGl0O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwODo0Mjo1NC4xNjM5NzE0NjJaIiwiU2VxIjozMSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjctZmxhc2giLCJEdXJhdGlvbiI6MjM5NzYyNjE0OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipMb2NraW5nIEJ1ZyBEaXNjb3ZlcnkgYW5kIEludmVzdGlnYXRpb24qKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLi4uIHNvbWV0aGluZyBqdXN0IGNsaWNrZWQgbG9va2luZyBhdCBgYXRoMTBrX21lbV92YWx1ZV93cml0ZWAuIFNwZWNpZmljYWxseSwgbGluZXMgODMwLTg0MC4gQmluZ28hIFRoZXkncmUgcmV0dXJuaW5nIGAtRUlOVkFMYCBpZiB0aGUgdmFsaWRhdGlvbiBmYWlscywgKndoaWxlIHN0aWxsIGhvbGRpbmcgYGFyLVx1MDAzZWNvbmZfbXV0ZXhgKi4gVGhhdCdzIGEgY2xhc3NpYyBsb2NraW5nIGJ1ZyDigJMgYSBwb3RlbnRpYWwgZGVhZGxvY2sgc2l0dWF0aW9uIG9yIGF0IGxlYXN0IGFuIHVuYmFsYW5jZWQgbXV0ZXggdW5sb2NrLCBhbmQgb25lIHRoYXQgTE9DS0RFUCBzaG91bGQgZGVmaW5pdGVseSBjYXRjaC4gSXQncyB0aGUga2luZCBvZiB0aGluZyB0aGF0IG1ha2VzIGEgc2Vhc29uZWQgZGV2ZWxvcGVyIHNpdCB1cCBhbmQgdGFrZSBub3RpY2UuXG5cbk5vdywgdG8gZm9sbG93IHRoaXMgdGhyZWFkIGFuZCBjb25maXJtIGl0J3MgYW4gYWN0dWFsIGlzc3VlLCBJIG5lZWQgdG8gY2hlY2sgYGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obGAgaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmNgLiBJJ20gZ29pbmcgdG8gZGlnIGludG8gdGhlIGNhbGwgc3RhY2tzIGFuZCBtYWtlIHN1cmUgdGhpcyBpcyB0aGUgcHJpbWFyeSBzb3VyY2Ugb2YgdGhlIGRlYWRsb2NrLiBUaGlzIG1pZ2h0IGp1c3QgYmUgdGhlIG5lZWRsZSBpbiB0aGUgaGF5c3RhY2sgSSB3YXMgbG9va2luZyBmb3IuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxMzYsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwODo0Mjo1Ni41NjE2MDAzMjFaIiwiU2VxIjozMiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgxMjQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMGsvaHR0X3J4LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMjc3MCxcbiAgXCJMaW5lQ291bnRcIjogODBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMjc3MDpcXHRcXHR1MTYgcGVlcl9pZCwgc2MsIGhkcl9zcGFjZTtcXG4yNzcxOlxcdFxcdHVuaW9uIGh0dF9yeF9wbl90ICpsYXN0X3BuO1xcbjI3NzI6XFx0XFx0c3RydWN0IGllZWU4MDIxMV9oZHIgKmhkcjtcXG4yNzczOlxcdFxcdGludCByZXQsIG51bV9tcGR1X3JhbmdlcztcXG4yNzc0OlxcdFxcdHN0cnVjdCBhdGgxMGtfcGVlciAqcGVlcjtcXG4yNzc1OlxcdFxcdHN0cnVjdCBodHRfcmVzcCAqcmVzcDtcXG4yNzc2OlxcdFxcdHNpemVfdCB0b3RfaGRyX2xlbjtcXG4yNzc3OlxcdFxcbjI3Nzg6XFx0XFxuMjc3OTpcXHRcXHQvKiBGSVg6IFZhbGlkYXRlIHNrYiBsZW5ndGggYmVmb3JlIHNrYl9wdWxsICovXFxuMjc4MDpcXHRcXHRpZiAoc2tiLVxcdTAwM2VsZW4gXFx1MDAzYyBIVFRfUlhfRlJBR19JTkRfSU5GTzBfSEVBREVSX0xFTikge1xcbjI3ODE6XFx0XFx0XFx0YXRoMTBrX3dhcm4oYXIsIFxcXCJJbnZhbGlkIHNrYiBsZW4gJWQgZm9yIFJYX0ZSQUdfSU5EXFxcXG5cXFwiLCBza2ItXFx1MDAzZWxlbik7XFxuMjc4MjpcXHRcXHRcXHRyZXR1cm4gZmFsc2U7XFxuMjc4MzpcXHRcXHR9XFxuMjc4NDpcXHRcXG4yNzg1OlxcdFxcdHJlc3AgPSAoc3RydWN0IGh0dF9yZXNwICopKHNrYi1cXHUwMDNlZGF0YSArIEhUVF9SWF9GUkFHX0lORF9JTkZPMF9IRUFERVJfTEVOKTtcXG4yNzg2OlxcdFxcdHNrYl9wdWxsKHNrYiwgSFRUX1JYX0ZSQUdfSU5EX0lORk8wX0hFQURFUl9MRU4pO1xcbjI3ODc6XFx0XFx0c2tiX3RyaW0oc2tiLCBza2ItXFx1MDAzZWxlbiAtIEZDU19MRU4pO1xcbjI3ODg6XFx0XFxuMjc4OTpcXHRcXHRwZWVyX2lkID0gX19sZTE2X3RvX2NwdShyeC1cXHUwMDNlcGVlcl9pZCk7XFxuMjc5MDpcXHRcXHRyeF9obCA9IChzdHJ1Y3QgaHR0X3J4X2luZGljYXRpb25faGwgKikoXFx1MDAyNnJlc3AtXFx1MDAzZXJ4X2luZF9obCk7XFxuMjc5MTpcXHRcXG4yNzkyOlxcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2YXItXFx1MDAzZWRhdGFfbG9jayk7XFxuMjc5MzpcXHRcXHRwZWVyID0gYXRoMTBrX3BlZXJfZmluZF9ieV9pZChhciwgcGVlcl9pZCk7XFxuMjc5NDpcXHRcXHRpZiAoIXBlZXIpIHtcXG4yNzk1OlxcdFxcdFxcdGF0aDEwa19kYmcoYXIsIEFUSDEwS19EQkdfSFRULCBcXFwiaW52YWxpZCBwZWVyOiAldVxcXFxuXFxcIiwgcGVlcl9pZCk7XFxuMjc5NjpcXHRcXHRcXHRnb3RvIGVycjtcXG4yNzk3OlxcdFxcdH1cXG4yNzk4OlxcdFxcbjI3OTk6XFx0XFx0bnVtX21wZHVfcmFuZ2VzID0gTVMoX19sZTMyX3RvX2NwdShyeF9obC1cXHUwMDNlaGRyLmluZm8xKSxcXG4yODAwOlxcdFxcdFxcdFxcdCAgICAgSFRUX1JYX0lORElDQVRJT05fSU5GTzFfTlVNX01QRFVfUkFOR0VTKTtcXG4yODAxOlxcdFxcbjI4MDI6XFx0XFx0LyogRklYOiBWYWxpZGF0ZSBudW1fbXBkdV9yYW5nZXMgKi9cXG4yODAzOlxcdFxcdGlmIChudW1fbXBkdV9yYW5nZXMgXFx1MDAzZSAxKSB7XFxuMjgwNDpcXHRcXHRcXHRhdGgxMGtfd2FybihhciwgXFxcIkludmFsaWQgbnVtX21wZHVfcmFuZ2VzICVkXFxcXG5cXFwiLCBudW1fbXBkdV9yYW5nZXMpO1xcbjI4MDU6XFx0XFx0XFx0Z290byBlcnI7XFxuMjgwNjpcXHRcXHR9XFxuMjgwNzpcXHRcXG4yODA4OlxcdFxcbjI4MDk6XFx0XFx0dG90X2hkcl9sZW4gPSBzaXplb2Yoc3RydWN0IGh0dF9yZXNwX2hkcikgK1xcbjI4MTA6XFx0XFx0XFx0ICAgICAgc2l6ZW9mKHJ4X2hsLVxcdTAwM2VoZHIpICtcXG4yODExOlxcdFxcdFxcdCAgICAgIHNpemVvZihyeF9obC1cXHUwMDNlcHBkdSkgK1xcbjI4MTI6XFx0XFx0XFx0ICAgICAgc2l6ZW9mKHJ4X2hsLVxcdTAwM2VwcmVmaXgpICtcXG4yODEzOlxcdFxcdFxcdCAgICAgIHNpemVvZihyeF9obC1cXHUwMDNlZndfZGVzYykgK1xcbjI4MTQ6XFx0XFx0XFx0ICAgICAgc2l6ZW9mKHN0cnVjdCBodHRfcnhfaW5kaWNhdGlvbl9tcGR1X3JhbmdlKSAqIG51bV9tcGR1X3JhbmdlcztcXG4yODE1OlxcdFxcbjI4MTY6XFx0XFx0LyogRklYOiBWYWxpZGF0ZSB0b3RfaGRyX2xlbiBhZ2FpbnN0IHNrYiBsZW5ndGggKi9cXG4yODE3OlxcdFxcdGlmICh0b3RfaGRyX2xlbiBcXHUwMDNlIHNrYi1cXHUwMDNlbGVuKSB7XFxuMjgxODpcXHRcXHRcXHRhdGgxMGtfd2FybihhciwgXFxcIkludmFsaWQgdG90X2hkcl9sZW4gJXp1IFxcdTAwM2Ugc2tiLVxcdTAwM2VsZW4gJXVcXFxcblxcXCIsXFxuMjgxOTpcXHRcXHRcXHRcXHQgICAgdG90X2hkcl9sZW4sIHNrYi1cXHUwMDNlbGVuKTtcXG4yODIwOlxcdFxcdFxcdGdvdG8gZXJyO1xcbjI4MjE6XFx0XFx0fVxcbjI4MjI6XFx0XFxuMjgyMzpcXHRcXG4yODI0OlxcdFxcdHRpZCA9ICBNUyhyeF9obC1cXHUwMDNlaGRyLmluZm8wLCBIVFRfUlhfSU5ESUNBVElPTl9JTkZPMF9FWFRfVElEKTtcXG4yODI1OlxcdFxcdHJ4X2Rlc2MgPSAoc3RydWN0IGh0dF9obF9yeF9kZXNjICopKHNrYi1cXHUwMDNlZGF0YSArIHRvdF9oZHJfbGVuKTtcXG4yODI2OlxcdFxcdHJ4X2Rlc2NfaW5mbyA9IF9fbGUzMl90b19jcHUocnhfZGVzYy1cXHUwMDNlaW5mbyk7XFxuMjgyNzpcXHRcXG4yODI4OlxcdFxcbjI4Mjk6XFx0XFx0LyogRklYOiBWYWxpZGF0ZSBmd19kZXNjLmxlbiBhZ2FpbnN0IHJlbWFpbmluZyBza2IgbGVuZ3RoICovXFxuMjgzMDpcXHRcXHRpZiAocnhfaGwtXFx1MDAzZWZ3X2Rlc2MubGVuIFxcdTAwM2Ugc2tiLVxcdTAwM2VsZW4gLSB0b3RfaGRyX2xlbikge1xcbjI4MzE6XFx0XFx0XFx0YXRoMTBrX3dhcm4oYXIsIFxcXCJJbnZhbGlkIGZ3X2Rlc2MubGVuICV1IFxcdTAwM2UgcmVtYWluaW5nIHNrYiBsZW5cXFxcblxcXCIsXFxuMjgzMjpcXHRcXHRcXHRcXHQgICAgcnhfaGwtXFx1MDAzZWZ3X2Rlc2MubGVuKTtcXG4yODMzOlxcdFxcdFxcdGdvdG8gZXJyO1xcbjI4MzQ6XFx0XFx0fVxcbjI4MzU6XFx0XFxuMjgzNjpcXHRcXHRoZHIgPSAoc3RydWN0IGllZWU4MDIxMV9oZHIgKikoKHU4ICopcnhfZGVzYyArIHJ4X2hsLVxcdTAwM2Vmd19kZXNjLmxlbik7XFxuMjgzNzpcXHRcXG4yODM4OlxcdFxcdGlmIChpc19tdWx0aWNhc3RfZXRoZXJfYWRkcihoZHItXFx1MDAzZWFkZHIxKSkge1xcbjI4Mzk6XFx0XFx0XFx0LyogRGlzY2FyZCB0aGUgZnJhZ21lbnQgd2l0aCBtdWx0aWNhc3QgREEgKi9cXG4yODQwOlxcdFxcdFxcdGdvdG8gZXJyO1xcbjI4NDE6XFx0XFx0fVxcbjI4NDI6XFx0XFxuMjg0MzpcXHRcXHRpZiAoIU1TKHJ4X2Rlc2NfaW5mbywgSFRUX1JYX0RFU0NfSExfSU5GT19FTkNSWVBURUQpKSB7XFxuMjg0NDpcXHRcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2YXItXFx1MDAzZWRhdGFfbG9jayk7XFxuMjg0NTpcXHRcXHRcXHRyZXR1cm4gYXRoMTBrX2h0dF9yeF9wcm9jX3J4X2luZF9obChodHQsIFxcdTAwMjZyZXNwLVxcdTAwM2VyeF9pbmRfaGwsIHNrYixcXG4yODQ2OlxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBIVFRfUlhfTk9OX1BOX0NIRUNLLFxcbjI4NDc6XFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIEhUVF9SWF9OT05fVEtJUF9NSUMpO1xcbjI4NDg6XFx0XFx0fVxcbjI4NDk6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA5LTEwVDA4OjQyOjU2LjU2MjA4MzkxMloiLCJTZXEiOjMzLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuNy1mbGFzaCIsIkR1cmF0aW9uIjo3MjEwOTIzNzE2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFBhdGNoJ3MgSW1wYWN0KipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIHBhdGNoIGFjdHVhbGx5ICpkb2VzKi4gSSBzZWUgaXQgbWFrZXMgc29tZSBrZXkgY2hhbmdlczpcblxuMS4gICoqYGF0aDEwa19yZWdfdmFsdWVfd3JpdGVgKio6IFRoZSBjb2RlIG5vdyB2YWxpZGF0ZXMgYHJlZ19hZGRyYCBhZ2FpbnN0IGBhci1cdTAwM2Vod19wYXJhbXMucmVnX3NpemVgIGJlZm9yZSB3cml0aW5nIHRvIGhhcmR3YXJlLiBHb29kLCB0aGF0J3MgYSBjcnVjaWFsIGJvdW5kcyBjaGVjay5cbjIuICAqKmBhdGgxMGtfbWVtX3ZhbHVlX3dyaXRlYCoqOiBUaGlzIHZhbGlkYXRlcyBib3RoIGAqcHBvc2AgYW5kIGBjb3VudGAgYWdhaW5zdCBgYXItXHUwMDNlaHdfcGFyYW1zLm1lbV9zaXplYCBiZWZvcmUgaXQgZ2V0cyBpbnRvIGFsbG9jYXRpbmcgYW5kIGNvcHlpbmcuIFRoaXMgaXMgc291bmQsIHByZXZlbnRpbmcgcG90ZW50aWFsIG92ZXJmbG93cy5cbjMuICAqKmBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGxgKio6IFRoaXMgYWRkcyBzZXZlcmFsIGJvdW5kcyBjaGVja3MuIFNwZWNpZmljYWxseSwgb24gYHNrYi1cdTAwM2VsZW5gLCBgbnVtX21wZHVfcmFuZ2VzYCwgYHRvdF9oZHJfbGVuYCwgYW5kIGByeF9obC1cdTAwM2Vmd19kZXNjLmxlbmAuIFByZXZlbnRpbmcgb3V0IG9mIGJvdW5kcyByZWFkcyBhbmQgaW52YWxpZCBvZmZzZXRzLlxuXG5Ob3csIHRoZSByZWFsIHF1ZXN0aW9uOiBkb2VzIHRoaXMgaW50cm9kdWNlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZXMgb3IsIGNyaXRpY2FsbHksIGtlcm5lbC10by11c2VyIGluZm8gbGVha3M/IExldCdzIGdvIHRocm91Z2ggdGhlIGNoZWNrbGlzdDpcblxuKiAgICoqVW5pbml0aWFsaXplZCB2YXJpYWJsZXMgaW50cm9kdWNlZD8qKiBObywgbm90aGluZyBuZXcgaGVyZS5cbiogICAqKkFueSBgY29weV90b191c2VyYCwgYHB1dF91c2VyYCwgb3IgTmV0bGluayBsZWFrcz8qKiBOb3BlLCBub3Qgc2VlaW5nIGFueXRoaW5nIGxpa2UgdGhhdC5cbiogICAqKkFsdGVyZWQgbGVuZ3RoIGNhbGN1bGF0aW9ucyBvciBib3VuZHMgY2hlY2tzIHRoYXQgY291bGQgKmFsbG93KiBhY2Nlc3MgdG8gdW5pbml0aWFsaXplZCBieXRlcz8qKiBObyB3YXksIGluIGZhY3QsIHRoaXMgcGF0Y2ggKmFkZHMqIHN0cmljdGVyIGJvdW5kcyBjaGVja3MgYW5kIHZhbGlkYXRpb24sIG1ha2luZyBpdCAqbW9yZSogcm9idXN0LlxuKiAgICoqQ29uZGl0aW9uYWwgbG9naWMgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXM/KiogTm8sIHRoZSBkYXRhIHNvdXJjZXMgc2VlbSBzYWZlOiBgcmVnX2FkZHJgIGNvbWVzIGZyb20gYGFyLVx1MDAzZWRlYnVnLnJlZ19hZGRyYCwgYHBwb3NgIGZyb20gdGhlIGNhbGxlciwgcGFja2V0IGRhdGEgKHNrYiBtZXRhZGF0YSkgYW5kIHJlY2VpdmVkIGRhdGEgZnJvbSB0aGUgcGFja2V0LlxuXG5UaGUgcG90ZW50aWFsIGlzc3VlcyBhZGRyZXNzZWQgc2VlbSB0byBiZSBvdXQtb2YtYm91bmRzIGFjY2VzcywgYnVmZmVyIG92ZXJmbG93cywgYW5kIGludmFsaWQgZGV2aWNlIG1lbW9yeSBhY2Nlc3MuIEkgYWxzbyBzcG90dGVkIHRoYXQgbWlzc2VkIG11dGV4IHVubG9jayBpbiB0aGUgZXJyb3IgcGF0aCBvZiBgYXRoMTBrX21lbV92YWx1ZV93cml0ZWAuIExvY2tpbmcgYnVncyBhcmUgTE9DS0RFUCB0ZXJyaXRvcnksIG91dC1vZi1ib3VuZHMgaXNzdWVzIEtBU0FOLlxuXG5MZXQncyBkb3VibGUtY2hlY2sgdGhlIHJ1bGVzIHJlZ2FyZGluZyBLTVNBTi4gVGhlIFwiUnVsZVwiIGNsZWFybHkgc3RhdGVzIEtNU0FOIGlzIGZvciAqdW5pbml0aWFsaXplZCBtZW1vcnkqIHJpc2tzIG9ubHkuIElmIHNvbWV0aGluZyBlbHNlIGlzIGFscmVhZHkgY292ZXJlZCBieSBLQVNBTiBvciBMT0NLREVQLCB3ZSBkb24ndCBuZWVkIGl0LlxuXG5UaGUgXCJTZXQgTmVlZHNLTVNBTj1mYWxzZVwiIGNyaXRlcmlhIHBlcmZlY3RseSBmaXRzIGhlcmU6XG5cbiogICBUaGUgcmlza3MgYXJlIG91dC1vZi1ib3VuZHMgYWNjZXNzLCB3aGljaCBpcyBLQVNBTidzIGpvYi5cbiogICBFdmVyeXRoaW5nIGlzIGZ1bGx5IHplcm9lZCBvciBpbml0aWFsaXplZC5cbiogICBObyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzZSBvciBsZWFrcy5cblxuT2theSwgbGV0J3MgZG8gYSBxdWljayBmaW5hbCBzd2VlcCB0aHJvdWdoIHRoZSBwYXRjaCBhbmQgcmVsYXRlZCBmaWxlcywganVzdCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZy4gQWxsIGxvb2tzIGdvb2QuIEl0IHNlZW1zIHNhZmUgdG8gc2V0IGBOZWVkc0tNU0FOPWZhbHNlYC5cblxuTm93LCB0aW1lIHRvIGNhbGwgYHNldC1yZXN1bHRzYC5cblxuXG4iLCJJbnB1dFRva2VucyI6Nzk5NCwiT3V0cHV0VG9rZW5zIjoyNDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3NjIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOS0xMFQwODo0MzowMy43NzMwMTI0NzhaIiwiU2VxIjozNCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTU0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYm91bmRzIGFuZCB2YWxpZGl0eSBjaGVja3MgaW4gYXRoMTBrIGRlYnVnZnMgd3JpdGUgaGFuZGxlcnMgKGF0aDEwa19yZWdfdmFsdWVfd3JpdGUsIGF0aDEwa19tZW1fdmFsdWVfd3JpdGUpIGFuZCBpbiB0aGUgSFRUIFJYIGZyYWdtZW50IHByb2Nlc3NpbmcgZnVuY3Rpb24gKGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obCkuIFxcblxcblNwZWNpZmljYWxseTpcXG4tIFJlZ2lzdGVyIGFkZHJlc3MgYW5kIG1lbW9yeSBvZmZzZXQvY291bnQgdmFsaWRhdGlvbnMgcHJldmVudCBvdXQtb2YtYm91bmRzIEhJRiBkaWFnbm9zdGljcyBhbmQgcmVnaXN0ZXIgd3JpdGVzLlxcbi0gTGVuZ3RoIGNoZWNrcyBvbiBza2IgYW5kIGhlYWRlciBvZmZzZXRzIGluIGF0aDEwa19odHRfcnhfcHJvY19yeF9mcmFnX2luZF9obCBwcmV2ZW50IG91dC1vZi1ib3VuZHMgcmVhZHMgaW50byBza2IgYnVmZmVyIGRhdGEuXFxuLSBBbnkgcG90ZW50aWFsIGVycm9yLXBhdGggaXNzdWVzIChzdWNoIGFzIGVhcmx5IHJldHVybiB3aXRob3V0IHVubG9ja2luZyBjb25mX211dGV4KSBhcmUgbG9ja2luZyBidWdzIGRldGVjdGVkIGJ5IExPQ0tERVAuXFxuXFxuTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgYWxsb2NhdGlvbnMsIHJlYWRzIG9mIHVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBmaWVsZHMsIG9yIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzIGFyZSBpbnRyb2R1Y2VkIG9yIGV4cG9zZWQuIFRoZXJlZm9yZSwgc3RhbmRhcmQgS0FTQU4gYW5kIExPQ0tERVAgY29uZmlndXJhdGlvbnMgYXJlIGZ1bGx5IHN1ZmZpY2llbnQsIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IHdhcnJhbnRlZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBhbmQgdmFsaWRpdHkgY2hlY2tzIGluIGF0aDEwayBkZWJ1Z2ZzIHdyaXRlIGhhbmRsZXJzIChhdGgxMGtfcmVnX3ZhbHVlX3dyaXRlLCBhdGgxMGtfbWVtX3ZhbHVlX3dyaXRlKSBhbmQgaW4gdGhlIEhUVCBSWCBmcmFnbWVudCBwcm9jZXNzaW5nIGZ1bmN0aW9uIChhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGwpLiBcXG5cXG5TcGVjaWZpY2FsbHk6XFxuLSBSZWdpc3RlciBhZGRyZXNzIGFuZCBtZW1vcnkgb2Zmc2V0L2NvdW50IHZhbGlkYXRpb25zIHByZXZlbnQgb3V0LW9mLWJvdW5kcyBISUYgZGlhZ25vc3RpY3MgYW5kIHJlZ2lzdGVyIHdyaXRlcy5cXG4tIExlbmd0aCBjaGVja3Mgb24gc2tiIGFuZCBoZWFkZXIgb2Zmc2V0cyBpbiBhdGgxMGtfaHR0X3J4X3Byb2NfcnhfZnJhZ19pbmRfaGwgcHJldmVudCBvdXQtb2YtYm91bmRzIHJlYWRzIGludG8gc2tiIGJ1ZmZlciBkYXRhLlxcbi0gQW55IHBvdGVudGlhbCBlcnJvci1wYXRoIGlzc3VlcyAoc3VjaCBhcyBlYXJseSByZXR1cm4gd2l0aG91dCB1bmxvY2tpbmcgY29uZl9tdXRleCkgYXJlIGxvY2tpbmcgYnVncyBkZXRlY3RlZCBieSBMT0NLREVQLlxcblxcbk5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFsbG9jYXRpb25zLCByZWFkcyBvZiB1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgZmllbGRzLCBvciBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcyBhcmUgaW50cm9kdWNlZCBvciBleHBvc2VkLiBUaGVyZWZvcmUsIHN0YW5kYXJkIEtBU0FOIGFuZCBMT0NLREVQIGNvbmZpZ3VyYXRpb25zIGFyZSBmdWxseSBzdWZmaWNpZW50LCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCB3YXJyYW50ZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflow98gh2[1] Phase: Succeeded StartedAt: 2026-09-10 08:43:15 +0000 UTC FinishedAt: 2026-09-10 08:43:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98gh2[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-09-10 08:43:15 +0000 UTC FinishedAt: 2026-09-10 08:43:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98gh2[2] Phase: Succeeded StartedAt: 2026-09-10 08:43:15 +0000 UTC FinishedAt: 2026-09-10 09:28:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98gh2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_htt_rx_proc_rx_frag_ind_hl","ath10k_reg_value_write","ath10k_mem_value_write","ath10k_htt_t2h_msg_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DEBUGFS"],"series_id":"576ba9bc-1756-4f5a-9fa2-c13dc11f2a6d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN) Phase: Failed StartedAt: 2026-09-10 08:43:15 +0000 UTC FinishedAt: 2026-09-10 09:28:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_htt_rx_proc_rx_frag_ind_hl","ath10k_reg_value_write","ath10k_mem_value_write","ath10k_htt_t2h_msg_handler"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DEBUGFS"],"series_id":"576ba9bc-1756-4f5a-9fa2-c13dc11f2a6d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow98gh2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_htt_rx_proc_rx_frag_ind_hl","ath10k_reg_value_write","ath10k_mem_value_write","ath10k_htt_t2h_msg_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DEBUGFS"],"series_id":"576ba9bc-1756-4f5a-9fa2-c13dc11f2a6d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-09-10 08:43:15 +0000 UTC FinishedAt: 2026-09-10 08:43:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98gh2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_htt_rx_proc_rx_frag_ind_hl","ath10k_reg_value_write","ath10k_mem_value_write","ath10k_htt_t2h_msg_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DEBUGFS"],"series_id":"576ba9bc-1756-4f5a-9fa2-c13dc11f2a6d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-09-10 08:43:15 +0000 UTC FinishedAt: 2026-09-10 08:43:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.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-workflow98gh2/series-workflow98gh2-convert-artifact-1325385202/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow98gh2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_htt_rx_proc_rx_frag_ind_hl","ath10k_reg_value_write","ath10k_mem_value_write","ath10k_htt_t2h_msg_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DEBUGFS"],"series_id":"576ba9bc-1756-4f5a-9fa2-c13dc11f2a6d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-09-10 08:43:25 +0000 UTC FinishedAt: 2026-09-10 09:04:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98gh2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_htt_rx_proc_rx_frag_ind_hl","ath10k_reg_value_write","ath10k_mem_value_write","ath10k_htt_t2h_msg_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DEBUGFS"],"series_id":"576ba9bc-1756-4f5a-9fa2-c13dc11f2a6d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-09-10 08:43:25 +0000 UTC FinishedAt: 2026-09-10 09:04:11 +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:*10b3e07e-df01-4ecd-8f9d-312b0e0db82c,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-workflow98gh2/series-workflow98gh2-convert-artifact-1325385202/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": "f9fe6476-d4fa-4d66-ae0b-0840cadb25d6", "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-workflow98gh2/series-workflow98gh2-build-action-3723578736/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow98gh2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_htt_rx_proc_rx_frag_ind_hl","ath10k_reg_value_write","ath10k_mem_value_write","ath10k_htt_t2h_msg_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DEBUGFS"],"series_id":"576ba9bc-1756-4f5a-9fa2-c13dc11f2a6d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-09-10 08:43:25 +0000 UTC FinishedAt: 2026-09-10 09:03:55 +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:*10b3e07e-df01-4ecd-8f9d-312b0e0db82c,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-workflow98gh2/series-workflow98gh2-convert-artifact-1325385202/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": "f9fe6476-d4fa-4d66-ae0b-0840cadb25d6", "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-workflow98gh2/series-workflow98gh2-build-action-3723578736/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow98gh2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_htt_rx_proc_rx_frag_ind_hl","ath10k_reg_value_write","ath10k_mem_value_write","ath10k_htt_t2h_msg_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DEBUGFS"],"series_id":"576ba9bc-1756-4f5a-9fa2-c13dc11f2a6d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-09-10 09:04:11 +0000 UTC FinishedAt: 2026-09-10 09:04:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98gh2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_htt_rx_proc_rx_frag_ind_hl","ath10k_reg_value_write","ath10k_mem_value_write","ath10k_htt_t2h_msg_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DEBUGFS"],"series_id":"576ba9bc-1756-4f5a-9fa2-c13dc11f2a6d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-09-10 09:04:11 +0000 UTC FinishedAt: 2026-09-10 09:04:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98gh2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_htt_rx_proc_rx_frag_ind_hl","ath10k_reg_value_write","ath10k_mem_value_write","ath10k_htt_t2h_msg_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DEBUGFS"],"series_id":"576ba9bc-1756-4f5a-9fa2-c13dc11f2a6d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-09-10 09:04:11 +0000 UTC FinishedAt: 2026-09-10 09:04:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98gh2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_htt_rx_proc_rx_frag_ind_hl","ath10k_reg_value_write","ath10k_mem_value_write","ath10k_htt_t2h_msg_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DEBUGFS"],"series_id":"576ba9bc-1756-4f5a-9fa2-c13dc11f2a6d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-09-10 09:04:11 +0000 UTC FinishedAt: 2026-09-10 09:04:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DEBUGFS"],"series_id":"576ba9bc-1756-4f5a-9fa2-c13dc11f2a6d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.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-workflow98gh2/series-workflow98gh2-convert-artifact-4172611597/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow98gh2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_htt_rx_proc_rx_frag_ind_hl","ath10k_reg_value_write","ath10k_mem_value_write","ath10k_htt_t2h_msg_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DEBUGFS"],"series_id":"576ba9bc-1756-4f5a-9fa2-c13dc11f2a6d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-09-10 09:04:23 +0000 UTC FinishedAt: 2026-09-10 09:06:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98gh2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_htt_rx_proc_rx_frag_ind_hl","ath10k_reg_value_write","ath10k_mem_value_write","ath10k_htt_t2h_msg_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DEBUGFS"],"series_id":"576ba9bc-1756-4f5a-9fa2-c13dc11f2a6d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-09-10 09:04:23 +0000 UTC FinishedAt: 2026-09-10 09:06:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*f9fe6476-d4fa-4d66-ae0b-0840cadb25d6,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-workflow98gh2/series-workflow98gh2-build-action-3723578736/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-workflow98gh2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_htt_rx_proc_rx_frag_ind_hl","ath10k_reg_value_write","ath10k_mem_value_write","ath10k_htt_t2h_msg_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DEBUGFS"],"series_id":"576ba9bc-1756-4f5a-9fa2-c13dc11f2a6d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-09-10 09:06:21 +0000 UTC FinishedAt: 2026-09-10 09:06:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98gh2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_htt_rx_proc_rx_frag_ind_hl","ath10k_reg_value_write","ath10k_mem_value_write","ath10k_htt_t2h_msg_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DEBUGFS"],"series_id":"576ba9bc-1756-4f5a-9fa2-c13dc11f2a6d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-09-10 09:06:21 +0000 UTC FinishedAt: 2026-09-10 09:06:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98gh2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_htt_rx_proc_rx_frag_ind_hl","ath10k_reg_value_write","ath10k_mem_value_write","ath10k_htt_t2h_msg_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DEBUGFS"],"series_id":"576ba9bc-1756-4f5a-9fa2-c13dc11f2a6d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-09-10 09:06:21 +0000 UTC FinishedAt: 2026-09-10 09:28:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98gh2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_htt_rx_proc_rx_frag_ind_hl","ath10k_reg_value_write","ath10k_mem_value_write","ath10k_htt_t2h_msg_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DEBUGFS"],"series_id":"576ba9bc-1756-4f5a-9fa2-c13dc11f2a6d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-09-10 09:06:21 +0000 UTC FinishedAt: 2026-09-10 09:28:17 +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:*10b3e07e-df01-4ecd-8f9d-312b0e0db82c,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-workflow98gh2/series-workflow98gh2-convert-artifact-4172611597/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": "e53ca595-54df-4bd2-9bd0-df2488ec7ea6", "success": false },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-workflow98gh2/series-workflow98gh2-build-action-2330299881/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow98gh2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_htt_rx_proc_rx_frag_ind_hl","ath10k_reg_value_write","ath10k_mem_value_write","ath10k_htt_t2h_msg_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DEBUGFS"],"series_id":"576ba9bc-1756-4f5a-9fa2-c13dc11f2a6d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-09-10 09:06:21 +0000 UTC FinishedAt: 2026-09-10 09:27:50 +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:*10b3e07e-df01-4ecd-8f9d-312b0e0db82c,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-workflow98gh2/series-workflow98gh2-convert-artifact-4172611597/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": "e53ca595-54df-4bd2-9bd0-df2488ec7ea6", "success": false },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-workflow98gh2/series-workflow98gh2-build-action-2330299881/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow98gh2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_htt_rx_proc_rx_frag_ind_hl","ath10k_reg_value_write","ath10k_mem_value_write","ath10k_htt_t2h_msg_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DEBUGFS"],"series_id":"576ba9bc-1756-4f5a-9fa2-c13dc11f2a6d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7] Phase: Failed StartedAt: 2026-09-10 09:28:17 +0000 UTC FinishedAt: 2026-09-10 09:28:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow98gh2[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DEBUGFS"],"series_id":"","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ath10k_htt_rx_proc_rx_frag_ind_hl","ath10k_reg_value_write","ath10k_mem_value_write","ath10k_htt_t2h_msg_handler"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"13e51269b6656768dc595ed6025e4974f2026543","config_name":"upstream-apparmor-kasan.config","enable_configs":["ATH10K","ATH10K_USB","ATH10K_DEBUGFS"],"series_id":"576ba9bc-1756-4f5a-9fa2-c13dc11f2a6d","tree_name":"wireless-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/wireless/wireless-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Failed StartedAt: 2026-09-10 09:28:17 +0000 UTC FinishedAt: 2026-09-10 09:28:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}