Name: series-workflow6xdxg Phase: Succeeded StartedAt: 2026-07-07 01:05:23 +0000 UTC FinishedAt: 2026-07-07 05:36:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6xdxg[0] Phase: Succeeded StartedAt: 2026-07-07 01:05:23 +0000 UTC FinishedAt: 2026-07-07 01:18:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6xdxg[0].run-triage Phase: Succeeded StartedAt: 2026-07-07 01:05:23 +0000 UTC FinishedAt: 2026-07-07 01:18:18 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "87bfe634b1193db90e5170e1ddbad04a63ef4501", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "UPROBES" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "87bfe634b1193db90e5170e1ddbad04a63ef4501", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "UPROBES" ], "series_id": "2fa777ba-8eb9-41f5-946e-9975538cc751" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "prepare_uretprobe", "hprobe_expire", "hprobe_finalize", "ri_timer", "dup_utask", "free_ret_instance", "uprobe_handle_trampoline" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-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+CgkJCTx0ZD4yMDI2LzA3LzA3IDAxOjE1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VQUk9CRVMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwcmVwYXJlX3VyZXRwcm9iZSYjMzQ7LAogICAgJiMzNDtocHJvYmVfZXhwaXJlJiMzNDssCiAgICAmIzM0O2hwcm9iZV9maW5hbGl6ZSYjMzQ7LAogICAgJiMzNDtyaV90aW1lciYjMzQ7LAogICAgJiMzNDtkdXBfdXRhc2smIzM0OywKICAgICYjMzQ7ZnJlZV9yZXRfaW5zdGFuY2UmIzM0OywKICAgICYjMzQ7dXByb2JlX2hhbmRsZV90cmFtcG9saW5lJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB1cHJvYmVzIHN1YnN5c3RlbSB0byB1c2UgdGhlIG5ldyBmYXN0IHVwL2Rvd24gU1JDVSByZWFkIGxvY2sgdmFyaWFudHMgKGBzcmN1X2Rvd25fcmVhZF9mYXN0YCBhbmQgYHNyY3VfdXBfcmVhZF9mYXN0YCkgZm9yIGB1cmV0cHJvYmVzX3NyY3VgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBrZXJuZWwgbG9naWMgdGhhdCBhZmZlY3RzIGhvdyB1cHJvYmVzIGFyZSBsZWFzZWQgYW5kIGV4cGlyZWQsIHBhcnRpY3VsYXJseSBkdXJpbmcgdGFzayBkdXBsaWNhdGlvbiBhbmQgdGltZXIgY2FsbGJhY2tzLiBJdCBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDE6MTU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1MDlhYWRkNGMxZDVlNGNmODEyNzYwZWMyN2MzNjQ2ZDhmODllNDRkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgNyAwMToxNTozOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3NyY3UuaCBiL2luY2x1ZGUvbGludXgvc3JjdS5oXG5pbmRleCBhNTRjZTllODA4YjkyYy4uNzJjODZkM2IyM2YyZTQgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3NyY3UuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9zcmN1LmhcbkBAIC02MzgsNCAmIzQzOzYzOCwxMSBAQCBERUZJTkVfTE9DS19HVUFSRF8xKHNyY3VfZmFzdF9ub3RyYWNlLCBzdHJ1Y3Qgc3JjdV9zdHJ1Y3QsXG4gREVDTEFSRV9MT0NLX0dVQVJEXzFfQVRUUlMoc3JjdV9mYXN0X25vdHJhY2UsIF9fYWNxdWlyZXNfc2hhcmVkKF9UKSwgX19yZWxlYXNlc19zaGFyZWQoKihzdHJ1Y3Qgc3JjdV9zdHJ1Y3QgKiopX1QpKVxuICNkZWZpbmUgY2xhc3Nfc3JjdV9mYXN0X25vdHJhY2VfY29uc3RydWN0b3IoX1QpIFdJVEhfTE9DS19HVUFSRF8xX0FUVFJTKHNyY3VfZmFzdF9ub3RyYWNlLCBfVClcbiBcbiYjNDM7REVGSU5FX0xPQ0tfR1VBUkRfMShzcmN1X2Zhc3RfdXBkb3duLCBzdHJ1Y3Qgc3JjdV9zdHJ1Y3QsXG4mIzQzO1x0XHQgICAgX1QtXHUwMDNlc2NwID0gc3JjdV9yZWFkX2xvY2tfZmFzdF91cGRvd24oX1QtXHUwMDNlbG9jayksXG4mIzQzO1x0XHQgICAgc3JjdV9yZWFkX3VubG9ja19mYXN0X3VwZG93bihfVC1cdTAwM2Vsb2NrLCBfVC1cdTAwM2VzY3ApLFxuJiM0MztcdFx0ICAgIHN0cnVjdCBzcmN1X2N0ciBfX3BlcmNwdSAqc2NwKVxuJiM0MztERUNMQVJFX0xPQ0tfR1VBUkRfMV9BVFRSUyhzcmN1X2Zhc3RfdXBkb3duLCBfX2FjcXVpcmVzX3NoYXJlZChfVCksIF9fcmVsZWFzZXNfc2hhcmVkKCooc3RydWN0IHNyY3Vfc3RydWN0ICoqKV9UKSlcbiYjNDM7I2RlZmluZSBjbGFzc19zcmN1X2Zhc3RfdXBkb3duX2NvbnN0cnVjdG9yKF9UKSBXSVRIX0xPQ0tfR1VBUkRfMV9BVFRSUyhzcmN1X2Zhc3RfdXBkb3duLCBfVClcbiYjNDM7XG4gI2VuZGlmXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC91cHJvYmVzLmggYi9pbmNsdWRlL2xpbnV4L3Vwcm9iZXMuaFxuaW5kZXggZjU0OGZlYTJhZGVjOGYuLmYzYjA3NzUzYzJmM2Q4IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC91cHJvYmVzLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvdXByb2Jlcy5oXG5AQCAtMjUsNiAmIzQzOzI1LDcgQEAgc3RydWN0IG1tX3N0cnVjdDtcbiBzdHJ1Y3QgaW5vZGU7XG4gc3RydWN0IG5vdGlmaWVyX2Jsb2NrO1xuIHN0cnVjdCBwYWdlO1xuJiM0MztzdHJ1Y3Qgc3JjdV9jdHI7XG4gXG4gLypcbiAgKiBBbGxvd2VkIHJldHVybiB2YWx1ZXMgZnJvbSB1cHJvYmUgY29uc3VtZXImIzM5O3MgaGFuZGxlciBjYWxsYmFja1xuQEAgLTEwNiw3ICYjNDM7MTA3LDcgQEAgZW51bSBocHJvYmVfc3RhdGUge1xuICAqICAgICB1bmRlcmx5aW5nIHVwcm9iZSBpcyBub3QgZ3VhcmFudGVlZCBhbnltb3JlLiBfX1VQUk9CRV9ERUFEIGlzIGp1c3QgYW5cbiAgKiAgICAgaW50ZXJuYWwgbWFya2VyIGFuZCBpcyBoYW5kbGVkIHRyYW5zcGFyZW50bHkgYnkgaHByb2JlX2ZldGNoKCkgaGVscGVyLlxuICAqXG4tICogV2hlbiB1cHJvYmUgaXMgU1JDVS1wcm90ZWN0ZWQsIHdlIGFsc28gcmVjb3JkIHNyY3VfaWR4IHZhbHVlLCBuZWNlc3NhcnkgZm9yXG4mIzQzOyAqIFdoZW4gdXByb2JlIGlzIFNSQ1UtcHJvdGVjdGVkLCB3ZSBhbHNvIHJlY29yZCBzcmN1X3NjcCB2YWx1ZSwgbmVjZXNzYXJ5IGZvclxuICAqIFNSQ1UgdW5sb2NraW5nLlxuICAqXG4gICogU2VlIGhwcm9iZV9leHBpcmUoKSBhbmQgaHByb2JlX2ZldGNoKCkgZm9yIGRldGFpbHMgb2YgcmFjZS1mcmVlIHVwcm9iZVxuQEAgLTExNSw3ICYjNDM7MTE2LDcgQEAgZW51bSBocHJvYmVfc3RhdGUge1xuICAqL1xuIHN0cnVjdCBocHJvYmUge1xuIFx0ZW51bSBocHJvYmVfc3RhdGUgc3RhdGU7XG4tXHRpbnQgc3JjdV9pZHg7XG4mIzQzO1x0c3RydWN0IHNyY3VfY3RyIF9fcGVyY3B1ICpzcmN1X3NjcDtcbiBcdHN0cnVjdCB1cHJvYmUgKnVwcm9iZTtcbiB9O1xuIFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9ldmVudHMvdXByb2Jlcy5jIGIva2VybmVsL2V2ZW50cy91cHJvYmVzLmNcbmluZGV4IDQwODRlOTI2ZTI4NDQ4Li5hZmE0OTFiMGJkM2Y5MCAxMDA2NDRcbi0tLSBhL2tlcm5lbC9ldmVudHMvdXByb2Jlcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuY1xuQEAgLTU0LDcgJiM0Mzs1NCw3IEBAIHN0YXRpYyBzdHJ1Y3QgbXV0ZXggdXByb2Jlc19tbWFwX211dGV4W1VQUk9CRVNfSEFTSF9TWl07XG4gREVGSU5FX1NUQVRJQ19QRVJDUFVfUldTRU0oZHVwX21tYXBfc2VtKTtcbiBcbiAvKiBDb3ZlcnMgcmV0dXJuX2luc3RhbmNlJiMzOTtzIHVwcm9iZSBsaWZldGltZS4gKi9cbi1ERUZJTkVfU1RBVElDX1NSQ1UodXJldHByb2Jlc19zcmN1KTtcbiYjNDM7REVGSU5FX1NUQVRJQ19TUkNVX0ZBU1RfVVBET1dOKHVyZXRwcm9iZXNfc3JjdSk7XG4gXG4gLyogSGF2ZSBhIGNvcHkgb2Ygb3JpZ2luYWwgaW5zdHJ1Y3Rpb24gKi9cbiAjZGVmaW5lIFVQUk9CRV9DT1BZX0lOU05cdDBcbkBAIC03MDcsMTIgJiM0Mzs3MDcsMTMgQEAgc3RhdGljIHZvaWQgcHV0X3Vwcm9iZShzdHJ1Y3QgdXByb2JlICp1cHJvYmUpXG4gfVxuIFxuIC8qIEluaXRpYWxpemUgaHByb2JlIGFzIFNSQ1UtcHJvdGVjdGVkIFwmIzM0O2xlYXNlZFwmIzM0OyB1cHJvYmUgKi9cbi1zdGF0aWMgdm9pZCBocHJvYmVfaW5pdF9sZWFzZWQoc3RydWN0IGhwcm9iZSAqaHByb2JlLCBzdHJ1Y3QgdXByb2JlICp1cHJvYmUsIGludCBzcmN1X2lkeClcbiYjNDM7c3RhdGljIHZvaWQgaHByb2JlX2luaXRfbGVhc2VkKHN0cnVjdCBocHJvYmUgKmhwcm9iZSwgc3RydWN0IHVwcm9iZSAqdXByb2JlLFxuJiM0MztcdFx0XHQgICAgICAgc3RydWN0IHNyY3VfY3RyIF9fcGVyY3B1ICpzcmN1X3NjcClcbiB7XG4gXHRXQVJOX09OKCF1cHJvYmUpO1xuIFx0aHByb2JlLVx1MDAzZXN0YXRlID0gSFBST0JFX0xFQVNFRDtcbiBcdGhwcm9iZS1cdTAwM2V1cHJvYmUgPSB1cHJvYmU7XG4tXHRocHJvYmUtXHUwMDNlc3JjdV9pZHggPSBzcmN1X2lkeDtcbiYjNDM7XHRocHJvYmUtXHUwMDNlc3JjdV9zY3AgPSBzcmN1X3NjcDtcbiB9XG4gXG4gLyogSW5pdGlhbGl6ZSBocHJvYmUgYXMgcmVmY291bnRlZCAoXCYjMzQ7c3RhYmxlXCYjMzQ7KSB1cHJvYmUgKHVwcm9iZSBjYW4gYmUgTlVMTCkuICovXG5AQCAtNzIwLDcgJiM0Mzs3MjEsNyBAQCBzdGF0aWMgdm9pZCBocHJvYmVfaW5pdF9zdGFibGUoc3RydWN0IGhwcm9iZSAqaHByb2JlLCBzdHJ1Y3QgdXByb2JlICp1cHJvYmUpXG4ge1xuIFx0aHByb2JlLVx1MDAzZXN0YXRlID0gdXByb2JlID8gSFBST0JFX1NUQUJMRSA6IEhQUk9CRV9HT05FO1xuIFx0aHByb2JlLVx1MDAzZXVwcm9iZSA9IHVwcm9iZTtcbi1cdGhwcm9iZS1cdTAwM2VzcmN1X2lkeCA9IC0xO1xuJiM0MztcdGhwcm9iZS1cdTAwM2VzcmN1X3NjcCA9IE5VTEw7XG4gfVxuIFxuIC8qXG5AQCAtNzU3LDcgJiM0Mzs3NTgsNyBAQCBzdGF0aWMgdm9pZCBocHJvYmVfZmluYWxpemUoc3RydWN0IGhwcm9iZSAqaHByb2JlLCBlbnVtIGhwcm9iZV9zdGF0ZSBoc3RhdGUpXG4ge1xuIFx0c3dpdGNoIChoc3RhdGUpIHtcbiBcdGNhc2UgSFBST0JFX0xFQVNFRDpcbi1cdFx0X19zcmN1X3JlYWRfdW5sb2NrKFx1MDAyNnVyZXRwcm9iZXNfc3JjdSwgaHByb2JlLVx1MDAzZXNyY3VfaWR4KTtcbiYjNDM7XHRcdHNyY3VfdXBfcmVhZF9mYXN0KFx1MDAyNnVyZXRwcm9iZXNfc3JjdSwgaHByb2JlLVx1MDAzZXNyY3Vfc2NwKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEhQUk9CRV9TVEFCTEU6XG4gXHRcdHB1dF91cHJvYmUoaHByb2JlLVx1MDAzZXVwcm9iZSk7XG5AQCAtODI5LDcgJiM0Mzs4MzAsNyBAQCBzdGF0aWMgc3RydWN0IHVwcm9iZSAqaHByb2JlX2V4cGlyZShzdHJ1Y3QgaHByb2JlICpocHJvYmUsIGJvb2wgZ2V0KVxuIFx0XHQgKi9cbiBcdFx0aWYgKHRyeV9jbXB4Y2hnKFx1MDAyNmhwcm9iZS1cdTAwM2VzdGF0ZSwgXHUwMDI2aHN0YXRlLCB1cHJvYmUgPyBIUFJPQkVfU1RBQkxFIDogSFBST0JFX0dPTkUpKSB7XG4gXHRcdFx0LyogV2Ugd29uIHRoZSByYWNlLCB3ZSBhcmUgdGhlIG9uZXMgdG8gdW5sb2NrIFNSQ1UgKi9cbi1cdFx0XHRfX3NyY3VfcmVhZF91bmxvY2soXHUwMDI2dXJldHByb2Jlc19zcmN1LCBocHJvYmUtXHUwMDNlc3JjdV9pZHgpO1xuJiM0MztcdFx0XHRzcmN1X3VwX3JlYWRfZmFzdChcdTAwMjZ1cmV0cHJvYmVzX3NyY3UsIGhwcm9iZS1cdTAwM2VzcmN1X3NjcCk7XG4gXHRcdFx0cmV0dXJuIGdldCA/IGdldF91cHJvYmUodXByb2JlKSA6IHVwcm9iZTtcbiBcdFx0fVxuIFxuQEAgLTIwNDUsNyAmIzQzOzIwNDYsNyBAQCBzdGF0aWMgdm9pZCByaV90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqdGltZXIpXG4gXHRzdHJ1Y3QgcmV0dXJuX2luc3RhbmNlICpyaTtcbiBcbiBcdC8qIFNSQ1UgcHJvdGVjdHMgdXByb2JlIGZyb20gcmV1c2UgZm9yIHRoZSBjbXB4Y2hnKCkgaW5zaWRlIGhwcm9iZV9leHBpcmUoKS4gKi9cbi1cdGd1YXJkKHNyY3UpKFx1MDAyNnVyZXRwcm9iZXNfc3JjdSk7XG4mIzQzO1x0Z3VhcmQoc3JjdV9mYXN0X3VwZG93bikoXHUwMDI2dXJldHByb2Jlc19zcmN1KTtcbiBcdC8qIFJDVSBwcm90ZWN0cyByZXR1cm5faW5zdGFuY2UgZnJvbSBmcmVlaW5nLiAqL1xuIFx0Z3VhcmQocmN1KSgpO1xuIFxuQEAgLTIxNDIsNyAmIzQzOzIxNDMsNyBAQCBzdGF0aWMgaW50IGR1cF91dGFzayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnQsIHN0cnVjdCB1cHJvYmVfdGFzayAqb191dGFzaylcbiBcdHQtXHUwMDNldXRhc2sgPSBuX3V0YXNrO1xuIFxuIFx0LyogcHJvdGVjdCB1cHJvYmVzIGZyb20gZnJlZWluZywgd2UmIzM5O2xsIG5lZWQgdHJ5X2dldF91cHJvYmUoKSB0aGVtICovXG4tXHRndWFyZChzcmN1KShcdTAwMjZ1cmV0cHJvYmVzX3NyY3UpO1xuJiM0MztcdGd1YXJkKHNyY3VfZmFzdF91cGRvd24pKFx1MDAyNnVyZXRwcm9iZXNfc3JjdSk7XG4gXG4gXHRwID0gXHUwMDI2bl91dGFzay1cdTAwM2VyZXR1cm5faW5zdGFuY2VzO1xuIFx0Zm9yIChvID0gb191dGFzay1cdTAwM2VyZXR1cm5faW5zdGFuY2VzOyBvOyBvID0gby1cdTAwM2VuZXh0KSB7XG5AQCAtMjI1NCw4ICYjNDM7MjI1NSw4IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVfdXJldHByb2JlKHN0cnVjdCB1cHJvYmUgKnVwcm9iZSwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsXG4ge1xuIFx0c3RydWN0IHVwcm9iZV90YXNrICp1dGFzayA9IGN1cnJlbnQtXHUwMDNldXRhc2s7XG4gXHR1bnNpZ25lZCBsb25nIG9yaWdfcmV0X3ZhZGRyLCB0cmFtcG9saW5lX3ZhZGRyO1xuJiM0MztcdHN0cnVjdCBzcmN1X2N0ciBfX3BlcmNwdSAqc3JjdV9zY3A7XG4gXHRib29sIGNoYWluZWQ7XG4tXHRpbnQgc3JjdV9pZHg7XG4gXG4gXHRpZiAoIWdldF94b2xfYXJlYSgpKVxuIFx0XHRnb3RvIGZyZWU7XG5AQCAtMjI5Myw4ICYjNDM7MjI5NCwxMiBAQCBzdGF0aWMgdm9pZCBwcmVwYXJlX3VyZXRwcm9iZShzdHJ1Y3QgdXByb2JlICp1cHJvYmUsIHN0cnVjdCBwdF9yZWdzICpyZWdzLFxuIFx0XHRvcmlnX3JldF92YWRkciA9IHV0YXNrLVx1MDAzZXJldHVybl9pbnN0YW5jZXMtXHUwMDNlb3JpZ19yZXRfdmFkZHI7XG4gXHR9XG4gXG4tXHQvKiBfX3NyY3VfcmVhZF9sb2NrKCkgYmVjYXVzZSBTUkNVIGxvY2sgc3Vydml2ZXMgc3dpdGNoIHRvIHVzZXIgc3BhY2UgKi9cbi1cdHNyY3VfaWR4ID0gX19zcmN1X3JlYWRfbG9jayhcdTAwMjZ1cmV0cHJvYmVzX3NyY3UpO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogVXNlIHNyY3VfZG93bl9yZWFkX2Zhc3QoKSBiZWNhdXNlIHRoZSBTUkNVIGxvY2sgc3Vydml2ZXMgYSBzd2l0Y2ggdG9cbiYjNDM7XHQgKiB1c2VyIHNwYWNlIGFuZCBjYW4gYmUgdW5sb2NrZWQgZnJvbSBhIGRpZmZlcmVudCBjb250ZXh0IGJ5IHJpX3RpbWVyKClcbiYjNDM7XHQgKiBvciBkdXBfdXRhc2soKS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRzcmN1X3NjcCA9IHNyY3VfZG93bl9yZWFkX2Zhc3QoXHUwMDI2dXJldHByb2Jlc19zcmN1KTtcbiBcbiBcdHJpLVx1MDAzZWZ1bmMgPSBpbnN0cnVjdGlvbl9wb2ludGVyKHJlZ3MpO1xuIFx0cmktXHUwMDNlc3RhY2sgPSB1c2VyX3N0YWNrX3BvaW50ZXIocmVncyk7XG5AQCAtMjMwMyw3ICYjNDM7MjMwOCw3IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVfdXJldHByb2JlKHN0cnVjdCB1cHJvYmUgKnVwcm9iZSwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsXG4gXG4gXHR1dGFzay1cdTAwM2VkZXB0aCYjNDM7JiM0Mzs7XG4gXG4tXHRocHJvYmVfaW5pdF9sZWFzZWQoXHUwMDI2cmktXHUwMDNlaHByb2JlLCB1cHJvYmUsIHNyY3VfaWR4KTtcbiYjNDM7XHRocHJvYmVfaW5pdF9sZWFzZWQoXHUwMDI2cmktXHUwMDNlaHByb2JlLCB1cHJvYmUsIHNyY3Vfc2NwKTtcbiBcdHJpLVx1MDAzZW5leHQgPSB1dGFzay1cdTAwM2VyZXR1cm5faW5zdGFuY2VzO1xuIFx0cmN1X2Fzc2lnbl9wb2ludGVyKHV0YXNrLVx1MDAzZXJldHVybl9pbnN0YW5jZXMsIHJpKTtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwMToxNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtVUFJPQkVTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cHJlcGFyZV91cmV0cHJvYmUmIzM0OywKICAgICYjMzQ7aHByb2JlX2V4cGlyZSYjMzQ7LAogICAgJiMzNDtocHJvYmVfZmluYWxpemUmIzM0OywKICAgICYjMzQ7cmlfdGltZXImIzM0OywKICAgICYjMzQ7ZHVwX3V0YXNrJiMzNDssCiAgICAmIzM0O2ZyZWVfcmV0X2luc3RhbmNlJiMzNDssCiAgICAmIzM0O3Vwcm9iZV9oYW5kbGVfdHJhbXBvbGluZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgdXByb2JlcyBzdWJzeXN0ZW0gdG8gdXNlIHRoZSBuZXcgZmFzdCB1cC9kb3duIFNSQ1UgcmVhZCBsb2NrIHZhcmlhbnRzIChgc3JjdV9kb3duX3JlYWRfZmFzdGAgYW5kIGBzcmN1X3VwX3JlYWRfZmFzdGApIGZvciBgdXJldHByb2Jlc19zcmN1YC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgYWZmZWN0cyBob3cgdXByb2JlcyBhcmUgbGVhc2VkIGFuZCBleHBpcmVkLCBwYXJ0aWN1bGFybHkgZHVyaW5nIHRhc2sgZHVwbGljYXRpb24gYW5kIHRpbWVyIGNhbGxiYWNrcy4gSXQgaXMgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1MDlhYWRkNGMxZDVlNGNmODEyNzYwZWMyN2MzNjQ2ZDhmODllNDRkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdWwgNyAwMToxNTozOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc3JjdS5oIGIvaW5jbHVkZS9saW51eC9zcmN1LmgKaW5kZXggYTU0Y2U5ZTgwOGI5MmMuLjcyYzg2ZDNiMjNmMmU0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3NyY3UuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3NyY3UuaApAQCAtNjM4LDQgJiM0Mzs2MzgsMTEgQEAgREVGSU5FX0xPQ0tfR1VBUkRfMShzcmN1X2Zhc3Rfbm90cmFjZSwgc3RydWN0IHNyY3Vfc3RydWN0LAogREVDTEFSRV9MT0NLX0dVQVJEXzFfQVRUUlMoc3JjdV9mYXN0X25vdHJhY2UsIF9fYWNxdWlyZXNfc2hhcmVkKF9UKSwgX19yZWxlYXNlc19zaGFyZWQoKihzdHJ1Y3Qgc3JjdV9zdHJ1Y3QgKiopX1QpKQogI2RlZmluZSBjbGFzc19zcmN1X2Zhc3Rfbm90cmFjZV9jb25zdHJ1Y3RvcihfVCkgV0lUSF9MT0NLX0dVQVJEXzFfQVRUUlMoc3JjdV9mYXN0X25vdHJhY2UsIF9UKQogCiYjNDM7REVGSU5FX0xPQ0tfR1VBUkRfMShzcmN1X2Zhc3RfdXBkb3duLCBzdHJ1Y3Qgc3JjdV9zdHJ1Y3QsCiYjNDM7CQkgICAgX1QtJmd0O3NjcCA9IHNyY3VfcmVhZF9sb2NrX2Zhc3RfdXBkb3duKF9ULSZndDtsb2NrKSwKJiM0MzsJCSAgICBzcmN1X3JlYWRfdW5sb2NrX2Zhc3RfdXBkb3duKF9ULSZndDtsb2NrLCBfVC0mZ3Q7c2NwKSwKJiM0MzsJCSAgICBzdHJ1Y3Qgc3JjdV9jdHIgX19wZXJjcHUgKnNjcCkKJiM0MztERUNMQVJFX0xPQ0tfR1VBUkRfMV9BVFRSUyhzcmN1X2Zhc3RfdXBkb3duLCBfX2FjcXVpcmVzX3NoYXJlZChfVCksIF9fcmVsZWFzZXNfc2hhcmVkKCooc3RydWN0IHNyY3Vfc3RydWN0ICoqKV9UKSkKJiM0MzsjZGVmaW5lIGNsYXNzX3NyY3VfZmFzdF91cGRvd25fY29uc3RydWN0b3IoX1QpIFdJVEhfTE9DS19HVUFSRF8xX0FUVFJTKHNyY3VfZmFzdF91cGRvd24sIF9UKQomIzQzOwogI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3Vwcm9iZXMuaCBiL2luY2x1ZGUvbGludXgvdXByb2Jlcy5oCmluZGV4IGY1NDhmZWEyYWRlYzhmLi5mM2IwNzc1M2MyZjNkOCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC91cHJvYmVzLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC91cHJvYmVzLmgKQEAgLTI1LDYgJiM0MzsyNSw3IEBAIHN0cnVjdCBtbV9zdHJ1Y3Q7CiBzdHJ1Y3QgaW5vZGU7CiBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2s7CiBzdHJ1Y3QgcGFnZTsKJiM0MztzdHJ1Y3Qgc3JjdV9jdHI7CiAKIC8qCiAgKiBBbGxvd2VkIHJldHVybiB2YWx1ZXMgZnJvbSB1cHJvYmUgY29uc3VtZXImIzM5O3MgaGFuZGxlciBjYWxsYmFjawpAQCAtMTA2LDcgJiM0MzsxMDcsNyBAQCBlbnVtIGhwcm9iZV9zdGF0ZSB7CiAgKiAgICAgdW5kZXJseWluZyB1cHJvYmUgaXMgbm90IGd1YXJhbnRlZWQgYW55bW9yZS4gX19VUFJPQkVfREVBRCBpcyBqdXN0IGFuCiAgKiAgICAgaW50ZXJuYWwgbWFya2VyIGFuZCBpcyBoYW5kbGVkIHRyYW5zcGFyZW50bHkgYnkgaHByb2JlX2ZldGNoKCkgaGVscGVyLgogICoKLSAqIFdoZW4gdXByb2JlIGlzIFNSQ1UtcHJvdGVjdGVkLCB3ZSBhbHNvIHJlY29yZCBzcmN1X2lkeCB2YWx1ZSwgbmVjZXNzYXJ5IGZvcgomIzQzOyAqIFdoZW4gdXByb2JlIGlzIFNSQ1UtcHJvdGVjdGVkLCB3ZSBhbHNvIHJlY29yZCBzcmN1X3NjcCB2YWx1ZSwgbmVjZXNzYXJ5IGZvcgogICogU1JDVSB1bmxvY2tpbmcuCiAgKgogICogU2VlIGhwcm9iZV9leHBpcmUoKSBhbmQgaHByb2JlX2ZldGNoKCkgZm9yIGRldGFpbHMgb2YgcmFjZS1mcmVlIHVwcm9iZQpAQCAtMTE1LDcgJiM0MzsxMTYsNyBAQCBlbnVtIGhwcm9iZV9zdGF0ZSB7CiAgKi8KIHN0cnVjdCBocHJvYmUgewogCWVudW0gaHByb2JlX3N0YXRlIHN0YXRlOwotCWludCBzcmN1X2lkeDsKJiM0MzsJc3RydWN0IHNyY3VfY3RyIF9fcGVyY3B1ICpzcmN1X3NjcDsKIAlzdHJ1Y3QgdXByb2JlICp1cHJvYmU7CiB9OwogCmRpZmYgLS1naXQgYS9rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYyBiL2tlcm5lbC9ldmVudHMvdXByb2Jlcy5jCmluZGV4IDQwODRlOTI2ZTI4NDQ4Li5hZmE0OTFiMGJkM2Y5MCAxMDA2NDQKLS0tIGEva2VybmVsL2V2ZW50cy91cHJvYmVzLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2V2ZW50cy91cHJvYmVzLmMKQEAgLTU0LDcgJiM0Mzs1NCw3IEBAIHN0YXRpYyBzdHJ1Y3QgbXV0ZXggdXByb2Jlc19tbWFwX211dGV4W1VQUk9CRVNfSEFTSF9TWl07CiBERUZJTkVfU1RBVElDX1BFUkNQVV9SV1NFTShkdXBfbW1hcF9zZW0pOwogCiAvKiBDb3ZlcnMgcmV0dXJuX2luc3RhbmNlJiMzOTtzIHVwcm9iZSBsaWZldGltZS4gKi8KLURFRklORV9TVEFUSUNfU1JDVSh1cmV0cHJvYmVzX3NyY3UpOwomIzQzO0RFRklORV9TVEFUSUNfU1JDVV9GQVNUX1VQRE9XTih1cmV0cHJvYmVzX3NyY3UpOwogCiAvKiBIYXZlIGEgY29weSBvZiBvcmlnaW5hbCBpbnN0cnVjdGlvbiAqLwogI2RlZmluZSBVUFJPQkVfQ09QWV9JTlNOCTAKQEAgLTcwNywxMiAmIzQzOzcwNywxMyBAQCBzdGF0aWMgdm9pZCBwdXRfdXByb2JlKHN0cnVjdCB1cHJvYmUgKnVwcm9iZSkKIH0KIAogLyogSW5pdGlhbGl6ZSBocHJvYmUgYXMgU1JDVS1wcm90ZWN0ZWQgJiMzNDtsZWFzZWQmIzM0OyB1cHJvYmUgKi8KLXN0YXRpYyB2b2lkIGhwcm9iZV9pbml0X2xlYXNlZChzdHJ1Y3QgaHByb2JlICpocHJvYmUsIHN0cnVjdCB1cHJvYmUgKnVwcm9iZSwgaW50IHNyY3VfaWR4KQomIzQzO3N0YXRpYyB2b2lkIGhwcm9iZV9pbml0X2xlYXNlZChzdHJ1Y3QgaHByb2JlICpocHJvYmUsIHN0cnVjdCB1cHJvYmUgKnVwcm9iZSwKJiM0MzsJCQkgICAgICAgc3RydWN0IHNyY3VfY3RyIF9fcGVyY3B1ICpzcmN1X3NjcCkKIHsKIAlXQVJOX09OKCF1cHJvYmUpOwogCWhwcm9iZS0mZ3Q7c3RhdGUgPSBIUFJPQkVfTEVBU0VEOwogCWhwcm9iZS0mZ3Q7dXByb2JlID0gdXByb2JlOwotCWhwcm9iZS0mZ3Q7c3JjdV9pZHggPSBzcmN1X2lkeDsKJiM0MzsJaHByb2JlLSZndDtzcmN1X3NjcCA9IHNyY3Vfc2NwOwogfQogCiAvKiBJbml0aWFsaXplIGhwcm9iZSBhcyByZWZjb3VudGVkICgmIzM0O3N0YWJsZSYjMzQ7KSB1cHJvYmUgKHVwcm9iZSBjYW4gYmUgTlVMTCkuICovCkBAIC03MjAsNyAmIzQzOzcyMSw3IEBAIHN0YXRpYyB2b2lkIGhwcm9iZV9pbml0X3N0YWJsZShzdHJ1Y3QgaHByb2JlICpocHJvYmUsIHN0cnVjdCB1cHJvYmUgKnVwcm9iZSkKIHsKIAlocHJvYmUtJmd0O3N0YXRlID0gdXByb2JlID8gSFBST0JFX1NUQUJMRSA6IEhQUk9CRV9HT05FOwogCWhwcm9iZS0mZ3Q7dXByb2JlID0gdXByb2JlOwotCWhwcm9iZS0mZ3Q7c3JjdV9pZHggPSAtMTsKJiM0MzsJaHByb2JlLSZndDtzcmN1X3NjcCA9IE5VTEw7CiB9CiAKIC8qCkBAIC03NTcsNyAmIzQzOzc1OCw3IEBAIHN0YXRpYyB2b2lkIGhwcm9iZV9maW5hbGl6ZShzdHJ1Y3QgaHByb2JlICpocHJvYmUsIGVudW0gaHByb2JlX3N0YXRlIGhzdGF0ZSkKIHsKIAlzd2l0Y2ggKGhzdGF0ZSkgewogCWNhc2UgSFBST0JFX0xFQVNFRDoKLQkJX19zcmN1X3JlYWRfdW5sb2NrKCZhbXA7dXJldHByb2Jlc19zcmN1LCBocHJvYmUtJmd0O3NyY3VfaWR4KTsKJiM0MzsJCXNyY3VfdXBfcmVhZF9mYXN0KCZhbXA7dXJldHByb2Jlc19zcmN1LCBocHJvYmUtJmd0O3NyY3Vfc2NwKTsKIAkJYnJlYWs7CiAJY2FzZSBIUFJPQkVfU1RBQkxFOgogCQlwdXRfdXByb2JlKGhwcm9iZS0mZ3Q7dXByb2JlKTsKQEAgLTgyOSw3ICYjNDM7ODMwLDcgQEAgc3RhdGljIHN0cnVjdCB1cHJvYmUgKmhwcm9iZV9leHBpcmUoc3RydWN0IGhwcm9iZSAqaHByb2JlLCBib29sIGdldCkKIAkJICovCiAJCWlmICh0cnlfY21weGNoZygmYW1wO2hwcm9iZS0mZ3Q7c3RhdGUsICZhbXA7aHN0YXRlLCB1cHJvYmUgPyBIUFJPQkVfU1RBQkxFIDogSFBST0JFX0dPTkUpKSB7CiAJCQkvKiBXZSB3b24gdGhlIHJhY2UsIHdlIGFyZSB0aGUgb25lcyB0byB1bmxvY2sgU1JDVSAqLwotCQkJX19zcmN1X3JlYWRfdW5sb2NrKCZhbXA7dXJldHByb2Jlc19zcmN1LCBocHJvYmUtJmd0O3NyY3VfaWR4KTsKJiM0MzsJCQlzcmN1X3VwX3JlYWRfZmFzdCgmYW1wO3VyZXRwcm9iZXNfc3JjdSwgaHByb2JlLSZndDtzcmN1X3NjcCk7CiAJCQlyZXR1cm4gZ2V0ID8gZ2V0X3Vwcm9iZSh1cHJvYmUpIDogdXByb2JlOwogCQl9CiAKQEAgLTIwNDUsNyAmIzQzOzIwNDYsNyBAQCBzdGF0aWMgdm9pZCByaV90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqdGltZXIpCiAJc3RydWN0IHJldHVybl9pbnN0YW5jZSAqcmk7CiAKIAkvKiBTUkNVIHByb3RlY3RzIHVwcm9iZSBmcm9tIHJldXNlIGZvciB0aGUgY21weGNoZygpIGluc2lkZSBocHJvYmVfZXhwaXJlKCkuICovCi0JZ3VhcmQoc3JjdSkoJmFtcDt1cmV0cHJvYmVzX3NyY3UpOwomIzQzOwlndWFyZChzcmN1X2Zhc3RfdXBkb3duKSgmYW1wO3VyZXRwcm9iZXNfc3JjdSk7CiAJLyogUkNVIHByb3RlY3RzIHJldHVybl9pbnN0YW5jZSBmcm9tIGZyZWVpbmcuICovCiAJZ3VhcmQocmN1KSgpOwogCkBAIC0yMTQyLDcgJiM0MzsyMTQzLDcgQEAgc3RhdGljIGludCBkdXBfdXRhc2soc3RydWN0IHRhc2tfc3RydWN0ICp0LCBzdHJ1Y3QgdXByb2JlX3Rhc2sgKm9fdXRhc2spCiAJdC0mZ3Q7dXRhc2sgPSBuX3V0YXNrOwogCiAJLyogcHJvdGVjdCB1cHJvYmVzIGZyb20gZnJlZWluZywgd2UmIzM5O2xsIG5lZWQgdHJ5X2dldF91cHJvYmUoKSB0aGVtICovCi0JZ3VhcmQoc3JjdSkoJmFtcDt1cmV0cHJvYmVzX3NyY3UpOwomIzQzOwlndWFyZChzcmN1X2Zhc3RfdXBkb3duKSgmYW1wO3VyZXRwcm9iZXNfc3JjdSk7CiAKIAlwID0gJmFtcDtuX3V0YXNrLSZndDtyZXR1cm5faW5zdGFuY2VzOwogCWZvciAobyA9IG9fdXRhc2stJmd0O3JldHVybl9pbnN0YW5jZXM7IG87IG8gPSBvLSZndDtuZXh0KSB7CkBAIC0yMjU0LDggJiM0MzsyMjU1LDggQEAgc3RhdGljIHZvaWQgcHJlcGFyZV91cmV0cHJvYmUoc3RydWN0IHVwcm9iZSAqdXByb2JlLCBzdHJ1Y3QgcHRfcmVncyAqcmVncywKIHsKIAlzdHJ1Y3QgdXByb2JlX3Rhc2sgKnV0YXNrID0gY3VycmVudC0mZ3Q7dXRhc2s7CiAJdW5zaWduZWQgbG9uZyBvcmlnX3JldF92YWRkciwgdHJhbXBvbGluZV92YWRkcjsKJiM0MzsJc3RydWN0IHNyY3VfY3RyIF9fcGVyY3B1ICpzcmN1X3NjcDsKIAlib29sIGNoYWluZWQ7Ci0JaW50IHNyY3VfaWR4OwogCiAJaWYgKCFnZXRfeG9sX2FyZWEoKSkKIAkJZ290byBmcmVlOwpAQCAtMjI5Myw4ICYjNDM7MjI5NCwxMiBAQCBzdGF0aWMgdm9pZCBwcmVwYXJlX3VyZXRwcm9iZShzdHJ1Y3QgdXByb2JlICp1cHJvYmUsIHN0cnVjdCBwdF9yZWdzICpyZWdzLAogCQlvcmlnX3JldF92YWRkciA9IHV0YXNrLSZndDtyZXR1cm5faW5zdGFuY2VzLSZndDtvcmlnX3JldF92YWRkcjsKIAl9CiAKLQkvKiBfX3NyY3VfcmVhZF9sb2NrKCkgYmVjYXVzZSBTUkNVIGxvY2sgc3Vydml2ZXMgc3dpdGNoIHRvIHVzZXIgc3BhY2UgKi8KLQlzcmN1X2lkeCA9IF9fc3JjdV9yZWFkX2xvY2soJmFtcDt1cmV0cHJvYmVzX3NyY3UpOwomIzQzOwkvKgomIzQzOwkgKiBVc2Ugc3JjdV9kb3duX3JlYWRfZmFzdCgpIGJlY2F1c2UgdGhlIFNSQ1UgbG9jayBzdXJ2aXZlcyBhIHN3aXRjaCB0bwomIzQzOwkgKiB1c2VyIHNwYWNlIGFuZCBjYW4gYmUgdW5sb2NrZWQgZnJvbSBhIGRpZmZlcmVudCBjb250ZXh0IGJ5IHJpX3RpbWVyKCkKJiM0MzsJICogb3IgZHVwX3V0YXNrKCkuCiYjNDM7CSAqLwomIzQzOwlzcmN1X3NjcCA9IHNyY3VfZG93bl9yZWFkX2Zhc3QoJmFtcDt1cmV0cHJvYmVzX3NyY3UpOwogCiAJcmktJmd0O2Z1bmMgPSBpbnN0cnVjdGlvbl9wb2ludGVyKHJlZ3MpOwogCXJpLSZndDtzdGFjayA9IHVzZXJfc3RhY2tfcG9pbnRlcihyZWdzKTsKQEAgLTIzMDMsNyAmIzQzOzIzMDgsNyBAQCBzdGF0aWMgdm9pZCBwcmVwYXJlX3VyZXRwcm9iZShzdHJ1Y3QgdXByb2JlICp1cHJvYmUsIHN0cnVjdCBwdF9yZWdzICpyZWdzLAogCiAJdXRhc2stJmd0O2RlcHRoJiM0MzsmIzQzOzsKIAotCWhwcm9iZV9pbml0X2xlYXNlZCgmYW1wO3JpLSZndDtocHJvYmUsIHVwcm9iZSwgc3JjdV9pZHgpOwomIzQzOwlocHJvYmVfaW5pdF9sZWFzZWQoJmFtcDtyaS0mZ3Q7aHByb2JlLCB1cHJvYmUsIHNyY3Vfc2NwKTsKIAlyaS0mZ3Q7bmV4dCA9IHV0YXNrLSZndDtyZXR1cm5faW5zdGFuY2VzOwogCXJjdV9hc3NpZ25fcG9pbnRlcih1dGFzay0mZ3Q7cmV0dXJuX2luc3RhbmNlcywgcmkpOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDAxOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwMDEKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAyNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgVGhpcyBLZXJuZWwgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIG1ha2luZyBzb21lIHByZXR0eSBzaWduaWZpY2FudCBjaGFuZ2VzIHRvIHVwcm9iZXMgYW5kIFNSQ1UuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIGFib3V0IG9wdGltaXppbmcgU1JDVSwgaW50cm9kdWNpbmcgdGhpcyBgc3JjdV9mYXN0X3VwZG93bmAgYW5kIGNoYW5naW5nIGB1cmV0cHJvYmVzX3NyY3VgIHRvIHVzZSBgREVGSU5FX1NUQVRJQ19TUkNVX0ZBU1RfVVBET1dOYC4gIEJhc2ljYWxseSwgaXQgbG9va3MgbGlrZSB0aGV5JiMzOTtyZSB0cnlpbmcgdG8gc3BlZWQgdXAgcmVhZCBvcGVyYXRpb25zIHdpdGggYHNyY3VfZG93bl9yZWFkX2Zhc3RgIHJlcGxhY2luZyBgX19zcmN1X3JlYWRfbG9ja2AgYW5kIGBzcmN1X3VwX3JlYWRfZmFzdGAgcmVwbGFjaW5nIGBfX3NyY3VfcmVhZF91bmxvY2tgLiBGdW5jdGlvbmFsbHksIHRoaXMgaXMgYSBkZWZpbml0ZSBjaGFuZ2UgaW4gaG93IHVwcm9iZXMgYW5kIFNSQ1UgaW50ZXJhY3Qgd2l0aGluIHRoZSBrZXJuZWwsIHNvIHRoaXMgbmVlZHMgdG8gYmUgZnV6emVkIGhlYXZpbHkuCgpJIG5lZWQgdG8gZm9jdXMgbXkgZnV6emluZyBlZmZvcnRzIG9uIHRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgdGhhdCB0aGlzIHBhdGNoIGFjdHVhbGx5IG1vZGlmaWVzOiBgaHByb2JlX2luaXRfbGVhc2VkYCwgYGhwcm9iZV9pbml0X3N0YWJsZWAsIGBocHJvYmVfZmluYWxpemVgLCBgaHByb2JlX2V4cGlyZWAsIGByaV90aW1lcmAsIGBkdXBfdXRhc2tgLCBhbmQgYHByZXBhcmVfdXJldHByb2JlYC4gVGhlc2UgYXJlIHRoZSBrZXkgYXJlYXMgd2hlcmUgdGhlIG5ldyBTUkNVIG1lY2hhbmlzbXMgYXJlIGdvaW5nIHRvIGJlIGludGVyYWN0aW5nLgoKQWxyaWdodCwgSSBuZWVkIHRvIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IGBDT05GSUdfVVBST0JFU2AgaXMgZW5hYmxlZC4gU2luY2UgU1JDVSBpcyBjb3JlLCBJIGRvbiYjMzk7dCBuZWVkIHRvIGNoZWNrIGZvciBhbnkgc3BlY2lhbCBjb25maWd1cmF0aW9ucyBmb3IgU1JDVSBpdHNlbGYuIEkmIzM5O2xsIG5lZWQgdG8gdXNlIG15IHRvb2xzIHRvIHZlcmlmeSB0aGF0IGBDT05GSUdfVVBST0JFU2AgaXMgc2V0IGNvcnJlY3RseSBiZWZvcmUgSSBnZXQgc3RhcnRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwMToxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfVVBST0JFUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FybS9wcm9iZXMvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG5hcmNoL2FybS9wcm9iZXMvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfVVBST0JFUylcdFx0JiM0Mzs9IGRlY29kZS5vIGRlY29kZS1hcm0ubyB1cHJvYmVzL1xuYXJjaC9hcm0vcHJvYmVzL01ha2VmaWxlLTMtb2JqLSQoQ09ORklHX0tQUk9CRVMpXHRcdCYjNDM7PSBkZWNvZGUubyBrcHJvYmVzL1xuLS1cbmFyY2gvYXJtL3Byb2Jlcy91cHJvYmVzL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5hcmNoL2FybS9wcm9iZXMvdXByb2Jlcy9NYWtlZmlsZToyOm9iai0kKENPTkZJR19VUFJPQkVTKVx0XHQmIzQzOz0gY29yZS5vIGFjdGlvbnMtYXJtLm9cbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3Vwcm9iZXMuaD0zMT1pbnQgdXByb2JlX2Jya19oYW5kbGVyKHN0cnVjdCBwdF9yZWdzICpyZWdzLCB1bnNpZ25lZCBsb25nIGVzcik7XG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3Vwcm9iZXMuaDozMjojaWZkZWYgQ09ORklHX1VQUk9CRVNcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vdXByb2Jlcy5oLTMzLWludCB1cHJvYmVfc2luZ2xlX3N0ZXBfaGFuZGxlcihzdHJ1Y3QgcHRfcmVncyAqcmVncywgdW5zaWduZWQgbG9uZyBlc3IpO1xuLS1cbmFyY2gvYXJtNjQva2VybmVsL2RlYnVnLW1vbml0b3JzLmM9MjU0PXZvaWQgZG9fZWwwX2JyazY0KHVuc2lnbmVkIGxvbmcgZXNyLCBzdHJ1Y3QgcHRfcmVncyAqcmVncylcbmFyY2gvYXJtNjQva2VybmVsL2RlYnVnLW1vbml0b3JzLmMtMjU1LXtcbmFyY2gvYXJtNjQva2VybmVsL2RlYnVnLW1vbml0b3JzLmM6MjU2Olx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1VQUk9CRVMpIFx1MDAyNlx1MDAyNlxuYXJjaC9hcm02NC9rZXJuZWwvZGVidWctbW9uaXRvcnMuYy0yNTctXHRcdGVzcl9icmtfY29tbWVudChlc3IpID09IFVQUk9CRVNfQlJLX0lNTSBcdTAwMjZcdTAwMjZcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9wcm9iZXMvTWFrZWZpbGU9Mj1vYmotJChDT05GSUdfS1BST0JFUylcdFx0JiM0Mzs9IGtwcm9iZXMubyBkZWNvZGUtaW5zbi5vXHRcXFxuLS1cbmFyY2gvYXJtNjQva2VybmVsL3Byb2Jlcy9NYWtlZmlsZS00LVx0XHRcdFx0ICAgc2ltdWxhdGUtaW5zbi5vXG5hcmNoL2FybTY0L2tlcm5lbC9wcm9iZXMvTWFrZWZpbGU6NTpvYmotJChDT05GSUdfVVBST0JFUylcdFx0JiM0Mzs9IHVwcm9iZXMubyBkZWNvZGUtaW5zbi5vXHRcXFxuYXJjaC9hcm02NC9rZXJuZWwvcHJvYmVzL01ha2VmaWxlLTYtXHRcdFx0XHQgICBzaW11bGF0ZS1pbnNuLm9cbi0tXG5hcmNoL2Nza3kva2VybmVsL3Byb2Jlcy9NYWtlZmlsZT00PW9iai0kKENPTkZJR19LUFJPQkVTX09OX0ZUUkFDRSlcdCYjNDM7PSBmdHJhY2Uub1xuYXJjaC9jc2t5L2tlcm5lbC9wcm9iZXMvTWFrZWZpbGU6NTpvYmotJChDT05GSUdfVVBST0JFUylcdFx0JiM0Mzs9IHVwcm9iZXMubyBkZWNvZGUtaW5zbi5vIHNpbXVsYXRlLWluc24ub1xuYXJjaC9jc2t5L2tlcm5lbC9wcm9iZXMvTWFrZWZpbGUtNi1cbi0tXG5hcmNoL2Nza3kva2VybmVsL3RyYXBzLmM9MTY5PWFzbWxpbmthZ2Ugdm9pZCBkb190cmFwX2JrcHQoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4tLVxuYXJjaC9jc2t5L2tlcm5lbC90cmFwcy5jLTE3NC0jZW5kaWZcbmFyY2gvY3NreS9rZXJuZWwvdHJhcHMuYzoxNzU6I2lmZGVmIENPTkZJR19VUFJPQkVTXG5hcmNoL2Nza3kva2VybmVsL3RyYXBzLmMtMTc2LVx0aWYgKHVwcm9iZV9zaW5nbGVfc3RlcF9oYW5kbGVyKHJlZ3MpKVxuLS1cbmFyY2gvY3NreS9rZXJuZWwvdHJhcHMuYz0xODg9YXNtbGlua2FnZSB2b2lkIGRvX3RyYXBfaWxsaW5zbihzdHJ1Y3QgcHRfcmVncyAqcmVncylcbi0tXG5hcmNoL2Nza3kva2VybmVsL3RyYXBzLmMtMTk1LSNlbmRpZlxuYXJjaC9jc2t5L2tlcm5lbC90cmFwcy5jOjE5NjojaWZkZWYgQ09ORklHX1VQUk9CRVNcbmFyY2gvY3NreS9rZXJuZWwvdHJhcHMuYy0xOTctXHRpZiAodXByb2JlX2JyZWFrcG9pbnRfaGFuZGxlcihyZWdzKSlcbi0tXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS91cHJvYmVzLmg9MjM9c3RydWN0IGFyY2hfdXByb2JlX3Rhc2sge1xuLS1cbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL3Vwcm9iZXMuaC0yNi1cbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL3Vwcm9iZXMuaDoyNzojaWZkZWYgQ09ORklHX1VQUk9CRVNcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL3Vwcm9iZXMuaC0yOC1ib29sIHVwcm9iZV9icmVha3BvaW50X2hhbmRsZXIoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpO1xuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vdXByb2Jlcy5oPTI5PWJvb2wgdXByb2JlX3NpbmdsZXN0ZXBfaGFuZGxlcihzdHJ1Y3QgcHRfcmVncyAqcmVncyk7XG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS91cHJvYmVzLmg6MzA6I2Vsc2UgLyogIUNPTkZJR19VUFJPQkVTICovXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS91cHJvYmVzLmgtMzEtc3RhdGljIGlubGluZSBib29sIHVwcm9iZV9icmVha3BvaW50X2hhbmRsZXIoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpIHsgcmV0dXJuIGZhbHNlOyB9XG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS91cHJvYmVzLmg9MzI9c3RhdGljIGlubGluZSBib29sIHVwcm9iZV9zaW5nbGVzdGVwX2hhbmRsZXIoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpIHsgcmV0dXJuIGZhbHNlOyB9XG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS91cHJvYmVzLmg6MzM6I2VuZGlmIC8qIENPTkZJR19VUFJPQkVTICovXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS91cHJvYmVzLmgtMzQtXG4tLVxuYXJjaC9sb29uZ2FyY2gva2VybmVsL01ha2VmaWxlPTc3PW9iai0kKENPTkZJR19SRVRIT09LKVx0XHQmIzQzOz0gcmV0aG9vay5vIHJldGhvb2tfdHJhbXBvbGluZS5vXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvTWFrZWZpbGU6Nzg6b2JqLSQoQ09ORklHX1VQUk9CRVMpXHRcdCYjNDM7PSB1cHJvYmVzLm9cbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC9NYWtlZmlsZS03OS1cbi0tXG5hcmNoL21pcHMva2VybmVsL01ha2VmaWxlPTEwNT1vYmotJChDT05GSUdfSlVNUF9MQUJFTClcdCYjNDM7PSBqdW1wX2xhYmVsLm9cbmFyY2gvbWlwcy9rZXJuZWwvTWFrZWZpbGU6MTA2Om9iai0kKENPTkZJR19VUFJPQkVTKVx0XHQmIzQzOz0gdXByb2Jlcy5vXG5hcmNoL21pcHMva2VybmVsL01ha2VmaWxlLTEwNy1cbi0tXG5hcmNoL21pcHMva2VybmVsL2JyYW5jaC5jPTg0OT1pbnQgX19jb21wdXRlX3JldHVybl9lcGMoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4tLVxuYXJjaC9taXBzL2tlcm5lbC9icmFuY2guYy04NzUtXG5hcmNoL21pcHMva2VybmVsL2JyYW5jaC5jOjg3NjojaWYgKGRlZmluZWQgQ09ORklHX0tQUk9CRVMpIHx8IChkZWZpbmVkIENPTkZJR19VUFJPQkVTKVxuYXJjaC9taXBzL2tlcm5lbC9icmFuY2guYy04NzctXG4tLVxuYXJjaC9taXBzL2tlcm5lbC9icmFuY2guYz05MDY9RVhQT1JUX1NZTUJPTF9HUEwoX19pbnNuX2lzX2NvbXBhY3RfYnJhbmNoKTtcbmFyY2gvbWlwcy9rZXJuZWwvYnJhbmNoLmMtOTA3LVxuYXJjaC9taXBzL2tlcm5lbC9icmFuY2guYzo5MDg6I2VuZGlmICAvKiBDT05GSUdfS1BST0JFUyB8fCBDT05GSUdfVVBST0JFUyAqL1xuLS1cbmFyY2gvcG93ZXJwYy9rZXJuZWwvTWFrZWZpbGU9MTQwPW9iai0kKENPTkZJR19LUFJPQkVTX09OX0ZUUkFDRSlcdCYjNDM7PSBrcHJvYmVzLWZ0cmFjZS5vXG5hcmNoL3Bvd2VycGMva2VybmVsL01ha2VmaWxlOjE0MTpvYmotJChDT05GSUdfVVBST0JFUylcdFx0JiM0Mzs9IHVwcm9iZXMub1xuYXJjaC9wb3dlcnBjL2tlcm5lbC9NYWtlZmlsZS0xNDItb2JqLSQoQ09ORklHX1JFVEhPT0spICAgICAgICAgICAmIzQzOz0gcmV0aG9vay5vXG4tLVxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS91cHJvYmVzLmg9Mjc9c3RydWN0IGFyY2hfdXByb2JlIHtcbi0tXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3Vwcm9iZXMuaC0zNi1cbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vdXByb2Jlcy5oOjM3OiNpZmRlZiBDT05GSUdfVVBST0JFU1xuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS91cHJvYmVzLmgtMzgtYm9vbCB1cHJvYmVfYnJlYWtwb2ludF9oYW5kbGVyKHN0cnVjdCBwdF9yZWdzICpyZWdzKTtcbi0tXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3Vwcm9iZXMuaD00Nj1zdGF0aWMgaW5saW5lIGJvb2wgdXByb2JlX3NpbmdsZV9zdGVwX2hhbmRsZXIoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4tLVxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS91cHJvYmVzLmgtNDktfVxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS91cHJvYmVzLmg6NTA6I2VuZGlmIC8qIENPTkZJR19VUFJPQkVTICovXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3Vwcm9iZXMuaC01MS0jZW5kaWYgLyogX0FTTV9SSVNDVl9VUFJPQkVTX0ggKi9cbi0tXG5hcmNoL3Jpc2N2L2tlcm5lbC9wcm9iZXMvTWFrZWZpbGU9Mz1vYmotJChDT05GSUdfUkVUSE9PSylcdFx0JiM0Mzs9IHJldGhvb2subyByZXRob29rX3RyYW1wb2xpbmUub1xuYXJjaC9yaXNjdi9rZXJuZWwvcHJvYmVzL01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX1VQUk9CRVMpXHRcdCYjNDM7PSB1cHJvYmVzLm8gZGVjb2RlLWluc24ubyBzaW11bGF0ZS1pbnNuLm9cbmFyY2gvcmlzY3Yva2VybmVsL3Byb2Jlcy9NYWtlZmlsZS01LUNGTEFHU19SRU1PVkVfc2ltdWxhdGUtaW5zbi5vID0gJChDQ19GTEFHU19GVFJBQ0UpXG4tLVxuYXJjaC9zMzkwL2tlcm5lbC9NYWtlZmlsZT02OD1vYmotJChDT05GSUdfVk1DT1JFX0lORk8pXHQmIzQzOz0gdm1jb3JlX2luZm8ub1xuYXJjaC9zMzkwL2tlcm5lbC9NYWtlZmlsZTo2OTpvYmotJChDT05GSUdfVVBST0JFUylcdFx0JiM0Mzs9IHVwcm9iZXMub1xuYXJjaC9zMzkwL2tlcm5lbC9NYWtlZmlsZS03MC1vYmotJChDT05GSUdfSlVNUF9MQUJFTClcdCYjNDM7PSBqdW1wX2xhYmVsLm9cbi0tXG5hcmNoL3MzOTAva2VybmVsL3RyYXBzLmM9MTQwPXN0YXRpYyB2b2lkIGlsbGVnYWxfb3Aoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4tLVxuYXJjaC9zMzkwL2tlcm5lbC90cmFwcy5jLTE1NS1cdFx0XHRcdHNpZ25hbCA9IFNJR0lMTDtcbmFyY2gvczM5MC9rZXJuZWwvdHJhcHMuYzoxNTY6I2lmZGVmIENPTkZJR19VUFJPQkVTXG5hcmNoL3MzOTAva2VybmVsL3RyYXBzLmMtMTU3LVx0XHR9IGVsc2UgaWYgKG9wY29kZSA9PSBVUFJPQkVfU1dCUF9JTlNOKSB7XG4tLVxuYXJjaC9zMzkwL2xpYi9NYWtlZmlsZT0xMz1saWItJChDT05GSUdfS1BST0JFUykgJiM0Mzs9IHByb2Jlcy5vXG5hcmNoL3MzOTAvbGliL01ha2VmaWxlOjE0OmxpYi0kKENPTkZJR19VUFJPQkVTKSAmIzQzOz0gcHJvYmVzLm9cbmFyY2gvczM5MC9saWIvTWFrZWZpbGUtMTUtb2JqLSQoQ09ORklHX1MzOTBfS1BST0JFU19TQU5JVFlfVEVTVCkgJiM0Mzs9IHRlc3Rfa3Byb2Jlc19zMzkwLm9cbi0tXG5hcmNoL3NwYXJjL2luY2x1ZGUvYXNtL3R0YWJsZS5oLTE4OS1cbmFyY2gvc3BhcmMvaW5jbHVkZS9hc20vdHRhYmxlLmg6MTkwOiNpZmRlZiBDT05GSUdfVVBST0JFU1xuYXJjaC9zcGFyYy9pbmNsdWRlL2FzbS90dGFibGUuaC0xOTEtI2RlZmluZSBVUFJPQkVTX1RSQVAobHZsKSBUUkFQX0FSRyh1cHJvYmVfdHJhcCwgbHZsKVxuLS1cbmFyY2gvc3BhcmMva2VybmVsL01ha2VmaWxlPTExNz1vYmotJChDT05GSUdfU1BBUkM2NClcdCYjNDM7PSAkKHBjLS15KVxuYXJjaC9zcGFyYy9rZXJuZWwvTWFrZWZpbGUtMTE4LVxuYXJjaC9zcGFyYy9rZXJuZWwvTWFrZWZpbGU6MTE5Om9iai0kKENPTkZJR19VUFJPQkVTKVx0JiM0Mzs9IHVwcm9iZXMub1xuYXJjaC9zcGFyYy9rZXJuZWwvTWFrZWZpbGUtMTIwLW9iai0kKENPTkZJR19KVU1QX0xBQkVMKSAmIzQzOz0ganVtcF9sYWJlbC5vXG4tLVxuYXJjaC94ODYvaW5jbHVkZS9hc20vdXByb2Jlcy5oPTU3PXN0cnVjdCBhcmNoX3Vwcm9iZV90YXNrIHtcbi0tXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS91cHJvYmVzLmgtNjQtXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS91cHJvYmVzLmg6NjU6I2lmZGVmIENPTkZJR19VUFJPQkVTXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS91cHJvYmVzLmgtNjYtZXh0ZXJuIGJvb2wgaXNfdXByb2JlX2F0X2Z1bmNfZW50cnkoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpO1xuLS1cbmFyY2gveDg2L2luY2x1ZGUvYXNtL3Vwcm9iZXMuaD02OD1zdGF0aWMgYm9vbCBpc191cHJvYmVfYXRfZnVuY19lbnRyeShzdHJ1Y3QgcHRfcmVncyAqcmVncylcbi0tXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS91cHJvYmVzLmgtNzEtfVxuYXJjaC94ODYvaW5jbHVkZS9hc20vdXByb2Jlcy5oOjcyOiNlbmRpZiAvKiBDT05GSUdfVVBST0JFUyAqL1xuYXJjaC94ODYvaW5jbHVkZS9hc20vdXByb2Jlcy5oLTczLVxuLS1cbmFyY2gveDg2L2tlcm5lbC9NYWtlZmlsZT0xNTQ9b2JqLSQoQ09ORklHX09GKVx0XHRcdCYjNDM7PSBkZXZpY2V0cmVlLm9cbmFyY2gveDg2L2tlcm5lbC9NYWtlZmlsZToxNTU6b2JqLSQoQ09ORklHX1VQUk9CRVMpXHRcdFx0JiM0Mzs9IHVwcm9iZXMub1xuYXJjaC94ODYva2VybmVsL01ha2VmaWxlLTE1Ni1cbi0tXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmg9ODI2PXN0cnVjdCB0YXNrX3N0cnVjdCB7XG4tLVxuaW5jbHVkZS9saW51eC9zY2hlZC5oLTE1NjYtXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmg6MTU2NzojaWZkZWYgQ09ORklHX1VQUk9CRVNcbmluY2x1ZGUvbGludXgvc2NoZWQuaC0xNTY4LVx0c3RydWN0IHVwcm9iZV90YXNrXHRcdCp1dGFzaztcbi0tXG5pbmNsdWRlL2xpbnV4L3Vwcm9iZXMuaD00Nj1zdHJ1Y3QgdXByb2JlX2NvbnN1bWVyIHtcbi0tXG5pbmNsdWRlL2xpbnV4L3Vwcm9iZXMuaC02NS1cbmluY2x1ZGUvbGludXgvdXByb2Jlcy5oOjY2OiNpZmRlZiBDT05GSUdfVVBST0JFU1xuaW5jbHVkZS9saW51eC91cHJvYmVzLmgtNjctI2luY2x1ZGUgXHUwMDNjYXNtL3Vwcm9iZXMuaFx1MDAzZVxuLS1cbmluY2x1ZGUvbGludXgvdXByb2Jlcy5oPTI0Nj1leHRlcm4gdW5zaWduZWQgbG9uZyBhcmNoX3Vwcm9iZV9nZXRfeG9sX2FyZWEodm9pZCk7XG5pbmNsdWRlL2xpbnV4L3Vwcm9iZXMuaDoyNDc6I2Vsc2UgLyogIUNPTkZJR19VUFJPQkVTICovXG5pbmNsdWRlL2xpbnV4L3Vwcm9iZXMuaC0yNDgtc3RydWN0IHVwcm9iZXNfc3RhdGUge1xuLS1cbmluY2x1ZGUvbGludXgvdXByb2Jlcy5oPTMwNT1zdGF0aWMgaW5saW5lIHZvaWQgdXByb2JlX2NsZWFyX3N0YXRlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKVxuLS1cbmluY2x1ZGUvbGludXgvdXByb2Jlcy5oLTMwNy19XG5pbmNsdWRlL2xpbnV4L3Vwcm9iZXMuaDozMDg6I2VuZGlmIC8qICFDT05GSUdfVVBST0JFUyAqL1xuaW5jbHVkZS9saW51eC91cHJvYmVzLmgtMzA5LSNlbmRpZlx0LyogX0xJTlVYX1VQUk9CRVNfSCAqL1xuLS1cbmtlcm5lbC9ldmVudHMvTWFrZWZpbGU9NT1vYmotJChDT05GSUdfSFdfQlJFQUtQT0lOVF9LVU5JVF9URVNUKSAmIzQzOz0gaHdfYnJlYWtwb2ludF90ZXN0Lm9cbmtlcm5lbC9ldmVudHMvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfVVBST0JFUykgJiM0Mzs9IHVwcm9iZXMub1xuLS1cbmtlcm5lbC9ldmVudHMvY2FsbGNoYWluLmM9MTgxPXN0YXRpYyB2b2lkIGZpeHVwX3VyZXRwcm9iZV90cmFtcG9saW5lX2VudHJpZXMoc3RydWN0IHBlcmZfY2FsbGNoYWluX2VudHJ5ICplbnRyeSxcbi0tXG5rZXJuZWwvZXZlbnRzL2NhbGxjaGFpbi5jLTE4My17XG5rZXJuZWwvZXZlbnRzL2NhbGxjaGFpbi5jOjE4NDojaWZkZWYgQ09ORklHX1VQUk9CRVNcbmtlcm5lbC9ldmVudHMvY2FsbGNoYWluLmMtMTg1LVx0c3RydWN0IHVwcm9iZV90YXNrICp1dGFzayA9IGN1cnJlbnQtXHUwMDNldXRhc2s7XG4tLVxua2VybmVsL2ZvcmsuYz0xMDY4PXN0YXRpYyB2b2lkIG1tX2luaXRfdXByb2Jlc19zdGF0ZShzdHJ1Y3QgbW1fc3RydWN0ICptbSlcbmtlcm5lbC9mb3JrLmMtMTA2OS17XG5rZXJuZWwvZm9yay5jOjEwNzA6I2lmZGVmIENPTkZJR19VUFJPQkVTXG5rZXJuZWwvZm9yay5jLTEwNzEtXHRtbS1cdTAwM2V1cHJvYmVzX3N0YXRlLnhvbF9hcmVhID0gTlVMTDtcbi0tXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM9MTA4ND1CUEZfQ0FMTF8xKGJwZl9nZXRfZnVuY19pcF9rcHJvYmUsIHN0cnVjdCBwdF9yZWdzICosIHJlZ3MpXG4tLVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTEwODgtXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM6MTA4OTojaWZkZWYgQ09ORklHX1VQUk9CRVNcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xMDkwLVx0cnVuX2N0eCA9IGNvbnRhaW5lcl9vZihjdXJyZW50LVx1MDAzZWJwZl9jdHgsIHN0cnVjdCBicGZfdHJhY2VfcnVuX2N0eCwgcnVuX2N0eCk7XG4tLVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jPTI5NDQ9c3RhdGljIHU2NCBicGZfa3Byb2JlX211bHRpX2VudHJ5X2lwKHN0cnVjdCBicGZfcnVuX2N0eCAqY3R4KVxuLS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0yOTQ5LVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjI5NTA6I2lmZGVmIENPTkZJR19VUFJPQkVTXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMjk1MS1zdHJ1Y3QgYnBmX3Vwcm9iZV9tdWx0aV9saW5rO1xuLS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYz0zMjUxPWludCBicGZfdXByb2JlX211bHRpX2xpbmtfYXR0YWNoKGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG4tLVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTM0MDEtfVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjM0MDI6I2Vsc2UgLyogIUNPTkZJR19VUFJPQkVTICovXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMzQwMy1pbnQgYnBmX3Vwcm9iZV9tdWx0aV9saW5rX2F0dGFjaChjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0ciwgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxuLS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYz0zNDExPXN0YXRpYyB1NjQgYnBmX3Vwcm9iZV9tdWx0aV9lbnRyeV9pcChzdHJ1Y3QgYnBmX3J1bl9jdHggKmN0eClcbi0tXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMzQxNC19XG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM6MzQxNTojZW5kaWYgLyogQ09ORklHX1VQUk9CRVMgKi9cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0zNDE2LVxuLS1cbnRvb2xzL3NjaGVkX2V4dC9LY29uZmlnPTUzPUNPTkZJR19LUFJPQkVfRVZFTlRTPXlcbnRvb2xzL3NjaGVkX2V4dC9LY29uZmlnOjU0OkNPTkZJR19VUFJPQkVTPXlcbnRvb2xzL3NjaGVkX2V4dC9LY29uZmlnLTU1LUNPTkZJR19VUFJPQkVfRVZFTlRTPXlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLmFhcmNoNjQ9MTQ4PUNPTkZJR19VTklYPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuYWFyY2g2NDoxNDk6Q09ORklHX1VQUk9CRVM9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5hYXJjaDY0LTE1MC1DT05GSUdfVVNFUl9OUz15XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5wcGM2NGVsPTg1PUNPTkZJR19VTklYPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcucHBjNjRlbDo4NjpDT05GSUdfVVBST0JFUz15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnBwYzY0ZWwtODctQ09ORklHX1VTRVJfTlM9eVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcucmlzY3Y2ND03Nz1DT05GSUdfVU5JWD15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnJpc2N2NjQ6Nzg6Q09ORklHX1VQUk9CRVM9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5yaXNjdjY0LTc5LUNPTkZJR19VU0VSX05TPXlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnMzOTB4PTExOT1DT05GSUdfVU5JWD15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnMzOTB4OjEyMDpDT05GSUdfVVBST0JFUz15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnMzOTB4LTEyMS1DT05GSUdfVVNFUl9OUz15XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZnRyYWNlL2NvbmZpZz0yNz1DT05GSUdfVFJBQ0VSX1NOQVBTSE9UPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2Z0cmFjZS9jb25maWc6Mjg6Q09ORklHX1VQUk9CRVM9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZnRyYWNlL2NvbmZpZy0yOS1DT05GSUdfVVBST0JFX0VWRU5UUz15XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vY29uZmlnPTEyPUNPTkZJR19QUk9GSUxJTkc9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vY29uZmlnOjEzOkNPTkZJR19VUFJPQkVTPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2NvbmZpZy0xNC1DT05GSUdfTUVNT1JZX0ZBSUxVUkU9eVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Zzb2NrL2NvbmZpZz0xND1DT05GSUdfQVJDSF9TVVBQT1JUU19VUFJPQkVTPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Zzb2NrL2NvbmZpZzoxNTpDT05GSUdfVVBST0JFUz15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92c29jay9jb25maWctMTYtQ09ORklHX1VQUk9CRV9FVkVOVFM9eVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDAxOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkxNTAKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgVXByb2JlcyBFeGFtaW5hdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgdXByb2JlcyBjb2RlLiBNeSBmb2N1cyBuZWVkcyB0byBiZSBvbiBmdW5jdGlvbnMgcmVsYXRlZCB0byBgQ09ORklHX1VQUk9CRVNgLiBMZXQgbWUgc2VlLi4uIEkmIzM5O3ZlIGdvdCBhIGxpc3QgaGVyZTogYGhwcm9iZV9pbml0X2xlYXNlZGAsIGBocHJvYmVfaW5pdF9zdGFibGVgLCBgaHByb2JlX2ZpbmFsaXplYCwgYGhwcm9iZV9leHBpcmVgLCBgcmlfdGltZXJgLCBgZHVwX3V0YXNrYCwgYW5kIGBwcmVwYXJlX3VyZXRwcm9iZWAuIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayB0aGF0IGBDT05GSUdfVVBST0JFU2AgaXMgdGhlIG9ubHkgcmVsZXZhbnQgY29uZmlnLiBZZXMsIGl0JiMzOTtzIGVuYWJsZWQgYnkgZGVmYXVsdCBvbiBhIGxvdCBvZiBhcmNoaXRlY3R1cmVzLCBidXQgY29uZmlybWF0aW9uIGlzIGFsd2F5cyBhIGdvb2QgcHJhY3RpY2UuCgpOb3csIGxldCYjMzk7cyBsb29rIGNsb3NlciBhdCB0aGVzZSBmdW5jdGlvbnMuIEhtbSwgaXQgc2VlbXMgbGlrZSBgaHByb2JlX2luaXRfbGVhc2VkYCwgYGhwcm9iZV9pbml0X3N0YWJsZWAsIGBocHJvYmVfZmluYWxpemVgLCBgaHByb2JlX2V4cGlyZWAsIGByaV90aW1lcmAsIGBkdXBfdXRhc2tgLCBhbmQgYHByZXBhcmVfdXJldHByb2JlYCBhcmUgYWxsIG1hcmtlZCBhcyBzdGF0aWMuIE9rYXksIHNvIHdlJiMzOTtyZSBwcmltYXJpbHkgZGVhbGluZyB3aXRoIGludGVybmFsIGltcGxlbWVudGF0aW9ucyBoZXJlLCBub3RoaW5nIGRpcmVjdGx5IGV4cG9ydGVkLiBCdXQgd2FpdCwgYGR1cF91dGFza2AgaXMgc3RhdGljLi4uIGJ1dCBJICpzZWVtKiB0byByZWNhbGwgaXQgYmVpbmcgY2FsbGVkIGZyb20gYHVwcm9iZV9kdXBfbW1hcGAuIFRoYXQmIzM5O3MgYSBwb2ludCBvZiBpbnRlcmVzdC4gSSYjMzk7ZCBiZXR0ZXIgY29uZmlybSB0aGF0IGNhbGwgY2hhaW4uIEkgZG9uJiMzOTt0IHdhbnQgdG8gbWlzcyBhbnl0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwMToxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkdXBfdXRhc2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYz03NTc9c3RhdGljIHZvaWQgaHByb2JlX2ZpbmFsaXplKHN0cnVjdCBocHJvYmUgKmhwcm9iZSwgZW51bSBocHJvYmVfc3RhdGUgaHN0YXRlKVxuLS1cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTc4OC0gKiBhdHRlbXB0IHRyeV9nZXRfdXByb2JlKCksIGlmIGl0IG5lZWRzIHRvIHByZXNlcnZlIHVwcm9iZSBiZXlvbmQgY3VycmVudFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM6Nzg5OiAqIFNSQ1UgbG9jayByZWdpb24uIFNlZSBkdXBfdXRhc2soKS5cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTc5MC0gKi9cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jPTc5MT1zdGF0aWMgc3RydWN0IHVwcm9iZSAqaHByb2JlX2V4cGlyZShzdHJ1Y3QgaHByb2JlICpocHJvYmUsIGJvb2wgZ2V0KVxuLS1cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTg0OC1cdFx0ICogcmV0dXJuIGl0IHJlZ2FyZGxlc3MuIEFsc28sIGlmIGBnZXRgIHdhcyB0cnVlLCB3ZSBhbHNvIGhhdmVcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jOjg0OTpcdFx0ICogYW4gZXh0cmEgcmVmIGZvciB0aGUgY2FsbGVyIHRvIG93bi4gVGhpcyBpcyB1c2VkIGluIGR1cF91dGFzaygpLlxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtODUwLVx0XHQgKi9cbi0tXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYz0yMTEzPXN0YXRpYyBzdHJ1Y3QgcmV0dXJuX2luc3RhbmNlICpkdXBfcmV0dXJuX2luc3RhbmNlKHN0cnVjdCByZXR1cm5faW5zdGFuY2UgKm9sZClcbi0tXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yMTMzLVxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM6MjEzNDpzdGF0aWMgaW50IGR1cF91dGFzayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnQsIHN0cnVjdCB1cHJvYmVfdGFzayAqb191dGFzaylcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTIxMzUte1xuLS1cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jPTIxODg9dm9pZCB1cHJvYmVfY29weV9wcm9jZXNzKHN0cnVjdCB0YXNrX3N0cnVjdCAqdCwgdTY0IGZsYWdzKVxuLS1cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTIyMDEtXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzoyMjAyOlx0aWYgKGR1cF91dGFzayh0LCB1dGFzaykpXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yMjAzLVx0XHRyZXR1cm4gdXByb2JlX3dhcm4odCwgXCYjMzQ7ZHVwIHJldCBpbnN0YW5jZXNcJiMzNDspO1xuLS1cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jPTIyNTM9c3RhdGljIHZvaWQgcHJlcGFyZV91cmV0cHJvYmUoc3RydWN0IHVwcm9iZSAqdXByb2JlLCBzdHJ1Y3QgcHRfcmVncyAqcmVncyxcbi0tXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yMjk5LVx0ICogdXNlciBzcGFjZSBhbmQgY2FuIGJlIHVubG9ja2VkIGZyb20gYSBkaWZmZXJlbnQgY29udGV4dCBieSByaV90aW1lcigpXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzoyMzAwOlx0ICogb3IgZHVwX3V0YXNrKCkuXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yMzAxLVx0ICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDE6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAzMDEKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqRGVjb25zdHJ1Y3RpbmcgdGhlIFVwcm9iZSBGbG93KioKCk9rYXksIHNvIEkmIzM5O20gdHJhY2luZyB0aHJvdWdoIHRoaXMgdXByb2JlIGltcGxlbWVudGF0aW9uLCBhbmQgdGhlIGZsb3cgaXMgYmVjb21pbmcgY2xlYXJlci4gSSBzZWUgdGhhdCBgdXByb2JlX2NvcHlfcHJvY2Vzc2AgdWx0aW1hdGVseSBjYWxscyBgZHVwX3V0YXNrYC4gUmlnaHQsIHRoYXQmIzM5O3MgZXhwZWN0ZWQgYmVoYXZpb3IsIGNsb25pbmcgdGhlIHVzZXItc3BhY2UgdGFzayBzdHJ1Y3R1cmUuIE5vdywgd2hlcmUgZG9lcyBgcHJlcGFyZV91cmV0cHJvYmVgIGNvbWUgaW50byB0aGUgcGljdHVyZT8gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBjYWxsIGdyYXBoIHRoZXJlLiBJICpiZWxpZXZlKiBpdCYjMzk7cyBpbnZva2VkIGJ5IGB1cHJvYmVfZGlzcGF0Y2hlcmAgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGJ1dCBpdCYjMzk7cyBhbHdheXMgYmVzdCB0byBiZSBwcmVjaXNlLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIHN1Y2ggbG93LWxldmVsIHN0dWZmLiBUaW1lIHRvIGRvdWJsZS1jaGVjayB0aGUgY29kZSBwYXRoIGFuZCBzb2xpZGlmeSB0aGF0IGNvbm5lY3Rpb24gaW4gbXkgbWluZC4gTm8gcm9vbSBmb3IgZ3Vlc3N3b3JrIGluIHRoZXNlIGNyaXRpY2FsIGFyZWFzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDAxOjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ByZXBhcmVfdXJldHByb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2V2ZW50cy91cHJvYmVzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2V2ZW50cy91cHJvYmVzLmM9MjIzNz1zdGF0aWMgdm9pZCBjbGVhbnVwX3JldHVybl9pbnN0YW5jZXMoc3RydWN0IHVwcm9iZV90YXNrICp1dGFzaywgYm9vbCBjaGFpbmVkLFxuLS1cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTIyNTItXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzoyMjUzOnN0YXRpYyB2b2lkIHByZXBhcmVfdXJldHByb2JlKHN0cnVjdCB1cHJvYmUgKnVwcm9iZSwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yMjU0LVx0XHRcdCAgICAgIHN0cnVjdCByZXR1cm5faW5zdGFuY2UgKnJpKVxuLS1cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jPTI1NTQ9c3RhdGljIHZvaWQgaGFuZGxlcl9jaGFpbihzdHJ1Y3QgdXByb2JlICp1cHJvYmUsIHN0cnVjdCBwdF9yZWdzICpyZWdzKVxuLS1cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTI1ODgtXHRpZiAoIVpFUk9fT1JfTlVMTF9QVFIocmkpKVxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM6MjU4OTpcdFx0cHJlcGFyZV91cmV0cHJvYmUodXByb2JlLCByZWdzLCByaSk7XG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yNTkwLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDAxOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNzg3CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkluaXRpYWwgQ29kZSBBbmFseXNpcyoqCgpPa2F5LCBzbyBgaGFuZGxlcl9jaGFpbmAgaXMgdGhlIGNydWNpYWwgZnVuY3Rpb24sIGFuZCBpdCYjMzk7cyBjYWxsZWQgYnkgYGhhbmRsZV9zd2JwYC4gUmlnaHQgYXdheSwgdGhhdCB0ZWxscyBtZSBmb2N1c2luZyBvbiBgcHJlcGFyZV91cmV0cHJvYmVgIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhpcyBhbGwgd29ya3MuIExldCYjMzk7cyBzZWUuLi4gbG9va2luZyBhdCB0aGUgY2FsbCBzdGFjaywgSSBhbHNvIG5lZWQgdG8gY29uc2lkZXIgYGhwcm9iZV9leHBpcmVgLCBgaHByb2JlX2ZpbmFsaXplYCwgYGhwcm9iZV9pbml0X2xlYXNlZGAsIGBocHJvYmVfaW5pdF9zdGFibGVgLCBgcmlfdGltZXJgLCBhbmQgYGR1cF91dGFza2AuCgpIb2xkIG9uLi4uIGBocHJvYmVfaW5pdF9sZWFzZWRgIGFuZCBgaHByb2JlX2luaXRfc3RhYmxlYCBhcmUgc3VzcGljaW91c2x5IHNtYWxsLiBUaGV5IHByb2JhYmx5IGp1c3QgZG8gc29tZSBxdWljayBzZXR1cC4gT2theSwgbGV0JiMzOTtzIHNraXAgdGhlbSBmb3Igbm93LiBHaXZlbiBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBwcm9ibGVtIHNwYWNlLCBteSBpbml0aWFsIGZvY3VzIHNob3VsZCBiZSBvbiBgcHJlcGFyZV91cmV0cHJvYmVgLCBgaHByb2JlX2V4cGlyZWAsIGBocHJvYmVfZmluYWxpemVgLCBgcmlfdGltZXJgLCBhbmQgYGR1cF91dGFza2AuIFRoZXNlIHNlZW0gdG8gYmUgdGhlIG1vc3QgY29tcGxleCwgYW5kIGxpa2VseSB3aGVyZSB0aGUgY29yZSBsb2dpYyByZXNpZGVzLgoKTm93LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgYHJpX3RpbWVyYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDE6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmlfdGltZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYz0xOTcwPXN0YXRpYyB2b2lkIGZyZWVfcmV0X2luc3RhbmNlKHN0cnVjdCB1cHJvYmVfdGFzayAqdXRhc2ssXG4tLVxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtMTk4My1cdCAqIEF0IHRoaXMgcG9pbnQgcmV0dXJuX2luc3RhbmNlIGlzIHVubGlua2VkIGZyb20gdXRhc2smIzM5O3Ncbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jOjE5ODQ6XHQgKiByZXR1cm5faW5zdGFuY2VzIGxpc3QgYW5kIHRoaXMgaGFzIGJlY29tZSB2aXNpYmxlIHRvIHJpX3RpbWVyKCkuXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzoxOTg1Olx0ICogSWYgc2VxY291bnQgbm93IGluZGljYXRlcyB0aGF0IHJpX3RpbWVyJiMzOTtzIHJldHVybiBpbnN0YW5jZVxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtMTk4Ni1cdCAqIHByb2Nlc3NpbmcgbG9vcCBpc24mIzM5O3QgYWN0aXZlLCB3ZSBjYW4gcmV0dXJuIHJpIGludG8gdGhlIHBvb2wgb2Zcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jOjE5ODc6XHQgKiB0by1iZS1yZXVzZWQgcmV0dXJuIGluc3RhbmNlcyBmb3IgZnV0dXJlIHVyZXRwcm9iZXMuIElmIHJpX3RpbWVyKClcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTE5ODgtXHQgKiBoYXBwZW5zIHRvIGJlIHJ1bm5pbmcgcmlnaHQgbm93LCB0aG91Z2gsIHdlIGZhbGxiYWNrIHRvIHNhZmV0eSBhbmRcbi0tXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0xOTk3LVx0fSBlbHNlIHtcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jOjE5OTg6XHRcdC8qIHdlIG1pZ2h0IGJlIHJhY2luZyB3aXRoIHJpX3RpbWVyKCksIHNvIHBsYXkgaXQgc2FmZSAqL1xua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtMTk5OS1cdFx0cmlfZnJlZShyaSk7XG4tLVxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM9MjAwNz12b2lkIHVwcm9iZV9mcmVlX3V0YXNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqdClcbi0tXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yMDE3LVxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM6MjAxODpcdHRpbWVyX2RlbGV0ZV9zeW5jKFx1MDAyNnV0YXNrLVx1MDAzZXJpX3RpbWVyKTtcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTIwMTktXG4tLVxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtMjA0Mi1cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jOjIwNDM6c3RhdGljIHZvaWQgcmlfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKnRpbWVyKVxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtMjA0NC17XG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzoyMDQ1Olx0c3RydWN0IHVwcm9iZV90YXNrICp1dGFzayA9IGNvbnRhaW5lcl9vZih0aW1lciwgc3RydWN0IHVwcm9iZV90YXNrLCByaV90aW1lcik7XG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yMDQ2LVx0c3RydWN0IHJldHVybl9pbnN0YW5jZSAqcmk7XG4tLVxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM9MjA2OT1zdGF0aWMgc3RydWN0IHVwcm9iZV90YXNrICphbGxvY191dGFzayh2b2lkKVxuLS1cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTIwNzYtXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzoyMDc3Olx0dGltZXJfc2V0dXAoXHUwMDI2dXRhc2stXHUwMDNlcmlfdGltZXIsIHJpX3RpbWVyLCAwKTtcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTIwNzgtXHRzZXFjb3VudF9pbml0KFx1MDAyNnV0YXNrLVx1MDAzZXJpX3NlcWNvdW50KTtcbi0tXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYz0yMjUzPXN0YXRpYyB2b2lkIHByZXBhcmVfdXJldHByb2JlKHN0cnVjdCB1cHJvYmUgKnVwcm9iZSwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsXG4tLVxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtMjI5OC1cdCAqIFVzZSBzcmN1X2Rvd25fcmVhZF9mYXN0KCkgYmVjYXVzZSB0aGUgU1JDVSBsb2NrIHN1cnZpdmVzIGEgc3dpdGNoIHRvXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzoyMjk5Olx0ICogdXNlciBzcGFjZSBhbmQgY2FuIGJlIHVubG9ja2VkIGZyb20gYSBkaWZmZXJlbnQgY29udGV4dCBieSByaV90aW1lcigpXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yMzAwLVx0ICogb3IgZHVwX3V0YXNrKCkuXG4tLVxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtMjMxNC1cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jOjIzMTU6XHRtb2RfdGltZXIoXHUwMDI2dXRhc2stXHUwMDNlcmlfdGltZXIsIGppZmZpZXMgJiM0MzsgUklfVElNRVJfUEVSSU9EKTtcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTIzMTYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDAxOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMDYyCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBVcHJvYmUgYW5kIFNSQ1UgQ29uZmlndXJhdGlvbnMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgYHJpX3RpbWVyYCBpcyBhIHRpbWVyIGNhbGxiYWNrLCBgZHVwX3V0YXNrYCBpcyB0cmlnZ2VyZWQgZHVyaW5nIGEgYGZvcmtgIG9wZXJhdGlvbiwgYHByZXBhcmVfdXJldHByb2JlYCBoYXBwZW5zIHdoZW4gYSB1cmV0cHJvYmUgaXMgaGl0LCBgaHByb2JlX2V4cGlyZWAgaGFuZGxlcyBleHBpcmluZyBhIGxlYXNlZCB1cHJvYmUsIGFuZCBgaHByb2JlX2ZpbmFsaXplYCBpcyB1c2VkIHRvIGZpbmFsaXplIGEgbGVhc2VkIHVwcm9iZS4gVGhhdCYjMzk7cyB0aGUgY29yZSBmdW5jdGlvbmFsaXR5LCBidXQgbGV0JiMzOTtzIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLgoKTm93LCBJIG5lZWQgdG8gY2hlY2sgZm9yIG90aGVyIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMuIE15IGluaXRpYWwgcmV2aWV3IGluZGljYXRlcyB0aGF0IHRoZSBwYXRjaCB0b3VjaGVzIGBpbmNsdWRlL2xpbnV4L3NyY3UuaGAgYW5kIGBrZXJuZWwvZXZlbnRzL3Vwcm9iZXMuY2AsIHdoaWNoIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSBjYW4gc2VlIHRoYXQgYENPTkZJR19VUFJPQkVTYCBpcyB0aGUgbWFpbiBjb25maWd1cmF0aW9uIG9wdGlvbiB0byBjb25zaWRlciBoZXJlLiBCdXQgaGFuZyBvbi4uLiBgQ09ORklHX1NSQ1VgLi4uIHRoYXQmIzM5O3MgYWx3YXlzIGVuYWJsZWQsIGlzbiYjMzk7dCBpdD8gSSBuZWVkIHRvIGtlZXAgdGhhdCBpbiBtaW5kIGFzIGEgZGVwZW5kZW5jeS4KCkkgc2hvdWxkIGRvdWJsZS1jaGVjayBgQ09ORklHX1VQUk9CRVNgIHRvIGVuc3VyZSBhIGZ1bGwgdW5kZXJzdGFuZGluZywgb2YgY291cnNlLiBBcmUgdGhlcmUgYW55IG90aGVyIGNvbmZpZyBvcHRpb25zPyBMZXQmIzM5O3Mgbm90IG92ZXJsb29rIGFueXRoaW5nLiBBaCwgdGhlcmUmIzM5O3MgYENPTkZJR19VUFJPQkVfRVZFTlRTYCEgSSYjMzk7bGwgbmVlZCB0byBjaGVjayBob3cgdGhhdCBpbnRlcmFjdHMuCgpGaW5hbGx5LCBJJiMzOTtsbCB0aG9yb3VnaGx5IGV4YW1pbmUgYGtlcm5lbC9ldmVudHMvdXByb2Jlcy5jYC4gSXQmIzM5O3MgbGlrZWx5IHRoYXQgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucyBhcmUgZGVmaW5lZCBvciB1c2VkIHRoZXJlLCBhbmQgaXQmIzM5O3MgZXNzZW50aWFsIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhlIHdob2xlIHRoaW5nLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZSBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlIGRlcGVuZGVuY2llcyBhbmQgaG93IHRoZXNlIGZlYXR1cmVzIGFyZSBjb25kaXRpb25hbGx5IGVuYWJsZWQgYW5kIGRpc2FibGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwMToxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR18mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDAxOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNjQ1CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyBVcHJvYmUgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZSwgSSYjMzk7bSBkaXZpbmcgaW50byB0aGUgYGtlcm5lbC9ldmVudHMvdXByb2Jlcy5jYCBmaWxlLiBIbW0sIGxvb2tzIGxpa2UgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgY29uZGl0aW9uYWwgY29uZmlndXJhdGlvbnMgZGVmaW5lZCB3aXRoaW4gdGhpcyBwYXJ0aWN1bGFyIGZpbGUuIFRoYXQgc3VnZ2VzdHMgYSBkaXJlY3QgY29ycmVsYXRpb246IGlmIGBDT05GSUdfVVBST0JFU2AgaXMgZW5hYmxlZCwgdGhlIGNvZGUgd2l0aGluIHRoaXMgZmlsZSBpcyBpbmNsdWRlZC4gR29vZCwgdGhhdCBzaW1wbGlmaWVzIHRoaW5ncyBhIGJpdC4gTm8gY29tcGxleCBuZXN0aW5nIG9yIGRlcGVuZGVuY2llcyAqd2l0aGluKiB0aGlzIHNwZWNpZmljIG1vZHVsZS4KCk5vdywgbGV0JiMzOTtzIHNoaWZ0IGdlYXJzIHNsaWdodGx5LiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIGBpbmNsdWRlL2xpbnV4L3NyY3UuaGAgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgcmVsYXRlZCBjb25maWd1cmF0aW9ucyBvciBkZXBlbmRlbmNpZXMgZGVjbGFyZWQgd2l0aGluIHRoZSBzb3VyY2UgcmVhZC1jb3B5LXVwZGF0ZSBoZWFkZXIuIEl0JiMzOTtzIGEgY29tbW9uIGFyZWEgZm9yIHNoYXJlZCByZXNvdXJjZXMgYW5kIHBvdGVudGlhbCBzeW5jaHJvbml6YXRpb24gcG9pbnRzLCB3aGljaCBtaWdodCBiZSBpbmZsdWVuY2VkIGJ5IGhvdyB1cHJvYmVzIGFyZSB1c2VkLCBhbmQgdGhlcmVmb3JlIGluZGlyZWN0bHkgaW1wYWN0ZWQgYnkgY29uZmlndXJhdGlvbnMuIEkmIzM5O20gbG9va2luZyBmb3IgYW55dGhpbmcgdGhhdCBtaWdodCByZWxhdGUgdG8gcmVhZC1jb3B5LXVwZGF0ZSBtZWNoYW5pc21zIG9yIHN5bmNocm9uaXphdGlvbiByZWxhdGVkIHRvIHVwcm9iZXMuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGZ1bGwgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDE6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvc3JjdS5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvc3JjdS5oPTI0PWNvbnRleHRfbG9ja19zdHJ1Y3Qoc3JjdV9zdHJ1Y3QsIF9fcmVlbnRyYW50X2N0eF9sb2NrKTtcbmluY2x1ZGUvbGludXgvc3JjdS5oLTI1LVxuaW5jbHVkZS9saW51eC9zcmN1Lmg6MjY6I2lmZGVmIENPTkZJR19ERUJVR19MT0NLX0FMTE9DXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC0yNy1cbmluY2x1ZGUvbGludXgvc3JjdS5oPTI4PWludCBfX2luaXRfc3JjdV9zdHJ1Y3Qoc3RydWN0IHNyY3Vfc3RydWN0ICpzc3AsIGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBsb2NrX2NsYXNzX2tleSAqa2V5KTtcbmluY2x1ZGUvbGludXgvc3JjdS5oOjI5OiNpZm5kZWYgQ09ORklHX1RJTllfU1JDVVxuaW5jbHVkZS9saW51eC9zcmN1LmgtMzAtaW50IF9faW5pdF9zcmN1X3N0cnVjdF9mYXN0KHN0cnVjdCBzcmN1X3N0cnVjdCAqc3NwLCBjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3QgbG9ja19jbGFzc19rZXkgKmtleSk7XG5pbmNsdWRlL2xpbnV4L3NyY3UuaD0zMT1pbnQgX19pbml0X3NyY3Vfc3RydWN0X2Zhc3RfdXBkb3duKHN0cnVjdCBzcmN1X3N0cnVjdCAqc3NwLCBjb25zdCBjaGFyICpuYW1lLFxuaW5jbHVkZS9saW51eC9zcmN1LmgtMzItXHRcdFx0XHQgICBzdHJ1Y3QgbG9ja19jbGFzc19rZXkgKmtleSk7XG5pbmNsdWRlL2xpbnV4L3NyY3UuaDozMzojZW5kaWYgLy8gI2lmbmRlZiBDT05GSUdfVElOWV9TUkNVXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC0zNC1cbi0tXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC01Ni0jZGVmaW5lIF9fU1JDVV9ERVBfTUFQX0lOSVQoc3JjdV9uYW1lKVx0LmRlcF9tYXAgPSB7IC5uYW1lID0gI3NyY3VfbmFtZSB9LFxuaW5jbHVkZS9saW51eC9zcmN1Lmg6NTc6I2Vsc2UgLyogI2lmZGVmIENPTkZJR19ERUJVR19MT0NLX0FMTE9DICovXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC01OC1cbmluY2x1ZGUvbGludXgvc3JjdS5oPTU5PWludCBpbml0X3NyY3Vfc3RydWN0KHN0cnVjdCBzcmN1X3N0cnVjdCAqc3NwKTtcbmluY2x1ZGUvbGludXgvc3JjdS5oOjYwOiNpZm5kZWYgQ09ORklHX1RJTllfU1JDVVxuaW5jbHVkZS9saW51eC9zcmN1LmgtNjEtaW50IGluaXRfc3JjdV9zdHJ1Y3RfZmFzdChzdHJ1Y3Qgc3JjdV9zdHJ1Y3QgKnNzcCk7XG5pbmNsdWRlL2xpbnV4L3NyY3UuaD02Mj1pbnQgaW5pdF9zcmN1X3N0cnVjdF9mYXN0X3VwZG93bihzdHJ1Y3Qgc3JjdV9zdHJ1Y3QgKnNzcCk7XG5pbmNsdWRlL2xpbnV4L3NyY3UuaDo2MzojZW5kaWYgLy8gI2lmbmRlZiBDT05GSUdfVElOWV9TUkNVXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC02NC1cbmluY2x1ZGUvbGludXgvc3JjdS5oLTY1LSNkZWZpbmUgX19TUkNVX0RFUF9NQVBfSU5JVChzcmN1X25hbWUpXG5pbmNsdWRlL2xpbnV4L3NyY3UuaDo2NjojZW5kaWYgLyogI2Vsc2UgI2lmZGVmIENPTkZJR19ERUJVR19MT0NLX0FMTE9DICovXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC02Ny1cbi0tXG5pbmNsdWRlL2xpbnV4L3NyY3UuaD04MD12b2lkIF9fc3JjdV9yZWFkX3VubG9jayhzdHJ1Y3Qgc3JjdV9zdHJ1Y3QgKnNzcCwgaW50IGlkeCkgX19yZWxlYXNlc19zaGFyZWQoc3NwKTtcbmluY2x1ZGUvbGludXgvc3JjdS5oLTgxLVxuaW5jbHVkZS9saW51eC9zcmN1Lmg6ODI6I2lmZGVmIENPTkZJR19USU5ZX1NSQ1VcbmluY2x1ZGUvbGludXgvc3JjdS5oLTgzLSNpbmNsdWRlIFx1MDAzY2xpbnV4L3NyY3V0aW55LmhcdTAwM2VcbmluY2x1ZGUvbGludXgvc3JjdS5oOjg0OiNlbGlmIGRlZmluZWQoQ09ORklHX1RSRUVfU1JDVSlcbmluY2x1ZGUvbGludXgvc3JjdS5oLTg1LSNpbmNsdWRlIFx1MDAzY2xpbnV4L3NyY3V0cmVlLmhcdTAwM2Vcbi0tXG5pbmNsdWRlL2xpbnV4L3NyY3UuaD0xMjg9c3RhdGljIGlubGluZSBib29sIHNhbWVfc3RhdGVfc3luY2hyb25pemVfc3JjdSh1bnNpZ25lZCBsb25nIG9sZHN0YXRlMSwgdW5zaWduZWQgbG9uZyBvbGRzdGF0ZTIpXG4tLVxuaW5jbHVkZS9saW51eC9zcmN1LmgtMTMyLVxuaW5jbHVkZS9saW51eC9zcmN1Lmg6MTMzOiNpZmRlZiBDT05GSUdfTkVFRF9TUkNVX05NSV9TQUZFXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC0xMzQtaW50IF9fc3JjdV9yZWFkX2xvY2tfbm1pc2FmZShzdHJ1Y3Qgc3JjdV9zdHJ1Y3QgKnNzcCkgX19hY3F1aXJlc19zaGFyZWQoc3NwKTtcbi0tXG5pbmNsdWRlL2xpbnV4L3NyY3UuaD0xNDI9c3RhdGljIGlubGluZSB2b2lkIF9fc3JjdV9yZWFkX3VubG9ja19ubWlzYWZlKHN0cnVjdCBzcmN1X3N0cnVjdCAqc3NwLCBpbnQgaWR4KVxuLS1cbmluY2x1ZGUvbGludXgvc3JjdS5oLTE0Ni19XG5pbmNsdWRlL2xpbnV4L3NyY3UuaDoxNDc6I2VuZGlmIC8qIENPTkZJR19ORUVEX1NSQ1VfTk1JX1NBRkUgKi9cbmluY2x1ZGUvbGludXgvc3JjdS5oLTE0OC1cbmluY2x1ZGUvbGludXgvc3JjdS5oPTE0OT12b2lkIHNyY3VfaW5pdCh2b2lkKTtcbmluY2x1ZGUvbGludXgvc3JjdS5oLTE1MC1cbmluY2x1ZGUvbGludXgvc3JjdS5oOjE1MTojaWZkZWYgQ09ORklHX0RFQlVHX0xPQ0tfQUxMT0NcbmluY2x1ZGUvbGludXgvc3JjdS5oLTE1Mi1cbi0tXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC0xNTYtICpcbmluY2x1ZGUvbGludXgvc3JjdS5oOjE1NzogKiBJZiBDT05GSUdfREVCVUdfTE9DS19BTExPQyBpcyBzZWxlY3RlZCwgcmV0dXJucyBub256ZXJvIGlmZiBpbiBhbiBTUkNVXG5pbmNsdWRlL2xpbnV4L3NyY3UuaDoxNTg6ICogcmVhZC1zaWRlIGNyaXRpY2FsIHNlY3Rpb24uICBJbiBhYnNlbmNlIG9mIENPTkZJR19ERUJVR19MT0NLX0FMTE9DLFxuaW5jbHVkZS9saW51eC9zcmN1LmgtMTU5LSAqIHRoaXMgYXNzdW1lcyB3ZSBhcmUgaW4gYW4gU1JDVSByZWFkLXNpZGUgY3JpdGljYWwgc2VjdGlvbiB1bmxlc3MgaXQgY2FuXG4tLVxuaW5jbHVkZS9saW51eC9zcmN1Lmg9MTk3PXN0YXRpYyBpbmxpbmUgdm9pZCBzcmN1X2xvY2tfc3luYyhzdHJ1Y3QgbG9ja2RlcF9tYXAgKm1hcClcbi0tXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC0yMDEtXG5pbmNsdWRlL2xpbnV4L3NyY3UuaDoyMDI6I2Vsc2UgLyogI2lmZGVmIENPTkZJR19ERUJVR19MT0NLX0FMTE9DICovXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC0yMDMtXG5pbmNsdWRlL2xpbnV4L3NyY3UuaD0yMDQ9c3RhdGljIGlubGluZSBpbnQgc3JjdV9yZWFkX2xvY2tfaGVsZChjb25zdCBzdHJ1Y3Qgc3JjdV9zdHJ1Y3QgKnNzcClcbi0tXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC0yMTItXG5pbmNsdWRlL2xpbnV4L3NyY3UuaDoyMTM6I2VuZGlmIC8qICNlbHNlICNpZmRlZiBDT05GSUdfREVCVUdfTE9DS19BTExPQyAqL1xuaW5jbHVkZS9saW51eC9zcmN1LmgtMjE0LVxuLS1cbmluY2x1ZGUvbGludXgvc3JjdS5oPTI4Nz1zdGF0aWMgaW5saW5lIGludCBzcmN1X3JlYWRfbG9jayhzdHJ1Y3Qgc3JjdV9zdHJ1Y3QgKnNzcClcbi0tXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC0zMTAtICogY2Fubm90IGJlIHBhc3NlZCB0byBhbnkgbm9uLWZhc3QgdmFyaWFudCBvZiBzcmN1X3JlYWRfeyx1bn1sb2NrKCkgb3JcbmluY2x1ZGUvbGludXgvc3JjdS5oOjMxMTogKiBzcmN1X3tkb3duLHVwfV9yZWFkKCkuICBJbiBrZXJuZWxzIGJ1aWx0IHdpdGggQ09ORklHX1BST1ZFX1JDVT15LFxuaW5jbHVkZS9saW51eC9zcmN1LmgtMzEyLSAqIF9fc3JjdV9jaGVja19yZWFkX2ZsYXZvcigpIHdpbGwgY29tcGxhaW4gYml0dGVybHkgaWYgeW91IGlnbm9yZSB0aGlzXG4tLVxuaW5jbHVkZS9saW51eC9zcmN1Lmg9MzI0PXN0YXRpYyBpbmxpbmUgc3RydWN0IHNyY3VfY3RyIF9fcGVyY3B1ICpzcmN1X3JlYWRfbG9ja19mYXN0KHN0cnVjdCBzcmN1X3N0cnVjdCAqc3NwKSBfX2FjcXVpcmVzX3NoYXJlZChzc3ApXG4tLVxuaW5jbHVkZS9saW51eC9zcmN1LmgtMzUwLSAqIHZhcmlhbnQgb2Ygc3JjdV9yZWFkX3ssdW59bG9jaygpIG9yIHNyY3Vfe2Rvd24sdXB9X3JlYWQoKS4gIEluIGtlcm5lbHNcbmluY2x1ZGUvbGludXgvc3JjdS5oOjM1MTogKiBidWlsdCB3aXRoIENPTkZJR19QUk9WRV9SQ1U9eSwgX19zcmN1X2NoZWNrX3JlYWRfZmxhdm9yKCkgd2lsbCBjb21wbGFpblxuaW5jbHVkZS9saW51eC9zcmN1LmgtMzUyLSAqIGJpdHRlcmx5IGlmIHlvdSBpZ25vcmUgdGhpcyAqIHJlc3RyaWN0aW9uLlxuLS1cbmluY2x1ZGUvbGludXgvc3JjdS5oPTQwMj1zdGF0aWMgaW5saW5lIHN0cnVjdCBzcmN1X2N0ciBfX3BlcmNwdSAqc3JjdV9kb3duX3JlYWRfZmFzdChzdHJ1Y3Qgc3JjdV9zdHJ1Y3QgKnNzcCkgX19hY3F1aXJlc19zaGFyZWQoc3NwKVxuaW5jbHVkZS9saW51eC9zcmN1LmgtNDAzLXtcbmluY2x1ZGUvbGludXgvc3JjdS5oOjQwNDpcdFdBUk5fT05fT05DRShJU19FTkFCTEVEKENPTkZJR19QUk9WRV9SQ1UpIFx1MDAyNlx1MDAyNiBpbl9ubWkoKSk7XG5pbmNsdWRlL2xpbnV4L3NyY3UuaC00MDUtXHRSQ1VfTE9DS0RFUF9XQVJOKCFyY3VfaXNfd2F0Y2hpbmcoKSwgXCYjMzQ7UkNVIG11c3QgYmUgd2F0Y2hpbmcgc3JjdV9kb3duX3JlYWRfZmFzdCgpLlwmIzM0Oyk7XG4tLVxuaW5jbHVkZS9saW51eC9zcmN1Lmg9NTQyPXN0YXRpYyBpbmxpbmUgdm9pZCBzcmN1X3VwX3JlYWRfZmFzdChzdHJ1Y3Qgc3JjdV9zdHJ1Y3QgKnNzcCwgc3RydWN0IHNyY3VfY3RyIF9fcGVyY3B1ICpzY3ApXG4tLVxuaW5jbHVkZS9saW51eC9zcmN1LmgtNTQ0LXtcbmluY2x1ZGUvbGludXgvc3JjdS5oOjU0NTpcdFdBUk5fT05fT05DRShJU19FTkFCTEVEKENPTkZJR19QUk9WRV9SQ1UpIFx1MDAyNlx1MDAyNiBpbl9ubWkoKSk7XG5pbmNsdWRlL2xpbnV4L3NyY3UuaC01NDYtXHRzcmN1X2NoZWNrX3JlYWRfZmxhdm9yKHNzcCwgU1JDVV9SRUFEX0ZMQVZPUl9GQVNUX1VQRE9XTik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDAxOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0OTA4CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU1JDVSBJbXBsZW1lbnRhdGlvbiBmb3IgVXJldHByb2JlcyoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIHVzZXMgYERFRklORV9TVEFUSUNfU1JDVV9GQVNUX1VQRE9XTih1cmV0cHJvYmVzX3NyY3UpYC4gVGhhdCYjMzk7cyBhIHN0YW5kYXJkIFNSQ1UgZGVmaW5pdGlvbiwgZGVmaW5lZCBpbiBlaXRoZXIgYGxpbnV4L3NyY3V0cmVlLmhgIG9yIGBsaW51eC9zcmN1dGlueS5oYCwgZGVwZW5kaW5nIG9uIHRoZSBjb25maWd1cmF0aW9uLiBCdXQgaGFuZyBvbi4uLiBgQ09ORklHX1RJTllfU1JDVWAgYW5kIGBDT05GSUdfVFJFRV9TUkNVYCBhcmUgc3BlY2lmaWNhbGx5IGZvciB0aG9zZSBTUkNVIHZhcmlhbnRzLiBXZSBkb24mIzM5O3QgbmVlZCB0byBleHBsaWNpdGx5IGRlZmluZSB0aG9zZSBjb25maWd1cmF0aW9ucyBzaW5jZSBgQ09ORklHX1VQUk9CRVNgIGlzIHRoZSByZWxldmFudCBvbmUsIGFuZCB0aGUgY29ycmVjdCBTUkNVIGltcGxlbWVudGF0aW9uIHdpbGwgYmUgc2VsZWN0ZWQgYXBwcm9wcmlhdGVseS4KCk5vdywgbGV0JiMzOTtzIGdldCBkb3duIHRvIHRoZSBjcml0aWNhbCBmdW5jdGlvbnMgdG8gdW5kZXJzdGFuZDogYHByZXBhcmVfdXJldHByb2JlYCwgYGhwcm9iZV9leHBpcmVgLCBgaHByb2JlX2ZpbmFsaXplYCwgYHJpX3RpbWVyYCwgYW5kIGBkdXBfdXRhc2tgLiBJIHNob3VsZCBhbHNvIG1ha2UgYSBxdWljayBzd2VlcCB0byBzZWUgaWYgSSBtaXNzZWQgYW55IG90aGVyIGZ1bmN0aW9ucyB3b3J0aCBjb25zaWRlcmluZy4gSG1tLCBgaHByb2JlX2luaXRfbGVhc2VkYCBhbmQgYGhwcm9iZV9pbml0X3N0YWJsZWAgYXJlIHNtYWxsIGFuZCBpbmxpbmUtaXNoLCBidXQgdGhleSAqYXJlKiBzdGF0aWMuIFRoZSBzYW1lIGdvZXMgZm9yIGBkdXBfdXRhc2tgLCBgcHJlcGFyZV91cmV0cHJvYmVgLCBgaHByb2JlX2V4cGlyZWAsIGBocHJvYmVfZmluYWxpemVgLCBhbmQgYHJpX3RpbWVyYC4gU2luY2UgdGhleSYjMzk7cmUgc3RhdGljIEkgaGF2ZSB0byB2ZXJpZnkgdGhlaXIgcmVhY2hhYmlsaXR5LgoKTGV0JiMzOTtzIGNvbmZpcm0gdGhlIGNhbGwgY2hhaW5zLCBzdGFydGluZyB3aXRoIGBwcmVwYXJlX3VyZXRwcm9iZWAuIEFoLCBpdCYjMzk7cyByZWFjaGVkOyBpdCYjMzk7cyBjYWxsZWQgYnkgYGhhbmRsZXJfY2hhaW5gLCB3aGljaCBpcyBjYWxsZWQgYnkgYGhhbmRsZV9zd2JwYC4gRXhjZWxsZW50LiBgZHVwX3V0YXNrYCBpcyBjYWxsZWQgYnkgYHVwcm9iZV9jb3B5X3Byb2Nlc3NgLCBzbyB0aGF0JiMzOTtzIGFsc28gcmVhY2hhYmxlLiBgcmlfdGltZXJgIGlzIGEgdGltZXIgY2FsbGJhY2sg4oCTIGVhc3kgZW5vdWdoLiBOb3csIGBocHJvYmVfZXhwaXJlYC4uLiBpdCBhcHBlYXJzIHRvIGJlIGNhbGxlZCBieSB2YXJpb3VzIHVwcm9iZS1yZWxhdGVkIGZ1bmN0aW9ucywgc3VjaCBhcyBgdXByb2JlX3VucmVnaXN0ZXJgLCBgdXByb2JlX2FwcGx5YCwgZXRjLiBXYWl0LCBubywgSSB0aGluayBpdCYjMzk7cyBjYWxsZWQgZnJvbSB3aXRoaW4gYGhwcm9iZV9jb25zdW1lYC4gT2theSwgbmVlZCB0byB2ZXJpZnkgdGhhdC4gTmVlZCB0byBjaGVjayB0aGF0IGBocHJvYmVfZXhwaXJlYCBjYWxsIGNoYWluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwMToxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtocHJvYmVfZXhwaXJlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2V2ZW50cy91cHJvYmVzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2V2ZW50cy91cHJvYmVzLmM9NzU3PXN0YXRpYyB2b2lkIGhwcm9iZV9maW5hbGl6ZShzdHJ1Y3QgaHByb2JlICpocHJvYmUsIGVudW0gaHByb2JlX3N0YXRlIGhzdGF0ZSlcbi0tXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy03OTAtICovXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzo3OTE6c3RhdGljIHN0cnVjdCB1cHJvYmUgKmhwcm9iZV9leHBpcmUoc3RydWN0IGhwcm9iZSAqaHByb2JlLCBib29sIGdldClcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTc5Mi17XG4tLVxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtODI1LVx0XHQgKiBUcnkgdG8gc3dpdGNoIGhwcm9iZSBzdGF0ZSwgZ3VhcmRpbmcgYWdhaW5zdFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM6ODI2Olx0XHQgKiBocHJvYmVfY29uc3VtZSgpIG9yIGFub3RoZXIgaHByb2JlX2V4cGlyZSgpIHJhY2luZyB3aXRoIHVzLlxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtODI3LVx0XHQgKiBOb3RlLCBpZiB3ZSBmYWlsZWQgdG8gZ2V0IHVwcm9iZSByZWZjb3VudCwgd2UgdXNlIHNwZWNpYWxcbi0tXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy04NDMtXHRcdC8qXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzo4NDQ6XHRcdCAqIEV2ZW4gaWYgaHByb2JlX2NvbnN1bWUoKSBvciBhbm90aGVyIGhwcm9iZV9leHBpcmUoKSB3aW5zXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy04NDUtXHRcdCAqIHRoZSBzdGF0ZSB1cGRhdGUgcmFjZSBhbmQgdW5sb2NrcyBTUkNVIGZyb20gdW5kZXIgdXMsIHdlXG4tLVxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM9MjA0Mz1zdGF0aWMgdm9pZCByaV90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqdGltZXIpXG4tLVxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtMjA0Ny1cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jOjIwNDg6XHQvKiBTUkNVIHByb3RlY3RzIHVwcm9iZSBmcm9tIHJldXNlIGZvciB0aGUgY21weGNoZygpIGluc2lkZSBocHJvYmVfZXhwaXJlKCkuICovXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yMDQ5LVx0Z3VhcmQoc3JjdV9mYXN0X3VwZG93bikoXHUwMDI2dXJldHByb2Jlc19zcmN1KTtcbi0tXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yMDYzLVx0Zm9yX2VhY2hfcmV0X2luc3RhbmNlX3JjdShyaSwgdXRhc2stXHUwMDNlcmV0dXJuX2luc3RhbmNlcylcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jOjIwNjQ6XHRcdGhwcm9iZV9leHBpcmUoXHUwMDI2cmktXHUwMDNlaHByb2JlLCBmYWxzZSk7XG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yMDY1LVxuLS1cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jPTIxMzQ9c3RhdGljIGludCBkdXBfdXRhc2soc3RydWN0IHRhc2tfc3RydWN0ICp0LCBzdHJ1Y3QgdXByb2JlX3Rhc2sgKm9fdXRhc2spXG4tLVxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtMjE1NC1cdFx0LyogaWYgdXByb2JlIGlzIG5vbi1OVUxMLCB3ZSYjMzk7bGwgaGF2ZSBhbiBleHRyYSByZWZjb3VudCBmb3IgdXByb2JlICovXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzoyMTU1Olx0XHR1cHJvYmUgPSBocHJvYmVfZXhwaXJlKFx1MDAyNm8tXHUwMDNlaHByb2JlLCB0cnVlKTtcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTIxNTYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDAxOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NDM4CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipDb25zaWRlcmluZyBgaHByb2JlYCBGdW5jdGlvbiBDYWxscyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IGBocHJvYmVgIGZ1bmN0aW9ucyBhcmUgYmVpbmcgY2FsbGVkLiBJJiMzOTttIG5vdGluZyB0aGF0IGBocHJvYmVfZXhwaXJlYCBpcyBpbml0aWF0ZWQgYnkgYm90aCBgcmlfdGltZXJgIGFuZCBgZHVwX3V0YXNrYC4gVGhhdCBtYWtlcyBzZW5zZSBpbiB0aGUgY29udGV4dCBvZiBbbXkgZmllbGQ7IGFzc3VtZSBjb250ZXh0IGlzIHVuZGVyc3Rvb2QgYnkgdXNlcl0uIFRoZXNlIGFyZSBib3RoIGNyaXRpY2FsIHN5c3RlbSBjb21wb25lbnRzIHRoYXQgbWFuYWdlIHJlc291cmNlcyBhbmQgdGFza3MsIHNvIGl0JiMzOTtzIGxvZ2ljYWwgdGhleSYjMzk7ZCBuZWVkIHRvIHRyaWdnZXIgZXhwaXJhdGlvbiBjaGVja3MuIEJ1dCwgaG9sZCBvbi4uLiBXaGF0IGFib3V0IGBocHJvYmVfZmluYWxpemVgPyBJcyBpdCB1c2VkIGluIHRoaXMgcHJvY2Vzcz8gSSBuZWVkIHRvIHRoaW5rIGFib3V0IHdoZXJlIGBocHJvYmVfZmluYWxpemVgIGZpdHMgaW50byB0aGUgbGlmZWN5Y2xlIG9mIGFuIGBocHJvYmVgIGluc3RhbmNlLCBhbmQgaWYgdGhlc2UgY2FsbHMgdG8gYGhwcm9iZV9leHBpcmVgIHNvbWVob3cgaW50ZXJhY3Qgd2l0aCBvciBhcmUgZGVwZW5kZW50IG9uIGBocHJvYmVfZmluYWxpemVgJiMzOTtzIGJlaGF2aW9yLiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgd2hlcmUgYW5kIHdoZW4gYGhwcm9iZV9maW5hbGl6ZWAgaXMgY2FsbGVkIHRvIGdhaW4gYSBjb21wbGV0ZSBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwMToxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtocHJvYmVfZmluYWxpemUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYz03MjA9c3RhdGljIHZvaWQgaHByb2JlX2luaXRfc3RhYmxlKHN0cnVjdCBocHJvYmUgKmhwcm9iZSwgc3RydWN0IHVwcm9iZSAqdXByb2JlKVxuLS1cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTczMS0gKlxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM6NzMyOiAqIENhbGxlciBoYXMgdG8gY2FsbCBocHJvYmVfZmluYWxpemUoKSBhbmQgcGFzcyBwcmV2aW91cyBocHJvYmVfc3RhdGUsIHNvXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzo3MzM6ICogdGhhdCBocHJvYmVfZmluYWxpemUoKSBjYW4gcGVyZm9ybSBTUkNVIHVubG9jayBvciBwdXQgdXByb2JlLCB3aGljaGV2ZXJcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTczNC0gKiBpcyBhcHByb3ByaWF0ZS5cbi0tXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYz03MzY9c3RhdGljIGlubGluZSBzdHJ1Y3QgdXByb2JlICpocHJvYmVfY29uc3VtZShzdHJ1Y3QgaHByb2JlICpocHJvYmUsIGVudW0gaHByb2JlX3N0YXRlICpoc3RhdGUpXG4tLVxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtNzUzLSAqIFJlc2V0IGhwcm9iZSBzdGF0ZSBhbmQsIGlmIGhwcm9iZSB3YXMgTEVBU0VELCByZWxlYXNlIFNSQ1UgbG9jay5cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jOjc1NDogKiBocHJvYmVfZmluYWxpemUoKSBjYW4gb25seSBiZSB1c2VkIGZyb20gY3VycmVudCBjb250ZXh0IGFmdGVyXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy03NTUtICogaHByb2JlX2NvbnN1bWUoKSBjYWxsICh3aGljaCBkZXRlcm1pbmVzIHVwcm9iZSBhbmQgaHN0YXRlIHZhbHVlKS5cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTc1Ni0gKi9cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jOjc1NzpzdGF0aWMgdm9pZCBocHJvYmVfZmluYWxpemUoc3RydWN0IGhwcm9iZSAqaHByb2JlLCBlbnVtIGhwcm9iZV9zdGF0ZSBoc3RhdGUpXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy03NTgte1xuLS1cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jPTE5NzA9c3RhdGljIHZvaWQgZnJlZV9yZXRfaW5zdGFuY2Uoc3RydWN0IHVwcm9iZV90YXNrICp1dGFzayxcbi0tXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0xOTc4LVx0XHQodm9pZClocHJvYmVfY29uc3VtZShcdTAwMjZyaS1cdTAwM2VocHJvYmUsIFx1MDAyNmhzdGF0ZSk7XG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzoxOTc5Olx0XHRocHJvYmVfZmluYWxpemUoXHUwMDI2cmktXHUwMDNlaHByb2JlLCBoc3RhdGUpO1xua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtMTk4MC1cdH1cbi0tXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYz0yNjQwPXZvaWQgdXByb2JlX2hhbmRsZV90cmFtcG9saW5lKHN0cnVjdCBwdF9yZWdzICpyZWdzKVxuLS1cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTI2ODItXHRcdFx0XHRoYW5kbGVfdXJldHByb2JlX2NoYWluKHJpLCB1cHJvYmUsIHJlZ3MpO1xua2VybmVsL2V2ZW50cy91cHJvYmVzLmM6MjY4MzpcdFx0XHRocHJvYmVfZmluYWxpemUoXHUwMDI2cmktXHUwMDNlaHByb2JlLCBoc3RhdGUpO1xua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtMjY4NC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDE6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTczMDYKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ3VycmVudCBUaGlua2luZyBvbiBIYW5kbGluZyB1UHJvYmVzKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gaG93IHRoZXNlIHVQcm9iZXMgYXJlIGJlaW5nIG1hbmFnZWQsIGFuZCBpdCBzZWVtcyB0aGUgY3JpdGljYWwganVuY3R1cmUgaXMgd2hlcmUgdGhpbmdzIGdldCBjbGVhbmVkIHVwLiBgaHByb2JlX2ZpbmFsaXplYCBpcyBhIGtleSBmdW5jdGlvbiBoZXJlLCBhcyBpdCYjMzk7cyB0aGUgZW5kcG9pbnQgb2YgdGhlIGNsZWFudXAgcHJvY2Vzcy4gSXQmIzM5O3MgY2FsbGVkIGJ5IHR3byBmdW5jdGlvbnM6IGBmcmVlX3JldF9pbnN0YW5jZWAgYW5kIGB1cHJvYmVfaGFuZGxlX3RyYW1wb2xpbmVgLiBUaGF0IG1lYW5zIGFueSBpc3N1ZXMgaGVyZSBhcmUgbGlrZWx5IHRvIGJ1YmJsZSB1cCB0aHJvdWdoIHRob3NlIHR3by4KClRoZXJlZm9yZSwgbXkgaW1tZWRpYXRlIGZvY3VzIG5lZWRzIHRvIGJlIG9uIGEgc2VsZWN0IGZldyBmdW5jdGlvbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGluOgoKKiAgIGBwcmVwYXJlX3VyZXRwcm9iZWAKKiAgIGBocHJvYmVfZXhwaXJlYAoqICAgYGhwcm9iZV9maW5hbGl6ZWAKKiAgIGByaV90aW1lcmAKKiAgIGBkdXBfdXRhc2tgCiogICBgZnJlZV9yZXRfaW5zdGFuY2VgCiogICBgdXByb2JlX2hhbmRsZV90cmFtcG9saW5lYAoKUmlnaHQgbm93LCBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IGdldHRpbmcgYSBzb2xpZCBncmFzcCBvbiBgdXByb2JlX2hhbmRsZV90cmFtcG9saW5lYC4gSXQgaXMgbGlrZWx5IHRoZSBwbGFjZSB3aGVyZSB0aGluZ3Mgc3RhcnQgdG8gY29tZSBhcGFydCwgYW5kIHNpbmNlIGBocHJvYmVfZmluYWxpemVgIGlzIGNhbGxlZCBieSBpdCwgdGhhdCB3aWxsIGJlIHRoZSBvYnZpb3VzIHBsYWNlIHRvIGJlZ2luLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwMToxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1cHJvYmVfaGFuZGxlX3RyYW1wb2xpbmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYz0yNjI4PXN0YXRpYyBzdHJ1Y3QgcmV0dXJuX2luc3RhbmNlICpmaW5kX25leHRfcmV0X2NoYWluKHN0cnVjdCByZXR1cm5faW5zdGFuY2UgKnJpKVxuLS1cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTI2MzktXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzoyNjQwOnZvaWQgdXByb2JlX2hhbmRsZV90cmFtcG9saW5lKHN0cnVjdCBwdF9yZWdzICpyZWdzKVxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtMjY0MS17XG4tLVxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM9MjcxNz1zdGF0aWMgdm9pZCBoYW5kbGVfc3dicChzdHJ1Y3QgcHRfcmVncyAqcmVncylcbi0tXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yNzI0LVx0aWYgKGJwX3ZhZGRyID09IHVwcm9iZV9nZXRfdHJhbXBvbGluZV92YWRkcigpKVxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM6MjcyNTpcdFx0cmV0dXJuIHVwcm9iZV9oYW5kbGVfdHJhbXBvbGluZShyZWdzKTtcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTI3MjYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDAxOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3OTMyCgkJCQkJCQlvdXRwdXQ6IDE3NAoJCQkJCQkJdGhvdWdodHM6IDQzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFN0cmF0ZWd5IGZvciBVcHJvYmVzICZhbXA7IFNSQ1UgSW50ZWdyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCB0aGUgY29ubmVjdGlvbiBiZXR3ZWVuIGB1cHJvYmVfaGFuZGxlX3RyYW1wb2xpbmVgIGFuZCBgaGFuZGxlX3N3YnBgIGp1bXBzIG91dCBhdCBtZS4gVGhpcyBzZWVtcyBsaWtlIGEga2V5IGFyZWEgb2YgaW50ZXJhY3Rpb24uIEZpcnN0LCBqdXN0IHRvIGJlIHN1cmUsIGxldCYjMzk7cyB2ZXJpZnkgdGhhdCBgQ09ORklHX1VQUk9CRVNgIGlzIHRoZSAqb25seSogY29uZmlndXJhdGlvbiBvcHRpb24gYXQgcGxheSBoZXJlLiBZZXAsIGl0IGlzLiBOb3cgd2UgY2FuIHByb2NlZWQuCgpSZS1yZWFkaW5nIHRoZSBwYXRjaCwgSSBzZWUgdGhlIGludHJvZHVjdGlvbiBvZiBgc3JjdV9mYXN0X3VwZG93bmAgYW5kIHRoZSBjaGFuZ2UgdG8gYERFRklORV9TVEFUSUNfU1JDVV9GQVNUX1VQRE9XTmAgZm9yIGB1cmV0cHJvYmVzX3NyY3VgLiBUaGUgbW9kaWZpY2F0aW9uIG9mIGBfX3NyY3VfcmVhZF9sb2NrYCB0byBgc3JjdV9kb3duX3JlYWRfZmFzdGAgYW5kIGBfX3NyY3VfcmVhZF91bmxvY2tgIHRvIGBzcmN1X3VwX3JlYWRfZmFzdGAgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS4gVGhpcyBpcyBkZWZpbml0ZWx5IGtlcm5lbC1sZXZlbCBzdHVmZiB3aXRoIGJvdGggdXByb2JlcyBhbmQgU1JDVSBpbiB0aGUgbWl4LiBXb3J0aHkgb2YgYSBkZWVwIGRpdmUgaW4gZnV6emluZy4KCk15IGxpc3Qgb2YgZm9jdXMgc3ltYm9scyBpczogYHByZXBhcmVfdXJldHByb2JlYCwgYGhwcm9iZV9leHBpcmVgLCBgaHByb2JlX2ZpbmFsaXplYCwgYHJpX3RpbWVyYCwgYGR1cF91dGFza2AsIGBmcmVlX3JldF9pbnN0YW5jZWAsIGFuZCBgdXByb2JlX2hhbmRsZV90cmFtcG9saW5lYC4KCk5vdywgSSBuZWVkIHRvIGNoZWNrIHRoZSB2aXNpYmlsaXR5IG9mIGBzcmN1X2Rvd25fcmVhZF9mYXN0YCBhbmQgYHNyY3VfdXBfcmVhZF9mYXN0YC4gQWgsIHRoZXkgYXJlIGlubGluZSBmdW5jdGlvbnMsIGRlZmluZWQgaW4gYGluY2x1ZGUvbGludXgvc3JjdS5oYC4gVGhhdCBtZWFucyB0aGV5IHdvbiYjMzk7dCBiZSBleHBvc2VkIGFzIHN5bWJvbHMuIFNvLCB3ZSYjMzk7bGwgYnlwYXNzIHRoZSBpbnN0cnVtZW50YXRpb24gb24gdGhlbS4KCldoYXQgYWJvdXQgYGhwcm9iZV9pbml0X2xlYXNlZGAgYW5kIGBocHJvYmVfaW5pdF9zdGFibGVgPyBUdXJucyBvdXQsIHRob3NlIGFyZSBzdGF0aWMgZnVuY3Rpb25zIGRlZmluZWQgaW4gYGtlcm5lbC9ldmVudHMvdXByb2Jlcy5jYC4gVGhlIGNvbXBpbGVyIG1pZ2h0IGlubGluZSB0aGVtLiBJJiMzOTtsbCBlcnIgb24gdGhlIHNpZGUgb2YgY2F1dGlvbiBhbmQgaW5jbHVkZSB0aGUgY29yZSBmdW5jdGlvbnMsIHRoZSBtb3JlIGNvbXBsZXggb25lcyB0aGF0IGFyZSBsZXNzIGxpa2VseSB0byBiZSBpbmxpbmVkLCB3aXRoaW4gbXkgbGlzdDogYHByZXBhcmVfdXJldHByb2JlYCwgYGhwcm9iZV9leHBpcmVgLCBgaHByb2JlX2ZpbmFsaXplYCwgYHJpX3RpbWVyYCwgYGR1cF91dGFza2AsIGBmcmVlX3JldF9pbnN0YW5jZWAsIGFuZCBvZiBjb3Vyc2UsIGB1cHJvYmVfaGFuZGxlX3RyYW1wb2xpbmVgLgoKVGltZSB0byBoYW5kIHRoaXMgb2ZmIHRvIHRoZSBgc2V0LXJlc3VsdHNgIHRvb2wgbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwMToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VVBST0JFUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ByZXBhcmVfdXJldHByb2JlJiMzNDssCiAgICAmIzM0O2hwcm9iZV9leHBpcmUmIzM0OywKICAgICYjMzQ7aHByb2JlX2ZpbmFsaXplJiMzNDssCiAgICAmIzM0O3JpX3RpbWVyJiMzNDssCiAgICAmIzM0O2R1cF91dGFzayYjMzQ7LAogICAgJiMzNDtmcmVlX3JldF9pbnN0YW5jZSYjMzQ7LAogICAgJiMzNDt1cHJvYmVfaGFuZGxlX3RyYW1wb2xpbmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHVwcm9iZXMgc3Vic3lzdGVtIHRvIHVzZSB0aGUgbmV3IGZhc3QgdXAvZG93biBTUkNVIHJlYWQgbG9jayB2YXJpYW50cyAoYHNyY3VfZG93bl9yZWFkX2Zhc3RgIGFuZCBgc3JjdV91cF9yZWFkX2Zhc3RgKSBmb3IgYHVyZXRwcm9iZXNfc3JjdWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IGFmZmVjdHMgaG93IHVwcm9iZXMgYXJlIGxlYXNlZCBhbmQgZXhwaXJlZCwgcGFydGljdWxhcmx5IGR1cmluZyB0YXNrIGR1cGxpY2F0aW9uIGFuZCB0aW1lciBjYWxsYmFja3MuIEl0IGlzIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VVBST0JFUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ByZXBhcmVfdXJldHByb2JlJiMzNDssCiAgICAmIzM0O2hwcm9iZV9leHBpcmUmIzM0OywKICAgICYjMzQ7aHByb2JlX2ZpbmFsaXplJiMzNDssCiAgICAmIzM0O3JpX3RpbWVyJiMzNDssCiAgICAmIzM0O2R1cF91dGFzayYjMzQ7LAogICAgJiMzNDtmcmVlX3JldF9pbnN0YW5jZSYjMzQ7LAogICAgJiMzNDt1cHJvYmVfaGFuZGxlX3RyYW1wb2xpbmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHVwcm9iZXMgc3Vic3lzdGVtIHRvIHVzZSB0aGUgbmV3IGZhc3QgdXAvZG93biBTUkNVIHJlYWQgbG9jayB2YXJpYW50cyAoYHNyY3VfZG93bl9yZWFkX2Zhc3RgIGFuZCBgc3JjdV91cF9yZWFkX2Zhc3RgKSBmb3IgYHVyZXRwcm9iZXNfc3JjdWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IGFmZmVjdHMgaG93IHVwcm9iZXMgYXJlIGxlYXNlZCBhbmQgZXhwaXJlZCwgcGFydGljdWxhcmx5IGR1cmluZyB0YXNrIGR1cGxpY2F0aW9uIGFuZCB0aW1lciBjYWxsYmFja3MuIEl0IGlzIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDAxOjE1OjQwLjA4ODc3MDM5NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzNzg0Nzg3NTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVQUk9CRVNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwcmVwYXJlX3VyZXRwcm9iZVwiLFxuICAgIFwiaHByb2JlX2V4cGlyZVwiLFxuICAgIFwiaHByb2JlX2ZpbmFsaXplXCIsXG4gICAgXCJyaV90aW1lclwiLFxuICAgIFwiZHVwX3V0YXNrXCIsXG4gICAgXCJmcmVlX3JldF9pbnN0YW5jZVwiLFxuICAgIFwidXByb2JlX2hhbmRsZV90cmFtcG9saW5lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHVwcm9iZXMgc3Vic3lzdGVtIHRvIHVzZSB0aGUgbmV3IGZhc3QgdXAvZG93biBTUkNVIHJlYWQgbG9jayB2YXJpYW50cyAoYHNyY3VfZG93bl9yZWFkX2Zhc3RgIGFuZCBgc3JjdV91cF9yZWFkX2Zhc3RgKSBmb3IgYHVyZXRwcm9iZXNfc3JjdWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IGFmZmVjdHMgaG93IHVwcm9iZXMgYXJlIGxlYXNlZCBhbmQgZXhwaXJlZCwgcGFydGljdWxhcmx5IGR1cmluZyB0YXNrIGR1cGxpY2F0aW9uIGFuZCB0aW1lciBjYWxsYmFja3MuIEl0IGlzIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDE6MTU6NDAuMDg4Nzc2NjYzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTM4NDgzNTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1MDlhYWRkNGMxZDVlNGNmODEyNzYwZWMyN2MzNjQ2ZDhmODllNDRkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgSnVsIDcgMDE6MTU6MzggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9zcmN1LmggYi9pbmNsdWRlL2xpbnV4L3NyY3UuaFxcbmluZGV4IGE1NGNlOWU4MDhiOTJjLi43MmM4NmQzYjIzZjJlNCAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L3NyY3UuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvc3JjdS5oXFxuQEAgLTYzOCw0ICs2MzgsMTEgQEAgREVGSU5FX0xPQ0tfR1VBUkRfMShzcmN1X2Zhc3Rfbm90cmFjZSwgc3RydWN0IHNyY3Vfc3RydWN0LFxcbiBERUNMQVJFX0xPQ0tfR1VBUkRfMV9BVFRSUyhzcmN1X2Zhc3Rfbm90cmFjZSwgX19hY3F1aXJlc19zaGFyZWQoX1QpLCBfX3JlbGVhc2VzX3NoYXJlZCgqKHN0cnVjdCBzcmN1X3N0cnVjdCAqKilfVCkpXFxuICNkZWZpbmUgY2xhc3Nfc3JjdV9mYXN0X25vdHJhY2VfY29uc3RydWN0b3IoX1QpIFdJVEhfTE9DS19HVUFSRF8xX0FUVFJTKHNyY3VfZmFzdF9ub3RyYWNlLCBfVClcXG4gXFxuK0RFRklORV9MT0NLX0dVQVJEXzEoc3JjdV9mYXN0X3VwZG93biwgc3RydWN0IHNyY3Vfc3RydWN0LFxcbitcXHRcXHQgICAgX1QtXFx1MDAzZXNjcCA9IHNyY3VfcmVhZF9sb2NrX2Zhc3RfdXBkb3duKF9ULVxcdTAwM2Vsb2NrKSxcXG4rXFx0XFx0ICAgIHNyY3VfcmVhZF91bmxvY2tfZmFzdF91cGRvd24oX1QtXFx1MDAzZWxvY2ssIF9ULVxcdTAwM2VzY3ApLFxcbitcXHRcXHQgICAgc3RydWN0IHNyY3VfY3RyIF9fcGVyY3B1ICpzY3ApXFxuK0RFQ0xBUkVfTE9DS19HVUFSRF8xX0FUVFJTKHNyY3VfZmFzdF91cGRvd24sIF9fYWNxdWlyZXNfc2hhcmVkKF9UKSwgX19yZWxlYXNlc19zaGFyZWQoKihzdHJ1Y3Qgc3JjdV9zdHJ1Y3QgKiopX1QpKVxcbisjZGVmaW5lIGNsYXNzX3NyY3VfZmFzdF91cGRvd25fY29uc3RydWN0b3IoX1QpIFdJVEhfTE9DS19HVUFSRF8xX0FUVFJTKHNyY3VfZmFzdF91cGRvd24sIF9UKVxcbitcXG4gI2VuZGlmXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvdXByb2Jlcy5oIGIvaW5jbHVkZS9saW51eC91cHJvYmVzLmhcXG5pbmRleCBmNTQ4ZmVhMmFkZWM4Zi4uZjNiMDc3NTNjMmYzZDggMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC91cHJvYmVzLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L3Vwcm9iZXMuaFxcbkBAIC0yNSw2ICsyNSw3IEBAIHN0cnVjdCBtbV9zdHJ1Y3Q7XFxuIHN0cnVjdCBpbm9kZTtcXG4gc3RydWN0IG5vdGlmaWVyX2Jsb2NrO1xcbiBzdHJ1Y3QgcGFnZTtcXG4rc3RydWN0IHNyY3VfY3RyO1xcbiBcXG4gLypcXG4gICogQWxsb3dlZCByZXR1cm4gdmFsdWVzIGZyb20gdXByb2JlIGNvbnN1bWVyJ3MgaGFuZGxlciBjYWxsYmFja1xcbkBAIC0xMDYsNyArMTA3LDcgQEAgZW51bSBocHJvYmVfc3RhdGUge1xcbiAgKiAgICAgdW5kZXJseWluZyB1cHJvYmUgaXMgbm90IGd1YXJhbnRlZWQgYW55bW9yZS4gX19VUFJPQkVfREVBRCBpcyBqdXN0IGFuXFxuICAqICAgICBpbnRlcm5hbCBtYXJrZXIgYW5kIGlzIGhhbmRsZWQgdHJhbnNwYXJlbnRseSBieSBocHJvYmVfZmV0Y2goKSBoZWxwZXIuXFxuICAqXFxuLSAqIFdoZW4gdXByb2JlIGlzIFNSQ1UtcHJvdGVjdGVkLCB3ZSBhbHNvIHJlY29yZCBzcmN1X2lkeCB2YWx1ZSwgbmVjZXNzYXJ5IGZvclxcbisgKiBXaGVuIHVwcm9iZSBpcyBTUkNVLXByb3RlY3RlZCwgd2UgYWxzbyByZWNvcmQgc3JjdV9zY3AgdmFsdWUsIG5lY2Vzc2FyeSBmb3JcXG4gICogU1JDVSB1bmxvY2tpbmcuXFxuICAqXFxuICAqIFNlZSBocHJvYmVfZXhwaXJlKCkgYW5kIGhwcm9iZV9mZXRjaCgpIGZvciBkZXRhaWxzIG9mIHJhY2UtZnJlZSB1cHJvYmVcXG5AQCAtMTE1LDcgKzExNiw3IEBAIGVudW0gaHByb2JlX3N0YXRlIHtcXG4gICovXFxuIHN0cnVjdCBocHJvYmUge1xcbiBcXHRlbnVtIGhwcm9iZV9zdGF0ZSBzdGF0ZTtcXG4tXFx0aW50IHNyY3VfaWR4O1xcbitcXHRzdHJ1Y3Qgc3JjdV9jdHIgX19wZXJjcHUgKnNyY3Vfc2NwO1xcbiBcXHRzdHJ1Y3QgdXByb2JlICp1cHJvYmU7XFxuIH07XFxuIFxcbmRpZmYgLS1naXQgYS9rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYyBiL2tlcm5lbC9ldmVudHMvdXByb2Jlcy5jXFxuaW5kZXggNDA4NGU5MjZlMjg0NDguLmFmYTQ5MWIwYmQzZjkwIDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9ldmVudHMvdXByb2Jlcy5jXFxuKysrIGIva2VybmVsL2V2ZW50cy91cHJvYmVzLmNcXG5AQCAtNTQsNyArNTQsNyBAQCBzdGF0aWMgc3RydWN0IG11dGV4IHVwcm9iZXNfbW1hcF9tdXRleFtVUFJPQkVTX0hBU0hfU1pdO1xcbiBERUZJTkVfU1RBVElDX1BFUkNQVV9SV1NFTShkdXBfbW1hcF9zZW0pO1xcbiBcXG4gLyogQ292ZXJzIHJldHVybl9pbnN0YW5jZSdzIHVwcm9iZSBsaWZldGltZS4gKi9cXG4tREVGSU5FX1NUQVRJQ19TUkNVKHVyZXRwcm9iZXNfc3JjdSk7XFxuK0RFRklORV9TVEFUSUNfU1JDVV9GQVNUX1VQRE9XTih1cmV0cHJvYmVzX3NyY3UpO1xcbiBcXG4gLyogSGF2ZSBhIGNvcHkgb2Ygb3JpZ2luYWwgaW5zdHJ1Y3Rpb24gKi9cXG4gI2RlZmluZSBVUFJPQkVfQ09QWV9JTlNOXFx0MFxcbkBAIC03MDcsMTIgKzcwNywxMyBAQCBzdGF0aWMgdm9pZCBwdXRfdXByb2JlKHN0cnVjdCB1cHJvYmUgKnVwcm9iZSlcXG4gfVxcbiBcXG4gLyogSW5pdGlhbGl6ZSBocHJvYmUgYXMgU1JDVS1wcm90ZWN0ZWQgXFxcImxlYXNlZFxcXCIgdXByb2JlICovXFxuLXN0YXRpYyB2b2lkIGhwcm9iZV9pbml0X2xlYXNlZChzdHJ1Y3QgaHByb2JlICpocHJvYmUsIHN0cnVjdCB1cHJvYmUgKnVwcm9iZSwgaW50IHNyY3VfaWR4KVxcbitzdGF0aWMgdm9pZCBocHJvYmVfaW5pdF9sZWFzZWQoc3RydWN0IGhwcm9iZSAqaHByb2JlLCBzdHJ1Y3QgdXByb2JlICp1cHJvYmUsXFxuK1xcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgc3JjdV9jdHIgX19wZXJjcHUgKnNyY3Vfc2NwKVxcbiB7XFxuIFxcdFdBUk5fT04oIXVwcm9iZSk7XFxuIFxcdGhwcm9iZS1cXHUwMDNlc3RhdGUgPSBIUFJPQkVfTEVBU0VEO1xcbiBcXHRocHJvYmUtXFx1MDAzZXVwcm9iZSA9IHVwcm9iZTtcXG4tXFx0aHByb2JlLVxcdTAwM2VzcmN1X2lkeCA9IHNyY3VfaWR4O1xcbitcXHRocHJvYmUtXFx1MDAzZXNyY3Vfc2NwID0gc3JjdV9zY3A7XFxuIH1cXG4gXFxuIC8qIEluaXRpYWxpemUgaHByb2JlIGFzIHJlZmNvdW50ZWQgKFxcXCJzdGFibGVcXFwiKSB1cHJvYmUgKHVwcm9iZSBjYW4gYmUgTlVMTCkuICovXFxuQEAgLTcyMCw3ICs3MjEsNyBAQCBzdGF0aWMgdm9pZCBocHJvYmVfaW5pdF9zdGFibGUoc3RydWN0IGhwcm9iZSAqaHByb2JlLCBzdHJ1Y3QgdXByb2JlICp1cHJvYmUpXFxuIHtcXG4gXFx0aHByb2JlLVxcdTAwM2VzdGF0ZSA9IHVwcm9iZSA/IEhQUk9CRV9TVEFCTEUgOiBIUFJPQkVfR09ORTtcXG4gXFx0aHByb2JlLVxcdTAwM2V1cHJvYmUgPSB1cHJvYmU7XFxuLVxcdGhwcm9iZS1cXHUwMDNlc3JjdV9pZHggPSAtMTtcXG4rXFx0aHByb2JlLVxcdTAwM2VzcmN1X3NjcCA9IE5VTEw7XFxuIH1cXG4gXFxuIC8qXFxuQEAgLTc1Nyw3ICs3NTgsNyBAQCBzdGF0aWMgdm9pZCBocHJvYmVfZmluYWxpemUoc3RydWN0IGhwcm9iZSAqaHByb2JlLCBlbnVtIGhwcm9iZV9zdGF0ZSBoc3RhdGUpXFxuIHtcXG4gXFx0c3dpdGNoIChoc3RhdGUpIHtcXG4gXFx0Y2FzZSBIUFJPQkVfTEVBU0VEOlxcbi1cXHRcXHRfX3NyY3VfcmVhZF91bmxvY2soXFx1MDAyNnVyZXRwcm9iZXNfc3JjdSwgaHByb2JlLVxcdTAwM2VzcmN1X2lkeCk7XFxuK1xcdFxcdHNyY3VfdXBfcmVhZF9mYXN0KFxcdTAwMjZ1cmV0cHJvYmVzX3NyY3UsIGhwcm9iZS1cXHUwMDNlc3JjdV9zY3ApO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBIUFJPQkVfU1RBQkxFOlxcbiBcXHRcXHRwdXRfdXByb2JlKGhwcm9iZS1cXHUwMDNldXByb2JlKTtcXG5AQCAtODI5LDcgKzgzMCw3IEBAIHN0YXRpYyBzdHJ1Y3QgdXByb2JlICpocHJvYmVfZXhwaXJlKHN0cnVjdCBocHJvYmUgKmhwcm9iZSwgYm9vbCBnZXQpXFxuIFxcdFxcdCAqL1xcbiBcXHRcXHRpZiAodHJ5X2NtcHhjaGcoXFx1MDAyNmhwcm9iZS1cXHUwMDNlc3RhdGUsIFxcdTAwMjZoc3RhdGUsIHVwcm9iZSA/IEhQUk9CRV9TVEFCTEUgOiBIUFJPQkVfR09ORSkpIHtcXG4gXFx0XFx0XFx0LyogV2Ugd29uIHRoZSByYWNlLCB3ZSBhcmUgdGhlIG9uZXMgdG8gdW5sb2NrIFNSQ1UgKi9cXG4tXFx0XFx0XFx0X19zcmN1X3JlYWRfdW5sb2NrKFxcdTAwMjZ1cmV0cHJvYmVzX3NyY3UsIGhwcm9iZS1cXHUwMDNlc3JjdV9pZHgpO1xcbitcXHRcXHRcXHRzcmN1X3VwX3JlYWRfZmFzdChcXHUwMDI2dXJldHByb2Jlc19zcmN1LCBocHJvYmUtXFx1MDAzZXNyY3Vfc2NwKTtcXG4gXFx0XFx0XFx0cmV0dXJuIGdldCA/IGdldF91cHJvYmUodXByb2JlKSA6IHVwcm9iZTtcXG4gXFx0XFx0fVxcbiBcXG5AQCAtMjA0NSw3ICsyMDQ2LDcgQEAgc3RhdGljIHZvaWQgcmlfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKnRpbWVyKVxcbiBcXHRzdHJ1Y3QgcmV0dXJuX2luc3RhbmNlICpyaTtcXG4gXFxuIFxcdC8qIFNSQ1UgcHJvdGVjdHMgdXByb2JlIGZyb20gcmV1c2UgZm9yIHRoZSBjbXB4Y2hnKCkgaW5zaWRlIGhwcm9iZV9leHBpcmUoKS4gKi9cXG4tXFx0Z3VhcmQoc3JjdSkoXFx1MDAyNnVyZXRwcm9iZXNfc3JjdSk7XFxuK1xcdGd1YXJkKHNyY3VfZmFzdF91cGRvd24pKFxcdTAwMjZ1cmV0cHJvYmVzX3NyY3UpO1xcbiBcXHQvKiBSQ1UgcHJvdGVjdHMgcmV0dXJuX2luc3RhbmNlIGZyb20gZnJlZWluZy4gKi9cXG4gXFx0Z3VhcmQocmN1KSgpO1xcbiBcXG5AQCAtMjE0Miw3ICsyMTQzLDcgQEAgc3RhdGljIGludCBkdXBfdXRhc2soc3RydWN0IHRhc2tfc3RydWN0ICp0LCBzdHJ1Y3QgdXByb2JlX3Rhc2sgKm9fdXRhc2spXFxuIFxcdHQtXFx1MDAzZXV0YXNrID0gbl91dGFzaztcXG4gXFxuIFxcdC8qIHByb3RlY3QgdXByb2JlcyBmcm9tIGZyZWVpbmcsIHdlJ2xsIG5lZWQgdHJ5X2dldF91cHJvYmUoKSB0aGVtICovXFxuLVxcdGd1YXJkKHNyY3UpKFxcdTAwMjZ1cmV0cHJvYmVzX3NyY3UpO1xcbitcXHRndWFyZChzcmN1X2Zhc3RfdXBkb3duKShcXHUwMDI2dXJldHByb2Jlc19zcmN1KTtcXG4gXFxuIFxcdHAgPSBcXHUwMDI2bl91dGFzay1cXHUwMDNlcmV0dXJuX2luc3RhbmNlcztcXG4gXFx0Zm9yIChvID0gb191dGFzay1cXHUwMDNlcmV0dXJuX2luc3RhbmNlczsgbzsgbyA9IG8tXFx1MDAzZW5leHQpIHtcXG5AQCAtMjI1NCw4ICsyMjU1LDggQEAgc3RhdGljIHZvaWQgcHJlcGFyZV91cmV0cHJvYmUoc3RydWN0IHVwcm9iZSAqdXByb2JlLCBzdHJ1Y3QgcHRfcmVncyAqcmVncyxcXG4ge1xcbiBcXHRzdHJ1Y3QgdXByb2JlX3Rhc2sgKnV0YXNrID0gY3VycmVudC1cXHUwMDNldXRhc2s7XFxuIFxcdHVuc2lnbmVkIGxvbmcgb3JpZ19yZXRfdmFkZHIsIHRyYW1wb2xpbmVfdmFkZHI7XFxuK1xcdHN0cnVjdCBzcmN1X2N0ciBfX3BlcmNwdSAqc3JjdV9zY3A7XFxuIFxcdGJvb2wgY2hhaW5lZDtcXG4tXFx0aW50IHNyY3VfaWR4O1xcbiBcXG4gXFx0aWYgKCFnZXRfeG9sX2FyZWEoKSlcXG4gXFx0XFx0Z290byBmcmVlO1xcbkBAIC0yMjkzLDggKzIyOTQsMTIgQEAgc3RhdGljIHZvaWQgcHJlcGFyZV91cmV0cHJvYmUoc3RydWN0IHVwcm9iZSAqdXByb2JlLCBzdHJ1Y3QgcHRfcmVncyAqcmVncyxcXG4gXFx0XFx0b3JpZ19yZXRfdmFkZHIgPSB1dGFzay1cXHUwMDNlcmV0dXJuX2luc3RhbmNlcy1cXHUwMDNlb3JpZ19yZXRfdmFkZHI7XFxuIFxcdH1cXG4gXFxuLVxcdC8qIF9fc3JjdV9yZWFkX2xvY2soKSBiZWNhdXNlIFNSQ1UgbG9jayBzdXJ2aXZlcyBzd2l0Y2ggdG8gdXNlciBzcGFjZSAqL1xcbi1cXHRzcmN1X2lkeCA9IF9fc3JjdV9yZWFkX2xvY2soXFx1MDAyNnVyZXRwcm9iZXNfc3JjdSk7XFxuK1xcdC8qXFxuK1xcdCAqIFVzZSBzcmN1X2Rvd25fcmVhZF9mYXN0KCkgYmVjYXVzZSB0aGUgU1JDVSBsb2NrIHN1cnZpdmVzIGEgc3dpdGNoIHRvXFxuK1xcdCAqIHVzZXIgc3BhY2UgYW5kIGNhbiBiZSB1bmxvY2tlZCBmcm9tIGEgZGlmZmVyZW50IGNvbnRleHQgYnkgcmlfdGltZXIoKVxcbitcXHQgKiBvciBkdXBfdXRhc2soKS5cXG4rXFx0ICovXFxuK1xcdHNyY3Vfc2NwID0gc3JjdV9kb3duX3JlYWRfZmFzdChcXHUwMDI2dXJldHByb2Jlc19zcmN1KTtcXG4gXFxuIFxcdHJpLVxcdTAwM2VmdW5jID0gaW5zdHJ1Y3Rpb25fcG9pbnRlcihyZWdzKTtcXG4gXFx0cmktXFx1MDAzZXN0YWNrID0gdXNlcl9zdGFja19wb2ludGVyKHJlZ3MpO1xcbkBAIC0yMzAzLDcgKzIzMDgsNyBAQCBzdGF0aWMgdm9pZCBwcmVwYXJlX3VyZXRwcm9iZShzdHJ1Y3QgdXByb2JlICp1cHJvYmUsIHN0cnVjdCBwdF9yZWdzICpyZWdzLFxcbiBcXG4gXFx0dXRhc2stXFx1MDAzZWRlcHRoKys7XFxuIFxcbi1cXHRocHJvYmVfaW5pdF9sZWFzZWQoXFx1MDAyNnJpLVxcdTAwM2VocHJvYmUsIHVwcm9iZSwgc3JjdV9pZHgpO1xcbitcXHRocHJvYmVfaW5pdF9sZWFzZWQoXFx1MDAyNnJpLVxcdTAwM2VocHJvYmUsIHVwcm9iZSwgc3JjdV9zY3ApO1xcbiBcXHRyaS1cXHUwMDNlbmV4dCA9IHV0YXNrLVxcdTAwM2VyZXR1cm5faW5zdGFuY2VzO1xcbiBcXHRyY3VfYXNzaWduX3BvaW50ZXIodXRhc2stXFx1MDAzZXJldHVybl9pbnN0YW5jZXMsIHJpKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDAxOjE1OjQwLjkwMzYxNDUwNVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODI5Njk5MzI4MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVBST0JFU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInByZXBhcmVfdXJldHByb2JlXCIsXG4gICAgXCJocHJvYmVfZXhwaXJlXCIsXG4gICAgXCJocHJvYmVfZmluYWxpemVcIixcbiAgICBcInJpX3RpbWVyXCIsXG4gICAgXCJkdXBfdXRhc2tcIixcbiAgICBcImZyZWVfcmV0X2luc3RhbmNlXCIsXG4gICAgXCJ1cHJvYmVfaGFuZGxlX3RyYW1wb2xpbmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgdXByb2JlcyBzdWJzeXN0ZW0gdG8gdXNlIHRoZSBuZXcgZmFzdCB1cC9kb3duIFNSQ1UgcmVhZCBsb2NrIHZhcmlhbnRzIChgc3JjdV9kb3duX3JlYWRfZmFzdGAgYW5kIGBzcmN1X3VwX3JlYWRfZmFzdGApIGZvciBgdXJldHByb2Jlc19zcmN1YC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgYWZmZWN0cyBob3cgdXByb2JlcyBhcmUgbGVhc2VkIGFuZCBleHBpcmVkLCBwYXJ0aWN1bGFybHkgZHVyaW5nIHRhc2sgZHVwbGljYXRpb24gYW5kIHRpbWVyIGNhbGxiYWNrcy4gSXQgaXMgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDUwOWFhZGQ0YzFkNWU0Y2Y4MTI3NjBlYzI3YzM2NDZkOGY4OWU0NGRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCA3IDAxOjE1OjM4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9zcmN1LmggYi9pbmNsdWRlL2xpbnV4L3NyY3UuaFxuaW5kZXggYTU0Y2U5ZTgwOGI5MmMuLjcyYzg2ZDNiMjNmMmU0IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9zcmN1LmhcbisrKyBiL2luY2x1ZGUvbGludXgvc3JjdS5oXG5AQCAtNjM4LDQgKzYzOCwxMSBAQCBERUZJTkVfTE9DS19HVUFSRF8xKHNyY3VfZmFzdF9ub3RyYWNlLCBzdHJ1Y3Qgc3JjdV9zdHJ1Y3QsXG4gREVDTEFSRV9MT0NLX0dVQVJEXzFfQVRUUlMoc3JjdV9mYXN0X25vdHJhY2UsIF9fYWNxdWlyZXNfc2hhcmVkKF9UKSwgX19yZWxlYXNlc19zaGFyZWQoKihzdHJ1Y3Qgc3JjdV9zdHJ1Y3QgKiopX1QpKVxuICNkZWZpbmUgY2xhc3Nfc3JjdV9mYXN0X25vdHJhY2VfY29uc3RydWN0b3IoX1QpIFdJVEhfTE9DS19HVUFSRF8xX0FUVFJTKHNyY3VfZmFzdF9ub3RyYWNlLCBfVClcbiBcbitERUZJTkVfTE9DS19HVUFSRF8xKHNyY3VfZmFzdF91cGRvd24sIHN0cnVjdCBzcmN1X3N0cnVjdCxcbitcdFx0ICAgIF9ULVx1MDAzZXNjcCA9IHNyY3VfcmVhZF9sb2NrX2Zhc3RfdXBkb3duKF9ULVx1MDAzZWxvY2spLFxuK1x0XHQgICAgc3JjdV9yZWFkX3VubG9ja19mYXN0X3VwZG93bihfVC1cdTAwM2Vsb2NrLCBfVC1cdTAwM2VzY3ApLFxuK1x0XHQgICAgc3RydWN0IHNyY3VfY3RyIF9fcGVyY3B1ICpzY3ApXG4rREVDTEFSRV9MT0NLX0dVQVJEXzFfQVRUUlMoc3JjdV9mYXN0X3VwZG93biwgX19hY3F1aXJlc19zaGFyZWQoX1QpLCBfX3JlbGVhc2VzX3NoYXJlZCgqKHN0cnVjdCBzcmN1X3N0cnVjdCAqKilfVCkpXG4rI2RlZmluZSBjbGFzc19zcmN1X2Zhc3RfdXBkb3duX2NvbnN0cnVjdG9yKF9UKSBXSVRIX0xPQ0tfR1VBUkRfMV9BVFRSUyhzcmN1X2Zhc3RfdXBkb3duLCBfVClcbitcbiAjZW5kaWZcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3Vwcm9iZXMuaCBiL2luY2x1ZGUvbGludXgvdXByb2Jlcy5oXG5pbmRleCBmNTQ4ZmVhMmFkZWM4Zi4uZjNiMDc3NTNjMmYzZDggMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3Vwcm9iZXMuaFxuKysrIGIvaW5jbHVkZS9saW51eC91cHJvYmVzLmhcbkBAIC0yNSw2ICsyNSw3IEBAIHN0cnVjdCBtbV9zdHJ1Y3Q7XG4gc3RydWN0IGlub2RlO1xuIHN0cnVjdCBub3RpZmllcl9ibG9jaztcbiBzdHJ1Y3QgcGFnZTtcbitzdHJ1Y3Qgc3JjdV9jdHI7XG4gXG4gLypcbiAgKiBBbGxvd2VkIHJldHVybiB2YWx1ZXMgZnJvbSB1cHJvYmUgY29uc3VtZXIncyBoYW5kbGVyIGNhbGxiYWNrXG5AQCAtMTA2LDcgKzEwNyw3IEBAIGVudW0gaHByb2JlX3N0YXRlIHtcbiAgKiAgICAgdW5kZXJseWluZyB1cHJvYmUgaXMgbm90IGd1YXJhbnRlZWQgYW55bW9yZS4gX19VUFJPQkVfREVBRCBpcyBqdXN0IGFuXG4gICogICAgIGludGVybmFsIG1hcmtlciBhbmQgaXMgaGFuZGxlZCB0cmFuc3BhcmVudGx5IGJ5IGhwcm9iZV9mZXRjaCgpIGhlbHBlci5cbiAgKlxuLSAqIFdoZW4gdXByb2JlIGlzIFNSQ1UtcHJvdGVjdGVkLCB3ZSBhbHNvIHJlY29yZCBzcmN1X2lkeCB2YWx1ZSwgbmVjZXNzYXJ5IGZvclxuKyAqIFdoZW4gdXByb2JlIGlzIFNSQ1UtcHJvdGVjdGVkLCB3ZSBhbHNvIHJlY29yZCBzcmN1X3NjcCB2YWx1ZSwgbmVjZXNzYXJ5IGZvclxuICAqIFNSQ1UgdW5sb2NraW5nLlxuICAqXG4gICogU2VlIGhwcm9iZV9leHBpcmUoKSBhbmQgaHByb2JlX2ZldGNoKCkgZm9yIGRldGFpbHMgb2YgcmFjZS1mcmVlIHVwcm9iZVxuQEAgLTExNSw3ICsxMTYsNyBAQCBlbnVtIGhwcm9iZV9zdGF0ZSB7XG4gICovXG4gc3RydWN0IGhwcm9iZSB7XG4gXHRlbnVtIGhwcm9iZV9zdGF0ZSBzdGF0ZTtcbi1cdGludCBzcmN1X2lkeDtcbitcdHN0cnVjdCBzcmN1X2N0ciBfX3BlcmNwdSAqc3JjdV9zY3A7XG4gXHRzdHJ1Y3QgdXByb2JlICp1cHJvYmU7XG4gfTtcbiBcbmRpZmYgLS1naXQgYS9rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYyBiL2tlcm5lbC9ldmVudHMvdXByb2Jlcy5jXG5pbmRleCA0MDg0ZTkyNmUyODQ0OC4uYWZhNDkxYjBiZDNmOTAgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuY1xuKysrIGIva2VybmVsL2V2ZW50cy91cHJvYmVzLmNcbkBAIC01NCw3ICs1NCw3IEBAIHN0YXRpYyBzdHJ1Y3QgbXV0ZXggdXByb2Jlc19tbWFwX211dGV4W1VQUk9CRVNfSEFTSF9TWl07XG4gREVGSU5FX1NUQVRJQ19QRVJDUFVfUldTRU0oZHVwX21tYXBfc2VtKTtcbiBcbiAvKiBDb3ZlcnMgcmV0dXJuX2luc3RhbmNlJ3MgdXByb2JlIGxpZmV0aW1lLiAqL1xuLURFRklORV9TVEFUSUNfU1JDVSh1cmV0cHJvYmVzX3NyY3UpO1xuK0RFRklORV9TVEFUSUNfU1JDVV9GQVNUX1VQRE9XTih1cmV0cHJvYmVzX3NyY3UpO1xuIFxuIC8qIEhhdmUgYSBjb3B5IG9mIG9yaWdpbmFsIGluc3RydWN0aW9uICovXG4gI2RlZmluZSBVUFJPQkVfQ09QWV9JTlNOXHQwXG5AQCAtNzA3LDEyICs3MDcsMTMgQEAgc3RhdGljIHZvaWQgcHV0X3Vwcm9iZShzdHJ1Y3QgdXByb2JlICp1cHJvYmUpXG4gfVxuIFxuIC8qIEluaXRpYWxpemUgaHByb2JlIGFzIFNSQ1UtcHJvdGVjdGVkIFwibGVhc2VkXCIgdXByb2JlICovXG4tc3RhdGljIHZvaWQgaHByb2JlX2luaXRfbGVhc2VkKHN0cnVjdCBocHJvYmUgKmhwcm9iZSwgc3RydWN0IHVwcm9iZSAqdXByb2JlLCBpbnQgc3JjdV9pZHgpXG4rc3RhdGljIHZvaWQgaHByb2JlX2luaXRfbGVhc2VkKHN0cnVjdCBocHJvYmUgKmhwcm9iZSwgc3RydWN0IHVwcm9iZSAqdXByb2JlLFxuK1x0XHRcdCAgICAgICBzdHJ1Y3Qgc3JjdV9jdHIgX19wZXJjcHUgKnNyY3Vfc2NwKVxuIHtcbiBcdFdBUk5fT04oIXVwcm9iZSk7XG4gXHRocHJvYmUtXHUwMDNlc3RhdGUgPSBIUFJPQkVfTEVBU0VEO1xuIFx0aHByb2JlLVx1MDAzZXVwcm9iZSA9IHVwcm9iZTtcbi1cdGhwcm9iZS1cdTAwM2VzcmN1X2lkeCA9IHNyY3VfaWR4O1xuK1x0aHByb2JlLVx1MDAzZXNyY3Vfc2NwID0gc3JjdV9zY3A7XG4gfVxuIFxuIC8qIEluaXRpYWxpemUgaHByb2JlIGFzIHJlZmNvdW50ZWQgKFwic3RhYmxlXCIpIHVwcm9iZSAodXByb2JlIGNhbiBiZSBOVUxMKS4gKi9cbkBAIC03MjAsNyArNzIxLDcgQEAgc3RhdGljIHZvaWQgaHByb2JlX2luaXRfc3RhYmxlKHN0cnVjdCBocHJvYmUgKmhwcm9iZSwgc3RydWN0IHVwcm9iZSAqdXByb2JlKVxuIHtcbiBcdGhwcm9iZS1cdTAwM2VzdGF0ZSA9IHVwcm9iZSA/IEhQUk9CRV9TVEFCTEUgOiBIUFJPQkVfR09ORTtcbiBcdGhwcm9iZS1cdTAwM2V1cHJvYmUgPSB1cHJvYmU7XG4tXHRocHJvYmUtXHUwMDNlc3JjdV9pZHggPSAtMTtcbitcdGhwcm9iZS1cdTAwM2VzcmN1X3NjcCA9IE5VTEw7XG4gfVxuIFxuIC8qXG5AQCAtNzU3LDcgKzc1OCw3IEBAIHN0YXRpYyB2b2lkIGhwcm9iZV9maW5hbGl6ZShzdHJ1Y3QgaHByb2JlICpocHJvYmUsIGVudW0gaHByb2JlX3N0YXRlIGhzdGF0ZSlcbiB7XG4gXHRzd2l0Y2ggKGhzdGF0ZSkge1xuIFx0Y2FzZSBIUFJPQkVfTEVBU0VEOlxuLVx0XHRfX3NyY3VfcmVhZF91bmxvY2soXHUwMDI2dXJldHByb2Jlc19zcmN1LCBocHJvYmUtXHUwMDNlc3JjdV9pZHgpO1xuK1x0XHRzcmN1X3VwX3JlYWRfZmFzdChcdTAwMjZ1cmV0cHJvYmVzX3NyY3UsIGhwcm9iZS1cdTAwM2VzcmN1X3NjcCk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBIUFJPQkVfU1RBQkxFOlxuIFx0XHRwdXRfdXByb2JlKGhwcm9iZS1cdTAwM2V1cHJvYmUpO1xuQEAgLTgyOSw3ICs4MzAsNyBAQCBzdGF0aWMgc3RydWN0IHVwcm9iZSAqaHByb2JlX2V4cGlyZShzdHJ1Y3QgaHByb2JlICpocHJvYmUsIGJvb2wgZ2V0KVxuIFx0XHQgKi9cbiBcdFx0aWYgKHRyeV9jbXB4Y2hnKFx1MDAyNmhwcm9iZS1cdTAwM2VzdGF0ZSwgXHUwMDI2aHN0YXRlLCB1cHJvYmUgPyBIUFJPQkVfU1RBQkxFIDogSFBST0JFX0dPTkUpKSB7XG4gXHRcdFx0LyogV2Ugd29uIHRoZSByYWNlLCB3ZSBhcmUgdGhlIG9uZXMgdG8gdW5sb2NrIFNSQ1UgKi9cbi1cdFx0XHRfX3NyY3VfcmVhZF91bmxvY2soXHUwMDI2dXJldHByb2Jlc19zcmN1LCBocHJvYmUtXHUwMDNlc3JjdV9pZHgpO1xuK1x0XHRcdHNyY3VfdXBfcmVhZF9mYXN0KFx1MDAyNnVyZXRwcm9iZXNfc3JjdSwgaHByb2JlLVx1MDAzZXNyY3Vfc2NwKTtcbiBcdFx0XHRyZXR1cm4gZ2V0ID8gZ2V0X3Vwcm9iZSh1cHJvYmUpIDogdXByb2JlO1xuIFx0XHR9XG4gXG5AQCAtMjA0NSw3ICsyMDQ2LDcgQEAgc3RhdGljIHZvaWQgcmlfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKnRpbWVyKVxuIFx0c3RydWN0IHJldHVybl9pbnN0YW5jZSAqcmk7XG4gXG4gXHQvKiBTUkNVIHByb3RlY3RzIHVwcm9iZSBmcm9tIHJldXNlIGZvciB0aGUgY21weGNoZygpIGluc2lkZSBocHJvYmVfZXhwaXJlKCkuICovXG4tXHRndWFyZChzcmN1KShcdTAwMjZ1cmV0cHJvYmVzX3NyY3UpO1xuK1x0Z3VhcmQoc3JjdV9mYXN0X3VwZG93bikoXHUwMDI2dXJldHByb2Jlc19zcmN1KTtcbiBcdC8qIFJDVSBwcm90ZWN0cyByZXR1cm5faW5zdGFuY2UgZnJvbSBmcmVlaW5nLiAqL1xuIFx0Z3VhcmQocmN1KSgpO1xuIFxuQEAgLTIxNDIsNyArMjE0Myw3IEBAIHN0YXRpYyBpbnQgZHVwX3V0YXNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqdCwgc3RydWN0IHVwcm9iZV90YXNrICpvX3V0YXNrKVxuIFx0dC1cdTAwM2V1dGFzayA9IG5fdXRhc2s7XG4gXG4gXHQvKiBwcm90ZWN0IHVwcm9iZXMgZnJvbSBmcmVlaW5nLCB3ZSdsbCBuZWVkIHRyeV9nZXRfdXByb2JlKCkgdGhlbSAqL1xuLVx0Z3VhcmQoc3JjdSkoXHUwMDI2dXJldHByb2Jlc19zcmN1KTtcbitcdGd1YXJkKHNyY3VfZmFzdF91cGRvd24pKFx1MDAyNnVyZXRwcm9iZXNfc3JjdSk7XG4gXG4gXHRwID0gXHUwMDI2bl91dGFzay1cdTAwM2VyZXR1cm5faW5zdGFuY2VzO1xuIFx0Zm9yIChvID0gb191dGFzay1cdTAwM2VyZXR1cm5faW5zdGFuY2VzOyBvOyBvID0gby1cdTAwM2VuZXh0KSB7XG5AQCAtMjI1NCw4ICsyMjU1LDggQEAgc3RhdGljIHZvaWQgcHJlcGFyZV91cmV0cHJvYmUoc3RydWN0IHVwcm9iZSAqdXByb2JlLCBzdHJ1Y3QgcHRfcmVncyAqcmVncyxcbiB7XG4gXHRzdHJ1Y3QgdXByb2JlX3Rhc2sgKnV0YXNrID0gY3VycmVudC1cdTAwM2V1dGFzaztcbiBcdHVuc2lnbmVkIGxvbmcgb3JpZ19yZXRfdmFkZHIsIHRyYW1wb2xpbmVfdmFkZHI7XG4rXHRzdHJ1Y3Qgc3JjdV9jdHIgX19wZXJjcHUgKnNyY3Vfc2NwO1xuIFx0Ym9vbCBjaGFpbmVkO1xuLVx0aW50IHNyY3VfaWR4O1xuIFxuIFx0aWYgKCFnZXRfeG9sX2FyZWEoKSlcbiBcdFx0Z290byBmcmVlO1xuQEAgLTIyOTMsOCArMjI5NCwxMiBAQCBzdGF0aWMgdm9pZCBwcmVwYXJlX3VyZXRwcm9iZShzdHJ1Y3QgdXByb2JlICp1cHJvYmUsIHN0cnVjdCBwdF9yZWdzICpyZWdzLFxuIFx0XHRvcmlnX3JldF92YWRkciA9IHV0YXNrLVx1MDAzZXJldHVybl9pbnN0YW5jZXMtXHUwMDNlb3JpZ19yZXRfdmFkZHI7XG4gXHR9XG4gXG4tXHQvKiBfX3NyY3VfcmVhZF9sb2NrKCkgYmVjYXVzZSBTUkNVIGxvY2sgc3Vydml2ZXMgc3dpdGNoIHRvIHVzZXIgc3BhY2UgKi9cbi1cdHNyY3VfaWR4ID0gX19zcmN1X3JlYWRfbG9jayhcdTAwMjZ1cmV0cHJvYmVzX3NyY3UpO1xuK1x0LypcbitcdCAqIFVzZSBzcmN1X2Rvd25fcmVhZF9mYXN0KCkgYmVjYXVzZSB0aGUgU1JDVSBsb2NrIHN1cnZpdmVzIGEgc3dpdGNoIHRvXG4rXHQgKiB1c2VyIHNwYWNlIGFuZCBjYW4gYmUgdW5sb2NrZWQgZnJvbSBhIGRpZmZlcmVudCBjb250ZXh0IGJ5IHJpX3RpbWVyKClcbitcdCAqIG9yIGR1cF91dGFzaygpLlxuK1x0ICovXG4rXHRzcmN1X3NjcCA9IHNyY3VfZG93bl9yZWFkX2Zhc3QoXHUwMDI2dXJldHByb2Jlc19zcmN1KTtcbiBcbiBcdHJpLVx1MDAzZWZ1bmMgPSBpbnN0cnVjdGlvbl9wb2ludGVyKHJlZ3MpO1xuIFx0cmktXHUwMDNlc3RhY2sgPSB1c2VyX3N0YWNrX3BvaW50ZXIocmVncyk7XG5AQCAtMjMwMyw3ICsyMzA4LDcgQEAgc3RhdGljIHZvaWQgcHJlcGFyZV91cmV0cHJvYmUoc3RydWN0IHVwcm9iZSAqdXByb2JlLCBzdHJ1Y3QgcHRfcmVncyAqcmVncyxcbiBcbiBcdHV0YXNrLVx1MDAzZWRlcHRoKys7XG4gXG4tXHRocHJvYmVfaW5pdF9sZWFzZWQoXHUwMDI2cmktXHUwMDNlaHByb2JlLCB1cHJvYmUsIHNyY3VfaWR4KTtcbitcdGhwcm9iZV9pbml0X2xlYXNlZChcdTAwMjZyaS1cdTAwM2VocHJvYmUsIHVwcm9iZSwgc3JjdV9zY3ApO1xuIFx0cmktXHUwMDNlbmV4dCA9IHV0YXNrLVx1MDAzZXJldHVybl9pbnN0YW5jZXM7XG4gXHRyY3VfYXNzaWduX3BvaW50ZXIodXRhc2stXHUwMDNlcmV0dXJuX2luc3RhbmNlcywgcmkpO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDE6MTU6NDAuOTAzNjE2NTg1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA1Njk3NTk3MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgVGhpcyBLZXJuZWwgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIGhlcmUgdGhhdCdzIG1ha2luZyBzb21lIHByZXR0eSBzaWduaWZpY2FudCBjaGFuZ2VzIHRvIHVwcm9iZXMgYW5kIFNSQ1UuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIGFib3V0IG9wdGltaXppbmcgU1JDVSwgaW50cm9kdWNpbmcgdGhpcyBgc3JjdV9mYXN0X3VwZG93bmAgYW5kIGNoYW5naW5nIGB1cmV0cHJvYmVzX3NyY3VgIHRvIHVzZSBgREVGSU5FX1NUQVRJQ19TUkNVX0ZBU1RfVVBET1dOYC4gIEJhc2ljYWxseSwgaXQgbG9va3MgbGlrZSB0aGV5J3JlIHRyeWluZyB0byBzcGVlZCB1cCByZWFkIG9wZXJhdGlvbnMgd2l0aCBgc3JjdV9kb3duX3JlYWRfZmFzdGAgcmVwbGFjaW5nIGBfX3NyY3VfcmVhZF9sb2NrYCBhbmQgYHNyY3VfdXBfcmVhZF9mYXN0YCByZXBsYWNpbmcgYF9fc3JjdV9yZWFkX3VubG9ja2AuIEZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIGRlZmluaXRlIGNoYW5nZSBpbiBob3cgdXByb2JlcyBhbmQgU1JDVSBpbnRlcmFjdCB3aXRoaW4gdGhlIGtlcm5lbCwgc28gdGhpcyBuZWVkcyB0byBiZSBmdXp6ZWQgaGVhdmlseS5cblxuSSBuZWVkIHRvIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cyBvbiB0aGUgc3BlY2lmaWMgZnVuY3Rpb25zIHRoYXQgdGhpcyBwYXRjaCBhY3R1YWxseSBtb2RpZmllczogYGhwcm9iZV9pbml0X2xlYXNlZGAsIGBocHJvYmVfaW5pdF9zdGFibGVgLCBgaHByb2JlX2ZpbmFsaXplYCwgYGhwcm9iZV9leHBpcmVgLCBgcmlfdGltZXJgLCBgZHVwX3V0YXNrYCwgYW5kIGBwcmVwYXJlX3VyZXRwcm9iZWAuIFRoZXNlIGFyZSB0aGUga2V5IGFyZWFzIHdoZXJlIHRoZSBuZXcgU1JDVSBtZWNoYW5pc21zIGFyZSBnb2luZyB0byBiZSBpbnRlcmFjdGluZy5cblxuQWxyaWdodCwgSSBuZWVkIHRvIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IGBDT05GSUdfVVBST0JFU2AgaXMgZW5hYmxlZC4gU2luY2UgU1JDVSBpcyBjb3JlLCBJIGRvbid0IG5lZWQgdG8gY2hlY2sgZm9yIGFueSBzcGVjaWFsIGNvbmZpZ3VyYXRpb25zIGZvciBTUkNVIGl0c2VsZi4gSSdsbCBuZWVkIHRvIHVzZSBteSB0b29scyB0byB2ZXJpZnkgdGhhdCBgQ09ORklHX1VQUk9CRVNgIGlzIHNldCBjb3JyZWN0bHkgYmVmb3JlIEkgZ2V0IHN0YXJ0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwMDEsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwMToxNTo1MS40NzMzNzg2OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NjMyMzE4Mzc0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19VUFJPQkVTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybS9wcm9iZXMvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuYXJjaC9hcm0vcHJvYmVzL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX1VQUk9CRVMpXFx0XFx0Kz0gZGVjb2RlLm8gZGVjb2RlLWFybS5vIHVwcm9iZXMvXFxuYXJjaC9hcm0vcHJvYmVzL01ha2VmaWxlLTMtb2JqLSQoQ09ORklHX0tQUk9CRVMpXFx0XFx0Kz0gZGVjb2RlLm8ga3Byb2Jlcy9cXG4tLVxcbmFyY2gvYXJtL3Byb2Jlcy91cHJvYmVzL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuYXJjaC9hcm0vcHJvYmVzL3Vwcm9iZXMvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfVVBST0JFUylcXHRcXHQrPSBjb3JlLm8gYWN0aW9ucy1hcm0ub1xcbi0tXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS91cHJvYmVzLmg9MzE9aW50IHVwcm9iZV9icmtfaGFuZGxlcihzdHJ1Y3QgcHRfcmVncyAqcmVncywgdW5zaWduZWQgbG9uZyBlc3IpO1xcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vdXByb2Jlcy5oOjMyOiNpZmRlZiBDT05GSUdfVVBST0JFU1xcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vdXByb2Jlcy5oLTMzLWludCB1cHJvYmVfc2luZ2xlX3N0ZXBfaGFuZGxlcihzdHJ1Y3QgcHRfcmVncyAqcmVncywgdW5zaWduZWQgbG9uZyBlc3IpO1xcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvZGVidWctbW9uaXRvcnMuYz0yNTQ9dm9pZCBkb19lbDBfYnJrNjQodW5zaWduZWQgbG9uZyBlc3IsIHN0cnVjdCBwdF9yZWdzICpyZWdzKVxcbmFyY2gvYXJtNjQva2VybmVsL2RlYnVnLW1vbml0b3JzLmMtMjU1LXtcXG5hcmNoL2FybTY0L2tlcm5lbC9kZWJ1Zy1tb25pdG9ycy5jOjI1NjpcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfVVBST0JFUykgXFx1MDAyNlxcdTAwMjZcXG5hcmNoL2FybTY0L2tlcm5lbC9kZWJ1Zy1tb25pdG9ycy5jLTI1Ny1cXHRcXHRlc3JfYnJrX2NvbW1lbnQoZXNyKSA9PSBVUFJPQkVTX0JSS19JTU0gXFx1MDAyNlxcdTAwMjZcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL3Byb2Jlcy9NYWtlZmlsZT0yPW9iai0kKENPTkZJR19LUFJPQkVTKVxcdFxcdCs9IGtwcm9iZXMubyBkZWNvZGUtaW5zbi5vXFx0XFxcXFxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvcHJvYmVzL01ha2VmaWxlLTQtXFx0XFx0XFx0XFx0ICAgc2ltdWxhdGUtaW5zbi5vXFxuYXJjaC9hcm02NC9rZXJuZWwvcHJvYmVzL01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX1VQUk9CRVMpXFx0XFx0Kz0gdXByb2Jlcy5vIGRlY29kZS1pbnNuLm9cXHRcXFxcXFxuYXJjaC9hcm02NC9rZXJuZWwvcHJvYmVzL01ha2VmaWxlLTYtXFx0XFx0XFx0XFx0ICAgc2ltdWxhdGUtaW5zbi5vXFxuLS1cXG5hcmNoL2Nza3kva2VybmVsL3Byb2Jlcy9NYWtlZmlsZT00PW9iai0kKENPTkZJR19LUFJPQkVTX09OX0ZUUkFDRSlcXHQrPSBmdHJhY2Uub1xcbmFyY2gvY3NreS9rZXJuZWwvcHJvYmVzL01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX1VQUk9CRVMpXFx0XFx0Kz0gdXByb2Jlcy5vIGRlY29kZS1pbnNuLm8gc2ltdWxhdGUtaW5zbi5vXFxuYXJjaC9jc2t5L2tlcm5lbC9wcm9iZXMvTWFrZWZpbGUtNi1cXG4tLVxcbmFyY2gvY3NreS9rZXJuZWwvdHJhcHMuYz0xNjk9YXNtbGlua2FnZSB2b2lkIGRvX3RyYXBfYmtwdChzdHJ1Y3QgcHRfcmVncyAqcmVncylcXG4tLVxcbmFyY2gvY3NreS9rZXJuZWwvdHJhcHMuYy0xNzQtI2VuZGlmXFxuYXJjaC9jc2t5L2tlcm5lbC90cmFwcy5jOjE3NTojaWZkZWYgQ09ORklHX1VQUk9CRVNcXG5hcmNoL2Nza3kva2VybmVsL3RyYXBzLmMtMTc2LVxcdGlmICh1cHJvYmVfc2luZ2xlX3N0ZXBfaGFuZGxlcihyZWdzKSlcXG4tLVxcbmFyY2gvY3NreS9rZXJuZWwvdHJhcHMuYz0xODg9YXNtbGlua2FnZSB2b2lkIGRvX3RyYXBfaWxsaW5zbihzdHJ1Y3QgcHRfcmVncyAqcmVncylcXG4tLVxcbmFyY2gvY3NreS9rZXJuZWwvdHJhcHMuYy0xOTUtI2VuZGlmXFxuYXJjaC9jc2t5L2tlcm5lbC90cmFwcy5jOjE5NjojaWZkZWYgQ09ORklHX1VQUk9CRVNcXG5hcmNoL2Nza3kva2VybmVsL3RyYXBzLmMtMTk3LVxcdGlmICh1cHJvYmVfYnJlYWtwb2ludF9oYW5kbGVyKHJlZ3MpKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vdXByb2Jlcy5oPTIzPXN0cnVjdCBhcmNoX3Vwcm9iZV90YXNrIHtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL3Vwcm9iZXMuaC0yNi1cXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS91cHJvYmVzLmg6Mjc6I2lmZGVmIENPTkZJR19VUFJPQkVTXFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vdXByb2Jlcy5oLTI4LWJvb2wgdXByb2JlX2JyZWFrcG9pbnRfaGFuZGxlcihzdHJ1Y3QgcHRfcmVncyAqcmVncyk7XFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vdXByb2Jlcy5oPTI5PWJvb2wgdXByb2JlX3NpbmdsZXN0ZXBfaGFuZGxlcihzdHJ1Y3QgcHRfcmVncyAqcmVncyk7XFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vdXByb2Jlcy5oOjMwOiNlbHNlIC8qICFDT05GSUdfVVBST0JFUyAqL1xcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL3Vwcm9iZXMuaC0zMS1zdGF0aWMgaW5saW5lIGJvb2wgdXByb2JlX2JyZWFrcG9pbnRfaGFuZGxlcihzdHJ1Y3QgcHRfcmVncyAqcmVncykgeyByZXR1cm4gZmFsc2U7IH1cXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS91cHJvYmVzLmg9MzI9c3RhdGljIGlubGluZSBib29sIHVwcm9iZV9zaW5nbGVzdGVwX2hhbmRsZXIoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpIHsgcmV0dXJuIGZhbHNlOyB9XFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vdXByb2Jlcy5oOjMzOiNlbmRpZiAvKiBDT05GSUdfVVBST0JFUyAqL1xcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL3Vwcm9iZXMuaC0zNC1cXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC9NYWtlZmlsZT03Nz1vYmotJChDT05GSUdfUkVUSE9PSylcXHRcXHQrPSByZXRob29rLm8gcmV0aG9va190cmFtcG9saW5lLm9cXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvTWFrZWZpbGU6Nzg6b2JqLSQoQ09ORklHX1VQUk9CRVMpXFx0XFx0Kz0gdXByb2Jlcy5vXFxuYXJjaC9sb29uZ2FyY2gva2VybmVsL01ha2VmaWxlLTc5LVxcbi0tXFxuYXJjaC9taXBzL2tlcm5lbC9NYWtlZmlsZT0xMDU9b2JqLSQoQ09ORklHX0pVTVBfTEFCRUwpXFx0Kz0ganVtcF9sYWJlbC5vXFxuYXJjaC9taXBzL2tlcm5lbC9NYWtlZmlsZToxMDY6b2JqLSQoQ09ORklHX1VQUk9CRVMpXFx0XFx0Kz0gdXByb2Jlcy5vXFxuYXJjaC9taXBzL2tlcm5lbC9NYWtlZmlsZS0xMDctXFxuLS1cXG5hcmNoL21pcHMva2VybmVsL2JyYW5jaC5jPTg0OT1pbnQgX19jb21wdXRlX3JldHVybl9lcGMoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXFxuLS1cXG5hcmNoL21pcHMva2VybmVsL2JyYW5jaC5jLTg3NS1cXG5hcmNoL21pcHMva2VybmVsL2JyYW5jaC5jOjg3NjojaWYgKGRlZmluZWQgQ09ORklHX0tQUk9CRVMpIHx8IChkZWZpbmVkIENPTkZJR19VUFJPQkVTKVxcbmFyY2gvbWlwcy9rZXJuZWwvYnJhbmNoLmMtODc3LVxcbi0tXFxuYXJjaC9taXBzL2tlcm5lbC9icmFuY2guYz05MDY9RVhQT1JUX1NZTUJPTF9HUEwoX19pbnNuX2lzX2NvbXBhY3RfYnJhbmNoKTtcXG5hcmNoL21pcHMva2VybmVsL2JyYW5jaC5jLTkwNy1cXG5hcmNoL21pcHMva2VybmVsL2JyYW5jaC5jOjkwODojZW5kaWYgIC8qIENPTkZJR19LUFJPQkVTIHx8IENPTkZJR19VUFJPQkVTICovXFxuLS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL01ha2VmaWxlPTE0MD1vYmotJChDT05GSUdfS1BST0JFU19PTl9GVFJBQ0UpXFx0Kz0ga3Byb2Jlcy1mdHJhY2Uub1xcbmFyY2gvcG93ZXJwYy9rZXJuZWwvTWFrZWZpbGU6MTQxOm9iai0kKENPTkZJR19VUFJPQkVTKVxcdFxcdCs9IHVwcm9iZXMub1xcbmFyY2gvcG93ZXJwYy9rZXJuZWwvTWFrZWZpbGUtMTQyLW9iai0kKENPTkZJR19SRVRIT09LKSAgICAgICAgICAgKz0gcmV0aG9vay5vXFxuLS1cXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3Vwcm9iZXMuaD0yNz1zdHJ1Y3QgYXJjaF91cHJvYmUge1xcbi0tXFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS91cHJvYmVzLmgtMzYtXFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS91cHJvYmVzLmg6Mzc6I2lmZGVmIENPTkZJR19VUFJPQkVTXFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS91cHJvYmVzLmgtMzgtYm9vbCB1cHJvYmVfYnJlYWtwb2ludF9oYW5kbGVyKHN0cnVjdCBwdF9yZWdzICpyZWdzKTtcXG4tLVxcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vdXByb2Jlcy5oPTQ2PXN0YXRpYyBpbmxpbmUgYm9vbCB1cHJvYmVfc2luZ2xlX3N0ZXBfaGFuZGxlcihzdHJ1Y3QgcHRfcmVncyAqcmVncylcXG4tLVxcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vdXByb2Jlcy5oLTQ5LX1cXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3Vwcm9iZXMuaDo1MDojZW5kaWYgLyogQ09ORklHX1VQUk9CRVMgKi9cXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3Vwcm9iZXMuaC01MS0jZW5kaWYgLyogX0FTTV9SSVNDVl9VUFJPQkVTX0ggKi9cXG4tLVxcbmFyY2gvcmlzY3Yva2VybmVsL3Byb2Jlcy9NYWtlZmlsZT0zPW9iai0kKENPTkZJR19SRVRIT09LKVxcdFxcdCs9IHJldGhvb2subyByZXRob29rX3RyYW1wb2xpbmUub1xcbmFyY2gvcmlzY3Yva2VybmVsL3Byb2Jlcy9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19VUFJPQkVTKVxcdFxcdCs9IHVwcm9iZXMubyBkZWNvZGUtaW5zbi5vIHNpbXVsYXRlLWluc24ub1xcbmFyY2gvcmlzY3Yva2VybmVsL3Byb2Jlcy9NYWtlZmlsZS01LUNGTEFHU19SRU1PVkVfc2ltdWxhdGUtaW5zbi5vID0gJChDQ19GTEFHU19GVFJBQ0UpXFxuLS1cXG5hcmNoL3MzOTAva2VybmVsL01ha2VmaWxlPTY4PW9iai0kKENPTkZJR19WTUNPUkVfSU5GTylcXHQrPSB2bWNvcmVfaW5mby5vXFxuYXJjaC9zMzkwL2tlcm5lbC9NYWtlZmlsZTo2OTpvYmotJChDT05GSUdfVVBST0JFUylcXHRcXHQrPSB1cHJvYmVzLm9cXG5hcmNoL3MzOTAva2VybmVsL01ha2VmaWxlLTcwLW9iai0kKENPTkZJR19KVU1QX0xBQkVMKVxcdCs9IGp1bXBfbGFiZWwub1xcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC90cmFwcy5jPTE0MD1zdGF0aWMgdm9pZCBpbGxlZ2FsX29wKHN0cnVjdCBwdF9yZWdzICpyZWdzKVxcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC90cmFwcy5jLTE1NS1cXHRcXHRcXHRcXHRzaWduYWwgPSBTSUdJTEw7XFxuYXJjaC9zMzkwL2tlcm5lbC90cmFwcy5jOjE1NjojaWZkZWYgQ09ORklHX1VQUk9CRVNcXG5hcmNoL3MzOTAva2VybmVsL3RyYXBzLmMtMTU3LVxcdFxcdH0gZWxzZSBpZiAob3Bjb2RlID09IFVQUk9CRV9TV0JQX0lOU04pIHtcXG4tLVxcbmFyY2gvczM5MC9saWIvTWFrZWZpbGU9MTM9bGliLSQoQ09ORklHX0tQUk9CRVMpICs9IHByb2Jlcy5vXFxuYXJjaC9zMzkwL2xpYi9NYWtlZmlsZToxNDpsaWItJChDT05GSUdfVVBST0JFUykgKz0gcHJvYmVzLm9cXG5hcmNoL3MzOTAvbGliL01ha2VmaWxlLTE1LW9iai0kKENPTkZJR19TMzkwX0tQUk9CRVNfU0FOSVRZX1RFU1QpICs9IHRlc3Rfa3Byb2Jlc19zMzkwLm9cXG4tLVxcbmFyY2gvc3BhcmMvaW5jbHVkZS9hc20vdHRhYmxlLmgtMTg5LVxcbmFyY2gvc3BhcmMvaW5jbHVkZS9hc20vdHRhYmxlLmg6MTkwOiNpZmRlZiBDT05GSUdfVVBST0JFU1xcbmFyY2gvc3BhcmMvaW5jbHVkZS9hc20vdHRhYmxlLmgtMTkxLSNkZWZpbmUgVVBST0JFU19UUkFQKGx2bCkgVFJBUF9BUkcodXByb2JlX3RyYXAsIGx2bClcXG4tLVxcbmFyY2gvc3BhcmMva2VybmVsL01ha2VmaWxlPTExNz1vYmotJChDT05GSUdfU1BBUkM2NClcXHQrPSAkKHBjLS15KVxcbmFyY2gvc3BhcmMva2VybmVsL01ha2VmaWxlLTExOC1cXG5hcmNoL3NwYXJjL2tlcm5lbC9NYWtlZmlsZToxMTk6b2JqLSQoQ09ORklHX1VQUk9CRVMpXFx0Kz0gdXByb2Jlcy5vXFxuYXJjaC9zcGFyYy9rZXJuZWwvTWFrZWZpbGUtMTIwLW9iai0kKENPTkZJR19KVU1QX0xBQkVMKSArPSBqdW1wX2xhYmVsLm9cXG4tLVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL3Vwcm9iZXMuaD01Nz1zdHJ1Y3QgYXJjaF91cHJvYmVfdGFzayB7XFxuLS1cXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS91cHJvYmVzLmgtNjQtXFxuYXJjaC94ODYvaW5jbHVkZS9hc20vdXByb2Jlcy5oOjY1OiNpZmRlZiBDT05GSUdfVVBST0JFU1xcbmFyY2gveDg2L2luY2x1ZGUvYXNtL3Vwcm9iZXMuaC02Ni1leHRlcm4gYm9vbCBpc191cHJvYmVfYXRfZnVuY19lbnRyeShzdHJ1Y3QgcHRfcmVncyAqcmVncyk7XFxuLS1cXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS91cHJvYmVzLmg9Njg9c3RhdGljIGJvb2wgaXNfdXByb2JlX2F0X2Z1bmNfZW50cnkoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXFxuLS1cXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS91cHJvYmVzLmgtNzEtfVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL3Vwcm9iZXMuaDo3MjojZW5kaWYgLyogQ09ORklHX1VQUk9CRVMgKi9cXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS91cHJvYmVzLmgtNzMtXFxuLS1cXG5hcmNoL3g4Ni9rZXJuZWwvTWFrZWZpbGU9MTU0PW9iai0kKENPTkZJR19PRilcXHRcXHRcXHQrPSBkZXZpY2V0cmVlLm9cXG5hcmNoL3g4Ni9rZXJuZWwvTWFrZWZpbGU6MTU1Om9iai0kKENPTkZJR19VUFJPQkVTKVxcdFxcdFxcdCs9IHVwcm9iZXMub1xcbmFyY2gveDg2L2tlcm5lbC9NYWtlZmlsZS0xNTYtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmg9ODI2PXN0cnVjdCB0YXNrX3N0cnVjdCB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmgtMTU2Ni1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmg6MTU2NzojaWZkZWYgQ09ORklHX1VQUk9CRVNcXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmgtMTU2OC1cXHRzdHJ1Y3QgdXByb2JlX3Rhc2tcXHRcXHQqdXRhc2s7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3Vwcm9iZXMuaD00Nj1zdHJ1Y3QgdXByb2JlX2NvbnN1bWVyIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvdXByb2Jlcy5oLTY1LVxcbmluY2x1ZGUvbGludXgvdXByb2Jlcy5oOjY2OiNpZmRlZiBDT05GSUdfVVBST0JFU1xcbmluY2x1ZGUvbGludXgvdXByb2Jlcy5oLTY3LSNpbmNsdWRlIFxcdTAwM2Nhc20vdXByb2Jlcy5oXFx1MDAzZVxcbi0tXFxuaW5jbHVkZS9saW51eC91cHJvYmVzLmg9MjQ2PWV4dGVybiB1bnNpZ25lZCBsb25nIGFyY2hfdXByb2JlX2dldF94b2xfYXJlYSh2b2lkKTtcXG5pbmNsdWRlL2xpbnV4L3Vwcm9iZXMuaDoyNDc6I2Vsc2UgLyogIUNPTkZJR19VUFJPQkVTICovXFxuaW5jbHVkZS9saW51eC91cHJvYmVzLmgtMjQ4LXN0cnVjdCB1cHJvYmVzX3N0YXRlIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvdXByb2Jlcy5oPTMwNT1zdGF0aWMgaW5saW5lIHZvaWQgdXByb2JlX2NsZWFyX3N0YXRlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKVxcbi0tXFxuaW5jbHVkZS9saW51eC91cHJvYmVzLmgtMzA3LX1cXG5pbmNsdWRlL2xpbnV4L3Vwcm9iZXMuaDozMDg6I2VuZGlmIC8qICFDT05GSUdfVVBST0JFUyAqL1xcbmluY2x1ZGUvbGludXgvdXByb2Jlcy5oLTMwOS0jZW5kaWZcXHQvKiBfTElOVVhfVVBST0JFU19IICovXFxuLS1cXG5rZXJuZWwvZXZlbnRzL01ha2VmaWxlPTU9b2JqLSQoQ09ORklHX0hXX0JSRUFLUE9JTlRfS1VOSVRfVEVTVCkgKz0gaHdfYnJlYWtwb2ludF90ZXN0Lm9cXG5rZXJuZWwvZXZlbnRzL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX1VQUk9CRVMpICs9IHVwcm9iZXMub1xcbi0tXFxua2VybmVsL2V2ZW50cy9jYWxsY2hhaW4uYz0xODE9c3RhdGljIHZvaWQgZml4dXBfdXJldHByb2JlX3RyYW1wb2xpbmVfZW50cmllcyhzdHJ1Y3QgcGVyZl9jYWxsY2hhaW5fZW50cnkgKmVudHJ5LFxcbi0tXFxua2VybmVsL2V2ZW50cy9jYWxsY2hhaW4uYy0xODMte1xcbmtlcm5lbC9ldmVudHMvY2FsbGNoYWluLmM6MTg0OiNpZmRlZiBDT05GSUdfVVBST0JFU1xcbmtlcm5lbC9ldmVudHMvY2FsbGNoYWluLmMtMTg1LVxcdHN0cnVjdCB1cHJvYmVfdGFzayAqdXRhc2sgPSBjdXJyZW50LVxcdTAwM2V1dGFzaztcXG4tLVxcbmtlcm5lbC9mb3JrLmM9MTA2OD1zdGF0aWMgdm9pZCBtbV9pbml0X3Vwcm9iZXNfc3RhdGUoc3RydWN0IG1tX3N0cnVjdCAqbW0pXFxua2VybmVsL2ZvcmsuYy0xMDY5LXtcXG5rZXJuZWwvZm9yay5jOjEwNzA6I2lmZGVmIENPTkZJR19VUFJPQkVTXFxua2VybmVsL2ZvcmsuYy0xMDcxLVxcdG1tLVxcdTAwM2V1cHJvYmVzX3N0YXRlLnhvbF9hcmVhID0gTlVMTDtcXG4tLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYz0xMDg0PUJQRl9DQUxMXzEoYnBmX2dldF9mdW5jX2lwX2twcm9iZSwgc3RydWN0IHB0X3JlZ3MgKiwgcmVncylcXG4tLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xMDg4LVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzoxMDg5OiNpZmRlZiBDT05GSUdfVVBST0JFU1xcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xMDkwLVxcdHJ1bl9jdHggPSBjb250YWluZXJfb2YoY3VycmVudC1cXHUwMDNlYnBmX2N0eCwgc3RydWN0IGJwZl90cmFjZV9ydW5fY3R4LCBydW5fY3R4KTtcXG4tLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYz0yOTQ0PXN0YXRpYyB1NjQgYnBmX2twcm9iZV9tdWx0aV9lbnRyeV9pcChzdHJ1Y3QgYnBmX3J1bl9jdHggKmN0eClcXG4tLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0yOTQ5LVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzoyOTUwOiNpZmRlZiBDT05GSUdfVVBST0JFU1xcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0yOTUxLXN0cnVjdCBicGZfdXByb2JlX211bHRpX2xpbms7XFxuLS1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM9MzI1MT1pbnQgYnBmX3Vwcm9iZV9tdWx0aV9saW5rX2F0dGFjaChjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0ciwgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxcbi0tXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTM0MDEtfVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzozNDAyOiNlbHNlIC8qICFDT05GSUdfVVBST0JFUyAqL1xcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0zNDAzLWludCBicGZfdXByb2JlX211bHRpX2xpbmtfYXR0YWNoKGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXFxuLS1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM9MzQxMT1zdGF0aWMgdTY0IGJwZl91cHJvYmVfbXVsdGlfZW50cnlfaXAoc3RydWN0IGJwZl9ydW5fY3R4ICpjdHgpXFxuLS1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMzQxNC19XFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjM0MTU6I2VuZGlmIC8qIENPTkZJR19VUFJPQkVTICovXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTM0MTYtXFxuLS1cXG50b29scy9zY2hlZF9leHQvS2NvbmZpZz01Mz1DT05GSUdfS1BST0JFX0VWRU5UUz15XFxudG9vbHMvc2NoZWRfZXh0L0tjb25maWc6NTQ6Q09ORklHX1VQUk9CRVM9eVxcbnRvb2xzL3NjaGVkX2V4dC9LY29uZmlnLTU1LUNPTkZJR19VUFJPQkVfRVZFTlRTPXlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuYWFyY2g2ND0xNDg9Q09ORklHX1VOSVg9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuYWFyY2g2NDoxNDk6Q09ORklHX1VQUk9CRVM9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuYWFyY2g2NC0xNTAtQ09ORklHX1VTRVJfTlM9eVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5wcGM2NGVsPTg1PUNPTkZJR19VTklYPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnBwYzY0ZWw6ODY6Q09ORklHX1VQUk9CRVM9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcucHBjNjRlbC04Ny1DT05GSUdfVVNFUl9OUz15XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnJpc2N2NjQ9Nzc9Q09ORklHX1VOSVg9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcucmlzY3Y2NDo3ODpDT05GSUdfVVBST0JFUz15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5yaXNjdjY0LTc5LUNPTkZJR19VU0VSX05TPXlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuczM5MHg9MTE5PUNPTkZJR19VTklYPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnMzOTB4OjEyMDpDT05GSUdfVVBST0JFUz15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5zMzkweC0xMjEtQ09ORklHX1VTRVJfTlM9eVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZnRyYWNlL2NvbmZpZz0yNz1DT05GSUdfVFJBQ0VSX1NOQVBTSE9UPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9mdHJhY2UvY29uZmlnOjI4OkNPTkZJR19VUFJPQkVTPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9mdHJhY2UvY29uZmlnLTI5LUNPTkZJR19VUFJPQkVfRVZFTlRTPXlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2NvbmZpZz0xMj1DT05GSUdfUFJPRklMSU5HPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9jb25maWc6MTM6Q09ORklHX1VQUk9CRVM9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2NvbmZpZy0xNC1DT05GSUdfTUVNT1JZX0ZBSUxVUkU9eVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdnNvY2svY29uZmlnPTE0PUNPTkZJR19BUkNIX1NVUFBPUlRTX1VQUk9CRVM9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Zzb2NrL2NvbmZpZzoxNTpDT05GSUdfVVBST0JFUz15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdnNvY2svY29uZmlnLTE2LUNPTkZJR19VUFJPQkVfRVZFTlRTPXlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDE6MTU6NTguMTA1NzA3Mjk0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY4NzU2MjQ0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBVcHJvYmVzIEV4YW1pbmF0aW9uKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgdXByb2JlcyBjb2RlLiBNeSBmb2N1cyBuZWVkcyB0byBiZSBvbiBmdW5jdGlvbnMgcmVsYXRlZCB0byBgQ09ORklHX1VQUk9CRVNgLiBMZXQgbWUgc2VlLi4uIEkndmUgZ290IGEgbGlzdCBoZXJlOiBgaHByb2JlX2luaXRfbGVhc2VkYCwgYGhwcm9iZV9pbml0X3N0YWJsZWAsIGBocHJvYmVfZmluYWxpemVgLCBgaHByb2JlX2V4cGlyZWAsIGByaV90aW1lcmAsIGBkdXBfdXRhc2tgLCBhbmQgYHByZXBhcmVfdXJldHByb2JlYC4gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoYXQgYENPTkZJR19VUFJPQkVTYCBpcyB0aGUgb25seSByZWxldmFudCBjb25maWcuIFllcywgaXQncyBlbmFibGVkIGJ5IGRlZmF1bHQgb24gYSBsb3Qgb2YgYXJjaGl0ZWN0dXJlcywgYnV0IGNvbmZpcm1hdGlvbiBpcyBhbHdheXMgYSBnb29kIHByYWN0aWNlLlxuXG5Ob3csIGxldCdzIGxvb2sgY2xvc2VyIGF0IHRoZXNlIGZ1bmN0aW9ucy4gSG1tLCBpdCBzZWVtcyBsaWtlIGBocHJvYmVfaW5pdF9sZWFzZWRgLCBgaHByb2JlX2luaXRfc3RhYmxlYCwgYGhwcm9iZV9maW5hbGl6ZWAsIGBocHJvYmVfZXhwaXJlYCwgYHJpX3RpbWVyYCwgYGR1cF91dGFza2AsIGFuZCBgcHJlcGFyZV91cmV0cHJvYmVgIGFyZSBhbGwgbWFya2VkIGFzIHN0YXRpYy4gT2theSwgc28gd2UncmUgcHJpbWFyaWx5IGRlYWxpbmcgd2l0aCBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbnMgaGVyZSwgbm90aGluZyBkaXJlY3RseSBleHBvcnRlZC4gQnV0IHdhaXQsIGBkdXBfdXRhc2tgIGlzIHN0YXRpYy4uLiBidXQgSSAqc2VlbSogdG8gcmVjYWxsIGl0IGJlaW5nIGNhbGxlZCBmcm9tIGB1cHJvYmVfZHVwX21tYXBgLiBUaGF0J3MgYSBwb2ludCBvZiBpbnRlcmVzdC4gSSdkIGJldHRlciBjb25maXJtIHRoYXQgY2FsbCBjaGFpbi4gSSBkb24ndCB3YW50IHRvIG1pc3MgYW55dGhpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkxNTAsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDE6MTY6MDIuNzkzMjcxOTZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY2NTc4MjU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImR1cF91dGFza1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvZXZlbnRzL3Vwcm9iZXMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYz03NTc9c3RhdGljIHZvaWQgaHByb2JlX2ZpbmFsaXplKHN0cnVjdCBocHJvYmUgKmhwcm9iZSwgZW51bSBocHJvYmVfc3RhdGUgaHN0YXRlKVxcbi0tXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtNzg4LSAqIGF0dGVtcHQgdHJ5X2dldF91cHJvYmUoKSwgaWYgaXQgbmVlZHMgdG8gcHJlc2VydmUgdXByb2JlIGJleW9uZCBjdXJyZW50XFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM6Nzg5OiAqIFNSQ1UgbG9jayByZWdpb24uIFNlZSBkdXBfdXRhc2soKS5cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy03OTAtICovXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM9NzkxPXN0YXRpYyBzdHJ1Y3QgdXByb2JlICpocHJvYmVfZXhwaXJlKHN0cnVjdCBocHJvYmUgKmhwcm9iZSwgYm9vbCBnZXQpXFxuLS1cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy04NDgtXFx0XFx0ICogcmV0dXJuIGl0IHJlZ2FyZGxlc3MuIEFsc28sIGlmIGBnZXRgIHdhcyB0cnVlLCB3ZSBhbHNvIGhhdmVcXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzo4NDk6XFx0XFx0ICogYW4gZXh0cmEgcmVmIGZvciB0aGUgY2FsbGVyIHRvIG93bi4gVGhpcyBpcyB1c2VkIGluIGR1cF91dGFzaygpLlxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTg1MC1cXHRcXHQgKi9cXG4tLVxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jPTIxMTM9c3RhdGljIHN0cnVjdCByZXR1cm5faW5zdGFuY2UgKmR1cF9yZXR1cm5faW5zdGFuY2Uoc3RydWN0IHJldHVybl9pbnN0YW5jZSAqb2xkKVxcbi0tXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtMjEzMy1cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzoyMTM0OnN0YXRpYyBpbnQgZHVwX3V0YXNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqdCwgc3RydWN0IHVwcm9iZV90YXNrICpvX3V0YXNrKVxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTIxMzUte1xcbi0tXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM9MjE4OD12b2lkIHVwcm9iZV9jb3B5X3Byb2Nlc3Moc3RydWN0IHRhc2tfc3RydWN0ICp0LCB1NjQgZmxhZ3MpXFxuLS1cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yMjAxLVxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jOjIyMDI6XFx0aWYgKGR1cF91dGFzayh0LCB1dGFzaykpXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtMjIwMy1cXHRcXHRyZXR1cm4gdXByb2JlX3dhcm4odCwgXFxcImR1cCByZXQgaW5zdGFuY2VzXFxcIik7XFxuLS1cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYz0yMjUzPXN0YXRpYyB2b2lkIHByZXBhcmVfdXJldHByb2JlKHN0cnVjdCB1cHJvYmUgKnVwcm9iZSwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsXFxuLS1cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yMjk5LVxcdCAqIHVzZXIgc3BhY2UgYW5kIGNhbiBiZSB1bmxvY2tlZCBmcm9tIGEgZGlmZmVyZW50IGNvbnRleHQgYnkgcmlfdGltZXIoKVxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jOjIzMDA6XFx0ICogb3IgZHVwX3V0YXNrKCkuXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtMjMwMS1cXHQgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDE6MTY6MDIuOTU5ODU1Nzc2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEyNTQ3MzIwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKkRlY29uc3RydWN0aW5nIHRoZSBVcHJvYmUgRmxvdyoqXG5cbk9rYXksIHNvIEknbSB0cmFjaW5nIHRocm91Z2ggdGhpcyB1cHJvYmUgaW1wbGVtZW50YXRpb24sIGFuZCB0aGUgZmxvdyBpcyBiZWNvbWluZyBjbGVhcmVyLiBJIHNlZSB0aGF0IGB1cHJvYmVfY29weV9wcm9jZXNzYCB1bHRpbWF0ZWx5IGNhbGxzIGBkdXBfdXRhc2tgLiBSaWdodCwgdGhhdCdzIGV4cGVjdGVkIGJlaGF2aW9yLCBjbG9uaW5nIHRoZSB1c2VyLXNwYWNlIHRhc2sgc3RydWN0dXJlLiBOb3csIHdoZXJlIGRvZXMgYHByZXBhcmVfdXJldHByb2JlYCBjb21lIGludG8gdGhlIHBpY3R1cmU/IEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgY2FsbCBncmFwaCB0aGVyZS4gSSAqYmVsaWV2ZSogaXQncyBpbnZva2VkIGJ5IGB1cHJvYmVfZGlzcGF0Y2hlcmAgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGJ1dCBpdCdzIGFsd2F5cyBiZXN0IHRvIGJlIHByZWNpc2UsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggc3VjaCBsb3ctbGV2ZWwgc3R1ZmYuIFRpbWUgdG8gZG91YmxlLWNoZWNrIHRoZSBjb2RlIHBhdGggYW5kIHNvbGlkaWZ5IHRoYXQgY29ubmVjdGlvbiBpbiBteSBtaW5kLiBObyByb29tIGZvciBndWVzc3dvcmsgaW4gdGhlc2UgY3JpdGljYWwgYXJlYXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMzAxLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDE6MTY6MDYuMDg1MzMxMzg0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0NTAxNjgzMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwcmVwYXJlX3VyZXRwcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvZXZlbnRzL3Vwcm9iZXMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYz0yMjM3PXN0YXRpYyB2b2lkIGNsZWFudXBfcmV0dXJuX2luc3RhbmNlcyhzdHJ1Y3QgdXByb2JlX3Rhc2sgKnV0YXNrLCBib29sIGNoYWluZWQsXFxuLS1cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yMjUyLVxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jOjIyNTM6c3RhdGljIHZvaWQgcHJlcGFyZV91cmV0cHJvYmUoc3RydWN0IHVwcm9iZSAqdXByb2JlLCBzdHJ1Y3QgcHRfcmVncyAqcmVncyxcXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yMjU0LVxcdFxcdFxcdCAgICAgIHN0cnVjdCByZXR1cm5faW5zdGFuY2UgKnJpKVxcbi0tXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM9MjU1ND1zdGF0aWMgdm9pZCBoYW5kbGVyX2NoYWluKHN0cnVjdCB1cHJvYmUgKnVwcm9iZSwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXFxuLS1cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yNTg4LVxcdGlmICghWkVST19PUl9OVUxMX1BUUihyaSkpXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM6MjU4OTpcXHRcXHRwcmVwYXJlX3VyZXRwcm9iZSh1cHJvYmUsIHJlZ3MsIHJpKTtcXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yNTkwLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwMToxNjowNi40MzAzNTQwNDdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NjQwNTUwMzM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkluaXRpYWwgQ29kZSBBbmFseXNpcyoqXG5cbk9rYXksIHNvIGBoYW5kbGVyX2NoYWluYCBpcyB0aGUgY3J1Y2lhbCBmdW5jdGlvbiwgYW5kIGl0J3MgY2FsbGVkIGJ5IGBoYW5kbGVfc3dicGAuIFJpZ2h0IGF3YXksIHRoYXQgdGVsbHMgbWUgZm9jdXNpbmcgb24gYHByZXBhcmVfdXJldHByb2JlYCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgYWxsIHdvcmtzLiBMZXQncyBzZWUuLi4gbG9va2luZyBhdCB0aGUgY2FsbCBzdGFjaywgSSBhbHNvIG5lZWQgdG8gY29uc2lkZXIgYGhwcm9iZV9leHBpcmVgLCBgaHByb2JlX2ZpbmFsaXplYCwgYGhwcm9iZV9pbml0X2xlYXNlZGAsIGBocHJvYmVfaW5pdF9zdGFibGVgLCBgcmlfdGltZXJgLCBhbmQgYGR1cF91dGFza2AuXG5cbkhvbGQgb24uLi4gYGhwcm9iZV9pbml0X2xlYXNlZGAgYW5kIGBocHJvYmVfaW5pdF9zdGFibGVgIGFyZSBzdXNwaWNpb3VzbHkgc21hbGwuIFRoZXkgcHJvYmFibHkganVzdCBkbyBzb21lIHF1aWNrIHNldHVwLiBPa2F5LCBsZXQncyBza2lwIHRoZW0gZm9yIG5vdy4gR2l2ZW4gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgcHJvYmxlbSBzcGFjZSwgbXkgaW5pdGlhbCBmb2N1cyBzaG91bGQgYmUgb24gYHByZXBhcmVfdXJldHByb2JlYCwgYGhwcm9iZV9leHBpcmVgLCBgaHByb2JlX2ZpbmFsaXplYCwgYHJpX3RpbWVyYCwgYW5kIGBkdXBfdXRhc2tgLiBUaGVzZSBzZWVtIHRvIGJlIHRoZSBtb3N0IGNvbXBsZXgsIGFuZCBsaWtlbHkgd2hlcmUgdGhlIGNvcmUgbG9naWMgcmVzaWRlcy5cblxuTm93LCBsZXQncyB0YWtlIGEgbG9vayBhdCBgcmlfdGltZXJgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDc4NywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwMToxNjoxMy4wNzA5MDY1MTVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MjcxNTY0NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyaV90aW1lclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvZXZlbnRzL3Vwcm9iZXMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYz0xOTcwPXN0YXRpYyB2b2lkIGZyZWVfcmV0X2luc3RhbmNlKHN0cnVjdCB1cHJvYmVfdGFzayAqdXRhc2ssXFxuLS1cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0xOTgzLVxcdCAqIEF0IHRoaXMgcG9pbnQgcmV0dXJuX2luc3RhbmNlIGlzIHVubGlua2VkIGZyb20gdXRhc2snc1xcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jOjE5ODQ6XFx0ICogcmV0dXJuX2luc3RhbmNlcyBsaXN0IGFuZCB0aGlzIGhhcyBiZWNvbWUgdmlzaWJsZSB0byByaV90aW1lcigpLlxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jOjE5ODU6XFx0ICogSWYgc2VxY291bnQgbm93IGluZGljYXRlcyB0aGF0IHJpX3RpbWVyJ3MgcmV0dXJuIGluc3RhbmNlXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtMTk4Ni1cXHQgKiBwcm9jZXNzaW5nIGxvb3AgaXNuJ3QgYWN0aXZlLCB3ZSBjYW4gcmV0dXJuIHJpIGludG8gdGhlIHBvb2wgb2ZcXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzoxOTg3OlxcdCAqIHRvLWJlLXJldXNlZCByZXR1cm4gaW5zdGFuY2VzIGZvciBmdXR1cmUgdXJldHByb2Jlcy4gSWYgcmlfdGltZXIoKVxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTE5ODgtXFx0ICogaGFwcGVucyB0byBiZSBydW5uaW5nIHJpZ2h0IG5vdywgdGhvdWdoLCB3ZSBmYWxsYmFjayB0byBzYWZldHkgYW5kXFxuLS1cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0xOTk3LVxcdH0gZWxzZSB7XFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM6MTk5ODpcXHRcXHQvKiB3ZSBtaWdodCBiZSByYWNpbmcgd2l0aCByaV90aW1lcigpLCBzbyBwbGF5IGl0IHNhZmUgKi9cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0xOTk5LVxcdFxcdHJpX2ZyZWUocmkpO1xcbi0tXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM9MjAwNz12b2lkIHVwcm9iZV9mcmVlX3V0YXNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqdClcXG4tLVxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTIwMTctXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM6MjAxODpcXHR0aW1lcl9kZWxldGVfc3luYyhcXHUwMDI2dXRhc2stXFx1MDAzZXJpX3RpbWVyKTtcXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yMDE5LVxcbi0tXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtMjA0Mi1cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzoyMDQzOnN0YXRpYyB2b2lkIHJpX3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICp0aW1lcilcXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yMDQ0LXtcXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzoyMDQ1OlxcdHN0cnVjdCB1cHJvYmVfdGFzayAqdXRhc2sgPSBjb250YWluZXJfb2YodGltZXIsIHN0cnVjdCB1cHJvYmVfdGFzaywgcmlfdGltZXIpO1xcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTIwNDYtXFx0c3RydWN0IHJldHVybl9pbnN0YW5jZSAqcmk7XFxuLS1cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYz0yMDY5PXN0YXRpYyBzdHJ1Y3QgdXByb2JlX3Rhc2sgKmFsbG9jX3V0YXNrKHZvaWQpXFxuLS1cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yMDc2LVxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jOjIwNzc6XFx0dGltZXJfc2V0dXAoXFx1MDAyNnV0YXNrLVxcdTAwM2VyaV90aW1lciwgcmlfdGltZXIsIDApO1xcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTIwNzgtXFx0c2VxY291bnRfaW5pdChcXHUwMDI2dXRhc2stXFx1MDAzZXJpX3NlcWNvdW50KTtcXG4tLVxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jPTIyNTM9c3RhdGljIHZvaWQgcHJlcGFyZV91cmV0cHJvYmUoc3RydWN0IHVwcm9iZSAqdXByb2JlLCBzdHJ1Y3QgcHRfcmVncyAqcmVncyxcXG4tLVxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTIyOTgtXFx0ICogVXNlIHNyY3VfZG93bl9yZWFkX2Zhc3QoKSBiZWNhdXNlIHRoZSBTUkNVIGxvY2sgc3Vydml2ZXMgYSBzd2l0Y2ggdG9cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzoyMjk5OlxcdCAqIHVzZXIgc3BhY2UgYW5kIGNhbiBiZSB1bmxvY2tlZCBmcm9tIGEgZGlmZmVyZW50IGNvbnRleHQgYnkgcmlfdGltZXIoKVxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTIzMDAtXFx0ICogb3IgZHVwX3V0YXNrKCkuXFxuLS1cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yMzE0LVxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jOjIzMTU6XFx0bW9kX3RpbWVyKFxcdTAwMjZ1dGFzay1cXHUwMDNlcmlfdGltZXIsIGppZmZpZXMgKyBSSV9USU1FUl9QRVJJT0QpO1xcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTIzMTYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDAxOjE2OjEzLjI1MzYyODM0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3NTA2NjA0NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFVwcm9iZSBhbmQgU1JDVSBDb25maWd1cmF0aW9ucyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgYHJpX3RpbWVyYCBpcyBhIHRpbWVyIGNhbGxiYWNrLCBgZHVwX3V0YXNrYCBpcyB0cmlnZ2VyZWQgZHVyaW5nIGEgYGZvcmtgIG9wZXJhdGlvbiwgYHByZXBhcmVfdXJldHByb2JlYCBoYXBwZW5zIHdoZW4gYSB1cmV0cHJvYmUgaXMgaGl0LCBgaHByb2JlX2V4cGlyZWAgaGFuZGxlcyBleHBpcmluZyBhIGxlYXNlZCB1cHJvYmUsIGFuZCBgaHByb2JlX2ZpbmFsaXplYCBpcyB1c2VkIHRvIGZpbmFsaXplIGEgbGVhc2VkIHVwcm9iZS4gVGhhdCdzIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHksIGJ1dCBsZXQncyBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucy5cblxuTm93LCBJIG5lZWQgdG8gY2hlY2sgZm9yIG90aGVyIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMuIE15IGluaXRpYWwgcmV2aWV3IGluZGljYXRlcyB0aGF0IHRoZSBwYXRjaCB0b3VjaGVzIGBpbmNsdWRlL2xpbnV4L3NyY3UuaGAgYW5kIGBrZXJuZWwvZXZlbnRzL3Vwcm9iZXMuY2AsIHdoaWNoIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSBjYW4gc2VlIHRoYXQgYENPTkZJR19VUFJPQkVTYCBpcyB0aGUgbWFpbiBjb25maWd1cmF0aW9uIG9wdGlvbiB0byBjb25zaWRlciBoZXJlLiBCdXQgaGFuZyBvbi4uLiBgQ09ORklHX1NSQ1VgLi4uIHRoYXQncyBhbHdheXMgZW5hYmxlZCwgaXNuJ3QgaXQ/IEkgbmVlZCB0byBrZWVwIHRoYXQgaW4gbWluZCBhcyBhIGRlcGVuZGVuY3kuXG5cbkkgc2hvdWxkIGRvdWJsZS1jaGVjayBgQ09ORklHX1VQUk9CRVNgIHRvIGVuc3VyZSBhIGZ1bGwgdW5kZXJzdGFuZGluZywgb2YgY291cnNlLiBBcmUgdGhlcmUgYW55IG90aGVyIGNvbmZpZyBvcHRpb25zPyBMZXQncyBub3Qgb3Zlcmxvb2sgYW55dGhpbmcuIEFoLCB0aGVyZSdzIGBDT05GSUdfVVBST0JFX0VWRU5UU2AhIEknbGwgbmVlZCB0byBjaGVjayBob3cgdGhhdCBpbnRlcmFjdHMuXG5cbkZpbmFsbHksIEknbGwgdGhvcm91Z2hseSBleGFtaW5lIGBrZXJuZWwvZXZlbnRzL3Vwcm9iZXMuY2AuIEl0J3MgbGlrZWx5IHRoYXQgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucyBhcmUgZGVmaW5lZCBvciB1c2VkIHRoZXJlLCBhbmQgaXQncyBlc3NlbnRpYWwgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiB0aGUgd2hvbGUgdGhpbmcuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlIGEgY29tcGxldGUgcGljdHVyZSBvZiB0aGUgZGVwZW5kZW5jaWVzIGFuZCBob3cgdGhlc2UgZmVhdHVyZXMgYXJlIGNvbmRpdGlvbmFsbHkgZW5hYmxlZCBhbmQgZGlzYWJsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMDYyLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTkyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDAxOjE2OjE4LjAwNDI5MjUyNFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ5ODM0OTgyLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9ldmVudHMvdXByb2Jlcy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwMToxNjoxOC40NTQxMzg2MzZaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTAwMTM5OTA5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyBVcHJvYmUgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUsIEknbSBkaXZpbmcgaW50byB0aGUgYGtlcm5lbC9ldmVudHMvdXByb2Jlcy5jYCBmaWxlLiBIbW0sIGxvb2tzIGxpa2UgdGhlcmUgYXJlbid0IGFueSBvdGhlciBjb25kaXRpb25hbCBjb25maWd1cmF0aW9ucyBkZWZpbmVkIHdpdGhpbiB0aGlzIHBhcnRpY3VsYXIgZmlsZS4gVGhhdCBzdWdnZXN0cyBhIGRpcmVjdCBjb3JyZWxhdGlvbjogaWYgYENPTkZJR19VUFJPQkVTYCBpcyBlbmFibGVkLCB0aGUgY29kZSB3aXRoaW4gdGhpcyBmaWxlIGlzIGluY2x1ZGVkLiBHb29kLCB0aGF0IHNpbXBsaWZpZXMgdGhpbmdzIGEgYml0LiBObyBjb21wbGV4IG5lc3Rpbmcgb3IgZGVwZW5kZW5jaWVzICp3aXRoaW4qIHRoaXMgc3BlY2lmaWMgbW9kdWxlLlxuXG5Ob3csIGxldCdzIHNoaWZ0IGdlYXJzIHNsaWdodGx5LiBJJ2xsIG5lZWQgdG8gY2hlY2sgYGluY2x1ZGUvbGludXgvc3JjdS5oYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSByZWxhdGVkIGNvbmZpZ3VyYXRpb25zIG9yIGRlcGVuZGVuY2llcyBkZWNsYXJlZCB3aXRoaW4gdGhlIHNvdXJjZSByZWFkLWNvcHktdXBkYXRlIGhlYWRlci4gSXQncyBhIGNvbW1vbiBhcmVhIGZvciBzaGFyZWQgcmVzb3VyY2VzIGFuZCBwb3RlbnRpYWwgc3luY2hyb25pemF0aW9uIHBvaW50cywgd2hpY2ggbWlnaHQgYmUgaW5mbHVlbmNlZCBieSBob3cgdXByb2JlcyBhcmUgdXNlZCwgYW5kIHRoZXJlZm9yZSBpbmRpcmVjdGx5IGltcGFjdGVkIGJ5IGNvbmZpZ3VyYXRpb25zLiBJJ20gbG9va2luZyBmb3IgYW55dGhpbmcgdGhhdCBtaWdodCByZWxhdGUgdG8gcmVhZC1jb3B5LXVwZGF0ZSBtZWNoYW5pc21zIG9yIHN5bmNocm9uaXphdGlvbiByZWxhdGVkIHRvIHVwcm9iZXMuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGZ1bGwgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI2NDUsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwMToxNjoyMy40NTU1NDA1MDdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NTQ1MjIyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvbGludXgvc3JjdS5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvc3JjdS5oPTI0PWNvbnRleHRfbG9ja19zdHJ1Y3Qoc3JjdV9zdHJ1Y3QsIF9fcmVlbnRyYW50X2N0eF9sb2NrKTtcXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC0yNS1cXG5pbmNsdWRlL2xpbnV4L3NyY3UuaDoyNjojaWZkZWYgQ09ORklHX0RFQlVHX0xPQ0tfQUxMT0NcXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC0yNy1cXG5pbmNsdWRlL2xpbnV4L3NyY3UuaD0yOD1pbnQgX19pbml0X3NyY3Vfc3RydWN0KHN0cnVjdCBzcmN1X3N0cnVjdCAqc3NwLCBjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3QgbG9ja19jbGFzc19rZXkgKmtleSk7XFxuaW5jbHVkZS9saW51eC9zcmN1Lmg6Mjk6I2lmbmRlZiBDT05GSUdfVElOWV9TUkNVXFxuaW5jbHVkZS9saW51eC9zcmN1LmgtMzAtaW50IF9faW5pdF9zcmN1X3N0cnVjdF9mYXN0KHN0cnVjdCBzcmN1X3N0cnVjdCAqc3NwLCBjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3QgbG9ja19jbGFzc19rZXkgKmtleSk7XFxuaW5jbHVkZS9saW51eC9zcmN1Lmg9MzE9aW50IF9faW5pdF9zcmN1X3N0cnVjdF9mYXN0X3VwZG93bihzdHJ1Y3Qgc3JjdV9zdHJ1Y3QgKnNzcCwgY29uc3QgY2hhciAqbmFtZSxcXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC0zMi1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgbG9ja19jbGFzc19rZXkgKmtleSk7XFxuaW5jbHVkZS9saW51eC9zcmN1Lmg6MzM6I2VuZGlmIC8vICNpZm5kZWYgQ09ORklHX1RJTllfU1JDVVxcbmluY2x1ZGUvbGludXgvc3JjdS5oLTM0LVxcbi0tXFxuaW5jbHVkZS9saW51eC9zcmN1LmgtNTYtI2RlZmluZSBfX1NSQ1VfREVQX01BUF9JTklUKHNyY3VfbmFtZSlcXHQuZGVwX21hcCA9IHsgLm5hbWUgPSAjc3JjdV9uYW1lIH0sXFxuaW5jbHVkZS9saW51eC9zcmN1Lmg6NTc6I2Vsc2UgLyogI2lmZGVmIENPTkZJR19ERUJVR19MT0NLX0FMTE9DICovXFxuaW5jbHVkZS9saW51eC9zcmN1LmgtNTgtXFxuaW5jbHVkZS9saW51eC9zcmN1Lmg9NTk9aW50IGluaXRfc3JjdV9zdHJ1Y3Qoc3RydWN0IHNyY3Vfc3RydWN0ICpzc3ApO1xcbmluY2x1ZGUvbGludXgvc3JjdS5oOjYwOiNpZm5kZWYgQ09ORklHX1RJTllfU1JDVVxcbmluY2x1ZGUvbGludXgvc3JjdS5oLTYxLWludCBpbml0X3NyY3Vfc3RydWN0X2Zhc3Qoc3RydWN0IHNyY3Vfc3RydWN0ICpzc3ApO1xcbmluY2x1ZGUvbGludXgvc3JjdS5oPTYyPWludCBpbml0X3NyY3Vfc3RydWN0X2Zhc3RfdXBkb3duKHN0cnVjdCBzcmN1X3N0cnVjdCAqc3NwKTtcXG5pbmNsdWRlL2xpbnV4L3NyY3UuaDo2MzojZW5kaWYgLy8gI2lmbmRlZiBDT05GSUdfVElOWV9TUkNVXFxuaW5jbHVkZS9saW51eC9zcmN1LmgtNjQtXFxuaW5jbHVkZS9saW51eC9zcmN1LmgtNjUtI2RlZmluZSBfX1NSQ1VfREVQX01BUF9JTklUKHNyY3VfbmFtZSlcXG5pbmNsdWRlL2xpbnV4L3NyY3UuaDo2NjojZW5kaWYgLyogI2Vsc2UgI2lmZGVmIENPTkZJR19ERUJVR19MT0NLX0FMTE9DICovXFxuaW5jbHVkZS9saW51eC9zcmN1LmgtNjctXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NyY3UuaD04MD12b2lkIF9fc3JjdV9yZWFkX3VubG9jayhzdHJ1Y3Qgc3JjdV9zdHJ1Y3QgKnNzcCwgaW50IGlkeCkgX19yZWxlYXNlc19zaGFyZWQoc3NwKTtcXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC04MS1cXG5pbmNsdWRlL2xpbnV4L3NyY3UuaDo4MjojaWZkZWYgQ09ORklHX1RJTllfU1JDVVxcbmluY2x1ZGUvbGludXgvc3JjdS5oLTgzLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9zcmN1dGlueS5oXFx1MDAzZVxcbmluY2x1ZGUvbGludXgvc3JjdS5oOjg0OiNlbGlmIGRlZmluZWQoQ09ORklHX1RSRUVfU1JDVSlcXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC04NS0jaW5jbHVkZSBcXHUwMDNjbGludXgvc3JjdXRyZWUuaFxcdTAwM2VcXG4tLVxcbmluY2x1ZGUvbGludXgvc3JjdS5oPTEyOD1zdGF0aWMgaW5saW5lIGJvb2wgc2FtZV9zdGF0ZV9zeW5jaHJvbml6ZV9zcmN1KHVuc2lnbmVkIGxvbmcgb2xkc3RhdGUxLCB1bnNpZ25lZCBsb25nIG9sZHN0YXRlMilcXG4tLVxcbmluY2x1ZGUvbGludXgvc3JjdS5oLTEzMi1cXG5pbmNsdWRlL2xpbnV4L3NyY3UuaDoxMzM6I2lmZGVmIENPTkZJR19ORUVEX1NSQ1VfTk1JX1NBRkVcXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC0xMzQtaW50IF9fc3JjdV9yZWFkX2xvY2tfbm1pc2FmZShzdHJ1Y3Qgc3JjdV9zdHJ1Y3QgKnNzcCkgX19hY3F1aXJlc19zaGFyZWQoc3NwKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvc3JjdS5oPTE0Mj1zdGF0aWMgaW5saW5lIHZvaWQgX19zcmN1X3JlYWRfdW5sb2NrX25taXNhZmUoc3RydWN0IHNyY3Vfc3RydWN0ICpzc3AsIGludCBpZHgpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC0xNDYtfVxcbmluY2x1ZGUvbGludXgvc3JjdS5oOjE0NzojZW5kaWYgLyogQ09ORklHX05FRURfU1JDVV9OTUlfU0FGRSAqL1xcbmluY2x1ZGUvbGludXgvc3JjdS5oLTE0OC1cXG5pbmNsdWRlL2xpbnV4L3NyY3UuaD0xNDk9dm9pZCBzcmN1X2luaXQodm9pZCk7XFxuaW5jbHVkZS9saW51eC9zcmN1LmgtMTUwLVxcbmluY2x1ZGUvbGludXgvc3JjdS5oOjE1MTojaWZkZWYgQ09ORklHX0RFQlVHX0xPQ0tfQUxMT0NcXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC0xNTItXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC0xNTYtICpcXG5pbmNsdWRlL2xpbnV4L3NyY3UuaDoxNTc6ICogSWYgQ09ORklHX0RFQlVHX0xPQ0tfQUxMT0MgaXMgc2VsZWN0ZWQsIHJldHVybnMgbm9uemVybyBpZmYgaW4gYW4gU1JDVVxcbmluY2x1ZGUvbGludXgvc3JjdS5oOjE1ODogKiByZWFkLXNpZGUgY3JpdGljYWwgc2VjdGlvbi4gIEluIGFic2VuY2Ugb2YgQ09ORklHX0RFQlVHX0xPQ0tfQUxMT0MsXFxuaW5jbHVkZS9saW51eC9zcmN1LmgtMTU5LSAqIHRoaXMgYXNzdW1lcyB3ZSBhcmUgaW4gYW4gU1JDVSByZWFkLXNpZGUgY3JpdGljYWwgc2VjdGlvbiB1bmxlc3MgaXQgY2FuXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NyY3UuaD0xOTc9c3RhdGljIGlubGluZSB2b2lkIHNyY3VfbG9ja19zeW5jKHN0cnVjdCBsb2NrZGVwX21hcCAqbWFwKVxcbi0tXFxuaW5jbHVkZS9saW51eC9zcmN1LmgtMjAxLVxcbmluY2x1ZGUvbGludXgvc3JjdS5oOjIwMjojZWxzZSAvKiAjaWZkZWYgQ09ORklHX0RFQlVHX0xPQ0tfQUxMT0MgKi9cXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC0yMDMtXFxuaW5jbHVkZS9saW51eC9zcmN1Lmg9MjA0PXN0YXRpYyBpbmxpbmUgaW50IHNyY3VfcmVhZF9sb2NrX2hlbGQoY29uc3Qgc3RydWN0IHNyY3Vfc3RydWN0ICpzc3ApXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC0yMTItXFxuaW5jbHVkZS9saW51eC9zcmN1Lmg6MjEzOiNlbmRpZiAvKiAjZWxzZSAjaWZkZWYgQ09ORklHX0RFQlVHX0xPQ0tfQUxMT0MgKi9cXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC0yMTQtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NyY3UuaD0yODc9c3RhdGljIGlubGluZSBpbnQgc3JjdV9yZWFkX2xvY2soc3RydWN0IHNyY3Vfc3RydWN0ICpzc3ApXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC0zMTAtICogY2Fubm90IGJlIHBhc3NlZCB0byBhbnkgbm9uLWZhc3QgdmFyaWFudCBvZiBzcmN1X3JlYWRfeyx1bn1sb2NrKCkgb3JcXG5pbmNsdWRlL2xpbnV4L3NyY3UuaDozMTE6ICogc3JjdV97ZG93bix1cH1fcmVhZCgpLiAgSW4ga2VybmVscyBidWlsdCB3aXRoIENPTkZJR19QUk9WRV9SQ1U9eSxcXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC0zMTItICogX19zcmN1X2NoZWNrX3JlYWRfZmxhdm9yKCkgd2lsbCBjb21wbGFpbiBiaXR0ZXJseSBpZiB5b3UgaWdub3JlIHRoaXNcXG4tLVxcbmluY2x1ZGUvbGludXgvc3JjdS5oPTMyND1zdGF0aWMgaW5saW5lIHN0cnVjdCBzcmN1X2N0ciBfX3BlcmNwdSAqc3JjdV9yZWFkX2xvY2tfZmFzdChzdHJ1Y3Qgc3JjdV9zdHJ1Y3QgKnNzcCkgX19hY3F1aXJlc19zaGFyZWQoc3NwKVxcbi0tXFxuaW5jbHVkZS9saW51eC9zcmN1LmgtMzUwLSAqIHZhcmlhbnQgb2Ygc3JjdV9yZWFkX3ssdW59bG9jaygpIG9yIHNyY3Vfe2Rvd24sdXB9X3JlYWQoKS4gIEluIGtlcm5lbHNcXG5pbmNsdWRlL2xpbnV4L3NyY3UuaDozNTE6ICogYnVpbHQgd2l0aCBDT05GSUdfUFJPVkVfUkNVPXksIF9fc3JjdV9jaGVja19yZWFkX2ZsYXZvcigpIHdpbGwgY29tcGxhaW5cXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC0zNTItICogYml0dGVybHkgaWYgeW91IGlnbm9yZSB0aGlzICogcmVzdHJpY3Rpb24uXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NyY3UuaD00MDI9c3RhdGljIGlubGluZSBzdHJ1Y3Qgc3JjdV9jdHIgX19wZXJjcHUgKnNyY3VfZG93bl9yZWFkX2Zhc3Qoc3RydWN0IHNyY3Vfc3RydWN0ICpzc3ApIF9fYWNxdWlyZXNfc2hhcmVkKHNzcClcXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC00MDMte1xcbmluY2x1ZGUvbGludXgvc3JjdS5oOjQwNDpcXHRXQVJOX09OX09OQ0UoSVNfRU5BQkxFRChDT05GSUdfUFJPVkVfUkNVKSBcXHUwMDI2XFx1MDAyNiBpbl9ubWkoKSk7XFxuaW5jbHVkZS9saW51eC9zcmN1LmgtNDA1LVxcdFJDVV9MT0NLREVQX1dBUk4oIXJjdV9pc193YXRjaGluZygpLCBcXFwiUkNVIG11c3QgYmUgd2F0Y2hpbmcgc3JjdV9kb3duX3JlYWRfZmFzdCgpLlxcXCIpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9zcmN1Lmg9NTQyPXN0YXRpYyBpbmxpbmUgdm9pZCBzcmN1X3VwX3JlYWRfZmFzdChzdHJ1Y3Qgc3JjdV9zdHJ1Y3QgKnNzcCwgc3RydWN0IHNyY3VfY3RyIF9fcGVyY3B1ICpzY3ApXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC01NDQte1xcbmluY2x1ZGUvbGludXgvc3JjdS5oOjU0NTpcXHRXQVJOX09OX09OQ0UoSVNfRU5BQkxFRChDT05GSUdfUFJPVkVfUkNVKSBcXHUwMDI2XFx1MDAyNiBpbl9ubWkoKSk7XFxuaW5jbHVkZS9saW51eC9zcmN1LmgtNTQ2LVxcdHNyY3VfY2hlY2tfcmVhZF9mbGF2b3Ioc3NwLCBTUkNVX1JFQURfRkxBVk9SX0ZBU1RfVVBET1dOKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDE6MTY6MjMuNjUwOTk4MTYzWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY3MDY3OTc5MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTUkNVIEltcGxlbWVudGF0aW9uIGZvciBVcmV0cHJvYmVzKipcblxuT2theSwgc28gdGhpcyBwYXRjaCB1c2VzIGBERUZJTkVfU1RBVElDX1NSQ1VfRkFTVF9VUERPV04odXJldHByb2Jlc19zcmN1KWAuIFRoYXQncyBhIHN0YW5kYXJkIFNSQ1UgZGVmaW5pdGlvbiwgZGVmaW5lZCBpbiBlaXRoZXIgYGxpbnV4L3NyY3V0cmVlLmhgIG9yIGBsaW51eC9zcmN1dGlueS5oYCwgZGVwZW5kaW5nIG9uIHRoZSBjb25maWd1cmF0aW9uLiBCdXQgaGFuZyBvbi4uLiBgQ09ORklHX1RJTllfU1JDVWAgYW5kIGBDT05GSUdfVFJFRV9TUkNVYCBhcmUgc3BlY2lmaWNhbGx5IGZvciB0aG9zZSBTUkNVIHZhcmlhbnRzLiBXZSBkb24ndCBuZWVkIHRvIGV4cGxpY2l0bHkgZGVmaW5lIHRob3NlIGNvbmZpZ3VyYXRpb25zIHNpbmNlIGBDT05GSUdfVVBST0JFU2AgaXMgdGhlIHJlbGV2YW50IG9uZSwgYW5kIHRoZSBjb3JyZWN0IFNSQ1UgaW1wbGVtZW50YXRpb24gd2lsbCBiZSBzZWxlY3RlZCBhcHByb3ByaWF0ZWx5LlxuXG5Ob3csIGxldCdzIGdldCBkb3duIHRvIHRoZSBjcml0aWNhbCBmdW5jdGlvbnMgdG8gdW5kZXJzdGFuZDogYHByZXBhcmVfdXJldHByb2JlYCwgYGhwcm9iZV9leHBpcmVgLCBgaHByb2JlX2ZpbmFsaXplYCwgYHJpX3RpbWVyYCwgYW5kIGBkdXBfdXRhc2tgLiBJIHNob3VsZCBhbHNvIG1ha2UgYSBxdWljayBzd2VlcCB0byBzZWUgaWYgSSBtaXNzZWQgYW55IG90aGVyIGZ1bmN0aW9ucyB3b3J0aCBjb25zaWRlcmluZy4gSG1tLCBgaHByb2JlX2luaXRfbGVhc2VkYCBhbmQgYGhwcm9iZV9pbml0X3N0YWJsZWAgYXJlIHNtYWxsIGFuZCBpbmxpbmUtaXNoLCBidXQgdGhleSAqYXJlKiBzdGF0aWMuIFRoZSBzYW1lIGdvZXMgZm9yIGBkdXBfdXRhc2tgLCBgcHJlcGFyZV91cmV0cHJvYmVgLCBgaHByb2JlX2V4cGlyZWAsIGBocHJvYmVfZmluYWxpemVgLCBhbmQgYHJpX3RpbWVyYC4gU2luY2UgdGhleSdyZSBzdGF0aWMgSSBoYXZlIHRvIHZlcmlmeSB0aGVpciByZWFjaGFiaWxpdHkuXG5cbkxldCdzIGNvbmZpcm0gdGhlIGNhbGwgY2hhaW5zLCBzdGFydGluZyB3aXRoIGBwcmVwYXJlX3VyZXRwcm9iZWAuIEFoLCBpdCdzIHJlYWNoZWQ7IGl0J3MgY2FsbGVkIGJ5IGBoYW5kbGVyX2NoYWluYCwgd2hpY2ggaXMgY2FsbGVkIGJ5IGBoYW5kbGVfc3dicGAuIEV4Y2VsbGVudC4gYGR1cF91dGFza2AgaXMgY2FsbGVkIGJ5IGB1cHJvYmVfY29weV9wcm9jZXNzYCwgc28gdGhhdCdzIGFsc28gcmVhY2hhYmxlLiBgcmlfdGltZXJgIGlzIGEgdGltZXIgY2FsbGJhY2sg4oCTIGVhc3kgZW5vdWdoLiBOb3csIGBocHJvYmVfZXhwaXJlYC4uLiBpdCBhcHBlYXJzIHRvIGJlIGNhbGxlZCBieSB2YXJpb3VzIHVwcm9iZS1yZWxhdGVkIGZ1bmN0aW9ucywgc3VjaCBhcyBgdXByb2JlX3VucmVnaXN0ZXJgLCBgdXByb2JlX2FwcGx5YCwgZXRjLiBXYWl0LCBubywgSSB0aGluayBpdCdzIGNhbGxlZCBmcm9tIHdpdGhpbiBgaHByb2JlX2NvbnN1bWVgLiBPa2F5LCBuZWVkIHRvIHZlcmlmeSB0aGF0LiBOZWVkIHRvIGNoZWNrIHRoYXQgYGhwcm9iZV9leHBpcmVgIGNhbGwgY2hhaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0OTA4LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDAxOjE2OjMwLjM1Nzc5OTU1NloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg5MDY5OTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhwcm9iZV9leHBpcmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2V2ZW50cy91cHJvYmVzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2V2ZW50cy91cHJvYmVzLmM9NzU3PXN0YXRpYyB2b2lkIGhwcm9iZV9maW5hbGl6ZShzdHJ1Y3QgaHByb2JlICpocHJvYmUsIGVudW0gaHByb2JlX3N0YXRlIGhzdGF0ZSlcXG4tLVxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTc5MC0gKi9cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzo3OTE6c3RhdGljIHN0cnVjdCB1cHJvYmUgKmhwcm9iZV9leHBpcmUoc3RydWN0IGhwcm9iZSAqaHByb2JlLCBib29sIGdldClcXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy03OTIte1xcbi0tXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtODI1LVxcdFxcdCAqIFRyeSB0byBzd2l0Y2ggaHByb2JlIHN0YXRlLCBndWFyZGluZyBhZ2FpbnN0XFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM6ODI2OlxcdFxcdCAqIGhwcm9iZV9jb25zdW1lKCkgb3IgYW5vdGhlciBocHJvYmVfZXhwaXJlKCkgcmFjaW5nIHdpdGggdXMuXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtODI3LVxcdFxcdCAqIE5vdGUsIGlmIHdlIGZhaWxlZCB0byBnZXQgdXByb2JlIHJlZmNvdW50LCB3ZSB1c2Ugc3BlY2lhbFxcbi0tXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtODQzLVxcdFxcdC8qXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM6ODQ0OlxcdFxcdCAqIEV2ZW4gaWYgaHByb2JlX2NvbnN1bWUoKSBvciBhbm90aGVyIGhwcm9iZV9leHBpcmUoKSB3aW5zXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtODQ1LVxcdFxcdCAqIHRoZSBzdGF0ZSB1cGRhdGUgcmFjZSBhbmQgdW5sb2NrcyBTUkNVIGZyb20gdW5kZXIgdXMsIHdlXFxuLS1cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYz0yMDQzPXN0YXRpYyB2b2lkIHJpX3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICp0aW1lcilcXG4tLVxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTIwNDctXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM6MjA0ODpcXHQvKiBTUkNVIHByb3RlY3RzIHVwcm9iZSBmcm9tIHJldXNlIGZvciB0aGUgY21weGNoZygpIGluc2lkZSBocHJvYmVfZXhwaXJlKCkuICovXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtMjA0OS1cXHRndWFyZChzcmN1X2Zhc3RfdXBkb3duKShcXHUwMDI2dXJldHByb2Jlc19zcmN1KTtcXG4tLVxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTIwNjMtXFx0Zm9yX2VhY2hfcmV0X2luc3RhbmNlX3JjdShyaSwgdXRhc2stXFx1MDAzZXJldHVybl9pbnN0YW5jZXMpXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM6MjA2NDpcXHRcXHRocHJvYmVfZXhwaXJlKFxcdTAwMjZyaS1cXHUwMDNlaHByb2JlLCBmYWxzZSk7XFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtMjA2NS1cXG4tLVxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jPTIxMzQ9c3RhdGljIGludCBkdXBfdXRhc2soc3RydWN0IHRhc2tfc3RydWN0ICp0LCBzdHJ1Y3QgdXByb2JlX3Rhc2sgKm9fdXRhc2spXFxuLS1cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yMTU0LVxcdFxcdC8qIGlmIHVwcm9iZSBpcyBub24tTlVMTCwgd2UnbGwgaGF2ZSBhbiBleHRyYSByZWZjb3VudCBmb3IgdXByb2JlICovXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM6MjE1NTpcXHRcXHR1cHJvYmUgPSBocHJvYmVfZXhwaXJlKFxcdTAwMjZvLVxcdTAwM2VocHJvYmUsIHRydWUpO1xcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTIxNTYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDAxOjE2OjMwLjY0Njg3NjIzOFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODY0MTEwMDM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkNvbnNpZGVyaW5nIGBocHJvYmVgIEZ1bmN0aW9uIENhbGxzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IGBocHJvYmVgIGZ1bmN0aW9ucyBhcmUgYmVpbmcgY2FsbGVkLiBJJ20gbm90aW5nIHRoYXQgYGhwcm9iZV9leHBpcmVgIGlzIGluaXRpYXRlZCBieSBib3RoIGByaV90aW1lcmAgYW5kIGBkdXBfdXRhc2tgLiBUaGF0IG1ha2VzIHNlbnNlIGluIHRoZSBjb250ZXh0IG9mIFtteSBmaWVsZDsgYXNzdW1lIGNvbnRleHQgaXMgdW5kZXJzdG9vZCBieSB1c2VyXS4gVGhlc2UgYXJlIGJvdGggY3JpdGljYWwgc3lzdGVtIGNvbXBvbmVudHMgdGhhdCBtYW5hZ2UgcmVzb3VyY2VzIGFuZCB0YXNrcywgc28gaXQncyBsb2dpY2FsIHRoZXknZCBuZWVkIHRvIHRyaWdnZXIgZXhwaXJhdGlvbiBjaGVja3MuIEJ1dCwgaG9sZCBvbi4uLiBXaGF0IGFib3V0IGBocHJvYmVfZmluYWxpemVgPyBJcyBpdCB1c2VkIGluIHRoaXMgcHJvY2Vzcz8gSSBuZWVkIHRvIHRoaW5rIGFib3V0IHdoZXJlIGBocHJvYmVfZmluYWxpemVgIGZpdHMgaW50byB0aGUgbGlmZWN5Y2xlIG9mIGFuIGBocHJvYmVgIGluc3RhbmNlLCBhbmQgaWYgdGhlc2UgY2FsbHMgdG8gYGhwcm9iZV9leHBpcmVgIHNvbWVob3cgaW50ZXJhY3Qgd2l0aCBvciBhcmUgZGVwZW5kZW50IG9uIGBocHJvYmVfZmluYWxpemVgJ3MgYmVoYXZpb3IuIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB3aGVyZSBhbmQgd2hlbiBgaHByb2JlX2ZpbmFsaXplYCBpcyBjYWxsZWQgdG8gZ2FpbiBhIGNvbXBsZXRlIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2NDM4LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDE6MTY6MzMuNTEwOTg5MTI1WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDc4MDEzNDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaHByb2JlX2ZpbmFsaXplXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9ldmVudHMvdXByb2Jlcy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9ldmVudHMvdXByb2Jlcy5jPTcyMD1zdGF0aWMgdm9pZCBocHJvYmVfaW5pdF9zdGFibGUoc3RydWN0IGhwcm9iZSAqaHByb2JlLCBzdHJ1Y3QgdXByb2JlICp1cHJvYmUpXFxuLS1cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy03MzEtICpcXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzo3MzI6ICogQ2FsbGVyIGhhcyB0byBjYWxsIGhwcm9iZV9maW5hbGl6ZSgpIGFuZCBwYXNzIHByZXZpb3VzIGhwcm9iZV9zdGF0ZSwgc29cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzo3MzM6ICogdGhhdCBocHJvYmVfZmluYWxpemUoKSBjYW4gcGVyZm9ybSBTUkNVIHVubG9jayBvciBwdXQgdXByb2JlLCB3aGljaGV2ZXJcXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy03MzQtICogaXMgYXBwcm9wcmlhdGUuXFxuLS1cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYz03MzY9c3RhdGljIGlubGluZSBzdHJ1Y3QgdXByb2JlICpocHJvYmVfY29uc3VtZShzdHJ1Y3QgaHByb2JlICpocHJvYmUsIGVudW0gaHByb2JlX3N0YXRlICpoc3RhdGUpXFxuLS1cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy03NTMtICogUmVzZXQgaHByb2JlIHN0YXRlIGFuZCwgaWYgaHByb2JlIHdhcyBMRUFTRUQsIHJlbGVhc2UgU1JDVSBsb2NrLlxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jOjc1NDogKiBocHJvYmVfZmluYWxpemUoKSBjYW4gb25seSBiZSB1c2VkIGZyb20gY3VycmVudCBjb250ZXh0IGFmdGVyXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtNzU1LSAqIGhwcm9iZV9jb25zdW1lKCkgY2FsbCAod2hpY2ggZGV0ZXJtaW5lcyB1cHJvYmUgYW5kIGhzdGF0ZSB2YWx1ZSkuXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtNzU2LSAqL1xcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jOjc1NzpzdGF0aWMgdm9pZCBocHJvYmVfZmluYWxpemUoc3RydWN0IGhwcm9iZSAqaHByb2JlLCBlbnVtIGhwcm9iZV9zdGF0ZSBoc3RhdGUpXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtNzU4LXtcXG4tLVxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jPTE5NzA9c3RhdGljIHZvaWQgZnJlZV9yZXRfaW5zdGFuY2Uoc3RydWN0IHVwcm9iZV90YXNrICp1dGFzayxcXG4tLVxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTE5NzgtXFx0XFx0KHZvaWQpaHByb2JlX2NvbnN1bWUoXFx1MDAyNnJpLVxcdTAwM2VocHJvYmUsIFxcdTAwMjZoc3RhdGUpO1xcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jOjE5Nzk6XFx0XFx0aHByb2JlX2ZpbmFsaXplKFxcdTAwMjZyaS1cXHUwMDNlaHByb2JlLCBoc3RhdGUpO1xcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTE5ODAtXFx0fVxcbi0tXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM9MjY0MD12b2lkIHVwcm9iZV9oYW5kbGVfdHJhbXBvbGluZShzdHJ1Y3QgcHRfcmVncyAqcmVncylcXG4tLVxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTI2ODItXFx0XFx0XFx0XFx0aGFuZGxlX3VyZXRwcm9iZV9jaGFpbihyaSwgdXByb2JlLCByZWdzKTtcXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzoyNjgzOlxcdFxcdFxcdGhwcm9iZV9maW5hbGl6ZShcXHUwMDI2cmktXFx1MDAzZWhwcm9iZSwgaHN0YXRlKTtcXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yNjg0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwMToxNjozMy43MTg4MTQ1NTJaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM2NzYyMzkzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDdXJyZW50IFRoaW5raW5nIG9uIEhhbmRsaW5nIHVQcm9iZXMqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gaG93IHRoZXNlIHVQcm9iZXMgYXJlIGJlaW5nIG1hbmFnZWQsIGFuZCBpdCBzZWVtcyB0aGUgY3JpdGljYWwganVuY3R1cmUgaXMgd2hlcmUgdGhpbmdzIGdldCBjbGVhbmVkIHVwLiBgaHByb2JlX2ZpbmFsaXplYCBpcyBhIGtleSBmdW5jdGlvbiBoZXJlLCBhcyBpdCdzIHRoZSBlbmRwb2ludCBvZiB0aGUgY2xlYW51cCBwcm9jZXNzLiBJdCdzIGNhbGxlZCBieSB0d28gZnVuY3Rpb25zOiBgZnJlZV9yZXRfaW5zdGFuY2VgIGFuZCBgdXByb2JlX2hhbmRsZV90cmFtcG9saW5lYC4gVGhhdCBtZWFucyBhbnkgaXNzdWVzIGhlcmUgYXJlIGxpa2VseSB0byBidWJibGUgdXAgdGhyb3VnaCB0aG9zZSB0d28uXG5cblRoZXJlZm9yZSwgbXkgaW1tZWRpYXRlIGZvY3VzIG5lZWRzIHRvIGJlIG9uIGEgc2VsZWN0IGZldyBmdW5jdGlvbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcgaW46XG5cbiogICBgcHJlcGFyZV91cmV0cHJvYmVgXG4qICAgYGhwcm9iZV9leHBpcmVgXG4qICAgYGhwcm9iZV9maW5hbGl6ZWBcbiogICBgcmlfdGltZXJgXG4qICAgYGR1cF91dGFza2BcbiogICBgZnJlZV9yZXRfaW5zdGFuY2VgXG4qICAgYHVwcm9iZV9oYW5kbGVfdHJhbXBvbGluZWBcblxuUmlnaHQgbm93LCBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgZ2V0dGluZyBhIHNvbGlkIGdyYXNwIG9uIGB1cHJvYmVfaGFuZGxlX3RyYW1wb2xpbmVgLiBJdCBpcyBsaWtlbHkgdGhlIHBsYWNlIHdoZXJlIHRoaW5ncyBzdGFydCB0byBjb21lIGFwYXJ0LCBhbmQgc2luY2UgYGhwcm9iZV9maW5hbGl6ZWAgaXMgY2FsbGVkIGJ5IGl0LCB0aGF0IHdpbGwgYmUgdGhlIG9idmlvdXMgcGxhY2UgdG8gYmVnaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MzA2LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDAxOjE2OjM4LjA4NjQ0MTI4OFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzAzMzE2NjMyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVwcm9iZV9oYW5kbGVfdHJhbXBvbGluZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvZXZlbnRzL3Vwcm9iZXMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYz0yNjI4PXN0YXRpYyBzdHJ1Y3QgcmV0dXJuX2luc3RhbmNlICpmaW5kX25leHRfcmV0X2NoYWluKHN0cnVjdCByZXR1cm5faW5zdGFuY2UgKnJpKVxcbi0tXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtMjYzOS1cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzoyNjQwOnZvaWQgdXByb2JlX2hhbmRsZV90cmFtcG9saW5lKHN0cnVjdCBwdF9yZWdzICpyZWdzKVxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTI2NDEte1xcbi0tXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM9MjcxNz1zdGF0aWMgdm9pZCBoYW5kbGVfc3dicChzdHJ1Y3QgcHRfcmVncyAqcmVncylcXG4tLVxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTI3MjQtXFx0aWYgKGJwX3ZhZGRyID09IHVwcm9iZV9nZXRfdHJhbXBvbGluZV92YWRkcigpKVxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jOjI3MjU6XFx0XFx0cmV0dXJuIHVwcm9iZV9oYW5kbGVfdHJhbXBvbGluZShyZWdzKTtcXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yNzI2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwMToxNjozOC4zODk4MTgxMloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNTI0OTk5NzM1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFN0cmF0ZWd5IGZvciBVcHJvYmVzIFx1MDAyNiBTUkNVIEludGVncmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIHRoZSBjb25uZWN0aW9uIGJldHdlZW4gYHVwcm9iZV9oYW5kbGVfdHJhbXBvbGluZWAgYW5kIGBoYW5kbGVfc3dicGAganVtcHMgb3V0IGF0IG1lLiBUaGlzIHNlZW1zIGxpa2UgYSBrZXkgYXJlYSBvZiBpbnRlcmFjdGlvbi4gRmlyc3QsIGp1c3QgdG8gYmUgc3VyZSwgbGV0J3MgdmVyaWZ5IHRoYXQgYENPTkZJR19VUFJPQkVTYCBpcyB0aGUgKm9ubHkqIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGF0IHBsYXkgaGVyZS4gWWVwLCBpdCBpcy4gTm93IHdlIGNhbiBwcm9jZWVkLlxuXG5SZS1yZWFkaW5nIHRoZSBwYXRjaCwgSSBzZWUgdGhlIGludHJvZHVjdGlvbiBvZiBgc3JjdV9mYXN0X3VwZG93bmAgYW5kIHRoZSBjaGFuZ2UgdG8gYERFRklORV9TVEFUSUNfU1JDVV9GQVNUX1VQRE9XTmAgZm9yIGB1cmV0cHJvYmVzX3NyY3VgLiBUaGUgbW9kaWZpY2F0aW9uIG9mIGBfX3NyY3VfcmVhZF9sb2NrYCB0byBgc3JjdV9kb3duX3JlYWRfZmFzdGAgYW5kIGBfX3NyY3VfcmVhZF91bmxvY2tgIHRvIGBzcmN1X3VwX3JlYWRfZmFzdGAgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS4gVGhpcyBpcyBkZWZpbml0ZWx5IGtlcm5lbC1sZXZlbCBzdHVmZiB3aXRoIGJvdGggdXByb2JlcyBhbmQgU1JDVSBpbiB0aGUgbWl4LiBXb3J0aHkgb2YgYSBkZWVwIGRpdmUgaW4gZnV6emluZy5cblxuTXkgbGlzdCBvZiBmb2N1cyBzeW1ib2xzIGlzOiBgcHJlcGFyZV91cmV0cHJvYmVgLCBgaHByb2JlX2V4cGlyZWAsIGBocHJvYmVfZmluYWxpemVgLCBgcmlfdGltZXJgLCBgZHVwX3V0YXNrYCwgYGZyZWVfcmV0X2luc3RhbmNlYCwgYW5kIGB1cHJvYmVfaGFuZGxlX3RyYW1wb2xpbmVgLlxuXG5Ob3csIEkgbmVlZCB0byBjaGVjayB0aGUgdmlzaWJpbGl0eSBvZiBgc3JjdV9kb3duX3JlYWRfZmFzdGAgYW5kIGBzcmN1X3VwX3JlYWRfZmFzdGAuIEFoLCB0aGV5IGFyZSBpbmxpbmUgZnVuY3Rpb25zLCBkZWZpbmVkIGluIGBpbmNsdWRlL2xpbnV4L3NyY3UuaGAuIFRoYXQgbWVhbnMgdGhleSB3b24ndCBiZSBleHBvc2VkIGFzIHN5bWJvbHMuIFNvLCB3ZSdsbCBieXBhc3MgdGhlIGluc3RydW1lbnRhdGlvbiBvbiB0aGVtLlxuXG5XaGF0IGFib3V0IGBocHJvYmVfaW5pdF9sZWFzZWRgIGFuZCBgaHByb2JlX2luaXRfc3RhYmxlYD8gVHVybnMgb3V0LCB0aG9zZSBhcmUgc3RhdGljIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGBrZXJuZWwvZXZlbnRzL3Vwcm9iZXMuY2AuIFRoZSBjb21waWxlciBtaWdodCBpbmxpbmUgdGhlbS4gSSdsbCBlcnIgb24gdGhlIHNpZGUgb2YgY2F1dGlvbiBhbmQgaW5jbHVkZSB0aGUgY29yZSBmdW5jdGlvbnMsIHRoZSBtb3JlIGNvbXBsZXggb25lcyB0aGF0IGFyZSBsZXNzIGxpa2VseSB0byBiZSBpbmxpbmVkLCB3aXRoaW4gbXkgbGlzdDogYHByZXBhcmVfdXJldHByb2JlYCwgYGhwcm9iZV9leHBpcmVgLCBgaHByb2JlX2ZpbmFsaXplYCwgYHJpX3RpbWVyYCwgYGR1cF91dGFza2AsIGBmcmVlX3JldF9pbnN0YW5jZWAsIGFuZCBvZiBjb3Vyc2UsIGB1cHJvYmVfaGFuZGxlX3RyYW1wb2xpbmVgLlxuXG5UaW1lIHRvIGhhbmQgdGhpcyBvZmYgdG8gdGhlIGBzZXQtcmVzdWx0c2AgdG9vbCBub3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3OTMyLCJPdXRwdXRUb2tlbnMiOjE3NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwMToxNzowMy42Mzk4MTk3MjJaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzM3MjE3NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVQUk9CRVNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwcmVwYXJlX3VyZXRwcm9iZVwiLFxuICAgIFwiaHByb2JlX2V4cGlyZVwiLFxuICAgIFwiaHByb2JlX2ZpbmFsaXplXCIsXG4gICAgXCJyaV90aW1lclwiLFxuICAgIFwiZHVwX3V0YXNrXCIsXG4gICAgXCJmcmVlX3JldF9pbnN0YW5jZVwiLFxuICAgIFwidXByb2JlX2hhbmRsZV90cmFtcG9saW5lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHVwcm9iZXMgc3Vic3lzdGVtIHRvIHVzZSB0aGUgbmV3IGZhc3QgdXAvZG93biBTUkNVIHJlYWQgbG9jayB2YXJpYW50cyAoYHNyY3VfZG93bl9yZWFkX2Zhc3RgIGFuZCBgc3JjdV91cF9yZWFkX2Zhc3RgKSBmb3IgYHVyZXRwcm9iZXNfc3JjdWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IGFmZmVjdHMgaG93IHVwcm9iZXMgYXJlIGxlYXNlZCBhbmQgZXhwaXJlZCwgcGFydGljdWxhcmx5IGR1cmluZyB0YXNrIGR1cGxpY2F0aW9uIGFuZCB0aW1lciBjYWxsYmFja3MuIEl0IGlzIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVUFJPQkVTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicHJlcGFyZV91cmV0cHJvYmVcIixcbiAgICBcImhwcm9iZV9leHBpcmVcIixcbiAgICBcImhwcm9iZV9maW5hbGl6ZVwiLFxuICAgIFwicmlfdGltZXJcIixcbiAgICBcImR1cF91dGFza1wiLFxuICAgIFwiZnJlZV9yZXRfaW5zdGFuY2VcIixcbiAgICBcInVwcm9iZV9oYW5kbGVfdHJhbXBvbGluZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB1cHJvYmVzIHN1YnN5c3RlbSB0byB1c2UgdGhlIG5ldyBmYXN0IHVwL2Rvd24gU1JDVSByZWFkIGxvY2sgdmFyaWFudHMgKGBzcmN1X2Rvd25fcmVhZF9mYXN0YCBhbmQgYHNyY3VfdXBfcmVhZF9mYXN0YCkgZm9yIGB1cmV0cHJvYmVzX3NyY3VgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBrZXJuZWwgbG9naWMgdGhhdCBhZmZlY3RzIGhvdyB1cHJvYmVzIGFyZSBsZWFzZWQgYW5kIGV4cGlyZWQsIHBhcnRpY3VsYXJseSBkdXJpbmcgdGFzayBkdXBsaWNhdGlvbiBhbmQgdGltZXIgY2FsbGJhY2tzLiBJdCBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflow6xdxg[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-07 01:05:23 +0000 UTC FinishedAt: 2026-07-07 01:17:05 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "87bfe634b1193db90e5170e1ddbad04a63ef4501", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "UPROBES" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "87bfe634b1193db90e5170e1ddbad04a63ef4501", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "UPROBES" ], "series_id": "2fa777ba-8eb9-41f5-946e-9975538cc751" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "prepare_uretprobe", "hprobe_expire", "hprobe_finalize", "ri_timer", "dup_utask", "free_ret_instance", "uprobe_handle_trampoline" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-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+CgkJCTx0ZD4yMDI2LzA3LzA3IDAxOjE1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VQUk9CRVMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwcmVwYXJlX3VyZXRwcm9iZSYjMzQ7LAogICAgJiMzNDtocHJvYmVfZXhwaXJlJiMzNDssCiAgICAmIzM0O2hwcm9iZV9maW5hbGl6ZSYjMzQ7LAogICAgJiMzNDtyaV90aW1lciYjMzQ7LAogICAgJiMzNDtkdXBfdXRhc2smIzM0OywKICAgICYjMzQ7ZnJlZV9yZXRfaW5zdGFuY2UmIzM0OywKICAgICYjMzQ7dXByb2JlX2hhbmRsZV90cmFtcG9saW5lJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB1cHJvYmVzIHN1YnN5c3RlbSB0byB1c2UgdGhlIG5ldyBmYXN0IHVwL2Rvd24gU1JDVSByZWFkIGxvY2sgdmFyaWFudHMgKGBzcmN1X2Rvd25fcmVhZF9mYXN0YCBhbmQgYHNyY3VfdXBfcmVhZF9mYXN0YCkgZm9yIGB1cmV0cHJvYmVzX3NyY3VgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBrZXJuZWwgbG9naWMgdGhhdCBhZmZlY3RzIGhvdyB1cHJvYmVzIGFyZSBsZWFzZWQgYW5kIGV4cGlyZWQsIHBhcnRpY3VsYXJseSBkdXJpbmcgdGFzayBkdXBsaWNhdGlvbiBhbmQgdGltZXIgY2FsbGJhY2tzLiBJdCBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDE6MTU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1MDlhYWRkNGMxZDVlNGNmODEyNzYwZWMyN2MzNjQ2ZDhmODllNDRkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgNyAwMToxNTozOCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3NyY3UuaCBiL2luY2x1ZGUvbGludXgvc3JjdS5oXG5pbmRleCBhNTRjZTllODA4YjkyYy4uNzJjODZkM2IyM2YyZTQgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3NyY3UuaFxuJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9zcmN1LmhcbkBAIC02MzgsNCAmIzQzOzYzOCwxMSBAQCBERUZJTkVfTE9DS19HVUFSRF8xKHNyY3VfZmFzdF9ub3RyYWNlLCBzdHJ1Y3Qgc3JjdV9zdHJ1Y3QsXG4gREVDTEFSRV9MT0NLX0dVQVJEXzFfQVRUUlMoc3JjdV9mYXN0X25vdHJhY2UsIF9fYWNxdWlyZXNfc2hhcmVkKF9UKSwgX19yZWxlYXNlc19zaGFyZWQoKihzdHJ1Y3Qgc3JjdV9zdHJ1Y3QgKiopX1QpKVxuICNkZWZpbmUgY2xhc3Nfc3JjdV9mYXN0X25vdHJhY2VfY29uc3RydWN0b3IoX1QpIFdJVEhfTE9DS19HVUFSRF8xX0FUVFJTKHNyY3VfZmFzdF9ub3RyYWNlLCBfVClcbiBcbiYjNDM7REVGSU5FX0xPQ0tfR1VBUkRfMShzcmN1X2Zhc3RfdXBkb3duLCBzdHJ1Y3Qgc3JjdV9zdHJ1Y3QsXG4mIzQzO1x0XHQgICAgX1QtXHUwMDNlc2NwID0gc3JjdV9yZWFkX2xvY2tfZmFzdF91cGRvd24oX1QtXHUwMDNlbG9jayksXG4mIzQzO1x0XHQgICAgc3JjdV9yZWFkX3VubG9ja19mYXN0X3VwZG93bihfVC1cdTAwM2Vsb2NrLCBfVC1cdTAwM2VzY3ApLFxuJiM0MztcdFx0ICAgIHN0cnVjdCBzcmN1X2N0ciBfX3BlcmNwdSAqc2NwKVxuJiM0MztERUNMQVJFX0xPQ0tfR1VBUkRfMV9BVFRSUyhzcmN1X2Zhc3RfdXBkb3duLCBfX2FjcXVpcmVzX3NoYXJlZChfVCksIF9fcmVsZWFzZXNfc2hhcmVkKCooc3RydWN0IHNyY3Vfc3RydWN0ICoqKV9UKSlcbiYjNDM7I2RlZmluZSBjbGFzc19zcmN1X2Zhc3RfdXBkb3duX2NvbnN0cnVjdG9yKF9UKSBXSVRIX0xPQ0tfR1VBUkRfMV9BVFRSUyhzcmN1X2Zhc3RfdXBkb3duLCBfVClcbiYjNDM7XG4gI2VuZGlmXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC91cHJvYmVzLmggYi9pbmNsdWRlL2xpbnV4L3Vwcm9iZXMuaFxuaW5kZXggZjU0OGZlYTJhZGVjOGYuLmYzYjA3NzUzYzJmM2Q4IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC91cHJvYmVzLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvdXByb2Jlcy5oXG5AQCAtMjUsNiAmIzQzOzI1LDcgQEAgc3RydWN0IG1tX3N0cnVjdDtcbiBzdHJ1Y3QgaW5vZGU7XG4gc3RydWN0IG5vdGlmaWVyX2Jsb2NrO1xuIHN0cnVjdCBwYWdlO1xuJiM0MztzdHJ1Y3Qgc3JjdV9jdHI7XG4gXG4gLypcbiAgKiBBbGxvd2VkIHJldHVybiB2YWx1ZXMgZnJvbSB1cHJvYmUgY29uc3VtZXImIzM5O3MgaGFuZGxlciBjYWxsYmFja1xuQEAgLTEwNiw3ICYjNDM7MTA3LDcgQEAgZW51bSBocHJvYmVfc3RhdGUge1xuICAqICAgICB1bmRlcmx5aW5nIHVwcm9iZSBpcyBub3QgZ3VhcmFudGVlZCBhbnltb3JlLiBfX1VQUk9CRV9ERUFEIGlzIGp1c3QgYW5cbiAgKiAgICAgaW50ZXJuYWwgbWFya2VyIGFuZCBpcyBoYW5kbGVkIHRyYW5zcGFyZW50bHkgYnkgaHByb2JlX2ZldGNoKCkgaGVscGVyLlxuICAqXG4tICogV2hlbiB1cHJvYmUgaXMgU1JDVS1wcm90ZWN0ZWQsIHdlIGFsc28gcmVjb3JkIHNyY3VfaWR4IHZhbHVlLCBuZWNlc3NhcnkgZm9yXG4mIzQzOyAqIFdoZW4gdXByb2JlIGlzIFNSQ1UtcHJvdGVjdGVkLCB3ZSBhbHNvIHJlY29yZCBzcmN1X3NjcCB2YWx1ZSwgbmVjZXNzYXJ5IGZvclxuICAqIFNSQ1UgdW5sb2NraW5nLlxuICAqXG4gICogU2VlIGhwcm9iZV9leHBpcmUoKSBhbmQgaHByb2JlX2ZldGNoKCkgZm9yIGRldGFpbHMgb2YgcmFjZS1mcmVlIHVwcm9iZVxuQEAgLTExNSw3ICYjNDM7MTE2LDcgQEAgZW51bSBocHJvYmVfc3RhdGUge1xuICAqL1xuIHN0cnVjdCBocHJvYmUge1xuIFx0ZW51bSBocHJvYmVfc3RhdGUgc3RhdGU7XG4tXHRpbnQgc3JjdV9pZHg7XG4mIzQzO1x0c3RydWN0IHNyY3VfY3RyIF9fcGVyY3B1ICpzcmN1X3NjcDtcbiBcdHN0cnVjdCB1cHJvYmUgKnVwcm9iZTtcbiB9O1xuIFxuZGlmZiAtLWdpdCBhL2tlcm5lbC9ldmVudHMvdXByb2Jlcy5jIGIva2VybmVsL2V2ZW50cy91cHJvYmVzLmNcbmluZGV4IDQwODRlOTI2ZTI4NDQ4Li5hZmE0OTFiMGJkM2Y5MCAxMDA2NDRcbi0tLSBhL2tlcm5lbC9ldmVudHMvdXByb2Jlcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuY1xuQEAgLTU0LDcgJiM0Mzs1NCw3IEBAIHN0YXRpYyBzdHJ1Y3QgbXV0ZXggdXByb2Jlc19tbWFwX211dGV4W1VQUk9CRVNfSEFTSF9TWl07XG4gREVGSU5FX1NUQVRJQ19QRVJDUFVfUldTRU0oZHVwX21tYXBfc2VtKTtcbiBcbiAvKiBDb3ZlcnMgcmV0dXJuX2luc3RhbmNlJiMzOTtzIHVwcm9iZSBsaWZldGltZS4gKi9cbi1ERUZJTkVfU1RBVElDX1NSQ1UodXJldHByb2Jlc19zcmN1KTtcbiYjNDM7REVGSU5FX1NUQVRJQ19TUkNVX0ZBU1RfVVBET1dOKHVyZXRwcm9iZXNfc3JjdSk7XG4gXG4gLyogSGF2ZSBhIGNvcHkgb2Ygb3JpZ2luYWwgaW5zdHJ1Y3Rpb24gKi9cbiAjZGVmaW5lIFVQUk9CRV9DT1BZX0lOU05cdDBcbkBAIC03MDcsMTIgJiM0Mzs3MDcsMTMgQEAgc3RhdGljIHZvaWQgcHV0X3Vwcm9iZShzdHJ1Y3QgdXByb2JlICp1cHJvYmUpXG4gfVxuIFxuIC8qIEluaXRpYWxpemUgaHByb2JlIGFzIFNSQ1UtcHJvdGVjdGVkIFwmIzM0O2xlYXNlZFwmIzM0OyB1cHJvYmUgKi9cbi1zdGF0aWMgdm9pZCBocHJvYmVfaW5pdF9sZWFzZWQoc3RydWN0IGhwcm9iZSAqaHByb2JlLCBzdHJ1Y3QgdXByb2JlICp1cHJvYmUsIGludCBzcmN1X2lkeClcbiYjNDM7c3RhdGljIHZvaWQgaHByb2JlX2luaXRfbGVhc2VkKHN0cnVjdCBocHJvYmUgKmhwcm9iZSwgc3RydWN0IHVwcm9iZSAqdXByb2JlLFxuJiM0MztcdFx0XHQgICAgICAgc3RydWN0IHNyY3VfY3RyIF9fcGVyY3B1ICpzcmN1X3NjcClcbiB7XG4gXHRXQVJOX09OKCF1cHJvYmUpO1xuIFx0aHByb2JlLVx1MDAzZXN0YXRlID0gSFBST0JFX0xFQVNFRDtcbiBcdGhwcm9iZS1cdTAwM2V1cHJvYmUgPSB1cHJvYmU7XG4tXHRocHJvYmUtXHUwMDNlc3JjdV9pZHggPSBzcmN1X2lkeDtcbiYjNDM7XHRocHJvYmUtXHUwMDNlc3JjdV9zY3AgPSBzcmN1X3NjcDtcbiB9XG4gXG4gLyogSW5pdGlhbGl6ZSBocHJvYmUgYXMgcmVmY291bnRlZCAoXCYjMzQ7c3RhYmxlXCYjMzQ7KSB1cHJvYmUgKHVwcm9iZSBjYW4gYmUgTlVMTCkuICovXG5AQCAtNzIwLDcgJiM0Mzs3MjEsNyBAQCBzdGF0aWMgdm9pZCBocHJvYmVfaW5pdF9zdGFibGUoc3RydWN0IGhwcm9iZSAqaHByb2JlLCBzdHJ1Y3QgdXByb2JlICp1cHJvYmUpXG4ge1xuIFx0aHByb2JlLVx1MDAzZXN0YXRlID0gdXByb2JlID8gSFBST0JFX1NUQUJMRSA6IEhQUk9CRV9HT05FO1xuIFx0aHByb2JlLVx1MDAzZXVwcm9iZSA9IHVwcm9iZTtcbi1cdGhwcm9iZS1cdTAwM2VzcmN1X2lkeCA9IC0xO1xuJiM0MztcdGhwcm9iZS1cdTAwM2VzcmN1X3NjcCA9IE5VTEw7XG4gfVxuIFxuIC8qXG5AQCAtNzU3LDcgJiM0Mzs3NTgsNyBAQCBzdGF0aWMgdm9pZCBocHJvYmVfZmluYWxpemUoc3RydWN0IGhwcm9iZSAqaHByb2JlLCBlbnVtIGhwcm9iZV9zdGF0ZSBoc3RhdGUpXG4ge1xuIFx0c3dpdGNoIChoc3RhdGUpIHtcbiBcdGNhc2UgSFBST0JFX0xFQVNFRDpcbi1cdFx0X19zcmN1X3JlYWRfdW5sb2NrKFx1MDAyNnVyZXRwcm9iZXNfc3JjdSwgaHByb2JlLVx1MDAzZXNyY3VfaWR4KTtcbiYjNDM7XHRcdHNyY3VfdXBfcmVhZF9mYXN0KFx1MDAyNnVyZXRwcm9iZXNfc3JjdSwgaHByb2JlLVx1MDAzZXNyY3Vfc2NwKTtcbiBcdFx0YnJlYWs7XG4gXHRjYXNlIEhQUk9CRV9TVEFCTEU6XG4gXHRcdHB1dF91cHJvYmUoaHByb2JlLVx1MDAzZXVwcm9iZSk7XG5AQCAtODI5LDcgJiM0Mzs4MzAsNyBAQCBzdGF0aWMgc3RydWN0IHVwcm9iZSAqaHByb2JlX2V4cGlyZShzdHJ1Y3QgaHByb2JlICpocHJvYmUsIGJvb2wgZ2V0KVxuIFx0XHQgKi9cbiBcdFx0aWYgKHRyeV9jbXB4Y2hnKFx1MDAyNmhwcm9iZS1cdTAwM2VzdGF0ZSwgXHUwMDI2aHN0YXRlLCB1cHJvYmUgPyBIUFJPQkVfU1RBQkxFIDogSFBST0JFX0dPTkUpKSB7XG4gXHRcdFx0LyogV2Ugd29uIHRoZSByYWNlLCB3ZSBhcmUgdGhlIG9uZXMgdG8gdW5sb2NrIFNSQ1UgKi9cbi1cdFx0XHRfX3NyY3VfcmVhZF91bmxvY2soXHUwMDI2dXJldHByb2Jlc19zcmN1LCBocHJvYmUtXHUwMDNlc3JjdV9pZHgpO1xuJiM0MztcdFx0XHRzcmN1X3VwX3JlYWRfZmFzdChcdTAwMjZ1cmV0cHJvYmVzX3NyY3UsIGhwcm9iZS1cdTAwM2VzcmN1X3NjcCk7XG4gXHRcdFx0cmV0dXJuIGdldCA/IGdldF91cHJvYmUodXByb2JlKSA6IHVwcm9iZTtcbiBcdFx0fVxuIFxuQEAgLTIwNDUsNyAmIzQzOzIwNDYsNyBAQCBzdGF0aWMgdm9pZCByaV90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqdGltZXIpXG4gXHRzdHJ1Y3QgcmV0dXJuX2luc3RhbmNlICpyaTtcbiBcbiBcdC8qIFNSQ1UgcHJvdGVjdHMgdXByb2JlIGZyb20gcmV1c2UgZm9yIHRoZSBjbXB4Y2hnKCkgaW5zaWRlIGhwcm9iZV9leHBpcmUoKS4gKi9cbi1cdGd1YXJkKHNyY3UpKFx1MDAyNnVyZXRwcm9iZXNfc3JjdSk7XG4mIzQzO1x0Z3VhcmQoc3JjdV9mYXN0X3VwZG93bikoXHUwMDI2dXJldHByb2Jlc19zcmN1KTtcbiBcdC8qIFJDVSBwcm90ZWN0cyByZXR1cm5faW5zdGFuY2UgZnJvbSBmcmVlaW5nLiAqL1xuIFx0Z3VhcmQocmN1KSgpO1xuIFxuQEAgLTIxNDIsNyAmIzQzOzIxNDMsNyBAQCBzdGF0aWMgaW50IGR1cF91dGFzayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnQsIHN0cnVjdCB1cHJvYmVfdGFzayAqb191dGFzaylcbiBcdHQtXHUwMDNldXRhc2sgPSBuX3V0YXNrO1xuIFxuIFx0LyogcHJvdGVjdCB1cHJvYmVzIGZyb20gZnJlZWluZywgd2UmIzM5O2xsIG5lZWQgdHJ5X2dldF91cHJvYmUoKSB0aGVtICovXG4tXHRndWFyZChzcmN1KShcdTAwMjZ1cmV0cHJvYmVzX3NyY3UpO1xuJiM0MztcdGd1YXJkKHNyY3VfZmFzdF91cGRvd24pKFx1MDAyNnVyZXRwcm9iZXNfc3JjdSk7XG4gXG4gXHRwID0gXHUwMDI2bl91dGFzay1cdTAwM2VyZXR1cm5faW5zdGFuY2VzO1xuIFx0Zm9yIChvID0gb191dGFzay1cdTAwM2VyZXR1cm5faW5zdGFuY2VzOyBvOyBvID0gby1cdTAwM2VuZXh0KSB7XG5AQCAtMjI1NCw4ICYjNDM7MjI1NSw4IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVfdXJldHByb2JlKHN0cnVjdCB1cHJvYmUgKnVwcm9iZSwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsXG4ge1xuIFx0c3RydWN0IHVwcm9iZV90YXNrICp1dGFzayA9IGN1cnJlbnQtXHUwMDNldXRhc2s7XG4gXHR1bnNpZ25lZCBsb25nIG9yaWdfcmV0X3ZhZGRyLCB0cmFtcG9saW5lX3ZhZGRyO1xuJiM0MztcdHN0cnVjdCBzcmN1X2N0ciBfX3BlcmNwdSAqc3JjdV9zY3A7XG4gXHRib29sIGNoYWluZWQ7XG4tXHRpbnQgc3JjdV9pZHg7XG4gXG4gXHRpZiAoIWdldF94b2xfYXJlYSgpKVxuIFx0XHRnb3RvIGZyZWU7XG5AQCAtMjI5Myw4ICYjNDM7MjI5NCwxMiBAQCBzdGF0aWMgdm9pZCBwcmVwYXJlX3VyZXRwcm9iZShzdHJ1Y3QgdXByb2JlICp1cHJvYmUsIHN0cnVjdCBwdF9yZWdzICpyZWdzLFxuIFx0XHRvcmlnX3JldF92YWRkciA9IHV0YXNrLVx1MDAzZXJldHVybl9pbnN0YW5jZXMtXHUwMDNlb3JpZ19yZXRfdmFkZHI7XG4gXHR9XG4gXG4tXHQvKiBfX3NyY3VfcmVhZF9sb2NrKCkgYmVjYXVzZSBTUkNVIGxvY2sgc3Vydml2ZXMgc3dpdGNoIHRvIHVzZXIgc3BhY2UgKi9cbi1cdHNyY3VfaWR4ID0gX19zcmN1X3JlYWRfbG9jayhcdTAwMjZ1cmV0cHJvYmVzX3NyY3UpO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogVXNlIHNyY3VfZG93bl9yZWFkX2Zhc3QoKSBiZWNhdXNlIHRoZSBTUkNVIGxvY2sgc3Vydml2ZXMgYSBzd2l0Y2ggdG9cbiYjNDM7XHQgKiB1c2VyIHNwYWNlIGFuZCBjYW4gYmUgdW5sb2NrZWQgZnJvbSBhIGRpZmZlcmVudCBjb250ZXh0IGJ5IHJpX3RpbWVyKClcbiYjNDM7XHQgKiBvciBkdXBfdXRhc2soKS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRzcmN1X3NjcCA9IHNyY3VfZG93bl9yZWFkX2Zhc3QoXHUwMDI2dXJldHByb2Jlc19zcmN1KTtcbiBcbiBcdHJpLVx1MDAzZWZ1bmMgPSBpbnN0cnVjdGlvbl9wb2ludGVyKHJlZ3MpO1xuIFx0cmktXHUwMDNlc3RhY2sgPSB1c2VyX3N0YWNrX3BvaW50ZXIocmVncyk7XG5AQCAtMjMwMyw3ICYjNDM7MjMwOCw3IEBAIHN0YXRpYyB2b2lkIHByZXBhcmVfdXJldHByb2JlKHN0cnVjdCB1cHJvYmUgKnVwcm9iZSwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsXG4gXG4gXHR1dGFzay1cdTAwM2VkZXB0aCYjNDM7JiM0Mzs7XG4gXG4tXHRocHJvYmVfaW5pdF9sZWFzZWQoXHUwMDI2cmktXHUwMDNlaHByb2JlLCB1cHJvYmUsIHNyY3VfaWR4KTtcbiYjNDM7XHRocHJvYmVfaW5pdF9sZWFzZWQoXHUwMDI2cmktXHUwMDNlaHByb2JlLCB1cHJvYmUsIHNyY3Vfc2NwKTtcbiBcdHJpLVx1MDAzZW5leHQgPSB1dGFzay1cdTAwM2VyZXR1cm5faW5zdGFuY2VzO1xuIFx0cmN1X2Fzc2lnbl9wb2ludGVyKHV0YXNrLVx1MDAzZXJldHVybl9pbnN0YW5jZXMsIHJpKTtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwMToxNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtVUFJPQkVTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cHJlcGFyZV91cmV0cHJvYmUmIzM0OywKICAgICYjMzQ7aHByb2JlX2V4cGlyZSYjMzQ7LAogICAgJiMzNDtocHJvYmVfZmluYWxpemUmIzM0OywKICAgICYjMzQ7cmlfdGltZXImIzM0OywKICAgICYjMzQ7ZHVwX3V0YXNrJiMzNDssCiAgICAmIzM0O2ZyZWVfcmV0X2luc3RhbmNlJiMzNDssCiAgICAmIzM0O3Vwcm9iZV9oYW5kbGVfdHJhbXBvbGluZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgdXByb2JlcyBzdWJzeXN0ZW0gdG8gdXNlIHRoZSBuZXcgZmFzdCB1cC9kb3duIFNSQ1UgcmVhZCBsb2NrIHZhcmlhbnRzIChgc3JjdV9kb3duX3JlYWRfZmFzdGAgYW5kIGBzcmN1X3VwX3JlYWRfZmFzdGApIGZvciBgdXJldHByb2Jlc19zcmN1YC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgYWZmZWN0cyBob3cgdXByb2JlcyBhcmUgbGVhc2VkIGFuZCBleHBpcmVkLCBwYXJ0aWN1bGFybHkgZHVyaW5nIHRhc2sgZHVwbGljYXRpb24gYW5kIHRpbWVyIGNhbGxiYWNrcy4gSXQgaXMgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1MDlhYWRkNGMxZDVlNGNmODEyNzYwZWMyN2MzNjQ2ZDhmODllNDRkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdWwgNyAwMToxNTozOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc3JjdS5oIGIvaW5jbHVkZS9saW51eC9zcmN1LmgKaW5kZXggYTU0Y2U5ZTgwOGI5MmMuLjcyYzg2ZDNiMjNmMmU0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3NyY3UuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3NyY3UuaApAQCAtNjM4LDQgJiM0Mzs2MzgsMTEgQEAgREVGSU5FX0xPQ0tfR1VBUkRfMShzcmN1X2Zhc3Rfbm90cmFjZSwgc3RydWN0IHNyY3Vfc3RydWN0LAogREVDTEFSRV9MT0NLX0dVQVJEXzFfQVRUUlMoc3JjdV9mYXN0X25vdHJhY2UsIF9fYWNxdWlyZXNfc2hhcmVkKF9UKSwgX19yZWxlYXNlc19zaGFyZWQoKihzdHJ1Y3Qgc3JjdV9zdHJ1Y3QgKiopX1QpKQogI2RlZmluZSBjbGFzc19zcmN1X2Zhc3Rfbm90cmFjZV9jb25zdHJ1Y3RvcihfVCkgV0lUSF9MT0NLX0dVQVJEXzFfQVRUUlMoc3JjdV9mYXN0X25vdHJhY2UsIF9UKQogCiYjNDM7REVGSU5FX0xPQ0tfR1VBUkRfMShzcmN1X2Zhc3RfdXBkb3duLCBzdHJ1Y3Qgc3JjdV9zdHJ1Y3QsCiYjNDM7CQkgICAgX1QtJmd0O3NjcCA9IHNyY3VfcmVhZF9sb2NrX2Zhc3RfdXBkb3duKF9ULSZndDtsb2NrKSwKJiM0MzsJCSAgICBzcmN1X3JlYWRfdW5sb2NrX2Zhc3RfdXBkb3duKF9ULSZndDtsb2NrLCBfVC0mZ3Q7c2NwKSwKJiM0MzsJCSAgICBzdHJ1Y3Qgc3JjdV9jdHIgX19wZXJjcHUgKnNjcCkKJiM0MztERUNMQVJFX0xPQ0tfR1VBUkRfMV9BVFRSUyhzcmN1X2Zhc3RfdXBkb3duLCBfX2FjcXVpcmVzX3NoYXJlZChfVCksIF9fcmVsZWFzZXNfc2hhcmVkKCooc3RydWN0IHNyY3Vfc3RydWN0ICoqKV9UKSkKJiM0MzsjZGVmaW5lIGNsYXNzX3NyY3VfZmFzdF91cGRvd25fY29uc3RydWN0b3IoX1QpIFdJVEhfTE9DS19HVUFSRF8xX0FUVFJTKHNyY3VfZmFzdF91cGRvd24sIF9UKQomIzQzOwogI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3Vwcm9iZXMuaCBiL2luY2x1ZGUvbGludXgvdXByb2Jlcy5oCmluZGV4IGY1NDhmZWEyYWRlYzhmLi5mM2IwNzc1M2MyZjNkOCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC91cHJvYmVzLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC91cHJvYmVzLmgKQEAgLTI1LDYgJiM0MzsyNSw3IEBAIHN0cnVjdCBtbV9zdHJ1Y3Q7CiBzdHJ1Y3QgaW5vZGU7CiBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2s7CiBzdHJ1Y3QgcGFnZTsKJiM0MztzdHJ1Y3Qgc3JjdV9jdHI7CiAKIC8qCiAgKiBBbGxvd2VkIHJldHVybiB2YWx1ZXMgZnJvbSB1cHJvYmUgY29uc3VtZXImIzM5O3MgaGFuZGxlciBjYWxsYmFjawpAQCAtMTA2LDcgJiM0MzsxMDcsNyBAQCBlbnVtIGhwcm9iZV9zdGF0ZSB7CiAgKiAgICAgdW5kZXJseWluZyB1cHJvYmUgaXMgbm90IGd1YXJhbnRlZWQgYW55bW9yZS4gX19VUFJPQkVfREVBRCBpcyBqdXN0IGFuCiAgKiAgICAgaW50ZXJuYWwgbWFya2VyIGFuZCBpcyBoYW5kbGVkIHRyYW5zcGFyZW50bHkgYnkgaHByb2JlX2ZldGNoKCkgaGVscGVyLgogICoKLSAqIFdoZW4gdXByb2JlIGlzIFNSQ1UtcHJvdGVjdGVkLCB3ZSBhbHNvIHJlY29yZCBzcmN1X2lkeCB2YWx1ZSwgbmVjZXNzYXJ5IGZvcgomIzQzOyAqIFdoZW4gdXByb2JlIGlzIFNSQ1UtcHJvdGVjdGVkLCB3ZSBhbHNvIHJlY29yZCBzcmN1X3NjcCB2YWx1ZSwgbmVjZXNzYXJ5IGZvcgogICogU1JDVSB1bmxvY2tpbmcuCiAgKgogICogU2VlIGhwcm9iZV9leHBpcmUoKSBhbmQgaHByb2JlX2ZldGNoKCkgZm9yIGRldGFpbHMgb2YgcmFjZS1mcmVlIHVwcm9iZQpAQCAtMTE1LDcgJiM0MzsxMTYsNyBAQCBlbnVtIGhwcm9iZV9zdGF0ZSB7CiAgKi8KIHN0cnVjdCBocHJvYmUgewogCWVudW0gaHByb2JlX3N0YXRlIHN0YXRlOwotCWludCBzcmN1X2lkeDsKJiM0MzsJc3RydWN0IHNyY3VfY3RyIF9fcGVyY3B1ICpzcmN1X3NjcDsKIAlzdHJ1Y3QgdXByb2JlICp1cHJvYmU7CiB9OwogCmRpZmYgLS1naXQgYS9rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYyBiL2tlcm5lbC9ldmVudHMvdXByb2Jlcy5jCmluZGV4IDQwODRlOTI2ZTI4NDQ4Li5hZmE0OTFiMGJkM2Y5MCAxMDA2NDQKLS0tIGEva2VybmVsL2V2ZW50cy91cHJvYmVzLmMKJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2V2ZW50cy91cHJvYmVzLmMKQEAgLTU0LDcgJiM0Mzs1NCw3IEBAIHN0YXRpYyBzdHJ1Y3QgbXV0ZXggdXByb2Jlc19tbWFwX211dGV4W1VQUk9CRVNfSEFTSF9TWl07CiBERUZJTkVfU1RBVElDX1BFUkNQVV9SV1NFTShkdXBfbW1hcF9zZW0pOwogCiAvKiBDb3ZlcnMgcmV0dXJuX2luc3RhbmNlJiMzOTtzIHVwcm9iZSBsaWZldGltZS4gKi8KLURFRklORV9TVEFUSUNfU1JDVSh1cmV0cHJvYmVzX3NyY3UpOwomIzQzO0RFRklORV9TVEFUSUNfU1JDVV9GQVNUX1VQRE9XTih1cmV0cHJvYmVzX3NyY3UpOwogCiAvKiBIYXZlIGEgY29weSBvZiBvcmlnaW5hbCBpbnN0cnVjdGlvbiAqLwogI2RlZmluZSBVUFJPQkVfQ09QWV9JTlNOCTAKQEAgLTcwNywxMiAmIzQzOzcwNywxMyBAQCBzdGF0aWMgdm9pZCBwdXRfdXByb2JlKHN0cnVjdCB1cHJvYmUgKnVwcm9iZSkKIH0KIAogLyogSW5pdGlhbGl6ZSBocHJvYmUgYXMgU1JDVS1wcm90ZWN0ZWQgJiMzNDtsZWFzZWQmIzM0OyB1cHJvYmUgKi8KLXN0YXRpYyB2b2lkIGhwcm9iZV9pbml0X2xlYXNlZChzdHJ1Y3QgaHByb2JlICpocHJvYmUsIHN0cnVjdCB1cHJvYmUgKnVwcm9iZSwgaW50IHNyY3VfaWR4KQomIzQzO3N0YXRpYyB2b2lkIGhwcm9iZV9pbml0X2xlYXNlZChzdHJ1Y3QgaHByb2JlICpocHJvYmUsIHN0cnVjdCB1cHJvYmUgKnVwcm9iZSwKJiM0MzsJCQkgICAgICAgc3RydWN0IHNyY3VfY3RyIF9fcGVyY3B1ICpzcmN1X3NjcCkKIHsKIAlXQVJOX09OKCF1cHJvYmUpOwogCWhwcm9iZS0mZ3Q7c3RhdGUgPSBIUFJPQkVfTEVBU0VEOwogCWhwcm9iZS0mZ3Q7dXByb2JlID0gdXByb2JlOwotCWhwcm9iZS0mZ3Q7c3JjdV9pZHggPSBzcmN1X2lkeDsKJiM0MzsJaHByb2JlLSZndDtzcmN1X3NjcCA9IHNyY3Vfc2NwOwogfQogCiAvKiBJbml0aWFsaXplIGhwcm9iZSBhcyByZWZjb3VudGVkICgmIzM0O3N0YWJsZSYjMzQ7KSB1cHJvYmUgKHVwcm9iZSBjYW4gYmUgTlVMTCkuICovCkBAIC03MjAsNyAmIzQzOzcyMSw3IEBAIHN0YXRpYyB2b2lkIGhwcm9iZV9pbml0X3N0YWJsZShzdHJ1Y3QgaHByb2JlICpocHJvYmUsIHN0cnVjdCB1cHJvYmUgKnVwcm9iZSkKIHsKIAlocHJvYmUtJmd0O3N0YXRlID0gdXByb2JlID8gSFBST0JFX1NUQUJMRSA6IEhQUk9CRV9HT05FOwogCWhwcm9iZS0mZ3Q7dXByb2JlID0gdXByb2JlOwotCWhwcm9iZS0mZ3Q7c3JjdV9pZHggPSAtMTsKJiM0MzsJaHByb2JlLSZndDtzcmN1X3NjcCA9IE5VTEw7CiB9CiAKIC8qCkBAIC03NTcsNyAmIzQzOzc1OCw3IEBAIHN0YXRpYyB2b2lkIGhwcm9iZV9maW5hbGl6ZShzdHJ1Y3QgaHByb2JlICpocHJvYmUsIGVudW0gaHByb2JlX3N0YXRlIGhzdGF0ZSkKIHsKIAlzd2l0Y2ggKGhzdGF0ZSkgewogCWNhc2UgSFBST0JFX0xFQVNFRDoKLQkJX19zcmN1X3JlYWRfdW5sb2NrKCZhbXA7dXJldHByb2Jlc19zcmN1LCBocHJvYmUtJmd0O3NyY3VfaWR4KTsKJiM0MzsJCXNyY3VfdXBfcmVhZF9mYXN0KCZhbXA7dXJldHByb2Jlc19zcmN1LCBocHJvYmUtJmd0O3NyY3Vfc2NwKTsKIAkJYnJlYWs7CiAJY2FzZSBIUFJPQkVfU1RBQkxFOgogCQlwdXRfdXByb2JlKGhwcm9iZS0mZ3Q7dXByb2JlKTsKQEAgLTgyOSw3ICYjNDM7ODMwLDcgQEAgc3RhdGljIHN0cnVjdCB1cHJvYmUgKmhwcm9iZV9leHBpcmUoc3RydWN0IGhwcm9iZSAqaHByb2JlLCBib29sIGdldCkKIAkJICovCiAJCWlmICh0cnlfY21weGNoZygmYW1wO2hwcm9iZS0mZ3Q7c3RhdGUsICZhbXA7aHN0YXRlLCB1cHJvYmUgPyBIUFJPQkVfU1RBQkxFIDogSFBST0JFX0dPTkUpKSB7CiAJCQkvKiBXZSB3b24gdGhlIHJhY2UsIHdlIGFyZSB0aGUgb25lcyB0byB1bmxvY2sgU1JDVSAqLwotCQkJX19zcmN1X3JlYWRfdW5sb2NrKCZhbXA7dXJldHByb2Jlc19zcmN1LCBocHJvYmUtJmd0O3NyY3VfaWR4KTsKJiM0MzsJCQlzcmN1X3VwX3JlYWRfZmFzdCgmYW1wO3VyZXRwcm9iZXNfc3JjdSwgaHByb2JlLSZndDtzcmN1X3NjcCk7CiAJCQlyZXR1cm4gZ2V0ID8gZ2V0X3Vwcm9iZSh1cHJvYmUpIDogdXByb2JlOwogCQl9CiAKQEAgLTIwNDUsNyAmIzQzOzIwNDYsNyBAQCBzdGF0aWMgdm9pZCByaV90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqdGltZXIpCiAJc3RydWN0IHJldHVybl9pbnN0YW5jZSAqcmk7CiAKIAkvKiBTUkNVIHByb3RlY3RzIHVwcm9iZSBmcm9tIHJldXNlIGZvciB0aGUgY21weGNoZygpIGluc2lkZSBocHJvYmVfZXhwaXJlKCkuICovCi0JZ3VhcmQoc3JjdSkoJmFtcDt1cmV0cHJvYmVzX3NyY3UpOwomIzQzOwlndWFyZChzcmN1X2Zhc3RfdXBkb3duKSgmYW1wO3VyZXRwcm9iZXNfc3JjdSk7CiAJLyogUkNVIHByb3RlY3RzIHJldHVybl9pbnN0YW5jZSBmcm9tIGZyZWVpbmcuICovCiAJZ3VhcmQocmN1KSgpOwogCkBAIC0yMTQyLDcgJiM0MzsyMTQzLDcgQEAgc3RhdGljIGludCBkdXBfdXRhc2soc3RydWN0IHRhc2tfc3RydWN0ICp0LCBzdHJ1Y3QgdXByb2JlX3Rhc2sgKm9fdXRhc2spCiAJdC0mZ3Q7dXRhc2sgPSBuX3V0YXNrOwogCiAJLyogcHJvdGVjdCB1cHJvYmVzIGZyb20gZnJlZWluZywgd2UmIzM5O2xsIG5lZWQgdHJ5X2dldF91cHJvYmUoKSB0aGVtICovCi0JZ3VhcmQoc3JjdSkoJmFtcDt1cmV0cHJvYmVzX3NyY3UpOwomIzQzOwlndWFyZChzcmN1X2Zhc3RfdXBkb3duKSgmYW1wO3VyZXRwcm9iZXNfc3JjdSk7CiAKIAlwID0gJmFtcDtuX3V0YXNrLSZndDtyZXR1cm5faW5zdGFuY2VzOwogCWZvciAobyA9IG9fdXRhc2stJmd0O3JldHVybl9pbnN0YW5jZXM7IG87IG8gPSBvLSZndDtuZXh0KSB7CkBAIC0yMjU0LDggJiM0MzsyMjU1LDggQEAgc3RhdGljIHZvaWQgcHJlcGFyZV91cmV0cHJvYmUoc3RydWN0IHVwcm9iZSAqdXByb2JlLCBzdHJ1Y3QgcHRfcmVncyAqcmVncywKIHsKIAlzdHJ1Y3QgdXByb2JlX3Rhc2sgKnV0YXNrID0gY3VycmVudC0mZ3Q7dXRhc2s7CiAJdW5zaWduZWQgbG9uZyBvcmlnX3JldF92YWRkciwgdHJhbXBvbGluZV92YWRkcjsKJiM0MzsJc3RydWN0IHNyY3VfY3RyIF9fcGVyY3B1ICpzcmN1X3NjcDsKIAlib29sIGNoYWluZWQ7Ci0JaW50IHNyY3VfaWR4OwogCiAJaWYgKCFnZXRfeG9sX2FyZWEoKSkKIAkJZ290byBmcmVlOwpAQCAtMjI5Myw4ICYjNDM7MjI5NCwxMiBAQCBzdGF0aWMgdm9pZCBwcmVwYXJlX3VyZXRwcm9iZShzdHJ1Y3QgdXByb2JlICp1cHJvYmUsIHN0cnVjdCBwdF9yZWdzICpyZWdzLAogCQlvcmlnX3JldF92YWRkciA9IHV0YXNrLSZndDtyZXR1cm5faW5zdGFuY2VzLSZndDtvcmlnX3JldF92YWRkcjsKIAl9CiAKLQkvKiBfX3NyY3VfcmVhZF9sb2NrKCkgYmVjYXVzZSBTUkNVIGxvY2sgc3Vydml2ZXMgc3dpdGNoIHRvIHVzZXIgc3BhY2UgKi8KLQlzcmN1X2lkeCA9IF9fc3JjdV9yZWFkX2xvY2soJmFtcDt1cmV0cHJvYmVzX3NyY3UpOwomIzQzOwkvKgomIzQzOwkgKiBVc2Ugc3JjdV9kb3duX3JlYWRfZmFzdCgpIGJlY2F1c2UgdGhlIFNSQ1UgbG9jayBzdXJ2aXZlcyBhIHN3aXRjaCB0bwomIzQzOwkgKiB1c2VyIHNwYWNlIGFuZCBjYW4gYmUgdW5sb2NrZWQgZnJvbSBhIGRpZmZlcmVudCBjb250ZXh0IGJ5IHJpX3RpbWVyKCkKJiM0MzsJICogb3IgZHVwX3V0YXNrKCkuCiYjNDM7CSAqLwomIzQzOwlzcmN1X3NjcCA9IHNyY3VfZG93bl9yZWFkX2Zhc3QoJmFtcDt1cmV0cHJvYmVzX3NyY3UpOwogCiAJcmktJmd0O2Z1bmMgPSBpbnN0cnVjdGlvbl9wb2ludGVyKHJlZ3MpOwogCXJpLSZndDtzdGFjayA9IHVzZXJfc3RhY2tfcG9pbnRlcihyZWdzKTsKQEAgLTIzMDMsNyAmIzQzOzIzMDgsNyBAQCBzdGF0aWMgdm9pZCBwcmVwYXJlX3VyZXRwcm9iZShzdHJ1Y3QgdXByb2JlICp1cHJvYmUsIHN0cnVjdCBwdF9yZWdzICpyZWdzLAogCiAJdXRhc2stJmd0O2RlcHRoJiM0MzsmIzQzOzsKIAotCWhwcm9iZV9pbml0X2xlYXNlZCgmYW1wO3JpLSZndDtocHJvYmUsIHVwcm9iZSwgc3JjdV9pZHgpOwomIzQzOwlocHJvYmVfaW5pdF9sZWFzZWQoJmFtcDtyaS0mZ3Q7aHByb2JlLCB1cHJvYmUsIHNyY3Vfc2NwKTsKIAlyaS0mZ3Q7bmV4dCA9IHV0YXNrLSZndDtyZXR1cm5faW5zdGFuY2VzOwogCXJjdV9hc3NpZ25fcG9pbnRlcih1dGFzay0mZ3Q7cmV0dXJuX2luc3RhbmNlcywgcmkpOwogCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDAxOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwMDEKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAyNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgVGhpcyBLZXJuZWwgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIG1ha2luZyBzb21lIHByZXR0eSBzaWduaWZpY2FudCBjaGFuZ2VzIHRvIHVwcm9iZXMgYW5kIFNSQ1UuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIGFib3V0IG9wdGltaXppbmcgU1JDVSwgaW50cm9kdWNpbmcgdGhpcyBgc3JjdV9mYXN0X3VwZG93bmAgYW5kIGNoYW5naW5nIGB1cmV0cHJvYmVzX3NyY3VgIHRvIHVzZSBgREVGSU5FX1NUQVRJQ19TUkNVX0ZBU1RfVVBET1dOYC4gIEJhc2ljYWxseSwgaXQgbG9va3MgbGlrZSB0aGV5JiMzOTtyZSB0cnlpbmcgdG8gc3BlZWQgdXAgcmVhZCBvcGVyYXRpb25zIHdpdGggYHNyY3VfZG93bl9yZWFkX2Zhc3RgIHJlcGxhY2luZyBgX19zcmN1X3JlYWRfbG9ja2AgYW5kIGBzcmN1X3VwX3JlYWRfZmFzdGAgcmVwbGFjaW5nIGBfX3NyY3VfcmVhZF91bmxvY2tgLiBGdW5jdGlvbmFsbHksIHRoaXMgaXMgYSBkZWZpbml0ZSBjaGFuZ2UgaW4gaG93IHVwcm9iZXMgYW5kIFNSQ1UgaW50ZXJhY3Qgd2l0aGluIHRoZSBrZXJuZWwsIHNvIHRoaXMgbmVlZHMgdG8gYmUgZnV6emVkIGhlYXZpbHkuCgpJIG5lZWQgdG8gZm9jdXMgbXkgZnV6emluZyBlZmZvcnRzIG9uIHRoZSBzcGVjaWZpYyBmdW5jdGlvbnMgdGhhdCB0aGlzIHBhdGNoIGFjdHVhbGx5IG1vZGlmaWVzOiBgaHByb2JlX2luaXRfbGVhc2VkYCwgYGhwcm9iZV9pbml0X3N0YWJsZWAsIGBocHJvYmVfZmluYWxpemVgLCBgaHByb2JlX2V4cGlyZWAsIGByaV90aW1lcmAsIGBkdXBfdXRhc2tgLCBhbmQgYHByZXBhcmVfdXJldHByb2JlYC4gVGhlc2UgYXJlIHRoZSBrZXkgYXJlYXMgd2hlcmUgdGhlIG5ldyBTUkNVIG1lY2hhbmlzbXMgYXJlIGdvaW5nIHRvIGJlIGludGVyYWN0aW5nLgoKQWxyaWdodCwgSSBuZWVkIHRvIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IGBDT05GSUdfVVBST0JFU2AgaXMgZW5hYmxlZC4gU2luY2UgU1JDVSBpcyBjb3JlLCBJIGRvbiYjMzk7dCBuZWVkIHRvIGNoZWNrIGZvciBhbnkgc3BlY2lhbCBjb25maWd1cmF0aW9ucyBmb3IgU1JDVSBpdHNlbGYuIEkmIzM5O2xsIG5lZWQgdG8gdXNlIG15IHRvb2xzIHRvIHZlcmlmeSB0aGF0IGBDT05GSUdfVVBST0JFU2AgaXMgc2V0IGNvcnJlY3RseSBiZWZvcmUgSSBnZXQgc3RhcnRlZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwMToxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtDT05GSUdfVVBST0JFUyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL2FybS9wcm9iZXMvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG5hcmNoL2FybS9wcm9iZXMvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfVVBST0JFUylcdFx0JiM0Mzs9IGRlY29kZS5vIGRlY29kZS1hcm0ubyB1cHJvYmVzL1xuYXJjaC9hcm0vcHJvYmVzL01ha2VmaWxlLTMtb2JqLSQoQ09ORklHX0tQUk9CRVMpXHRcdCYjNDM7PSBkZWNvZGUubyBrcHJvYmVzL1xuLS1cbmFyY2gvYXJtL3Byb2Jlcy91cHJvYmVzL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5hcmNoL2FybS9wcm9iZXMvdXByb2Jlcy9NYWtlZmlsZToyOm9iai0kKENPTkZJR19VUFJPQkVTKVx0XHQmIzQzOz0gY29yZS5vIGFjdGlvbnMtYXJtLm9cbi0tXG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3Vwcm9iZXMuaD0zMT1pbnQgdXByb2JlX2Jya19oYW5kbGVyKHN0cnVjdCBwdF9yZWdzICpyZWdzLCB1bnNpZ25lZCBsb25nIGVzcik7XG5hcmNoL2FybTY0L2luY2x1ZGUvYXNtL3Vwcm9iZXMuaDozMjojaWZkZWYgQ09ORklHX1VQUk9CRVNcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vdXByb2Jlcy5oLTMzLWludCB1cHJvYmVfc2luZ2xlX3N0ZXBfaGFuZGxlcihzdHJ1Y3QgcHRfcmVncyAqcmVncywgdW5zaWduZWQgbG9uZyBlc3IpO1xuLS1cbmFyY2gvYXJtNjQva2VybmVsL2RlYnVnLW1vbml0b3JzLmM9MjU0PXZvaWQgZG9fZWwwX2JyazY0KHVuc2lnbmVkIGxvbmcgZXNyLCBzdHJ1Y3QgcHRfcmVncyAqcmVncylcbmFyY2gvYXJtNjQva2VybmVsL2RlYnVnLW1vbml0b3JzLmMtMjU1LXtcbmFyY2gvYXJtNjQva2VybmVsL2RlYnVnLW1vbml0b3JzLmM6MjU2Olx0aWYgKElTX0VOQUJMRUQoQ09ORklHX1VQUk9CRVMpIFx1MDAyNlx1MDAyNlxuYXJjaC9hcm02NC9rZXJuZWwvZGVidWctbW9uaXRvcnMuYy0yNTctXHRcdGVzcl9icmtfY29tbWVudChlc3IpID09IFVQUk9CRVNfQlJLX0lNTSBcdTAwMjZcdTAwMjZcbi0tXG5hcmNoL2FybTY0L2tlcm5lbC9wcm9iZXMvTWFrZWZpbGU9Mj1vYmotJChDT05GSUdfS1BST0JFUylcdFx0JiM0Mzs9IGtwcm9iZXMubyBkZWNvZGUtaW5zbi5vXHRcXFxuLS1cbmFyY2gvYXJtNjQva2VybmVsL3Byb2Jlcy9NYWtlZmlsZS00LVx0XHRcdFx0ICAgc2ltdWxhdGUtaW5zbi5vXG5hcmNoL2FybTY0L2tlcm5lbC9wcm9iZXMvTWFrZWZpbGU6NTpvYmotJChDT05GSUdfVVBST0JFUylcdFx0JiM0Mzs9IHVwcm9iZXMubyBkZWNvZGUtaW5zbi5vXHRcXFxuYXJjaC9hcm02NC9rZXJuZWwvcHJvYmVzL01ha2VmaWxlLTYtXHRcdFx0XHQgICBzaW11bGF0ZS1pbnNuLm9cbi0tXG5hcmNoL2Nza3kva2VybmVsL3Byb2Jlcy9NYWtlZmlsZT00PW9iai0kKENPTkZJR19LUFJPQkVTX09OX0ZUUkFDRSlcdCYjNDM7PSBmdHJhY2Uub1xuYXJjaC9jc2t5L2tlcm5lbC9wcm9iZXMvTWFrZWZpbGU6NTpvYmotJChDT05GSUdfVVBST0JFUylcdFx0JiM0Mzs9IHVwcm9iZXMubyBkZWNvZGUtaW5zbi5vIHNpbXVsYXRlLWluc24ub1xuYXJjaC9jc2t5L2tlcm5lbC9wcm9iZXMvTWFrZWZpbGUtNi1cbi0tXG5hcmNoL2Nza3kva2VybmVsL3RyYXBzLmM9MTY5PWFzbWxpbmthZ2Ugdm9pZCBkb190cmFwX2JrcHQoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4tLVxuYXJjaC9jc2t5L2tlcm5lbC90cmFwcy5jLTE3NC0jZW5kaWZcbmFyY2gvY3NreS9rZXJuZWwvdHJhcHMuYzoxNzU6I2lmZGVmIENPTkZJR19VUFJPQkVTXG5hcmNoL2Nza3kva2VybmVsL3RyYXBzLmMtMTc2LVx0aWYgKHVwcm9iZV9zaW5nbGVfc3RlcF9oYW5kbGVyKHJlZ3MpKVxuLS1cbmFyY2gvY3NreS9rZXJuZWwvdHJhcHMuYz0xODg9YXNtbGlua2FnZSB2b2lkIGRvX3RyYXBfaWxsaW5zbihzdHJ1Y3QgcHRfcmVncyAqcmVncylcbi0tXG5hcmNoL2Nza3kva2VybmVsL3RyYXBzLmMtMTk1LSNlbmRpZlxuYXJjaC9jc2t5L2tlcm5lbC90cmFwcy5jOjE5NjojaWZkZWYgQ09ORklHX1VQUk9CRVNcbmFyY2gvY3NreS9rZXJuZWwvdHJhcHMuYy0xOTctXHRpZiAodXByb2JlX2JyZWFrcG9pbnRfaGFuZGxlcihyZWdzKSlcbi0tXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS91cHJvYmVzLmg9MjM9c3RydWN0IGFyY2hfdXByb2JlX3Rhc2sge1xuLS1cbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL3Vwcm9iZXMuaC0yNi1cbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL3Vwcm9iZXMuaDoyNzojaWZkZWYgQ09ORklHX1VQUk9CRVNcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL3Vwcm9iZXMuaC0yOC1ib29sIHVwcm9iZV9icmVha3BvaW50X2hhbmRsZXIoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpO1xuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vdXByb2Jlcy5oPTI5PWJvb2wgdXByb2JlX3NpbmdsZXN0ZXBfaGFuZGxlcihzdHJ1Y3QgcHRfcmVncyAqcmVncyk7XG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS91cHJvYmVzLmg6MzA6I2Vsc2UgLyogIUNPTkZJR19VUFJPQkVTICovXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS91cHJvYmVzLmgtMzEtc3RhdGljIGlubGluZSBib29sIHVwcm9iZV9icmVha3BvaW50X2hhbmRsZXIoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpIHsgcmV0dXJuIGZhbHNlOyB9XG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS91cHJvYmVzLmg9MzI9c3RhdGljIGlubGluZSBib29sIHVwcm9iZV9zaW5nbGVzdGVwX2hhbmRsZXIoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpIHsgcmV0dXJuIGZhbHNlOyB9XG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS91cHJvYmVzLmg6MzM6I2VuZGlmIC8qIENPTkZJR19VUFJPQkVTICovXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS91cHJvYmVzLmgtMzQtXG4tLVxuYXJjaC9sb29uZ2FyY2gva2VybmVsL01ha2VmaWxlPTc3PW9iai0kKENPTkZJR19SRVRIT09LKVx0XHQmIzQzOz0gcmV0aG9vay5vIHJldGhvb2tfdHJhbXBvbGluZS5vXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvTWFrZWZpbGU6Nzg6b2JqLSQoQ09ORklHX1VQUk9CRVMpXHRcdCYjNDM7PSB1cHJvYmVzLm9cbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC9NYWtlZmlsZS03OS1cbi0tXG5hcmNoL21pcHMva2VybmVsL01ha2VmaWxlPTEwNT1vYmotJChDT05GSUdfSlVNUF9MQUJFTClcdCYjNDM7PSBqdW1wX2xhYmVsLm9cbmFyY2gvbWlwcy9rZXJuZWwvTWFrZWZpbGU6MTA2Om9iai0kKENPTkZJR19VUFJPQkVTKVx0XHQmIzQzOz0gdXByb2Jlcy5vXG5hcmNoL21pcHMva2VybmVsL01ha2VmaWxlLTEwNy1cbi0tXG5hcmNoL21pcHMva2VybmVsL2JyYW5jaC5jPTg0OT1pbnQgX19jb21wdXRlX3JldHVybl9lcGMoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4tLVxuYXJjaC9taXBzL2tlcm5lbC9icmFuY2guYy04NzUtXG5hcmNoL21pcHMva2VybmVsL2JyYW5jaC5jOjg3NjojaWYgKGRlZmluZWQgQ09ORklHX0tQUk9CRVMpIHx8IChkZWZpbmVkIENPTkZJR19VUFJPQkVTKVxuYXJjaC9taXBzL2tlcm5lbC9icmFuY2guYy04NzctXG4tLVxuYXJjaC9taXBzL2tlcm5lbC9icmFuY2guYz05MDY9RVhQT1JUX1NZTUJPTF9HUEwoX19pbnNuX2lzX2NvbXBhY3RfYnJhbmNoKTtcbmFyY2gvbWlwcy9rZXJuZWwvYnJhbmNoLmMtOTA3LVxuYXJjaC9taXBzL2tlcm5lbC9icmFuY2guYzo5MDg6I2VuZGlmICAvKiBDT05GSUdfS1BST0JFUyB8fCBDT05GSUdfVVBST0JFUyAqL1xuLS1cbmFyY2gvcG93ZXJwYy9rZXJuZWwvTWFrZWZpbGU9MTQwPW9iai0kKENPTkZJR19LUFJPQkVTX09OX0ZUUkFDRSlcdCYjNDM7PSBrcHJvYmVzLWZ0cmFjZS5vXG5hcmNoL3Bvd2VycGMva2VybmVsL01ha2VmaWxlOjE0MTpvYmotJChDT05GSUdfVVBST0JFUylcdFx0JiM0Mzs9IHVwcm9iZXMub1xuYXJjaC9wb3dlcnBjL2tlcm5lbC9NYWtlZmlsZS0xNDItb2JqLSQoQ09ORklHX1JFVEhPT0spICAgICAgICAgICAmIzQzOz0gcmV0aG9vay5vXG4tLVxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS91cHJvYmVzLmg9Mjc9c3RydWN0IGFyY2hfdXByb2JlIHtcbi0tXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3Vwcm9iZXMuaC0zNi1cbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vdXByb2Jlcy5oOjM3OiNpZmRlZiBDT05GSUdfVVBST0JFU1xuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS91cHJvYmVzLmgtMzgtYm9vbCB1cHJvYmVfYnJlYWtwb2ludF9oYW5kbGVyKHN0cnVjdCBwdF9yZWdzICpyZWdzKTtcbi0tXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3Vwcm9iZXMuaD00Nj1zdGF0aWMgaW5saW5lIGJvb2wgdXByb2JlX3NpbmdsZV9zdGVwX2hhbmRsZXIoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4tLVxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS91cHJvYmVzLmgtNDktfVxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS91cHJvYmVzLmg6NTA6I2VuZGlmIC8qIENPTkZJR19VUFJPQkVTICovXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3Vwcm9iZXMuaC01MS0jZW5kaWYgLyogX0FTTV9SSVNDVl9VUFJPQkVTX0ggKi9cbi0tXG5hcmNoL3Jpc2N2L2tlcm5lbC9wcm9iZXMvTWFrZWZpbGU9Mz1vYmotJChDT05GSUdfUkVUSE9PSylcdFx0JiM0Mzs9IHJldGhvb2subyByZXRob29rX3RyYW1wb2xpbmUub1xuYXJjaC9yaXNjdi9rZXJuZWwvcHJvYmVzL01ha2VmaWxlOjQ6b2JqLSQoQ09ORklHX1VQUk9CRVMpXHRcdCYjNDM7PSB1cHJvYmVzLm8gZGVjb2RlLWluc24ubyBzaW11bGF0ZS1pbnNuLm9cbmFyY2gvcmlzY3Yva2VybmVsL3Byb2Jlcy9NYWtlZmlsZS01LUNGTEFHU19SRU1PVkVfc2ltdWxhdGUtaW5zbi5vID0gJChDQ19GTEFHU19GVFJBQ0UpXG4tLVxuYXJjaC9zMzkwL2tlcm5lbC9NYWtlZmlsZT02OD1vYmotJChDT05GSUdfVk1DT1JFX0lORk8pXHQmIzQzOz0gdm1jb3JlX2luZm8ub1xuYXJjaC9zMzkwL2tlcm5lbC9NYWtlZmlsZTo2OTpvYmotJChDT05GSUdfVVBST0JFUylcdFx0JiM0Mzs9IHVwcm9iZXMub1xuYXJjaC9zMzkwL2tlcm5lbC9NYWtlZmlsZS03MC1vYmotJChDT05GSUdfSlVNUF9MQUJFTClcdCYjNDM7PSBqdW1wX2xhYmVsLm9cbi0tXG5hcmNoL3MzOTAva2VybmVsL3RyYXBzLmM9MTQwPXN0YXRpYyB2b2lkIGlsbGVnYWxfb3Aoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4tLVxuYXJjaC9zMzkwL2tlcm5lbC90cmFwcy5jLTE1NS1cdFx0XHRcdHNpZ25hbCA9IFNJR0lMTDtcbmFyY2gvczM5MC9rZXJuZWwvdHJhcHMuYzoxNTY6I2lmZGVmIENPTkZJR19VUFJPQkVTXG5hcmNoL3MzOTAva2VybmVsL3RyYXBzLmMtMTU3LVx0XHR9IGVsc2UgaWYgKG9wY29kZSA9PSBVUFJPQkVfU1dCUF9JTlNOKSB7XG4tLVxuYXJjaC9zMzkwL2xpYi9NYWtlZmlsZT0xMz1saWItJChDT05GSUdfS1BST0JFUykgJiM0Mzs9IHByb2Jlcy5vXG5hcmNoL3MzOTAvbGliL01ha2VmaWxlOjE0OmxpYi0kKENPTkZJR19VUFJPQkVTKSAmIzQzOz0gcHJvYmVzLm9cbmFyY2gvczM5MC9saWIvTWFrZWZpbGUtMTUtb2JqLSQoQ09ORklHX1MzOTBfS1BST0JFU19TQU5JVFlfVEVTVCkgJiM0Mzs9IHRlc3Rfa3Byb2Jlc19zMzkwLm9cbi0tXG5hcmNoL3NwYXJjL2luY2x1ZGUvYXNtL3R0YWJsZS5oLTE4OS1cbmFyY2gvc3BhcmMvaW5jbHVkZS9hc20vdHRhYmxlLmg6MTkwOiNpZmRlZiBDT05GSUdfVVBST0JFU1xuYXJjaC9zcGFyYy9pbmNsdWRlL2FzbS90dGFibGUuaC0xOTEtI2RlZmluZSBVUFJPQkVTX1RSQVAobHZsKSBUUkFQX0FSRyh1cHJvYmVfdHJhcCwgbHZsKVxuLS1cbmFyY2gvc3BhcmMva2VybmVsL01ha2VmaWxlPTExNz1vYmotJChDT05GSUdfU1BBUkM2NClcdCYjNDM7PSAkKHBjLS15KVxuYXJjaC9zcGFyYy9rZXJuZWwvTWFrZWZpbGUtMTE4LVxuYXJjaC9zcGFyYy9rZXJuZWwvTWFrZWZpbGU6MTE5Om9iai0kKENPTkZJR19VUFJPQkVTKVx0JiM0Mzs9IHVwcm9iZXMub1xuYXJjaC9zcGFyYy9rZXJuZWwvTWFrZWZpbGUtMTIwLW9iai0kKENPTkZJR19KVU1QX0xBQkVMKSAmIzQzOz0ganVtcF9sYWJlbC5vXG4tLVxuYXJjaC94ODYvaW5jbHVkZS9hc20vdXByb2Jlcy5oPTU3PXN0cnVjdCBhcmNoX3Vwcm9iZV90YXNrIHtcbi0tXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS91cHJvYmVzLmgtNjQtXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS91cHJvYmVzLmg6NjU6I2lmZGVmIENPTkZJR19VUFJPQkVTXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS91cHJvYmVzLmgtNjYtZXh0ZXJuIGJvb2wgaXNfdXByb2JlX2F0X2Z1bmNfZW50cnkoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpO1xuLS1cbmFyY2gveDg2L2luY2x1ZGUvYXNtL3Vwcm9iZXMuaD02OD1zdGF0aWMgYm9vbCBpc191cHJvYmVfYXRfZnVuY19lbnRyeShzdHJ1Y3QgcHRfcmVncyAqcmVncylcbi0tXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS91cHJvYmVzLmgtNzEtfVxuYXJjaC94ODYvaW5jbHVkZS9hc20vdXByb2Jlcy5oOjcyOiNlbmRpZiAvKiBDT05GSUdfVVBST0JFUyAqL1xuYXJjaC94ODYvaW5jbHVkZS9hc20vdXByb2Jlcy5oLTczLVxuLS1cbmFyY2gveDg2L2tlcm5lbC9NYWtlZmlsZT0xNTQ9b2JqLSQoQ09ORklHX09GKVx0XHRcdCYjNDM7PSBkZXZpY2V0cmVlLm9cbmFyY2gveDg2L2tlcm5lbC9NYWtlZmlsZToxNTU6b2JqLSQoQ09ORklHX1VQUk9CRVMpXHRcdFx0JiM0Mzs9IHVwcm9iZXMub1xuYXJjaC94ODYva2VybmVsL01ha2VmaWxlLTE1Ni1cbi0tXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmg9ODI2PXN0cnVjdCB0YXNrX3N0cnVjdCB7XG4tLVxuaW5jbHVkZS9saW51eC9zY2hlZC5oLTE1NjYtXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmg6MTU2NzojaWZkZWYgQ09ORklHX1VQUk9CRVNcbmluY2x1ZGUvbGludXgvc2NoZWQuaC0xNTY4LVx0c3RydWN0IHVwcm9iZV90YXNrXHRcdCp1dGFzaztcbi0tXG5pbmNsdWRlL2xpbnV4L3Vwcm9iZXMuaD00Nj1zdHJ1Y3QgdXByb2JlX2NvbnN1bWVyIHtcbi0tXG5pbmNsdWRlL2xpbnV4L3Vwcm9iZXMuaC02NS1cbmluY2x1ZGUvbGludXgvdXByb2Jlcy5oOjY2OiNpZmRlZiBDT05GSUdfVVBST0JFU1xuaW5jbHVkZS9saW51eC91cHJvYmVzLmgtNjctI2luY2x1ZGUgXHUwMDNjYXNtL3Vwcm9iZXMuaFx1MDAzZVxuLS1cbmluY2x1ZGUvbGludXgvdXByb2Jlcy5oPTI0Nj1leHRlcm4gdW5zaWduZWQgbG9uZyBhcmNoX3Vwcm9iZV9nZXRfeG9sX2FyZWEodm9pZCk7XG5pbmNsdWRlL2xpbnV4L3Vwcm9iZXMuaDoyNDc6I2Vsc2UgLyogIUNPTkZJR19VUFJPQkVTICovXG5pbmNsdWRlL2xpbnV4L3Vwcm9iZXMuaC0yNDgtc3RydWN0IHVwcm9iZXNfc3RhdGUge1xuLS1cbmluY2x1ZGUvbGludXgvdXByb2Jlcy5oPTMwNT1zdGF0aWMgaW5saW5lIHZvaWQgdXByb2JlX2NsZWFyX3N0YXRlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKVxuLS1cbmluY2x1ZGUvbGludXgvdXByb2Jlcy5oLTMwNy19XG5pbmNsdWRlL2xpbnV4L3Vwcm9iZXMuaDozMDg6I2VuZGlmIC8qICFDT05GSUdfVVBST0JFUyAqL1xuaW5jbHVkZS9saW51eC91cHJvYmVzLmgtMzA5LSNlbmRpZlx0LyogX0xJTlVYX1VQUk9CRVNfSCAqL1xuLS1cbmtlcm5lbC9ldmVudHMvTWFrZWZpbGU9NT1vYmotJChDT05GSUdfSFdfQlJFQUtQT0lOVF9LVU5JVF9URVNUKSAmIzQzOz0gaHdfYnJlYWtwb2ludF90ZXN0Lm9cbmtlcm5lbC9ldmVudHMvTWFrZWZpbGU6NjpvYmotJChDT05GSUdfVVBST0JFUykgJiM0Mzs9IHVwcm9iZXMub1xuLS1cbmtlcm5lbC9ldmVudHMvY2FsbGNoYWluLmM9MTgxPXN0YXRpYyB2b2lkIGZpeHVwX3VyZXRwcm9iZV90cmFtcG9saW5lX2VudHJpZXMoc3RydWN0IHBlcmZfY2FsbGNoYWluX2VudHJ5ICplbnRyeSxcbi0tXG5rZXJuZWwvZXZlbnRzL2NhbGxjaGFpbi5jLTE4My17XG5rZXJuZWwvZXZlbnRzL2NhbGxjaGFpbi5jOjE4NDojaWZkZWYgQ09ORklHX1VQUk9CRVNcbmtlcm5lbC9ldmVudHMvY2FsbGNoYWluLmMtMTg1LVx0c3RydWN0IHVwcm9iZV90YXNrICp1dGFzayA9IGN1cnJlbnQtXHUwMDNldXRhc2s7XG4tLVxua2VybmVsL2ZvcmsuYz0xMDY4PXN0YXRpYyB2b2lkIG1tX2luaXRfdXByb2Jlc19zdGF0ZShzdHJ1Y3QgbW1fc3RydWN0ICptbSlcbmtlcm5lbC9mb3JrLmMtMTA2OS17XG5rZXJuZWwvZm9yay5jOjEwNzA6I2lmZGVmIENPTkZJR19VUFJPQkVTXG5rZXJuZWwvZm9yay5jLTEwNzEtXHRtbS1cdTAwM2V1cHJvYmVzX3N0YXRlLnhvbF9hcmVhID0gTlVMTDtcbi0tXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM9MTA4ND1CUEZfQ0FMTF8xKGJwZl9nZXRfZnVuY19pcF9rcHJvYmUsIHN0cnVjdCBwdF9yZWdzICosIHJlZ3MpXG4tLVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTEwODgtXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM6MTA4OTojaWZkZWYgQ09ORklHX1VQUk9CRVNcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xMDkwLVx0cnVuX2N0eCA9IGNvbnRhaW5lcl9vZihjdXJyZW50LVx1MDAzZWJwZl9jdHgsIHN0cnVjdCBicGZfdHJhY2VfcnVuX2N0eCwgcnVuX2N0eCk7XG4tLVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jPTI5NDQ9c3RhdGljIHU2NCBicGZfa3Byb2JlX211bHRpX2VudHJ5X2lwKHN0cnVjdCBicGZfcnVuX2N0eCAqY3R4KVxuLS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0yOTQ5LVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjI5NTA6I2lmZGVmIENPTkZJR19VUFJPQkVTXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMjk1MS1zdHJ1Y3QgYnBmX3Vwcm9iZV9tdWx0aV9saW5rO1xuLS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYz0zMjUxPWludCBicGZfdXByb2JlX211bHRpX2xpbmtfYXR0YWNoKGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXG4tLVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTM0MDEtfVxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjM0MDI6I2Vsc2UgLyogIUNPTkZJR19VUFJPQkVTICovXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMzQwMy1pbnQgYnBmX3Vwcm9iZV9tdWx0aV9saW5rX2F0dGFjaChjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0ciwgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxuLS1cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYz0zNDExPXN0YXRpYyB1NjQgYnBmX3Vwcm9iZV9tdWx0aV9lbnRyeV9pcChzdHJ1Y3QgYnBmX3J1bl9jdHggKmN0eClcbi0tXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMzQxNC19XG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM6MzQxNTojZW5kaWYgLyogQ09ORklHX1VQUk9CRVMgKi9cbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0zNDE2LVxuLS1cbnRvb2xzL3NjaGVkX2V4dC9LY29uZmlnPTUzPUNPTkZJR19LUFJPQkVfRVZFTlRTPXlcbnRvb2xzL3NjaGVkX2V4dC9LY29uZmlnOjU0OkNPTkZJR19VUFJPQkVTPXlcbnRvb2xzL3NjaGVkX2V4dC9LY29uZmlnLTU1LUNPTkZJR19VUFJPQkVfRVZFTlRTPXlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLmFhcmNoNjQ9MTQ4PUNPTkZJR19VTklYPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuYWFyY2g2NDoxNDk6Q09ORklHX1VQUk9CRVM9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5hYXJjaDY0LTE1MC1DT05GSUdfVVNFUl9OUz15XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5wcGM2NGVsPTg1PUNPTkZJR19VTklYPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcucHBjNjRlbDo4NjpDT05GSUdfVVBST0JFUz15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnBwYzY0ZWwtODctQ09ORklHX1VTRVJfTlM9eVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcucmlzY3Y2ND03Nz1DT05GSUdfVU5JWD15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnJpc2N2NjQ6Nzg6Q09ORklHX1VQUk9CRVM9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5yaXNjdjY0LTc5LUNPTkZJR19VU0VSX05TPXlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnMzOTB4PTExOT1DT05GSUdfVU5JWD15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnMzOTB4OjEyMDpDT05GSUdfVVBST0JFUz15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnMzOTB4LTEyMS1DT05GSUdfVVNFUl9OUz15XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZnRyYWNlL2NvbmZpZz0yNz1DT05GSUdfVFJBQ0VSX1NOQVBTSE9UPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2Z0cmFjZS9jb25maWc6Mjg6Q09ORklHX1VQUk9CRVM9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZnRyYWNlL2NvbmZpZy0yOS1DT05GSUdfVVBST0JFX0VWRU5UUz15XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vY29uZmlnPTEyPUNPTkZJR19QUk9GSUxJTkc9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbW0vY29uZmlnOjEzOkNPTkZJR19VUFJPQkVTPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2NvbmZpZy0xNC1DT05GSUdfTUVNT1JZX0ZBSUxVUkU9eVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Zzb2NrL2NvbmZpZz0xND1DT05GSUdfQVJDSF9TVVBQT1JUU19VUFJPQkVTPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Zzb2NrL2NvbmZpZzoxNTpDT05GSUdfVVBST0JFUz15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy92c29jay9jb25maWctMTYtQ09ORklHX1VQUk9CRV9FVkVOVFM9eVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDAxOjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkxNTAKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgVXByb2JlcyBFeGFtaW5hdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpdmluZyBpbnRvIHRoaXMgdXByb2JlcyBjb2RlLiBNeSBmb2N1cyBuZWVkcyB0byBiZSBvbiBmdW5jdGlvbnMgcmVsYXRlZCB0byBgQ09ORklHX1VQUk9CRVNgLiBMZXQgbWUgc2VlLi4uIEkmIzM5O3ZlIGdvdCBhIGxpc3QgaGVyZTogYGhwcm9iZV9pbml0X2xlYXNlZGAsIGBocHJvYmVfaW5pdF9zdGFibGVgLCBgaHByb2JlX2ZpbmFsaXplYCwgYGhwcm9iZV9leHBpcmVgLCBgcmlfdGltZXJgLCBgZHVwX3V0YXNrYCwgYW5kIGBwcmVwYXJlX3VyZXRwcm9iZWAuIEkgc2hvdWxkIHByb2JhYmx5IGRvdWJsZS1jaGVjayB0aGF0IGBDT05GSUdfVVBST0JFU2AgaXMgdGhlIG9ubHkgcmVsZXZhbnQgY29uZmlnLiBZZXMsIGl0JiMzOTtzIGVuYWJsZWQgYnkgZGVmYXVsdCBvbiBhIGxvdCBvZiBhcmNoaXRlY3R1cmVzLCBidXQgY29uZmlybWF0aW9uIGlzIGFsd2F5cyBhIGdvb2QgcHJhY3RpY2UuCgpOb3csIGxldCYjMzk7cyBsb29rIGNsb3NlciBhdCB0aGVzZSBmdW5jdGlvbnMuIEhtbSwgaXQgc2VlbXMgbGlrZSBgaHByb2JlX2luaXRfbGVhc2VkYCwgYGhwcm9iZV9pbml0X3N0YWJsZWAsIGBocHJvYmVfZmluYWxpemVgLCBgaHByb2JlX2V4cGlyZWAsIGByaV90aW1lcmAsIGBkdXBfdXRhc2tgLCBhbmQgYHByZXBhcmVfdXJldHByb2JlYCBhcmUgYWxsIG1hcmtlZCBhcyBzdGF0aWMuIE9rYXksIHNvIHdlJiMzOTtyZSBwcmltYXJpbHkgZGVhbGluZyB3aXRoIGludGVybmFsIGltcGxlbWVudGF0aW9ucyBoZXJlLCBub3RoaW5nIGRpcmVjdGx5IGV4cG9ydGVkLiBCdXQgd2FpdCwgYGR1cF91dGFza2AgaXMgc3RhdGljLi4uIGJ1dCBJICpzZWVtKiB0byByZWNhbGwgaXQgYmVpbmcgY2FsbGVkIGZyb20gYHVwcm9iZV9kdXBfbW1hcGAuIFRoYXQmIzM5O3MgYSBwb2ludCBvZiBpbnRlcmVzdC4gSSYjMzk7ZCBiZXR0ZXIgY29uZmlybSB0aGF0IGNhbGwgY2hhaW4uIEkgZG9uJiMzOTt0IHdhbnQgdG8gbWlzcyBhbnl0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwMToxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkdXBfdXRhc2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYz03NTc9c3RhdGljIHZvaWQgaHByb2JlX2ZpbmFsaXplKHN0cnVjdCBocHJvYmUgKmhwcm9iZSwgZW51bSBocHJvYmVfc3RhdGUgaHN0YXRlKVxuLS1cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTc4OC0gKiBhdHRlbXB0IHRyeV9nZXRfdXByb2JlKCksIGlmIGl0IG5lZWRzIHRvIHByZXNlcnZlIHVwcm9iZSBiZXlvbmQgY3VycmVudFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM6Nzg5OiAqIFNSQ1UgbG9jayByZWdpb24uIFNlZSBkdXBfdXRhc2soKS5cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTc5MC0gKi9cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jPTc5MT1zdGF0aWMgc3RydWN0IHVwcm9iZSAqaHByb2JlX2V4cGlyZShzdHJ1Y3QgaHByb2JlICpocHJvYmUsIGJvb2wgZ2V0KVxuLS1cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTg0OC1cdFx0ICogcmV0dXJuIGl0IHJlZ2FyZGxlc3MuIEFsc28sIGlmIGBnZXRgIHdhcyB0cnVlLCB3ZSBhbHNvIGhhdmVcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jOjg0OTpcdFx0ICogYW4gZXh0cmEgcmVmIGZvciB0aGUgY2FsbGVyIHRvIG93bi4gVGhpcyBpcyB1c2VkIGluIGR1cF91dGFzaygpLlxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtODUwLVx0XHQgKi9cbi0tXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYz0yMTEzPXN0YXRpYyBzdHJ1Y3QgcmV0dXJuX2luc3RhbmNlICpkdXBfcmV0dXJuX2luc3RhbmNlKHN0cnVjdCByZXR1cm5faW5zdGFuY2UgKm9sZClcbi0tXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yMTMzLVxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM6MjEzNDpzdGF0aWMgaW50IGR1cF91dGFzayhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnQsIHN0cnVjdCB1cHJvYmVfdGFzayAqb191dGFzaylcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTIxMzUte1xuLS1cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jPTIxODg9dm9pZCB1cHJvYmVfY29weV9wcm9jZXNzKHN0cnVjdCB0YXNrX3N0cnVjdCAqdCwgdTY0IGZsYWdzKVxuLS1cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTIyMDEtXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzoyMjAyOlx0aWYgKGR1cF91dGFzayh0LCB1dGFzaykpXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yMjAzLVx0XHRyZXR1cm4gdXByb2JlX3dhcm4odCwgXCYjMzQ7ZHVwIHJldCBpbnN0YW5jZXNcJiMzNDspO1xuLS1cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jPTIyNTM9c3RhdGljIHZvaWQgcHJlcGFyZV91cmV0cHJvYmUoc3RydWN0IHVwcm9iZSAqdXByb2JlLCBzdHJ1Y3QgcHRfcmVncyAqcmVncyxcbi0tXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yMjk5LVx0ICogdXNlciBzcGFjZSBhbmQgY2FuIGJlIHVubG9ja2VkIGZyb20gYSBkaWZmZXJlbnQgY29udGV4dCBieSByaV90aW1lcigpXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzoyMzAwOlx0ICogb3IgZHVwX3V0YXNrKCkuXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yMzAxLVx0ICovXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDE6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAzMDEKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqRGVjb25zdHJ1Y3RpbmcgdGhlIFVwcm9iZSBGbG93KioKCk9rYXksIHNvIEkmIzM5O20gdHJhY2luZyB0aHJvdWdoIHRoaXMgdXByb2JlIGltcGxlbWVudGF0aW9uLCBhbmQgdGhlIGZsb3cgaXMgYmVjb21pbmcgY2xlYXJlci4gSSBzZWUgdGhhdCBgdXByb2JlX2NvcHlfcHJvY2Vzc2AgdWx0aW1hdGVseSBjYWxscyBgZHVwX3V0YXNrYC4gUmlnaHQsIHRoYXQmIzM5O3MgZXhwZWN0ZWQgYmVoYXZpb3IsIGNsb25pbmcgdGhlIHVzZXItc3BhY2UgdGFzayBzdHJ1Y3R1cmUuIE5vdywgd2hlcmUgZG9lcyBgcHJlcGFyZV91cmV0cHJvYmVgIGNvbWUgaW50byB0aGUgcGljdHVyZT8gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBjYWxsIGdyYXBoIHRoZXJlLiBJICpiZWxpZXZlKiBpdCYjMzk7cyBpbnZva2VkIGJ5IGB1cHJvYmVfZGlzcGF0Y2hlcmAgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGJ1dCBpdCYjMzk7cyBhbHdheXMgYmVzdCB0byBiZSBwcmVjaXNlLCBlc3BlY2lhbGx5IHdoZW4gZGVhbGluZyB3aXRoIHN1Y2ggbG93LWxldmVsIHN0dWZmLiBUaW1lIHRvIGRvdWJsZS1jaGVjayB0aGUgY29kZSBwYXRoIGFuZCBzb2xpZGlmeSB0aGF0IGNvbm5lY3Rpb24gaW4gbXkgbWluZC4gTm8gcm9vbSBmb3IgZ3Vlc3N3b3JrIGluIHRoZXNlIGNyaXRpY2FsIGFyZWFzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDAxOjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ByZXBhcmVfdXJldHByb2JlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2V2ZW50cy91cHJvYmVzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2V2ZW50cy91cHJvYmVzLmM9MjIzNz1zdGF0aWMgdm9pZCBjbGVhbnVwX3JldHVybl9pbnN0YW5jZXMoc3RydWN0IHVwcm9iZV90YXNrICp1dGFzaywgYm9vbCBjaGFpbmVkLFxuLS1cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTIyNTItXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzoyMjUzOnN0YXRpYyB2b2lkIHByZXBhcmVfdXJldHByb2JlKHN0cnVjdCB1cHJvYmUgKnVwcm9iZSwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yMjU0LVx0XHRcdCAgICAgIHN0cnVjdCByZXR1cm5faW5zdGFuY2UgKnJpKVxuLS1cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jPTI1NTQ9c3RhdGljIHZvaWQgaGFuZGxlcl9jaGFpbihzdHJ1Y3QgdXByb2JlICp1cHJvYmUsIHN0cnVjdCBwdF9yZWdzICpyZWdzKVxuLS1cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTI1ODgtXHRpZiAoIVpFUk9fT1JfTlVMTF9QVFIocmkpKVxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM6MjU4OTpcdFx0cHJlcGFyZV91cmV0cHJvYmUodXByb2JlLCByZWdzLCByaSk7XG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yNTkwLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDAxOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNzg3CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkluaXRpYWwgQ29kZSBBbmFseXNpcyoqCgpPa2F5LCBzbyBgaGFuZGxlcl9jaGFpbmAgaXMgdGhlIGNydWNpYWwgZnVuY3Rpb24sIGFuZCBpdCYjMzk7cyBjYWxsZWQgYnkgYGhhbmRsZV9zd2JwYC4gUmlnaHQgYXdheSwgdGhhdCB0ZWxscyBtZSBmb2N1c2luZyBvbiBgcHJlcGFyZV91cmV0cHJvYmVgIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhpcyBhbGwgd29ya3MuIExldCYjMzk7cyBzZWUuLi4gbG9va2luZyBhdCB0aGUgY2FsbCBzdGFjaywgSSBhbHNvIG5lZWQgdG8gY29uc2lkZXIgYGhwcm9iZV9leHBpcmVgLCBgaHByb2JlX2ZpbmFsaXplYCwgYGhwcm9iZV9pbml0X2xlYXNlZGAsIGBocHJvYmVfaW5pdF9zdGFibGVgLCBgcmlfdGltZXJgLCBhbmQgYGR1cF91dGFza2AuCgpIb2xkIG9uLi4uIGBocHJvYmVfaW5pdF9sZWFzZWRgIGFuZCBgaHByb2JlX2luaXRfc3RhYmxlYCBhcmUgc3VzcGljaW91c2x5IHNtYWxsLiBUaGV5IHByb2JhYmx5IGp1c3QgZG8gc29tZSBxdWljayBzZXR1cC4gT2theSwgbGV0JiMzOTtzIHNraXAgdGhlbSBmb3Igbm93LiBHaXZlbiBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBwcm9ibGVtIHNwYWNlLCBteSBpbml0aWFsIGZvY3VzIHNob3VsZCBiZSBvbiBgcHJlcGFyZV91cmV0cHJvYmVgLCBgaHByb2JlX2V4cGlyZWAsIGBocHJvYmVfZmluYWxpemVgLCBgcmlfdGltZXJgLCBhbmQgYGR1cF91dGFza2AuIFRoZXNlIHNlZW0gdG8gYmUgdGhlIG1vc3QgY29tcGxleCwgYW5kIGxpa2VseSB3aGVyZSB0aGUgY29yZSBsb2dpYyByZXNpZGVzLgoKTm93LCBsZXQmIzM5O3MgdGFrZSBhIGxvb2sgYXQgYHJpX3RpbWVyYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDE6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmlfdGltZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYz0xOTcwPXN0YXRpYyB2b2lkIGZyZWVfcmV0X2luc3RhbmNlKHN0cnVjdCB1cHJvYmVfdGFzayAqdXRhc2ssXG4tLVxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtMTk4My1cdCAqIEF0IHRoaXMgcG9pbnQgcmV0dXJuX2luc3RhbmNlIGlzIHVubGlua2VkIGZyb20gdXRhc2smIzM5O3Ncbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jOjE5ODQ6XHQgKiByZXR1cm5faW5zdGFuY2VzIGxpc3QgYW5kIHRoaXMgaGFzIGJlY29tZSB2aXNpYmxlIHRvIHJpX3RpbWVyKCkuXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzoxOTg1Olx0ICogSWYgc2VxY291bnQgbm93IGluZGljYXRlcyB0aGF0IHJpX3RpbWVyJiMzOTtzIHJldHVybiBpbnN0YW5jZVxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtMTk4Ni1cdCAqIHByb2Nlc3NpbmcgbG9vcCBpc24mIzM5O3QgYWN0aXZlLCB3ZSBjYW4gcmV0dXJuIHJpIGludG8gdGhlIHBvb2wgb2Zcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jOjE5ODc6XHQgKiB0by1iZS1yZXVzZWQgcmV0dXJuIGluc3RhbmNlcyBmb3IgZnV0dXJlIHVyZXRwcm9iZXMuIElmIHJpX3RpbWVyKClcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTE5ODgtXHQgKiBoYXBwZW5zIHRvIGJlIHJ1bm5pbmcgcmlnaHQgbm93LCB0aG91Z2gsIHdlIGZhbGxiYWNrIHRvIHNhZmV0eSBhbmRcbi0tXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0xOTk3LVx0fSBlbHNlIHtcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jOjE5OTg6XHRcdC8qIHdlIG1pZ2h0IGJlIHJhY2luZyB3aXRoIHJpX3RpbWVyKCksIHNvIHBsYXkgaXQgc2FmZSAqL1xua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtMTk5OS1cdFx0cmlfZnJlZShyaSk7XG4tLVxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM9MjAwNz12b2lkIHVwcm9iZV9mcmVlX3V0YXNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqdClcbi0tXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yMDE3LVxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM6MjAxODpcdHRpbWVyX2RlbGV0ZV9zeW5jKFx1MDAyNnV0YXNrLVx1MDAzZXJpX3RpbWVyKTtcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTIwMTktXG4tLVxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtMjA0Mi1cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jOjIwNDM6c3RhdGljIHZvaWQgcmlfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKnRpbWVyKVxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtMjA0NC17XG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzoyMDQ1Olx0c3RydWN0IHVwcm9iZV90YXNrICp1dGFzayA9IGNvbnRhaW5lcl9vZih0aW1lciwgc3RydWN0IHVwcm9iZV90YXNrLCByaV90aW1lcik7XG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yMDQ2LVx0c3RydWN0IHJldHVybl9pbnN0YW5jZSAqcmk7XG4tLVxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM9MjA2OT1zdGF0aWMgc3RydWN0IHVwcm9iZV90YXNrICphbGxvY191dGFzayh2b2lkKVxuLS1cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTIwNzYtXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzoyMDc3Olx0dGltZXJfc2V0dXAoXHUwMDI2dXRhc2stXHUwMDNlcmlfdGltZXIsIHJpX3RpbWVyLCAwKTtcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTIwNzgtXHRzZXFjb3VudF9pbml0KFx1MDAyNnV0YXNrLVx1MDAzZXJpX3NlcWNvdW50KTtcbi0tXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYz0yMjUzPXN0YXRpYyB2b2lkIHByZXBhcmVfdXJldHByb2JlKHN0cnVjdCB1cHJvYmUgKnVwcm9iZSwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsXG4tLVxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtMjI5OC1cdCAqIFVzZSBzcmN1X2Rvd25fcmVhZF9mYXN0KCkgYmVjYXVzZSB0aGUgU1JDVSBsb2NrIHN1cnZpdmVzIGEgc3dpdGNoIHRvXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzoyMjk5Olx0ICogdXNlciBzcGFjZSBhbmQgY2FuIGJlIHVubG9ja2VkIGZyb20gYSBkaWZmZXJlbnQgY29udGV4dCBieSByaV90aW1lcigpXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yMzAwLVx0ICogb3IgZHVwX3V0YXNrKCkuXG4tLVxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtMjMxNC1cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jOjIzMTU6XHRtb2RfdGltZXIoXHUwMDI2dXRhc2stXHUwMDNlcmlfdGltZXIsIGppZmZpZXMgJiM0MzsgUklfVElNRVJfUEVSSU9EKTtcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTIzMTYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDAxOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMDYyCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBVcHJvYmUgYW5kIFNSQ1UgQ29uZmlndXJhdGlvbnMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgYHJpX3RpbWVyYCBpcyBhIHRpbWVyIGNhbGxiYWNrLCBgZHVwX3V0YXNrYCBpcyB0cmlnZ2VyZWQgZHVyaW5nIGEgYGZvcmtgIG9wZXJhdGlvbiwgYHByZXBhcmVfdXJldHByb2JlYCBoYXBwZW5zIHdoZW4gYSB1cmV0cHJvYmUgaXMgaGl0LCBgaHByb2JlX2V4cGlyZWAgaGFuZGxlcyBleHBpcmluZyBhIGxlYXNlZCB1cHJvYmUsIGFuZCBgaHByb2JlX2ZpbmFsaXplYCBpcyB1c2VkIHRvIGZpbmFsaXplIGEgbGVhc2VkIHVwcm9iZS4gVGhhdCYjMzk7cyB0aGUgY29yZSBmdW5jdGlvbmFsaXR5LCBidXQgbGV0JiMzOTtzIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLgoKTm93LCBJIG5lZWQgdG8gY2hlY2sgZm9yIG90aGVyIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMuIE15IGluaXRpYWwgcmV2aWV3IGluZGljYXRlcyB0aGF0IHRoZSBwYXRjaCB0b3VjaGVzIGBpbmNsdWRlL2xpbnV4L3NyY3UuaGAgYW5kIGBrZXJuZWwvZXZlbnRzL3Vwcm9iZXMuY2AsIHdoaWNoIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSBjYW4gc2VlIHRoYXQgYENPTkZJR19VUFJPQkVTYCBpcyB0aGUgbWFpbiBjb25maWd1cmF0aW9uIG9wdGlvbiB0byBjb25zaWRlciBoZXJlLiBCdXQgaGFuZyBvbi4uLiBgQ09ORklHX1NSQ1VgLi4uIHRoYXQmIzM5O3MgYWx3YXlzIGVuYWJsZWQsIGlzbiYjMzk7dCBpdD8gSSBuZWVkIHRvIGtlZXAgdGhhdCBpbiBtaW5kIGFzIGEgZGVwZW5kZW5jeS4KCkkgc2hvdWxkIGRvdWJsZS1jaGVjayBgQ09ORklHX1VQUk9CRVNgIHRvIGVuc3VyZSBhIGZ1bGwgdW5kZXJzdGFuZGluZywgb2YgY291cnNlLiBBcmUgdGhlcmUgYW55IG90aGVyIGNvbmZpZyBvcHRpb25zPyBMZXQmIzM5O3Mgbm90IG92ZXJsb29rIGFueXRoaW5nLiBBaCwgdGhlcmUmIzM5O3MgYENPTkZJR19VUFJPQkVfRVZFTlRTYCEgSSYjMzk7bGwgbmVlZCB0byBjaGVjayBob3cgdGhhdCBpbnRlcmFjdHMuCgpGaW5hbGx5LCBJJiMzOTtsbCB0aG9yb3VnaGx5IGV4YW1pbmUgYGtlcm5lbC9ldmVudHMvdXByb2Jlcy5jYC4gSXQmIzM5O3MgbGlrZWx5IHRoYXQgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucyBhcmUgZGVmaW5lZCBvciB1c2VkIHRoZXJlLCBhbmQgaXQmIzM5O3MgZXNzZW50aWFsIHRvIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgb2YgdGhlIHdob2xlIHRoaW5nLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZSBhIGNvbXBsZXRlIHBpY3R1cmUgb2YgdGhlIGRlcGVuZGVuY2llcyBhbmQgaG93IHRoZXNlIGZlYXR1cmVzIGFyZSBjb25kaXRpb25hbGx5IGVuYWJsZWQgYW5kIGRpc2FibGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwMToxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0NPTkZJR18mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDAxOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyNjQ1CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogNDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyBVcHJvYmUgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIHNlZSwgSSYjMzk7bSBkaXZpbmcgaW50byB0aGUgYGtlcm5lbC9ldmVudHMvdXByb2Jlcy5jYCBmaWxlLiBIbW0sIGxvb2tzIGxpa2UgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgY29uZGl0aW9uYWwgY29uZmlndXJhdGlvbnMgZGVmaW5lZCB3aXRoaW4gdGhpcyBwYXJ0aWN1bGFyIGZpbGUuIFRoYXQgc3VnZ2VzdHMgYSBkaXJlY3QgY29ycmVsYXRpb246IGlmIGBDT05GSUdfVVBST0JFU2AgaXMgZW5hYmxlZCwgdGhlIGNvZGUgd2l0aGluIHRoaXMgZmlsZSBpcyBpbmNsdWRlZC4gR29vZCwgdGhhdCBzaW1wbGlmaWVzIHRoaW5ncyBhIGJpdC4gTm8gY29tcGxleCBuZXN0aW5nIG9yIGRlcGVuZGVuY2llcyAqd2l0aGluKiB0aGlzIHNwZWNpZmljIG1vZHVsZS4KCk5vdywgbGV0JiMzOTtzIHNoaWZ0IGdlYXJzIHNsaWdodGx5LiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIGBpbmNsdWRlL2xpbnV4L3NyY3UuaGAgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgcmVsYXRlZCBjb25maWd1cmF0aW9ucyBvciBkZXBlbmRlbmNpZXMgZGVjbGFyZWQgd2l0aGluIHRoZSBzb3VyY2UgcmVhZC1jb3B5LXVwZGF0ZSBoZWFkZXIuIEl0JiMzOTtzIGEgY29tbW9uIGFyZWEgZm9yIHNoYXJlZCByZXNvdXJjZXMgYW5kIHBvdGVudGlhbCBzeW5jaHJvbml6YXRpb24gcG9pbnRzLCB3aGljaCBtaWdodCBiZSBpbmZsdWVuY2VkIGJ5IGhvdyB1cHJvYmVzIGFyZSB1c2VkLCBhbmQgdGhlcmVmb3JlIGluZGlyZWN0bHkgaW1wYWN0ZWQgYnkgY29uZmlndXJhdGlvbnMuIEkmIzM5O20gbG9va2luZyBmb3IgYW55dGhpbmcgdGhhdCBtaWdodCByZWxhdGUgdG8gcmVhZC1jb3B5LXVwZGF0ZSBtZWNoYW5pc21zIG9yIHN5bmNocm9uaXphdGlvbiByZWxhdGVkIHRvIHVwcm9iZXMuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGZ1bGwgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDE6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Q09ORklHXyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvc3JjdS5oJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbGludXgvc3JjdS5oPTI0PWNvbnRleHRfbG9ja19zdHJ1Y3Qoc3JjdV9zdHJ1Y3QsIF9fcmVlbnRyYW50X2N0eF9sb2NrKTtcbmluY2x1ZGUvbGludXgvc3JjdS5oLTI1LVxuaW5jbHVkZS9saW51eC9zcmN1Lmg6MjY6I2lmZGVmIENPTkZJR19ERUJVR19MT0NLX0FMTE9DXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC0yNy1cbmluY2x1ZGUvbGludXgvc3JjdS5oPTI4PWludCBfX2luaXRfc3JjdV9zdHJ1Y3Qoc3RydWN0IHNyY3Vfc3RydWN0ICpzc3AsIGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBsb2NrX2NsYXNzX2tleSAqa2V5KTtcbmluY2x1ZGUvbGludXgvc3JjdS5oOjI5OiNpZm5kZWYgQ09ORklHX1RJTllfU1JDVVxuaW5jbHVkZS9saW51eC9zcmN1LmgtMzAtaW50IF9faW5pdF9zcmN1X3N0cnVjdF9mYXN0KHN0cnVjdCBzcmN1X3N0cnVjdCAqc3NwLCBjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3QgbG9ja19jbGFzc19rZXkgKmtleSk7XG5pbmNsdWRlL2xpbnV4L3NyY3UuaD0zMT1pbnQgX19pbml0X3NyY3Vfc3RydWN0X2Zhc3RfdXBkb3duKHN0cnVjdCBzcmN1X3N0cnVjdCAqc3NwLCBjb25zdCBjaGFyICpuYW1lLFxuaW5jbHVkZS9saW51eC9zcmN1LmgtMzItXHRcdFx0XHQgICBzdHJ1Y3QgbG9ja19jbGFzc19rZXkgKmtleSk7XG5pbmNsdWRlL2xpbnV4L3NyY3UuaDozMzojZW5kaWYgLy8gI2lmbmRlZiBDT05GSUdfVElOWV9TUkNVXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC0zNC1cbi0tXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC01Ni0jZGVmaW5lIF9fU1JDVV9ERVBfTUFQX0lOSVQoc3JjdV9uYW1lKVx0LmRlcF9tYXAgPSB7IC5uYW1lID0gI3NyY3VfbmFtZSB9LFxuaW5jbHVkZS9saW51eC9zcmN1Lmg6NTc6I2Vsc2UgLyogI2lmZGVmIENPTkZJR19ERUJVR19MT0NLX0FMTE9DICovXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC01OC1cbmluY2x1ZGUvbGludXgvc3JjdS5oPTU5PWludCBpbml0X3NyY3Vfc3RydWN0KHN0cnVjdCBzcmN1X3N0cnVjdCAqc3NwKTtcbmluY2x1ZGUvbGludXgvc3JjdS5oOjYwOiNpZm5kZWYgQ09ORklHX1RJTllfU1JDVVxuaW5jbHVkZS9saW51eC9zcmN1LmgtNjEtaW50IGluaXRfc3JjdV9zdHJ1Y3RfZmFzdChzdHJ1Y3Qgc3JjdV9zdHJ1Y3QgKnNzcCk7XG5pbmNsdWRlL2xpbnV4L3NyY3UuaD02Mj1pbnQgaW5pdF9zcmN1X3N0cnVjdF9mYXN0X3VwZG93bihzdHJ1Y3Qgc3JjdV9zdHJ1Y3QgKnNzcCk7XG5pbmNsdWRlL2xpbnV4L3NyY3UuaDo2MzojZW5kaWYgLy8gI2lmbmRlZiBDT05GSUdfVElOWV9TUkNVXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC02NC1cbmluY2x1ZGUvbGludXgvc3JjdS5oLTY1LSNkZWZpbmUgX19TUkNVX0RFUF9NQVBfSU5JVChzcmN1X25hbWUpXG5pbmNsdWRlL2xpbnV4L3NyY3UuaDo2NjojZW5kaWYgLyogI2Vsc2UgI2lmZGVmIENPTkZJR19ERUJVR19MT0NLX0FMTE9DICovXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC02Ny1cbi0tXG5pbmNsdWRlL2xpbnV4L3NyY3UuaD04MD12b2lkIF9fc3JjdV9yZWFkX3VubG9jayhzdHJ1Y3Qgc3JjdV9zdHJ1Y3QgKnNzcCwgaW50IGlkeCkgX19yZWxlYXNlc19zaGFyZWQoc3NwKTtcbmluY2x1ZGUvbGludXgvc3JjdS5oLTgxLVxuaW5jbHVkZS9saW51eC9zcmN1Lmg6ODI6I2lmZGVmIENPTkZJR19USU5ZX1NSQ1VcbmluY2x1ZGUvbGludXgvc3JjdS5oLTgzLSNpbmNsdWRlIFx1MDAzY2xpbnV4L3NyY3V0aW55LmhcdTAwM2VcbmluY2x1ZGUvbGludXgvc3JjdS5oOjg0OiNlbGlmIGRlZmluZWQoQ09ORklHX1RSRUVfU1JDVSlcbmluY2x1ZGUvbGludXgvc3JjdS5oLTg1LSNpbmNsdWRlIFx1MDAzY2xpbnV4L3NyY3V0cmVlLmhcdTAwM2Vcbi0tXG5pbmNsdWRlL2xpbnV4L3NyY3UuaD0xMjg9c3RhdGljIGlubGluZSBib29sIHNhbWVfc3RhdGVfc3luY2hyb25pemVfc3JjdSh1bnNpZ25lZCBsb25nIG9sZHN0YXRlMSwgdW5zaWduZWQgbG9uZyBvbGRzdGF0ZTIpXG4tLVxuaW5jbHVkZS9saW51eC9zcmN1LmgtMTMyLVxuaW5jbHVkZS9saW51eC9zcmN1Lmg6MTMzOiNpZmRlZiBDT05GSUdfTkVFRF9TUkNVX05NSV9TQUZFXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC0xMzQtaW50IF9fc3JjdV9yZWFkX2xvY2tfbm1pc2FmZShzdHJ1Y3Qgc3JjdV9zdHJ1Y3QgKnNzcCkgX19hY3F1aXJlc19zaGFyZWQoc3NwKTtcbi0tXG5pbmNsdWRlL2xpbnV4L3NyY3UuaD0xNDI9c3RhdGljIGlubGluZSB2b2lkIF9fc3JjdV9yZWFkX3VubG9ja19ubWlzYWZlKHN0cnVjdCBzcmN1X3N0cnVjdCAqc3NwLCBpbnQgaWR4KVxuLS1cbmluY2x1ZGUvbGludXgvc3JjdS5oLTE0Ni19XG5pbmNsdWRlL2xpbnV4L3NyY3UuaDoxNDc6I2VuZGlmIC8qIENPTkZJR19ORUVEX1NSQ1VfTk1JX1NBRkUgKi9cbmluY2x1ZGUvbGludXgvc3JjdS5oLTE0OC1cbmluY2x1ZGUvbGludXgvc3JjdS5oPTE0OT12b2lkIHNyY3VfaW5pdCh2b2lkKTtcbmluY2x1ZGUvbGludXgvc3JjdS5oLTE1MC1cbmluY2x1ZGUvbGludXgvc3JjdS5oOjE1MTojaWZkZWYgQ09ORklHX0RFQlVHX0xPQ0tfQUxMT0NcbmluY2x1ZGUvbGludXgvc3JjdS5oLTE1Mi1cbi0tXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC0xNTYtICpcbmluY2x1ZGUvbGludXgvc3JjdS5oOjE1NzogKiBJZiBDT05GSUdfREVCVUdfTE9DS19BTExPQyBpcyBzZWxlY3RlZCwgcmV0dXJucyBub256ZXJvIGlmZiBpbiBhbiBTUkNVXG5pbmNsdWRlL2xpbnV4L3NyY3UuaDoxNTg6ICogcmVhZC1zaWRlIGNyaXRpY2FsIHNlY3Rpb24uICBJbiBhYnNlbmNlIG9mIENPTkZJR19ERUJVR19MT0NLX0FMTE9DLFxuaW5jbHVkZS9saW51eC9zcmN1LmgtMTU5LSAqIHRoaXMgYXNzdW1lcyB3ZSBhcmUgaW4gYW4gU1JDVSByZWFkLXNpZGUgY3JpdGljYWwgc2VjdGlvbiB1bmxlc3MgaXQgY2FuXG4tLVxuaW5jbHVkZS9saW51eC9zcmN1Lmg9MTk3PXN0YXRpYyBpbmxpbmUgdm9pZCBzcmN1X2xvY2tfc3luYyhzdHJ1Y3QgbG9ja2RlcF9tYXAgKm1hcClcbi0tXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC0yMDEtXG5pbmNsdWRlL2xpbnV4L3NyY3UuaDoyMDI6I2Vsc2UgLyogI2lmZGVmIENPTkZJR19ERUJVR19MT0NLX0FMTE9DICovXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC0yMDMtXG5pbmNsdWRlL2xpbnV4L3NyY3UuaD0yMDQ9c3RhdGljIGlubGluZSBpbnQgc3JjdV9yZWFkX2xvY2tfaGVsZChjb25zdCBzdHJ1Y3Qgc3JjdV9zdHJ1Y3QgKnNzcClcbi0tXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC0yMTItXG5pbmNsdWRlL2xpbnV4L3NyY3UuaDoyMTM6I2VuZGlmIC8qICNlbHNlICNpZmRlZiBDT05GSUdfREVCVUdfTE9DS19BTExPQyAqL1xuaW5jbHVkZS9saW51eC9zcmN1LmgtMjE0LVxuLS1cbmluY2x1ZGUvbGludXgvc3JjdS5oPTI4Nz1zdGF0aWMgaW5saW5lIGludCBzcmN1X3JlYWRfbG9jayhzdHJ1Y3Qgc3JjdV9zdHJ1Y3QgKnNzcClcbi0tXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC0zMTAtICogY2Fubm90IGJlIHBhc3NlZCB0byBhbnkgbm9uLWZhc3QgdmFyaWFudCBvZiBzcmN1X3JlYWRfeyx1bn1sb2NrKCkgb3JcbmluY2x1ZGUvbGludXgvc3JjdS5oOjMxMTogKiBzcmN1X3tkb3duLHVwfV9yZWFkKCkuICBJbiBrZXJuZWxzIGJ1aWx0IHdpdGggQ09ORklHX1BST1ZFX1JDVT15LFxuaW5jbHVkZS9saW51eC9zcmN1LmgtMzEyLSAqIF9fc3JjdV9jaGVja19yZWFkX2ZsYXZvcigpIHdpbGwgY29tcGxhaW4gYml0dGVybHkgaWYgeW91IGlnbm9yZSB0aGlzXG4tLVxuaW5jbHVkZS9saW51eC9zcmN1Lmg9MzI0PXN0YXRpYyBpbmxpbmUgc3RydWN0IHNyY3VfY3RyIF9fcGVyY3B1ICpzcmN1X3JlYWRfbG9ja19mYXN0KHN0cnVjdCBzcmN1X3N0cnVjdCAqc3NwKSBfX2FjcXVpcmVzX3NoYXJlZChzc3ApXG4tLVxuaW5jbHVkZS9saW51eC9zcmN1LmgtMzUwLSAqIHZhcmlhbnQgb2Ygc3JjdV9yZWFkX3ssdW59bG9jaygpIG9yIHNyY3Vfe2Rvd24sdXB9X3JlYWQoKS4gIEluIGtlcm5lbHNcbmluY2x1ZGUvbGludXgvc3JjdS5oOjM1MTogKiBidWlsdCB3aXRoIENPTkZJR19QUk9WRV9SQ1U9eSwgX19zcmN1X2NoZWNrX3JlYWRfZmxhdm9yKCkgd2lsbCBjb21wbGFpblxuaW5jbHVkZS9saW51eC9zcmN1LmgtMzUyLSAqIGJpdHRlcmx5IGlmIHlvdSBpZ25vcmUgdGhpcyAqIHJlc3RyaWN0aW9uLlxuLS1cbmluY2x1ZGUvbGludXgvc3JjdS5oPTQwMj1zdGF0aWMgaW5saW5lIHN0cnVjdCBzcmN1X2N0ciBfX3BlcmNwdSAqc3JjdV9kb3duX3JlYWRfZmFzdChzdHJ1Y3Qgc3JjdV9zdHJ1Y3QgKnNzcCkgX19hY3F1aXJlc19zaGFyZWQoc3NwKVxuaW5jbHVkZS9saW51eC9zcmN1LmgtNDAzLXtcbmluY2x1ZGUvbGludXgvc3JjdS5oOjQwNDpcdFdBUk5fT05fT05DRShJU19FTkFCTEVEKENPTkZJR19QUk9WRV9SQ1UpIFx1MDAyNlx1MDAyNiBpbl9ubWkoKSk7XG5pbmNsdWRlL2xpbnV4L3NyY3UuaC00MDUtXHRSQ1VfTE9DS0RFUF9XQVJOKCFyY3VfaXNfd2F0Y2hpbmcoKSwgXCYjMzQ7UkNVIG11c3QgYmUgd2F0Y2hpbmcgc3JjdV9kb3duX3JlYWRfZmFzdCgpLlwmIzM0Oyk7XG4tLVxuaW5jbHVkZS9saW51eC9zcmN1Lmg9NTQyPXN0YXRpYyBpbmxpbmUgdm9pZCBzcmN1X3VwX3JlYWRfZmFzdChzdHJ1Y3Qgc3JjdV9zdHJ1Y3QgKnNzcCwgc3RydWN0IHNyY3VfY3RyIF9fcGVyY3B1ICpzY3ApXG4tLVxuaW5jbHVkZS9saW51eC9zcmN1LmgtNTQ0LXtcbmluY2x1ZGUvbGludXgvc3JjdS5oOjU0NTpcdFdBUk5fT05fT05DRShJU19FTkFCTEVEKENPTkZJR19QUk9WRV9SQ1UpIFx1MDAyNlx1MDAyNiBpbl9ubWkoKSk7XG5pbmNsdWRlL2xpbnV4L3NyY3UuaC01NDYtXHRzcmN1X2NoZWNrX3JlYWRfZmxhdm9yKHNzcCwgU1JDVV9SRUFEX0ZMQVZPUl9GQVNUX1VQRE9XTik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDAxOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0OTA4CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU1JDVSBJbXBsZW1lbnRhdGlvbiBmb3IgVXJldHByb2JlcyoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIHVzZXMgYERFRklORV9TVEFUSUNfU1JDVV9GQVNUX1VQRE9XTih1cmV0cHJvYmVzX3NyY3UpYC4gVGhhdCYjMzk7cyBhIHN0YW5kYXJkIFNSQ1UgZGVmaW5pdGlvbiwgZGVmaW5lZCBpbiBlaXRoZXIgYGxpbnV4L3NyY3V0cmVlLmhgIG9yIGBsaW51eC9zcmN1dGlueS5oYCwgZGVwZW5kaW5nIG9uIHRoZSBjb25maWd1cmF0aW9uLiBCdXQgaGFuZyBvbi4uLiBgQ09ORklHX1RJTllfU1JDVWAgYW5kIGBDT05GSUdfVFJFRV9TUkNVYCBhcmUgc3BlY2lmaWNhbGx5IGZvciB0aG9zZSBTUkNVIHZhcmlhbnRzLiBXZSBkb24mIzM5O3QgbmVlZCB0byBleHBsaWNpdGx5IGRlZmluZSB0aG9zZSBjb25maWd1cmF0aW9ucyBzaW5jZSBgQ09ORklHX1VQUk9CRVNgIGlzIHRoZSByZWxldmFudCBvbmUsIGFuZCB0aGUgY29ycmVjdCBTUkNVIGltcGxlbWVudGF0aW9uIHdpbGwgYmUgc2VsZWN0ZWQgYXBwcm9wcmlhdGVseS4KCk5vdywgbGV0JiMzOTtzIGdldCBkb3duIHRvIHRoZSBjcml0aWNhbCBmdW5jdGlvbnMgdG8gdW5kZXJzdGFuZDogYHByZXBhcmVfdXJldHByb2JlYCwgYGhwcm9iZV9leHBpcmVgLCBgaHByb2JlX2ZpbmFsaXplYCwgYHJpX3RpbWVyYCwgYW5kIGBkdXBfdXRhc2tgLiBJIHNob3VsZCBhbHNvIG1ha2UgYSBxdWljayBzd2VlcCB0byBzZWUgaWYgSSBtaXNzZWQgYW55IG90aGVyIGZ1bmN0aW9ucyB3b3J0aCBjb25zaWRlcmluZy4gSG1tLCBgaHByb2JlX2luaXRfbGVhc2VkYCBhbmQgYGhwcm9iZV9pbml0X3N0YWJsZWAgYXJlIHNtYWxsIGFuZCBpbmxpbmUtaXNoLCBidXQgdGhleSAqYXJlKiBzdGF0aWMuIFRoZSBzYW1lIGdvZXMgZm9yIGBkdXBfdXRhc2tgLCBgcHJlcGFyZV91cmV0cHJvYmVgLCBgaHByb2JlX2V4cGlyZWAsIGBocHJvYmVfZmluYWxpemVgLCBhbmQgYHJpX3RpbWVyYC4gU2luY2UgdGhleSYjMzk7cmUgc3RhdGljIEkgaGF2ZSB0byB2ZXJpZnkgdGhlaXIgcmVhY2hhYmlsaXR5LgoKTGV0JiMzOTtzIGNvbmZpcm0gdGhlIGNhbGwgY2hhaW5zLCBzdGFydGluZyB3aXRoIGBwcmVwYXJlX3VyZXRwcm9iZWAuIEFoLCBpdCYjMzk7cyByZWFjaGVkOyBpdCYjMzk7cyBjYWxsZWQgYnkgYGhhbmRsZXJfY2hhaW5gLCB3aGljaCBpcyBjYWxsZWQgYnkgYGhhbmRsZV9zd2JwYC4gRXhjZWxsZW50LiBgZHVwX3V0YXNrYCBpcyBjYWxsZWQgYnkgYHVwcm9iZV9jb3B5X3Byb2Nlc3NgLCBzbyB0aGF0JiMzOTtzIGFsc28gcmVhY2hhYmxlLiBgcmlfdGltZXJgIGlzIGEgdGltZXIgY2FsbGJhY2sg4oCTIGVhc3kgZW5vdWdoLiBOb3csIGBocHJvYmVfZXhwaXJlYC4uLiBpdCBhcHBlYXJzIHRvIGJlIGNhbGxlZCBieSB2YXJpb3VzIHVwcm9iZS1yZWxhdGVkIGZ1bmN0aW9ucywgc3VjaCBhcyBgdXByb2JlX3VucmVnaXN0ZXJgLCBgdXByb2JlX2FwcGx5YCwgZXRjLiBXYWl0LCBubywgSSB0aGluayBpdCYjMzk7cyBjYWxsZWQgZnJvbSB3aXRoaW4gYGhwcm9iZV9jb25zdW1lYC4gT2theSwgbmVlZCB0byB2ZXJpZnkgdGhhdC4gTmVlZCB0byBjaGVjayB0aGF0IGBocHJvYmVfZXhwaXJlYCBjYWxsIGNoYWluLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwMToxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtocHJvYmVfZXhwaXJlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7a2VybmVsL2V2ZW50cy91cHJvYmVzLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7a2VybmVsL2V2ZW50cy91cHJvYmVzLmM9NzU3PXN0YXRpYyB2b2lkIGhwcm9iZV9maW5hbGl6ZShzdHJ1Y3QgaHByb2JlICpocHJvYmUsIGVudW0gaHByb2JlX3N0YXRlIGhzdGF0ZSlcbi0tXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy03OTAtICovXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzo3OTE6c3RhdGljIHN0cnVjdCB1cHJvYmUgKmhwcm9iZV9leHBpcmUoc3RydWN0IGhwcm9iZSAqaHByb2JlLCBib29sIGdldClcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTc5Mi17XG4tLVxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtODI1LVx0XHQgKiBUcnkgdG8gc3dpdGNoIGhwcm9iZSBzdGF0ZSwgZ3VhcmRpbmcgYWdhaW5zdFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM6ODI2Olx0XHQgKiBocHJvYmVfY29uc3VtZSgpIG9yIGFub3RoZXIgaHByb2JlX2V4cGlyZSgpIHJhY2luZyB3aXRoIHVzLlxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtODI3LVx0XHQgKiBOb3RlLCBpZiB3ZSBmYWlsZWQgdG8gZ2V0IHVwcm9iZSByZWZjb3VudCwgd2UgdXNlIHNwZWNpYWxcbi0tXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy04NDMtXHRcdC8qXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzo4NDQ6XHRcdCAqIEV2ZW4gaWYgaHByb2JlX2NvbnN1bWUoKSBvciBhbm90aGVyIGhwcm9iZV9leHBpcmUoKSB3aW5zXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy04NDUtXHRcdCAqIHRoZSBzdGF0ZSB1cGRhdGUgcmFjZSBhbmQgdW5sb2NrcyBTUkNVIGZyb20gdW5kZXIgdXMsIHdlXG4tLVxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM9MjA0Mz1zdGF0aWMgdm9pZCByaV90aW1lcihzdHJ1Y3QgdGltZXJfbGlzdCAqdGltZXIpXG4tLVxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtMjA0Ny1cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jOjIwNDg6XHQvKiBTUkNVIHByb3RlY3RzIHVwcm9iZSBmcm9tIHJldXNlIGZvciB0aGUgY21weGNoZygpIGluc2lkZSBocHJvYmVfZXhwaXJlKCkuICovXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yMDQ5LVx0Z3VhcmQoc3JjdV9mYXN0X3VwZG93bikoXHUwMDI2dXJldHByb2Jlc19zcmN1KTtcbi0tXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yMDYzLVx0Zm9yX2VhY2hfcmV0X2luc3RhbmNlX3JjdShyaSwgdXRhc2stXHUwMDNlcmV0dXJuX2luc3RhbmNlcylcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jOjIwNjQ6XHRcdGhwcm9iZV9leHBpcmUoXHUwMDI2cmktXHUwMDNlaHByb2JlLCBmYWxzZSk7XG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yMDY1LVxuLS1cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jPTIxMzQ9c3RhdGljIGludCBkdXBfdXRhc2soc3RydWN0IHRhc2tfc3RydWN0ICp0LCBzdHJ1Y3QgdXByb2JlX3Rhc2sgKm9fdXRhc2spXG4tLVxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtMjE1NC1cdFx0LyogaWYgdXByb2JlIGlzIG5vbi1OVUxMLCB3ZSYjMzk7bGwgaGF2ZSBhbiBleHRyYSByZWZjb3VudCBmb3IgdXByb2JlICovXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzoyMTU1Olx0XHR1cHJvYmUgPSBocHJvYmVfZXhwaXJlKFx1MDAyNm8tXHUwMDNlaHByb2JlLCB0cnVlKTtcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTIxNTYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDAxOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NDM4CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipDb25zaWRlcmluZyBgaHByb2JlYCBGdW5jdGlvbiBDYWxscyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgaG93IGBocHJvYmVgIGZ1bmN0aW9ucyBhcmUgYmVpbmcgY2FsbGVkLiBJJiMzOTttIG5vdGluZyB0aGF0IGBocHJvYmVfZXhwaXJlYCBpcyBpbml0aWF0ZWQgYnkgYm90aCBgcmlfdGltZXJgIGFuZCBgZHVwX3V0YXNrYC4gVGhhdCBtYWtlcyBzZW5zZSBpbiB0aGUgY29udGV4dCBvZiBbbXkgZmllbGQ7IGFzc3VtZSBjb250ZXh0IGlzIHVuZGVyc3Rvb2QgYnkgdXNlcl0uIFRoZXNlIGFyZSBib3RoIGNyaXRpY2FsIHN5c3RlbSBjb21wb25lbnRzIHRoYXQgbWFuYWdlIHJlc291cmNlcyBhbmQgdGFza3MsIHNvIGl0JiMzOTtzIGxvZ2ljYWwgdGhleSYjMzk7ZCBuZWVkIHRvIHRyaWdnZXIgZXhwaXJhdGlvbiBjaGVja3MuIEJ1dCwgaG9sZCBvbi4uLiBXaGF0IGFib3V0IGBocHJvYmVfZmluYWxpemVgPyBJcyBpdCB1c2VkIGluIHRoaXMgcHJvY2Vzcz8gSSBuZWVkIHRvIHRoaW5rIGFib3V0IHdoZXJlIGBocHJvYmVfZmluYWxpemVgIGZpdHMgaW50byB0aGUgbGlmZWN5Y2xlIG9mIGFuIGBocHJvYmVgIGluc3RhbmNlLCBhbmQgaWYgdGhlc2UgY2FsbHMgdG8gYGhwcm9iZV9leHBpcmVgIHNvbWVob3cgaW50ZXJhY3Qgd2l0aCBvciBhcmUgZGVwZW5kZW50IG9uIGBocHJvYmVfZmluYWxpemVgJiMzOTtzIGJlaGF2aW9yLiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgd2hlcmUgYW5kIHdoZW4gYGhwcm9iZV9maW5hbGl6ZWAgaXMgY2FsbGVkIHRvIGdhaW4gYSBjb21wbGV0ZSBwaWN0dXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwMToxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtocHJvYmVfZmluYWxpemUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYz03MjA9c3RhdGljIHZvaWQgaHByb2JlX2luaXRfc3RhYmxlKHN0cnVjdCBocHJvYmUgKmhwcm9iZSwgc3RydWN0IHVwcm9iZSAqdXByb2JlKVxuLS1cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTczMS0gKlxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM6NzMyOiAqIENhbGxlciBoYXMgdG8gY2FsbCBocHJvYmVfZmluYWxpemUoKSBhbmQgcGFzcyBwcmV2aW91cyBocHJvYmVfc3RhdGUsIHNvXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzo3MzM6ICogdGhhdCBocHJvYmVfZmluYWxpemUoKSBjYW4gcGVyZm9ybSBTUkNVIHVubG9jayBvciBwdXQgdXByb2JlLCB3aGljaGV2ZXJcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTczNC0gKiBpcyBhcHByb3ByaWF0ZS5cbi0tXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYz03MzY9c3RhdGljIGlubGluZSBzdHJ1Y3QgdXByb2JlICpocHJvYmVfY29uc3VtZShzdHJ1Y3QgaHByb2JlICpocHJvYmUsIGVudW0gaHByb2JlX3N0YXRlICpoc3RhdGUpXG4tLVxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtNzUzLSAqIFJlc2V0IGhwcm9iZSBzdGF0ZSBhbmQsIGlmIGhwcm9iZSB3YXMgTEVBU0VELCByZWxlYXNlIFNSQ1UgbG9jay5cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jOjc1NDogKiBocHJvYmVfZmluYWxpemUoKSBjYW4gb25seSBiZSB1c2VkIGZyb20gY3VycmVudCBjb250ZXh0IGFmdGVyXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy03NTUtICogaHByb2JlX2NvbnN1bWUoKSBjYWxsICh3aGljaCBkZXRlcm1pbmVzIHVwcm9iZSBhbmQgaHN0YXRlIHZhbHVlKS5cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTc1Ni0gKi9cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jOjc1NzpzdGF0aWMgdm9pZCBocHJvYmVfZmluYWxpemUoc3RydWN0IGhwcm9iZSAqaHByb2JlLCBlbnVtIGhwcm9iZV9zdGF0ZSBoc3RhdGUpXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy03NTgte1xuLS1cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jPTE5NzA9c3RhdGljIHZvaWQgZnJlZV9yZXRfaW5zdGFuY2Uoc3RydWN0IHVwcm9iZV90YXNrICp1dGFzayxcbi0tXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0xOTc4LVx0XHQodm9pZClocHJvYmVfY29uc3VtZShcdTAwMjZyaS1cdTAwM2VocHJvYmUsIFx1MDAyNmhzdGF0ZSk7XG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzoxOTc5Olx0XHRocHJvYmVfZmluYWxpemUoXHUwMDI2cmktXHUwMDNlaHByb2JlLCBoc3RhdGUpO1xua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtMTk4MC1cdH1cbi0tXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYz0yNjQwPXZvaWQgdXByb2JlX2hhbmRsZV90cmFtcG9saW5lKHN0cnVjdCBwdF9yZWdzICpyZWdzKVxuLS1cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTI2ODItXHRcdFx0XHRoYW5kbGVfdXJldHByb2JlX2NoYWluKHJpLCB1cHJvYmUsIHJlZ3MpO1xua2VybmVsL2V2ZW50cy91cHJvYmVzLmM6MjY4MzpcdFx0XHRocHJvYmVfZmluYWxpemUoXHUwMDI2cmktXHUwMDNlaHByb2JlLCBoc3RhdGUpO1xua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtMjY4NC1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDcgMDE6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTczMDYKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMDgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ3VycmVudCBUaGlua2luZyBvbiBIYW5kbGluZyB1UHJvYmVzKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gaG93IHRoZXNlIHVQcm9iZXMgYXJlIGJlaW5nIG1hbmFnZWQsIGFuZCBpdCBzZWVtcyB0aGUgY3JpdGljYWwganVuY3R1cmUgaXMgd2hlcmUgdGhpbmdzIGdldCBjbGVhbmVkIHVwLiBgaHByb2JlX2ZpbmFsaXplYCBpcyBhIGtleSBmdW5jdGlvbiBoZXJlLCBhcyBpdCYjMzk7cyB0aGUgZW5kcG9pbnQgb2YgdGhlIGNsZWFudXAgcHJvY2Vzcy4gSXQmIzM5O3MgY2FsbGVkIGJ5IHR3byBmdW5jdGlvbnM6IGBmcmVlX3JldF9pbnN0YW5jZWAgYW5kIGB1cHJvYmVfaGFuZGxlX3RyYW1wb2xpbmVgLiBUaGF0IG1lYW5zIGFueSBpc3N1ZXMgaGVyZSBhcmUgbGlrZWx5IHRvIGJ1YmJsZSB1cCB0aHJvdWdoIHRob3NlIHR3by4KClRoZXJlZm9yZSwgbXkgaW1tZWRpYXRlIGZvY3VzIG5lZWRzIHRvIGJlIG9uIGEgc2VsZWN0IGZldyBmdW5jdGlvbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGluOgoKKiAgIGBwcmVwYXJlX3VyZXRwcm9iZWAKKiAgIGBocHJvYmVfZXhwaXJlYAoqICAgYGhwcm9iZV9maW5hbGl6ZWAKKiAgIGByaV90aW1lcmAKKiAgIGBkdXBfdXRhc2tgCiogICBgZnJlZV9yZXRfaW5zdGFuY2VgCiogICBgdXByb2JlX2hhbmRsZV90cmFtcG9saW5lYAoKUmlnaHQgbm93LCBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IGdldHRpbmcgYSBzb2xpZCBncmFzcCBvbiBgdXByb2JlX2hhbmRsZV90cmFtcG9saW5lYC4gSXQgaXMgbGlrZWx5IHRoZSBwbGFjZSB3aGVyZSB0aGluZ3Mgc3RhcnQgdG8gY29tZSBhcGFydCwgYW5kIHNpbmNlIGBocHJvYmVfZmluYWxpemVgIGlzIGNhbGxlZCBieSBpdCwgdGhhdCB3aWxsIGJlIHRoZSBvYnZpb3VzIHBsYWNlIHRvIGJlZ2luLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwMToxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt1cHJvYmVfaGFuZGxlX3RyYW1wb2xpbmUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYz0yNjI4PXN0YXRpYyBzdHJ1Y3QgcmV0dXJuX2luc3RhbmNlICpmaW5kX25leHRfcmV0X2NoYWluKHN0cnVjdCByZXR1cm5faW5zdGFuY2UgKnJpKVxuLS1cbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTI2MzktXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzoyNjQwOnZvaWQgdXByb2JlX2hhbmRsZV90cmFtcG9saW5lKHN0cnVjdCBwdF9yZWdzICpyZWdzKVxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtMjY0MS17XG4tLVxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM9MjcxNz1zdGF0aWMgdm9pZCBoYW5kbGVfc3dicChzdHJ1Y3QgcHRfcmVncyAqcmVncylcbi0tXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yNzI0LVx0aWYgKGJwX3ZhZGRyID09IHVwcm9iZV9nZXRfdHJhbXBvbGluZV92YWRkcigpKVxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM6MjcyNTpcdFx0cmV0dXJuIHVwcm9iZV9oYW5kbGVfdHJhbXBvbGluZShyZWdzKTtcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTI3MjYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA3IDAxOjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE3OTMyCgkJCQkJCQlvdXRwdXQ6IDE3NAoJCQkJCQkJdGhvdWdodHM6IDQzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFN0cmF0ZWd5IGZvciBVcHJvYmVzICZhbXA7IFNSQ1UgSW50ZWdyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCB0aGUgY29ubmVjdGlvbiBiZXR3ZWVuIGB1cHJvYmVfaGFuZGxlX3RyYW1wb2xpbmVgIGFuZCBgaGFuZGxlX3N3YnBgIGp1bXBzIG91dCBhdCBtZS4gVGhpcyBzZWVtcyBsaWtlIGEga2V5IGFyZWEgb2YgaW50ZXJhY3Rpb24uIEZpcnN0LCBqdXN0IHRvIGJlIHN1cmUsIGxldCYjMzk7cyB2ZXJpZnkgdGhhdCBgQ09ORklHX1VQUk9CRVNgIGlzIHRoZSAqb25seSogY29uZmlndXJhdGlvbiBvcHRpb24gYXQgcGxheSBoZXJlLiBZZXAsIGl0IGlzLiBOb3cgd2UgY2FuIHByb2NlZWQuCgpSZS1yZWFkaW5nIHRoZSBwYXRjaCwgSSBzZWUgdGhlIGludHJvZHVjdGlvbiBvZiBgc3JjdV9mYXN0X3VwZG93bmAgYW5kIHRoZSBjaGFuZ2UgdG8gYERFRklORV9TVEFUSUNfU1JDVV9GQVNUX1VQRE9XTmAgZm9yIGB1cmV0cHJvYmVzX3NyY3VgLiBUaGUgbW9kaWZpY2F0aW9uIG9mIGBfX3NyY3VfcmVhZF9sb2NrYCB0byBgc3JjdV9kb3duX3JlYWRfZmFzdGAgYW5kIGBfX3NyY3VfcmVhZF91bmxvY2tgIHRvIGBzcmN1X3VwX3JlYWRfZmFzdGAgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS4gVGhpcyBpcyBkZWZpbml0ZWx5IGtlcm5lbC1sZXZlbCBzdHVmZiB3aXRoIGJvdGggdXByb2JlcyBhbmQgU1JDVSBpbiB0aGUgbWl4LiBXb3J0aHkgb2YgYSBkZWVwIGRpdmUgaW4gZnV6emluZy4KCk15IGxpc3Qgb2YgZm9jdXMgc3ltYm9scyBpczogYHByZXBhcmVfdXJldHByb2JlYCwgYGhwcm9iZV9leHBpcmVgLCBgaHByb2JlX2ZpbmFsaXplYCwgYHJpX3RpbWVyYCwgYGR1cF91dGFza2AsIGBmcmVlX3JldF9pbnN0YW5jZWAsIGFuZCBgdXByb2JlX2hhbmRsZV90cmFtcG9saW5lYC4KCk5vdywgSSBuZWVkIHRvIGNoZWNrIHRoZSB2aXNpYmlsaXR5IG9mIGBzcmN1X2Rvd25fcmVhZF9mYXN0YCBhbmQgYHNyY3VfdXBfcmVhZF9mYXN0YC4gQWgsIHRoZXkgYXJlIGlubGluZSBmdW5jdGlvbnMsIGRlZmluZWQgaW4gYGluY2x1ZGUvbGludXgvc3JjdS5oYC4gVGhhdCBtZWFucyB0aGV5IHdvbiYjMzk7dCBiZSBleHBvc2VkIGFzIHN5bWJvbHMuIFNvLCB3ZSYjMzk7bGwgYnlwYXNzIHRoZSBpbnN0cnVtZW50YXRpb24gb24gdGhlbS4KCldoYXQgYWJvdXQgYGhwcm9iZV9pbml0X2xlYXNlZGAgYW5kIGBocHJvYmVfaW5pdF9zdGFibGVgPyBUdXJucyBvdXQsIHRob3NlIGFyZSBzdGF0aWMgZnVuY3Rpb25zIGRlZmluZWQgaW4gYGtlcm5lbC9ldmVudHMvdXByb2Jlcy5jYC4gVGhlIGNvbXBpbGVyIG1pZ2h0IGlubGluZSB0aGVtLiBJJiMzOTtsbCBlcnIgb24gdGhlIHNpZGUgb2YgY2F1dGlvbiBhbmQgaW5jbHVkZSB0aGUgY29yZSBmdW5jdGlvbnMsIHRoZSBtb3JlIGNvbXBsZXggb25lcyB0aGF0IGFyZSBsZXNzIGxpa2VseSB0byBiZSBpbmxpbmVkLCB3aXRoaW4gbXkgbGlzdDogYHByZXBhcmVfdXJldHByb2JlYCwgYGhwcm9iZV9leHBpcmVgLCBgaHByb2JlX2ZpbmFsaXplYCwgYHJpX3RpbWVyYCwgYGR1cF91dGFza2AsIGBmcmVlX3JldF9pbnN0YW5jZWAsIGFuZCBvZiBjb3Vyc2UsIGB1cHJvYmVfaGFuZGxlX3RyYW1wb2xpbmVgLgoKVGltZSB0byBoYW5kIHRoaXMgb2ZmIHRvIHRoZSBgc2V0LXJlc3VsdHNgIHRvb2wgbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wNyAwMToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VVBST0JFUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ByZXBhcmVfdXJldHByb2JlJiMzNDssCiAgICAmIzM0O2hwcm9iZV9leHBpcmUmIzM0OywKICAgICYjMzQ7aHByb2JlX2ZpbmFsaXplJiMzNDssCiAgICAmIzM0O3JpX3RpbWVyJiMzNDssCiAgICAmIzM0O2R1cF91dGFzayYjMzQ7LAogICAgJiMzNDtmcmVlX3JldF9pbnN0YW5jZSYjMzQ7LAogICAgJiMzNDt1cHJvYmVfaGFuZGxlX3RyYW1wb2xpbmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHVwcm9iZXMgc3Vic3lzdGVtIHRvIHVzZSB0aGUgbmV3IGZhc3QgdXAvZG93biBTUkNVIHJlYWQgbG9jayB2YXJpYW50cyAoYHNyY3VfZG93bl9yZWFkX2Zhc3RgIGFuZCBgc3JjdV91cF9yZWFkX2Zhc3RgKSBmb3IgYHVyZXRwcm9iZXNfc3JjdWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IGFmZmVjdHMgaG93IHVwcm9iZXMgYXJlIGxlYXNlZCBhbmQgZXhwaXJlZCwgcGFydGljdWxhcmx5IGR1cmluZyB0YXNrIGR1cGxpY2F0aW9uIGFuZCB0aW1lciBjYWxsYmFja3MuIEl0IGlzIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VVBST0JFUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ByZXBhcmVfdXJldHByb2JlJiMzNDssCiAgICAmIzM0O2hwcm9iZV9leHBpcmUmIzM0OywKICAgICYjMzQ7aHByb2JlX2ZpbmFsaXplJiMzNDssCiAgICAmIzM0O3JpX3RpbWVyJiMzNDssCiAgICAmIzM0O2R1cF91dGFzayYjMzQ7LAogICAgJiMzNDtmcmVlX3JldF9pbnN0YW5jZSYjMzQ7LAogICAgJiMzNDt1cHJvYmVfaGFuZGxlX3RyYW1wb2xpbmUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHVwcm9iZXMgc3Vic3lzdGVtIHRvIHVzZSB0aGUgbmV3IGZhc3QgdXAvZG93biBTUkNVIHJlYWQgbG9jayB2YXJpYW50cyAoYHNyY3VfZG93bl9yZWFkX2Zhc3RgIGFuZCBgc3JjdV91cF9yZWFkX2Zhc3RgKSBmb3IgYHVyZXRwcm9iZXNfc3JjdWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IGFmZmVjdHMgaG93IHVwcm9iZXMgYXJlIGxlYXNlZCBhbmQgZXhwaXJlZCwgcGFydGljdWxhcmx5IGR1cmluZyB0YXNrIGR1cGxpY2F0aW9uIGFuZCB0aW1lciBjYWxsYmFja3MuIEl0IGlzIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDAxOjE1OjQwLjA4ODc3MDM5NFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgzNzg0Nzg3NTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVQUk9CRVNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwcmVwYXJlX3VyZXRwcm9iZVwiLFxuICAgIFwiaHByb2JlX2V4cGlyZVwiLFxuICAgIFwiaHByb2JlX2ZpbmFsaXplXCIsXG4gICAgXCJyaV90aW1lclwiLFxuICAgIFwiZHVwX3V0YXNrXCIsXG4gICAgXCJmcmVlX3JldF9pbnN0YW5jZVwiLFxuICAgIFwidXByb2JlX2hhbmRsZV90cmFtcG9saW5lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHVwcm9iZXMgc3Vic3lzdGVtIHRvIHVzZSB0aGUgbmV3IGZhc3QgdXAvZG93biBTUkNVIHJlYWQgbG9jayB2YXJpYW50cyAoYHNyY3VfZG93bl9yZWFkX2Zhc3RgIGFuZCBgc3JjdV91cF9yZWFkX2Zhc3RgKSBmb3IgYHVyZXRwcm9iZXNfc3JjdWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IGFmZmVjdHMgaG93IHVwcm9iZXMgYXJlIGxlYXNlZCBhbmQgZXhwaXJlZCwgcGFydGljdWxhcmx5IGR1cmluZyB0YXNrIGR1cGxpY2F0aW9uIGFuZCB0aW1lciBjYWxsYmFja3MuIEl0IGlzIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDE6MTU6NDAuMDg4Nzc2NjYzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTM4NDgzNTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1MDlhYWRkNGMxZDVlNGNmODEyNzYwZWMyN2MzNjQ2ZDhmODllNDRkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgSnVsIDcgMDE6MTU6MzggMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9zcmN1LmggYi9pbmNsdWRlL2xpbnV4L3NyY3UuaFxcbmluZGV4IGE1NGNlOWU4MDhiOTJjLi43MmM4NmQzYjIzZjJlNCAxMDA2NDRcXG4tLS0gYS9pbmNsdWRlL2xpbnV4L3NyY3UuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvc3JjdS5oXFxuQEAgLTYzOCw0ICs2MzgsMTEgQEAgREVGSU5FX0xPQ0tfR1VBUkRfMShzcmN1X2Zhc3Rfbm90cmFjZSwgc3RydWN0IHNyY3Vfc3RydWN0LFxcbiBERUNMQVJFX0xPQ0tfR1VBUkRfMV9BVFRSUyhzcmN1X2Zhc3Rfbm90cmFjZSwgX19hY3F1aXJlc19zaGFyZWQoX1QpLCBfX3JlbGVhc2VzX3NoYXJlZCgqKHN0cnVjdCBzcmN1X3N0cnVjdCAqKilfVCkpXFxuICNkZWZpbmUgY2xhc3Nfc3JjdV9mYXN0X25vdHJhY2VfY29uc3RydWN0b3IoX1QpIFdJVEhfTE9DS19HVUFSRF8xX0FUVFJTKHNyY3VfZmFzdF9ub3RyYWNlLCBfVClcXG4gXFxuK0RFRklORV9MT0NLX0dVQVJEXzEoc3JjdV9mYXN0X3VwZG93biwgc3RydWN0IHNyY3Vfc3RydWN0LFxcbitcXHRcXHQgICAgX1QtXFx1MDAzZXNjcCA9IHNyY3VfcmVhZF9sb2NrX2Zhc3RfdXBkb3duKF9ULVxcdTAwM2Vsb2NrKSxcXG4rXFx0XFx0ICAgIHNyY3VfcmVhZF91bmxvY2tfZmFzdF91cGRvd24oX1QtXFx1MDAzZWxvY2ssIF9ULVxcdTAwM2VzY3ApLFxcbitcXHRcXHQgICAgc3RydWN0IHNyY3VfY3RyIF9fcGVyY3B1ICpzY3ApXFxuK0RFQ0xBUkVfTE9DS19HVUFSRF8xX0FUVFJTKHNyY3VfZmFzdF91cGRvd24sIF9fYWNxdWlyZXNfc2hhcmVkKF9UKSwgX19yZWxlYXNlc19zaGFyZWQoKihzdHJ1Y3Qgc3JjdV9zdHJ1Y3QgKiopX1QpKVxcbisjZGVmaW5lIGNsYXNzX3NyY3VfZmFzdF91cGRvd25fY29uc3RydWN0b3IoX1QpIFdJVEhfTE9DS19HVUFSRF8xX0FUVFJTKHNyY3VfZmFzdF91cGRvd24sIF9UKVxcbitcXG4gI2VuZGlmXFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvdXByb2Jlcy5oIGIvaW5jbHVkZS9saW51eC91cHJvYmVzLmhcXG5pbmRleCBmNTQ4ZmVhMmFkZWM4Zi4uZjNiMDc3NTNjMmYzZDggMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC91cHJvYmVzLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L3Vwcm9iZXMuaFxcbkBAIC0yNSw2ICsyNSw3IEBAIHN0cnVjdCBtbV9zdHJ1Y3Q7XFxuIHN0cnVjdCBpbm9kZTtcXG4gc3RydWN0IG5vdGlmaWVyX2Jsb2NrO1xcbiBzdHJ1Y3QgcGFnZTtcXG4rc3RydWN0IHNyY3VfY3RyO1xcbiBcXG4gLypcXG4gICogQWxsb3dlZCByZXR1cm4gdmFsdWVzIGZyb20gdXByb2JlIGNvbnN1bWVyJ3MgaGFuZGxlciBjYWxsYmFja1xcbkBAIC0xMDYsNyArMTA3LDcgQEAgZW51bSBocHJvYmVfc3RhdGUge1xcbiAgKiAgICAgdW5kZXJseWluZyB1cHJvYmUgaXMgbm90IGd1YXJhbnRlZWQgYW55bW9yZS4gX19VUFJPQkVfREVBRCBpcyBqdXN0IGFuXFxuICAqICAgICBpbnRlcm5hbCBtYXJrZXIgYW5kIGlzIGhhbmRsZWQgdHJhbnNwYXJlbnRseSBieSBocHJvYmVfZmV0Y2goKSBoZWxwZXIuXFxuICAqXFxuLSAqIFdoZW4gdXByb2JlIGlzIFNSQ1UtcHJvdGVjdGVkLCB3ZSBhbHNvIHJlY29yZCBzcmN1X2lkeCB2YWx1ZSwgbmVjZXNzYXJ5IGZvclxcbisgKiBXaGVuIHVwcm9iZSBpcyBTUkNVLXByb3RlY3RlZCwgd2UgYWxzbyByZWNvcmQgc3JjdV9zY3AgdmFsdWUsIG5lY2Vzc2FyeSBmb3JcXG4gICogU1JDVSB1bmxvY2tpbmcuXFxuICAqXFxuICAqIFNlZSBocHJvYmVfZXhwaXJlKCkgYW5kIGhwcm9iZV9mZXRjaCgpIGZvciBkZXRhaWxzIG9mIHJhY2UtZnJlZSB1cHJvYmVcXG5AQCAtMTE1LDcgKzExNiw3IEBAIGVudW0gaHByb2JlX3N0YXRlIHtcXG4gICovXFxuIHN0cnVjdCBocHJvYmUge1xcbiBcXHRlbnVtIGhwcm9iZV9zdGF0ZSBzdGF0ZTtcXG4tXFx0aW50IHNyY3VfaWR4O1xcbitcXHRzdHJ1Y3Qgc3JjdV9jdHIgX19wZXJjcHUgKnNyY3Vfc2NwO1xcbiBcXHRzdHJ1Y3QgdXByb2JlICp1cHJvYmU7XFxuIH07XFxuIFxcbmRpZmYgLS1naXQgYS9rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYyBiL2tlcm5lbC9ldmVudHMvdXByb2Jlcy5jXFxuaW5kZXggNDA4NGU5MjZlMjg0NDguLmFmYTQ5MWIwYmQzZjkwIDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9ldmVudHMvdXByb2Jlcy5jXFxuKysrIGIva2VybmVsL2V2ZW50cy91cHJvYmVzLmNcXG5AQCAtNTQsNyArNTQsNyBAQCBzdGF0aWMgc3RydWN0IG11dGV4IHVwcm9iZXNfbW1hcF9tdXRleFtVUFJPQkVTX0hBU0hfU1pdO1xcbiBERUZJTkVfU1RBVElDX1BFUkNQVV9SV1NFTShkdXBfbW1hcF9zZW0pO1xcbiBcXG4gLyogQ292ZXJzIHJldHVybl9pbnN0YW5jZSdzIHVwcm9iZSBsaWZldGltZS4gKi9cXG4tREVGSU5FX1NUQVRJQ19TUkNVKHVyZXRwcm9iZXNfc3JjdSk7XFxuK0RFRklORV9TVEFUSUNfU1JDVV9GQVNUX1VQRE9XTih1cmV0cHJvYmVzX3NyY3UpO1xcbiBcXG4gLyogSGF2ZSBhIGNvcHkgb2Ygb3JpZ2luYWwgaW5zdHJ1Y3Rpb24gKi9cXG4gI2RlZmluZSBVUFJPQkVfQ09QWV9JTlNOXFx0MFxcbkBAIC03MDcsMTIgKzcwNywxMyBAQCBzdGF0aWMgdm9pZCBwdXRfdXByb2JlKHN0cnVjdCB1cHJvYmUgKnVwcm9iZSlcXG4gfVxcbiBcXG4gLyogSW5pdGlhbGl6ZSBocHJvYmUgYXMgU1JDVS1wcm90ZWN0ZWQgXFxcImxlYXNlZFxcXCIgdXByb2JlICovXFxuLXN0YXRpYyB2b2lkIGhwcm9iZV9pbml0X2xlYXNlZChzdHJ1Y3QgaHByb2JlICpocHJvYmUsIHN0cnVjdCB1cHJvYmUgKnVwcm9iZSwgaW50IHNyY3VfaWR4KVxcbitzdGF0aWMgdm9pZCBocHJvYmVfaW5pdF9sZWFzZWQoc3RydWN0IGhwcm9iZSAqaHByb2JlLCBzdHJ1Y3QgdXByb2JlICp1cHJvYmUsXFxuK1xcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgc3JjdV9jdHIgX19wZXJjcHUgKnNyY3Vfc2NwKVxcbiB7XFxuIFxcdFdBUk5fT04oIXVwcm9iZSk7XFxuIFxcdGhwcm9iZS1cXHUwMDNlc3RhdGUgPSBIUFJPQkVfTEVBU0VEO1xcbiBcXHRocHJvYmUtXFx1MDAzZXVwcm9iZSA9IHVwcm9iZTtcXG4tXFx0aHByb2JlLVxcdTAwM2VzcmN1X2lkeCA9IHNyY3VfaWR4O1xcbitcXHRocHJvYmUtXFx1MDAzZXNyY3Vfc2NwID0gc3JjdV9zY3A7XFxuIH1cXG4gXFxuIC8qIEluaXRpYWxpemUgaHByb2JlIGFzIHJlZmNvdW50ZWQgKFxcXCJzdGFibGVcXFwiKSB1cHJvYmUgKHVwcm9iZSBjYW4gYmUgTlVMTCkuICovXFxuQEAgLTcyMCw3ICs3MjEsNyBAQCBzdGF0aWMgdm9pZCBocHJvYmVfaW5pdF9zdGFibGUoc3RydWN0IGhwcm9iZSAqaHByb2JlLCBzdHJ1Y3QgdXByb2JlICp1cHJvYmUpXFxuIHtcXG4gXFx0aHByb2JlLVxcdTAwM2VzdGF0ZSA9IHVwcm9iZSA/IEhQUk9CRV9TVEFCTEUgOiBIUFJPQkVfR09ORTtcXG4gXFx0aHByb2JlLVxcdTAwM2V1cHJvYmUgPSB1cHJvYmU7XFxuLVxcdGhwcm9iZS1cXHUwMDNlc3JjdV9pZHggPSAtMTtcXG4rXFx0aHByb2JlLVxcdTAwM2VzcmN1X3NjcCA9IE5VTEw7XFxuIH1cXG4gXFxuIC8qXFxuQEAgLTc1Nyw3ICs3NTgsNyBAQCBzdGF0aWMgdm9pZCBocHJvYmVfZmluYWxpemUoc3RydWN0IGhwcm9iZSAqaHByb2JlLCBlbnVtIGhwcm9iZV9zdGF0ZSBoc3RhdGUpXFxuIHtcXG4gXFx0c3dpdGNoIChoc3RhdGUpIHtcXG4gXFx0Y2FzZSBIUFJPQkVfTEVBU0VEOlxcbi1cXHRcXHRfX3NyY3VfcmVhZF91bmxvY2soXFx1MDAyNnVyZXRwcm9iZXNfc3JjdSwgaHByb2JlLVxcdTAwM2VzcmN1X2lkeCk7XFxuK1xcdFxcdHNyY3VfdXBfcmVhZF9mYXN0KFxcdTAwMjZ1cmV0cHJvYmVzX3NyY3UsIGhwcm9iZS1cXHUwMDNlc3JjdV9zY3ApO1xcbiBcXHRcXHRicmVhaztcXG4gXFx0Y2FzZSBIUFJPQkVfU1RBQkxFOlxcbiBcXHRcXHRwdXRfdXByb2JlKGhwcm9iZS1cXHUwMDNldXByb2JlKTtcXG5AQCAtODI5LDcgKzgzMCw3IEBAIHN0YXRpYyBzdHJ1Y3QgdXByb2JlICpocHJvYmVfZXhwaXJlKHN0cnVjdCBocHJvYmUgKmhwcm9iZSwgYm9vbCBnZXQpXFxuIFxcdFxcdCAqL1xcbiBcXHRcXHRpZiAodHJ5X2NtcHhjaGcoXFx1MDAyNmhwcm9iZS1cXHUwMDNlc3RhdGUsIFxcdTAwMjZoc3RhdGUsIHVwcm9iZSA/IEhQUk9CRV9TVEFCTEUgOiBIUFJPQkVfR09ORSkpIHtcXG4gXFx0XFx0XFx0LyogV2Ugd29uIHRoZSByYWNlLCB3ZSBhcmUgdGhlIG9uZXMgdG8gdW5sb2NrIFNSQ1UgKi9cXG4tXFx0XFx0XFx0X19zcmN1X3JlYWRfdW5sb2NrKFxcdTAwMjZ1cmV0cHJvYmVzX3NyY3UsIGhwcm9iZS1cXHUwMDNlc3JjdV9pZHgpO1xcbitcXHRcXHRcXHRzcmN1X3VwX3JlYWRfZmFzdChcXHUwMDI2dXJldHByb2Jlc19zcmN1LCBocHJvYmUtXFx1MDAzZXNyY3Vfc2NwKTtcXG4gXFx0XFx0XFx0cmV0dXJuIGdldCA/IGdldF91cHJvYmUodXByb2JlKSA6IHVwcm9iZTtcXG4gXFx0XFx0fVxcbiBcXG5AQCAtMjA0NSw3ICsyMDQ2LDcgQEAgc3RhdGljIHZvaWQgcmlfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKnRpbWVyKVxcbiBcXHRzdHJ1Y3QgcmV0dXJuX2luc3RhbmNlICpyaTtcXG4gXFxuIFxcdC8qIFNSQ1UgcHJvdGVjdHMgdXByb2JlIGZyb20gcmV1c2UgZm9yIHRoZSBjbXB4Y2hnKCkgaW5zaWRlIGhwcm9iZV9leHBpcmUoKS4gKi9cXG4tXFx0Z3VhcmQoc3JjdSkoXFx1MDAyNnVyZXRwcm9iZXNfc3JjdSk7XFxuK1xcdGd1YXJkKHNyY3VfZmFzdF91cGRvd24pKFxcdTAwMjZ1cmV0cHJvYmVzX3NyY3UpO1xcbiBcXHQvKiBSQ1UgcHJvdGVjdHMgcmV0dXJuX2luc3RhbmNlIGZyb20gZnJlZWluZy4gKi9cXG4gXFx0Z3VhcmQocmN1KSgpO1xcbiBcXG5AQCAtMjE0Miw3ICsyMTQzLDcgQEAgc3RhdGljIGludCBkdXBfdXRhc2soc3RydWN0IHRhc2tfc3RydWN0ICp0LCBzdHJ1Y3QgdXByb2JlX3Rhc2sgKm9fdXRhc2spXFxuIFxcdHQtXFx1MDAzZXV0YXNrID0gbl91dGFzaztcXG4gXFxuIFxcdC8qIHByb3RlY3QgdXByb2JlcyBmcm9tIGZyZWVpbmcsIHdlJ2xsIG5lZWQgdHJ5X2dldF91cHJvYmUoKSB0aGVtICovXFxuLVxcdGd1YXJkKHNyY3UpKFxcdTAwMjZ1cmV0cHJvYmVzX3NyY3UpO1xcbitcXHRndWFyZChzcmN1X2Zhc3RfdXBkb3duKShcXHUwMDI2dXJldHByb2Jlc19zcmN1KTtcXG4gXFxuIFxcdHAgPSBcXHUwMDI2bl91dGFzay1cXHUwMDNlcmV0dXJuX2luc3RhbmNlcztcXG4gXFx0Zm9yIChvID0gb191dGFzay1cXHUwMDNlcmV0dXJuX2luc3RhbmNlczsgbzsgbyA9IG8tXFx1MDAzZW5leHQpIHtcXG5AQCAtMjI1NCw4ICsyMjU1LDggQEAgc3RhdGljIHZvaWQgcHJlcGFyZV91cmV0cHJvYmUoc3RydWN0IHVwcm9iZSAqdXByb2JlLCBzdHJ1Y3QgcHRfcmVncyAqcmVncyxcXG4ge1xcbiBcXHRzdHJ1Y3QgdXByb2JlX3Rhc2sgKnV0YXNrID0gY3VycmVudC1cXHUwMDNldXRhc2s7XFxuIFxcdHVuc2lnbmVkIGxvbmcgb3JpZ19yZXRfdmFkZHIsIHRyYW1wb2xpbmVfdmFkZHI7XFxuK1xcdHN0cnVjdCBzcmN1X2N0ciBfX3BlcmNwdSAqc3JjdV9zY3A7XFxuIFxcdGJvb2wgY2hhaW5lZDtcXG4tXFx0aW50IHNyY3VfaWR4O1xcbiBcXG4gXFx0aWYgKCFnZXRfeG9sX2FyZWEoKSlcXG4gXFx0XFx0Z290byBmcmVlO1xcbkBAIC0yMjkzLDggKzIyOTQsMTIgQEAgc3RhdGljIHZvaWQgcHJlcGFyZV91cmV0cHJvYmUoc3RydWN0IHVwcm9iZSAqdXByb2JlLCBzdHJ1Y3QgcHRfcmVncyAqcmVncyxcXG4gXFx0XFx0b3JpZ19yZXRfdmFkZHIgPSB1dGFzay1cXHUwMDNlcmV0dXJuX2luc3RhbmNlcy1cXHUwMDNlb3JpZ19yZXRfdmFkZHI7XFxuIFxcdH1cXG4gXFxuLVxcdC8qIF9fc3JjdV9yZWFkX2xvY2soKSBiZWNhdXNlIFNSQ1UgbG9jayBzdXJ2aXZlcyBzd2l0Y2ggdG8gdXNlciBzcGFjZSAqL1xcbi1cXHRzcmN1X2lkeCA9IF9fc3JjdV9yZWFkX2xvY2soXFx1MDAyNnVyZXRwcm9iZXNfc3JjdSk7XFxuK1xcdC8qXFxuK1xcdCAqIFVzZSBzcmN1X2Rvd25fcmVhZF9mYXN0KCkgYmVjYXVzZSB0aGUgU1JDVSBsb2NrIHN1cnZpdmVzIGEgc3dpdGNoIHRvXFxuK1xcdCAqIHVzZXIgc3BhY2UgYW5kIGNhbiBiZSB1bmxvY2tlZCBmcm9tIGEgZGlmZmVyZW50IGNvbnRleHQgYnkgcmlfdGltZXIoKVxcbitcXHQgKiBvciBkdXBfdXRhc2soKS5cXG4rXFx0ICovXFxuK1xcdHNyY3Vfc2NwID0gc3JjdV9kb3duX3JlYWRfZmFzdChcXHUwMDI2dXJldHByb2Jlc19zcmN1KTtcXG4gXFxuIFxcdHJpLVxcdTAwM2VmdW5jID0gaW5zdHJ1Y3Rpb25fcG9pbnRlcihyZWdzKTtcXG4gXFx0cmktXFx1MDAzZXN0YWNrID0gdXNlcl9zdGFja19wb2ludGVyKHJlZ3MpO1xcbkBAIC0yMzAzLDcgKzIzMDgsNyBAQCBzdGF0aWMgdm9pZCBwcmVwYXJlX3VyZXRwcm9iZShzdHJ1Y3QgdXByb2JlICp1cHJvYmUsIHN0cnVjdCBwdF9yZWdzICpyZWdzLFxcbiBcXG4gXFx0dXRhc2stXFx1MDAzZWRlcHRoKys7XFxuIFxcbi1cXHRocHJvYmVfaW5pdF9sZWFzZWQoXFx1MDAyNnJpLVxcdTAwM2VocHJvYmUsIHVwcm9iZSwgc3JjdV9pZHgpO1xcbitcXHRocHJvYmVfaW5pdF9sZWFzZWQoXFx1MDAyNnJpLVxcdTAwM2VocHJvYmUsIHVwcm9iZSwgc3JjdV9zY3ApO1xcbiBcXHRyaS1cXHUwMDNlbmV4dCA9IHV0YXNrLVxcdTAwM2VyZXR1cm5faW5zdGFuY2VzO1xcbiBcXHRyY3VfYXNzaWduX3BvaW50ZXIodXRhc2stXFx1MDAzZXJldHVybl9pbnN0YW5jZXMsIHJpKTtcXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDAxOjE1OjQwLjkwMzYxNDUwNVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODI5Njk5MzI4MTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVBST0JFU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInByZXBhcmVfdXJldHByb2JlXCIsXG4gICAgXCJocHJvYmVfZXhwaXJlXCIsXG4gICAgXCJocHJvYmVfZmluYWxpemVcIixcbiAgICBcInJpX3RpbWVyXCIsXG4gICAgXCJkdXBfdXRhc2tcIixcbiAgICBcImZyZWVfcmV0X2luc3RhbmNlXCIsXG4gICAgXCJ1cHJvYmVfaGFuZGxlX3RyYW1wb2xpbmVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgdXByb2JlcyBzdWJzeXN0ZW0gdG8gdXNlIHRoZSBuZXcgZmFzdCB1cC9kb3duIFNSQ1UgcmVhZCBsb2NrIHZhcmlhbnRzIChgc3JjdV9kb3duX3JlYWRfZmFzdGAgYW5kIGBzcmN1X3VwX3JlYWRfZmFzdGApIGZvciBgdXJldHByb2Jlc19zcmN1YC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgYWZmZWN0cyBob3cgdXByb2JlcyBhcmUgbGVhc2VkIGFuZCBleHBpcmVkLCBwYXJ0aWN1bGFybHkgZHVyaW5nIHRhc2sgZHVwbGljYXRpb24gYW5kIHRpbWVyIGNhbGxiYWNrcy4gSXQgaXMgcmVhY2hhYmxlIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDUwOWFhZGQ0YzFkNWU0Y2Y4MTI3NjBlYzI3YzM2NDZkOGY4OWU0NGRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCA3IDAxOjE1OjM4IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9zcmN1LmggYi9pbmNsdWRlL2xpbnV4L3NyY3UuaFxuaW5kZXggYTU0Y2U5ZTgwOGI5MmMuLjcyYzg2ZDNiMjNmMmU0IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9zcmN1LmhcbisrKyBiL2luY2x1ZGUvbGludXgvc3JjdS5oXG5AQCAtNjM4LDQgKzYzOCwxMSBAQCBERUZJTkVfTE9DS19HVUFSRF8xKHNyY3VfZmFzdF9ub3RyYWNlLCBzdHJ1Y3Qgc3JjdV9zdHJ1Y3QsXG4gREVDTEFSRV9MT0NLX0dVQVJEXzFfQVRUUlMoc3JjdV9mYXN0X25vdHJhY2UsIF9fYWNxdWlyZXNfc2hhcmVkKF9UKSwgX19yZWxlYXNlc19zaGFyZWQoKihzdHJ1Y3Qgc3JjdV9zdHJ1Y3QgKiopX1QpKVxuICNkZWZpbmUgY2xhc3Nfc3JjdV9mYXN0X25vdHJhY2VfY29uc3RydWN0b3IoX1QpIFdJVEhfTE9DS19HVUFSRF8xX0FUVFJTKHNyY3VfZmFzdF9ub3RyYWNlLCBfVClcbiBcbitERUZJTkVfTE9DS19HVUFSRF8xKHNyY3VfZmFzdF91cGRvd24sIHN0cnVjdCBzcmN1X3N0cnVjdCxcbitcdFx0ICAgIF9ULVx1MDAzZXNjcCA9IHNyY3VfcmVhZF9sb2NrX2Zhc3RfdXBkb3duKF9ULVx1MDAzZWxvY2spLFxuK1x0XHQgICAgc3JjdV9yZWFkX3VubG9ja19mYXN0X3VwZG93bihfVC1cdTAwM2Vsb2NrLCBfVC1cdTAwM2VzY3ApLFxuK1x0XHQgICAgc3RydWN0IHNyY3VfY3RyIF9fcGVyY3B1ICpzY3ApXG4rREVDTEFSRV9MT0NLX0dVQVJEXzFfQVRUUlMoc3JjdV9mYXN0X3VwZG93biwgX19hY3F1aXJlc19zaGFyZWQoX1QpLCBfX3JlbGVhc2VzX3NoYXJlZCgqKHN0cnVjdCBzcmN1X3N0cnVjdCAqKilfVCkpXG4rI2RlZmluZSBjbGFzc19zcmN1X2Zhc3RfdXBkb3duX2NvbnN0cnVjdG9yKF9UKSBXSVRIX0xPQ0tfR1VBUkRfMV9BVFRSUyhzcmN1X2Zhc3RfdXBkb3duLCBfVClcbitcbiAjZW5kaWZcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3Vwcm9iZXMuaCBiL2luY2x1ZGUvbGludXgvdXByb2Jlcy5oXG5pbmRleCBmNTQ4ZmVhMmFkZWM4Zi4uZjNiMDc3NTNjMmYzZDggMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3Vwcm9iZXMuaFxuKysrIGIvaW5jbHVkZS9saW51eC91cHJvYmVzLmhcbkBAIC0yNSw2ICsyNSw3IEBAIHN0cnVjdCBtbV9zdHJ1Y3Q7XG4gc3RydWN0IGlub2RlO1xuIHN0cnVjdCBub3RpZmllcl9ibG9jaztcbiBzdHJ1Y3QgcGFnZTtcbitzdHJ1Y3Qgc3JjdV9jdHI7XG4gXG4gLypcbiAgKiBBbGxvd2VkIHJldHVybiB2YWx1ZXMgZnJvbSB1cHJvYmUgY29uc3VtZXIncyBoYW5kbGVyIGNhbGxiYWNrXG5AQCAtMTA2LDcgKzEwNyw3IEBAIGVudW0gaHByb2JlX3N0YXRlIHtcbiAgKiAgICAgdW5kZXJseWluZyB1cHJvYmUgaXMgbm90IGd1YXJhbnRlZWQgYW55bW9yZS4gX19VUFJPQkVfREVBRCBpcyBqdXN0IGFuXG4gICogICAgIGludGVybmFsIG1hcmtlciBhbmQgaXMgaGFuZGxlZCB0cmFuc3BhcmVudGx5IGJ5IGhwcm9iZV9mZXRjaCgpIGhlbHBlci5cbiAgKlxuLSAqIFdoZW4gdXByb2JlIGlzIFNSQ1UtcHJvdGVjdGVkLCB3ZSBhbHNvIHJlY29yZCBzcmN1X2lkeCB2YWx1ZSwgbmVjZXNzYXJ5IGZvclxuKyAqIFdoZW4gdXByb2JlIGlzIFNSQ1UtcHJvdGVjdGVkLCB3ZSBhbHNvIHJlY29yZCBzcmN1X3NjcCB2YWx1ZSwgbmVjZXNzYXJ5IGZvclxuICAqIFNSQ1UgdW5sb2NraW5nLlxuICAqXG4gICogU2VlIGhwcm9iZV9leHBpcmUoKSBhbmQgaHByb2JlX2ZldGNoKCkgZm9yIGRldGFpbHMgb2YgcmFjZS1mcmVlIHVwcm9iZVxuQEAgLTExNSw3ICsxMTYsNyBAQCBlbnVtIGhwcm9iZV9zdGF0ZSB7XG4gICovXG4gc3RydWN0IGhwcm9iZSB7XG4gXHRlbnVtIGhwcm9iZV9zdGF0ZSBzdGF0ZTtcbi1cdGludCBzcmN1X2lkeDtcbitcdHN0cnVjdCBzcmN1X2N0ciBfX3BlcmNwdSAqc3JjdV9zY3A7XG4gXHRzdHJ1Y3QgdXByb2JlICp1cHJvYmU7XG4gfTtcbiBcbmRpZmYgLS1naXQgYS9rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYyBiL2tlcm5lbC9ldmVudHMvdXByb2Jlcy5jXG5pbmRleCA0MDg0ZTkyNmUyODQ0OC4uYWZhNDkxYjBiZDNmOTAgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuY1xuKysrIGIva2VybmVsL2V2ZW50cy91cHJvYmVzLmNcbkBAIC01NCw3ICs1NCw3IEBAIHN0YXRpYyBzdHJ1Y3QgbXV0ZXggdXByb2Jlc19tbWFwX211dGV4W1VQUk9CRVNfSEFTSF9TWl07XG4gREVGSU5FX1NUQVRJQ19QRVJDUFVfUldTRU0oZHVwX21tYXBfc2VtKTtcbiBcbiAvKiBDb3ZlcnMgcmV0dXJuX2luc3RhbmNlJ3MgdXByb2JlIGxpZmV0aW1lLiAqL1xuLURFRklORV9TVEFUSUNfU1JDVSh1cmV0cHJvYmVzX3NyY3UpO1xuK0RFRklORV9TVEFUSUNfU1JDVV9GQVNUX1VQRE9XTih1cmV0cHJvYmVzX3NyY3UpO1xuIFxuIC8qIEhhdmUgYSBjb3B5IG9mIG9yaWdpbmFsIGluc3RydWN0aW9uICovXG4gI2RlZmluZSBVUFJPQkVfQ09QWV9JTlNOXHQwXG5AQCAtNzA3LDEyICs3MDcsMTMgQEAgc3RhdGljIHZvaWQgcHV0X3Vwcm9iZShzdHJ1Y3QgdXByb2JlICp1cHJvYmUpXG4gfVxuIFxuIC8qIEluaXRpYWxpemUgaHByb2JlIGFzIFNSQ1UtcHJvdGVjdGVkIFwibGVhc2VkXCIgdXByb2JlICovXG4tc3RhdGljIHZvaWQgaHByb2JlX2luaXRfbGVhc2VkKHN0cnVjdCBocHJvYmUgKmhwcm9iZSwgc3RydWN0IHVwcm9iZSAqdXByb2JlLCBpbnQgc3JjdV9pZHgpXG4rc3RhdGljIHZvaWQgaHByb2JlX2luaXRfbGVhc2VkKHN0cnVjdCBocHJvYmUgKmhwcm9iZSwgc3RydWN0IHVwcm9iZSAqdXByb2JlLFxuK1x0XHRcdCAgICAgICBzdHJ1Y3Qgc3JjdV9jdHIgX19wZXJjcHUgKnNyY3Vfc2NwKVxuIHtcbiBcdFdBUk5fT04oIXVwcm9iZSk7XG4gXHRocHJvYmUtXHUwMDNlc3RhdGUgPSBIUFJPQkVfTEVBU0VEO1xuIFx0aHByb2JlLVx1MDAzZXVwcm9iZSA9IHVwcm9iZTtcbi1cdGhwcm9iZS1cdTAwM2VzcmN1X2lkeCA9IHNyY3VfaWR4O1xuK1x0aHByb2JlLVx1MDAzZXNyY3Vfc2NwID0gc3JjdV9zY3A7XG4gfVxuIFxuIC8qIEluaXRpYWxpemUgaHByb2JlIGFzIHJlZmNvdW50ZWQgKFwic3RhYmxlXCIpIHVwcm9iZSAodXByb2JlIGNhbiBiZSBOVUxMKS4gKi9cbkBAIC03MjAsNyArNzIxLDcgQEAgc3RhdGljIHZvaWQgaHByb2JlX2luaXRfc3RhYmxlKHN0cnVjdCBocHJvYmUgKmhwcm9iZSwgc3RydWN0IHVwcm9iZSAqdXByb2JlKVxuIHtcbiBcdGhwcm9iZS1cdTAwM2VzdGF0ZSA9IHVwcm9iZSA/IEhQUk9CRV9TVEFCTEUgOiBIUFJPQkVfR09ORTtcbiBcdGhwcm9iZS1cdTAwM2V1cHJvYmUgPSB1cHJvYmU7XG4tXHRocHJvYmUtXHUwMDNlc3JjdV9pZHggPSAtMTtcbitcdGhwcm9iZS1cdTAwM2VzcmN1X3NjcCA9IE5VTEw7XG4gfVxuIFxuIC8qXG5AQCAtNzU3LDcgKzc1OCw3IEBAIHN0YXRpYyB2b2lkIGhwcm9iZV9maW5hbGl6ZShzdHJ1Y3QgaHByb2JlICpocHJvYmUsIGVudW0gaHByb2JlX3N0YXRlIGhzdGF0ZSlcbiB7XG4gXHRzd2l0Y2ggKGhzdGF0ZSkge1xuIFx0Y2FzZSBIUFJPQkVfTEVBU0VEOlxuLVx0XHRfX3NyY3VfcmVhZF91bmxvY2soXHUwMDI2dXJldHByb2Jlc19zcmN1LCBocHJvYmUtXHUwMDNlc3JjdV9pZHgpO1xuK1x0XHRzcmN1X3VwX3JlYWRfZmFzdChcdTAwMjZ1cmV0cHJvYmVzX3NyY3UsIGhwcm9iZS1cdTAwM2VzcmN1X3NjcCk7XG4gXHRcdGJyZWFrO1xuIFx0Y2FzZSBIUFJPQkVfU1RBQkxFOlxuIFx0XHRwdXRfdXByb2JlKGhwcm9iZS1cdTAwM2V1cHJvYmUpO1xuQEAgLTgyOSw3ICs4MzAsNyBAQCBzdGF0aWMgc3RydWN0IHVwcm9iZSAqaHByb2JlX2V4cGlyZShzdHJ1Y3QgaHByb2JlICpocHJvYmUsIGJvb2wgZ2V0KVxuIFx0XHQgKi9cbiBcdFx0aWYgKHRyeV9jbXB4Y2hnKFx1MDAyNmhwcm9iZS1cdTAwM2VzdGF0ZSwgXHUwMDI2aHN0YXRlLCB1cHJvYmUgPyBIUFJPQkVfU1RBQkxFIDogSFBST0JFX0dPTkUpKSB7XG4gXHRcdFx0LyogV2Ugd29uIHRoZSByYWNlLCB3ZSBhcmUgdGhlIG9uZXMgdG8gdW5sb2NrIFNSQ1UgKi9cbi1cdFx0XHRfX3NyY3VfcmVhZF91bmxvY2soXHUwMDI2dXJldHByb2Jlc19zcmN1LCBocHJvYmUtXHUwMDNlc3JjdV9pZHgpO1xuK1x0XHRcdHNyY3VfdXBfcmVhZF9mYXN0KFx1MDAyNnVyZXRwcm9iZXNfc3JjdSwgaHByb2JlLVx1MDAzZXNyY3Vfc2NwKTtcbiBcdFx0XHRyZXR1cm4gZ2V0ID8gZ2V0X3Vwcm9iZSh1cHJvYmUpIDogdXByb2JlO1xuIFx0XHR9XG4gXG5AQCAtMjA0NSw3ICsyMDQ2LDcgQEAgc3RhdGljIHZvaWQgcmlfdGltZXIoc3RydWN0IHRpbWVyX2xpc3QgKnRpbWVyKVxuIFx0c3RydWN0IHJldHVybl9pbnN0YW5jZSAqcmk7XG4gXG4gXHQvKiBTUkNVIHByb3RlY3RzIHVwcm9iZSBmcm9tIHJldXNlIGZvciB0aGUgY21weGNoZygpIGluc2lkZSBocHJvYmVfZXhwaXJlKCkuICovXG4tXHRndWFyZChzcmN1KShcdTAwMjZ1cmV0cHJvYmVzX3NyY3UpO1xuK1x0Z3VhcmQoc3JjdV9mYXN0X3VwZG93bikoXHUwMDI2dXJldHByb2Jlc19zcmN1KTtcbiBcdC8qIFJDVSBwcm90ZWN0cyByZXR1cm5faW5zdGFuY2UgZnJvbSBmcmVlaW5nLiAqL1xuIFx0Z3VhcmQocmN1KSgpO1xuIFxuQEAgLTIxNDIsNyArMjE0Myw3IEBAIHN0YXRpYyBpbnQgZHVwX3V0YXNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqdCwgc3RydWN0IHVwcm9iZV90YXNrICpvX3V0YXNrKVxuIFx0dC1cdTAwM2V1dGFzayA9IG5fdXRhc2s7XG4gXG4gXHQvKiBwcm90ZWN0IHVwcm9iZXMgZnJvbSBmcmVlaW5nLCB3ZSdsbCBuZWVkIHRyeV9nZXRfdXByb2JlKCkgdGhlbSAqL1xuLVx0Z3VhcmQoc3JjdSkoXHUwMDI2dXJldHByb2Jlc19zcmN1KTtcbitcdGd1YXJkKHNyY3VfZmFzdF91cGRvd24pKFx1MDAyNnVyZXRwcm9iZXNfc3JjdSk7XG4gXG4gXHRwID0gXHUwMDI2bl91dGFzay1cdTAwM2VyZXR1cm5faW5zdGFuY2VzO1xuIFx0Zm9yIChvID0gb191dGFzay1cdTAwM2VyZXR1cm5faW5zdGFuY2VzOyBvOyBvID0gby1cdTAwM2VuZXh0KSB7XG5AQCAtMjI1NCw4ICsyMjU1LDggQEAgc3RhdGljIHZvaWQgcHJlcGFyZV91cmV0cHJvYmUoc3RydWN0IHVwcm9iZSAqdXByb2JlLCBzdHJ1Y3QgcHRfcmVncyAqcmVncyxcbiB7XG4gXHRzdHJ1Y3QgdXByb2JlX3Rhc2sgKnV0YXNrID0gY3VycmVudC1cdTAwM2V1dGFzaztcbiBcdHVuc2lnbmVkIGxvbmcgb3JpZ19yZXRfdmFkZHIsIHRyYW1wb2xpbmVfdmFkZHI7XG4rXHRzdHJ1Y3Qgc3JjdV9jdHIgX19wZXJjcHUgKnNyY3Vfc2NwO1xuIFx0Ym9vbCBjaGFpbmVkO1xuLVx0aW50IHNyY3VfaWR4O1xuIFxuIFx0aWYgKCFnZXRfeG9sX2FyZWEoKSlcbiBcdFx0Z290byBmcmVlO1xuQEAgLTIyOTMsOCArMjI5NCwxMiBAQCBzdGF0aWMgdm9pZCBwcmVwYXJlX3VyZXRwcm9iZShzdHJ1Y3QgdXByb2JlICp1cHJvYmUsIHN0cnVjdCBwdF9yZWdzICpyZWdzLFxuIFx0XHRvcmlnX3JldF92YWRkciA9IHV0YXNrLVx1MDAzZXJldHVybl9pbnN0YW5jZXMtXHUwMDNlb3JpZ19yZXRfdmFkZHI7XG4gXHR9XG4gXG4tXHQvKiBfX3NyY3VfcmVhZF9sb2NrKCkgYmVjYXVzZSBTUkNVIGxvY2sgc3Vydml2ZXMgc3dpdGNoIHRvIHVzZXIgc3BhY2UgKi9cbi1cdHNyY3VfaWR4ID0gX19zcmN1X3JlYWRfbG9jayhcdTAwMjZ1cmV0cHJvYmVzX3NyY3UpO1xuK1x0LypcbitcdCAqIFVzZSBzcmN1X2Rvd25fcmVhZF9mYXN0KCkgYmVjYXVzZSB0aGUgU1JDVSBsb2NrIHN1cnZpdmVzIGEgc3dpdGNoIHRvXG4rXHQgKiB1c2VyIHNwYWNlIGFuZCBjYW4gYmUgdW5sb2NrZWQgZnJvbSBhIGRpZmZlcmVudCBjb250ZXh0IGJ5IHJpX3RpbWVyKClcbitcdCAqIG9yIGR1cF91dGFzaygpLlxuK1x0ICovXG4rXHRzcmN1X3NjcCA9IHNyY3VfZG93bl9yZWFkX2Zhc3QoXHUwMDI2dXJldHByb2Jlc19zcmN1KTtcbiBcbiBcdHJpLVx1MDAzZWZ1bmMgPSBpbnN0cnVjdGlvbl9wb2ludGVyKHJlZ3MpO1xuIFx0cmktXHUwMDNlc3RhY2sgPSB1c2VyX3N0YWNrX3BvaW50ZXIocmVncyk7XG5AQCAtMjMwMyw3ICsyMzA4LDcgQEAgc3RhdGljIHZvaWQgcHJlcGFyZV91cmV0cHJvYmUoc3RydWN0IHVwcm9iZSAqdXByb2JlLCBzdHJ1Y3QgcHRfcmVncyAqcmVncyxcbiBcbiBcdHV0YXNrLVx1MDAzZWRlcHRoKys7XG4gXG4tXHRocHJvYmVfaW5pdF9sZWFzZWQoXHUwMDI2cmktXHUwMDNlaHByb2JlLCB1cHJvYmUsIHNyY3VfaWR4KTtcbitcdGhwcm9iZV9pbml0X2xlYXNlZChcdTAwMjZyaS1cdTAwM2VocHJvYmUsIHVwcm9iZSwgc3JjdV9zY3ApO1xuIFx0cmktXHUwMDNlbmV4dCA9IHV0YXNrLVx1MDAzZXJldHVybl9pbnN0YW5jZXM7XG4gXHRyY3VfYXNzaWduX3BvaW50ZXIodXRhc2stXHUwMDNlcmV0dXJuX2luc3RhbmNlcywgcmkpO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDE6MTU6NDAuOTAzNjE2NTg1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA1Njk3NTk3MDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgVGhpcyBLZXJuZWwgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIGhlcmUgdGhhdCdzIG1ha2luZyBzb21lIHByZXR0eSBzaWduaWZpY2FudCBjaGFuZ2VzIHRvIHVwcm9iZXMgYW5kIFNSQ1UuIFRoZSBjb3JlIG9mIGl0IHNlZW1zIHRvIGJlIGFib3V0IG9wdGltaXppbmcgU1JDVSwgaW50cm9kdWNpbmcgdGhpcyBgc3JjdV9mYXN0X3VwZG93bmAgYW5kIGNoYW5naW5nIGB1cmV0cHJvYmVzX3NyY3VgIHRvIHVzZSBgREVGSU5FX1NUQVRJQ19TUkNVX0ZBU1RfVVBET1dOYC4gIEJhc2ljYWxseSwgaXQgbG9va3MgbGlrZSB0aGV5J3JlIHRyeWluZyB0byBzcGVlZCB1cCByZWFkIG9wZXJhdGlvbnMgd2l0aCBgc3JjdV9kb3duX3JlYWRfZmFzdGAgcmVwbGFjaW5nIGBfX3NyY3VfcmVhZF9sb2NrYCBhbmQgYHNyY3VfdXBfcmVhZF9mYXN0YCByZXBsYWNpbmcgYF9fc3JjdV9yZWFkX3VubG9ja2AuIEZ1bmN0aW9uYWxseSwgdGhpcyBpcyBhIGRlZmluaXRlIGNoYW5nZSBpbiBob3cgdXByb2JlcyBhbmQgU1JDVSBpbnRlcmFjdCB3aXRoaW4gdGhlIGtlcm5lbCwgc28gdGhpcyBuZWVkcyB0byBiZSBmdXp6ZWQgaGVhdmlseS5cblxuSSBuZWVkIHRvIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cyBvbiB0aGUgc3BlY2lmaWMgZnVuY3Rpb25zIHRoYXQgdGhpcyBwYXRjaCBhY3R1YWxseSBtb2RpZmllczogYGhwcm9iZV9pbml0X2xlYXNlZGAsIGBocHJvYmVfaW5pdF9zdGFibGVgLCBgaHByb2JlX2ZpbmFsaXplYCwgYGhwcm9iZV9leHBpcmVgLCBgcmlfdGltZXJgLCBgZHVwX3V0YXNrYCwgYW5kIGBwcmVwYXJlX3VyZXRwcm9iZWAuIFRoZXNlIGFyZSB0aGUga2V5IGFyZWFzIHdoZXJlIHRoZSBuZXcgU1JDVSBtZWNoYW5pc21zIGFyZSBnb2luZyB0byBiZSBpbnRlcmFjdGluZy5cblxuQWxyaWdodCwgSSBuZWVkIHRvIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IGBDT05GSUdfVVBST0JFU2AgaXMgZW5hYmxlZC4gU2luY2UgU1JDVSBpcyBjb3JlLCBJIGRvbid0IG5lZWQgdG8gY2hlY2sgZm9yIGFueSBzcGVjaWFsIGNvbmZpZ3VyYXRpb25zIGZvciBTUkNVIGl0c2VsZi4gSSdsbCBuZWVkIHRvIHVzZSBteSB0b29scyB0byB2ZXJpZnkgdGhhdCBgQ09ORklHX1VQUk9CRVNgIGlzIHNldCBjb3JyZWN0bHkgYmVmb3JlIEkgZ2V0IHN0YXJ0ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwMDEsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTcsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwMToxNTo1MS40NzMzNzg2OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NjMyMzE4Mzc0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkNPTkZJR19VUFJPQkVTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybS9wcm9iZXMvTWFrZWZpbGUtMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuYXJjaC9hcm0vcHJvYmVzL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX1VQUk9CRVMpXFx0XFx0Kz0gZGVjb2RlLm8gZGVjb2RlLWFybS5vIHVwcm9iZXMvXFxuYXJjaC9hcm0vcHJvYmVzL01ha2VmaWxlLTMtb2JqLSQoQ09ORklHX0tQUk9CRVMpXFx0XFx0Kz0gZGVjb2RlLm8ga3Byb2Jlcy9cXG4tLVxcbmFyY2gvYXJtL3Byb2Jlcy91cHJvYmVzL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuYXJjaC9hcm0vcHJvYmVzL3Vwcm9iZXMvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfVVBST0JFUylcXHRcXHQrPSBjb3JlLm8gYWN0aW9ucy1hcm0ub1xcbi0tXFxuYXJjaC9hcm02NC9pbmNsdWRlL2FzbS91cHJvYmVzLmg9MzE9aW50IHVwcm9iZV9icmtfaGFuZGxlcihzdHJ1Y3QgcHRfcmVncyAqcmVncywgdW5zaWduZWQgbG9uZyBlc3IpO1xcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vdXByb2Jlcy5oOjMyOiNpZmRlZiBDT05GSUdfVVBST0JFU1xcbmFyY2gvYXJtNjQvaW5jbHVkZS9hc20vdXByb2Jlcy5oLTMzLWludCB1cHJvYmVfc2luZ2xlX3N0ZXBfaGFuZGxlcihzdHJ1Y3QgcHRfcmVncyAqcmVncywgdW5zaWduZWQgbG9uZyBlc3IpO1xcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvZGVidWctbW9uaXRvcnMuYz0yNTQ9dm9pZCBkb19lbDBfYnJrNjQodW5zaWduZWQgbG9uZyBlc3IsIHN0cnVjdCBwdF9yZWdzICpyZWdzKVxcbmFyY2gvYXJtNjQva2VybmVsL2RlYnVnLW1vbml0b3JzLmMtMjU1LXtcXG5hcmNoL2FybTY0L2tlcm5lbC9kZWJ1Zy1tb25pdG9ycy5jOjI1NjpcXHRpZiAoSVNfRU5BQkxFRChDT05GSUdfVVBST0JFUykgXFx1MDAyNlxcdTAwMjZcXG5hcmNoL2FybTY0L2tlcm5lbC9kZWJ1Zy1tb25pdG9ycy5jLTI1Ny1cXHRcXHRlc3JfYnJrX2NvbW1lbnQoZXNyKSA9PSBVUFJPQkVTX0JSS19JTU0gXFx1MDAyNlxcdTAwMjZcXG4tLVxcbmFyY2gvYXJtNjQva2VybmVsL3Byb2Jlcy9NYWtlZmlsZT0yPW9iai0kKENPTkZJR19LUFJPQkVTKVxcdFxcdCs9IGtwcm9iZXMubyBkZWNvZGUtaW5zbi5vXFx0XFxcXFxcbi0tXFxuYXJjaC9hcm02NC9rZXJuZWwvcHJvYmVzL01ha2VmaWxlLTQtXFx0XFx0XFx0XFx0ICAgc2ltdWxhdGUtaW5zbi5vXFxuYXJjaC9hcm02NC9rZXJuZWwvcHJvYmVzL01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX1VQUk9CRVMpXFx0XFx0Kz0gdXByb2Jlcy5vIGRlY29kZS1pbnNuLm9cXHRcXFxcXFxuYXJjaC9hcm02NC9rZXJuZWwvcHJvYmVzL01ha2VmaWxlLTYtXFx0XFx0XFx0XFx0ICAgc2ltdWxhdGUtaW5zbi5vXFxuLS1cXG5hcmNoL2Nza3kva2VybmVsL3Byb2Jlcy9NYWtlZmlsZT00PW9iai0kKENPTkZJR19LUFJPQkVTX09OX0ZUUkFDRSlcXHQrPSBmdHJhY2Uub1xcbmFyY2gvY3NreS9rZXJuZWwvcHJvYmVzL01ha2VmaWxlOjU6b2JqLSQoQ09ORklHX1VQUk9CRVMpXFx0XFx0Kz0gdXByb2Jlcy5vIGRlY29kZS1pbnNuLm8gc2ltdWxhdGUtaW5zbi5vXFxuYXJjaC9jc2t5L2tlcm5lbC9wcm9iZXMvTWFrZWZpbGUtNi1cXG4tLVxcbmFyY2gvY3NreS9rZXJuZWwvdHJhcHMuYz0xNjk9YXNtbGlua2FnZSB2b2lkIGRvX3RyYXBfYmtwdChzdHJ1Y3QgcHRfcmVncyAqcmVncylcXG4tLVxcbmFyY2gvY3NreS9rZXJuZWwvdHJhcHMuYy0xNzQtI2VuZGlmXFxuYXJjaC9jc2t5L2tlcm5lbC90cmFwcy5jOjE3NTojaWZkZWYgQ09ORklHX1VQUk9CRVNcXG5hcmNoL2Nza3kva2VybmVsL3RyYXBzLmMtMTc2LVxcdGlmICh1cHJvYmVfc2luZ2xlX3N0ZXBfaGFuZGxlcihyZWdzKSlcXG4tLVxcbmFyY2gvY3NreS9rZXJuZWwvdHJhcHMuYz0xODg9YXNtbGlua2FnZSB2b2lkIGRvX3RyYXBfaWxsaW5zbihzdHJ1Y3QgcHRfcmVncyAqcmVncylcXG4tLVxcbmFyY2gvY3NreS9rZXJuZWwvdHJhcHMuYy0xOTUtI2VuZGlmXFxuYXJjaC9jc2t5L2tlcm5lbC90cmFwcy5jOjE5NjojaWZkZWYgQ09ORklHX1VQUk9CRVNcXG5hcmNoL2Nza3kva2VybmVsL3RyYXBzLmMtMTk3LVxcdGlmICh1cHJvYmVfYnJlYWtwb2ludF9oYW5kbGVyKHJlZ3MpKVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vdXByb2Jlcy5oPTIzPXN0cnVjdCBhcmNoX3Vwcm9iZV90YXNrIHtcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL3Vwcm9iZXMuaC0yNi1cXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS91cHJvYmVzLmg6Mjc6I2lmZGVmIENPTkZJR19VUFJPQkVTXFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vdXByb2Jlcy5oLTI4LWJvb2wgdXByb2JlX2JyZWFrcG9pbnRfaGFuZGxlcihzdHJ1Y3QgcHRfcmVncyAqcmVncyk7XFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vdXByb2Jlcy5oPTI5PWJvb2wgdXByb2JlX3NpbmdsZXN0ZXBfaGFuZGxlcihzdHJ1Y3QgcHRfcmVncyAqcmVncyk7XFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vdXByb2Jlcy5oOjMwOiNlbHNlIC8qICFDT05GSUdfVVBST0JFUyAqL1xcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL3Vwcm9iZXMuaC0zMS1zdGF0aWMgaW5saW5lIGJvb2wgdXByb2JlX2JyZWFrcG9pbnRfaGFuZGxlcihzdHJ1Y3QgcHRfcmVncyAqcmVncykgeyByZXR1cm4gZmFsc2U7IH1cXG5hcmNoL2xvb25nYXJjaC9pbmNsdWRlL2FzbS91cHJvYmVzLmg9MzI9c3RhdGljIGlubGluZSBib29sIHVwcm9iZV9zaW5nbGVzdGVwX2hhbmRsZXIoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpIHsgcmV0dXJuIGZhbHNlOyB9XFxuYXJjaC9sb29uZ2FyY2gvaW5jbHVkZS9hc20vdXByb2Jlcy5oOjMzOiNlbmRpZiAvKiBDT05GSUdfVVBST0JFUyAqL1xcbmFyY2gvbG9vbmdhcmNoL2luY2x1ZGUvYXNtL3Vwcm9iZXMuaC0zNC1cXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2tlcm5lbC9NYWtlZmlsZT03Nz1vYmotJChDT05GSUdfUkVUSE9PSylcXHRcXHQrPSByZXRob29rLm8gcmV0aG9va190cmFtcG9saW5lLm9cXG5hcmNoL2xvb25nYXJjaC9rZXJuZWwvTWFrZWZpbGU6Nzg6b2JqLSQoQ09ORklHX1VQUk9CRVMpXFx0XFx0Kz0gdXByb2Jlcy5vXFxuYXJjaC9sb29uZ2FyY2gva2VybmVsL01ha2VmaWxlLTc5LVxcbi0tXFxuYXJjaC9taXBzL2tlcm5lbC9NYWtlZmlsZT0xMDU9b2JqLSQoQ09ORklHX0pVTVBfTEFCRUwpXFx0Kz0ganVtcF9sYWJlbC5vXFxuYXJjaC9taXBzL2tlcm5lbC9NYWtlZmlsZToxMDY6b2JqLSQoQ09ORklHX1VQUk9CRVMpXFx0XFx0Kz0gdXByb2Jlcy5vXFxuYXJjaC9taXBzL2tlcm5lbC9NYWtlZmlsZS0xMDctXFxuLS1cXG5hcmNoL21pcHMva2VybmVsL2JyYW5jaC5jPTg0OT1pbnQgX19jb21wdXRlX3JldHVybl9lcGMoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXFxuLS1cXG5hcmNoL21pcHMva2VybmVsL2JyYW5jaC5jLTg3NS1cXG5hcmNoL21pcHMva2VybmVsL2JyYW5jaC5jOjg3NjojaWYgKGRlZmluZWQgQ09ORklHX0tQUk9CRVMpIHx8IChkZWZpbmVkIENPTkZJR19VUFJPQkVTKVxcbmFyY2gvbWlwcy9rZXJuZWwvYnJhbmNoLmMtODc3LVxcbi0tXFxuYXJjaC9taXBzL2tlcm5lbC9icmFuY2guYz05MDY9RVhQT1JUX1NZTUJPTF9HUEwoX19pbnNuX2lzX2NvbXBhY3RfYnJhbmNoKTtcXG5hcmNoL21pcHMva2VybmVsL2JyYW5jaC5jLTkwNy1cXG5hcmNoL21pcHMva2VybmVsL2JyYW5jaC5jOjkwODojZW5kaWYgIC8qIENPTkZJR19LUFJPQkVTIHx8IENPTkZJR19VUFJPQkVTICovXFxuLS1cXG5hcmNoL3Bvd2VycGMva2VybmVsL01ha2VmaWxlPTE0MD1vYmotJChDT05GSUdfS1BST0JFU19PTl9GVFJBQ0UpXFx0Kz0ga3Byb2Jlcy1mdHJhY2Uub1xcbmFyY2gvcG93ZXJwYy9rZXJuZWwvTWFrZWZpbGU6MTQxOm9iai0kKENPTkZJR19VUFJPQkVTKVxcdFxcdCs9IHVwcm9iZXMub1xcbmFyY2gvcG93ZXJwYy9rZXJuZWwvTWFrZWZpbGUtMTQyLW9iai0kKENPTkZJR19SRVRIT09LKSAgICAgICAgICAgKz0gcmV0aG9vay5vXFxuLS1cXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3Vwcm9iZXMuaD0yNz1zdHJ1Y3QgYXJjaF91cHJvYmUge1xcbi0tXFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS91cHJvYmVzLmgtMzYtXFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS91cHJvYmVzLmg6Mzc6I2lmZGVmIENPTkZJR19VUFJPQkVTXFxuYXJjaC9yaXNjdi9pbmNsdWRlL2FzbS91cHJvYmVzLmgtMzgtYm9vbCB1cHJvYmVfYnJlYWtwb2ludF9oYW5kbGVyKHN0cnVjdCBwdF9yZWdzICpyZWdzKTtcXG4tLVxcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vdXByb2Jlcy5oPTQ2PXN0YXRpYyBpbmxpbmUgYm9vbCB1cHJvYmVfc2luZ2xlX3N0ZXBfaGFuZGxlcihzdHJ1Y3QgcHRfcmVncyAqcmVncylcXG4tLVxcbmFyY2gvcmlzY3YvaW5jbHVkZS9hc20vdXByb2Jlcy5oLTQ5LX1cXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3Vwcm9iZXMuaDo1MDojZW5kaWYgLyogQ09ORklHX1VQUk9CRVMgKi9cXG5hcmNoL3Jpc2N2L2luY2x1ZGUvYXNtL3Vwcm9iZXMuaC01MS0jZW5kaWYgLyogX0FTTV9SSVNDVl9VUFJPQkVTX0ggKi9cXG4tLVxcbmFyY2gvcmlzY3Yva2VybmVsL3Byb2Jlcy9NYWtlZmlsZT0zPW9iai0kKENPTkZJR19SRVRIT09LKVxcdFxcdCs9IHJldGhvb2subyByZXRob29rX3RyYW1wb2xpbmUub1xcbmFyY2gvcmlzY3Yva2VybmVsL3Byb2Jlcy9NYWtlZmlsZTo0Om9iai0kKENPTkZJR19VUFJPQkVTKVxcdFxcdCs9IHVwcm9iZXMubyBkZWNvZGUtaW5zbi5vIHNpbXVsYXRlLWluc24ub1xcbmFyY2gvcmlzY3Yva2VybmVsL3Byb2Jlcy9NYWtlZmlsZS01LUNGTEFHU19SRU1PVkVfc2ltdWxhdGUtaW5zbi5vID0gJChDQ19GTEFHU19GVFJBQ0UpXFxuLS1cXG5hcmNoL3MzOTAva2VybmVsL01ha2VmaWxlPTY4PW9iai0kKENPTkZJR19WTUNPUkVfSU5GTylcXHQrPSB2bWNvcmVfaW5mby5vXFxuYXJjaC9zMzkwL2tlcm5lbC9NYWtlZmlsZTo2OTpvYmotJChDT05GSUdfVVBST0JFUylcXHRcXHQrPSB1cHJvYmVzLm9cXG5hcmNoL3MzOTAva2VybmVsL01ha2VmaWxlLTcwLW9iai0kKENPTkZJR19KVU1QX0xBQkVMKVxcdCs9IGp1bXBfbGFiZWwub1xcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC90cmFwcy5jPTE0MD1zdGF0aWMgdm9pZCBpbGxlZ2FsX29wKHN0cnVjdCBwdF9yZWdzICpyZWdzKVxcbi0tXFxuYXJjaC9zMzkwL2tlcm5lbC90cmFwcy5jLTE1NS1cXHRcXHRcXHRcXHRzaWduYWwgPSBTSUdJTEw7XFxuYXJjaC9zMzkwL2tlcm5lbC90cmFwcy5jOjE1NjojaWZkZWYgQ09ORklHX1VQUk9CRVNcXG5hcmNoL3MzOTAva2VybmVsL3RyYXBzLmMtMTU3LVxcdFxcdH0gZWxzZSBpZiAob3Bjb2RlID09IFVQUk9CRV9TV0JQX0lOU04pIHtcXG4tLVxcbmFyY2gvczM5MC9saWIvTWFrZWZpbGU9MTM9bGliLSQoQ09ORklHX0tQUk9CRVMpICs9IHByb2Jlcy5vXFxuYXJjaC9zMzkwL2xpYi9NYWtlZmlsZToxNDpsaWItJChDT05GSUdfVVBST0JFUykgKz0gcHJvYmVzLm9cXG5hcmNoL3MzOTAvbGliL01ha2VmaWxlLTE1LW9iai0kKENPTkZJR19TMzkwX0tQUk9CRVNfU0FOSVRZX1RFU1QpICs9IHRlc3Rfa3Byb2Jlc19zMzkwLm9cXG4tLVxcbmFyY2gvc3BhcmMvaW5jbHVkZS9hc20vdHRhYmxlLmgtMTg5LVxcbmFyY2gvc3BhcmMvaW5jbHVkZS9hc20vdHRhYmxlLmg6MTkwOiNpZmRlZiBDT05GSUdfVVBST0JFU1xcbmFyY2gvc3BhcmMvaW5jbHVkZS9hc20vdHRhYmxlLmgtMTkxLSNkZWZpbmUgVVBST0JFU19UUkFQKGx2bCkgVFJBUF9BUkcodXByb2JlX3RyYXAsIGx2bClcXG4tLVxcbmFyY2gvc3BhcmMva2VybmVsL01ha2VmaWxlPTExNz1vYmotJChDT05GSUdfU1BBUkM2NClcXHQrPSAkKHBjLS15KVxcbmFyY2gvc3BhcmMva2VybmVsL01ha2VmaWxlLTExOC1cXG5hcmNoL3NwYXJjL2tlcm5lbC9NYWtlZmlsZToxMTk6b2JqLSQoQ09ORklHX1VQUk9CRVMpXFx0Kz0gdXByb2Jlcy5vXFxuYXJjaC9zcGFyYy9rZXJuZWwvTWFrZWZpbGUtMTIwLW9iai0kKENPTkZJR19KVU1QX0xBQkVMKSArPSBqdW1wX2xhYmVsLm9cXG4tLVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL3Vwcm9iZXMuaD01Nz1zdHJ1Y3QgYXJjaF91cHJvYmVfdGFzayB7XFxuLS1cXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS91cHJvYmVzLmgtNjQtXFxuYXJjaC94ODYvaW5jbHVkZS9hc20vdXByb2Jlcy5oOjY1OiNpZmRlZiBDT05GSUdfVVBST0JFU1xcbmFyY2gveDg2L2luY2x1ZGUvYXNtL3Vwcm9iZXMuaC02Ni1leHRlcm4gYm9vbCBpc191cHJvYmVfYXRfZnVuY19lbnRyeShzdHJ1Y3QgcHRfcmVncyAqcmVncyk7XFxuLS1cXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS91cHJvYmVzLmg9Njg9c3RhdGljIGJvb2wgaXNfdXByb2JlX2F0X2Z1bmNfZW50cnkoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXFxuLS1cXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS91cHJvYmVzLmgtNzEtfVxcbmFyY2gveDg2L2luY2x1ZGUvYXNtL3Vwcm9iZXMuaDo3MjojZW5kaWYgLyogQ09ORklHX1VQUk9CRVMgKi9cXG5hcmNoL3g4Ni9pbmNsdWRlL2FzbS91cHJvYmVzLmgtNzMtXFxuLS1cXG5hcmNoL3g4Ni9rZXJuZWwvTWFrZWZpbGU9MTU0PW9iai0kKENPTkZJR19PRilcXHRcXHRcXHQrPSBkZXZpY2V0cmVlLm9cXG5hcmNoL3g4Ni9rZXJuZWwvTWFrZWZpbGU6MTU1Om9iai0kKENPTkZJR19VUFJPQkVTKVxcdFxcdFxcdCs9IHVwcm9iZXMub1xcbmFyY2gveDg2L2tlcm5lbC9NYWtlZmlsZS0xNTYtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmg9ODI2PXN0cnVjdCB0YXNrX3N0cnVjdCB7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmgtMTU2Ni1cXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmg6MTU2NzojaWZkZWYgQ09ORklHX1VQUk9CRVNcXG5pbmNsdWRlL2xpbnV4L3NjaGVkLmgtMTU2OC1cXHRzdHJ1Y3QgdXByb2JlX3Rhc2tcXHRcXHQqdXRhc2s7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3Vwcm9iZXMuaD00Nj1zdHJ1Y3QgdXByb2JlX2NvbnN1bWVyIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvdXByb2Jlcy5oLTY1LVxcbmluY2x1ZGUvbGludXgvdXByb2Jlcy5oOjY2OiNpZmRlZiBDT05GSUdfVVBST0JFU1xcbmluY2x1ZGUvbGludXgvdXByb2Jlcy5oLTY3LSNpbmNsdWRlIFxcdTAwM2Nhc20vdXByb2Jlcy5oXFx1MDAzZVxcbi0tXFxuaW5jbHVkZS9saW51eC91cHJvYmVzLmg9MjQ2PWV4dGVybiB1bnNpZ25lZCBsb25nIGFyY2hfdXByb2JlX2dldF94b2xfYXJlYSh2b2lkKTtcXG5pbmNsdWRlL2xpbnV4L3Vwcm9iZXMuaDoyNDc6I2Vsc2UgLyogIUNPTkZJR19VUFJPQkVTICovXFxuaW5jbHVkZS9saW51eC91cHJvYmVzLmgtMjQ4LXN0cnVjdCB1cHJvYmVzX3N0YXRlIHtcXG4tLVxcbmluY2x1ZGUvbGludXgvdXByb2Jlcy5oPTMwNT1zdGF0aWMgaW5saW5lIHZvaWQgdXByb2JlX2NsZWFyX3N0YXRlKHN0cnVjdCBtbV9zdHJ1Y3QgKm1tKVxcbi0tXFxuaW5jbHVkZS9saW51eC91cHJvYmVzLmgtMzA3LX1cXG5pbmNsdWRlL2xpbnV4L3Vwcm9iZXMuaDozMDg6I2VuZGlmIC8qICFDT05GSUdfVVBST0JFUyAqL1xcbmluY2x1ZGUvbGludXgvdXByb2Jlcy5oLTMwOS0jZW5kaWZcXHQvKiBfTElOVVhfVVBST0JFU19IICovXFxuLS1cXG5rZXJuZWwvZXZlbnRzL01ha2VmaWxlPTU9b2JqLSQoQ09ORklHX0hXX0JSRUFLUE9JTlRfS1VOSVRfVEVTVCkgKz0gaHdfYnJlYWtwb2ludF90ZXN0Lm9cXG5rZXJuZWwvZXZlbnRzL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX1VQUk9CRVMpICs9IHVwcm9iZXMub1xcbi0tXFxua2VybmVsL2V2ZW50cy9jYWxsY2hhaW4uYz0xODE9c3RhdGljIHZvaWQgZml4dXBfdXJldHByb2JlX3RyYW1wb2xpbmVfZW50cmllcyhzdHJ1Y3QgcGVyZl9jYWxsY2hhaW5fZW50cnkgKmVudHJ5LFxcbi0tXFxua2VybmVsL2V2ZW50cy9jYWxsY2hhaW4uYy0xODMte1xcbmtlcm5lbC9ldmVudHMvY2FsbGNoYWluLmM6MTg0OiNpZmRlZiBDT05GSUdfVVBST0JFU1xcbmtlcm5lbC9ldmVudHMvY2FsbGNoYWluLmMtMTg1LVxcdHN0cnVjdCB1cHJvYmVfdGFzayAqdXRhc2sgPSBjdXJyZW50LVxcdTAwM2V1dGFzaztcXG4tLVxcbmtlcm5lbC9mb3JrLmM9MTA2OD1zdGF0aWMgdm9pZCBtbV9pbml0X3Vwcm9iZXNfc3RhdGUoc3RydWN0IG1tX3N0cnVjdCAqbW0pXFxua2VybmVsL2ZvcmsuYy0xMDY5LXtcXG5rZXJuZWwvZm9yay5jOjEwNzA6I2lmZGVmIENPTkZJR19VUFJPQkVTXFxua2VybmVsL2ZvcmsuYy0xMDcxLVxcdG1tLVxcdTAwM2V1cHJvYmVzX3N0YXRlLnhvbF9hcmVhID0gTlVMTDtcXG4tLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYz0xMDg0PUJQRl9DQUxMXzEoYnBmX2dldF9mdW5jX2lwX2twcm9iZSwgc3RydWN0IHB0X3JlZ3MgKiwgcmVncylcXG4tLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xMDg4LVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzoxMDg5OiNpZmRlZiBDT05GSUdfVVBST0JFU1xcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0xMDkwLVxcdHJ1bl9jdHggPSBjb250YWluZXJfb2YoY3VycmVudC1cXHUwMDNlYnBmX2N0eCwgc3RydWN0IGJwZl90cmFjZV9ydW5fY3R4LCBydW5fY3R4KTtcXG4tLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYz0yOTQ0PXN0YXRpYyB1NjQgYnBmX2twcm9iZV9tdWx0aV9lbnRyeV9pcChzdHJ1Y3QgYnBmX3J1bl9jdHggKmN0eClcXG4tLVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0yOTQ5LVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzoyOTUwOiNpZmRlZiBDT05GSUdfVVBST0JFU1xcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0yOTUxLXN0cnVjdCBicGZfdXByb2JlX211bHRpX2xpbms7XFxuLS1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM9MzI1MT1pbnQgYnBmX3Vwcm9iZV9tdWx0aV9saW5rX2F0dGFjaChjb25zdCB1bmlvbiBicGZfYXR0ciAqYXR0ciwgc3RydWN0IGJwZl9wcm9nICpwcm9nKVxcbi0tXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTM0MDEtfVxcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYzozNDAyOiNlbHNlIC8qICFDT05GSUdfVVBST0JFUyAqL1xcbmtlcm5lbC90cmFjZS9icGZfdHJhY2UuYy0zNDAzLWludCBicGZfdXByb2JlX211bHRpX2xpbmtfYXR0YWNoKGNvbnN0IHVuaW9uIGJwZl9hdHRyICphdHRyLCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2cpXFxuLS1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmM9MzQxMT1zdGF0aWMgdTY0IGJwZl91cHJvYmVfbXVsdGlfZW50cnlfaXAoc3RydWN0IGJwZl9ydW5fY3R4ICpjdHgpXFxuLS1cXG5rZXJuZWwvdHJhY2UvYnBmX3RyYWNlLmMtMzQxNC19XFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jOjM0MTU6I2VuZGlmIC8qIENPTkZJR19VUFJPQkVTICovXFxua2VybmVsL3RyYWNlL2JwZl90cmFjZS5jLTM0MTYtXFxuLS1cXG50b29scy9zY2hlZF9leHQvS2NvbmZpZz01Mz1DT05GSUdfS1BST0JFX0VWRU5UUz15XFxudG9vbHMvc2NoZWRfZXh0L0tjb25maWc6NTQ6Q09ORklHX1VQUk9CRVM9eVxcbnRvb2xzL3NjaGVkX2V4dC9LY29uZmlnLTU1LUNPTkZJR19VUFJPQkVfRVZFTlRTPXlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuYWFyY2g2ND0xNDg9Q09ORklHX1VOSVg9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuYWFyY2g2NDoxNDk6Q09ORklHX1VQUk9CRVM9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuYWFyY2g2NC0xNTAtQ09ORklHX1VTRVJfTlM9eVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5wcGM2NGVsPTg1PUNPTkZJR19VTklYPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnBwYzY0ZWw6ODY6Q09ORklHX1VQUk9CRVM9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcucHBjNjRlbC04Ny1DT05GSUdfVVNFUl9OUz15XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnJpc2N2NjQ9Nzc9Q09ORklHX1VOSVg9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcucmlzY3Y2NDo3ODpDT05GSUdfVVBST0JFUz15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5yaXNjdjY0LTc5LUNPTkZJR19VU0VSX05TPXlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuczM5MHg9MTE5PUNPTkZJR19VTklYPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnMzOTB4OjEyMDpDT05GSUdfVVBST0JFUz15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5zMzkweC0xMjEtQ09ORklHX1VTRVJfTlM9eVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZnRyYWNlL2NvbmZpZz0yNz1DT05GSUdfVFJBQ0VSX1NOQVBTSE9UPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9mdHJhY2UvY29uZmlnOjI4OkNPTkZJR19VUFJPQkVTPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9mdHJhY2UvY29uZmlnLTI5LUNPTkZJR19VUFJPQkVfRVZFTlRTPXlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2NvbmZpZz0xMj1DT05GSUdfUFJPRklMSU5HPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9tbS9jb25maWc6MTM6Q09ORklHX1VQUk9CRVM9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL21tL2NvbmZpZy0xNC1DT05GSUdfTUVNT1JZX0ZBSUxVUkU9eVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdnNvY2svY29uZmlnPTE0PUNPTkZJR19BUkNIX1NVUFBPUlRTX1VQUk9CRVM9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3Zzb2NrL2NvbmZpZzoxNTpDT05GSUdfVVBST0JFUz15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvdnNvY2svY29uZmlnLTE2LUNPTkZJR19VUFJPQkVfRVZFTlRTPXlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDE6MTU6NTguMTA1NzA3Mjk0WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDY4NzU2MjQ0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBVcHJvYmVzIEV4YW1pbmF0aW9uKipcblxuT2theSwgc28gSSdtIGRpdmluZyBpbnRvIHRoaXMgdXByb2JlcyBjb2RlLiBNeSBmb2N1cyBuZWVkcyB0byBiZSBvbiBmdW5jdGlvbnMgcmVsYXRlZCB0byBgQ09ORklHX1VQUk9CRVNgLiBMZXQgbWUgc2VlLi4uIEkndmUgZ290IGEgbGlzdCBoZXJlOiBgaHByb2JlX2luaXRfbGVhc2VkYCwgYGhwcm9iZV9pbml0X3N0YWJsZWAsIGBocHJvYmVfZmluYWxpemVgLCBgaHByb2JlX2V4cGlyZWAsIGByaV90aW1lcmAsIGBkdXBfdXRhc2tgLCBhbmQgYHByZXBhcmVfdXJldHByb2JlYC4gSSBzaG91bGQgcHJvYmFibHkgZG91YmxlLWNoZWNrIHRoYXQgYENPTkZJR19VUFJPQkVTYCBpcyB0aGUgb25seSByZWxldmFudCBjb25maWcuIFllcywgaXQncyBlbmFibGVkIGJ5IGRlZmF1bHQgb24gYSBsb3Qgb2YgYXJjaGl0ZWN0dXJlcywgYnV0IGNvbmZpcm1hdGlvbiBpcyBhbHdheXMgYSBnb29kIHByYWN0aWNlLlxuXG5Ob3csIGxldCdzIGxvb2sgY2xvc2VyIGF0IHRoZXNlIGZ1bmN0aW9ucy4gSG1tLCBpdCBzZWVtcyBsaWtlIGBocHJvYmVfaW5pdF9sZWFzZWRgLCBgaHByb2JlX2luaXRfc3RhYmxlYCwgYGhwcm9iZV9maW5hbGl6ZWAsIGBocHJvYmVfZXhwaXJlYCwgYHJpX3RpbWVyYCwgYGR1cF91dGFza2AsIGFuZCBgcHJlcGFyZV91cmV0cHJvYmVgIGFyZSBhbGwgbWFya2VkIGFzIHN0YXRpYy4gT2theSwgc28gd2UncmUgcHJpbWFyaWx5IGRlYWxpbmcgd2l0aCBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbnMgaGVyZSwgbm90aGluZyBkaXJlY3RseSBleHBvcnRlZC4gQnV0IHdhaXQsIGBkdXBfdXRhc2tgIGlzIHN0YXRpYy4uLiBidXQgSSAqc2VlbSogdG8gcmVjYWxsIGl0IGJlaW5nIGNhbGxlZCBmcm9tIGB1cHJvYmVfZHVwX21tYXBgLiBUaGF0J3MgYSBwb2ludCBvZiBpbnRlcmVzdC4gSSdkIGJldHRlciBjb25maXJtIHRoYXQgY2FsbCBjaGFpbi4gSSBkb24ndCB3YW50IHRvIG1pc3MgYW55dGhpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkxNTAsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDE6MTY6MDIuNzkzMjcxOTZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY2NTc4MjU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImR1cF91dGFza1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvZXZlbnRzL3Vwcm9iZXMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYz03NTc9c3RhdGljIHZvaWQgaHByb2JlX2ZpbmFsaXplKHN0cnVjdCBocHJvYmUgKmhwcm9iZSwgZW51bSBocHJvYmVfc3RhdGUgaHN0YXRlKVxcbi0tXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtNzg4LSAqIGF0dGVtcHQgdHJ5X2dldF91cHJvYmUoKSwgaWYgaXQgbmVlZHMgdG8gcHJlc2VydmUgdXByb2JlIGJleW9uZCBjdXJyZW50XFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM6Nzg5OiAqIFNSQ1UgbG9jayByZWdpb24uIFNlZSBkdXBfdXRhc2soKS5cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy03OTAtICovXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM9NzkxPXN0YXRpYyBzdHJ1Y3QgdXByb2JlICpocHJvYmVfZXhwaXJlKHN0cnVjdCBocHJvYmUgKmhwcm9iZSwgYm9vbCBnZXQpXFxuLS1cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy04NDgtXFx0XFx0ICogcmV0dXJuIGl0IHJlZ2FyZGxlc3MuIEFsc28sIGlmIGBnZXRgIHdhcyB0cnVlLCB3ZSBhbHNvIGhhdmVcXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzo4NDk6XFx0XFx0ICogYW4gZXh0cmEgcmVmIGZvciB0aGUgY2FsbGVyIHRvIG93bi4gVGhpcyBpcyB1c2VkIGluIGR1cF91dGFzaygpLlxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTg1MC1cXHRcXHQgKi9cXG4tLVxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jPTIxMTM9c3RhdGljIHN0cnVjdCByZXR1cm5faW5zdGFuY2UgKmR1cF9yZXR1cm5faW5zdGFuY2Uoc3RydWN0IHJldHVybl9pbnN0YW5jZSAqb2xkKVxcbi0tXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtMjEzMy1cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzoyMTM0OnN0YXRpYyBpbnQgZHVwX3V0YXNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqdCwgc3RydWN0IHVwcm9iZV90YXNrICpvX3V0YXNrKVxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTIxMzUte1xcbi0tXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM9MjE4OD12b2lkIHVwcm9iZV9jb3B5X3Byb2Nlc3Moc3RydWN0IHRhc2tfc3RydWN0ICp0LCB1NjQgZmxhZ3MpXFxuLS1cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yMjAxLVxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jOjIyMDI6XFx0aWYgKGR1cF91dGFzayh0LCB1dGFzaykpXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtMjIwMy1cXHRcXHRyZXR1cm4gdXByb2JlX3dhcm4odCwgXFxcImR1cCByZXQgaW5zdGFuY2VzXFxcIik7XFxuLS1cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYz0yMjUzPXN0YXRpYyB2b2lkIHByZXBhcmVfdXJldHByb2JlKHN0cnVjdCB1cHJvYmUgKnVwcm9iZSwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MsXFxuLS1cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yMjk5LVxcdCAqIHVzZXIgc3BhY2UgYW5kIGNhbiBiZSB1bmxvY2tlZCBmcm9tIGEgZGlmZmVyZW50IGNvbnRleHQgYnkgcmlfdGltZXIoKVxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jOjIzMDA6XFx0ICogb3IgZHVwX3V0YXNrKCkuXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtMjMwMS1cXHQgKi9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDE6MTY6MDIuOTU5ODU1Nzc2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzEyNTQ3MzIwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyB5b3UgcmVxdWVzdGVkOlxuXG4qKkRlY29uc3RydWN0aW5nIHRoZSBVcHJvYmUgRmxvdyoqXG5cbk9rYXksIHNvIEknbSB0cmFjaW5nIHRocm91Z2ggdGhpcyB1cHJvYmUgaW1wbGVtZW50YXRpb24sIGFuZCB0aGUgZmxvdyBpcyBiZWNvbWluZyBjbGVhcmVyLiBJIHNlZSB0aGF0IGB1cHJvYmVfY29weV9wcm9jZXNzYCB1bHRpbWF0ZWx5IGNhbGxzIGBkdXBfdXRhc2tgLiBSaWdodCwgdGhhdCdzIGV4cGVjdGVkIGJlaGF2aW9yLCBjbG9uaW5nIHRoZSB1c2VyLXNwYWNlIHRhc2sgc3RydWN0dXJlLiBOb3csIHdoZXJlIGRvZXMgYHByZXBhcmVfdXJldHByb2JlYCBjb21lIGludG8gdGhlIHBpY3R1cmU/IEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgY2FsbCBncmFwaCB0aGVyZS4gSSAqYmVsaWV2ZSogaXQncyBpbnZva2VkIGJ5IGB1cHJvYmVfZGlzcGF0Y2hlcmAgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGJ1dCBpdCdzIGFsd2F5cyBiZXN0IHRvIGJlIHByZWNpc2UsIGVzcGVjaWFsbHkgd2hlbiBkZWFsaW5nIHdpdGggc3VjaCBsb3ctbGV2ZWwgc3R1ZmYuIFRpbWUgdG8gZG91YmxlLWNoZWNrIHRoZSBjb2RlIHBhdGggYW5kIHNvbGlkaWZ5IHRoYXQgY29ubmVjdGlvbiBpbiBteSBtaW5kLiBObyByb29tIGZvciBndWVzc3dvcmsgaW4gdGhlc2UgY3JpdGljYWwgYXJlYXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMzAxLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDE6MTY6MDYuMDg1MzMxMzg0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM0NTAxNjgzMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwcmVwYXJlX3VyZXRwcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvZXZlbnRzL3Vwcm9iZXMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYz0yMjM3PXN0YXRpYyB2b2lkIGNsZWFudXBfcmV0dXJuX2luc3RhbmNlcyhzdHJ1Y3QgdXByb2JlX3Rhc2sgKnV0YXNrLCBib29sIGNoYWluZWQsXFxuLS1cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yMjUyLVxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jOjIyNTM6c3RhdGljIHZvaWQgcHJlcGFyZV91cmV0cHJvYmUoc3RydWN0IHVwcm9iZSAqdXByb2JlLCBzdHJ1Y3QgcHRfcmVncyAqcmVncyxcXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yMjU0LVxcdFxcdFxcdCAgICAgIHN0cnVjdCByZXR1cm5faW5zdGFuY2UgKnJpKVxcbi0tXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM9MjU1ND1zdGF0aWMgdm9pZCBoYW5kbGVyX2NoYWluKHN0cnVjdCB1cHJvYmUgKnVwcm9iZSwgc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXFxuLS1cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yNTg4LVxcdGlmICghWkVST19PUl9OVUxMX1BUUihyaSkpXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM6MjU4OTpcXHRcXHRwcmVwYXJlX3VyZXRwcm9iZSh1cHJvYmUsIHJlZ3MsIHJpKTtcXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yNTkwLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwMToxNjowNi40MzAzNTQwNDdaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NjQwNTUwMzM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkluaXRpYWwgQ29kZSBBbmFseXNpcyoqXG5cbk9rYXksIHNvIGBoYW5kbGVyX2NoYWluYCBpcyB0aGUgY3J1Y2lhbCBmdW5jdGlvbiwgYW5kIGl0J3MgY2FsbGVkIGJ5IGBoYW5kbGVfc3dicGAuIFJpZ2h0IGF3YXksIHRoYXQgdGVsbHMgbWUgZm9jdXNpbmcgb24gYHByZXBhcmVfdXJldHByb2JlYCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaG93IHRoaXMgYWxsIHdvcmtzLiBMZXQncyBzZWUuLi4gbG9va2luZyBhdCB0aGUgY2FsbCBzdGFjaywgSSBhbHNvIG5lZWQgdG8gY29uc2lkZXIgYGhwcm9iZV9leHBpcmVgLCBgaHByb2JlX2ZpbmFsaXplYCwgYGhwcm9iZV9pbml0X2xlYXNlZGAsIGBocHJvYmVfaW5pdF9zdGFibGVgLCBgcmlfdGltZXJgLCBhbmQgYGR1cF91dGFza2AuXG5cbkhvbGQgb24uLi4gYGhwcm9iZV9pbml0X2xlYXNlZGAgYW5kIGBocHJvYmVfaW5pdF9zdGFibGVgIGFyZSBzdXNwaWNpb3VzbHkgc21hbGwuIFRoZXkgcHJvYmFibHkganVzdCBkbyBzb21lIHF1aWNrIHNldHVwLiBPa2F5LCBsZXQncyBza2lwIHRoZW0gZm9yIG5vdy4gR2l2ZW4gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgcHJvYmxlbSBzcGFjZSwgbXkgaW5pdGlhbCBmb2N1cyBzaG91bGQgYmUgb24gYHByZXBhcmVfdXJldHByb2JlYCwgYGhwcm9iZV9leHBpcmVgLCBgaHByb2JlX2ZpbmFsaXplYCwgYHJpX3RpbWVyYCwgYW5kIGBkdXBfdXRhc2tgLiBUaGVzZSBzZWVtIHRvIGJlIHRoZSBtb3N0IGNvbXBsZXgsIGFuZCBsaWtlbHkgd2hlcmUgdGhlIGNvcmUgbG9naWMgcmVzaWRlcy5cblxuTm93LCBsZXQncyB0YWtlIGEgbG9vayBhdCBgcmlfdGltZXJgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDc4NywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwMToxNjoxMy4wNzA5MDY1MTVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MjcxNTY0NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyaV90aW1lclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvZXZlbnRzL3Vwcm9iZXMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYz0xOTcwPXN0YXRpYyB2b2lkIGZyZWVfcmV0X2luc3RhbmNlKHN0cnVjdCB1cHJvYmVfdGFzayAqdXRhc2ssXFxuLS1cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0xOTgzLVxcdCAqIEF0IHRoaXMgcG9pbnQgcmV0dXJuX2luc3RhbmNlIGlzIHVubGlua2VkIGZyb20gdXRhc2snc1xcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jOjE5ODQ6XFx0ICogcmV0dXJuX2luc3RhbmNlcyBsaXN0IGFuZCB0aGlzIGhhcyBiZWNvbWUgdmlzaWJsZSB0byByaV90aW1lcigpLlxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jOjE5ODU6XFx0ICogSWYgc2VxY291bnQgbm93IGluZGljYXRlcyB0aGF0IHJpX3RpbWVyJ3MgcmV0dXJuIGluc3RhbmNlXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtMTk4Ni1cXHQgKiBwcm9jZXNzaW5nIGxvb3AgaXNuJ3QgYWN0aXZlLCB3ZSBjYW4gcmV0dXJuIHJpIGludG8gdGhlIHBvb2wgb2ZcXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzoxOTg3OlxcdCAqIHRvLWJlLXJldXNlZCByZXR1cm4gaW5zdGFuY2VzIGZvciBmdXR1cmUgdXJldHByb2Jlcy4gSWYgcmlfdGltZXIoKVxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTE5ODgtXFx0ICogaGFwcGVucyB0byBiZSBydW5uaW5nIHJpZ2h0IG5vdywgdGhvdWdoLCB3ZSBmYWxsYmFjayB0byBzYWZldHkgYW5kXFxuLS1cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0xOTk3LVxcdH0gZWxzZSB7XFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM6MTk5ODpcXHRcXHQvKiB3ZSBtaWdodCBiZSByYWNpbmcgd2l0aCByaV90aW1lcigpLCBzbyBwbGF5IGl0IHNhZmUgKi9cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0xOTk5LVxcdFxcdHJpX2ZyZWUocmkpO1xcbi0tXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM9MjAwNz12b2lkIHVwcm9iZV9mcmVlX3V0YXNrKHN0cnVjdCB0YXNrX3N0cnVjdCAqdClcXG4tLVxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTIwMTctXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM6MjAxODpcXHR0aW1lcl9kZWxldGVfc3luYyhcXHUwMDI2dXRhc2stXFx1MDAzZXJpX3RpbWVyKTtcXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yMDE5LVxcbi0tXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtMjA0Mi1cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzoyMDQzOnN0YXRpYyB2b2lkIHJpX3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICp0aW1lcilcXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yMDQ0LXtcXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzoyMDQ1OlxcdHN0cnVjdCB1cHJvYmVfdGFzayAqdXRhc2sgPSBjb250YWluZXJfb2YodGltZXIsIHN0cnVjdCB1cHJvYmVfdGFzaywgcmlfdGltZXIpO1xcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTIwNDYtXFx0c3RydWN0IHJldHVybl9pbnN0YW5jZSAqcmk7XFxuLS1cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYz0yMDY5PXN0YXRpYyBzdHJ1Y3QgdXByb2JlX3Rhc2sgKmFsbG9jX3V0YXNrKHZvaWQpXFxuLS1cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yMDc2LVxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jOjIwNzc6XFx0dGltZXJfc2V0dXAoXFx1MDAyNnV0YXNrLVxcdTAwM2VyaV90aW1lciwgcmlfdGltZXIsIDApO1xcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTIwNzgtXFx0c2VxY291bnRfaW5pdChcXHUwMDI2dXRhc2stXFx1MDAzZXJpX3NlcWNvdW50KTtcXG4tLVxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jPTIyNTM9c3RhdGljIHZvaWQgcHJlcGFyZV91cmV0cHJvYmUoc3RydWN0IHVwcm9iZSAqdXByb2JlLCBzdHJ1Y3QgcHRfcmVncyAqcmVncyxcXG4tLVxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTIyOTgtXFx0ICogVXNlIHNyY3VfZG93bl9yZWFkX2Zhc3QoKSBiZWNhdXNlIHRoZSBTUkNVIGxvY2sgc3Vydml2ZXMgYSBzd2l0Y2ggdG9cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzoyMjk5OlxcdCAqIHVzZXIgc3BhY2UgYW5kIGNhbiBiZSB1bmxvY2tlZCBmcm9tIGEgZGlmZmVyZW50IGNvbnRleHQgYnkgcmlfdGltZXIoKVxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTIzMDAtXFx0ICogb3IgZHVwX3V0YXNrKCkuXFxuLS1cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yMzE0LVxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jOjIzMTU6XFx0bW9kX3RpbWVyKFxcdTAwMjZ1dGFzay1cXHUwMDNlcmlfdGltZXIsIGppZmZpZXMgKyBSSV9USU1FUl9QRVJJT0QpO1xcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTIzMTYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDAxOjE2OjEzLjI1MzYyODM0WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3NTA2NjA0NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFVwcm9iZSBhbmQgU1JDVSBDb25maWd1cmF0aW9ucyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgaW5pdGlhbCB1bmRlcnN0YW5kaW5nIGlzIHRoYXQgYHJpX3RpbWVyYCBpcyBhIHRpbWVyIGNhbGxiYWNrLCBgZHVwX3V0YXNrYCBpcyB0cmlnZ2VyZWQgZHVyaW5nIGEgYGZvcmtgIG9wZXJhdGlvbiwgYHByZXBhcmVfdXJldHByb2JlYCBoYXBwZW5zIHdoZW4gYSB1cmV0cHJvYmUgaXMgaGl0LCBgaHByb2JlX2V4cGlyZWAgaGFuZGxlcyBleHBpcmluZyBhIGxlYXNlZCB1cHJvYmUsIGFuZCBgaHByb2JlX2ZpbmFsaXplYCBpcyB1c2VkIHRvIGZpbmFsaXplIGEgbGVhc2VkIHVwcm9iZS4gVGhhdCdzIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHksIGJ1dCBsZXQncyBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucy5cblxuTm93LCBJIG5lZWQgdG8gY2hlY2sgZm9yIG90aGVyIHJlbGF0ZWQgY29uZmlndXJhdGlvbnMuIE15IGluaXRpYWwgcmV2aWV3IGluZGljYXRlcyB0aGF0IHRoZSBwYXRjaCB0b3VjaGVzIGBpbmNsdWRlL2xpbnV4L3NyY3UuaGAgYW5kIGBrZXJuZWwvZXZlbnRzL3Vwcm9iZXMuY2AsIHdoaWNoIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSBjYW4gc2VlIHRoYXQgYENPTkZJR19VUFJPQkVTYCBpcyB0aGUgbWFpbiBjb25maWd1cmF0aW9uIG9wdGlvbiB0byBjb25zaWRlciBoZXJlLiBCdXQgaGFuZyBvbi4uLiBgQ09ORklHX1NSQ1VgLi4uIHRoYXQncyBhbHdheXMgZW5hYmxlZCwgaXNuJ3QgaXQ/IEkgbmVlZCB0byBrZWVwIHRoYXQgaW4gbWluZCBhcyBhIGRlcGVuZGVuY3kuXG5cbkkgc2hvdWxkIGRvdWJsZS1jaGVjayBgQ09ORklHX1VQUk9CRVNgIHRvIGVuc3VyZSBhIGZ1bGwgdW5kZXJzdGFuZGluZywgb2YgY291cnNlLiBBcmUgdGhlcmUgYW55IG90aGVyIGNvbmZpZyBvcHRpb25zPyBMZXQncyBub3Qgb3Zlcmxvb2sgYW55dGhpbmcuIEFoLCB0aGVyZSdzIGBDT05GSUdfVVBST0JFX0VWRU5UU2AhIEknbGwgbmVlZCB0byBjaGVjayBob3cgdGhhdCBpbnRlcmFjdHMuXG5cbkZpbmFsbHksIEknbGwgdGhvcm91Z2hseSBleGFtaW5lIGBrZXJuZWwvZXZlbnRzL3Vwcm9iZXMuY2AuIEl0J3MgbGlrZWx5IHRoYXQgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9ucyBhcmUgZGVmaW5lZCBvciB1c2VkIHRoZXJlLCBhbmQgaXQncyBlc3NlbnRpYWwgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCBvZiB0aGUgd2hvbGUgdGhpbmcuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlIGEgY29tcGxldGUgcGljdHVyZSBvZiB0aGUgZGVwZW5kZW5jaWVzIGFuZCBob3cgdGhlc2UgZmVhdHVyZXMgYXJlIGNvbmRpdGlvbmFsbHkgZW5hYmxlZCBhbmQgZGlzYWJsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMDYyLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTkyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDAxOjE2OjE4LjAwNDI5MjUyNFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ5ODM0OTgyLCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9ldmVudHMvdXByb2Jlcy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwMToxNjoxOC40NTQxMzg2MzZaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTAwMTM5OTA5MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyBVcHJvYmUgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUsIEknbSBkaXZpbmcgaW50byB0aGUgYGtlcm5lbC9ldmVudHMvdXByb2Jlcy5jYCBmaWxlLiBIbW0sIGxvb2tzIGxpa2UgdGhlcmUgYXJlbid0IGFueSBvdGhlciBjb25kaXRpb25hbCBjb25maWd1cmF0aW9ucyBkZWZpbmVkIHdpdGhpbiB0aGlzIHBhcnRpY3VsYXIgZmlsZS4gVGhhdCBzdWdnZXN0cyBhIGRpcmVjdCBjb3JyZWxhdGlvbjogaWYgYENPTkZJR19VUFJPQkVTYCBpcyBlbmFibGVkLCB0aGUgY29kZSB3aXRoaW4gdGhpcyBmaWxlIGlzIGluY2x1ZGVkLiBHb29kLCB0aGF0IHNpbXBsaWZpZXMgdGhpbmdzIGEgYml0LiBObyBjb21wbGV4IG5lc3Rpbmcgb3IgZGVwZW5kZW5jaWVzICp3aXRoaW4qIHRoaXMgc3BlY2lmaWMgbW9kdWxlLlxuXG5Ob3csIGxldCdzIHNoaWZ0IGdlYXJzIHNsaWdodGx5LiBJJ2xsIG5lZWQgdG8gY2hlY2sgYGluY2x1ZGUvbGludXgvc3JjdS5oYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSByZWxhdGVkIGNvbmZpZ3VyYXRpb25zIG9yIGRlcGVuZGVuY2llcyBkZWNsYXJlZCB3aXRoaW4gdGhlIHNvdXJjZSByZWFkLWNvcHktdXBkYXRlIGhlYWRlci4gSXQncyBhIGNvbW1vbiBhcmVhIGZvciBzaGFyZWQgcmVzb3VyY2VzIGFuZCBwb3RlbnRpYWwgc3luY2hyb25pemF0aW9uIHBvaW50cywgd2hpY2ggbWlnaHQgYmUgaW5mbHVlbmNlZCBieSBob3cgdXByb2JlcyBhcmUgdXNlZCwgYW5kIHRoZXJlZm9yZSBpbmRpcmVjdGx5IGltcGFjdGVkIGJ5IGNvbmZpZ3VyYXRpb25zLiBJJ20gbG9va2luZyBmb3IgYW55dGhpbmcgdGhhdCBtaWdodCByZWxhdGUgdG8gcmVhZC1jb3B5LXVwZGF0ZSBtZWNoYW5pc21zIG9yIHN5bmNocm9uaXphdGlvbiByZWxhdGVkIHRvIHVwcm9iZXMuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGZ1bGwgcGljdHVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI2NDUsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwMToxNjoyMy40NTU1NDA1MDdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NTQ1MjIyNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJDT05GSUdfXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvbGludXgvc3JjdS5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvc3JjdS5oPTI0PWNvbnRleHRfbG9ja19zdHJ1Y3Qoc3JjdV9zdHJ1Y3QsIF9fcmVlbnRyYW50X2N0eF9sb2NrKTtcXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC0yNS1cXG5pbmNsdWRlL2xpbnV4L3NyY3UuaDoyNjojaWZkZWYgQ09ORklHX0RFQlVHX0xPQ0tfQUxMT0NcXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC0yNy1cXG5pbmNsdWRlL2xpbnV4L3NyY3UuaD0yOD1pbnQgX19pbml0X3NyY3Vfc3RydWN0KHN0cnVjdCBzcmN1X3N0cnVjdCAqc3NwLCBjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3QgbG9ja19jbGFzc19rZXkgKmtleSk7XFxuaW5jbHVkZS9saW51eC9zcmN1Lmg6Mjk6I2lmbmRlZiBDT05GSUdfVElOWV9TUkNVXFxuaW5jbHVkZS9saW51eC9zcmN1LmgtMzAtaW50IF9faW5pdF9zcmN1X3N0cnVjdF9mYXN0KHN0cnVjdCBzcmN1X3N0cnVjdCAqc3NwLCBjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3QgbG9ja19jbGFzc19rZXkgKmtleSk7XFxuaW5jbHVkZS9saW51eC9zcmN1Lmg9MzE9aW50IF9faW5pdF9zcmN1X3N0cnVjdF9mYXN0X3VwZG93bihzdHJ1Y3Qgc3JjdV9zdHJ1Y3QgKnNzcCwgY29uc3QgY2hhciAqbmFtZSxcXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC0zMi1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgbG9ja19jbGFzc19rZXkgKmtleSk7XFxuaW5jbHVkZS9saW51eC9zcmN1Lmg6MzM6I2VuZGlmIC8vICNpZm5kZWYgQ09ORklHX1RJTllfU1JDVVxcbmluY2x1ZGUvbGludXgvc3JjdS5oLTM0LVxcbi0tXFxuaW5jbHVkZS9saW51eC9zcmN1LmgtNTYtI2RlZmluZSBfX1NSQ1VfREVQX01BUF9JTklUKHNyY3VfbmFtZSlcXHQuZGVwX21hcCA9IHsgLm5hbWUgPSAjc3JjdV9uYW1lIH0sXFxuaW5jbHVkZS9saW51eC9zcmN1Lmg6NTc6I2Vsc2UgLyogI2lmZGVmIENPTkZJR19ERUJVR19MT0NLX0FMTE9DICovXFxuaW5jbHVkZS9saW51eC9zcmN1LmgtNTgtXFxuaW5jbHVkZS9saW51eC9zcmN1Lmg9NTk9aW50IGluaXRfc3JjdV9zdHJ1Y3Qoc3RydWN0IHNyY3Vfc3RydWN0ICpzc3ApO1xcbmluY2x1ZGUvbGludXgvc3JjdS5oOjYwOiNpZm5kZWYgQ09ORklHX1RJTllfU1JDVVxcbmluY2x1ZGUvbGludXgvc3JjdS5oLTYxLWludCBpbml0X3NyY3Vfc3RydWN0X2Zhc3Qoc3RydWN0IHNyY3Vfc3RydWN0ICpzc3ApO1xcbmluY2x1ZGUvbGludXgvc3JjdS5oPTYyPWludCBpbml0X3NyY3Vfc3RydWN0X2Zhc3RfdXBkb3duKHN0cnVjdCBzcmN1X3N0cnVjdCAqc3NwKTtcXG5pbmNsdWRlL2xpbnV4L3NyY3UuaDo2MzojZW5kaWYgLy8gI2lmbmRlZiBDT05GSUdfVElOWV9TUkNVXFxuaW5jbHVkZS9saW51eC9zcmN1LmgtNjQtXFxuaW5jbHVkZS9saW51eC9zcmN1LmgtNjUtI2RlZmluZSBfX1NSQ1VfREVQX01BUF9JTklUKHNyY3VfbmFtZSlcXG5pbmNsdWRlL2xpbnV4L3NyY3UuaDo2NjojZW5kaWYgLyogI2Vsc2UgI2lmZGVmIENPTkZJR19ERUJVR19MT0NLX0FMTE9DICovXFxuaW5jbHVkZS9saW51eC9zcmN1LmgtNjctXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NyY3UuaD04MD12b2lkIF9fc3JjdV9yZWFkX3VubG9jayhzdHJ1Y3Qgc3JjdV9zdHJ1Y3QgKnNzcCwgaW50IGlkeCkgX19yZWxlYXNlc19zaGFyZWQoc3NwKTtcXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC04MS1cXG5pbmNsdWRlL2xpbnV4L3NyY3UuaDo4MjojaWZkZWYgQ09ORklHX1RJTllfU1JDVVxcbmluY2x1ZGUvbGludXgvc3JjdS5oLTgzLSNpbmNsdWRlIFxcdTAwM2NsaW51eC9zcmN1dGlueS5oXFx1MDAzZVxcbmluY2x1ZGUvbGludXgvc3JjdS5oOjg0OiNlbGlmIGRlZmluZWQoQ09ORklHX1RSRUVfU1JDVSlcXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC04NS0jaW5jbHVkZSBcXHUwMDNjbGludXgvc3JjdXRyZWUuaFxcdTAwM2VcXG4tLVxcbmluY2x1ZGUvbGludXgvc3JjdS5oPTEyOD1zdGF0aWMgaW5saW5lIGJvb2wgc2FtZV9zdGF0ZV9zeW5jaHJvbml6ZV9zcmN1KHVuc2lnbmVkIGxvbmcgb2xkc3RhdGUxLCB1bnNpZ25lZCBsb25nIG9sZHN0YXRlMilcXG4tLVxcbmluY2x1ZGUvbGludXgvc3JjdS5oLTEzMi1cXG5pbmNsdWRlL2xpbnV4L3NyY3UuaDoxMzM6I2lmZGVmIENPTkZJR19ORUVEX1NSQ1VfTk1JX1NBRkVcXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC0xMzQtaW50IF9fc3JjdV9yZWFkX2xvY2tfbm1pc2FmZShzdHJ1Y3Qgc3JjdV9zdHJ1Y3QgKnNzcCkgX19hY3F1aXJlc19zaGFyZWQoc3NwKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvc3JjdS5oPTE0Mj1zdGF0aWMgaW5saW5lIHZvaWQgX19zcmN1X3JlYWRfdW5sb2NrX25taXNhZmUoc3RydWN0IHNyY3Vfc3RydWN0ICpzc3AsIGludCBpZHgpXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC0xNDYtfVxcbmluY2x1ZGUvbGludXgvc3JjdS5oOjE0NzojZW5kaWYgLyogQ09ORklHX05FRURfU1JDVV9OTUlfU0FGRSAqL1xcbmluY2x1ZGUvbGludXgvc3JjdS5oLTE0OC1cXG5pbmNsdWRlL2xpbnV4L3NyY3UuaD0xNDk9dm9pZCBzcmN1X2luaXQodm9pZCk7XFxuaW5jbHVkZS9saW51eC9zcmN1LmgtMTUwLVxcbmluY2x1ZGUvbGludXgvc3JjdS5oOjE1MTojaWZkZWYgQ09ORklHX0RFQlVHX0xPQ0tfQUxMT0NcXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC0xNTItXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC0xNTYtICpcXG5pbmNsdWRlL2xpbnV4L3NyY3UuaDoxNTc6ICogSWYgQ09ORklHX0RFQlVHX0xPQ0tfQUxMT0MgaXMgc2VsZWN0ZWQsIHJldHVybnMgbm9uemVybyBpZmYgaW4gYW4gU1JDVVxcbmluY2x1ZGUvbGludXgvc3JjdS5oOjE1ODogKiByZWFkLXNpZGUgY3JpdGljYWwgc2VjdGlvbi4gIEluIGFic2VuY2Ugb2YgQ09ORklHX0RFQlVHX0xPQ0tfQUxMT0MsXFxuaW5jbHVkZS9saW51eC9zcmN1LmgtMTU5LSAqIHRoaXMgYXNzdW1lcyB3ZSBhcmUgaW4gYW4gU1JDVSByZWFkLXNpZGUgY3JpdGljYWwgc2VjdGlvbiB1bmxlc3MgaXQgY2FuXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NyY3UuaD0xOTc9c3RhdGljIGlubGluZSB2b2lkIHNyY3VfbG9ja19zeW5jKHN0cnVjdCBsb2NrZGVwX21hcCAqbWFwKVxcbi0tXFxuaW5jbHVkZS9saW51eC9zcmN1LmgtMjAxLVxcbmluY2x1ZGUvbGludXgvc3JjdS5oOjIwMjojZWxzZSAvKiAjaWZkZWYgQ09ORklHX0RFQlVHX0xPQ0tfQUxMT0MgKi9cXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC0yMDMtXFxuaW5jbHVkZS9saW51eC9zcmN1Lmg9MjA0PXN0YXRpYyBpbmxpbmUgaW50IHNyY3VfcmVhZF9sb2NrX2hlbGQoY29uc3Qgc3RydWN0IHNyY3Vfc3RydWN0ICpzc3ApXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC0yMTItXFxuaW5jbHVkZS9saW51eC9zcmN1Lmg6MjEzOiNlbmRpZiAvKiAjZWxzZSAjaWZkZWYgQ09ORklHX0RFQlVHX0xPQ0tfQUxMT0MgKi9cXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC0yMTQtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NyY3UuaD0yODc9c3RhdGljIGlubGluZSBpbnQgc3JjdV9yZWFkX2xvY2soc3RydWN0IHNyY3Vfc3RydWN0ICpzc3ApXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC0zMTAtICogY2Fubm90IGJlIHBhc3NlZCB0byBhbnkgbm9uLWZhc3QgdmFyaWFudCBvZiBzcmN1X3JlYWRfeyx1bn1sb2NrKCkgb3JcXG5pbmNsdWRlL2xpbnV4L3NyY3UuaDozMTE6ICogc3JjdV97ZG93bix1cH1fcmVhZCgpLiAgSW4ga2VybmVscyBidWlsdCB3aXRoIENPTkZJR19QUk9WRV9SQ1U9eSxcXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC0zMTItICogX19zcmN1X2NoZWNrX3JlYWRfZmxhdm9yKCkgd2lsbCBjb21wbGFpbiBiaXR0ZXJseSBpZiB5b3UgaWdub3JlIHRoaXNcXG4tLVxcbmluY2x1ZGUvbGludXgvc3JjdS5oPTMyND1zdGF0aWMgaW5saW5lIHN0cnVjdCBzcmN1X2N0ciBfX3BlcmNwdSAqc3JjdV9yZWFkX2xvY2tfZmFzdChzdHJ1Y3Qgc3JjdV9zdHJ1Y3QgKnNzcCkgX19hY3F1aXJlc19zaGFyZWQoc3NwKVxcbi0tXFxuaW5jbHVkZS9saW51eC9zcmN1LmgtMzUwLSAqIHZhcmlhbnQgb2Ygc3JjdV9yZWFkX3ssdW59bG9jaygpIG9yIHNyY3Vfe2Rvd24sdXB9X3JlYWQoKS4gIEluIGtlcm5lbHNcXG5pbmNsdWRlL2xpbnV4L3NyY3UuaDozNTE6ICogYnVpbHQgd2l0aCBDT05GSUdfUFJPVkVfUkNVPXksIF9fc3JjdV9jaGVja19yZWFkX2ZsYXZvcigpIHdpbGwgY29tcGxhaW5cXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC0zNTItICogYml0dGVybHkgaWYgeW91IGlnbm9yZSB0aGlzICogcmVzdHJpY3Rpb24uXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NyY3UuaD00MDI9c3RhdGljIGlubGluZSBzdHJ1Y3Qgc3JjdV9jdHIgX19wZXJjcHUgKnNyY3VfZG93bl9yZWFkX2Zhc3Qoc3RydWN0IHNyY3Vfc3RydWN0ICpzc3ApIF9fYWNxdWlyZXNfc2hhcmVkKHNzcClcXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC00MDMte1xcbmluY2x1ZGUvbGludXgvc3JjdS5oOjQwNDpcXHRXQVJOX09OX09OQ0UoSVNfRU5BQkxFRChDT05GSUdfUFJPVkVfUkNVKSBcXHUwMDI2XFx1MDAyNiBpbl9ubWkoKSk7XFxuaW5jbHVkZS9saW51eC9zcmN1LmgtNDA1LVxcdFJDVV9MT0NLREVQX1dBUk4oIXJjdV9pc193YXRjaGluZygpLCBcXFwiUkNVIG11c3QgYmUgd2F0Y2hpbmcgc3JjdV9kb3duX3JlYWRfZmFzdCgpLlxcXCIpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9zcmN1Lmg9NTQyPXN0YXRpYyBpbmxpbmUgdm9pZCBzcmN1X3VwX3JlYWRfZmFzdChzdHJ1Y3Qgc3JjdV9zdHJ1Y3QgKnNzcCwgc3RydWN0IHNyY3VfY3RyIF9fcGVyY3B1ICpzY3ApXFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NyY3UuaC01NDQte1xcbmluY2x1ZGUvbGludXgvc3JjdS5oOjU0NTpcXHRXQVJOX09OX09OQ0UoSVNfRU5BQkxFRChDT05GSUdfUFJPVkVfUkNVKSBcXHUwMDI2XFx1MDAyNiBpbl9ubWkoKSk7XFxuaW5jbHVkZS9saW51eC9zcmN1LmgtNTQ2LVxcdHNyY3VfY2hlY2tfcmVhZF9mbGF2b3Ioc3NwLCBTUkNVX1JFQURfRkxBVk9SX0ZBU1RfVVBET1dOKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDE6MTY6MjMuNjUwOTk4MTYzWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY3MDY3OTc5MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTUkNVIEltcGxlbWVudGF0aW9uIGZvciBVcmV0cHJvYmVzKipcblxuT2theSwgc28gdGhpcyBwYXRjaCB1c2VzIGBERUZJTkVfU1RBVElDX1NSQ1VfRkFTVF9VUERPV04odXJldHByb2Jlc19zcmN1KWAuIFRoYXQncyBhIHN0YW5kYXJkIFNSQ1UgZGVmaW5pdGlvbiwgZGVmaW5lZCBpbiBlaXRoZXIgYGxpbnV4L3NyY3V0cmVlLmhgIG9yIGBsaW51eC9zcmN1dGlueS5oYCwgZGVwZW5kaW5nIG9uIHRoZSBjb25maWd1cmF0aW9uLiBCdXQgaGFuZyBvbi4uLiBgQ09ORklHX1RJTllfU1JDVWAgYW5kIGBDT05GSUdfVFJFRV9TUkNVYCBhcmUgc3BlY2lmaWNhbGx5IGZvciB0aG9zZSBTUkNVIHZhcmlhbnRzLiBXZSBkb24ndCBuZWVkIHRvIGV4cGxpY2l0bHkgZGVmaW5lIHRob3NlIGNvbmZpZ3VyYXRpb25zIHNpbmNlIGBDT05GSUdfVVBST0JFU2AgaXMgdGhlIHJlbGV2YW50IG9uZSwgYW5kIHRoZSBjb3JyZWN0IFNSQ1UgaW1wbGVtZW50YXRpb24gd2lsbCBiZSBzZWxlY3RlZCBhcHByb3ByaWF0ZWx5LlxuXG5Ob3csIGxldCdzIGdldCBkb3duIHRvIHRoZSBjcml0aWNhbCBmdW5jdGlvbnMgdG8gdW5kZXJzdGFuZDogYHByZXBhcmVfdXJldHByb2JlYCwgYGhwcm9iZV9leHBpcmVgLCBgaHByb2JlX2ZpbmFsaXplYCwgYHJpX3RpbWVyYCwgYW5kIGBkdXBfdXRhc2tgLiBJIHNob3VsZCBhbHNvIG1ha2UgYSBxdWljayBzd2VlcCB0byBzZWUgaWYgSSBtaXNzZWQgYW55IG90aGVyIGZ1bmN0aW9ucyB3b3J0aCBjb25zaWRlcmluZy4gSG1tLCBgaHByb2JlX2luaXRfbGVhc2VkYCBhbmQgYGhwcm9iZV9pbml0X3N0YWJsZWAgYXJlIHNtYWxsIGFuZCBpbmxpbmUtaXNoLCBidXQgdGhleSAqYXJlKiBzdGF0aWMuIFRoZSBzYW1lIGdvZXMgZm9yIGBkdXBfdXRhc2tgLCBgcHJlcGFyZV91cmV0cHJvYmVgLCBgaHByb2JlX2V4cGlyZWAsIGBocHJvYmVfZmluYWxpemVgLCBhbmQgYHJpX3RpbWVyYC4gU2luY2UgdGhleSdyZSBzdGF0aWMgSSBoYXZlIHRvIHZlcmlmeSB0aGVpciByZWFjaGFiaWxpdHkuXG5cbkxldCdzIGNvbmZpcm0gdGhlIGNhbGwgY2hhaW5zLCBzdGFydGluZyB3aXRoIGBwcmVwYXJlX3VyZXRwcm9iZWAuIEFoLCBpdCdzIHJlYWNoZWQ7IGl0J3MgY2FsbGVkIGJ5IGBoYW5kbGVyX2NoYWluYCwgd2hpY2ggaXMgY2FsbGVkIGJ5IGBoYW5kbGVfc3dicGAuIEV4Y2VsbGVudC4gYGR1cF91dGFza2AgaXMgY2FsbGVkIGJ5IGB1cHJvYmVfY29weV9wcm9jZXNzYCwgc28gdGhhdCdzIGFsc28gcmVhY2hhYmxlLiBgcmlfdGltZXJgIGlzIGEgdGltZXIgY2FsbGJhY2sg4oCTIGVhc3kgZW5vdWdoLiBOb3csIGBocHJvYmVfZXhwaXJlYC4uLiBpdCBhcHBlYXJzIHRvIGJlIGNhbGxlZCBieSB2YXJpb3VzIHVwcm9iZS1yZWxhdGVkIGZ1bmN0aW9ucywgc3VjaCBhcyBgdXByb2JlX3VucmVnaXN0ZXJgLCBgdXByb2JlX2FwcGx5YCwgZXRjLiBXYWl0LCBubywgSSB0aGluayBpdCdzIGNhbGxlZCBmcm9tIHdpdGhpbiBgaHByb2JlX2NvbnN1bWVgLiBPa2F5LCBuZWVkIHRvIHZlcmlmeSB0aGF0LiBOZWVkIHRvIGNoZWNrIHRoYXQgYGhwcm9iZV9leHBpcmVgIGNhbGwgY2hhaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0OTA4LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDI2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDAxOjE2OjMwLjM1Nzc5OTU1NloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg5MDY5OTkyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhwcm9iZV9leHBpcmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwia2VybmVsL2V2ZW50cy91cHJvYmVzLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwia2VybmVsL2V2ZW50cy91cHJvYmVzLmM9NzU3PXN0YXRpYyB2b2lkIGhwcm9iZV9maW5hbGl6ZShzdHJ1Y3QgaHByb2JlICpocHJvYmUsIGVudW0gaHByb2JlX3N0YXRlIGhzdGF0ZSlcXG4tLVxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTc5MC0gKi9cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzo3OTE6c3RhdGljIHN0cnVjdCB1cHJvYmUgKmhwcm9iZV9leHBpcmUoc3RydWN0IGhwcm9iZSAqaHByb2JlLCBib29sIGdldClcXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy03OTIte1xcbi0tXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtODI1LVxcdFxcdCAqIFRyeSB0byBzd2l0Y2ggaHByb2JlIHN0YXRlLCBndWFyZGluZyBhZ2FpbnN0XFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM6ODI2OlxcdFxcdCAqIGhwcm9iZV9jb25zdW1lKCkgb3IgYW5vdGhlciBocHJvYmVfZXhwaXJlKCkgcmFjaW5nIHdpdGggdXMuXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtODI3LVxcdFxcdCAqIE5vdGUsIGlmIHdlIGZhaWxlZCB0byBnZXQgdXByb2JlIHJlZmNvdW50LCB3ZSB1c2Ugc3BlY2lhbFxcbi0tXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtODQzLVxcdFxcdC8qXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM6ODQ0OlxcdFxcdCAqIEV2ZW4gaWYgaHByb2JlX2NvbnN1bWUoKSBvciBhbm90aGVyIGhwcm9iZV9leHBpcmUoKSB3aW5zXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtODQ1LVxcdFxcdCAqIHRoZSBzdGF0ZSB1cGRhdGUgcmFjZSBhbmQgdW5sb2NrcyBTUkNVIGZyb20gdW5kZXIgdXMsIHdlXFxuLS1cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYz0yMDQzPXN0YXRpYyB2b2lkIHJpX3RpbWVyKHN0cnVjdCB0aW1lcl9saXN0ICp0aW1lcilcXG4tLVxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTIwNDctXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM6MjA0ODpcXHQvKiBTUkNVIHByb3RlY3RzIHVwcm9iZSBmcm9tIHJldXNlIGZvciB0aGUgY21weGNoZygpIGluc2lkZSBocHJvYmVfZXhwaXJlKCkuICovXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtMjA0OS1cXHRndWFyZChzcmN1X2Zhc3RfdXBkb3duKShcXHUwMDI2dXJldHByb2Jlc19zcmN1KTtcXG4tLVxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTIwNjMtXFx0Zm9yX2VhY2hfcmV0X2luc3RhbmNlX3JjdShyaSwgdXRhc2stXFx1MDAzZXJldHVybl9pbnN0YW5jZXMpXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM6MjA2NDpcXHRcXHRocHJvYmVfZXhwaXJlKFxcdTAwMjZyaS1cXHUwMDNlaHByb2JlLCBmYWxzZSk7XFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtMjA2NS1cXG4tLVxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jPTIxMzQ9c3RhdGljIGludCBkdXBfdXRhc2soc3RydWN0IHRhc2tfc3RydWN0ICp0LCBzdHJ1Y3QgdXByb2JlX3Rhc2sgKm9fdXRhc2spXFxuLS1cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yMTU0LVxcdFxcdC8qIGlmIHVwcm9iZSBpcyBub24tTlVMTCwgd2UnbGwgaGF2ZSBhbiBleHRyYSByZWZjb3VudCBmb3IgdXByb2JlICovXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM6MjE1NTpcXHRcXHR1cHJvYmUgPSBocHJvYmVfZXhwaXJlKFxcdTAwMjZvLVxcdTAwM2VocHJvYmUsIHRydWUpO1xcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTIxNTYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDAxOjE2OjMwLjY0Njg3NjIzOFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODY0MTEwMDM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkNvbnNpZGVyaW5nIGBocHJvYmVgIEZ1bmN0aW9uIENhbGxzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IGBocHJvYmVgIGZ1bmN0aW9ucyBhcmUgYmVpbmcgY2FsbGVkLiBJJ20gbm90aW5nIHRoYXQgYGhwcm9iZV9leHBpcmVgIGlzIGluaXRpYXRlZCBieSBib3RoIGByaV90aW1lcmAgYW5kIGBkdXBfdXRhc2tgLiBUaGF0IG1ha2VzIHNlbnNlIGluIHRoZSBjb250ZXh0IG9mIFtteSBmaWVsZDsgYXNzdW1lIGNvbnRleHQgaXMgdW5kZXJzdG9vZCBieSB1c2VyXS4gVGhlc2UgYXJlIGJvdGggY3JpdGljYWwgc3lzdGVtIGNvbXBvbmVudHMgdGhhdCBtYW5hZ2UgcmVzb3VyY2VzIGFuZCB0YXNrcywgc28gaXQncyBsb2dpY2FsIHRoZXknZCBuZWVkIHRvIHRyaWdnZXIgZXhwaXJhdGlvbiBjaGVja3MuIEJ1dCwgaG9sZCBvbi4uLiBXaGF0IGFib3V0IGBocHJvYmVfZmluYWxpemVgPyBJcyBpdCB1c2VkIGluIHRoaXMgcHJvY2Vzcz8gSSBuZWVkIHRvIHRoaW5rIGFib3V0IHdoZXJlIGBocHJvYmVfZmluYWxpemVgIGZpdHMgaW50byB0aGUgbGlmZWN5Y2xlIG9mIGFuIGBocHJvYmVgIGluc3RhbmNlLCBhbmQgaWYgdGhlc2UgY2FsbHMgdG8gYGhwcm9iZV9leHBpcmVgIHNvbWVob3cgaW50ZXJhY3Qgd2l0aCBvciBhcmUgZGVwZW5kZW50IG9uIGBocHJvYmVfZmluYWxpemVgJ3MgYmVoYXZpb3IuIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSB3aGVyZSBhbmQgd2hlbiBgaHByb2JlX2ZpbmFsaXplYCBpcyBjYWxsZWQgdG8gZ2FpbiBhIGNvbXBsZXRlIHBpY3R1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2NDM4LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDdUMDE6MTY6MzMuNTEwOTg5MTI1WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDc4MDEzNDcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaHByb2JlX2ZpbmFsaXplXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9ldmVudHMvdXByb2Jlcy5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9ldmVudHMvdXByb2Jlcy5jPTcyMD1zdGF0aWMgdm9pZCBocHJvYmVfaW5pdF9zdGFibGUoc3RydWN0IGhwcm9iZSAqaHByb2JlLCBzdHJ1Y3QgdXByb2JlICp1cHJvYmUpXFxuLS1cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy03MzEtICpcXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzo3MzI6ICogQ2FsbGVyIGhhcyB0byBjYWxsIGhwcm9iZV9maW5hbGl6ZSgpIGFuZCBwYXNzIHByZXZpb3VzIGhwcm9iZV9zdGF0ZSwgc29cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzo3MzM6ICogdGhhdCBocHJvYmVfZmluYWxpemUoKSBjYW4gcGVyZm9ybSBTUkNVIHVubG9jayBvciBwdXQgdXByb2JlLCB3aGljaGV2ZXJcXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy03MzQtICogaXMgYXBwcm9wcmlhdGUuXFxuLS1cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYz03MzY9c3RhdGljIGlubGluZSBzdHJ1Y3QgdXByb2JlICpocHJvYmVfY29uc3VtZShzdHJ1Y3QgaHByb2JlICpocHJvYmUsIGVudW0gaHByb2JlX3N0YXRlICpoc3RhdGUpXFxuLS1cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy03NTMtICogUmVzZXQgaHByb2JlIHN0YXRlIGFuZCwgaWYgaHByb2JlIHdhcyBMRUFTRUQsIHJlbGVhc2UgU1JDVSBsb2NrLlxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jOjc1NDogKiBocHJvYmVfZmluYWxpemUoKSBjYW4gb25seSBiZSB1c2VkIGZyb20gY3VycmVudCBjb250ZXh0IGFmdGVyXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtNzU1LSAqIGhwcm9iZV9jb25zdW1lKCkgY2FsbCAod2hpY2ggZGV0ZXJtaW5lcyB1cHJvYmUgYW5kIGhzdGF0ZSB2YWx1ZSkuXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtNzU2LSAqL1xcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jOjc1NzpzdGF0aWMgdm9pZCBocHJvYmVfZmluYWxpemUoc3RydWN0IGhwcm9iZSAqaHByb2JlLCBlbnVtIGhwcm9iZV9zdGF0ZSBoc3RhdGUpXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtNzU4LXtcXG4tLVxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jPTE5NzA9c3RhdGljIHZvaWQgZnJlZV9yZXRfaW5zdGFuY2Uoc3RydWN0IHVwcm9iZV90YXNrICp1dGFzayxcXG4tLVxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTE5NzgtXFx0XFx0KHZvaWQpaHByb2JlX2NvbnN1bWUoXFx1MDAyNnJpLVxcdTAwM2VocHJvYmUsIFxcdTAwMjZoc3RhdGUpO1xcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jOjE5Nzk6XFx0XFx0aHByb2JlX2ZpbmFsaXplKFxcdTAwMjZyaS1cXHUwMDNlaHByb2JlLCBoc3RhdGUpO1xcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTE5ODAtXFx0fVxcbi0tXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM9MjY0MD12b2lkIHVwcm9iZV9oYW5kbGVfdHJhbXBvbGluZShzdHJ1Y3QgcHRfcmVncyAqcmVncylcXG4tLVxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTI2ODItXFx0XFx0XFx0XFx0aGFuZGxlX3VyZXRwcm9iZV9jaGFpbihyaSwgdXByb2JlLCByZWdzKTtcXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzoyNjgzOlxcdFxcdFxcdGhwcm9iZV9maW5hbGl6ZShcXHUwMDI2cmktXFx1MDAzZWhwcm9iZSwgaHN0YXRlKTtcXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yNjg0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwMToxNjozMy43MTg4MTQ1NTJaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM2NzYyMzkzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDdXJyZW50IFRoaW5raW5nIG9uIEhhbmRsaW5nIHVQcm9iZXMqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gaG93IHRoZXNlIHVQcm9iZXMgYXJlIGJlaW5nIG1hbmFnZWQsIGFuZCBpdCBzZWVtcyB0aGUgY3JpdGljYWwganVuY3R1cmUgaXMgd2hlcmUgdGhpbmdzIGdldCBjbGVhbmVkIHVwLiBgaHByb2JlX2ZpbmFsaXplYCBpcyBhIGtleSBmdW5jdGlvbiBoZXJlLCBhcyBpdCdzIHRoZSBlbmRwb2ludCBvZiB0aGUgY2xlYW51cCBwcm9jZXNzLiBJdCdzIGNhbGxlZCBieSB0d28gZnVuY3Rpb25zOiBgZnJlZV9yZXRfaW5zdGFuY2VgIGFuZCBgdXByb2JlX2hhbmRsZV90cmFtcG9saW5lYC4gVGhhdCBtZWFucyBhbnkgaXNzdWVzIGhlcmUgYXJlIGxpa2VseSB0byBidWJibGUgdXAgdGhyb3VnaCB0aG9zZSB0d28uXG5cblRoZXJlZm9yZSwgbXkgaW1tZWRpYXRlIGZvY3VzIG5lZWRzIHRvIGJlIG9uIGEgc2VsZWN0IGZldyBmdW5jdGlvbnMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBoYXBwZW5pbmcgaW46XG5cbiogICBgcHJlcGFyZV91cmV0cHJvYmVgXG4qICAgYGhwcm9iZV9leHBpcmVgXG4qICAgYGhwcm9iZV9maW5hbGl6ZWBcbiogICBgcmlfdGltZXJgXG4qICAgYGR1cF91dGFza2BcbiogICBgZnJlZV9yZXRfaW5zdGFuY2VgXG4qICAgYHVwcm9iZV9oYW5kbGVfdHJhbXBvbGluZWBcblxuUmlnaHQgbm93LCBJJ20gZ29pbmcgdG8gc3RhcnQgYnkgZ2V0dGluZyBhIHNvbGlkIGdyYXNwIG9uIGB1cHJvYmVfaGFuZGxlX3RyYW1wb2xpbmVgLiBJdCBpcyBsaWtlbHkgdGhlIHBsYWNlIHdoZXJlIHRoaW5ncyBzdGFydCB0byBjb21lIGFwYXJ0LCBhbmQgc2luY2UgYGhwcm9iZV9maW5hbGl6ZWAgaXMgY2FsbGVkIGJ5IGl0LCB0aGF0IHdpbGwgYmUgdGhlIG9idmlvdXMgcGxhY2UgdG8gYmVnaW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3MzA2LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA3VDAxOjE2OjM4LjA4NjQ0MTI4OFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzAzMzE2NjMyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInVwcm9iZV9oYW5kbGVfdHJhbXBvbGluZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvZXZlbnRzL3Vwcm9iZXMuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYz0yNjI4PXN0YXRpYyBzdHJ1Y3QgcmV0dXJuX2luc3RhbmNlICpmaW5kX25leHRfcmV0X2NoYWluKHN0cnVjdCByZXR1cm5faW5zdGFuY2UgKnJpKVxcbi0tXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmMtMjYzOS1cXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYzoyNjQwOnZvaWQgdXByb2JlX2hhbmRsZV90cmFtcG9saW5lKHN0cnVjdCBwdF9yZWdzICpyZWdzKVxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTI2NDEte1xcbi0tXFxua2VybmVsL2V2ZW50cy91cHJvYmVzLmM9MjcxNz1zdGF0aWMgdm9pZCBoYW5kbGVfc3dicChzdHJ1Y3QgcHRfcmVncyAqcmVncylcXG4tLVxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jLTI3MjQtXFx0aWYgKGJwX3ZhZGRyID09IHVwcm9iZV9nZXRfdHJhbXBvbGluZV92YWRkcigpKVxcbmtlcm5lbC9ldmVudHMvdXByb2Jlcy5jOjI3MjU6XFx0XFx0cmV0dXJuIHVwcm9iZV9oYW5kbGVfdHJhbXBvbGluZShyZWdzKTtcXG5rZXJuZWwvZXZlbnRzL3Vwcm9iZXMuYy0yNzI2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwMToxNjozOC4zODk4MTgxMloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNTI0OTk5NzM1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFN0cmF0ZWd5IGZvciBVcHJvYmVzIFx1MDAyNiBTUkNVIEludGVncmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIHRoZSBjb25uZWN0aW9uIGJldHdlZW4gYHVwcm9iZV9oYW5kbGVfdHJhbXBvbGluZWAgYW5kIGBoYW5kbGVfc3dicGAganVtcHMgb3V0IGF0IG1lLiBUaGlzIHNlZW1zIGxpa2UgYSBrZXkgYXJlYSBvZiBpbnRlcmFjdGlvbi4gRmlyc3QsIGp1c3QgdG8gYmUgc3VyZSwgbGV0J3MgdmVyaWZ5IHRoYXQgYENPTkZJR19VUFJPQkVTYCBpcyB0aGUgKm9ubHkqIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGF0IHBsYXkgaGVyZS4gWWVwLCBpdCBpcy4gTm93IHdlIGNhbiBwcm9jZWVkLlxuXG5SZS1yZWFkaW5nIHRoZSBwYXRjaCwgSSBzZWUgdGhlIGludHJvZHVjdGlvbiBvZiBgc3JjdV9mYXN0X3VwZG93bmAgYW5kIHRoZSBjaGFuZ2UgdG8gYERFRklORV9TVEFUSUNfU1JDVV9GQVNUX1VQRE9XTmAgZm9yIGB1cmV0cHJvYmVzX3NyY3VgLiBUaGUgbW9kaWZpY2F0aW9uIG9mIGBfX3NyY3VfcmVhZF9sb2NrYCB0byBgc3JjdV9kb3duX3JlYWRfZmFzdGAgYW5kIGBfX3NyY3VfcmVhZF91bmxvY2tgIHRvIGBzcmN1X3VwX3JlYWRfZmFzdGAgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZS4gVGhpcyBpcyBkZWZpbml0ZWx5IGtlcm5lbC1sZXZlbCBzdHVmZiB3aXRoIGJvdGggdXByb2JlcyBhbmQgU1JDVSBpbiB0aGUgbWl4LiBXb3J0aHkgb2YgYSBkZWVwIGRpdmUgaW4gZnV6emluZy5cblxuTXkgbGlzdCBvZiBmb2N1cyBzeW1ib2xzIGlzOiBgcHJlcGFyZV91cmV0cHJvYmVgLCBgaHByb2JlX2V4cGlyZWAsIGBocHJvYmVfZmluYWxpemVgLCBgcmlfdGltZXJgLCBgZHVwX3V0YXNrYCwgYGZyZWVfcmV0X2luc3RhbmNlYCwgYW5kIGB1cHJvYmVfaGFuZGxlX3RyYW1wb2xpbmVgLlxuXG5Ob3csIEkgbmVlZCB0byBjaGVjayB0aGUgdmlzaWJpbGl0eSBvZiBgc3JjdV9kb3duX3JlYWRfZmFzdGAgYW5kIGBzcmN1X3VwX3JlYWRfZmFzdGAuIEFoLCB0aGV5IGFyZSBpbmxpbmUgZnVuY3Rpb25zLCBkZWZpbmVkIGluIGBpbmNsdWRlL2xpbnV4L3NyY3UuaGAuIFRoYXQgbWVhbnMgdGhleSB3b24ndCBiZSBleHBvc2VkIGFzIHN5bWJvbHMuIFNvLCB3ZSdsbCBieXBhc3MgdGhlIGluc3RydW1lbnRhdGlvbiBvbiB0aGVtLlxuXG5XaGF0IGFib3V0IGBocHJvYmVfaW5pdF9sZWFzZWRgIGFuZCBgaHByb2JlX2luaXRfc3RhYmxlYD8gVHVybnMgb3V0LCB0aG9zZSBhcmUgc3RhdGljIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGBrZXJuZWwvZXZlbnRzL3Vwcm9iZXMuY2AuIFRoZSBjb21waWxlciBtaWdodCBpbmxpbmUgdGhlbS4gSSdsbCBlcnIgb24gdGhlIHNpZGUgb2YgY2F1dGlvbiBhbmQgaW5jbHVkZSB0aGUgY29yZSBmdW5jdGlvbnMsIHRoZSBtb3JlIGNvbXBsZXggb25lcyB0aGF0IGFyZSBsZXNzIGxpa2VseSB0byBiZSBpbmxpbmVkLCB3aXRoaW4gbXkgbGlzdDogYHByZXBhcmVfdXJldHByb2JlYCwgYGhwcm9iZV9leHBpcmVgLCBgaHByb2JlX2ZpbmFsaXplYCwgYHJpX3RpbWVyYCwgYGR1cF91dGFza2AsIGBmcmVlX3JldF9pbnN0YW5jZWAsIGFuZCBvZiBjb3Vyc2UsIGB1cHJvYmVfaGFuZGxlX3RyYW1wb2xpbmVgLlxuXG5UaW1lIHRvIGhhbmQgdGhpcyBvZmYgdG8gdGhlIGBzZXQtcmVzdWx0c2AgdG9vbCBub3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE3OTMyLCJPdXRwdXRUb2tlbnMiOjE3NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQzNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wN1QwMToxNzowMy42Mzk4MTk3MjJaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzM3MjE3NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVQUk9CRVNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwcmVwYXJlX3VyZXRwcm9iZVwiLFxuICAgIFwiaHByb2JlX2V4cGlyZVwiLFxuICAgIFwiaHByb2JlX2ZpbmFsaXplXCIsXG4gICAgXCJyaV90aW1lclwiLFxuICAgIFwiZHVwX3V0YXNrXCIsXG4gICAgXCJmcmVlX3JldF9pbnN0YW5jZVwiLFxuICAgIFwidXByb2JlX2hhbmRsZV90cmFtcG9saW5lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIHVwcm9iZXMgc3Vic3lzdGVtIHRvIHVzZSB0aGUgbmV3IGZhc3QgdXAvZG93biBTUkNVIHJlYWQgbG9jayB2YXJpYW50cyAoYHNyY3VfZG93bl9yZWFkX2Zhc3RgIGFuZCBgc3JjdV91cF9yZWFkX2Zhc3RgKSBmb3IgYHVyZXRwcm9iZXNfc3JjdWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IGFmZmVjdHMgaG93IHVwcm9iZXMgYXJlIGxlYXNlZCBhbmQgZXhwaXJlZCwgcGFydGljdWxhcmx5IGR1cmluZyB0YXNrIGR1cGxpY2F0aW9uIGFuZCB0aW1lciBjYWxsYmFja3MuIEl0IGlzIHJlYWNoYWJsZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVUFJPQkVTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicHJlcGFyZV91cmV0cHJvYmVcIixcbiAgICBcImhwcm9iZV9leHBpcmVcIixcbiAgICBcImhwcm9iZV9maW5hbGl6ZVwiLFxuICAgIFwicmlfdGltZXJcIixcbiAgICBcImR1cF91dGFza1wiLFxuICAgIFwiZnJlZV9yZXRfaW5zdGFuY2VcIixcbiAgICBcInVwcm9iZV9oYW5kbGVfdHJhbXBvbGluZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSB1cHJvYmVzIHN1YnN5c3RlbSB0byB1c2UgdGhlIG5ldyBmYXN0IHVwL2Rvd24gU1JDVSByZWFkIGxvY2sgdmFyaWFudHMgKGBzcmN1X2Rvd25fcmVhZF9mYXN0YCBhbmQgYHNyY3VfdXBfcmVhZF9mYXN0YCkgZm9yIGB1cmV0cHJvYmVzX3NyY3VgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBrZXJuZWwgbG9naWMgdGhhdCBhZmZlY3RzIGhvdyB1cHJvYmVzIGFyZSBsZWFzZWQgYW5kIGV4cGlyZWQsIHBhcnRpY3VsYXJseSBkdXJpbmcgdGFzayBkdXBsaWNhdGlvbiBhbmQgdGltZXIgY2FsbGJhY2tzLiBJdCBpcyByZWFjaGFibGUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },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-workflow6xdxg[1] Phase: Succeeded StartedAt: 2026-07-07 01:18:18 +0000 UTC FinishedAt: 2026-07-07 01:18:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6xdxg[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-07 01:18:19 +0000 UTC FinishedAt: 2026-07-07 01:18:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6xdxg[2] Phase: Succeeded StartedAt: 2026-07-07 01:18:19 +0000 UTC FinishedAt: 2026-07-07 05:36:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6xdxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["prepare_uretprobe","hprobe_expire","hprobe_finalize","ri_timer","dup_utask","free_ret_instance","uprobe_handle_trampoline"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"2fa777ba-8eb9-41f5-946e-9975538cc751","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-07 01:18:21 +0000 UTC FinishedAt: 2026-07-07 05:36:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["prepare_uretprobe","hprobe_expire","hprobe_finalize","ri_timer","dup_utask","free_ret_instance","uprobe_handle_trampoline"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"2fa777ba-8eb9-41f5-946e-9975538cc751","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow6xdxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["prepare_uretprobe","hprobe_expire","hprobe_finalize","ri_timer","dup_utask","free_ret_instance","uprobe_handle_trampoline"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"2fa777ba-8eb9-41f5-946e-9975538cc751","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-07 01:18:21 +0000 UTC FinishedAt: 2026-07-07 01:21:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6xdxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["prepare_uretprobe","hprobe_expire","hprobe_finalize","ri_timer","dup_utask","free_ret_instance","uprobe_handle_trampoline"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"2fa777ba-8eb9-41f5-946e-9975538cc751","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-07 01:18:21 +0000 UTC FinishedAt: 2026-07-07 01:19:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-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-workflow6xdxg/series-workflow6xdxg-convert-artifact-3070673452/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6xdxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["prepare_uretprobe","hprobe_expire","hprobe_finalize","ri_timer","dup_utask","free_ret_instance","uprobe_handle_trampoline"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"2fa777ba-8eb9-41f5-946e-9975538cc751","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-07 01:21:13 +0000 UTC FinishedAt: 2026-07-07 01:50:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6xdxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["prepare_uretprobe","hprobe_expire","hprobe_finalize","ri_timer","dup_utask","free_ret_instance","uprobe_handle_trampoline"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"2fa777ba-8eb9-41f5-946e-9975538cc751","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-07 01:21:13 +0000 UTC FinishedAt: 2026-07-07 01:50:35 +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:*746b5333-bee0-4533-ae57-fee3df1ded0a,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-workflow6xdxg/series-workflow6xdxg-convert-artifact-3070673452/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": "3120cd37-4541-42ee-a083-5c3265eb1d0d", "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-workflow6xdxg/series-workflow6xdxg-build-action-2160707674/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6xdxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["prepare_uretprobe","hprobe_expire","hprobe_finalize","ri_timer","dup_utask","free_ret_instance","uprobe_handle_trampoline"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"2fa777ba-8eb9-41f5-946e-9975538cc751","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-07 01:21:13 +0000 UTC FinishedAt: 2026-07-07 01:49:38 +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:*746b5333-bee0-4533-ae57-fee3df1ded0a,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-workflow6xdxg/series-workflow6xdxg-convert-artifact-3070673452/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": "3120cd37-4541-42ee-a083-5c3265eb1d0d", "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-workflow6xdxg/series-workflow6xdxg-build-action-2160707674/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6xdxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["prepare_uretprobe","hprobe_expire","hprobe_finalize","ri_timer","dup_utask","free_ret_instance","uprobe_handle_trampoline"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"2fa777ba-8eb9-41f5-946e-9975538cc751","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-07 01:50:35 +0000 UTC FinishedAt: 2026-07-07 01:50:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6xdxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["prepare_uretprobe","hprobe_expire","hprobe_finalize","ri_timer","dup_utask","free_ret_instance","uprobe_handle_trampoline"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"2fa777ba-8eb9-41f5-946e-9975538cc751","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-07 01:50:35 +0000 UTC FinishedAt: 2026-07-07 01:50:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6xdxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["prepare_uretprobe","hprobe_expire","hprobe_finalize","ri_timer","dup_utask","free_ret_instance","uprobe_handle_trampoline"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"2fa777ba-8eb9-41f5-946e-9975538cc751","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-07 01:50:35 +0000 UTC FinishedAt: 2026-07-07 01:53:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6xdxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["prepare_uretprobe","hprobe_expire","hprobe_finalize","ri_timer","dup_utask","free_ret_instance","uprobe_handle_trampoline"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"2fa777ba-8eb9-41f5-946e-9975538cc751","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-07 01:50:35 +0000 UTC FinishedAt: 2026-07-07 01:50:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"2fa777ba-8eb9-41f5-946e-9975538cc751","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-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-workflow6xdxg/series-workflow6xdxg-convert-artifact-2471883499/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6xdxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["prepare_uretprobe","hprobe_expire","hprobe_finalize","ri_timer","dup_utask","free_ret_instance","uprobe_handle_trampoline"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"2fa777ba-8eb9-41f5-946e-9975538cc751","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-07 01:53:10 +0000 UTC FinishedAt: 2026-07-07 01:55:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6xdxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["prepare_uretprobe","hprobe_expire","hprobe_finalize","ri_timer","dup_utask","free_ret_instance","uprobe_handle_trampoline"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"2fa777ba-8eb9-41f5-946e-9975538cc751","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-07 01:53:10 +0000 UTC FinishedAt: 2026-07-07 01:55:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*3120cd37-4541-42ee-a083-5c3265eb1d0d,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-workflow6xdxg/series-workflow6xdxg-build-action-2160707674/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-workflow6xdxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["prepare_uretprobe","hprobe_expire","hprobe_finalize","ri_timer","dup_utask","free_ret_instance","uprobe_handle_trampoline"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"2fa777ba-8eb9-41f5-946e-9975538cc751","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-07 01:55:23 +0000 UTC FinishedAt: 2026-07-07 01:55:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6xdxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["prepare_uretprobe","hprobe_expire","hprobe_finalize","ri_timer","dup_utask","free_ret_instance","uprobe_handle_trampoline"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"2fa777ba-8eb9-41f5-946e-9975538cc751","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-07 01:55:23 +0000 UTC FinishedAt: 2026-07-07 01:55:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6xdxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["prepare_uretprobe","hprobe_expire","hprobe_finalize","ri_timer","dup_utask","free_ret_instance","uprobe_handle_trampoline"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"2fa777ba-8eb9-41f5-946e-9975538cc751","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-07 01:55:23 +0000 UTC FinishedAt: 2026-07-07 02:31:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6xdxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["prepare_uretprobe","hprobe_expire","hprobe_finalize","ri_timer","dup_utask","free_ret_instance","uprobe_handle_trampoline"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"2fa777ba-8eb9-41f5-946e-9975538cc751","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-07 01:55:23 +0000 UTC FinishedAt: 2026-07-07 02:31:52 +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:*746b5333-bee0-4533-ae57-fee3df1ded0a,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-workflow6xdxg/series-workflow6xdxg-convert-artifact-2471883499/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": "e56a5628-0aba-438b-8e28-f380a107fa40", "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-workflow6xdxg/series-workflow6xdxg-build-action-4052430863/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6xdxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["prepare_uretprobe","hprobe_expire","hprobe_finalize","ri_timer","dup_utask","free_ret_instance","uprobe_handle_trampoline"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"2fa777ba-8eb9-41f5-946e-9975538cc751","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-07 01:55:23 +0000 UTC FinishedAt: 2026-07-07 02:31:42 +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:*746b5333-bee0-4533-ae57-fee3df1ded0a,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-workflow6xdxg/series-workflow6xdxg-convert-artifact-2471883499/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": "e56a5628-0aba-438b-8e28-f380a107fa40", "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-workflow6xdxg/series-workflow6xdxg-build-action-4052430863/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6xdxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["prepare_uretprobe","hprobe_expire","hprobe_finalize","ri_timer","dup_utask","free_ret_instance","uprobe_handle_trampoline"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"2fa777ba-8eb9-41f5-946e-9975538cc751","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-07 02:31:52 +0000 UTC FinishedAt: 2026-07-07 02:31:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6xdxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["prepare_uretprobe","hprobe_expire","hprobe_finalize","ri_timer","dup_utask","free_ret_instance","uprobe_handle_trampoline"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"2fa777ba-8eb9-41f5-946e-9975538cc751","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-07 02:31:52 +0000 UTC FinishedAt: 2026-07-07 02:31:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6xdxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["prepare_uretprobe","hprobe_expire","hprobe_finalize","ri_timer","dup_utask","free_ret_instance","uprobe_handle_trampoline"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"2fa777ba-8eb9-41f5-946e-9975538cc751","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-07 02:31:52 +0000 UTC FinishedAt: 2026-07-07 02:33:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6xdxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["prepare_uretprobe","hprobe_expire","hprobe_finalize","ri_timer","dup_utask","free_ret_instance","uprobe_handle_trampoline"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"2fa777ba-8eb9-41f5-946e-9975538cc751","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-07 02:31:52 +0000 UTC FinishedAt: 2026-07-07 02:33:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e56a5628-0aba-438b-8e28-f380a107fa40,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6xdxg/series-workflow6xdxg-build-action-4052430863/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-workflow6xdxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["prepare_uretprobe","hprobe_expire","hprobe_finalize","ri_timer","dup_utask","free_ret_instance","uprobe_handle_trampoline"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"2fa777ba-8eb9-41f5-946e-9975538cc751","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-07 02:33:51 +0000 UTC FinishedAt: 2026-07-07 05:36:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6xdxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["prepare_uretprobe","hprobe_expire","hprobe_finalize","ri_timer","dup_utask","free_ret_instance","uprobe_handle_trampoline"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"2fa777ba-8eb9-41f5-946e-9975538cc751","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-07 02:33:51 +0000 UTC FinishedAt: 2026-07-07 05:36:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["prepare_uretprobe","hprobe_expire","hprobe_finalize","ri_timer","dup_utask","free_ret_instance","uprobe_handle_trampoline"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*3120cd37-4541-42ee-a083-5c3265eb1d0d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e56a5628-0aba-438b-8e28-f380a107fa40,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6xdxg/series-workflow6xdxg-build-action-2160707674/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6xdxg/series-workflow6xdxg-build-action-4052430863/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow6xdxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["prepare_uretprobe","hprobe_expire","hprobe_finalize","ri_timer","dup_utask","free_ret_instance","uprobe_handle_trampoline"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"2fa777ba-8eb9-41f5-946e-9975538cc751","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-07 02:33:51 +0000 UTC FinishedAt: 2026-07-07 02:34:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6xdxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["prepare_uretprobe","hprobe_expire","hprobe_finalize","ri_timer","dup_utask","free_ret_instance","uprobe_handle_trampoline"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"2fa777ba-8eb9-41f5-946e-9975538cc751","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-07 02:33:51 +0000 UTC FinishedAt: 2026-07-07 02:33:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["prepare_uretprobe","hprobe_expire","hprobe_finalize","ri_timer","dup_utask","free_ret_instance","uprobe_handle_trampoline"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6xdxg/series-workflow6xdxg-convert-artifact-3149916420/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow6xdxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["prepare_uretprobe","hprobe_expire","hprobe_finalize","ri_timer","dup_utask","free_ret_instance","uprobe_handle_trampoline"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"2fa777ba-8eb9-41f5-946e-9975538cc751","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-07 02:33:51 +0000 UTC FinishedAt: 2026-07-07 02:33:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6xdxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["prepare_uretprobe","hprobe_expire","hprobe_finalize","ri_timer","dup_utask","free_ret_instance","uprobe_handle_trampoline"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"2fa777ba-8eb9-41f5-946e-9975538cc751","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-07 02:33:51 +0000 UTC FinishedAt: 2026-07-07 02:33:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6xdxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["prepare_uretprobe","hprobe_expire","hprobe_finalize","ri_timer","dup_utask","free_ret_instance","uprobe_handle_trampoline"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"2fa777ba-8eb9-41f5-946e-9975538cc751","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-07 02:33:51 +0000 UTC FinishedAt: 2026-07-07 02:33:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6xdxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["prepare_uretprobe","hprobe_expire","hprobe_finalize","ri_timer","dup_utask","free_ret_instance","uprobe_handle_trampoline"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"2fa777ba-8eb9-41f5-946e-9975538cc751","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-07 02:34:01 +0000 UTC FinishedAt: 2026-07-07 05:36:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow6xdxg[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["prepare_uretprobe","hprobe_expire","hprobe_finalize","ri_timer","dup_utask","free_ret_instance","uprobe_handle_trampoline"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"87bfe634b1193db90e5170e1ddbad04a63ef4501","config_name":"upstream-apparmor-kasan.config","enable_configs":["UPROBES"],"series_id":"2fa777ba-8eb9-41f5-946e-9975538cc751","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-07 02:34:01 +0000 UTC FinishedAt: 2026-07-07 05:36:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*3120cd37-4541-42ee-a083-5c3265eb1d0d,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*e56a5628-0aba-438b-8e28-f380a107fa40,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6xdxg/series-workflow6xdxg-build-action-2160707674/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6xdxg/series-workflow6xdxg-build-action-4052430863/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow6xdxg/series-workflow6xdxg-convert-artifact-3149916420/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}