LyoKICogIFRFU1QgU1VJVEUgRk9SIE1CL1dDIEZVTkNUSU9OUyBJTiBDIExJQlJBUlkKICoKICoJIEZJTEU6CWRhdF9tYnJ0b3djLmMKICoKICoJIE1CVE9XQzogIHNpemVfdCBtYnJ0b3djICh3Y2hhcl90ICpwd2MsIGNoYXIgKnMsIHNpemVfdCBuLAogKgkJCQkgIG1ic3RhdGVfdCAqcHMpOwogKi8KCiNpbmNsdWRlIDxsaW1pdHMuaD4KCi8qIE5vdGU6Cglhc3N1bWVzCSBlbl9VUyA9IGVuX1VTLmFzY2lpCiovCgoKCgpUU1RfTUJSVE9XQyB0c3RfbWJydG93Y19sb2MgW10gPSB7CiAgewogICAgeyBUbWJydG93YywgVFNUX0xPQ19kZSB9LAogICAgewogICAgICB7IC8qLS0tLS0tLS0tLS0tLS0tLS0gIzAxIC0tLS0tLS0tLS0tLS0tLS0tKi8KCXsKCSAgewoJICAgIHsgMSwgMSwgIsTW3CIsCSAgIDEsCQkgMCwgMCB9LAoJICAgIHsgMSwgMSwgIsTW3CIsCSAgIDIsCQkgMCwgMCB9LAoJICAgIHsgMSwgMSwgIsTW3CIsCSAgIFVTRV9NQkNVUk1BWCwgMCwgMCB9LAoJICB9Cgl9LAoJewoJICB7CgkgICAgeyAwLCAgMSwgIDEsICAgMHgwMEM0IH0sCgkgICAgeyAwLCAgMSwgIDEsICAgMHgwMEM0IH0sCgkgICAgeyAwLCAgMSwgIDEsICAgMHgwMEM0IH0sCgkgIH0KCX0KICAgICAgfSwKICAgICAgeyAvKi0tLS0tLS0tLS0tLS0tLS0tICMwMiAtLS0tLS0tLS0tLS0tLS0tLSovCgl7CgkgIHsKCSAgICB7IDEsIDEsICLE1twiLAkgICAgMSwJCSAgMCwgMCB9LAoJICAgIHsgMSwgMSwgIsTW3CIsCSAgICAyLAkJICAwLCAwIH0sCgkgICAgeyAxLCAxLCAixNbcIiwJICAgIFVTRV9NQkNVUk1BWCwgMCwgMCB9LAoJICB9Cgl9LAoJewoJICB7CgkgICAgeyAwLCAgMSwgIDEsICAgMHgwMEM0IH0sCgkgICAgeyAwLCAgMSwgIDEsICAgMHgwMEM0IH0sCgkgICAgeyAwLCAgMSwgIDEsICAgMHgwMEM0IH0sCgkgIH0KCX0KICAgICAgfSwKICAgICAgeyAuaXNfbGFzdCA9IDEgfQogICAgfQogIH0sCiNpZiAwCiAgLyogWFhYOiBUaGVzZSB0ZXN0cyBkb24ndCBtYWtlIHNlbnNlIHRvIG1lLiAgKi8KICB7CiAgICB7IFRtYnJ0b3djLCBUU1RfTE9DX2VuVVMgfSwKICAgIHsKICAgICAgeyAvKi0tLS0tLS0tLS0tLS0tLS0tICMwMSAtLS0tLS0tLS0tLS0tLS0tLSovCgl7CgkgIHsKCSAgICB7IDEsIDEsICLE1twiLAkgICAgMSwJCSAgMCwgMCB9LAoJICAgIHsgMSwgMSwgIsTW3CIsCSAgICAyLAkJICAwLCAwIH0sCgkgICAgeyAxLCAxLCAixNbcIiwJICAgIFVTRV9NQkNVUk1BWCwgMCwgMCB9LAoJICB9Cgl9LAoJewoJICB7CgkgICAgeyAwLCAgMSwgIDEsICAgMHgwMEM0IH0sCgkgICAgeyAwLCAgMSwgIDEsICAgMHgwMEM0IH0sCgkgICAgeyAwLCAgMSwgIDEsICAgMHgwMEM0IH0sCgkgIH0KCX0KICAgICAgfSwKICAgICAgeyAvKi0tLS0tLS0tLS0tLS0tLS0tICMwMiAtLS0tLS0tLS0tLS0tLS0tLSovCgl7CgkgIHsKCSAgICB7IDEsIDEsICLE1twiLAkgICAgMSwJCSAgMCwgMCB9LAoJICAgIHsgMSwgMSwgIsTW3CIsCSAgICAyLAkJICAwLCAwIH0sCgkgICAgeyAxLCAxLCAixNbcIiwJICAgIFVTRV9NQkNVUk1BWCwgMCwgMCB9LAoJICB9Cgl9LAoJewoJICB7CgkgICAgeyAwLCAgMSwgIDEsICAgMHgwMEM0IH0sCgkgICAgeyAwLCAgMSwgIDEsICAgMHgwMEM0IH0sCgkgICAgeyAwLCAgMSwgIDEsICAgMHgwMEM0IH0sCgkgIH0KCX0KICAgICAgfSwKICAgICAgeyAuaXNfbGFzdCA9IDEgfQogICAgfQogIH0sCiAgewogICAgeyBUbWJydG93YywgVFNUX0xPQ19ldWNKUCB9LAogICAgewogICAgICB7IC8qLS0tLS0tLS0tLS0tLS0tLS0gIzAxIC0tLS0tLS0tLS0tLS0tLS0tKi8KCXsKCSAgewoJICAgIHsgMSwgMSwgIsTW3CIsCSAgICAxLAkJICAwLCAwIH0sCgkgICAgeyAxLCAxLCAixNbcIiwJICAgIDIsCQkgIDAsIDAgfSwKCSAgICB7IDEsIDEsICLE1twiLAkgICAgVVNFX01CQ1VSTUFYLCAwLCAwIH0sCgkgIH0KCX0sCgl7CgkgIHsKCSAgICB7IDAsICAxLCAgMSwgICAweDAwQzQgfSwKCSAgICB7IDAsICAxLCAgMSwgICAweDAwQzQgfSwKCSAgICB7IDAsICAxLCAgMSwgICAweDAwQzQgfSwKCSAgfQoJfQogICAgICB9LAogICAgICB7IC8qLS0tLS0tLS0tLS0tLS0tLS0gIzAyIC0tLS0tLS0tLS0tLS0tLS0tKi8KCXsKCSAgewoJICAgIHsgMSwgMSwgIsTW3CIsCSAgICAxLAkJICAwLCAwIH0sCgkgICAgeyAxLCAxLCAixNbcIiwJICAgIDIsCQkgIDAsIDAgfSwKCSAgICB7IDEsIDEsICLE1twiLAkgICAgVVNFX01CQ1VSTUFYLCAwLCAwIH0sCgkgIH0KCX0sCgl7CgkgIHsKCSAgICB7IDAsICAxLCAgMSwgICAweDAwQzQgfSwKCSAgICB7IDAsICAxLCAgMSwgICAweDAwQzQgfSwKCSAgICB7IDAsICAxLCAgMSwgICAweDAwQzQgfSwKCSAgfQoJfQogICAgICB9LAogICAgICB7IC5pc19sYXN0ID0gMSB9CiAgICB9CiAgfSwKI2VuZGlmCiAgewogICAgeyBUbWJydG93YywgVFNUX0xPQ19lbmQgfQogIH0KfTsK