Name: series-workflowg9q75 Phase: Succeeded StartedAt: 2026-07-29 10:34:28 +0000 UTC FinishedAt: 2026-07-29 14:34:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg9q75[0] Phase: Succeeded StartedAt: 2026-07-29 10:34:28 +0000 UTC FinishedAt: 2026-07-29 10:41:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg9q75[0].run-triage Phase: Succeeded StartedAt: 2026-07-29 10:34:28 +0000 UTC FinishedAt: 2026-07-29 10:41:51 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB", "USB_GADGET", "USB_RAW_GADGET", "USB_DUMMY_HCD" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB", "USB_GADGET", "USB_RAW_GADGET", "USB_DUMMY_HCD" ], "series_id": "6431a49d-e142-4799-a9d2-a1a766f5dc5e" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "gadget_bind", "gadget_unbind", "raw_ioctl", "raw_process_ep0_io", "raw_process_ep_io" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEwOjQwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQiYjMzQ7LAogICAgJiMzNDtVU0JfR0FER0VUJiMzNDssCiAgICAmIzM0O1VTQl9SQVdfR0FER0VUJiMzNDssCiAgICAmIzM0O1VTQl9EVU1NWV9IQ0QmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtnYWRnZXRfYmluZCYjMzQ7LAogICAgJiMzNDtnYWRnZXRfdW5iaW5kJiMzNDssCiAgICAmIzM0O3Jhd19pb2N0bCYjMzQ7LAogICAgJiMzNDtyYXdfcHJvY2Vzc19lcDBfaW8mIzM0OywKICAgICYjMzQ7cmF3X3Byb2Nlc3NfZXBfaW8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgVVNCIFJhdyBHYWRnZXQgZHJpdmVyIGJldHdlZW4gVURDIHVuYmluZCBhbmQgZW5kcG9pbnQgSU8gb3BlcmF0aW9ucy4gSXQgaW50cm9kdWNlcyBhIGB1ZGNfdXNhZ2VgIGNvdW50ZXIgYW5kIGFuIGB1bmJpbmRfY29tcGxldGlvbmAgdG8gZW5zdXJlIHRoYXQgYGdhZGdldF91bmJpbmRgIHdhaXRzIGZvciBhbnkgcGVuZGluZyBJTyB0byBmaW5pc2ggYmVmb3JlIGNvbXBsZXRpbmcgdGhlIHVuYmluZCBwcm9jZXNzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGRyaXZlciB1c2VkIGZvciBVU0IgZW11bGF0aW9uIGFuZCBmdXp6aW5nLCBhbmQgaXQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMDo0MDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDM3Nzc4NDJmZjg4NDE5MzY3NjRiMTU2NDM5YmY0Y2ZjZjBjNmYzZmVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAyOSAxMDo0MDowMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jXG5pbmRleCA0ZmViZjhkYWM3Y2E1Li5iY2U0ZjhkM2ZhNjNmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jXG5AQCAtMTc1LDYgJiM0MzsxNzUsOCBAQCBzdHJ1Y3QgcmF3X2RldiB7XG4gXHRib29sXHRcdFx0XHRnYWRnZXRfcmVnaXN0ZXJlZDtcbiBcdHN0cnVjdCB1c2JfZ2FkZ2V0XHRcdCpnYWRnZXQ7XG4gXHRzdHJ1Y3QgdXNiX3JlcXVlc3RcdFx0KnJlcTtcbiYjNDM7XHRpbnRcdFx0XHRcdHVkY191c2FnZTtcbiYjNDM7XHRzdHJ1Y3QgY29tcGxldGlvblx0XHQqdW5iaW5kX2NvbXBsZXRpb247XG4gXHRib29sXHRcdFx0XHRlcDBfaW5fcGVuZGluZztcbiBcdGJvb2xcdFx0XHRcdGVwMF9vdXRfcGVuZGluZztcbiBcdGJvb2xcdFx0XHRcdGVwMF91cmJfcXVldWVkO1xuQEAgLTIwNSwyNyAmIzQzOzIwNywxMyBAQCBzdGF0aWMgc3RydWN0IHJhd19kZXYgKmRldl9uZXcodm9pZClcbiBzdGF0aWMgdm9pZCBkZXZfZnJlZShzdHJ1Y3Qga3JlZiAqa3JlZilcbiB7XG4gXHRzdHJ1Y3QgcmF3X2RldiAqZGV2ID0gY29udGFpbmVyX29mKGtyZWYsIHN0cnVjdCByYXdfZGV2LCBjb3VudCk7XG4tXHRpbnQgaTtcbiBcbiBcdGtmcmVlKGRldi1cdTAwM2V1ZGNfbmFtZSk7XG4gXHRrZnJlZShkZXYtXHUwMDNlZHJpdmVyLnVkY19uYW1lKTtcbiBcdGtmcmVlKGRldi1cdTAwM2Vkcml2ZXIuZHJpdmVyLm5hbWUpO1xuIFx0aWYgKGRldi1cdTAwM2Vkcml2ZXJfaWRfbnVtYmVyIFx1MDAzZT0gMClcbiBcdFx0aWRhX2ZyZWUoXHUwMDI2ZHJpdmVyX2lkX251bWJlcnMsIGRldi1cdTAwM2Vkcml2ZXJfaWRfbnVtYmVyKTtcbi1cdGlmIChkZXYtXHUwMDNlcmVxKSB7XG4tXHRcdGlmIChkZXYtXHUwMDNlZXAwX3VyYl9xdWV1ZWQpXG4tXHRcdFx0dXNiX2VwX2RlcXVldWUoZGV2LVx1MDAzZWdhZGdldC1cdTAwM2VlcDAsIGRldi1cdTAwM2VyZXEpO1xuLVx0XHR1c2JfZXBfZnJlZV9yZXF1ZXN0KGRldi1cdTAwM2VnYWRnZXQtXHUwMDNlZXAwLCBkZXYtXHUwMDNlcmVxKTtcbi1cdH1cbiBcdHJhd19ldmVudF9xdWV1ZV9kZXN0cm95KFx1MDAyNmRldi1cdTAwM2VxdWV1ZSk7XG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBkZXYtXHUwMDNlZXBzX251bTsgaSYjNDM7JiM0MzspIHtcbi1cdFx0aWYgKGRldi1cdTAwM2VlcHNbaV0uc3RhdGUgPT0gU1RBVEVfRVBfRElTQUJMRUQpXG4tXHRcdFx0Y29udGludWU7XG4tXHRcdHVzYl9lcF9kaXNhYmxlKGRldi1cdTAwM2VlcHNbaV0uZXApO1xuLVx0XHR1c2JfZXBfZnJlZV9yZXF1ZXN0KGRldi1cdTAwM2VlcHNbaV0uZXAsIGRldi1cdTAwM2VlcHNbaV0ucmVxKTtcbi1cdFx0a2ZyZWUoZGV2LVx1MDAzZWVwc1tpXS5lcC1cdTAwM2VkZXNjKTtcbi1cdFx0ZGV2LVx1MDAzZWVwc1tpXS5zdGF0ZSA9IFNUQVRFX0VQX0RJU0FCTEVEO1xuLVx0fVxuIFx0a2ZyZWUoZGV2KTtcbiB9XG4gXG5AQCAtMzE2LDYgJiM0MzszMDQsMTEgQEAgc3RhdGljIGludCBnYWRnZXRfYmluZChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0LFxuIFx0cmV0ID0gcmF3X3F1ZXVlX2V2ZW50KGRldiwgVVNCX1JBV19FVkVOVF9DT05ORUNULCAwLCBOVUxMKTtcbiBcdGlmIChyZXQgXHUwMDNjIDApIHtcbiBcdFx0ZGV2X2VycihcdTAwMjZnYWRnZXQtXHUwMDNlZGV2LCBcJiMzNDtmYWlsZWQgdG8gcXVldWUgY29ubmVjdCBldmVudFxcblwmIzM0Oyk7XG4mIzQzO1x0XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZkZXYtXHUwMDNlbG9jaywgZmxhZ3MpO1xuJiM0MztcdFx0ZGV2LVx1MDAzZWdhZGdldCA9IE5VTEw7XG4mIzQzO1x0XHRkZXYtXHUwMDNlcmVxID0gTlVMTDtcbiYjNDM7XHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbiYjNDM7XHRcdHVzYl9lcF9mcmVlX3JlcXVlc3QoZ2FkZ2V0LVx1MDAzZWVwMCwgcmVxKTtcbiBcdFx0c2V0X2dhZGdldF9kYXRhKGdhZGdldCwgTlVMTCk7XG4gXHRcdHJldHVybiByZXQ7XG4gXHR9XG5AQCAtMzI4LDYgJiM0MzszMjEsNDcgQEAgc3RhdGljIGludCBnYWRnZXRfYmluZChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0LFxuIHN0YXRpYyB2b2lkIGdhZGdldF91bmJpbmQoc3RydWN0IHVzYl9nYWRnZXQgKmdhZGdldClcbiB7XG4gXHRzdHJ1Y3QgcmF3X2RldiAqZGV2ID0gZ2V0X2dhZGdldF9kYXRhKGdhZGdldCk7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBmbGFncztcbiYjNDM7XHRERUNMQVJFX0NPTVBMRVRJT05fT05TVEFDSyhkb25lKTtcbiYjNDM7XHRpbnQgaTtcbiYjNDM7XG4mIzQzO1x0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbiYjNDM7XHRkZXYtXHUwMDNlc3RhdGUgPSBTVEFURV9ERVZfRkFJTEVEO1xuJiM0MztcbiYjNDM7XHRpZiAoZGV2LVx1MDAzZWVwMF91cmJfcXVldWVkKSB7XG4mIzQzO1x0XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmRldi1cdTAwM2Vsb2NrLCBmbGFncyk7XG4mIzQzO1x0XHR1c2JfZXBfZGVxdWV1ZShnYWRnZXQtXHUwMDNlZXAwLCBkZXYtXHUwMDNlcmVxKTtcbiYjNDM7XHRcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmRldi1cdTAwM2Vsb2NrLCBmbGFncyk7XG4mIzQzO1x0fVxuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGRldi1cdTAwM2VlcHNfbnVtOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0aWYgKGRldi1cdTAwM2VlcHNbaV0uc3RhdGUgPT0gU1RBVEVfRVBfRU5BQkxFRCBcdTAwMjZcdTAwMjYgZGV2LVx1MDAzZWVwc1tpXS51cmJfcXVldWVkKSB7XG4mIzQzO1x0XHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbiYjNDM7XHRcdFx0dXNiX2VwX2RlcXVldWUoZGV2LVx1MDAzZWVwc1tpXS5lcCwgZGV2LVx1MDAzZWVwc1tpXS5yZXEpO1xuJiM0MztcdFx0XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZkZXYtXHUwMDNlbG9jaywgZmxhZ3MpO1xuJiM0MztcdFx0fVxuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKGRldi1cdTAwM2V1ZGNfdXNhZ2UgXHUwMDNlIDApIHtcbiYjNDM7XHRcdGRldi1cdTAwM2V1bmJpbmRfY29tcGxldGlvbiA9IFx1MDAyNmRvbmU7XG4mIzQzO1x0XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmRldi1cdTAwM2Vsb2NrLCBmbGFncyk7XG4mIzQzO1x0XHR3YWl0X2Zvcl9jb21wbGV0aW9uKFx1MDAyNmRvbmUpO1xuJiM0MztcdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbiYjNDM7XHR9XG4mIzQzO1x0ZGV2LVx1MDAzZWdhZGdldCA9IE5VTEw7XG4mIzQzO1x0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZkZXYtXHUwMDNlbG9jaywgZmxhZ3MpO1xuJiM0MztcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBkZXYtXHUwMDNlZXBzX251bTsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdGlmIChkZXYtXHUwMDNlZXBzW2ldLnN0YXRlID09IFNUQVRFX0VQX0RJU0FCTEVEKVxuJiM0MztcdFx0XHRjb250aW51ZTtcbiYjNDM7XHRcdHVzYl9lcF9kaXNhYmxlKGRldi1cdTAwM2VlcHNbaV0uZXApO1xuJiM0MztcdFx0dXNiX2VwX2ZyZWVfcmVxdWVzdChkZXYtXHUwMDNlZXBzW2ldLmVwLCBkZXYtXHUwMDNlZXBzW2ldLnJlcSk7XG4mIzQzO1x0XHRrZnJlZShkZXYtXHUwMDNlZXBzW2ldLmVwLVx1MDAzZWRlc2MpO1xuJiM0MztcdFx0ZGV2LVx1MDAzZWVwc1tpXS5zdGF0ZSA9IFNUQVRFX0VQX0RJU0FCTEVEO1xuJiM0MztcdH1cbiYjNDM7XHRpZiAoZGV2LVx1MDAzZXJlcSkge1xuJiM0MztcdFx0dXNiX2VwX2ZyZWVfcmVxdWVzdChnYWRnZXQtXHUwMDNlZXAwLCBkZXYtXHUwMDNlcmVxKTtcbiYjNDM7XHRcdGRldi1cdTAwM2VyZXEgPSBOVUxMO1xuJiM0MztcdH1cbiBcbiBcdHNldF9nYWRnZXRfZGF0YShnYWRnZXQsIE5VTEwpO1xuIFx0LyogTWF0Y2hlcyBrcmVmX2dldCgpIGluIGdhZGdldF9iaW5kKCkuICovXG5AQCAtNjM3LDExICYjNDM7NjcxLDExIEBAIHN0YXRpYyBpbnQgcmF3X2lvY3RsX2V2ZW50X2ZldGNoKHN0cnVjdCByYXdfZGV2ICpkZXYsIHVuc2lnbmVkIGxvbmcgdmFsdWUpXG4gXG4gXHRldmVudCA9IHJhd19ldmVudF9xdWV1ZV9mZXRjaChcdTAwMjZkZXYtXHUwMDNlcXVldWUpO1xuIFx0aWYgKFBUUl9FUlIoZXZlbnQpID09IC1FSU5UUikge1xuLVx0XHRkZXZfZGJnKFx1MDAyNmRldi1cdTAwM2VnYWRnZXQtXHUwMDNlZGV2LCBcJiMzNDtldmVudCBmZXRjaGluZyBpbnRlcnJ1cHRlZFxcblwmIzM0Oyk7XG4mIzQzO1x0XHRkZXZfZGJnKGRldi1cdTAwM2VkZXYsIFwmIzM0O2V2ZW50IGZldGNoaW5nIGludGVycnVwdGVkXFxuXCYjMzQ7KTtcbiBcdFx0cmV0dXJuIC1FSU5UUjtcbiBcdH1cbiBcdGlmIChJU19FUlIoZXZlbnQpKSB7XG4tXHRcdGRldl9lcnIoXHUwMDI2ZGV2LVx1MDAzZWdhZGdldC1cdTAwM2VkZXYsIFwmIzM0O2ZhaWxlZCB0byBmZXRjaCBldmVudFxcblwmIzM0Oyk7XG4mIzQzO1x0XHRkZXZfZXJyKGRldi1cdTAwM2VkZXYsIFwmIzM0O2ZhaWxlZCB0byBmZXRjaCBldmVudFxcblwmIzM0Oyk7XG4gXHRcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmRldi1cdTAwM2Vsb2NrLCBmbGFncyk7XG4gXHRcdGRldi1cdTAwM2VzdGF0ZSA9IFNUQVRFX0RFVl9GQUlMRUQ7XG4gXHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbkBAIC03MjMsMjIgJiM0Mzs3NTcsMzcgQEAgc3RhdGljIGludCByYXdfcHJvY2Vzc19lcDBfaW8oc3RydWN0IHJhd19kZXYgKmRldiwgc3RydWN0IHVzYl9yYXdfZXBfaW8gKmlvLFxuIFx0ZGV2LVx1MDAzZXJlcS1cdTAwM2VsZW5ndGggPSBpby1cdTAwM2VsZW5ndGg7XG4gXHRkZXYtXHUwMDNlcmVxLVx1MDAzZXplcm8gPSB1c2JfcmF3X2lvX2ZsYWdzX3plcm8oaW8tXHUwMDNlZmxhZ3MpO1xuIFx0ZGV2LVx1MDAzZWVwMF91cmJfcXVldWVkID0gdHJ1ZTtcbiYjNDM7XHRkZXYtXHUwMDNldWRjX3VzYWdlJiM0MzsmIzQzOztcbiBcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbiBcbiBcdHJldCA9IHVzYl9lcF9xdWV1ZShkZXYtXHUwMDNlZ2FkZ2V0LVx1MDAzZWVwMCwgZGV2LVx1MDAzZXJlcSwgR0ZQX0tFUk5FTCk7XG4gXHRpZiAocmV0KSB7XG4tXHRcdGRldl9lcnIoXHUwMDI2ZGV2LVx1MDAzZWdhZGdldC1cdTAwM2VkZXYsXG4tXHRcdFx0XHRcJiMzNDtmYWlsLCB1c2JfZXBfcXVldWUgcmV0dXJuZWQgJWRcXG5cJiMzNDssIHJldCk7XG4mIzQzO1x0XHRkZXZfZXJyKGRldi1cdTAwM2VkZXYsIFwmIzM0O2ZhaWwsIHVzYl9lcF9xdWV1ZSByZXR1cm5lZCAlZFxcblwmIzM0OywgcmV0KTtcbiBcdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbiYjNDM7XHRcdGRldi1cdTAwM2V1ZGNfdXNhZ2UtLTtcbiYjNDM7XHRcdGlmICghZGV2LVx1MDAzZXVkY191c2FnZSBcdTAwMjZcdTAwMjYgZGV2LVx1MDAzZXVuYmluZF9jb21wbGV0aW9uKVxuJiM0MztcdFx0XHRjb21wbGV0ZShkZXYtXHUwMDNldW5iaW5kX2NvbXBsZXRpb24pO1xuIFx0XHRnb3RvIG91dF9xdWV1ZV9mYWlsZWQ7XG4gXHR9XG4gXG4gXHRyZXQgPSB3YWl0X2Zvcl9jb21wbGV0aW9uX2ludGVycnVwdGlibGUoXHUwMDI2ZGV2LVx1MDAzZWVwMF9kb25lKTtcbiBcdGlmIChyZXQpIHtcbi1cdFx0ZGV2X2RiZyhcdTAwMjZkZXYtXHUwMDNlZ2FkZ2V0LVx1MDAzZWRldiwgXCYjMzQ7d2FpdCBpbnRlcnJ1cHRlZFxcblwmIzM0Oyk7XG4tXHRcdHVzYl9lcF9kZXF1ZXVlKGRldi1cdTAwM2VnYWRnZXQtXHUwMDNlZXAwLCBkZXYtXHUwMDNlcmVxKTtcbi1cdFx0d2FpdF9mb3JfY29tcGxldGlvbihcdTAwMjZkZXYtXHUwMDNlZXAwX2RvbmUpO1xuJiM0MztcdFx0ZGV2X2RiZyhkZXYtXHUwMDNlZGV2LCBcJiMzNDt3YWl0IGludGVycnVwdGVkXFxuXCYjMzQ7KTtcbiBcdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbiYjNDM7XHRcdGlmIChkZXYtXHUwMDNlc3RhdGUgIT0gU1RBVEVfREVWX0ZBSUxFRCBcdTAwMjZcdTAwMjYgZGV2LVx1MDAzZWdhZGdldCkge1xuJiM0MztcdFx0XHRzdHJ1Y3QgdXNiX2VwICplcDAgPSBkZXYtXHUwMDNlZ2FkZ2V0LVx1MDAzZWVwMDtcbiYjNDM7XG4mIzQzO1x0XHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbiYjNDM7XG4mIzQzO1x0XHRcdHVzYl9lcF9kZXF1ZXVlKGVwMCwgZGV2LVx1MDAzZXJlcSk7XG4mIzQzO1x0XHRcdHdhaXRfZm9yX2NvbXBsZXRpb24oXHUwMDI2ZGV2LVx1MDAzZWVwMF9kb25lKTtcbiYjNDM7XG4mIzQzO1x0XHRcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmRldi1cdTAwM2Vsb2NrLCBmbGFncyk7XG4mIzQzO1x0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmRldi1cdTAwM2Vsb2NrLCBmbGFncyk7XG4mIzQzO1x0XHRcdHdhaXRfZm9yX2NvbXBsZXRpb24oXHUwMDI2ZGV2LVx1MDAzZWVwMF9kb25lKTtcbiYjNDM7XHRcdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbiYjNDM7XHRcdH1cbiBcdFx0aWYgKGRldi1cdTAwM2VlcDBfc3RhdHVzID09IC1FQ09OTlJFU0VUKVxuIFx0XHRcdGRldi1cdTAwM2VlcDBfc3RhdHVzID0gLUVJTlRSO1xuIFx0XHRnb3RvIG91dF9pbnRlcnJ1cHRlZDtcbkBAIC03NTAsNiAmIzQzOzc5OSw5IEBAIHN0YXRpYyBpbnQgcmF3X3Byb2Nlc3NfZXAwX2lvKHN0cnVjdCByYXdfZGV2ICpkZXYsIHN0cnVjdCB1c2JfcmF3X2VwX2lvICppbyxcbiBcdHJldCA9IGRldi1cdTAwM2VlcDBfc3RhdHVzO1xuIG91dF9xdWV1ZV9mYWlsZWQ6XG4gXHRkZXYtXHUwMDNlZXAwX3VyYl9xdWV1ZWQgPSBmYWxzZTtcbiYjNDM7XHRkZXYtXHUwMDNldWRjX3VzYWdlLS07XG4mIzQzO1x0aWYgKCFkZXYtXHUwMDNldWRjX3VzYWdlIFx1MDAyNlx1MDAyNiBkZXYtXHUwMDNldW5iaW5kX2NvbXBsZXRpb24pXG4mIzQzO1x0XHRjb21wbGV0ZShkZXYtXHUwMDNldW5iaW5kX2NvbXBsZXRpb24pO1xuIG91dF91bmxvY2s6XG4gXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmRldi1cdTAwM2Vsb2NrLCBmbGFncyk7XG4gXHRyZXR1cm4gcmV0O1xuQEAgLTk1NiwxMSAmIzQzOzEwMDgsMTUgQEAgc3RhdGljIGludCByYXdfaW9jdGxfZXBfZGlzYWJsZShzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxuIFx0XHRnb3RvIG91dF91bmxvY2s7XG4gXHR9XG4gXHRkZXYtXHUwMDNlZXBzW2ldLmRpc2FibGluZyA9IHRydWU7XG4mIzQzO1x0ZGV2LVx1MDAzZXVkY191c2FnZSYjNDM7JiM0Mzs7XG4gXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmRldi1cdTAwM2Vsb2NrLCBmbGFncyk7XG4gXG4gXHR1c2JfZXBfZGlzYWJsZShkZXYtXHUwMDNlZXBzW2ldLmVwKTtcbiBcbiBcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmRldi1cdTAwM2Vsb2NrLCBmbGFncyk7XG4mIzQzO1x0ZGV2LVx1MDAzZXVkY191c2FnZS0tO1xuJiM0MztcdGlmICghZGV2LVx1MDAzZXVkY191c2FnZSBcdTAwMjZcdTAwMjYgZGV2LVx1MDAzZXVuYmluZF9jb21wbGV0aW9uKVxuJiM0MztcdFx0Y29tcGxldGUoZGV2LVx1MDAzZXVuYmluZF9jb21wbGV0aW9uKTtcbiBcdHVzYl9lcF9mcmVlX3JlcXVlc3QoZGV2LVx1MDAzZWVwc1tpXS5lcCwgZGV2LVx1MDAzZWVwc1tpXS5yZXEpO1xuIFx0a2ZyZWUoZGV2LVx1MDAzZWVwc1tpXS5lcC1cdTAwM2VkZXNjKTtcbiBcdGRldi1cdTAwM2VlcHNbaV0uc3RhdGUgPSBTVEFURV9FUF9ESVNBQkxFRDtcbkBAIC0xMTA5LDIyICYjNDM7MTE2NSwzNyBAQCBzdGF0aWMgaW50IHJhd19wcm9jZXNzX2VwX2lvKHN0cnVjdCByYXdfZGV2ICpkZXYsIHN0cnVjdCB1c2JfcmF3X2VwX2lvICppbyxcbiBcdGVwLVx1MDAzZXJlcS1cdTAwM2VsZW5ndGggPSBpby1cdTAwM2VsZW5ndGg7XG4gXHRlcC1cdTAwM2VyZXEtXHUwMDNlemVybyA9IHVzYl9yYXdfaW9fZmxhZ3NfemVybyhpby1cdTAwM2VmbGFncyk7XG4gXHRlcC1cdTAwM2V1cmJfcXVldWVkID0gdHJ1ZTtcbiYjNDM7XHRkZXYtXHUwMDNldWRjX3VzYWdlJiM0MzsmIzQzOztcbiBcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbiBcbiBcdHJldCA9IHVzYl9lcF9xdWV1ZShlcC1cdTAwM2VlcCwgZXAtXHUwMDNlcmVxLCBHRlBfS0VSTkVMKTtcbiBcdGlmIChyZXQpIHtcbi1cdFx0ZGV2X2VycihcdTAwMjZkZXYtXHUwMDNlZ2FkZ2V0LVx1MDAzZWRldixcbi1cdFx0XHRcdFwmIzM0O2ZhaWwsIHVzYl9lcF9xdWV1ZSByZXR1cm5lZCAlZFxcblwmIzM0OywgcmV0KTtcbiYjNDM7XHRcdGRldl9lcnIoZGV2LVx1MDAzZWRldiwgXCYjMzQ7ZmFpbCwgdXNiX2VwX3F1ZXVlIHJldHVybmVkICVkXFxuXCYjMzQ7LCByZXQpO1xuIFx0XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZkZXYtXHUwMDNlbG9jaywgZmxhZ3MpO1xuJiM0MztcdFx0ZGV2LVx1MDAzZXVkY191c2FnZS0tO1xuJiM0MztcdFx0aWYgKCFkZXYtXHUwMDNldWRjX3VzYWdlIFx1MDAyNlx1MDAyNiBkZXYtXHUwMDNldW5iaW5kX2NvbXBsZXRpb24pXG4mIzQzO1x0XHRcdGNvbXBsZXRlKGRldi1cdTAwM2V1bmJpbmRfY29tcGxldGlvbik7XG4gXHRcdGdvdG8gb3V0X3F1ZXVlX2ZhaWxlZDtcbiBcdH1cbiBcbiBcdHJldCA9IHdhaXRfZm9yX2NvbXBsZXRpb25faW50ZXJydXB0aWJsZShcdTAwMjZkb25lKTtcbiBcdGlmIChyZXQpIHtcbi1cdFx0ZGV2X2RiZyhcdTAwMjZkZXYtXHUwMDNlZ2FkZ2V0LVx1MDAzZWRldiwgXCYjMzQ7d2FpdCBpbnRlcnJ1cHRlZFxcblwmIzM0Oyk7XG4tXHRcdHVzYl9lcF9kZXF1ZXVlKGVwLVx1MDAzZWVwLCBlcC1cdTAwM2VyZXEpO1xuLVx0XHR3YWl0X2Zvcl9jb21wbGV0aW9uKFx1MDAyNmRvbmUpO1xuJiM0MztcdFx0ZGV2X2RiZyhkZXYtXHUwMDNlZGV2LCBcJiMzNDt3YWl0IGludGVycnVwdGVkXFxuXCYjMzQ7KTtcbiBcdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbiYjNDM7XHRcdGlmIChkZXYtXHUwMDNlc3RhdGUgIT0gU1RBVEVfREVWX0ZBSUxFRCBcdTAwMjZcdTAwMjYgZGV2LVx1MDAzZWdhZGdldCkge1xuJiM0MztcdFx0XHRzdHJ1Y3QgdXNiX2VwICp1c2JfZXAgPSBlcC1cdTAwM2VlcDtcbiYjNDM7XG4mIzQzO1x0XHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbiYjNDM7XG4mIzQzO1x0XHRcdHVzYl9lcF9kZXF1ZXVlKHVzYl9lcCwgZXAtXHUwMDNlcmVxKTtcbiYjNDM7XHRcdFx0d2FpdF9mb3JfY29tcGxldGlvbihcdTAwMjZkb25lKTtcbiYjNDM7XG4mIzQzO1x0XHRcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmRldi1cdTAwM2Vsb2NrLCBmbGFncyk7XG4mIzQzO1x0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmRldi1cdTAwM2Vsb2NrLCBmbGFncyk7XG4mIzQzO1x0XHRcdHdhaXRfZm9yX2NvbXBsZXRpb24oXHUwMDI2ZG9uZSk7XG4mIzQzO1x0XHRcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmRldi1cdTAwM2Vsb2NrLCBmbGFncyk7XG4mIzQzO1x0XHR9XG4gXHRcdGlmIChlcC1cdTAwM2VzdGF0dXMgPT0gLUVDT05OUkVTRVQpXG4gXHRcdFx0ZXAtXHUwMDNlc3RhdHVzID0gLUVJTlRSO1xuIFx0XHRnb3RvIG91dF9pbnRlcnJ1cHRlZDtcbkBAIC0xMTM2LDYgJiM0MzsxMjA3LDkgQEAgc3RhdGljIGludCByYXdfcHJvY2Vzc19lcF9pbyhzdHJ1Y3QgcmF3X2RldiAqZGV2LCBzdHJ1Y3QgdXNiX3Jhd19lcF9pbyAqaW8sXG4gXHRyZXQgPSBlcC1cdTAwM2VzdGF0dXM7XG4gb3V0X3F1ZXVlX2ZhaWxlZDpcbiBcdGVwLVx1MDAzZXVyYl9xdWV1ZWQgPSBmYWxzZTtcbiYjNDM7XHRkZXYtXHUwMDNldWRjX3VzYWdlLS07XG4mIzQzO1x0aWYgKCFkZXYtXHUwMDNldWRjX3VzYWdlIFx1MDAyNlx1MDAyNiBkZXYtXHUwMDNldW5iaW5kX2NvbXBsZXRpb24pXG4mIzQzO1x0XHRjb21wbGV0ZShkZXYtXHUwMDNldW5iaW5kX2NvbXBsZXRpb24pO1xuIG91dF91bmxvY2s6XG4gXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmRldi1cdTAwM2Vsb2NrLCBmbGFncyk7XG4gXHRyZXR1cm4gcmV0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEwOjQwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7VVNCX0dBREdFVCYjMzQ7LAogICAgJiMzNDtVU0JfUkFXX0dBREdFVCYjMzQ7LAogICAgJiMzNDtVU0JfRFVNTVlfSENEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Z2FkZ2V0X2JpbmQmIzM0OywKICAgICYjMzQ7Z2FkZ2V0X3VuYmluZCYjMzQ7LAogICAgJiMzNDtyYXdfaW9jdGwmIzM0OywKICAgICYjMzQ7cmF3X3Byb2Nlc3NfZXAwX2lvJiMzNDssCiAgICAmIzM0O3Jhd19wcm9jZXNzX2VwX2lvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIFVTQiBSYXcgR2FkZ2V0IGRyaXZlciBiZXR3ZWVuIFVEQyB1bmJpbmQgYW5kIGVuZHBvaW50IElPIG9wZXJhdGlvbnMuIEl0IGludHJvZHVjZXMgYSBgdWRjX3VzYWdlYCBjb3VudGVyIGFuZCBhbiBgdW5iaW5kX2NvbXBsZXRpb25gIHRvIGVuc3VyZSB0aGF0IGBnYWRnZXRfdW5iaW5kYCB3YWl0cyBmb3IgYW55IHBlbmRpbmcgSU8gdG8gZmluaXNoIGJlZm9yZSBjb21wbGV0aW5nIHRoZSB1bmJpbmQgcHJvY2Vzcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgY29yZSBkcml2ZXIgdXNlZCBmb3IgVVNCIGVtdWxhdGlvbiBhbmQgZnV6emluZywgYW5kIGl0IGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAzNzc3ODQyZmY4ODQxOTM2NzY0YjE1NjQzOWJmNGNmY2YwYzZmM2ZlCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMjkgMTA6NDA6MDIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jCmluZGV4IDRmZWJmOGRhYzdjYTUuLmJjZTRmOGQzZmE2M2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jCkBAIC0xNzUsNiAmIzQzOzE3NSw4IEBAIHN0cnVjdCByYXdfZGV2IHsKIAlib29sCQkJCWdhZGdldF9yZWdpc3RlcmVkOwogCXN0cnVjdCB1c2JfZ2FkZ2V0CQkqZ2FkZ2V0OwogCXN0cnVjdCB1c2JfcmVxdWVzdAkJKnJlcTsKJiM0MzsJaW50CQkJCXVkY191c2FnZTsKJiM0MzsJc3RydWN0IGNvbXBsZXRpb24JCSp1bmJpbmRfY29tcGxldGlvbjsKIAlib29sCQkJCWVwMF9pbl9wZW5kaW5nOwogCWJvb2wJCQkJZXAwX291dF9wZW5kaW5nOwogCWJvb2wJCQkJZXAwX3VyYl9xdWV1ZWQ7CkBAIC0yMDUsMjcgJiM0MzsyMDcsMTMgQEAgc3RhdGljIHN0cnVjdCByYXdfZGV2ICpkZXZfbmV3KHZvaWQpCiBzdGF0aWMgdm9pZCBkZXZfZnJlZShzdHJ1Y3Qga3JlZiAqa3JlZikKIHsKIAlzdHJ1Y3QgcmF3X2RldiAqZGV2ID0gY29udGFpbmVyX29mKGtyZWYsIHN0cnVjdCByYXdfZGV2LCBjb3VudCk7Ci0JaW50IGk7CiAKIAlrZnJlZShkZXYtJmd0O3VkY19uYW1lKTsKIAlrZnJlZShkZXYtJmd0O2RyaXZlci51ZGNfbmFtZSk7CiAJa2ZyZWUoZGV2LSZndDtkcml2ZXIuZHJpdmVyLm5hbWUpOwogCWlmIChkZXYtJmd0O2RyaXZlcl9pZF9udW1iZXIgJmd0Oz0gMCkKIAkJaWRhX2ZyZWUoJmFtcDtkcml2ZXJfaWRfbnVtYmVycywgZGV2LSZndDtkcml2ZXJfaWRfbnVtYmVyKTsKLQlpZiAoZGV2LSZndDtyZXEpIHsKLQkJaWYgKGRldi0mZ3Q7ZXAwX3VyYl9xdWV1ZWQpCi0JCQl1c2JfZXBfZGVxdWV1ZShkZXYtJmd0O2dhZGdldC0mZ3Q7ZXAwLCBkZXYtJmd0O3JlcSk7Ci0JCXVzYl9lcF9mcmVlX3JlcXVlc3QoZGV2LSZndDtnYWRnZXQtJmd0O2VwMCwgZGV2LSZndDtyZXEpOwotCX0KIAlyYXdfZXZlbnRfcXVldWVfZGVzdHJveSgmYW1wO2Rldi0mZ3Q7cXVldWUpOwotCWZvciAoaSA9IDA7IGkgJmx0OyBkZXYtJmd0O2Vwc19udW07IGkmIzQzOyYjNDM7KSB7Ci0JCWlmIChkZXYtJmd0O2Vwc1tpXS5zdGF0ZSA9PSBTVEFURV9FUF9ESVNBQkxFRCkKLQkJCWNvbnRpbnVlOwotCQl1c2JfZXBfZGlzYWJsZShkZXYtJmd0O2Vwc1tpXS5lcCk7Ci0JCXVzYl9lcF9mcmVlX3JlcXVlc3QoZGV2LSZndDtlcHNbaV0uZXAsIGRldi0mZ3Q7ZXBzW2ldLnJlcSk7Ci0JCWtmcmVlKGRldi0mZ3Q7ZXBzW2ldLmVwLSZndDtkZXNjKTsKLQkJZGV2LSZndDtlcHNbaV0uc3RhdGUgPSBTVEFURV9FUF9ESVNBQkxFRDsKLQl9CiAJa2ZyZWUoZGV2KTsKIH0KIApAQCAtMzE2LDYgJiM0MzszMDQsMTEgQEAgc3RhdGljIGludCBnYWRnZXRfYmluZChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0LAogCXJldCA9IHJhd19xdWV1ZV9ldmVudChkZXYsIFVTQl9SQVdfRVZFTlRfQ09OTkVDVCwgMCwgTlVMTCk7CiAJaWYgKHJldCAmbHQ7IDApIHsKIAkJZGV2X2VycigmYW1wO2dhZGdldC0mZ3Q7ZGV2LCAmIzM0O2ZhaWxlZCB0byBxdWV1ZSBjb25uZWN0IGV2ZW50XG4mIzM0Oyk7CiYjNDM7CQlzcGluX2xvY2tfaXJxc2F2ZSgmYW1wO2Rldi0mZ3Q7bG9jaywgZmxhZ3MpOwomIzQzOwkJZGV2LSZndDtnYWRnZXQgPSBOVUxMOwomIzQzOwkJZGV2LSZndDtyZXEgPSBOVUxMOwomIzQzOwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW1wO2Rldi0mZ3Q7bG9jaywgZmxhZ3MpOwomIzQzOwkJdXNiX2VwX2ZyZWVfcmVxdWVzdChnYWRnZXQtJmd0O2VwMCwgcmVxKTsKIAkJc2V0X2dhZGdldF9kYXRhKGdhZGdldCwgTlVMTCk7CiAJCXJldHVybiByZXQ7CiAJfQpAQCAtMzI4LDYgJiM0MzszMjEsNDcgQEAgc3RhdGljIGludCBnYWRnZXRfYmluZChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0LAogc3RhdGljIHZvaWQgZ2FkZ2V0X3VuYmluZChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0KQogewogCXN0cnVjdCByYXdfZGV2ICpkZXYgPSBnZXRfZ2FkZ2V0X2RhdGEoZ2FkZ2V0KTsKJiM0MzsJdW5zaWduZWQgbG9uZyBmbGFnczsKJiM0MzsJREVDTEFSRV9DT01QTEVUSU9OX09OU1RBQ0soZG9uZSk7CiYjNDM7CWludCBpOwomIzQzOwomIzQzOwlzcGluX2xvY2tfaXJxc2F2ZSgmYW1wO2Rldi0mZ3Q7bG9jaywgZmxhZ3MpOwomIzQzOwlkZXYtJmd0O3N0YXRlID0gU1RBVEVfREVWX0ZBSUxFRDsKJiM0MzsKJiM0MzsJaWYgKGRldi0mZ3Q7ZXAwX3VyYl9xdWV1ZWQpIHsKJiM0MzsJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFtcDtkZXYtJmd0O2xvY2ssIGZsYWdzKTsKJiM0MzsJCXVzYl9lcF9kZXF1ZXVlKGdhZGdldC0mZ3Q7ZXAwLCBkZXYtJmd0O3JlcSk7CiYjNDM7CQlzcGluX2xvY2tfaXJxc2F2ZSgmYW1wO2Rldi0mZ3Q7bG9jaywgZmxhZ3MpOwomIzQzOwl9CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBkZXYtJmd0O2Vwc19udW07IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQlpZiAoZGV2LSZndDtlcHNbaV0uc3RhdGUgPT0gU1RBVEVfRVBfRU5BQkxFRCAmYW1wOyZhbXA7IGRldi0mZ3Q7ZXBzW2ldLnVyYl9xdWV1ZWQpIHsKJiM0MzsJCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhbXA7ZGV2LSZndDtsb2NrLCBmbGFncyk7CiYjNDM7CQkJdXNiX2VwX2RlcXVldWUoZGV2LSZndDtlcHNbaV0uZXAsIGRldi0mZ3Q7ZXBzW2ldLnJlcSk7CiYjNDM7CQkJc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDtkZXYtJmd0O2xvY2ssIGZsYWdzKTsKJiM0MzsJCX0KJiM0MzsJfQomIzQzOwomIzQzOwlpZiAoZGV2LSZndDt1ZGNfdXNhZ2UgJmd0OyAwKSB7CiYjNDM7CQlkZXYtJmd0O3VuYmluZF9jb21wbGV0aW9uID0gJmFtcDtkb25lOwomIzQzOwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW1wO2Rldi0mZ3Q7bG9jaywgZmxhZ3MpOwomIzQzOwkJd2FpdF9mb3JfY29tcGxldGlvbigmYW1wO2RvbmUpOwomIzQzOwkJc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDtkZXYtJmd0O2xvY2ssIGZsYWdzKTsKJiM0MzsJfQomIzQzOwlkZXYtJmd0O2dhZGdldCA9IE5VTEw7CiYjNDM7CXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFtcDtkZXYtJmd0O2xvY2ssIGZsYWdzKTsKJiM0MzsKJiM0MzsJZm9yIChpID0gMDsgaSAmbHQ7IGRldi0mZ3Q7ZXBzX251bTsgaSYjNDM7JiM0MzspIHsKJiM0MzsJCWlmIChkZXYtJmd0O2Vwc1tpXS5zdGF0ZSA9PSBTVEFURV9FUF9ESVNBQkxFRCkKJiM0MzsJCQljb250aW51ZTsKJiM0MzsJCXVzYl9lcF9kaXNhYmxlKGRldi0mZ3Q7ZXBzW2ldLmVwKTsKJiM0MzsJCXVzYl9lcF9mcmVlX3JlcXVlc3QoZGV2LSZndDtlcHNbaV0uZXAsIGRldi0mZ3Q7ZXBzW2ldLnJlcSk7CiYjNDM7CQlrZnJlZShkZXYtJmd0O2Vwc1tpXS5lcC0mZ3Q7ZGVzYyk7CiYjNDM7CQlkZXYtJmd0O2Vwc1tpXS5zdGF0ZSA9IFNUQVRFX0VQX0RJU0FCTEVEOwomIzQzOwl9CiYjNDM7CWlmIChkZXYtJmd0O3JlcSkgewomIzQzOwkJdXNiX2VwX2ZyZWVfcmVxdWVzdChnYWRnZXQtJmd0O2VwMCwgZGV2LSZndDtyZXEpOwomIzQzOwkJZGV2LSZndDtyZXEgPSBOVUxMOwomIzQzOwl9CiAKIAlzZXRfZ2FkZ2V0X2RhdGEoZ2FkZ2V0LCBOVUxMKTsKIAkvKiBNYXRjaGVzIGtyZWZfZ2V0KCkgaW4gZ2FkZ2V0X2JpbmQoKS4gKi8KQEAgLTYzNywxMSAmIzQzOzY3MSwxMSBAQCBzdGF0aWMgaW50IHJhd19pb2N0bF9ldmVudF9mZXRjaChzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKQogCiAJZXZlbnQgPSByYXdfZXZlbnRfcXVldWVfZmV0Y2goJmFtcDtkZXYtJmd0O3F1ZXVlKTsKIAlpZiAoUFRSX0VSUihldmVudCkgPT0gLUVJTlRSKSB7Ci0JCWRldl9kYmcoJmFtcDtkZXYtJmd0O2dhZGdldC0mZ3Q7ZGV2LCAmIzM0O2V2ZW50IGZldGNoaW5nIGludGVycnVwdGVkXG4mIzM0Oyk7CiYjNDM7CQlkZXZfZGJnKGRldi0mZ3Q7ZGV2LCAmIzM0O2V2ZW50IGZldGNoaW5nIGludGVycnVwdGVkXG4mIzM0Oyk7CiAJCXJldHVybiAtRUlOVFI7CiAJfQogCWlmIChJU19FUlIoZXZlbnQpKSB7Ci0JCWRldl9lcnIoJmFtcDtkZXYtJmd0O2dhZGdldC0mZ3Q7ZGV2LCAmIzM0O2ZhaWxlZCB0byBmZXRjaCBldmVudFxuJiMzNDspOwomIzQzOwkJZGV2X2VycihkZXYtJmd0O2RldiwgJiMzNDtmYWlsZWQgdG8gZmV0Y2ggZXZlbnRcbiYjMzQ7KTsKIAkJc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDtkZXYtJmd0O2xvY2ssIGZsYWdzKTsKIAkJZGV2LSZndDtzdGF0ZSA9IFNUQVRFX0RFVl9GQUlMRUQ7CiAJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFtcDtkZXYtJmd0O2xvY2ssIGZsYWdzKTsKQEAgLTcyMywyMiAmIzQzOzc1NywzNyBAQCBzdGF0aWMgaW50IHJhd19wcm9jZXNzX2VwMF9pbyhzdHJ1Y3QgcmF3X2RldiAqZGV2LCBzdHJ1Y3QgdXNiX3Jhd19lcF9pbyAqaW8sCiAJZGV2LSZndDtyZXEtJmd0O2xlbmd0aCA9IGlvLSZndDtsZW5ndGg7CiAJZGV2LSZndDtyZXEtJmd0O3plcm8gPSB1c2JfcmF3X2lvX2ZsYWdzX3plcm8oaW8tJmd0O2ZsYWdzKTsKIAlkZXYtJmd0O2VwMF91cmJfcXVldWVkID0gdHJ1ZTsKJiM0MzsJZGV2LSZndDt1ZGNfdXNhZ2UmIzQzOyYjNDM7OwogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFtcDtkZXYtJmd0O2xvY2ssIGZsYWdzKTsKIAogCXJldCA9IHVzYl9lcF9xdWV1ZShkZXYtJmd0O2dhZGdldC0mZ3Q7ZXAwLCBkZXYtJmd0O3JlcSwgR0ZQX0tFUk5FTCk7CiAJaWYgKHJldCkgewotCQlkZXZfZXJyKCZhbXA7ZGV2LSZndDtnYWRnZXQtJmd0O2RldiwKLQkJCQkmIzM0O2ZhaWwsIHVzYl9lcF9xdWV1ZSByZXR1cm5lZCAlZFxuJiMzNDssIHJldCk7CiYjNDM7CQlkZXZfZXJyKGRldi0mZ3Q7ZGV2LCAmIzM0O2ZhaWwsIHVzYl9lcF9xdWV1ZSByZXR1cm5lZCAlZFxuJiMzNDssIHJldCk7CiAJCXNwaW5fbG9ja19pcnFzYXZlKCZhbXA7ZGV2LSZndDtsb2NrLCBmbGFncyk7CiYjNDM7CQlkZXYtJmd0O3VkY191c2FnZS0tOwomIzQzOwkJaWYgKCFkZXYtJmd0O3VkY191c2FnZSAmYW1wOyZhbXA7IGRldi0mZ3Q7dW5iaW5kX2NvbXBsZXRpb24pCiYjNDM7CQkJY29tcGxldGUoZGV2LSZndDt1bmJpbmRfY29tcGxldGlvbik7CiAJCWdvdG8gb3V0X3F1ZXVlX2ZhaWxlZDsKIAl9CiAKIAlyZXQgPSB3YWl0X2Zvcl9jb21wbGV0aW9uX2ludGVycnVwdGlibGUoJmFtcDtkZXYtJmd0O2VwMF9kb25lKTsKIAlpZiAocmV0KSB7Ci0JCWRldl9kYmcoJmFtcDtkZXYtJmd0O2dhZGdldC0mZ3Q7ZGV2LCAmIzM0O3dhaXQgaW50ZXJydXB0ZWRcbiYjMzQ7KTsKLQkJdXNiX2VwX2RlcXVldWUoZGV2LSZndDtnYWRnZXQtJmd0O2VwMCwgZGV2LSZndDtyZXEpOwotCQl3YWl0X2Zvcl9jb21wbGV0aW9uKCZhbXA7ZGV2LSZndDtlcDBfZG9uZSk7CiYjNDM7CQlkZXZfZGJnKGRldi0mZ3Q7ZGV2LCAmIzM0O3dhaXQgaW50ZXJydXB0ZWRcbiYjMzQ7KTsKIAkJc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDtkZXYtJmd0O2xvY2ssIGZsYWdzKTsKJiM0MzsJCWlmIChkZXYtJmd0O3N0YXRlICE9IFNUQVRFX0RFVl9GQUlMRUQgJmFtcDsmYW1wOyBkZXYtJmd0O2dhZGdldCkgewomIzQzOwkJCXN0cnVjdCB1c2JfZXAgKmVwMCA9IGRldi0mZ3Q7Z2FkZ2V0LSZndDtlcDA7CiYjNDM7CiYjNDM7CQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW1wO2Rldi0mZ3Q7bG9jaywgZmxhZ3MpOwomIzQzOwomIzQzOwkJCXVzYl9lcF9kZXF1ZXVlKGVwMCwgZGV2LSZndDtyZXEpOwomIzQzOwkJCXdhaXRfZm9yX2NvbXBsZXRpb24oJmFtcDtkZXYtJmd0O2VwMF9kb25lKTsKJiM0MzsKJiM0MzsJCQlzcGluX2xvY2tfaXJxc2F2ZSgmYW1wO2Rldi0mZ3Q7bG9jaywgZmxhZ3MpOwomIzQzOwkJfSBlbHNlIHsKJiM0MzsJCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhbXA7ZGV2LSZndDtsb2NrLCBmbGFncyk7CiYjNDM7CQkJd2FpdF9mb3JfY29tcGxldGlvbigmYW1wO2Rldi0mZ3Q7ZXAwX2RvbmUpOwomIzQzOwkJCXNwaW5fbG9ja19pcnFzYXZlKCZhbXA7ZGV2LSZndDtsb2NrLCBmbGFncyk7CiYjNDM7CQl9CiAJCWlmIChkZXYtJmd0O2VwMF9zdGF0dXMgPT0gLUVDT05OUkVTRVQpCiAJCQlkZXYtJmd0O2VwMF9zdGF0dXMgPSAtRUlOVFI7CiAJCWdvdG8gb3V0X2ludGVycnVwdGVkOwpAQCAtNzUwLDYgJiM0Mzs3OTksOSBAQCBzdGF0aWMgaW50IHJhd19wcm9jZXNzX2VwMF9pbyhzdHJ1Y3QgcmF3X2RldiAqZGV2LCBzdHJ1Y3QgdXNiX3Jhd19lcF9pbyAqaW8sCiAJcmV0ID0gZGV2LSZndDtlcDBfc3RhdHVzOwogb3V0X3F1ZXVlX2ZhaWxlZDoKIAlkZXYtJmd0O2VwMF91cmJfcXVldWVkID0gZmFsc2U7CiYjNDM7CWRldi0mZ3Q7dWRjX3VzYWdlLS07CiYjNDM7CWlmICghZGV2LSZndDt1ZGNfdXNhZ2UgJmFtcDsmYW1wOyBkZXYtJmd0O3VuYmluZF9jb21wbGV0aW9uKQomIzQzOwkJY29tcGxldGUoZGV2LSZndDt1bmJpbmRfY29tcGxldGlvbik7CiBvdXRfdW5sb2NrOgogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFtcDtkZXYtJmd0O2xvY2ssIGZsYWdzKTsKIAlyZXR1cm4gcmV0OwpAQCAtOTU2LDExICYjNDM7MTAwOCwxNSBAQCBzdGF0aWMgaW50IHJhd19pb2N0bF9lcF9kaXNhYmxlKHN0cnVjdCByYXdfZGV2ICpkZXYsIHVuc2lnbmVkIGxvbmcgdmFsdWUpCiAJCWdvdG8gb3V0X3VubG9jazsKIAl9CiAJZGV2LSZndDtlcHNbaV0uZGlzYWJsaW5nID0gdHJ1ZTsKJiM0MzsJZGV2LSZndDt1ZGNfdXNhZ2UmIzQzOyYjNDM7OwogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFtcDtkZXYtJmd0O2xvY2ssIGZsYWdzKTsKIAogCXVzYl9lcF9kaXNhYmxlKGRldi0mZ3Q7ZXBzW2ldLmVwKTsKIAogCXNwaW5fbG9ja19pcnFzYXZlKCZhbXA7ZGV2LSZndDtsb2NrLCBmbGFncyk7CiYjNDM7CWRldi0mZ3Q7dWRjX3VzYWdlLS07CiYjNDM7CWlmICghZGV2LSZndDt1ZGNfdXNhZ2UgJmFtcDsmYW1wOyBkZXYtJmd0O3VuYmluZF9jb21wbGV0aW9uKQomIzQzOwkJY29tcGxldGUoZGV2LSZndDt1bmJpbmRfY29tcGxldGlvbik7CiAJdXNiX2VwX2ZyZWVfcmVxdWVzdChkZXYtJmd0O2Vwc1tpXS5lcCwgZGV2LSZndDtlcHNbaV0ucmVxKTsKIAlrZnJlZShkZXYtJmd0O2Vwc1tpXS5lcC0mZ3Q7ZGVzYyk7CiAJZGV2LSZndDtlcHNbaV0uc3RhdGUgPSBTVEFURV9FUF9ESVNBQkxFRDsKQEAgLTExMDksMjIgJiM0MzsxMTY1LDM3IEBAIHN0YXRpYyBpbnQgcmF3X3Byb2Nlc3NfZXBfaW8oc3RydWN0IHJhd19kZXYgKmRldiwgc3RydWN0IHVzYl9yYXdfZXBfaW8gKmlvLAogCWVwLSZndDtyZXEtJmd0O2xlbmd0aCA9IGlvLSZndDtsZW5ndGg7CiAJZXAtJmd0O3JlcS0mZ3Q7emVybyA9IHVzYl9yYXdfaW9fZmxhZ3NfemVybyhpby0mZ3Q7ZmxhZ3MpOwogCWVwLSZndDt1cmJfcXVldWVkID0gdHJ1ZTsKJiM0MzsJZGV2LSZndDt1ZGNfdXNhZ2UmIzQzOyYjNDM7OwogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFtcDtkZXYtJmd0O2xvY2ssIGZsYWdzKTsKIAogCXJldCA9IHVzYl9lcF9xdWV1ZShlcC0mZ3Q7ZXAsIGVwLSZndDtyZXEsIEdGUF9LRVJORUwpOwogCWlmIChyZXQpIHsKLQkJZGV2X2VycigmYW1wO2Rldi0mZ3Q7Z2FkZ2V0LSZndDtkZXYsCi0JCQkJJiMzNDtmYWlsLCB1c2JfZXBfcXVldWUgcmV0dXJuZWQgJWRcbiYjMzQ7LCByZXQpOwomIzQzOwkJZGV2X2VycihkZXYtJmd0O2RldiwgJiMzNDtmYWlsLCB1c2JfZXBfcXVldWUgcmV0dXJuZWQgJWRcbiYjMzQ7LCByZXQpOwogCQlzcGluX2xvY2tfaXJxc2F2ZSgmYW1wO2Rldi0mZ3Q7bG9jaywgZmxhZ3MpOwomIzQzOwkJZGV2LSZndDt1ZGNfdXNhZ2UtLTsKJiM0MzsJCWlmICghZGV2LSZndDt1ZGNfdXNhZ2UgJmFtcDsmYW1wOyBkZXYtJmd0O3VuYmluZF9jb21wbGV0aW9uKQomIzQzOwkJCWNvbXBsZXRlKGRldi0mZ3Q7dW5iaW5kX2NvbXBsZXRpb24pOwogCQlnb3RvIG91dF9xdWV1ZV9mYWlsZWQ7CiAJfQogCiAJcmV0ID0gd2FpdF9mb3JfY29tcGxldGlvbl9pbnRlcnJ1cHRpYmxlKCZhbXA7ZG9uZSk7CiAJaWYgKHJldCkgewotCQlkZXZfZGJnKCZhbXA7ZGV2LSZndDtnYWRnZXQtJmd0O2RldiwgJiMzNDt3YWl0IGludGVycnVwdGVkXG4mIzM0Oyk7Ci0JCXVzYl9lcF9kZXF1ZXVlKGVwLSZndDtlcCwgZXAtJmd0O3JlcSk7Ci0JCXdhaXRfZm9yX2NvbXBsZXRpb24oJmFtcDtkb25lKTsKJiM0MzsJCWRldl9kYmcoZGV2LSZndDtkZXYsICYjMzQ7d2FpdCBpbnRlcnJ1cHRlZFxuJiMzNDspOwogCQlzcGluX2xvY2tfaXJxc2F2ZSgmYW1wO2Rldi0mZ3Q7bG9jaywgZmxhZ3MpOwomIzQzOwkJaWYgKGRldi0mZ3Q7c3RhdGUgIT0gU1RBVEVfREVWX0ZBSUxFRCAmYW1wOyZhbXA7IGRldi0mZ3Q7Z2FkZ2V0KSB7CiYjNDM7CQkJc3RydWN0IHVzYl9lcCAqdXNiX2VwID0gZXAtJmd0O2VwOwomIzQzOwomIzQzOwkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFtcDtkZXYtJmd0O2xvY2ssIGZsYWdzKTsKJiM0MzsKJiM0MzsJCQl1c2JfZXBfZGVxdWV1ZSh1c2JfZXAsIGVwLSZndDtyZXEpOwomIzQzOwkJCXdhaXRfZm9yX2NvbXBsZXRpb24oJmFtcDtkb25lKTsKJiM0MzsKJiM0MzsJCQlzcGluX2xvY2tfaXJxc2F2ZSgmYW1wO2Rldi0mZ3Q7bG9jaywgZmxhZ3MpOwomIzQzOwkJfSBlbHNlIHsKJiM0MzsJCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhbXA7ZGV2LSZndDtsb2NrLCBmbGFncyk7CiYjNDM7CQkJd2FpdF9mb3JfY29tcGxldGlvbigmYW1wO2RvbmUpOwomIzQzOwkJCXNwaW5fbG9ja19pcnFzYXZlKCZhbXA7ZGV2LSZndDtsb2NrLCBmbGFncyk7CiYjNDM7CQl9CiAJCWlmIChlcC0mZ3Q7c3RhdHVzID09IC1FQ09OTlJFU0VUKQogCQkJZXAtJmd0O3N0YXR1cyA9IC1FSU5UUjsKIAkJZ290byBvdXRfaW50ZXJydXB0ZWQ7CkBAIC0xMTM2LDYgJiM0MzsxMjA3LDkgQEAgc3RhdGljIGludCByYXdfcHJvY2Vzc19lcF9pbyhzdHJ1Y3QgcmF3X2RldiAqZGV2LCBzdHJ1Y3QgdXNiX3Jhd19lcF9pbyAqaW8sCiAJcmV0ID0gZXAtJmd0O3N0YXR1czsKIG91dF9xdWV1ZV9mYWlsZWQ6CiAJZXAtJmd0O3VyYl9xdWV1ZWQgPSBmYWxzZTsKJiM0MzsJZGV2LSZndDt1ZGNfdXNhZ2UtLTsKJiM0MzsJaWYgKCFkZXYtJmd0O3VkY191c2FnZSAmYW1wOyZhbXA7IGRldi0mZ3Q7dW5iaW5kX2NvbXBsZXRpb24pCiYjNDM7CQljb21wbGV0ZShkZXYtJmd0O3VuYmluZF9jb21wbGV0aW9uKTsKIG91dF91bmxvY2s6CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW1wO2Rldi0mZ3Q7bG9jaywgZmxhZ3MpOwogCXJldHVybiByZXQ7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEwOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyMDEKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA0MTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVVNCIFJhdyBHYWRnZXQgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIGZvciBgZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmNgLiBUaGlzIGlzIHRoZSBVU0IgUmF3IEdhZGdldCBkcml2ZXIsIHdoaWNoIHJpbmdzIGEgYmVsbCDigJMgaXQmIzM5O3MgdGhlIG9uZSB3ZSB1c2UgZm9yIGVtdWxhdGluZyBVU0IgZGV2aWNlcyBmcm9tIHVzZXJzcGFjZSwgc3BlY2lmaWNhbGx5IGNydWNpYWwgZm9yIHN5emthbGxlciYjMzk7cyBmdXp6aW5nIGVmZm9ydHMuIFRoZSBwYXRjaCBzZWVtcyB0byBiZSBhZGRpbmcgYHVkY191c2FnZWAgYW5kIGB1bmJpbmRfY29tcGxldGlvbmAgdG8gYHN0cnVjdCByYXdfZGV2YC4gSXQmIzM5O3MgdHdlYWtpbmcgYGdhZGdldF91bmJpbmRgIHRvIGVuc3VyZSBpdCBwcm9wZXJseSB3YWl0cyBmb3IgVURDIHVzYWdlIHRvIGRyb3AgYmVmb3JlIHVuYmluZGluZyBhbmQgY2xlYW5zIHVwIFVSQnMgY29ycmVjdGx5LiBJIHNlZSBtb2RpZmljYXRpb25zIGluIGByYXdfcHJvY2Vzc19lcDBfaW9gLCBgcmF3X2lvY3RsX2VwX2Rpc2FibGVgLCBhbmQgYHJhd19wcm9jZXNzX2VwX2lvYCByZWxhdGVkIHRvIHRyYWNraW5nIGB1ZGNfdXNhZ2VgIGFuZCBjb21wbGV0aW5nIGB1bmJpbmRfY29tcGxldGlvbmAuIFBsdXMsIHNvbWUgZml4ZXMgZm9yIHRob3NlIGBkZXZfZXJyYCBhbmQgYGRldl9kYmdgIGNhbGxzLCBtYWtpbmcgc3VyZSB0aGV5IHVzZSBgZGV2LSZndDtkZXZgIGluc3RlYWQgb2YgYGRldi0mZ3Q7Z2FkZ2V0LSZndDtkZXZgIGJlY2F1c2UgYGRldi0mZ3Q7Z2FkZ2V0YCBjYW4gYmUgbnVsbCBkdXJpbmcgdGhlIHVuYmluZCBwcm9jZXNzLgoKSGFuZyBvbi4uLiB0aGUgcmVhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgaXMgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdDRS4gVGhpcyBpcyBjcml0aWNhbCBmb3IgZnV6emluZyEgT2gsIHJpZ2h0LCB0aGUgVVNCIFJhdyBHYWRnZXQgaXMgKmRlc2lnbmVkKiBmb3IgcHJlY2lzZWx5IHRoaXMgdXNlIGNhc2UuIFN5emthbGxlciBsZXZlcmFnZXMgaXQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGUgcHJvbXB0LCByZW1lbWJlciwgaXMgYXNraW5nIG1lIHRvIHJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzICpldmVuKiB3aXRoIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLiBCdXQgdGhpcyAqaXMqIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlISBUaGUgcHJvbXB0IHNheXMgJiMzNDtldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLCYjMzQ7IG1lYW5pbmcgdGhhdCBpZiBpdCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoICpldmVuIHdpdGgqIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLCB0aGVuIGl0JiMzOTtzIGZhbHNlLiBCdXQgdGhpcyAqaXMqIHRoZSBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSwgc28gaXQgaXMgcmVhY2hhYmxlLgoKU28gdGhpcyBsb29rcyBwcm9taXNpbmcuIEkgbmVlZCB0byB0YWtlIGEgcXVpY2sgbG9vayBhdCB0aGUgS2NvbmZpZyBmb3IgYGRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jYCB0byBjb25maXJtIGl0IGlzIGVuYWJsZWQsIGJ1dCBmcm9tIHRoZSBzb3VuZCBvZiBpdCwgdGhpcyBsb29rcyBsaWtlIGEgZGVmaW5pdGUgJiMzNDtXb3J0aEZ1enppbmc9dHJ1ZS4mIzM0OwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEwOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Jhd19nYWRnZXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTUxNj1jb25maWcgVVNCX1JBV19HQURHRVRcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNTI5LVx0ICBTYXkgXCYjMzQ7eVwmIzM0OyB0byBsaW5rIHRoZSBkcml2ZXIgc3RhdGljYWxseSwgb3IgXCYjMzQ7bVwmIzM0OyB0byBidWlsZCBhXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6NTMwOlx0ICBkeW5hbWljYWxseSBsaW5rZWQgbW9kdWxlIGNhbGxlZCBcJiMzNDtyYXdfZ2FkZ2V0XCYjMzQ7LlxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTUzMS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMDo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MjQyCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBVU0IgUmF3IEdhZGdldCBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIHNvIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGBDT05GSUdfVVNCX1JBV19HQURHRVRgLiBUaGF0JiMzOTtzIHRoZSBrZXkgY29uZmlndXJhdGlvbiBzZXR0aW5nIHdlJiMzOTtyZSBmb2N1c2VkIG9uIGhlcmUuIE15IGZpcnN0IGluc3RpbmN0LCBhcyBhbHdheXMsIGlzIHRvIGRpdmUgaW50byB0aGUgZGVwZW5kZW5jaWVzLiBVbmRlcnN0YW5kaW5nICpob3cqIGBDT05GSUdfVVNCX1JBV19HQURHRVRgIHJlbGF0ZXMgdG8gb3RoZXIga2VybmVsIGNvbXBvbmVudHMgaXMgYWJzb2x1dGVseSBjcnVjaWFsLiBXZSBuZWVkIHRvIHRyYWNlIGl0cyBjb25uZWN0aW9ucyB0byBvdGhlciBVU0IgZ2FkZ2V0IGRyaXZlcnMsIHRoZSBjb3JlIFVTQiBzdWJzeXN0ZW0sIGFuZCBwb3RlbnRpYWxseSBldmVuIGRldmljZSB0cmVlIGNvbmZpZ3VyYXRpb24uIEtub3dpbmcgaXRzIGRlcGVuZGVuY2llcyB3aWxsIHRlbGwgbWUgZXZlcnl0aGluZyBmcm9tIHdoYXQgaXQgbmVlZHMgdG8gZnVuY3Rpb24gdG8gdGhlIHBvdGVudGlhbCBzaWRlIGVmZmVjdHMgb2YgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIGl0LiBUaGlzIHdpbGwgaW5mb3JtIG15IGFzc2Vzc21lbnQgb2YgaXRzIHN1aXRhYmlsaXR5IGZvciB0aGUgaW50ZW5kZWQgdXNlLWNhc2UgYW5kIGlmIGVuYWJsaW5nIGl0IHdpbGwgY2F1c2UgYW55IGNvbmZsaWN0cyB3aXRoIG90aGVyIHN5c3RlbSBjb25maWd1cmF0aW9ucy4gTXkgYnJhaW4gaXMgYWxyZWFkeSBydW5uaW5nIHRocm91Z2ggcG9zc2libGUgZGVwZW5kZW5jeSBwYXRocyBhbmQgdGhpbmtpbmcgYWJvdXQgdGhlIGltcGxpY2F0aW9ucyBmb3IgbXkgY3VycmVudCBwcm9qZWN0LiBMZXQmIzM5O3MgZGlnIGluIGFuZCBzZWUgd2hhdCB3ZSBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEwOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVU0JfUkFXX0dBREdFVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9NTAxPWNvbmZpZyBVU0JfR19XRUJDQU1cbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNTE1LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjUxNjpjb25maWcgVVNCX1JBV19HQURHRVRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy01MTctXHR0cmlzdGF0ZSBcJiMzNDtVU0IgUmF3IEdhZGdldFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEwOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2MTMKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBLY29uZmlnIC0gTGluZSA1MTYqKgoKT2theSwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBCYXNlZCBvbiB0aGUgY3VycmVudCB0cmFqZWN0b3J5IG9mIHRoaXMgaW52ZXN0aWdhdGlvbiwgSSBuZWVkIGEgZGVlcGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoaXMgZmVhdHVyZSBpcyBjb250cm9sbGVkIGFuZCBjb25maWd1cmVkLiBMaW5lIDUxNiBpbiB0aGUgS2NvbmZpZyBmaWxlIGhhcyBjb21lIHVwIGFzIGEgbGlrZWx5IHBvaW50IG9mIGludGVyZXN0LCBzbyBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IHRoZXJlLiBJJiMzOTttIG5vdCBqdXN0IGxvb2tpbmcgZm9yIGEgc3BlY2lmaWMgdmFyaWFibGUsIGJ1dCB0aGUgY29udGV4dCBhcm91bmQgaXQ6IHRoZSBkZXBlbmRlbmNpZXMsIHRoZSByZWxhdGlvbnNoaXBzIHRvIG90aGVyIGNvbmZpZ3VyYXRpb25zLCBhbmQgdGhlIG92ZXJhbGwgY29uZGl0aW9uYWwgbG9naWMuIEkgd2FudCB0byBidWlsZCBhIGNvbXBsZXRlIG1lbnRhbCBtb2RlbCBvZiB0aGlzIHNlY3Rpb24gb2YgdGhlIGNvbmZpZyBhbmQgc2VlIHdoYXQgZGVjaXNpb25zIGl0IGRyaXZlcy4gSXQgaXMgY3J1Y2lhbCB0byBoYXZlIGEgY2xlYXIgdW5kZXJzdGFuZGluZyBvZiB3aGF0IGluZmx1ZW5jZXMgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gb2J2aW91cyBtaXNjb25maWd1cmF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMDo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDUxMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNTEwOlx0XHQgIGRldmljZS4gSXQgcHJvdmlkZXMgYSB1c2Vyc3BhY2UgQVBJIHRvIHByb2Nlc3MgVVZDIGNvbnRyb2wgcmVxdWVzdHNcbiA1MTE6XHRcdCAgYW5kIHN0cmVhbSB2aWRlbyBkYXRhIHRvIHRoZSBob3N0LlxuIDUxMjpcdFxuIDUxMzpcdFx0ICBTYXkgXCYjMzQ7eVwmIzM0OyB0byBsaW5rIHRoZSBkcml2ZXIgc3RhdGljYWxseSwgb3IgXCYjMzQ7bVwmIzM0OyB0byBidWlsZCBhXG4gNTE0Olx0XHQgIGR5bmFtaWNhbGx5IGxpbmtlZCBtb2R1bGUgY2FsbGVkIFwmIzM0O2dfd2ViY2FtXCYjMzQ7LlxuIDUxNTpcdFxuIDUxNjpcdGNvbmZpZyBVU0JfUkFXX0dBREdFVFxuIDUxNzpcdFx0dHJpc3RhdGUgXCYjMzQ7VVNCIFJhdyBHYWRnZXRcJiMzNDtcbiA1MTg6XHRcdGhlbHBcbiA1MTk6XHRcdCAgVVNCIFJhdyBHYWRnZXQgaXMgYSBnYWRnZXQgZHJpdmVyIHRoYXQgZ2l2ZXMgdXNlcnNwYWNlIGxvdy1sZXZlbFxuIDUyMDpcdFx0ICBjb250cm9sIG92ZXIgdGhlIGdhZGdldCYjMzk7cyBjb21tdW5pY2F0aW9uIHByb2Nlc3MuXG4gNTIxOlx0XG4gNTIyOlx0XHQgIExpa2UgYW55IG90aGVyIGdhZGdldCBkcml2ZXIsIFJhdyBHYWRnZXQgaW1wbGVtZW50cyBVU0IgZGV2aWNlcyB2aWFcbiA1MjM6XHRcdCAgdGhlIFVTQiBnYWRnZXQgQVBJLiBVbmxpa2UgbW9zdCBnYWRnZXQgZHJpdmVycywgUmF3IEdhZGdldCBkb2VzIG5vdFxuIDUyNDpcdFx0ICBpbXBsZW1lbnQgYW55IGNvbmNyZXRlIFVTQiBmdW5jdGlvbnMgaXRzZWxmIGJ1dCByZXF1aXJlcyB1c2Vyc3BhY2VcbiA1MjU6XHRcdCAgdG8gZG8gdGhhdC5cbiA1MjY6XHRcbiA1Mjc6XHRcdCAgU2VlIERvY3VtZW50YXRpb24vdXNiL3Jhdy1nYWRnZXQucnN0IGZvciBkZXRhaWxzLlxuIDUyODpcdFxuIDUyOTpcdFx0ICBTYXkgXCYjMzQ7eVwmIzM0OyB0byBsaW5rIHRoZSBkcml2ZXIgc3RhdGljYWxseSwgb3IgXCYjMzQ7bVwmIzM0OyB0byBidWlsZCBhXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTA6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzE2OQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyBEZXBlbmRlbmN5IERlY2xhcmF0aW9ucyoqCgpBbHJpZ2h0LCBJIHdhcyBleHBlY3RpbmcgdG8gc2VlIGEgY2xlYXIgYGRlcGVuZHMgb25gIGRlY2xhcmF0aW9uLCBidXQgaXQmIzM5O3MgYWJzZW50LiBUaGF0JiMzOTtzIGEgYml0IHVudXN1YWw7IGdvb2QgcHJvamVjdCBvcmdhbml6YXRpb24sIGVzcGVjaWFsbHkgaW4gbGFyZ2VyIHN5c3RlbXMsICpyZWxpZXMqIG9uIGV4cGxpY2l0bHkgc3RhdGVkIGRlcGVuZGVuY2llcyBmb3IgY2xhcml0eSBhbmQgbWFpbnRhaW5hYmlsaXR5LiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBzY2FuIHRoZSBmaWxlJiMzOTtzIGhlYWRlciBvciBwZXJoYXBzIHRoZSBwcm9qZWN0IGNvbmZpZ3VyYXRpb24gbWVudXMuIEhvcGVmdWxseSwgdGhlIGRlcGVuZGVuY3kgaW5mb3JtYXRpb24gaXMgbG9jYXRlZCB3aXRoaW4gdGhlIHNhbWUgZmlsZSBvciBhIG5laWdoYm9yaW5nIGNvbmZpZ3VyYXRpb24gZmlsZSwgb3IgcGVyaGFwcyB0aGUgSURFIGhhcyBzb21lIGhpZGRlbiBuYXZpZ2F0aW9uIG9wdGlvbnMuIEl0JiMzOTtzIGEgYml0IG9mIGFuIGFzc3VtcHRpb24sIGJ1dCBpdCYjMzk7cyBhbHdheXMgd29ydGggY2hlY2tpbmcgdGhlIG9idmlvdXMgcGxhY2VzIGZpcnN0LCBiZWZvcmUgSSBnbyBkaWdnaW5nIGRlZXBlciBpbnRvIHRoZSBjb2RlIG9yIHRoZSBidWlsZCBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEwOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21lbnVjb25maWcgVVNCX0dBREdFVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTE2LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MTc6bWVudWNvbmZpZyBVU0JfR0FER0VUXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xOC1cdHRyaXN0YXRlIFwmIzM0O1VTQiBHYWRnZXQgU3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMDo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NDU4CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgVVNCIEdhZGdldCBMZWdhY3kgS2NvbmZpZyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpY3Mgb2YgdGhpcyAmIzM0O2xlZ2FjeSYjMzQ7IFVTQiBnYWRnZXQgY29uZmlndXJhdGlvbi4gTXkgZmlyc3QgbW92ZSBpcyB0byBqdW1wIHJpZ2h0IGludG8gdGhlIGBkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWdgIGZpbGUuIFRoYXQmIzM5O3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBjb250ZXh0IG9mIHRoZXNlIGxlZ2FjeSBvcHRpb25zLiBJIGtub3cgdGhhdCBieSBleGFtaW5pbmcgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSwgSSBzaG91bGQgZ2V0IGEgYmV0dGVyIHBpY3R1cmUgb2Ygd2hhdCYjMzk7cyBjb250cm9sbGVkIGJ5IGl0LCBkZXBlbmRlbmNpZXMgdGhhdCBpdCBoYXMsIGFuZCBwZXJoYXBzIGV2ZW4gdGhlIHJhdGlvbmFsZSBiZWhpbmQgaXRzIGV4aXN0ZW5jZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyAqbGVnYWN5KiBhYm91dCBpdC4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMDo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHQjXG4gICAzOlx0IyBVU0IgR2FkZ2V0IHN1cHBvcnQgb24gYSBzeXN0ZW0gaW52b2x2ZXNcbiAgIDQ6XHQjICAgIChhKSBhIHBlcmlwaGVyYWwgY29udHJvbGxlciwgYW5kXG4gICA1Olx0IyAgICAoYikgdGhlIGdhZGdldCBkcml2ZXIgdXNpbmcgaXQuXG4gICA2Olx0I1xuICAgNzpcdCMgTk9URTogIEdhZGdldCBzdXBwb3J0ICoqIERPRVMgTk9UICoqIGRlcGVuZCBvbiBob3N0LXNpZGUgQ09ORklHX1VTQiAhIVxuICAgODpcdCNcbiAgIDk6XHQjICAtIEhvc3Qgc3lzdGVtcyAobGlrZSBQQ3MpIG5lZWQgQ09ORklHX1VTQiAod2l0aCBcJiMzNDtBXCYjMzQ7IGphY2tzKS5cbiAgMTA6XHQjICAtIFBlcmlwaGVyYWxzIChsaWtlIFBEQXMpIG5lZWQgQ09ORklHX1VTQl9HQURHRVQgKHdpdGggXCYjMzQ7QlwmIzM0OyBqYWNrcykuXG4gIDExOlx0IyAgLSBTb21lIHN5c3RlbXMgaGF2ZSBib3RoIGtpbmRzIG9mIGNvbnRyb2xsZXJzLlxuICAxMjpcdCNcbiAgMTM6XHQjIFdpdGggaGVscCBmcm9tIGEgc3BlY2lhbCB0cmFuc2NlaXZlciBhbmQgYSBcJiMzNDtNaW5pLUFCXCYjMzQ7IGphY2ssIHN5c3RlbXMgd2l0aFxuICAxNDpcdCMgYm90aCBraW5kcyBvZiBjb250cm9sbGVyIGNhbiBhbHNvIHN1cHBvcnQgXCYjMzQ7VVNCIE9uLXRoZS1Hb1wmIzM0OyAoQ09ORklHX1VTQl9PVEcpLlxuICAxNTpcdCNcbiAgMTY6XHQjIEEgTGludXggXCYjMzQ7R2FkZ2V0IERyaXZlclwmIzM0OyB0YWxrcyB0byB0aGUgVVNCIFBlcmlwaGVyYWwgQ29udHJvbGxlclxuICAxNzpcdCMgZHJpdmVyIHRocm91Z2ggdGhlIGFic3RyYWN0IFwmIzM0O2dhZGdldFwmIzM0OyBBUEkuICBTb21lIG90aGVyIG9wZXJhdGluZ1xuICAxODpcdCMgc3lzdGVtcyBjYWxsIHRoZXNlIFwmIzM0O2NsaWVudFwmIzM0OyBkcml2ZXJzLCBvZiB3aGljaCBcJiMzNDtjbGFzcyBkcml2ZXJzXCYjMzQ7XG4gIDE5Olx0IyBhcmUgYSBzdWJzZXQgKGltcGxlbWVudGluZyBhIFVTQiBkZXZpY2UgY2xhc3Mgc3BlY2lmaWNhdGlvbikuXG4gIDIwOlx0IyBBIGdhZGdldCBkcml2ZXIgaW1wbGVtZW50cyBvbmUgb3IgbW9yZSBVU0IgZnVuY3Rpb25zIHVzaW5nXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEwOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgwMjEKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkZvY3VzaW5nIG9uIFVTQiBHYWRnZXQgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBzbyB3ZSYjMzk7cmUgZGl2aW5nIGludG8gdGhlIFVTQiBnYWRnZXQgY29uZmlndXJhdGlvbiBoZXJlLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gYFVTQl9HQURHRVRgIOKAkyB0aGF0JiMzOTtzIHRoZSBwcmltYXJ5LCBvdmVyYXJjaGluZyBvcHRpb24uIEl0JiMzOTtzIHRoZSBiaWcgcGljdHVyZS4gQmVmb3JlIEkgcHJvY2VlZCwgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgZGVwZW5kZW5jaWVzIG9mIGBVU0JfUkFXX0dBREdFVGAuIEl0JiMzOTtzIGNydWNpYWwgdG8gdW5kZXJzdGFuZCBob3cgdGhhdCBzcGVjaWZpYyBvcHRpb24gZml0cyB3aXRoaW4gdGhlIGxhcmdlciBnYWRnZXQgZnJhbWV3b3JrLCBlbnN1cmluZyBubyBjcml0aWNhbCBkZXBlbmRlbmNpZXMgYXJlIG92ZXJsb29rZWQuIExldCYjMzk7cyBtYWtlIHN1cmUgZXZlcnl0aGluZyBpcyBpbiBwbGFjZSBmb3IgYSBwcm9wZXIgYnVpbGQgYW5kIGZ1bmN0aW9uYWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEwOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTY1PWNvbmZpZyBVU0JfWkVST19ITlBURVNUXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNjYtXHRib29sIFwmIzM0O0hOUCBUZXN0IERldmljZVwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjY3Olx0ZGVwZW5kcyBvbiBVU0JfWkVSTyBcdTAwMjZcdTAwMjYgVVNCX09UR1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTY4LVx0aGVscFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz03NT1jb25maWcgVVNCX0FVRElPXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNzYtXHR0cmlzdGF0ZSBcJiMzNDtBdWRpbyBHYWRnZXRcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzo3NzpcdGRlcGVuZHMgb24gU05EXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNzgtXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0xMDA9Y29uZmlnIEdBREdFVF9VQUMxXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMTAxLVx0Ym9vbCBcJiMzNDtVQUMgMS4wXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MTAyOlx0ZGVwZW5kcyBvbiBVU0JfQVVESU9cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0xMDMtXHRoZWxwXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTEwNz1jb25maWcgR0FER0VUX1VBQzFfTEVHQUNZXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMTA4LVx0Ym9vbCBcJiMzNDtVQUMgMS4wIChMZWdhY3kpXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MTA5Olx0ZGVwZW5kcyBvbiBHQURHRVRfVUFDMVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTExMC1cdGhlbHBcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9MTE1PWNvbmZpZyBVU0JfRVRIXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMTE2LVx0dHJpc3RhdGUgXCYjMzQ7RXRoZXJuZXQgR2FkZ2V0ICh3aXRoIENEQyBFdGhlcm5ldCBzdXBwb3J0KVwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjExNzpcdGRlcGVuZHMgb24gTkVUXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMTE4LVx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMTQwLVx0ICBXaXRoaW4gdGhlIFVTQiBkZXZpY2UsIHRoaXMgZ2FkZ2V0IGRyaXZlciBleHBvc2VzIGEgbmV0d29yayBkZXZpY2VcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoxNDE6XHQgIFwmIzM0O3VzYlhcJiMzNDssIHdoZXJlIFggZGVwZW5kcyBvbiB3aGF0IG90aGVyIG5ldHdvcmtpbmcgZGV2aWNlcyB5b3UgaGF2ZS5cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0xNDItXHQgIFRyZWF0IGl0IGxpa2UgYSB0d28tbm9kZSBFdGhlcm5ldCBsaW5rOiAgaG9zdCwgYW5kIGdhZGdldC5cbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9MTUzPWNvbmZpZyBVU0JfRVRIX1JORElTXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMTU0LVx0Ym9vbCBcJiMzNDtSTkRJUyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MTU1Olx0ZGVwZW5kcyBvbiBVU0JfRVRIXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMTU2LVx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9MTczPWNvbmZpZyBVU0JfRVRIX0VFTVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTE3NC1cdGJvb2wgXCYjMzQ7RXRoZXJuZXQgRW11bGF0aW9uIE1vZGVsIChFRU0pIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoxNzU6XHRkZXBlbmRzIG9uIFVTQl9FVEhcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0xNzYtXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0xOTA9Y29uZmlnIFVTQl9HX05DTVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTE5MS1cdHRyaXN0YXRlIFwmIzM0O05ldHdvcmsgQ29udHJvbCBNb2RlbCAoTkNNKSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MTkyOlx0ZGVwZW5kcyBvbiBORVRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0xOTMtXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0yMzc9Y29uZmlnIFVTQl9GVU5DVElPTkZTX0VUSFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTIzOC1cdGJvb2wgXCYjMzQ7SW5jbHVkZSBjb25maWd1cmF0aW9uIHdpdGggQ0RDIEVDTSAoRXRoZXJuZXQpXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MjM5Olx0ZGVwZW5kcyBvbiBVU0JfRlVOQ1RJT05GUyBcdTAwMjZcdTAwMjYgTkVUXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjQwLVx0c2VsZWN0IFVTQl9VX0VUSEVSXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTI0Nz1jb25maWcgVVNCX0ZVTkNUSU9ORlNfUk5ESVNcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yNDgtXHRib29sIFwmIzM0O0luY2x1ZGUgY29uZmlndXJhdGlvbiB3aXRoIFJORElTIChFdGhlcm5ldClcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoyNDk6XHRkZXBlbmRzIG9uIFVTQl9GVU5DVElPTkZTIFx1MDAyNlx1MDAyNiBORVRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yNTAtXHRzZWxlY3QgVVNCX1VfRVRIRVJcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9MjU1PWNvbmZpZyBVU0JfRlVOQ1RJT05GU19HRU5FUklDXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjU2LVx0Ym9vbCBcJiMzNDtJbmNsdWRlICYjMzk7cHVyZSYjMzk7IGNvbmZpZ3VyYXRpb25cJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoyNTc6XHRkZXBlbmRzIG9uIFVTQl9GVU5DVElPTkZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjU4LVx0aGVscFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0yNjI9Y29uZmlnIFVTQl9NQVNTX1NUT1JBR0VcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yNjMtXHR0cmlzdGF0ZSBcJiMzNDtNYXNzIFN0b3JhZ2UgR2FkZ2V0XCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MjY0Olx0ZGVwZW5kcyBvbiBCTE9DS1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTI2NS1cdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTI3OT1jb25maWcgVVNCX0dBREdFVF9UQVJHRVRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yODAtXHR0cmlzdGF0ZSBcJiMzNDtVU0IgR2FkZ2V0IFRhcmdldCBGYWJyaWMgTW9kdWxlXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MjgxOlx0ZGVwZW5kcyBvbiBUQVJHRVRfQ09SRVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTI4Mi1cdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTI5MT1jb25maWcgVVNCX0dfU0VSSUFMXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjkyLVx0dHJpc3RhdGUgXCYjMzQ7U2VyaWFsIEdhZGdldCAod2l0aCBDREMgQUNNIGFuZCBDREMgT0JFWCBzdXBwb3J0KVwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjI5MzpcdGRlcGVuZHMgb24gVFRZXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjk0LVx0c2VsZWN0IFVTQl9VX1NFUklBTFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0zMTY9Y29uZmlnIFVTQl9NSURJX0dBREdFVFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTMxNy1cdHRyaXN0YXRlIFwmIzM0O01JREkgR2FkZ2V0XCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MzE4Olx0ZGVwZW5kcyBvbiBTTkRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0zMTktXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0zNTE9Y29uZmlnIFVTQl9DRENfQ09NUE9TSVRFXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMzUyLVx0dHJpc3RhdGUgXCYjMzQ7Q0RDIENvbXBvc2l0ZSBEZXZpY2UgKEV0aGVybmV0IGFuZCBBQ00pXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MzUzOlx0ZGVwZW5kcyBvbiBORVRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0zNTQtXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0zNzA9Y29uZmlnIFVTQl9HX05PS0lBXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMzcxLVx0dHJpc3RhdGUgXCYjMzQ7Tm9raWEgY29tcG9zaXRlIGdhZGdldFwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjM3MjpcdGRlcGVuZHMgb24gUEhPTkVUXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MzczOlx0ZGVwZW5kcyBvbiBCTE9DS1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTM3NC1cdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTM4OT1jb25maWcgVVNCX0dfQUNNX01TXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMzkwLVx0dHJpc3RhdGUgXCYjMzQ7Q0RDIENvbXBvc2l0ZSBEZXZpY2UgKEFDTSBhbmQgbWFzcyBzdG9yYWdlKVwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjM5MTpcdGRlcGVuZHMgb24gQkxPQ0tcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0zOTItXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz00MDM9Y29uZmlnIFVTQl9HX01VTFRJXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNDA0LVx0dHJpc3RhdGUgXCYjMzQ7TXVsdGlmdW5jdGlvbiBDb21wb3NpdGUgR2FkZ2V0XCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6NDA1Olx0ZGVwZW5kcyBvbiBCTE9DSyBcdTAwMjZcdTAwMjYgTkVUXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNDA2LVx0c2VsZWN0IFVTQl9HX01VTFRJX0NEQyBpZiAhVVNCX0dfTVVMVElfUk5ESVNcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9NDI3PWNvbmZpZyBVU0JfR19NVUxUSV9STkRJU1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTQyOC1cdGJvb2wgXCYjMzQ7Uk5ESVMgJiM0MzsgQ0RDIFNlcmlhbCAmIzQzOyBTdG9yYWdlIGNvbmZpZ3VyYXRpb25cJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzo0Mjk6XHRkZXBlbmRzIG9uIFVTQl9HX01VTFRJXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNDMwLVx0c2VsZWN0IFVTQl9GX1JORElTXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTQ0MD1jb25maWcgVVNCX0dfTVVMVElfQ0RDXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNDQxLVx0Ym9vbCBcJiMzNDtDREMgRXRoZXJuZXQgJiM0MzsgQ0RDIFNlcmlhbCAmIzQzOyBTdG9yYWdlIGNvbmZpZ3VyYXRpb25cJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzo0NDI6XHRkZXBlbmRzIG9uIFVTQl9HX01VTFRJXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNDQzLVx0c2VsZWN0IFVTQl9GX0VDTVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz00Njg9Y29uZmlnIFVTQl9HX0RCR1BcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy00NjktXHR0cmlzdGF0ZSBcJiMzNDtFSENJIERlYnVnIERldmljZSBHYWRnZXRcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzo0NzA6XHRkZXBlbmRzIG9uIFRUWVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTQ3MS1cdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTQ4ND1jb25maWcgVVNCX0dfREJHUF9QUklOVEtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzo0ODU6XHRkZXBlbmRzIG9uIFVTQl9HX0RCR1BcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy00ODYtXHRib29sIFwmIzM0O3ByaW50a1wmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz00OTA9Y29uZmlnIFVTQl9HX0RCR1BfU0VSSUFMXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6NDkxOlx0ZGVwZW5kcyBvbiBVU0JfR19EQkdQXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNDkyLVx0c2VsZWN0IFVTQl9VX1NFUklBTFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz01MDE9Y29uZmlnIFVTQl9HX1dFQkNBTVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTUwMi1cdHRyaXN0YXRlIFwmIzM0O1VTQiBXZWJjYW0gR2FkZ2V0XCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6NTAzOlx0ZGVwZW5kcyBvbiBWSURFT19ERVZcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy01MDQtXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMDo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDg1NwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBVU0IgR2FkZ2V0IENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYFVTQl9SQVdfR0FER0VUYCBvcHRpb24sIGFuZCBpdCYjMzk7cyBpbnRlcmVzdGluZy4gRGlyZWN0bHksIGl0IGRvZXNuJiMzOTt0IHNlZW0gdG8gaGF2ZSBhbnkgZXhwbGljaXQgZGVwZW5kZW5jaWVzIGRlY2xhcmVkIGluIHRoZSBLY29uZmlnIGZpbGVzLCBidXQgaXQmIzM5O3MgbmVzdGVkIHdpdGhpbiB0aGUgYG1lbnVjb25maWcgVVNCX0dBREdFVGAgYmxvY2suIFRoZXJlZm9yZSwgaXQgaW1wbGljaXRseSAqZG9lcyogZGVwZW5kIG9uIGBVU0JfR0FER0VUYC4gVGhhdCBtYWtlcyBzZW5zZTsgaXQmIzM5O3MgYSBjaGlsZCBjb25maWd1cmF0aW9uIG9wdGlvbi4KCk5vdywgYSBmdXJ0aGVyIHF1ZXN0aW9uIGFyaXNlcy4gRG9lcyBgVVNCX0dBREdFVGAgaXRzZWxmIHJlbHkgb24gYSBicm9hZGVyIHN1cHBvcnQgZnJhbWV3b3JrIGxpa2UgYFVTQl9TVVBQT1JUYD8gVG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgZGVwZW5kZW5jaWVzLCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIHRoZSBgZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWdgIGZpbGUuIEkmIzM5O2xsIG5lZWQgdG8gZXhhbWluZSB0aGF0IGZpbGUgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwcyBhbmQgd2hhdCBjb25kaXRpb25zIG5lZWQgdG8gYmUgbWV0IGZvciB0aGVzZSBvcHRpb25zIHRvIGJlIGF2YWlsYWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTA6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTQ5PWNvbmZpZyBVU0JfR0FER0VUX0RFQlVHXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy01MC1cdGJvb2wgXCYjMzQ7RGVidWdnaW5nIG1lc3NhZ2VzIChERVZFTE9QTUVOVClcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjUxOlx0ZGVwZW5kcyBvbiBERUJVR19LRVJORUxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTUyLVx0aGVscFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTYzPWNvbmZpZyBVU0JfR0FER0VUX1ZFUkJPU0VcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTY0LVx0Ym9vbCBcJiMzNDtWZXJib3NlIGRlYnVnZ2luZyBNZXNzYWdlcyAoREVWRUxPUE1FTlQpXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo2NTpcdGRlcGVuZHMgb24gVVNCX0dBREdFVF9ERUJVR1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNjYtXHRoZWxwXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9Nzc9Y29uZmlnIFVTQl9HQURHRVRfREVCVUdfRklMRVNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTc4LVx0Ym9vbCBcJiMzNDtEZWJ1Z2dpbmcgaW5mb3JtYXRpb24gZmlsZXMgKERFVkVMT1BNRU5UKVwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6Nzk6XHRkZXBlbmRzIG9uIFBST0NfRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTgwLVx0aGVscFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTg4PWNvbmZpZyBVU0JfR0FER0VUX0RFQlVHX0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy04OS1cdGJvb2wgXCYjMzQ7RGVidWdnaW5nIGluZm9ybWF0aW9uIGZpbGVzIGluIGRlYnVnZnMgKERFVkVMT1BNRU5UKVwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6OTA6XHRkZXBlbmRzIG9uIERFQlVHX0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy05MS1cdGhlbHBcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0xMzI9Y29uZmlnIFVfU0VSSUFMX0NPTlNPTEVcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTEzMy1cdGJvb2wgXCYjMzQ7U2VyaWFsIGdhZGdldCBjb25zb2xlIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjEzNDpcdGRlcGVuZHMgb24gVVNCX1VfU0VSSUFMXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xMzUtXHRoZWxwXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9MTQ1PWNvbmZpZyBVU0JfTElCQ09NUE9TSVRFXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTQ3LVx0c2VsZWN0IENPTkZJR0ZTX0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoxNDg6XHRkZXBlbmRzIG9uIFVTQl9HQURHRVRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTE0OS1cbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0yNDA9Y29uZmlnIFVTQl9DT05GSUdGU19TRVJJQUxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI0MS1cdGJvb2wgXCYjMzQ7R2VuZXJpYyBzZXJpYWwgYnVsayBpbi9vdXRcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI0MjpcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyNDM6XHRkZXBlbmRzIG9uIFRUWVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjQ0LVx0c2VsZWN0IFVTQl9VX1NFUklBTFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTI0OT1jb25maWcgVVNCX0NPTkZJR0ZTX0FDTVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjUwLVx0Ym9vbCBcJiMzNDtBYnN0cmFjdCBDb250cm9sIE1vZGVsIChDREMgQUNNKVwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjUxOlx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI1MjpcdGRlcGVuZHMgb24gVFRZXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNTMtXHRzZWxlY3QgVVNCX1VfU0VSSUFMXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9MjU5PWNvbmZpZyBVU0JfQ09ORklHRlNfT0JFWFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjYwLVx0Ym9vbCBcJiMzNDtPYmplY3QgRXhjaGFuZ2UgTW9kZWwgKENEQyBPQkVYKVwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjYxOlx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI2MjpcdGRlcGVuZHMgb24gVFRZXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNjMtXHRzZWxlY3QgVVNCX1VfU0VSSUFMXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9MjY5PWNvbmZpZyBVU0JfQ09ORklHRlNfTkNNXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNzAtXHRib29sIFwmIzM0O05ldHdvcmsgQ29udHJvbCBNb2RlbCAoQ0RDIE5DTSlcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI3MTpcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyNzI6XHRkZXBlbmRzIG9uIE5FVFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjczLVx0c2VsZWN0IFVTQl9VX0VUSEVSXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9MjgxPWNvbmZpZyBVU0JfQ09ORklHRlNfRUNNXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yODItXHRib29sIFwmIzM0O0V0aGVybmV0IENvbnRyb2wgTW9kZWwgKENEQyBFQ00pXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyODM6XHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6Mjg0Olx0ZGVwZW5kcyBvbiBORVRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI4NS1cdHNlbGVjdCBVU0JfVV9FVEhFUlxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTI5Mz1jb25maWcgVVNCX0NPTkZJR0ZTX0VDTV9TVUJTRVRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI5NC1cdGJvb2wgXCYjMzQ7RXRoZXJuZXQgQ29udHJvbCBNb2RlbCAoQ0RDIEVDTSkgc3Vic2V0XCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyOTU6XHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6Mjk2Olx0ZGVwZW5kcyBvbiBORVRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI5Ny1cdHNlbGVjdCBVU0JfVV9FVEhFUlxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTMwMz1jb25maWcgVVNCX0NPTkZJR0ZTX1JORElTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMDQtXHRib29sIFwmIzM0O1JORElTXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozMDU6XHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzA2Olx0ZGVwZW5kcyBvbiBORVRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMwNy1cdHNlbGVjdCBVU0JfVV9FVEhFUlxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTMxOT1jb25maWcgVVNCX0NPTkZJR0ZTX0VFTVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzIwLVx0Ym9vbCBcJiMzNDtFdGhlcm5ldCBFbXVsYXRpb24gTW9kZWwgKEVFTSlcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjMyMTpcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozMjI6XHRkZXBlbmRzIG9uIE5FVFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzIzLVx0c2VsZWN0IFVTQl9VX0VUSEVSXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9MzM1PWNvbmZpZyBVU0JfQ09ORklHRlNfUEhPTkVUXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMzYtXHRib29sIFwmIzM0O1Bob25ldCBwcm90b2NvbFwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzM3Olx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjMzODpcdGRlcGVuZHMgb24gTkVUXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozMzk6XHRkZXBlbmRzIG9uIFBIT05FVFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzQwLVx0c2VsZWN0IFVTQl9VX0VUSEVSXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9MzQ1PWNvbmZpZyBVU0JfQ09ORklHRlNfTUFTU19TVE9SQUdFXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNDYtXHRib29sIFwmIzM0O01hc3Mgc3RvcmFnZVwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzQ3Olx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM0ODpcdGRlcGVuZHMgb24gQkxPQ0tcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM0OS1cdHNlbGVjdCBVU0JfRl9NQVNTX1NUT1JBR0Vcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0zNTY9Y29uZmlnIFVTQl9DT05GSUdGU19GX0xCX1NTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNTctXHRib29sIFwmIzM0O0xvb3BiYWNrIGFuZCBzb3VyY2VzaW5rIGZ1bmN0aW9uIChmb3IgdGVzdGluZylcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM1ODpcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNTktXHRzZWxlY3QgVVNCX0ZfU1NfTEJcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0zNjk9Y29uZmlnIFVTQl9DT05GSUdGU19GX0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNzAtXHRib29sIFwmIzM0O0Z1bmN0aW9uIGZpbGVzeXN0ZW0gKEZ1bmN0aW9uRlMpXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNzE6XHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzcyLVx0c2VsZWN0IFVTQl9GX0ZTXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9MzgxPWNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zODItXHRib29sIFwmIzM0O0F1ZGlvIENsYXNzIDEuMFwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzgzOlx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM4NDpcdGRlcGVuZHMgb24gU05EXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zODUtXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTM5OT1jb25maWcgVVNCX0NPTkZJR0ZTX0ZfVUFDMV9MRUdBQ1lcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQwMC1cdGJvb2wgXCYjMzQ7QXVkaW8gQ2xhc3MgMS4wIChsZWdhY3kgaW1wbGVtZW50YXRpb24pXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0MDE6XHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDAyOlx0ZGVwZW5kcyBvbiBTTkRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQwMy1cdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDEyPWNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMyXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MTMtXHRib29sIFwmIzM0O0F1ZGlvIENsYXNzIDIuMFwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDE0Olx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQxNTpcdGRlcGVuZHMgb24gU05EXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MTYtXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTQzMT1jb25maWcgVVNCX0NPTkZJR0ZTX0ZfTUlESVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDMyLVx0Ym9vbCBcJiMzNDtNSURJIGZ1bmN0aW9uXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0MzM6XHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDM0Olx0ZGVwZW5kcyBvbiBTTkRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQzNS1cdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDQ1PWNvbmZpZyBVU0JfQ09ORklHRlNfRl9NSURJMlxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDQ2LVx0Ym9vbCBcJiMzNDtNSURJIDIuMCBmdW5jdGlvblwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDQ3Olx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ0ODpcdGRlcGVuZHMgb24gU05EXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NDktXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTQ1OD1jb25maWcgVVNCX0NPTkZJR0ZTX0ZfSElEXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NTktXHRib29sIFwmIzM0O0hJRCBmdW5jdGlvblwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDYwOlx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2MS1cdHNlbGVjdCBVU0JfRl9ISURcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz00Njg9Y29uZmlnIFVTQl9DT05GSUdGU19GX1VWQ1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDY5LVx0Ym9vbCBcJiMzNDtVU0IgV2ViY2FtIGZ1bmN0aW9uXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0NzA6XHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDcxOlx0ZGVwZW5kcyBvbiBWSURFT19ERVZcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ3MjpcdGRlcGVuZHMgb24gVklERU9fREVWXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NzMtXHRzZWxlY3QgVklERU9CVUYyX0RNQV9TR1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTQ4MT1jb25maWcgVVNCX0NPTkZJR0ZTX0ZfUFJJTlRFUlxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ4My1cdHNlbGVjdCBVU0JfRl9QUklOVEVSXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0ODQ6XHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDg1LVx0aGVscFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTQ5NT1jb25maWcgVVNCX0NPTkZJR0ZTX0ZfVENNXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00OTYtXHRib29sIFwmIzM0O1VTQiBHYWRnZXQgVGFyZ2V0IEZhYnJpY1wmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDk3Olx0ZGVwZW5kcyBvbiBUQVJHRVRfQ09SRVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDk4Olx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ5OS1cdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEwOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MDM2CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gVVNCIEdhZGdldCBEcml2ZXJzKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBgVVNCX0dBREdFVGAsIHRoZSBjb3JlIG1vZHVsZSBmb3IgVVNCIGRldmljZSBlbXVsYXRpb24uIE15IGZpcnN0IHRob3VnaHQgaXMgYWx3YXlzIHRvIHBpbnBvaW50IGl0cyBkZXBlbmRlbmNpZXMuIEl0JiMzOTtzIGFsbW9zdCBheGlvbWF0aWMgaW4gdGhpcyBhcmVhLiBgVVNCX0dBREdFVGAgKmhhcyogdG8gcmVseSBvbiBzb21ldGhpbmcgZnVuZGFtZW50YWwgd2l0aGluIHRoZSBVU0Igc3Vic3lzdGVtIGl0c2VsZi4gV2UgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgdGhvc2UgYXJlIHRvIHJlYWxseSB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdHdlYWtpbmcgdGhpcy4gV2hhdCYjMzk7cyB1cHN0cmVhbSBvZiBpdD8gUG93ZXIgbWFuYWdlbWVudD8gVGhlIGNvcmUgVVNCIGNvbnRyb2xsZXIgZHJpdmVyIG1vZGVsPyBUaGUgc3BlY2lmaWMgaGFyZHdhcmUgcGxhdGZvcm0/IEdldHRpbmcgYXQgdGhvc2UgcmVsYXRpb25zaGlwcyBpcyBrZXkgdG8ga25vd2luZyB3aGVyZSBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcyBvciBjb21wYXRpYmlsaXR5IGlzc3VlcyBtaWdodCBjcm9wIHVwLiBUaGlzIGlzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgYW55IGluLWRlcHRoIGV4cGxvcmF0aW9uIG9yIG1vZGlmaWNhdGlvbiBvZiBhIGdhZGdldCBkcml2ZXIuIEl0JiMzOTtzIG5ldmVyIGp1c3QgYSBzdGFuZGFsb25lIG1vZHVsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTA6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWVudWNvbmZpZyBVU0JfR0FER0VUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTYtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoxNzptZW51Y29uZmlnIFVTQl9HQURHRVRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTE4LVx0dHJpc3RhdGUgXCYjMzQ7VVNCIEdhZGdldCBTdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEwOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MzM5CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBLY29uZmlnIGZpbGUgZm9yIFVTQiBnYWRnZXQgZHJpdmVycy4KCioqRGVlcCBEaXZlIGludG8gVVNCIEdhZGdldCBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBJJiMzOTttIHN0YXJ0aW5nIGJ5IHRha2luZyBhIGxvb2sgYXQgdGhlIGZpcnN0IDIwIGxpbmVzIG9mIHRoZSBgZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWdgIGZpbGUuIEdpdmVuIG15IGV4cGVydGlzZSwgSSYjMzk7bSBleHBlY3RpbmcgdGhpcyB0byBsYXkgb3V0IHRoZSBmdW5kYW1lbnRhbCBvcHRpb25zIGZvciBjb25maWd1cmluZyBVU0IgZ2FkZ2V0IGZ1bmN0aW9uYWxpdHkgd2l0aGluIHRoZSBrZXJuZWwuIEkgYW50aWNpcGF0ZSBzZWVpbmcgdGhlIG1haW4gZmVhdHVyZSBzd2l0Y2hlcywgcG9zc2libHkgdGhlIHRvcC1sZXZlbCBzZWxlY3Rpb24gZm9yIHdoZXRoZXIgYW55IGdhZGdldCBzdXBwb3J0IGlzIGJ1aWx0IGF0IGFsbC4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgYW55IGRlZmF1bHQgdmFsdWVzIGFzc2lnbmVkLCBhbmQgaWYgdGhlcmUmIzM5O3MgYW55IGhpbnQgb2Ygb3JnYW5pemF0aW9uLCBtYXliZSBzZWN0aW9ucyBmb3Igc3BlY2lmaWMgZ2FkZ2V0IHR5cGVzLiBJJiMzOTtsbCBiZSBub3RpbmcgYW55IGNyb3NzLWRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgc3Vic3lzdGVtc+KAlGUuZy4sIGlmIHRoZXJlJiMzOTtzIGFuIGltbWVkaWF0ZSBkZXBlbmRlbmN5IG9uIFVTQiBjb3JlIG9yIHNvbWV0aGluZyBlbHNlLiBJJiMzOTttIGtlZXBpbmcgYW4gZXllIG91dCBmb3IgYW55IGNvbW1lbnRzLCBlc3BlY2lhbGx5IGlmIHRoZXkgZXhwbGFpbiB0aGUgcHVycG9zZSBvZiBhIHBhcnRpY3VsYXIgb3B0aW9uIGluIHJlbGF0aW9uIHRvIHRoZSBmdW5jdGlvbmFsaXR5IGl0IGVuYWJsZXMuIFRoZSB1bHRpbWF0ZSBnb2FsIGhlcmUgaXMgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBvdmVyYWxsIHN0cnVjdHVyZSBhbmQgZGVzaWduIG9mIHRoZSBnYWRnZXQgZHJpdmVyIGNvbmZpZ3VyYXRpb24gc28gSSBjYW4gdW5kZXJzdGFuZCBob3cgYmVzdCB0byBhcHByb2FjaCBpdHMgY3VzdG9taXphdGlvbiBvciBwb3RlbnRpYWwgZXh0ZW5zaW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTA6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHQjXG4gICAzOlx0IyBVU0IgR2FkZ2V0IHN1cHBvcnQgb24gYSBzeXN0ZW0gaW52b2x2ZXNcbiAgIDQ6XHQjICAgIChhKSBhIHBlcmlwaGVyYWwgY29udHJvbGxlciwgYW5kXG4gICA1Olx0IyAgICAoYikgdGhlIGdhZGdldCBkcml2ZXIgdXNpbmcgaXQuXG4gICA2Olx0I1xuICAgNzpcdCMgTk9URTogIEdhZGdldCBzdXBwb3J0ICoqIERPRVMgTk9UICoqIGRlcGVuZCBvbiBob3N0LXNpZGUgQ09ORklHX1VTQiAhIVxuICAgODpcdCNcbiAgIDk6XHQjICAtIEhvc3Qgc3lzdGVtcyAobGlrZSBQQ3MpIG5lZWQgQ09ORklHX1VTQiAod2l0aCBcJiMzNDtBXCYjMzQ7IGphY2tzKS5cbiAgMTA6XHQjICAtIFBlcmlwaGVyYWxzIChsaWtlIFBEQXMpIG5lZWQgQ09ORklHX1VTQl9HQURHRVQgKHdpdGggXCYjMzQ7QlwmIzM0OyBqYWNrcykuXG4gIDExOlx0IyAgLSBTb21lIHN5c3RlbXMgaGF2ZSBib3RoIGtpbmRzIG9mIGNvbnRyb2xsZXJzLlxuICAxMjpcdCNcbiAgMTM6XHQjIFdpdGggaGVscCBmcm9tIGEgc3BlY2lhbCB0cmFuc2NlaXZlciBhbmQgYSBcJiMzNDtNaW5pLUFCXCYjMzQ7IGphY2ssIHN5c3RlbXMgd2l0aFxuICAxNDpcdCMgYm90aCBraW5kcyBvZiBjb250cm9sbGVyIGNhbiBhbHNvIHN1cHBvcnQgXCYjMzQ7VVNCIE9uLXRoZS1Hb1wmIzM0OyAoQ09ORklHX1VTQl9PVEcpLlxuICAxNTpcdCNcbiAgMTY6XHRcbiAgMTc6XHRtZW51Y29uZmlnIFVTQl9HQURHRVRcbiAgMTg6XHRcdHRyaXN0YXRlIFwmIzM0O1VTQiBHYWRnZXQgU3VwcG9ydFwmIzM0O1xuICAxOTpcdFx0c2VsZWN0IFVTQl9DT01NT05cbiAgMjA6XHRcdHNlbGVjdCBOTFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTA6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ5MzgKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA1MTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBVU0IgUmF3IEdhZGdldCBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYFVTQl9HQURHRVRgIGNvbmZpZ3VyYXRpb24sIGFuZCBpdCBkb2VzbiYjMzk7dCBoYXZlIGFueSBleHBsaWNpdCBkZXBlbmRlbmNpZXMsIGp1c3Qgc2VsZWN0cyBgVVNCX0NPTU1PTmAgYW5kIGBOTFNgLiBTZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLiBUaGUgY29uZmlncyB3ZSBhcmUgaW50ZXJlc3RlZCBpbiBhcmUgYFVTQl9SQVdfR0FER0VUYCBhbmQgYFVTQl9HQURHRVRgLCBhcyB3ZWxsIGFzIGBVU0JfRFVNTVlfSENEYCwgd2hpY2ggc3l6a2FsbGVyIHVzZXMgZm9yIFVTQiBjb250cm9sbGVyIGVtdWxhdGlvbi4gSG93ZXZlciwgZm9yIHRoZSBgVVNCX1JBV19HQURHRVRgIGZ1bmN0aW9uYWxpdHksIHRoZSBjb25maWcgaXRzZWxmIGlzIHN1ZmZpY2llbnQuCgpMZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBjb2RlLiBUaGUgcGF0Y2ggdG91Y2hlcyBzZXZlcmFsIGtleSBmdW5jdGlvbnMgaW4gYGRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jYDogYGRldl9mcmVlYCwgYGdhZGdldF9iaW5kYCwgYGdhZGdldF91bmJpbmRgLCBgcmF3X2lvY3RsX2V2ZW50X2ZldGNoYCwgYHJhd19wcm9jZXNzX2VwMF9pb2AsIGByYXdfaW9jdGxfZXBfZGlzYWJsZWAsIGFuZCBgcmF3X3Byb2Nlc3NfZXBfaW9gLiBUaGVzZSBhcmUgYWxsIGludGVncmFsIHBhcnRzIG9mIHRoZSBVU0IgUmF3IEdhZGdldCBkcml2ZXIgaW1wbGVtZW50YXRpb24uCgpGcm9tIHRoZSBkZXNjcmlwdGlvbiwgdGhpcyBwYXRjaCBpcyBhZGRyZXNzaW5nIGEgcmFjZSBjb25kaXRpb24uIEl0IHNvdW5kcyBsaWtlIHRoZSBVREMgKFVTQiBEZXZpY2UgQ29udHJvbGxlcikgdW5iaW5kIGNvdWxkIGhhcHBlbiBjb25jdXJyZW50bHkgd2l0aCBhbiBFUDAgb3IgRVAgSU8gb3BlcmF0aW9uLCBwb3RlbnRpYWxseSBsZWFkaW5nIHRvIHVzZS1hZnRlci1mcmVlIG9yIG90aGVyIG1lbW9yeSBjb3JydXB0aW9uIGlzc3Vlcy4gVGhlIGZpeCBpbnZvbHZlcyBhZGRpbmcgYSBgdWRjX3VzYWdlYCBjb3VudGVyIGFuZCBhbiBgdW5iaW5kX2NvbXBsZXRpb25gIG1lY2hhbmlzbS4gU21hcnQhCgpJcyB0aGlzIHBhdGNoIGZ1enotd29ydGh5PyBBYnNvbHV0ZWx5ISBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIGEgY29yZSBkcml2ZXIsIGFuZCwgaW1wb3J0YW50bHksIHN5emthbGxlciB1dGlsaXplcyB0aGlzIGRyaXZlci4gTm93LCBzeXprYWxsZXIgbGV2ZXJhZ2VzIHRoaXMgZHJpdmVyIHRvIGZ1enogKm90aGVyKiBVU0IgZHJpdmVycy4gSG93ZXZlciwgdGhpcyBzcGVjaWZpYyBwYXRjaCBmaXhlcyBhIGJ1ZyB3aXRoaW4gYHJhd19nYWRnZXQuY2AgaXRzZWxmLiBTeXprYWxsZXIgYWxzbyBkaXJlY3RseSBmdXp6ZXogdGhpcyBkcml2ZXIsIHdpdGggZGVzY3JpcHRpb25zIGZvciBgL2Rldi9yYXctZ2FkZ2V0YC4gU28sIGl0JiMzOTtzIGRlZmluaXRlbHkgd29ydGggdGhlIGVmZm9ydC4KCkxldCYjMzk7cyBwaW5wb2ludCB0aG9zZSBmb2N1cyBzeW1ib2xzIGZvciBmdXp6aW5nLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb25zIGFyZTogYGdhZGdldF9iaW5kYCwgYGdhZGdldF91bmJpbmRgLCBgcmF3X2lvY3RsX2V2ZW50X2ZldGNoYCwgYHJhd19wcm9jZXNzX2VwMF9pb2AsIGByYXdfaW9jdGxfZXBfZGlzYWJsZWAsIGFuZCBgcmF3X3Byb2Nlc3NfZXBfaW9gLgoKTm93LCB3YWl0IGEgbWludXRlLi4uIGBnYWRnZXRfYmluZGAgYW5kIGBnYWRnZXRfdW5iaW5kYCBhcmUgKnN0YXRpYyogZnVuY3Rpb25zLCBhY3RpbmcgYXMgY2FsbGJhY2tzIGluIGBzdHJ1Y3QgdXNiX2dhZGdldF9kcml2ZXJgLiBUaGUgb3RoZXIgZm91ciwgYHJhd19pb2N0bF9ldmVudF9mZXRjaGAsIGByYXdfcHJvY2Vzc19lcDBfaW9gLCBgcmF3X2lvY3RsX2VwX2Rpc2FibGVgLCBhbmQgYHJhd19wcm9jZXNzX2VwX2lvYCwgYXJlIHN0YXRpYyBmdW5jdGlvbnMgY2FsbGVkIGZyb20gYHJhd19pb2N0bGAuIFNvLCBsZXQmIzM5O3MgdHVybiBvdXIgYXR0ZW50aW9uIHRvIGByYXdfaW9jdGxgIG5leHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEwOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Jhd19pb2N0bCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jPTQ3OD1zdGF0aWMgaW50IHJhd19yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmZClcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy01MDEtXHRcdFx0XHRyZXQpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6NTAyOlx0XHQvKiBNYXRjaGVzIGtyZWZfZ2V0KCkgaW4gcmF3X2lvY3RsX3J1bigpLiAqL1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtNTAzLVx0XHRrcmVmX3B1dChcdTAwMjZkZXYtXHUwMDNlY291bnQsIGRldl9mcmVlKTtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy01MTMtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzo1MTQ6c3RhdGljIGludCByYXdfaW9jdGxfaW5pdChzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtNTE1LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy02MTItXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzo2MTM6c3RhdGljIGludCByYXdfaW9jdGxfcnVuKHN0cnVjdCByYXdfZGV2ICpkZXYsIHVuc2lnbmVkIGxvbmcgdmFsdWUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy02MTQte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTY0OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjY0OTpzdGF0aWMgaW50IHJhd19pb2N0bF9ldmVudF9mZXRjaChzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtNjUwLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYz03MTc9c3RhdGljIGludCByYXdfcHJvY2Vzc19lcDBfaW8oc3RydWN0IHJhd19kZXYgKmRldiwgc3RydWN0IHVzYl9yYXdfZXBfaW8gKmlvLFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTgwOS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjgxMDpzdGF0aWMgaW50IHJhd19pb2N0bF9lcDBfd3JpdGUoc3RydWN0IHJhd19kZXYgKmRldiwgdW5zaWduZWQgbG9uZyB2YWx1ZSlcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTgxMS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtODIzLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6ODI0OnN0YXRpYyBpbnQgcmF3X2lvY3RsX2VwMF9yZWFkKHN0cnVjdCByYXdfZGV2ICpkZXYsIHVuc2lnbmVkIGxvbmcgdmFsdWUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy04MjUte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTg0Ny1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjg0ODpzdGF0aWMgaW50IHJhd19pb2N0bF9lcDBfc3RhbGwoc3RydWN0IHJhd19kZXYgKmRldiwgdW5zaWduZWQgbG9uZyB2YWx1ZSlcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTg0OS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtODkxLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6ODkyOnN0YXRpYyBpbnQgcmF3X2lvY3RsX2VwX2VuYWJsZShzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtODkzLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy05NzEtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzo5NzI6c3RhdGljIGludCByYXdfaW9jdGxfZXBfZGlzYWJsZShzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtOTczLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMDI5LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6MTAzMDpzdGF0aWMgaW50IHJhd19pb2N0bF9lcF9zZXRfY2xlYXJfaGFsdF93ZWRnZShzdHJ1Y3QgcmF3X2RldiAqZGV2LFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTAzMS1cdFx0dW5zaWduZWQgbG9uZyB2YWx1ZSwgYm9vbCBzZXQsIGJvb2wgaGFsdClcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYz0xMTE0PXN0YXRpYyBpbnQgcmF3X3Byb2Nlc3NfZXBfaW8oc3RydWN0IHJhd19kZXYgKmRldiwgc3RydWN0IHVzYl9yYXdfZXBfaW8gKmlvLFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEyMTctXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxMjE4OnN0YXRpYyBpbnQgcmF3X2lvY3RsX2VwX3dyaXRlKHN0cnVjdCByYXdfZGV2ICpkZXYsIHVuc2lnbmVkIGxvbmcgdmFsdWUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMjE5LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMjMxLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6MTIzMjpzdGF0aWMgaW50IHJhd19pb2N0bF9lcF9yZWFkKHN0cnVjdCByYXdfZGV2ICpkZXYsIHVuc2lnbmVkIGxvbmcgdmFsdWUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMjMzLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMjU1LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6MTI1NjpzdGF0aWMgaW50IHJhd19pb2N0bF9jb25maWd1cmUoc3RydWN0IHJhd19kZXYgKmRldiwgdW5zaWduZWQgbG9uZyB2YWx1ZSlcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEyNTcte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEyODAtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxMjgxOnN0YXRpYyBpbnQgcmF3X2lvY3RsX3ZidXNfZHJhdyhzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTI4Mi17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM9MTMxNT1zdGF0aWMgdm9pZCBmaWxsX2VwX2xpbWl0cyhzdHJ1Y3QgdXNiX2VwICplcCwgc3RydWN0IHVzYl9yYXdfZXBfbGltaXRzICpsaW1pdHMpXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTMyMC1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjEzMjE6c3RhdGljIGludCByYXdfaW9jdGxfZXBzX2luZm8oc3RydWN0IHJhd19kZXYgKmRldiwgdW5zaWduZWQgbG9uZyB2YWx1ZSlcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEzMjIte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEzNjctXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxMzY4OnN0YXRpYyBsb25nIHJhd19pb2N0bChzdHJ1Y3QgZmlsZSAqZmQsIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgdmFsdWUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMzY5LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMzc3LVx0Y2FzZSBVU0JfUkFXX0lPQ1RMX0lOSVQ6XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxMzc4Olx0XHRyZXQgPSByYXdfaW9jdGxfaW5pdChkZXYsIHZhbHVlKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEzNzktXHRcdGJyZWFrO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTM4MC1cdGNhc2UgVVNCX1JBV19JT0NUTF9SVU46XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxMzgxOlx0XHRyZXQgPSByYXdfaW9jdGxfcnVuKGRldiwgdmFsdWUpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTM4Mi1cdFx0YnJlYWs7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMzgzLVx0Y2FzZSBVU0JfUkFXX0lPQ1RMX0VWRU5UX0ZFVENIOlxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6MTM4NDpcdFx0cmV0ID0gcmF3X2lvY3RsX2V2ZW50X2ZldGNoKGRldiwgdmFsdWUpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTM4NS1cdFx0YnJlYWs7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMzg2LVx0Y2FzZSBVU0JfUkFXX0lPQ1RMX0VQMF9XUklURTpcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjEzODc6XHRcdHJldCA9IHJhd19pb2N0bF9lcDBfd3JpdGUoZGV2LCB2YWx1ZSk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMzg4LVx0XHRicmVhaztcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEzODktXHRjYXNlIFVTQl9SQVdfSU9DVExfRVAwX1JFQUQ6XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxMzkwOlx0XHRyZXQgPSByYXdfaW9jdGxfZXAwX3JlYWQoZGV2LCB2YWx1ZSk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMzkxLVx0XHRicmVhaztcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEzOTItXHRjYXNlIFVTQl9SQVdfSU9DVExfRVBfRU5BQkxFOlxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6MTM5MzpcdFx0cmV0ID0gcmF3X2lvY3RsX2VwX2VuYWJsZShkZXYsIHZhbHVlKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEzOTQtXHRcdGJyZWFrO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTM5NS1cdGNhc2UgVVNCX1JBV19JT0NUTF9FUF9ESVNBQkxFOlxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6MTM5NjpcdFx0cmV0ID0gcmF3X2lvY3RsX2VwX2Rpc2FibGUoZGV2LCB2YWx1ZSk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMzk3LVx0XHRicmVhaztcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEzOTgtXHRjYXNlIFVTQl9SQVdfSU9DVExfRVBfV1JJVEU6XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxMzk5Olx0XHRyZXQgPSByYXdfaW9jdGxfZXBfd3JpdGUoZGV2LCB2YWx1ZSk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xNDAwLVx0XHRicmVhaztcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTE0MDEtXHRjYXNlIFVTQl9SQVdfSU9DVExfRVBfUkVBRDpcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjE0MDI6XHRcdHJldCA9IHJhd19pb2N0bF9lcF9yZWFkKGRldiwgdmFsdWUpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTQwMy1cdFx0YnJlYWs7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xNDA0LVx0Y2FzZSBVU0JfUkFXX0lPQ1RMX0NPTkZJR1VSRTpcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjE0MDU6XHRcdHJldCA9IHJhd19pb2N0bF9jb25maWd1cmUoZGV2LCB2YWx1ZSk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xNDA2LVx0XHRicmVhaztcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTE0MDctXHRjYXNlIFVTQl9SQVdfSU9DVExfVkJVU19EUkFXOlxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6MTQwODpcdFx0cmV0ID0gcmF3X2lvY3RsX3ZidXNfZHJhdyhkZXYsIHZhbHVlKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTE0MDktXHRcdGJyZWFrO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTQxMC1cdGNhc2UgVVNCX1JBV19JT0NUTF9FUFNfSU5GTzpcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjE0MTE6XHRcdHJldCA9IHJhd19pb2N0bF9lcHNfaW5mbyhkZXYsIHZhbHVlKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTE0MTItXHRcdGJyZWFrO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTQxMy1cdGNhc2UgVVNCX1JBV19JT0NUTF9FUDBfU1RBTEw6XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxNDE0Olx0XHRyZXQgPSByYXdfaW9jdGxfZXAwX3N0YWxsKGRldiwgdmFsdWUpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTQxNS1cdFx0YnJlYWs7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xNDE2LVx0Y2FzZSBVU0JfUkFXX0lPQ1RMX0VQX1NFVF9IQUxUOlxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6MTQxNzpcdFx0cmV0ID0gcmF3X2lvY3RsX2VwX3NldF9jbGVhcl9oYWx0X3dlZGdlKFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTQxOC1cdFx0XHRcdFx0ZGV2LCB2YWx1ZSwgdHJ1ZSwgdHJ1ZSk7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTQyMC1cdGNhc2UgVVNCX1JBV19JT0NUTF9FUF9DTEVBUl9IQUxUOlxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6MTQyMTpcdFx0cmV0ID0gcmF3X2lvY3RsX2VwX3NldF9jbGVhcl9oYWx0X3dlZGdlKFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTQyMi1cdFx0XHRcdFx0ZGV2LCB2YWx1ZSwgZmFsc2UsIHRydWUpO1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTE0MjQtXHRjYXNlIFVTQl9SQVdfSU9DVExfRVBfU0VUX1dFREdFOlxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6MTQyNTpcdFx0cmV0ID0gcmF3X2lvY3RsX2VwX3NldF9jbGVhcl9oYWx0X3dlZGdlKFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTQyNi1cdFx0XHRcdFx0ZGV2LCB2YWx1ZSwgdHJ1ZSwgZmFsc2UpO1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jPTE0Mzc9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcmF3X2ZvcHMgPSB7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xNDM4LVx0Lm9wZW4gPVx0XHRcdHJhd19vcGVuLFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6MTQzOTpcdC51bmxvY2tlZF9pb2N0bCA9XHRyYXdfaW9jdGwsXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxNDQwOlx0LmNvbXBhdF9pb2N0bCA9XHRcdHJhd19pb2N0bCxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTE0NDEtXHQucmVsZWFzZSA9XHRcdHJhd19yZWxlYXNlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMDo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTQzNgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDIxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFVTQiBHYWRnZXQgaW9jdGwgU3RydWN0dXJlKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBgcmF3X2lvY3RsYCBmdW5jdGlvbiwgYW5kIGl0JiMzOTtzIGxvb2tpbmcgbGlrZSB0aGUgY2VudHJhbCB1c2VyLXNwYWNlIGVudHJ5IHBvaW50IGZvciB0aGUgZ2FkZ2V0IGRyaXZlci4gSSBzZWUgdGhhdCBpdCYjMzk7cyBjYWxsaW5nIGEgZmV3IHN0YXRpYyBmdW5jdGlvbnMgaW50ZXJuYWxseTogYHJhd19pb2N0bF9ldmVudF9mZXRjaGAsIGByYXdfcHJvY2Vzc19lcDBfaW9gLCBgcmF3X2lvY3RsX2VwX2Rpc2FibGVgLCBhbmQgYHJhd19wcm9jZXNzX2VwX2lvYC4gSW50ZXJlc3RpbmcuIEl0IGxvb2tzIGxpa2UgYHJhd19wcm9jZXNzX2VwMF9pb2AgaGFuZGxlcyBlbmRwb2ludCAwIEkvTyBvcGVyYXRpb25zIGFuZCB0aGF0IGl0IGlzIGFsc28gY2FsbGVkIGJ5IGByYXdfaW9jdGxfZXAwX3dyaXRlYCBhbmQgYHJhd19pb2N0bF9lcDBfcmVhZGAuIFNpbWlsYXJseSwgYHJhd19wcm9jZXNzX2VwX2lvYCBpcyB0aGUgd29ya2hvcnNlIGZvciBvdGhlciBlbmRwb2ludHMsIGFjY2Vzc2VkIHZpYSBgcmF3X2lvY3RsX2VwX3dyaXRlYCBhbmQgYHJhd19pb2N0bF9lcF9yZWFkYC4KClNvLCB0aGUga2V5IGZ1bmN0aW9ucyB0byByZWFsbHkgdW5kZXJzdGFuZCBhcmUgYHJhd19pb2N0bGAgaXRzZWxmLCBhbmQgdGhlbiB0aGVzZSBlbmRwb2ludCBwcm9jZXNzaW5nIGZ1bmN0aW9ucy4gSSYjMzk7ZCBhc3N1bWVkIGByYXdfaW9jdGxgIHdvdWxkIGJlIG5vbi1zdGF0aWMsIGJ1dCBpdCBsb29rcyBsaWtlIGl0JiMzOTtzICphbHNvKiBzdGF0aWMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBhbSBub3QgbWlzc2luZyBhbnkgbm9uLXN0YXRpYyBlbnRyeSBwb2ludHMsIHNvIGxldCYjMzk7cyBzdGFydCBjaGVja2luZyBgcmF3X2dhZGdldC5jYCBmb3IgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMDo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtec3RhdGljJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM9Mzc9TU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy00MC1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjQxOnN0YXRpYyBERUZJTkVfSURBKGRyaXZlcl9pZF9udW1iZXJzKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTQyLSNkZWZpbmUgRFJJVkVSX0RSSVZFUl9OQU1FX0xFTkdUSF9NQVhcdDMyXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM9NDc9c3RydWN0IHJhd19ldmVudF9xdWV1ZSB7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtNTQtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzo1NTpzdGF0aWMgdm9pZCByYXdfZXZlbnRfcXVldWVfaW5pdChzdHJ1Y3QgcmF3X2V2ZW50X3F1ZXVlICpxdWV1ZSlcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTU2LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy02MS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjYyOnN0YXRpYyBpbnQgcmF3X2V2ZW50X3F1ZXVlX2FkZChzdHJ1Y3QgcmF3X2V2ZW50X3F1ZXVlICpxdWV1ZSxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTYzLVx0ZW51bSB1c2JfcmF3X2V2ZW50X3R5cGUgdHlwZSwgc2l6ZV90IGxlbmd0aCwgY29uc3Qgdm9pZCAqZGF0YSlcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy04OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjg5OnN0YXRpYyBzdHJ1Y3QgdXNiX3Jhd19ldmVudCAqcmF3X2V2ZW50X3F1ZXVlX2ZldGNoKFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtOTAtXHRcdFx0XHRzdHJ1Y3QgcmF3X2V2ZW50X3F1ZXVlICpxdWV1ZSlcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMjAtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxMjE6c3RhdGljIHZvaWQgcmF3X2V2ZW50X3F1ZXVlX2Rlc3Ryb3koc3RydWN0IHJhd19ldmVudF9xdWV1ZSAqcXVldWUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMjIte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jPTE2MD1zdHJ1Y3QgcmF3X2RldiB7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTkwLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6MTkxOnN0YXRpYyBzdHJ1Y3QgcmF3X2RldiAqZGV2X25ldyh2b2lkKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTkyLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0yMDYtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoyMDc6c3RhdGljIHZvaWQgZGV2X2ZyZWUoc3RydWN0IGtyZWYgKmtyZWYpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0yMDgte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTIyMS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjIyMjpzdGF0aWMgaW50IHJhd19xdWV1ZV9ldmVudChzdHJ1Y3QgcmF3X2RldiAqZGV2LFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMjIzLVx0ZW51bSB1c2JfcmF3X2V2ZW50X3R5cGUgdHlwZSwgc2l6ZV90IGxlbmd0aCwgY29uc3Qgdm9pZCAqZGF0YSlcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0yMzYtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoyMzc6c3RhdGljIHZvaWQgZ2FkZ2V0X2VwMF9jb21wbGV0ZShzdHJ1Y3QgdXNiX2VwICplcCwgc3RydWN0IHVzYl9yZXF1ZXN0ICpyZXEpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0yMzgte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTI1NS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjI1NjpzdGF0aWMgdTggZ2V0X2VwX2FkZHIoY29uc3QgY2hhciAqbmFtZSlcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTI1Ny17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMjY4LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6MjY5OnN0YXRpYyBpbnQgZ2FkZ2V0X2JpbmQoc3RydWN0IHVzYl9nYWRnZXQgKmdhZGdldCxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTI3MC1cdFx0XHRzdHJ1Y3QgdXNiX2dhZGdldF9kcml2ZXIgKmRyaXZlcilcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0zMjAtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzozMjE6c3RhdGljIHZvaWQgZ2FkZ2V0X3VuYmluZChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0KVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMzIyLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0zNzAtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzozNzE6c3RhdGljIGludCBnYWRnZXRfc2V0dXAoc3RydWN0IHVzYl9nYWRnZXQgKmdhZGdldCxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTM3Mi1cdFx0XHRjb25zdCBzdHJ1Y3QgdXNiX2N0cmxyZXF1ZXN0ICpjdHJsKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTQxNS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjQxNjpzdGF0aWMgdm9pZCBnYWRnZXRfZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0KVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtNDE3LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy00MjUtfVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6NDI2OnN0YXRpYyB2b2lkIGdhZGdldF9zdXNwZW5kKHN0cnVjdCB1c2JfZ2FkZ2V0ICpnYWRnZXQpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy00Mjcte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTQzNS19XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzo0MzY6c3RhdGljIHZvaWQgZ2FkZ2V0X3Jlc3VtZShzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0KVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtNDM3LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy00NDUtfVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6NDQ2OnN0YXRpYyB2b2lkIGdhZGdldF9yZXNldChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0KVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtNDQ3LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy00NTgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzo0NTk6c3RhdGljIHN0cnVjdCBtaXNjZGV2aWNlIHJhd19taXNjX2RldmljZTtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTQ2MC1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjQ2MTpzdGF0aWMgaW50IHJhd19vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmZClcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTQ2Mi17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtNDc3LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6NDc4OnN0YXRpYyBpbnQgcmF3X3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZkKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtNDc5LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy01MTMtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzo1MTQ6c3RhdGljIGludCByYXdfaW9jdGxfaW5pdChzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtNTE1LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy02MTItXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzo2MTM6c3RhdGljIGludCByYXdfaW9jdGxfcnVuKHN0cnVjdCByYXdfZGV2ICpkZXYsIHVuc2lnbmVkIGxvbmcgdmFsdWUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy02MTQte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTY0OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjY0OTpzdGF0aWMgaW50IHJhd19pb2N0bF9ldmVudF9mZXRjaChzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtNjUwLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy02OTMtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzo2OTQ6c3RhdGljIHZvaWQgKnJhd19hbGxvY19pb19kYXRhKHN0cnVjdCB1c2JfcmF3X2VwX2lvICppbywgdm9pZCBfX3VzZXIgKnB0cixcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTY5NS1cdFx0XHRcdGJvb2wgZ2V0X2Zyb21fdXNlcilcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy03MTYtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzo3MTc6c3RhdGljIGludCByYXdfcHJvY2Vzc19lcDBfaW8oc3RydWN0IHJhd19kZXYgKmRldiwgc3RydWN0IHVzYl9yYXdfZXBfaW8gKmlvLFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtNzE4LVx0XHRcdFx0dm9pZCAqZGF0YSwgYm9vbCBpbilcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy04MDktXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzo4MTA6c3RhdGljIGludCByYXdfaW9jdGxfZXAwX3dyaXRlKHN0cnVjdCByYXdfZGV2ICpkZXYsIHVuc2lnbmVkIGxvbmcgdmFsdWUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy04MTEte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTgyMy1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjgyNDpzdGF0aWMgaW50IHJhd19pb2N0bF9lcDBfcmVhZChzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtODI1LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy04NDctXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzo4NDg6c3RhdGljIGludCByYXdfaW9jdGxfZXAwX3N0YWxsKHN0cnVjdCByYXdfZGV2ICpkZXYsIHVuc2lnbmVkIGxvbmcgdmFsdWUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy04NDkte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTg5MS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjg5MjpzdGF0aWMgaW50IHJhd19pb2N0bF9lcF9lbmFibGUoc3RydWN0IHJhd19kZXYgKmRldiwgdW5zaWduZWQgbG9uZyB2YWx1ZSlcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTg5My17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtOTcxLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6OTcyOnN0YXRpYyBpbnQgcmF3X2lvY3RsX2VwX2Rpc2FibGUoc3RydWN0IHJhd19kZXYgKmRldiwgdW5zaWduZWQgbG9uZyB2YWx1ZSlcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTk3My17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTAyOS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjEwMzA6c3RhdGljIGludCByYXdfaW9jdGxfZXBfc2V0X2NsZWFyX2hhbHRfd2VkZ2Uoc3RydWN0IHJhd19kZXYgKmRldixcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEwMzEtXHRcdHVuc2lnbmVkIGxvbmcgdmFsdWUsIGJvb2wgc2V0LCBib29sIGhhbHQpXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTA5Ny1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjEwOTg6c3RhdGljIHZvaWQgZ2FkZ2V0X2VwX2NvbXBsZXRlKHN0cnVjdCB1c2JfZXAgKmVwLCBzdHJ1Y3QgdXNiX3JlcXVlc3QgKnJlcSlcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEwOTkte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTExMTMtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxMTE0OnN0YXRpYyBpbnQgcmF3X3Byb2Nlc3NfZXBfaW8oc3RydWN0IHJhd19kZXYgKmRldiwgc3RydWN0IHVzYl9yYXdfZXBfaW8gKmlvLFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTExNS1cdFx0XHRcdHZvaWQgKmRhdGEsIGJvb2wgaW4pXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTIxNy1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjEyMTg6c3RhdGljIGludCByYXdfaW9jdGxfZXBfd3JpdGUoc3RydWN0IHJhd19kZXYgKmRldiwgdW5zaWduZWQgbG9uZyB2YWx1ZSlcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEyMTkte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEyMzEtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxMjMyOnN0YXRpYyBpbnQgcmF3X2lvY3RsX2VwX3JlYWQoc3RydWN0IHJhd19kZXYgKmRldiwgdW5zaWduZWQgbG9uZyB2YWx1ZSlcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEyMzMte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEyNTUtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxMjU2OnN0YXRpYyBpbnQgcmF3X2lvY3RsX2NvbmZpZ3VyZShzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTI1Ny17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTI4MC1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjEyODE6c3RhdGljIGludCByYXdfaW9jdGxfdmJ1c19kcmF3KHN0cnVjdCByYXdfZGV2ICpkZXYsIHVuc2lnbmVkIGxvbmcgdmFsdWUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMjgyLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMzAzLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6MTMwNDpzdGF0aWMgdm9pZCBmaWxsX2VwX2NhcHMoc3RydWN0IHVzYl9lcF9jYXBzICpjYXBzLFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTMwNS1cdFx0XHRcdHN0cnVjdCB1c2JfcmF3X2VwX2NhcHMgKnJhd19jYXBzKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEzMTQtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxMzE1OnN0YXRpYyB2b2lkIGZpbGxfZXBfbGltaXRzKHN0cnVjdCB1c2JfZXAgKmVwLCBzdHJ1Y3QgdXNiX3Jhd19lcF9saW1pdHMgKmxpbWl0cylcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEzMTYte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEzMjAtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxMzIxOnN0YXRpYyBpbnQgcmF3X2lvY3RsX2Vwc19pbmZvKHN0cnVjdCByYXdfZGV2ICpkZXYsIHVuc2lnbmVkIGxvbmcgdmFsdWUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMzIyLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMzY3LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6MTM2ODpzdGF0aWMgbG9uZyByYXdfaW9jdGwoc3RydWN0IGZpbGUgKmZkLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIHZhbHVlKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTM2OS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTQzNi1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjE0Mzc6c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcmF3X2ZvcHMgPSB7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xNDM4LVx0Lm9wZW4gPVx0XHRcdHJhd19vcGVuLFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTE0NDMtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxNDQ0OnN0YXRpYyBzdHJ1Y3QgbWlzY2RldmljZSByYXdfbWlzY19kZXZpY2UgPSB7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xNDQ1LVx0Lm1pbm9yID0gTUlTQ19EWU5BTUlDX01JTk9SLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMDo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzgwNwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDQ2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGb2N1cyBTeW1ib2wgU2VsZWN0aW9uOiBBIERlZXAgRGl2ZSBpbnRvIGByYXdfZ2FkZ2V0LmNgKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEkmIzM5O20gbG9va2luZyBhdCBob3cgdG8gaWRlbnRpZnkgdGhlIGNvcnJlY3Qgc3ltYm9scyBmb3IgdGhlIGBGb2N1c1N5bWJvbHNgIGNvbmZpZ3VyYXRpb24sIGFuZCB0aGUgYHJhd19nYWRnZXQuY2AgZmlsZSBpcyBwcmVzZW50aW5nIHNvbWUgaW50ZXJlc3RpbmcgbnVhbmNlcy4gSW5pdGlhbGx5LCBJIHRob3VnaHQgdGhhdCBJIHNob3VsZCBjaG9vc2UgdGhlIG5vbi1zdGF0aWMgZnVuY3Rpb25zIG92ZXIgc3RhdGljIG9uZXMuIEhvd2V2ZXIsIEkmIzM5O3ZlIG5vdGljZWQgYSBjcnVjaWFsIGRldGFpbDogZnVuY3Rpb25zIGxpa2UgYHJhd19pb2N0bGAsIGBnYWRnZXRfYmluZGAsIGFuZCBgZ2FkZ2V0X3VuYmluZGAgYXJlICpzdGF0aWMqIGJ1dCB0aGVpciBhZGRyZXNzZXMgYXJlIHRha2VuIGJlY2F1c2UgdGhleSBhcmUgYXNzaWduZWQgdG8gZnVuY3Rpb24gcG9pbnRlcnMgaW4gdGhlIGByYXdfZm9wc2AgYW5kIGBzdHJ1Y3QgdXNiX2dhZGdldF9kcml2ZXJgIHN0cnVjdHVyZXMgcmVzcGVjdGl2ZWx5LiBUaGVyZWZvcmUsIHRoZXkgd29uJiMzOTt0IGJlIGlubGluZWQsIGFuZCB0aGVpciBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGFyZSBwZXJmZWN0bHkgdXNhYmxlIGFzIGVudHJ5IHBvaW50cy4KClRoZSBwcm9tcHQgZXhwbGljaXRseSBzYXlzIHRvIGZhdm9yIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucy4gU2luY2UgYHJhd19pb2N0bGAsIGBnYWRnZXRfYmluZGAsIGFuZCBgZ2FkZ2V0X3VuYmluZGAgYXJlIHN0YXRpYyBmdW5jdGlvbnMgYnV0ICpub3QqIGlubGluZWQsIHRoZXkgc2VlbSBsaWtlIHByaW1lIGNhbmRpZGF0ZXMuCgpOb3csIGByYXdfaW9jdGxgIGxvb2tzIGxpa2UgYSBzaWduaWZpY2FudCBtdWx0aXBsZXhlci4gVGhlIGFjdHVhbCBsb2dpYyBtb2RpZmljYXRpb25zIGFyZSBidXJpZWQgd2l0aGluIGl0cyBzdWItZnVuY3Rpb25zOiBgcmF3X3Byb2Nlc3NfZXAwX2lvYCwgYHJhd19pb2N0bF9lcF9kaXNhYmxlYCwgYW5kIGByYXdfcHJvY2Vzc19lcF9pb2AuIE15IGd1dCBmZWVsaW5nIGlzIHRoYXQgdGhvc2UgbWlnaHQgYmUgaW5saW5lZCBkdWUgdG8gdGhlaXIgdXNhZ2UsIGJ1dCB0aGV5JiMzOTtyZSBub3QgdHJpdmlhbC4gSG93ZXZlciwgc2luY2UgdGhlIGdvYWwgaXMgdG8gaWRlbnRpZnkgZGlzdGluY3QgZW50cnkgcG9pbnRzLCBJJiMzOTtsbCBzdGljayB3aXRoIGByYXdfaW9jdGxgLCBgZ2FkZ2V0X2JpbmRgLCBhbmQgYGdhZGdldF91bmJpbmRgIGZvciB0aGUgZm9jdXMuIEkmIzM5O20gcmVhc29uYWJseSBjb25maWRlbnQgdGhhdCB0aGVzZSBhcmUgdGhlIGtleSBzeW1ib2xzIHRvIHRyYWNrLgoKRmluYWxseSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMuIEkgaGF2ZSB0byBkb3VibGUtY2hlY2sgdGhhdCBgVVNCX1JBV19HQURHRVRgIGlzIHRoZSBvbmx5IGNvbmZpZyBJIG5lZWQuIEkga25vdyBgVVNCX0dBREdFVGAgaXMgZnVuZGFtZW50YWwuIEkgdGhpbmsgSSB3aWxsIG5lZWQgYFVTQl9EVU1NWV9IQ0RgIGlmIEkmIzM5O20gdGVzdGluZyB3aXRob3V0IHJlYWwgaGFyZHdhcmUsIGJ1dCBzaW5jZSB0aGlzIHBhdGNoIGlzIHdpdGhpbiBgcmF3X2dhZGdldC5jYCwgYFVTQl9SQVdfR0FER0VUYCBpcyB0aGUgY29yZSBvbmUgdGhhdCBlbmFibGVzIHRoaXMgcGFydGljdWxhciBmaWxlJiMzOTtzIGNvbXBpbGF0aW9uLiBDaGVja2luZyB0aGUgbGVnYWN5IGBNYWtlZmlsZWAgaXMgYSBnb29kIGlkZWEgdG8gY29uZmlybS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTA6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmF3X2dhZGdldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9NYWtlZmlsZT00NT1vYmotJChDT05GSUdfVVNCX0dBREdFVF9UQVJHRVQpXHQmIzQzOz0gdGNtX3VzYl9nYWRnZXQub1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9NYWtlZmlsZTo0NjpvYmotJChDT05GSUdfVVNCX1JBV19HQURHRVQpXHQmIzQzOz0gcmF3X2dhZGdldC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEwOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0ODU5CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVVNCIEdhZGdldCBDb25maWd1cmF0aW9uIENvbnVuZHJ1bSoqCgpPa2F5LCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBVU0IgcmF3IGdhZGdldCBkcml2ZXIsIGFuZCBpdCBzZWVtcyBsaWtlIHNldHRpbmcgYENPTkZJR19VU0JfUkFXX0dBREdFVGAgc2hvdWxkIGJlIGFsbCBJIG5lZWQgdG8gZ2V0IGByYXdfZ2FkZ2V0LmNgIGNvbXBpbGVkLiBUaGF0IG1ha2VzIHNlbnNlLCBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBCdXQgaG9sZCBvbi4uLiBzb21ldGhpbmcgZmVlbHMgb2ZmLiBJIHZhZ3VlbHkgcmVjYWxsIG5lZWRpbmcgYSBtb3JlIGVuY29tcGFzc2luZyBjb25maWd1cmF0aW9uIG9wdGlvbiB0byBldmVuIGdldCBpbnRvIHRoZSByZWxldmFudCBNYWtlZmlsZXMuIExldCBtZSBkb3VibGUtY2hlY2sgdGhlIGluY2x1ZGUgc3RydWN0dXJlLiBSaWdodCwgSSB0aGluayBgVVNCX0dBREdFVGAgaGFzIHNvbWV0aGluZyB0byBkbyB3aXRoIHRoYXQsIGxldCBtZSBjb25maXJtLiBMZXQmIzM5O3MgZ28gbG9vayBhdCBgZHJpdmVycy91c2IvZ2FkZ2V0L01ha2VmaWxlYCBhbmQgc2VlIHdoYXQgdGhhdCBpbmNsdWRlcy4gSG9wZWZ1bGx5LCB0aGlzIGNsZWFycyB0aGluZ3MgdXAhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEwOjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xlZ2FjeSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvTWFrZWZpbGU9MTA9bGliY29tcG9zaXRlLXlcdFx0XHQmIzQzOz0gY29tcG9zaXRlLm8gZnVuY3Rpb25zLm8gY29uZmlnZnMubyB1X2Yub1xuZHJpdmVycy91c2IvZ2FkZ2V0L01ha2VmaWxlLTExLVxuZHJpdmVycy91c2IvZ2FkZ2V0L01ha2VmaWxlOjEyOm9iai0kKENPTkZJR19VU0JfR0FER0VUKVx0JiM0Mzs9IHVkYy8gZnVuY3Rpb24vIGxlZ2FjeS9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTA6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUxOTYKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA3NTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFVTQiBSYXcgR2FkZ2V0IERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIFVTQiBSYXcgR2FkZ2V0IGRyaXZlci4gRmlyc3QgdGhpbmdzIGZpcnN0OiBJIG5lZWQgYENPTkZJR19VU0JfR0FER0VUYCB0byBldmVuIGdldCBpbnRvIHRoZSBgbGVnYWN5L2AgZGlyZWN0b3J5LCBhbmQgaXQgc2VlbXMgbGlrZSBJIGFsc28gbmVlZCBgVVNCX1JBV19HQURHRVRgIGFzIHdlbGwsIHNvIG15IGBFbmFibGVDb25maWdzYCBzaG91bGQgYmUgYFsmIzM0O1VTQl9HQURHRVQmIzM0OywgJiMzNDtVU0JfUkFXX0dBREdFVCYjMzQ7XWAuIFRoYXQgc291bmRzIHJpZ2h0LgoKTm93LCBsZXQmIzM5O3MgbmFpbCBkb3duIHRoZSBmb2N1cyBzeW1ib2xzIGZvciB0aGUgZnV6emVyLiBUaGUgcGF0Y2ggdG91Y2hlcyBgZGV2X2ZyZWVgLCBgZ2FkZ2V0X2JpbmRgLCBgZ2FkZ2V0X3VuYmluZGAsIGByYXdfaW9jdGxfZXZlbnRfZmV0Y2hgLCBgcmF3X3Byb2Nlc3NfZXAwX2lvYCwgYHJhd19pb2N0bF9lcF9kaXNhYmxlYCwgYW5kIGByYXdfcHJvY2Vzc19lcF9pb2AuIExldCYjMzk7cyB0aGluayB0aHJvdWdoIHdoaWNoIG9mIHRoZXNlIGFyZSBsaWtlbHkgdG8gYmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIuIGBnYWRnZXRfYmluZGAgYW5kIGBnYWRnZXRfdW5iaW5kYCBhcmUgZnVuY3Rpb24gcG9pbnRlcnMsIHNvIGRlZmluaXRlbHkgbm90IGlubGluZWQuIGBkZXZfZnJlZWAgZ2V0cyBwYXNzZWQgdG8gYGtyZWZfcHV0YCwgc28gYWxzbyBub3QgaW5saW5lZC4gVGhlIG90aGVycywgYHJhd19pb2N0bF9ldmVudF9mZXRjaGAsIGByYXdfcHJvY2Vzc19lcDBfaW9gLCBgcmF3X2lvY3RsX2VwX2Rpc2FibGVgLCBhbmQgYHJhd19wcm9jZXNzX2VwX2lvYCwgYXJlIGNhbGxlZCBmcm9tIGByYXdfaW9jdGxgIHZpYSBhIHN3aXRjaCBzdGF0ZW1lbnQuIFRoZXkgKmNvdWxkKiBiZSBpbmxpbmVkLCBidXQgdGhleSBsb29rIHByZXR0eSBzdWJzdGFudGlhbC4KCkdpdmVuIGFsbCB0aGF0LCBJIHRoaW5rIEkmIzM5O2xsIGluY2x1ZGUgYGdhZGdldF9iaW5kYCwgYGdhZGdldF91bmJpbmRgLCBhbmQgYHJhd19pb2N0bGAgYXMgdGhlIG1haW4gZW50cnkgcG9pbnRzLiBJIG1pZ2h0IGFsc28gaW5jbHVkZSBgcmF3X3Byb2Nlc3NfZXAwX2lvYCBhbmQgYHJhd19wcm9jZXNzX2VwX2lvYCBiZWNhdXNlIHRoZXkgc2VlbSB0byBjb250YWluIHRoZSBjb3JlIGxvZ2ljIGNoYW5nZXMuIFdhaXQsIEkgdGhpbmsgYHJhd19pb2N0bGAgaXMgdGhlIGVudHJ5IHBvaW50IGZvciBhbGwgb2YgdGhlIGlvY3Rscywgc28gdGhlIGZ1enplciB3aWxsIGJlIGZvY3VzZWQgb24gdGhhdCwgc28gSSB3aWxsIHN0aWNrIHdpdGgganVzdCBgZ2FkZ2V0X2JpbmRgLCBgZ2FkZ2V0X3VuYmluZGAsIGFuZCBgcmF3X2lvY3RsYC4KCkxldCYjMzk7cyBkb3VibGUtY2hlY2sgYW55IGRlcGVuZGVuY2llcy4gYFVTQl9HQURHRVRgIGl0c2VsZiBkb2VzbiYjMzk7dCBkZXBlbmQgb24gYW55dGhpbmcsIGJ1dCBpdCBzZWxlY3RzIGBVU0JfQ09NTU9OYCBhbmQgYE5MU2AuIEhvd2V2ZXIsIGBVU0JfR0FER0VUYCBhbmQgYFVTQl9SQVdfR0FER0VUYCBzaG91bGQgYmUgc3VmZmljaWVudC4gT2theSwganVzdCB0byBiZSB0aG9yb3VnaCwgSSYjMzk7bGwgY29uZmlybSB0aGF0IG9ubHkgYGRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jYCBpcyBiZWluZyBtb2RpZmllZC4gWWVwLCBqdXN0IHRoZSBvbmUgZmlsZS4KCk5vdywgdGltZSB0byBzdW1tYXJpemUgdGhpcyBjbGVhcmx5IGZvciB0aGUgZnV6emVyLiBUaGlzIHBhdGNoIGFkZHJlc3NlcyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBVU0IgUmF3IEdhZGdldCBkcml2ZXIuIEl0IGRlYWxzIHdpdGggVURDIHVuYmluZCBhbmQgZW5kcG9pbnQgSU8gb3BlcmF0aW9ucy4gU3BlY2lmaWNhbGx5LCBpdCBpbnRyb2R1Y2VzIGEgYHVkY191c2FnZWAgY291bnRlciBhbmQgYW4gYHVuYmluZF9jb21wbGV0aW9uYCB0byBlbnN1cmUgdGhhdCBgZ2FkZ2V0X3VuYmluZGAgd2FpdHMgZm9yIGFueSBwZW5kaW5nIElPIHRvIGZpbmlzaCBiZWZvcmUgY29tcGxldGluZyB0aGUgdW5iaW5kIHByb2Nlc3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGtleSBkcml2ZXIgdXNlZCBmb3IgVVNCIGVtdWxhdGlvbiBhbmQgZnV6emluZy4gVGhlIHBhdGNoIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuCgpTbywgaGVyZSYjMzk7cyB0aGUgaW5mb3JtYXRpb24gSSYjMzk7bSBmZWVkaW5nIHRoZSBmdXp6ZXI6CgoqICAgYFdvcnRoRnV6emluZzogdHJ1ZWAKKiAgIGBGb2N1c1N5bWJvbHM6IGdhZGdldF9iaW5kLCBnYWRnZXRfdW5iaW5kLCByYXdfaW9jdGxgCiogICBgRW5hYmxlQ29uZmlnczogVVNCX0dBREdFVCwgVVNCX1JBV19HQURHRVRgCgpBbHJpZ2h0LCBsZXQgbWUgZG91YmxlLWNoZWNrIGFib3V0IGBVU0JfRFVNTVlfSENEYC4gQWgsIHRoYXQmIzM5O3MgdGhlIGR1bW15IGhvc3QgY29udHJvbGxlciBhbmQgZGV2aWNlIGNvbnRyb2xsZXIuIEl0IGlzIHVzZWQgdG8gY29ubmVjdCB0aGUgcmF3IGdhZGdldCB0byBhIGR1bW15IGhvc3QuIFdoaWxlIGBVU0JfUkFXX0dBREdFVGAgY29tcGlsZXMgdGhlIGNvZGUsIHRvIGFjdHVhbGx5ICp0ZXN0KiBpdCwgc3l6a2FsbGVyIG5lZWRzIGEgVURDIChVU0IgRGV2aWNlIENvbnRyb2xsZXIpLiBgVVNCX0RVTU1ZX0hDRGAgcHJvdmlkZXMgdGhpcyBVREMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgaXMgYSBjb25maWcuIEdvb2QuIEkgdGhpbmsgSSYjMzk7bSBnb29kIHRvIGdvLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMDo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX0RVTU1ZX0hDRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnPTQyMj1zb3VyY2UgXCYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9jZG5zMi9LY29uZmlnXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTQyNy1cbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzo0Mjg6Y29uZmlnIFVTQl9EVU1NWV9IQ0RcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy00MjktXHR0cmlzdGF0ZSBcJiMzNDtEdW1teSBIQ0QgKERFVkVMT1BNRU5UKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMDo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjkzMQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDk2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkNoZWNraW5nIHRoZSBVU0IgRHVtbXkgSG9zdCBDb250cm9sbGVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBzZWUgdGhhdCBgVVNCX0RVTU1ZX0hDRGAgaXMgaW5kZWVkIGRlZmluZWQgd2l0aGluIHRoZSBgZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnYCBmaWxlLiBUaGF0IGNvbmZpcm1zIHdoYXQgSSB3YXMgdGhpbmtpbmcuIElmIEkgZW5hYmxlIHRoaXMsIGl0IGd1YXJhbnRlZXMgdGhhdCB0aGUgZHVtbXkgVVNCIGRldmljZSBjb250cm9sbGVyIGlzIGF2YWlsYWJsZS4gQW5kIEkga25vdyBJIG5lZWQgdGhhdCB0byByZWxpYWJseSB0cmlnZ2VyIHRoZSBgZ2FkZ2V0X2JpbmRgIGFuZCBgZ2FkZ2V0X3VuYmluZGAgZnVuY3Rpb25zIHdpdGhpbiBhIHZpcnR1YWwgbWFjaGluZSBlbnZpcm9ubWVudCB3aGVyZSBJICpkb24mIzM5O3QqIGhhdmUgYWNjZXNzIHRvIGFjdHVhbCwgcGh5c2ljYWwgVVNCIGhhcmR3YXJlLiBJdCYjMzk7cyBhIGtleSByZXF1aXJlbWVudCBmb3IgdGhlIHRlc3RpbmcgSSYjMzk7bSBkb2luZy4gTm93LCBqdXN0IHRvIGJlIHRob3JvdWdoIGFuZCB0byBkb3VibGUtY2hlY2sgbXkgYXNzdW1wdGlvbnMsIEkgc2hvdWxkIHF1aWNrbHkgcmV2aWV3IHRoZSBkZXBlbmRlbmNpZXMgb2YgYFVTQl9EVU1NWV9IQ0RgIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiB0aGVyZSBhcmUgbm8gdW5mb3Jlc2VlbiBjb25mbGljdHMgb3IgcHJlcmVxdWlzaXRlcy4gTGV0JiMzOTtzIHNlZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMDo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz0zMz1jb25maWcgVVNCX0FUOTFcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0zNC1cdHRyaXN0YXRlIFwmIzM0O0F0bWVsIEFUOTEgVVNCIERldmljZSBQb3J0XCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6MzU6XHRkZXBlbmRzIG9uIEFSQ0hfQVQ5MVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjM2Olx0ZGVwZW5kcyBvbiBPRlxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTM3LVx0aGVscFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz00Nj1jb25maWcgVVNCX0xQQzMyWFhcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy00Ny1cdHRyaXN0YXRlIFwmIzM0O0xQQzMyWFggVVNCIFBlcmlwaGVyYWwgQ29udHJvbGxlclwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjQ4Olx0ZGVwZW5kcyBvbiBBUkNIX0xQQzMyWFggfHwgQ09NUElMRV9URVNUXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6NDk6XHRkZXBlbmRzIG9uIEkyQ1xuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTUwLVx0c2VsZWN0IFVTQl9JU1AxMzAxXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnPTU4PWNvbmZpZyBVU0JfQVRNRUxfVVNCQVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTU5LVx0dHJpc3RhdGUgXCYjMzQ7QXRtZWwgVVNCQVwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjYwOlx0ZGVwZW5kcyBvbiBBUkNIX0FUOTFcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy02MS1cdGhlbHBcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9ODA9Y29uZmlnIFVTQl9CQ002M1hYX1VEQ1xuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTgxLVx0dHJpc3RhdGUgXCYjMzQ7QnJvYWRjb20gQkNNNjN4eCBQZXJpcGhlcmFsIENvbnRyb2xsZXJcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzo4MjpcdGRlcGVuZHMgb24gQkNNNjNYWFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTgzLVx0aGVscFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz05MT1jb25maWcgVVNCX0ZTTF9VU0IyXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctOTItXHR0cmlzdGF0ZSBcJiMzNDtGcmVlc2NhbGUgSGlnaHNwZWVkIFVTQiBEUiBQZXJpcGhlcmFsIENvbnRyb2xsZXJcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzo5MzpcdGRlcGVuZHMgb24gRlNMX1NPQ1xuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTk0LVx0aGVscFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz0xMDU9Y29uZmlnIFVTQl9HUl9VRENcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0xMDYtXHR0cmlzdGF0ZSBcJiMzNDtBZXJvZmxleCBHYWlzbGVyIEdSVVNCREMgVVNCIFBlcmlwaGVyYWwgQ29udHJvbGxlciBEcml2ZXJcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzoxMDc6XHRkZXBlbmRzIG9uIEhBU19ETUFcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0xMDgtXHRoZWxwXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnPTExMj1jb25maWcgVVNCX09NQVBcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0xMTMtXHR0cmlzdGF0ZSBcJiMzNDtPTUFQIFVTQiBEZXZpY2UgQ29udHJvbGxlclwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjExNDpcdGRlcGVuZHMgb24gQVJDSF9PTUFQMVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTExNS1cdGhlbHBcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9MTI2PWNvbmZpZyBVU0JfUFhBMjVYXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMTI3LVx0dHJpc3RhdGUgXCYjMzQ7UFhBIDI1eCBvciBJWFAgNHh4XCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6MTI4Olx0ZGVwZW5kcyBvbiAoQVJDSF9QWEEgXHUwMDI2XHUwMDI2IFBYQTI1eCkgfHwgQVJDSF9JWFA0WFhcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzoxMjk6XHRkZXBlbmRzIG9uIEhBU19JT01FTVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTEzMC1cdGhlbHBcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9MTQ0PWNvbmZpZyBVU0JfUFhBMjVYX1NNQUxMXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6MTQ1Olx0ZGVwZW5kcyBvbiBVU0JfUFhBMjVYXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMTQ2LVx0Ym9vbFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz0xNTI9Y29uZmlnIFVTQl9SOEE2NjU5N1xuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTE1My1cdHRyaXN0YXRlIFwmIzM0O1JlbmVzYXMgUjhBNjY1OTcgVVNCIFBlcmlwaGVyYWwgQ29udHJvbGxlclwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjE1NDpcdGRlcGVuZHMgb24gSEFTX0RNQVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTE1NS1cdGhlbHBcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9MTY0PWNvbmZpZyBVU0JfUkVORVNBU19VU0JIU19VRENcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0xNjUtXHR0cmlzdGF0ZSAmIzM5O1JlbmVzYXMgVVNCSFMgY29udHJvbGxlciYjMzk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6MTY2Olx0ZGVwZW5kcyBvbiBVU0JfUkVORVNBU19VU0JIU1xuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTE2Ny1cdGhlbHBcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9MTc2PWNvbmZpZyBVU0JfUlpWMk1fVVNCM0RSRFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTE3Ny1cdHRyaXN0YXRlICYjMzk7UmVuZXNhcyBVU0IzLjEgRFJEIGNvbnRyb2xsZXImIzM5O1xuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjE3ODpcdGRlcGVuZHMgb24gQVJDSF9SOUEwOUcwMTEgfHwgQ09NUElMRV9URVNUXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMTc5LVx0aGVscFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz0xODY9Y29uZmlnIFVTQl9SRU5FU0FTX1VTQjNcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0xODctXHR0cmlzdGF0ZSAmIzM5O1JlbmVzYXMgVVNCMy4wIFBlcmlwaGVyYWwgY29udHJvbGxlciYjMzk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6MTg4Olx0ZGVwZW5kcyBvbiBBUkNIX1JFTkVTQVMgfHwgQ09NUElMRV9URVNUXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6MTg5Olx0ZGVwZW5kcyBvbiBVU0JfUlpWMk1fVVNCM0RSRCB8fCAhVVNCX1JaVjJNX1VTQjNEUkRcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzoxOTA6XHRkZXBlbmRzIG9uIEVYVENPTlxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTE5MS1cdHNlbGVjdCBVU0JfUk9MRV9TV0lUQ0hcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9MjAwPWNvbmZpZyBVU0JfUkVORVNBU19VU0JGXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMjAxLVx0dHJpc3RhdGUgJiMzOTtSZW5lc2FzIFVTQiBGdW5jdGlvbiBjb250cm9sbGVyJiMzOTtcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzoyMDI6XHRkZXBlbmRzIG9uIEFSQ0hfUkVORVNBUyB8fCBDT01QSUxFX1RFU1RcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0yMDMtXHRoZWxwXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnPTIxMT1jb25maWcgVVNCX1BYQTI3WFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTIxMi1cdHRyaXN0YXRlIFwmIzM0O1BYQSAyN3hcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzoyMTM6XHRkZXBlbmRzIG9uIEhBU19JT01FTVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTIxNC1cdGhlbHBcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9MjI1PWNvbmZpZyBVU0JfU05QX0NPUkVcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzoyMjY6XHRkZXBlbmRzIG9uIChVU0JfQU1ENTUzNlVEQyB8fCBVU0JfU05QX1VEQ19QTEFUKVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjIyNzpcdGRlcGVuZHMgb24gSEFTX0RNQVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTIyOC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnPTI0MD1jb25maWcgVVNCX1NOUF9VRENfUExBVFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTI0MS1cdHRyaXN0YXRlIFwmIzM0O1N5bm9wc3lzIFVTQiAyLjAgRGV2aWNlIGNvbnRyb2xsZXJcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzoyNDI6XHRkZXBlbmRzIG9uIFVTQl9HQURHRVQgXHUwMDI2XHUwMDI2IE9GIFx1MDAyNlx1MDAyNiBIQVNfRE1BXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6MjQzOlx0ZGVwZW5kcyBvbiBFWFRDT04gfHwgRVhUQ09OPW5cbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0yNDQtXHRzZWxlY3QgVVNCX1NOUF9DT1JFXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnPTI1OD1jb25maWcgVVNCX002NjU5MlxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTI1OS1cdHRyaXN0YXRlIFwmIzM0O1JlbmVzYXMgTTY2NTkyIFVTQiBQZXJpcGhlcmFsIENvbnRyb2xsZXJcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzoyNjA6XHRkZXBlbmRzIG9uIEhBU19JT01FTVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTI2MS1cdGhlbHBcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9Mjc2PWNvbmZpZyBVU0JfQU1ENTUzNlVEQ1xuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTI3Ny1cdHRyaXN0YXRlIFwmIzM0O0FNRDU1MzYgVURDXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6Mjc4Olx0ZGVwZW5kcyBvbiBVU0JfUENJIFx1MDAyNlx1MDAyNiBIQVNfRE1BXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMjc5LVx0c2VsZWN0IFVTQl9TTlBfQ09SRVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz0yOTQ9Y29uZmlnIFVTQl9GU0xfUUVcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0yOTUtXHR0cmlzdGF0ZSBcJiMzNDtGcmVlc2NhbGUgUUUvQ1BNIFVTQiBEZXZpY2UgQ29udHJvbGxlclwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjI5NjpcdGRlcGVuZHMgb24gRlNMX1NPQyBcdTAwMjZcdTAwMjYgKFFVSUNDX0VOR0lORSB8fCBDUE0pXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6Mjk3Olx0ZGVwZW5kcyBvbiAhNjRCSVQgfHwgQlJPS0VOXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMjk4LVx0aGVscFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz0zMDg9Y29uZmlnIFVTQl9ORVQyMjgwXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMzA5LVx0dHJpc3RhdGUgXCYjMzQ7TmV0Q2hpcCBORVQyMjh4IC8gUExYIFVTQjN4OHhcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzozMTA6XHRkZXBlbmRzIG9uIFVTQl9QQ0lcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0zMTEtXHRoZWxwXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnPTMzMz1jb25maWcgVVNCX0dPS1VcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0zMzQtXHR0cmlzdGF0ZSBcJiMzNDtUb3NoaWJhIFRDODZDMDAxICYjMzk7R29rdS1TJiMzOTtcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzozMzU6XHRkZXBlbmRzIG9uIFVTQl9QQ0lcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0zMzYtXHRoZWxwXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnPTM0Nz1jb25maWcgVVNCX0VHMjBUXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMzQ4LVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgUVVBUksgWDEwMDAvRUcyMFQgUENIL0xBUElTIFNlbWljb25kdWN0b3IgSU9IKE1MNzIxMy9NTDc4MzEpIFVEQ1wmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjM0OTpcdGRlcGVuZHMgb24gVVNCX1BDSVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTM1MC1cdGhlbHBcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9MzcxPWNvbmZpZyBVU0JfR0FER0VUX1hJTElOWFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTM3Mi1cdHRyaXN0YXRlIFwmIzM0O1hpbGlueCBVU0IgRHJpdmVyXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6MzczOlx0ZGVwZW5kcyBvbiBIQVNfRE1BXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6Mzc0Olx0ZGVwZW5kcyBvbiBPRlxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTM3NS1cdGhlbHBcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9Mzg2PWNvbmZpZyBVU0JfTUFYMzQyMF9VRENcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0zODctXHR0cmlzdGF0ZSBcJiMzNDtNQVgzNDIwIChVU0Itb3Zlci1TUEkpIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzozODg6XHRkZXBlbmRzIG9uIFNQSVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTM4OS1cdGhlbHBcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9Mzk2PWNvbmZpZyBVU0JfVEVHUkFfWFVEQ1xuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTM5Ny1cdHRyaXN0YXRlIFwmIzM0O05WSURJQSBUZWdyYSBTdXBlcnNwZWVkIFVTQiAzLjAgRGV2aWNlIENvbnRyb2xsZXJcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzozOTg6XHRkZXBlbmRzIG9uIEFSQ0hfVEVHUkEgfHwgQ09NUElMRV9URVNUXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6Mzk5Olx0ZGVwZW5kcyBvbiBQSFlfVEVHUkFfWFVTQlxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTQwMC1cdGhlbHBcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9NDA3PWNvbmZpZyBVU0JfQVNQRUVEX1VEQ1xuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTQwOC1cdHRyaXN0YXRlIFwmIzM0O0FzcGVlZCBVREMgZHJpdmVyIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzo0MDk6XHRkZXBlbmRzIG9uIEFSQ0hfQVNQRUVEIHx8IENPTVBJTEVfVEVTVFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjQxMDpcdGRlcGVuZHMgb24gVVNCX0xJQkNPTVBPU0lURVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTQxMS1cdGhlbHBcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9NDI4PWNvbmZpZyBVU0JfRFVNTVlfSENEXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctNDI5LVx0dHJpc3RhdGUgXCYjMzQ7RHVtbXkgSENEIChERVZFTE9QTUVOVClcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzo0MzA6XHRkZXBlbmRzIG9uIFVTQj15IHx8IChVU0I9bSBcdTAwMjZcdTAwMjYgVVNCX0dBREdFVD1tKVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTQzMS1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTA6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA2MDgKCQkJCQkJCW91dHB1dDogMTkwCgkJCQkJCQl0aG91Z2h0czogNDk4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlVTQiBSYXcgR2FkZ2V0IEZ1enppbmcgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3Mgc29saWRpZnkgdGhpcyBmdXp6aW5nIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBVU0IgUmF3IEdhZGdldCBkcml2ZXIuIEkmIzM5O3ZlIGJlZW4gdGhpbmtpbmcgdGhyb3VnaCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBob3cgdG8gZW5zdXJlIHRoZSBmdXp6ZXIgZWZmZWN0aXZlbHkgaW50ZXJhY3RzIHdpdGggdGhpcyBkcml2ZXIuIFJpZ2h0IG5vdywgYFVTQl9EVU1NWV9IQ0RgIGlzIGtleS4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBpbmNsdWRlIGl0IGJlY2F1c2Ugc3l6a2FsbGVyIHVzZXMgaXQgZm9yIHRlc3RpbmcgYFVTQl9SQVdfR0FER0VUYC4gQnV0IEkgcmVhbGl6ZWQsIGBVU0JfRFVNTVlfSENEYCBpcyBib3RoIGEgVURDICphbmQqIGFuIEhDRCwgbWFraW5nIGl0IHBlcmZlY3QgZm9yIHRoaXMgdGVzdCBzZXR1cC4KCkkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGZ1enplciBjYW4gYWN0dWFsbHkgYmluZCB0aGUgZ2FkZ2V0LCBzbywgYFVTQl9EVU1NWV9IQ0RgIHdpbGwgZGVmaW5pdGVseSBiZSBpbiBgRW5hYmxlQ29uZmlnc2AuIEdpdmVuIHRoZSBkZXBlbmRlbmN5LCBgVVNCX0RVTU1ZX0hDRGAgZGVwZW5kcyBvbiBgVVNCYCwgd2hpY2ggbWVhbnMgdGhhdCBpdCBoYXMgdG8gYmUgZW5hYmxlZCBhcyB3ZWxsLiBBbHNvIGBVU0JfR0FER0VUYCBhbmQgYFVTQl9SQVdfR0FER0VUYCBuZWVkIHRvIGJlIGVuYWJsZWQgZm9yIHRoaXMgdG8gd29yay4KClRoZXJlZm9yZSwgdGhlIGxpc3Qgc2hvdWxkIGJlIGBbJiMzNDtVU0ImIzM0OywgJiMzNDtVU0JfR0FER0VUJiMzNDssICYjMzQ7VVNCX1JBV19HQURHRVQmIzM0OywgJiMzNDtVU0JfRFVNTVlfSENEJiMzNDtdYC4KCkkmIzM5O3ZlIHJldmlld2VkIHRoZSBmb2N1cyBzeW1ib2xzIGZvciB0aGUgZnV6emluZzogYGdhZGdldF9iaW5kYCwgYGdhZGdldF91bmJpbmRgLCBgcmF3X2lvY3RsYCwgYHJhd19wcm9jZXNzX2VwMF9pb2AsIGFuZCBgcmF3X3Byb2Nlc3NfZXBfaW9gLiBUaGVzZSBsb29rIHNvbGlkIGFuZCBjb3ZlciB0aGUgY3JpdGljYWwgZW50cnkgcG9pbnRzIHRvIHRoZSBkcml2ZXImIzM5O3MgZnVuY3Rpb25hbGl0eSwgZm9jdXNpbmcgb24gdGhlIGNvcmUgYmluZC91bmJpbmQgb3BlcmF0aW9ucywgYW5kIElPIGhhbmRsaW5nLgoKVGhlIHJlYXNvbmluZyBpcyBzb3VuZDogdGhlIHBhdGNoIGFkZHJlc3NlcyBhIHJhY2UgY29uZGl0aW9uIGJldHdlZW4gVURDIHVuYmluZCBhbmQgZW5kcG9pbnQgSU8gaW4gdGhlIFVTQiBSYXcgR2FkZ2V0IGRyaXZlciwgd2hpY2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGNvcmUgZHJpdmVyIHVzZWQgZm9yIFVTQiBlbXVsYXRpb24uIEl0JiMzOTtzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4KClRoaXMgc2hvdWxkIGJlIGEgcm9idXN0IGNvbmZpZ3VyYXRpb24uIEkmIzM5O2xsIHNldCB0aGUgcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTA6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQiYjMzQ7LAogICAgJiMzNDtVU0JfR0FER0VUJiMzNDssCiAgICAmIzM0O1VTQl9SQVdfR0FER0VUJiMzNDssCiAgICAmIzM0O1VTQl9EVU1NWV9IQ0QmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtnYWRnZXRfYmluZCYjMzQ7LAogICAgJiMzNDtnYWRnZXRfdW5iaW5kJiMzNDssCiAgICAmIzM0O3Jhd19pb2N0bCYjMzQ7LAogICAgJiMzNDtyYXdfcHJvY2Vzc19lcDBfaW8mIzM0OywKICAgICYjMzQ7cmF3X3Byb2Nlc3NfZXBfaW8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgVVNCIFJhdyBHYWRnZXQgZHJpdmVyIGJldHdlZW4gVURDIHVuYmluZCBhbmQgZW5kcG9pbnQgSU8gb3BlcmF0aW9ucy4gSXQgaW50cm9kdWNlcyBhIGB1ZGNfdXNhZ2VgIGNvdW50ZXIgYW5kIGFuIGB1bmJpbmRfY29tcGxldGlvbmAgdG8gZW5zdXJlIHRoYXQgYGdhZGdldF91bmJpbmRgIHdhaXRzIGZvciBhbnkgcGVuZGluZyBJTyB0byBmaW5pc2ggYmVmb3JlIGNvbXBsZXRpbmcgdGhlIHVuYmluZCBwcm9jZXNzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGRyaXZlciB1c2VkIGZvciBVU0IgZW11bGF0aW9uIGFuZCBmdXp6aW5nLCBhbmQgaXQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VVNCJiMzNDssCiAgICAmIzM0O1VTQl9HQURHRVQmIzM0OywKICAgICYjMzQ7VVNCX1JBV19HQURHRVQmIzM0OywKICAgICYjMzQ7VVNCX0RVTU1ZX0hDRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2dhZGdldF9iaW5kJiMzNDssCiAgICAmIzM0O2dhZGdldF91bmJpbmQmIzM0OywKICAgICYjMzQ7cmF3X2lvY3RsJiMzNDssCiAgICAmIzM0O3Jhd19wcm9jZXNzX2VwMF9pbyYjMzQ7LAogICAgJiMzNDtyYXdfcHJvY2Vzc19lcF9pbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBVU0IgUmF3IEdhZGdldCBkcml2ZXIgYmV0d2VlbiBVREMgdW5iaW5kIGFuZCBlbmRwb2ludCBJTyBvcGVyYXRpb25zLiBJdCBpbnRyb2R1Y2VzIGEgYHVkY191c2FnZWAgY291bnRlciBhbmQgYW4gYHVuYmluZF9jb21wbGV0aW9uYCB0byBlbnN1cmUgdGhhdCBgZ2FkZ2V0X3VuYmluZGAgd2FpdHMgZm9yIGFueSBwZW5kaW5nIElPIHRvIGZpbmlzaCBiZWZvcmUgY29tcGxldGluZyB0aGUgdW5iaW5kIHByb2Nlc3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGNvcmUgZHJpdmVyIHVzZWQgZm9yIFVTQiBlbXVsYXRpb24gYW5kIGZ1enppbmcsIGFuZCBpdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjlUMTA6NDA6MDMuNjI5MzkyNzM4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTU5MjI3MjM1OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVNCXCIsXG4gICAgXCJVU0JfR0FER0VUXCIsXG4gICAgXCJVU0JfUkFXX0dBREdFVFwiLFxuICAgIFwiVVNCX0RVTU1ZX0hDRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImdhZGdldF9iaW5kXCIsXG4gICAgXCJnYWRnZXRfdW5iaW5kXCIsXG4gICAgXCJyYXdfaW9jdGxcIixcbiAgICBcInJhd19wcm9jZXNzX2VwMF9pb1wiLFxuICAgIFwicmF3X3Byb2Nlc3NfZXBfaW9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBVU0IgUmF3IEdhZGdldCBkcml2ZXIgYmV0d2VlbiBVREMgdW5iaW5kIGFuZCBlbmRwb2ludCBJTyBvcGVyYXRpb25zLiBJdCBpbnRyb2R1Y2VzIGEgYHVkY191c2FnZWAgY291bnRlciBhbmQgYW4gYHVuYmluZF9jb21wbGV0aW9uYCB0byBlbnN1cmUgdGhhdCBgZ2FkZ2V0X3VuYmluZGAgd2FpdHMgZm9yIGFueSBwZW5kaW5nIElPIHRvIGZpbmlzaCBiZWZvcmUgY29tcGxldGluZyB0aGUgdW5iaW5kIHByb2Nlc3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGNvcmUgZHJpdmVyIHVzZWQgZm9yIFVTQiBlbXVsYXRpb24gYW5kIGZ1enppbmcsIGFuZCBpdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMDo0MDowMy42Mjk0MDMxMThaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MDg4OTQ3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDM3Nzc4NDJmZjg4NDE5MzY3NjRiMTU2NDM5YmY0Y2ZjZjBjNmYzZmVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMjkgMTA6NDA6MDIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuY1xcbmluZGV4IDRmZWJmOGRhYzdjYTUuLmJjZTRmOGQzZmE2M2YgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmNcXG4rKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuY1xcbkBAIC0xNzUsNiArMTc1LDggQEAgc3RydWN0IHJhd19kZXYge1xcbiBcXHRib29sXFx0XFx0XFx0XFx0Z2FkZ2V0X3JlZ2lzdGVyZWQ7XFxuIFxcdHN0cnVjdCB1c2JfZ2FkZ2V0XFx0XFx0KmdhZGdldDtcXG4gXFx0c3RydWN0IHVzYl9yZXF1ZXN0XFx0XFx0KnJlcTtcXG4rXFx0aW50XFx0XFx0XFx0XFx0dWRjX3VzYWdlO1xcbitcXHRzdHJ1Y3QgY29tcGxldGlvblxcdFxcdCp1bmJpbmRfY29tcGxldGlvbjtcXG4gXFx0Ym9vbFxcdFxcdFxcdFxcdGVwMF9pbl9wZW5kaW5nO1xcbiBcXHRib29sXFx0XFx0XFx0XFx0ZXAwX291dF9wZW5kaW5nO1xcbiBcXHRib29sXFx0XFx0XFx0XFx0ZXAwX3VyYl9xdWV1ZWQ7XFxuQEAgLTIwNSwyNyArMjA3LDEzIEBAIHN0YXRpYyBzdHJ1Y3QgcmF3X2RldiAqZGV2X25ldyh2b2lkKVxcbiBzdGF0aWMgdm9pZCBkZXZfZnJlZShzdHJ1Y3Qga3JlZiAqa3JlZilcXG4ge1xcbiBcXHRzdHJ1Y3QgcmF3X2RldiAqZGV2ID0gY29udGFpbmVyX29mKGtyZWYsIHN0cnVjdCByYXdfZGV2LCBjb3VudCk7XFxuLVxcdGludCBpO1xcbiBcXG4gXFx0a2ZyZWUoZGV2LVxcdTAwM2V1ZGNfbmFtZSk7XFxuIFxcdGtmcmVlKGRldi1cXHUwMDNlZHJpdmVyLnVkY19uYW1lKTtcXG4gXFx0a2ZyZWUoZGV2LVxcdTAwM2Vkcml2ZXIuZHJpdmVyLm5hbWUpO1xcbiBcXHRpZiAoZGV2LVxcdTAwM2Vkcml2ZXJfaWRfbnVtYmVyIFxcdTAwM2U9IDApXFxuIFxcdFxcdGlkYV9mcmVlKFxcdTAwMjZkcml2ZXJfaWRfbnVtYmVycywgZGV2LVxcdTAwM2Vkcml2ZXJfaWRfbnVtYmVyKTtcXG4tXFx0aWYgKGRldi1cXHUwMDNlcmVxKSB7XFxuLVxcdFxcdGlmIChkZXYtXFx1MDAzZWVwMF91cmJfcXVldWVkKVxcbi1cXHRcXHRcXHR1c2JfZXBfZGVxdWV1ZShkZXYtXFx1MDAzZWdhZGdldC1cXHUwMDNlZXAwLCBkZXYtXFx1MDAzZXJlcSk7XFxuLVxcdFxcdHVzYl9lcF9mcmVlX3JlcXVlc3QoZGV2LVxcdTAwM2VnYWRnZXQtXFx1MDAzZWVwMCwgZGV2LVxcdTAwM2VyZXEpO1xcbi1cXHR9XFxuIFxcdHJhd19ldmVudF9xdWV1ZV9kZXN0cm95KFxcdTAwMjZkZXYtXFx1MDAzZXF1ZXVlKTtcXG4tXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGRldi1cXHUwMDNlZXBzX251bTsgaSsrKSB7XFxuLVxcdFxcdGlmIChkZXYtXFx1MDAzZWVwc1tpXS5zdGF0ZSA9PSBTVEFURV9FUF9ESVNBQkxFRClcXG4tXFx0XFx0XFx0Y29udGludWU7XFxuLVxcdFxcdHVzYl9lcF9kaXNhYmxlKGRldi1cXHUwMDNlZXBzW2ldLmVwKTtcXG4tXFx0XFx0dXNiX2VwX2ZyZWVfcmVxdWVzdChkZXYtXFx1MDAzZWVwc1tpXS5lcCwgZGV2LVxcdTAwM2VlcHNbaV0ucmVxKTtcXG4tXFx0XFx0a2ZyZWUoZGV2LVxcdTAwM2VlcHNbaV0uZXAtXFx1MDAzZWRlc2MpO1xcbi1cXHRcXHRkZXYtXFx1MDAzZWVwc1tpXS5zdGF0ZSA9IFNUQVRFX0VQX0RJU0FCTEVEO1xcbi1cXHR9XFxuIFxcdGtmcmVlKGRldik7XFxuIH1cXG4gXFxuQEAgLTMxNiw2ICszMDQsMTEgQEAgc3RhdGljIGludCBnYWRnZXRfYmluZChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0LFxcbiBcXHRyZXQgPSByYXdfcXVldWVfZXZlbnQoZGV2LCBVU0JfUkFXX0VWRU5UX0NPTk5FQ1QsIDAsIE5VTEwpO1xcbiBcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbiBcXHRcXHRkZXZfZXJyKFxcdTAwMjZnYWRnZXQtXFx1MDAzZWRldiwgXFxcImZhaWxlZCB0byBxdWV1ZSBjb25uZWN0IGV2ZW50XFxcXG5cXFwiKTtcXG4rXFx0XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmRldi1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbitcXHRcXHRkZXYtXFx1MDAzZWdhZGdldCA9IE5VTEw7XFxuK1xcdFxcdGRldi1cXHUwMDNlcmVxID0gTlVMTDtcXG4rXFx0XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2ZGV2LVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuK1xcdFxcdHVzYl9lcF9mcmVlX3JlcXVlc3QoZ2FkZ2V0LVxcdTAwM2VlcDAsIHJlcSk7XFxuIFxcdFxcdHNldF9nYWRnZXRfZGF0YShnYWRnZXQsIE5VTEwpO1xcbiBcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXHR9XFxuQEAgLTMyOCw2ICszMjEsNDcgQEAgc3RhdGljIGludCBnYWRnZXRfYmluZChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0LFxcbiBzdGF0aWMgdm9pZCBnYWRnZXRfdW5iaW5kKHN0cnVjdCB1c2JfZ2FkZ2V0ICpnYWRnZXQpXFxuIHtcXG4gXFx0c3RydWN0IHJhd19kZXYgKmRldiA9IGdldF9nYWRnZXRfZGF0YShnYWRnZXQpO1xcbitcXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbitcXHRERUNMQVJFX0NPTVBMRVRJT05fT05TVEFDSyhkb25lKTtcXG4rXFx0aW50IGk7XFxuK1xcbitcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2ZGV2LVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuK1xcdGRldi1cXHUwMDNlc3RhdGUgPSBTVEFURV9ERVZfRkFJTEVEO1xcbitcXG4rXFx0aWYgKGRldi1cXHUwMDNlZXAwX3VyYl9xdWV1ZWQpIHtcXG4rXFx0XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2ZGV2LVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuK1xcdFxcdHVzYl9lcF9kZXF1ZXVlKGdhZGdldC1cXHUwMDNlZXAwLCBkZXYtXFx1MDAzZXJlcSk7XFxuK1xcdFxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZkZXYtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4rXFx0fVxcbitcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgZGV2LVxcdTAwM2VlcHNfbnVtOyBpKyspIHtcXG4rXFx0XFx0aWYgKGRldi1cXHUwMDNlZXBzW2ldLnN0YXRlID09IFNUQVRFX0VQX0VOQUJMRUQgXFx1MDAyNlxcdTAwMjYgZGV2LVxcdTAwM2VlcHNbaV0udXJiX3F1ZXVlZCkge1xcbitcXHRcXHRcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZkZXYtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4rXFx0XFx0XFx0dXNiX2VwX2RlcXVldWUoZGV2LVxcdTAwM2VlcHNbaV0uZXAsIGRldi1cXHUwMDNlZXBzW2ldLnJlcSk7XFxuK1xcdFxcdFxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZkZXYtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4rXFx0XFx0fVxcbitcXHR9XFxuK1xcbitcXHRpZiAoZGV2LVxcdTAwM2V1ZGNfdXNhZ2UgXFx1MDAzZSAwKSB7XFxuK1xcdFxcdGRldi1cXHUwMDNldW5iaW5kX2NvbXBsZXRpb24gPSBcXHUwMDI2ZG9uZTtcXG4rXFx0XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2ZGV2LVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuK1xcdFxcdHdhaXRfZm9yX2NvbXBsZXRpb24oXFx1MDAyNmRvbmUpO1xcbitcXHRcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2ZGV2LVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuK1xcdH1cXG4rXFx0ZGV2LVxcdTAwM2VnYWRnZXQgPSBOVUxMO1xcbitcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZkZXYtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4rXFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBkZXYtXFx1MDAzZWVwc19udW07IGkrKykge1xcbitcXHRcXHRpZiAoZGV2LVxcdTAwM2VlcHNbaV0uc3RhdGUgPT0gU1RBVEVfRVBfRElTQUJMRUQpXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXHRcXHR1c2JfZXBfZGlzYWJsZShkZXYtXFx1MDAzZWVwc1tpXS5lcCk7XFxuK1xcdFxcdHVzYl9lcF9mcmVlX3JlcXVlc3QoZGV2LVxcdTAwM2VlcHNbaV0uZXAsIGRldi1cXHUwMDNlZXBzW2ldLnJlcSk7XFxuK1xcdFxcdGtmcmVlKGRldi1cXHUwMDNlZXBzW2ldLmVwLVxcdTAwM2VkZXNjKTtcXG4rXFx0XFx0ZGV2LVxcdTAwM2VlcHNbaV0uc3RhdGUgPSBTVEFURV9FUF9ESVNBQkxFRDtcXG4rXFx0fVxcbitcXHRpZiAoZGV2LVxcdTAwM2VyZXEpIHtcXG4rXFx0XFx0dXNiX2VwX2ZyZWVfcmVxdWVzdChnYWRnZXQtXFx1MDAzZWVwMCwgZGV2LVxcdTAwM2VyZXEpO1xcbitcXHRcXHRkZXYtXFx1MDAzZXJlcSA9IE5VTEw7XFxuK1xcdH1cXG4gXFxuIFxcdHNldF9nYWRnZXRfZGF0YShnYWRnZXQsIE5VTEwpO1xcbiBcXHQvKiBNYXRjaGVzIGtyZWZfZ2V0KCkgaW4gZ2FkZ2V0X2JpbmQoKS4gKi9cXG5AQCAtNjM3LDExICs2NzEsMTEgQEAgc3RhdGljIGludCByYXdfaW9jdGxfZXZlbnRfZmV0Y2goc3RydWN0IHJhd19kZXYgKmRldiwgdW5zaWduZWQgbG9uZyB2YWx1ZSlcXG4gXFxuIFxcdGV2ZW50ID0gcmF3X2V2ZW50X3F1ZXVlX2ZldGNoKFxcdTAwMjZkZXYtXFx1MDAzZXF1ZXVlKTtcXG4gXFx0aWYgKFBUUl9FUlIoZXZlbnQpID09IC1FSU5UUikge1xcbi1cXHRcXHRkZXZfZGJnKFxcdTAwMjZkZXYtXFx1MDAzZWdhZGdldC1cXHUwMDNlZGV2LCBcXFwiZXZlbnQgZmV0Y2hpbmcgaW50ZXJydXB0ZWRcXFxcblxcXCIpO1xcbitcXHRcXHRkZXZfZGJnKGRldi1cXHUwMDNlZGV2LCBcXFwiZXZlbnQgZmV0Y2hpbmcgaW50ZXJydXB0ZWRcXFxcblxcXCIpO1xcbiBcXHRcXHRyZXR1cm4gLUVJTlRSO1xcbiBcXHR9XFxuIFxcdGlmIChJU19FUlIoZXZlbnQpKSB7XFxuLVxcdFxcdGRldl9lcnIoXFx1MDAyNmRldi1cXHUwMDNlZ2FkZ2V0LVxcdTAwM2VkZXYsIFxcXCJmYWlsZWQgdG8gZmV0Y2ggZXZlbnRcXFxcblxcXCIpO1xcbitcXHRcXHRkZXZfZXJyKGRldi1cXHUwMDNlZGV2LCBcXFwiZmFpbGVkIHRvIGZldGNoIGV2ZW50XFxcXG5cXFwiKTtcXG4gXFx0XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmRldi1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbiBcXHRcXHRkZXYtXFx1MDAzZXN0YXRlID0gU1RBVEVfREVWX0ZBSUxFRDtcXG4gXFx0XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2ZGV2LVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuQEAgLTcyMywyMiArNzU3LDM3IEBAIHN0YXRpYyBpbnQgcmF3X3Byb2Nlc3NfZXAwX2lvKHN0cnVjdCByYXdfZGV2ICpkZXYsIHN0cnVjdCB1c2JfcmF3X2VwX2lvICppbyxcXG4gXFx0ZGV2LVxcdTAwM2VyZXEtXFx1MDAzZWxlbmd0aCA9IGlvLVxcdTAwM2VsZW5ndGg7XFxuIFxcdGRldi1cXHUwMDNlcmVxLVxcdTAwM2V6ZXJvID0gdXNiX3Jhd19pb19mbGFnc196ZXJvKGlvLVxcdTAwM2VmbGFncyk7XFxuIFxcdGRldi1cXHUwMDNlZXAwX3VyYl9xdWV1ZWQgPSB0cnVlO1xcbitcXHRkZXYtXFx1MDAzZXVkY191c2FnZSsrO1xcbiBcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZkZXYtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4gXFxuIFxcdHJldCA9IHVzYl9lcF9xdWV1ZShkZXYtXFx1MDAzZWdhZGdldC1cXHUwMDNlZXAwLCBkZXYtXFx1MDAzZXJlcSwgR0ZQX0tFUk5FTCk7XFxuIFxcdGlmIChyZXQpIHtcXG4tXFx0XFx0ZGV2X2VycihcXHUwMDI2ZGV2LVxcdTAwM2VnYWRnZXQtXFx1MDAzZWRldixcXG4tXFx0XFx0XFx0XFx0XFxcImZhaWwsIHVzYl9lcF9xdWV1ZSByZXR1cm5lZCAlZFxcXFxuXFxcIiwgcmV0KTtcXG4rXFx0XFx0ZGV2X2VycihkZXYtXFx1MDAzZWRldiwgXFxcImZhaWwsIHVzYl9lcF9xdWV1ZSByZXR1cm5lZCAlZFxcXFxuXFxcIiwgcmV0KTtcXG4gXFx0XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmRldi1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbitcXHRcXHRkZXYtXFx1MDAzZXVkY191c2FnZS0tO1xcbitcXHRcXHRpZiAoIWRldi1cXHUwMDNldWRjX3VzYWdlIFxcdTAwMjZcXHUwMDI2IGRldi1cXHUwMDNldW5iaW5kX2NvbXBsZXRpb24pXFxuK1xcdFxcdFxcdGNvbXBsZXRlKGRldi1cXHUwMDNldW5iaW5kX2NvbXBsZXRpb24pO1xcbiBcXHRcXHRnb3RvIG91dF9xdWV1ZV9mYWlsZWQ7XFxuIFxcdH1cXG4gXFxuIFxcdHJldCA9IHdhaXRfZm9yX2NvbXBsZXRpb25faW50ZXJydXB0aWJsZShcXHUwMDI2ZGV2LVxcdTAwM2VlcDBfZG9uZSk7XFxuIFxcdGlmIChyZXQpIHtcXG4tXFx0XFx0ZGV2X2RiZyhcXHUwMDI2ZGV2LVxcdTAwM2VnYWRnZXQtXFx1MDAzZWRldiwgXFxcIndhaXQgaW50ZXJydXB0ZWRcXFxcblxcXCIpO1xcbi1cXHRcXHR1c2JfZXBfZGVxdWV1ZShkZXYtXFx1MDAzZWdhZGdldC1cXHUwMDNlZXAwLCBkZXYtXFx1MDAzZXJlcSk7XFxuLVxcdFxcdHdhaXRfZm9yX2NvbXBsZXRpb24oXFx1MDAyNmRldi1cXHUwMDNlZXAwX2RvbmUpO1xcbitcXHRcXHRkZXZfZGJnKGRldi1cXHUwMDNlZGV2LCBcXFwid2FpdCBpbnRlcnJ1cHRlZFxcXFxuXFxcIik7XFxuIFxcdFxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZkZXYtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4rXFx0XFx0aWYgKGRldi1cXHUwMDNlc3RhdGUgIT0gU1RBVEVfREVWX0ZBSUxFRCBcXHUwMDI2XFx1MDAyNiBkZXYtXFx1MDAzZWdhZGdldCkge1xcbitcXHRcXHRcXHRzdHJ1Y3QgdXNiX2VwICplcDAgPSBkZXYtXFx1MDAzZWdhZGdldC1cXHUwMDNlZXAwO1xcbitcXG4rXFx0XFx0XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2ZGV2LVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuK1xcbitcXHRcXHRcXHR1c2JfZXBfZGVxdWV1ZShlcDAsIGRldi1cXHUwMDNlcmVxKTtcXG4rXFx0XFx0XFx0d2FpdF9mb3JfY29tcGxldGlvbihcXHUwMDI2ZGV2LVxcdTAwM2VlcDBfZG9uZSk7XFxuK1xcbitcXHRcXHRcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2ZGV2LVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuK1xcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmRldi1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbitcXHRcXHRcXHR3YWl0X2Zvcl9jb21wbGV0aW9uKFxcdTAwMjZkZXYtXFx1MDAzZWVwMF9kb25lKTtcXG4rXFx0XFx0XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmRldi1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbitcXHRcXHR9XFxuIFxcdFxcdGlmIChkZXYtXFx1MDAzZWVwMF9zdGF0dXMgPT0gLUVDT05OUkVTRVQpXFxuIFxcdFxcdFxcdGRldi1cXHUwMDNlZXAwX3N0YXR1cyA9IC1FSU5UUjtcXG4gXFx0XFx0Z290byBvdXRfaW50ZXJydXB0ZWQ7XFxuQEAgLTc1MCw2ICs3OTksOSBAQCBzdGF0aWMgaW50IHJhd19wcm9jZXNzX2VwMF9pbyhzdHJ1Y3QgcmF3X2RldiAqZGV2LCBzdHJ1Y3QgdXNiX3Jhd19lcF9pbyAqaW8sXFxuIFxcdHJldCA9IGRldi1cXHUwMDNlZXAwX3N0YXR1cztcXG4gb3V0X3F1ZXVlX2ZhaWxlZDpcXG4gXFx0ZGV2LVxcdTAwM2VlcDBfdXJiX3F1ZXVlZCA9IGZhbHNlO1xcbitcXHRkZXYtXFx1MDAzZXVkY191c2FnZS0tO1xcbitcXHRpZiAoIWRldi1cXHUwMDNldWRjX3VzYWdlIFxcdTAwMjZcXHUwMDI2IGRldi1cXHUwMDNldW5iaW5kX2NvbXBsZXRpb24pXFxuK1xcdFxcdGNvbXBsZXRlKGRldi1cXHUwMDNldW5iaW5kX2NvbXBsZXRpb24pO1xcbiBvdXRfdW5sb2NrOlxcbiBcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZkZXYtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4gXFx0cmV0dXJuIHJldDtcXG5AQCAtOTU2LDExICsxMDA4LDE1IEBAIHN0YXRpYyBpbnQgcmF3X2lvY3RsX2VwX2Rpc2FibGUoc3RydWN0IHJhd19kZXYgKmRldiwgdW5zaWduZWQgbG9uZyB2YWx1ZSlcXG4gXFx0XFx0Z290byBvdXRfdW5sb2NrO1xcbiBcXHR9XFxuIFxcdGRldi1cXHUwMDNlZXBzW2ldLmRpc2FibGluZyA9IHRydWU7XFxuK1xcdGRldi1cXHUwMDNldWRjX3VzYWdlKys7XFxuIFxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmRldi1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbiBcXG4gXFx0dXNiX2VwX2Rpc2FibGUoZGV2LVxcdTAwM2VlcHNbaV0uZXApO1xcbiBcXG4gXFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmRldi1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbitcXHRkZXYtXFx1MDAzZXVkY191c2FnZS0tO1xcbitcXHRpZiAoIWRldi1cXHUwMDNldWRjX3VzYWdlIFxcdTAwMjZcXHUwMDI2IGRldi1cXHUwMDNldW5iaW5kX2NvbXBsZXRpb24pXFxuK1xcdFxcdGNvbXBsZXRlKGRldi1cXHUwMDNldW5iaW5kX2NvbXBsZXRpb24pO1xcbiBcXHR1c2JfZXBfZnJlZV9yZXF1ZXN0KGRldi1cXHUwMDNlZXBzW2ldLmVwLCBkZXYtXFx1MDAzZWVwc1tpXS5yZXEpO1xcbiBcXHRrZnJlZShkZXYtXFx1MDAzZWVwc1tpXS5lcC1cXHUwMDNlZGVzYyk7XFxuIFxcdGRldi1cXHUwMDNlZXBzW2ldLnN0YXRlID0gU1RBVEVfRVBfRElTQUJMRUQ7XFxuQEAgLTExMDksMjIgKzExNjUsMzcgQEAgc3RhdGljIGludCByYXdfcHJvY2Vzc19lcF9pbyhzdHJ1Y3QgcmF3X2RldiAqZGV2LCBzdHJ1Y3QgdXNiX3Jhd19lcF9pbyAqaW8sXFxuIFxcdGVwLVxcdTAwM2VyZXEtXFx1MDAzZWxlbmd0aCA9IGlvLVxcdTAwM2VsZW5ndGg7XFxuIFxcdGVwLVxcdTAwM2VyZXEtXFx1MDAzZXplcm8gPSB1c2JfcmF3X2lvX2ZsYWdzX3plcm8oaW8tXFx1MDAzZWZsYWdzKTtcXG4gXFx0ZXAtXFx1MDAzZXVyYl9xdWV1ZWQgPSB0cnVlO1xcbitcXHRkZXYtXFx1MDAzZXVkY191c2FnZSsrO1xcbiBcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZkZXYtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4gXFxuIFxcdHJldCA9IHVzYl9lcF9xdWV1ZShlcC1cXHUwMDNlZXAsIGVwLVxcdTAwM2VyZXEsIEdGUF9LRVJORUwpO1xcbiBcXHRpZiAocmV0KSB7XFxuLVxcdFxcdGRldl9lcnIoXFx1MDAyNmRldi1cXHUwMDNlZ2FkZ2V0LVxcdTAwM2VkZXYsXFxuLVxcdFxcdFxcdFxcdFxcXCJmYWlsLCB1c2JfZXBfcXVldWUgcmV0dXJuZWQgJWRcXFxcblxcXCIsIHJldCk7XFxuK1xcdFxcdGRldl9lcnIoZGV2LVxcdTAwM2VkZXYsIFxcXCJmYWlsLCB1c2JfZXBfcXVldWUgcmV0dXJuZWQgJWRcXFxcblxcXCIsIHJldCk7XFxuIFxcdFxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZkZXYtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4rXFx0XFx0ZGV2LVxcdTAwM2V1ZGNfdXNhZ2UtLTtcXG4rXFx0XFx0aWYgKCFkZXYtXFx1MDAzZXVkY191c2FnZSBcXHUwMDI2XFx1MDAyNiBkZXYtXFx1MDAzZXVuYmluZF9jb21wbGV0aW9uKVxcbitcXHRcXHRcXHRjb21wbGV0ZShkZXYtXFx1MDAzZXVuYmluZF9jb21wbGV0aW9uKTtcXG4gXFx0XFx0Z290byBvdXRfcXVldWVfZmFpbGVkO1xcbiBcXHR9XFxuIFxcbiBcXHRyZXQgPSB3YWl0X2Zvcl9jb21wbGV0aW9uX2ludGVycnVwdGlibGUoXFx1MDAyNmRvbmUpO1xcbiBcXHRpZiAocmV0KSB7XFxuLVxcdFxcdGRldl9kYmcoXFx1MDAyNmRldi1cXHUwMDNlZ2FkZ2V0LVxcdTAwM2VkZXYsIFxcXCJ3YWl0IGludGVycnVwdGVkXFxcXG5cXFwiKTtcXG4tXFx0XFx0dXNiX2VwX2RlcXVldWUoZXAtXFx1MDAzZWVwLCBlcC1cXHUwMDNlcmVxKTtcXG4tXFx0XFx0d2FpdF9mb3JfY29tcGxldGlvbihcXHUwMDI2ZG9uZSk7XFxuK1xcdFxcdGRldl9kYmcoZGV2LVxcdTAwM2VkZXYsIFxcXCJ3YWl0IGludGVycnVwdGVkXFxcXG5cXFwiKTtcXG4gXFx0XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmRldi1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbitcXHRcXHRpZiAoZGV2LVxcdTAwM2VzdGF0ZSAhPSBTVEFURV9ERVZfRkFJTEVEIFxcdTAwMjZcXHUwMDI2IGRldi1cXHUwMDNlZ2FkZ2V0KSB7XFxuK1xcdFxcdFxcdHN0cnVjdCB1c2JfZXAgKnVzYl9lcCA9IGVwLVxcdTAwM2VlcDtcXG4rXFxuK1xcdFxcdFxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmRldi1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbitcXG4rXFx0XFx0XFx0dXNiX2VwX2RlcXVldWUodXNiX2VwLCBlcC1cXHUwMDNlcmVxKTtcXG4rXFx0XFx0XFx0d2FpdF9mb3JfY29tcGxldGlvbihcXHUwMDI2ZG9uZSk7XFxuK1xcbitcXHRcXHRcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2ZGV2LVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuK1xcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmRldi1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbitcXHRcXHRcXHR3YWl0X2Zvcl9jb21wbGV0aW9uKFxcdTAwMjZkb25lKTtcXG4rXFx0XFx0XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmRldi1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbitcXHRcXHR9XFxuIFxcdFxcdGlmIChlcC1cXHUwMDNlc3RhdHVzID09IC1FQ09OTlJFU0VUKVxcbiBcXHRcXHRcXHRlcC1cXHUwMDNlc3RhdHVzID0gLUVJTlRSO1xcbiBcXHRcXHRnb3RvIG91dF9pbnRlcnJ1cHRlZDtcXG5AQCAtMTEzNiw2ICsxMjA3LDkgQEAgc3RhdGljIGludCByYXdfcHJvY2Vzc19lcF9pbyhzdHJ1Y3QgcmF3X2RldiAqZGV2LCBzdHJ1Y3QgdXNiX3Jhd19lcF9pbyAqaW8sXFxuIFxcdHJldCA9IGVwLVxcdTAwM2VzdGF0dXM7XFxuIG91dF9xdWV1ZV9mYWlsZWQ6XFxuIFxcdGVwLVxcdTAwM2V1cmJfcXVldWVkID0gZmFsc2U7XFxuK1xcdGRldi1cXHUwMDNldWRjX3VzYWdlLS07XFxuK1xcdGlmICghZGV2LVxcdTAwM2V1ZGNfdXNhZ2UgXFx1MDAyNlxcdTAwMjYgZGV2LVxcdTAwM2V1bmJpbmRfY29tcGxldGlvbilcXG4rXFx0XFx0Y29tcGxldGUoZGV2LVxcdTAwM2V1bmJpbmRfY29tcGxldGlvbik7XFxuIG91dF91bmxvY2s6XFxuIFxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmRldi1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbiBcXHRyZXR1cm4gcmV0O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMDo0MDowNC4yMDI0MDgxMDZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo5NTM0OTY5NDg3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVU0JcIixcbiAgICBcIlVTQl9HQURHRVRcIixcbiAgICBcIlVTQl9SQVdfR0FER0VUXCIsXG4gICAgXCJVU0JfRFVNTVlfSENEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZ2FkZ2V0X2JpbmRcIixcbiAgICBcImdhZGdldF91bmJpbmRcIixcbiAgICBcInJhd19pb2N0bFwiLFxuICAgIFwicmF3X3Byb2Nlc3NfZXAwX2lvXCIsXG4gICAgXCJyYXdfcHJvY2Vzc19lcF9pb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIFVTQiBSYXcgR2FkZ2V0IGRyaXZlciBiZXR3ZWVuIFVEQyB1bmJpbmQgYW5kIGVuZHBvaW50IElPIG9wZXJhdGlvbnMuIEl0IGludHJvZHVjZXMgYSBgdWRjX3VzYWdlYCBjb3VudGVyIGFuZCBhbiBgdW5iaW5kX2NvbXBsZXRpb25gIHRvIGVuc3VyZSB0aGF0IGBnYWRnZXRfdW5iaW5kYCB3YWl0cyBmb3IgYW55IHBlbmRpbmcgSU8gdG8gZmluaXNoIGJlZm9yZSBjb21wbGV0aW5nIHRoZSB1bmJpbmQgcHJvY2Vzcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgY29yZSBkcml2ZXIgdXNlZCBmb3IgVVNCIGVtdWxhdGlvbiBhbmQgZnV6emluZywgYW5kIGl0IGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDM3Nzc4NDJmZjg4NDE5MzY3NjRiMTU2NDM5YmY0Y2ZjZjBjNmYzZmVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAyOSAxMDo0MDowMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmNcbmluZGV4IDRmZWJmOGRhYzdjYTUuLmJjZTRmOGQzZmE2M2YgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuY1xuKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmNcbkBAIC0xNzUsNiArMTc1LDggQEAgc3RydWN0IHJhd19kZXYge1xuIFx0Ym9vbFx0XHRcdFx0Z2FkZ2V0X3JlZ2lzdGVyZWQ7XG4gXHRzdHJ1Y3QgdXNiX2dhZGdldFx0XHQqZ2FkZ2V0O1xuIFx0c3RydWN0IHVzYl9yZXF1ZXN0XHRcdCpyZXE7XG4rXHRpbnRcdFx0XHRcdHVkY191c2FnZTtcbitcdHN0cnVjdCBjb21wbGV0aW9uXHRcdCp1bmJpbmRfY29tcGxldGlvbjtcbiBcdGJvb2xcdFx0XHRcdGVwMF9pbl9wZW5kaW5nO1xuIFx0Ym9vbFx0XHRcdFx0ZXAwX291dF9wZW5kaW5nO1xuIFx0Ym9vbFx0XHRcdFx0ZXAwX3VyYl9xdWV1ZWQ7XG5AQCAtMjA1LDI3ICsyMDcsMTMgQEAgc3RhdGljIHN0cnVjdCByYXdfZGV2ICpkZXZfbmV3KHZvaWQpXG4gc3RhdGljIHZvaWQgZGV2X2ZyZWUoc3RydWN0IGtyZWYgKmtyZWYpXG4ge1xuIFx0c3RydWN0IHJhd19kZXYgKmRldiA9IGNvbnRhaW5lcl9vZihrcmVmLCBzdHJ1Y3QgcmF3X2RldiwgY291bnQpO1xuLVx0aW50IGk7XG4gXG4gXHRrZnJlZShkZXYtXHUwMDNldWRjX25hbWUpO1xuIFx0a2ZyZWUoZGV2LVx1MDAzZWRyaXZlci51ZGNfbmFtZSk7XG4gXHRrZnJlZShkZXYtXHUwMDNlZHJpdmVyLmRyaXZlci5uYW1lKTtcbiBcdGlmIChkZXYtXHUwMDNlZHJpdmVyX2lkX251bWJlciBcdTAwM2U9IDApXG4gXHRcdGlkYV9mcmVlKFx1MDAyNmRyaXZlcl9pZF9udW1iZXJzLCBkZXYtXHUwMDNlZHJpdmVyX2lkX251bWJlcik7XG4tXHRpZiAoZGV2LVx1MDAzZXJlcSkge1xuLVx0XHRpZiAoZGV2LVx1MDAzZWVwMF91cmJfcXVldWVkKVxuLVx0XHRcdHVzYl9lcF9kZXF1ZXVlKGRldi1cdTAwM2VnYWRnZXQtXHUwMDNlZXAwLCBkZXYtXHUwMDNlcmVxKTtcbi1cdFx0dXNiX2VwX2ZyZWVfcmVxdWVzdChkZXYtXHUwMDNlZ2FkZ2V0LVx1MDAzZWVwMCwgZGV2LVx1MDAzZXJlcSk7XG4tXHR9XG4gXHRyYXdfZXZlbnRfcXVldWVfZGVzdHJveShcdTAwMjZkZXYtXHUwMDNlcXVldWUpO1xuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgZGV2LVx1MDAzZWVwc19udW07IGkrKykge1xuLVx0XHRpZiAoZGV2LVx1MDAzZWVwc1tpXS5zdGF0ZSA9PSBTVEFURV9FUF9ESVNBQkxFRClcbi1cdFx0XHRjb250aW51ZTtcbi1cdFx0dXNiX2VwX2Rpc2FibGUoZGV2LVx1MDAzZWVwc1tpXS5lcCk7XG4tXHRcdHVzYl9lcF9mcmVlX3JlcXVlc3QoZGV2LVx1MDAzZWVwc1tpXS5lcCwgZGV2LVx1MDAzZWVwc1tpXS5yZXEpO1xuLVx0XHRrZnJlZShkZXYtXHUwMDNlZXBzW2ldLmVwLVx1MDAzZWRlc2MpO1xuLVx0XHRkZXYtXHUwMDNlZXBzW2ldLnN0YXRlID0gU1RBVEVfRVBfRElTQUJMRUQ7XG4tXHR9XG4gXHRrZnJlZShkZXYpO1xuIH1cbiBcbkBAIC0zMTYsNiArMzA0LDExIEBAIHN0YXRpYyBpbnQgZ2FkZ2V0X2JpbmQoc3RydWN0IHVzYl9nYWRnZXQgKmdhZGdldCxcbiBcdHJldCA9IHJhd19xdWV1ZV9ldmVudChkZXYsIFVTQl9SQVdfRVZFTlRfQ09OTkVDVCwgMCwgTlVMTCk7XG4gXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4gXHRcdGRldl9lcnIoXHUwMDI2Z2FkZ2V0LVx1MDAzZWRldiwgXCJmYWlsZWQgdG8gcXVldWUgY29ubmVjdCBldmVudFxcblwiKTtcbitcdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbitcdFx0ZGV2LVx1MDAzZWdhZGdldCA9IE5VTEw7XG4rXHRcdGRldi1cdTAwM2VyZXEgPSBOVUxMO1xuK1x0XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmRldi1cdTAwM2Vsb2NrLCBmbGFncyk7XG4rXHRcdHVzYl9lcF9mcmVlX3JlcXVlc3QoZ2FkZ2V0LVx1MDAzZWVwMCwgcmVxKTtcbiBcdFx0c2V0X2dhZGdldF9kYXRhKGdhZGdldCwgTlVMTCk7XG4gXHRcdHJldHVybiByZXQ7XG4gXHR9XG5AQCAtMzI4LDYgKzMyMSw0NyBAQCBzdGF0aWMgaW50IGdhZGdldF9iaW5kKHN0cnVjdCB1c2JfZ2FkZ2V0ICpnYWRnZXQsXG4gc3RhdGljIHZvaWQgZ2FkZ2V0X3VuYmluZChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0KVxuIHtcbiBcdHN0cnVjdCByYXdfZGV2ICpkZXYgPSBnZXRfZ2FkZ2V0X2RhdGEoZ2FkZ2V0KTtcbitcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4rXHRERUNMQVJFX0NPTVBMRVRJT05fT05TVEFDSyhkb25lKTtcbitcdGludCBpO1xuK1xuK1x0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbitcdGRldi1cdTAwM2VzdGF0ZSA9IFNUQVRFX0RFVl9GQUlMRUQ7XG4rXG4rXHRpZiAoZGV2LVx1MDAzZWVwMF91cmJfcXVldWVkKSB7XG4rXHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbitcdFx0dXNiX2VwX2RlcXVldWUoZ2FkZ2V0LVx1MDAzZWVwMCwgZGV2LVx1MDAzZXJlcSk7XG4rXHRcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmRldi1cdTAwM2Vsb2NrLCBmbGFncyk7XG4rXHR9XG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBkZXYtXHUwMDNlZXBzX251bTsgaSsrKSB7XG4rXHRcdGlmIChkZXYtXHUwMDNlZXBzW2ldLnN0YXRlID09IFNUQVRFX0VQX0VOQUJMRUQgXHUwMDI2XHUwMDI2IGRldi1cdTAwM2VlcHNbaV0udXJiX3F1ZXVlZCkge1xuK1x0XHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbitcdFx0XHR1c2JfZXBfZGVxdWV1ZShkZXYtXHUwMDNlZXBzW2ldLmVwLCBkZXYtXHUwMDNlZXBzW2ldLnJlcSk7XG4rXHRcdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbitcdFx0fVxuK1x0fVxuK1xuK1x0aWYgKGRldi1cdTAwM2V1ZGNfdXNhZ2UgXHUwMDNlIDApIHtcbitcdFx0ZGV2LVx1MDAzZXVuYmluZF9jb21wbGV0aW9uID0gXHUwMDI2ZG9uZTtcbitcdFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZkZXYtXHUwMDNlbG9jaywgZmxhZ3MpO1xuK1x0XHR3YWl0X2Zvcl9jb21wbGV0aW9uKFx1MDAyNmRvbmUpO1xuK1x0XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZkZXYtXHUwMDNlbG9jaywgZmxhZ3MpO1xuK1x0fVxuK1x0ZGV2LVx1MDAzZWdhZGdldCA9IE5VTEw7XG4rXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmRldi1cdTAwM2Vsb2NrLCBmbGFncyk7XG4rXG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBkZXYtXHUwMDNlZXBzX251bTsgaSsrKSB7XG4rXHRcdGlmIChkZXYtXHUwMDNlZXBzW2ldLnN0YXRlID09IFNUQVRFX0VQX0RJU0FCTEVEKVxuK1x0XHRcdGNvbnRpbnVlO1xuK1x0XHR1c2JfZXBfZGlzYWJsZShkZXYtXHUwMDNlZXBzW2ldLmVwKTtcbitcdFx0dXNiX2VwX2ZyZWVfcmVxdWVzdChkZXYtXHUwMDNlZXBzW2ldLmVwLCBkZXYtXHUwMDNlZXBzW2ldLnJlcSk7XG4rXHRcdGtmcmVlKGRldi1cdTAwM2VlcHNbaV0uZXAtXHUwMDNlZGVzYyk7XG4rXHRcdGRldi1cdTAwM2VlcHNbaV0uc3RhdGUgPSBTVEFURV9FUF9ESVNBQkxFRDtcbitcdH1cbitcdGlmIChkZXYtXHUwMDNlcmVxKSB7XG4rXHRcdHVzYl9lcF9mcmVlX3JlcXVlc3QoZ2FkZ2V0LVx1MDAzZWVwMCwgZGV2LVx1MDAzZXJlcSk7XG4rXHRcdGRldi1cdTAwM2VyZXEgPSBOVUxMO1xuK1x0fVxuIFxuIFx0c2V0X2dhZGdldF9kYXRhKGdhZGdldCwgTlVMTCk7XG4gXHQvKiBNYXRjaGVzIGtyZWZfZ2V0KCkgaW4gZ2FkZ2V0X2JpbmQoKS4gKi9cbkBAIC02MzcsMTEgKzY3MSwxMSBAQCBzdGF0aWMgaW50IHJhd19pb2N0bF9ldmVudF9mZXRjaChzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxuIFxuIFx0ZXZlbnQgPSByYXdfZXZlbnRfcXVldWVfZmV0Y2goXHUwMDI2ZGV2LVx1MDAzZXF1ZXVlKTtcbiBcdGlmIChQVFJfRVJSKGV2ZW50KSA9PSAtRUlOVFIpIHtcbi1cdFx0ZGV2X2RiZyhcdTAwMjZkZXYtXHUwMDNlZ2FkZ2V0LVx1MDAzZWRldiwgXCJldmVudCBmZXRjaGluZyBpbnRlcnJ1cHRlZFxcblwiKTtcbitcdFx0ZGV2X2RiZyhkZXYtXHUwMDNlZGV2LCBcImV2ZW50IGZldGNoaW5nIGludGVycnVwdGVkXFxuXCIpO1xuIFx0XHRyZXR1cm4gLUVJTlRSO1xuIFx0fVxuIFx0aWYgKElTX0VSUihldmVudCkpIHtcbi1cdFx0ZGV2X2VycihcdTAwMjZkZXYtXHUwMDNlZ2FkZ2V0LVx1MDAzZWRldiwgXCJmYWlsZWQgdG8gZmV0Y2ggZXZlbnRcXG5cIik7XG4rXHRcdGRldl9lcnIoZGV2LVx1MDAzZWRldiwgXCJmYWlsZWQgdG8gZmV0Y2ggZXZlbnRcXG5cIik7XG4gXHRcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmRldi1cdTAwM2Vsb2NrLCBmbGFncyk7XG4gXHRcdGRldi1cdTAwM2VzdGF0ZSA9IFNUQVRFX0RFVl9GQUlMRUQ7XG4gXHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbkBAIC03MjMsMjIgKzc1NywzNyBAQCBzdGF0aWMgaW50IHJhd19wcm9jZXNzX2VwMF9pbyhzdHJ1Y3QgcmF3X2RldiAqZGV2LCBzdHJ1Y3QgdXNiX3Jhd19lcF9pbyAqaW8sXG4gXHRkZXYtXHUwMDNlcmVxLVx1MDAzZWxlbmd0aCA9IGlvLVx1MDAzZWxlbmd0aDtcbiBcdGRldi1cdTAwM2VyZXEtXHUwMDNlemVybyA9IHVzYl9yYXdfaW9fZmxhZ3NfemVybyhpby1cdTAwM2VmbGFncyk7XG4gXHRkZXYtXHUwMDNlZXAwX3VyYl9xdWV1ZWQgPSB0cnVlO1xuK1x0ZGV2LVx1MDAzZXVkY191c2FnZSsrO1xuIFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZkZXYtXHUwMDNlbG9jaywgZmxhZ3MpO1xuIFxuIFx0cmV0ID0gdXNiX2VwX3F1ZXVlKGRldi1cdTAwM2VnYWRnZXQtXHUwMDNlZXAwLCBkZXYtXHUwMDNlcmVxLCBHRlBfS0VSTkVMKTtcbiBcdGlmIChyZXQpIHtcbi1cdFx0ZGV2X2VycihcdTAwMjZkZXYtXHUwMDNlZ2FkZ2V0LVx1MDAzZWRldixcbi1cdFx0XHRcdFwiZmFpbCwgdXNiX2VwX3F1ZXVlIHJldHVybmVkICVkXFxuXCIsIHJldCk7XG4rXHRcdGRldl9lcnIoZGV2LVx1MDAzZWRldiwgXCJmYWlsLCB1c2JfZXBfcXVldWUgcmV0dXJuZWQgJWRcXG5cIiwgcmV0KTtcbiBcdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbitcdFx0ZGV2LVx1MDAzZXVkY191c2FnZS0tO1xuK1x0XHRpZiAoIWRldi1cdTAwM2V1ZGNfdXNhZ2UgXHUwMDI2XHUwMDI2IGRldi1cdTAwM2V1bmJpbmRfY29tcGxldGlvbilcbitcdFx0XHRjb21wbGV0ZShkZXYtXHUwMDNldW5iaW5kX2NvbXBsZXRpb24pO1xuIFx0XHRnb3RvIG91dF9xdWV1ZV9mYWlsZWQ7XG4gXHR9XG4gXG4gXHRyZXQgPSB3YWl0X2Zvcl9jb21wbGV0aW9uX2ludGVycnVwdGlibGUoXHUwMDI2ZGV2LVx1MDAzZWVwMF9kb25lKTtcbiBcdGlmIChyZXQpIHtcbi1cdFx0ZGV2X2RiZyhcdTAwMjZkZXYtXHUwMDNlZ2FkZ2V0LVx1MDAzZWRldiwgXCJ3YWl0IGludGVycnVwdGVkXFxuXCIpO1xuLVx0XHR1c2JfZXBfZGVxdWV1ZShkZXYtXHUwMDNlZ2FkZ2V0LVx1MDAzZWVwMCwgZGV2LVx1MDAzZXJlcSk7XG4tXHRcdHdhaXRfZm9yX2NvbXBsZXRpb24oXHUwMDI2ZGV2LVx1MDAzZWVwMF9kb25lKTtcbitcdFx0ZGV2X2RiZyhkZXYtXHUwMDNlZGV2LCBcIndhaXQgaW50ZXJydXB0ZWRcXG5cIik7XG4gXHRcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmRldi1cdTAwM2Vsb2NrLCBmbGFncyk7XG4rXHRcdGlmIChkZXYtXHUwMDNlc3RhdGUgIT0gU1RBVEVfREVWX0ZBSUxFRCBcdTAwMjZcdTAwMjYgZGV2LVx1MDAzZWdhZGdldCkge1xuK1x0XHRcdHN0cnVjdCB1c2JfZXAgKmVwMCA9IGRldi1cdTAwM2VnYWRnZXQtXHUwMDNlZXAwO1xuK1xuK1x0XHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbitcbitcdFx0XHR1c2JfZXBfZGVxdWV1ZShlcDAsIGRldi1cdTAwM2VyZXEpO1xuK1x0XHRcdHdhaXRfZm9yX2NvbXBsZXRpb24oXHUwMDI2ZGV2LVx1MDAzZWVwMF9kb25lKTtcbitcbitcdFx0XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZkZXYtXHUwMDNlbG9jaywgZmxhZ3MpO1xuK1x0XHR9IGVsc2Uge1xuK1x0XHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbitcdFx0XHR3YWl0X2Zvcl9jb21wbGV0aW9uKFx1MDAyNmRldi1cdTAwM2VlcDBfZG9uZSk7XG4rXHRcdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbitcdFx0fVxuIFx0XHRpZiAoZGV2LVx1MDAzZWVwMF9zdGF0dXMgPT0gLUVDT05OUkVTRVQpXG4gXHRcdFx0ZGV2LVx1MDAzZWVwMF9zdGF0dXMgPSAtRUlOVFI7XG4gXHRcdGdvdG8gb3V0X2ludGVycnVwdGVkO1xuQEAgLTc1MCw2ICs3OTksOSBAQCBzdGF0aWMgaW50IHJhd19wcm9jZXNzX2VwMF9pbyhzdHJ1Y3QgcmF3X2RldiAqZGV2LCBzdHJ1Y3QgdXNiX3Jhd19lcF9pbyAqaW8sXG4gXHRyZXQgPSBkZXYtXHUwMDNlZXAwX3N0YXR1cztcbiBvdXRfcXVldWVfZmFpbGVkOlxuIFx0ZGV2LVx1MDAzZWVwMF91cmJfcXVldWVkID0gZmFsc2U7XG4rXHRkZXYtXHUwMDNldWRjX3VzYWdlLS07XG4rXHRpZiAoIWRldi1cdTAwM2V1ZGNfdXNhZ2UgXHUwMDI2XHUwMDI2IGRldi1cdTAwM2V1bmJpbmRfY29tcGxldGlvbilcbitcdFx0Y29tcGxldGUoZGV2LVx1MDAzZXVuYmluZF9jb21wbGV0aW9uKTtcbiBvdXRfdW5sb2NrOlxuIFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZkZXYtXHUwMDNlbG9jaywgZmxhZ3MpO1xuIFx0cmV0dXJuIHJldDtcbkBAIC05NTYsMTEgKzEwMDgsMTUgQEAgc3RhdGljIGludCByYXdfaW9jdGxfZXBfZGlzYWJsZShzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxuIFx0XHRnb3RvIG91dF91bmxvY2s7XG4gXHR9XG4gXHRkZXYtXHUwMDNlZXBzW2ldLmRpc2FibGluZyA9IHRydWU7XG4rXHRkZXYtXHUwMDNldWRjX3VzYWdlKys7XG4gXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmRldi1cdTAwM2Vsb2NrLCBmbGFncyk7XG4gXG4gXHR1c2JfZXBfZGlzYWJsZShkZXYtXHUwMDNlZXBzW2ldLmVwKTtcbiBcbiBcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmRldi1cdTAwM2Vsb2NrLCBmbGFncyk7XG4rXHRkZXYtXHUwMDNldWRjX3VzYWdlLS07XG4rXHRpZiAoIWRldi1cdTAwM2V1ZGNfdXNhZ2UgXHUwMDI2XHUwMDI2IGRldi1cdTAwM2V1bmJpbmRfY29tcGxldGlvbilcbitcdFx0Y29tcGxldGUoZGV2LVx1MDAzZXVuYmluZF9jb21wbGV0aW9uKTtcbiBcdHVzYl9lcF9mcmVlX3JlcXVlc3QoZGV2LVx1MDAzZWVwc1tpXS5lcCwgZGV2LVx1MDAzZWVwc1tpXS5yZXEpO1xuIFx0a2ZyZWUoZGV2LVx1MDAzZWVwc1tpXS5lcC1cdTAwM2VkZXNjKTtcbiBcdGRldi1cdTAwM2VlcHNbaV0uc3RhdGUgPSBTVEFURV9FUF9ESVNBQkxFRDtcbkBAIC0xMTA5LDIyICsxMTY1LDM3IEBAIHN0YXRpYyBpbnQgcmF3X3Byb2Nlc3NfZXBfaW8oc3RydWN0IHJhd19kZXYgKmRldiwgc3RydWN0IHVzYl9yYXdfZXBfaW8gKmlvLFxuIFx0ZXAtXHUwMDNlcmVxLVx1MDAzZWxlbmd0aCA9IGlvLVx1MDAzZWxlbmd0aDtcbiBcdGVwLVx1MDAzZXJlcS1cdTAwM2V6ZXJvID0gdXNiX3Jhd19pb19mbGFnc196ZXJvKGlvLVx1MDAzZWZsYWdzKTtcbiBcdGVwLVx1MDAzZXVyYl9xdWV1ZWQgPSB0cnVlO1xuK1x0ZGV2LVx1MDAzZXVkY191c2FnZSsrO1xuIFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZkZXYtXHUwMDNlbG9jaywgZmxhZ3MpO1xuIFxuIFx0cmV0ID0gdXNiX2VwX3F1ZXVlKGVwLVx1MDAzZWVwLCBlcC1cdTAwM2VyZXEsIEdGUF9LRVJORUwpO1xuIFx0aWYgKHJldCkge1xuLVx0XHRkZXZfZXJyKFx1MDAyNmRldi1cdTAwM2VnYWRnZXQtXHUwMDNlZGV2LFxuLVx0XHRcdFx0XCJmYWlsLCB1c2JfZXBfcXVldWUgcmV0dXJuZWQgJWRcXG5cIiwgcmV0KTtcbitcdFx0ZGV2X2VycihkZXYtXHUwMDNlZGV2LCBcImZhaWwsIHVzYl9lcF9xdWV1ZSByZXR1cm5lZCAlZFxcblwiLCByZXQpO1xuIFx0XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZkZXYtXHUwMDNlbG9jaywgZmxhZ3MpO1xuK1x0XHRkZXYtXHUwMDNldWRjX3VzYWdlLS07XG4rXHRcdGlmICghZGV2LVx1MDAzZXVkY191c2FnZSBcdTAwMjZcdTAwMjYgZGV2LVx1MDAzZXVuYmluZF9jb21wbGV0aW9uKVxuK1x0XHRcdGNvbXBsZXRlKGRldi1cdTAwM2V1bmJpbmRfY29tcGxldGlvbik7XG4gXHRcdGdvdG8gb3V0X3F1ZXVlX2ZhaWxlZDtcbiBcdH1cbiBcbiBcdHJldCA9IHdhaXRfZm9yX2NvbXBsZXRpb25faW50ZXJydXB0aWJsZShcdTAwMjZkb25lKTtcbiBcdGlmIChyZXQpIHtcbi1cdFx0ZGV2X2RiZyhcdTAwMjZkZXYtXHUwMDNlZ2FkZ2V0LVx1MDAzZWRldiwgXCJ3YWl0IGludGVycnVwdGVkXFxuXCIpO1xuLVx0XHR1c2JfZXBfZGVxdWV1ZShlcC1cdTAwM2VlcCwgZXAtXHUwMDNlcmVxKTtcbi1cdFx0d2FpdF9mb3JfY29tcGxldGlvbihcdTAwMjZkb25lKTtcbitcdFx0ZGV2X2RiZyhkZXYtXHUwMDNlZGV2LCBcIndhaXQgaW50ZXJydXB0ZWRcXG5cIik7XG4gXHRcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmRldi1cdTAwM2Vsb2NrLCBmbGFncyk7XG4rXHRcdGlmIChkZXYtXHUwMDNlc3RhdGUgIT0gU1RBVEVfREVWX0ZBSUxFRCBcdTAwMjZcdTAwMjYgZGV2LVx1MDAzZWdhZGdldCkge1xuK1x0XHRcdHN0cnVjdCB1c2JfZXAgKnVzYl9lcCA9IGVwLVx1MDAzZWVwO1xuK1xuK1x0XHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbitcbitcdFx0XHR1c2JfZXBfZGVxdWV1ZSh1c2JfZXAsIGVwLVx1MDAzZXJlcSk7XG4rXHRcdFx0d2FpdF9mb3JfY29tcGxldGlvbihcdTAwMjZkb25lKTtcbitcbitcdFx0XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZkZXYtXHUwMDNlbG9jaywgZmxhZ3MpO1xuK1x0XHR9IGVsc2Uge1xuK1x0XHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbitcdFx0XHR3YWl0X2Zvcl9jb21wbGV0aW9uKFx1MDAyNmRvbmUpO1xuK1x0XHRcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmRldi1cdTAwM2Vsb2NrLCBmbGFncyk7XG4rXHRcdH1cbiBcdFx0aWYgKGVwLVx1MDAzZXN0YXR1cyA9PSAtRUNPTk5SRVNFVClcbiBcdFx0XHRlcC1cdTAwM2VzdGF0dXMgPSAtRUlOVFI7XG4gXHRcdGdvdG8gb3V0X2ludGVycnVwdGVkO1xuQEAgLTExMzYsNiArMTIwNyw5IEBAIHN0YXRpYyBpbnQgcmF3X3Byb2Nlc3NfZXBfaW8oc3RydWN0IHJhd19kZXYgKmRldiwgc3RydWN0IHVzYl9yYXdfZXBfaW8gKmlvLFxuIFx0cmV0ID0gZXAtXHUwMDNlc3RhdHVzO1xuIG91dF9xdWV1ZV9mYWlsZWQ6XG4gXHRlcC1cdTAwM2V1cmJfcXVldWVkID0gZmFsc2U7XG4rXHRkZXYtXHUwMDNldWRjX3VzYWdlLS07XG4rXHRpZiAoIWRldi1cdTAwM2V1ZGNfdXNhZ2UgXHUwMDI2XHUwMDI2IGRldi1cdTAwM2V1bmJpbmRfY29tcGxldGlvbilcbitcdFx0Y29tcGxldGUoZGV2LVx1MDAzZXVuYmluZF9jb21wbGV0aW9uKTtcbiBvdXRfdW5sb2NrOlxuIFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZkZXYtXHUwMDNlbG9jaywgZmxhZ3MpO1xuIFx0cmV0dXJuIHJldDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEwOjQwOjA0LjIwMjQxMDQ2NloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcwNjM5MjMxODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgVVNCIFJhdyBHYWRnZXQgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCBmb3IgYGRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jYC4gVGhpcyBpcyB0aGUgVVNCIFJhdyBHYWRnZXQgZHJpdmVyLCB3aGljaCByaW5ncyBhIGJlbGwg4oCTIGl0J3MgdGhlIG9uZSB3ZSB1c2UgZm9yIGVtdWxhdGluZyBVU0IgZGV2aWNlcyBmcm9tIHVzZXJzcGFjZSwgc3BlY2lmaWNhbGx5IGNydWNpYWwgZm9yIHN5emthbGxlcidzIGZ1enppbmcgZWZmb3J0cy4gVGhlIHBhdGNoIHNlZW1zIHRvIGJlIGFkZGluZyBgdWRjX3VzYWdlYCBhbmQgYHVuYmluZF9jb21wbGV0aW9uYCB0byBgc3RydWN0IHJhd19kZXZgLiBJdCdzIHR3ZWFraW5nIGBnYWRnZXRfdW5iaW5kYCB0byBlbnN1cmUgaXQgcHJvcGVybHkgd2FpdHMgZm9yIFVEQyB1c2FnZSB0byBkcm9wIGJlZm9yZSB1bmJpbmRpbmcgYW5kIGNsZWFucyB1cCBVUkJzIGNvcnJlY3RseS4gSSBzZWUgbW9kaWZpY2F0aW9ucyBpbiBgcmF3X3Byb2Nlc3NfZXAwX2lvYCwgYHJhd19pb2N0bF9lcF9kaXNhYmxlYCwgYW5kIGByYXdfcHJvY2Vzc19lcF9pb2AgcmVsYXRlZCB0byB0cmFja2luZyBgdWRjX3VzYWdlYCBhbmQgY29tcGxldGluZyBgdW5iaW5kX2NvbXBsZXRpb25gLiBQbHVzLCBzb21lIGZpeGVzIGZvciB0aG9zZSBgZGV2X2VycmAgYW5kIGBkZXZfZGJnYCBjYWxscywgbWFraW5nIHN1cmUgdGhleSB1c2UgYGRldi1cdTAwM2VkZXZgIGluc3RlYWQgb2YgYGRldi1cdTAwM2VnYWRnZXQtXHUwMDNlZGV2YCBiZWNhdXNlIGBkZXYtXHUwMDNlZ2FkZ2V0YCBjYW4gYmUgbnVsbCBkdXJpbmcgdGhlIHVuYmluZCBwcm9jZXNzLlxuXG5IYW5nIG9uLi4uIHRoZSByZWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBpcyByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR0NFLiBUaGlzIGlzIGNyaXRpY2FsIGZvciBmdXp6aW5nISBPaCwgcmlnaHQsIHRoZSBVU0IgUmF3IEdhZGdldCBpcyAqZGVzaWduZWQqIGZvciBwcmVjaXNlbHkgdGhpcyB1c2UgY2FzZS4gU3l6a2FsbGVyIGxldmVyYWdlcyBpdCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZSBwcm9tcHQsIHJlbWVtYmVyLCBpcyBhc2tpbmcgbWUgdG8gcmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKmV2ZW4qIHdpdGggc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUuIEJ1dCB0aGlzICppcyogc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUhIFRoZSBwcm9tcHQgc2F5cyBcImV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUsXCIgbWVhbmluZyB0aGF0IGlmIGl0IGlzIGltcG9zc2libGUgdG8gcmVhY2ggKmV2ZW4gd2l0aCogc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUsIHRoZW4gaXQncyBmYWxzZS4gQnV0IHRoaXMgKmlzKiB0aGUgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUsIHNvIGl0IGlzIHJlYWNoYWJsZS5cblxuU28gdGhpcyBsb29rcyBwcm9taXNpbmcuIEkgbmVlZCB0byB0YWtlIGEgcXVpY2sgbG9vayBhdCB0aGUgS2NvbmZpZyBmb3IgYGRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jYCB0byBjb25maXJtIGl0IGlzIGVuYWJsZWQsIGJ1dCBmcm9tIHRoZSBzb3VuZCBvZiBpdCwgdGhpcyBsb29rcyBsaWtlIGEgZGVmaW5pdGUgXCJXb3J0aEZ1enppbmc9dHJ1ZS5cIlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjAxLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDE1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTA6NDA6MTEuMjY2MzM5MTk3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMTY1NjM4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyYXdfZ2FkZ2V0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9NTE2PWNvbmZpZyBVU0JfUkFXX0dBREdFVFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTUyOS1cXHQgIFNheSBcXFwieVxcXCIgdG8gbGluayB0aGUgZHJpdmVyIHN0YXRpY2FsbHksIG9yIFxcXCJtXFxcIiB0byBidWlsZCBhXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjUzMDpcXHQgIGR5bmFtaWNhbGx5IGxpbmtlZCBtb2R1bGUgY2FsbGVkIFxcXCJyYXdfZ2FkZ2V0XFxcIi5cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNTMxLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMDo0MDoxMS4zOTgwMDIzNzRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDc4Mzc4NzAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIFVTQiBSYXcgR2FkZ2V0IENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBzbyB3ZSdyZSB0YWxraW5nIGFib3V0IGBDT05GSUdfVVNCX1JBV19HQURHRVRgLiBUaGF0J3MgdGhlIGtleSBjb25maWd1cmF0aW9uIHNldHRpbmcgd2UncmUgZm9jdXNlZCBvbiBoZXJlLiBNeSBmaXJzdCBpbnN0aW5jdCwgYXMgYWx3YXlzLCBpcyB0byBkaXZlIGludG8gdGhlIGRlcGVuZGVuY2llcy4gVW5kZXJzdGFuZGluZyAqaG93KiBgQ09ORklHX1VTQl9SQVdfR0FER0VUYCByZWxhdGVzIHRvIG90aGVyIGtlcm5lbCBjb21wb25lbnRzIGlzIGFic29sdXRlbHkgY3J1Y2lhbC4gV2UgbmVlZCB0byB0cmFjZSBpdHMgY29ubmVjdGlvbnMgdG8gb3RoZXIgVVNCIGdhZGdldCBkcml2ZXJzLCB0aGUgY29yZSBVU0Igc3Vic3lzdGVtLCBhbmQgcG90ZW50aWFsbHkgZXZlbiBkZXZpY2UgdHJlZSBjb25maWd1cmF0aW9uLiBLbm93aW5nIGl0cyBkZXBlbmRlbmNpZXMgd2lsbCB0ZWxsIG1lIGV2ZXJ5dGhpbmcgZnJvbSB3aGF0IGl0IG5lZWRzIHRvIGZ1bmN0aW9uIHRvIHRoZSBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzIG9mIGVuYWJsaW5nIG9yIGRpc2FibGluZyBpdC4gVGhpcyB3aWxsIGluZm9ybSBteSBhc3Nlc3NtZW50IG9mIGl0cyBzdWl0YWJpbGl0eSBmb3IgdGhlIGludGVuZGVkIHVzZS1jYXNlIGFuZCBpZiBlbmFibGluZyBpdCB3aWxsIGNhdXNlIGFueSBjb25mbGljdHMgd2l0aCBvdGhlciBzeXN0ZW0gY29uZmlndXJhdGlvbnMuIE15IGJyYWluIGlzIGFscmVhZHkgcnVubmluZyB0aHJvdWdoIHBvc3NpYmxlIGRlcGVuZGVuY3kgcGF0aHMgYW5kIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMgZm9yIG15IGN1cnJlbnQgcHJvamVjdC4gTGV0J3MgZGlnIGluIGFuZCBzZWUgd2hhdCB3ZSBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MjQyLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTA6NDA6MTQuODc2Mzg1MTY2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNjQwNTU2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX1JBV19HQURHRVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz01MDE9Y29uZmlnIFVTQl9HX1dFQkNBTVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTUxNS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6NTE2OmNvbmZpZyBVU0JfUkFXX0dBREdFVFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy01MTctXFx0dHJpc3RhdGUgXFxcIlVTQiBSYXcgR2FkZ2V0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMDo0MDoxNC45OTI4MDA3NDNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTkyNTYwOTAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBLY29uZmlnIC0gTGluZSA1MTYqKlxuXG5Pa2F5LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gQmFzZWQgb24gdGhlIGN1cnJlbnQgdHJhamVjdG9yeSBvZiB0aGlzIGludmVzdGlnYXRpb24sIEkgbmVlZCBhIGRlZXBlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGlzIGZlYXR1cmUgaXMgY29udHJvbGxlZCBhbmQgY29uZmlndXJlZC4gTGluZSA1MTYgaW4gdGhlIEtjb25maWcgZmlsZSBoYXMgY29tZSB1cCBhcyBhIGxpa2VseSBwb2ludCBvZiBpbnRlcmVzdCwgc28gSSdtIGdvaW5nIHRvIHN0YXJ0IHRoZXJlLiBJJ20gbm90IGp1c3QgbG9va2luZyBmb3IgYSBzcGVjaWZpYyB2YXJpYWJsZSwgYnV0IHRoZSBjb250ZXh0IGFyb3VuZCBpdDogdGhlIGRlcGVuZGVuY2llcywgdGhlIHJlbGF0aW9uc2hpcHMgdG8gb3RoZXIgY29uZmlndXJhdGlvbnMsIGFuZCB0aGUgb3ZlcmFsbCBjb25kaXRpb25hbCBsb2dpYy4gSSB3YW50IHRvIGJ1aWxkIGEgY29tcGxldGUgbWVudGFsIG1vZGVsIG9mIHRoaXMgc2VjdGlvbiBvZiB0aGUgY29uZmlnIGFuZCBzZWUgd2hhdCBkZWNpc2lvbnMgaXQgZHJpdmVzLiBJdCBpcyBjcnVjaWFsIHRvIGhhdmUgYSBjbGVhciB1bmRlcnN0YW5kaW5nIG9mIHdoYXQgaW5mbHVlbmNlcyB0aGUgY29uZmlndXJhdGlvbiBhbmQgbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBvYnZpb3VzIG1pc2NvbmZpZ3VyYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NjEzLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTA6NDA6MTcuOTg1MzY0NTk0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE4MzA1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNTEwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNTEwOlxcdFxcdCAgZGV2aWNlLiBJdCBwcm92aWRlcyBhIHVzZXJzcGFjZSBBUEkgdG8gcHJvY2VzcyBVVkMgY29udHJvbCByZXF1ZXN0c1xcbiA1MTE6XFx0XFx0ICBhbmQgc3RyZWFtIHZpZGVvIGRhdGEgdG8gdGhlIGhvc3QuXFxuIDUxMjpcXHRcXG4gNTEzOlxcdFxcdCAgU2F5IFxcXCJ5XFxcIiB0byBsaW5rIHRoZSBkcml2ZXIgc3RhdGljYWxseSwgb3IgXFxcIm1cXFwiIHRvIGJ1aWxkIGFcXG4gNTE0OlxcdFxcdCAgZHluYW1pY2FsbHkgbGlua2VkIG1vZHVsZSBjYWxsZWQgXFxcImdfd2ViY2FtXFxcIi5cXG4gNTE1OlxcdFxcbiA1MTY6XFx0Y29uZmlnIFVTQl9SQVdfR0FER0VUXFxuIDUxNzpcXHRcXHR0cmlzdGF0ZSBcXFwiVVNCIFJhdyBHYWRnZXRcXFwiXFxuIDUxODpcXHRcXHRoZWxwXFxuIDUxOTpcXHRcXHQgIFVTQiBSYXcgR2FkZ2V0IGlzIGEgZ2FkZ2V0IGRyaXZlciB0aGF0IGdpdmVzIHVzZXJzcGFjZSBsb3ctbGV2ZWxcXG4gNTIwOlxcdFxcdCAgY29udHJvbCBvdmVyIHRoZSBnYWRnZXQncyBjb21tdW5pY2F0aW9uIHByb2Nlc3MuXFxuIDUyMTpcXHRcXG4gNTIyOlxcdFxcdCAgTGlrZSBhbnkgb3RoZXIgZ2FkZ2V0IGRyaXZlciwgUmF3IEdhZGdldCBpbXBsZW1lbnRzIFVTQiBkZXZpY2VzIHZpYVxcbiA1MjM6XFx0XFx0ICB0aGUgVVNCIGdhZGdldCBBUEkuIFVubGlrZSBtb3N0IGdhZGdldCBkcml2ZXJzLCBSYXcgR2FkZ2V0IGRvZXMgbm90XFxuIDUyNDpcXHRcXHQgIGltcGxlbWVudCBhbnkgY29uY3JldGUgVVNCIGZ1bmN0aW9ucyBpdHNlbGYgYnV0IHJlcXVpcmVzIHVzZXJzcGFjZVxcbiA1MjU6XFx0XFx0ICB0byBkbyB0aGF0LlxcbiA1MjY6XFx0XFxuIDUyNzpcXHRcXHQgIFNlZSBEb2N1bWVudGF0aW9uL3VzYi9yYXctZ2FkZ2V0LnJzdCBmb3IgZGV0YWlscy5cXG4gNTI4OlxcdFxcbiA1Mjk6XFx0XFx0ICBTYXkgXFxcInlcXFwiIHRvIGxpbmsgdGhlIGRyaXZlciBzdGF0aWNhbGx5LCBvciBcXFwibVxcXCIgdG8gYnVpbGQgYVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMDo0MDoxNy45ODc1NTExNzRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTA2ODk1MjIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgRGVwZW5kZW5jeSBEZWNsYXJhdGlvbnMqKlxuXG5BbHJpZ2h0LCBJIHdhcyBleHBlY3RpbmcgdG8gc2VlIGEgY2xlYXIgYGRlcGVuZHMgb25gIGRlY2xhcmF0aW9uLCBidXQgaXQncyBhYnNlbnQuIFRoYXQncyBhIGJpdCB1bnVzdWFsOyBnb29kIHByb2plY3Qgb3JnYW5pemF0aW9uLCBlc3BlY2lhbGx5IGluIGxhcmdlciBzeXN0ZW1zLCAqcmVsaWVzKiBvbiBleHBsaWNpdGx5IHN0YXRlZCBkZXBlbmRlbmNpZXMgZm9yIGNsYXJpdHkgYW5kIG1haW50YWluYWJpbGl0eS4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gc2NhbiB0aGUgZmlsZSdzIGhlYWRlciBvciBwZXJoYXBzIHRoZSBwcm9qZWN0IGNvbmZpZ3VyYXRpb24gbWVudXMuIEhvcGVmdWxseSwgdGhlIGRlcGVuZGVuY3kgaW5mb3JtYXRpb24gaXMgbG9jYXRlZCB3aXRoaW4gdGhlIHNhbWUgZmlsZSBvciBhIG5laWdoYm9yaW5nIGNvbmZpZ3VyYXRpb24gZmlsZSwgb3IgcGVyaGFwcyB0aGUgSURFIGhhcyBzb21lIGhpZGRlbiBuYXZpZ2F0aW9uIG9wdGlvbnMuIEl0J3MgYSBiaXQgb2YgYW4gYXNzdW1wdGlvbiwgYnV0IGl0J3MgYWx3YXlzIHdvcnRoIGNoZWNraW5nIHRoZSBvYnZpb3VzIHBsYWNlcyBmaXJzdCwgYmVmb3JlIEkgZ28gZGlnZ2luZyBkZWVwZXIgaW50byB0aGUgY29kZSBvciB0aGUgYnVpbGQgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MTY5LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMDo0MDoyMS40OTQ0NTI4NzVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NzM5NTc0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZW51Y29uZmlnIFVTQl9HQURHRVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTYtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MTc6bWVudWNvbmZpZyBVU0JfR0FER0VUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTgtXFx0dHJpc3RhdGUgXFxcIlVTQiBHYWRnZXQgU3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTA6NDA6MjEuNjYxODU4NTMyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMzA5OTg4ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIFVTQiBHYWRnZXQgTGVnYWN5IEtjb25maWcqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljcyBvZiB0aGlzIFwibGVnYWN5XCIgVVNCIGdhZGdldCBjb25maWd1cmF0aW9uLiBNeSBmaXJzdCBtb3ZlIGlzIHRvIGp1bXAgcmlnaHQgaW50byB0aGUgYGRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZ2AgZmlsZS4gVGhhdCdzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgY29udGV4dCBvZiB0aGVzZSBsZWdhY3kgb3B0aW9ucy4gSSBrbm93IHRoYXQgYnkgZXhhbWluaW5nIHRoZSBjb25maWd1cmF0aW9uIGZpbGUsIEkgc2hvdWxkIGdldCBhIGJldHRlciBwaWN0dXJlIG9mIHdoYXQncyBjb250cm9sbGVkIGJ5IGl0LCBkZXBlbmRlbmNpZXMgdGhhdCBpdCBoYXMsIGFuZCBwZXJoYXBzIGV2ZW4gdGhlIHJhdGlvbmFsZSBiZWhpbmQgaXRzIGV4aXN0ZW5jZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzICpsZWdhY3kqIGFib3V0IGl0LiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzQ1OCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEwOjQwOjI0Ljg5Mjg2MDUzOFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDcwMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBVU0IgR2FkZ2V0IHN1cHBvcnQgb24gYSBzeXN0ZW0gaW52b2x2ZXNcXG4gICA0OlxcdCMgICAgKGEpIGEgcGVyaXBoZXJhbCBjb250cm9sbGVyLCBhbmRcXG4gICA1OlxcdCMgICAgKGIpIHRoZSBnYWRnZXQgZHJpdmVyIHVzaW5nIGl0LlxcbiAgIDY6XFx0I1xcbiAgIDc6XFx0IyBOT1RFOiAgR2FkZ2V0IHN1cHBvcnQgKiogRE9FUyBOT1QgKiogZGVwZW5kIG9uIGhvc3Qtc2lkZSBDT05GSUdfVVNCICEhXFxuICAgODpcXHQjXFxuICAgOTpcXHQjICAtIEhvc3Qgc3lzdGVtcyAobGlrZSBQQ3MpIG5lZWQgQ09ORklHX1VTQiAod2l0aCBcXFwiQVxcXCIgamFja3MpLlxcbiAgMTA6XFx0IyAgLSBQZXJpcGhlcmFscyAobGlrZSBQREFzKSBuZWVkIENPTkZJR19VU0JfR0FER0VUICh3aXRoIFxcXCJCXFxcIiBqYWNrcykuXFxuICAxMTpcXHQjICAtIFNvbWUgc3lzdGVtcyBoYXZlIGJvdGgga2luZHMgb2YgY29udHJvbGxlcnMuXFxuICAxMjpcXHQjXFxuICAxMzpcXHQjIFdpdGggaGVscCBmcm9tIGEgc3BlY2lhbCB0cmFuc2NlaXZlciBhbmQgYSBcXFwiTWluaS1BQlxcXCIgamFjaywgc3lzdGVtcyB3aXRoXFxuICAxNDpcXHQjIGJvdGgga2luZHMgb2YgY29udHJvbGxlciBjYW4gYWxzbyBzdXBwb3J0IFxcXCJVU0IgT24tdGhlLUdvXFxcIiAoQ09ORklHX1VTQl9PVEcpLlxcbiAgMTU6XFx0I1xcbiAgMTY6XFx0IyBBIExpbnV4IFxcXCJHYWRnZXQgRHJpdmVyXFxcIiB0YWxrcyB0byB0aGUgVVNCIFBlcmlwaGVyYWwgQ29udHJvbGxlclxcbiAgMTc6XFx0IyBkcml2ZXIgdGhyb3VnaCB0aGUgYWJzdHJhY3QgXFxcImdhZGdldFxcXCIgQVBJLiAgU29tZSBvdGhlciBvcGVyYXRpbmdcXG4gIDE4OlxcdCMgc3lzdGVtcyBjYWxsIHRoZXNlIFxcXCJjbGllbnRcXFwiIGRyaXZlcnMsIG9mIHdoaWNoIFxcXCJjbGFzcyBkcml2ZXJzXFxcIlxcbiAgMTk6XFx0IyBhcmUgYSBzdWJzZXQgKGltcGxlbWVudGluZyBhIFVTQiBkZXZpY2UgY2xhc3Mgc3BlY2lmaWNhdGlvbikuXFxuICAyMDpcXHQjIEEgZ2FkZ2V0IGRyaXZlciBpbXBsZW1lbnRzIG9uZSBvciBtb3JlIFVTQiBmdW5jdGlvbnMgdXNpbmdcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTA6NDA6MjQuODkzMDA5NTk4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMzY4MjYxOTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipGb2N1c2luZyBvbiBVU0IgR2FkZ2V0IENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBzbyB3ZSdyZSBkaXZpbmcgaW50byB0aGUgVVNCIGdhZGdldCBjb25maWd1cmF0aW9uIGhlcmUuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiBgVVNCX0dBREdFVGAg4oCTIHRoYXQncyB0aGUgcHJpbWFyeSwgb3ZlcmFyY2hpbmcgb3B0aW9uLiBJdCdzIHRoZSBiaWcgcGljdHVyZS4gQmVmb3JlIEkgcHJvY2VlZCwgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgZGVwZW5kZW5jaWVzIG9mIGBVU0JfUkFXX0dBREdFVGAuIEl0J3MgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIGhvdyB0aGF0IHNwZWNpZmljIG9wdGlvbiBmaXRzIHdpdGhpbiB0aGUgbGFyZ2VyIGdhZGdldCBmcmFtZXdvcmssIGVuc3VyaW5nIG5vIGNyaXRpY2FsIGRlcGVuZGVuY2llcyBhcmUgb3Zlcmxvb2tlZC4gTGV0J3MgbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXMgaW4gcGxhY2UgZm9yIGEgcHJvcGVyIGJ1aWxkIGFuZCBmdW5jdGlvbmFsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MDIxLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMDo0MDoyNy45Mjk4Mzk3NjhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMDk5Mjk0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9NjU9Y29uZmlnIFVTQl9aRVJPX0hOUFRFU1RcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNjYtXFx0Ym9vbCBcXFwiSE5QIFRlc3QgRGV2aWNlXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzo2NzpcXHRkZXBlbmRzIG9uIFVTQl9aRVJPIFxcdTAwMjZcXHUwMDI2IFVTQl9PVEdcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNjgtXFx0aGVscFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTc1PWNvbmZpZyBVU0JfQVVESU9cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNzYtXFx0dHJpc3RhdGUgXFxcIkF1ZGlvIEdhZGdldFxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6Nzc6XFx0ZGVwZW5kcyBvbiBTTkRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNzgtXFx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0xMDA9Y29uZmlnIEdBREdFVF9VQUMxXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTEwMS1cXHRib29sIFxcXCJVQUMgMS4wXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoxMDI6XFx0ZGVwZW5kcyBvbiBVU0JfQVVESU9cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMTAzLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0xMDc9Y29uZmlnIEdBREdFVF9VQUMxX0xFR0FDWVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0xMDgtXFx0Ym9vbCBcXFwiVUFDIDEuMCAoTGVnYWN5KVxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MTA5OlxcdGRlcGVuZHMgb24gR0FER0VUX1VBQzFcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMTEwLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0xMTU9Y29uZmlnIFVTQl9FVEhcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMTE2LVxcdHRyaXN0YXRlIFxcXCJFdGhlcm5ldCBHYWRnZXQgKHdpdGggQ0RDIEV0aGVybmV0IHN1cHBvcnQpXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoxMTc6XFx0ZGVwZW5kcyBvbiBORVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMTE4LVxcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMTQwLVxcdCAgV2l0aGluIHRoZSBVU0IgZGV2aWNlLCB0aGlzIGdhZGdldCBkcml2ZXIgZXhwb3NlcyBhIG5ldHdvcmsgZGV2aWNlXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjE0MTpcXHQgIFxcXCJ1c2JYXFxcIiwgd2hlcmUgWCBkZXBlbmRzIG9uIHdoYXQgb3RoZXIgbmV0d29ya2luZyBkZXZpY2VzIHlvdSBoYXZlLlxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0xNDItXFx0ICBUcmVhdCBpdCBsaWtlIGEgdHdvLW5vZGUgRXRoZXJuZXQgbGluazogIGhvc3QsIGFuZCBnYWRnZXQuXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9MTUzPWNvbmZpZyBVU0JfRVRIX1JORElTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTE1NC1cXHRib29sIFxcXCJSTkRJUyBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoxNTU6XFx0ZGVwZW5kcyBvbiBVU0JfRVRIXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTE1Ni1cXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTE3Mz1jb25maWcgVVNCX0VUSF9FRU1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMTc0LVxcdGJvb2wgXFxcIkV0aGVybmV0IEVtdWxhdGlvbiBNb2RlbCAoRUVNKSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoxNzU6XFx0ZGVwZW5kcyBvbiBVU0JfRVRIXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTE3Ni1cXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTE5MD1jb25maWcgVVNCX0dfTkNNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTE5MS1cXHR0cmlzdGF0ZSBcXFwiTmV0d29yayBDb250cm9sIE1vZGVsIChOQ00pIHN1cHBvcnRcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjE5MjpcXHRkZXBlbmRzIG9uIE5FVFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0xOTMtXFx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0yMzc9Y29uZmlnIFVTQl9GVU5DVElPTkZTX0VUSFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yMzgtXFx0Ym9vbCBcXFwiSW5jbHVkZSBjb25maWd1cmF0aW9uIHdpdGggQ0RDIEVDTSAoRXRoZXJuZXQpXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoyMzk6XFx0ZGVwZW5kcyBvbiBVU0JfRlVOQ1RJT05GUyBcXHUwMDI2XFx1MDAyNiBORVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjQwLVxcdHNlbGVjdCBVU0JfVV9FVEhFUlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTI0Nz1jb25maWcgVVNCX0ZVTkNUSU9ORlNfUk5ESVNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjQ4LVxcdGJvb2wgXFxcIkluY2x1ZGUgY29uZmlndXJhdGlvbiB3aXRoIFJORElTIChFdGhlcm5ldClcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjI0OTpcXHRkZXBlbmRzIG9uIFVTQl9GVU5DVElPTkZTIFxcdTAwMjZcXHUwMDI2IE5FVFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yNTAtXFx0c2VsZWN0IFVTQl9VX0VUSEVSXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9MjU1PWNvbmZpZyBVU0JfRlVOQ1RJT05GU19HRU5FUklDXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTI1Ni1cXHRib29sIFxcXCJJbmNsdWRlICdwdXJlJyBjb25maWd1cmF0aW9uXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoyNTc6XFx0ZGVwZW5kcyBvbiBVU0JfRlVOQ1RJT05GU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yNTgtXFx0aGVscFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTI2Mj1jb25maWcgVVNCX01BU1NfU1RPUkFHRVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yNjMtXFx0dHJpc3RhdGUgXFxcIk1hc3MgU3RvcmFnZSBHYWRnZXRcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjI2NDpcXHRkZXBlbmRzIG9uIEJMT0NLXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTI2NS1cXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTI3OT1jb25maWcgVVNCX0dBREdFVF9UQVJHRVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjgwLVxcdHRyaXN0YXRlIFxcXCJVU0IgR2FkZ2V0IFRhcmdldCBGYWJyaWMgTW9kdWxlXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoyODE6XFx0ZGVwZW5kcyBvbiBUQVJHRVRfQ09SRVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yODItXFx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0yOTE9Y29uZmlnIFVTQl9HX1NFUklBTFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yOTItXFx0dHJpc3RhdGUgXFxcIlNlcmlhbCBHYWRnZXQgKHdpdGggQ0RDIEFDTSBhbmQgQ0RDIE9CRVggc3VwcG9ydClcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjI5MzpcXHRkZXBlbmRzIG9uIFRUWVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yOTQtXFx0c2VsZWN0IFVTQl9VX1NFUklBTFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTMxNj1jb25maWcgVVNCX01JRElfR0FER0VUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTMxNy1cXHR0cmlzdGF0ZSBcXFwiTUlESSBHYWRnZXRcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjMxODpcXHRkZXBlbmRzIG9uIFNORFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0zMTktXFx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0zNTE9Y29uZmlnIFVTQl9DRENfQ09NUE9TSVRFXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTM1Mi1cXHR0cmlzdGF0ZSBcXFwiQ0RDIENvbXBvc2l0ZSBEZXZpY2UgKEV0aGVybmV0IGFuZCBBQ00pXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzozNTM6XFx0ZGVwZW5kcyBvbiBORVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMzU0LVxcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9MzcwPWNvbmZpZyBVU0JfR19OT0tJQVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0zNzEtXFx0dHJpc3RhdGUgXFxcIk5va2lhIGNvbXBvc2l0ZSBnYWRnZXRcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjM3MjpcXHRkZXBlbmRzIG9uIFBIT05FVFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzozNzM6XFx0ZGVwZW5kcyBvbiBCTE9DS1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0zNzQtXFx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0zODk9Y29uZmlnIFVTQl9HX0FDTV9NU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0zOTAtXFx0dHJpc3RhdGUgXFxcIkNEQyBDb21wb3NpdGUgRGV2aWNlIChBQ00gYW5kIG1hc3Mgc3RvcmFnZSlcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjM5MTpcXHRkZXBlbmRzIG9uIEJMT0NLXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTM5Mi1cXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTQwMz1jb25maWcgVVNCX0dfTVVMVElcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNDA0LVxcdHRyaXN0YXRlIFxcXCJNdWx0aWZ1bmN0aW9uIENvbXBvc2l0ZSBHYWRnZXRcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjQwNTpcXHRkZXBlbmRzIG9uIEJMT0NLIFxcdTAwMjZcXHUwMDI2IE5FVFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy00MDYtXFx0c2VsZWN0IFVTQl9HX01VTFRJX0NEQyBpZiAhVVNCX0dfTVVMVElfUk5ESVNcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz00Mjc9Y29uZmlnIFVTQl9HX01VTFRJX1JORElTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTQyOC1cXHRib29sIFxcXCJSTkRJUyArIENEQyBTZXJpYWwgKyBTdG9yYWdlIGNvbmZpZ3VyYXRpb25cXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjQyOTpcXHRkZXBlbmRzIG9uIFVTQl9HX01VTFRJXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTQzMC1cXHRzZWxlY3QgVVNCX0ZfUk5ESVNcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz00NDA9Y29uZmlnIFVTQl9HX01VTFRJX0NEQ1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy00NDEtXFx0Ym9vbCBcXFwiQ0RDIEV0aGVybmV0ICsgQ0RDIFNlcmlhbCArIFN0b3JhZ2UgY29uZmlndXJhdGlvblxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6NDQyOlxcdGRlcGVuZHMgb24gVVNCX0dfTVVMVElcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNDQzLVxcdHNlbGVjdCBVU0JfRl9FQ01cXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz00Njg9Y29uZmlnIFVTQl9HX0RCR1BcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNDY5LVxcdHRyaXN0YXRlIFxcXCJFSENJIERlYnVnIERldmljZSBHYWRnZXRcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjQ3MDpcXHRkZXBlbmRzIG9uIFRUWVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy00NzEtXFx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz00ODQ9Y29uZmlnIFVTQl9HX0RCR1BfUFJJTlRLXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjQ4NTpcXHRkZXBlbmRzIG9uIFVTQl9HX0RCR1BcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNDg2LVxcdGJvb2wgXFxcInByaW50a1xcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz00OTA9Y29uZmlnIFVTQl9HX0RCR1BfU0VSSUFMXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjQ5MTpcXHRkZXBlbmRzIG9uIFVTQl9HX0RCR1BcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNDkyLVxcdHNlbGVjdCBVU0JfVV9TRVJJQUxcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz01MDE9Y29uZmlnIFVTQl9HX1dFQkNBTVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy01MDItXFx0dHJpc3RhdGUgXFxcIlVTQiBXZWJjYW0gR2FkZ2V0XFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzo1MDM6XFx0ZGVwZW5kcyBvbiBWSURFT19ERVZcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNTA0LVxcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEwOjQwOjI4LjAzMDg0MDc3NloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTkxNTg1MjI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBVU0IgR2FkZ2V0IENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBVU0JfUkFXX0dBREdFVGAgb3B0aW9uLCBhbmQgaXQncyBpbnRlcmVzdGluZy4gRGlyZWN0bHksIGl0IGRvZXNuJ3Qgc2VlbSB0byBoYXZlIGFueSBleHBsaWNpdCBkZXBlbmRlbmNpZXMgZGVjbGFyZWQgaW4gdGhlIEtjb25maWcgZmlsZXMsIGJ1dCBpdCdzIG5lc3RlZCB3aXRoaW4gdGhlIGBtZW51Y29uZmlnIFVTQl9HQURHRVRgIGJsb2NrLiBUaGVyZWZvcmUsIGl0IGltcGxpY2l0bHkgKmRvZXMqIGRlcGVuZCBvbiBgVVNCX0dBREdFVGAuIFRoYXQgbWFrZXMgc2Vuc2U7IGl0J3MgYSBjaGlsZCBjb25maWd1cmF0aW9uIG9wdGlvbi5cblxuTm93LCBhIGZ1cnRoZXIgcXVlc3Rpb24gYXJpc2VzLiBEb2VzIGBVU0JfR0FER0VUYCBpdHNlbGYgcmVseSBvbiBhIGJyb2FkZXIgc3VwcG9ydCBmcmFtZXdvcmsgbGlrZSBgVVNCX1NVUFBPUlRgPyBUbyBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGl0cyBkZXBlbmRlbmNpZXMsIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGBkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZ2AgZmlsZS4gSSdsbCBuZWVkIHRvIGV4YW1pbmUgdGhhdCBmaWxlIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcHMgYW5kIHdoYXQgY29uZGl0aW9ucyBuZWVkIHRvIGJlIG1ldCBmb3IgdGhlc2Ugb3B0aW9ucyB0byBiZSBhdmFpbGFibGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwODU3LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTA6NDA6MzIuMjIyNDI5NTMzWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NjI1NDM0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTQ5PWNvbmZpZyBVU0JfR0FER0VUX0RFQlVHXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNTAtXFx0Ym9vbCBcXFwiRGVidWdnaW5nIG1lc3NhZ2VzIChERVZFTE9QTUVOVClcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NTE6XFx0ZGVwZW5kcyBvbiBERUJVR19LRVJORUxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy01Mi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz02Mz1jb25maWcgVVNCX0dBREdFVF9WRVJCT1NFXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNjQtXFx0Ym9vbCBcXFwiVmVyYm9zZSBkZWJ1Z2dpbmcgTWVzc2FnZXMgKERFVkVMT1BNRU5UKVxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo2NTpcXHRkZXBlbmRzIG9uIFVTQl9HQURHRVRfREVCVUdcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy02Ni1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz03Nz1jb25maWcgVVNCX0dBREdFVF9ERUJVR19GSUxFU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTc4LVxcdGJvb2wgXFxcIkRlYnVnZ2luZyBpbmZvcm1hdGlvbiBmaWxlcyAoREVWRUxPUE1FTlQpXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjc5OlxcdGRlcGVuZHMgb24gUFJPQ19GU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTgwLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTg4PWNvbmZpZyBVU0JfR0FER0VUX0RFQlVHX0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctODktXFx0Ym9vbCBcXFwiRGVidWdnaW5nIGluZm9ybWF0aW9uIGZpbGVzIGluIGRlYnVnZnMgKERFVkVMT1BNRU5UKVxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo5MDpcXHRkZXBlbmRzIG9uIERFQlVHX0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctOTEtXFx0aGVscFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9MTMyPWNvbmZpZyBVX1NFUklBTF9DT05TT0xFXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTMzLVxcdGJvb2wgXFxcIlNlcmlhbCBnYWRnZXQgY29uc29sZSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjEzNDpcXHRkZXBlbmRzIG9uIFVTQl9VX1NFUklBTFxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTEzNS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0xNDU9Y29uZmlnIFVTQl9MSUJDT01QT1NJVEVcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTE0Ny1cXHRzZWxlY3QgQ09ORklHRlNfRlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoxNDg6XFx0ZGVwZW5kcyBvbiBVU0JfR0FER0VUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTQ5LVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9MjQwPWNvbmZpZyBVU0JfQ09ORklHRlNfU0VSSUFMXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjQxLVxcdGJvb2wgXFxcIkdlbmVyaWMgc2VyaWFsIGJ1bGsgaW4vb3V0XFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI0MjpcXHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI0MzpcXHRkZXBlbmRzIG9uIFRUWVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI0NC1cXHRzZWxlY3QgVVNCX1VfU0VSSUFMXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0yNDk9Y29uZmlnIFVTQl9DT05GSUdGU19BQ01cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNTAtXFx0Ym9vbCBcXFwiQWJzdHJhY3QgQ29udHJvbCBNb2RlbCAoQ0RDIEFDTSlcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjUxOlxcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjUyOlxcdGRlcGVuZHMgb24gVFRZXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjUzLVxcdHNlbGVjdCBVU0JfVV9TRVJJQUxcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTI1OT1jb25maWcgVVNCX0NPTkZJR0ZTX09CRVhcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNjAtXFx0Ym9vbCBcXFwiT2JqZWN0IEV4Y2hhbmdlIE1vZGVsIChDREMgT0JFWClcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjYxOlxcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjYyOlxcdGRlcGVuZHMgb24gVFRZXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjYzLVxcdHNlbGVjdCBVU0JfVV9TRVJJQUxcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTI2OT1jb25maWcgVVNCX0NPTkZJR0ZTX05DTVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI3MC1cXHRib29sIFxcXCJOZXR3b3JrIENvbnRyb2wgTW9kZWwgKENEQyBOQ00pXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI3MTpcXHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI3MjpcXHRkZXBlbmRzIG9uIE5FVFxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI3My1cXHRzZWxlY3QgVVNCX1VfRVRIRVJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTI4MT1jb25maWcgVVNCX0NPTkZJR0ZTX0VDTVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI4Mi1cXHRib29sIFxcXCJFdGhlcm5ldCBDb250cm9sIE1vZGVsIChDREMgRUNNKVxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyODM6XFx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyODQ6XFx0ZGVwZW5kcyBvbiBORVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yODUtXFx0c2VsZWN0IFVTQl9VX0VUSEVSXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0yOTM9Y29uZmlnIFVTQl9DT05GSUdGU19FQ01fU1VCU0VUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjk0LVxcdGJvb2wgXFxcIkV0aGVybmV0IENvbnRyb2wgTW9kZWwgKENEQyBFQ00pIHN1YnNldFxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyOTU6XFx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyOTY6XFx0ZGVwZW5kcyBvbiBORVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yOTctXFx0c2VsZWN0IFVTQl9VX0VUSEVSXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0zMDM9Y29uZmlnIFVTQl9DT05GSUdGU19STkRJU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMwNC1cXHRib29sIFxcXCJSTkRJU1xcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozMDU6XFx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozMDY6XFx0ZGVwZW5kcyBvbiBORVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMDctXFx0c2VsZWN0IFVTQl9VX0VUSEVSXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0zMTk9Y29uZmlnIFVTQl9DT05GSUdGU19FRU1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMjAtXFx0Ym9vbCBcXFwiRXRoZXJuZXQgRW11bGF0aW9uIE1vZGVsIChFRU0pXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjMyMTpcXHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjMyMjpcXHRkZXBlbmRzIG9uIE5FVFxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMyMy1cXHRzZWxlY3QgVVNCX1VfRVRIRVJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTMzNT1jb25maWcgVVNCX0NPTkZJR0ZTX1BIT05FVFxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMzNi1cXHRib29sIFxcXCJQaG9uZXQgcHJvdG9jb2xcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzM3OlxcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzM4OlxcdGRlcGVuZHMgb24gTkVUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzM5OlxcdGRlcGVuZHMgb24gUEhPTkVUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzQwLVxcdHNlbGVjdCBVU0JfVV9FVEhFUlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9MzQ1PWNvbmZpZyBVU0JfQ09ORklHRlNfTUFTU19TVE9SQUdFXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzQ2LVxcdGJvb2wgXFxcIk1hc3Mgc3RvcmFnZVxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNDc6XFx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNDg6XFx0ZGVwZW5kcyBvbiBCTE9DS1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM0OS1cXHRzZWxlY3QgVVNCX0ZfTUFTU19TVE9SQUdFXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0zNTY9Y29uZmlnIFVTQl9DT05GSUdGU19GX0xCX1NTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzU3LVxcdGJvb2wgXFxcIkxvb3BiYWNrIGFuZCBzb3VyY2VzaW5rIGZ1bmN0aW9uIChmb3IgdGVzdGluZylcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzU4OlxcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzU5LVxcdHNlbGVjdCBVU0JfRl9TU19MQlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9MzY5PWNvbmZpZyBVU0JfQ09ORklHRlNfRl9GU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM3MC1cXHRib29sIFxcXCJGdW5jdGlvbiBmaWxlc3lzdGVtIChGdW5jdGlvbkZTKVxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNzE6XFx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNzItXFx0c2VsZWN0IFVTQl9GX0ZTXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0zODE9Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzFcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zODItXFx0Ym9vbCBcXFwiQXVkaW8gQ2xhc3MgMS4wXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM4MzpcXHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM4NDpcXHRkZXBlbmRzIG9uIFNORFxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM4NS1cXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9Mzk5PWNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxX0xFR0FDWVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQwMC1cXHRib29sIFxcXCJBdWRpbyBDbGFzcyAxLjAgKGxlZ2FjeSBpbXBsZW1lbnRhdGlvbilcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDAxOlxcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDAyOlxcdGRlcGVuZHMgb24gU05EXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDAzLVxcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz00MTI9Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MTMtXFx0Ym9vbCBcXFwiQXVkaW8gQ2xhc3MgMi4wXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQxNDpcXHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQxNTpcXHRkZXBlbmRzIG9uIFNORFxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQxNi1cXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDMxPWNvbmZpZyBVU0JfQ09ORklHRlNfRl9NSURJXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDMyLVxcdGJvb2wgXFxcIk1JREkgZnVuY3Rpb25cXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDMzOlxcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDM0OlxcdGRlcGVuZHMgb24gU05EXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDM1LVxcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz00NDU9Y29uZmlnIFVTQl9DT05GSUdGU19GX01JREkyXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDQ2LVxcdGJvb2wgXFxcIk1JREkgMi4wIGZ1bmN0aW9uXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ0NzpcXHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ0ODpcXHRkZXBlbmRzIG9uIFNORFxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ0OS1cXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDU4PWNvbmZpZyBVU0JfQ09ORklHRlNfRl9ISURcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NTktXFx0Ym9vbCBcXFwiSElEIGZ1bmN0aW9uXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ2MDpcXHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2MS1cXHRzZWxlY3QgVVNCX0ZfSElEXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz00Njg9Y29uZmlnIFVTQl9DT05GSUdGU19GX1VWQ1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2OS1cXHRib29sIFxcXCJVU0IgV2ViY2FtIGZ1bmN0aW9uXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ3MDpcXHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ3MTpcXHRkZXBlbmRzIG9uIFZJREVPX0RFVlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ3MjpcXHRkZXBlbmRzIG9uIFZJREVPX0RFVlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ3My1cXHRzZWxlY3QgVklERU9CVUYyX0RNQV9TR1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDgxPWNvbmZpZyBVU0JfQ09ORklHRlNfRl9QUklOVEVSXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00ODMtXFx0c2VsZWN0IFVTQl9GX1BSSU5URVJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0ODQ6XFx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00ODUtXFx0aGVscFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDk1PWNvbmZpZyBVU0JfQ09ORklHRlNfRl9UQ01cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00OTYtXFx0Ym9vbCBcXFwiVVNCIEdhZGdldCBUYXJnZXQgRmFicmljXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ5NzpcXHRkZXBlbmRzIG9uIFRBUkdFVF9DT1JFXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDk4OlxcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDk5LVxcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEwOjQwOjMyLjMxODY5MDQzMVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjYyNDk2NzE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBVU0IgR2FkZ2V0IERyaXZlcnMqKlxuXG5SaWdodCwgc28gd2UncmUgdGFsa2luZyBhYm91dCBgVVNCX0dBREdFVGAsIHRoZSBjb3JlIG1vZHVsZSBmb3IgVVNCIGRldmljZSBlbXVsYXRpb24uIE15IGZpcnN0IHRob3VnaHQgaXMgYWx3YXlzIHRvIHBpbnBvaW50IGl0cyBkZXBlbmRlbmNpZXMuIEl0J3MgYWxtb3N0IGF4aW9tYXRpYyBpbiB0aGlzIGFyZWEuIGBVU0JfR0FER0VUYCAqaGFzKiB0byByZWx5IG9uIHNvbWV0aGluZyBmdW5kYW1lbnRhbCB3aXRoaW4gdGhlIFVTQiBzdWJzeXN0ZW0gaXRzZWxmLiBXZSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCB0aG9zZSBhcmUgdG8gcmVhbGx5IHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0d2Vha2luZyB0aGlzLiBXaGF0J3MgdXBzdHJlYW0gb2YgaXQ/IFBvd2VyIG1hbmFnZW1lbnQ/IFRoZSBjb3JlIFVTQiBjb250cm9sbGVyIGRyaXZlciBtb2RlbD8gVGhlIHNwZWNpZmljIGhhcmR3YXJlIHBsYXRmb3JtPyBHZXR0aW5nIGF0IHRob3NlIHJlbGF0aW9uc2hpcHMgaXMga2V5IHRvIGtub3dpbmcgd2hlcmUgcGVyZm9ybWFuY2UgYm90dGxlbmVja3Mgb3IgY29tcGF0aWJpbGl0eSBpc3N1ZXMgbWlnaHQgY3JvcCB1cC4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIGFueSBpbi1kZXB0aCBleHBsb3JhdGlvbiBvciBtb2RpZmljYXRpb24gb2YgYSBnYWRnZXQgZHJpdmVyLiBJdCdzIG5ldmVyIGp1c3QgYSBzdGFuZGFsb25lIG1vZHVsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQwMzYsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMDo0MDozNy45ODExOTIwMjlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNTU3MzYxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZW51Y29uZmlnIFVTQl9HQURHRVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTYtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MTc6bWVudWNvbmZpZyBVU0JfR0FER0VUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTgtXFx0dHJpc3RhdGUgXFxcIlVTQiBHYWRnZXQgU3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTA6NDA6MzguMDg2Nzc1NDA3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5NzMxMDU5OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIEtjb25maWcgZmlsZSBmb3IgVVNCIGdhZGdldCBkcml2ZXJzLlxuXG4qKkRlZXAgRGl2ZSBpbnRvIFVTQiBHYWRnZXQgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBJJ20gc3RhcnRpbmcgYnkgdGFraW5nIGEgbG9vayBhdCB0aGUgZmlyc3QgMjAgbGluZXMgb2YgdGhlIGBkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZ2AgZmlsZS4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJJ20gZXhwZWN0aW5nIHRoaXMgdG8gbGF5IG91dCB0aGUgZnVuZGFtZW50YWwgb3B0aW9ucyBmb3IgY29uZmlndXJpbmcgVVNCIGdhZGdldCBmdW5jdGlvbmFsaXR5IHdpdGhpbiB0aGUga2VybmVsLiBJIGFudGljaXBhdGUgc2VlaW5nIHRoZSBtYWluIGZlYXR1cmUgc3dpdGNoZXMsIHBvc3NpYmx5IHRoZSB0b3AtbGV2ZWwgc2VsZWN0aW9uIGZvciB3aGV0aGVyIGFueSBnYWRnZXQgc3VwcG9ydCBpcyBidWlsdCBhdCBhbGwuIEknbGwgYmUgbG9va2luZyBmb3IgYW55IGRlZmF1bHQgdmFsdWVzIGFzc2lnbmVkLCBhbmQgaWYgdGhlcmUncyBhbnkgaGludCBvZiBvcmdhbml6YXRpb24sIG1heWJlIHNlY3Rpb25zIGZvciBzcGVjaWZpYyBnYWRnZXQgdHlwZXMuIEknbGwgYmUgbm90aW5nIGFueSBjcm9zcy1kZXBlbmRlbmNpZXMgb24gb3RoZXIga2VybmVsIHN1YnN5c3RlbXPigJRlLmcuLCBpZiB0aGVyZSdzIGFuIGltbWVkaWF0ZSBkZXBlbmRlbmN5IG9uIFVTQiBjb3JlIG9yIHNvbWV0aGluZyBlbHNlLiBJJ20ga2VlcGluZyBhbiBleWUgb3V0IGZvciBhbnkgY29tbWVudHMsIGVzcGVjaWFsbHkgaWYgdGhleSBleHBsYWluIHRoZSBwdXJwb3NlIG9mIGEgcGFydGljdWxhciBvcHRpb24gaW4gcmVsYXRpb24gdG8gdGhlIGZ1bmN0aW9uYWxpdHkgaXQgZW5hYmxlcy4gVGhlIHVsdGltYXRlIGdvYWwgaGVyZSBpcyB0byBnZXQgYSBoYW5kbGUgb24gdGhlIG92ZXJhbGwgc3RydWN0dXJlIGFuZCBkZXNpZ24gb2YgdGhlIGdhZGdldCBkcml2ZXIgY29uZmlndXJhdGlvbiBzbyBJIGNhbiB1bmRlcnN0YW5kIGhvdyBiZXN0IHRvIGFwcHJvYWNoIGl0cyBjdXN0b21pemF0aW9uIG9yIHBvdGVudGlhbCBleHRlbnNpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDMzOSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEwOjQwOjQyLjA1OTg4NDcwOVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTY3ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIFVTQiBHYWRnZXQgc3VwcG9ydCBvbiBhIHN5c3RlbSBpbnZvbHZlc1xcbiAgIDQ6XFx0IyAgICAoYSkgYSBwZXJpcGhlcmFsIGNvbnRyb2xsZXIsIGFuZFxcbiAgIDU6XFx0IyAgICAoYikgdGhlIGdhZGdldCBkcml2ZXIgdXNpbmcgaXQuXFxuICAgNjpcXHQjXFxuICAgNzpcXHQjIE5PVEU6ICBHYWRnZXQgc3VwcG9ydCAqKiBET0VTIE5PVCAqKiBkZXBlbmQgb24gaG9zdC1zaWRlIENPTkZJR19VU0IgISFcXG4gICA4OlxcdCNcXG4gICA5OlxcdCMgIC0gSG9zdCBzeXN0ZW1zIChsaWtlIFBDcykgbmVlZCBDT05GSUdfVVNCICh3aXRoIFxcXCJBXFxcIiBqYWNrcykuXFxuICAxMDpcXHQjICAtIFBlcmlwaGVyYWxzIChsaWtlIFBEQXMpIG5lZWQgQ09ORklHX1VTQl9HQURHRVQgKHdpdGggXFxcIkJcXFwiIGphY2tzKS5cXG4gIDExOlxcdCMgIC0gU29tZSBzeXN0ZW1zIGhhdmUgYm90aCBraW5kcyBvZiBjb250cm9sbGVycy5cXG4gIDEyOlxcdCNcXG4gIDEzOlxcdCMgV2l0aCBoZWxwIGZyb20gYSBzcGVjaWFsIHRyYW5zY2VpdmVyIGFuZCBhIFxcXCJNaW5pLUFCXFxcIiBqYWNrLCBzeXN0ZW1zIHdpdGhcXG4gIDE0OlxcdCMgYm90aCBraW5kcyBvZiBjb250cm9sbGVyIGNhbiBhbHNvIHN1cHBvcnQgXFxcIlVTQiBPbi10aGUtR29cXFwiIChDT05GSUdfVVNCX09URykuXFxuICAxNTpcXHQjXFxuICAxNjpcXHRcXG4gIDE3OlxcdG1lbnVjb25maWcgVVNCX0dBREdFVFxcbiAgMTg6XFx0XFx0dHJpc3RhdGUgXFxcIlVTQiBHYWRnZXQgU3VwcG9ydFxcXCJcXG4gIDE5OlxcdFxcdHNlbGVjdCBVU0JfQ09NTU9OXFxuICAyMDpcXHRcXHRzZWxlY3QgTkxTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEwOjQwOjQyLjA2MDA0MzUxOFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NTc3MDY5MzMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVVNCIFJhdyBHYWRnZXQgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgVVNCX0dBREdFVGAgY29uZmlndXJhdGlvbiwgYW5kIGl0IGRvZXNuJ3QgaGF2ZSBhbnkgZXhwbGljaXQgZGVwZW5kZW5jaWVzLCBqdXN0IHNlbGVjdHMgYFVTQl9DT01NT05gIGFuZCBgTkxTYC4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC4gVGhlIGNvbmZpZ3Mgd2UgYXJlIGludGVyZXN0ZWQgaW4gYXJlIGBVU0JfUkFXX0dBREdFVGAgYW5kIGBVU0JfR0FER0VUYCwgYXMgd2VsbCBhcyBgVVNCX0RVTU1ZX0hDRGAsIHdoaWNoIHN5emthbGxlciB1c2VzIGZvciBVU0IgY29udHJvbGxlciBlbXVsYXRpb24uIEhvd2V2ZXIsIGZvciB0aGUgYFVTQl9SQVdfR0FER0VUYCBmdW5jdGlvbmFsaXR5LCB0aGUgY29uZmlnIGl0c2VsZiBpcyBzdWZmaWNpZW50LlxuXG5MZXQncyBkaXZlIGludG8gdGhlIGNvZGUuIFRoZSBwYXRjaCB0b3VjaGVzIHNldmVyYWwga2V5IGZ1bmN0aW9ucyBpbiBgZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmNgOiBgZGV2X2ZyZWVgLCBgZ2FkZ2V0X2JpbmRgLCBgZ2FkZ2V0X3VuYmluZGAsIGByYXdfaW9jdGxfZXZlbnRfZmV0Y2hgLCBgcmF3X3Byb2Nlc3NfZXAwX2lvYCwgYHJhd19pb2N0bF9lcF9kaXNhYmxlYCwgYW5kIGByYXdfcHJvY2Vzc19lcF9pb2AuIFRoZXNlIGFyZSBhbGwgaW50ZWdyYWwgcGFydHMgb2YgdGhlIFVTQiBSYXcgR2FkZ2V0IGRyaXZlciBpbXBsZW1lbnRhdGlvbi5cblxuRnJvbSB0aGUgZGVzY3JpcHRpb24sIHRoaXMgcGF0Y2ggaXMgYWRkcmVzc2luZyBhIHJhY2UgY29uZGl0aW9uLiBJdCBzb3VuZHMgbGlrZSB0aGUgVURDIChVU0IgRGV2aWNlIENvbnRyb2xsZXIpIHVuYmluZCBjb3VsZCBoYXBwZW4gY29uY3VycmVudGx5IHdpdGggYW4gRVAwIG9yIEVQIElPIG9wZXJhdGlvbiwgcG90ZW50aWFsbHkgbGVhZGluZyB0byB1c2UtYWZ0ZXItZnJlZSBvciBvdGhlciBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMuIFRoZSBmaXggaW52b2x2ZXMgYWRkaW5nIGEgYHVkY191c2FnZWAgY291bnRlciBhbmQgYW4gYHVuYmluZF9jb21wbGV0aW9uYCBtZWNoYW5pc20uIFNtYXJ0IVxuXG5JcyB0aGlzIHBhdGNoIGZ1enotd29ydGh5PyBBYnNvbHV0ZWx5ISBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIGEgY29yZSBkcml2ZXIsIGFuZCwgaW1wb3J0YW50bHksIHN5emthbGxlciB1dGlsaXplcyB0aGlzIGRyaXZlci4gTm93LCBzeXprYWxsZXIgbGV2ZXJhZ2VzIHRoaXMgZHJpdmVyIHRvIGZ1enogKm90aGVyKiBVU0IgZHJpdmVycy4gSG93ZXZlciwgdGhpcyBzcGVjaWZpYyBwYXRjaCBmaXhlcyBhIGJ1ZyB3aXRoaW4gYHJhd19nYWRnZXQuY2AgaXRzZWxmLiBTeXprYWxsZXIgYWxzbyBkaXJlY3RseSBmdXp6ZXogdGhpcyBkcml2ZXIsIHdpdGggZGVzY3JpcHRpb25zIGZvciBgL2Rldi9yYXctZ2FkZ2V0YC4gU28sIGl0J3MgZGVmaW5pdGVseSB3b3J0aCB0aGUgZWZmb3J0LlxuXG5MZXQncyBwaW5wb2ludCB0aG9zZSBmb2N1cyBzeW1ib2xzIGZvciBmdXp6aW5nLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb25zIGFyZTogYGdhZGdldF9iaW5kYCwgYGdhZGdldF91bmJpbmRgLCBgcmF3X2lvY3RsX2V2ZW50X2ZldGNoYCwgYHJhd19wcm9jZXNzX2VwMF9pb2AsIGByYXdfaW9jdGxfZXBfZGlzYWJsZWAsIGFuZCBgcmF3X3Byb2Nlc3NfZXBfaW9gLlxuXG5Ob3csIHdhaXQgYSBtaW51dGUuLi4gYGdhZGdldF9iaW5kYCBhbmQgYGdhZGdldF91bmJpbmRgIGFyZSAqc3RhdGljKiBmdW5jdGlvbnMsIGFjdGluZyBhcyBjYWxsYmFja3MgaW4gYHN0cnVjdCB1c2JfZ2FkZ2V0X2RyaXZlcmAuIFRoZSBvdGhlciBmb3VyLCBgcmF3X2lvY3RsX2V2ZW50X2ZldGNoYCwgYHJhd19wcm9jZXNzX2VwMF9pb2AsIGByYXdfaW9jdGxfZXBfZGlzYWJsZWAsIGFuZCBgcmF3X3Byb2Nlc3NfZXBfaW9gLCBhcmUgc3RhdGljIGZ1bmN0aW9ucyBjYWxsZWQgZnJvbSBgcmF3X2lvY3RsYC4gU28sIGxldCdzIHR1cm4gb3VyIGF0dGVudGlvbiB0byBgcmF3X2lvY3RsYCBuZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDkzOCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEwOjQwOjUxLjYzNzExNzgzOVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMxNTI2MzI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJhd19pb2N0bFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYz00Nzg9c3RhdGljIGludCByYXdfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmQpXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy01MDEtXFx0XFx0XFx0XFx0cmV0KTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzo1MDI6XFx0XFx0LyogTWF0Y2hlcyBrcmVmX2dldCgpIGluIHJhd19pb2N0bF9ydW4oKS4gKi9cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy01MDMtXFx0XFx0a3JlZl9wdXQoXFx1MDAyNmRldi1cXHUwMDNlY291bnQsIGRldl9mcmVlKTtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTUxMy1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzo1MTQ6c3RhdGljIGludCByYXdfaW9jdGxfaW5pdChzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTUxNS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy02MTItXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6NjEzOnN0YXRpYyBpbnQgcmF3X2lvY3RsX3J1bihzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTYxNC17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy02NDgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6NjQ5OnN0YXRpYyBpbnQgcmF3X2lvY3RsX2V2ZW50X2ZldGNoKHN0cnVjdCByYXdfZGV2ICpkZXYsIHVuc2lnbmVkIGxvbmcgdmFsdWUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtNjUwLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jPTcxNz1zdGF0aWMgaW50IHJhd19wcm9jZXNzX2VwMF9pbyhzdHJ1Y3QgcmF3X2RldiAqZGV2LCBzdHJ1Y3QgdXNiX3Jhd19lcF9pbyAqaW8sXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy04MDktXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6ODEwOnN0YXRpYyBpbnQgcmF3X2lvY3RsX2VwMF93cml0ZShzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTgxMS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy04MjMtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6ODI0OnN0YXRpYyBpbnQgcmF3X2lvY3RsX2VwMF9yZWFkKHN0cnVjdCByYXdfZGV2ICpkZXYsIHVuc2lnbmVkIGxvbmcgdmFsdWUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtODI1LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTg0Ny1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzo4NDg6c3RhdGljIGludCByYXdfaW9jdGxfZXAwX3N0YWxsKHN0cnVjdCByYXdfZGV2ICpkZXYsIHVuc2lnbmVkIGxvbmcgdmFsdWUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtODQ5LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTg5MS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzo4OTI6c3RhdGljIGludCByYXdfaW9jdGxfZXBfZW5hYmxlKHN0cnVjdCByYXdfZGV2ICpkZXYsIHVuc2lnbmVkIGxvbmcgdmFsdWUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtODkzLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTk3MS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzo5NzI6c3RhdGljIGludCByYXdfaW9jdGxfZXBfZGlzYWJsZShzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTk3My17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMDI5LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjEwMzA6c3RhdGljIGludCByYXdfaW9jdGxfZXBfc2V0X2NsZWFyX2hhbHRfd2VkZ2Uoc3RydWN0IHJhd19kZXYgKmRldixcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMDMxLVxcdFxcdHVuc2lnbmVkIGxvbmcgdmFsdWUsIGJvb2wgc2V0LCBib29sIGhhbHQpXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYz0xMTE0PXN0YXRpYyBpbnQgcmF3X3Byb2Nlc3NfZXBfaW8oc3RydWN0IHJhd19kZXYgKmRldiwgc3RydWN0IHVzYl9yYXdfZXBfaW8gKmlvLFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTIxNy1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxMjE4OnN0YXRpYyBpbnQgcmF3X2lvY3RsX2VwX3dyaXRlKHN0cnVjdCByYXdfZGV2ICpkZXYsIHVuc2lnbmVkIGxvbmcgdmFsdWUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTIxOS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMjMxLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjEyMzI6c3RhdGljIGludCByYXdfaW9jdGxfZXBfcmVhZChzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEyMzMte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTI1NS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxMjU2OnN0YXRpYyBpbnQgcmF3X2lvY3RsX2NvbmZpZ3VyZShzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEyNTcte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTI4MC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxMjgxOnN0YXRpYyBpbnQgcmF3X2lvY3RsX3ZidXNfZHJhdyhzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEyODIte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM9MTMxNT1zdGF0aWMgdm9pZCBmaWxsX2VwX2xpbWl0cyhzdHJ1Y3QgdXNiX2VwICplcCwgc3RydWN0IHVzYl9yYXdfZXBfbGltaXRzICpsaW1pdHMpXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMzIwLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjEzMjE6c3RhdGljIGludCByYXdfaW9jdGxfZXBzX2luZm8oc3RydWN0IHJhd19kZXYgKmRldiwgdW5zaWduZWQgbG9uZyB2YWx1ZSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMzIyLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEzNjctXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6MTM2ODpzdGF0aWMgbG9uZyByYXdfaW9jdGwoc3RydWN0IGZpbGUgKmZkLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIHZhbHVlKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEzNjkte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTM3Ny1cXHRjYXNlIFVTQl9SQVdfSU9DVExfSU5JVDpcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxMzc4OlxcdFxcdHJldCA9IHJhd19pb2N0bF9pbml0KGRldiwgdmFsdWUpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEzNzktXFx0XFx0YnJlYWs7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTM4MC1cXHRjYXNlIFVTQl9SQVdfSU9DVExfUlVOOlxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjEzODE6XFx0XFx0cmV0ID0gcmF3X2lvY3RsX3J1bihkZXYsIHZhbHVlKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMzgyLVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEzODMtXFx0Y2FzZSBVU0JfUkFXX0lPQ1RMX0VWRU5UX0ZFVENIOlxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjEzODQ6XFx0XFx0cmV0ID0gcmF3X2lvY3RsX2V2ZW50X2ZldGNoKGRldiwgdmFsdWUpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEzODUtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTM4Ni1cXHRjYXNlIFVTQl9SQVdfSU9DVExfRVAwX1dSSVRFOlxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjEzODc6XFx0XFx0cmV0ID0gcmF3X2lvY3RsX2VwMF93cml0ZShkZXYsIHZhbHVlKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMzg4LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEzODktXFx0Y2FzZSBVU0JfUkFXX0lPQ1RMX0VQMF9SRUFEOlxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjEzOTA6XFx0XFx0cmV0ID0gcmF3X2lvY3RsX2VwMF9yZWFkKGRldiwgdmFsdWUpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEzOTEtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTM5Mi1cXHRjYXNlIFVTQl9SQVdfSU9DVExfRVBfRU5BQkxFOlxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjEzOTM6XFx0XFx0cmV0ID0gcmF3X2lvY3RsX2VwX2VuYWJsZShkZXYsIHZhbHVlKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMzk0LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEzOTUtXFx0Y2FzZSBVU0JfUkFXX0lPQ1RMX0VQX0RJU0FCTEU6XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6MTM5NjpcXHRcXHRyZXQgPSByYXdfaW9jdGxfZXBfZGlzYWJsZShkZXYsIHZhbHVlKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMzk3LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEzOTgtXFx0Y2FzZSBVU0JfUkFXX0lPQ1RMX0VQX1dSSVRFOlxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjEzOTk6XFx0XFx0cmV0ID0gcmF3X2lvY3RsX2VwX3dyaXRlKGRldiwgdmFsdWUpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTE0MDAtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTQwMS1cXHRjYXNlIFVTQl9SQVdfSU9DVExfRVBfUkVBRDpcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxNDAyOlxcdFxcdHJldCA9IHJhd19pb2N0bF9lcF9yZWFkKGRldiwgdmFsdWUpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTE0MDMtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTQwNC1cXHRjYXNlIFVTQl9SQVdfSU9DVExfQ09ORklHVVJFOlxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjE0MDU6XFx0XFx0cmV0ID0gcmF3X2lvY3RsX2NvbmZpZ3VyZShkZXYsIHZhbHVlKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xNDA2LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTE0MDctXFx0Y2FzZSBVU0JfUkFXX0lPQ1RMX1ZCVVNfRFJBVzpcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxNDA4OlxcdFxcdHJldCA9IHJhd19pb2N0bF92YnVzX2RyYXcoZGV2LCB2YWx1ZSk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTQwOS1cXHRcXHRicmVhaztcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xNDEwLVxcdGNhc2UgVVNCX1JBV19JT0NUTF9FUFNfSU5GTzpcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxNDExOlxcdFxcdHJldCA9IHJhd19pb2N0bF9lcHNfaW5mbyhkZXYsIHZhbHVlKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xNDEyLVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTE0MTMtXFx0Y2FzZSBVU0JfUkFXX0lPQ1RMX0VQMF9TVEFMTDpcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxNDE0OlxcdFxcdHJldCA9IHJhd19pb2N0bF9lcDBfc3RhbGwoZGV2LCB2YWx1ZSk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTQxNS1cXHRcXHRicmVhaztcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xNDE2LVxcdGNhc2UgVVNCX1JBV19JT0NUTF9FUF9TRVRfSEFMVDpcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxNDE3OlxcdFxcdHJldCA9IHJhd19pb2N0bF9lcF9zZXRfY2xlYXJfaGFsdF93ZWRnZShcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xNDE4LVxcdFxcdFxcdFxcdFxcdGRldiwgdmFsdWUsIHRydWUsIHRydWUpO1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTQyMC1cXHRjYXNlIFVTQl9SQVdfSU9DVExfRVBfQ0xFQVJfSEFMVDpcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxNDIxOlxcdFxcdHJldCA9IHJhd19pb2N0bF9lcF9zZXRfY2xlYXJfaGFsdF93ZWRnZShcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xNDIyLVxcdFxcdFxcdFxcdFxcdGRldiwgdmFsdWUsIGZhbHNlLCB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTE0MjQtXFx0Y2FzZSBVU0JfUkFXX0lPQ1RMX0VQX1NFVF9XRURHRTpcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxNDI1OlxcdFxcdHJldCA9IHJhd19pb2N0bF9lcF9zZXRfY2xlYXJfaGFsdF93ZWRnZShcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xNDI2LVxcdFxcdFxcdFxcdFxcdGRldiwgdmFsdWUsIHRydWUsIGZhbHNlKTtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jPTE0Mzc9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcmF3X2ZvcHMgPSB7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTQzOC1cXHQub3BlbiA9XFx0XFx0XFx0cmF3X29wZW4sXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6MTQzOTpcXHQudW5sb2NrZWRfaW9jdGwgPVxcdHJhd19pb2N0bCxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxNDQwOlxcdC5jb21wYXRfaW9jdGwgPVxcdFxcdHJhd19pb2N0bCxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xNDQxLVxcdC5yZWxlYXNlID1cXHRcXHRyYXdfcmVsZWFzZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTA6NDA6NTEuNzY4NjUwNjM3WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc1MzQ1NjQ4NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBVU0IgR2FkZ2V0IGlvY3RsIFN0cnVjdHVyZSoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIGByYXdfaW9jdGxgIGZ1bmN0aW9uLCBhbmQgaXQncyBsb29raW5nIGxpa2UgdGhlIGNlbnRyYWwgdXNlci1zcGFjZSBlbnRyeSBwb2ludCBmb3IgdGhlIGdhZGdldCBkcml2ZXIuIEkgc2VlIHRoYXQgaXQncyBjYWxsaW5nIGEgZmV3IHN0YXRpYyBmdW5jdGlvbnMgaW50ZXJuYWxseTogYHJhd19pb2N0bF9ldmVudF9mZXRjaGAsIGByYXdfcHJvY2Vzc19lcDBfaW9gLCBgcmF3X2lvY3RsX2VwX2Rpc2FibGVgLCBhbmQgYHJhd19wcm9jZXNzX2VwX2lvYC4gSW50ZXJlc3RpbmcuIEl0IGxvb2tzIGxpa2UgYHJhd19wcm9jZXNzX2VwMF9pb2AgaGFuZGxlcyBlbmRwb2ludCAwIEkvTyBvcGVyYXRpb25zIGFuZCB0aGF0IGl0IGlzIGFsc28gY2FsbGVkIGJ5IGByYXdfaW9jdGxfZXAwX3dyaXRlYCBhbmQgYHJhd19pb2N0bF9lcDBfcmVhZGAuIFNpbWlsYXJseSwgYHJhd19wcm9jZXNzX2VwX2lvYCBpcyB0aGUgd29ya2hvcnNlIGZvciBvdGhlciBlbmRwb2ludHMsIGFjY2Vzc2VkIHZpYSBgcmF3X2lvY3RsX2VwX3dyaXRlYCBhbmQgYHJhd19pb2N0bF9lcF9yZWFkYC5cblxuU28sIHRoZSBrZXkgZnVuY3Rpb25zIHRvIHJlYWxseSB1bmRlcnN0YW5kIGFyZSBgcmF3X2lvY3RsYCBpdHNlbGYsIGFuZCB0aGVuIHRoZXNlIGVuZHBvaW50IHByb2Nlc3NpbmcgZnVuY3Rpb25zLiBJJ2QgYXNzdW1lZCBgcmF3X2lvY3RsYCB3b3VsZCBiZSBub24tc3RhdGljLCBidXQgaXQgbG9va3MgbGlrZSBpdCdzICphbHNvKiBzdGF0aWMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBhbSBub3QgbWlzc2luZyBhbnkgbm9uLXN0YXRpYyBlbnRyeSBwb2ludHMsIHNvIGxldCdzIHN0YXJ0IGNoZWNraW5nIGByYXdfZ2FkZ2V0LmNgIGZvciBhbnkgbm9uLXN0YXRpYyBmdW5jdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NDM2LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEwOjQwOjU5LjMwMzIyMDE0OFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc3Nzg3MTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5zdGF0aWNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM9Mzc9TU9EVUxFX0xJQ0VOU0UoXFxcIkdQTFxcXCIpO1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtNDAtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6NDE6c3RhdGljIERFRklORV9JREEoZHJpdmVyX2lkX251bWJlcnMpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTQyLSNkZWZpbmUgRFJJVkVSX0RSSVZFUl9OQU1FX0xFTkdUSF9NQVhcXHQzMlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM9NDc9c3RydWN0IHJhd19ldmVudF9xdWV1ZSB7XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy01NC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzo1NTpzdGF0aWMgdm9pZCByYXdfZXZlbnRfcXVldWVfaW5pdChzdHJ1Y3QgcmF3X2V2ZW50X3F1ZXVlICpxdWV1ZSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy01Ni17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy02MS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzo2MjpzdGF0aWMgaW50IHJhd19ldmVudF9xdWV1ZV9hZGQoc3RydWN0IHJhd19ldmVudF9xdWV1ZSAqcXVldWUsXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtNjMtXFx0ZW51bSB1c2JfcmF3X2V2ZW50X3R5cGUgdHlwZSwgc2l6ZV90IGxlbmd0aCwgY29uc3Qgdm9pZCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTg4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjg5OnN0YXRpYyBzdHJ1Y3QgdXNiX3Jhd19ldmVudCAqcmF3X2V2ZW50X3F1ZXVlX2ZldGNoKFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTkwLVxcdFxcdFxcdFxcdHN0cnVjdCByYXdfZXZlbnRfcXVldWUgKnF1ZXVlKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTIwLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjEyMTpzdGF0aWMgdm9pZCByYXdfZXZlbnRfcXVldWVfZGVzdHJveShzdHJ1Y3QgcmF3X2V2ZW50X3F1ZXVlICpxdWV1ZSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMjIte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM9MTYwPXN0cnVjdCByYXdfZGV2IHtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTE5MC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxOTE6c3RhdGljIHN0cnVjdCByYXdfZGV2ICpkZXZfbmV3KHZvaWQpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTkyLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTIwNi1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoyMDc6c3RhdGljIHZvaWQgZGV2X2ZyZWUoc3RydWN0IGtyZWYgKmtyZWYpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMjA4LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTIyMS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoyMjI6c3RhdGljIGludCByYXdfcXVldWVfZXZlbnQoc3RydWN0IHJhd19kZXYgKmRldixcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0yMjMtXFx0ZW51bSB1c2JfcmF3X2V2ZW50X3R5cGUgdHlwZSwgc2l6ZV90IGxlbmd0aCwgY29uc3Qgdm9pZCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTIzNi1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoyMzc6c3RhdGljIHZvaWQgZ2FkZ2V0X2VwMF9jb21wbGV0ZShzdHJ1Y3QgdXNiX2VwICplcCwgc3RydWN0IHVzYl9yZXF1ZXN0ICpyZXEpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMjM4LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTI1NS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoyNTY6c3RhdGljIHU4IGdldF9lcF9hZGRyKGNvbnN0IGNoYXIgKm5hbWUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMjU3LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTI2OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoyNjk6c3RhdGljIGludCBnYWRnZXRfYmluZChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0LFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTI3MC1cXHRcXHRcXHRzdHJ1Y3QgdXNiX2dhZGdldF9kcml2ZXIgKmRyaXZlcilcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTMyMC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzozMjE6c3RhdGljIHZvaWQgZ2FkZ2V0X3VuYmluZChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0KVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTMyMi17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0zNzAtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6MzcxOnN0YXRpYyBpbnQgZ2FkZ2V0X3NldHVwKHN0cnVjdCB1c2JfZ2FkZ2V0ICpnYWRnZXQsXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMzcyLVxcdFxcdFxcdGNvbnN0IHN0cnVjdCB1c2JfY3RybHJlcXVlc3QgKmN0cmwpXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy00MTUtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6NDE2OnN0YXRpYyB2b2lkIGdhZGdldF9kaXNjb25uZWN0KHN0cnVjdCB1c2JfZ2FkZ2V0ICpnYWRnZXQpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtNDE3LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTQyNS19XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6NDI2OnN0YXRpYyB2b2lkIGdhZGdldF9zdXNwZW5kKHN0cnVjdCB1c2JfZ2FkZ2V0ICpnYWRnZXQpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtNDI3LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTQzNS19XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6NDM2OnN0YXRpYyB2b2lkIGdhZGdldF9yZXN1bWUoc3RydWN0IHVzYl9nYWRnZXQgKmdhZGdldClcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy00Mzcte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtNDQ1LX1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzo0NDY6c3RhdGljIHZvaWQgZ2FkZ2V0X3Jlc2V0KHN0cnVjdCB1c2JfZ2FkZ2V0ICpnYWRnZXQpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtNDQ3LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTQ1OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzo0NTk6c3RhdGljIHN0cnVjdCBtaXNjZGV2aWNlIHJhd19taXNjX2RldmljZTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy00NjAtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6NDYxOnN0YXRpYyBpbnQgcmF3X29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZkKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTQ2Mi17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy00NzctXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6NDc4OnN0YXRpYyBpbnQgcmF3X3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZkKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTQ3OS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy01MTMtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6NTE0OnN0YXRpYyBpbnQgcmF3X2lvY3RsX2luaXQoc3RydWN0IHJhd19kZXYgKmRldiwgdW5zaWduZWQgbG9uZyB2YWx1ZSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy01MTUte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtNjEyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjYxMzpzdGF0aWMgaW50IHJhd19pb2N0bF9ydW4oc3RydWN0IHJhd19kZXYgKmRldiwgdW5zaWduZWQgbG9uZyB2YWx1ZSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy02MTQte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtNjQ4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjY0OTpzdGF0aWMgaW50IHJhd19pb2N0bF9ldmVudF9mZXRjaChzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTY1MC17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy02OTMtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6Njk0OnN0YXRpYyB2b2lkICpyYXdfYWxsb2NfaW9fZGF0YShzdHJ1Y3QgdXNiX3Jhd19lcF9pbyAqaW8sIHZvaWQgX191c2VyICpwdHIsXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtNjk1LVxcdFxcdFxcdFxcdGJvb2wgZ2V0X2Zyb21fdXNlcilcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTcxNi1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzo3MTc6c3RhdGljIGludCByYXdfcHJvY2Vzc19lcDBfaW8oc3RydWN0IHJhd19kZXYgKmRldiwgc3RydWN0IHVzYl9yYXdfZXBfaW8gKmlvLFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTcxOC1cXHRcXHRcXHRcXHR2b2lkICpkYXRhLCBib29sIGluKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtODA5LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjgxMDpzdGF0aWMgaW50IHJhd19pb2N0bF9lcDBfd3JpdGUoc3RydWN0IHJhd19kZXYgKmRldiwgdW5zaWduZWQgbG9uZyB2YWx1ZSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy04MTEte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtODIzLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjgyNDpzdGF0aWMgaW50IHJhd19pb2N0bF9lcDBfcmVhZChzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTgyNS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy04NDctXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6ODQ4OnN0YXRpYyBpbnQgcmF3X2lvY3RsX2VwMF9zdGFsbChzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTg0OS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy04OTEtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6ODkyOnN0YXRpYyBpbnQgcmF3X2lvY3RsX2VwX2VuYWJsZShzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTg5My17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy05NzEtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6OTcyOnN0YXRpYyBpbnQgcmF3X2lvY3RsX2VwX2Rpc2FibGUoc3RydWN0IHJhd19kZXYgKmRldiwgdW5zaWduZWQgbG9uZyB2YWx1ZSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy05NzMte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTAyOS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxMDMwOnN0YXRpYyBpbnQgcmF3X2lvY3RsX2VwX3NldF9jbGVhcl9oYWx0X3dlZGdlKHN0cnVjdCByYXdfZGV2ICpkZXYsXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTAzMS1cXHRcXHR1bnNpZ25lZCBsb25nIHZhbHVlLCBib29sIHNldCwgYm9vbCBoYWx0KVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTA5Ny1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxMDk4OnN0YXRpYyB2b2lkIGdhZGdldF9lcF9jb21wbGV0ZShzdHJ1Y3QgdXNiX2VwICplcCwgc3RydWN0IHVzYl9yZXF1ZXN0ICpyZXEpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTA5OS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMTEzLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjExMTQ6c3RhdGljIGludCByYXdfcHJvY2Vzc19lcF9pbyhzdHJ1Y3QgcmF3X2RldiAqZGV2LCBzdHJ1Y3QgdXNiX3Jhd19lcF9pbyAqaW8sXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTExNS1cXHRcXHRcXHRcXHR2b2lkICpkYXRhLCBib29sIGluKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTIxNy1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxMjE4OnN0YXRpYyBpbnQgcmF3X2lvY3RsX2VwX3dyaXRlKHN0cnVjdCByYXdfZGV2ICpkZXYsIHVuc2lnbmVkIGxvbmcgdmFsdWUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTIxOS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMjMxLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjEyMzI6c3RhdGljIGludCByYXdfaW9jdGxfZXBfcmVhZChzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEyMzMte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTI1NS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxMjU2OnN0YXRpYyBpbnQgcmF3X2lvY3RsX2NvbmZpZ3VyZShzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEyNTcte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTI4MC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxMjgxOnN0YXRpYyBpbnQgcmF3X2lvY3RsX3ZidXNfZHJhdyhzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEyODIte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTMwMy1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxMzA0OnN0YXRpYyB2b2lkIGZpbGxfZXBfY2FwcyhzdHJ1Y3QgdXNiX2VwX2NhcHMgKmNhcHMsXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTMwNS1cXHRcXHRcXHRcXHRzdHJ1Y3QgdXNiX3Jhd19lcF9jYXBzICpyYXdfY2FwcylcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEzMTQtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6MTMxNTpzdGF0aWMgdm9pZCBmaWxsX2VwX2xpbWl0cyhzdHJ1Y3QgdXNiX2VwICplcCwgc3RydWN0IHVzYl9yYXdfZXBfbGltaXRzICpsaW1pdHMpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTMxNi17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMzIwLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjEzMjE6c3RhdGljIGludCByYXdfaW9jdGxfZXBzX2luZm8oc3RydWN0IHJhd19kZXYgKmRldiwgdW5zaWduZWQgbG9uZyB2YWx1ZSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMzIyLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEzNjctXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6MTM2ODpzdGF0aWMgbG9uZyByYXdfaW9jdGwoc3RydWN0IGZpbGUgKmZkLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIHZhbHVlKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEzNjkte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTQzNi1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxNDM3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHJhd19mb3BzID0ge1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTE0MzgtXFx0Lm9wZW4gPVxcdFxcdFxcdHJhd19vcGVuLFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTQ0My1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxNDQ0OnN0YXRpYyBzdHJ1Y3QgbWlzY2RldmljZSByYXdfbWlzY19kZXZpY2UgPSB7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTQ0NS1cXHQubWlub3IgPSBNSVNDX0RZTkFNSUNfTUlOT1IsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEwOjQwOjU5LjQ4MTAxNTAxNFoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4ODg0NTM0Nzg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZvY3VzIFN5bWJvbCBTZWxlY3Rpb246IEEgRGVlcCBEaXZlIGludG8gYHJhd19nYWRnZXQuY2AqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEknbSBsb29raW5nIGF0IGhvdyB0byBpZGVudGlmeSB0aGUgY29ycmVjdCBzeW1ib2xzIGZvciB0aGUgYEZvY3VzU3ltYm9sc2AgY29uZmlndXJhdGlvbiwgYW5kIHRoZSBgcmF3X2dhZGdldC5jYCBmaWxlIGlzIHByZXNlbnRpbmcgc29tZSBpbnRlcmVzdGluZyBudWFuY2VzLiBJbml0aWFsbHksIEkgdGhvdWdodCB0aGF0IEkgc2hvdWxkIGNob29zZSB0aGUgbm9uLXN0YXRpYyBmdW5jdGlvbnMgb3ZlciBzdGF0aWMgb25lcy4gSG93ZXZlciwgSSd2ZSBub3RpY2VkIGEgY3J1Y2lhbCBkZXRhaWw6IGZ1bmN0aW9ucyBsaWtlIGByYXdfaW9jdGxgLCBgZ2FkZ2V0X2JpbmRgLCBhbmQgYGdhZGdldF91bmJpbmRgIGFyZSAqc3RhdGljKiBidXQgdGhlaXIgYWRkcmVzc2VzIGFyZSB0YWtlbiBiZWNhdXNlIHRoZXkgYXJlIGFzc2lnbmVkIHRvIGZ1bmN0aW9uIHBvaW50ZXJzIGluIHRoZSBgcmF3X2ZvcHNgIGFuZCBgc3RydWN0IHVzYl9nYWRnZXRfZHJpdmVyYCBzdHJ1Y3R1cmVzIHJlc3BlY3RpdmVseS4gVGhlcmVmb3JlLCB0aGV5IHdvbid0IGJlIGlubGluZWQsIGFuZCB0aGVpciBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGFyZSBwZXJmZWN0bHkgdXNhYmxlIGFzIGVudHJ5IHBvaW50cy5cblxuVGhlIHByb21wdCBleHBsaWNpdGx5IHNheXMgdG8gZmF2b3Igbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zLiBTaW5jZSBgcmF3X2lvY3RsYCwgYGdhZGdldF9iaW5kYCwgYW5kIGBnYWRnZXRfdW5iaW5kYCBhcmUgc3RhdGljIGZ1bmN0aW9ucyBidXQgKm5vdCogaW5saW5lZCwgdGhleSBzZWVtIGxpa2UgcHJpbWUgY2FuZGlkYXRlcy5cblxuTm93LCBgcmF3X2lvY3RsYCBsb29rcyBsaWtlIGEgc2lnbmlmaWNhbnQgbXVsdGlwbGV4ZXIuIFRoZSBhY3R1YWwgbG9naWMgbW9kaWZpY2F0aW9ucyBhcmUgYnVyaWVkIHdpdGhpbiBpdHMgc3ViLWZ1bmN0aW9uczogYHJhd19wcm9jZXNzX2VwMF9pb2AsIGByYXdfaW9jdGxfZXBfZGlzYWJsZWAsIGFuZCBgcmF3X3Byb2Nlc3NfZXBfaW9gLiBNeSBndXQgZmVlbGluZyBpcyB0aGF0IHRob3NlIG1pZ2h0IGJlIGlubGluZWQgZHVlIHRvIHRoZWlyIHVzYWdlLCBidXQgdGhleSdyZSBub3QgdHJpdmlhbC4gSG93ZXZlciwgc2luY2UgdGhlIGdvYWwgaXMgdG8gaWRlbnRpZnkgZGlzdGluY3QgZW50cnkgcG9pbnRzLCBJJ2xsIHN0aWNrIHdpdGggYHJhd19pb2N0bGAsIGBnYWRnZXRfYmluZGAsIGFuZCBgZ2FkZ2V0X3VuYmluZGAgZm9yIHRoZSBmb2N1cy4gSSdtIHJlYXNvbmFibHkgY29uZmlkZW50IHRoYXQgdGhlc2UgYXJlIHRoZSBrZXkgc3ltYm9scyB0byB0cmFjay5cblxuRmluYWxseSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMuIEkgaGF2ZSB0byBkb3VibGUtY2hlY2sgdGhhdCBgVVNCX1JBV19HQURHRVRgIGlzIHRoZSBvbmx5IGNvbmZpZyBJIG5lZWQuIEkga25vdyBgVVNCX0dBREdFVGAgaXMgZnVuZGFtZW50YWwuIEkgdGhpbmsgSSB3aWxsIG5lZWQgYFVTQl9EVU1NWV9IQ0RgIGlmIEknbSB0ZXN0aW5nIHdpdGhvdXQgcmVhbCBoYXJkd2FyZSwgYnV0IHNpbmNlIHRoaXMgcGF0Y2ggaXMgd2l0aGluIGByYXdfZ2FkZ2V0LmNgLCBgVVNCX1JBV19HQURHRVRgIGlzIHRoZSBjb3JlIG9uZSB0aGF0IGVuYWJsZXMgdGhpcyBwYXJ0aWN1bGFyIGZpbGUncyBjb21waWxhdGlvbi4gQ2hlY2tpbmcgdGhlIGxlZ2FjeSBgTWFrZWZpbGVgIGlzIGEgZ29vZCBpZGVhIHRvIGNvbmZpcm0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzODA3LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEwOjQxOjA4LjM2NTU2MTMyOVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM5MzQwNjc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJhd19nYWRnZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L01ha2VmaWxlPTQ1PW9iai0kKENPTkZJR19VU0JfR0FER0VUX1RBUkdFVClcXHQrPSB0Y21fdXNiX2dhZGdldC5vXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9NYWtlZmlsZTo0NjpvYmotJChDT05GSUdfVVNCX1JBV19HQURHRVQpXFx0Kz0gcmF3X2dhZGdldC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEwOjQxOjA4LjUwNDkxMTgwNloiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODk4OTM4MDkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlVTQiBHYWRnZXQgQ29uZmlndXJhdGlvbiBDb251bmRydW0qKlxuXG5Pa2F5LCBzbyBJJ20gZm9jdXNpbmcgb24gdGhlIFVTQiByYXcgZ2FkZ2V0IGRyaXZlciwgYW5kIGl0IHNlZW1zIGxpa2Ugc2V0dGluZyBgQ09ORklHX1VTQl9SQVdfR0FER0VUYCBzaG91bGQgYmUgYWxsIEkgbmVlZCB0byBnZXQgYHJhd19nYWRnZXQuY2AgY29tcGlsZWQuIFRoYXQgbWFrZXMgc2Vuc2UsIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIEJ1dCBob2xkIG9uLi4uIHNvbWV0aGluZyBmZWVscyBvZmYuIEkgdmFndWVseSByZWNhbGwgbmVlZGluZyBhIG1vcmUgZW5jb21wYXNzaW5nIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRvIGV2ZW4gZ2V0IGludG8gdGhlIHJlbGV2YW50IE1ha2VmaWxlcy4gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgaW5jbHVkZSBzdHJ1Y3R1cmUuIFJpZ2h0LCBJIHRoaW5rIGBVU0JfR0FER0VUYCBoYXMgc29tZXRoaW5nIHRvIGRvIHdpdGggdGhhdCwgbGV0IG1lIGNvbmZpcm0uIExldCdzIGdvIGxvb2sgYXQgYGRyaXZlcnMvdXNiL2dhZGdldC9NYWtlZmlsZWAgYW5kIHNlZSB3aGF0IHRoYXQgaW5jbHVkZXMuIEhvcGVmdWxseSwgdGhpcyBjbGVhcnMgdGhpbmdzIHVwIVxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDg1OSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEwOjQxOjEyLjQwMzg1NDU0OVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODI3NDQwMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibGVnYWN5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvTWFrZWZpbGU9MTA9bGliY29tcG9zaXRlLXlcXHRcXHRcXHQrPSBjb21wb3NpdGUubyBmdW5jdGlvbnMubyBjb25maWdmcy5vIHVfZi5vXFxuZHJpdmVycy91c2IvZ2FkZ2V0L01ha2VmaWxlLTExLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9NYWtlZmlsZToxMjpvYmotJChDT05GSUdfVVNCX0dBREdFVClcXHQrPSB1ZGMvIGZ1bmN0aW9uLyBsZWdhY3kvXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEwOjQxOjEyLjQ4NjYwODQ3N1oiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjI4OTcxODI1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgVVNCIFJhdyBHYWRnZXQgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIFVTQiBSYXcgR2FkZ2V0IGRyaXZlci4gRmlyc3QgdGhpbmdzIGZpcnN0OiBJIG5lZWQgYENPTkZJR19VU0JfR0FER0VUYCB0byBldmVuIGdldCBpbnRvIHRoZSBgbGVnYWN5L2AgZGlyZWN0b3J5LCBhbmQgaXQgc2VlbXMgbGlrZSBJIGFsc28gbmVlZCBgVVNCX1JBV19HQURHRVRgIGFzIHdlbGwsIHNvIG15IGBFbmFibGVDb25maWdzYCBzaG91bGQgYmUgYFtcIlVTQl9HQURHRVRcIiwgXCJVU0JfUkFXX0dBREdFVFwiXWAuIFRoYXQgc291bmRzIHJpZ2h0LlxuXG5Ob3csIGxldCdzIG5haWwgZG93biB0aGUgZm9jdXMgc3ltYm9scyBmb3IgdGhlIGZ1enplci4gVGhlIHBhdGNoIHRvdWNoZXMgYGRldl9mcmVlYCwgYGdhZGdldF9iaW5kYCwgYGdhZGdldF91bmJpbmRgLCBgcmF3X2lvY3RsX2V2ZW50X2ZldGNoYCwgYHJhd19wcm9jZXNzX2VwMF9pb2AsIGByYXdfaW9jdGxfZXBfZGlzYWJsZWAsIGFuZCBgcmF3X3Byb2Nlc3NfZXBfaW9gLiBMZXQncyB0aGluayB0aHJvdWdoIHdoaWNoIG9mIHRoZXNlIGFyZSBsaWtlbHkgdG8gYmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIuIGBnYWRnZXRfYmluZGAgYW5kIGBnYWRnZXRfdW5iaW5kYCBhcmUgZnVuY3Rpb24gcG9pbnRlcnMsIHNvIGRlZmluaXRlbHkgbm90IGlubGluZWQuIGBkZXZfZnJlZWAgZ2V0cyBwYXNzZWQgdG8gYGtyZWZfcHV0YCwgc28gYWxzbyBub3QgaW5saW5lZC4gVGhlIG90aGVycywgYHJhd19pb2N0bF9ldmVudF9mZXRjaGAsIGByYXdfcHJvY2Vzc19lcDBfaW9gLCBgcmF3X2lvY3RsX2VwX2Rpc2FibGVgLCBhbmQgYHJhd19wcm9jZXNzX2VwX2lvYCwgYXJlIGNhbGxlZCBmcm9tIGByYXdfaW9jdGxgIHZpYSBhIHN3aXRjaCBzdGF0ZW1lbnQuIFRoZXkgKmNvdWxkKiBiZSBpbmxpbmVkLCBidXQgdGhleSBsb29rIHByZXR0eSBzdWJzdGFudGlhbC5cblxuR2l2ZW4gYWxsIHRoYXQsIEkgdGhpbmsgSSdsbCBpbmNsdWRlIGBnYWRnZXRfYmluZGAsIGBnYWRnZXRfdW5iaW5kYCwgYW5kIGByYXdfaW9jdGxgIGFzIHRoZSBtYWluIGVudHJ5IHBvaW50cy4gSSBtaWdodCBhbHNvIGluY2x1ZGUgYHJhd19wcm9jZXNzX2VwMF9pb2AgYW5kIGByYXdfcHJvY2Vzc19lcF9pb2AgYmVjYXVzZSB0aGV5IHNlZW0gdG8gY29udGFpbiB0aGUgY29yZSBsb2dpYyBjaGFuZ2VzLiBXYWl0LCBJIHRoaW5rIGByYXdfaW9jdGxgIGlzIHRoZSBlbnRyeSBwb2ludCBmb3IgYWxsIG9mIHRoZSBpb2N0bHMsIHNvIHRoZSBmdXp6ZXIgd2lsbCBiZSBmb2N1c2VkIG9uIHRoYXQsIHNvIEkgd2lsbCBzdGljayB3aXRoIGp1c3QgYGdhZGdldF9iaW5kYCwgYGdhZGdldF91bmJpbmRgLCBhbmQgYHJhd19pb2N0bGAuXG5cbkxldCdzIGRvdWJsZS1jaGVjayBhbnkgZGVwZW5kZW5jaWVzLiBgVVNCX0dBREdFVGAgaXRzZWxmIGRvZXNuJ3QgZGVwZW5kIG9uIGFueXRoaW5nLCBidXQgaXQgc2VsZWN0cyBgVVNCX0NPTU1PTmAgYW5kIGBOTFNgLiBIb3dldmVyLCBgVVNCX0dBREdFVGAgYW5kIGBVU0JfUkFXX0dBREdFVGAgc2hvdWxkIGJlIHN1ZmZpY2llbnQuIE9rYXksIGp1c3QgdG8gYmUgdGhvcm91Z2gsIEknbGwgY29uZmlybSB0aGF0IG9ubHkgYGRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jYCBpcyBiZWluZyBtb2RpZmllZC4gWWVwLCBqdXN0IHRoZSBvbmUgZmlsZS5cblxuTm93LCB0aW1lIHRvIHN1bW1hcml6ZSB0aGlzIGNsZWFybHkgZm9yIHRoZSBmdXp6ZXIuIFRoaXMgcGF0Y2ggYWRkcmVzc2VzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIFVTQiBSYXcgR2FkZ2V0IGRyaXZlci4gSXQgZGVhbHMgd2l0aCBVREMgdW5iaW5kIGFuZCBlbmRwb2ludCBJTyBvcGVyYXRpb25zLiBTcGVjaWZpY2FsbHksIGl0IGludHJvZHVjZXMgYSBgdWRjX3VzYWdlYCBjb3VudGVyIGFuZCBhbiBgdW5iaW5kX2NvbXBsZXRpb25gIHRvIGVuc3VyZSB0aGF0IGBnYWRnZXRfdW5iaW5kYCB3YWl0cyBmb3IgYW55IHBlbmRpbmcgSU8gdG8gZmluaXNoIGJlZm9yZSBjb21wbGV0aW5nIHRoZSB1bmJpbmQgcHJvY2Vzcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEga2V5IGRyaXZlciB1c2VkIGZvciBVU0IgZW11bGF0aW9uIGFuZCBmdXp6aW5nLiBUaGUgcGF0Y2ggaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cblxuU28sIGhlcmUncyB0aGUgaW5mb3JtYXRpb24gSSdtIGZlZWRpbmcgdGhlIGZ1enplcjpcblxuKiAgIGBXb3J0aEZ1enppbmc6IHRydWVgXG4qICAgYEZvY3VzU3ltYm9sczogZ2FkZ2V0X2JpbmQsIGdhZGdldF91bmJpbmQsIHJhd19pb2N0bGBcbiogICBgRW5hYmxlQ29uZmlnczogVVNCX0dBREdFVCwgVVNCX1JBV19HQURHRVRgXG5cbkFscmlnaHQsIGxldCBtZSBkb3VibGUtY2hlY2sgYWJvdXQgYFVTQl9EVU1NWV9IQ0RgLiBBaCwgdGhhdCdzIHRoZSBkdW1teSBob3N0IGNvbnRyb2xsZXIgYW5kIGRldmljZSBjb250cm9sbGVyLiBJdCBpcyB1c2VkIHRvIGNvbm5lY3QgdGhlIHJhdyBnYWRnZXQgdG8gYSBkdW1teSBob3N0LiBXaGlsZSBgVVNCX1JBV19HQURHRVRgIGNvbXBpbGVzIHRoZSBjb2RlLCB0byBhY3R1YWxseSAqdGVzdCogaXQsIHN5emthbGxlciBuZWVkcyBhIFVEQyAoVVNCIERldmljZSBDb250cm9sbGVyKS4gYFVTQl9EVU1NWV9IQ0RgIHByb3ZpZGVzIHRoaXMgVURDIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIExldCBtZSBkb3VibGUtY2hlY2sgdGhhdCB0aGlzIGlzIGEgY29uZmlnLiBHb29kLiBJIHRoaW5rIEknbSBnb29kIHRvIGdvLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTE5NiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMDo0MToyNC43NzYzMzEzMTVaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNjI5OTAyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX0RVTU1ZX0hDRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz00MjI9c291cmNlIFxcXCJkcml2ZXJzL3VzYi9nYWRnZXQvdWRjL2NkbnMyL0tjb25maWdcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctNDI3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzo0Mjg6Y29uZmlnIFVTQl9EVU1NWV9IQ0RcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctNDI5LVxcdHRyaXN0YXRlIFxcXCJEdW1teSBIQ0QgKERFVkVMT1BNRU5UKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTA6NDE6MjQuOTEyNjM2MzYyWiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3MjE4OTExMjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQ2hlY2tpbmcgdGhlIFVTQiBEdW1teSBIb3N0IENvbnRyb2xsZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgc2VlIHRoYXQgYFVTQl9EVU1NWV9IQ0RgIGlzIGluZGVlZCBkZWZpbmVkIHdpdGhpbiB0aGUgYGRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZ2AgZmlsZS4gVGhhdCBjb25maXJtcyB3aGF0IEkgd2FzIHRoaW5raW5nLiBJZiBJIGVuYWJsZSB0aGlzLCBpdCBndWFyYW50ZWVzIHRoYXQgdGhlIGR1bW15IFVTQiBkZXZpY2UgY29udHJvbGxlciBpcyBhdmFpbGFibGUuIEFuZCBJIGtub3cgSSBuZWVkIHRoYXQgdG8gcmVsaWFibHkgdHJpZ2dlciB0aGUgYGdhZGdldF9iaW5kYCBhbmQgYGdhZGdldF91bmJpbmRgIGZ1bmN0aW9ucyB3aXRoaW4gYSB2aXJ0dWFsIG1hY2hpbmUgZW52aXJvbm1lbnQgd2hlcmUgSSAqZG9uJ3QqIGhhdmUgYWNjZXNzIHRvIGFjdHVhbCwgcGh5c2ljYWwgVVNCIGhhcmR3YXJlLiBJdCdzIGEga2V5IHJlcXVpcmVtZW50IGZvciB0aGUgdGVzdGluZyBJJ20gZG9pbmcuIE5vdywganVzdCB0byBiZSB0aG9yb3VnaCBhbmQgdG8gZG91YmxlLWNoZWNrIG15IGFzc3VtcHRpb25zLCBJIHNob3VsZCBxdWlja2x5IHJldmlldyB0aGUgZGVwZW5kZW5jaWVzIG9mIGBVU0JfRFVNTVlfSENEYCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gdGhlcmUgYXJlIG5vIHVuZm9yZXNlZW4gY29uZmxpY3RzIG9yIHByZXJlcXVpc2l0ZXMuIExldCdzIHNlZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjkzMSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEwOjQxOjMwLjYzNDUzMTM3OVoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc4MDMwODY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz0zMz1jb25maWcgVVNCX0FUOTFcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMzQtXFx0dHJpc3RhdGUgXFxcIkF0bWVsIEFUOTEgVVNCIERldmljZSBQb3J0XFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzozNTpcXHRkZXBlbmRzIG9uIEFSQ0hfQVQ5MVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzozNjpcXHRkZXBlbmRzIG9uIE9GXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTM3LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz00Nj1jb25maWcgVVNCX0xQQzMyWFhcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctNDctXFx0dHJpc3RhdGUgXFxcIkxQQzMyWFggVVNCIFBlcmlwaGVyYWwgQ29udHJvbGxlclxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6NDg6XFx0ZGVwZW5kcyBvbiBBUkNIX0xQQzMyWFggfHwgQ09NUElMRV9URVNUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjQ5OlxcdGRlcGVuZHMgb24gSTJDXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTUwLVxcdHNlbGVjdCBVU0JfSVNQMTMwMVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnPTU4PWNvbmZpZyBVU0JfQVRNRUxfVVNCQVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy01OS1cXHR0cmlzdGF0ZSBcXFwiQXRtZWwgVVNCQVxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6NjA6XFx0ZGVwZW5kcyBvbiBBUkNIX0FUOTFcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctNjEtXFx0aGVscFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnPTgwPWNvbmZpZyBVU0JfQkNNNjNYWF9VRENcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctODEtXFx0dHJpc3RhdGUgXFxcIkJyb2FkY29tIEJDTTYzeHggUGVyaXBoZXJhbCBDb250cm9sbGVyXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzo4MjpcXHRkZXBlbmRzIG9uIEJDTTYzWFhcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctODMtXFx0aGVscFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnPTkxPWNvbmZpZyBVU0JfRlNMX1VTQjJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctOTItXFx0dHJpc3RhdGUgXFxcIkZyZWVzY2FsZSBIaWdoc3BlZWQgVVNCIERSIFBlcmlwaGVyYWwgQ29udHJvbGxlclxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6OTM6XFx0ZGVwZW5kcyBvbiBGU0xfU09DXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTk0LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz0xMDU9Y29uZmlnIFVTQl9HUl9VRENcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMTA2LVxcdHRyaXN0YXRlIFxcXCJBZXJvZmxleCBHYWlzbGVyIEdSVVNCREMgVVNCIFBlcmlwaGVyYWwgQ29udHJvbGxlciBEcml2ZXJcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjEwNzpcXHRkZXBlbmRzIG9uIEhBU19ETUFcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMTA4LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz0xMTI9Y29uZmlnIFVTQl9PTUFQXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTExMy1cXHR0cmlzdGF0ZSBcXFwiT01BUCBVU0IgRGV2aWNlIENvbnRyb2xsZXJcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjExNDpcXHRkZXBlbmRzIG9uIEFSQ0hfT01BUDFcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMTE1LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz0xMjY9Y29uZmlnIFVTQl9QWEEyNVhcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMTI3LVxcdHRyaXN0YXRlIFxcXCJQWEEgMjV4IG9yIElYUCA0eHhcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjEyODpcXHRkZXBlbmRzIG9uIChBUkNIX1BYQSBcXHUwMDI2XFx1MDAyNiBQWEEyNXgpIHx8IEFSQ0hfSVhQNFhYXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjEyOTpcXHRkZXBlbmRzIG9uIEhBU19JT01FTVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0xMzAtXFx0aGVscFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnPTE0ND1jb25maWcgVVNCX1BYQTI1WF9TTUFMTFxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzoxNDU6XFx0ZGVwZW5kcyBvbiBVU0JfUFhBMjVYXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTE0Ni1cXHRib29sXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9MTUyPWNvbmZpZyBVU0JfUjhBNjY1OTdcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMTUzLVxcdHRyaXN0YXRlIFxcXCJSZW5lc2FzIFI4QTY2NTk3IFVTQiBQZXJpcGhlcmFsIENvbnRyb2xsZXJcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjE1NDpcXHRkZXBlbmRzIG9uIEhBU19ETUFcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMTU1LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz0xNjQ9Y29uZmlnIFVTQl9SRU5FU0FTX1VTQkhTX1VEQ1xcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0xNjUtXFx0dHJpc3RhdGUgJ1JlbmVzYXMgVVNCSFMgY29udHJvbGxlcidcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6MTY2OlxcdGRlcGVuZHMgb24gVVNCX1JFTkVTQVNfVVNCSFNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMTY3LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz0xNzY9Y29uZmlnIFVTQl9SWlYyTV9VU0IzRFJEXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTE3Ny1cXHR0cmlzdGF0ZSAnUmVuZXNhcyBVU0IzLjEgRFJEIGNvbnRyb2xsZXInXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjE3ODpcXHRkZXBlbmRzIG9uIEFSQ0hfUjlBMDlHMDExIHx8IENPTVBJTEVfVEVTVFxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0xNzktXFx0aGVscFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnPTE4Nj1jb25maWcgVVNCX1JFTkVTQVNfVVNCM1xcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0xODctXFx0dHJpc3RhdGUgJ1JlbmVzYXMgVVNCMy4wIFBlcmlwaGVyYWwgY29udHJvbGxlcidcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6MTg4OlxcdGRlcGVuZHMgb24gQVJDSF9SRU5FU0FTIHx8IENPTVBJTEVfVEVTVFxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzoxODk6XFx0ZGVwZW5kcyBvbiBVU0JfUlpWMk1fVVNCM0RSRCB8fCAhVVNCX1JaVjJNX1VTQjNEUkRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6MTkwOlxcdGRlcGVuZHMgb24gRVhUQ09OXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTE5MS1cXHRzZWxlY3QgVVNCX1JPTEVfU1dJVENIXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9MjAwPWNvbmZpZyBVU0JfUkVORVNBU19VU0JGXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTIwMS1cXHR0cmlzdGF0ZSAnUmVuZXNhcyBVU0IgRnVuY3Rpb24gY29udHJvbGxlcidcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6MjAyOlxcdGRlcGVuZHMgb24gQVJDSF9SRU5FU0FTIHx8IENPTVBJTEVfVEVTVFxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0yMDMtXFx0aGVscFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnPTIxMT1jb25maWcgVVNCX1BYQTI3WFxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0yMTItXFx0dHJpc3RhdGUgXFxcIlBYQSAyN3hcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjIxMzpcXHRkZXBlbmRzIG9uIEhBU19JT01FTVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0yMTQtXFx0aGVscFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnPTIyNT1jb25maWcgVVNCX1NOUF9DT1JFXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjIyNjpcXHRkZXBlbmRzIG9uIChVU0JfQU1ENTUzNlVEQyB8fCBVU0JfU05QX1VEQ19QTEFUKVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzoyMjc6XFx0ZGVwZW5kcyBvbiBIQVNfRE1BXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTIyOC1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnPTI0MD1jb25maWcgVVNCX1NOUF9VRENfUExBVFxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0yNDEtXFx0dHJpc3RhdGUgXFxcIlN5bm9wc3lzIFVTQiAyLjAgRGV2aWNlIGNvbnRyb2xsZXJcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjI0MjpcXHRkZXBlbmRzIG9uIFVTQl9HQURHRVQgXFx1MDAyNlxcdTAwMjYgT0YgXFx1MDAyNlxcdTAwMjYgSEFTX0RNQVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzoyNDM6XFx0ZGVwZW5kcyBvbiBFWFRDT04gfHwgRVhUQ09OPW5cXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMjQ0LVxcdHNlbGVjdCBVU0JfU05QX0NPUkVcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz0yNTg9Y29uZmlnIFVTQl9NNjY1OTJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMjU5LVxcdHRyaXN0YXRlIFxcXCJSZW5lc2FzIE02NjU5MiBVU0IgUGVyaXBoZXJhbCBDb250cm9sbGVyXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzoyNjA6XFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMjYxLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz0yNzY9Y29uZmlnIFVTQl9BTUQ1NTM2VURDXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTI3Ny1cXHR0cmlzdGF0ZSBcXFwiQU1ENTUzNiBVRENcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjI3ODpcXHRkZXBlbmRzIG9uIFVTQl9QQ0kgXFx1MDAyNlxcdTAwMjYgSEFTX0RNQVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0yNzktXFx0c2VsZWN0IFVTQl9TTlBfQ09SRVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnPTI5ND1jb25maWcgVVNCX0ZTTF9RRVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0yOTUtXFx0dHJpc3RhdGUgXFxcIkZyZWVzY2FsZSBRRS9DUE0gVVNCIERldmljZSBDb250cm9sbGVyXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzoyOTY6XFx0ZGVwZW5kcyBvbiBGU0xfU09DIFxcdTAwMjZcXHUwMDI2IChRVUlDQ19FTkdJTkUgfHwgQ1BNKVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzoyOTc6XFx0ZGVwZW5kcyBvbiAhNjRCSVQgfHwgQlJPS0VOXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTI5OC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9MzA4PWNvbmZpZyBVU0JfTkVUMjI4MFxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0zMDktXFx0dHJpc3RhdGUgXFxcIk5ldENoaXAgTkVUMjI4eCAvIFBMWCBVU0IzeDh4XFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzozMTA6XFx0ZGVwZW5kcyBvbiBVU0JfUENJXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTMxMS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9MzMzPWNvbmZpZyBVU0JfR09LVVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0zMzQtXFx0dHJpc3RhdGUgXFxcIlRvc2hpYmEgVEM4NkMwMDEgJ0dva3UtUydcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjMzNTpcXHRkZXBlbmRzIG9uIFVTQl9QQ0lcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMzM2LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz0zNDc9Y29uZmlnIFVTQl9FRzIwVFxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0zNDgtXFx0dHJpc3RhdGUgXFxcIkludGVsIFFVQVJLIFgxMDAwL0VHMjBUIFBDSC9MQVBJUyBTZW1pY29uZHVjdG9yIElPSChNTDcyMTMvTUw3ODMxKSBVRENcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjM0OTpcXHRkZXBlbmRzIG9uIFVTQl9QQ0lcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMzUwLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz0zNzE9Y29uZmlnIFVTQl9HQURHRVRfWElMSU5YXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTM3Mi1cXHR0cmlzdGF0ZSBcXFwiWGlsaW54IFVTQiBEcml2ZXJcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjM3MzpcXHRkZXBlbmRzIG9uIEhBU19ETUFcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6Mzc0OlxcdGRlcGVuZHMgb24gT0ZcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMzc1LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz0zODY9Y29uZmlnIFVTQl9NQVgzNDIwX1VEQ1xcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0zODctXFx0dHJpc3RhdGUgXFxcIk1BWDM0MjAgKFVTQi1vdmVyLVNQSSkgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6Mzg4OlxcdGRlcGVuZHMgb24gU1BJXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTM4OS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9Mzk2PWNvbmZpZyBVU0JfVEVHUkFfWFVEQ1xcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0zOTctXFx0dHJpc3RhdGUgXFxcIk5WSURJQSBUZWdyYSBTdXBlcnNwZWVkIFVTQiAzLjAgRGV2aWNlIENvbnRyb2xsZXJcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjM5ODpcXHRkZXBlbmRzIG9uIEFSQ0hfVEVHUkEgfHwgQ09NUElMRV9URVNUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjM5OTpcXHRkZXBlbmRzIG9uIFBIWV9URUdSQV9YVVNCXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTQwMC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9NDA3PWNvbmZpZyBVU0JfQVNQRUVEX1VEQ1xcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy00MDgtXFx0dHJpc3RhdGUgXFxcIkFzcGVlZCBVREMgZHJpdmVyIHN1cHBvcnRcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjQwOTpcXHRkZXBlbmRzIG9uIEFSQ0hfQVNQRUVEIHx8IENPTVBJTEVfVEVTVFxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzo0MTA6XFx0ZGVwZW5kcyBvbiBVU0JfTElCQ09NUE9TSVRFXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTQxMS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9NDI4PWNvbmZpZyBVU0JfRFVNTVlfSENEXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTQyOS1cXHR0cmlzdGF0ZSBcXFwiRHVtbXkgSENEIChERVZFTE9QTUVOVClcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjQzMDpcXHRkZXBlbmRzIG9uIFVTQj15IHx8IChVU0I9bSBcXHUwMDI2XFx1MDAyNiBVU0JfR0FER0VUPW0pXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTQzMS1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEwOjQxOjMwLjgxMjU3MjAxNloiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NTQzNTMxNTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlVTQiBSYXcgR2FkZ2V0IEZ1enppbmcgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIGxldCdzIHNvbGlkaWZ5IHRoaXMgZnV6emluZyBjb25maWd1cmF0aW9uIGZvciB0aGUgVVNCIFJhdyBHYWRnZXQgZHJpdmVyLiBJJ3ZlIGJlZW4gdGhpbmtpbmcgdGhyb3VnaCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBob3cgdG8gZW5zdXJlIHRoZSBmdXp6ZXIgZWZmZWN0aXZlbHkgaW50ZXJhY3RzIHdpdGggdGhpcyBkcml2ZXIuIFJpZ2h0IG5vdywgYFVTQl9EVU1NWV9IQ0RgIGlzIGtleS4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBpbmNsdWRlIGl0IGJlY2F1c2Ugc3l6a2FsbGVyIHVzZXMgaXQgZm9yIHRlc3RpbmcgYFVTQl9SQVdfR0FER0VUYC4gQnV0IEkgcmVhbGl6ZWQsIGBVU0JfRFVNTVlfSENEYCBpcyBib3RoIGEgVURDICphbmQqIGFuIEhDRCwgbWFraW5nIGl0IHBlcmZlY3QgZm9yIHRoaXMgdGVzdCBzZXR1cC5cblxuSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZnV6emVyIGNhbiBhY3R1YWxseSBiaW5kIHRoZSBnYWRnZXQsIHNvLCBgVVNCX0RVTU1ZX0hDRGAgd2lsbCBkZWZpbml0ZWx5IGJlIGluIGBFbmFibGVDb25maWdzYC4gR2l2ZW4gdGhlIGRlcGVuZGVuY3ksIGBVU0JfRFVNTVlfSENEYCBkZXBlbmRzIG9uIGBVU0JgLCB3aGljaCBtZWFucyB0aGF0IGl0IGhhcyB0byBiZSBlbmFibGVkIGFzIHdlbGwuIEFsc28gYFVTQl9HQURHRVRgIGFuZCBgVVNCX1JBV19HQURHRVRgIG5lZWQgdG8gYmUgZW5hYmxlZCBmb3IgdGhpcyB0byB3b3JrLlxuXG5UaGVyZWZvcmUsIHRoZSBsaXN0IHNob3VsZCBiZSBgW1wiVVNCXCIsIFwiVVNCX0dBREdFVFwiLCBcIlVTQl9SQVdfR0FER0VUXCIsIFwiVVNCX0RVTU1ZX0hDRFwiXWAuXG5cbkkndmUgcmV2aWV3ZWQgdGhlIGZvY3VzIHN5bWJvbHMgZm9yIHRoZSBmdXp6aW5nOiBgZ2FkZ2V0X2JpbmRgLCBgZ2FkZ2V0X3VuYmluZGAsIGByYXdfaW9jdGxgLCBgcmF3X3Byb2Nlc3NfZXAwX2lvYCwgYW5kIGByYXdfcHJvY2Vzc19lcF9pb2AuIFRoZXNlIGxvb2sgc29saWQgYW5kIGNvdmVyIHRoZSBjcml0aWNhbCBlbnRyeSBwb2ludHMgdG8gdGhlIGRyaXZlcidzIGZ1bmN0aW9uYWxpdHksIGZvY3VzaW5nIG9uIHRoZSBjb3JlIGJpbmQvdW5iaW5kIG9wZXJhdGlvbnMsIGFuZCBJTyBoYW5kbGluZy5cblxuVGhlIHJlYXNvbmluZyBpcyBzb3VuZDogdGhlIHBhdGNoIGFkZHJlc3NlcyBhIHJhY2UgY29uZGl0aW9uIGJldHdlZW4gVURDIHVuYmluZCBhbmQgZW5kcG9pbnQgSU8gaW4gdGhlIFVTQiBSYXcgR2FkZ2V0IGRyaXZlciwgd2hpY2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGNvcmUgZHJpdmVyIHVzZWQgZm9yIFVTQiBlbXVsYXRpb24uIEl0J3MgZGVmaW5pdGVseSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlxuXG5UaGlzIHNob3VsZCBiZSBhIHJvYnVzdCBjb25maWd1cmF0aW9uLiBJJ2xsIHNldCB0aGUgcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA2MDgsIk91dHB1dFRva2VucyI6MTkwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDk4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEwOjQxOjM5LjM1NjEwNjc1N1oiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NTk5MDE3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVNCXCIsXG4gICAgXCJVU0JfR0FER0VUXCIsXG4gICAgXCJVU0JfUkFXX0dBREdFVFwiLFxuICAgIFwiVVNCX0RVTU1ZX0hDRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImdhZGdldF9iaW5kXCIsXG4gICAgXCJnYWRnZXRfdW5iaW5kXCIsXG4gICAgXCJyYXdfaW9jdGxcIixcbiAgICBcInJhd19wcm9jZXNzX2VwMF9pb1wiLFxuICAgIFwicmF3X3Byb2Nlc3NfZXBfaW9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBVU0IgUmF3IEdhZGdldCBkcml2ZXIgYmV0d2VlbiBVREMgdW5iaW5kIGFuZCBlbmRwb2ludCBJTyBvcGVyYXRpb25zLiBJdCBpbnRyb2R1Y2VzIGEgYHVkY191c2FnZWAgY291bnRlciBhbmQgYW4gYHVuYmluZF9jb21wbGV0aW9uYCB0byBlbnN1cmUgdGhhdCBgZ2FkZ2V0X3VuYmluZGAgd2FpdHMgZm9yIGFueSBwZW5kaW5nIElPIHRvIGZpbmlzaCBiZWZvcmUgY29tcGxldGluZyB0aGUgdW5iaW5kIHByb2Nlc3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGNvcmUgZHJpdmVyIHVzZWQgZm9yIFVTQiBlbXVsYXRpb24gYW5kIGZ1enppbmcsIGFuZCBpdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVTQlwiLFxuICAgIFwiVVNCX0dBREdFVFwiLFxuICAgIFwiVVNCX1JBV19HQURHRVRcIixcbiAgICBcIlVTQl9EVU1NWV9IQ0RcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJnYWRnZXRfYmluZFwiLFxuICAgIFwiZ2FkZ2V0X3VuYmluZFwiLFxuICAgIFwicmF3X2lvY3RsXCIsXG4gICAgXCJyYXdfcHJvY2Vzc19lcDBfaW9cIixcbiAgICBcInJhd19wcm9jZXNzX2VwX2lvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgVVNCIFJhdyBHYWRnZXQgZHJpdmVyIGJldHdlZW4gVURDIHVuYmluZCBhbmQgZW5kcG9pbnQgSU8gb3BlcmF0aW9ucy4gSXQgaW50cm9kdWNlcyBhIGB1ZGNfdXNhZ2VgIGNvdW50ZXIgYW5kIGFuIGB1bmJpbmRfY29tcGxldGlvbmAgdG8gZW5zdXJlIHRoYXQgYGdhZGdldF91bmJpbmRgIHdhaXRzIGZvciBhbnkgcGVuZGluZyBJTyB0byBmaW5pc2ggYmVmb3JlIGNvbXBsZXRpbmcgdGhlIHVuYmluZCBwcm9jZXNzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGRyaXZlciB1c2VkIGZvciBVU0IgZW11bGF0aW9uIGFuZCBmdXp6aW5nLCBhbmQgaXQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowg9q75[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-29 10:34:28 +0000 UTC FinishedAt: 2026-07-29 10:41:41 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB", "USB_GADGET", "USB_RAW_GADGET", "USB_DUMMY_HCD" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "USB", "USB_GADGET", "USB_RAW_GADGET", "USB_DUMMY_HCD" ], "series_id": "6431a49d-e142-4799-a9d2-a1a766f5dc5e" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "gadget_bind", "gadget_unbind", "raw_ioctl", "raw_process_ep0_io", "raw_process_ep_io" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEwOjQwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQiYjMzQ7LAogICAgJiMzNDtVU0JfR0FER0VUJiMzNDssCiAgICAmIzM0O1VTQl9SQVdfR0FER0VUJiMzNDssCiAgICAmIzM0O1VTQl9EVU1NWV9IQ0QmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtnYWRnZXRfYmluZCYjMzQ7LAogICAgJiMzNDtnYWRnZXRfdW5iaW5kJiMzNDssCiAgICAmIzM0O3Jhd19pb2N0bCYjMzQ7LAogICAgJiMzNDtyYXdfcHJvY2Vzc19lcDBfaW8mIzM0OywKICAgICYjMzQ7cmF3X3Byb2Nlc3NfZXBfaW8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgVVNCIFJhdyBHYWRnZXQgZHJpdmVyIGJldHdlZW4gVURDIHVuYmluZCBhbmQgZW5kcG9pbnQgSU8gb3BlcmF0aW9ucy4gSXQgaW50cm9kdWNlcyBhIGB1ZGNfdXNhZ2VgIGNvdW50ZXIgYW5kIGFuIGB1bmJpbmRfY29tcGxldGlvbmAgdG8gZW5zdXJlIHRoYXQgYGdhZGdldF91bmJpbmRgIHdhaXRzIGZvciBhbnkgcGVuZGluZyBJTyB0byBmaW5pc2ggYmVmb3JlIGNvbXBsZXRpbmcgdGhlIHVuYmluZCBwcm9jZXNzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGRyaXZlciB1c2VkIGZvciBVU0IgZW11bGF0aW9uIGFuZCBmdXp6aW5nLCBhbmQgaXQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMDo0MDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDM3Nzc4NDJmZjg4NDE5MzY3NjRiMTU2NDM5YmY0Y2ZjZjBjNmYzZmVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAyOSAxMDo0MDowMiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jXG5pbmRleCA0ZmViZjhkYWM3Y2E1Li5iY2U0ZjhkM2ZhNjNmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jXG5AQCAtMTc1LDYgJiM0MzsxNzUsOCBAQCBzdHJ1Y3QgcmF3X2RldiB7XG4gXHRib29sXHRcdFx0XHRnYWRnZXRfcmVnaXN0ZXJlZDtcbiBcdHN0cnVjdCB1c2JfZ2FkZ2V0XHRcdCpnYWRnZXQ7XG4gXHRzdHJ1Y3QgdXNiX3JlcXVlc3RcdFx0KnJlcTtcbiYjNDM7XHRpbnRcdFx0XHRcdHVkY191c2FnZTtcbiYjNDM7XHRzdHJ1Y3QgY29tcGxldGlvblx0XHQqdW5iaW5kX2NvbXBsZXRpb247XG4gXHRib29sXHRcdFx0XHRlcDBfaW5fcGVuZGluZztcbiBcdGJvb2xcdFx0XHRcdGVwMF9vdXRfcGVuZGluZztcbiBcdGJvb2xcdFx0XHRcdGVwMF91cmJfcXVldWVkO1xuQEAgLTIwNSwyNyAmIzQzOzIwNywxMyBAQCBzdGF0aWMgc3RydWN0IHJhd19kZXYgKmRldl9uZXcodm9pZClcbiBzdGF0aWMgdm9pZCBkZXZfZnJlZShzdHJ1Y3Qga3JlZiAqa3JlZilcbiB7XG4gXHRzdHJ1Y3QgcmF3X2RldiAqZGV2ID0gY29udGFpbmVyX29mKGtyZWYsIHN0cnVjdCByYXdfZGV2LCBjb3VudCk7XG4tXHRpbnQgaTtcbiBcbiBcdGtmcmVlKGRldi1cdTAwM2V1ZGNfbmFtZSk7XG4gXHRrZnJlZShkZXYtXHUwMDNlZHJpdmVyLnVkY19uYW1lKTtcbiBcdGtmcmVlKGRldi1cdTAwM2Vkcml2ZXIuZHJpdmVyLm5hbWUpO1xuIFx0aWYgKGRldi1cdTAwM2Vkcml2ZXJfaWRfbnVtYmVyIFx1MDAzZT0gMClcbiBcdFx0aWRhX2ZyZWUoXHUwMDI2ZHJpdmVyX2lkX251bWJlcnMsIGRldi1cdTAwM2Vkcml2ZXJfaWRfbnVtYmVyKTtcbi1cdGlmIChkZXYtXHUwMDNlcmVxKSB7XG4tXHRcdGlmIChkZXYtXHUwMDNlZXAwX3VyYl9xdWV1ZWQpXG4tXHRcdFx0dXNiX2VwX2RlcXVldWUoZGV2LVx1MDAzZWdhZGdldC1cdTAwM2VlcDAsIGRldi1cdTAwM2VyZXEpO1xuLVx0XHR1c2JfZXBfZnJlZV9yZXF1ZXN0KGRldi1cdTAwM2VnYWRnZXQtXHUwMDNlZXAwLCBkZXYtXHUwMDNlcmVxKTtcbi1cdH1cbiBcdHJhd19ldmVudF9xdWV1ZV9kZXN0cm95KFx1MDAyNmRldi1cdTAwM2VxdWV1ZSk7XG4tXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBkZXYtXHUwMDNlZXBzX251bTsgaSYjNDM7JiM0MzspIHtcbi1cdFx0aWYgKGRldi1cdTAwM2VlcHNbaV0uc3RhdGUgPT0gU1RBVEVfRVBfRElTQUJMRUQpXG4tXHRcdFx0Y29udGludWU7XG4tXHRcdHVzYl9lcF9kaXNhYmxlKGRldi1cdTAwM2VlcHNbaV0uZXApO1xuLVx0XHR1c2JfZXBfZnJlZV9yZXF1ZXN0KGRldi1cdTAwM2VlcHNbaV0uZXAsIGRldi1cdTAwM2VlcHNbaV0ucmVxKTtcbi1cdFx0a2ZyZWUoZGV2LVx1MDAzZWVwc1tpXS5lcC1cdTAwM2VkZXNjKTtcbi1cdFx0ZGV2LVx1MDAzZWVwc1tpXS5zdGF0ZSA9IFNUQVRFX0VQX0RJU0FCTEVEO1xuLVx0fVxuIFx0a2ZyZWUoZGV2KTtcbiB9XG4gXG5AQCAtMzE2LDYgJiM0MzszMDQsMTEgQEAgc3RhdGljIGludCBnYWRnZXRfYmluZChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0LFxuIFx0cmV0ID0gcmF3X3F1ZXVlX2V2ZW50KGRldiwgVVNCX1JBV19FVkVOVF9DT05ORUNULCAwLCBOVUxMKTtcbiBcdGlmIChyZXQgXHUwMDNjIDApIHtcbiBcdFx0ZGV2X2VycihcdTAwMjZnYWRnZXQtXHUwMDNlZGV2LCBcJiMzNDtmYWlsZWQgdG8gcXVldWUgY29ubmVjdCBldmVudFxcblwmIzM0Oyk7XG4mIzQzO1x0XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZkZXYtXHUwMDNlbG9jaywgZmxhZ3MpO1xuJiM0MztcdFx0ZGV2LVx1MDAzZWdhZGdldCA9IE5VTEw7XG4mIzQzO1x0XHRkZXYtXHUwMDNlcmVxID0gTlVMTDtcbiYjNDM7XHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbiYjNDM7XHRcdHVzYl9lcF9mcmVlX3JlcXVlc3QoZ2FkZ2V0LVx1MDAzZWVwMCwgcmVxKTtcbiBcdFx0c2V0X2dhZGdldF9kYXRhKGdhZGdldCwgTlVMTCk7XG4gXHRcdHJldHVybiByZXQ7XG4gXHR9XG5AQCAtMzI4LDYgJiM0MzszMjEsNDcgQEAgc3RhdGljIGludCBnYWRnZXRfYmluZChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0LFxuIHN0YXRpYyB2b2lkIGdhZGdldF91bmJpbmQoc3RydWN0IHVzYl9nYWRnZXQgKmdhZGdldClcbiB7XG4gXHRzdHJ1Y3QgcmF3X2RldiAqZGV2ID0gZ2V0X2dhZGdldF9kYXRhKGdhZGdldCk7XG4mIzQzO1x0dW5zaWduZWQgbG9uZyBmbGFncztcbiYjNDM7XHRERUNMQVJFX0NPTVBMRVRJT05fT05TVEFDSyhkb25lKTtcbiYjNDM7XHRpbnQgaTtcbiYjNDM7XG4mIzQzO1x0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbiYjNDM7XHRkZXYtXHUwMDNlc3RhdGUgPSBTVEFURV9ERVZfRkFJTEVEO1xuJiM0MztcbiYjNDM7XHRpZiAoZGV2LVx1MDAzZWVwMF91cmJfcXVldWVkKSB7XG4mIzQzO1x0XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmRldi1cdTAwM2Vsb2NrLCBmbGFncyk7XG4mIzQzO1x0XHR1c2JfZXBfZGVxdWV1ZShnYWRnZXQtXHUwMDNlZXAwLCBkZXYtXHUwMDNlcmVxKTtcbiYjNDM7XHRcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmRldi1cdTAwM2Vsb2NrLCBmbGFncyk7XG4mIzQzO1x0fVxuJiM0MztcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGRldi1cdTAwM2VlcHNfbnVtOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0aWYgKGRldi1cdTAwM2VlcHNbaV0uc3RhdGUgPT0gU1RBVEVfRVBfRU5BQkxFRCBcdTAwMjZcdTAwMjYgZGV2LVx1MDAzZWVwc1tpXS51cmJfcXVldWVkKSB7XG4mIzQzO1x0XHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbiYjNDM7XHRcdFx0dXNiX2VwX2RlcXVldWUoZGV2LVx1MDAzZWVwc1tpXS5lcCwgZGV2LVx1MDAzZWVwc1tpXS5yZXEpO1xuJiM0MztcdFx0XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZkZXYtXHUwMDNlbG9jaywgZmxhZ3MpO1xuJiM0MztcdFx0fVxuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0aWYgKGRldi1cdTAwM2V1ZGNfdXNhZ2UgXHUwMDNlIDApIHtcbiYjNDM7XHRcdGRldi1cdTAwM2V1bmJpbmRfY29tcGxldGlvbiA9IFx1MDAyNmRvbmU7XG4mIzQzO1x0XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmRldi1cdTAwM2Vsb2NrLCBmbGFncyk7XG4mIzQzO1x0XHR3YWl0X2Zvcl9jb21wbGV0aW9uKFx1MDAyNmRvbmUpO1xuJiM0MztcdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbiYjNDM7XHR9XG4mIzQzO1x0ZGV2LVx1MDAzZWdhZGdldCA9IE5VTEw7XG4mIzQzO1x0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZkZXYtXHUwMDNlbG9jaywgZmxhZ3MpO1xuJiM0MztcbiYjNDM7XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBkZXYtXHUwMDNlZXBzX251bTsgaSYjNDM7JiM0MzspIHtcbiYjNDM7XHRcdGlmIChkZXYtXHUwMDNlZXBzW2ldLnN0YXRlID09IFNUQVRFX0VQX0RJU0FCTEVEKVxuJiM0MztcdFx0XHRjb250aW51ZTtcbiYjNDM7XHRcdHVzYl9lcF9kaXNhYmxlKGRldi1cdTAwM2VlcHNbaV0uZXApO1xuJiM0MztcdFx0dXNiX2VwX2ZyZWVfcmVxdWVzdChkZXYtXHUwMDNlZXBzW2ldLmVwLCBkZXYtXHUwMDNlZXBzW2ldLnJlcSk7XG4mIzQzO1x0XHRrZnJlZShkZXYtXHUwMDNlZXBzW2ldLmVwLVx1MDAzZWRlc2MpO1xuJiM0MztcdFx0ZGV2LVx1MDAzZWVwc1tpXS5zdGF0ZSA9IFNUQVRFX0VQX0RJU0FCTEVEO1xuJiM0MztcdH1cbiYjNDM7XHRpZiAoZGV2LVx1MDAzZXJlcSkge1xuJiM0MztcdFx0dXNiX2VwX2ZyZWVfcmVxdWVzdChnYWRnZXQtXHUwMDNlZXAwLCBkZXYtXHUwMDNlcmVxKTtcbiYjNDM7XHRcdGRldi1cdTAwM2VyZXEgPSBOVUxMO1xuJiM0MztcdH1cbiBcbiBcdHNldF9nYWRnZXRfZGF0YShnYWRnZXQsIE5VTEwpO1xuIFx0LyogTWF0Y2hlcyBrcmVmX2dldCgpIGluIGdhZGdldF9iaW5kKCkuICovXG5AQCAtNjM3LDExICYjNDM7NjcxLDExIEBAIHN0YXRpYyBpbnQgcmF3X2lvY3RsX2V2ZW50X2ZldGNoKHN0cnVjdCByYXdfZGV2ICpkZXYsIHVuc2lnbmVkIGxvbmcgdmFsdWUpXG4gXG4gXHRldmVudCA9IHJhd19ldmVudF9xdWV1ZV9mZXRjaChcdTAwMjZkZXYtXHUwMDNlcXVldWUpO1xuIFx0aWYgKFBUUl9FUlIoZXZlbnQpID09IC1FSU5UUikge1xuLVx0XHRkZXZfZGJnKFx1MDAyNmRldi1cdTAwM2VnYWRnZXQtXHUwMDNlZGV2LCBcJiMzNDtldmVudCBmZXRjaGluZyBpbnRlcnJ1cHRlZFxcblwmIzM0Oyk7XG4mIzQzO1x0XHRkZXZfZGJnKGRldi1cdTAwM2VkZXYsIFwmIzM0O2V2ZW50IGZldGNoaW5nIGludGVycnVwdGVkXFxuXCYjMzQ7KTtcbiBcdFx0cmV0dXJuIC1FSU5UUjtcbiBcdH1cbiBcdGlmIChJU19FUlIoZXZlbnQpKSB7XG4tXHRcdGRldl9lcnIoXHUwMDI2ZGV2LVx1MDAzZWdhZGdldC1cdTAwM2VkZXYsIFwmIzM0O2ZhaWxlZCB0byBmZXRjaCBldmVudFxcblwmIzM0Oyk7XG4mIzQzO1x0XHRkZXZfZXJyKGRldi1cdTAwM2VkZXYsIFwmIzM0O2ZhaWxlZCB0byBmZXRjaCBldmVudFxcblwmIzM0Oyk7XG4gXHRcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmRldi1cdTAwM2Vsb2NrLCBmbGFncyk7XG4gXHRcdGRldi1cdTAwM2VzdGF0ZSA9IFNUQVRFX0RFVl9GQUlMRUQ7XG4gXHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbkBAIC03MjMsMjIgJiM0Mzs3NTcsMzcgQEAgc3RhdGljIGludCByYXdfcHJvY2Vzc19lcDBfaW8oc3RydWN0IHJhd19kZXYgKmRldiwgc3RydWN0IHVzYl9yYXdfZXBfaW8gKmlvLFxuIFx0ZGV2LVx1MDAzZXJlcS1cdTAwM2VsZW5ndGggPSBpby1cdTAwM2VsZW5ndGg7XG4gXHRkZXYtXHUwMDNlcmVxLVx1MDAzZXplcm8gPSB1c2JfcmF3X2lvX2ZsYWdzX3plcm8oaW8tXHUwMDNlZmxhZ3MpO1xuIFx0ZGV2LVx1MDAzZWVwMF91cmJfcXVldWVkID0gdHJ1ZTtcbiYjNDM7XHRkZXYtXHUwMDNldWRjX3VzYWdlJiM0MzsmIzQzOztcbiBcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbiBcbiBcdHJldCA9IHVzYl9lcF9xdWV1ZShkZXYtXHUwMDNlZ2FkZ2V0LVx1MDAzZWVwMCwgZGV2LVx1MDAzZXJlcSwgR0ZQX0tFUk5FTCk7XG4gXHRpZiAocmV0KSB7XG4tXHRcdGRldl9lcnIoXHUwMDI2ZGV2LVx1MDAzZWdhZGdldC1cdTAwM2VkZXYsXG4tXHRcdFx0XHRcJiMzNDtmYWlsLCB1c2JfZXBfcXVldWUgcmV0dXJuZWQgJWRcXG5cJiMzNDssIHJldCk7XG4mIzQzO1x0XHRkZXZfZXJyKGRldi1cdTAwM2VkZXYsIFwmIzM0O2ZhaWwsIHVzYl9lcF9xdWV1ZSByZXR1cm5lZCAlZFxcblwmIzM0OywgcmV0KTtcbiBcdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbiYjNDM7XHRcdGRldi1cdTAwM2V1ZGNfdXNhZ2UtLTtcbiYjNDM7XHRcdGlmICghZGV2LVx1MDAzZXVkY191c2FnZSBcdTAwMjZcdTAwMjYgZGV2LVx1MDAzZXVuYmluZF9jb21wbGV0aW9uKVxuJiM0MztcdFx0XHRjb21wbGV0ZShkZXYtXHUwMDNldW5iaW5kX2NvbXBsZXRpb24pO1xuIFx0XHRnb3RvIG91dF9xdWV1ZV9mYWlsZWQ7XG4gXHR9XG4gXG4gXHRyZXQgPSB3YWl0X2Zvcl9jb21wbGV0aW9uX2ludGVycnVwdGlibGUoXHUwMDI2ZGV2LVx1MDAzZWVwMF9kb25lKTtcbiBcdGlmIChyZXQpIHtcbi1cdFx0ZGV2X2RiZyhcdTAwMjZkZXYtXHUwMDNlZ2FkZ2V0LVx1MDAzZWRldiwgXCYjMzQ7d2FpdCBpbnRlcnJ1cHRlZFxcblwmIzM0Oyk7XG4tXHRcdHVzYl9lcF9kZXF1ZXVlKGRldi1cdTAwM2VnYWRnZXQtXHUwMDNlZXAwLCBkZXYtXHUwMDNlcmVxKTtcbi1cdFx0d2FpdF9mb3JfY29tcGxldGlvbihcdTAwMjZkZXYtXHUwMDNlZXAwX2RvbmUpO1xuJiM0MztcdFx0ZGV2X2RiZyhkZXYtXHUwMDNlZGV2LCBcJiMzNDt3YWl0IGludGVycnVwdGVkXFxuXCYjMzQ7KTtcbiBcdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbiYjNDM7XHRcdGlmIChkZXYtXHUwMDNlc3RhdGUgIT0gU1RBVEVfREVWX0ZBSUxFRCBcdTAwMjZcdTAwMjYgZGV2LVx1MDAzZWdhZGdldCkge1xuJiM0MztcdFx0XHRzdHJ1Y3QgdXNiX2VwICplcDAgPSBkZXYtXHUwMDNlZ2FkZ2V0LVx1MDAzZWVwMDtcbiYjNDM7XG4mIzQzO1x0XHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbiYjNDM7XG4mIzQzO1x0XHRcdHVzYl9lcF9kZXF1ZXVlKGVwMCwgZGV2LVx1MDAzZXJlcSk7XG4mIzQzO1x0XHRcdHdhaXRfZm9yX2NvbXBsZXRpb24oXHUwMDI2ZGV2LVx1MDAzZWVwMF9kb25lKTtcbiYjNDM7XG4mIzQzO1x0XHRcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmRldi1cdTAwM2Vsb2NrLCBmbGFncyk7XG4mIzQzO1x0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmRldi1cdTAwM2Vsb2NrLCBmbGFncyk7XG4mIzQzO1x0XHRcdHdhaXRfZm9yX2NvbXBsZXRpb24oXHUwMDI2ZGV2LVx1MDAzZWVwMF9kb25lKTtcbiYjNDM7XHRcdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbiYjNDM7XHRcdH1cbiBcdFx0aWYgKGRldi1cdTAwM2VlcDBfc3RhdHVzID09IC1FQ09OTlJFU0VUKVxuIFx0XHRcdGRldi1cdTAwM2VlcDBfc3RhdHVzID0gLUVJTlRSO1xuIFx0XHRnb3RvIG91dF9pbnRlcnJ1cHRlZDtcbkBAIC03NTAsNiAmIzQzOzc5OSw5IEBAIHN0YXRpYyBpbnQgcmF3X3Byb2Nlc3NfZXAwX2lvKHN0cnVjdCByYXdfZGV2ICpkZXYsIHN0cnVjdCB1c2JfcmF3X2VwX2lvICppbyxcbiBcdHJldCA9IGRldi1cdTAwM2VlcDBfc3RhdHVzO1xuIG91dF9xdWV1ZV9mYWlsZWQ6XG4gXHRkZXYtXHUwMDNlZXAwX3VyYl9xdWV1ZWQgPSBmYWxzZTtcbiYjNDM7XHRkZXYtXHUwMDNldWRjX3VzYWdlLS07XG4mIzQzO1x0aWYgKCFkZXYtXHUwMDNldWRjX3VzYWdlIFx1MDAyNlx1MDAyNiBkZXYtXHUwMDNldW5iaW5kX2NvbXBsZXRpb24pXG4mIzQzO1x0XHRjb21wbGV0ZShkZXYtXHUwMDNldW5iaW5kX2NvbXBsZXRpb24pO1xuIG91dF91bmxvY2s6XG4gXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmRldi1cdTAwM2Vsb2NrLCBmbGFncyk7XG4gXHRyZXR1cm4gcmV0O1xuQEAgLTk1NiwxMSAmIzQzOzEwMDgsMTUgQEAgc3RhdGljIGludCByYXdfaW9jdGxfZXBfZGlzYWJsZShzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxuIFx0XHRnb3RvIG91dF91bmxvY2s7XG4gXHR9XG4gXHRkZXYtXHUwMDNlZXBzW2ldLmRpc2FibGluZyA9IHRydWU7XG4mIzQzO1x0ZGV2LVx1MDAzZXVkY191c2FnZSYjNDM7JiM0Mzs7XG4gXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmRldi1cdTAwM2Vsb2NrLCBmbGFncyk7XG4gXG4gXHR1c2JfZXBfZGlzYWJsZShkZXYtXHUwMDNlZXBzW2ldLmVwKTtcbiBcbiBcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmRldi1cdTAwM2Vsb2NrLCBmbGFncyk7XG4mIzQzO1x0ZGV2LVx1MDAzZXVkY191c2FnZS0tO1xuJiM0MztcdGlmICghZGV2LVx1MDAzZXVkY191c2FnZSBcdTAwMjZcdTAwMjYgZGV2LVx1MDAzZXVuYmluZF9jb21wbGV0aW9uKVxuJiM0MztcdFx0Y29tcGxldGUoZGV2LVx1MDAzZXVuYmluZF9jb21wbGV0aW9uKTtcbiBcdHVzYl9lcF9mcmVlX3JlcXVlc3QoZGV2LVx1MDAzZWVwc1tpXS5lcCwgZGV2LVx1MDAzZWVwc1tpXS5yZXEpO1xuIFx0a2ZyZWUoZGV2LVx1MDAzZWVwc1tpXS5lcC1cdTAwM2VkZXNjKTtcbiBcdGRldi1cdTAwM2VlcHNbaV0uc3RhdGUgPSBTVEFURV9FUF9ESVNBQkxFRDtcbkBAIC0xMTA5LDIyICYjNDM7MTE2NSwzNyBAQCBzdGF0aWMgaW50IHJhd19wcm9jZXNzX2VwX2lvKHN0cnVjdCByYXdfZGV2ICpkZXYsIHN0cnVjdCB1c2JfcmF3X2VwX2lvICppbyxcbiBcdGVwLVx1MDAzZXJlcS1cdTAwM2VsZW5ndGggPSBpby1cdTAwM2VsZW5ndGg7XG4gXHRlcC1cdTAwM2VyZXEtXHUwMDNlemVybyA9IHVzYl9yYXdfaW9fZmxhZ3NfemVybyhpby1cdTAwM2VmbGFncyk7XG4gXHRlcC1cdTAwM2V1cmJfcXVldWVkID0gdHJ1ZTtcbiYjNDM7XHRkZXYtXHUwMDNldWRjX3VzYWdlJiM0MzsmIzQzOztcbiBcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbiBcbiBcdHJldCA9IHVzYl9lcF9xdWV1ZShlcC1cdTAwM2VlcCwgZXAtXHUwMDNlcmVxLCBHRlBfS0VSTkVMKTtcbiBcdGlmIChyZXQpIHtcbi1cdFx0ZGV2X2VycihcdTAwMjZkZXYtXHUwMDNlZ2FkZ2V0LVx1MDAzZWRldixcbi1cdFx0XHRcdFwmIzM0O2ZhaWwsIHVzYl9lcF9xdWV1ZSByZXR1cm5lZCAlZFxcblwmIzM0OywgcmV0KTtcbiYjNDM7XHRcdGRldl9lcnIoZGV2LVx1MDAzZWRldiwgXCYjMzQ7ZmFpbCwgdXNiX2VwX3F1ZXVlIHJldHVybmVkICVkXFxuXCYjMzQ7LCByZXQpO1xuIFx0XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZkZXYtXHUwMDNlbG9jaywgZmxhZ3MpO1xuJiM0MztcdFx0ZGV2LVx1MDAzZXVkY191c2FnZS0tO1xuJiM0MztcdFx0aWYgKCFkZXYtXHUwMDNldWRjX3VzYWdlIFx1MDAyNlx1MDAyNiBkZXYtXHUwMDNldW5iaW5kX2NvbXBsZXRpb24pXG4mIzQzO1x0XHRcdGNvbXBsZXRlKGRldi1cdTAwM2V1bmJpbmRfY29tcGxldGlvbik7XG4gXHRcdGdvdG8gb3V0X3F1ZXVlX2ZhaWxlZDtcbiBcdH1cbiBcbiBcdHJldCA9IHdhaXRfZm9yX2NvbXBsZXRpb25faW50ZXJydXB0aWJsZShcdTAwMjZkb25lKTtcbiBcdGlmIChyZXQpIHtcbi1cdFx0ZGV2X2RiZyhcdTAwMjZkZXYtXHUwMDNlZ2FkZ2V0LVx1MDAzZWRldiwgXCYjMzQ7d2FpdCBpbnRlcnJ1cHRlZFxcblwmIzM0Oyk7XG4tXHRcdHVzYl9lcF9kZXF1ZXVlKGVwLVx1MDAzZWVwLCBlcC1cdTAwM2VyZXEpO1xuLVx0XHR3YWl0X2Zvcl9jb21wbGV0aW9uKFx1MDAyNmRvbmUpO1xuJiM0MztcdFx0ZGV2X2RiZyhkZXYtXHUwMDNlZGV2LCBcJiMzNDt3YWl0IGludGVycnVwdGVkXFxuXCYjMzQ7KTtcbiBcdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbiYjNDM7XHRcdGlmIChkZXYtXHUwMDNlc3RhdGUgIT0gU1RBVEVfREVWX0ZBSUxFRCBcdTAwMjZcdTAwMjYgZGV2LVx1MDAzZWdhZGdldCkge1xuJiM0MztcdFx0XHRzdHJ1Y3QgdXNiX2VwICp1c2JfZXAgPSBlcC1cdTAwM2VlcDtcbiYjNDM7XG4mIzQzO1x0XHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbiYjNDM7XG4mIzQzO1x0XHRcdHVzYl9lcF9kZXF1ZXVlKHVzYl9lcCwgZXAtXHUwMDNlcmVxKTtcbiYjNDM7XHRcdFx0d2FpdF9mb3JfY29tcGxldGlvbihcdTAwMjZkb25lKTtcbiYjNDM7XG4mIzQzO1x0XHRcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmRldi1cdTAwM2Vsb2NrLCBmbGFncyk7XG4mIzQzO1x0XHR9IGVsc2Uge1xuJiM0MztcdFx0XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmRldi1cdTAwM2Vsb2NrLCBmbGFncyk7XG4mIzQzO1x0XHRcdHdhaXRfZm9yX2NvbXBsZXRpb24oXHUwMDI2ZG9uZSk7XG4mIzQzO1x0XHRcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmRldi1cdTAwM2Vsb2NrLCBmbGFncyk7XG4mIzQzO1x0XHR9XG4gXHRcdGlmIChlcC1cdTAwM2VzdGF0dXMgPT0gLUVDT05OUkVTRVQpXG4gXHRcdFx0ZXAtXHUwMDNlc3RhdHVzID0gLUVJTlRSO1xuIFx0XHRnb3RvIG91dF9pbnRlcnJ1cHRlZDtcbkBAIC0xMTM2LDYgJiM0MzsxMjA3LDkgQEAgc3RhdGljIGludCByYXdfcHJvY2Vzc19lcF9pbyhzdHJ1Y3QgcmF3X2RldiAqZGV2LCBzdHJ1Y3QgdXNiX3Jhd19lcF9pbyAqaW8sXG4gXHRyZXQgPSBlcC1cdTAwM2VzdGF0dXM7XG4gb3V0X3F1ZXVlX2ZhaWxlZDpcbiBcdGVwLVx1MDAzZXVyYl9xdWV1ZWQgPSBmYWxzZTtcbiYjNDM7XHRkZXYtXHUwMDNldWRjX3VzYWdlLS07XG4mIzQzO1x0aWYgKCFkZXYtXHUwMDNldWRjX3VzYWdlIFx1MDAyNlx1MDAyNiBkZXYtXHUwMDNldW5iaW5kX2NvbXBsZXRpb24pXG4mIzQzO1x0XHRjb21wbGV0ZShkZXYtXHUwMDNldW5iaW5kX2NvbXBsZXRpb24pO1xuIG91dF91bmxvY2s6XG4gXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmRldi1cdTAwM2Vsb2NrLCBmbGFncyk7XG4gXHRyZXR1cm4gcmV0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEwOjQwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtVU0ImIzM0OywKICAgICYjMzQ7VVNCX0dBREdFVCYjMzQ7LAogICAgJiMzNDtVU0JfUkFXX0dBREdFVCYjMzQ7LAogICAgJiMzNDtVU0JfRFVNTVlfSENEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Z2FkZ2V0X2JpbmQmIzM0OywKICAgICYjMzQ7Z2FkZ2V0X3VuYmluZCYjMzQ7LAogICAgJiMzNDtyYXdfaW9jdGwmIzM0OywKICAgICYjMzQ7cmF3X3Byb2Nlc3NfZXAwX2lvJiMzNDssCiAgICAmIzM0O3Jhd19wcm9jZXNzX2VwX2lvJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIFVTQiBSYXcgR2FkZ2V0IGRyaXZlciBiZXR3ZWVuIFVEQyB1bmJpbmQgYW5kIGVuZHBvaW50IElPIG9wZXJhdGlvbnMuIEl0IGludHJvZHVjZXMgYSBgdWRjX3VzYWdlYCBjb3VudGVyIGFuZCBhbiBgdW5iaW5kX2NvbXBsZXRpb25gIHRvIGVuc3VyZSB0aGF0IGBnYWRnZXRfdW5iaW5kYCB3YWl0cyBmb3IgYW55IHBlbmRpbmcgSU8gdG8gZmluaXNoIGJlZm9yZSBjb21wbGV0aW5nIHRoZSB1bmJpbmQgcHJvY2Vzcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgY29yZSBkcml2ZXIgdXNlZCBmb3IgVVNCIGVtdWxhdGlvbiBhbmQgZnV6emluZywgYW5kIGl0IGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAzNzc3ODQyZmY4ODQxOTM2NzY0YjE1NjQzOWJmNGNmY2YwYzZmM2ZlCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMjkgMTA6NDA6MDIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jCmluZGV4IDRmZWJmOGRhYzdjYTUuLmJjZTRmOGQzZmE2M2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jCkBAIC0xNzUsNiAmIzQzOzE3NSw4IEBAIHN0cnVjdCByYXdfZGV2IHsKIAlib29sCQkJCWdhZGdldF9yZWdpc3RlcmVkOwogCXN0cnVjdCB1c2JfZ2FkZ2V0CQkqZ2FkZ2V0OwogCXN0cnVjdCB1c2JfcmVxdWVzdAkJKnJlcTsKJiM0MzsJaW50CQkJCXVkY191c2FnZTsKJiM0MzsJc3RydWN0IGNvbXBsZXRpb24JCSp1bmJpbmRfY29tcGxldGlvbjsKIAlib29sCQkJCWVwMF9pbl9wZW5kaW5nOwogCWJvb2wJCQkJZXAwX291dF9wZW5kaW5nOwogCWJvb2wJCQkJZXAwX3VyYl9xdWV1ZWQ7CkBAIC0yMDUsMjcgJiM0MzsyMDcsMTMgQEAgc3RhdGljIHN0cnVjdCByYXdfZGV2ICpkZXZfbmV3KHZvaWQpCiBzdGF0aWMgdm9pZCBkZXZfZnJlZShzdHJ1Y3Qga3JlZiAqa3JlZikKIHsKIAlzdHJ1Y3QgcmF3X2RldiAqZGV2ID0gY29udGFpbmVyX29mKGtyZWYsIHN0cnVjdCByYXdfZGV2LCBjb3VudCk7Ci0JaW50IGk7CiAKIAlrZnJlZShkZXYtJmd0O3VkY19uYW1lKTsKIAlrZnJlZShkZXYtJmd0O2RyaXZlci51ZGNfbmFtZSk7CiAJa2ZyZWUoZGV2LSZndDtkcml2ZXIuZHJpdmVyLm5hbWUpOwogCWlmIChkZXYtJmd0O2RyaXZlcl9pZF9udW1iZXIgJmd0Oz0gMCkKIAkJaWRhX2ZyZWUoJmFtcDtkcml2ZXJfaWRfbnVtYmVycywgZGV2LSZndDtkcml2ZXJfaWRfbnVtYmVyKTsKLQlpZiAoZGV2LSZndDtyZXEpIHsKLQkJaWYgKGRldi0mZ3Q7ZXAwX3VyYl9xdWV1ZWQpCi0JCQl1c2JfZXBfZGVxdWV1ZShkZXYtJmd0O2dhZGdldC0mZ3Q7ZXAwLCBkZXYtJmd0O3JlcSk7Ci0JCXVzYl9lcF9mcmVlX3JlcXVlc3QoZGV2LSZndDtnYWRnZXQtJmd0O2VwMCwgZGV2LSZndDtyZXEpOwotCX0KIAlyYXdfZXZlbnRfcXVldWVfZGVzdHJveSgmYW1wO2Rldi0mZ3Q7cXVldWUpOwotCWZvciAoaSA9IDA7IGkgJmx0OyBkZXYtJmd0O2Vwc19udW07IGkmIzQzOyYjNDM7KSB7Ci0JCWlmIChkZXYtJmd0O2Vwc1tpXS5zdGF0ZSA9PSBTVEFURV9FUF9ESVNBQkxFRCkKLQkJCWNvbnRpbnVlOwotCQl1c2JfZXBfZGlzYWJsZShkZXYtJmd0O2Vwc1tpXS5lcCk7Ci0JCXVzYl9lcF9mcmVlX3JlcXVlc3QoZGV2LSZndDtlcHNbaV0uZXAsIGRldi0mZ3Q7ZXBzW2ldLnJlcSk7Ci0JCWtmcmVlKGRldi0mZ3Q7ZXBzW2ldLmVwLSZndDtkZXNjKTsKLQkJZGV2LSZndDtlcHNbaV0uc3RhdGUgPSBTVEFURV9FUF9ESVNBQkxFRDsKLQl9CiAJa2ZyZWUoZGV2KTsKIH0KIApAQCAtMzE2LDYgJiM0MzszMDQsMTEgQEAgc3RhdGljIGludCBnYWRnZXRfYmluZChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0LAogCXJldCA9IHJhd19xdWV1ZV9ldmVudChkZXYsIFVTQl9SQVdfRVZFTlRfQ09OTkVDVCwgMCwgTlVMTCk7CiAJaWYgKHJldCAmbHQ7IDApIHsKIAkJZGV2X2VycigmYW1wO2dhZGdldC0mZ3Q7ZGV2LCAmIzM0O2ZhaWxlZCB0byBxdWV1ZSBjb25uZWN0IGV2ZW50XG4mIzM0Oyk7CiYjNDM7CQlzcGluX2xvY2tfaXJxc2F2ZSgmYW1wO2Rldi0mZ3Q7bG9jaywgZmxhZ3MpOwomIzQzOwkJZGV2LSZndDtnYWRnZXQgPSBOVUxMOwomIzQzOwkJZGV2LSZndDtyZXEgPSBOVUxMOwomIzQzOwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW1wO2Rldi0mZ3Q7bG9jaywgZmxhZ3MpOwomIzQzOwkJdXNiX2VwX2ZyZWVfcmVxdWVzdChnYWRnZXQtJmd0O2VwMCwgcmVxKTsKIAkJc2V0X2dhZGdldF9kYXRhKGdhZGdldCwgTlVMTCk7CiAJCXJldHVybiByZXQ7CiAJfQpAQCAtMzI4LDYgJiM0MzszMjEsNDcgQEAgc3RhdGljIGludCBnYWRnZXRfYmluZChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0LAogc3RhdGljIHZvaWQgZ2FkZ2V0X3VuYmluZChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0KQogewogCXN0cnVjdCByYXdfZGV2ICpkZXYgPSBnZXRfZ2FkZ2V0X2RhdGEoZ2FkZ2V0KTsKJiM0MzsJdW5zaWduZWQgbG9uZyBmbGFnczsKJiM0MzsJREVDTEFSRV9DT01QTEVUSU9OX09OU1RBQ0soZG9uZSk7CiYjNDM7CWludCBpOwomIzQzOwomIzQzOwlzcGluX2xvY2tfaXJxc2F2ZSgmYW1wO2Rldi0mZ3Q7bG9jaywgZmxhZ3MpOwomIzQzOwlkZXYtJmd0O3N0YXRlID0gU1RBVEVfREVWX0ZBSUxFRDsKJiM0MzsKJiM0MzsJaWYgKGRldi0mZ3Q7ZXAwX3VyYl9xdWV1ZWQpIHsKJiM0MzsJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFtcDtkZXYtJmd0O2xvY2ssIGZsYWdzKTsKJiM0MzsJCXVzYl9lcF9kZXF1ZXVlKGdhZGdldC0mZ3Q7ZXAwLCBkZXYtJmd0O3JlcSk7CiYjNDM7CQlzcGluX2xvY2tfaXJxc2F2ZSgmYW1wO2Rldi0mZ3Q7bG9jaywgZmxhZ3MpOwomIzQzOwl9CiYjNDM7CWZvciAoaSA9IDA7IGkgJmx0OyBkZXYtJmd0O2Vwc19udW07IGkmIzQzOyYjNDM7KSB7CiYjNDM7CQlpZiAoZGV2LSZndDtlcHNbaV0uc3RhdGUgPT0gU1RBVEVfRVBfRU5BQkxFRCAmYW1wOyZhbXA7IGRldi0mZ3Q7ZXBzW2ldLnVyYl9xdWV1ZWQpIHsKJiM0MzsJCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhbXA7ZGV2LSZndDtsb2NrLCBmbGFncyk7CiYjNDM7CQkJdXNiX2VwX2RlcXVldWUoZGV2LSZndDtlcHNbaV0uZXAsIGRldi0mZ3Q7ZXBzW2ldLnJlcSk7CiYjNDM7CQkJc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDtkZXYtJmd0O2xvY2ssIGZsYWdzKTsKJiM0MzsJCX0KJiM0MzsJfQomIzQzOwomIzQzOwlpZiAoZGV2LSZndDt1ZGNfdXNhZ2UgJmd0OyAwKSB7CiYjNDM7CQlkZXYtJmd0O3VuYmluZF9jb21wbGV0aW9uID0gJmFtcDtkb25lOwomIzQzOwkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW1wO2Rldi0mZ3Q7bG9jaywgZmxhZ3MpOwomIzQzOwkJd2FpdF9mb3JfY29tcGxldGlvbigmYW1wO2RvbmUpOwomIzQzOwkJc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDtkZXYtJmd0O2xvY2ssIGZsYWdzKTsKJiM0MzsJfQomIzQzOwlkZXYtJmd0O2dhZGdldCA9IE5VTEw7CiYjNDM7CXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFtcDtkZXYtJmd0O2xvY2ssIGZsYWdzKTsKJiM0MzsKJiM0MzsJZm9yIChpID0gMDsgaSAmbHQ7IGRldi0mZ3Q7ZXBzX251bTsgaSYjNDM7JiM0MzspIHsKJiM0MzsJCWlmIChkZXYtJmd0O2Vwc1tpXS5zdGF0ZSA9PSBTVEFURV9FUF9ESVNBQkxFRCkKJiM0MzsJCQljb250aW51ZTsKJiM0MzsJCXVzYl9lcF9kaXNhYmxlKGRldi0mZ3Q7ZXBzW2ldLmVwKTsKJiM0MzsJCXVzYl9lcF9mcmVlX3JlcXVlc3QoZGV2LSZndDtlcHNbaV0uZXAsIGRldi0mZ3Q7ZXBzW2ldLnJlcSk7CiYjNDM7CQlrZnJlZShkZXYtJmd0O2Vwc1tpXS5lcC0mZ3Q7ZGVzYyk7CiYjNDM7CQlkZXYtJmd0O2Vwc1tpXS5zdGF0ZSA9IFNUQVRFX0VQX0RJU0FCTEVEOwomIzQzOwl9CiYjNDM7CWlmIChkZXYtJmd0O3JlcSkgewomIzQzOwkJdXNiX2VwX2ZyZWVfcmVxdWVzdChnYWRnZXQtJmd0O2VwMCwgZGV2LSZndDtyZXEpOwomIzQzOwkJZGV2LSZndDtyZXEgPSBOVUxMOwomIzQzOwl9CiAKIAlzZXRfZ2FkZ2V0X2RhdGEoZ2FkZ2V0LCBOVUxMKTsKIAkvKiBNYXRjaGVzIGtyZWZfZ2V0KCkgaW4gZ2FkZ2V0X2JpbmQoKS4gKi8KQEAgLTYzNywxMSAmIzQzOzY3MSwxMSBAQCBzdGF0aWMgaW50IHJhd19pb2N0bF9ldmVudF9mZXRjaChzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKQogCiAJZXZlbnQgPSByYXdfZXZlbnRfcXVldWVfZmV0Y2goJmFtcDtkZXYtJmd0O3F1ZXVlKTsKIAlpZiAoUFRSX0VSUihldmVudCkgPT0gLUVJTlRSKSB7Ci0JCWRldl9kYmcoJmFtcDtkZXYtJmd0O2dhZGdldC0mZ3Q7ZGV2LCAmIzM0O2V2ZW50IGZldGNoaW5nIGludGVycnVwdGVkXG4mIzM0Oyk7CiYjNDM7CQlkZXZfZGJnKGRldi0mZ3Q7ZGV2LCAmIzM0O2V2ZW50IGZldGNoaW5nIGludGVycnVwdGVkXG4mIzM0Oyk7CiAJCXJldHVybiAtRUlOVFI7CiAJfQogCWlmIChJU19FUlIoZXZlbnQpKSB7Ci0JCWRldl9lcnIoJmFtcDtkZXYtJmd0O2dhZGdldC0mZ3Q7ZGV2LCAmIzM0O2ZhaWxlZCB0byBmZXRjaCBldmVudFxuJiMzNDspOwomIzQzOwkJZGV2X2VycihkZXYtJmd0O2RldiwgJiMzNDtmYWlsZWQgdG8gZmV0Y2ggZXZlbnRcbiYjMzQ7KTsKIAkJc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDtkZXYtJmd0O2xvY2ssIGZsYWdzKTsKIAkJZGV2LSZndDtzdGF0ZSA9IFNUQVRFX0RFVl9GQUlMRUQ7CiAJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFtcDtkZXYtJmd0O2xvY2ssIGZsYWdzKTsKQEAgLTcyMywyMiAmIzQzOzc1NywzNyBAQCBzdGF0aWMgaW50IHJhd19wcm9jZXNzX2VwMF9pbyhzdHJ1Y3QgcmF3X2RldiAqZGV2LCBzdHJ1Y3QgdXNiX3Jhd19lcF9pbyAqaW8sCiAJZGV2LSZndDtyZXEtJmd0O2xlbmd0aCA9IGlvLSZndDtsZW5ndGg7CiAJZGV2LSZndDtyZXEtJmd0O3plcm8gPSB1c2JfcmF3X2lvX2ZsYWdzX3plcm8oaW8tJmd0O2ZsYWdzKTsKIAlkZXYtJmd0O2VwMF91cmJfcXVldWVkID0gdHJ1ZTsKJiM0MzsJZGV2LSZndDt1ZGNfdXNhZ2UmIzQzOyYjNDM7OwogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFtcDtkZXYtJmd0O2xvY2ssIGZsYWdzKTsKIAogCXJldCA9IHVzYl9lcF9xdWV1ZShkZXYtJmd0O2dhZGdldC0mZ3Q7ZXAwLCBkZXYtJmd0O3JlcSwgR0ZQX0tFUk5FTCk7CiAJaWYgKHJldCkgewotCQlkZXZfZXJyKCZhbXA7ZGV2LSZndDtnYWRnZXQtJmd0O2RldiwKLQkJCQkmIzM0O2ZhaWwsIHVzYl9lcF9xdWV1ZSByZXR1cm5lZCAlZFxuJiMzNDssIHJldCk7CiYjNDM7CQlkZXZfZXJyKGRldi0mZ3Q7ZGV2LCAmIzM0O2ZhaWwsIHVzYl9lcF9xdWV1ZSByZXR1cm5lZCAlZFxuJiMzNDssIHJldCk7CiAJCXNwaW5fbG9ja19pcnFzYXZlKCZhbXA7ZGV2LSZndDtsb2NrLCBmbGFncyk7CiYjNDM7CQlkZXYtJmd0O3VkY191c2FnZS0tOwomIzQzOwkJaWYgKCFkZXYtJmd0O3VkY191c2FnZSAmYW1wOyZhbXA7IGRldi0mZ3Q7dW5iaW5kX2NvbXBsZXRpb24pCiYjNDM7CQkJY29tcGxldGUoZGV2LSZndDt1bmJpbmRfY29tcGxldGlvbik7CiAJCWdvdG8gb3V0X3F1ZXVlX2ZhaWxlZDsKIAl9CiAKIAlyZXQgPSB3YWl0X2Zvcl9jb21wbGV0aW9uX2ludGVycnVwdGlibGUoJmFtcDtkZXYtJmd0O2VwMF9kb25lKTsKIAlpZiAocmV0KSB7Ci0JCWRldl9kYmcoJmFtcDtkZXYtJmd0O2dhZGdldC0mZ3Q7ZGV2LCAmIzM0O3dhaXQgaW50ZXJydXB0ZWRcbiYjMzQ7KTsKLQkJdXNiX2VwX2RlcXVldWUoZGV2LSZndDtnYWRnZXQtJmd0O2VwMCwgZGV2LSZndDtyZXEpOwotCQl3YWl0X2Zvcl9jb21wbGV0aW9uKCZhbXA7ZGV2LSZndDtlcDBfZG9uZSk7CiYjNDM7CQlkZXZfZGJnKGRldi0mZ3Q7ZGV2LCAmIzM0O3dhaXQgaW50ZXJydXB0ZWRcbiYjMzQ7KTsKIAkJc3Bpbl9sb2NrX2lycXNhdmUoJmFtcDtkZXYtJmd0O2xvY2ssIGZsYWdzKTsKJiM0MzsJCWlmIChkZXYtJmd0O3N0YXRlICE9IFNUQVRFX0RFVl9GQUlMRUQgJmFtcDsmYW1wOyBkZXYtJmd0O2dhZGdldCkgewomIzQzOwkJCXN0cnVjdCB1c2JfZXAgKmVwMCA9IGRldi0mZ3Q7Z2FkZ2V0LSZndDtlcDA7CiYjNDM7CiYjNDM7CQkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW1wO2Rldi0mZ3Q7bG9jaywgZmxhZ3MpOwomIzQzOwomIzQzOwkJCXVzYl9lcF9kZXF1ZXVlKGVwMCwgZGV2LSZndDtyZXEpOwomIzQzOwkJCXdhaXRfZm9yX2NvbXBsZXRpb24oJmFtcDtkZXYtJmd0O2VwMF9kb25lKTsKJiM0MzsKJiM0MzsJCQlzcGluX2xvY2tfaXJxc2F2ZSgmYW1wO2Rldi0mZ3Q7bG9jaywgZmxhZ3MpOwomIzQzOwkJfSBlbHNlIHsKJiM0MzsJCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhbXA7ZGV2LSZndDtsb2NrLCBmbGFncyk7CiYjNDM7CQkJd2FpdF9mb3JfY29tcGxldGlvbigmYW1wO2Rldi0mZ3Q7ZXAwX2RvbmUpOwomIzQzOwkJCXNwaW5fbG9ja19pcnFzYXZlKCZhbXA7ZGV2LSZndDtsb2NrLCBmbGFncyk7CiYjNDM7CQl9CiAJCWlmIChkZXYtJmd0O2VwMF9zdGF0dXMgPT0gLUVDT05OUkVTRVQpCiAJCQlkZXYtJmd0O2VwMF9zdGF0dXMgPSAtRUlOVFI7CiAJCWdvdG8gb3V0X2ludGVycnVwdGVkOwpAQCAtNzUwLDYgJiM0Mzs3OTksOSBAQCBzdGF0aWMgaW50IHJhd19wcm9jZXNzX2VwMF9pbyhzdHJ1Y3QgcmF3X2RldiAqZGV2LCBzdHJ1Y3QgdXNiX3Jhd19lcF9pbyAqaW8sCiAJcmV0ID0gZGV2LSZndDtlcDBfc3RhdHVzOwogb3V0X3F1ZXVlX2ZhaWxlZDoKIAlkZXYtJmd0O2VwMF91cmJfcXVldWVkID0gZmFsc2U7CiYjNDM7CWRldi0mZ3Q7dWRjX3VzYWdlLS07CiYjNDM7CWlmICghZGV2LSZndDt1ZGNfdXNhZ2UgJmFtcDsmYW1wOyBkZXYtJmd0O3VuYmluZF9jb21wbGV0aW9uKQomIzQzOwkJY29tcGxldGUoZGV2LSZndDt1bmJpbmRfY29tcGxldGlvbik7CiBvdXRfdW5sb2NrOgogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFtcDtkZXYtJmd0O2xvY2ssIGZsYWdzKTsKIAlyZXR1cm4gcmV0OwpAQCAtOTU2LDExICYjNDM7MTAwOCwxNSBAQCBzdGF0aWMgaW50IHJhd19pb2N0bF9lcF9kaXNhYmxlKHN0cnVjdCByYXdfZGV2ICpkZXYsIHVuc2lnbmVkIGxvbmcgdmFsdWUpCiAJCWdvdG8gb3V0X3VubG9jazsKIAl9CiAJZGV2LSZndDtlcHNbaV0uZGlzYWJsaW5nID0gdHJ1ZTsKJiM0MzsJZGV2LSZndDt1ZGNfdXNhZ2UmIzQzOyYjNDM7OwogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFtcDtkZXYtJmd0O2xvY2ssIGZsYWdzKTsKIAogCXVzYl9lcF9kaXNhYmxlKGRldi0mZ3Q7ZXBzW2ldLmVwKTsKIAogCXNwaW5fbG9ja19pcnFzYXZlKCZhbXA7ZGV2LSZndDtsb2NrLCBmbGFncyk7CiYjNDM7CWRldi0mZ3Q7dWRjX3VzYWdlLS07CiYjNDM7CWlmICghZGV2LSZndDt1ZGNfdXNhZ2UgJmFtcDsmYW1wOyBkZXYtJmd0O3VuYmluZF9jb21wbGV0aW9uKQomIzQzOwkJY29tcGxldGUoZGV2LSZndDt1bmJpbmRfY29tcGxldGlvbik7CiAJdXNiX2VwX2ZyZWVfcmVxdWVzdChkZXYtJmd0O2Vwc1tpXS5lcCwgZGV2LSZndDtlcHNbaV0ucmVxKTsKIAlrZnJlZShkZXYtJmd0O2Vwc1tpXS5lcC0mZ3Q7ZGVzYyk7CiAJZGV2LSZndDtlcHNbaV0uc3RhdGUgPSBTVEFURV9FUF9ESVNBQkxFRDsKQEAgLTExMDksMjIgJiM0MzsxMTY1LDM3IEBAIHN0YXRpYyBpbnQgcmF3X3Byb2Nlc3NfZXBfaW8oc3RydWN0IHJhd19kZXYgKmRldiwgc3RydWN0IHVzYl9yYXdfZXBfaW8gKmlvLAogCWVwLSZndDtyZXEtJmd0O2xlbmd0aCA9IGlvLSZndDtsZW5ndGg7CiAJZXAtJmd0O3JlcS0mZ3Q7emVybyA9IHVzYl9yYXdfaW9fZmxhZ3NfemVybyhpby0mZ3Q7ZmxhZ3MpOwogCWVwLSZndDt1cmJfcXVldWVkID0gdHJ1ZTsKJiM0MzsJZGV2LSZndDt1ZGNfdXNhZ2UmIzQzOyYjNDM7OwogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFtcDtkZXYtJmd0O2xvY2ssIGZsYWdzKTsKIAogCXJldCA9IHVzYl9lcF9xdWV1ZShlcC0mZ3Q7ZXAsIGVwLSZndDtyZXEsIEdGUF9LRVJORUwpOwogCWlmIChyZXQpIHsKLQkJZGV2X2VycigmYW1wO2Rldi0mZ3Q7Z2FkZ2V0LSZndDtkZXYsCi0JCQkJJiMzNDtmYWlsLCB1c2JfZXBfcXVldWUgcmV0dXJuZWQgJWRcbiYjMzQ7LCByZXQpOwomIzQzOwkJZGV2X2VycihkZXYtJmd0O2RldiwgJiMzNDtmYWlsLCB1c2JfZXBfcXVldWUgcmV0dXJuZWQgJWRcbiYjMzQ7LCByZXQpOwogCQlzcGluX2xvY2tfaXJxc2F2ZSgmYW1wO2Rldi0mZ3Q7bG9jaywgZmxhZ3MpOwomIzQzOwkJZGV2LSZndDt1ZGNfdXNhZ2UtLTsKJiM0MzsJCWlmICghZGV2LSZndDt1ZGNfdXNhZ2UgJmFtcDsmYW1wOyBkZXYtJmd0O3VuYmluZF9jb21wbGV0aW9uKQomIzQzOwkJCWNvbXBsZXRlKGRldi0mZ3Q7dW5iaW5kX2NvbXBsZXRpb24pOwogCQlnb3RvIG91dF9xdWV1ZV9mYWlsZWQ7CiAJfQogCiAJcmV0ID0gd2FpdF9mb3JfY29tcGxldGlvbl9pbnRlcnJ1cHRpYmxlKCZhbXA7ZG9uZSk7CiAJaWYgKHJldCkgewotCQlkZXZfZGJnKCZhbXA7ZGV2LSZndDtnYWRnZXQtJmd0O2RldiwgJiMzNDt3YWl0IGludGVycnVwdGVkXG4mIzM0Oyk7Ci0JCXVzYl9lcF9kZXF1ZXVlKGVwLSZndDtlcCwgZXAtJmd0O3JlcSk7Ci0JCXdhaXRfZm9yX2NvbXBsZXRpb24oJmFtcDtkb25lKTsKJiM0MzsJCWRldl9kYmcoZGV2LSZndDtkZXYsICYjMzQ7d2FpdCBpbnRlcnJ1cHRlZFxuJiMzNDspOwogCQlzcGluX2xvY2tfaXJxc2F2ZSgmYW1wO2Rldi0mZ3Q7bG9jaywgZmxhZ3MpOwomIzQzOwkJaWYgKGRldi0mZ3Q7c3RhdGUgIT0gU1RBVEVfREVWX0ZBSUxFRCAmYW1wOyZhbXA7IGRldi0mZ3Q7Z2FkZ2V0KSB7CiYjNDM7CQkJc3RydWN0IHVzYl9lcCAqdXNiX2VwID0gZXAtJmd0O2VwOwomIzQzOwomIzQzOwkJCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmFtcDtkZXYtJmd0O2xvY2ssIGZsYWdzKTsKJiM0MzsKJiM0MzsJCQl1c2JfZXBfZGVxdWV1ZSh1c2JfZXAsIGVwLSZndDtyZXEpOwomIzQzOwkJCXdhaXRfZm9yX2NvbXBsZXRpb24oJmFtcDtkb25lKTsKJiM0MzsKJiM0MzsJCQlzcGluX2xvY2tfaXJxc2F2ZSgmYW1wO2Rldi0mZ3Q7bG9jaywgZmxhZ3MpOwomIzQzOwkJfSBlbHNlIHsKJiM0MzsJCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhbXA7ZGV2LSZndDtsb2NrLCBmbGFncyk7CiYjNDM7CQkJd2FpdF9mb3JfY29tcGxldGlvbigmYW1wO2RvbmUpOwomIzQzOwkJCXNwaW5fbG9ja19pcnFzYXZlKCZhbXA7ZGV2LSZndDtsb2NrLCBmbGFncyk7CiYjNDM7CQl9CiAJCWlmIChlcC0mZ3Q7c3RhdHVzID09IC1FQ09OTlJFU0VUKQogCQkJZXAtJmd0O3N0YXR1cyA9IC1FSU5UUjsKIAkJZ290byBvdXRfaW50ZXJydXB0ZWQ7CkBAIC0xMTM2LDYgJiM0MzsxMjA3LDkgQEAgc3RhdGljIGludCByYXdfcHJvY2Vzc19lcF9pbyhzdHJ1Y3QgcmF3X2RldiAqZGV2LCBzdHJ1Y3QgdXNiX3Jhd19lcF9pbyAqaW8sCiAJcmV0ID0gZXAtJmd0O3N0YXR1czsKIG91dF9xdWV1ZV9mYWlsZWQ6CiAJZXAtJmd0O3VyYl9xdWV1ZWQgPSBmYWxzZTsKJiM0MzsJZGV2LSZndDt1ZGNfdXNhZ2UtLTsKJiM0MzsJaWYgKCFkZXYtJmd0O3VkY191c2FnZSAmYW1wOyZhbXA7IGRldi0mZ3Q7dW5iaW5kX2NvbXBsZXRpb24pCiYjNDM7CQljb21wbGV0ZShkZXYtJmd0O3VuYmluZF9jb21wbGV0aW9uKTsKIG91dF91bmxvY2s6CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmYW1wO2Rldi0mZ3Q7bG9jaywgZmxhZ3MpOwogCXJldHVybiByZXQ7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEwOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUyMDEKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA0MTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgVVNCIFJhdyBHYWRnZXQgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBhIHBhdGNoIGZvciBgZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmNgLiBUaGlzIGlzIHRoZSBVU0IgUmF3IEdhZGdldCBkcml2ZXIsIHdoaWNoIHJpbmdzIGEgYmVsbCDigJMgaXQmIzM5O3MgdGhlIG9uZSB3ZSB1c2UgZm9yIGVtdWxhdGluZyBVU0IgZGV2aWNlcyBmcm9tIHVzZXJzcGFjZSwgc3BlY2lmaWNhbGx5IGNydWNpYWwgZm9yIHN5emthbGxlciYjMzk7cyBmdXp6aW5nIGVmZm9ydHMuIFRoZSBwYXRjaCBzZWVtcyB0byBiZSBhZGRpbmcgYHVkY191c2FnZWAgYW5kIGB1bmJpbmRfY29tcGxldGlvbmAgdG8gYHN0cnVjdCByYXdfZGV2YC4gSXQmIzM5O3MgdHdlYWtpbmcgYGdhZGdldF91bmJpbmRgIHRvIGVuc3VyZSBpdCBwcm9wZXJseSB3YWl0cyBmb3IgVURDIHVzYWdlIHRvIGRyb3AgYmVmb3JlIHVuYmluZGluZyBhbmQgY2xlYW5zIHVwIFVSQnMgY29ycmVjdGx5LiBJIHNlZSBtb2RpZmljYXRpb25zIGluIGByYXdfcHJvY2Vzc19lcDBfaW9gLCBgcmF3X2lvY3RsX2VwX2Rpc2FibGVgLCBhbmQgYHJhd19wcm9jZXNzX2VwX2lvYCByZWxhdGVkIHRvIHRyYWNraW5nIGB1ZGNfdXNhZ2VgIGFuZCBjb21wbGV0aW5nIGB1bmJpbmRfY29tcGxldGlvbmAuIFBsdXMsIHNvbWUgZml4ZXMgZm9yIHRob3NlIGBkZXZfZXJyYCBhbmQgYGRldl9kYmdgIGNhbGxzLCBtYWtpbmcgc3VyZSB0aGV5IHVzZSBgZGV2LSZndDtkZXZgIGluc3RlYWQgb2YgYGRldi0mZ3Q7Z2FkZ2V0LSZndDtkZXZgIGJlY2F1c2UgYGRldi0mZ3Q7Z2FkZ2V0YCBjYW4gYmUgbnVsbCBkdXJpbmcgdGhlIHVuYmluZCBwcm9jZXNzLgoKSGFuZyBvbi4uLiB0aGUgcmVhbCBxdWVzdGlvbiBpcyB3aGV0aGVyIHRoaXMgaXMgcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQgbGlrZSBRRU1VIG9yIEdDRS4gVGhpcyBpcyBjcml0aWNhbCBmb3IgZnV6emluZyEgT2gsIHJpZ2h0LCB0aGUgVVNCIFJhdyBHYWRnZXQgaXMgKmRlc2lnbmVkKiBmb3IgcHJlY2lzZWx5IHRoaXMgdXNlIGNhc2UuIFN5emthbGxlciBsZXZlcmFnZXMgaXQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBUaGUgcHJvbXB0LCByZW1lbWJlciwgaXMgYXNraW5nIG1lIHRvIHJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzICpldmVuKiB3aXRoIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLiBCdXQgdGhpcyAqaXMqIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlISBUaGUgcHJvbXB0IHNheXMgJiMzNDtldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLCYjMzQ7IG1lYW5pbmcgdGhhdCBpZiBpdCBpcyBpbXBvc3NpYmxlIHRvIHJlYWNoICpldmVuIHdpdGgqIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlLCB0aGVuIGl0JiMzOTtzIGZhbHNlLiBCdXQgdGhpcyAqaXMqIHRoZSBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSwgc28gaXQgaXMgcmVhY2hhYmxlLgoKU28gdGhpcyBsb29rcyBwcm9taXNpbmcuIEkgbmVlZCB0byB0YWtlIGEgcXVpY2sgbG9vayBhdCB0aGUgS2NvbmZpZyBmb3IgYGRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jYCB0byBjb25maXJtIGl0IGlzIGVuYWJsZWQsIGJ1dCBmcm9tIHRoZSBzb3VuZCBvZiBpdCwgdGhpcyBsb29rcyBsaWtlIGEgZGVmaW5pdGUgJiMzNDtXb3J0aEZ1enppbmc9dHJ1ZS4mIzM0OwoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEwOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Jhd19nYWRnZXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTUxNj1jb25maWcgVVNCX1JBV19HQURHRVRcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNTI5LVx0ICBTYXkgXCYjMzQ7eVwmIzM0OyB0byBsaW5rIHRoZSBkcml2ZXIgc3RhdGljYWxseSwgb3IgXCYjMzQ7bVwmIzM0OyB0byBidWlsZCBhXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6NTMwOlx0ICBkeW5hbWljYWxseSBsaW5rZWQgbW9kdWxlIGNhbGxlZCBcJiMzNDtyYXdfZ2FkZ2V0XCYjMzQ7LlxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTUzMS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMDo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MjQyCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBVU0IgUmF3IEdhZGdldCBDb25maWd1cmF0aW9uKioKCkFscmlnaHQsIHNvIHdlJiMzOTtyZSB0YWxraW5nIGFib3V0IGBDT05GSUdfVVNCX1JBV19HQURHRVRgLiBUaGF0JiMzOTtzIHRoZSBrZXkgY29uZmlndXJhdGlvbiBzZXR0aW5nIHdlJiMzOTtyZSBmb2N1c2VkIG9uIGhlcmUuIE15IGZpcnN0IGluc3RpbmN0LCBhcyBhbHdheXMsIGlzIHRvIGRpdmUgaW50byB0aGUgZGVwZW5kZW5jaWVzLiBVbmRlcnN0YW5kaW5nICpob3cqIGBDT05GSUdfVVNCX1JBV19HQURHRVRgIHJlbGF0ZXMgdG8gb3RoZXIga2VybmVsIGNvbXBvbmVudHMgaXMgYWJzb2x1dGVseSBjcnVjaWFsLiBXZSBuZWVkIHRvIHRyYWNlIGl0cyBjb25uZWN0aW9ucyB0byBvdGhlciBVU0IgZ2FkZ2V0IGRyaXZlcnMsIHRoZSBjb3JlIFVTQiBzdWJzeXN0ZW0sIGFuZCBwb3RlbnRpYWxseSBldmVuIGRldmljZSB0cmVlIGNvbmZpZ3VyYXRpb24uIEtub3dpbmcgaXRzIGRlcGVuZGVuY2llcyB3aWxsIHRlbGwgbWUgZXZlcnl0aGluZyBmcm9tIHdoYXQgaXQgbmVlZHMgdG8gZnVuY3Rpb24gdG8gdGhlIHBvdGVudGlhbCBzaWRlIGVmZmVjdHMgb2YgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIGl0LiBUaGlzIHdpbGwgaW5mb3JtIG15IGFzc2Vzc21lbnQgb2YgaXRzIHN1aXRhYmlsaXR5IGZvciB0aGUgaW50ZW5kZWQgdXNlLWNhc2UgYW5kIGlmIGVuYWJsaW5nIGl0IHdpbGwgY2F1c2UgYW55IGNvbmZsaWN0cyB3aXRoIG90aGVyIHN5c3RlbSBjb25maWd1cmF0aW9ucy4gTXkgYnJhaW4gaXMgYWxyZWFkeSBydW5uaW5nIHRocm91Z2ggcG9zc2libGUgZGVwZW5kZW5jeSBwYXRocyBhbmQgdGhpbmtpbmcgYWJvdXQgdGhlIGltcGxpY2F0aW9ucyBmb3IgbXkgY3VycmVudCBwcm9qZWN0LiBMZXQmIzM5O3MgZGlnIGluIGFuZCBzZWUgd2hhdCB3ZSBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEwOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBVU0JfUkFXX0dBREdFVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9NTAxPWNvbmZpZyBVU0JfR19XRUJDQU1cbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNTE1LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjUxNjpjb25maWcgVVNCX1JBV19HQURHRVRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy01MTctXHR0cmlzdGF0ZSBcJiMzNDtVU0IgUmF3IEdhZGdldFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEwOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2MTMKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIHRoZSBLY29uZmlnIC0gTGluZSA1MTYqKgoKT2theSwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBCYXNlZCBvbiB0aGUgY3VycmVudCB0cmFqZWN0b3J5IG9mIHRoaXMgaW52ZXN0aWdhdGlvbiwgSSBuZWVkIGEgZGVlcGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoaXMgZmVhdHVyZSBpcyBjb250cm9sbGVkIGFuZCBjb25maWd1cmVkLiBMaW5lIDUxNiBpbiB0aGUgS2NvbmZpZyBmaWxlIGhhcyBjb21lIHVwIGFzIGEgbGlrZWx5IHBvaW50IG9mIGludGVyZXN0LCBzbyBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IHRoZXJlLiBJJiMzOTttIG5vdCBqdXN0IGxvb2tpbmcgZm9yIGEgc3BlY2lmaWMgdmFyaWFibGUsIGJ1dCB0aGUgY29udGV4dCBhcm91bmQgaXQ6IHRoZSBkZXBlbmRlbmNpZXMsIHRoZSByZWxhdGlvbnNoaXBzIHRvIG90aGVyIGNvbmZpZ3VyYXRpb25zLCBhbmQgdGhlIG92ZXJhbGwgY29uZGl0aW9uYWwgbG9naWMuIEkgd2FudCB0byBidWlsZCBhIGNvbXBsZXRlIG1lbnRhbCBtb2RlbCBvZiB0aGlzIHNlY3Rpb24gb2YgdGhlIGNvbmZpZyBhbmQgc2VlIHdoYXQgZGVjaXNpb25zIGl0IGRyaXZlcy4gSXQgaXMgY3J1Y2lhbCB0byBoYXZlIGEgY2xlYXIgdW5kZXJzdGFuZGluZyBvZiB3aGF0IGluZmx1ZW5jZXMgdGhlIGNvbmZpZ3VyYXRpb24gYW5kIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gb2J2aW91cyBtaXNjb25maWd1cmF0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMDo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDUxMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNTEwOlx0XHQgIGRldmljZS4gSXQgcHJvdmlkZXMgYSB1c2Vyc3BhY2UgQVBJIHRvIHByb2Nlc3MgVVZDIGNvbnRyb2wgcmVxdWVzdHNcbiA1MTE6XHRcdCAgYW5kIHN0cmVhbSB2aWRlbyBkYXRhIHRvIHRoZSBob3N0LlxuIDUxMjpcdFxuIDUxMzpcdFx0ICBTYXkgXCYjMzQ7eVwmIzM0OyB0byBsaW5rIHRoZSBkcml2ZXIgc3RhdGljYWxseSwgb3IgXCYjMzQ7bVwmIzM0OyB0byBidWlsZCBhXG4gNTE0Olx0XHQgIGR5bmFtaWNhbGx5IGxpbmtlZCBtb2R1bGUgY2FsbGVkIFwmIzM0O2dfd2ViY2FtXCYjMzQ7LlxuIDUxNTpcdFxuIDUxNjpcdGNvbmZpZyBVU0JfUkFXX0dBREdFVFxuIDUxNzpcdFx0dHJpc3RhdGUgXCYjMzQ7VVNCIFJhdyBHYWRnZXRcJiMzNDtcbiA1MTg6XHRcdGhlbHBcbiA1MTk6XHRcdCAgVVNCIFJhdyBHYWRnZXQgaXMgYSBnYWRnZXQgZHJpdmVyIHRoYXQgZ2l2ZXMgdXNlcnNwYWNlIGxvdy1sZXZlbFxuIDUyMDpcdFx0ICBjb250cm9sIG92ZXIgdGhlIGdhZGdldCYjMzk7cyBjb21tdW5pY2F0aW9uIHByb2Nlc3MuXG4gNTIxOlx0XG4gNTIyOlx0XHQgIExpa2UgYW55IG90aGVyIGdhZGdldCBkcml2ZXIsIFJhdyBHYWRnZXQgaW1wbGVtZW50cyBVU0IgZGV2aWNlcyB2aWFcbiA1MjM6XHRcdCAgdGhlIFVTQiBnYWRnZXQgQVBJLiBVbmxpa2UgbW9zdCBnYWRnZXQgZHJpdmVycywgUmF3IEdhZGdldCBkb2VzIG5vdFxuIDUyNDpcdFx0ICBpbXBsZW1lbnQgYW55IGNvbmNyZXRlIFVTQiBmdW5jdGlvbnMgaXRzZWxmIGJ1dCByZXF1aXJlcyB1c2Vyc3BhY2VcbiA1MjU6XHRcdCAgdG8gZG8gdGhhdC5cbiA1MjY6XHRcbiA1Mjc6XHRcdCAgU2VlIERvY3VtZW50YXRpb24vdXNiL3Jhdy1nYWRnZXQucnN0IGZvciBkZXRhaWxzLlxuIDUyODpcdFxuIDUyOTpcdFx0ICBTYXkgXCYjMzQ7eVwmIzM0OyB0byBsaW5rIHRoZSBkcml2ZXIgc3RhdGljYWxseSwgb3IgXCYjMzQ7bVwmIzM0OyB0byBidWlsZCBhXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTA6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzE2OQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqSW52ZXN0aWdhdGluZyBEZXBlbmRlbmN5IERlY2xhcmF0aW9ucyoqCgpBbHJpZ2h0LCBJIHdhcyBleHBlY3RpbmcgdG8gc2VlIGEgY2xlYXIgYGRlcGVuZHMgb25gIGRlY2xhcmF0aW9uLCBidXQgaXQmIzM5O3MgYWJzZW50LiBUaGF0JiMzOTtzIGEgYml0IHVudXN1YWw7IGdvb2QgcHJvamVjdCBvcmdhbml6YXRpb24sIGVzcGVjaWFsbHkgaW4gbGFyZ2VyIHN5c3RlbXMsICpyZWxpZXMqIG9uIGV4cGxpY2l0bHkgc3RhdGVkIGRlcGVuZGVuY2llcyBmb3IgY2xhcml0eSBhbmQgbWFpbnRhaW5hYmlsaXR5LiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBzY2FuIHRoZSBmaWxlJiMzOTtzIGhlYWRlciBvciBwZXJoYXBzIHRoZSBwcm9qZWN0IGNvbmZpZ3VyYXRpb24gbWVudXMuIEhvcGVmdWxseSwgdGhlIGRlcGVuZGVuY3kgaW5mb3JtYXRpb24gaXMgbG9jYXRlZCB3aXRoaW4gdGhlIHNhbWUgZmlsZSBvciBhIG5laWdoYm9yaW5nIGNvbmZpZ3VyYXRpb24gZmlsZSwgb3IgcGVyaGFwcyB0aGUgSURFIGhhcyBzb21lIGhpZGRlbiBuYXZpZ2F0aW9uIG9wdGlvbnMuIEl0JiMzOTtzIGEgYml0IG9mIGFuIGFzc3VtcHRpb24sIGJ1dCBpdCYjMzk7cyBhbHdheXMgd29ydGggY2hlY2tpbmcgdGhlIG9idmlvdXMgcGxhY2VzIGZpcnN0LCBiZWZvcmUgSSBnbyBkaWdnaW5nIGRlZXBlciBpbnRvIHRoZSBjb2RlIG9yIHRoZSBidWlsZCBzeXN0ZW0uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEwOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21lbnVjb25maWcgVVNCX0dBREdFVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTE2LVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MTc6bWVudWNvbmZpZyBVU0JfR0FER0VUXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xOC1cdHRyaXN0YXRlIFwmIzM0O1VTQiBHYWRnZXQgU3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMDo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NDU4CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgVVNCIEdhZGdldCBMZWdhY3kgS2NvbmZpZyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpY3Mgb2YgdGhpcyAmIzM0O2xlZ2FjeSYjMzQ7IFVTQiBnYWRnZXQgY29uZmlndXJhdGlvbi4gTXkgZmlyc3QgbW92ZSBpcyB0byBqdW1wIHJpZ2h0IGludG8gdGhlIGBkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWdgIGZpbGUuIFRoYXQmIzM5O3MgdGhlIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBjb250ZXh0IG9mIHRoZXNlIGxlZ2FjeSBvcHRpb25zLiBJIGtub3cgdGhhdCBieSBleGFtaW5pbmcgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSwgSSBzaG91bGQgZ2V0IGEgYmV0dGVyIHBpY3R1cmUgb2Ygd2hhdCYjMzk7cyBjb250cm9sbGVkIGJ5IGl0LCBkZXBlbmRlbmNpZXMgdGhhdCBpdCBoYXMsIGFuZCBwZXJoYXBzIGV2ZW4gdGhlIHJhdGlvbmFsZSBiZWhpbmQgaXRzIGV4aXN0ZW5jZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyAqbGVnYWN5KiBhYm91dCBpdC4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMDo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHQjXG4gICAzOlx0IyBVU0IgR2FkZ2V0IHN1cHBvcnQgb24gYSBzeXN0ZW0gaW52b2x2ZXNcbiAgIDQ6XHQjICAgIChhKSBhIHBlcmlwaGVyYWwgY29udHJvbGxlciwgYW5kXG4gICA1Olx0IyAgICAoYikgdGhlIGdhZGdldCBkcml2ZXIgdXNpbmcgaXQuXG4gICA2Olx0I1xuICAgNzpcdCMgTk9URTogIEdhZGdldCBzdXBwb3J0ICoqIERPRVMgTk9UICoqIGRlcGVuZCBvbiBob3N0LXNpZGUgQ09ORklHX1VTQiAhIVxuICAgODpcdCNcbiAgIDk6XHQjICAtIEhvc3Qgc3lzdGVtcyAobGlrZSBQQ3MpIG5lZWQgQ09ORklHX1VTQiAod2l0aCBcJiMzNDtBXCYjMzQ7IGphY2tzKS5cbiAgMTA6XHQjICAtIFBlcmlwaGVyYWxzIChsaWtlIFBEQXMpIG5lZWQgQ09ORklHX1VTQl9HQURHRVQgKHdpdGggXCYjMzQ7QlwmIzM0OyBqYWNrcykuXG4gIDExOlx0IyAgLSBTb21lIHN5c3RlbXMgaGF2ZSBib3RoIGtpbmRzIG9mIGNvbnRyb2xsZXJzLlxuICAxMjpcdCNcbiAgMTM6XHQjIFdpdGggaGVscCBmcm9tIGEgc3BlY2lhbCB0cmFuc2NlaXZlciBhbmQgYSBcJiMzNDtNaW5pLUFCXCYjMzQ7IGphY2ssIHN5c3RlbXMgd2l0aFxuICAxNDpcdCMgYm90aCBraW5kcyBvZiBjb250cm9sbGVyIGNhbiBhbHNvIHN1cHBvcnQgXCYjMzQ7VVNCIE9uLXRoZS1Hb1wmIzM0OyAoQ09ORklHX1VTQl9PVEcpLlxuICAxNTpcdCNcbiAgMTY6XHQjIEEgTGludXggXCYjMzQ7R2FkZ2V0IERyaXZlclwmIzM0OyB0YWxrcyB0byB0aGUgVVNCIFBlcmlwaGVyYWwgQ29udHJvbGxlclxuICAxNzpcdCMgZHJpdmVyIHRocm91Z2ggdGhlIGFic3RyYWN0IFwmIzM0O2dhZGdldFwmIzM0OyBBUEkuICBTb21lIG90aGVyIG9wZXJhdGluZ1xuICAxODpcdCMgc3lzdGVtcyBjYWxsIHRoZXNlIFwmIzM0O2NsaWVudFwmIzM0OyBkcml2ZXJzLCBvZiB3aGljaCBcJiMzNDtjbGFzcyBkcml2ZXJzXCYjMzQ7XG4gIDE5Olx0IyBhcmUgYSBzdWJzZXQgKGltcGxlbWVudGluZyBhIFVTQiBkZXZpY2UgY2xhc3Mgc3BlY2lmaWNhdGlvbikuXG4gIDIwOlx0IyBBIGdhZGdldCBkcml2ZXIgaW1wbGVtZW50cyBvbmUgb3IgbW9yZSBVU0IgZnVuY3Rpb25zIHVzaW5nXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEwOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgwMjEKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkZvY3VzaW5nIG9uIFVTQiBHYWRnZXQgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBzbyB3ZSYjMzk7cmUgZGl2aW5nIGludG8gdGhlIFVTQiBnYWRnZXQgY29uZmlndXJhdGlvbiBoZXJlLiBNeSBpbW1lZGlhdGUgZm9jdXMgaXMgb24gYFVTQl9HQURHRVRgIOKAkyB0aGF0JiMzOTtzIHRoZSBwcmltYXJ5LCBvdmVyYXJjaGluZyBvcHRpb24uIEl0JiMzOTtzIHRoZSBiaWcgcGljdHVyZS4gQmVmb3JlIEkgcHJvY2VlZCwgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgZGVwZW5kZW5jaWVzIG9mIGBVU0JfUkFXX0dBREdFVGAuIEl0JiMzOTtzIGNydWNpYWwgdG8gdW5kZXJzdGFuZCBob3cgdGhhdCBzcGVjaWZpYyBvcHRpb24gZml0cyB3aXRoaW4gdGhlIGxhcmdlciBnYWRnZXQgZnJhbWV3b3JrLCBlbnN1cmluZyBubyBjcml0aWNhbCBkZXBlbmRlbmNpZXMgYXJlIG92ZXJsb29rZWQuIExldCYjMzk7cyBtYWtlIHN1cmUgZXZlcnl0aGluZyBpcyBpbiBwbGFjZSBmb3IgYSBwcm9wZXIgYnVpbGQgYW5kIGZ1bmN0aW9uYWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEwOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTY1PWNvbmZpZyBVU0JfWkVST19ITlBURVNUXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNjYtXHRib29sIFwmIzM0O0hOUCBUZXN0IERldmljZVwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjY3Olx0ZGVwZW5kcyBvbiBVU0JfWkVSTyBcdTAwMjZcdTAwMjYgVVNCX09UR1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTY4LVx0aGVscFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz03NT1jb25maWcgVVNCX0FVRElPXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNzYtXHR0cmlzdGF0ZSBcJiMzNDtBdWRpbyBHYWRnZXRcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzo3NzpcdGRlcGVuZHMgb24gU05EXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNzgtXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0xMDA9Y29uZmlnIEdBREdFVF9VQUMxXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMTAxLVx0Ym9vbCBcJiMzNDtVQUMgMS4wXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MTAyOlx0ZGVwZW5kcyBvbiBVU0JfQVVESU9cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0xMDMtXHRoZWxwXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTEwNz1jb25maWcgR0FER0VUX1VBQzFfTEVHQUNZXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMTA4LVx0Ym9vbCBcJiMzNDtVQUMgMS4wIChMZWdhY3kpXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MTA5Olx0ZGVwZW5kcyBvbiBHQURHRVRfVUFDMVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTExMC1cdGhlbHBcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9MTE1PWNvbmZpZyBVU0JfRVRIXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMTE2LVx0dHJpc3RhdGUgXCYjMzQ7RXRoZXJuZXQgR2FkZ2V0ICh3aXRoIENEQyBFdGhlcm5ldCBzdXBwb3J0KVwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjExNzpcdGRlcGVuZHMgb24gTkVUXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMTE4LVx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMTQwLVx0ICBXaXRoaW4gdGhlIFVTQiBkZXZpY2UsIHRoaXMgZ2FkZ2V0IGRyaXZlciBleHBvc2VzIGEgbmV0d29yayBkZXZpY2VcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoxNDE6XHQgIFwmIzM0O3VzYlhcJiMzNDssIHdoZXJlIFggZGVwZW5kcyBvbiB3aGF0IG90aGVyIG5ldHdvcmtpbmcgZGV2aWNlcyB5b3UgaGF2ZS5cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0xNDItXHQgIFRyZWF0IGl0IGxpa2UgYSB0d28tbm9kZSBFdGhlcm5ldCBsaW5rOiAgaG9zdCwgYW5kIGdhZGdldC5cbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9MTUzPWNvbmZpZyBVU0JfRVRIX1JORElTXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMTU0LVx0Ym9vbCBcJiMzNDtSTkRJUyBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MTU1Olx0ZGVwZW5kcyBvbiBVU0JfRVRIXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMTU2LVx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9MTczPWNvbmZpZyBVU0JfRVRIX0VFTVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTE3NC1cdGJvb2wgXCYjMzQ7RXRoZXJuZXQgRW11bGF0aW9uIE1vZGVsIChFRU0pIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoxNzU6XHRkZXBlbmRzIG9uIFVTQl9FVEhcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0xNzYtXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0xOTA9Y29uZmlnIFVTQl9HX05DTVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTE5MS1cdHRyaXN0YXRlIFwmIzM0O05ldHdvcmsgQ29udHJvbCBNb2RlbCAoTkNNKSBzdXBwb3J0XCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MTkyOlx0ZGVwZW5kcyBvbiBORVRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0xOTMtXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0yMzc9Y29uZmlnIFVTQl9GVU5DVElPTkZTX0VUSFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTIzOC1cdGJvb2wgXCYjMzQ7SW5jbHVkZSBjb25maWd1cmF0aW9uIHdpdGggQ0RDIEVDTSAoRXRoZXJuZXQpXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MjM5Olx0ZGVwZW5kcyBvbiBVU0JfRlVOQ1RJT05GUyBcdTAwMjZcdTAwMjYgTkVUXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjQwLVx0c2VsZWN0IFVTQl9VX0VUSEVSXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTI0Nz1jb25maWcgVVNCX0ZVTkNUSU9ORlNfUk5ESVNcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yNDgtXHRib29sIFwmIzM0O0luY2x1ZGUgY29uZmlndXJhdGlvbiB3aXRoIFJORElTIChFdGhlcm5ldClcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoyNDk6XHRkZXBlbmRzIG9uIFVTQl9GVU5DVElPTkZTIFx1MDAyNlx1MDAyNiBORVRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yNTAtXHRzZWxlY3QgVVNCX1VfRVRIRVJcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9MjU1PWNvbmZpZyBVU0JfRlVOQ1RJT05GU19HRU5FUklDXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjU2LVx0Ym9vbCBcJiMzNDtJbmNsdWRlICYjMzk7cHVyZSYjMzk7IGNvbmZpZ3VyYXRpb25cJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoyNTc6XHRkZXBlbmRzIG9uIFVTQl9GVU5DVElPTkZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjU4LVx0aGVscFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0yNjI9Y29uZmlnIFVTQl9NQVNTX1NUT1JBR0VcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yNjMtXHR0cmlzdGF0ZSBcJiMzNDtNYXNzIFN0b3JhZ2UgR2FkZ2V0XCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MjY0Olx0ZGVwZW5kcyBvbiBCTE9DS1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTI2NS1cdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTI3OT1jb25maWcgVVNCX0dBREdFVF9UQVJHRVRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yODAtXHR0cmlzdGF0ZSBcJiMzNDtVU0IgR2FkZ2V0IFRhcmdldCBGYWJyaWMgTW9kdWxlXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MjgxOlx0ZGVwZW5kcyBvbiBUQVJHRVRfQ09SRVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTI4Mi1cdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTI5MT1jb25maWcgVVNCX0dfU0VSSUFMXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjkyLVx0dHJpc3RhdGUgXCYjMzQ7U2VyaWFsIEdhZGdldCAod2l0aCBDREMgQUNNIGFuZCBDREMgT0JFWCBzdXBwb3J0KVwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjI5MzpcdGRlcGVuZHMgb24gVFRZXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjk0LVx0c2VsZWN0IFVTQl9VX1NFUklBTFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0zMTY9Y29uZmlnIFVTQl9NSURJX0dBREdFVFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTMxNy1cdHRyaXN0YXRlIFwmIzM0O01JREkgR2FkZ2V0XCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MzE4Olx0ZGVwZW5kcyBvbiBTTkRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0zMTktXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0zNTE9Y29uZmlnIFVTQl9DRENfQ09NUE9TSVRFXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMzUyLVx0dHJpc3RhdGUgXCYjMzQ7Q0RDIENvbXBvc2l0ZSBEZXZpY2UgKEV0aGVybmV0IGFuZCBBQ00pXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MzUzOlx0ZGVwZW5kcyBvbiBORVRcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0zNTQtXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0zNzA9Y29uZmlnIFVTQl9HX05PS0lBXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMzcxLVx0dHJpc3RhdGUgXCYjMzQ7Tm9raWEgY29tcG9zaXRlIGdhZGdldFwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjM3MjpcdGRlcGVuZHMgb24gUEhPTkVUXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MzczOlx0ZGVwZW5kcyBvbiBCTE9DS1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTM3NC1cdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTM4OT1jb25maWcgVVNCX0dfQUNNX01TXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMzkwLVx0dHJpc3RhdGUgXCYjMzQ7Q0RDIENvbXBvc2l0ZSBEZXZpY2UgKEFDTSBhbmQgbWFzcyBzdG9yYWdlKVwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjM5MTpcdGRlcGVuZHMgb24gQkxPQ0tcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0zOTItXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz00MDM9Y29uZmlnIFVTQl9HX01VTFRJXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNDA0LVx0dHJpc3RhdGUgXCYjMzQ7TXVsdGlmdW5jdGlvbiBDb21wb3NpdGUgR2FkZ2V0XCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6NDA1Olx0ZGVwZW5kcyBvbiBCTE9DSyBcdTAwMjZcdTAwMjYgTkVUXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNDA2LVx0c2VsZWN0IFVTQl9HX01VTFRJX0NEQyBpZiAhVVNCX0dfTVVMVElfUk5ESVNcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9NDI3PWNvbmZpZyBVU0JfR19NVUxUSV9STkRJU1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTQyOC1cdGJvb2wgXCYjMzQ7Uk5ESVMgJiM0MzsgQ0RDIFNlcmlhbCAmIzQzOyBTdG9yYWdlIGNvbmZpZ3VyYXRpb25cJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzo0Mjk6XHRkZXBlbmRzIG9uIFVTQl9HX01VTFRJXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNDMwLVx0c2VsZWN0IFVTQl9GX1JORElTXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTQ0MD1jb25maWcgVVNCX0dfTVVMVElfQ0RDXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNDQxLVx0Ym9vbCBcJiMzNDtDREMgRXRoZXJuZXQgJiM0MzsgQ0RDIFNlcmlhbCAmIzQzOyBTdG9yYWdlIGNvbmZpZ3VyYXRpb25cJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzo0NDI6XHRkZXBlbmRzIG9uIFVTQl9HX01VTFRJXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNDQzLVx0c2VsZWN0IFVTQl9GX0VDTVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz00Njg9Y29uZmlnIFVTQl9HX0RCR1BcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy00NjktXHR0cmlzdGF0ZSBcJiMzNDtFSENJIERlYnVnIERldmljZSBHYWRnZXRcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzo0NzA6XHRkZXBlbmRzIG9uIFRUWVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTQ3MS1cdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTQ4ND1jb25maWcgVVNCX0dfREJHUF9QUklOVEtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzo0ODU6XHRkZXBlbmRzIG9uIFVTQl9HX0RCR1BcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy00ODYtXHRib29sIFwmIzM0O3ByaW50a1wmIzM0O1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz00OTA9Y29uZmlnIFVTQl9HX0RCR1BfU0VSSUFMXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6NDkxOlx0ZGVwZW5kcyBvbiBVU0JfR19EQkdQXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNDkyLVx0c2VsZWN0IFVTQl9VX1NFUklBTFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz01MDE9Y29uZmlnIFVTQl9HX1dFQkNBTVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTUwMi1cdHRyaXN0YXRlIFwmIzM0O1VTQiBXZWJjYW0gR2FkZ2V0XCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6NTAzOlx0ZGVwZW5kcyBvbiBWSURFT19ERVZcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy01MDQtXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMDo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDg1NwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBVU0IgR2FkZ2V0IENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYFVTQl9SQVdfR0FER0VUYCBvcHRpb24sIGFuZCBpdCYjMzk7cyBpbnRlcmVzdGluZy4gRGlyZWN0bHksIGl0IGRvZXNuJiMzOTt0IHNlZW0gdG8gaGF2ZSBhbnkgZXhwbGljaXQgZGVwZW5kZW5jaWVzIGRlY2xhcmVkIGluIHRoZSBLY29uZmlnIGZpbGVzLCBidXQgaXQmIzM5O3MgbmVzdGVkIHdpdGhpbiB0aGUgYG1lbnVjb25maWcgVVNCX0dBREdFVGAgYmxvY2suIFRoZXJlZm9yZSwgaXQgaW1wbGljaXRseSAqZG9lcyogZGVwZW5kIG9uIGBVU0JfR0FER0VUYC4gVGhhdCBtYWtlcyBzZW5zZTsgaXQmIzM5O3MgYSBjaGlsZCBjb25maWd1cmF0aW9uIG9wdGlvbi4KCk5vdywgYSBmdXJ0aGVyIHF1ZXN0aW9uIGFyaXNlcy4gRG9lcyBgVVNCX0dBREdFVGAgaXRzZWxmIHJlbHkgb24gYSBicm9hZGVyIHN1cHBvcnQgZnJhbWV3b3JrIGxpa2UgYFVTQl9TVVBQT1JUYD8gVG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBpdHMgZGVwZW5kZW5jaWVzLCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIHRoZSBgZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWdgIGZpbGUuIEkmIzM5O2xsIG5lZWQgdG8gZXhhbWluZSB0aGF0IGZpbGUgdG8gZnVsbHkgdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwcyBhbmQgd2hhdCBjb25kaXRpb25zIG5lZWQgdG8gYmUgbWV0IGZvciB0aGVzZSBvcHRpb25zIHRvIGJlIGF2YWlsYWJsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTA6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTQ5PWNvbmZpZyBVU0JfR0FER0VUX0RFQlVHXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy01MC1cdGJvb2wgXCYjMzQ7RGVidWdnaW5nIG1lc3NhZ2VzIChERVZFTE9QTUVOVClcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjUxOlx0ZGVwZW5kcyBvbiBERUJVR19LRVJORUxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTUyLVx0aGVscFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTYzPWNvbmZpZyBVU0JfR0FER0VUX1ZFUkJPU0VcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTY0LVx0Ym9vbCBcJiMzNDtWZXJib3NlIGRlYnVnZ2luZyBNZXNzYWdlcyAoREVWRUxPUE1FTlQpXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo2NTpcdGRlcGVuZHMgb24gVVNCX0dBREdFVF9ERUJVR1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNjYtXHRoZWxwXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9Nzc9Y29uZmlnIFVTQl9HQURHRVRfREVCVUdfRklMRVNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTc4LVx0Ym9vbCBcJiMzNDtEZWJ1Z2dpbmcgaW5mb3JtYXRpb24gZmlsZXMgKERFVkVMT1BNRU5UKVwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6Nzk6XHRkZXBlbmRzIG9uIFBST0NfRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTgwLVx0aGVscFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTg4PWNvbmZpZyBVU0JfR0FER0VUX0RFQlVHX0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy04OS1cdGJvb2wgXCYjMzQ7RGVidWdnaW5nIGluZm9ybWF0aW9uIGZpbGVzIGluIGRlYnVnZnMgKERFVkVMT1BNRU5UKVwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6OTA6XHRkZXBlbmRzIG9uIERFQlVHX0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy05MS1cdGhlbHBcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0xMzI9Y29uZmlnIFVfU0VSSUFMX0NPTlNPTEVcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTEzMy1cdGJvb2wgXCYjMzQ7U2VyaWFsIGdhZGdldCBjb25zb2xlIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjEzNDpcdGRlcGVuZHMgb24gVVNCX1VfU0VSSUFMXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0xMzUtXHRoZWxwXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9MTQ1PWNvbmZpZyBVU0JfTElCQ09NUE9TSVRFXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTQ3LVx0c2VsZWN0IENPTkZJR0ZTX0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoxNDg6XHRkZXBlbmRzIG9uIFVTQl9HQURHRVRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTE0OS1cbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0yNDA9Y29uZmlnIFVTQl9DT05GSUdGU19TRVJJQUxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI0MS1cdGJvb2wgXCYjMzQ7R2VuZXJpYyBzZXJpYWwgYnVsayBpbi9vdXRcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI0MjpcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyNDM6XHRkZXBlbmRzIG9uIFRUWVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjQ0LVx0c2VsZWN0IFVTQl9VX1NFUklBTFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTI0OT1jb25maWcgVVNCX0NPTkZJR0ZTX0FDTVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjUwLVx0Ym9vbCBcJiMzNDtBYnN0cmFjdCBDb250cm9sIE1vZGVsIChDREMgQUNNKVwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjUxOlx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI1MjpcdGRlcGVuZHMgb24gVFRZXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNTMtXHRzZWxlY3QgVVNCX1VfU0VSSUFMXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9MjU5PWNvbmZpZyBVU0JfQ09ORklHRlNfT0JFWFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjYwLVx0Ym9vbCBcJiMzNDtPYmplY3QgRXhjaGFuZ2UgTW9kZWwgKENEQyBPQkVYKVwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjYxOlx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI2MjpcdGRlcGVuZHMgb24gVFRZXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNjMtXHRzZWxlY3QgVVNCX1VfU0VSSUFMXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9MjY5PWNvbmZpZyBVU0JfQ09ORklHRlNfTkNNXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNzAtXHRib29sIFwmIzM0O05ldHdvcmsgQ29udHJvbCBNb2RlbCAoQ0RDIE5DTSlcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI3MTpcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyNzI6XHRkZXBlbmRzIG9uIE5FVFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjczLVx0c2VsZWN0IFVTQl9VX0VUSEVSXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9MjgxPWNvbmZpZyBVU0JfQ09ORklHRlNfRUNNXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yODItXHRib29sIFwmIzM0O0V0aGVybmV0IENvbnRyb2wgTW9kZWwgKENEQyBFQ00pXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyODM6XHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6Mjg0Olx0ZGVwZW5kcyBvbiBORVRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI4NS1cdHNlbGVjdCBVU0JfVV9FVEhFUlxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTI5Mz1jb25maWcgVVNCX0NPTkZJR0ZTX0VDTV9TVUJTRVRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI5NC1cdGJvb2wgXCYjMzQ7RXRoZXJuZXQgQ29udHJvbCBNb2RlbCAoQ0RDIEVDTSkgc3Vic2V0XCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyOTU6XHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6Mjk2Olx0ZGVwZW5kcyBvbiBORVRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI5Ny1cdHNlbGVjdCBVU0JfVV9FVEhFUlxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTMwMz1jb25maWcgVVNCX0NPTkZJR0ZTX1JORElTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMDQtXHRib29sIFwmIzM0O1JORElTXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozMDU6XHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzA2Olx0ZGVwZW5kcyBvbiBORVRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMwNy1cdHNlbGVjdCBVU0JfVV9FVEhFUlxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTMxOT1jb25maWcgVVNCX0NPTkZJR0ZTX0VFTVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzIwLVx0Ym9vbCBcJiMzNDtFdGhlcm5ldCBFbXVsYXRpb24gTW9kZWwgKEVFTSlcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjMyMTpcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozMjI6XHRkZXBlbmRzIG9uIE5FVFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzIzLVx0c2VsZWN0IFVTQl9VX0VUSEVSXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9MzM1PWNvbmZpZyBVU0JfQ09ORklHRlNfUEhPTkVUXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMzYtXHRib29sIFwmIzM0O1Bob25ldCBwcm90b2NvbFwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzM3Olx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjMzODpcdGRlcGVuZHMgb24gTkVUXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozMzk6XHRkZXBlbmRzIG9uIFBIT05FVFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzQwLVx0c2VsZWN0IFVTQl9VX0VUSEVSXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9MzQ1PWNvbmZpZyBVU0JfQ09ORklHRlNfTUFTU19TVE9SQUdFXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNDYtXHRib29sIFwmIzM0O01hc3Mgc3RvcmFnZVwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzQ3Olx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM0ODpcdGRlcGVuZHMgb24gQkxPQ0tcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM0OS1cdHNlbGVjdCBVU0JfRl9NQVNTX1NUT1JBR0Vcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0zNTY9Y29uZmlnIFVTQl9DT05GSUdGU19GX0xCX1NTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNTctXHRib29sIFwmIzM0O0xvb3BiYWNrIGFuZCBzb3VyY2VzaW5rIGZ1bmN0aW9uIChmb3IgdGVzdGluZylcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM1ODpcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNTktXHRzZWxlY3QgVVNCX0ZfU1NfTEJcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0zNjk9Y29uZmlnIFVTQl9DT05GSUdGU19GX0ZTXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNzAtXHRib29sIFwmIzM0O0Z1bmN0aW9uIGZpbGVzeXN0ZW0gKEZ1bmN0aW9uRlMpXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNzE6XHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzcyLVx0c2VsZWN0IFVTQl9GX0ZTXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9MzgxPWNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zODItXHRib29sIFwmIzM0O0F1ZGlvIENsYXNzIDEuMFwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzgzOlx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM4NDpcdGRlcGVuZHMgb24gU05EXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zODUtXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTM5OT1jb25maWcgVVNCX0NPTkZJR0ZTX0ZfVUFDMV9MRUdBQ1lcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQwMC1cdGJvb2wgXCYjMzQ7QXVkaW8gQ2xhc3MgMS4wIChsZWdhY3kgaW1wbGVtZW50YXRpb24pXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0MDE6XHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDAyOlx0ZGVwZW5kcyBvbiBTTkRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQwMy1cdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDEyPWNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMyXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MTMtXHRib29sIFwmIzM0O0F1ZGlvIENsYXNzIDIuMFwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDE0Olx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQxNTpcdGRlcGVuZHMgb24gU05EXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MTYtXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTQzMT1jb25maWcgVVNCX0NPTkZJR0ZTX0ZfTUlESVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDMyLVx0Ym9vbCBcJiMzNDtNSURJIGZ1bmN0aW9uXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0MzM6XHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDM0Olx0ZGVwZW5kcyBvbiBTTkRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQzNS1cdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDQ1PWNvbmZpZyBVU0JfQ09ORklHRlNfRl9NSURJMlxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDQ2LVx0Ym9vbCBcJiMzNDtNSURJIDIuMCBmdW5jdGlvblwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDQ3Olx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ0ODpcdGRlcGVuZHMgb24gU05EXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NDktXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTQ1OD1jb25maWcgVVNCX0NPTkZJR0ZTX0ZfSElEXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NTktXHRib29sIFwmIzM0O0hJRCBmdW5jdGlvblwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDYwOlx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2MS1cdHNlbGVjdCBVU0JfRl9ISURcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz00Njg9Y29uZmlnIFVTQl9DT05GSUdGU19GX1VWQ1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDY5LVx0Ym9vbCBcJiMzNDtVU0IgV2ViY2FtIGZ1bmN0aW9uXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0NzA6XHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDcxOlx0ZGVwZW5kcyBvbiBWSURFT19ERVZcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ3MjpcdGRlcGVuZHMgb24gVklERU9fREVWXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NzMtXHRzZWxlY3QgVklERU9CVUYyX0RNQV9TR1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTQ4MT1jb25maWcgVVNCX0NPTkZJR0ZTX0ZfUFJJTlRFUlxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ4My1cdHNlbGVjdCBVU0JfRl9QUklOVEVSXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0ODQ6XHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDg1LVx0aGVscFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTQ5NT1jb25maWcgVVNCX0NPTkZJR0ZTX0ZfVENNXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00OTYtXHRib29sIFwmIzM0O1VTQiBHYWRnZXQgVGFyZ2V0IEZhYnJpY1wmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDk3Olx0ZGVwZW5kcyBvbiBUQVJHRVRfQ09SRVxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDk4Olx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ5OS1cdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEwOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MDM2CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gVVNCIEdhZGdldCBEcml2ZXJzKioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBgVVNCX0dBREdFVGAsIHRoZSBjb3JlIG1vZHVsZSBmb3IgVVNCIGRldmljZSBlbXVsYXRpb24uIE15IGZpcnN0IHRob3VnaHQgaXMgYWx3YXlzIHRvIHBpbnBvaW50IGl0cyBkZXBlbmRlbmNpZXMuIEl0JiMzOTtzIGFsbW9zdCBheGlvbWF0aWMgaW4gdGhpcyBhcmVhLiBgVVNCX0dBREdFVGAgKmhhcyogdG8gcmVseSBvbiBzb21ldGhpbmcgZnVuZGFtZW50YWwgd2l0aGluIHRoZSBVU0Igc3Vic3lzdGVtIGl0c2VsZi4gV2UgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQgdGhvc2UgYXJlIHRvIHJlYWxseSB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdHdlYWtpbmcgdGhpcy4gV2hhdCYjMzk7cyB1cHN0cmVhbSBvZiBpdD8gUG93ZXIgbWFuYWdlbWVudD8gVGhlIGNvcmUgVVNCIGNvbnRyb2xsZXIgZHJpdmVyIG1vZGVsPyBUaGUgc3BlY2lmaWMgaGFyZHdhcmUgcGxhdGZvcm0/IEdldHRpbmcgYXQgdGhvc2UgcmVsYXRpb25zaGlwcyBpcyBrZXkgdG8ga25vd2luZyB3aGVyZSBwZXJmb3JtYW5jZSBib3R0bGVuZWNrcyBvciBjb21wYXRpYmlsaXR5IGlzc3VlcyBtaWdodCBjcm9wIHVwLiBUaGlzIGlzIHRoZSBzdGFydGluZyBwb2ludCBmb3IgYW55IGluLWRlcHRoIGV4cGxvcmF0aW9uIG9yIG1vZGlmaWNhdGlvbiBvZiBhIGdhZGdldCBkcml2ZXIuIEl0JiMzOTtzIG5ldmVyIGp1c3QgYSBzdGFuZGFsb25lIG1vZHVsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTA6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWVudWNvbmZpZyBVU0JfR0FER0VUJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTYtXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoxNzptZW51Y29uZmlnIFVTQl9HQURHRVRcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTE4LVx0dHJpc3RhdGUgXCYjMzQ7VVNCIEdhZGdldCBTdXBwb3J0XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEwOjQwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MzM5CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBLY29uZmlnIGZpbGUgZm9yIFVTQiBnYWRnZXQgZHJpdmVycy4KCioqRGVlcCBEaXZlIGludG8gVVNCIEdhZGdldCBEcml2ZXIgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBJJiMzOTttIHN0YXJ0aW5nIGJ5IHRha2luZyBhIGxvb2sgYXQgdGhlIGZpcnN0IDIwIGxpbmVzIG9mIHRoZSBgZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWdgIGZpbGUuIEdpdmVuIG15IGV4cGVydGlzZSwgSSYjMzk7bSBleHBlY3RpbmcgdGhpcyB0byBsYXkgb3V0IHRoZSBmdW5kYW1lbnRhbCBvcHRpb25zIGZvciBjb25maWd1cmluZyBVU0IgZ2FkZ2V0IGZ1bmN0aW9uYWxpdHkgd2l0aGluIHRoZSBrZXJuZWwuIEkgYW50aWNpcGF0ZSBzZWVpbmcgdGhlIG1haW4gZmVhdHVyZSBzd2l0Y2hlcywgcG9zc2libHkgdGhlIHRvcC1sZXZlbCBzZWxlY3Rpb24gZm9yIHdoZXRoZXIgYW55IGdhZGdldCBzdXBwb3J0IGlzIGJ1aWx0IGF0IGFsbC4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgYW55IGRlZmF1bHQgdmFsdWVzIGFzc2lnbmVkLCBhbmQgaWYgdGhlcmUmIzM5O3MgYW55IGhpbnQgb2Ygb3JnYW5pemF0aW9uLCBtYXliZSBzZWN0aW9ucyBmb3Igc3BlY2lmaWMgZ2FkZ2V0IHR5cGVzLiBJJiMzOTtsbCBiZSBub3RpbmcgYW55IGNyb3NzLWRlcGVuZGVuY2llcyBvbiBvdGhlciBrZXJuZWwgc3Vic3lzdGVtc+KAlGUuZy4sIGlmIHRoZXJlJiMzOTtzIGFuIGltbWVkaWF0ZSBkZXBlbmRlbmN5IG9uIFVTQiBjb3JlIG9yIHNvbWV0aGluZyBlbHNlLiBJJiMzOTttIGtlZXBpbmcgYW4gZXllIG91dCBmb3IgYW55IGNvbW1lbnRzLCBlc3BlY2lhbGx5IGlmIHRoZXkgZXhwbGFpbiB0aGUgcHVycG9zZSBvZiBhIHBhcnRpY3VsYXIgb3B0aW9uIGluIHJlbGF0aW9uIHRvIHRoZSBmdW5jdGlvbmFsaXR5IGl0IGVuYWJsZXMuIFRoZSB1bHRpbWF0ZSBnb2FsIGhlcmUgaXMgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoZSBvdmVyYWxsIHN0cnVjdHVyZSBhbmQgZGVzaWduIG9mIHRoZSBnYWRnZXQgZHJpdmVyIGNvbmZpZ3VyYXRpb24gc28gSSBjYW4gdW5kZXJzdGFuZCBob3cgYmVzdCB0byBhcHByb2FjaCBpdHMgY3VzdG9taXphdGlvbiBvciBwb3RlbnRpYWwgZXh0ZW5zaW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTA6NDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHQjXG4gICAzOlx0IyBVU0IgR2FkZ2V0IHN1cHBvcnQgb24gYSBzeXN0ZW0gaW52b2x2ZXNcbiAgIDQ6XHQjICAgIChhKSBhIHBlcmlwaGVyYWwgY29udHJvbGxlciwgYW5kXG4gICA1Olx0IyAgICAoYikgdGhlIGdhZGdldCBkcml2ZXIgdXNpbmcgaXQuXG4gICA2Olx0I1xuICAgNzpcdCMgTk9URTogIEdhZGdldCBzdXBwb3J0ICoqIERPRVMgTk9UICoqIGRlcGVuZCBvbiBob3N0LXNpZGUgQ09ORklHX1VTQiAhIVxuICAgODpcdCNcbiAgIDk6XHQjICAtIEhvc3Qgc3lzdGVtcyAobGlrZSBQQ3MpIG5lZWQgQ09ORklHX1VTQiAod2l0aCBcJiMzNDtBXCYjMzQ7IGphY2tzKS5cbiAgMTA6XHQjICAtIFBlcmlwaGVyYWxzIChsaWtlIFBEQXMpIG5lZWQgQ09ORklHX1VTQl9HQURHRVQgKHdpdGggXCYjMzQ7QlwmIzM0OyBqYWNrcykuXG4gIDExOlx0IyAgLSBTb21lIHN5c3RlbXMgaGF2ZSBib3RoIGtpbmRzIG9mIGNvbnRyb2xsZXJzLlxuICAxMjpcdCNcbiAgMTM6XHQjIFdpdGggaGVscCBmcm9tIGEgc3BlY2lhbCB0cmFuc2NlaXZlciBhbmQgYSBcJiMzNDtNaW5pLUFCXCYjMzQ7IGphY2ssIHN5c3RlbXMgd2l0aFxuICAxNDpcdCMgYm90aCBraW5kcyBvZiBjb250cm9sbGVyIGNhbiBhbHNvIHN1cHBvcnQgXCYjMzQ7VVNCIE9uLXRoZS1Hb1wmIzM0OyAoQ09ORklHX1VTQl9PVEcpLlxuICAxNTpcdCNcbiAgMTY6XHRcbiAgMTc6XHRtZW51Y29uZmlnIFVTQl9HQURHRVRcbiAgMTg6XHRcdHRyaXN0YXRlIFwmIzM0O1VTQiBHYWRnZXQgU3VwcG9ydFwmIzM0O1xuICAxOTpcdFx0c2VsZWN0IFVTQl9DT01NT05cbiAgMjA6XHRcdHNlbGVjdCBOTFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTA6NDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ5MzgKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA1MTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBVU0IgUmF3IEdhZGdldCBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYFVTQl9HQURHRVRgIGNvbmZpZ3VyYXRpb24sIGFuZCBpdCBkb2VzbiYjMzk7dCBoYXZlIGFueSBleHBsaWNpdCBkZXBlbmRlbmNpZXMsIGp1c3Qgc2VsZWN0cyBgVVNCX0NPTU1PTmAgYW5kIGBOTFNgLiBTZWVtcyBzdHJhaWdodGZvcndhcmQgZW5vdWdoLiBUaGUgY29uZmlncyB3ZSBhcmUgaW50ZXJlc3RlZCBpbiBhcmUgYFVTQl9SQVdfR0FER0VUYCBhbmQgYFVTQl9HQURHRVRgLCBhcyB3ZWxsIGFzIGBVU0JfRFVNTVlfSENEYCwgd2hpY2ggc3l6a2FsbGVyIHVzZXMgZm9yIFVTQiBjb250cm9sbGVyIGVtdWxhdGlvbi4gSG93ZXZlciwgZm9yIHRoZSBgVVNCX1JBV19HQURHRVRgIGZ1bmN0aW9uYWxpdHksIHRoZSBjb25maWcgaXRzZWxmIGlzIHN1ZmZpY2llbnQuCgpMZXQmIzM5O3MgZGl2ZSBpbnRvIHRoZSBjb2RlLiBUaGUgcGF0Y2ggdG91Y2hlcyBzZXZlcmFsIGtleSBmdW5jdGlvbnMgaW4gYGRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jYDogYGRldl9mcmVlYCwgYGdhZGdldF9iaW5kYCwgYGdhZGdldF91bmJpbmRgLCBgcmF3X2lvY3RsX2V2ZW50X2ZldGNoYCwgYHJhd19wcm9jZXNzX2VwMF9pb2AsIGByYXdfaW9jdGxfZXBfZGlzYWJsZWAsIGFuZCBgcmF3X3Byb2Nlc3NfZXBfaW9gLiBUaGVzZSBhcmUgYWxsIGludGVncmFsIHBhcnRzIG9mIHRoZSBVU0IgUmF3IEdhZGdldCBkcml2ZXIgaW1wbGVtZW50YXRpb24uCgpGcm9tIHRoZSBkZXNjcmlwdGlvbiwgdGhpcyBwYXRjaCBpcyBhZGRyZXNzaW5nIGEgcmFjZSBjb25kaXRpb24uIEl0IHNvdW5kcyBsaWtlIHRoZSBVREMgKFVTQiBEZXZpY2UgQ29udHJvbGxlcikgdW5iaW5kIGNvdWxkIGhhcHBlbiBjb25jdXJyZW50bHkgd2l0aCBhbiBFUDAgb3IgRVAgSU8gb3BlcmF0aW9uLCBwb3RlbnRpYWxseSBsZWFkaW5nIHRvIHVzZS1hZnRlci1mcmVlIG9yIG90aGVyIG1lbW9yeSBjb3JydXB0aW9uIGlzc3Vlcy4gVGhlIGZpeCBpbnZvbHZlcyBhZGRpbmcgYSBgdWRjX3VzYWdlYCBjb3VudGVyIGFuZCBhbiBgdW5iaW5kX2NvbXBsZXRpb25gIG1lY2hhbmlzbS4gU21hcnQhCgpJcyB0aGlzIHBhdGNoIGZ1enotd29ydGh5PyBBYnNvbHV0ZWx5ISBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIGEgY29yZSBkcml2ZXIsIGFuZCwgaW1wb3J0YW50bHksIHN5emthbGxlciB1dGlsaXplcyB0aGlzIGRyaXZlci4gTm93LCBzeXprYWxsZXIgbGV2ZXJhZ2VzIHRoaXMgZHJpdmVyIHRvIGZ1enogKm90aGVyKiBVU0IgZHJpdmVycy4gSG93ZXZlciwgdGhpcyBzcGVjaWZpYyBwYXRjaCBmaXhlcyBhIGJ1ZyB3aXRoaW4gYHJhd19nYWRnZXQuY2AgaXRzZWxmLiBTeXprYWxsZXIgYWxzbyBkaXJlY3RseSBmdXp6ZXogdGhpcyBkcml2ZXIsIHdpdGggZGVzY3JpcHRpb25zIGZvciBgL2Rldi9yYXctZ2FkZ2V0YC4gU28sIGl0JiMzOTtzIGRlZmluaXRlbHkgd29ydGggdGhlIGVmZm9ydC4KCkxldCYjMzk7cyBwaW5wb2ludCB0aG9zZSBmb2N1cyBzeW1ib2xzIGZvciBmdXp6aW5nLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb25zIGFyZTogYGdhZGdldF9iaW5kYCwgYGdhZGdldF91bmJpbmRgLCBgcmF3X2lvY3RsX2V2ZW50X2ZldGNoYCwgYHJhd19wcm9jZXNzX2VwMF9pb2AsIGByYXdfaW9jdGxfZXBfZGlzYWJsZWAsIGFuZCBgcmF3X3Byb2Nlc3NfZXBfaW9gLgoKTm93LCB3YWl0IGEgbWludXRlLi4uIGBnYWRnZXRfYmluZGAgYW5kIGBnYWRnZXRfdW5iaW5kYCBhcmUgKnN0YXRpYyogZnVuY3Rpb25zLCBhY3RpbmcgYXMgY2FsbGJhY2tzIGluIGBzdHJ1Y3QgdXNiX2dhZGdldF9kcml2ZXJgLiBUaGUgb3RoZXIgZm91ciwgYHJhd19pb2N0bF9ldmVudF9mZXRjaGAsIGByYXdfcHJvY2Vzc19lcDBfaW9gLCBgcmF3X2lvY3RsX2VwX2Rpc2FibGVgLCBhbmQgYHJhd19wcm9jZXNzX2VwX2lvYCwgYXJlIHN0YXRpYyBmdW5jdGlvbnMgY2FsbGVkIGZyb20gYHJhd19pb2N0bGAuIFNvLCBsZXQmIzM5O3MgdHVybiBvdXIgYXR0ZW50aW9uIHRvIGByYXdfaW9jdGxgIG5leHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEwOjQwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Jhd19pb2N0bCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jPTQ3OD1zdGF0aWMgaW50IHJhd19yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmZClcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy01MDEtXHRcdFx0XHRyZXQpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6NTAyOlx0XHQvKiBNYXRjaGVzIGtyZWZfZ2V0KCkgaW4gcmF3X2lvY3RsX3J1bigpLiAqL1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtNTAzLVx0XHRrcmVmX3B1dChcdTAwMjZkZXYtXHUwMDNlY291bnQsIGRldl9mcmVlKTtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy01MTMtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzo1MTQ6c3RhdGljIGludCByYXdfaW9jdGxfaW5pdChzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtNTE1LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy02MTItXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzo2MTM6c3RhdGljIGludCByYXdfaW9jdGxfcnVuKHN0cnVjdCByYXdfZGV2ICpkZXYsIHVuc2lnbmVkIGxvbmcgdmFsdWUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy02MTQte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTY0OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjY0OTpzdGF0aWMgaW50IHJhd19pb2N0bF9ldmVudF9mZXRjaChzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtNjUwLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYz03MTc9c3RhdGljIGludCByYXdfcHJvY2Vzc19lcDBfaW8oc3RydWN0IHJhd19kZXYgKmRldiwgc3RydWN0IHVzYl9yYXdfZXBfaW8gKmlvLFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTgwOS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjgxMDpzdGF0aWMgaW50IHJhd19pb2N0bF9lcDBfd3JpdGUoc3RydWN0IHJhd19kZXYgKmRldiwgdW5zaWduZWQgbG9uZyB2YWx1ZSlcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTgxMS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtODIzLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6ODI0OnN0YXRpYyBpbnQgcmF3X2lvY3RsX2VwMF9yZWFkKHN0cnVjdCByYXdfZGV2ICpkZXYsIHVuc2lnbmVkIGxvbmcgdmFsdWUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy04MjUte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTg0Ny1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjg0ODpzdGF0aWMgaW50IHJhd19pb2N0bF9lcDBfc3RhbGwoc3RydWN0IHJhd19kZXYgKmRldiwgdW5zaWduZWQgbG9uZyB2YWx1ZSlcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTg0OS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtODkxLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6ODkyOnN0YXRpYyBpbnQgcmF3X2lvY3RsX2VwX2VuYWJsZShzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtODkzLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy05NzEtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzo5NzI6c3RhdGljIGludCByYXdfaW9jdGxfZXBfZGlzYWJsZShzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtOTczLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMDI5LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6MTAzMDpzdGF0aWMgaW50IHJhd19pb2N0bF9lcF9zZXRfY2xlYXJfaGFsdF93ZWRnZShzdHJ1Y3QgcmF3X2RldiAqZGV2LFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTAzMS1cdFx0dW5zaWduZWQgbG9uZyB2YWx1ZSwgYm9vbCBzZXQsIGJvb2wgaGFsdClcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYz0xMTE0PXN0YXRpYyBpbnQgcmF3X3Byb2Nlc3NfZXBfaW8oc3RydWN0IHJhd19kZXYgKmRldiwgc3RydWN0IHVzYl9yYXdfZXBfaW8gKmlvLFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEyMTctXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxMjE4OnN0YXRpYyBpbnQgcmF3X2lvY3RsX2VwX3dyaXRlKHN0cnVjdCByYXdfZGV2ICpkZXYsIHVuc2lnbmVkIGxvbmcgdmFsdWUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMjE5LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMjMxLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6MTIzMjpzdGF0aWMgaW50IHJhd19pb2N0bF9lcF9yZWFkKHN0cnVjdCByYXdfZGV2ICpkZXYsIHVuc2lnbmVkIGxvbmcgdmFsdWUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMjMzLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMjU1LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6MTI1NjpzdGF0aWMgaW50IHJhd19pb2N0bF9jb25maWd1cmUoc3RydWN0IHJhd19kZXYgKmRldiwgdW5zaWduZWQgbG9uZyB2YWx1ZSlcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEyNTcte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEyODAtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxMjgxOnN0YXRpYyBpbnQgcmF3X2lvY3RsX3ZidXNfZHJhdyhzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTI4Mi17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM9MTMxNT1zdGF0aWMgdm9pZCBmaWxsX2VwX2xpbWl0cyhzdHJ1Y3QgdXNiX2VwICplcCwgc3RydWN0IHVzYl9yYXdfZXBfbGltaXRzICpsaW1pdHMpXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTMyMC1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjEzMjE6c3RhdGljIGludCByYXdfaW9jdGxfZXBzX2luZm8oc3RydWN0IHJhd19kZXYgKmRldiwgdW5zaWduZWQgbG9uZyB2YWx1ZSlcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEzMjIte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEzNjctXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxMzY4OnN0YXRpYyBsb25nIHJhd19pb2N0bChzdHJ1Y3QgZmlsZSAqZmQsIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgdmFsdWUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMzY5LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMzc3LVx0Y2FzZSBVU0JfUkFXX0lPQ1RMX0lOSVQ6XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxMzc4Olx0XHRyZXQgPSByYXdfaW9jdGxfaW5pdChkZXYsIHZhbHVlKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEzNzktXHRcdGJyZWFrO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTM4MC1cdGNhc2UgVVNCX1JBV19JT0NUTF9SVU46XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxMzgxOlx0XHRyZXQgPSByYXdfaW9jdGxfcnVuKGRldiwgdmFsdWUpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTM4Mi1cdFx0YnJlYWs7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMzgzLVx0Y2FzZSBVU0JfUkFXX0lPQ1RMX0VWRU5UX0ZFVENIOlxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6MTM4NDpcdFx0cmV0ID0gcmF3X2lvY3RsX2V2ZW50X2ZldGNoKGRldiwgdmFsdWUpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTM4NS1cdFx0YnJlYWs7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMzg2LVx0Y2FzZSBVU0JfUkFXX0lPQ1RMX0VQMF9XUklURTpcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjEzODc6XHRcdHJldCA9IHJhd19pb2N0bF9lcDBfd3JpdGUoZGV2LCB2YWx1ZSk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMzg4LVx0XHRicmVhaztcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEzODktXHRjYXNlIFVTQl9SQVdfSU9DVExfRVAwX1JFQUQ6XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxMzkwOlx0XHRyZXQgPSByYXdfaW9jdGxfZXAwX3JlYWQoZGV2LCB2YWx1ZSk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMzkxLVx0XHRicmVhaztcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEzOTItXHRjYXNlIFVTQl9SQVdfSU9DVExfRVBfRU5BQkxFOlxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6MTM5MzpcdFx0cmV0ID0gcmF3X2lvY3RsX2VwX2VuYWJsZShkZXYsIHZhbHVlKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEzOTQtXHRcdGJyZWFrO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTM5NS1cdGNhc2UgVVNCX1JBV19JT0NUTF9FUF9ESVNBQkxFOlxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6MTM5NjpcdFx0cmV0ID0gcmF3X2lvY3RsX2VwX2Rpc2FibGUoZGV2LCB2YWx1ZSk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMzk3LVx0XHRicmVhaztcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEzOTgtXHRjYXNlIFVTQl9SQVdfSU9DVExfRVBfV1JJVEU6XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxMzk5Olx0XHRyZXQgPSByYXdfaW9jdGxfZXBfd3JpdGUoZGV2LCB2YWx1ZSk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xNDAwLVx0XHRicmVhaztcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTE0MDEtXHRjYXNlIFVTQl9SQVdfSU9DVExfRVBfUkVBRDpcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjE0MDI6XHRcdHJldCA9IHJhd19pb2N0bF9lcF9yZWFkKGRldiwgdmFsdWUpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTQwMy1cdFx0YnJlYWs7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xNDA0LVx0Y2FzZSBVU0JfUkFXX0lPQ1RMX0NPTkZJR1VSRTpcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjE0MDU6XHRcdHJldCA9IHJhd19pb2N0bF9jb25maWd1cmUoZGV2LCB2YWx1ZSk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xNDA2LVx0XHRicmVhaztcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTE0MDctXHRjYXNlIFVTQl9SQVdfSU9DVExfVkJVU19EUkFXOlxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6MTQwODpcdFx0cmV0ID0gcmF3X2lvY3RsX3ZidXNfZHJhdyhkZXYsIHZhbHVlKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTE0MDktXHRcdGJyZWFrO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTQxMC1cdGNhc2UgVVNCX1JBV19JT0NUTF9FUFNfSU5GTzpcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjE0MTE6XHRcdHJldCA9IHJhd19pb2N0bF9lcHNfaW5mbyhkZXYsIHZhbHVlKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTE0MTItXHRcdGJyZWFrO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTQxMy1cdGNhc2UgVVNCX1JBV19JT0NUTF9FUDBfU1RBTEw6XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxNDE0Olx0XHRyZXQgPSByYXdfaW9jdGxfZXAwX3N0YWxsKGRldiwgdmFsdWUpO1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTQxNS1cdFx0YnJlYWs7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xNDE2LVx0Y2FzZSBVU0JfUkFXX0lPQ1RMX0VQX1NFVF9IQUxUOlxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6MTQxNzpcdFx0cmV0ID0gcmF3X2lvY3RsX2VwX3NldF9jbGVhcl9oYWx0X3dlZGdlKFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTQxOC1cdFx0XHRcdFx0ZGV2LCB2YWx1ZSwgdHJ1ZSwgdHJ1ZSk7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTQyMC1cdGNhc2UgVVNCX1JBV19JT0NUTF9FUF9DTEVBUl9IQUxUOlxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6MTQyMTpcdFx0cmV0ID0gcmF3X2lvY3RsX2VwX3NldF9jbGVhcl9oYWx0X3dlZGdlKFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTQyMi1cdFx0XHRcdFx0ZGV2LCB2YWx1ZSwgZmFsc2UsIHRydWUpO1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTE0MjQtXHRjYXNlIFVTQl9SQVdfSU9DVExfRVBfU0VUX1dFREdFOlxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6MTQyNTpcdFx0cmV0ID0gcmF3X2lvY3RsX2VwX3NldF9jbGVhcl9oYWx0X3dlZGdlKFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTQyNi1cdFx0XHRcdFx0ZGV2LCB2YWx1ZSwgdHJ1ZSwgZmFsc2UpO1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jPTE0Mzc9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcmF3X2ZvcHMgPSB7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xNDM4LVx0Lm9wZW4gPVx0XHRcdHJhd19vcGVuLFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6MTQzOTpcdC51bmxvY2tlZF9pb2N0bCA9XHRyYXdfaW9jdGwsXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxNDQwOlx0LmNvbXBhdF9pb2N0bCA9XHRcdHJhd19pb2N0bCxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTE0NDEtXHQucmVsZWFzZSA9XHRcdHJhd19yZWxlYXNlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMDo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTQzNgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDIxMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFVTQiBHYWRnZXQgaW9jdGwgU3RydWN0dXJlKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhpcyBgcmF3X2lvY3RsYCBmdW5jdGlvbiwgYW5kIGl0JiMzOTtzIGxvb2tpbmcgbGlrZSB0aGUgY2VudHJhbCB1c2VyLXNwYWNlIGVudHJ5IHBvaW50IGZvciB0aGUgZ2FkZ2V0IGRyaXZlci4gSSBzZWUgdGhhdCBpdCYjMzk7cyBjYWxsaW5nIGEgZmV3IHN0YXRpYyBmdW5jdGlvbnMgaW50ZXJuYWxseTogYHJhd19pb2N0bF9ldmVudF9mZXRjaGAsIGByYXdfcHJvY2Vzc19lcDBfaW9gLCBgcmF3X2lvY3RsX2VwX2Rpc2FibGVgLCBhbmQgYHJhd19wcm9jZXNzX2VwX2lvYC4gSW50ZXJlc3RpbmcuIEl0IGxvb2tzIGxpa2UgYHJhd19wcm9jZXNzX2VwMF9pb2AgaGFuZGxlcyBlbmRwb2ludCAwIEkvTyBvcGVyYXRpb25zIGFuZCB0aGF0IGl0IGlzIGFsc28gY2FsbGVkIGJ5IGByYXdfaW9jdGxfZXAwX3dyaXRlYCBhbmQgYHJhd19pb2N0bF9lcDBfcmVhZGAuIFNpbWlsYXJseSwgYHJhd19wcm9jZXNzX2VwX2lvYCBpcyB0aGUgd29ya2hvcnNlIGZvciBvdGhlciBlbmRwb2ludHMsIGFjY2Vzc2VkIHZpYSBgcmF3X2lvY3RsX2VwX3dyaXRlYCBhbmQgYHJhd19pb2N0bF9lcF9yZWFkYC4KClNvLCB0aGUga2V5IGZ1bmN0aW9ucyB0byByZWFsbHkgdW5kZXJzdGFuZCBhcmUgYHJhd19pb2N0bGAgaXRzZWxmLCBhbmQgdGhlbiB0aGVzZSBlbmRwb2ludCBwcm9jZXNzaW5nIGZ1bmN0aW9ucy4gSSYjMzk7ZCBhc3N1bWVkIGByYXdfaW9jdGxgIHdvdWxkIGJlIG5vbi1zdGF0aWMsIGJ1dCBpdCBsb29rcyBsaWtlIGl0JiMzOTtzICphbHNvKiBzdGF0aWMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBhbSBub3QgbWlzc2luZyBhbnkgbm9uLXN0YXRpYyBlbnRyeSBwb2ludHMsIHNvIGxldCYjMzk7cyBzdGFydCBjaGVja2luZyBgcmF3X2dhZGdldC5jYCBmb3IgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMDo0MDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtec3RhdGljJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM9Mzc9TU9EVUxFX0xJQ0VOU0UoXCYjMzQ7R1BMXCYjMzQ7KTtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy00MC1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjQxOnN0YXRpYyBERUZJTkVfSURBKGRyaXZlcl9pZF9udW1iZXJzKTtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTQyLSNkZWZpbmUgRFJJVkVSX0RSSVZFUl9OQU1FX0xFTkdUSF9NQVhcdDMyXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM9NDc9c3RydWN0IHJhd19ldmVudF9xdWV1ZSB7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtNTQtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzo1NTpzdGF0aWMgdm9pZCByYXdfZXZlbnRfcXVldWVfaW5pdChzdHJ1Y3QgcmF3X2V2ZW50X3F1ZXVlICpxdWV1ZSlcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTU2LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy02MS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjYyOnN0YXRpYyBpbnQgcmF3X2V2ZW50X3F1ZXVlX2FkZChzdHJ1Y3QgcmF3X2V2ZW50X3F1ZXVlICpxdWV1ZSxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTYzLVx0ZW51bSB1c2JfcmF3X2V2ZW50X3R5cGUgdHlwZSwgc2l6ZV90IGxlbmd0aCwgY29uc3Qgdm9pZCAqZGF0YSlcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy04OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjg5OnN0YXRpYyBzdHJ1Y3QgdXNiX3Jhd19ldmVudCAqcmF3X2V2ZW50X3F1ZXVlX2ZldGNoKFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtOTAtXHRcdFx0XHRzdHJ1Y3QgcmF3X2V2ZW50X3F1ZXVlICpxdWV1ZSlcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMjAtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxMjE6c3RhdGljIHZvaWQgcmF3X2V2ZW50X3F1ZXVlX2Rlc3Ryb3koc3RydWN0IHJhd19ldmVudF9xdWV1ZSAqcXVldWUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMjIte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jPTE2MD1zdHJ1Y3QgcmF3X2RldiB7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTkwLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6MTkxOnN0YXRpYyBzdHJ1Y3QgcmF3X2RldiAqZGV2X25ldyh2b2lkKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTkyLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0yMDYtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoyMDc6c3RhdGljIHZvaWQgZGV2X2ZyZWUoc3RydWN0IGtyZWYgKmtyZWYpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0yMDgte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTIyMS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjIyMjpzdGF0aWMgaW50IHJhd19xdWV1ZV9ldmVudChzdHJ1Y3QgcmF3X2RldiAqZGV2LFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMjIzLVx0ZW51bSB1c2JfcmF3X2V2ZW50X3R5cGUgdHlwZSwgc2l6ZV90IGxlbmd0aCwgY29uc3Qgdm9pZCAqZGF0YSlcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0yMzYtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoyMzc6c3RhdGljIHZvaWQgZ2FkZ2V0X2VwMF9jb21wbGV0ZShzdHJ1Y3QgdXNiX2VwICplcCwgc3RydWN0IHVzYl9yZXF1ZXN0ICpyZXEpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0yMzgte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTI1NS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjI1NjpzdGF0aWMgdTggZ2V0X2VwX2FkZHIoY29uc3QgY2hhciAqbmFtZSlcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTI1Ny17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMjY4LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6MjY5OnN0YXRpYyBpbnQgZ2FkZ2V0X2JpbmQoc3RydWN0IHVzYl9nYWRnZXQgKmdhZGdldCxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTI3MC1cdFx0XHRzdHJ1Y3QgdXNiX2dhZGdldF9kcml2ZXIgKmRyaXZlcilcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0zMjAtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzozMjE6c3RhdGljIHZvaWQgZ2FkZ2V0X3VuYmluZChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0KVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMzIyLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0zNzAtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzozNzE6c3RhdGljIGludCBnYWRnZXRfc2V0dXAoc3RydWN0IHVzYl9nYWRnZXQgKmdhZGdldCxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTM3Mi1cdFx0XHRjb25zdCBzdHJ1Y3QgdXNiX2N0cmxyZXF1ZXN0ICpjdHJsKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTQxNS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjQxNjpzdGF0aWMgdm9pZCBnYWRnZXRfZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0KVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtNDE3LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy00MjUtfVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6NDI2OnN0YXRpYyB2b2lkIGdhZGdldF9zdXNwZW5kKHN0cnVjdCB1c2JfZ2FkZ2V0ICpnYWRnZXQpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy00Mjcte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTQzNS19XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzo0MzY6c3RhdGljIHZvaWQgZ2FkZ2V0X3Jlc3VtZShzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0KVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtNDM3LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy00NDUtfVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6NDQ2OnN0YXRpYyB2b2lkIGdhZGdldF9yZXNldChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0KVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtNDQ3LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy00NTgtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzo0NTk6c3RhdGljIHN0cnVjdCBtaXNjZGV2aWNlIHJhd19taXNjX2RldmljZTtcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTQ2MC1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjQ2MTpzdGF0aWMgaW50IHJhd19vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmZClcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTQ2Mi17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtNDc3LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6NDc4OnN0YXRpYyBpbnQgcmF3X3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZkKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtNDc5LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy01MTMtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzo1MTQ6c3RhdGljIGludCByYXdfaW9jdGxfaW5pdChzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtNTE1LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy02MTItXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzo2MTM6c3RhdGljIGludCByYXdfaW9jdGxfcnVuKHN0cnVjdCByYXdfZGV2ICpkZXYsIHVuc2lnbmVkIGxvbmcgdmFsdWUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy02MTQte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTY0OC1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjY0OTpzdGF0aWMgaW50IHJhd19pb2N0bF9ldmVudF9mZXRjaChzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtNjUwLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy02OTMtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzo2OTQ6c3RhdGljIHZvaWQgKnJhd19hbGxvY19pb19kYXRhKHN0cnVjdCB1c2JfcmF3X2VwX2lvICppbywgdm9pZCBfX3VzZXIgKnB0cixcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTY5NS1cdFx0XHRcdGJvb2wgZ2V0X2Zyb21fdXNlcilcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy03MTYtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzo3MTc6c3RhdGljIGludCByYXdfcHJvY2Vzc19lcDBfaW8oc3RydWN0IHJhd19kZXYgKmRldiwgc3RydWN0IHVzYl9yYXdfZXBfaW8gKmlvLFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtNzE4LVx0XHRcdFx0dm9pZCAqZGF0YSwgYm9vbCBpbilcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy04MDktXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzo4MTA6c3RhdGljIGludCByYXdfaW9jdGxfZXAwX3dyaXRlKHN0cnVjdCByYXdfZGV2ICpkZXYsIHVuc2lnbmVkIGxvbmcgdmFsdWUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy04MTEte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTgyMy1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjgyNDpzdGF0aWMgaW50IHJhd19pb2N0bF9lcDBfcmVhZChzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtODI1LXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy04NDctXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzo4NDg6c3RhdGljIGludCByYXdfaW9jdGxfZXAwX3N0YWxsKHN0cnVjdCByYXdfZGV2ICpkZXYsIHVuc2lnbmVkIGxvbmcgdmFsdWUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy04NDkte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTg5MS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjg5MjpzdGF0aWMgaW50IHJhd19pb2N0bF9lcF9lbmFibGUoc3RydWN0IHJhd19kZXYgKmRldiwgdW5zaWduZWQgbG9uZyB2YWx1ZSlcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTg5My17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtOTcxLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6OTcyOnN0YXRpYyBpbnQgcmF3X2lvY3RsX2VwX2Rpc2FibGUoc3RydWN0IHJhd19kZXYgKmRldiwgdW5zaWduZWQgbG9uZyB2YWx1ZSlcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTk3My17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTAyOS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjEwMzA6c3RhdGljIGludCByYXdfaW9jdGxfZXBfc2V0X2NsZWFyX2hhbHRfd2VkZ2Uoc3RydWN0IHJhd19kZXYgKmRldixcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEwMzEtXHRcdHVuc2lnbmVkIGxvbmcgdmFsdWUsIGJvb2wgc2V0LCBib29sIGhhbHQpXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTA5Ny1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjEwOTg6c3RhdGljIHZvaWQgZ2FkZ2V0X2VwX2NvbXBsZXRlKHN0cnVjdCB1c2JfZXAgKmVwLCBzdHJ1Y3QgdXNiX3JlcXVlc3QgKnJlcSlcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEwOTkte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTExMTMtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxMTE0OnN0YXRpYyBpbnQgcmF3X3Byb2Nlc3NfZXBfaW8oc3RydWN0IHJhd19kZXYgKmRldiwgc3RydWN0IHVzYl9yYXdfZXBfaW8gKmlvLFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTExNS1cdFx0XHRcdHZvaWQgKmRhdGEsIGJvb2wgaW4pXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTIxNy1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjEyMTg6c3RhdGljIGludCByYXdfaW9jdGxfZXBfd3JpdGUoc3RydWN0IHJhd19kZXYgKmRldiwgdW5zaWduZWQgbG9uZyB2YWx1ZSlcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEyMTkte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEyMzEtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxMjMyOnN0YXRpYyBpbnQgcmF3X2lvY3RsX2VwX3JlYWQoc3RydWN0IHJhd19kZXYgKmRldiwgdW5zaWduZWQgbG9uZyB2YWx1ZSlcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEyMzMte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEyNTUtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxMjU2OnN0YXRpYyBpbnQgcmF3X2lvY3RsX2NvbmZpZ3VyZShzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTI1Ny17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTI4MC1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjEyODE6c3RhdGljIGludCByYXdfaW9jdGxfdmJ1c19kcmF3KHN0cnVjdCByYXdfZGV2ICpkZXYsIHVuc2lnbmVkIGxvbmcgdmFsdWUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMjgyLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMzAzLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6MTMwNDpzdGF0aWMgdm9pZCBmaWxsX2VwX2NhcHMoc3RydWN0IHVzYl9lcF9jYXBzICpjYXBzLFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTMwNS1cdFx0XHRcdHN0cnVjdCB1c2JfcmF3X2VwX2NhcHMgKnJhd19jYXBzKVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEzMTQtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxMzE1OnN0YXRpYyB2b2lkIGZpbGxfZXBfbGltaXRzKHN0cnVjdCB1c2JfZXAgKmVwLCBzdHJ1Y3QgdXNiX3Jhd19lcF9saW1pdHMgKmxpbWl0cylcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEzMTYte1xuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEzMjAtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxMzIxOnN0YXRpYyBpbnQgcmF3X2lvY3RsX2Vwc19pbmZvKHN0cnVjdCByYXdfZGV2ICpkZXYsIHVuc2lnbmVkIGxvbmcgdmFsdWUpXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMzIyLXtcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMzY3LVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6MTM2ODpzdGF0aWMgbG9uZyByYXdfaW9jdGwoc3RydWN0IGZpbGUgKmZkLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIHZhbHVlKVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTM2OS17XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTQzNi1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjE0Mzc6c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcmF3X2ZvcHMgPSB7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xNDM4LVx0Lm9wZW4gPVx0XHRcdHJhd19vcGVuLFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTE0NDMtXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxNDQ0OnN0YXRpYyBzdHJ1Y3QgbWlzY2RldmljZSByYXdfbWlzY19kZXZpY2UgPSB7XG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xNDQ1LVx0Lm1pbm9yID0gTUlTQ19EWU5BTUlDX01JTk9SLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMDo0MDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMzgwNwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDQ2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGb2N1cyBTeW1ib2wgU2VsZWN0aW9uOiBBIERlZXAgRGl2ZSBpbnRvIGByYXdfZ2FkZ2V0LmNgKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEkmIzM5O20gbG9va2luZyBhdCBob3cgdG8gaWRlbnRpZnkgdGhlIGNvcnJlY3Qgc3ltYm9scyBmb3IgdGhlIGBGb2N1c1N5bWJvbHNgIGNvbmZpZ3VyYXRpb24sIGFuZCB0aGUgYHJhd19nYWRnZXQuY2AgZmlsZSBpcyBwcmVzZW50aW5nIHNvbWUgaW50ZXJlc3RpbmcgbnVhbmNlcy4gSW5pdGlhbGx5LCBJIHRob3VnaHQgdGhhdCBJIHNob3VsZCBjaG9vc2UgdGhlIG5vbi1zdGF0aWMgZnVuY3Rpb25zIG92ZXIgc3RhdGljIG9uZXMuIEhvd2V2ZXIsIEkmIzM5O3ZlIG5vdGljZWQgYSBjcnVjaWFsIGRldGFpbDogZnVuY3Rpb25zIGxpa2UgYHJhd19pb2N0bGAsIGBnYWRnZXRfYmluZGAsIGFuZCBgZ2FkZ2V0X3VuYmluZGAgYXJlICpzdGF0aWMqIGJ1dCB0aGVpciBhZGRyZXNzZXMgYXJlIHRha2VuIGJlY2F1c2UgdGhleSBhcmUgYXNzaWduZWQgdG8gZnVuY3Rpb24gcG9pbnRlcnMgaW4gdGhlIGByYXdfZm9wc2AgYW5kIGBzdHJ1Y3QgdXNiX2dhZGdldF9kcml2ZXJgIHN0cnVjdHVyZXMgcmVzcGVjdGl2ZWx5LiBUaGVyZWZvcmUsIHRoZXkgd29uJiMzOTt0IGJlIGlubGluZWQsIGFuZCB0aGVpciBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGFyZSBwZXJmZWN0bHkgdXNhYmxlIGFzIGVudHJ5IHBvaW50cy4KClRoZSBwcm9tcHQgZXhwbGljaXRseSBzYXlzIHRvIGZhdm9yIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucy4gU2luY2UgYHJhd19pb2N0bGAsIGBnYWRnZXRfYmluZGAsIGFuZCBgZ2FkZ2V0X3VuYmluZGAgYXJlIHN0YXRpYyBmdW5jdGlvbnMgYnV0ICpub3QqIGlubGluZWQsIHRoZXkgc2VlbSBsaWtlIHByaW1lIGNhbmRpZGF0ZXMuCgpOb3csIGByYXdfaW9jdGxgIGxvb2tzIGxpa2UgYSBzaWduaWZpY2FudCBtdWx0aXBsZXhlci4gVGhlIGFjdHVhbCBsb2dpYyBtb2RpZmljYXRpb25zIGFyZSBidXJpZWQgd2l0aGluIGl0cyBzdWItZnVuY3Rpb25zOiBgcmF3X3Byb2Nlc3NfZXAwX2lvYCwgYHJhd19pb2N0bF9lcF9kaXNhYmxlYCwgYW5kIGByYXdfcHJvY2Vzc19lcF9pb2AuIE15IGd1dCBmZWVsaW5nIGlzIHRoYXQgdGhvc2UgbWlnaHQgYmUgaW5saW5lZCBkdWUgdG8gdGhlaXIgdXNhZ2UsIGJ1dCB0aGV5JiMzOTtyZSBub3QgdHJpdmlhbC4gSG93ZXZlciwgc2luY2UgdGhlIGdvYWwgaXMgdG8gaWRlbnRpZnkgZGlzdGluY3QgZW50cnkgcG9pbnRzLCBJJiMzOTtsbCBzdGljayB3aXRoIGByYXdfaW9jdGxgLCBgZ2FkZ2V0X2JpbmRgLCBhbmQgYGdhZGdldF91bmJpbmRgIGZvciB0aGUgZm9jdXMuIEkmIzM5O20gcmVhc29uYWJseSBjb25maWRlbnQgdGhhdCB0aGVzZSBhcmUgdGhlIGtleSBzeW1ib2xzIHRvIHRyYWNrLgoKRmluYWxseSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMuIEkgaGF2ZSB0byBkb3VibGUtY2hlY2sgdGhhdCBgVVNCX1JBV19HQURHRVRgIGlzIHRoZSBvbmx5IGNvbmZpZyBJIG5lZWQuIEkga25vdyBgVVNCX0dBREdFVGAgaXMgZnVuZGFtZW50YWwuIEkgdGhpbmsgSSB3aWxsIG5lZWQgYFVTQl9EVU1NWV9IQ0RgIGlmIEkmIzM5O20gdGVzdGluZyB3aXRob3V0IHJlYWwgaGFyZHdhcmUsIGJ1dCBzaW5jZSB0aGlzIHBhdGNoIGlzIHdpdGhpbiBgcmF3X2dhZGdldC5jYCwgYFVTQl9SQVdfR0FER0VUYCBpcyB0aGUgY29yZSBvbmUgdGhhdCBlbmFibGVzIHRoaXMgcGFydGljdWxhciBmaWxlJiMzOTtzIGNvbXBpbGF0aW9uLiBDaGVja2luZyB0aGUgbGVnYWN5IGBNYWtlZmlsZWAgaXMgYSBnb29kIGlkZWEgdG8gY29uZmlybS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTA6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmF3X2dhZGdldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9NYWtlZmlsZT00NT1vYmotJChDT05GSUdfVVNCX0dBREdFVF9UQVJHRVQpXHQmIzQzOz0gdGNtX3VzYl9nYWRnZXQub1xuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9NYWtlZmlsZTo0NjpvYmotJChDT05GSUdfVVNCX1JBV19HQURHRVQpXHQmIzQzOz0gcmF3X2dhZGdldC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEwOjQxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0ODU5CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVVNCIEdhZGdldCBDb25maWd1cmF0aW9uIENvbnVuZHJ1bSoqCgpPa2F5LCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBVU0IgcmF3IGdhZGdldCBkcml2ZXIsIGFuZCBpdCBzZWVtcyBsaWtlIHNldHRpbmcgYENPTkZJR19VU0JfUkFXX0dBREdFVGAgc2hvdWxkIGJlIGFsbCBJIG5lZWQgdG8gZ2V0IGByYXdfZ2FkZ2V0LmNgIGNvbXBpbGVkLiBUaGF0IG1ha2VzIHNlbnNlLCBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBCdXQgaG9sZCBvbi4uLiBzb21ldGhpbmcgZmVlbHMgb2ZmLiBJIHZhZ3VlbHkgcmVjYWxsIG5lZWRpbmcgYSBtb3JlIGVuY29tcGFzc2luZyBjb25maWd1cmF0aW9uIG9wdGlvbiB0byBldmVuIGdldCBpbnRvIHRoZSByZWxldmFudCBNYWtlZmlsZXMuIExldCBtZSBkb3VibGUtY2hlY2sgdGhlIGluY2x1ZGUgc3RydWN0dXJlLiBSaWdodCwgSSB0aGluayBgVVNCX0dBREdFVGAgaGFzIHNvbWV0aGluZyB0byBkbyB3aXRoIHRoYXQsIGxldCBtZSBjb25maXJtLiBMZXQmIzM5O3MgZ28gbG9vayBhdCBgZHJpdmVycy91c2IvZ2FkZ2V0L01ha2VmaWxlYCBhbmQgc2VlIHdoYXQgdGhhdCBpbmNsdWRlcy4gSG9wZWZ1bGx5LCB0aGlzIGNsZWFycyB0aGluZ3MgdXAhCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEwOjQxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2xlZ2FjeSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3VzYi9nYWRnZXQvTWFrZWZpbGU9MTA9bGliY29tcG9zaXRlLXlcdFx0XHQmIzQzOz0gY29tcG9zaXRlLm8gZnVuY3Rpb25zLm8gY29uZmlnZnMubyB1X2Yub1xuZHJpdmVycy91c2IvZ2FkZ2V0L01ha2VmaWxlLTExLVxuZHJpdmVycy91c2IvZ2FkZ2V0L01ha2VmaWxlOjEyOm9iai0kKENPTkZJR19VU0JfR0FER0VUKVx0JiM0Mzs9IHVkYy8gZnVuY3Rpb24vIGxlZ2FjeS9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTA6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUxOTYKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA3NTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFVTQiBSYXcgR2FkZ2V0IERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIFVTQiBSYXcgR2FkZ2V0IGRyaXZlci4gRmlyc3QgdGhpbmdzIGZpcnN0OiBJIG5lZWQgYENPTkZJR19VU0JfR0FER0VUYCB0byBldmVuIGdldCBpbnRvIHRoZSBgbGVnYWN5L2AgZGlyZWN0b3J5LCBhbmQgaXQgc2VlbXMgbGlrZSBJIGFsc28gbmVlZCBgVVNCX1JBV19HQURHRVRgIGFzIHdlbGwsIHNvIG15IGBFbmFibGVDb25maWdzYCBzaG91bGQgYmUgYFsmIzM0O1VTQl9HQURHRVQmIzM0OywgJiMzNDtVU0JfUkFXX0dBREdFVCYjMzQ7XWAuIFRoYXQgc291bmRzIHJpZ2h0LgoKTm93LCBsZXQmIzM5O3MgbmFpbCBkb3duIHRoZSBmb2N1cyBzeW1ib2xzIGZvciB0aGUgZnV6emVyLiBUaGUgcGF0Y2ggdG91Y2hlcyBgZGV2X2ZyZWVgLCBgZ2FkZ2V0X2JpbmRgLCBgZ2FkZ2V0X3VuYmluZGAsIGByYXdfaW9jdGxfZXZlbnRfZmV0Y2hgLCBgcmF3X3Byb2Nlc3NfZXAwX2lvYCwgYHJhd19pb2N0bF9lcF9kaXNhYmxlYCwgYW5kIGByYXdfcHJvY2Vzc19lcF9pb2AuIExldCYjMzk7cyB0aGluayB0aHJvdWdoIHdoaWNoIG9mIHRoZXNlIGFyZSBsaWtlbHkgdG8gYmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIuIGBnYWRnZXRfYmluZGAgYW5kIGBnYWRnZXRfdW5iaW5kYCBhcmUgZnVuY3Rpb24gcG9pbnRlcnMsIHNvIGRlZmluaXRlbHkgbm90IGlubGluZWQuIGBkZXZfZnJlZWAgZ2V0cyBwYXNzZWQgdG8gYGtyZWZfcHV0YCwgc28gYWxzbyBub3QgaW5saW5lZC4gVGhlIG90aGVycywgYHJhd19pb2N0bF9ldmVudF9mZXRjaGAsIGByYXdfcHJvY2Vzc19lcDBfaW9gLCBgcmF3X2lvY3RsX2VwX2Rpc2FibGVgLCBhbmQgYHJhd19wcm9jZXNzX2VwX2lvYCwgYXJlIGNhbGxlZCBmcm9tIGByYXdfaW9jdGxgIHZpYSBhIHN3aXRjaCBzdGF0ZW1lbnQuIFRoZXkgKmNvdWxkKiBiZSBpbmxpbmVkLCBidXQgdGhleSBsb29rIHByZXR0eSBzdWJzdGFudGlhbC4KCkdpdmVuIGFsbCB0aGF0LCBJIHRoaW5rIEkmIzM5O2xsIGluY2x1ZGUgYGdhZGdldF9iaW5kYCwgYGdhZGdldF91bmJpbmRgLCBhbmQgYHJhd19pb2N0bGAgYXMgdGhlIG1haW4gZW50cnkgcG9pbnRzLiBJIG1pZ2h0IGFsc28gaW5jbHVkZSBgcmF3X3Byb2Nlc3NfZXAwX2lvYCBhbmQgYHJhd19wcm9jZXNzX2VwX2lvYCBiZWNhdXNlIHRoZXkgc2VlbSB0byBjb250YWluIHRoZSBjb3JlIGxvZ2ljIGNoYW5nZXMuIFdhaXQsIEkgdGhpbmsgYHJhd19pb2N0bGAgaXMgdGhlIGVudHJ5IHBvaW50IGZvciBhbGwgb2YgdGhlIGlvY3Rscywgc28gdGhlIGZ1enplciB3aWxsIGJlIGZvY3VzZWQgb24gdGhhdCwgc28gSSB3aWxsIHN0aWNrIHdpdGgganVzdCBgZ2FkZ2V0X2JpbmRgLCBgZ2FkZ2V0X3VuYmluZGAsIGFuZCBgcmF3X2lvY3RsYC4KCkxldCYjMzk7cyBkb3VibGUtY2hlY2sgYW55IGRlcGVuZGVuY2llcy4gYFVTQl9HQURHRVRgIGl0c2VsZiBkb2VzbiYjMzk7dCBkZXBlbmQgb24gYW55dGhpbmcsIGJ1dCBpdCBzZWxlY3RzIGBVU0JfQ09NTU9OYCBhbmQgYE5MU2AuIEhvd2V2ZXIsIGBVU0JfR0FER0VUYCBhbmQgYFVTQl9SQVdfR0FER0VUYCBzaG91bGQgYmUgc3VmZmljaWVudC4gT2theSwganVzdCB0byBiZSB0aG9yb3VnaCwgSSYjMzk7bGwgY29uZmlybSB0aGF0IG9ubHkgYGRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jYCBpcyBiZWluZyBtb2RpZmllZC4gWWVwLCBqdXN0IHRoZSBvbmUgZmlsZS4KCk5vdywgdGltZSB0byBzdW1tYXJpemUgdGhpcyBjbGVhcmx5IGZvciB0aGUgZnV6emVyLiBUaGlzIHBhdGNoIGFkZHJlc3NlcyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBVU0IgUmF3IEdhZGdldCBkcml2ZXIuIEl0IGRlYWxzIHdpdGggVURDIHVuYmluZCBhbmQgZW5kcG9pbnQgSU8gb3BlcmF0aW9ucy4gU3BlY2lmaWNhbGx5LCBpdCBpbnRyb2R1Y2VzIGEgYHVkY191c2FnZWAgY291bnRlciBhbmQgYW4gYHVuYmluZF9jb21wbGV0aW9uYCB0byBlbnN1cmUgdGhhdCBgZ2FkZ2V0X3VuYmluZGAgd2FpdHMgZm9yIGFueSBwZW5kaW5nIElPIHRvIGZpbmlzaCBiZWZvcmUgY29tcGxldGluZyB0aGUgdW5iaW5kIHByb2Nlc3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGtleSBkcml2ZXIgdXNlZCBmb3IgVVNCIGVtdWxhdGlvbiBhbmQgZnV6emluZy4gVGhlIHBhdGNoIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuCgpTbywgaGVyZSYjMzk7cyB0aGUgaW5mb3JtYXRpb24gSSYjMzk7bSBmZWVkaW5nIHRoZSBmdXp6ZXI6CgoqICAgYFdvcnRoRnV6emluZzogdHJ1ZWAKKiAgIGBGb2N1c1N5bWJvbHM6IGdhZGdldF9iaW5kLCBnYWRnZXRfdW5iaW5kLCByYXdfaW9jdGxgCiogICBgRW5hYmxlQ29uZmlnczogVVNCX0dBREdFVCwgVVNCX1JBV19HQURHRVRgCgpBbHJpZ2h0LCBsZXQgbWUgZG91YmxlLWNoZWNrIGFib3V0IGBVU0JfRFVNTVlfSENEYC4gQWgsIHRoYXQmIzM5O3MgdGhlIGR1bW15IGhvc3QgY29udHJvbGxlciBhbmQgZGV2aWNlIGNvbnRyb2xsZXIuIEl0IGlzIHVzZWQgdG8gY29ubmVjdCB0aGUgcmF3IGdhZGdldCB0byBhIGR1bW15IGhvc3QuIFdoaWxlIGBVU0JfUkFXX0dBREdFVGAgY29tcGlsZXMgdGhlIGNvZGUsIHRvIGFjdHVhbGx5ICp0ZXN0KiBpdCwgc3l6a2FsbGVyIG5lZWRzIGEgVURDIChVU0IgRGV2aWNlIENvbnRyb2xsZXIpLiBgVVNCX0RVTU1ZX0hDRGAgcHJvdmlkZXMgdGhpcyBVREMgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgaXMgYSBjb25maWcuIEdvb2QuIEkgdGhpbmsgSSYjMzk7bSBnb29kIHRvIGdvLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMDo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVVNCX0RVTU1ZX0hDRCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnPTQyMj1zb3VyY2UgXCYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9jZG5zMi9LY29uZmlnXCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTQyNy1cbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzo0Mjg6Y29uZmlnIFVTQl9EVU1NWV9IQ0RcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy00MjktXHR0cmlzdGF0ZSBcJiMzNDtEdW1teSBIQ0QgKERFVkVMT1BNRU5UKVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMDo0MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjkzMQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDk2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkNoZWNraW5nIHRoZSBVU0IgRHVtbXkgSG9zdCBDb250cm9sbGVyIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSBzZWUgdGhhdCBgVVNCX0RVTU1ZX0hDRGAgaXMgaW5kZWVkIGRlZmluZWQgd2l0aGluIHRoZSBgZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnYCBmaWxlLiBUaGF0IGNvbmZpcm1zIHdoYXQgSSB3YXMgdGhpbmtpbmcuIElmIEkgZW5hYmxlIHRoaXMsIGl0IGd1YXJhbnRlZXMgdGhhdCB0aGUgZHVtbXkgVVNCIGRldmljZSBjb250cm9sbGVyIGlzIGF2YWlsYWJsZS4gQW5kIEkga25vdyBJIG5lZWQgdGhhdCB0byByZWxpYWJseSB0cmlnZ2VyIHRoZSBgZ2FkZ2V0X2JpbmRgIGFuZCBgZ2FkZ2V0X3VuYmluZGAgZnVuY3Rpb25zIHdpdGhpbiBhIHZpcnR1YWwgbWFjaGluZSBlbnZpcm9ubWVudCB3aGVyZSBJICpkb24mIzM5O3QqIGhhdmUgYWNjZXNzIHRvIGFjdHVhbCwgcGh5c2ljYWwgVVNCIGhhcmR3YXJlLiBJdCYjMzk7cyBhIGtleSByZXF1aXJlbWVudCBmb3IgdGhlIHRlc3RpbmcgSSYjMzk7bSBkb2luZy4gTm93LCBqdXN0IHRvIGJlIHRob3JvdWdoIGFuZCB0byBkb3VibGUtY2hlY2sgbXkgYXNzdW1wdGlvbnMsIEkgc2hvdWxkIHF1aWNrbHkgcmV2aWV3IHRoZSBkZXBlbmRlbmNpZXMgb2YgYFVTQl9EVU1NWV9IQ0RgIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiB0aGVyZSBhcmUgbm8gdW5mb3Jlc2VlbiBjb25mbGljdHMgb3IgcHJlcmVxdWlzaXRlcy4gTGV0JiMzOTtzIHNlZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxMDo0MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtkZXBlbmRzIG9uJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz0zMz1jb25maWcgVVNCX0FUOTFcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0zNC1cdHRyaXN0YXRlIFwmIzM0O0F0bWVsIEFUOTEgVVNCIERldmljZSBQb3J0XCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6MzU6XHRkZXBlbmRzIG9uIEFSQ0hfQVQ5MVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjM2Olx0ZGVwZW5kcyBvbiBPRlxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTM3LVx0aGVscFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz00Nj1jb25maWcgVVNCX0xQQzMyWFhcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy00Ny1cdHRyaXN0YXRlIFwmIzM0O0xQQzMyWFggVVNCIFBlcmlwaGVyYWwgQ29udHJvbGxlclwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjQ4Olx0ZGVwZW5kcyBvbiBBUkNIX0xQQzMyWFggfHwgQ09NUElMRV9URVNUXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6NDk6XHRkZXBlbmRzIG9uIEkyQ1xuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTUwLVx0c2VsZWN0IFVTQl9JU1AxMzAxXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnPTU4PWNvbmZpZyBVU0JfQVRNRUxfVVNCQVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTU5LVx0dHJpc3RhdGUgXCYjMzQ7QXRtZWwgVVNCQVwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjYwOlx0ZGVwZW5kcyBvbiBBUkNIX0FUOTFcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy02MS1cdGhlbHBcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9ODA9Y29uZmlnIFVTQl9CQ002M1hYX1VEQ1xuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTgxLVx0dHJpc3RhdGUgXCYjMzQ7QnJvYWRjb20gQkNNNjN4eCBQZXJpcGhlcmFsIENvbnRyb2xsZXJcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzo4MjpcdGRlcGVuZHMgb24gQkNNNjNYWFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTgzLVx0aGVscFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz05MT1jb25maWcgVVNCX0ZTTF9VU0IyXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctOTItXHR0cmlzdGF0ZSBcJiMzNDtGcmVlc2NhbGUgSGlnaHNwZWVkIFVTQiBEUiBQZXJpcGhlcmFsIENvbnRyb2xsZXJcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzo5MzpcdGRlcGVuZHMgb24gRlNMX1NPQ1xuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTk0LVx0aGVscFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz0xMDU9Y29uZmlnIFVTQl9HUl9VRENcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0xMDYtXHR0cmlzdGF0ZSBcJiMzNDtBZXJvZmxleCBHYWlzbGVyIEdSVVNCREMgVVNCIFBlcmlwaGVyYWwgQ29udHJvbGxlciBEcml2ZXJcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzoxMDc6XHRkZXBlbmRzIG9uIEhBU19ETUFcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0xMDgtXHRoZWxwXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnPTExMj1jb25maWcgVVNCX09NQVBcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0xMTMtXHR0cmlzdGF0ZSBcJiMzNDtPTUFQIFVTQiBEZXZpY2UgQ29udHJvbGxlclwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjExNDpcdGRlcGVuZHMgb24gQVJDSF9PTUFQMVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTExNS1cdGhlbHBcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9MTI2PWNvbmZpZyBVU0JfUFhBMjVYXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMTI3LVx0dHJpc3RhdGUgXCYjMzQ7UFhBIDI1eCBvciBJWFAgNHh4XCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6MTI4Olx0ZGVwZW5kcyBvbiAoQVJDSF9QWEEgXHUwMDI2XHUwMDI2IFBYQTI1eCkgfHwgQVJDSF9JWFA0WFhcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzoxMjk6XHRkZXBlbmRzIG9uIEhBU19JT01FTVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTEzMC1cdGhlbHBcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9MTQ0PWNvbmZpZyBVU0JfUFhBMjVYX1NNQUxMXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6MTQ1Olx0ZGVwZW5kcyBvbiBVU0JfUFhBMjVYXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMTQ2LVx0Ym9vbFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz0xNTI9Y29uZmlnIFVTQl9SOEE2NjU5N1xuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTE1My1cdHRyaXN0YXRlIFwmIzM0O1JlbmVzYXMgUjhBNjY1OTcgVVNCIFBlcmlwaGVyYWwgQ29udHJvbGxlclwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjE1NDpcdGRlcGVuZHMgb24gSEFTX0RNQVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTE1NS1cdGhlbHBcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9MTY0PWNvbmZpZyBVU0JfUkVORVNBU19VU0JIU19VRENcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0xNjUtXHR0cmlzdGF0ZSAmIzM5O1JlbmVzYXMgVVNCSFMgY29udHJvbGxlciYjMzk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6MTY2Olx0ZGVwZW5kcyBvbiBVU0JfUkVORVNBU19VU0JIU1xuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTE2Ny1cdGhlbHBcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9MTc2PWNvbmZpZyBVU0JfUlpWMk1fVVNCM0RSRFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTE3Ny1cdHRyaXN0YXRlICYjMzk7UmVuZXNhcyBVU0IzLjEgRFJEIGNvbnRyb2xsZXImIzM5O1xuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjE3ODpcdGRlcGVuZHMgb24gQVJDSF9SOUEwOUcwMTEgfHwgQ09NUElMRV9URVNUXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMTc5LVx0aGVscFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz0xODY9Y29uZmlnIFVTQl9SRU5FU0FTX1VTQjNcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0xODctXHR0cmlzdGF0ZSAmIzM5O1JlbmVzYXMgVVNCMy4wIFBlcmlwaGVyYWwgY29udHJvbGxlciYjMzk7XG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6MTg4Olx0ZGVwZW5kcyBvbiBBUkNIX1JFTkVTQVMgfHwgQ09NUElMRV9URVNUXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6MTg5Olx0ZGVwZW5kcyBvbiBVU0JfUlpWMk1fVVNCM0RSRCB8fCAhVVNCX1JaVjJNX1VTQjNEUkRcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzoxOTA6XHRkZXBlbmRzIG9uIEVYVENPTlxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTE5MS1cdHNlbGVjdCBVU0JfUk9MRV9TV0lUQ0hcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9MjAwPWNvbmZpZyBVU0JfUkVORVNBU19VU0JGXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMjAxLVx0dHJpc3RhdGUgJiMzOTtSZW5lc2FzIFVTQiBGdW5jdGlvbiBjb250cm9sbGVyJiMzOTtcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzoyMDI6XHRkZXBlbmRzIG9uIEFSQ0hfUkVORVNBUyB8fCBDT01QSUxFX1RFU1RcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0yMDMtXHRoZWxwXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnPTIxMT1jb25maWcgVVNCX1BYQTI3WFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTIxMi1cdHRyaXN0YXRlIFwmIzM0O1BYQSAyN3hcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzoyMTM6XHRkZXBlbmRzIG9uIEhBU19JT01FTVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTIxNC1cdGhlbHBcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9MjI1PWNvbmZpZyBVU0JfU05QX0NPUkVcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzoyMjY6XHRkZXBlbmRzIG9uIChVU0JfQU1ENTUzNlVEQyB8fCBVU0JfU05QX1VEQ19QTEFUKVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjIyNzpcdGRlcGVuZHMgb24gSEFTX0RNQVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTIyOC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnPTI0MD1jb25maWcgVVNCX1NOUF9VRENfUExBVFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTI0MS1cdHRyaXN0YXRlIFwmIzM0O1N5bm9wc3lzIFVTQiAyLjAgRGV2aWNlIGNvbnRyb2xsZXJcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzoyNDI6XHRkZXBlbmRzIG9uIFVTQl9HQURHRVQgXHUwMDI2XHUwMDI2IE9GIFx1MDAyNlx1MDAyNiBIQVNfRE1BXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6MjQzOlx0ZGVwZW5kcyBvbiBFWFRDT04gfHwgRVhUQ09OPW5cbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0yNDQtXHRzZWxlY3QgVVNCX1NOUF9DT1JFXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnPTI1OD1jb25maWcgVVNCX002NjU5MlxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTI1OS1cdHRyaXN0YXRlIFwmIzM0O1JlbmVzYXMgTTY2NTkyIFVTQiBQZXJpcGhlcmFsIENvbnRyb2xsZXJcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzoyNjA6XHRkZXBlbmRzIG9uIEhBU19JT01FTVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTI2MS1cdGhlbHBcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9Mjc2PWNvbmZpZyBVU0JfQU1ENTUzNlVEQ1xuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTI3Ny1cdHRyaXN0YXRlIFwmIzM0O0FNRDU1MzYgVURDXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6Mjc4Olx0ZGVwZW5kcyBvbiBVU0JfUENJIFx1MDAyNlx1MDAyNiBIQVNfRE1BXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMjc5LVx0c2VsZWN0IFVTQl9TTlBfQ09SRVxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz0yOTQ9Y29uZmlnIFVTQl9GU0xfUUVcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0yOTUtXHR0cmlzdGF0ZSBcJiMzNDtGcmVlc2NhbGUgUUUvQ1BNIFVTQiBEZXZpY2UgQ29udHJvbGxlclwmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjI5NjpcdGRlcGVuZHMgb24gRlNMX1NPQyBcdTAwMjZcdTAwMjYgKFFVSUNDX0VOR0lORSB8fCBDUE0pXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6Mjk3Olx0ZGVwZW5kcyBvbiAhNjRCSVQgfHwgQlJPS0VOXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMjk4LVx0aGVscFxuLS1cbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz0zMDg9Y29uZmlnIFVTQl9ORVQyMjgwXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMzA5LVx0dHJpc3RhdGUgXCYjMzQ7TmV0Q2hpcCBORVQyMjh4IC8gUExYIFVTQjN4OHhcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzozMTA6XHRkZXBlbmRzIG9uIFVTQl9QQ0lcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0zMTEtXHRoZWxwXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnPTMzMz1jb25maWcgVVNCX0dPS1VcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0zMzQtXHR0cmlzdGF0ZSBcJiMzNDtUb3NoaWJhIFRDODZDMDAxICYjMzk7R29rdS1TJiMzOTtcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzozMzU6XHRkZXBlbmRzIG9uIFVTQl9QQ0lcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0zMzYtXHRoZWxwXG4tLVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnPTM0Nz1jb25maWcgVVNCX0VHMjBUXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMzQ4LVx0dHJpc3RhdGUgXCYjMzQ7SW50ZWwgUVVBUksgWDEwMDAvRUcyMFQgUENIL0xBUElTIFNlbWljb25kdWN0b3IgSU9IKE1MNzIxMy9NTDc4MzEpIFVEQ1wmIzM0O1xuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjM0OTpcdGRlcGVuZHMgb24gVVNCX1BDSVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTM1MC1cdGhlbHBcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9MzcxPWNvbmZpZyBVU0JfR0FER0VUX1hJTElOWFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTM3Mi1cdHRyaXN0YXRlIFwmIzM0O1hpbGlueCBVU0IgRHJpdmVyXCYjMzQ7XG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6MzczOlx0ZGVwZW5kcyBvbiBIQVNfRE1BXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6Mzc0Olx0ZGVwZW5kcyBvbiBPRlxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTM3NS1cdGhlbHBcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9Mzg2PWNvbmZpZyBVU0JfTUFYMzQyMF9VRENcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0zODctXHR0cmlzdGF0ZSBcJiMzNDtNQVgzNDIwIChVU0Itb3Zlci1TUEkpIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzozODg6XHRkZXBlbmRzIG9uIFNQSVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTM4OS1cdGhlbHBcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9Mzk2PWNvbmZpZyBVU0JfVEVHUkFfWFVEQ1xuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTM5Ny1cdHRyaXN0YXRlIFwmIzM0O05WSURJQSBUZWdyYSBTdXBlcnNwZWVkIFVTQiAzLjAgRGV2aWNlIENvbnRyb2xsZXJcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzozOTg6XHRkZXBlbmRzIG9uIEFSQ0hfVEVHUkEgfHwgQ09NUElMRV9URVNUXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6Mzk5Olx0ZGVwZW5kcyBvbiBQSFlfVEVHUkFfWFVTQlxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTQwMC1cdGhlbHBcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9NDA3PWNvbmZpZyBVU0JfQVNQRUVEX1VEQ1xuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTQwOC1cdHRyaXN0YXRlIFwmIzM0O0FzcGVlZCBVREMgZHJpdmVyIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzo0MDk6XHRkZXBlbmRzIG9uIEFSQ0hfQVNQRUVEIHx8IENPTVBJTEVfVEVTVFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjQxMDpcdGRlcGVuZHMgb24gVVNCX0xJQkNPTVBPU0lURVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTQxMS1cdGhlbHBcbi0tXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9NDI4PWNvbmZpZyBVU0JfRFVNTVlfSENEXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctNDI5LVx0dHJpc3RhdGUgXCYjMzQ7RHVtbXkgSENEIChERVZFTE9QTUVOVClcJiMzNDtcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzo0MzA6XHRkZXBlbmRzIG9uIFVTQj15IHx8IChVU0I9bSBcdTAwMjZcdTAwMjYgVVNCX0dBREdFVD1tKVxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTQzMS1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTA6NDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA2MDgKCQkJCQkJCW91dHB1dDogMTkwCgkJCQkJCQl0aG91Z2h0czogNDk4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKlVTQiBSYXcgR2FkZ2V0IEZ1enppbmcgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3Mgc29saWRpZnkgdGhpcyBmdXp6aW5nIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBVU0IgUmF3IEdhZGdldCBkcml2ZXIuIEkmIzM5O3ZlIGJlZW4gdGhpbmtpbmcgdGhyb3VnaCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBob3cgdG8gZW5zdXJlIHRoZSBmdXp6ZXIgZWZmZWN0aXZlbHkgaW50ZXJhY3RzIHdpdGggdGhpcyBkcml2ZXIuIFJpZ2h0IG5vdywgYFVTQl9EVU1NWV9IQ0RgIGlzIGtleS4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBpbmNsdWRlIGl0IGJlY2F1c2Ugc3l6a2FsbGVyIHVzZXMgaXQgZm9yIHRlc3RpbmcgYFVTQl9SQVdfR0FER0VUYC4gQnV0IEkgcmVhbGl6ZWQsIGBVU0JfRFVNTVlfSENEYCBpcyBib3RoIGEgVURDICphbmQqIGFuIEhDRCwgbWFraW5nIGl0IHBlcmZlY3QgZm9yIHRoaXMgdGVzdCBzZXR1cC4KCkkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIGZ1enplciBjYW4gYWN0dWFsbHkgYmluZCB0aGUgZ2FkZ2V0LCBzbywgYFVTQl9EVU1NWV9IQ0RgIHdpbGwgZGVmaW5pdGVseSBiZSBpbiBgRW5hYmxlQ29uZmlnc2AuIEdpdmVuIHRoZSBkZXBlbmRlbmN5LCBgVVNCX0RVTU1ZX0hDRGAgZGVwZW5kcyBvbiBgVVNCYCwgd2hpY2ggbWVhbnMgdGhhdCBpdCBoYXMgdG8gYmUgZW5hYmxlZCBhcyB3ZWxsLiBBbHNvIGBVU0JfR0FER0VUYCBhbmQgYFVTQl9SQVdfR0FER0VUYCBuZWVkIHRvIGJlIGVuYWJsZWQgZm9yIHRoaXMgdG8gd29yay4KClRoZXJlZm9yZSwgdGhlIGxpc3Qgc2hvdWxkIGJlIGBbJiMzNDtVU0ImIzM0OywgJiMzNDtVU0JfR0FER0VUJiMzNDssICYjMzQ7VVNCX1JBV19HQURHRVQmIzM0OywgJiMzNDtVU0JfRFVNTVlfSENEJiMzNDtdYC4KCkkmIzM5O3ZlIHJldmlld2VkIHRoZSBmb2N1cyBzeW1ib2xzIGZvciB0aGUgZnV6emluZzogYGdhZGdldF9iaW5kYCwgYGdhZGdldF91bmJpbmRgLCBgcmF3X2lvY3RsYCwgYHJhd19wcm9jZXNzX2VwMF9pb2AsIGFuZCBgcmF3X3Byb2Nlc3NfZXBfaW9gLiBUaGVzZSBsb29rIHNvbGlkIGFuZCBjb3ZlciB0aGUgY3JpdGljYWwgZW50cnkgcG9pbnRzIHRvIHRoZSBkcml2ZXImIzM5O3MgZnVuY3Rpb25hbGl0eSwgZm9jdXNpbmcgb24gdGhlIGNvcmUgYmluZC91bmJpbmQgb3BlcmF0aW9ucywgYW5kIElPIGhhbmRsaW5nLgoKVGhlIHJlYXNvbmluZyBpcyBzb3VuZDogdGhlIHBhdGNoIGFkZHJlc3NlcyBhIHJhY2UgY29uZGl0aW9uIGJldHdlZW4gVURDIHVuYmluZCBhbmQgZW5kcG9pbnQgSU8gaW4gdGhlIFVTQiBSYXcgR2FkZ2V0IGRyaXZlciwgd2hpY2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGNvcmUgZHJpdmVyIHVzZWQgZm9yIFVTQiBlbXVsYXRpb24uIEl0JiMzOTtzIGRlZmluaXRlbHkgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4KClRoaXMgc2hvdWxkIGJlIGEgcm9idXN0IGNvbmZpZ3VyYXRpb24uIEkmIzM5O2xsIHNldCB0aGUgcmVzdWx0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTA6NDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1VTQiYjMzQ7LAogICAgJiMzNDtVU0JfR0FER0VUJiMzNDssCiAgICAmIzM0O1VTQl9SQVdfR0FER0VUJiMzNDssCiAgICAmIzM0O1VTQl9EVU1NWV9IQ0QmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtnYWRnZXRfYmluZCYjMzQ7LAogICAgJiMzNDtnYWRnZXRfdW5iaW5kJiMzNDssCiAgICAmIzM0O3Jhd19pb2N0bCYjMzQ7LAogICAgJiMzNDtyYXdfcHJvY2Vzc19lcDBfaW8mIzM0OywKICAgICYjMzQ7cmF3X3Byb2Nlc3NfZXBfaW8mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgVVNCIFJhdyBHYWRnZXQgZHJpdmVyIGJldHdlZW4gVURDIHVuYmluZCBhbmQgZW5kcG9pbnQgSU8gb3BlcmF0aW9ucy4gSXQgaW50cm9kdWNlcyBhIGB1ZGNfdXNhZ2VgIGNvdW50ZXIgYW5kIGFuIGB1bmJpbmRfY29tcGxldGlvbmAgdG8gZW5zdXJlIHRoYXQgYGdhZGdldF91bmJpbmRgIHdhaXRzIGZvciBhbnkgcGVuZGluZyBJTyB0byBmaW5pc2ggYmVmb3JlIGNvbXBsZXRpbmcgdGhlIHVuYmluZCBwcm9jZXNzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGRyaXZlciB1c2VkIGZvciBVU0IgZW11bGF0aW9uIGFuZCBmdXp6aW5nLCBhbmQgaXQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VVNCJiMzNDssCiAgICAmIzM0O1VTQl9HQURHRVQmIzM0OywKICAgICYjMzQ7VVNCX1JBV19HQURHRVQmIzM0OywKICAgICYjMzQ7VVNCX0RVTU1ZX0hDRCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2dhZGdldF9iaW5kJiMzNDssCiAgICAmIzM0O2dhZGdldF91bmJpbmQmIzM0OywKICAgICYjMzQ7cmF3X2lvY3RsJiMzNDssCiAgICAmIzM0O3Jhd19wcm9jZXNzX2VwMF9pbyYjMzQ7LAogICAgJiMzNDtyYXdfcHJvY2Vzc19lcF9pbyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBVU0IgUmF3IEdhZGdldCBkcml2ZXIgYmV0d2VlbiBVREMgdW5iaW5kIGFuZCBlbmRwb2ludCBJTyBvcGVyYXRpb25zLiBJdCBpbnRyb2R1Y2VzIGEgYHVkY191c2FnZWAgY291bnRlciBhbmQgYW4gYHVuYmluZF9jb21wbGV0aW9uYCB0byBlbnN1cmUgdGhhdCBgZ2FkZ2V0X3VuYmluZGAgd2FpdHMgZm9yIGFueSBwZW5kaW5nIElPIHRvIGZpbmlzaCBiZWZvcmUgY29tcGxldGluZyB0aGUgdW5iaW5kIHByb2Nlc3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGNvcmUgZHJpdmVyIHVzZWQgZm9yIFVTQiBlbXVsYXRpb24gYW5kIGZ1enppbmcsIGFuZCBpdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjlUMTA6NDA6MDMuNjI5MzkyNzM4WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTU5MjI3MjM1OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVNCXCIsXG4gICAgXCJVU0JfR0FER0VUXCIsXG4gICAgXCJVU0JfUkFXX0dBREdFVFwiLFxuICAgIFwiVVNCX0RVTU1ZX0hDRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImdhZGdldF9iaW5kXCIsXG4gICAgXCJnYWRnZXRfdW5iaW5kXCIsXG4gICAgXCJyYXdfaW9jdGxcIixcbiAgICBcInJhd19wcm9jZXNzX2VwMF9pb1wiLFxuICAgIFwicmF3X3Byb2Nlc3NfZXBfaW9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBVU0IgUmF3IEdhZGdldCBkcml2ZXIgYmV0d2VlbiBVREMgdW5iaW5kIGFuZCBlbmRwb2ludCBJTyBvcGVyYXRpb25zLiBJdCBpbnRyb2R1Y2VzIGEgYHVkY191c2FnZWAgY291bnRlciBhbmQgYW4gYHVuYmluZF9jb21wbGV0aW9uYCB0byBlbnN1cmUgdGhhdCBgZ2FkZ2V0X3VuYmluZGAgd2FpdHMgZm9yIGFueSBwZW5kaW5nIElPIHRvIGZpbmlzaCBiZWZvcmUgY29tcGxldGluZyB0aGUgdW5iaW5kIHByb2Nlc3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGNvcmUgZHJpdmVyIHVzZWQgZm9yIFVTQiBlbXVsYXRpb24gYW5kIGZ1enppbmcsIGFuZCBpdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMDo0MDowMy42Mjk0MDMxMThaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3MDg4OTQ3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDM3Nzc4NDJmZjg4NDE5MzY3NjRiMTU2NDM5YmY0Y2ZjZjBjNmYzZmVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgMjkgMTA6NDA6MDIgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuY1xcbmluZGV4IDRmZWJmOGRhYzdjYTUuLmJjZTRmOGQzZmE2M2YgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmNcXG4rKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuY1xcbkBAIC0xNzUsNiArMTc1LDggQEAgc3RydWN0IHJhd19kZXYge1xcbiBcXHRib29sXFx0XFx0XFx0XFx0Z2FkZ2V0X3JlZ2lzdGVyZWQ7XFxuIFxcdHN0cnVjdCB1c2JfZ2FkZ2V0XFx0XFx0KmdhZGdldDtcXG4gXFx0c3RydWN0IHVzYl9yZXF1ZXN0XFx0XFx0KnJlcTtcXG4rXFx0aW50XFx0XFx0XFx0XFx0dWRjX3VzYWdlO1xcbitcXHRzdHJ1Y3QgY29tcGxldGlvblxcdFxcdCp1bmJpbmRfY29tcGxldGlvbjtcXG4gXFx0Ym9vbFxcdFxcdFxcdFxcdGVwMF9pbl9wZW5kaW5nO1xcbiBcXHRib29sXFx0XFx0XFx0XFx0ZXAwX291dF9wZW5kaW5nO1xcbiBcXHRib29sXFx0XFx0XFx0XFx0ZXAwX3VyYl9xdWV1ZWQ7XFxuQEAgLTIwNSwyNyArMjA3LDEzIEBAIHN0YXRpYyBzdHJ1Y3QgcmF3X2RldiAqZGV2X25ldyh2b2lkKVxcbiBzdGF0aWMgdm9pZCBkZXZfZnJlZShzdHJ1Y3Qga3JlZiAqa3JlZilcXG4ge1xcbiBcXHRzdHJ1Y3QgcmF3X2RldiAqZGV2ID0gY29udGFpbmVyX29mKGtyZWYsIHN0cnVjdCByYXdfZGV2LCBjb3VudCk7XFxuLVxcdGludCBpO1xcbiBcXG4gXFx0a2ZyZWUoZGV2LVxcdTAwM2V1ZGNfbmFtZSk7XFxuIFxcdGtmcmVlKGRldi1cXHUwMDNlZHJpdmVyLnVkY19uYW1lKTtcXG4gXFx0a2ZyZWUoZGV2LVxcdTAwM2Vkcml2ZXIuZHJpdmVyLm5hbWUpO1xcbiBcXHRpZiAoZGV2LVxcdTAwM2Vkcml2ZXJfaWRfbnVtYmVyIFxcdTAwM2U9IDApXFxuIFxcdFxcdGlkYV9mcmVlKFxcdTAwMjZkcml2ZXJfaWRfbnVtYmVycywgZGV2LVxcdTAwM2Vkcml2ZXJfaWRfbnVtYmVyKTtcXG4tXFx0aWYgKGRldi1cXHUwMDNlcmVxKSB7XFxuLVxcdFxcdGlmIChkZXYtXFx1MDAzZWVwMF91cmJfcXVldWVkKVxcbi1cXHRcXHRcXHR1c2JfZXBfZGVxdWV1ZShkZXYtXFx1MDAzZWdhZGdldC1cXHUwMDNlZXAwLCBkZXYtXFx1MDAzZXJlcSk7XFxuLVxcdFxcdHVzYl9lcF9mcmVlX3JlcXVlc3QoZGV2LVxcdTAwM2VnYWRnZXQtXFx1MDAzZWVwMCwgZGV2LVxcdTAwM2VyZXEpO1xcbi1cXHR9XFxuIFxcdHJhd19ldmVudF9xdWV1ZV9kZXN0cm95KFxcdTAwMjZkZXYtXFx1MDAzZXF1ZXVlKTtcXG4tXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGRldi1cXHUwMDNlZXBzX251bTsgaSsrKSB7XFxuLVxcdFxcdGlmIChkZXYtXFx1MDAzZWVwc1tpXS5zdGF0ZSA9PSBTVEFURV9FUF9ESVNBQkxFRClcXG4tXFx0XFx0XFx0Y29udGludWU7XFxuLVxcdFxcdHVzYl9lcF9kaXNhYmxlKGRldi1cXHUwMDNlZXBzW2ldLmVwKTtcXG4tXFx0XFx0dXNiX2VwX2ZyZWVfcmVxdWVzdChkZXYtXFx1MDAzZWVwc1tpXS5lcCwgZGV2LVxcdTAwM2VlcHNbaV0ucmVxKTtcXG4tXFx0XFx0a2ZyZWUoZGV2LVxcdTAwM2VlcHNbaV0uZXAtXFx1MDAzZWRlc2MpO1xcbi1cXHRcXHRkZXYtXFx1MDAzZWVwc1tpXS5zdGF0ZSA9IFNUQVRFX0VQX0RJU0FCTEVEO1xcbi1cXHR9XFxuIFxcdGtmcmVlKGRldik7XFxuIH1cXG4gXFxuQEAgLTMxNiw2ICszMDQsMTEgQEAgc3RhdGljIGludCBnYWRnZXRfYmluZChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0LFxcbiBcXHRyZXQgPSByYXdfcXVldWVfZXZlbnQoZGV2LCBVU0JfUkFXX0VWRU5UX0NPTk5FQ1QsIDAsIE5VTEwpO1xcbiBcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbiBcXHRcXHRkZXZfZXJyKFxcdTAwMjZnYWRnZXQtXFx1MDAzZWRldiwgXFxcImZhaWxlZCB0byBxdWV1ZSBjb25uZWN0IGV2ZW50XFxcXG5cXFwiKTtcXG4rXFx0XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmRldi1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbitcXHRcXHRkZXYtXFx1MDAzZWdhZGdldCA9IE5VTEw7XFxuK1xcdFxcdGRldi1cXHUwMDNlcmVxID0gTlVMTDtcXG4rXFx0XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2ZGV2LVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuK1xcdFxcdHVzYl9lcF9mcmVlX3JlcXVlc3QoZ2FkZ2V0LVxcdTAwM2VlcDAsIHJlcSk7XFxuIFxcdFxcdHNldF9nYWRnZXRfZGF0YShnYWRnZXQsIE5VTEwpO1xcbiBcXHRcXHRyZXR1cm4gcmV0O1xcbiBcXHR9XFxuQEAgLTMyOCw2ICszMjEsNDcgQEAgc3RhdGljIGludCBnYWRnZXRfYmluZChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0LFxcbiBzdGF0aWMgdm9pZCBnYWRnZXRfdW5iaW5kKHN0cnVjdCB1c2JfZ2FkZ2V0ICpnYWRnZXQpXFxuIHtcXG4gXFx0c3RydWN0IHJhd19kZXYgKmRldiA9IGdldF9nYWRnZXRfZGF0YShnYWRnZXQpO1xcbitcXHR1bnNpZ25lZCBsb25nIGZsYWdzO1xcbitcXHRERUNMQVJFX0NPTVBMRVRJT05fT05TVEFDSyhkb25lKTtcXG4rXFx0aW50IGk7XFxuK1xcbitcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2ZGV2LVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuK1xcdGRldi1cXHUwMDNlc3RhdGUgPSBTVEFURV9ERVZfRkFJTEVEO1xcbitcXG4rXFx0aWYgKGRldi1cXHUwMDNlZXAwX3VyYl9xdWV1ZWQpIHtcXG4rXFx0XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2ZGV2LVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuK1xcdFxcdHVzYl9lcF9kZXF1ZXVlKGdhZGdldC1cXHUwMDNlZXAwLCBkZXYtXFx1MDAzZXJlcSk7XFxuK1xcdFxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZkZXYtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4rXFx0fVxcbitcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgZGV2LVxcdTAwM2VlcHNfbnVtOyBpKyspIHtcXG4rXFx0XFx0aWYgKGRldi1cXHUwMDNlZXBzW2ldLnN0YXRlID09IFNUQVRFX0VQX0VOQUJMRUQgXFx1MDAyNlxcdTAwMjYgZGV2LVxcdTAwM2VlcHNbaV0udXJiX3F1ZXVlZCkge1xcbitcXHRcXHRcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZkZXYtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4rXFx0XFx0XFx0dXNiX2VwX2RlcXVldWUoZGV2LVxcdTAwM2VlcHNbaV0uZXAsIGRldi1cXHUwMDNlZXBzW2ldLnJlcSk7XFxuK1xcdFxcdFxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZkZXYtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4rXFx0XFx0fVxcbitcXHR9XFxuK1xcbitcXHRpZiAoZGV2LVxcdTAwM2V1ZGNfdXNhZ2UgXFx1MDAzZSAwKSB7XFxuK1xcdFxcdGRldi1cXHUwMDNldW5iaW5kX2NvbXBsZXRpb24gPSBcXHUwMDI2ZG9uZTtcXG4rXFx0XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2ZGV2LVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuK1xcdFxcdHdhaXRfZm9yX2NvbXBsZXRpb24oXFx1MDAyNmRvbmUpO1xcbitcXHRcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2ZGV2LVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuK1xcdH1cXG4rXFx0ZGV2LVxcdTAwM2VnYWRnZXQgPSBOVUxMO1xcbitcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZkZXYtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4rXFxuK1xcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBkZXYtXFx1MDAzZWVwc19udW07IGkrKykge1xcbitcXHRcXHRpZiAoZGV2LVxcdTAwM2VlcHNbaV0uc3RhdGUgPT0gU1RBVEVfRVBfRElTQUJMRUQpXFxuK1xcdFxcdFxcdGNvbnRpbnVlO1xcbitcXHRcXHR1c2JfZXBfZGlzYWJsZShkZXYtXFx1MDAzZWVwc1tpXS5lcCk7XFxuK1xcdFxcdHVzYl9lcF9mcmVlX3JlcXVlc3QoZGV2LVxcdTAwM2VlcHNbaV0uZXAsIGRldi1cXHUwMDNlZXBzW2ldLnJlcSk7XFxuK1xcdFxcdGtmcmVlKGRldi1cXHUwMDNlZXBzW2ldLmVwLVxcdTAwM2VkZXNjKTtcXG4rXFx0XFx0ZGV2LVxcdTAwM2VlcHNbaV0uc3RhdGUgPSBTVEFURV9FUF9ESVNBQkxFRDtcXG4rXFx0fVxcbitcXHRpZiAoZGV2LVxcdTAwM2VyZXEpIHtcXG4rXFx0XFx0dXNiX2VwX2ZyZWVfcmVxdWVzdChnYWRnZXQtXFx1MDAzZWVwMCwgZGV2LVxcdTAwM2VyZXEpO1xcbitcXHRcXHRkZXYtXFx1MDAzZXJlcSA9IE5VTEw7XFxuK1xcdH1cXG4gXFxuIFxcdHNldF9nYWRnZXRfZGF0YShnYWRnZXQsIE5VTEwpO1xcbiBcXHQvKiBNYXRjaGVzIGtyZWZfZ2V0KCkgaW4gZ2FkZ2V0X2JpbmQoKS4gKi9cXG5AQCAtNjM3LDExICs2NzEsMTEgQEAgc3RhdGljIGludCByYXdfaW9jdGxfZXZlbnRfZmV0Y2goc3RydWN0IHJhd19kZXYgKmRldiwgdW5zaWduZWQgbG9uZyB2YWx1ZSlcXG4gXFxuIFxcdGV2ZW50ID0gcmF3X2V2ZW50X3F1ZXVlX2ZldGNoKFxcdTAwMjZkZXYtXFx1MDAzZXF1ZXVlKTtcXG4gXFx0aWYgKFBUUl9FUlIoZXZlbnQpID09IC1FSU5UUikge1xcbi1cXHRcXHRkZXZfZGJnKFxcdTAwMjZkZXYtXFx1MDAzZWdhZGdldC1cXHUwMDNlZGV2LCBcXFwiZXZlbnQgZmV0Y2hpbmcgaW50ZXJydXB0ZWRcXFxcblxcXCIpO1xcbitcXHRcXHRkZXZfZGJnKGRldi1cXHUwMDNlZGV2LCBcXFwiZXZlbnQgZmV0Y2hpbmcgaW50ZXJydXB0ZWRcXFxcblxcXCIpO1xcbiBcXHRcXHRyZXR1cm4gLUVJTlRSO1xcbiBcXHR9XFxuIFxcdGlmIChJU19FUlIoZXZlbnQpKSB7XFxuLVxcdFxcdGRldl9lcnIoXFx1MDAyNmRldi1cXHUwMDNlZ2FkZ2V0LVxcdTAwM2VkZXYsIFxcXCJmYWlsZWQgdG8gZmV0Y2ggZXZlbnRcXFxcblxcXCIpO1xcbitcXHRcXHRkZXZfZXJyKGRldi1cXHUwMDNlZGV2LCBcXFwiZmFpbGVkIHRvIGZldGNoIGV2ZW50XFxcXG5cXFwiKTtcXG4gXFx0XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmRldi1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbiBcXHRcXHRkZXYtXFx1MDAzZXN0YXRlID0gU1RBVEVfREVWX0ZBSUxFRDtcXG4gXFx0XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2ZGV2LVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuQEAgLTcyMywyMiArNzU3LDM3IEBAIHN0YXRpYyBpbnQgcmF3X3Byb2Nlc3NfZXAwX2lvKHN0cnVjdCByYXdfZGV2ICpkZXYsIHN0cnVjdCB1c2JfcmF3X2VwX2lvICppbyxcXG4gXFx0ZGV2LVxcdTAwM2VyZXEtXFx1MDAzZWxlbmd0aCA9IGlvLVxcdTAwM2VsZW5ndGg7XFxuIFxcdGRldi1cXHUwMDNlcmVxLVxcdTAwM2V6ZXJvID0gdXNiX3Jhd19pb19mbGFnc196ZXJvKGlvLVxcdTAwM2VmbGFncyk7XFxuIFxcdGRldi1cXHUwMDNlZXAwX3VyYl9xdWV1ZWQgPSB0cnVlO1xcbitcXHRkZXYtXFx1MDAzZXVkY191c2FnZSsrO1xcbiBcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZkZXYtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4gXFxuIFxcdHJldCA9IHVzYl9lcF9xdWV1ZShkZXYtXFx1MDAzZWdhZGdldC1cXHUwMDNlZXAwLCBkZXYtXFx1MDAzZXJlcSwgR0ZQX0tFUk5FTCk7XFxuIFxcdGlmIChyZXQpIHtcXG4tXFx0XFx0ZGV2X2VycihcXHUwMDI2ZGV2LVxcdTAwM2VnYWRnZXQtXFx1MDAzZWRldixcXG4tXFx0XFx0XFx0XFx0XFxcImZhaWwsIHVzYl9lcF9xdWV1ZSByZXR1cm5lZCAlZFxcXFxuXFxcIiwgcmV0KTtcXG4rXFx0XFx0ZGV2X2VycihkZXYtXFx1MDAzZWRldiwgXFxcImZhaWwsIHVzYl9lcF9xdWV1ZSByZXR1cm5lZCAlZFxcXFxuXFxcIiwgcmV0KTtcXG4gXFx0XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmRldi1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbitcXHRcXHRkZXYtXFx1MDAzZXVkY191c2FnZS0tO1xcbitcXHRcXHRpZiAoIWRldi1cXHUwMDNldWRjX3VzYWdlIFxcdTAwMjZcXHUwMDI2IGRldi1cXHUwMDNldW5iaW5kX2NvbXBsZXRpb24pXFxuK1xcdFxcdFxcdGNvbXBsZXRlKGRldi1cXHUwMDNldW5iaW5kX2NvbXBsZXRpb24pO1xcbiBcXHRcXHRnb3RvIG91dF9xdWV1ZV9mYWlsZWQ7XFxuIFxcdH1cXG4gXFxuIFxcdHJldCA9IHdhaXRfZm9yX2NvbXBsZXRpb25faW50ZXJydXB0aWJsZShcXHUwMDI2ZGV2LVxcdTAwM2VlcDBfZG9uZSk7XFxuIFxcdGlmIChyZXQpIHtcXG4tXFx0XFx0ZGV2X2RiZyhcXHUwMDI2ZGV2LVxcdTAwM2VnYWRnZXQtXFx1MDAzZWRldiwgXFxcIndhaXQgaW50ZXJydXB0ZWRcXFxcblxcXCIpO1xcbi1cXHRcXHR1c2JfZXBfZGVxdWV1ZShkZXYtXFx1MDAzZWdhZGdldC1cXHUwMDNlZXAwLCBkZXYtXFx1MDAzZXJlcSk7XFxuLVxcdFxcdHdhaXRfZm9yX2NvbXBsZXRpb24oXFx1MDAyNmRldi1cXHUwMDNlZXAwX2RvbmUpO1xcbitcXHRcXHRkZXZfZGJnKGRldi1cXHUwMDNlZGV2LCBcXFwid2FpdCBpbnRlcnJ1cHRlZFxcXFxuXFxcIik7XFxuIFxcdFxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZkZXYtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4rXFx0XFx0aWYgKGRldi1cXHUwMDNlc3RhdGUgIT0gU1RBVEVfREVWX0ZBSUxFRCBcXHUwMDI2XFx1MDAyNiBkZXYtXFx1MDAzZWdhZGdldCkge1xcbitcXHRcXHRcXHRzdHJ1Y3QgdXNiX2VwICplcDAgPSBkZXYtXFx1MDAzZWdhZGdldC1cXHUwMDNlZXAwO1xcbitcXG4rXFx0XFx0XFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcXHUwMDI2ZGV2LVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuK1xcbitcXHRcXHRcXHR1c2JfZXBfZGVxdWV1ZShlcDAsIGRldi1cXHUwMDNlcmVxKTtcXG4rXFx0XFx0XFx0d2FpdF9mb3JfY29tcGxldGlvbihcXHUwMDI2ZGV2LVxcdTAwM2VlcDBfZG9uZSk7XFxuK1xcbitcXHRcXHRcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2ZGV2LVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuK1xcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmRldi1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbitcXHRcXHRcXHR3YWl0X2Zvcl9jb21wbGV0aW9uKFxcdTAwMjZkZXYtXFx1MDAzZWVwMF9kb25lKTtcXG4rXFx0XFx0XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmRldi1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbitcXHRcXHR9XFxuIFxcdFxcdGlmIChkZXYtXFx1MDAzZWVwMF9zdGF0dXMgPT0gLUVDT05OUkVTRVQpXFxuIFxcdFxcdFxcdGRldi1cXHUwMDNlZXAwX3N0YXR1cyA9IC1FSU5UUjtcXG4gXFx0XFx0Z290byBvdXRfaW50ZXJydXB0ZWQ7XFxuQEAgLTc1MCw2ICs3OTksOSBAQCBzdGF0aWMgaW50IHJhd19wcm9jZXNzX2VwMF9pbyhzdHJ1Y3QgcmF3X2RldiAqZGV2LCBzdHJ1Y3QgdXNiX3Jhd19lcF9pbyAqaW8sXFxuIFxcdHJldCA9IGRldi1cXHUwMDNlZXAwX3N0YXR1cztcXG4gb3V0X3F1ZXVlX2ZhaWxlZDpcXG4gXFx0ZGV2LVxcdTAwM2VlcDBfdXJiX3F1ZXVlZCA9IGZhbHNlO1xcbitcXHRkZXYtXFx1MDAzZXVkY191c2FnZS0tO1xcbitcXHRpZiAoIWRldi1cXHUwMDNldWRjX3VzYWdlIFxcdTAwMjZcXHUwMDI2IGRldi1cXHUwMDNldW5iaW5kX2NvbXBsZXRpb24pXFxuK1xcdFxcdGNvbXBsZXRlKGRldi1cXHUwMDNldW5iaW5kX2NvbXBsZXRpb24pO1xcbiBvdXRfdW5sb2NrOlxcbiBcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZkZXYtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4gXFx0cmV0dXJuIHJldDtcXG5AQCAtOTU2LDExICsxMDA4LDE1IEBAIHN0YXRpYyBpbnQgcmF3X2lvY3RsX2VwX2Rpc2FibGUoc3RydWN0IHJhd19kZXYgKmRldiwgdW5zaWduZWQgbG9uZyB2YWx1ZSlcXG4gXFx0XFx0Z290byBvdXRfdW5sb2NrO1xcbiBcXHR9XFxuIFxcdGRldi1cXHUwMDNlZXBzW2ldLmRpc2FibGluZyA9IHRydWU7XFxuK1xcdGRldi1cXHUwMDNldWRjX3VzYWdlKys7XFxuIFxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmRldi1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbiBcXG4gXFx0dXNiX2VwX2Rpc2FibGUoZGV2LVxcdTAwM2VlcHNbaV0uZXApO1xcbiBcXG4gXFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmRldi1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbitcXHRkZXYtXFx1MDAzZXVkY191c2FnZS0tO1xcbitcXHRpZiAoIWRldi1cXHUwMDNldWRjX3VzYWdlIFxcdTAwMjZcXHUwMDI2IGRldi1cXHUwMDNldW5iaW5kX2NvbXBsZXRpb24pXFxuK1xcdFxcdGNvbXBsZXRlKGRldi1cXHUwMDNldW5iaW5kX2NvbXBsZXRpb24pO1xcbiBcXHR1c2JfZXBfZnJlZV9yZXF1ZXN0KGRldi1cXHUwMDNlZXBzW2ldLmVwLCBkZXYtXFx1MDAzZWVwc1tpXS5yZXEpO1xcbiBcXHRrZnJlZShkZXYtXFx1MDAzZWVwc1tpXS5lcC1cXHUwMDNlZGVzYyk7XFxuIFxcdGRldi1cXHUwMDNlZXBzW2ldLnN0YXRlID0gU1RBVEVfRVBfRElTQUJMRUQ7XFxuQEAgLTExMDksMjIgKzExNjUsMzcgQEAgc3RhdGljIGludCByYXdfcHJvY2Vzc19lcF9pbyhzdHJ1Y3QgcmF3X2RldiAqZGV2LCBzdHJ1Y3QgdXNiX3Jhd19lcF9pbyAqaW8sXFxuIFxcdGVwLVxcdTAwM2VyZXEtXFx1MDAzZWxlbmd0aCA9IGlvLVxcdTAwM2VsZW5ndGg7XFxuIFxcdGVwLVxcdTAwM2VyZXEtXFx1MDAzZXplcm8gPSB1c2JfcmF3X2lvX2ZsYWdzX3plcm8oaW8tXFx1MDAzZWZsYWdzKTtcXG4gXFx0ZXAtXFx1MDAzZXVyYl9xdWV1ZWQgPSB0cnVlO1xcbitcXHRkZXYtXFx1MDAzZXVkY191c2FnZSsrO1xcbiBcXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFxcdTAwMjZkZXYtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4gXFxuIFxcdHJldCA9IHVzYl9lcF9xdWV1ZShlcC1cXHUwMDNlZXAsIGVwLVxcdTAwM2VyZXEsIEdGUF9LRVJORUwpO1xcbiBcXHRpZiAocmV0KSB7XFxuLVxcdFxcdGRldl9lcnIoXFx1MDAyNmRldi1cXHUwMDNlZ2FkZ2V0LVxcdTAwM2VkZXYsXFxuLVxcdFxcdFxcdFxcdFxcXCJmYWlsLCB1c2JfZXBfcXVldWUgcmV0dXJuZWQgJWRcXFxcblxcXCIsIHJldCk7XFxuK1xcdFxcdGRldl9lcnIoZGV2LVxcdTAwM2VkZXYsIFxcXCJmYWlsLCB1c2JfZXBfcXVldWUgcmV0dXJuZWQgJWRcXFxcblxcXCIsIHJldCk7XFxuIFxcdFxcdHNwaW5fbG9ja19pcnFzYXZlKFxcdTAwMjZkZXYtXFx1MDAzZWxvY2ssIGZsYWdzKTtcXG4rXFx0XFx0ZGV2LVxcdTAwM2V1ZGNfdXNhZ2UtLTtcXG4rXFx0XFx0aWYgKCFkZXYtXFx1MDAzZXVkY191c2FnZSBcXHUwMDI2XFx1MDAyNiBkZXYtXFx1MDAzZXVuYmluZF9jb21wbGV0aW9uKVxcbitcXHRcXHRcXHRjb21wbGV0ZShkZXYtXFx1MDAzZXVuYmluZF9jb21wbGV0aW9uKTtcXG4gXFx0XFx0Z290byBvdXRfcXVldWVfZmFpbGVkO1xcbiBcXHR9XFxuIFxcbiBcXHRyZXQgPSB3YWl0X2Zvcl9jb21wbGV0aW9uX2ludGVycnVwdGlibGUoXFx1MDAyNmRvbmUpO1xcbiBcXHRpZiAocmV0KSB7XFxuLVxcdFxcdGRldl9kYmcoXFx1MDAyNmRldi1cXHUwMDNlZ2FkZ2V0LVxcdTAwM2VkZXYsIFxcXCJ3YWl0IGludGVycnVwdGVkXFxcXG5cXFwiKTtcXG4tXFx0XFx0dXNiX2VwX2RlcXVldWUoZXAtXFx1MDAzZWVwLCBlcC1cXHUwMDNlcmVxKTtcXG4tXFx0XFx0d2FpdF9mb3JfY29tcGxldGlvbihcXHUwMDI2ZG9uZSk7XFxuK1xcdFxcdGRldl9kYmcoZGV2LVxcdTAwM2VkZXYsIFxcXCJ3YWl0IGludGVycnVwdGVkXFxcXG5cXFwiKTtcXG4gXFx0XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmRldi1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbitcXHRcXHRpZiAoZGV2LVxcdTAwM2VzdGF0ZSAhPSBTVEFURV9ERVZfRkFJTEVEIFxcdTAwMjZcXHUwMDI2IGRldi1cXHUwMDNlZ2FkZ2V0KSB7XFxuK1xcdFxcdFxcdHN0cnVjdCB1c2JfZXAgKnVzYl9lcCA9IGVwLVxcdTAwM2VlcDtcXG4rXFxuK1xcdFxcdFxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmRldi1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbitcXG4rXFx0XFx0XFx0dXNiX2VwX2RlcXVldWUodXNiX2VwLCBlcC1cXHUwMDNlcmVxKTtcXG4rXFx0XFx0XFx0d2FpdF9mb3JfY29tcGxldGlvbihcXHUwMDI2ZG9uZSk7XFxuK1xcbitcXHRcXHRcXHRzcGluX2xvY2tfaXJxc2F2ZShcXHUwMDI2ZGV2LVxcdTAwM2Vsb2NrLCBmbGFncyk7XFxuK1xcdFxcdH0gZWxzZSB7XFxuK1xcdFxcdFxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmRldi1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbitcXHRcXHRcXHR3YWl0X2Zvcl9jb21wbGV0aW9uKFxcdTAwMjZkb25lKTtcXG4rXFx0XFx0XFx0c3Bpbl9sb2NrX2lycXNhdmUoXFx1MDAyNmRldi1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbitcXHRcXHR9XFxuIFxcdFxcdGlmIChlcC1cXHUwMDNlc3RhdHVzID09IC1FQ09OTlJFU0VUKVxcbiBcXHRcXHRcXHRlcC1cXHUwMDNlc3RhdHVzID0gLUVJTlRSO1xcbiBcXHRcXHRnb3RvIG91dF9pbnRlcnJ1cHRlZDtcXG5AQCAtMTEzNiw2ICsxMjA3LDkgQEAgc3RhdGljIGludCByYXdfcHJvY2Vzc19lcF9pbyhzdHJ1Y3QgcmF3X2RldiAqZGV2LCBzdHJ1Y3QgdXNiX3Jhd19lcF9pbyAqaW8sXFxuIFxcdHJldCA9IGVwLVxcdTAwM2VzdGF0dXM7XFxuIG91dF9xdWV1ZV9mYWlsZWQ6XFxuIFxcdGVwLVxcdTAwM2V1cmJfcXVldWVkID0gZmFsc2U7XFxuK1xcdGRldi1cXHUwMDNldWRjX3VzYWdlLS07XFxuK1xcdGlmICghZGV2LVxcdTAwM2V1ZGNfdXNhZ2UgXFx1MDAyNlxcdTAwMjYgZGV2LVxcdTAwM2V1bmJpbmRfY29tcGxldGlvbilcXG4rXFx0XFx0Y29tcGxldGUoZGV2LVxcdTAwM2V1bmJpbmRfY29tcGxldGlvbik7XFxuIG91dF91bmxvY2s6XFxuIFxcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXFx1MDAyNmRldi1cXHUwMDNlbG9jaywgZmxhZ3MpO1xcbiBcXHRyZXR1cm4gcmV0O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMDo0MDowNC4yMDI0MDgxMDZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo5NTM0OTY5NDg3NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJVU0JcIixcbiAgICBcIlVTQl9HQURHRVRcIixcbiAgICBcIlVTQl9SQVdfR0FER0VUXCIsXG4gICAgXCJVU0JfRFVNTVlfSENEXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZ2FkZ2V0X2JpbmRcIixcbiAgICBcImdhZGdldF91bmJpbmRcIixcbiAgICBcInJhd19pb2N0bFwiLFxuICAgIFwicmF3X3Byb2Nlc3NfZXAwX2lvXCIsXG4gICAgXCJyYXdfcHJvY2Vzc19lcF9pb1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIFVTQiBSYXcgR2FkZ2V0IGRyaXZlciBiZXR3ZWVuIFVEQyB1bmJpbmQgYW5kIGVuZHBvaW50IElPIG9wZXJhdGlvbnMuIEl0IGludHJvZHVjZXMgYSBgdWRjX3VzYWdlYCBjb3VudGVyIGFuZCBhbiBgdW5iaW5kX2NvbXBsZXRpb25gIHRvIGVuc3VyZSB0aGF0IGBnYWRnZXRfdW5iaW5kYCB3YWl0cyBmb3IgYW55IHBlbmRpbmcgSU8gdG8gZmluaXNoIGJlZm9yZSBjb21wbGV0aW5nIHRoZSB1bmJpbmQgcHJvY2Vzcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEgY29yZSBkcml2ZXIgdXNlZCBmb3IgVVNCIGVtdWxhdGlvbiBhbmQgZnV6emluZywgYW5kIGl0IGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDM3Nzc4NDJmZjg4NDE5MzY3NjRiMTU2NDM5YmY0Y2ZjZjBjNmYzZmVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1bCAyOSAxMDo0MDowMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmNcbmluZGV4IDRmZWJmOGRhYzdjYTUuLmJjZTRmOGQzZmE2M2YgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuY1xuKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmNcbkBAIC0xNzUsNiArMTc1LDggQEAgc3RydWN0IHJhd19kZXYge1xuIFx0Ym9vbFx0XHRcdFx0Z2FkZ2V0X3JlZ2lzdGVyZWQ7XG4gXHRzdHJ1Y3QgdXNiX2dhZGdldFx0XHQqZ2FkZ2V0O1xuIFx0c3RydWN0IHVzYl9yZXF1ZXN0XHRcdCpyZXE7XG4rXHRpbnRcdFx0XHRcdHVkY191c2FnZTtcbitcdHN0cnVjdCBjb21wbGV0aW9uXHRcdCp1bmJpbmRfY29tcGxldGlvbjtcbiBcdGJvb2xcdFx0XHRcdGVwMF9pbl9wZW5kaW5nO1xuIFx0Ym9vbFx0XHRcdFx0ZXAwX291dF9wZW5kaW5nO1xuIFx0Ym9vbFx0XHRcdFx0ZXAwX3VyYl9xdWV1ZWQ7XG5AQCAtMjA1LDI3ICsyMDcsMTMgQEAgc3RhdGljIHN0cnVjdCByYXdfZGV2ICpkZXZfbmV3KHZvaWQpXG4gc3RhdGljIHZvaWQgZGV2X2ZyZWUoc3RydWN0IGtyZWYgKmtyZWYpXG4ge1xuIFx0c3RydWN0IHJhd19kZXYgKmRldiA9IGNvbnRhaW5lcl9vZihrcmVmLCBzdHJ1Y3QgcmF3X2RldiwgY291bnQpO1xuLVx0aW50IGk7XG4gXG4gXHRrZnJlZShkZXYtXHUwMDNldWRjX25hbWUpO1xuIFx0a2ZyZWUoZGV2LVx1MDAzZWRyaXZlci51ZGNfbmFtZSk7XG4gXHRrZnJlZShkZXYtXHUwMDNlZHJpdmVyLmRyaXZlci5uYW1lKTtcbiBcdGlmIChkZXYtXHUwMDNlZHJpdmVyX2lkX251bWJlciBcdTAwM2U9IDApXG4gXHRcdGlkYV9mcmVlKFx1MDAyNmRyaXZlcl9pZF9udW1iZXJzLCBkZXYtXHUwMDNlZHJpdmVyX2lkX251bWJlcik7XG4tXHRpZiAoZGV2LVx1MDAzZXJlcSkge1xuLVx0XHRpZiAoZGV2LVx1MDAzZWVwMF91cmJfcXVldWVkKVxuLVx0XHRcdHVzYl9lcF9kZXF1ZXVlKGRldi1cdTAwM2VnYWRnZXQtXHUwMDNlZXAwLCBkZXYtXHUwMDNlcmVxKTtcbi1cdFx0dXNiX2VwX2ZyZWVfcmVxdWVzdChkZXYtXHUwMDNlZ2FkZ2V0LVx1MDAzZWVwMCwgZGV2LVx1MDAzZXJlcSk7XG4tXHR9XG4gXHRyYXdfZXZlbnRfcXVldWVfZGVzdHJveShcdTAwMjZkZXYtXHUwMDNlcXVldWUpO1xuLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgZGV2LVx1MDAzZWVwc19udW07IGkrKykge1xuLVx0XHRpZiAoZGV2LVx1MDAzZWVwc1tpXS5zdGF0ZSA9PSBTVEFURV9FUF9ESVNBQkxFRClcbi1cdFx0XHRjb250aW51ZTtcbi1cdFx0dXNiX2VwX2Rpc2FibGUoZGV2LVx1MDAzZWVwc1tpXS5lcCk7XG4tXHRcdHVzYl9lcF9mcmVlX3JlcXVlc3QoZGV2LVx1MDAzZWVwc1tpXS5lcCwgZGV2LVx1MDAzZWVwc1tpXS5yZXEpO1xuLVx0XHRrZnJlZShkZXYtXHUwMDNlZXBzW2ldLmVwLVx1MDAzZWRlc2MpO1xuLVx0XHRkZXYtXHUwMDNlZXBzW2ldLnN0YXRlID0gU1RBVEVfRVBfRElTQUJMRUQ7XG4tXHR9XG4gXHRrZnJlZShkZXYpO1xuIH1cbiBcbkBAIC0zMTYsNiArMzA0LDExIEBAIHN0YXRpYyBpbnQgZ2FkZ2V0X2JpbmQoc3RydWN0IHVzYl9nYWRnZXQgKmdhZGdldCxcbiBcdHJldCA9IHJhd19xdWV1ZV9ldmVudChkZXYsIFVTQl9SQVdfRVZFTlRfQ09OTkVDVCwgMCwgTlVMTCk7XG4gXHRpZiAocmV0IFx1MDAzYyAwKSB7XG4gXHRcdGRldl9lcnIoXHUwMDI2Z2FkZ2V0LVx1MDAzZWRldiwgXCJmYWlsZWQgdG8gcXVldWUgY29ubmVjdCBldmVudFxcblwiKTtcbitcdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbitcdFx0ZGV2LVx1MDAzZWdhZGdldCA9IE5VTEw7XG4rXHRcdGRldi1cdTAwM2VyZXEgPSBOVUxMO1xuK1x0XHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmRldi1cdTAwM2Vsb2NrLCBmbGFncyk7XG4rXHRcdHVzYl9lcF9mcmVlX3JlcXVlc3QoZ2FkZ2V0LVx1MDAzZWVwMCwgcmVxKTtcbiBcdFx0c2V0X2dhZGdldF9kYXRhKGdhZGdldCwgTlVMTCk7XG4gXHRcdHJldHVybiByZXQ7XG4gXHR9XG5AQCAtMzI4LDYgKzMyMSw0NyBAQCBzdGF0aWMgaW50IGdhZGdldF9iaW5kKHN0cnVjdCB1c2JfZ2FkZ2V0ICpnYWRnZXQsXG4gc3RhdGljIHZvaWQgZ2FkZ2V0X3VuYmluZChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0KVxuIHtcbiBcdHN0cnVjdCByYXdfZGV2ICpkZXYgPSBnZXRfZ2FkZ2V0X2RhdGEoZ2FkZ2V0KTtcbitcdHVuc2lnbmVkIGxvbmcgZmxhZ3M7XG4rXHRERUNMQVJFX0NPTVBMRVRJT05fT05TVEFDSyhkb25lKTtcbitcdGludCBpO1xuK1xuK1x0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbitcdGRldi1cdTAwM2VzdGF0ZSA9IFNUQVRFX0RFVl9GQUlMRUQ7XG4rXG4rXHRpZiAoZGV2LVx1MDAzZWVwMF91cmJfcXVldWVkKSB7XG4rXHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbitcdFx0dXNiX2VwX2RlcXVldWUoZ2FkZ2V0LVx1MDAzZWVwMCwgZGV2LVx1MDAzZXJlcSk7XG4rXHRcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmRldi1cdTAwM2Vsb2NrLCBmbGFncyk7XG4rXHR9XG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBkZXYtXHUwMDNlZXBzX251bTsgaSsrKSB7XG4rXHRcdGlmIChkZXYtXHUwMDNlZXBzW2ldLnN0YXRlID09IFNUQVRFX0VQX0VOQUJMRUQgXHUwMDI2XHUwMDI2IGRldi1cdTAwM2VlcHNbaV0udXJiX3F1ZXVlZCkge1xuK1x0XHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbitcdFx0XHR1c2JfZXBfZGVxdWV1ZShkZXYtXHUwMDNlZXBzW2ldLmVwLCBkZXYtXHUwMDNlZXBzW2ldLnJlcSk7XG4rXHRcdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbitcdFx0fVxuK1x0fVxuK1xuK1x0aWYgKGRldi1cdTAwM2V1ZGNfdXNhZ2UgXHUwMDNlIDApIHtcbitcdFx0ZGV2LVx1MDAzZXVuYmluZF9jb21wbGV0aW9uID0gXHUwMDI2ZG9uZTtcbitcdFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZkZXYtXHUwMDNlbG9jaywgZmxhZ3MpO1xuK1x0XHR3YWl0X2Zvcl9jb21wbGV0aW9uKFx1MDAyNmRvbmUpO1xuK1x0XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZkZXYtXHUwMDNlbG9jaywgZmxhZ3MpO1xuK1x0fVxuK1x0ZGV2LVx1MDAzZWdhZGdldCA9IE5VTEw7XG4rXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmRldi1cdTAwM2Vsb2NrLCBmbGFncyk7XG4rXG4rXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBkZXYtXHUwMDNlZXBzX251bTsgaSsrKSB7XG4rXHRcdGlmIChkZXYtXHUwMDNlZXBzW2ldLnN0YXRlID09IFNUQVRFX0VQX0RJU0FCTEVEKVxuK1x0XHRcdGNvbnRpbnVlO1xuK1x0XHR1c2JfZXBfZGlzYWJsZShkZXYtXHUwMDNlZXBzW2ldLmVwKTtcbitcdFx0dXNiX2VwX2ZyZWVfcmVxdWVzdChkZXYtXHUwMDNlZXBzW2ldLmVwLCBkZXYtXHUwMDNlZXBzW2ldLnJlcSk7XG4rXHRcdGtmcmVlKGRldi1cdTAwM2VlcHNbaV0uZXAtXHUwMDNlZGVzYyk7XG4rXHRcdGRldi1cdTAwM2VlcHNbaV0uc3RhdGUgPSBTVEFURV9FUF9ESVNBQkxFRDtcbitcdH1cbitcdGlmIChkZXYtXHUwMDNlcmVxKSB7XG4rXHRcdHVzYl9lcF9mcmVlX3JlcXVlc3QoZ2FkZ2V0LVx1MDAzZWVwMCwgZGV2LVx1MDAzZXJlcSk7XG4rXHRcdGRldi1cdTAwM2VyZXEgPSBOVUxMO1xuK1x0fVxuIFxuIFx0c2V0X2dhZGdldF9kYXRhKGdhZGdldCwgTlVMTCk7XG4gXHQvKiBNYXRjaGVzIGtyZWZfZ2V0KCkgaW4gZ2FkZ2V0X2JpbmQoKS4gKi9cbkBAIC02MzcsMTEgKzY3MSwxMSBAQCBzdGF0aWMgaW50IHJhd19pb2N0bF9ldmVudF9mZXRjaChzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxuIFxuIFx0ZXZlbnQgPSByYXdfZXZlbnRfcXVldWVfZmV0Y2goXHUwMDI2ZGV2LVx1MDAzZXF1ZXVlKTtcbiBcdGlmIChQVFJfRVJSKGV2ZW50KSA9PSAtRUlOVFIpIHtcbi1cdFx0ZGV2X2RiZyhcdTAwMjZkZXYtXHUwMDNlZ2FkZ2V0LVx1MDAzZWRldiwgXCJldmVudCBmZXRjaGluZyBpbnRlcnJ1cHRlZFxcblwiKTtcbitcdFx0ZGV2X2RiZyhkZXYtXHUwMDNlZGV2LCBcImV2ZW50IGZldGNoaW5nIGludGVycnVwdGVkXFxuXCIpO1xuIFx0XHRyZXR1cm4gLUVJTlRSO1xuIFx0fVxuIFx0aWYgKElTX0VSUihldmVudCkpIHtcbi1cdFx0ZGV2X2VycihcdTAwMjZkZXYtXHUwMDNlZ2FkZ2V0LVx1MDAzZWRldiwgXCJmYWlsZWQgdG8gZmV0Y2ggZXZlbnRcXG5cIik7XG4rXHRcdGRldl9lcnIoZGV2LVx1MDAzZWRldiwgXCJmYWlsZWQgdG8gZmV0Y2ggZXZlbnRcXG5cIik7XG4gXHRcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmRldi1cdTAwM2Vsb2NrLCBmbGFncyk7XG4gXHRcdGRldi1cdTAwM2VzdGF0ZSA9IFNUQVRFX0RFVl9GQUlMRUQ7XG4gXHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbkBAIC03MjMsMjIgKzc1NywzNyBAQCBzdGF0aWMgaW50IHJhd19wcm9jZXNzX2VwMF9pbyhzdHJ1Y3QgcmF3X2RldiAqZGV2LCBzdHJ1Y3QgdXNiX3Jhd19lcF9pbyAqaW8sXG4gXHRkZXYtXHUwMDNlcmVxLVx1MDAzZWxlbmd0aCA9IGlvLVx1MDAzZWxlbmd0aDtcbiBcdGRldi1cdTAwM2VyZXEtXHUwMDNlemVybyA9IHVzYl9yYXdfaW9fZmxhZ3NfemVybyhpby1cdTAwM2VmbGFncyk7XG4gXHRkZXYtXHUwMDNlZXAwX3VyYl9xdWV1ZWQgPSB0cnVlO1xuK1x0ZGV2LVx1MDAzZXVkY191c2FnZSsrO1xuIFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZkZXYtXHUwMDNlbG9jaywgZmxhZ3MpO1xuIFxuIFx0cmV0ID0gdXNiX2VwX3F1ZXVlKGRldi1cdTAwM2VnYWRnZXQtXHUwMDNlZXAwLCBkZXYtXHUwMDNlcmVxLCBHRlBfS0VSTkVMKTtcbiBcdGlmIChyZXQpIHtcbi1cdFx0ZGV2X2VycihcdTAwMjZkZXYtXHUwMDNlZ2FkZ2V0LVx1MDAzZWRldixcbi1cdFx0XHRcdFwiZmFpbCwgdXNiX2VwX3F1ZXVlIHJldHVybmVkICVkXFxuXCIsIHJldCk7XG4rXHRcdGRldl9lcnIoZGV2LVx1MDAzZWRldiwgXCJmYWlsLCB1c2JfZXBfcXVldWUgcmV0dXJuZWQgJWRcXG5cIiwgcmV0KTtcbiBcdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbitcdFx0ZGV2LVx1MDAzZXVkY191c2FnZS0tO1xuK1x0XHRpZiAoIWRldi1cdTAwM2V1ZGNfdXNhZ2UgXHUwMDI2XHUwMDI2IGRldi1cdTAwM2V1bmJpbmRfY29tcGxldGlvbilcbitcdFx0XHRjb21wbGV0ZShkZXYtXHUwMDNldW5iaW5kX2NvbXBsZXRpb24pO1xuIFx0XHRnb3RvIG91dF9xdWV1ZV9mYWlsZWQ7XG4gXHR9XG4gXG4gXHRyZXQgPSB3YWl0X2Zvcl9jb21wbGV0aW9uX2ludGVycnVwdGlibGUoXHUwMDI2ZGV2LVx1MDAzZWVwMF9kb25lKTtcbiBcdGlmIChyZXQpIHtcbi1cdFx0ZGV2X2RiZyhcdTAwMjZkZXYtXHUwMDNlZ2FkZ2V0LVx1MDAzZWRldiwgXCJ3YWl0IGludGVycnVwdGVkXFxuXCIpO1xuLVx0XHR1c2JfZXBfZGVxdWV1ZShkZXYtXHUwMDNlZ2FkZ2V0LVx1MDAzZWVwMCwgZGV2LVx1MDAzZXJlcSk7XG4tXHRcdHdhaXRfZm9yX2NvbXBsZXRpb24oXHUwMDI2ZGV2LVx1MDAzZWVwMF9kb25lKTtcbitcdFx0ZGV2X2RiZyhkZXYtXHUwMDNlZGV2LCBcIndhaXQgaW50ZXJydXB0ZWRcXG5cIik7XG4gXHRcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmRldi1cdTAwM2Vsb2NrLCBmbGFncyk7XG4rXHRcdGlmIChkZXYtXHUwMDNlc3RhdGUgIT0gU1RBVEVfREVWX0ZBSUxFRCBcdTAwMjZcdTAwMjYgZGV2LVx1MDAzZWdhZGdldCkge1xuK1x0XHRcdHN0cnVjdCB1c2JfZXAgKmVwMCA9IGRldi1cdTAwM2VnYWRnZXQtXHUwMDNlZXAwO1xuK1xuK1x0XHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbitcbitcdFx0XHR1c2JfZXBfZGVxdWV1ZShlcDAsIGRldi1cdTAwM2VyZXEpO1xuK1x0XHRcdHdhaXRfZm9yX2NvbXBsZXRpb24oXHUwMDI2ZGV2LVx1MDAzZWVwMF9kb25lKTtcbitcbitcdFx0XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZkZXYtXHUwMDNlbG9jaywgZmxhZ3MpO1xuK1x0XHR9IGVsc2Uge1xuK1x0XHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbitcdFx0XHR3YWl0X2Zvcl9jb21wbGV0aW9uKFx1MDAyNmRldi1cdTAwM2VlcDBfZG9uZSk7XG4rXHRcdFx0c3Bpbl9sb2NrX2lycXNhdmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbitcdFx0fVxuIFx0XHRpZiAoZGV2LVx1MDAzZWVwMF9zdGF0dXMgPT0gLUVDT05OUkVTRVQpXG4gXHRcdFx0ZGV2LVx1MDAzZWVwMF9zdGF0dXMgPSAtRUlOVFI7XG4gXHRcdGdvdG8gb3V0X2ludGVycnVwdGVkO1xuQEAgLTc1MCw2ICs3OTksOSBAQCBzdGF0aWMgaW50IHJhd19wcm9jZXNzX2VwMF9pbyhzdHJ1Y3QgcmF3X2RldiAqZGV2LCBzdHJ1Y3QgdXNiX3Jhd19lcF9pbyAqaW8sXG4gXHRyZXQgPSBkZXYtXHUwMDNlZXAwX3N0YXR1cztcbiBvdXRfcXVldWVfZmFpbGVkOlxuIFx0ZGV2LVx1MDAzZWVwMF91cmJfcXVldWVkID0gZmFsc2U7XG4rXHRkZXYtXHUwMDNldWRjX3VzYWdlLS07XG4rXHRpZiAoIWRldi1cdTAwM2V1ZGNfdXNhZ2UgXHUwMDI2XHUwMDI2IGRldi1cdTAwM2V1bmJpbmRfY29tcGxldGlvbilcbitcdFx0Y29tcGxldGUoZGV2LVx1MDAzZXVuYmluZF9jb21wbGV0aW9uKTtcbiBvdXRfdW5sb2NrOlxuIFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZkZXYtXHUwMDNlbG9jaywgZmxhZ3MpO1xuIFx0cmV0dXJuIHJldDtcbkBAIC05NTYsMTEgKzEwMDgsMTUgQEAgc3RhdGljIGludCByYXdfaW9jdGxfZXBfZGlzYWJsZShzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxuIFx0XHRnb3RvIG91dF91bmxvY2s7XG4gXHR9XG4gXHRkZXYtXHUwMDNlZXBzW2ldLmRpc2FibGluZyA9IHRydWU7XG4rXHRkZXYtXHUwMDNldWRjX3VzYWdlKys7XG4gXHRzcGluX3VubG9ja19pcnFyZXN0b3JlKFx1MDAyNmRldi1cdTAwM2Vsb2NrLCBmbGFncyk7XG4gXG4gXHR1c2JfZXBfZGlzYWJsZShkZXYtXHUwMDNlZXBzW2ldLmVwKTtcbiBcbiBcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmRldi1cdTAwM2Vsb2NrLCBmbGFncyk7XG4rXHRkZXYtXHUwMDNldWRjX3VzYWdlLS07XG4rXHRpZiAoIWRldi1cdTAwM2V1ZGNfdXNhZ2UgXHUwMDI2XHUwMDI2IGRldi1cdTAwM2V1bmJpbmRfY29tcGxldGlvbilcbitcdFx0Y29tcGxldGUoZGV2LVx1MDAzZXVuYmluZF9jb21wbGV0aW9uKTtcbiBcdHVzYl9lcF9mcmVlX3JlcXVlc3QoZGV2LVx1MDAzZWVwc1tpXS5lcCwgZGV2LVx1MDAzZWVwc1tpXS5yZXEpO1xuIFx0a2ZyZWUoZGV2LVx1MDAzZWVwc1tpXS5lcC1cdTAwM2VkZXNjKTtcbiBcdGRldi1cdTAwM2VlcHNbaV0uc3RhdGUgPSBTVEFURV9FUF9ESVNBQkxFRDtcbkBAIC0xMTA5LDIyICsxMTY1LDM3IEBAIHN0YXRpYyBpbnQgcmF3X3Byb2Nlc3NfZXBfaW8oc3RydWN0IHJhd19kZXYgKmRldiwgc3RydWN0IHVzYl9yYXdfZXBfaW8gKmlvLFxuIFx0ZXAtXHUwMDNlcmVxLVx1MDAzZWxlbmd0aCA9IGlvLVx1MDAzZWxlbmd0aDtcbiBcdGVwLVx1MDAzZXJlcS1cdTAwM2V6ZXJvID0gdXNiX3Jhd19pb19mbGFnc196ZXJvKGlvLVx1MDAzZWZsYWdzKTtcbiBcdGVwLVx1MDAzZXVyYl9xdWV1ZWQgPSB0cnVlO1xuK1x0ZGV2LVx1MDAzZXVkY191c2FnZSsrO1xuIFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZkZXYtXHUwMDNlbG9jaywgZmxhZ3MpO1xuIFxuIFx0cmV0ID0gdXNiX2VwX3F1ZXVlKGVwLVx1MDAzZWVwLCBlcC1cdTAwM2VyZXEsIEdGUF9LRVJORUwpO1xuIFx0aWYgKHJldCkge1xuLVx0XHRkZXZfZXJyKFx1MDAyNmRldi1cdTAwM2VnYWRnZXQtXHUwMDNlZGV2LFxuLVx0XHRcdFx0XCJmYWlsLCB1c2JfZXBfcXVldWUgcmV0dXJuZWQgJWRcXG5cIiwgcmV0KTtcbitcdFx0ZGV2X2VycihkZXYtXHUwMDNlZGV2LCBcImZhaWwsIHVzYl9lcF9xdWV1ZSByZXR1cm5lZCAlZFxcblwiLCByZXQpO1xuIFx0XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZkZXYtXHUwMDNlbG9jaywgZmxhZ3MpO1xuK1x0XHRkZXYtXHUwMDNldWRjX3VzYWdlLS07XG4rXHRcdGlmICghZGV2LVx1MDAzZXVkY191c2FnZSBcdTAwMjZcdTAwMjYgZGV2LVx1MDAzZXVuYmluZF9jb21wbGV0aW9uKVxuK1x0XHRcdGNvbXBsZXRlKGRldi1cdTAwM2V1bmJpbmRfY29tcGxldGlvbik7XG4gXHRcdGdvdG8gb3V0X3F1ZXVlX2ZhaWxlZDtcbiBcdH1cbiBcbiBcdHJldCA9IHdhaXRfZm9yX2NvbXBsZXRpb25faW50ZXJydXB0aWJsZShcdTAwMjZkb25lKTtcbiBcdGlmIChyZXQpIHtcbi1cdFx0ZGV2X2RiZyhcdTAwMjZkZXYtXHUwMDNlZ2FkZ2V0LVx1MDAzZWRldiwgXCJ3YWl0IGludGVycnVwdGVkXFxuXCIpO1xuLVx0XHR1c2JfZXBfZGVxdWV1ZShlcC1cdTAwM2VlcCwgZXAtXHUwMDNlcmVxKTtcbi1cdFx0d2FpdF9mb3JfY29tcGxldGlvbihcdTAwMjZkb25lKTtcbitcdFx0ZGV2X2RiZyhkZXYtXHUwMDNlZGV2LCBcIndhaXQgaW50ZXJydXB0ZWRcXG5cIik7XG4gXHRcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmRldi1cdTAwM2Vsb2NrLCBmbGFncyk7XG4rXHRcdGlmIChkZXYtXHUwMDNlc3RhdGUgIT0gU1RBVEVfREVWX0ZBSUxFRCBcdTAwMjZcdTAwMjYgZGV2LVx1MDAzZWdhZGdldCkge1xuK1x0XHRcdHN0cnVjdCB1c2JfZXAgKnVzYl9lcCA9IGVwLVx1MDAzZWVwO1xuK1xuK1x0XHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbitcbitcdFx0XHR1c2JfZXBfZGVxdWV1ZSh1c2JfZXAsIGVwLVx1MDAzZXJlcSk7XG4rXHRcdFx0d2FpdF9mb3JfY29tcGxldGlvbihcdTAwMjZkb25lKTtcbitcbitcdFx0XHRzcGluX2xvY2tfaXJxc2F2ZShcdTAwMjZkZXYtXHUwMDNlbG9jaywgZmxhZ3MpO1xuK1x0XHR9IGVsc2Uge1xuK1x0XHRcdHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoXHUwMDI2ZGV2LVx1MDAzZWxvY2ssIGZsYWdzKTtcbitcdFx0XHR3YWl0X2Zvcl9jb21wbGV0aW9uKFx1MDAyNmRvbmUpO1xuK1x0XHRcdHNwaW5fbG9ja19pcnFzYXZlKFx1MDAyNmRldi1cdTAwM2Vsb2NrLCBmbGFncyk7XG4rXHRcdH1cbiBcdFx0aWYgKGVwLVx1MDAzZXN0YXR1cyA9PSAtRUNPTk5SRVNFVClcbiBcdFx0XHRlcC1cdTAwM2VzdGF0dXMgPSAtRUlOVFI7XG4gXHRcdGdvdG8gb3V0X2ludGVycnVwdGVkO1xuQEAgLTExMzYsNiArMTIwNyw5IEBAIHN0YXRpYyBpbnQgcmF3X3Byb2Nlc3NfZXBfaW8oc3RydWN0IHJhd19kZXYgKmRldiwgc3RydWN0IHVzYl9yYXdfZXBfaW8gKmlvLFxuIFx0cmV0ID0gZXAtXHUwMDNlc3RhdHVzO1xuIG91dF9xdWV1ZV9mYWlsZWQ6XG4gXHRlcC1cdTAwM2V1cmJfcXVldWVkID0gZmFsc2U7XG4rXHRkZXYtXHUwMDNldWRjX3VzYWdlLS07XG4rXHRpZiAoIWRldi1cdTAwM2V1ZGNfdXNhZ2UgXHUwMDI2XHUwMDI2IGRldi1cdTAwM2V1bmJpbmRfY29tcGxldGlvbilcbitcdFx0Y29tcGxldGUoZGV2LVx1MDAzZXVuYmluZF9jb21wbGV0aW9uKTtcbiBvdXRfdW5sb2NrOlxuIFx0c3Bpbl91bmxvY2tfaXJxcmVzdG9yZShcdTAwMjZkZXYtXHUwMDNlbG9jaywgZmxhZ3MpO1xuIFx0cmV0dXJuIHJldDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEwOjQwOjA0LjIwMjQxMDQ2NloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcwNjM5MjMxODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgVVNCIFJhdyBHYWRnZXQgUGF0Y2ggZm9yIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCBmb3IgYGRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jYC4gVGhpcyBpcyB0aGUgVVNCIFJhdyBHYWRnZXQgZHJpdmVyLCB3aGljaCByaW5ncyBhIGJlbGwg4oCTIGl0J3MgdGhlIG9uZSB3ZSB1c2UgZm9yIGVtdWxhdGluZyBVU0IgZGV2aWNlcyBmcm9tIHVzZXJzcGFjZSwgc3BlY2lmaWNhbGx5IGNydWNpYWwgZm9yIHN5emthbGxlcidzIGZ1enppbmcgZWZmb3J0cy4gVGhlIHBhdGNoIHNlZW1zIHRvIGJlIGFkZGluZyBgdWRjX3VzYWdlYCBhbmQgYHVuYmluZF9jb21wbGV0aW9uYCB0byBgc3RydWN0IHJhd19kZXZgLiBJdCdzIHR3ZWFraW5nIGBnYWRnZXRfdW5iaW5kYCB0byBlbnN1cmUgaXQgcHJvcGVybHkgd2FpdHMgZm9yIFVEQyB1c2FnZSB0byBkcm9wIGJlZm9yZSB1bmJpbmRpbmcgYW5kIGNsZWFucyB1cCBVUkJzIGNvcnJlY3RseS4gSSBzZWUgbW9kaWZpY2F0aW9ucyBpbiBgcmF3X3Byb2Nlc3NfZXAwX2lvYCwgYHJhd19pb2N0bF9lcF9kaXNhYmxlYCwgYW5kIGByYXdfcHJvY2Vzc19lcF9pb2AgcmVsYXRlZCB0byB0cmFja2luZyBgdWRjX3VzYWdlYCBhbmQgY29tcGxldGluZyBgdW5iaW5kX2NvbXBsZXRpb25gLiBQbHVzLCBzb21lIGZpeGVzIGZvciB0aG9zZSBgZGV2X2VycmAgYW5kIGBkZXZfZGJnYCBjYWxscywgbWFraW5nIHN1cmUgdGhleSB1c2UgYGRldi1cdTAwM2VkZXZgIGluc3RlYWQgb2YgYGRldi1cdTAwM2VnYWRnZXQtXHUwMDNlZGV2YCBiZWNhdXNlIGBkZXYtXHUwMDNlZ2FkZ2V0YCBjYW4gYmUgbnVsbCBkdXJpbmcgdGhlIHVuYmluZCBwcm9jZXNzLlxuXG5IYW5nIG9uLi4uIHRoZSByZWFsIHF1ZXN0aW9uIGlzIHdoZXRoZXIgdGhpcyBpcyByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCBsaWtlIFFFTVUgb3IgR0NFLiBUaGlzIGlzIGNyaXRpY2FsIGZvciBmdXp6aW5nISBPaCwgcmlnaHQsIHRoZSBVU0IgUmF3IEdhZGdldCBpcyAqZGVzaWduZWQqIGZvciBwcmVjaXNlbHkgdGhpcyB1c2UgY2FzZS4gU3l6a2FsbGVyIGxldmVyYWdlcyBpdCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIFRoZSBwcm9tcHQsIHJlbWVtYmVyLCBpcyBhc2tpbmcgbWUgdG8gcmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgKmV2ZW4qIHdpdGggc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUuIEJ1dCB0aGlzICppcyogc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUhIFRoZSBwcm9tcHQgc2F5cyBcImV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUsXCIgbWVhbmluZyB0aGF0IGlmIGl0IGlzIGltcG9zc2libGUgdG8gcmVhY2ggKmV2ZW4gd2l0aCogc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUsIHRoZW4gaXQncyBmYWxzZS4gQnV0IHRoaXMgKmlzKiB0aGUgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUsIHNvIGl0IGlzIHJlYWNoYWJsZS5cblxuU28gdGhpcyBsb29rcyBwcm9taXNpbmcuIEkgbmVlZCB0byB0YWtlIGEgcXVpY2sgbG9vayBhdCB0aGUgS2NvbmZpZyBmb3IgYGRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jYCB0byBjb25maXJtIGl0IGlzIGVuYWJsZWQsIGJ1dCBmcm9tIHRoZSBzb3VuZCBvZiBpdCwgdGhpcyBsb29rcyBsaWtlIGEgZGVmaW5pdGUgXCJXb3J0aEZ1enppbmc9dHJ1ZS5cIlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MjAxLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDE1LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTA6NDA6MTEuMjY2MzM5MTk3WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzMTY1NjM4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJyYXdfZ2FkZ2V0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9NTE2PWNvbmZpZyBVU0JfUkFXX0dBREdFVFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTUyOS1cXHQgIFNheSBcXFwieVxcXCIgdG8gbGluayB0aGUgZHJpdmVyIHN0YXRpY2FsbHksIG9yIFxcXCJtXFxcIiB0byBidWlsZCBhXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjUzMDpcXHQgIGR5bmFtaWNhbGx5IGxpbmtlZCBtb2R1bGUgY2FsbGVkIFxcXCJyYXdfZ2FkZ2V0XFxcIi5cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNTMxLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMDo0MDoxMS4zOTgwMDIzNzRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDc4Mzc4NzAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIFVTQiBSYXcgR2FkZ2V0IENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBzbyB3ZSdyZSB0YWxraW5nIGFib3V0IGBDT05GSUdfVVNCX1JBV19HQURHRVRgLiBUaGF0J3MgdGhlIGtleSBjb25maWd1cmF0aW9uIHNldHRpbmcgd2UncmUgZm9jdXNlZCBvbiBoZXJlLiBNeSBmaXJzdCBpbnN0aW5jdCwgYXMgYWx3YXlzLCBpcyB0byBkaXZlIGludG8gdGhlIGRlcGVuZGVuY2llcy4gVW5kZXJzdGFuZGluZyAqaG93KiBgQ09ORklHX1VTQl9SQVdfR0FER0VUYCByZWxhdGVzIHRvIG90aGVyIGtlcm5lbCBjb21wb25lbnRzIGlzIGFic29sdXRlbHkgY3J1Y2lhbC4gV2UgbmVlZCB0byB0cmFjZSBpdHMgY29ubmVjdGlvbnMgdG8gb3RoZXIgVVNCIGdhZGdldCBkcml2ZXJzLCB0aGUgY29yZSBVU0Igc3Vic3lzdGVtLCBhbmQgcG90ZW50aWFsbHkgZXZlbiBkZXZpY2UgdHJlZSBjb25maWd1cmF0aW9uLiBLbm93aW5nIGl0cyBkZXBlbmRlbmNpZXMgd2lsbCB0ZWxsIG1lIGV2ZXJ5dGhpbmcgZnJvbSB3aGF0IGl0IG5lZWRzIHRvIGZ1bmN0aW9uIHRvIHRoZSBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzIG9mIGVuYWJsaW5nIG9yIGRpc2FibGluZyBpdC4gVGhpcyB3aWxsIGluZm9ybSBteSBhc3Nlc3NtZW50IG9mIGl0cyBzdWl0YWJpbGl0eSBmb3IgdGhlIGludGVuZGVkIHVzZS1jYXNlIGFuZCBpZiBlbmFibGluZyBpdCB3aWxsIGNhdXNlIGFueSBjb25mbGljdHMgd2l0aCBvdGhlciBzeXN0ZW0gY29uZmlndXJhdGlvbnMuIE15IGJyYWluIGlzIGFscmVhZHkgcnVubmluZyB0aHJvdWdoIHBvc3NpYmxlIGRlcGVuZGVuY3kgcGF0aHMgYW5kIHRoaW5raW5nIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMgZm9yIG15IGN1cnJlbnQgcHJvamVjdC4gTGV0J3MgZGlnIGluIGFuZCBzZWUgd2hhdCB3ZSBmaW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MjQyLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTA6NDA6MTQuODc2Mzg1MTY2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNjQwNTU2NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX1JBV19HQURHRVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz01MDE9Y29uZmlnIFVTQl9HX1dFQkNBTVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTUxNS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6NTE2OmNvbmZpZyBVU0JfUkFXX0dBREdFVFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy01MTctXFx0dHJpc3RhdGUgXFxcIlVTQiBSYXcgR2FkZ2V0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMDo0MDoxNC45OTI4MDA3NDNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTkyNTYwOTAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBLY29uZmlnIC0gTGluZSA1MTYqKlxuXG5Pa2F5LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gQmFzZWQgb24gdGhlIGN1cnJlbnQgdHJhamVjdG9yeSBvZiB0aGlzIGludmVzdGlnYXRpb24sIEkgbmVlZCBhIGRlZXBlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGlzIGZlYXR1cmUgaXMgY29udHJvbGxlZCBhbmQgY29uZmlndXJlZC4gTGluZSA1MTYgaW4gdGhlIEtjb25maWcgZmlsZSBoYXMgY29tZSB1cCBhcyBhIGxpa2VseSBwb2ludCBvZiBpbnRlcmVzdCwgc28gSSdtIGdvaW5nIHRvIHN0YXJ0IHRoZXJlLiBJJ20gbm90IGp1c3QgbG9va2luZyBmb3IgYSBzcGVjaWZpYyB2YXJpYWJsZSwgYnV0IHRoZSBjb250ZXh0IGFyb3VuZCBpdDogdGhlIGRlcGVuZGVuY2llcywgdGhlIHJlbGF0aW9uc2hpcHMgdG8gb3RoZXIgY29uZmlndXJhdGlvbnMsIGFuZCB0aGUgb3ZlcmFsbCBjb25kaXRpb25hbCBsb2dpYy4gSSB3YW50IHRvIGJ1aWxkIGEgY29tcGxldGUgbWVudGFsIG1vZGVsIG9mIHRoaXMgc2VjdGlvbiBvZiB0aGUgY29uZmlnIGFuZCBzZWUgd2hhdCBkZWNpc2lvbnMgaXQgZHJpdmVzLiBJdCBpcyBjcnVjaWFsIHRvIGhhdmUgYSBjbGVhciB1bmRlcnN0YW5kaW5nIG9mIHdoYXQgaW5mbHVlbmNlcyB0aGUgY29uZmlndXJhdGlvbiBhbmQgbWFrZSBzdXJlIHRoZXJlIGFyZSBubyBvYnZpb3VzIG1pc2NvbmZpZ3VyYXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NjEzLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTA6NDA6MTcuOTg1MzY0NTk0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE4MzA1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNTEwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNTEwOlxcdFxcdCAgZGV2aWNlLiBJdCBwcm92aWRlcyBhIHVzZXJzcGFjZSBBUEkgdG8gcHJvY2VzcyBVVkMgY29udHJvbCByZXF1ZXN0c1xcbiA1MTE6XFx0XFx0ICBhbmQgc3RyZWFtIHZpZGVvIGRhdGEgdG8gdGhlIGhvc3QuXFxuIDUxMjpcXHRcXG4gNTEzOlxcdFxcdCAgU2F5IFxcXCJ5XFxcIiB0byBsaW5rIHRoZSBkcml2ZXIgc3RhdGljYWxseSwgb3IgXFxcIm1cXFwiIHRvIGJ1aWxkIGFcXG4gNTE0OlxcdFxcdCAgZHluYW1pY2FsbHkgbGlua2VkIG1vZHVsZSBjYWxsZWQgXFxcImdfd2ViY2FtXFxcIi5cXG4gNTE1OlxcdFxcbiA1MTY6XFx0Y29uZmlnIFVTQl9SQVdfR0FER0VUXFxuIDUxNzpcXHRcXHR0cmlzdGF0ZSBcXFwiVVNCIFJhdyBHYWRnZXRcXFwiXFxuIDUxODpcXHRcXHRoZWxwXFxuIDUxOTpcXHRcXHQgIFVTQiBSYXcgR2FkZ2V0IGlzIGEgZ2FkZ2V0IGRyaXZlciB0aGF0IGdpdmVzIHVzZXJzcGFjZSBsb3ctbGV2ZWxcXG4gNTIwOlxcdFxcdCAgY29udHJvbCBvdmVyIHRoZSBnYWRnZXQncyBjb21tdW5pY2F0aW9uIHByb2Nlc3MuXFxuIDUyMTpcXHRcXG4gNTIyOlxcdFxcdCAgTGlrZSBhbnkgb3RoZXIgZ2FkZ2V0IGRyaXZlciwgUmF3IEdhZGdldCBpbXBsZW1lbnRzIFVTQiBkZXZpY2VzIHZpYVxcbiA1MjM6XFx0XFx0ICB0aGUgVVNCIGdhZGdldCBBUEkuIFVubGlrZSBtb3N0IGdhZGdldCBkcml2ZXJzLCBSYXcgR2FkZ2V0IGRvZXMgbm90XFxuIDUyNDpcXHRcXHQgIGltcGxlbWVudCBhbnkgY29uY3JldGUgVVNCIGZ1bmN0aW9ucyBpdHNlbGYgYnV0IHJlcXVpcmVzIHVzZXJzcGFjZVxcbiA1MjU6XFx0XFx0ICB0byBkbyB0aGF0LlxcbiA1MjY6XFx0XFxuIDUyNzpcXHRcXHQgIFNlZSBEb2N1bWVudGF0aW9uL3VzYi9yYXctZ2FkZ2V0LnJzdCBmb3IgZGV0YWlscy5cXG4gNTI4OlxcdFxcbiA1Mjk6XFx0XFx0ICBTYXkgXFxcInlcXFwiIHRvIGxpbmsgdGhlIGRyaXZlciBzdGF0aWNhbGx5LCBvciBcXFwibVxcXCIgdG8gYnVpbGQgYVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMDo0MDoxNy45ODc1NTExNzRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTA2ODk1MjIxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgRGVwZW5kZW5jeSBEZWNsYXJhdGlvbnMqKlxuXG5BbHJpZ2h0LCBJIHdhcyBleHBlY3RpbmcgdG8gc2VlIGEgY2xlYXIgYGRlcGVuZHMgb25gIGRlY2xhcmF0aW9uLCBidXQgaXQncyBhYnNlbnQuIFRoYXQncyBhIGJpdCB1bnVzdWFsOyBnb29kIHByb2plY3Qgb3JnYW5pemF0aW9uLCBlc3BlY2lhbGx5IGluIGxhcmdlciBzeXN0ZW1zLCAqcmVsaWVzKiBvbiBleHBsaWNpdGx5IHN0YXRlZCBkZXBlbmRlbmNpZXMgZm9yIGNsYXJpdHkgYW5kIG1haW50YWluYWJpbGl0eS4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gc2NhbiB0aGUgZmlsZSdzIGhlYWRlciBvciBwZXJoYXBzIHRoZSBwcm9qZWN0IGNvbmZpZ3VyYXRpb24gbWVudXMuIEhvcGVmdWxseSwgdGhlIGRlcGVuZGVuY3kgaW5mb3JtYXRpb24gaXMgbG9jYXRlZCB3aXRoaW4gdGhlIHNhbWUgZmlsZSBvciBhIG5laWdoYm9yaW5nIGNvbmZpZ3VyYXRpb24gZmlsZSwgb3IgcGVyaGFwcyB0aGUgSURFIGhhcyBzb21lIGhpZGRlbiBuYXZpZ2F0aW9uIG9wdGlvbnMuIEl0J3MgYSBiaXQgb2YgYW4gYXNzdW1wdGlvbiwgYnV0IGl0J3MgYWx3YXlzIHdvcnRoIGNoZWNraW5nIHRoZSBvYnZpb3VzIHBsYWNlcyBmaXJzdCwgYmVmb3JlIEkgZ28gZGlnZ2luZyBkZWVwZXIgaW50byB0aGUgY29kZSBvciB0aGUgYnVpbGQgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MTY5LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMDo0MDoyMS40OTQ0NTI4NzVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2NzM5NTc0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZW51Y29uZmlnIFVTQl9HQURHRVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTYtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MTc6bWVudWNvbmZpZyBVU0JfR0FER0VUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTgtXFx0dHJpc3RhdGUgXFxcIlVTQiBHYWRnZXQgU3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTA6NDA6MjEuNjYxODU4NTMyWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyMzA5OTg4ODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIFVTQiBHYWRnZXQgTGVnYWN5IEtjb25maWcqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljcyBvZiB0aGlzIFwibGVnYWN5XCIgVVNCIGdhZGdldCBjb25maWd1cmF0aW9uLiBNeSBmaXJzdCBtb3ZlIGlzIHRvIGp1bXAgcmlnaHQgaW50byB0aGUgYGRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZ2AgZmlsZS4gVGhhdCdzIHRoZSBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgY29udGV4dCBvZiB0aGVzZSBsZWdhY3kgb3B0aW9ucy4gSSBrbm93IHRoYXQgYnkgZXhhbWluaW5nIHRoZSBjb25maWd1cmF0aW9uIGZpbGUsIEkgc2hvdWxkIGdldCBhIGJldHRlciBwaWN0dXJlIG9mIHdoYXQncyBjb250cm9sbGVkIGJ5IGl0LCBkZXBlbmRlbmNpZXMgdGhhdCBpdCBoYXMsIGFuZCBwZXJoYXBzIGV2ZW4gdGhlIHJhdGlvbmFsZSBiZWhpbmQgaXRzIGV4aXN0ZW5jZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzICpsZWdhY3kqIGFib3V0IGl0LiBMZXQncyBzZWUgd2hhdCB3ZSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzQ1OCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEwOjQwOjI0Ljg5Mjg2MDUzOFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDcwMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0I1xcbiAgIDM6XFx0IyBVU0IgR2FkZ2V0IHN1cHBvcnQgb24gYSBzeXN0ZW0gaW52b2x2ZXNcXG4gICA0OlxcdCMgICAgKGEpIGEgcGVyaXBoZXJhbCBjb250cm9sbGVyLCBhbmRcXG4gICA1OlxcdCMgICAgKGIpIHRoZSBnYWRnZXQgZHJpdmVyIHVzaW5nIGl0LlxcbiAgIDY6XFx0I1xcbiAgIDc6XFx0IyBOT1RFOiAgR2FkZ2V0IHN1cHBvcnQgKiogRE9FUyBOT1QgKiogZGVwZW5kIG9uIGhvc3Qtc2lkZSBDT05GSUdfVVNCICEhXFxuICAgODpcXHQjXFxuICAgOTpcXHQjICAtIEhvc3Qgc3lzdGVtcyAobGlrZSBQQ3MpIG5lZWQgQ09ORklHX1VTQiAod2l0aCBcXFwiQVxcXCIgamFja3MpLlxcbiAgMTA6XFx0IyAgLSBQZXJpcGhlcmFscyAobGlrZSBQREFzKSBuZWVkIENPTkZJR19VU0JfR0FER0VUICh3aXRoIFxcXCJCXFxcIiBqYWNrcykuXFxuICAxMTpcXHQjICAtIFNvbWUgc3lzdGVtcyBoYXZlIGJvdGgga2luZHMgb2YgY29udHJvbGxlcnMuXFxuICAxMjpcXHQjXFxuICAxMzpcXHQjIFdpdGggaGVscCBmcm9tIGEgc3BlY2lhbCB0cmFuc2NlaXZlciBhbmQgYSBcXFwiTWluaS1BQlxcXCIgamFjaywgc3lzdGVtcyB3aXRoXFxuICAxNDpcXHQjIGJvdGgga2luZHMgb2YgY29udHJvbGxlciBjYW4gYWxzbyBzdXBwb3J0IFxcXCJVU0IgT24tdGhlLUdvXFxcIiAoQ09ORklHX1VTQl9PVEcpLlxcbiAgMTU6XFx0I1xcbiAgMTY6XFx0IyBBIExpbnV4IFxcXCJHYWRnZXQgRHJpdmVyXFxcIiB0YWxrcyB0byB0aGUgVVNCIFBlcmlwaGVyYWwgQ29udHJvbGxlclxcbiAgMTc6XFx0IyBkcml2ZXIgdGhyb3VnaCB0aGUgYWJzdHJhY3QgXFxcImdhZGdldFxcXCIgQVBJLiAgU29tZSBvdGhlciBvcGVyYXRpbmdcXG4gIDE4OlxcdCMgc3lzdGVtcyBjYWxsIHRoZXNlIFxcXCJjbGllbnRcXFwiIGRyaXZlcnMsIG9mIHdoaWNoIFxcXCJjbGFzcyBkcml2ZXJzXFxcIlxcbiAgMTk6XFx0IyBhcmUgYSBzdWJzZXQgKGltcGxlbWVudGluZyBhIFVTQiBkZXZpY2UgY2xhc3Mgc3BlY2lmaWNhdGlvbikuXFxuICAyMDpcXHQjIEEgZ2FkZ2V0IGRyaXZlciBpbXBsZW1lbnRzIG9uZSBvciBtb3JlIFVTQiBmdW5jdGlvbnMgdXNpbmdcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTA6NDA6MjQuODkzMDA5NTk4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMzY4MjYxOTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipGb2N1c2luZyBvbiBVU0IgR2FkZ2V0IENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBzbyB3ZSdyZSBkaXZpbmcgaW50byB0aGUgVVNCIGdhZGdldCBjb25maWd1cmF0aW9uIGhlcmUuIE15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiBgVVNCX0dBREdFVGAg4oCTIHRoYXQncyB0aGUgcHJpbWFyeSwgb3ZlcmFyY2hpbmcgb3B0aW9uLiBJdCdzIHRoZSBiaWcgcGljdHVyZS4gQmVmb3JlIEkgcHJvY2VlZCwgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgZGVwZW5kZW5jaWVzIG9mIGBVU0JfUkFXX0dBREdFVGAuIEl0J3MgY3J1Y2lhbCB0byB1bmRlcnN0YW5kIGhvdyB0aGF0IHNwZWNpZmljIG9wdGlvbiBmaXRzIHdpdGhpbiB0aGUgbGFyZ2VyIGdhZGdldCBmcmFtZXdvcmssIGVuc3VyaW5nIG5vIGNyaXRpY2FsIGRlcGVuZGVuY2llcyBhcmUgb3Zlcmxvb2tlZC4gTGV0J3MgbWFrZSBzdXJlIGV2ZXJ5dGhpbmcgaXMgaW4gcGxhY2UgZm9yIGEgcHJvcGVyIGJ1aWxkIGFuZCBmdW5jdGlvbmFsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MDIxLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMDo0MDoyNy45Mjk4Mzk3NjhaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMDk5Mjk0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9NjU9Y29uZmlnIFVTQl9aRVJPX0hOUFRFU1RcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNjYtXFx0Ym9vbCBcXFwiSE5QIFRlc3QgRGV2aWNlXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzo2NzpcXHRkZXBlbmRzIG9uIFVTQl9aRVJPIFxcdTAwMjZcXHUwMDI2IFVTQl9PVEdcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNjgtXFx0aGVscFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTc1PWNvbmZpZyBVU0JfQVVESU9cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNzYtXFx0dHJpc3RhdGUgXFxcIkF1ZGlvIEdhZGdldFxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6Nzc6XFx0ZGVwZW5kcyBvbiBTTkRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNzgtXFx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0xMDA9Y29uZmlnIEdBREdFVF9VQUMxXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTEwMS1cXHRib29sIFxcXCJVQUMgMS4wXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoxMDI6XFx0ZGVwZW5kcyBvbiBVU0JfQVVESU9cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMTAzLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0xMDc9Y29uZmlnIEdBREdFVF9VQUMxX0xFR0FDWVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0xMDgtXFx0Ym9vbCBcXFwiVUFDIDEuMCAoTGVnYWN5KVxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6MTA5OlxcdGRlcGVuZHMgb24gR0FER0VUX1VBQzFcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMTEwLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0xMTU9Y29uZmlnIFVTQl9FVEhcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMTE2LVxcdHRyaXN0YXRlIFxcXCJFdGhlcm5ldCBHYWRnZXQgKHdpdGggQ0RDIEV0aGVybmV0IHN1cHBvcnQpXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoxMTc6XFx0ZGVwZW5kcyBvbiBORVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMTE4LVxcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMTQwLVxcdCAgV2l0aGluIHRoZSBVU0IgZGV2aWNlLCB0aGlzIGdhZGdldCBkcml2ZXIgZXhwb3NlcyBhIG5ldHdvcmsgZGV2aWNlXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjE0MTpcXHQgIFxcXCJ1c2JYXFxcIiwgd2hlcmUgWCBkZXBlbmRzIG9uIHdoYXQgb3RoZXIgbmV0d29ya2luZyBkZXZpY2VzIHlvdSBoYXZlLlxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0xNDItXFx0ICBUcmVhdCBpdCBsaWtlIGEgdHdvLW5vZGUgRXRoZXJuZXQgbGluazogIGhvc3QsIGFuZCBnYWRnZXQuXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9MTUzPWNvbmZpZyBVU0JfRVRIX1JORElTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTE1NC1cXHRib29sIFxcXCJSTkRJUyBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoxNTU6XFx0ZGVwZW5kcyBvbiBVU0JfRVRIXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTE1Ni1cXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTE3Mz1jb25maWcgVVNCX0VUSF9FRU1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMTc0LVxcdGJvb2wgXFxcIkV0aGVybmV0IEVtdWxhdGlvbiBNb2RlbCAoRUVNKSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoxNzU6XFx0ZGVwZW5kcyBvbiBVU0JfRVRIXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTE3Ni1cXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTE5MD1jb25maWcgVVNCX0dfTkNNXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTE5MS1cXHR0cmlzdGF0ZSBcXFwiTmV0d29yayBDb250cm9sIE1vZGVsIChOQ00pIHN1cHBvcnRcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjE5MjpcXHRkZXBlbmRzIG9uIE5FVFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0xOTMtXFx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0yMzc9Y29uZmlnIFVTQl9GVU5DVElPTkZTX0VUSFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yMzgtXFx0Ym9vbCBcXFwiSW5jbHVkZSBjb25maWd1cmF0aW9uIHdpdGggQ0RDIEVDTSAoRXRoZXJuZXQpXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoyMzk6XFx0ZGVwZW5kcyBvbiBVU0JfRlVOQ1RJT05GUyBcXHUwMDI2XFx1MDAyNiBORVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjQwLVxcdHNlbGVjdCBVU0JfVV9FVEhFUlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTI0Nz1jb25maWcgVVNCX0ZVTkNUSU9ORlNfUk5ESVNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjQ4LVxcdGJvb2wgXFxcIkluY2x1ZGUgY29uZmlndXJhdGlvbiB3aXRoIFJORElTIChFdGhlcm5ldClcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjI0OTpcXHRkZXBlbmRzIG9uIFVTQl9GVU5DVElPTkZTIFxcdTAwMjZcXHUwMDI2IE5FVFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yNTAtXFx0c2VsZWN0IFVTQl9VX0VUSEVSXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9MjU1PWNvbmZpZyBVU0JfRlVOQ1RJT05GU19HRU5FUklDXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTI1Ni1cXHRib29sIFxcXCJJbmNsdWRlICdwdXJlJyBjb25maWd1cmF0aW9uXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoyNTc6XFx0ZGVwZW5kcyBvbiBVU0JfRlVOQ1RJT05GU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yNTgtXFx0aGVscFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTI2Mj1jb25maWcgVVNCX01BU1NfU1RPUkFHRVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yNjMtXFx0dHJpc3RhdGUgXFxcIk1hc3MgU3RvcmFnZSBHYWRnZXRcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjI2NDpcXHRkZXBlbmRzIG9uIEJMT0NLXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTI2NS1cXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTI3OT1jb25maWcgVVNCX0dBREdFVF9UQVJHRVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMjgwLVxcdHRyaXN0YXRlIFxcXCJVU0IgR2FkZ2V0IFRhcmdldCBGYWJyaWMgTW9kdWxlXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzoyODE6XFx0ZGVwZW5kcyBvbiBUQVJHRVRfQ09SRVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yODItXFx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0yOTE9Y29uZmlnIFVTQl9HX1NFUklBTFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yOTItXFx0dHJpc3RhdGUgXFxcIlNlcmlhbCBHYWRnZXQgKHdpdGggQ0RDIEFDTSBhbmQgQ0RDIE9CRVggc3VwcG9ydClcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjI5MzpcXHRkZXBlbmRzIG9uIFRUWVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0yOTQtXFx0c2VsZWN0IFVTQl9VX1NFUklBTFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTMxNj1jb25maWcgVVNCX01JRElfR0FER0VUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTMxNy1cXHR0cmlzdGF0ZSBcXFwiTUlESSBHYWRnZXRcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjMxODpcXHRkZXBlbmRzIG9uIFNORFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0zMTktXFx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0zNTE9Y29uZmlnIFVTQl9DRENfQ09NUE9TSVRFXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTM1Mi1cXHR0cmlzdGF0ZSBcXFwiQ0RDIENvbXBvc2l0ZSBEZXZpY2UgKEV0aGVybmV0IGFuZCBBQ00pXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzozNTM6XFx0ZGVwZW5kcyBvbiBORVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctMzU0LVxcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc9MzcwPWNvbmZpZyBVU0JfR19OT0tJQVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0zNzEtXFx0dHJpc3RhdGUgXFxcIk5va2lhIGNvbXBvc2l0ZSBnYWRnZXRcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjM3MjpcXHRkZXBlbmRzIG9uIFBIT05FVFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzozNzM6XFx0ZGVwZW5kcyBvbiBCTE9DS1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0zNzQtXFx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz0zODk9Y29uZmlnIFVTQl9HX0FDTV9NU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy0zOTAtXFx0dHJpc3RhdGUgXFxcIkNEQyBDb21wb3NpdGUgRGV2aWNlIChBQ00gYW5kIG1hc3Mgc3RvcmFnZSlcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjM5MTpcXHRkZXBlbmRzIG9uIEJMT0NLXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTM5Mi1cXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnPTQwMz1jb25maWcgVVNCX0dfTVVMVElcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNDA0LVxcdHRyaXN0YXRlIFxcXCJNdWx0aWZ1bmN0aW9uIENvbXBvc2l0ZSBHYWRnZXRcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjQwNTpcXHRkZXBlbmRzIG9uIEJMT0NLIFxcdTAwMjZcXHUwMDI2IE5FVFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy00MDYtXFx0c2VsZWN0IFVTQl9HX01VTFRJX0NEQyBpZiAhVVNCX0dfTVVMVElfUk5ESVNcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz00Mjc9Y29uZmlnIFVTQl9HX01VTFRJX1JORElTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTQyOC1cXHRib29sIFxcXCJSTkRJUyArIENEQyBTZXJpYWwgKyBTdG9yYWdlIGNvbmZpZ3VyYXRpb25cXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjQyOTpcXHRkZXBlbmRzIG9uIFVTQl9HX01VTFRJXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnLTQzMC1cXHRzZWxlY3QgVVNCX0ZfUk5ESVNcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz00NDA9Y29uZmlnIFVTQl9HX01VTFRJX0NEQ1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy00NDEtXFx0Ym9vbCBcXFwiQ0RDIEV0aGVybmV0ICsgQ0RDIFNlcmlhbCArIFN0b3JhZ2UgY29uZmlndXJhdGlvblxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWc6NDQyOlxcdGRlcGVuZHMgb24gVVNCX0dfTVVMVElcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNDQzLVxcdHNlbGVjdCBVU0JfRl9FQ01cXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz00Njg9Y29uZmlnIFVTQl9HX0RCR1BcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNDY5LVxcdHRyaXN0YXRlIFxcXCJFSENJIERlYnVnIERldmljZSBHYWRnZXRcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjQ3MDpcXHRkZXBlbmRzIG9uIFRUWVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy00NzEtXFx0c2VsZWN0IFVTQl9MSUJDT01QT1NJVEVcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz00ODQ9Y29uZmlnIFVTQl9HX0RCR1BfUFJJTlRLXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjQ4NTpcXHRkZXBlbmRzIG9uIFVTQl9HX0RCR1BcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNDg2LVxcdGJvb2wgXFxcInByaW50a1xcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz00OTA9Y29uZmlnIFVTQl9HX0RCR1BfU0VSSUFMXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9LY29uZmlnOjQ5MTpcXHRkZXBlbmRzIG9uIFVTQl9HX0RCR1BcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNDkyLVxcdHNlbGVjdCBVU0JfVV9TRVJJQUxcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZz01MDE9Y29uZmlnIFVTQl9HX1dFQkNBTVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZy01MDItXFx0dHJpc3RhdGUgXFxcIlVTQiBXZWJjYW0gR2FkZ2V0XFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvS2NvbmZpZzo1MDM6XFx0ZGVwZW5kcyBvbiBWSURFT19ERVZcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L0tjb25maWctNTA0LVxcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEwOjQwOjI4LjAzMDg0MDc3NloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTkxNTg1MjI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBVU0IgR2FkZ2V0IENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBVU0JfUkFXX0dBREdFVGAgb3B0aW9uLCBhbmQgaXQncyBpbnRlcmVzdGluZy4gRGlyZWN0bHksIGl0IGRvZXNuJ3Qgc2VlbSB0byBoYXZlIGFueSBleHBsaWNpdCBkZXBlbmRlbmNpZXMgZGVjbGFyZWQgaW4gdGhlIEtjb25maWcgZmlsZXMsIGJ1dCBpdCdzIG5lc3RlZCB3aXRoaW4gdGhlIGBtZW51Y29uZmlnIFVTQl9HQURHRVRgIGJsb2NrLiBUaGVyZWZvcmUsIGl0IGltcGxpY2l0bHkgKmRvZXMqIGRlcGVuZCBvbiBgVVNCX0dBREdFVGAuIFRoYXQgbWFrZXMgc2Vuc2U7IGl0J3MgYSBjaGlsZCBjb25maWd1cmF0aW9uIG9wdGlvbi5cblxuTm93LCBhIGZ1cnRoZXIgcXVlc3Rpb24gYXJpc2VzLiBEb2VzIGBVU0JfR0FER0VUYCBpdHNlbGYgcmVseSBvbiBhIGJyb2FkZXIgc3VwcG9ydCBmcmFtZXdvcmsgbGlrZSBgVVNCX1NVUFBPUlRgPyBUbyBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGl0cyBkZXBlbmRlbmNpZXMsIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGBkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZ2AgZmlsZS4gSSdsbCBuZWVkIHRvIGV4YW1pbmUgdGhhdCBmaWxlIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcHMgYW5kIHdoYXQgY29uZGl0aW9ucyBuZWVkIHRvIGJlIG1ldCBmb3IgdGhlc2Ugb3B0aW9ucyB0byBiZSBhdmFpbGFibGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwODU3LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTA6NDA6MzIuMjIyNDI5NTMzWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NjI1NDM0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTQ5PWNvbmZpZyBVU0JfR0FER0VUX0RFQlVHXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNTAtXFx0Ym9vbCBcXFwiRGVidWdnaW5nIG1lc3NhZ2VzIChERVZFTE9QTUVOVClcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NTE6XFx0ZGVwZW5kcyBvbiBERUJVR19LRVJORUxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy01Mi1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz02Mz1jb25maWcgVVNCX0dBREdFVF9WRVJCT1NFXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNjQtXFx0Ym9vbCBcXFwiVmVyYm9zZSBkZWJ1Z2dpbmcgTWVzc2FnZXMgKERFVkVMT1BNRU5UKVxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo2NTpcXHRkZXBlbmRzIG9uIFVTQl9HQURHRVRfREVCVUdcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy02Ni1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz03Nz1jb25maWcgVVNCX0dBREdFVF9ERUJVR19GSUxFU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTc4LVxcdGJvb2wgXFxcIkRlYnVnZ2luZyBpbmZvcm1hdGlvbiBmaWxlcyAoREVWRUxPUE1FTlQpXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjc5OlxcdGRlcGVuZHMgb24gUFJPQ19GU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTgwLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTg4PWNvbmZpZyBVU0JfR0FER0VUX0RFQlVHX0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctODktXFx0Ym9vbCBcXFwiRGVidWdnaW5nIGluZm9ybWF0aW9uIGZpbGVzIGluIGRlYnVnZnMgKERFVkVMT1BNRU5UKVxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo5MDpcXHRkZXBlbmRzIG9uIERFQlVHX0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctOTEtXFx0aGVscFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9MTMyPWNvbmZpZyBVX1NFUklBTF9DT05TT0xFXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTMzLVxcdGJvb2wgXFxcIlNlcmlhbCBnYWRnZXQgY29uc29sZSBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjEzNDpcXHRkZXBlbmRzIG9uIFVTQl9VX1NFUklBTFxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTEzNS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0xNDU9Y29uZmlnIFVTQl9MSUJDT01QT1NJVEVcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTE0Ny1cXHRzZWxlY3QgQ09ORklHRlNfRlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoxNDg6XFx0ZGVwZW5kcyBvbiBVU0JfR0FER0VUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTQ5LVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9MjQwPWNvbmZpZyBVU0JfQ09ORklHRlNfU0VSSUFMXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjQxLVxcdGJvb2wgXFxcIkdlbmVyaWMgc2VyaWFsIGJ1bGsgaW4vb3V0XFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI0MjpcXHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI0MzpcXHRkZXBlbmRzIG9uIFRUWVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI0NC1cXHRzZWxlY3QgVVNCX1VfU0VSSUFMXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0yNDk9Y29uZmlnIFVTQl9DT05GSUdGU19BQ01cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNTAtXFx0Ym9vbCBcXFwiQWJzdHJhY3QgQ29udHJvbCBNb2RlbCAoQ0RDIEFDTSlcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjUxOlxcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjUyOlxcdGRlcGVuZHMgb24gVFRZXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjUzLVxcdHNlbGVjdCBVU0JfVV9TRVJJQUxcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTI1OT1jb25maWcgVVNCX0NPTkZJR0ZTX09CRVhcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yNjAtXFx0Ym9vbCBcXFwiT2JqZWN0IEV4Y2hhbmdlIE1vZGVsIChDREMgT0JFWClcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjYxOlxcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MjYyOlxcdGRlcGVuZHMgb24gVFRZXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjYzLVxcdHNlbGVjdCBVU0JfVV9TRVJJQUxcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTI2OT1jb25maWcgVVNCX0NPTkZJR0ZTX05DTVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI3MC1cXHRib29sIFxcXCJOZXR3b3JrIENvbnRyb2wgTW9kZWwgKENEQyBOQ00pXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI3MTpcXHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjI3MjpcXHRkZXBlbmRzIG9uIE5FVFxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI3My1cXHRzZWxlY3QgVVNCX1VfRVRIRVJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTI4MT1jb25maWcgVVNCX0NPTkZJR0ZTX0VDTVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTI4Mi1cXHRib29sIFxcXCJFdGhlcm5ldCBDb250cm9sIE1vZGVsIChDREMgRUNNKVxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyODM6XFx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyODQ6XFx0ZGVwZW5kcyBvbiBORVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yODUtXFx0c2VsZWN0IFVTQl9VX0VUSEVSXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0yOTM9Y29uZmlnIFVTQl9DT05GSUdGU19FQ01fU1VCU0VUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMjk0LVxcdGJvb2wgXFxcIkV0aGVybmV0IENvbnRyb2wgTW9kZWwgKENEQyBFQ00pIHN1YnNldFxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyOTU6XFx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzoyOTY6XFx0ZGVwZW5kcyBvbiBORVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0yOTctXFx0c2VsZWN0IFVTQl9VX0VUSEVSXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0zMDM9Y29uZmlnIFVTQl9DT05GSUdGU19STkRJU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMwNC1cXHRib29sIFxcXCJSTkRJU1xcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozMDU6XFx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozMDY6XFx0ZGVwZW5kcyBvbiBORVRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMDctXFx0c2VsZWN0IFVTQl9VX0VUSEVSXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0zMTk9Y29uZmlnIFVTQl9DT05GSUdGU19FRU1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zMjAtXFx0Ym9vbCBcXFwiRXRoZXJuZXQgRW11bGF0aW9uIE1vZGVsIChFRU0pXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjMyMTpcXHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjMyMjpcXHRkZXBlbmRzIG9uIE5FVFxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMyMy1cXHRzZWxlY3QgVVNCX1VfRVRIRVJcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnPTMzNT1jb25maWcgVVNCX0NPTkZJR0ZTX1BIT05FVFxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTMzNi1cXHRib29sIFxcXCJQaG9uZXQgcHJvdG9jb2xcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzM3OlxcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzM4OlxcdGRlcGVuZHMgb24gTkVUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzM5OlxcdGRlcGVuZHMgb24gUEhPTkVUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzQwLVxcdHNlbGVjdCBVU0JfVV9FVEhFUlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9MzQ1PWNvbmZpZyBVU0JfQ09ORklHRlNfTUFTU19TVE9SQUdFXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzQ2LVxcdGJvb2wgXFxcIk1hc3Mgc3RvcmFnZVxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNDc6XFx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNDg6XFx0ZGVwZW5kcyBvbiBCTE9DS1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM0OS1cXHRzZWxlY3QgVVNCX0ZfTUFTU19TVE9SQUdFXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0zNTY9Y29uZmlnIFVTQl9DT05GSUdGU19GX0xCX1NTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzU3LVxcdGJvb2wgXFxcIkxvb3BiYWNrIGFuZCBzb3VyY2VzaW5rIGZ1bmN0aW9uIChmb3IgdGVzdGluZylcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MzU4OlxcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMzU5LVxcdHNlbGVjdCBVU0JfRl9TU19MQlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9MzY5PWNvbmZpZyBVU0JfQ09ORklHRlNfRl9GU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM3MC1cXHRib29sIFxcXCJGdW5jdGlvbiBmaWxlc3lzdGVtIChGdW5jdGlvbkZTKVxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzozNzE6XFx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zNzItXFx0c2VsZWN0IFVTQl9GX0ZTXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz0zODE9Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzFcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy0zODItXFx0Ym9vbCBcXFwiQXVkaW8gQ2xhc3MgMS4wXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM4MzpcXHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjM4NDpcXHRkZXBlbmRzIG9uIFNORFxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTM4NS1cXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9Mzk5PWNvbmZpZyBVU0JfQ09ORklHRlNfRl9VQUMxX0xFR0FDWVxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQwMC1cXHRib29sIFxcXCJBdWRpbyBDbGFzcyAxLjAgKGxlZ2FjeSBpbXBsZW1lbnRhdGlvbilcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDAxOlxcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDAyOlxcdGRlcGVuZHMgb24gU05EXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDAzLVxcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz00MTI9Y29uZmlnIFVTQl9DT05GSUdGU19GX1VBQzJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00MTMtXFx0Ym9vbCBcXFwiQXVkaW8gQ2xhc3MgMi4wXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQxNDpcXHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQxNTpcXHRkZXBlbmRzIG9uIFNORFxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQxNi1cXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDMxPWNvbmZpZyBVU0JfQ09ORklHRlNfRl9NSURJXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDMyLVxcdGJvb2wgXFxcIk1JREkgZnVuY3Rpb25cXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDMzOlxcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDM0OlxcdGRlcGVuZHMgb24gU05EXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDM1LVxcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz00NDU9Y29uZmlnIFVTQl9DT05GSUdGU19GX01JREkyXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDQ2LVxcdGJvb2wgXFxcIk1JREkgMi4wIGZ1bmN0aW9uXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ0NzpcXHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ0ODpcXHRkZXBlbmRzIG9uIFNORFxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ0OS1cXHRzZWxlY3QgVVNCX0xJQkNPTVBPU0lURVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDU4PWNvbmZpZyBVU0JfQ09ORklHRlNfRl9ISURcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00NTktXFx0Ym9vbCBcXFwiSElEIGZ1bmN0aW9uXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ2MDpcXHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2MS1cXHRzZWxlY3QgVVNCX0ZfSElEXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZz00Njg9Y29uZmlnIFVTQl9DT05GSUdGU19GX1VWQ1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ2OS1cXHRib29sIFxcXCJVU0IgV2ViY2FtIGZ1bmN0aW9uXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ3MDpcXHRkZXBlbmRzIG9uIFVTQl9DT05GSUdGU1xcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ3MTpcXHRkZXBlbmRzIG9uIFZJREVPX0RFVlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ3MjpcXHRkZXBlbmRzIG9uIFZJREVPX0RFVlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnLTQ3My1cXHRzZWxlY3QgVklERU9CVUYyX0RNQV9TR1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDgxPWNvbmZpZyBVU0JfQ09ORklHRlNfRl9QUklOVEVSXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00ODMtXFx0c2VsZWN0IFVTQl9GX1BSSU5URVJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZzo0ODQ6XFx0ZGVwZW5kcyBvbiBVU0JfQ09ORklHRlNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00ODUtXFx0aGVscFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc9NDk1PWNvbmZpZyBVU0JfQ09ORklHRlNfRl9UQ01cXG5kcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZy00OTYtXFx0Ym9vbCBcXFwiVVNCIEdhZGdldCBUYXJnZXQgRmFicmljXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC9LY29uZmlnOjQ5NzpcXHRkZXBlbmRzIG9uIFRBUkdFVF9DT1JFXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6NDk4OlxcdGRlcGVuZHMgb24gVVNCX0NPTkZJR0ZTXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctNDk5LVxcdHNlbGVjdCBVU0JfTElCQ09NUE9TSVRFXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEwOjQwOjMyLjMxODY5MDQzMVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjYyNDk2NzE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEaXZpbmcgaW50byBVU0IgR2FkZ2V0IERyaXZlcnMqKlxuXG5SaWdodCwgc28gd2UncmUgdGFsa2luZyBhYm91dCBgVVNCX0dBREdFVGAsIHRoZSBjb3JlIG1vZHVsZSBmb3IgVVNCIGRldmljZSBlbXVsYXRpb24uIE15IGZpcnN0IHRob3VnaHQgaXMgYWx3YXlzIHRvIHBpbnBvaW50IGl0cyBkZXBlbmRlbmNpZXMuIEl0J3MgYWxtb3N0IGF4aW9tYXRpYyBpbiB0aGlzIGFyZWEuIGBVU0JfR0FER0VUYCAqaGFzKiB0byByZWx5IG9uIHNvbWV0aGluZyBmdW5kYW1lbnRhbCB3aXRoaW4gdGhlIFVTQiBzdWJzeXN0ZW0gaXRzZWxmLiBXZSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCB0aG9zZSBhcmUgdG8gcmVhbGx5IHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiB0d2Vha2luZyB0aGlzLiBXaGF0J3MgdXBzdHJlYW0gb2YgaXQ/IFBvd2VyIG1hbmFnZW1lbnQ/IFRoZSBjb3JlIFVTQiBjb250cm9sbGVyIGRyaXZlciBtb2RlbD8gVGhlIHNwZWNpZmljIGhhcmR3YXJlIHBsYXRmb3JtPyBHZXR0aW5nIGF0IHRob3NlIHJlbGF0aW9uc2hpcHMgaXMga2V5IHRvIGtub3dpbmcgd2hlcmUgcGVyZm9ybWFuY2UgYm90dGxlbmVja3Mgb3IgY29tcGF0aWJpbGl0eSBpc3N1ZXMgbWlnaHQgY3JvcCB1cC4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIGFueSBpbi1kZXB0aCBleHBsb3JhdGlvbiBvciBtb2RpZmljYXRpb24gb2YgYSBnYWRnZXQgZHJpdmVyLiBJdCdzIG5ldmVyIGp1c3QgYSBzdGFuZGFsb25lIG1vZHVsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQwMzYsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMDo0MDozNy45ODExOTIwMjlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNTU3MzYxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZW51Y29uZmlnIFVTQl9HQURHRVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTYtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWc6MTc6bWVudWNvbmZpZyBVU0JfR0FER0VUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWctMTgtXFx0dHJpc3RhdGUgXFxcIlVTQiBHYWRnZXQgU3VwcG9ydFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTA6NDA6MzguMDg2Nzc1NDA3WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5NzMxMDU5OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGRpdmUgaW50byB0aGlzIEtjb25maWcgZmlsZSBmb3IgVVNCIGdhZGdldCBkcml2ZXJzLlxuXG4qKkRlZXAgRGl2ZSBpbnRvIFVTQiBHYWRnZXQgRHJpdmVyIENvbmZpZ3VyYXRpb24qKlxuXG5BbHJpZ2h0LCBJJ20gc3RhcnRpbmcgYnkgdGFraW5nIGEgbG9vayBhdCB0aGUgZmlyc3QgMjAgbGluZXMgb2YgdGhlIGBkcml2ZXJzL3VzYi9nYWRnZXQvS2NvbmZpZ2AgZmlsZS4gR2l2ZW4gbXkgZXhwZXJ0aXNlLCBJJ20gZXhwZWN0aW5nIHRoaXMgdG8gbGF5IG91dCB0aGUgZnVuZGFtZW50YWwgb3B0aW9ucyBmb3IgY29uZmlndXJpbmcgVVNCIGdhZGdldCBmdW5jdGlvbmFsaXR5IHdpdGhpbiB0aGUga2VybmVsLiBJIGFudGljaXBhdGUgc2VlaW5nIHRoZSBtYWluIGZlYXR1cmUgc3dpdGNoZXMsIHBvc3NpYmx5IHRoZSB0b3AtbGV2ZWwgc2VsZWN0aW9uIGZvciB3aGV0aGVyIGFueSBnYWRnZXQgc3VwcG9ydCBpcyBidWlsdCBhdCBhbGwuIEknbGwgYmUgbG9va2luZyBmb3IgYW55IGRlZmF1bHQgdmFsdWVzIGFzc2lnbmVkLCBhbmQgaWYgdGhlcmUncyBhbnkgaGludCBvZiBvcmdhbml6YXRpb24sIG1heWJlIHNlY3Rpb25zIGZvciBzcGVjaWZpYyBnYWRnZXQgdHlwZXMuIEknbGwgYmUgbm90aW5nIGFueSBjcm9zcy1kZXBlbmRlbmNpZXMgb24gb3RoZXIga2VybmVsIHN1YnN5c3RlbXPigJRlLmcuLCBpZiB0aGVyZSdzIGFuIGltbWVkaWF0ZSBkZXBlbmRlbmN5IG9uIFVTQiBjb3JlIG9yIHNvbWV0aGluZyBlbHNlLiBJJ20ga2VlcGluZyBhbiBleWUgb3V0IGZvciBhbnkgY29tbWVudHMsIGVzcGVjaWFsbHkgaWYgdGhleSBleHBsYWluIHRoZSBwdXJwb3NlIG9mIGEgcGFydGljdWxhciBvcHRpb24gaW4gcmVsYXRpb24gdG8gdGhlIGZ1bmN0aW9uYWxpdHkgaXQgZW5hYmxlcy4gVGhlIHVsdGltYXRlIGdvYWwgaGVyZSBpcyB0byBnZXQgYSBoYW5kbGUgb24gdGhlIG92ZXJhbGwgc3RydWN0dXJlIGFuZCBkZXNpZ24gb2YgdGhlIGdhZGdldCBkcml2ZXIgY29uZmlndXJhdGlvbiBzbyBJIGNhbiB1bmRlcnN0YW5kIGhvdyBiZXN0IHRvIGFwcHJvYWNoIGl0cyBjdXN0b21pemF0aW9uIG9yIHBvdGVudGlhbCBleHRlbnNpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDMzOSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEwOjQwOjQyLjA1OTg4NDcwOVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTY3ODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIFVTQiBHYWRnZXQgc3VwcG9ydCBvbiBhIHN5c3RlbSBpbnZvbHZlc1xcbiAgIDQ6XFx0IyAgICAoYSkgYSBwZXJpcGhlcmFsIGNvbnRyb2xsZXIsIGFuZFxcbiAgIDU6XFx0IyAgICAoYikgdGhlIGdhZGdldCBkcml2ZXIgdXNpbmcgaXQuXFxuICAgNjpcXHQjXFxuICAgNzpcXHQjIE5PVEU6ICBHYWRnZXQgc3VwcG9ydCAqKiBET0VTIE5PVCAqKiBkZXBlbmQgb24gaG9zdC1zaWRlIENPTkZJR19VU0IgISFcXG4gICA4OlxcdCNcXG4gICA5OlxcdCMgIC0gSG9zdCBzeXN0ZW1zIChsaWtlIFBDcykgbmVlZCBDT05GSUdfVVNCICh3aXRoIFxcXCJBXFxcIiBqYWNrcykuXFxuICAxMDpcXHQjICAtIFBlcmlwaGVyYWxzIChsaWtlIFBEQXMpIG5lZWQgQ09ORklHX1VTQl9HQURHRVQgKHdpdGggXFxcIkJcXFwiIGphY2tzKS5cXG4gIDExOlxcdCMgIC0gU29tZSBzeXN0ZW1zIGhhdmUgYm90aCBraW5kcyBvZiBjb250cm9sbGVycy5cXG4gIDEyOlxcdCNcXG4gIDEzOlxcdCMgV2l0aCBoZWxwIGZyb20gYSBzcGVjaWFsIHRyYW5zY2VpdmVyIGFuZCBhIFxcXCJNaW5pLUFCXFxcIiBqYWNrLCBzeXN0ZW1zIHdpdGhcXG4gIDE0OlxcdCMgYm90aCBraW5kcyBvZiBjb250cm9sbGVyIGNhbiBhbHNvIHN1cHBvcnQgXFxcIlVTQiBPbi10aGUtR29cXFwiIChDT05GSUdfVVNCX09URykuXFxuICAxNTpcXHQjXFxuICAxNjpcXHRcXG4gIDE3OlxcdG1lbnVjb25maWcgVVNCX0dBREdFVFxcbiAgMTg6XFx0XFx0dHJpc3RhdGUgXFxcIlVTQiBHYWRnZXQgU3VwcG9ydFxcXCJcXG4gIDE5OlxcdFxcdHNlbGVjdCBVU0JfQ09NTU9OXFxuICAyMDpcXHRcXHRzZWxlY3QgTkxTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEwOjQwOjQyLjA2MDA0MzUxOFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5NTc3MDY5MzMxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVVNCIFJhdyBHYWRnZXQgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgVVNCX0dBREdFVGAgY29uZmlndXJhdGlvbiwgYW5kIGl0IGRvZXNuJ3QgaGF2ZSBhbnkgZXhwbGljaXQgZGVwZW5kZW5jaWVzLCBqdXN0IHNlbGVjdHMgYFVTQl9DT01NT05gIGFuZCBgTkxTYC4gU2VlbXMgc3RyYWlnaHRmb3J3YXJkIGVub3VnaC4gVGhlIGNvbmZpZ3Mgd2UgYXJlIGludGVyZXN0ZWQgaW4gYXJlIGBVU0JfUkFXX0dBREdFVGAgYW5kIGBVU0JfR0FER0VUYCwgYXMgd2VsbCBhcyBgVVNCX0RVTU1ZX0hDRGAsIHdoaWNoIHN5emthbGxlciB1c2VzIGZvciBVU0IgY29udHJvbGxlciBlbXVsYXRpb24uIEhvd2V2ZXIsIGZvciB0aGUgYFVTQl9SQVdfR0FER0VUYCBmdW5jdGlvbmFsaXR5LCB0aGUgY29uZmlnIGl0c2VsZiBpcyBzdWZmaWNpZW50LlxuXG5MZXQncyBkaXZlIGludG8gdGhlIGNvZGUuIFRoZSBwYXRjaCB0b3VjaGVzIHNldmVyYWwga2V5IGZ1bmN0aW9ucyBpbiBgZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmNgOiBgZGV2X2ZyZWVgLCBgZ2FkZ2V0X2JpbmRgLCBgZ2FkZ2V0X3VuYmluZGAsIGByYXdfaW9jdGxfZXZlbnRfZmV0Y2hgLCBgcmF3X3Byb2Nlc3NfZXAwX2lvYCwgYHJhd19pb2N0bF9lcF9kaXNhYmxlYCwgYW5kIGByYXdfcHJvY2Vzc19lcF9pb2AuIFRoZXNlIGFyZSBhbGwgaW50ZWdyYWwgcGFydHMgb2YgdGhlIFVTQiBSYXcgR2FkZ2V0IGRyaXZlciBpbXBsZW1lbnRhdGlvbi5cblxuRnJvbSB0aGUgZGVzY3JpcHRpb24sIHRoaXMgcGF0Y2ggaXMgYWRkcmVzc2luZyBhIHJhY2UgY29uZGl0aW9uLiBJdCBzb3VuZHMgbGlrZSB0aGUgVURDIChVU0IgRGV2aWNlIENvbnRyb2xsZXIpIHVuYmluZCBjb3VsZCBoYXBwZW4gY29uY3VycmVudGx5IHdpdGggYW4gRVAwIG9yIEVQIElPIG9wZXJhdGlvbiwgcG90ZW50aWFsbHkgbGVhZGluZyB0byB1c2UtYWZ0ZXItZnJlZSBvciBvdGhlciBtZW1vcnkgY29ycnVwdGlvbiBpc3N1ZXMuIFRoZSBmaXggaW52b2x2ZXMgYWRkaW5nIGEgYHVkY191c2FnZWAgY291bnRlciBhbmQgYW4gYHVuYmluZF9jb21wbGV0aW9uYCBtZWNoYW5pc20uIFNtYXJ0IVxuXG5JcyB0aGlzIHBhdGNoIGZ1enotd29ydGh5PyBBYnNvbHV0ZWx5ISBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIGEgY29yZSBkcml2ZXIsIGFuZCwgaW1wb3J0YW50bHksIHN5emthbGxlciB1dGlsaXplcyB0aGlzIGRyaXZlci4gTm93LCBzeXprYWxsZXIgbGV2ZXJhZ2VzIHRoaXMgZHJpdmVyIHRvIGZ1enogKm90aGVyKiBVU0IgZHJpdmVycy4gSG93ZXZlciwgdGhpcyBzcGVjaWZpYyBwYXRjaCBmaXhlcyBhIGJ1ZyB3aXRoaW4gYHJhd19nYWRnZXQuY2AgaXRzZWxmLiBTeXprYWxsZXIgYWxzbyBkaXJlY3RseSBmdXp6ZXogdGhpcyBkcml2ZXIsIHdpdGggZGVzY3JpcHRpb25zIGZvciBgL2Rldi9yYXctZ2FkZ2V0YC4gU28sIGl0J3MgZGVmaW5pdGVseSB3b3J0aCB0aGUgZWZmb3J0LlxuXG5MZXQncyBwaW5wb2ludCB0aG9zZSBmb2N1cyBzeW1ib2xzIGZvciBmdXp6aW5nLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb25zIGFyZTogYGdhZGdldF9iaW5kYCwgYGdhZGdldF91bmJpbmRgLCBgcmF3X2lvY3RsX2V2ZW50X2ZldGNoYCwgYHJhd19wcm9jZXNzX2VwMF9pb2AsIGByYXdfaW9jdGxfZXBfZGlzYWJsZWAsIGFuZCBgcmF3X3Byb2Nlc3NfZXBfaW9gLlxuXG5Ob3csIHdhaXQgYSBtaW51dGUuLi4gYGdhZGdldF9iaW5kYCBhbmQgYGdhZGdldF91bmJpbmRgIGFyZSAqc3RhdGljKiBmdW5jdGlvbnMsIGFjdGluZyBhcyBjYWxsYmFja3MgaW4gYHN0cnVjdCB1c2JfZ2FkZ2V0X2RyaXZlcmAuIFRoZSBvdGhlciBmb3VyLCBgcmF3X2lvY3RsX2V2ZW50X2ZldGNoYCwgYHJhd19wcm9jZXNzX2VwMF9pb2AsIGByYXdfaW9jdGxfZXBfZGlzYWJsZWAsIGFuZCBgcmF3X3Byb2Nlc3NfZXBfaW9gLCBhcmUgc3RhdGljIGZ1bmN0aW9ucyBjYWxsZWQgZnJvbSBgcmF3X2lvY3RsYC4gU28sIGxldCdzIHR1cm4gb3VyIGF0dGVudGlvbiB0byBgcmF3X2lvY3RsYCBuZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDkzOCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUxOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEwOjQwOjUxLjYzNzExNzgzOVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMxNTI2MzI4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJhd19pb2N0bFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYz00Nzg9c3RhdGljIGludCByYXdfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmQpXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy01MDEtXFx0XFx0XFx0XFx0cmV0KTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzo1MDI6XFx0XFx0LyogTWF0Y2hlcyBrcmVmX2dldCgpIGluIHJhd19pb2N0bF9ydW4oKS4gKi9cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy01MDMtXFx0XFx0a3JlZl9wdXQoXFx1MDAyNmRldi1cXHUwMDNlY291bnQsIGRldl9mcmVlKTtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTUxMy1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzo1MTQ6c3RhdGljIGludCByYXdfaW9jdGxfaW5pdChzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTUxNS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy02MTItXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6NjEzOnN0YXRpYyBpbnQgcmF3X2lvY3RsX3J1bihzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTYxNC17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy02NDgtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6NjQ5OnN0YXRpYyBpbnQgcmF3X2lvY3RsX2V2ZW50X2ZldGNoKHN0cnVjdCByYXdfZGV2ICpkZXYsIHVuc2lnbmVkIGxvbmcgdmFsdWUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtNjUwLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jPTcxNz1zdGF0aWMgaW50IHJhd19wcm9jZXNzX2VwMF9pbyhzdHJ1Y3QgcmF3X2RldiAqZGV2LCBzdHJ1Y3QgdXNiX3Jhd19lcF9pbyAqaW8sXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy04MDktXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6ODEwOnN0YXRpYyBpbnQgcmF3X2lvY3RsX2VwMF93cml0ZShzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTgxMS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy04MjMtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6ODI0OnN0YXRpYyBpbnQgcmF3X2lvY3RsX2VwMF9yZWFkKHN0cnVjdCByYXdfZGV2ICpkZXYsIHVuc2lnbmVkIGxvbmcgdmFsdWUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtODI1LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTg0Ny1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzo4NDg6c3RhdGljIGludCByYXdfaW9jdGxfZXAwX3N0YWxsKHN0cnVjdCByYXdfZGV2ICpkZXYsIHVuc2lnbmVkIGxvbmcgdmFsdWUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtODQ5LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTg5MS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzo4OTI6c3RhdGljIGludCByYXdfaW9jdGxfZXBfZW5hYmxlKHN0cnVjdCByYXdfZGV2ICpkZXYsIHVuc2lnbmVkIGxvbmcgdmFsdWUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtODkzLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTk3MS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzo5NzI6c3RhdGljIGludCByYXdfaW9jdGxfZXBfZGlzYWJsZShzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTk3My17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMDI5LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjEwMzA6c3RhdGljIGludCByYXdfaW9jdGxfZXBfc2V0X2NsZWFyX2hhbHRfd2VkZ2Uoc3RydWN0IHJhd19kZXYgKmRldixcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMDMxLVxcdFxcdHVuc2lnbmVkIGxvbmcgdmFsdWUsIGJvb2wgc2V0LCBib29sIGhhbHQpXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYz0xMTE0PXN0YXRpYyBpbnQgcmF3X3Byb2Nlc3NfZXBfaW8oc3RydWN0IHJhd19kZXYgKmRldiwgc3RydWN0IHVzYl9yYXdfZXBfaW8gKmlvLFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTIxNy1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxMjE4OnN0YXRpYyBpbnQgcmF3X2lvY3RsX2VwX3dyaXRlKHN0cnVjdCByYXdfZGV2ICpkZXYsIHVuc2lnbmVkIGxvbmcgdmFsdWUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTIxOS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMjMxLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjEyMzI6c3RhdGljIGludCByYXdfaW9jdGxfZXBfcmVhZChzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEyMzMte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTI1NS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxMjU2OnN0YXRpYyBpbnQgcmF3X2lvY3RsX2NvbmZpZ3VyZShzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEyNTcte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTI4MC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxMjgxOnN0YXRpYyBpbnQgcmF3X2lvY3RsX3ZidXNfZHJhdyhzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEyODIte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM9MTMxNT1zdGF0aWMgdm9pZCBmaWxsX2VwX2xpbWl0cyhzdHJ1Y3QgdXNiX2VwICplcCwgc3RydWN0IHVzYl9yYXdfZXBfbGltaXRzICpsaW1pdHMpXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMzIwLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjEzMjE6c3RhdGljIGludCByYXdfaW9jdGxfZXBzX2luZm8oc3RydWN0IHJhd19kZXYgKmRldiwgdW5zaWduZWQgbG9uZyB2YWx1ZSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMzIyLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEzNjctXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6MTM2ODpzdGF0aWMgbG9uZyByYXdfaW9jdGwoc3RydWN0IGZpbGUgKmZkLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIHZhbHVlKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEzNjkte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTM3Ny1cXHRjYXNlIFVTQl9SQVdfSU9DVExfSU5JVDpcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxMzc4OlxcdFxcdHJldCA9IHJhd19pb2N0bF9pbml0KGRldiwgdmFsdWUpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEzNzktXFx0XFx0YnJlYWs7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTM4MC1cXHRjYXNlIFVTQl9SQVdfSU9DVExfUlVOOlxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjEzODE6XFx0XFx0cmV0ID0gcmF3X2lvY3RsX3J1bihkZXYsIHZhbHVlKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMzgyLVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEzODMtXFx0Y2FzZSBVU0JfUkFXX0lPQ1RMX0VWRU5UX0ZFVENIOlxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjEzODQ6XFx0XFx0cmV0ID0gcmF3X2lvY3RsX2V2ZW50X2ZldGNoKGRldiwgdmFsdWUpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEzODUtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTM4Ni1cXHRjYXNlIFVTQl9SQVdfSU9DVExfRVAwX1dSSVRFOlxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjEzODc6XFx0XFx0cmV0ID0gcmF3X2lvY3RsX2VwMF93cml0ZShkZXYsIHZhbHVlKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMzg4LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEzODktXFx0Y2FzZSBVU0JfUkFXX0lPQ1RMX0VQMF9SRUFEOlxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjEzOTA6XFx0XFx0cmV0ID0gcmF3X2lvY3RsX2VwMF9yZWFkKGRldiwgdmFsdWUpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEzOTEtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTM5Mi1cXHRjYXNlIFVTQl9SQVdfSU9DVExfRVBfRU5BQkxFOlxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjEzOTM6XFx0XFx0cmV0ID0gcmF3X2lvY3RsX2VwX2VuYWJsZShkZXYsIHZhbHVlKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMzk0LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEzOTUtXFx0Y2FzZSBVU0JfUkFXX0lPQ1RMX0VQX0RJU0FCTEU6XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6MTM5NjpcXHRcXHRyZXQgPSByYXdfaW9jdGxfZXBfZGlzYWJsZShkZXYsIHZhbHVlKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMzk3LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEzOTgtXFx0Y2FzZSBVU0JfUkFXX0lPQ1RMX0VQX1dSSVRFOlxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjEzOTk6XFx0XFx0cmV0ID0gcmF3X2lvY3RsX2VwX3dyaXRlKGRldiwgdmFsdWUpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTE0MDAtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTQwMS1cXHRjYXNlIFVTQl9SQVdfSU9DVExfRVBfUkVBRDpcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxNDAyOlxcdFxcdHJldCA9IHJhd19pb2N0bF9lcF9yZWFkKGRldiwgdmFsdWUpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTE0MDMtXFx0XFx0YnJlYWs7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTQwNC1cXHRjYXNlIFVTQl9SQVdfSU9DVExfQ09ORklHVVJFOlxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjE0MDU6XFx0XFx0cmV0ID0gcmF3X2lvY3RsX2NvbmZpZ3VyZShkZXYsIHZhbHVlKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xNDA2LVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTE0MDctXFx0Y2FzZSBVU0JfUkFXX0lPQ1RMX1ZCVVNfRFJBVzpcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxNDA4OlxcdFxcdHJldCA9IHJhd19pb2N0bF92YnVzX2RyYXcoZGV2LCB2YWx1ZSk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTQwOS1cXHRcXHRicmVhaztcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xNDEwLVxcdGNhc2UgVVNCX1JBV19JT0NUTF9FUFNfSU5GTzpcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxNDExOlxcdFxcdHJldCA9IHJhd19pb2N0bF9lcHNfaW5mbyhkZXYsIHZhbHVlKTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xNDEyLVxcdFxcdGJyZWFrO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTE0MTMtXFx0Y2FzZSBVU0JfUkFXX0lPQ1RMX0VQMF9TVEFMTDpcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxNDE0OlxcdFxcdHJldCA9IHJhd19pb2N0bF9lcDBfc3RhbGwoZGV2LCB2YWx1ZSk7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTQxNS1cXHRcXHRicmVhaztcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xNDE2LVxcdGNhc2UgVVNCX1JBV19JT0NUTF9FUF9TRVRfSEFMVDpcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxNDE3OlxcdFxcdHJldCA9IHJhd19pb2N0bF9lcF9zZXRfY2xlYXJfaGFsdF93ZWRnZShcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xNDE4LVxcdFxcdFxcdFxcdFxcdGRldiwgdmFsdWUsIHRydWUsIHRydWUpO1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTQyMC1cXHRjYXNlIFVTQl9SQVdfSU9DVExfRVBfQ0xFQVJfSEFMVDpcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxNDIxOlxcdFxcdHJldCA9IHJhd19pb2N0bF9lcF9zZXRfY2xlYXJfaGFsdF93ZWRnZShcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xNDIyLVxcdFxcdFxcdFxcdFxcdGRldiwgdmFsdWUsIGZhbHNlLCB0cnVlKTtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTE0MjQtXFx0Y2FzZSBVU0JfUkFXX0lPQ1RMX0VQX1NFVF9XRURHRTpcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxNDI1OlxcdFxcdHJldCA9IHJhd19pb2N0bF9lcF9zZXRfY2xlYXJfaGFsdF93ZWRnZShcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xNDI2LVxcdFxcdFxcdFxcdFxcdGRldiwgdmFsdWUsIHRydWUsIGZhbHNlKTtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jPTE0Mzc9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgcmF3X2ZvcHMgPSB7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTQzOC1cXHQub3BlbiA9XFx0XFx0XFx0cmF3X29wZW4sXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6MTQzOTpcXHQudW5sb2NrZWRfaW9jdGwgPVxcdHJhd19pb2N0bCxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxNDQwOlxcdC5jb21wYXRfaW9jdGwgPVxcdFxcdHJhd19pb2N0bCxcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xNDQxLVxcdC5yZWxlYXNlID1cXHRcXHRyYXdfcmVsZWFzZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTA6NDA6NTEuNzY4NjUwNjM3WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc1MzQ1NjQ4NjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBVU0IgR2FkZ2V0IGlvY3RsIFN0cnVjdHVyZSoqXG5cbk9rYXksIHNvIEknbSBkaXZpbmcgaW50byB0aGlzIGByYXdfaW9jdGxgIGZ1bmN0aW9uLCBhbmQgaXQncyBsb29raW5nIGxpa2UgdGhlIGNlbnRyYWwgdXNlci1zcGFjZSBlbnRyeSBwb2ludCBmb3IgdGhlIGdhZGdldCBkcml2ZXIuIEkgc2VlIHRoYXQgaXQncyBjYWxsaW5nIGEgZmV3IHN0YXRpYyBmdW5jdGlvbnMgaW50ZXJuYWxseTogYHJhd19pb2N0bF9ldmVudF9mZXRjaGAsIGByYXdfcHJvY2Vzc19lcDBfaW9gLCBgcmF3X2lvY3RsX2VwX2Rpc2FibGVgLCBhbmQgYHJhd19wcm9jZXNzX2VwX2lvYC4gSW50ZXJlc3RpbmcuIEl0IGxvb2tzIGxpa2UgYHJhd19wcm9jZXNzX2VwMF9pb2AgaGFuZGxlcyBlbmRwb2ludCAwIEkvTyBvcGVyYXRpb25zIGFuZCB0aGF0IGl0IGlzIGFsc28gY2FsbGVkIGJ5IGByYXdfaW9jdGxfZXAwX3dyaXRlYCBhbmQgYHJhd19pb2N0bF9lcDBfcmVhZGAuIFNpbWlsYXJseSwgYHJhd19wcm9jZXNzX2VwX2lvYCBpcyB0aGUgd29ya2hvcnNlIGZvciBvdGhlciBlbmRwb2ludHMsIGFjY2Vzc2VkIHZpYSBgcmF3X2lvY3RsX2VwX3dyaXRlYCBhbmQgYHJhd19pb2N0bF9lcF9yZWFkYC5cblxuU28sIHRoZSBrZXkgZnVuY3Rpb25zIHRvIHJlYWxseSB1bmRlcnN0YW5kIGFyZSBgcmF3X2lvY3RsYCBpdHNlbGYsIGFuZCB0aGVuIHRoZXNlIGVuZHBvaW50IHByb2Nlc3NpbmcgZnVuY3Rpb25zLiBJJ2QgYXNzdW1lZCBgcmF3X2lvY3RsYCB3b3VsZCBiZSBub24tc3RhdGljLCBidXQgaXQgbG9va3MgbGlrZSBpdCdzICphbHNvKiBzdGF0aWMuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBhbSBub3QgbWlzc2luZyBhbnkgbm9uLXN0YXRpYyBlbnRyeSBwb2ludHMsIHNvIGxldCdzIHN0YXJ0IGNoZWNraW5nIGByYXdfZ2FkZ2V0LmNgIGZvciBhbnkgbm9uLXN0YXRpYyBmdW5jdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE5NDM2LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjExLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEwOjQwOjU5LjMwMzIyMDE0OFoiLCJTZXEiOjI0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc3Nzg3MTU2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl5zdGF0aWNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM9Mzc9TU9EVUxFX0xJQ0VOU0UoXFxcIkdQTFxcXCIpO1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtNDAtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6NDE6c3RhdGljIERFRklORV9JREEoZHJpdmVyX2lkX251bWJlcnMpO1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTQyLSNkZWZpbmUgRFJJVkVSX0RSSVZFUl9OQU1FX0xFTkdUSF9NQVhcXHQzMlxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM9NDc9c3RydWN0IHJhd19ldmVudF9xdWV1ZSB7XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy01NC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzo1NTpzdGF0aWMgdm9pZCByYXdfZXZlbnRfcXVldWVfaW5pdChzdHJ1Y3QgcmF3X2V2ZW50X3F1ZXVlICpxdWV1ZSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy01Ni17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy02MS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzo2MjpzdGF0aWMgaW50IHJhd19ldmVudF9xdWV1ZV9hZGQoc3RydWN0IHJhd19ldmVudF9xdWV1ZSAqcXVldWUsXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtNjMtXFx0ZW51bSB1c2JfcmF3X2V2ZW50X3R5cGUgdHlwZSwgc2l6ZV90IGxlbmd0aCwgY29uc3Qgdm9pZCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTg4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjg5OnN0YXRpYyBzdHJ1Y3QgdXNiX3Jhd19ldmVudCAqcmF3X2V2ZW50X3F1ZXVlX2ZldGNoKFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTkwLVxcdFxcdFxcdFxcdHN0cnVjdCByYXdfZXZlbnRfcXVldWUgKnF1ZXVlKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTIwLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjEyMTpzdGF0aWMgdm9pZCByYXdfZXZlbnRfcXVldWVfZGVzdHJveShzdHJ1Y3QgcmF3X2V2ZW50X3F1ZXVlICpxdWV1ZSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMjIte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM9MTYwPXN0cnVjdCByYXdfZGV2IHtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTE5MC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxOTE6c3RhdGljIHN0cnVjdCByYXdfZGV2ICpkZXZfbmV3KHZvaWQpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTkyLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTIwNi1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoyMDc6c3RhdGljIHZvaWQgZGV2X2ZyZWUoc3RydWN0IGtyZWYgKmtyZWYpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMjA4LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTIyMS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoyMjI6c3RhdGljIGludCByYXdfcXVldWVfZXZlbnQoc3RydWN0IHJhd19kZXYgKmRldixcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0yMjMtXFx0ZW51bSB1c2JfcmF3X2V2ZW50X3R5cGUgdHlwZSwgc2l6ZV90IGxlbmd0aCwgY29uc3Qgdm9pZCAqZGF0YSlcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTIzNi1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoyMzc6c3RhdGljIHZvaWQgZ2FkZ2V0X2VwMF9jb21wbGV0ZShzdHJ1Y3QgdXNiX2VwICplcCwgc3RydWN0IHVzYl9yZXF1ZXN0ICpyZXEpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMjM4LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTI1NS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoyNTY6c3RhdGljIHU4IGdldF9lcF9hZGRyKGNvbnN0IGNoYXIgKm5hbWUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMjU3LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTI2OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoyNjk6c3RhdGljIGludCBnYWRnZXRfYmluZChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0LFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTI3MC1cXHRcXHRcXHRzdHJ1Y3QgdXNiX2dhZGdldF9kcml2ZXIgKmRyaXZlcilcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTMyMC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzozMjE6c3RhdGljIHZvaWQgZ2FkZ2V0X3VuYmluZChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2FkZ2V0KVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTMyMi17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0zNzAtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6MzcxOnN0YXRpYyBpbnQgZ2FkZ2V0X3NldHVwKHN0cnVjdCB1c2JfZ2FkZ2V0ICpnYWRnZXQsXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMzcyLVxcdFxcdFxcdGNvbnN0IHN0cnVjdCB1c2JfY3RybHJlcXVlc3QgKmN0cmwpXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy00MTUtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6NDE2OnN0YXRpYyB2b2lkIGdhZGdldF9kaXNjb25uZWN0KHN0cnVjdCB1c2JfZ2FkZ2V0ICpnYWRnZXQpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtNDE3LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTQyNS19XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6NDI2OnN0YXRpYyB2b2lkIGdhZGdldF9zdXNwZW5kKHN0cnVjdCB1c2JfZ2FkZ2V0ICpnYWRnZXQpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtNDI3LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTQzNS19XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6NDM2OnN0YXRpYyB2b2lkIGdhZGdldF9yZXN1bWUoc3RydWN0IHVzYl9nYWRnZXQgKmdhZGdldClcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy00Mzcte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtNDQ1LX1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzo0NDY6c3RhdGljIHZvaWQgZ2FkZ2V0X3Jlc2V0KHN0cnVjdCB1c2JfZ2FkZ2V0ICpnYWRnZXQpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtNDQ3LXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTQ1OC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzo0NTk6c3RhdGljIHN0cnVjdCBtaXNjZGV2aWNlIHJhd19taXNjX2RldmljZTtcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy00NjAtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6NDYxOnN0YXRpYyBpbnQgcmF3X29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZkKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTQ2Mi17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy00NzctXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6NDc4OnN0YXRpYyBpbnQgcmF3X3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZkKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTQ3OS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy01MTMtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6NTE0OnN0YXRpYyBpbnQgcmF3X2lvY3RsX2luaXQoc3RydWN0IHJhd19kZXYgKmRldiwgdW5zaWduZWQgbG9uZyB2YWx1ZSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy01MTUte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtNjEyLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjYxMzpzdGF0aWMgaW50IHJhd19pb2N0bF9ydW4oc3RydWN0IHJhd19kZXYgKmRldiwgdW5zaWduZWQgbG9uZyB2YWx1ZSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy02MTQte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtNjQ4LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjY0OTpzdGF0aWMgaW50IHJhd19pb2N0bF9ldmVudF9mZXRjaChzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTY1MC17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy02OTMtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6Njk0OnN0YXRpYyB2b2lkICpyYXdfYWxsb2NfaW9fZGF0YShzdHJ1Y3QgdXNiX3Jhd19lcF9pbyAqaW8sIHZvaWQgX191c2VyICpwdHIsXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtNjk1LVxcdFxcdFxcdFxcdGJvb2wgZ2V0X2Zyb21fdXNlcilcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTcxNi1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzo3MTc6c3RhdGljIGludCByYXdfcHJvY2Vzc19lcDBfaW8oc3RydWN0IHJhd19kZXYgKmRldiwgc3RydWN0IHVzYl9yYXdfZXBfaW8gKmlvLFxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTcxOC1cXHRcXHRcXHRcXHR2b2lkICpkYXRhLCBib29sIGluKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtODA5LVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjgxMDpzdGF0aWMgaW50IHJhd19pb2N0bF9lcDBfd3JpdGUoc3RydWN0IHJhd19kZXYgKmRldiwgdW5zaWduZWQgbG9uZyB2YWx1ZSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy04MTEte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtODIzLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjgyNDpzdGF0aWMgaW50IHJhd19pb2N0bF9lcDBfcmVhZChzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTgyNS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy04NDctXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6ODQ4OnN0YXRpYyBpbnQgcmF3X2lvY3RsX2VwMF9zdGFsbChzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTg0OS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy04OTEtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6ODkyOnN0YXRpYyBpbnQgcmF3X2lvY3RsX2VwX2VuYWJsZShzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTg5My17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy05NzEtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6OTcyOnN0YXRpYyBpbnQgcmF3X2lvY3RsX2VwX2Rpc2FibGUoc3RydWN0IHJhd19kZXYgKmRldiwgdW5zaWduZWQgbG9uZyB2YWx1ZSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy05NzMte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTAyOS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxMDMwOnN0YXRpYyBpbnQgcmF3X2lvY3RsX2VwX3NldF9jbGVhcl9oYWx0X3dlZGdlKHN0cnVjdCByYXdfZGV2ICpkZXYsXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTAzMS1cXHRcXHR1bnNpZ25lZCBsb25nIHZhbHVlLCBib29sIHNldCwgYm9vbCBoYWx0KVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTA5Ny1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxMDk4OnN0YXRpYyB2b2lkIGdhZGdldF9lcF9jb21wbGV0ZShzdHJ1Y3QgdXNiX2VwICplcCwgc3RydWN0IHVzYl9yZXF1ZXN0ICpyZXEpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTA5OS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMTEzLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjExMTQ6c3RhdGljIGludCByYXdfcHJvY2Vzc19lcF9pbyhzdHJ1Y3QgcmF3X2RldiAqZGV2LCBzdHJ1Y3QgdXNiX3Jhd19lcF9pbyAqaW8sXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTExNS1cXHRcXHRcXHRcXHR2b2lkICpkYXRhLCBib29sIGluKVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTIxNy1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxMjE4OnN0YXRpYyBpbnQgcmF3X2lvY3RsX2VwX3dyaXRlKHN0cnVjdCByYXdfZGV2ICpkZXYsIHVuc2lnbmVkIGxvbmcgdmFsdWUpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTIxOS17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMjMxLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjEyMzI6c3RhdGljIGludCByYXdfaW9jdGxfZXBfcmVhZChzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEyMzMte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTI1NS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxMjU2OnN0YXRpYyBpbnQgcmF3X2lvY3RsX2NvbmZpZ3VyZShzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEyNTcte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTI4MC1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxMjgxOnN0YXRpYyBpbnQgcmF3X2lvY3RsX3ZidXNfZHJhdyhzdHJ1Y3QgcmF3X2RldiAqZGV2LCB1bnNpZ25lZCBsb25nIHZhbHVlKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEyODIte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTMwMy1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxMzA0OnN0YXRpYyB2b2lkIGZpbGxfZXBfY2FwcyhzdHJ1Y3QgdXNiX2VwX2NhcHMgKmNhcHMsXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTMwNS1cXHRcXHRcXHRcXHRzdHJ1Y3QgdXNiX3Jhd19lcF9jYXBzICpyYXdfY2FwcylcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEzMTQtXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6MTMxNTpzdGF0aWMgdm9pZCBmaWxsX2VwX2xpbWl0cyhzdHJ1Y3QgdXNiX2VwICplcCwgc3RydWN0IHVzYl9yYXdfZXBfbGltaXRzICpsaW1pdHMpXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTMxNi17XFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMzIwLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jOjEzMjE6c3RhdGljIGludCByYXdfaW9jdGxfZXBzX2luZm8oc3RydWN0IHJhd19kZXYgKmRldiwgdW5zaWduZWQgbG9uZyB2YWx1ZSlcXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYy0xMzIyLXtcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEzNjctXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmM6MTM2ODpzdGF0aWMgbG9uZyByYXdfaW9jdGwoc3RydWN0IGZpbGUgKmZkLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIHZhbHVlKVxcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTEzNjkte1xcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTQzNi1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxNDM3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIHJhd19mb3BzID0ge1xcbmRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jLTE0MzgtXFx0Lm9wZW4gPVxcdFxcdFxcdHJhd19vcGVuLFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTQ0My1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L3Jhd19nYWRnZXQuYzoxNDQ0OnN0YXRpYyBzdHJ1Y3QgbWlzY2RldmljZSByYXdfbWlzY19kZXZpY2UgPSB7XFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9yYXdfZ2FkZ2V0LmMtMTQ0NS1cXHQubWlub3IgPSBNSVNDX0RZTkFNSUNfTUlOT1IsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEwOjQwOjU5LjQ4MTAxNTAxNFoiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4ODg0NTM0Nzg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZvY3VzIFN5bWJvbCBTZWxlY3Rpb246IEEgRGVlcCBEaXZlIGludG8gYHJhd19nYWRnZXQuY2AqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEknbSBsb29raW5nIGF0IGhvdyB0byBpZGVudGlmeSB0aGUgY29ycmVjdCBzeW1ib2xzIGZvciB0aGUgYEZvY3VzU3ltYm9sc2AgY29uZmlndXJhdGlvbiwgYW5kIHRoZSBgcmF3X2dhZGdldC5jYCBmaWxlIGlzIHByZXNlbnRpbmcgc29tZSBpbnRlcmVzdGluZyBudWFuY2VzLiBJbml0aWFsbHksIEkgdGhvdWdodCB0aGF0IEkgc2hvdWxkIGNob29zZSB0aGUgbm9uLXN0YXRpYyBmdW5jdGlvbnMgb3ZlciBzdGF0aWMgb25lcy4gSG93ZXZlciwgSSd2ZSBub3RpY2VkIGEgY3J1Y2lhbCBkZXRhaWw6IGZ1bmN0aW9ucyBsaWtlIGByYXdfaW9jdGxgLCBgZ2FkZ2V0X2JpbmRgLCBhbmQgYGdhZGdldF91bmJpbmRgIGFyZSAqc3RhdGljKiBidXQgdGhlaXIgYWRkcmVzc2VzIGFyZSB0YWtlbiBiZWNhdXNlIHRoZXkgYXJlIGFzc2lnbmVkIHRvIGZ1bmN0aW9uIHBvaW50ZXJzIGluIHRoZSBgcmF3X2ZvcHNgIGFuZCBgc3RydWN0IHVzYl9nYWRnZXRfZHJpdmVyYCBzdHJ1Y3R1cmVzIHJlc3BlY3RpdmVseS4gVGhlcmVmb3JlLCB0aGV5IHdvbid0IGJlIGlubGluZWQsIGFuZCB0aGVpciBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzIGFyZSBwZXJmZWN0bHkgdXNhYmxlIGFzIGVudHJ5IHBvaW50cy5cblxuVGhlIHByb21wdCBleHBsaWNpdGx5IHNheXMgdG8gZmF2b3Igbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zLiBTaW5jZSBgcmF3X2lvY3RsYCwgYGdhZGdldF9iaW5kYCwgYW5kIGBnYWRnZXRfdW5iaW5kYCBhcmUgc3RhdGljIGZ1bmN0aW9ucyBidXQgKm5vdCogaW5saW5lZCwgdGhleSBzZWVtIGxpa2UgcHJpbWUgY2FuZGlkYXRlcy5cblxuTm93LCBgcmF3X2lvY3RsYCBsb29rcyBsaWtlIGEgc2lnbmlmaWNhbnQgbXVsdGlwbGV4ZXIuIFRoZSBhY3R1YWwgbG9naWMgbW9kaWZpY2F0aW9ucyBhcmUgYnVyaWVkIHdpdGhpbiBpdHMgc3ViLWZ1bmN0aW9uczogYHJhd19wcm9jZXNzX2VwMF9pb2AsIGByYXdfaW9jdGxfZXBfZGlzYWJsZWAsIGFuZCBgcmF3X3Byb2Nlc3NfZXBfaW9gLiBNeSBndXQgZmVlbGluZyBpcyB0aGF0IHRob3NlIG1pZ2h0IGJlIGlubGluZWQgZHVlIHRvIHRoZWlyIHVzYWdlLCBidXQgdGhleSdyZSBub3QgdHJpdmlhbC4gSG93ZXZlciwgc2luY2UgdGhlIGdvYWwgaXMgdG8gaWRlbnRpZnkgZGlzdGluY3QgZW50cnkgcG9pbnRzLCBJJ2xsIHN0aWNrIHdpdGggYHJhd19pb2N0bGAsIGBnYWRnZXRfYmluZGAsIGFuZCBgZ2FkZ2V0X3VuYmluZGAgZm9yIHRoZSBmb2N1cy4gSSdtIHJlYXNvbmFibHkgY29uZmlkZW50IHRoYXQgdGhlc2UgYXJlIHRoZSBrZXkgc3ltYm9scyB0byB0cmFjay5cblxuRmluYWxseSwgSSBuZWVkIHRvIGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMuIEkgaGF2ZSB0byBkb3VibGUtY2hlY2sgdGhhdCBgVVNCX1JBV19HQURHRVRgIGlzIHRoZSBvbmx5IGNvbmZpZyBJIG5lZWQuIEkga25vdyBgVVNCX0dBREdFVGAgaXMgZnVuZGFtZW50YWwuIEkgdGhpbmsgSSB3aWxsIG5lZWQgYFVTQl9EVU1NWV9IQ0RgIGlmIEknbSB0ZXN0aW5nIHdpdGhvdXQgcmVhbCBoYXJkd2FyZSwgYnV0IHNpbmNlIHRoaXMgcGF0Y2ggaXMgd2l0aGluIGByYXdfZ2FkZ2V0LmNgLCBgVVNCX1JBV19HQURHRVRgIGlzIHRoZSBjb3JlIG9uZSB0aGF0IGVuYWJsZXMgdGhpcyBwYXJ0aWN1bGFyIGZpbGUncyBjb21waWxhdGlvbi4gQ2hlY2tpbmcgdGhlIGxlZ2FjeSBgTWFrZWZpbGVgIGlzIGEgZ29vZCBpZGVhIHRvIGNvbmZpcm0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzODA3LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDYxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEwOjQxOjA4LjM2NTU2MTMyOVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM5MzQwNjc3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJhd19nYWRnZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvbGVnYWN5L01ha2VmaWxlPTQ1PW9iai0kKENPTkZJR19VU0JfR0FER0VUX1RBUkdFVClcXHQrPSB0Y21fdXNiX2dhZGdldC5vXFxuZHJpdmVycy91c2IvZ2FkZ2V0L2xlZ2FjeS9NYWtlZmlsZTo0NjpvYmotJChDT05GSUdfVVNCX1JBV19HQURHRVQpXFx0Kz0gcmF3X2dhZGdldC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEwOjQxOjA4LjUwNDkxMTgwNloiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODk4OTM4MDkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlVTQiBHYWRnZXQgQ29uZmlndXJhdGlvbiBDb251bmRydW0qKlxuXG5Pa2F5LCBzbyBJJ20gZm9jdXNpbmcgb24gdGhlIFVTQiByYXcgZ2FkZ2V0IGRyaXZlciwgYW5kIGl0IHNlZW1zIGxpa2Ugc2V0dGluZyBgQ09ORklHX1VTQl9SQVdfR0FER0VUYCBzaG91bGQgYmUgYWxsIEkgbmVlZCB0byBnZXQgYHJhd19nYWRnZXQuY2AgY29tcGlsZWQuIFRoYXQgbWFrZXMgc2Vuc2UsIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIEJ1dCBob2xkIG9uLi4uIHNvbWV0aGluZyBmZWVscyBvZmYuIEkgdmFndWVseSByZWNhbGwgbmVlZGluZyBhIG1vcmUgZW5jb21wYXNzaW5nIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRvIGV2ZW4gZ2V0IGludG8gdGhlIHJlbGV2YW50IE1ha2VmaWxlcy4gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGUgaW5jbHVkZSBzdHJ1Y3R1cmUuIFJpZ2h0LCBJIHRoaW5rIGBVU0JfR0FER0VUYCBoYXMgc29tZXRoaW5nIHRvIGRvIHdpdGggdGhhdCwgbGV0IG1lIGNvbmZpcm0uIExldCdzIGdvIGxvb2sgYXQgYGRyaXZlcnMvdXNiL2dhZGdldC9NYWtlZmlsZWAgYW5kIHNlZSB3aGF0IHRoYXQgaW5jbHVkZXMuIEhvcGVmdWxseSwgdGhpcyBjbGVhcnMgdGhpbmdzIHVwIVxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDg1OSwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEwOjQxOjEyLjQwMzg1NDU0OVoiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODI3NDQwMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibGVnYWN5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvTWFrZWZpbGU9MTA9bGliY29tcG9zaXRlLXlcXHRcXHRcXHQrPSBjb21wb3NpdGUubyBmdW5jdGlvbnMubyBjb25maWdmcy5vIHVfZi5vXFxuZHJpdmVycy91c2IvZ2FkZ2V0L01ha2VmaWxlLTExLVxcbmRyaXZlcnMvdXNiL2dhZGdldC9NYWtlZmlsZToxMjpvYmotJChDT05GSUdfVVNCX0dBREdFVClcXHQrPSB1ZGMvIGZ1bmN0aW9uLyBsZWdhY3kvXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEwOjQxOjEyLjQ4NjYwODQ3N1oiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjI4OTcxODI1NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgVVNCIFJhdyBHYWRnZXQgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgdGhlIFVTQiBSYXcgR2FkZ2V0IGRyaXZlci4gRmlyc3QgdGhpbmdzIGZpcnN0OiBJIG5lZWQgYENPTkZJR19VU0JfR0FER0VUYCB0byBldmVuIGdldCBpbnRvIHRoZSBgbGVnYWN5L2AgZGlyZWN0b3J5LCBhbmQgaXQgc2VlbXMgbGlrZSBJIGFsc28gbmVlZCBgVVNCX1JBV19HQURHRVRgIGFzIHdlbGwsIHNvIG15IGBFbmFibGVDb25maWdzYCBzaG91bGQgYmUgYFtcIlVTQl9HQURHRVRcIiwgXCJVU0JfUkFXX0dBREdFVFwiXWAuIFRoYXQgc291bmRzIHJpZ2h0LlxuXG5Ob3csIGxldCdzIG5haWwgZG93biB0aGUgZm9jdXMgc3ltYm9scyBmb3IgdGhlIGZ1enplci4gVGhlIHBhdGNoIHRvdWNoZXMgYGRldl9mcmVlYCwgYGdhZGdldF9iaW5kYCwgYGdhZGdldF91bmJpbmRgLCBgcmF3X2lvY3RsX2V2ZW50X2ZldGNoYCwgYHJhd19wcm9jZXNzX2VwMF9pb2AsIGByYXdfaW9jdGxfZXBfZGlzYWJsZWAsIGFuZCBgcmF3X3Byb2Nlc3NfZXBfaW9gLiBMZXQncyB0aGluayB0aHJvdWdoIHdoaWNoIG9mIHRoZXNlIGFyZSBsaWtlbHkgdG8gYmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIuIGBnYWRnZXRfYmluZGAgYW5kIGBnYWRnZXRfdW5iaW5kYCBhcmUgZnVuY3Rpb24gcG9pbnRlcnMsIHNvIGRlZmluaXRlbHkgbm90IGlubGluZWQuIGBkZXZfZnJlZWAgZ2V0cyBwYXNzZWQgdG8gYGtyZWZfcHV0YCwgc28gYWxzbyBub3QgaW5saW5lZC4gVGhlIG90aGVycywgYHJhd19pb2N0bF9ldmVudF9mZXRjaGAsIGByYXdfcHJvY2Vzc19lcDBfaW9gLCBgcmF3X2lvY3RsX2VwX2Rpc2FibGVgLCBhbmQgYHJhd19wcm9jZXNzX2VwX2lvYCwgYXJlIGNhbGxlZCBmcm9tIGByYXdfaW9jdGxgIHZpYSBhIHN3aXRjaCBzdGF0ZW1lbnQuIFRoZXkgKmNvdWxkKiBiZSBpbmxpbmVkLCBidXQgdGhleSBsb29rIHByZXR0eSBzdWJzdGFudGlhbC5cblxuR2l2ZW4gYWxsIHRoYXQsIEkgdGhpbmsgSSdsbCBpbmNsdWRlIGBnYWRnZXRfYmluZGAsIGBnYWRnZXRfdW5iaW5kYCwgYW5kIGByYXdfaW9jdGxgIGFzIHRoZSBtYWluIGVudHJ5IHBvaW50cy4gSSBtaWdodCBhbHNvIGluY2x1ZGUgYHJhd19wcm9jZXNzX2VwMF9pb2AgYW5kIGByYXdfcHJvY2Vzc19lcF9pb2AgYmVjYXVzZSB0aGV5IHNlZW0gdG8gY29udGFpbiB0aGUgY29yZSBsb2dpYyBjaGFuZ2VzLiBXYWl0LCBJIHRoaW5rIGByYXdfaW9jdGxgIGlzIHRoZSBlbnRyeSBwb2ludCBmb3IgYWxsIG9mIHRoZSBpb2N0bHMsIHNvIHRoZSBmdXp6ZXIgd2lsbCBiZSBmb2N1c2VkIG9uIHRoYXQsIHNvIEkgd2lsbCBzdGljayB3aXRoIGp1c3QgYGdhZGdldF9iaW5kYCwgYGdhZGdldF91bmJpbmRgLCBhbmQgYHJhd19pb2N0bGAuXG5cbkxldCdzIGRvdWJsZS1jaGVjayBhbnkgZGVwZW5kZW5jaWVzLiBgVVNCX0dBREdFVGAgaXRzZWxmIGRvZXNuJ3QgZGVwZW5kIG9uIGFueXRoaW5nLCBidXQgaXQgc2VsZWN0cyBgVVNCX0NPTU1PTmAgYW5kIGBOTFNgLiBIb3dldmVyLCBgVVNCX0dBREdFVGAgYW5kIGBVU0JfUkFXX0dBREdFVGAgc2hvdWxkIGJlIHN1ZmZpY2llbnQuIE9rYXksIGp1c3QgdG8gYmUgdGhvcm91Z2gsIEknbGwgY29uZmlybSB0aGF0IG9ubHkgYGRyaXZlcnMvdXNiL2dhZGdldC9sZWdhY3kvcmF3X2dhZGdldC5jYCBpcyBiZWluZyBtb2RpZmllZC4gWWVwLCBqdXN0IHRoZSBvbmUgZmlsZS5cblxuTm93LCB0aW1lIHRvIHN1bW1hcml6ZSB0aGlzIGNsZWFybHkgZm9yIHRoZSBmdXp6ZXIuIFRoaXMgcGF0Y2ggYWRkcmVzc2VzIGEgcmFjZSBjb25kaXRpb24gaW4gdGhlIFVTQiBSYXcgR2FkZ2V0IGRyaXZlci4gSXQgZGVhbHMgd2l0aCBVREMgdW5iaW5kIGFuZCBlbmRwb2ludCBJTyBvcGVyYXRpb25zLiBTcGVjaWZpY2FsbHksIGl0IGludHJvZHVjZXMgYSBgdWRjX3VzYWdlYCBjb3VudGVyIGFuZCBhbiBgdW5iaW5kX2NvbXBsZXRpb25gIHRvIGVuc3VyZSB0aGF0IGBnYWRnZXRfdW5iaW5kYCB3YWl0cyBmb3IgYW55IHBlbmRpbmcgSU8gdG8gZmluaXNoIGJlZm9yZSBjb21wbGV0aW5nIHRoZSB1bmJpbmQgcHJvY2Vzcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGEga2V5IGRyaXZlciB1c2VkIGZvciBVU0IgZW11bGF0aW9uIGFuZCBmdXp6aW5nLiBUaGUgcGF0Y2ggaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cblxuU28sIGhlcmUncyB0aGUgaW5mb3JtYXRpb24gSSdtIGZlZWRpbmcgdGhlIGZ1enplcjpcblxuKiAgIGBXb3J0aEZ1enppbmc6IHRydWVgXG4qICAgYEZvY3VzU3ltYm9sczogZ2FkZ2V0X2JpbmQsIGdhZGdldF91bmJpbmQsIHJhd19pb2N0bGBcbiogICBgRW5hYmxlQ29uZmlnczogVVNCX0dBREdFVCwgVVNCX1JBV19HQURHRVRgXG5cbkFscmlnaHQsIGxldCBtZSBkb3VibGUtY2hlY2sgYWJvdXQgYFVTQl9EVU1NWV9IQ0RgLiBBaCwgdGhhdCdzIHRoZSBkdW1teSBob3N0IGNvbnRyb2xsZXIgYW5kIGRldmljZSBjb250cm9sbGVyLiBJdCBpcyB1c2VkIHRvIGNvbm5lY3QgdGhlIHJhdyBnYWRnZXQgdG8gYSBkdW1teSBob3N0LiBXaGlsZSBgVVNCX1JBV19HQURHRVRgIGNvbXBpbGVzIHRoZSBjb2RlLCB0byBhY3R1YWxseSAqdGVzdCogaXQsIHN5emthbGxlciBuZWVkcyBhIFVEQyAoVVNCIERldmljZSBDb250cm9sbGVyKS4gYFVTQl9EVU1NWV9IQ0RgIHByb3ZpZGVzIHRoaXMgVURDIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQuIExldCBtZSBkb3VibGUtY2hlY2sgdGhhdCB0aGlzIGlzIGEgY29uZmlnLiBHb29kLiBJIHRoaW5rIEknbSBnb29kIHRvIGdvLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTE5NiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjc1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMDo0MToyNC43NzYzMzEzMTVaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEzNjI5OTAyNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVVNCX0RVTU1ZX0hDRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL3VzYi9nYWRnZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz00MjI9c291cmNlIFxcXCJkcml2ZXJzL3VzYi9nYWRnZXQvdWRjL2NkbnMyL0tjb25maWdcXFwiXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctNDI3LVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzo0Mjg6Y29uZmlnIFVTQl9EVU1NWV9IQ0RcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctNDI5LVxcdHRyaXN0YXRlIFxcXCJEdW1teSBIQ0QgKERFVkVMT1BNRU5UKVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTA6NDE6MjQuOTEyNjM2MzYyWiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3MjE4OTExMjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQ2hlY2tpbmcgdGhlIFVTQiBEdW1teSBIb3N0IENvbnRyb2xsZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEkgc2VlIHRoYXQgYFVTQl9EVU1NWV9IQ0RgIGlzIGluZGVlZCBkZWZpbmVkIHdpdGhpbiB0aGUgYGRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZ2AgZmlsZS4gVGhhdCBjb25maXJtcyB3aGF0IEkgd2FzIHRoaW5raW5nLiBJZiBJIGVuYWJsZSB0aGlzLCBpdCBndWFyYW50ZWVzIHRoYXQgdGhlIGR1bW15IFVTQiBkZXZpY2UgY29udHJvbGxlciBpcyBhdmFpbGFibGUuIEFuZCBJIGtub3cgSSBuZWVkIHRoYXQgdG8gcmVsaWFibHkgdHJpZ2dlciB0aGUgYGdhZGdldF9iaW5kYCBhbmQgYGdhZGdldF91bmJpbmRgIGZ1bmN0aW9ucyB3aXRoaW4gYSB2aXJ0dWFsIG1hY2hpbmUgZW52aXJvbm1lbnQgd2hlcmUgSSAqZG9uJ3QqIGhhdmUgYWNjZXNzIHRvIGFjdHVhbCwgcGh5c2ljYWwgVVNCIGhhcmR3YXJlLiBJdCdzIGEga2V5IHJlcXVpcmVtZW50IGZvciB0aGUgdGVzdGluZyBJJ20gZG9pbmcuIE5vdywganVzdCB0byBiZSB0aG9yb3VnaCBhbmQgdG8gZG91YmxlLWNoZWNrIG15IGFzc3VtcHRpb25zLCBJIHNob3VsZCBxdWlja2x5IHJldmlldyB0aGUgZGVwZW5kZW5jaWVzIG9mIGBVU0JfRFVNTVlfSENEYCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gdGhlcmUgYXJlIG5vIHVuZm9yZXNlZW4gY29uZmxpY3RzIG9yIHByZXJlcXVpc2l0ZXMuIExldCdzIHNlZS4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjkzMSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEwOjQxOjMwLjYzNDUzMTM3OVoiLCJTZXEiOjMyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc4MDMwODY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz0zMz1jb25maWcgVVNCX0FUOTFcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMzQtXFx0dHJpc3RhdGUgXFxcIkF0bWVsIEFUOTEgVVNCIERldmljZSBQb3J0XFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzozNTpcXHRkZXBlbmRzIG9uIEFSQ0hfQVQ5MVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzozNjpcXHRkZXBlbmRzIG9uIE9GXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTM3LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz00Nj1jb25maWcgVVNCX0xQQzMyWFhcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctNDctXFx0dHJpc3RhdGUgXFxcIkxQQzMyWFggVVNCIFBlcmlwaGVyYWwgQ29udHJvbGxlclxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6NDg6XFx0ZGVwZW5kcyBvbiBBUkNIX0xQQzMyWFggfHwgQ09NUElMRV9URVNUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjQ5OlxcdGRlcGVuZHMgb24gSTJDXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTUwLVxcdHNlbGVjdCBVU0JfSVNQMTMwMVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnPTU4PWNvbmZpZyBVU0JfQVRNRUxfVVNCQVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy01OS1cXHR0cmlzdGF0ZSBcXFwiQXRtZWwgVVNCQVxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6NjA6XFx0ZGVwZW5kcyBvbiBBUkNIX0FUOTFcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctNjEtXFx0aGVscFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnPTgwPWNvbmZpZyBVU0JfQkNNNjNYWF9VRENcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctODEtXFx0dHJpc3RhdGUgXFxcIkJyb2FkY29tIEJDTTYzeHggUGVyaXBoZXJhbCBDb250cm9sbGVyXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzo4MjpcXHRkZXBlbmRzIG9uIEJDTTYzWFhcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctODMtXFx0aGVscFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnPTkxPWNvbmZpZyBVU0JfRlNMX1VTQjJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctOTItXFx0dHJpc3RhdGUgXFxcIkZyZWVzY2FsZSBIaWdoc3BlZWQgVVNCIERSIFBlcmlwaGVyYWwgQ29udHJvbGxlclxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6OTM6XFx0ZGVwZW5kcyBvbiBGU0xfU09DXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTk0LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz0xMDU9Y29uZmlnIFVTQl9HUl9VRENcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMTA2LVxcdHRyaXN0YXRlIFxcXCJBZXJvZmxleCBHYWlzbGVyIEdSVVNCREMgVVNCIFBlcmlwaGVyYWwgQ29udHJvbGxlciBEcml2ZXJcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjEwNzpcXHRkZXBlbmRzIG9uIEhBU19ETUFcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMTA4LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz0xMTI9Y29uZmlnIFVTQl9PTUFQXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTExMy1cXHR0cmlzdGF0ZSBcXFwiT01BUCBVU0IgRGV2aWNlIENvbnRyb2xsZXJcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjExNDpcXHRkZXBlbmRzIG9uIEFSQ0hfT01BUDFcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMTE1LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz0xMjY9Y29uZmlnIFVTQl9QWEEyNVhcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMTI3LVxcdHRyaXN0YXRlIFxcXCJQWEEgMjV4IG9yIElYUCA0eHhcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjEyODpcXHRkZXBlbmRzIG9uIChBUkNIX1BYQSBcXHUwMDI2XFx1MDAyNiBQWEEyNXgpIHx8IEFSQ0hfSVhQNFhYXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjEyOTpcXHRkZXBlbmRzIG9uIEhBU19JT01FTVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0xMzAtXFx0aGVscFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnPTE0ND1jb25maWcgVVNCX1BYQTI1WF9TTUFMTFxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzoxNDU6XFx0ZGVwZW5kcyBvbiBVU0JfUFhBMjVYXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTE0Ni1cXHRib29sXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9MTUyPWNvbmZpZyBVU0JfUjhBNjY1OTdcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMTUzLVxcdHRyaXN0YXRlIFxcXCJSZW5lc2FzIFI4QTY2NTk3IFVTQiBQZXJpcGhlcmFsIENvbnRyb2xsZXJcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjE1NDpcXHRkZXBlbmRzIG9uIEhBU19ETUFcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMTU1LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz0xNjQ9Y29uZmlnIFVTQl9SRU5FU0FTX1VTQkhTX1VEQ1xcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0xNjUtXFx0dHJpc3RhdGUgJ1JlbmVzYXMgVVNCSFMgY29udHJvbGxlcidcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6MTY2OlxcdGRlcGVuZHMgb24gVVNCX1JFTkVTQVNfVVNCSFNcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMTY3LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz0xNzY9Y29uZmlnIFVTQl9SWlYyTV9VU0IzRFJEXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTE3Ny1cXHR0cmlzdGF0ZSAnUmVuZXNhcyBVU0IzLjEgRFJEIGNvbnRyb2xsZXInXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjE3ODpcXHRkZXBlbmRzIG9uIEFSQ0hfUjlBMDlHMDExIHx8IENPTVBJTEVfVEVTVFxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0xNzktXFx0aGVscFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnPTE4Nj1jb25maWcgVVNCX1JFTkVTQVNfVVNCM1xcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0xODctXFx0dHJpc3RhdGUgJ1JlbmVzYXMgVVNCMy4wIFBlcmlwaGVyYWwgY29udHJvbGxlcidcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6MTg4OlxcdGRlcGVuZHMgb24gQVJDSF9SRU5FU0FTIHx8IENPTVBJTEVfVEVTVFxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzoxODk6XFx0ZGVwZW5kcyBvbiBVU0JfUlpWMk1fVVNCM0RSRCB8fCAhVVNCX1JaVjJNX1VTQjNEUkRcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6MTkwOlxcdGRlcGVuZHMgb24gRVhUQ09OXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTE5MS1cXHRzZWxlY3QgVVNCX1JPTEVfU1dJVENIXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9MjAwPWNvbmZpZyBVU0JfUkVORVNBU19VU0JGXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTIwMS1cXHR0cmlzdGF0ZSAnUmVuZXNhcyBVU0IgRnVuY3Rpb24gY29udHJvbGxlcidcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6MjAyOlxcdGRlcGVuZHMgb24gQVJDSF9SRU5FU0FTIHx8IENPTVBJTEVfVEVTVFxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0yMDMtXFx0aGVscFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnPTIxMT1jb25maWcgVVNCX1BYQTI3WFxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0yMTItXFx0dHJpc3RhdGUgXFxcIlBYQSAyN3hcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjIxMzpcXHRkZXBlbmRzIG9uIEhBU19JT01FTVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0yMTQtXFx0aGVscFxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnPTIyNT1jb25maWcgVVNCX1NOUF9DT1JFXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjIyNjpcXHRkZXBlbmRzIG9uIChVU0JfQU1ENTUzNlVEQyB8fCBVU0JfU05QX1VEQ19QTEFUKVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzoyMjc6XFx0ZGVwZW5kcyBvbiBIQVNfRE1BXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTIyOC1cXHR0cmlzdGF0ZVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnPTI0MD1jb25maWcgVVNCX1NOUF9VRENfUExBVFxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0yNDEtXFx0dHJpc3RhdGUgXFxcIlN5bm9wc3lzIFVTQiAyLjAgRGV2aWNlIGNvbnRyb2xsZXJcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjI0MjpcXHRkZXBlbmRzIG9uIFVTQl9HQURHRVQgXFx1MDAyNlxcdTAwMjYgT0YgXFx1MDAyNlxcdTAwMjYgSEFTX0RNQVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzoyNDM6XFx0ZGVwZW5kcyBvbiBFWFRDT04gfHwgRVhUQ09OPW5cXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMjQ0LVxcdHNlbGVjdCBVU0JfU05QX0NPUkVcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz0yNTg9Y29uZmlnIFVTQl9NNjY1OTJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMjU5LVxcdHRyaXN0YXRlIFxcXCJSZW5lc2FzIE02NjU5MiBVU0IgUGVyaXBoZXJhbCBDb250cm9sbGVyXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzoyNjA6XFx0ZGVwZW5kcyBvbiBIQVNfSU9NRU1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMjYxLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz0yNzY9Y29uZmlnIFVTQl9BTUQ1NTM2VURDXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTI3Ny1cXHR0cmlzdGF0ZSBcXFwiQU1ENTUzNiBVRENcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjI3ODpcXHRkZXBlbmRzIG9uIFVTQl9QQ0kgXFx1MDAyNlxcdTAwMjYgSEFTX0RNQVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0yNzktXFx0c2VsZWN0IFVTQl9TTlBfQ09SRVxcbi0tXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnPTI5ND1jb25maWcgVVNCX0ZTTF9RRVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0yOTUtXFx0dHJpc3RhdGUgXFxcIkZyZWVzY2FsZSBRRS9DUE0gVVNCIERldmljZSBDb250cm9sbGVyXFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzoyOTY6XFx0ZGVwZW5kcyBvbiBGU0xfU09DIFxcdTAwMjZcXHUwMDI2IChRVUlDQ19FTkdJTkUgfHwgQ1BNKVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzoyOTc6XFx0ZGVwZW5kcyBvbiAhNjRCSVQgfHwgQlJPS0VOXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTI5OC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9MzA4PWNvbmZpZyBVU0JfTkVUMjI4MFxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0zMDktXFx0dHJpc3RhdGUgXFxcIk5ldENoaXAgTkVUMjI4eCAvIFBMWCBVU0IzeDh4XFxcIlxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzozMTA6XFx0ZGVwZW5kcyBvbiBVU0JfUENJXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTMxMS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9MzMzPWNvbmZpZyBVU0JfR09LVVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0zMzQtXFx0dHJpc3RhdGUgXFxcIlRvc2hpYmEgVEM4NkMwMDEgJ0dva3UtUydcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjMzNTpcXHRkZXBlbmRzIG9uIFVTQl9QQ0lcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMzM2LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz0zNDc9Y29uZmlnIFVTQl9FRzIwVFxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0zNDgtXFx0dHJpc3RhdGUgXFxcIkludGVsIFFVQVJLIFgxMDAwL0VHMjBUIFBDSC9MQVBJUyBTZW1pY29uZHVjdG9yIElPSChNTDcyMTMvTUw3ODMxKSBVRENcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjM0OTpcXHRkZXBlbmRzIG9uIFVTQl9QQ0lcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMzUwLVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz0zNzE9Y29uZmlnIFVTQl9HQURHRVRfWElMSU5YXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTM3Mi1cXHR0cmlzdGF0ZSBcXFwiWGlsaW54IFVTQiBEcml2ZXJcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjM3MzpcXHRkZXBlbmRzIG9uIEhBU19ETUFcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6Mzc0OlxcdGRlcGVuZHMgb24gT0ZcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWctMzc1LVxcdGhlbHBcXG4tLVxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZz0zODY9Y29uZmlnIFVTQl9NQVgzNDIwX1VEQ1xcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0zODctXFx0dHJpc3RhdGUgXFxcIk1BWDM0MjAgKFVTQi1vdmVyLVNQSSkgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc6Mzg4OlxcdGRlcGVuZHMgb24gU1BJXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTM4OS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9Mzk2PWNvbmZpZyBVU0JfVEVHUkFfWFVEQ1xcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy0zOTctXFx0dHJpc3RhdGUgXFxcIk5WSURJQSBUZWdyYSBTdXBlcnNwZWVkIFVTQiAzLjAgRGV2aWNlIENvbnRyb2xsZXJcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjM5ODpcXHRkZXBlbmRzIG9uIEFSQ0hfVEVHUkEgfHwgQ09NUElMRV9URVNUXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjM5OTpcXHRkZXBlbmRzIG9uIFBIWV9URUdSQV9YVVNCXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTQwMC1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9NDA3PWNvbmZpZyBVU0JfQVNQRUVEX1VEQ1xcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZy00MDgtXFx0dHJpc3RhdGUgXFxcIkFzcGVlZCBVREMgZHJpdmVyIHN1cHBvcnRcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjQwOTpcXHRkZXBlbmRzIG9uIEFSQ0hfQVNQRUVEIHx8IENPTVBJTEVfVEVTVFxcbmRyaXZlcnMvdXNiL2dhZGdldC91ZGMvS2NvbmZpZzo0MTA6XFx0ZGVwZW5kcyBvbiBVU0JfTElCQ09NUE9TSVRFXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTQxMS1cXHRoZWxwXFxuLS1cXG5kcml2ZXJzL3VzYi9nYWRnZXQvdWRjL0tjb25maWc9NDI4PWNvbmZpZyBVU0JfRFVNTVlfSENEXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTQyOS1cXHR0cmlzdGF0ZSBcXFwiRHVtbXkgSENEIChERVZFTE9QTUVOVClcXFwiXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnOjQzMDpcXHRkZXBlbmRzIG9uIFVTQj15IHx8IChVU0I9bSBcXHUwMDI2XFx1MDAyNiBVU0JfR0FER0VUPW0pXFxuZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9LY29uZmlnLTQzMS1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEwOjQxOjMwLjgxMjU3MjAxNloiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NTQzNTMxNTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlVTQiBSYXcgR2FkZ2V0IEZ1enppbmcgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIGxldCdzIHNvbGlkaWZ5IHRoaXMgZnV6emluZyBjb25maWd1cmF0aW9uIGZvciB0aGUgVVNCIFJhdyBHYWRnZXQgZHJpdmVyLiBJJ3ZlIGJlZW4gdGhpbmtpbmcgdGhyb3VnaCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBob3cgdG8gZW5zdXJlIHRoZSBmdXp6ZXIgZWZmZWN0aXZlbHkgaW50ZXJhY3RzIHdpdGggdGhpcyBkcml2ZXIuIFJpZ2h0IG5vdywgYFVTQl9EVU1NWV9IQ0RgIGlzIGtleS4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBpbmNsdWRlIGl0IGJlY2F1c2Ugc3l6a2FsbGVyIHVzZXMgaXQgZm9yIHRlc3RpbmcgYFVTQl9SQVdfR0FER0VUYC4gQnV0IEkgcmVhbGl6ZWQsIGBVU0JfRFVNTVlfSENEYCBpcyBib3RoIGEgVURDICphbmQqIGFuIEhDRCwgbWFraW5nIGl0IHBlcmZlY3QgZm9yIHRoaXMgdGVzdCBzZXR1cC5cblxuSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgZnV6emVyIGNhbiBhY3R1YWxseSBiaW5kIHRoZSBnYWRnZXQsIHNvLCBgVVNCX0RVTU1ZX0hDRGAgd2lsbCBkZWZpbml0ZWx5IGJlIGluIGBFbmFibGVDb25maWdzYC4gR2l2ZW4gdGhlIGRlcGVuZGVuY3ksIGBVU0JfRFVNTVlfSENEYCBkZXBlbmRzIG9uIGBVU0JgLCB3aGljaCBtZWFucyB0aGF0IGl0IGhhcyB0byBiZSBlbmFibGVkIGFzIHdlbGwuIEFsc28gYFVTQl9HQURHRVRgIGFuZCBgVVNCX1JBV19HQURHRVRgIG5lZWQgdG8gYmUgZW5hYmxlZCBmb3IgdGhpcyB0byB3b3JrLlxuXG5UaGVyZWZvcmUsIHRoZSBsaXN0IHNob3VsZCBiZSBgW1wiVVNCXCIsIFwiVVNCX0dBREdFVFwiLCBcIlVTQl9SQVdfR0FER0VUXCIsIFwiVVNCX0RVTU1ZX0hDRFwiXWAuXG5cbkkndmUgcmV2aWV3ZWQgdGhlIGZvY3VzIHN5bWJvbHMgZm9yIHRoZSBmdXp6aW5nOiBgZ2FkZ2V0X2JpbmRgLCBgZ2FkZ2V0X3VuYmluZGAsIGByYXdfaW9jdGxgLCBgcmF3X3Byb2Nlc3NfZXAwX2lvYCwgYW5kIGByYXdfcHJvY2Vzc19lcF9pb2AuIFRoZXNlIGxvb2sgc29saWQgYW5kIGNvdmVyIHRoZSBjcml0aWNhbCBlbnRyeSBwb2ludHMgdG8gdGhlIGRyaXZlcidzIGZ1bmN0aW9uYWxpdHksIGZvY3VzaW5nIG9uIHRoZSBjb3JlIGJpbmQvdW5iaW5kIG9wZXJhdGlvbnMsIGFuZCBJTyBoYW5kbGluZy5cblxuVGhlIHJlYXNvbmluZyBpcyBzb3VuZDogdGhlIHBhdGNoIGFkZHJlc3NlcyBhIHJhY2UgY29uZGl0aW9uIGJldHdlZW4gVURDIHVuYmluZCBhbmQgZW5kcG9pbnQgSU8gaW4gdGhlIFVTQiBSYXcgR2FkZ2V0IGRyaXZlciwgd2hpY2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGNvcmUgZHJpdmVyIHVzZWQgZm9yIFVTQiBlbXVsYXRpb24uIEl0J3MgZGVmaW5pdGVseSByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlxuXG5UaGlzIHNob3VsZCBiZSBhIHJvYnVzdCBjb25maWd1cmF0aW9uLiBJJ2xsIHNldCB0aGUgcmVzdWx0cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzA2MDgsIk91dHB1dFRva2VucyI6MTkwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDk4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEwOjQxOjM5LjM1NjEwNjc1N1oiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NTk5MDE3NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVVNCXCIsXG4gICAgXCJVU0JfR0FER0VUXCIsXG4gICAgXCJVU0JfUkFXX0dBREdFVFwiLFxuICAgIFwiVVNCX0RVTU1ZX0hDRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImdhZGdldF9iaW5kXCIsXG4gICAgXCJnYWRnZXRfdW5iaW5kXCIsXG4gICAgXCJyYXdfaW9jdGxcIixcbiAgICBcInJhd19wcm9jZXNzX2VwMF9pb1wiLFxuICAgIFwicmF3X3Byb2Nlc3NfZXBfaW9cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIHRoZSBVU0IgUmF3IEdhZGdldCBkcml2ZXIgYmV0d2VlbiBVREMgdW5iaW5kIGFuZCBlbmRwb2ludCBJTyBvcGVyYXRpb25zLiBJdCBpbnRyb2R1Y2VzIGEgYHVkY191c2FnZWAgY291bnRlciBhbmQgYW4gYHVuYmluZF9jb21wbGV0aW9uYCB0byBlbnN1cmUgdGhhdCBgZ2FkZ2V0X3VuYmluZGAgd2FpdHMgZm9yIGFueSBwZW5kaW5nIElPIHRvIGZpbmlzaCBiZWZvcmUgY29tcGxldGluZyB0aGUgdW5iaW5kIHByb2Nlc3MuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBhIGNvcmUgZHJpdmVyIHVzZWQgZm9yIFVTQiBlbXVsYXRpb24gYW5kIGZ1enppbmcsIGFuZCBpdCBpcyByZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlVTQlwiLFxuICAgIFwiVVNCX0dBREdFVFwiLFxuICAgIFwiVVNCX1JBV19HQURHRVRcIixcbiAgICBcIlVTQl9EVU1NWV9IQ0RcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJnYWRnZXRfYmluZFwiLFxuICAgIFwiZ2FkZ2V0X3VuYmluZFwiLFxuICAgIFwicmF3X2lvY3RsXCIsXG4gICAgXCJyYXdfcHJvY2Vzc19lcDBfaW9cIixcbiAgICBcInJhd19wcm9jZXNzX2VwX2lvXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgVVNCIFJhdyBHYWRnZXQgZHJpdmVyIGJldHdlZW4gVURDIHVuYmluZCBhbmQgZW5kcG9pbnQgSU8gb3BlcmF0aW9ucy4gSXQgaW50cm9kdWNlcyBhIGB1ZGNfdXNhZ2VgIGNvdW50ZXIgYW5kIGFuIGB1bmJpbmRfY29tcGxldGlvbmAgdG8gZW5zdXJlIHRoYXQgYGdhZGdldF91bmJpbmRgIHdhaXRzIGZvciBhbnkgcGVuZGluZyBJTyB0byBmaW5pc2ggYmVmb3JlIGNvbXBsZXRpbmcgdGhlIHVuYmluZCBwcm9jZXNzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gYSBjb3JlIGRyaXZlciB1c2VkIGZvciBVU0IgZW11bGF0aW9uIGFuZCBmdXp6aW5nLCBhbmQgaXQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowg9q75[1] Phase: Succeeded StartedAt: 2026-07-29 10:41:51 +0000 UTC FinishedAt: 2026-07-29 10:41:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg9q75[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-29 10:41:51 +0000 UTC FinishedAt: 2026-07-29 10:41:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg9q75[2] Phase: Succeeded StartedAt: 2026-07-29 10:41:51 +0000 UTC FinishedAt: 2026-07-29 14:34:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg9q75[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadget_bind","gadget_unbind","raw_ioctl","raw_process_ep0_io","raw_process_ep_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"6431a49d-e142-4799-a9d2-a1a766f5dc5e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-29 10:41:51 +0000 UTC FinishedAt: 2026-07-29 14:34:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadget_bind","gadget_unbind","raw_ioctl","raw_process_ep0_io","raw_process_ep_io"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"6431a49d-e142-4799-a9d2-a1a766f5dc5e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowg9q75[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadget_bind","gadget_unbind","raw_ioctl","raw_process_ep0_io","raw_process_ep_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"6431a49d-e142-4799-a9d2-a1a766f5dc5e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-29 10:41:51 +0000 UTC FinishedAt: 2026-07-29 10:42:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg9q75[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadget_bind","gadget_unbind","raw_ioctl","raw_process_ep0_io","raw_process_ep_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"6431a49d-e142-4799-a9d2-a1a766f5dc5e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-29 10:41:51 +0000 UTC FinishedAt: 2026-07-29 10:42:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflowg9q75/series-workflowg9q75-convert-artifact-1347209177/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowg9q75[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadget_bind","gadget_unbind","raw_ioctl","raw_process_ep0_io","raw_process_ep_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"6431a49d-e142-4799-a9d2-a1a766f5dc5e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-29 10:42:17 +0000 UTC FinishedAt: 2026-07-29 11:04:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg9q75[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadget_bind","gadget_unbind","raw_ioctl","raw_process_ep0_io","raw_process_ep_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"6431a49d-e142-4799-a9d2-a1a766f5dc5e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-29 10:42:17 +0000 UTC FinishedAt: 2026-07-29 11:04:36 +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:*2f90fd9b-c470-4a64-9361-4ffc1fac99bc,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-workflowg9q75/series-workflowg9q75-convert-artifact-1347209177/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": "271a68b2-de99-411e-8833-a6fd5b2dd7e2", "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-workflowg9q75/series-workflowg9q75-build-action-2344675447/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowg9q75[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadget_bind","gadget_unbind","raw_ioctl","raw_process_ep0_io","raw_process_ep_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"6431a49d-e142-4799-a9d2-a1a766f5dc5e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-29 10:42:17 +0000 UTC FinishedAt: 2026-07-29 11:04:26 +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:*2f90fd9b-c470-4a64-9361-4ffc1fac99bc,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-workflowg9q75/series-workflowg9q75-convert-artifact-1347209177/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": "271a68b2-de99-411e-8833-a6fd5b2dd7e2", "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-workflowg9q75/series-workflowg9q75-build-action-2344675447/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowg9q75[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadget_bind","gadget_unbind","raw_ioctl","raw_process_ep0_io","raw_process_ep_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"6431a49d-e142-4799-a9d2-a1a766f5dc5e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-29 11:04:36 +0000 UTC FinishedAt: 2026-07-29 11:04:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg9q75[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadget_bind","gadget_unbind","raw_ioctl","raw_process_ep0_io","raw_process_ep_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"6431a49d-e142-4799-a9d2-a1a766f5dc5e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-29 11:04:36 +0000 UTC FinishedAt: 2026-07-29 11:04:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg9q75[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadget_bind","gadget_unbind","raw_ioctl","raw_process_ep0_io","raw_process_ep_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"6431a49d-e142-4799-a9d2-a1a766f5dc5e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-29 11:04:36 +0000 UTC FinishedAt: 2026-07-29 11:04:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg9q75[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadget_bind","gadget_unbind","raw_ioctl","raw_process_ep0_io","raw_process_ep_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"6431a49d-e142-4799-a9d2-a1a766f5dc5e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-29 11:04:36 +0000 UTC FinishedAt: 2026-07-29 11:04:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"6431a49d-e142-4799-a9d2-a1a766f5dc5e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.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-workflowg9q75/series-workflowg9q75-convert-artifact-2948252332/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowg9q75[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadget_bind","gadget_unbind","raw_ioctl","raw_process_ep0_io","raw_process_ep_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"6431a49d-e142-4799-a9d2-a1a766f5dc5e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-29 11:04:46 +0000 UTC FinishedAt: 2026-07-29 11:06:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg9q75[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadget_bind","gadget_unbind","raw_ioctl","raw_process_ep0_io","raw_process_ep_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"6431a49d-e142-4799-a9d2-a1a766f5dc5e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-29 11:04:46 +0000 UTC FinishedAt: 2026-07-29 11:06:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*271a68b2-de99-411e-8833-a6fd5b2dd7e2,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-workflowg9q75/series-workflowg9q75-build-action-2344675447/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-workflowg9q75[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadget_bind","gadget_unbind","raw_ioctl","raw_process_ep0_io","raw_process_ep_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"6431a49d-e142-4799-a9d2-a1a766f5dc5e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-29 11:06:52 +0000 UTC FinishedAt: 2026-07-29 11:06:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg9q75[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadget_bind","gadget_unbind","raw_ioctl","raw_process_ep0_io","raw_process_ep_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"6431a49d-e142-4799-a9d2-a1a766f5dc5e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-29 11:06:52 +0000 UTC FinishedAt: 2026-07-29 11:06:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg9q75[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadget_bind","gadget_unbind","raw_ioctl","raw_process_ep0_io","raw_process_ep_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"6431a49d-e142-4799-a9d2-a1a766f5dc5e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-29 11:06:52 +0000 UTC FinishedAt: 2026-07-29 11:31:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg9q75[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadget_bind","gadget_unbind","raw_ioctl","raw_process_ep0_io","raw_process_ep_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"6431a49d-e142-4799-a9d2-a1a766f5dc5e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-29 11:06:52 +0000 UTC FinishedAt: 2026-07-29 11:31:20 +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:*2f90fd9b-c470-4a64-9361-4ffc1fac99bc,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-workflowg9q75/series-workflowg9q75-convert-artifact-2948252332/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": "84b09867-f929-440b-999a-4cb775871fa2", "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-workflowg9q75/series-workflowg9q75-build-action-484198728/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowg9q75[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadget_bind","gadget_unbind","raw_ioctl","raw_process_ep0_io","raw_process_ep_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"6431a49d-e142-4799-a9d2-a1a766f5dc5e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-29 11:06:52 +0000 UTC FinishedAt: 2026-07-29 11:31:08 +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:*2f90fd9b-c470-4a64-9361-4ffc1fac99bc,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-workflowg9q75/series-workflowg9q75-convert-artifact-2948252332/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": "84b09867-f929-440b-999a-4cb775871fa2", "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-workflowg9q75/series-workflowg9q75-build-action-484198728/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowg9q75[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadget_bind","gadget_unbind","raw_ioctl","raw_process_ep0_io","raw_process_ep_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"6431a49d-e142-4799-a9d2-a1a766f5dc5e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-29 11:31:20 +0000 UTC FinishedAt: 2026-07-29 11:31:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg9q75[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadget_bind","gadget_unbind","raw_ioctl","raw_process_ep0_io","raw_process_ep_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"6431a49d-e142-4799-a9d2-a1a766f5dc5e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-29 11:31:20 +0000 UTC FinishedAt: 2026-07-29 11:31:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg9q75[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadget_bind","gadget_unbind","raw_ioctl","raw_process_ep0_io","raw_process_ep_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"6431a49d-e142-4799-a9d2-a1a766f5dc5e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-29 11:31:20 +0000 UTC FinishedAt: 2026-07-29 11:33:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg9q75[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadget_bind","gadget_unbind","raw_ioctl","raw_process_ep0_io","raw_process_ep_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"6431a49d-e142-4799-a9d2-a1a766f5dc5e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-29 11:31:20 +0000 UTC FinishedAt: 2026-07-29 11:33:02 +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:*84b09867-f929-440b-999a-4cb775871fa2,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-workflowg9q75/series-workflowg9q75-build-action-484198728/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-workflowg9q75[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadget_bind","gadget_unbind","raw_ioctl","raw_process_ep0_io","raw_process_ep_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"6431a49d-e142-4799-a9d2-a1a766f5dc5e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-29 11:33:12 +0000 UTC FinishedAt: 2026-07-29 14:34:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg9q75[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadget_bind","gadget_unbind","raw_ioctl","raw_process_ep0_io","raw_process_ep_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"6431a49d-e142-4799-a9d2-a1a766f5dc5e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-29 11:33:12 +0000 UTC FinishedAt: 2026-07-29 14:34:58 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadget_bind","gadget_unbind","raw_ioctl","raw_process_ep0_io","raw_process_ep_io"],"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:*271a68b2-de99-411e-8833-a6fd5b2dd7e2,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*84b09867-f929-440b-999a-4cb775871fa2,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-workflowg9q75/series-workflowg9q75-build-action-2344675447/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-workflowg9q75/series-workflowg9q75-build-action-484198728/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowg9q75[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadget_bind","gadget_unbind","raw_ioctl","raw_process_ep0_io","raw_process_ep_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"6431a49d-e142-4799-a9d2-a1a766f5dc5e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-29 11:33:12 +0000 UTC FinishedAt: 2026-07-29 11:33:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg9q75[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadget_bind","gadget_unbind","raw_ioctl","raw_process_ep0_io","raw_process_ep_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"6431a49d-e142-4799-a9d2-a1a766f5dc5e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-29 11:33:12 +0000 UTC FinishedAt: 2026-07-29 11:33:29 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadget_bind","gadget_unbind","raw_ioctl","raw_process_ep0_io","raw_process_ep_io"],"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-workflowg9q75/series-workflowg9q75-convert-artifact-4178075797/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowg9q75[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadget_bind","gadget_unbind","raw_ioctl","raw_process_ep0_io","raw_process_ep_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"6431a49d-e142-4799-a9d2-a1a766f5dc5e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-29 11:33:12 +0000 UTC FinishedAt: 2026-07-29 11:33:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg9q75[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadget_bind","gadget_unbind","raw_ioctl","raw_process_ep0_io","raw_process_ep_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"6431a49d-e142-4799-a9d2-a1a766f5dc5e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-29 11:33:12 +0000 UTC FinishedAt: 2026-07-29 11:33:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg9q75[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadget_bind","gadget_unbind","raw_ioctl","raw_process_ep0_io","raw_process_ep_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"6431a49d-e142-4799-a9d2-a1a766f5dc5e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-29 11:33:12 +0000 UTC FinishedAt: 2026-07-29 11:33:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg9q75[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadget_bind","gadget_unbind","raw_ioctl","raw_process_ep0_io","raw_process_ep_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"6431a49d-e142-4799-a9d2-a1a766f5dc5e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-29 11:33:36 +0000 UTC FinishedAt: 2026-07-29 14:34:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg9q75[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["gadget_bind","gadget_unbind","raw_ioctl","raw_process_ep0_io","raw_process_ep_io"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["USB","USB_GADGET","USB_RAW_GADGET","USB_DUMMY_HCD"],"series_id":"6431a49d-e142-4799-a9d2-a1a766f5dc5e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-29 11:33:36 +0000 UTC FinishedAt: 2026-07-29 14:34:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*271a68b2-de99-411e-8833-a6fd5b2dd7e2,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*84b09867-f929-440b-999a-4cb775871fa2,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-workflowg9q75/series-workflowg9q75-build-action-2344675447/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-workflowg9q75/series-workflowg9q75-build-action-484198728/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-workflowg9q75/series-workflowg9q75-convert-artifact-4178075797/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,}