LyoqCiAqIEBmaWxlIHBiX21zZy5oCiAqIEBicmllZiDD+8asvNDTptPDttTN4szhuam1xM/7z6K8sL3hubnM5aOs1vfSqsq508PV37D8wKh3ZWJzZXJ2ZXK8sHRybzY5u/LG5Mv706bTwwogKgogKiBDb3B5cmlnaHQgKEMpIDIwMTcgU2FuZWNoaXBzIFRlY2hub2xvZ3kgQ28uLCBMdGQuCiAqIEBhdXRob3IKICoKICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCiAqCiAqLwojaWZuZGVmIF9fUEJfTVNHX0hfXwojZGVmaW5lIF9fUEJfTVNHX0hfXwoKI2luY2x1ZGUgIm1lc3NhZ2UuaCIKCiNkZWZpbmUgWlBCX0dST1VQX1NJWkUgICAgICAgICAgMzIKI2RlZmluZSBaUEJfU05FX1NJWkUgICAgICAgICAgICAzMgoKI2lmbmRlZiBaUEJfTUFYX0RFTF9MRU4KI2RlZmluZSBaUEJfTUFYX0RFTF9MRU4gNTAKI2VuZGlmCgojaWZuZGVmIFpQQl9OVU1fU0laRQojZGVmaW5lIFpQQl9OVU1fU0laRSAoWlBCX01BWF9OVU1fTEVOR1RIKzIpICAvKiArIGFuZCBudWxsIGZvciBzdHJpbmcgKi8KI2VuZGlmCgojaWZuZGVmIFpQQl9NQVhfTlVNX0xFTkdUSAojZGVmaW5lIFpQQl9NQVhfTlVNX0xFTkdUSCAgIDQwCiNlbmRpZgoKLy9uYW1lIGxlbmd0aAojaWZuZGVmIFpQQl9NQVhfVEVYVF9MRU5HVEgKI2RlZmluZSBaUEJfTUFYX1RFWFRfTEVOR1RIIDkwCiNlbmRpZgoKI2lmbmRlZiBaUEJfVEVYVF9TSVpFX0NIQVJTCiNkZWZpbmUgWlBCX1RFWFRfU0laRV9DSEFSUyAoWlBCX01BWF9URVhUX0xFTkdUSCsxKSAgICAgICAgICAgICAgLyogTnVsbCB0ZXJtaW5hdGVkIHN0cmluZyAqLwojZW5kaWYKCiNpZm5kZWYgWlBCX1RFWFRfU0laRV9CWVRFUwojZGVmaW5lIFpQQl9URVhUX1NJWkVfQllURVMgKFpQQl9URVhUX1NJWkVfQ0hBUlMqc2l6ZW9mKHNob3J0KSkgLyogc2l6ZSBpbiBieXRlcyAqLwojZW5kaWYKCmVudW0gcGJfbXNnX2NtZCB7CglNU0dfQ01EX1dSSVRFX1BCID0gTVNHX0NNRF9QQl9CQVNFLC8v1Pa809K7zPXD+8asvNCjrLbU06a94bm5zOVUX3pQYl9XZWJDb250YWN0CglNU0dfQ01EX0RFTF9BX1BCLCAgICAgICAgICAgICAgICAgIC8vttTTpr3hubnM5VRfelBiX0RlbEluZm8KCU1TR19DTURfREVMX01VVElfUEIsICAgICAgICAgICAgICAgLy+21NOmveG5uczlVF96UGJfRGVsSW5mbwoJTVNHX0NNRF9ERUxfQUxMX1BCLCAgICAgICAgICAgICAgICAvL7bU06a94bm5zOVUX3pQYl9EZWxJbmZvCn07Cgp0eXBlZGVmIHN0cnVjdCB7CglzaWduZWQgbG9uZyAgICAgIHBiSWQ7ICAgLy90aGUgaWQgaW4gdGhlIHBibSB0YWJsZSx1bmlxdWUsQVNDCglzaWduZWQgbG9uZyAgICAgIHBiSW5kZXg7CglzaWduZWQgbG9uZyAgICAgIHBiTG9jYXRpb247CgljaGFyICAgICAgICBuYW1lW1pQQl9URVhUX1NJWkVfQllURVNdOwoJY2hhciAgICAgICAgbW9iaWxOdW1iZXJbWlBCX05VTV9TSVpFXTsKCXNpZ25lZCBsb25nICAgICAgcGJUeXBlOwoJY2hhciAgICAgICAgaG9tZU51bWJlcltaUEJfTlVNX1NJWkVdOwoJY2hhciAgICAgICAgb2ZmaWNlTnVtYmVyW1pQQl9OVU1fU0laRV07CgljaGFyICAgICAgICBlbWFpbFtaUEJfVEVYVF9TSVpFX0JZVEVTXTsKCWNoYXIgICAgICAgIHNuZVtaUEJfU05FX1NJWkVdOwoJY2hhciAgICAgICAgZ3JvdXBbWlBCX0dST1VQX1NJWkVdOwoJc2lnbmVkIGxvbmcgICAgICBkZWxfaWQ7Cn0gVF96UGJfV2ViQ29udGFjdDsKCnR5cGVkZWYgc3RydWN0IHsKCXNpZ25lZCBsb25nICBkZWxJZFtaUEJfTUFYX0RFTF9MRU5dOwoJc2lnbmVkIGxvbmcgIGRlbFRvdGFsOwoJc2lnbmVkIGxvbmcgIGRlbExvY2F0aW9uOwoJc2lnbmVkIGxvbmcgIGRlbEluZGV4W1pQQl9NQVhfREVMX0xFTl07Cn0gVF96UGJfRGVsSW5mbzsKCiNlbmRpZgo=