I2lmZGVmIE9QRU5TU0xfRklQU0NBTklTVEVSCiNpbmNsdWRlIDxvcGVuc3NsL2ZpcHNzeW1zLmg+CiNlbmRpZgoKI2lmIGRlZmluZWQoX19TVU5QUk9fQykgJiYgZGVmaW5lZChfX3NwYXJjdjkpCiMgZGVmaW5lIEFCSTY0ICAvKiBUaGV5J3ZlIHNhaWQgLXhhcmNoPXY5IGF0IGNvbW1hbmQgbGluZSAqLwojZWxpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9fYXJjaDY0X18pCiMgZGVmaW5lIEFCSTY0ICAvKiBUaGV5J3ZlIHNhaWQgLW02NCBhdCBjb21tYW5kIGxpbmUgKi8KI2VuZGlmCgojaWZkZWYgQUJJNjQKICAucmVnaXN0ZXIJJWcyLCNzY3JhdGNoCiAgLnJlZ2lzdGVyCSVnMywjc2NyYXRjaAojIGRlZmluZQlGUkFNRQktMTkyCiMgZGVmaW5lCUJJQVMJMjA0NwojZWxzZQojIGRlZmluZQlGUkFNRQktOTYKIyBkZWZpbmUJQklBUwkwCiNlbmRpZgoKLnRleHQKLmFsaWduCTMyCi5nbG9iYWwJT1BFTlNTTF93aXBlX2NwdQoudHlwZQlPUEVOU1NMX3dpcGVfY3B1LCNmdW5jdGlvbgohIEtlZXAgaW4gbWluZCB0aGF0IHRoaXMgZG9lcyBub3QgZXhjdXNlIHVzIGZyb20gd2lwaW5nIHRoZSBzdGFjayEKISBUaGlzIHJvdXRpbmUgd2lwZXMgcmVnaXN0ZXJzLCBidXQgbm90IHRoZSBiYWNraW5nIHN0b3JlIFt3aGljaAohIHJlc2lkZXMgb24gdGhlIHN0YWNrLCB0b3dhcmQgbG93ZXIgYWRkcmVzc2VzXS4gVG8gZmFjaWxpdGF0ZSBmb3IKISBzdGFjayB3aXBpbmcgSSByZXR1cm4gcG9pbnRlciB0byB0aGUgdG9wIG9mIHN0YWNrIG9mIHRoZSAqY2FsbGVyKi4KT1BFTlNTTF93aXBlX2NwdToKCXNhdmUJJXNwLEZSQU1FLCVzcAoJbm9wCiNpZmRlZiBfX3N1bgojaW5jbHVkZSA8c3lzL3RyYXAuaD4KCXRhCVNUX0NMRUFOX1dJTkRPV1MKI2Vsc2UKCWNhbGwJLndhbGsucmVnLndpbnMKI2VuZGlmCglub3AKCWNhbGwJLlBJQy56ZXJvLnVwCgltb3YJLnplcm8tKC4tNCksJW8wCglsZAlbJW8wXSwlZjAKCWxkCVslbzBdLCVmMQoKCXN1YmNjCSVnMCwxLCVvMAoJISBGb2xsb3dpbmcgaXMgVjkgInJkICVjY3IsJW8wIiBpbnN0cnVjdGlvbi4gSG93ZXZlciEgVjgKCSEgc3BlY2lmaWNhdGlvbiBzYXlzIHRoYXQgaXQgKCJyZCAlYXNyMiwlbzAiIGluIFY4IHRlcm1zKSBkb2VzCgkhIG5vdCBjYXVzZSBpbGxlZ2FsX2luc3RydWN0aW9uIHRyYXAuIEl0IHRoZXJlZm9yZSBjYW4gYmUgdXNlZAoJISB0byBkZXRlcm1pbmUgaWYgdGhlIENQVSB0aGUgY29kZSBpcyBleGVjdXRpbmcgb24gaXMgVjgtIG9yCgkhIFY5LWNvbXBsaWFudCwgYXMgVjkgcmV0dXJucyBhIGRpc3RpbmN0IHZhbHVlIG9mIDB4OTksCgkhICJuZWdhdGl2ZSIgYW5kICJib3Jyb3ciIGJpdHMgc2V0IGluIGJvdGggJWljYyBhbmQgJXhjYy4KCS53b3JkCTB4OTE0MDgwMDAJIXJkCSVjY3IsJW8wCgljbXAJJW8wLDB4OTkKCWJuZQkudjgKCW5vcAoJCQkhIEV2ZW4gdGhvdWdoIHdlIGRvIG5vdCB1c2UgJWZwIHJlZ2lzdGVyIGJhbmssCgkJCSEgd2Ugd2lwZSBpdCBhcyBtZW1jcHkgbWlnaHQgaGF2ZSB1c2VkIGl0Li4uCgkJCS53b3JkCTB4YmZhMDAwNDAJIWZtb3ZkCSVmMCwlZjYyCgkJCS53b3JkCTB4YmJhMDAwNDAJIS4uLgoJCQkud29yZAkweGI3YTAwMDQwCgkJCS53b3JkCTB4YjNhMDAwNDAKCQkJLndvcmQJMHhhZmEwMDA0MAoJCQkud29yZAkweGFiYTAwMDQwCgkJCS53b3JkCTB4YTdhMDAwNDAKCQkJLndvcmQJMHhhM2EwMDA0MAoJCQkud29yZAkweDlmYTAwMDQwCgkJCS53b3JkCTB4OWJhMDAwNDAKCQkJLndvcmQJMHg5N2EwMDA0MAoJCQkud29yZAkweDkzYTAwMDQwCgkJCS53b3JkCTB4OGZhMDAwNDAKCQkJLndvcmQJMHg4YmEwMDA0MAoJCQkud29yZAkweDg3YTAwMDQwCgkJCS53b3JkCTB4ODNhMDAwNDAJIWZtb3ZkCSVmMCwlZjMyCi52ODoJCQlmbW92cwklZjEsJWYzMQoJY2xyCSVvMAoJCQlmbW92cwklZjAsJWYzMAoJY2xyCSVvMQoJCQlmbW92cwklZjEsJWYyOQoJY2xyCSVvMgoJCQlmbW92cwklZjAsJWYyOAoJY2xyCSVvMwoJCQlmbW92cwklZjEsJWYyNwoJY2xyCSVvNAoJCQlmbW92cwklZjAsJWYyNgoJY2xyCSVvNQoJCQlmbW92cwklZjEsJWYyNQoJY2xyCSVvNwoJCQlmbW92cwklZjAsJWYyNAoJY2xyCSVsMAoJCQlmbW92cwklZjEsJWYyMwoJY2xyCSVsMQoJCQlmbW92cwklZjAsJWYyMgoJY2xyCSVsMgoJCQlmbW92cwklZjEsJWYyMQoJY2xyCSVsMwoJCQlmbW92cwklZjAsJWYyMAoJY2xyCSVsNAoJCQlmbW92cwklZjEsJWYxOQoJY2xyCSVsNQoJCQlmbW92cwklZjAsJWYxOAoJY2xyCSVsNgoJCQlmbW92cwklZjEsJWYxNwoJY2xyCSVsNwoJCQlmbW92cwklZjAsJWYxNgoJY2xyCSVpMAoJCQlmbW92cwklZjEsJWYxNQoJY2xyCSVpMQoJCQlmbW92cwklZjAsJWYxNAoJY2xyCSVpMgoJCQlmbW92cwklZjEsJWYxMwoJY2xyCSVpMwoJCQlmbW92cwklZjAsJWYxMgoJY2xyCSVpNAoJCQlmbW92cwklZjEsJWYxMQoJY2xyCSVpNQoJCQlmbW92cwklZjAsJWYxMAoJY2xyCSVnMQoJCQlmbW92cwklZjEsJWY5CgljbHIJJWcyCgkJCWZtb3ZzCSVmMCwlZjgKCWNscgklZzMKCQkJZm1vdnMJJWYxLCVmNwoJY2xyCSVnNAoJCQlmbW92cwklZjAsJWY2CgljbHIJJWc1CgkJCWZtb3ZzCSVmMSwlZjUKCQkJZm1vdnMJJWYwLCVmNAoJCQlmbW92cwklZjEsJWYzCgkJCWZtb3ZzCSVmMCwlZjIKCglhZGQJJWZwLEJJQVMsJWkwCSEgcmV0dXJuIHBvaW50ZXIgdG8gY2FsbGVytHMgdG9wIG9mIHN0YWNrCgoJcmV0CglyZXN0b3JlCgouemVybzoJLmxvbmcJMHgwLDB4MAouUElDLnplcm8udXA6CglyZXRsCglhZGQJJW8wLCVvNywlbzAKI2lmZGVmIERFQlVHCi5nbG9iYWwJd2Fsa19yZWdfd2lucwoudHlwZQl3YWxrX3JlZ193aW5zLCNmdW5jdGlvbgp3YWxrX3JlZ193aW5zOgojZW5kaWYKLndhbGsucmVnLndpbnM6CglzYXZlCSVzcCxGUkFNRSwlc3AKCWNtcAklaTcsJW83CgliZQkyZgoJY2xyCSVvMAoJY21wCSVvNywwCSEgY29tcGlsZXIgbmV2ZXIgY2xlYW5zICVvNy4uLgoJYmUJMWYJISBjb3VsZCBoYXZlIGJlZW4gYSBsZWFmIGZ1bmN0aW9uLi4uCgljbHIJJW8xCgljYWxsCS53YWxrLnJlZy53aW5zCglub3AKMToJY2xyCSVvMgoJY2xyCSVvMwoJY2xyCSVvNAoJY2xyCSVvNQoJY2xyCSVvNwoJY2xyCSVsMAoJY2xyCSVsMQoJY2xyCSVsMgoJY2xyCSVsMwoJY2xyCSVsNAoJY2xyCSVsNQoJY2xyCSVsNgoJY2xyCSVsNwoJYWRkCSVvMCwxLCVpMAkhIHVzZWQgZm9yIGRlYnVnZ2luZwoyOglyZXQKCXJlc3RvcmUKLnNpemUJT1BFTlNTTF93aXBlX2NwdSwuLU9QRU5TU0xfd2lwZV9jcHUKCi5nbG9iYWwJT1BFTlNTTF9hdG9taWNfYWRkCi50eXBlCU9QRU5TU0xfYXRvbWljX2FkZCwjZnVuY3Rpb24KLmFsaWduCTMyCk9QRU5TU0xfYXRvbWljX2FkZDoKI2lmbmRlZiBBQkk2NAoJc3ViY2MJJWcwLDEsJW8yCgkud29yZAkweDk1NDA4MDAwCSFyZAklY2NyLCVvMiwgc2VlIGNvbW1lbnQgYWJvdmUKCWNtcAklbzIsMHg5OQoJYmUJLnY5Cglub3AKCXNhdmUJJXNwLEZSQU1FLCVzcAoJYmEJLmVudGVyCglub3AKI2lmZGVmIF9fc3VuCiEgTm90ZSB0aGF0IHlvdSBkbyBub3QgaGF2ZSB0byBsaW5rIHdpdGggbGlidGhyZWFkIHRvIGNhbGwgdGhyX3lpZWxkLAohIGFzIGxpYmMgcHJvdmlkZXMgYSBzdHViLCB3aGljaCBpcyBvdmVybG9hZGVkIHRoZSBtb21lbnQgeW91IGxpbmsKISB3aXRoICplaXRoZXIqIGxpYnB0aHJlYWQgb3IgbGlidGhyZWFkLi4uCiNkZWZpbmUJWUlFTERfQ1BVCXRocl95aWVsZAojZWxzZQohIGFwcGxpZXMgYXQgbGVhc3QgdG8gTGludXggYW5kIEZyZWVCU0QuLi4gRmVlZGJhY2sgZXhwZWN0ZWQuLi4KI2RlZmluZQlZSUVMRF9DUFUJc2NoZWRfeWllbGQKI2VuZGlmCi5zcGluOgljYWxsCVlJRUxEX0NQVQoJbm9wCi5lbnRlcjoJbGQJWyVpMF0sJWkyCgljbXAJJWkyLC00MDk2CgliZQkuc3BpbgoJbW92CS0xLCVpMgoJc3dhcAlbJWkwXSwlaTIKCWNtcAklaTIsLTEKCWJlCS5zcGluCglhZGQJJWkyLCVpMSwlaTIKCXN0YmFyCglzdAklaTIsWyVpMF0KCXNyYQklaTIsJWcwLCVpMAoJcmV0CglyZXN0b3JlCi52OToKI2VuZGlmCglsZAlbJW8wXSwlbzIKMToJYWRkCSVvMSwlbzIsJW8zCgkud29yZAkweGQ3ZTIxMDBhCSFjYXMgWyVvMF0sJW8yLCVvMywgY29tcGFyZSBbJW8wXSB3aXRoICVvMiBhbmQgc3dhcCAlbzMKCWNtcAklbzIsJW8zCglibmUJMWIKCW1vdgklbzMsJW8yCQkhIGNhcyBpcyBhbHdheXMgZmV0Y2hpbmcgdG8gZGVzdC4gcmVnaXN0ZXIKCWFkZAklbzEsJW8yLCVvMAkhIE9wZW5TU0wgZXhwZWN0cyB0aGUgbmV3IHZhbHVlCglyZXRsCglzcmEJJW8wLCVnMCwlbzAJISB3ZSByZXR1cm4gc2lnbmVkIGludCwgcmVtZW1iZXI/Ci5zaXplCU9QRU5TU0xfYXRvbWljX2FkZCwuLU9QRU5TU0xfYXRvbWljX2FkZAoKLmdsb2JhbAlfc3BhcmN2OV9yZHRpY2sKLmFsaWduCTMyCl9zcGFyY3Y5X3JkdGljazoKCXN1YmNjCSVnMCwxLCVvMAoJLndvcmQJMHg5MTQwODAwMAkhcmQJJWNjciwlbzAKCWNtcAklbzAsMHg5OQoJYm5lCS5ub3RpY2sKCXhvcgklbzAsJW8wLCVvMAoJLndvcmQJMHg5MTQxMDAwMAkhcmQJJXRpY2ssJW8wCglyZXRsCgkud29yZAkweDkzMzIzMDIwCSFzcmx4CSVvMCwzMiwlbzEKLm5vdGljazoKCXJldGwKCXhvcgklbzEsJW8xLCVvMQoudHlwZQlfc3BhcmN2OV9yZHRpY2ssI2Z1bmN0aW9uCi5zaXplCV9zcGFyY3Y5X3JkdGljaywuLV9zcGFyY3Y5X3JkdGljawoKLmdsb2JhbAlfc3BhcmN2OV92aXMxX3Byb2JlCi5hbGlnbgk4Cl9zcGFyY3Y5X3ZpczFfcHJvYmU6CglhZGQJJXNwLEJJQVMrMiwlbzEKCS53b3JkCTB4YzE5YTVhNDAJIWxkZGEJWyVvMV1BU0lfRlAxNl9QLCVmMAoJcmV0bAoJLndvcmQJMHg4MWIwMGQ4MAkhZnhvcgklZjAsJWYwLCVmMAoudHlwZQlfc3BhcmN2OV92aXMxX3Byb2JlLCNmdW5jdGlvbgouc2l6ZQlfc3BhcmN2OV92aXMxX3Byb2JlLC4tX3NwYXJjdjlfdmlzMV9wcm9iZQoKISBQcm9iZSBhbmQgaW5zdHJ1bWVudCBWSVMxIGluc3RydWN0aW9uLiBPdXRwdXQgaXMgbnVtYmVyIG9mIGN5Y2xlcyBpdAohIHRha2VzIHRvIGV4ZWN1dGUgcmR0aWNrIGFuZCBwYWlyIG9mIFZJUzEgaW5zdHJ1Y3Rpb25zLiBVUy1UeCBWSVMgdW5pdAohIGlzIHNsb3cgKGRvY3VtZW50ZWQgdG8gYmUgNiBjeWNsZXMgb24gVDIpIGFuZCB0aGUgY29yZSBpcyBpbi1vcmRlcgohIHNpbmdsZS1pc3N1ZSwgaXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIGRpc3Rpbmd1aXNoIFR4IHJlbGlhYmx5Li4uCiEgT2JzZXJ2ZWQgcmV0dXJuIHZhbHVlcyBhcmU6CiEKIQlVbHRyYVNQQVJDIElJZQkJNwohCVVsdHJhU1BBUkMgSUlJCQk3CiEJVWx0cmFTUEFSQyBUMQkJMjQKIQlTUEFSQyBUNAkJNjUoKikKIQohICgqKQlyZXN1bHQgaGFzIGxlc3NlciB0byBkbyB3aXRoIFZJUyBpbnN0cnVjdGlvbiBsYXRlbmNpZXMsIHJkdGljawohCWFwcGVhcnMgdGhhdCBzbG93LCBidXQgaXQgZG9lcyB0aGUgdHJpY2sgaW4gc2Vuc2UgdGhhdCBGUCBhbmQKIQlWSVMgY29kZSBwYXRocyBhcmUgc3RpbGwgc2xvd2VyIHRoYW4gaW50ZWdlci1vbmx5IG9uZXMuCiEKISBOdW1iZXJzIGZvciBUMiBhbmQgU1BBUkM2NCBWLVZJSSBhcmUgbW9yZSB0aGFuIHdlbGNvbWVkLgohCiEgSXQgd291bGQgYmUgcG9zc2libGUgdG8gZGV0ZWN0IHNwZWNpZmljYWxseSBVUy1UMSBieSBpbnN0cnVtZW50aW5nCiEgZm11bDh1bHgxNiwgd2hpY2ggaXMgZW11bGF0ZWQgb24gVDEgYW5kIGFzIHN1Y2ggYWNjb3VudHMgZm9yIHF1aXRlCiEgYSBsb3Qgb2YgJXRpY2stcywgY291cGxlIG9mIHRob3VzYW5kIG9uIExpbnV4Li4uCi5nbG9iYWwJX3NwYXJjdjlfdmlzMV9pbnN0cnVtZW50Ci5hbGlnbgk4Cl9zcGFyY3Y5X3ZpczFfaW5zdHJ1bWVudDoKCS53b3JkCTB4ODFiMDBkODAJIWZ4b3IJJWYwLCVmMCwlZjAKCS53b3JkCTB4ODViMDhkODIJIWZ4b3IJJWYyLCVmMiwlZjIKCS53b3JkCTB4OTE0MTAwMDAJIXJkCSV0aWNrLCVvMAoJLndvcmQJMHg4MWIwMGQ4MAkhZnhvcgklZjAsJWYwLCVmMAoJLndvcmQJMHg4NWIwOGQ4MgkhZnhvcgklZjIsJWYyLCVmMgoJLndvcmQJMHg5MzQxMDAwMAkhcmQJJXRpY2ssJW8xCgkud29yZAkweDgxYjAwZDgwCSFmeG9yCSVmMCwlZjAsJWYwCgkud29yZAkweDg1YjA4ZDgyCSFmeG9yCSVmMiwlZjIsJWYyCgkud29yZAkweDk1NDEwMDAwCSFyZAkldGljaywlbzIKCS53b3JkCTB4ODFiMDBkODAJIWZ4b3IJJWYwLCVmMCwlZjAKCS53b3JkCTB4ODViMDhkODIJIWZ4b3IJJWYyLCVmMiwlZjIKCS53b3JkCTB4OTc0MTAwMDAJIXJkCSV0aWNrLCVvMwoJLndvcmQJMHg4MWIwMGQ4MAkhZnhvcgklZjAsJWYwLCVmMAoJLndvcmQJMHg4NWIwOGQ4MgkhZnhvcgklZjIsJWYyLCVmMgoJLndvcmQJMHg5OTQxMDAwMAkhcmQJJXRpY2ssJW80CgoJISBjYWxjdWxhdGUgaW50ZXJ2YWxzCglzdWIJJW8xLCVvMCwlbzAKCXN1YgklbzIsJW8xLCVvMQoJc3ViCSVvMywlbzIsJW8yCglzdWIJJW80LCVvMywlbzMKCgkhIGZpbmQgbWludW11bSB2YWx1ZQoJY21wCSVvMCwlbzEKCS53b3JkCTB4Mzg2ODAwMDIJIWJndSxhCSV4Y2MsLis4Cgltb3YJJW8xLCVvMAoJY21wCSVvMCwlbzIKCS53b3JkCTB4Mzg2ODAwMDIJIWJndSxhCSV4Y2MsLis4Cgltb3YJJW8yLCVvMAoJY21wCSVvMCwlbzMKCS53b3JkCTB4Mzg2ODAwMDIJIWJndSxhCSV4Y2MsLis4Cgltb3YJJW8zLCVvMAoKCXJldGwKCW5vcAoudHlwZQlfc3BhcmN2OV92aXMxX2luc3RydW1lbnQsI2Z1bmN0aW9uCi5zaXplCV9zcGFyY3Y5X3ZpczFfaW5zdHJ1bWVudCwuLV9zcGFyY3Y5X3ZpczFfaW5zdHJ1bWVudAoKLmdsb2JhbAlfc3BhcmN2OV92aXMyX3Byb2JlCi5hbGlnbgk4Cl9zcGFyY3Y5X3ZpczJfcHJvYmU6CglyZXRsCgkud29yZAkweDgxYjAwOTgwCSFic2h1ZmZsZQklZjAsJWYwLCVmMAoudHlwZQlfc3BhcmN2OV92aXMyX3Byb2JlLCNmdW5jdGlvbgouc2l6ZQlfc3BhcmN2OV92aXMyX3Byb2JlLC4tX3NwYXJjdjlfdmlzMl9wcm9iZQoKLmdsb2JhbAlfc3BhcmN2OV9mbWFkZF9wcm9iZQouYWxpZ24JOApfc3BhcmN2OV9mbWFkZF9wcm9iZToKCS53b3JkCTB4ODFiMDBkODAJIWZ4b3IJJWYwLCVmMCwlZjAKCS53b3JkCTB4ODViMDhkODIJIWZ4b3IJJWYyLCVmMiwlZjIKCXJldGwKCS53b3JkCTB4ODFiODA0NDAJIWZtYWRkZAklZjAsJWYwLCVmMiwlZjAKLnR5cGUJX3NwYXJjdjlfZm1hZGRfcHJvYmUsI2Z1bmN0aW9uCi5zaXplCV9zcGFyY3Y5X2ZtYWRkX3Byb2JlLC4tX3NwYXJjdjlfZm1hZGRfcHJvYmUKCi5nbG9iYWwJX3NwYXJjdjlfcmRjZnIKLmFsaWduCTgKX3NwYXJjdjlfcmRjZnI6CglyZXRsCgkud29yZAkweDkxNDY4MDAwCSFyZAklYXNyMjYsJW8wCi50eXBlCV9zcGFyY3Y5X3JkY2ZyLCNmdW5jdGlvbgouc2l6ZQlfc3BhcmN2OV9yZGNmciwuLV9zcGFyY3Y5X3JkY2ZyCgouZ2xvYmFsCV9zcGFyY3Y5X3ZpczNfcHJvYmUKLmFsaWduCTgKX3NwYXJjdjlfdmlzM19wcm9iZToKCXJldGwKCS53b3JkCTB4ODFiMDIyYTAJIXhtdWx4CSVnMCwlZzAsJWcwCi50eXBlCV9zcGFyY3Y5X3ZpczNfcHJvYmUsI2Z1bmN0aW9uCi5zaXplCV9zcGFyY3Y5X3ZpczNfcHJvYmUsLi1fc3BhcmN2OV92aXMzX3Byb2JlCgouZ2xvYmFsCV9zcGFyY3Y5X3JhbmRvbQouYWxpZ24JOApfc3BhcmN2OV9yYW5kb206CglyZXRsCgkud29yZAkweDkxYjAwMmEwCSFyYW5kb20JJW8wCi50eXBlCV9zcGFyY3Y5X3JhbmRvbSwjZnVuY3Rpb24KLnNpemUJX3NwYXJjdjlfcmFuZG9tLC4tX3NwYXJjdjlfdmlzM19wcm9iZQoKLmdsb2JhbAlPUEVOU1NMX2NsZWFuc2UKLmFsaWduCTMyCk9QRU5TU0xfY2xlYW5zZToKCWNtcAklbzEsMTQKCW5vcAojaWZkZWYgQUJJNjQKCWJndQkleGNjLC5Mb3QKI2Vsc2UKCWJndQkuTG90CiNlbmRpZgoJY21wCSVvMSwwCglibmUJLkxpdHRsZQoJbm9wCglyZXRsCglub3AKCi5MaXR0bGU6CglzdGIJJWcwLFslbzBdCglzdWJjYwklbzEsMSwlbzEKCWJuegkuTGl0dGxlCglhZGQJJW8wLDEsJW8wCglyZXRsCglub3AKLmFsaWduCTMyCi5Mb3Q6CiNpZm5kZWYgQUJJNjQKCXN1YmNjCSVnMCwxLCVnMQoJISBzZWUgYWJvdmUgZm9yIGV4cGxhbmF0aW9uCgkud29yZAkweDgzNDA4MDAwCSFyZAklY2NyLCVnMQoJY21wCSVnMSwweDk5CglibmUJLnY4bG90Cglub3AKI2VuZGlmCgoudjlsb3Q6CWFuZGNjCSVvMCw3LCVnMAoJYnoJLnY5YWxpZ25lZAoJbm9wCglzdGIJJWcwLFslbzBdCglzdWIJJW8xLDEsJW8xCgliYQkudjlsb3QKCWFkZAklbzAsMSwlbzAKLmFsaWduCTE2LDB4MDEwMDAwMDAKLnY5YWxpZ25lZDoKCS53b3JkCTB4YzA3MjAwMDAJIXN0eAklZzAsWyVvMF0KCXN1YgklbzEsOCwlbzEKCWFuZGNjCSVvMSwtOCwlZzAKI2lmZGVmIEFCSTY0Cgkud29yZAkweDEyNmZmZmZkCSFibnoJJXhjYywudjlhbGlnbmVkCiNlbHNlCgkud29yZAkweDEyNGZmZmZkCSFibnoJJWljYywudjlhbGlnbmVkCiNlbmRpZgoJYWRkCSVvMCw4LCVvMAoKCWNtcAklbzEsMAoJYm5lCS5MaXR0bGUKCW5vcAoJcmV0bAoJbm9wCiNpZm5kZWYgQUJJNjQKLnY4bG90OglhbmRjYwklbzAsMywlZzAKCWJ6CS52OGFsaWduZWQKCW5vcAoJc3RiCSVnMCxbJW8wXQoJc3ViCSVvMSwxLCVvMQoJYmEJLnY4bG90CglhZGQJJW8wLDEsJW8wCglub3AKLnY4YWxpZ25lZDoKCXN0CSVnMCxbJW8wXQoJc3ViCSVvMSw0LCVvMQoJYW5kY2MJJW8xLC00LCVnMAoJYm56CS52OGFsaWduZWQKCWFkZAklbzAsNCwlbzAKCgljbXAJJW8xLDAKCWJuZQkuTGl0dGxlCglub3AKCXJldGwKCW5vcAojZW5kaWYKLnR5cGUJT1BFTlNTTF9jbGVhbnNlLCNmdW5jdGlvbgouc2l6ZQlPUEVOU1NMX2NsZWFuc2UsLi1PUEVOU1NMX2NsZWFuc2UKCi5nbG9iYWwJX3NwYXJjdjlfdmlzMV9pbnN0cnVtZW50X2J1cwouYWxpZ24JOApfc3BhcmN2OV92aXMxX2luc3RydW1lbnRfYnVzOgoJbW92CSVvMSwlbzMJCQkJCSEgc2F2ZSBjbnQKCS53b3JkCTB4OTk0MTAwMDAJIXJkCSV0aWNrLCVvNAkhIHRpY2sKCW1vdgklbzQsJW81CQkJCQkhIGxhc3R0aWNrID0gdGljawoJc2V0CTAsJWc0CQkJCQkhIGRpZmYKCglhbmRuCSVvMCw2MywlZzEKCS53b3JkCTB4YzE5ODVlMDAJIWxkZGEJWyVnMV0weGYwLCVmMAkhIGJsb2NrIGxvYWQKCS53b3JkCTB4ODE0M2UwNDAJIW1lbWJhcgkjU3luYwoJLndvcmQJMHhjMWI4NWMwMAkhc3RkYQklZjAsWyVnMV0weGUwCSEgYmxvY2sgc3RvcmUgYW5kIGNvbW1pdAoJLndvcmQJMHg4MTQzZTA0MAkhbWVtYmFyCSNTeW5jCglsZAlbJW8wXSwlbzQKCWFkZAklbzQsJWc0LCVnNAoJLndvcmQJMHhjOWUyMTAwYwkhY2FzCVslbzBdLCVvNCwlZzQKCi5Mb29wOgkud29yZAkweDk5NDEwMDAwCSFyZAkldGljaywlbzQKCXN1YgklbzQsJW81LCVnNAkJCQkhIGRpZmY9dGljay1sYXN0dGljawoJbW92CSVvNCwlbzUJCQkJCSEgbGFzdHRpY2s9dGljawoKCWFuZG4JJW8wLDYzLCVnMQoJLndvcmQJMHhjMTk4NWUwMAkhbGRkYQlbJWcxXTB4ZjAsJWYwCSEgYmxvY2sgbG9hZAoJLndvcmQJMHg4MTQzZTA0MAkhbWVtYmFyCSNTeW5jCgkud29yZAkweGMxYjg1YzAwCSFzdGRhCSVmMCxbJWcxXTB4ZTAJISBibG9jayBzdG9yZSBhbmQgY29tbWl0Cgkud29yZAkweDgxNDNlMDQwCSFtZW1iYXIJI1N5bmMKCWxkCVslbzBdLCVvNAoJYWRkCSVvNCwlZzQsJWc0Cgkud29yZAkweGM5ZTIxMDBjCSFjYXMJWyVvMF0sJW80LCVnNAoJc3ViY2MJJW8xLDEsJW8xCQkJCSEgLS0kY250CglibnoJLkxvb3AKCWFkZAklbzAsNCwlbzAJCQkJISArKyRvdXQKCglyZXRsCgltb3YJJW8zLCVvMAoudHlwZQlfc3BhcmN2OV92aXMxX2luc3RydW1lbnRfYnVzLCNmdW5jdGlvbgouc2l6ZQlfc3BhcmN2OV92aXMxX2luc3RydW1lbnRfYnVzLC4tX3NwYXJjdjlfdmlzMV9pbnN0cnVtZW50X2J1cwoKLmdsb2JhbAlfc3BhcmN2OV92aXMxX2luc3RydW1lbnRfYnVzMgouYWxpZ24JOApfc3BhcmN2OV92aXMxX2luc3RydW1lbnRfYnVzMjoKCW1vdgklbzEsJW8zCQkJCQkhIHNhdmUgY250CglzbGwJJW8xLDIsJW8xCQkJCSEgY250Kj00CgoJLndvcmQJMHg5OTQxMDAwMAkhcmQJJXRpY2ssJW80CSEgdGljawoJbW92CSVvNCwlbzUJCQkJCSEgbGFzdHRpY2sgPSB0aWNrCglzZXQJMCwlZzQJCQkJCSEgZGlmZgoKCWFuZG4JJW8wLDYzLCVnMQoJLndvcmQJMHhjMTk4NWUwMAkhbGRkYQlbJWcxXTB4ZjAsJWYwCSEgYmxvY2sgbG9hZAoJLndvcmQJMHg4MTQzZTA0MAkhbWVtYmFyCSNTeW5jCgkud29yZAkweGMxYjg1YzAwCSFzdGRhCSVmMCxbJWcxXTB4ZTAJISBibG9jayBzdG9yZSBhbmQgY29tbWl0Cgkud29yZAkweDgxNDNlMDQwCSFtZW1iYXIJI1N5bmMKCWxkCVslbzBdLCVvNAoJYWRkCSVvNCwlZzQsJWc0Cgkud29yZAkweGM5ZTIxMDBjCSFjYXMJWyVvMF0sJW80LCVnNAoKCS53b3JkCTB4OTk0MTAwMDAJIXJkCSV0aWNrLCVvNAkhIHRpY2sKCXN1YgklbzQsJW81LCVnNAkJCQkhIGRpZmY9dGljay1sYXN0dGljawoJbW92CSVvNCwlbzUJCQkJCSEgbGFzdHRpY2s9dGljawoJbW92CSVnNCwlZzUJCQkJCSEgbGFzdGRpZmY9ZGlmZgouTG9vcDI6CglhbmRuCSVvMCw2MywlZzEKCS53b3JkCTB4YzE5ODVlMDAJIWxkZGEJWyVnMV0weGYwLCVmMAkhIGJsb2NrIGxvYWQKCS53b3JkCTB4ODE0M2UwNDAJIW1lbWJhcgkjU3luYwoJLndvcmQJMHhjMWI4NWMwMAkhc3RkYQklZjAsWyVnMV0weGUwCSEgYmxvY2sgc3RvcmUgYW5kIGNvbW1pdAoJLndvcmQJMHg4MTQzZTA0MAkhbWVtYmFyCSNTeW5jCglsZAlbJW8wXSwlbzQKCWFkZAklbzQsJWc0LCVnNAoJLndvcmQJMHhjOWUyMTAwYwkhY2FzCVslbzBdLCVvNCwlZzQKCglzdWJjYwklbzIsMSwlbzIJCQkJISAtLW1heAoJYnoJLkxkb25lMgoJbm9wCgoJLndvcmQJMHg5OTQxMDAwMAkhcmQJJXRpY2ssJW80CSEgdGljawoJc3ViCSVvNCwlbzUsJWc0CQkJCSEgZGlmZj10aWNrLWxhc3R0aWNrCgltb3YJJW80LCVvNQkJCQkJISBsYXN0dGljaz10aWNrCgljbXAJJWc0LCVnNQoJbW92CSVnNCwlZzUJCQkJCSEgbGFzdGRpZmY9ZGlmZgoKCS53b3JkCTB4ODM0MDgwMDAJIXJkCSVjY3IsJWcxCglhbmQJJWcxLDQsJWcxCQkJCSEgaXNvbGF0ZSB6ZXJvIGZsYWcKCXhvcgklZzEsNCwlZzEJCQkJISBmbGlwIHplcm8gZmxhZwoKCXN1YmNjCSVvMSwlZzEsJW8xCQkJCSEgY29uZGl0aW9uYWwgLS0kY250CglibnoJLkxvb3AyCglhZGQJJW8wLCVnMSwlbzAJCQkJISBjb25kaXRpb25hbCArKyRvdXQKCi5MZG9uZTI6CglzcmwJJW8xLDIsJW8xCglyZXRsCglzdWIJJW8zLCVvMSwlbzAKLnR5cGUJX3NwYXJjdjlfdmlzMV9pbnN0cnVtZW50X2J1czIsI2Z1bmN0aW9uCi5zaXplCV9zcGFyY3Y5X3ZpczFfaW5zdHJ1bWVudF9idXMyLC4tX3NwYXJjdjlfdmlzMV9pbnN0cnVtZW50X2J1czIKCi5zZWN0aW9uCSIuaW5pdCIsI2FsbG9jLCNleGVjaW5zdHIKCWNhbGwJT1BFTlNTTF9jcHVpZF9zZXR1cAoJbm9wCg==