<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>22456</bug_id>
          
          <creation_ts>2008-11-24 07:08:12 -0800</creation_ts>
          <short_desc>Bison versions under 2.2 produce crashing CSSGrammar code for ARM</short_desc>
          <delta_ts>2008-11-26 03:33:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Kalle Vahlman">zuh</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>99964</commentid>
    <comment_count>0</comment_count>
    <who name="Kalle Vahlman">zuh</who>
    <bug_when>2008-11-24 07:08:12 -0800</bug_when>
    <thetext>After agonizing bug hunting week, I found out that bison versions earlier than 2.2 produce faulty code that crashes on ARM CPUs from CSSGrammar.y. There&apos;s a similar issue reported as bug 18538 but that&apos;s probably not exactly the same thing as here.

git-bisecting pointed http://trac.webkit.org/changeset/35351 as the revision that introduces the crashing.

As I have no mad bison skillz, determining if the actual cause is a bison bug or something CSSGrammar.y could fix is a bit hard. But at the very least we could add a check to configure.ac for this and error out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99965</commentid>
    <comment_count>1</comment_count>
      <attachid>25427</attachid>
    <who name="Kalle Vahlman">zuh</who>
    <bug_when>2008-11-24 07:09:56 -0800</bug_when>
    <thetext>Created attachment 25427
Backtrace of the crash</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99966</commentid>
    <comment_count>2</comment_count>
      <attachid>25428</attachid>
    <who name="Kalle Vahlman">zuh</who>
    <bug_when>2008-11-24 07:12:10 -0800</bug_when>
    <thetext>Created attachment 25428
Differences in generated code

This diff shows the changes between a non-working (bison v1.875d) and working (bison v2.3) generated code (in case someone wants to get to the bottom of this...).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99967</commentid>
    <comment_count>3</comment_count>
      <attachid>25429</attachid>
    <who name="Kalle Vahlman">zuh</who>
    <bug_when>2008-11-24 07:17:54 -0800</bug_when>
    <thetext>Created attachment 25429
And finally, a patch to check for bison version &gt;=2.2 when compiling for ARM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>99972</commentid>
    <comment_count>4</comment_count>
      <attachid>25429</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-11-24 09:07:13 -0800</bug_when>
    <thetext>Comment on attachment 25429
And finally, a patch to check for bison version &gt;=2.2 when compiling for ARM

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>100392</commentid>
    <comment_count>5</comment_count>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2008-11-26 03:33:15 -0800</bug_when>
    <thetext>Landed in r38782. Thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>25427</attachid>
            <date>2008-11-24 07:09:56 -0800</date>
            <delta_ts>2008-11-24 07:09:56 -0800</delta_ts>
            <desc>Backtrace of the crash</desc>
            <filename>cssgrammar-backtrace.log</filename>
            <type>text/plain</type>
            <size>3714</size>
            <attacher name="Kalle Vahlman">zuh</attacher>
            
              <data encoding="base64">Q29yZSB3YXMgZ2VuZXJhdGVkIGJ5IGAuL0d0a0xhdW5jaGVyIGh0dHA6Ly93ZWJraXQub3JnJy4K
UHJvZ3JhbSB0ZXJtaW5hdGVkIHdpdGggc2lnbmFsIDExLCBTZWdtZW50YXRpb24gZmF1bHQuCiMw
ICAweDQwODczNzFjIGluIGNzc3l5cGFyc2UgKHBhcnNlcj0weGJlZWQ1MjIwKQogICAgYXQgV2Vi
Q29yZS9jc3MvQ1NTR3JhbW1hci55Ojk3MAo5NzAgICAgICAgICAgICAgaWYgKCQxLmNoYXJhY3Rl
cnNbMF0gPj0gJzAnICYmICQxLmNoYXJhY3RlcnNbMF0gPD0gJzknKSB7CihnZGIpIGJ0CiMwICAw
eDQwODczNzFjIGluIGNzc3l5cGFyc2UgKHBhcnNlcj0weGJlZWQ1MjIwKQogICAgYXQgV2ViQ29y
ZS9jc3MvQ1NTR3JhbW1hci55Ojk3MAojMSAgMHg0MDFlOWRjOCBpbiBXZWJDb3JlOjpDU1NQYXJz
ZXI6OnBhcnNlU2hlZXQgKHRoaXM9MHhiZWVkNTIyMCwKICAgIHNoZWV0PTB4NDI5OGU3MDAsIHN0
cmluZz1AMHhiZWVkNTMxNCkgYXQgV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcDoyMjUKIzIgIDB4
NDAyNjc2NWMgaW4gV2ViQ29yZTo6Q1NTU3R5bGVTaGVldDo6cGFyc2VTdHJpbmcgKHRoaXM9MHg0
Mjk4ZTcwMCwKICAgIHN0cmluZz1AMHhiZWVkNTMxNCwgc3RyaWN0PXRydWUpIGF0IFdlYkNvcmUv
Y3NzL0NTU1N0eWxlU2hlZXQuY3BwOjE2MgojMyAgMHg0MDIxZmJhNCBpbiBwYXJzZVVBU2hlZXQg
KAogICAgY2hhcmFjdGVycz0weDQwYmEzYWEwICJodG1sLGJvZHksZGl2e2Rpc3BsYXk6YmxvY2t9
Ym9keXttYXJnaW46OHB4fWRpdjpmb2N1cyxzcGFuOmZvY3Vze291dGxpbmU6YXV0byA1cHggLXdl
YmtpdC1mb2N1cy1yaW5nLWNvbG9yfSIsIHNpemU9MTA3KQogICAgYXQgV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTZWxlY3Rvci5jcHA6NDg2CiM0ICAweDQwMjI1N2Y0IGluIGxvYWRTaW1wbGVEZWZhdWx0
U3R5bGUgKCkKICAgIGF0IFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOjUyNAojNSAg
MHg0MDI0NDVlNCBpbiBDU1NTdHlsZVNlbGVjdG9yICh0aGlzPTB4NDI5YTNjMDAsIGRvYz0weDQy
OWE3MDAwLAogICAgdXNlclN0eWxlU2hlZXQ9QDB4YmVlZDU0MTgsIHN0eWxlU2hlZXRzPTB4NDI5
YjUxMjAsCiAgICBtYXBwZWRFbGVtZW50U2hlZXQ9MHgwLCBzdHJpY3RQYXJzaW5nPWZhbHNlLCBt
YXRjaEF1dGhvckFuZFVzZXJTdHlsZXM9dHJ1ZSkKICAgIGF0IFdlYkNvcmUvY3NzL0NTU1N0eWxl
U2VsZWN0b3IuY3BwOjQwNgojNiAgMHg0MDI5NmRiNCBpbiBXZWJDb3JlOjpEb2N1bWVudDo6YXR0
YWNoICh0aGlzPTB4NDI5YTcwMDApCiAgICBhdCBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHA6MTI1
NQojNyAgMHg0MDUwN2IxMCBpbiBXZWJDb3JlOjpGcmFtZTo6c2V0RG9jdW1lbnQgKHRoaXM9MHg0
Mjk5NDBjMCwKICAgIG5ld0RvYz1AMHhiZWVkNTRmOCkgYXQgV2ViQ29yZS9wYWdlL0ZyYW1lLmNw
cDoyNDYKIzggIDB4NDA0OTkyNTggaW4gV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmJlZ2luICh0aGlz
PTB4NDI5YTE2YTgsCiAgICB1cmw9QDB4NDI5YTE3ZDQsIGRpc3BhdGNoPWZhbHNlLCBvcmlnaW49
MHgwKQogICAgYXQgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwOjkzOQojOSAgMHg0MDQ5
YWM2MCBpbiBXZWJDb3JlOjpGcmFtZUxvYWRlcjo6cmVjZWl2ZWRGaXJzdERhdGEgKHRoaXM9MHg0
MjlhMTZhOCkKICAgIGF0IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDo4NzEKIzEwIDB4
NDA0OWFmNjggaW4gV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnNldEVuY29kaW5nICh0aGlzPTB4NDI5
YTE2YTgsCiAgICBuYW1lPUAweGJlZWQ1NjM0LCB1c2VyQ2hvc2VuPWZhbHNlKSBhdCBXZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHA6MTg3NQojMTEgMHg0MDEyYTE2NCBpbiBXZWJLaXQ6OkZy
YW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkICh0aGlzPTB4NDI5OWVmMDAsCiAgICBsb2Fk
ZXI9MHg0MjliOGIwMCwgZGF0YT0weDAsIGxlbmd0aD0wKQogICAgYXQgV2ViS2l0L2d0ay9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6MTc4CiMxMiAweDQwMTI4Y2JjIGlu
IFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OmZpbmlzaGVkTG9hZGluZyAodGhpcz0weDQyOTll
ZjAwLAogICAgZG9jdW1lbnRMb2FkZXI9MHg0MjliOGIwMCkKICAgIGF0IFdlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwOjYwMQojMTMgMHg0MDQ5ZGI3MCBp
biBXZWJDb3JlOjpGcmFtZUxvYWRlcjo6ZmluaXNoZWRMb2FkaW5nRG9jdW1lbnQgKAogICAgdGhp
cz0weDQyOWExNmE4LCBsb2FkZXI9MHg0MjliOGIwMCkgYXQgV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuY3BwOjMwNDYKIzE0IDB4NDA0N2JiOGMgaW4gV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6
OmZpbmlzaGVkTG9hZGluZyAodGhpcz0weDQyOWI4YjAwKQogICAgYXQgV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuY3BwOjM0MgojMTUgMHg0MDQ5ZjgyYyBpbiBXZWJDb3JlOjpGcmFtZUxv
YWRlcjo6aW5pdCAodGhpcz0weDQyOWExNmE4KQogICAgYXQgV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuY3BwOjI5MQojMTYgMHg0MDUwNzcyNCBpbiBXZWJDb3JlOjpGcmFtZTo6aW5pdCAodGhp
cz0weDQyOTk0MGMwKQogICAgYXQgV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcDoxOTAKIzE3IDB4NDAx
MzVjYzAgaW4gd2Via2l0X3dlYl9mcmFtZV9uZXcgKHdlYlZpZXc9MHg1MjgxMCkKICAgIGF0IFdl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcDoyMjkKIzE4IDB4NDAxNDNjMDQgaW4g
d2Via2l0X3dlYl92aWV3X2luaXQgKHdlYlZpZXc9MHg1MjgxMCkKICAgIGF0IFdlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOjE1MTYKIzE5IDB4NDI2MTlkNDQgaW4gSUFfX2dfdHlw
ZV9jcmVhdGVfaW5zdGFuY2UgKHR5cGU9Mjk2MTY4KSBhdCBndHlwZS5jOjE2NzQKIzIwIDB4NDI1
ZmI2MzggaW4gZ19vYmplY3RfY29uc3RydWN0b3IgKHR5cGU9MjU3MzI5MTc4MCwKLS0tVHlwZSA8
cmV0dXJuPiB0byBjb250aW51ZSwgb3IgcSA8cmV0dXJuPiB0byBxdWl0LS0tCiAgICBuX2NvbnN0
cnVjdF9wcm9wZXJ0aWVzPTMyMDMyMTgxOTIsIGNvbnN0cnVjdF9wYXJhbXM9MHg4YTgwMDAxMCkK
ICAgIGF0IGdvYmplY3QuYzoxMzM0CiMyMSAweDQyNWY5ZmIwIGluIElBX19nX29iamVjdF9uZXd2
IChvYmplY3RfdHlwZT0zMzIzNDQsCiAgICBuX3BhcmFtZXRlcnM9PHZhbHVlIG9wdGltaXplZCBv
dXQ+LCBwYXJhbWV0ZXJzPTB4MCkgYXQgZ29iamVjdC5jOjEyMTEKIzIyIDB4NDI1ZmFiMmMgaW4g
SUFfX2dfb2JqZWN0X25ld192YWxpc3QgKG9iamVjdF90eXBlPTExMTI2Mzg3NjAsCiAgICBmaXJz
dF9wcm9wZXJ0eV9uYW1lPTB4MCwgdmFyX2FyZ3M9MHhiZWVkNWMzOCkgYXQgZ29iamVjdC5jOjEy
NzQKIzIzIDB4NDI1ZmFjYjggaW4gSUFfX2dfb2JqZWN0X25ldyAob2JqZWN0X3R5cGU9MzMyMzQ0
LAogICAgZmlyc3RfcHJvcGVydHlfbmFtZT0weDEgPEFkZHJlc3MgMHgxIG91dCBvZiBib3VuZHM+
KSBhdCBnb2JqZWN0LmM6MTA1NgojMjQgMHg0MDEzZjQ2YyBpbiB3ZWJraXRfd2ViX3ZpZXdfbmV3
ICgpCiAgICBhdCBXZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoxNTQ3CiMyNSAw
eDAwMDA5ODc0IGluIG1haW4gKCkKQ3VycmVudCBsYW5ndWFnZTogIGF1dG87IGN1cnJlbnRseSBj
KysKKGdkYikK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>25428</attachid>
            <date>2008-11-24 07:12:10 -0800</date>
            <delta_ts>2008-11-24 07:12:10 -0800</delta_ts>
            <desc>Differences in generated code</desc>
            <filename>webkit-bison-1.875d-vs-2.3.diff</filename>
            <type>text/x-patch</type>
            <size>119478</size>
            <attacher name="Kalle Vahlman">zuh</attacher>
            
              <data encoding="base64">ZGlmZiAtdXIgZmF1bHR5L0NTU0dyYW1tYXIuY3BwIGdvb2QvQ1NTR3JhbW1hci5jcHAKLS0tIGZh
dWx0eS9DU1NHcmFtbWFyLmNwcAkyMDA4LTExLTI0IDE2OjI1OjU4LjAwMDAwMDAwMCArMDIwMAor
KysgZ29vZC9DU1NHcmFtbWFyLmNwcAkyMDA4LTExLTI0IDE2OjMxOjIxLjAwMDAwMDAwMCArMDIw
MApAQCAtMSw3ICsxLDkgQEAKLS8qIEEgQmlzb24gcGFyc2VyLCBtYWRlIGJ5IEdOVSBCaXNvbiAx
Ljg3NWQuICAqLworLyogQSBCaXNvbiBwYXJzZXIsIG1hZGUgYnkgR05VIEJpc29uIDIuMy4gICov
CiAKLS8qIFNrZWxldG9uIHBhcnNlciBmb3IgWWFjYy1saWtlIHBhcnNpbmcgd2l0aCBCaXNvbiwK
LSAgIENvcHlyaWdodCAoQykgMTk4NCwgMTk4OSwgMTk5MCwgMjAwMCwgMjAwMSwgMjAwMiwgMjAw
MywgMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKy8qIFNrZWxldG9uIGltcGxl
bWVudGF0aW9uIGZvciBCaXNvbidzIFlhY2MtbGlrZSBwYXJzZXJzIGluIEMKKworICAgQ29weXJp
Z2h0IChDKSAxOTg0LCAxOTg5LCAxOTkwLCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAy
MDA1LCAyMDA2CisgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIAogICAgVGhpcyBw
cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt
b2RpZnkKICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5CkBAIC0xNSwxNiArMTcsMjQgQEAKIAogICAgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
ICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNv
ZnR3YXJlCi0gICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAs
Ci0gICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCisgICBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgQm9zdG9uLCBNQSAwMjExMC0x
MzAxLCBVU0EuICAqLworCisvKiBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IGNyZWF0
ZSBhIGxhcmdlciB3b3JrIHRoYXQgY29udGFpbnMKKyAgIHBhcnQgb3IgYWxsIG9mIHRoZSBCaXNv
biBwYXJzZXIgc2tlbGV0b24gYW5kIGRpc3RyaWJ1dGUgdGhhdCB3b3JrCisgICB1bmRlciB0ZXJt
cyBvZiB5b3VyIGNob2ljZSwgc28gbG9uZyBhcyB0aGF0IHdvcmsgaXNuJ3QgaXRzZWxmIGEKKyAg
IHBhcnNlciBnZW5lcmF0b3IgdXNpbmcgdGhlIHNrZWxldG9uIG9yIGEgbW9kaWZpZWQgdmVyc2lv
biB0aGVyZW9mCisgICBhcyBhIHBhcnNlciBza2VsZXRvbi4gIEFsdGVybmF0aXZlbHksIGlmIHlv
dSBtb2RpZnkgb3IgcmVkaXN0cmlidXRlCisgICB0aGUgcGFyc2VyIHNrZWxldG9uIGl0c2VsZiwg
eW91IG1heSAoYXQgeW91ciBvcHRpb24pIHJlbW92ZSB0aGlzCisgICBzcGVjaWFsIGV4Y2VwdGlv
biwgd2hpY2ggd2lsbCBjYXVzZSB0aGUgc2tlbGV0b24gYW5kIHRoZSByZXN1bHRpbmcKKyAgIEJp
c29uIG91dHB1dCBmaWxlcyB0byBiZSBsaWNlbnNlZCB1bmRlciB0aGUgR05VIEdlbmVyYWwgUHVi
bGljCisgICBMaWNlbnNlIHdpdGhvdXQgdGhpcyBzcGVjaWFsIGV4Y2VwdGlvbi4KIAotLyogQXMg
YSBzcGVjaWFsIGV4Y2VwdGlvbiwgd2hlbiB0aGlzIGZpbGUgaXMgY29waWVkIGJ5IEJpc29uIGlu
dG8gYQotICAgQmlzb24gb3V0cHV0IGZpbGUsIHlvdSBtYXkgdXNlIHRoYXQgb3V0cHV0IGZpbGUg
d2l0aG91dCByZXN0cmljdGlvbi4KLSAgIFRoaXMgc3BlY2lhbCBleGNlcHRpb24gd2FzIGFkZGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KLSAgIGluIHZlcnNpb24gMS4yNCBvZiBC
aXNvbi4gICovCisgICBUaGlzIHNwZWNpYWwgZXhjZXB0aW9uIHdhcyBhZGRlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGluCisgICB2ZXJzaW9uIDIuMiBvZiBCaXNvbi4gICovCiAK
LS8qIFdyaXR0ZW4gYnkgUmljaGFyZCBTdGFsbG1hbiBieSBzaW1wbGlmeWluZyB0aGUgb3JpZ2lu
YWwgc28gY2FsbGVkCi0gICBgYHNlbWFudGljJycgcGFyc2VyLiAgKi8KKy8qIEMgTEFMUigxKSBw
YXJzZXIgc2tlbGV0b24gd3JpdHRlbiBieSBSaWNoYXJkIFN0YWxsbWFuLCBieQorICAgc2ltcGxp
ZnlpbmcgdGhlIG9yaWdpbmFsIHNvLWNhbGxlZCAic2VtYW50aWMiIHBhcnNlci4gICovCiAKIC8q
IEFsbCBzeW1ib2xzIGRlZmluZWQgYmVsb3cgc2hvdWxkIGJlZ2luIHdpdGggeXkgb3IgWVksIHRv
IGF2b2lkCiAgICBpbmZyaW5naW5nIG9uIHVzZXIgbmFtZSBzcGFjZS4gIFRoaXMgc2hvdWxkIGJl
IGRvbmUgZXZlbiBmb3IgbG9jYWwKQEAgLTM2LDYgKzQ2LDkgQEAKIC8qIElkZW50aWZ5IEJpc29u
IG91dHB1dC4gICovCiAjZGVmaW5lIFlZQklTT04gMQogCisvKiBCaXNvbiB2ZXJzaW9uLiAgKi8K
KyNkZWZpbmUgWVlCSVNPTl9WRVJTSU9OICIyLjMiCisKIC8qIFNrZWxldG9uIG5hbWUuICAqLwog
I2RlZmluZSBZWVNLRUxFVE9OX05BTUUgInlhY2MuYyIKIApAQCAtNDUsOCArNTgsNyBAQAogLyog
VXNpbmcgbG9jYXRpb25zLiAgKi8KICNkZWZpbmUgWVlMU1BfTkVFREVEIDAKIAotLyogSWYgTkFN
RV9QUkVGSVggaXMgc3BlY2lmaWVkIHN1YnN0aXR1dGUgdGhlIHZhcmlhYmxlcyBhbmQgZnVuY3Rp
b25zCi0gICBuYW1lcy4gICovCisvKiBTdWJzdGl0dXRlIHRoZSB2YXJpYWJsZSBhbmQgZnVuY3Rp
b24gbmFtZXMuICAqLwogI2RlZmluZSB5eXBhcnNlIGNzc3l5cGFyc2UKICNkZWZpbmUgeXlsZXgg
ICBjc3N5eWxleAogI2RlZmluZSB5eWVycm9yIGNzc3l5ZXJyb3IKQEAgLTEyNSw2ICsxMzcsNyBA
QAogICAgICBWQVJDQUxMID0gMzE3CiAgICB9OwogI2VuZGlmCisvKiBUb2tlbnMuICAqLwogI2Rl
ZmluZSBUT0tFTl9FT0YgMAogI2RlZmluZSBVTklNUE9SVEFOVF9UT0sgMjU4CiAjZGVmaW5lIFdI
SVRFU1BBQ0UgMjU5CkBAIC0yNjAsOSArMjczLDE1IEBACiAjIGRlZmluZSBZWUVSUk9SX1ZFUkJP
U0UgMAogI2VuZGlmCiAKLSNpZiAhIGRlZmluZWQgKFlZU1RZUEUpICYmICEgZGVmaW5lZCAoWVlT
VFlQRV9JU19ERUNMQVJFRCkKKy8qIEVuYWJsaW5nIHRoZSB0b2tlbiB0YWJsZS4gICovCisjaWZu
ZGVmIFlZVE9LRU5fVEFCTEUKKyMgZGVmaW5lIFlZVE9LRU5fVEFCTEUgMAorI2VuZGlmCisKKyNp
ZiAhIGRlZmluZWQgWVlTVFlQRSAmJiAhIGRlZmluZWQgWVlTVFlQRV9JU19ERUNMQVJFRAordHlw
ZWRlZiB1bmlvbiBZWVNUWVBFCiAjbGluZSA1OCAiV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55Igot
dHlwZWRlZiB1bmlvbiBZWVNUWVBFIHsKK3sKICAgICBib29sIGJvb2xlYW47CiAgICAgY2hhciBj
aGFyYWN0ZXI7CiAgICAgaW50IGludGVnZXI7CkBAIC0yODMsOSArMzAyLDEwIEBACiAgICAgV2Vi
S2l0Q1NTS2V5ZnJhbWVSdWxlKiBrZXlmcmFtZVJ1bGU7CiAgICAgV2ViS2l0Q1NTS2V5ZnJhbWVz
UnVsZSoga2V5ZnJhbWVzUnVsZTsKICAgICBmbG9hdCB2YWw7Ci19IFlZU1RZUEU7Ci0vKiBMaW5l
IDE4NiBvZiB5YWNjLmMuICAqLwotI2xpbmUgMjg5ICJmYXVsdHkvQ1NTR3JhbW1hci5jcHAiCit9
CisvKiBMaW5lIDE4NyBvZiB5YWNjLmMuICAqLworI2xpbmUgMzA4ICIuL0Rlcml2ZWRTb3VyY2Vz
L0NTU0dyYW1tYXIuY3BwIgorCVlZU1RZUEU7CiAjIGRlZmluZSB5eXN0eXBlIFlZU1RZUEUgLyog
b2Jzb2xlc2NlbnQ7IHdpbGwgYmUgd2l0aGRyYXduICovCiAjIGRlZmluZSBZWVNUWVBFX0lTX0RF
Q0xBUkVEIDEKICMgZGVmaW5lIFlZU1RZUEVfSVNfVFJJVklBTCAxCkBAIC0zMDksNTYgKzMyOSwx
NzEgQEAKIAogCiAKLS8qIExpbmUgMjE0IG9mIHlhY2MuYy4gICovCi0jbGluZSAzMTQgImZhdWx0
eS9DU1NHcmFtbWFyLmNwcCIKKy8qIExpbmUgMjE2IG9mIHlhY2MuYy4gICovCisjbGluZSAzMzQg
Ii4vRGVyaXZlZFNvdXJjZXMvQ1NTR3JhbW1hci5jcHAiCiAKLSNpZiAhIGRlZmluZWQgKHl5b3Zl
cmZsb3cpIHx8IFlZRVJST1JfVkVSQk9TRQorI2lmZGVmIHNob3J0CisjIHVuZGVmIHNob3J0Cisj
ZW5kaWYKKworI2lmZGVmIFlZVFlQRV9VSU5UOAordHlwZWRlZiBZWVRZUEVfVUlOVDggeXl0eXBl
X3VpbnQ4OworI2Vsc2UKK3R5cGVkZWYgdW5zaWduZWQgY2hhciB5eXR5cGVfdWludDg7CisjZW5k
aWYKIAotIyBpZm5kZWYgWVlGUkVFCi0jICBkZWZpbmUgWVlGUkVFIGZyZWUKKyNpZmRlZiBZWVRZ
UEVfSU5UOAordHlwZWRlZiBZWVRZUEVfSU5UOCB5eXR5cGVfaW50ODsKKyNlbGlmIChkZWZpbmVk
IF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCisgICAgIHx8IGRlZmluZWQgX19j
cGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKK3R5cGVkZWYgc2lnbmVkIGNoYXIgeXl0eXBl
X2ludDg7CisjZWxzZQordHlwZWRlZiBzaG9ydCBpbnQgeXl0eXBlX2ludDg7CisjZW5kaWYKKwor
I2lmZGVmIFlZVFlQRV9VSU5UMTYKK3R5cGVkZWYgWVlUWVBFX1VJTlQxNiB5eXR5cGVfdWludDE2
OworI2Vsc2UKK3R5cGVkZWYgdW5zaWduZWQgc2hvcnQgaW50IHl5dHlwZV91aW50MTY7CisjZW5k
aWYKKworI2lmZGVmIFlZVFlQRV9JTlQxNgordHlwZWRlZiBZWVRZUEVfSU5UMTYgeXl0eXBlX2lu
dDE2OworI2Vsc2UKK3R5cGVkZWYgc2hvcnQgaW50IHl5dHlwZV9pbnQxNjsKKyNlbmRpZgorCisj
aWZuZGVmIFlZU0laRV9UCisjIGlmZGVmIF9fU0laRV9UWVBFX18KKyMgIGRlZmluZSBZWVNJWkVf
VCBfX1NJWkVfVFlQRV9fCisjIGVsaWYgZGVmaW5lZCBzaXplX3QKKyMgIGRlZmluZSBZWVNJWkVf
VCBzaXplX3QKKyMgZWxpZiAhIGRlZmluZWQgWVlTSVpFX1QgJiYgKGRlZmluZWQgX19TVERDX18g
fHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKKyAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8
fCBkZWZpbmVkIF9NU0NfVkVSKQorIyAgaW5jbHVkZSA8c3RkZGVmLmg+IC8qIElORlJJTkdFUyBP
TiBVU0VSIE5BTUUgU1BBQ0UgKi8KKyMgIGRlZmluZSBZWVNJWkVfVCBzaXplX3QKKyMgZWxzZQor
IyAgZGVmaW5lIFlZU0laRV9UIHVuc2lnbmVkIGludAogIyBlbmRpZgotIyBpZm5kZWYgWVlNQUxM
T0MKLSMgIGRlZmluZSBZWU1BTExPQyBtYWxsb2MKKyNlbmRpZgorCisjZGVmaW5lIFlZU0laRV9N
QVhJTVVNICgoWVlTSVpFX1QpIC0xKQorCisjaWZuZGVmIFlZXworIyBpZiBZWUVOQUJMRV9OTFMK
KyMgIGlmIEVOQUJMRV9OTFMKKyMgICBpbmNsdWRlIDxsaWJpbnRsLmg+IC8qIElORlJJTkdFUyBP
TiBVU0VSIE5BTUUgU1BBQ0UgKi8KKyMgICBkZWZpbmUgWVlfKG1zZ2lkKSBkZ2V0dGV4dCAoImJp
c29uLXJ1bnRpbWUiLCBtc2dpZCkKKyMgIGVuZGlmCisjIGVuZGlmCisjIGlmbmRlZiBZWV8KKyMg
IGRlZmluZSBZWV8obXNnaWQpIG1zZ2lkCiAjIGVuZGlmCisjZW5kaWYKKworLyogU3VwcHJlc3Mg
dW51c2VkLXZhcmlhYmxlIHdhcm5pbmdzIGJ5ICJ1c2luZyIgRS4gICovCisjaWYgISBkZWZpbmVk
IGxpbnQgfHwgZGVmaW5lZCBfX0dOVUNfXworIyBkZWZpbmUgWVlVU0UoZSkgKCh2b2lkKSAoZSkp
CisjZWxzZQorIyBkZWZpbmUgWVlVU0UoZSkgLyogZW1wdHkgKi8KKyNlbmRpZgorCisvKiBJZGVu
dGl0eSBmdW5jdGlvbiwgdXNlZCB0byBzdXBwcmVzcyB3YXJuaW5ncyBhYm91dCBjb25zdGFudCBj
b25kaXRpb25zLiAgKi8KKyNpZm5kZWYgbGludAorIyBkZWZpbmUgWVlJRChuKSAobikKKyNlbHNl
CisjaWYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKKyAgICAg
fHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQorc3RhdGljIGludAor
WVlJRCAoaW50IGkpCisjZWxzZQorc3RhdGljIGludAorWVlJRCAoaSkKKyAgICBpbnQgaTsKKyNl
bmRpZgoreworICByZXR1cm4gaTsKK30KKyNlbmRpZgorCisjaWYgISBkZWZpbmVkIHl5b3ZlcmZs
b3cgfHwgWVlFUlJPUl9WRVJCT1NFCiAKIC8qIFRoZSBwYXJzZXIgaW52b2tlcyBhbGxvY2Egb3Ig
bWFsbG9jOyBkZWZpbmUgdGhlIG5lY2Vzc2FyeSBzeW1ib2xzLiAgKi8KIAogIyBpZmRlZiBZWVNU
QUNLX1VTRV9BTExPQ0EKICMgIGlmIFlZU1RBQ0tfVVNFX0FMTE9DQQotIyAgIGRlZmluZSBZWVNU
QUNLX0FMTE9DIGFsbG9jYQotIyAgZW5kaWYKLSMgZWxzZQotIyAgaWYgZGVmaW5lZCAoYWxsb2Nh
KSB8fCBkZWZpbmVkIChfQUxMT0NBX0gpCi0jICAgZGVmaW5lIFlZU1RBQ0tfQUxMT0MgYWxsb2Nh
Ci0jICBlbHNlCiAjICAgaWZkZWYgX19HTlVDX18KICMgICAgZGVmaW5lIFlZU1RBQ0tfQUxMT0Mg
X19idWlsdGluX2FsbG9jYQorIyAgIGVsaWYgZGVmaW5lZCBfX0JVSUxUSU5fVkFfQVJHX0lOQ1IK
KyMgICAgaW5jbHVkZSA8YWxsb2NhLmg+IC8qIElORlJJTkdFUyBPTiBVU0VSIE5BTUUgU1BBQ0Ug
Ki8KKyMgICBlbGlmIGRlZmluZWQgX0FJWAorIyAgICBkZWZpbmUgWVlTVEFDS19BTExPQyBfX2Fs
bG9jYQorIyAgIGVsaWYgZGVmaW5lZCBfTVNDX1ZFUgorIyAgICBpbmNsdWRlIDxtYWxsb2MuaD4g
LyogSU5GUklOR0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAqLworIyAgICBkZWZpbmUgYWxsb2NhIF9h
bGxvY2EKKyMgICBlbHNlCisjICAgIGRlZmluZSBZWVNUQUNLX0FMTE9DIGFsbG9jYQorIyAgICBp
ZiAhIGRlZmluZWQgX0FMTE9DQV9IICYmICEgZGVmaW5lZCBfU1RETElCX0ggJiYgKGRlZmluZWQg
X19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKKyAgICAgfHwgZGVmaW5lZCBfX2Nw
bHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQorIyAgICAgaW5jbHVkZSA8c3RkbGliLmg+IC8q
IElORlJJTkdFUyBPTiBVU0VSIE5BTUUgU1BBQ0UgKi8KKyMgICAgIGlmbmRlZiBfU1RETElCX0gK
KyMgICAgICBkZWZpbmUgX1NURExJQl9IIDEKKyMgICAgIGVuZGlmCisjICAgIGVuZGlmCiAjICAg
ZW5kaWYKICMgIGVuZGlmCiAjIGVuZGlmCiAKICMgaWZkZWYgWVlTVEFDS19BTExPQwotICAgLyog
UGFjaWZ5IEdDQydzIGBlbXB0eSBpZi1ib2R5JyB3YXJuaW5nLiAqLwotIyAgZGVmaW5lIFlZU1RB
Q0tfRlJFRShQdHIpIGRvIHsgLyogZW1wdHkgKi87IH0gd2hpbGUgKDApCi0jIGVsc2UKLSMgIGlm
IGRlZmluZWQgKF9fU1REQ19fKSB8fCBkZWZpbmVkIChfX2NwbHVzcGx1cykKLSMgICBpbmNsdWRl
IDxzdGRsaWIuaD4gLyogSU5GUklOR0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAqLwotIyAgIGRlZmlu
ZSBZWVNJWkVfVCBzaXplX3QKKyAgIC8qIFBhY2lmeSBHQ0MncyBgZW1wdHkgaWYtYm9keScgd2Fy
bmluZy4gICovCisjICBkZWZpbmUgWVlTVEFDS19GUkVFKFB0cikgZG8geyAvKiBlbXB0eSAqLzsg
fSB3aGlsZSAoWVlJRCAoMCkpCisjICBpZm5kZWYgWVlTVEFDS19BTExPQ19NQVhJTVVNCisgICAg
LyogVGhlIE9TIG1pZ2h0IGd1YXJhbnRlZSBvbmx5IG9uZSBndWFyZCBwYWdlIGF0IHRoZSBib3R0
b20gb2YgdGhlIHN0YWNrLAorICAgICAgIGFuZCBhIHBhZ2Ugc2l6ZSBjYW4gYmUgYXMgc21hbGwg
YXMgNDA5NiBieXRlcy4gIFNvIHdlIGNhbm5vdCBzYWZlbHkKKyAgICAgICBpbnZva2UgYWxsb2Nh
IChOKSBpZiBOIGV4Y2VlZHMgNDA5Ni4gIFVzZSBhIHNsaWdodGx5IHNtYWxsZXIgbnVtYmVyCisg
ICAgICAgdG8gYWxsb3cgZm9yIGEgZmV3IGNvbXBpbGVyLWFsbG9jYXRlZCB0ZW1wb3Jhcnkgc3Rh
Y2sgc2xvdHMuICAqLworIyAgIGRlZmluZSBZWVNUQUNLX0FMTE9DX01BWElNVU0gNDAzMiAvKiBy
ZWFzb25hYmxlIGNpcmNhIDIwMDYgKi8KICMgIGVuZGlmCisjIGVsc2UKICMgIGRlZmluZSBZWVNU
QUNLX0FMTE9DIFlZTUFMTE9DCiAjICBkZWZpbmUgWVlTVEFDS19GUkVFIFlZRlJFRQorIyAgaWZu
ZGVmIFlZU1RBQ0tfQUxMT0NfTUFYSU1VTQorIyAgIGRlZmluZSBZWVNUQUNLX0FMTE9DX01BWElN
VU0gWVlTSVpFX01BWElNVU0KKyMgIGVuZGlmCisjICBpZiAoZGVmaW5lZCBfX2NwbHVzcGx1cyAm
JiAhIGRlZmluZWQgX1NURExJQl9IIFwKKyAgICAgICAmJiAhICgoZGVmaW5lZCBZWU1BTExPQyB8
fCBkZWZpbmVkIG1hbGxvYykgXAorCSAgICAgJiYgKGRlZmluZWQgWVlGUkVFIHx8IGRlZmluZWQg
ZnJlZSkpKQorIyAgIGluY2x1ZGUgPHN0ZGxpYi5oPiAvKiBJTkZSSU5HRVMgT04gVVNFUiBOQU1F
IFNQQUNFICovCisjICAgaWZuZGVmIF9TVERMSUJfSAorIyAgICBkZWZpbmUgX1NURExJQl9IIDEK
KyMgICBlbmRpZgorIyAgZW5kaWYKKyMgIGlmbmRlZiBZWU1BTExPQworIyAgIGRlZmluZSBZWU1B
TExPQyBtYWxsb2MKKyMgICBpZiAhIGRlZmluZWQgbWFsbG9jICYmICEgZGVmaW5lZCBfU1RETElC
X0ggJiYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKKyAgICAg
fHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQordm9pZCAqbWFsbG9j
IChZWVNJWkVfVCk7IC8qIElORlJJTkdFUyBPTiBVU0VSIE5BTUUgU1BBQ0UgKi8KKyMgICBlbmRp
ZgorIyAgZW5kaWYKKyMgIGlmbmRlZiBZWUZSRUUKKyMgICBkZWZpbmUgWVlGUkVFIGZyZWUKKyMg
ICBpZiAhIGRlZmluZWQgZnJlZSAmJiAhIGRlZmluZWQgX1NURExJQl9IICYmIChkZWZpbmVkIF9f
U1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCisgICAgIHx8IGRlZmluZWQgX19jcGx1
c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKK3ZvaWQgZnJlZSAodm9pZCAqKTsgLyogSU5GUklO
R0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAqLworIyAgIGVuZGlmCisjICBlbmRpZgogIyBlbmRpZgot
I2VuZGlmIC8qICEgZGVmaW5lZCAoeXlvdmVyZmxvdykgfHwgWVlFUlJPUl9WRVJCT1NFICovCisj
ZW5kaWYgLyogISBkZWZpbmVkIHl5b3ZlcmZsb3cgfHwgWVlFUlJPUl9WRVJCT1NFICovCiAKIAot
I2lmICghIGRlZmluZWQgKHl5b3ZlcmZsb3cpIFwKLSAgICAgJiYgKCEgZGVmaW5lZCAoX19jcGx1
c3BsdXMpIFwKLQkgfHwgKGRlZmluZWQgKFlZU1RZUEVfSVNfVFJJVklBTCkgJiYgWVlTVFlQRV9J
U19UUklWSUFMKSkpCisjaWYgKCEgZGVmaW5lZCB5eW92ZXJmbG93IFwKKyAgICAgJiYgKCEgZGVm
aW5lZCBfX2NwbHVzcGx1cyBcCisJIHx8IChkZWZpbmVkIFlZU1RZUEVfSVNfVFJJVklBTCAmJiBZ
WVNUWVBFX0lTX1RSSVZJQUwpKSkKIAogLyogQSB0eXBlIHRoYXQgaXMgcHJvcGVybHkgYWxpZ25l
ZCBmb3IgYW55IHN0YWNrIG1lbWJlci4gICovCiB1bmlvbiB5eWFsbG9jCiB7Ci0gIHNob3J0IGlu
dCB5eXNzOworICB5eXR5cGVfaW50MTYgeXlzczsKICAgWVlTVFlQRSB5eXZzOwogICB9OwogCkBA
IC0zNjgsMjQgKzUwMywyNCBAQAogLyogVGhlIHNpemUgb2YgYW4gYXJyYXkgbGFyZ2UgdG8gZW5v
dWdoIHRvIGhvbGQgYWxsIHN0YWNrcywgZWFjaCB3aXRoCiAgICBOIGVsZW1lbnRzLiAgKi8KICMg
ZGVmaW5lIFlZU1RBQ0tfQllURVMoTikgXAotICAgICAoKE4pICogKHNpemVvZiAoc2hvcnQgaW50
KSArIHNpemVvZiAoWVlTVFlQRSkpCQkJXAorICAgICAoKE4pICogKHNpemVvZiAoeXl0eXBlX2lu
dDE2KSArIHNpemVvZiAoWVlTVFlQRSkpIFwKICAgICAgICsgWVlTVEFDS19HQVBfTUFYSU1VTSkK
IAogLyogQ29weSBDT1VOVCBvYmplY3RzIGZyb20gRlJPTSB0byBUTy4gIFRoZSBzb3VyY2UgYW5k
IGRlc3RpbmF0aW9uIGRvCiAgICBub3Qgb3ZlcmxhcC4gICovCiAjIGlmbmRlZiBZWUNPUFkKLSMg
IGlmIGRlZmluZWQgKF9fR05VQ19fKSAmJiAxIDwgX19HTlVDX18KKyMgIGlmIGRlZmluZWQgX19H
TlVDX18gJiYgMSA8IF9fR05VQ19fCiAjICAgZGVmaW5lIFlZQ09QWShUbywgRnJvbSwgQ291bnQp
IFwKICAgICAgIF9fYnVpbHRpbl9tZW1jcHkgKFRvLCBGcm9tLCAoQ291bnQpICogc2l6ZW9mICgq
KEZyb20pKSkKICMgIGVsc2UKICMgICBkZWZpbmUgWVlDT1BZKFRvLCBGcm9tLCBDb3VudCkJCVwK
ICAgICAgIGRvCQkJCQlcCiAJewkJCQkJXAotCSAgcmVnaXN0ZXIgWVlTSVpFX1QgeXlpOwkJXAor
CSAgWVlTSVpFX1QgeXlpOwkJCQlcCiAJICBmb3IgKHl5aSA9IDA7IHl5aSA8IChDb3VudCk7IHl5
aSsrKQlcCiAJICAgIChUbylbeXlpXSA9IChGcm9tKVt5eWldOwkJXAogCX0JCQkJCVwKLSAgICAg
IHdoaWxlICgwKQorICAgICAgd2hpbGUgKFlZSUQgKDApKQogIyAgZW5kaWYKICMgZW5kaWYKIApA
QCAtNDAzLDM5ICs1MzgsMzMgQEAKIAl5eW5ld2J5dGVzID0geXlzdGFja3NpemUgKiBzaXplb2Yg
KCpTdGFjaykgKyBZWVNUQUNLX0dBUF9NQVhJTVVNOyBcCiAJeXlwdHIgKz0geXluZXdieXRlcyAv
IHNpemVvZiAoKnl5cHRyKTsJCQkJXAogICAgICAgfQkJCQkJCQkJCVwKLSAgICB3aGlsZSAoMCkK
KyAgICB3aGlsZSAoWVlJRCAoMCkpCiAKICNlbmRpZgogCi0jaWYgZGVmaW5lZCAoX19TVERDX18p
IHx8IGRlZmluZWQgKF9fY3BsdXNwbHVzKQotICAgdHlwZWRlZiBzaWduZWQgY2hhciB5eXNpZ25l
ZF9jaGFyOwotI2Vsc2UKLSAgIHR5cGVkZWYgc2hvcnQgaW50IHl5c2lnbmVkX2NoYXI7Ci0jZW5k
aWYKLQotLyogWVlGSU5BTCAtLSBTdGF0ZSBudW1iZXIgb2YgdGhlIHRlcm1pbmF0aW9uIHN0YXRl
LiAqLwotI2RlZmluZSBZWUZJTkFMICAxNjAKKy8qIFlZRklOQUwgLS0gU3RhdGUgbnVtYmVyIG9m
IHRoZSB0ZXJtaW5hdGlvbiBzdGF0ZS4gICovCisjZGVmaW5lIFlZRklOQUwgIDI4CiAvKiBZWUxB
U1QgLS0gTGFzdCBpbmRleCBpbiBZWVRBQkxFLiAgKi8KICNkZWZpbmUgWVlMQVNUICAgMTI2MAog
Ci0vKiBZWU5UT0tFTlMgLS0gTnVtYmVyIG9mIHRlcm1pbmFscy4gKi8KKy8qIFlZTlRPS0VOUyAt
LSBOdW1iZXIgb2YgdGVybWluYWxzLiAgKi8KICNkZWZpbmUgWVlOVE9LRU5TICA4MwotLyogWVlO
TlRTIC0tIE51bWJlciBvZiBub250ZXJtaW5hbHMuICovCisvKiBZWU5OVFMgLS0gTnVtYmVyIG9m
IG5vbnRlcm1pbmFscy4gICovCiAjZGVmaW5lIFlZTk5UUyAgOTAKLS8qIFlZTlJVTEVTIC0tIE51
bWJlciBvZiBydWxlcy4gKi8KKy8qIFlZTlJVTEVTIC0tIE51bWJlciBvZiBydWxlcy4gICovCiAj
ZGVmaW5lIFlZTlJVTEVTICAyNjYKLS8qIFlZTlJVTEVTIC0tIE51bWJlciBvZiBzdGF0ZXMuICov
CisvKiBZWU5SVUxFUyAtLSBOdW1iZXIgb2Ygc3RhdGVzLiAgKi8KICNkZWZpbmUgWVlOU1RBVEVT
ICA1MTEKIAogLyogWVlUUkFOU0xBVEUoWVlMRVgpIC0tIEJpc29uIHN5bWJvbCBudW1iZXIgY29y
cmVzcG9uZGluZyB0byBZWUxFWC4gICovCiAjZGVmaW5lIFlZVU5ERUZUT0sgIDIKICNkZWZpbmUg
WVlNQVhVVE9LICAgMzE3CiAKLSNkZWZpbmUgWVlUUkFOU0xBVEUoWVlYKSAJCQkJCQlcCisjZGVm
aW5lIFlZVFJBTlNMQVRFKFlZWCkJCQkJCQlcCiAgICgodW5zaWduZWQgaW50KSAoWVlYKSA8PSBZ
WU1BWFVUT0sgPyB5eXRyYW5zbGF0ZVtZWVhdIDogWVlVTkRFRlRPSykKIAogLyogWVlUUkFOU0xB
VEVbWVlMRVhdIC0tIEJpc29uIHN5bWJvbCBudW1iZXIgY29ycmVzcG9uZGluZyB0byBZWUxFWC4g
ICovCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciB5eXRyYW5zbGF0ZVtdID0KK3N0YXRpYyBj
b25zdCB5eXR5cGVfdWludDggeXl0cmFuc2xhdGVbXSA9CiB7CiAgICAgICAgMCwgICAgIDIsICAg
ICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKICAg
ICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwg
ICAgIDIsICAgICAyLApAQCAtNDc0LDcgKzYwMyw3IEBACiAjaWYgWVlERUJVRwogLyogWVlQUkhT
W1lZTl0gLS0gSW5kZXggb2YgdGhlIGZpcnN0IFJIUyBzeW1ib2wgb2YgcnVsZSBudW1iZXIgWVlO
IGluCiAgICBZWVJIUy4gICovCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgaW50IHl5cHJo
c1tdID0KK3N0YXRpYyBjb25zdCB5eXR5cGVfdWludDE2IHl5cHJoc1tdID0KIHsKICAgICAgICAw
LCAgICAgMCwgICAgIDMsICAgIDEwLCAgICAxMywgICAgMTYsICAgIDE5LCAgICAyMiwgICAgMjUs
ICAgIDI4LAogICAgICAgMzEsICAgIDMzLCAgICAzNSwgICAgNDIsICAgIDQ5LCAgICA1NSwgICAg
NjEsICAgIDY3LCAgICA3MywgICAgNzksCkBAIC01MDUsOCArNjM0LDggQEAKICAgICAgODg1LCAg
IDg4NywgICA4ODksICAgODkyLCAgIDg5OCwgICA5MDIsICAgOTA0CiB9OwogCi0vKiBZWVJIUyAt
LSBBIGAtMSctc2VwYXJhdGVkIGxpc3Qgb2YgdGhlIHJ1bGVzJyBSSFMuICovCi1zdGF0aWMgY29u
c3Qgc2hvcnQgaW50IHl5cmhzW10gPQorLyogWVlSSFMgLS0gQSBgLTEnLXNlcGFyYXRlZCBsaXN0
IG9mIHRoZSBydWxlcycgUkhTLiAgKi8KK3N0YXRpYyBjb25zdCB5eXR5cGVfaW50MTYgeXlyaHNb
XSA9CiB7CiAgICAgICA4NCwgICAgIDAsICAgIC0xLCAgICA5NSwgICAgOTQsICAgIDk4LCAgICA5
OSwgICAxMDAsICAgMTAxLCAgICAtMSwKICAgICAgIDg2LCAgICA5MywgICAgLTEsICAgIDg4LCAg
ICA5MywgICAgLTEsICAgIDkwLCAgICA5MywgICAgLTEsICAgIDkxLApAQCAtNjAyLDcgKzczMSw3
IEBACiB9OwogCiAvKiBZWVJMSU5FW1lZTl0gLS0gc291cmNlIGxpbmUgd2hlcmUgcnVsZSBudW1i
ZXIgWVlOIHdhcyBkZWZpbmVkLiAgKi8KLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBpbnQg
eXlybGluZVtdID0KK3N0YXRpYyBjb25zdCB5eXR5cGVfdWludDE2IHl5cmxpbmVbXSA9CiB7CiAg
ICAgICAgMCwgICAyNjIsICAgMjYyLCAgIDI2MywgICAyNjQsICAgMjY1LCAgIDI2NiwgICAyNjcs
ICAgMjY4LCAgIDI2OSwKICAgICAgMjczLCAgIDI3NCwgICAyNzgsICAgMjg0LCAgIDI5MCwgICAy
OTYsICAgMzAyLCAgIDMxNiwgICAzMjMsICAgMzMwLApAQCAtNjM0LDkgKzc2Myw5IEBACiB9Owog
I2VuZGlmCiAKLSNpZiBZWURFQlVHIHx8IFlZRVJST1JfVkVSQk9TRQotLyogWVlUTk1FW1NZTUJP
TC1OVU1dIC0tIFN0cmluZyBuYW1lIG9mIHRoZSBzeW1ib2wgU1lNQk9MLU5VTS4KLSAgIEZpcnN0
LCB0aGUgdGVybWluYWxzLCB0aGVuLCBzdGFydGluZyBhdCBZWU5UT0tFTlMsIG5vbnRlcm1pbmFs
cy4gKi8KKyNpZiBZWURFQlVHIHx8IFlZRVJST1JfVkVSQk9TRSB8fCBZWVRPS0VOX1RBQkxFCisv
KiBZWVROQU1FW1NZTUJPTC1OVU1dIC0tIFN0cmluZyBuYW1lIG9mIHRoZSBzeW1ib2wgU1lNQk9M
LU5VTS4KKyAgIEZpcnN0LCB0aGUgdGVybWluYWxzLCB0aGVuLCBzdGFydGluZyBhdCBZWU5UT0tF
TlMsIG5vbnRlcm1pbmFscy4gICovCiBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgeXl0bmFtZVtd
ID0KIHsKICAgIlRPS0VOX0VPRiIsICJlcnJvciIsICIkdW5kZWZpbmVkIiwgIlVOSU1QT1JUQU5U
X1RPSyIsICJXSElURVNQQUNFIiwKQEAgLTY4MSw3ICs4MTAsNyBAQAogIyBpZmRlZiBZWVBSSU5U
CiAvKiBZWVRPS05VTVtZWUxFWC1OVU1dIC0tIEludGVybmFsIHRva2VuIG51bWJlciBjb3JyZXNw
b25kaW5nIHRvCiAgICB0b2tlbiBZWUxFWC1OVU0uICAqLwotc3RhdGljIGNvbnN0IHVuc2lnbmVk
IHNob3J0IGludCB5eXRva251bVtdID0KK3N0YXRpYyBjb25zdCB5eXR5cGVfdWludDE2IHl5dG9r
bnVtW10gPQogewogICAgICAgIDAsICAgMjU2LCAgIDI1NywgICAyNTgsICAgMjU5LCAgIDI2MCwg
ICAyNjEsICAgMjYyLCAgIDI2MywgICAyNjQsCiAgICAgIDI2NSwgICAyNjYsICAgMjY3LCAgIDI2
OCwgICAyNjksICAgMjcwLCAgICA1OCwgICAgNDYsICAgIDkxLCAgICA0MiwKQEAgLTY5Niw3ICs4
MjUsNyBAQAogIyBlbmRpZgogCiAvKiBZWVIxW1lZTl0gLS0gU3ltYm9sIG51bWJlciBvZiBzeW1i
b2wgdGhhdCBydWxlIFlZTiBkZXJpdmVzLiAgKi8KLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFy
IHl5cjFbXSA9CitzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5cjFbXSA9CiB7CiAgICAgICAg
MCwgICAgODMsICAgIDg0LCAgICA4NCwgICAgODQsICAgIDg0LCAgICA4NCwgICAgODQsICAgIDg0
LCAgICA4NCwKICAgICAgIDg1LCAgICA4NSwgICAgODYsICAgIDg3LCAgICA4OCwgICAgODksICAg
IDkwLCAgICA5MSwgICAgOTIsICAgIDkzLApAQCAtNzI4LDcgKzg1Nyw3IEBACiB9OwogCiAvKiBZ
WVIyW1lZTl0gLS0gTnVtYmVyIG9mIHN5bWJvbHMgY29tcG9zaW5nIHJpZ2h0IGhhbmQgc2lkZSBv
ZiBydWxlIFlZTi4gICovCi1zdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciB5eXIyW10gPQorc3Rh
dGljIGNvbnN0IHl5dHlwZV91aW50OCB5eXIyW10gPQogewogICAgICAgIDAsICAgICAyLCAgICAg
NiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCiAgICAg
ICAgMSwgICAgIDEsICAgICA2LCAgICAgNiwgICAgIDUsICAgICA1LCAgICAgNSwgICAgIDUsICAg
ICA1LCAgICAgMCwKQEAgLTc2Miw3ICs4OTEsNyBAQAogLyogWVlERUZBQ1RbU1RBVEUtTkFNRV0g
LS0gRGVmYXVsdCBydWxlIHRvIHJlZHVjZSB3aXRoIGluIHN0YXRlCiAgICBTVEFURS1OVU0gd2hl
biBZWVRBQkxFIGRvZXNuJ3Qgc3BlY2lmeSBzb21ldGhpbmcgZWxzZSB0byBkby4gIFplcm8KICAg
IG1lYW5zIHRoZSBkZWZhdWx0IGlzIGFuIGVycm9yLiAgKi8KLXN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBzaG9ydCBpbnQgeXlkZWZhY3RbXSA9CitzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQxNiB5eWRl
ZmFjdFtdID0KIHsKICAgICAgIDI0LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAogICAgICAgMTksICAgIDE5LCAgICAxOSwgICAg
MTksICAgIDE5LCAgICAxOSwgICAgMTksICAgIDIxLCAgICAyNSwgICAgIDAsCkBAIC04MTgsOCAr
OTQ3LDggQEAKICAgICAgMTIwCiB9OwogCi0vKiBZWURFRkdPVE9bTlRFUk0tTlVNXS4gKi8KLXN0
YXRpYyBjb25zdCBzaG9ydCBpbnQgeXlkZWZnb3RvW10gPQorLyogWVlERUZHT1RPW05URVJNLU5V
TV0uICAqLworc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQxNiB5eWRlZmdvdG9bXSA9CiB7CiAgICAg
ICAtMSwgICAgIDksICAgIDcwLCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAg
IDE1LCAgICAxNiwKICAgICAgMjUzLCAgICAzNiwgICAgMTcsICAgNDU2LCAgICAxOCwgICAgNTIs
ICAgMTU2LCAgIDI3MiwgICAzNDUsICAgIDcxLApAQCAtODM1LDcgKzk2NCw3IEBACiAvKiBZWVBB
Q1RbU1RBVEUtTlVNXSAtLSBJbmRleCBpbiBZWVRBQkxFIG9mIHRoZSBwb3J0aW9uIGRlc2NyaWJp
bmcKICAgIFNUQVRFLU5VTS4gICovCiAjZGVmaW5lIFlZUEFDVF9OSU5GIC0yOTcKLXN0YXRpYyBj
b25zdCBzaG9ydCBpbnQgeXlwYWN0W10gPQorc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQxNiB5eXBh
Y3RbXSA9CiB7CiAgICAgIDQ2NCwgICAgNDcsICAgLTI1LCAgIC0xNCwgICAgLTMsICAgICAzLCAg
IDE2NiwgICAxMTgsICAgMTQwLCAgIDIyNCwKICAgICAtMjk3LCAgLTI5NywgIC0yOTcsICAtMjk3
LCAgLTI5NywgIC0yOTcsICAtMjk3LCAgLTI5NywgIC0yOTcsICAgICAyLApAQCAtODkyLDcgKzEw
MjEsNyBAQAogfTsKIAogLyogWVlQR09UT1tOVEVSTS1OVU1dLiAgKi8KLXN0YXRpYyBjb25zdCBz
aG9ydCBpbnQgeXlwZ290b1tdID0KK3N0YXRpYyBjb25zdCB5eXR5cGVfaW50MTYgeXlwZ290b1td
ID0KIHsKICAgICAtMjk3LCAgLTI5NywgIC0yOTcsICAtMjk3LCAgLTI5NywgIC0yOTcsICAtMjk3
LCAgLTI5NywgIC0yOTcsICAtMjk3LAogICAgICAgLTEsICAgLTIxLCAgLTI5NywgICAtNTEsICAt
Mjk3LCAgLTI5NywgIC0yOTcsICAtMjk3LCAgLTI5NywgICAyNzEsCkBAIC05MTAsNyArMTAzOSw3
IEBACiAgICBudW1iZXIgaXMgdGhlIG9wcG9zaXRlLiAgSWYgemVybywgZG8gd2hhdCBZWURFRkFD
VCBzYXlzLgogICAgSWYgWVlUQUJMRV9OSU5GLCBzeW50YXggZXJyb3IuICAqLwogI2RlZmluZSBZ
WVRBQkxFX05JTkYgLTIxNwotc3RhdGljIGNvbnN0IHNob3J0IGludCB5eXRhYmxlW10gPQorc3Rh
dGljIGNvbnN0IHl5dHlwZV9pbnQxNiB5eXRhYmxlW10gPQogewogICAgICAgMjAsICAgMTQ3LCAg
ICA0MCwgICAgMzksICAgMTYyLCAgICA0MCwgICAzNjcsICAgMzcyLCAgICA5NywgICAgMjksCiAg
ICAgICAzMCwgICAgMzEsICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1LCAgIDI5NSwgICAgNTMs
ICAgMzE1LCAgIDE4MiwKQEAgLTEwNDEsNyArMTE3MCw3IEBACiAgICAgIDE2MQogfTsKIAotc3Rh
dGljIGNvbnN0IHNob3J0IGludCB5eWNoZWNrW10gPQorc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQx
NiB5eWNoZWNrW10gPQogewogICAgICAgIDEsICAgIDQ2LCAgICAgNCwgICAgMTksICAgIDU1LCAg
ICAgNCwgICAgIDEsICAgMzAzLCAgICA0MywgICAgMTAsCiAgICAgICAxMSwgICAgMTIsICAgIDEz
LCAgICAxNCwgICAgMTUsICAgIDE2LCAgIDE3NywgICAgMzYsICAgICAxLCAgICAgMSwKQEAgLTEx
NzQsNyArMTMwMyw3IEBACiAKIC8qIFlZU1RPU1tTVEFURS1OVU1dIC0tIFRoZSAoaW50ZXJuYWwg
bnVtYmVyIG9mIHRoZSkgYWNjZXNzaW5nCiAgICBzeW1ib2wgb2Ygc3RhdGUgU1RBVEUtTlVNLiAg
Ki8KLXN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyIHl5c3Rvc1tdID0KK3N0YXRpYyBjb25zdCB5
eXR5cGVfdWludDggeXlzdG9zW10gPQogewogICAgICAgIDAsICAgIDI1LCAgICAyNywgICAgMjgs
ICAgIDI5LCAgICAzMSwgICAgMzIsICAgIDMzLCAgICAzNywgICAgODQsCiAgICAgICA4NiwgICAg
ODcsICAgIDg4LCAgICA4OSwgICAgOTAsICAgIDkxLCAgICA5MiwgICAgOTUsICAgIDk3LCAgICAg
MSwKQEAgLTEyMzAsMjIgKzEzNTksNiBAQAogICAgICAgOTMKIH07CiAKLSNpZiAhIGRlZmluZWQg
KFlZU0laRV9UKSAmJiBkZWZpbmVkIChfX1NJWkVfVFlQRV9fKQotIyBkZWZpbmUgWVlTSVpFX1Qg
X19TSVpFX1RZUEVfXwotI2VuZGlmCi0jaWYgISBkZWZpbmVkIChZWVNJWkVfVCkgJiYgZGVmaW5l
ZCAoc2l6ZV90KQotIyBkZWZpbmUgWVlTSVpFX1Qgc2l6ZV90Ci0jZW5kaWYKLSNpZiAhIGRlZmlu
ZWQgKFlZU0laRV9UKQotIyBpZiBkZWZpbmVkIChfX1NURENfXykgfHwgZGVmaW5lZCAoX19jcGx1
c3BsdXMpCi0jICBpbmNsdWRlIDxzdGRkZWYuaD4gLyogSU5GUklOR0VTIE9OIFVTRVIgTkFNRSBT
UEFDRSAqLwotIyAgZGVmaW5lIFlZU0laRV9UIHNpemVfdAotIyBlbmRpZgotI2VuZGlmCi0jaWYg
ISBkZWZpbmVkIChZWVNJWkVfVCkKLSMgZGVmaW5lIFlZU0laRV9UIHVuc2lnbmVkIGludAotI2Vu
ZGlmCi0KICNkZWZpbmUgeXllcnJvawkJKHl5ZXJyc3RhdHVzID0gMCkKICNkZWZpbmUgeXljbGVh
cmluCSh5eWNoYXIgPSBZWUVNUFRZKQogI2RlZmluZSBZWUVNUFRZCQkoLTIpCkBAIC0xMjcxLDMw
ICsxMzg0LDYzIEBACiAgICAgICB5eWNoYXIgPSAoVG9rZW4pOwkJCQkJCVwKICAgICAgIHl5bHZh
bCA9IChWYWx1ZSk7CQkJCQkJXAogICAgICAgeXl0b2tlbiA9IFlZVFJBTlNMQVRFICh5eWNoYXIp
OwkJCQlcCi0gICAgICBZWVBPUFNUQUNLOwkJCQkJCVwKKyAgICAgIFlZUE9QU1RBQ0sgKDEpOwkJ
CQkJCVwKICAgICAgIGdvdG8geXliYWNrdXA7CQkJCQkJXAogICAgIH0JCQkJCQkJCVwKICAgZWxz
ZQkJCQkJCQkJXAotICAgIHsgCQkJCQkJCQlcCi0gICAgICB5eWVycm9yICgic3ludGF4IGVycm9y
OiBjYW5ub3QgYmFjayB1cCIpO1wKKyAgICB7CQkJCQkJCQlcCisgICAgICB5eWVycm9yIChZWV8o
InN5bnRheCBlcnJvcjogY2Fubm90IGJhY2sgdXAiKSk7IFwKICAgICAgIFlZRVJST1I7CQkJCQkJ
CVwKICAgICB9CQkJCQkJCQlcCi13aGlsZSAoMCkKK3doaWxlIChZWUlEICgwKSkKKwogCiAjZGVm
aW5lIFlZVEVSUk9SCTEKICNkZWZpbmUgWVlFUlJDT0RFCTI1NgogCi0vKiBZWUxMT0NfREVGQVVM
VCAtLSBDb21wdXRlIHRoZSBkZWZhdWx0IGxvY2F0aW9uIChiZWZvcmUgdGhlIGFjdGlvbnMKLSAg
IGFyZSBydW4pLiAgKi8KIAorLyogWVlMTE9DX0RFRkFVTFQgLS0gU2V0IENVUlJFTlQgdG8gc3Bh
biBmcm9tIFJIU1sxXSB0byBSSFNbTl0uCisgICBJZiBOIGlzIDAsIHRoZW4gc2V0IENVUlJFTlQg
dG8gdGhlIGVtcHR5IGxvY2F0aW9uIHdoaWNoIGVuZHMKKyAgIHRoZSBwcmV2aW91cyBzeW1ib2w6
IFJIU1swXSAoYWx3YXlzIGRlZmluZWQpLiAgKi8KKworI2RlZmluZSBZWVJIU0xPQyhSaHMsIEsp
ICgoUmhzKVtLXSkKICNpZm5kZWYgWVlMTE9DX0RFRkFVTFQKLSMgZGVmaW5lIFlZTExPQ19ERUZB
VUxUKEN1cnJlbnQsIFJocywgTikJCVwKLSAgICgoQ3VycmVudCkuZmlyc3RfbGluZSAgID0gKFJo
cylbMV0uZmlyc3RfbGluZSwJXAotICAgIChDdXJyZW50KS5maXJzdF9jb2x1bW4gPSAoUmhzKVsx
XS5maXJzdF9jb2x1bW4sCVwKLSAgICAoQ3VycmVudCkubGFzdF9saW5lICAgID0gKFJocylbTl0u
bGFzdF9saW5lLAlcCi0gICAgKEN1cnJlbnQpLmxhc3RfY29sdW1uICA9IChSaHMpW05dLmxhc3Rf
Y29sdW1uKQorIyBkZWZpbmUgWVlMTE9DX0RFRkFVTFQoQ3VycmVudCwgUmhzLCBOKQkJCQlcCisg
ICAgZG8JCQkJCQkJCQlcCisgICAgICBpZiAoWVlJRCAoTikpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKwl7CQkJCQkJCQlcCisJICAoQ3VycmVu
dCkuZmlyc3RfbGluZSAgID0gWVlSSFNMT0MgKFJocywgMSkuZmlyc3RfbGluZTsJXAorCSAgKEN1
cnJlbnQpLmZpcnN0X2NvbHVtbiA9IFlZUkhTTE9DIChSaHMsIDEpLmZpcnN0X2NvbHVtbjsJXAor
CSAgKEN1cnJlbnQpLmxhc3RfbGluZSAgICA9IFlZUkhTTE9DIChSaHMsIE4pLmxhc3RfbGluZTsJ
CVwKKwkgIChDdXJyZW50KS5sYXN0X2NvbHVtbiAgPSBZWVJIU0xPQyAoUmhzLCBOKS5sYXN0X2Nv
bHVtbjsJXAorCX0JCQkJCQkJCVwKKyAgICAgIGVsc2UJCQkJCQkJCVwKKwl7CQkJCQkJCQlcCisJ
ICAoQ3VycmVudCkuZmlyc3RfbGluZSAgID0gKEN1cnJlbnQpLmxhc3RfbGluZSAgID0JCVwKKwkg
ICAgWVlSSFNMT0MgKFJocywgMCkubGFzdF9saW5lOwkJCQlcCisJICAoQ3VycmVudCkuZmlyc3Rf
Y29sdW1uID0gKEN1cnJlbnQpLmxhc3RfY29sdW1uID0JCVwKKwkgICAgWVlSSFNMT0MgKFJocywg
MCkubGFzdF9jb2x1bW47CQkJCVwKKwl9CQkJCQkJCQlcCisgICAgd2hpbGUgKFlZSUQgKDApKQor
I2VuZGlmCisKKworLyogWVlfTE9DQVRJT05fUFJJTlQgLS0gUHJpbnQgdGhlIGxvY2F0aW9uIG9u
IHRoZSBzdHJlYW0uCisgICBUaGlzIG1hY3JvIHdhcyBub3QgbWFuZGF0ZWQgb3JpZ2luYWxseTog
ZGVmaW5lIG9ubHkgaWYgd2Uga25vdworICAgd2Ugd29uJ3QgYnJlYWsgdXNlciBjb2RlOiB3aGVu
IHRoZXNlIGFyZSB0aGUgbG9jYXRpb25zIHdlIGtub3cuICAqLworCisjaWZuZGVmIFlZX0xPQ0FU
SU9OX1BSSU5UCisjIGlmIFlZTFRZUEVfSVNfVFJJVklBTAorIyAgZGVmaW5lIFlZX0xPQ0FUSU9O
X1BSSU5UKEZpbGUsIExvYykJCQlcCisgICAgIGZwcmludGYgKEZpbGUsICIlZC4lZC0lZC4lZCIs
CQkJXAorCSAgICAgIChMb2MpLmZpcnN0X2xpbmUsIChMb2MpLmZpcnN0X2NvbHVtbiwJXAorCSAg
ICAgIChMb2MpLmxhc3RfbGluZSwgIChMb2MpLmxhc3RfY29sdW1uKQorIyBlbHNlCisjICBkZWZp
bmUgWVlfTE9DQVRJT05fUFJJTlQoRmlsZSwgTG9jKSAoKHZvaWQpIDApCisjIGVuZGlmCiAjZW5k
aWYKIAorCiAvKiBZWUxFWCAtLSBjYWxsaW5nIGB5eWxleCcgd2l0aCB0aGUgcmlnaHQgYXJndW1l
bnRzLiAgKi8KIAogI2lmZGVmIFlZTEVYX1BBUkFNCkBAIC0xMzE1LDQyICsxNDYxLDk2IEBACiBk
byB7CQkJCQkJXAogICBpZiAoeXlkZWJ1ZykJCQkJCVwKICAgICBZWUZQUklOVEYgQXJnczsJCQkJ
XAotfSB3aGlsZSAoMCkKK30gd2hpbGUgKFlZSUQgKDApKQogCi0jIGRlZmluZSBZWURTWU1QUklO
VChBcmdzKQkJCVwKLWRvIHsJCQkJCQlcCi0gIGlmICh5eWRlYnVnKQkJCQkJXAotICAgIHl5c3lt
cHJpbnQgQXJnczsJCQkJXAotfSB3aGlsZSAoMCkKKyMgZGVmaW5lIFlZX1NZTUJPTF9QUklOVChU
aXRsZSwgVHlwZSwgVmFsdWUsIExvY2F0aW9uKQkJCSAgXAorZG8gewkJCQkJCQkJCSAgXAorICBp
ZiAoeXlkZWJ1ZykJCQkJCQkJCSAgXAorICAgIHsJCQkJCQkJCQkgIFwKKyAgICAgIFlZRlBSSU5U
RiAoc3RkZXJyLCAiJXMgIiwgVGl0bGUpOwkJCQkJICBcCisgICAgICB5eV9zeW1ib2xfcHJpbnQg
KHN0ZGVyciwJCQkJCQkgIFwKKwkJICBUeXBlLCBWYWx1ZSk7IFwKKyAgICAgIFlZRlBSSU5URiAo
c3RkZXJyLCAiXG4iKTsJCQkJCQkgIFwKKyAgICB9CQkJCQkJCQkJICBcCit9IHdoaWxlIChZWUlE
ICgwKSkKIAotIyBkZWZpbmUgWVlEU1lNUFJJTlRGKFRpdGxlLCBUb2tlbiwgVmFsdWUsIExvY2F0
aW9uKQkJXAotZG8gewkJCQkJCQkJXAotICBpZiAoeXlkZWJ1ZykJCQkJCQkJXAotICAgIHsJCQkJ
CQkJCVwKLSAgICAgIFlZRlBSSU5URiAoc3RkZXJyLCAiJXMgIiwgVGl0bGUpOwkJCQlcCi0gICAg
ICB5eXN5bXByaW50IChzdGRlcnIsIAkJCQkJXAotICAgICAgICAgICAgICAgICAgVG9rZW4sIFZh
bHVlKTsJXAotICAgICAgWVlGUFJJTlRGIChzdGRlcnIsICJcbiIpOwkJCQkJXAotICAgIH0JCQkJ
CQkJCVwKLX0gd2hpbGUgKDApCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0u
Cit8IFByaW50IHRoaXMgc3ltYm9sIG9uIFlZT1VUUFVULiAgfAorYC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKi8KKworLypBUkdTVVNFRCovCisjaWYgKGRlZmluZWQgX19TVERDX18g
fHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKKyAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8
fCBkZWZpbmVkIF9NU0NfVkVSKQorc3RhdGljIHZvaWQKK3l5X3N5bWJvbF92YWx1ZV9wcmludCAo
RklMRSAqeXlvdXRwdXQsIGludCB5eXR5cGUsIFlZU1RZUEUgY29uc3QgKiBjb25zdCB5eXZhbHVl
cCkKKyNlbHNlCitzdGF0aWMgdm9pZAoreXlfc3ltYm9sX3ZhbHVlX3ByaW50ICh5eW91dHB1dCwg
eXl0eXBlLCB5eXZhbHVlcCkKKyAgICBGSUxFICp5eW91dHB1dDsKKyAgICBpbnQgeXl0eXBlOwor
ICAgIFlZU1RZUEUgY29uc3QgKiBjb25zdCB5eXZhbHVlcDsKKyNlbmRpZgoreworICBpZiAoIXl5
dmFsdWVwKQorICAgIHJldHVybjsKKyMgaWZkZWYgWVlQUklOVAorICBpZiAoeXl0eXBlIDwgWVlO
VE9LRU5TKQorICAgIFlZUFJJTlQgKHl5b3V0cHV0LCB5eXRva251bVt5eXR5cGVdLCAqeXl2YWx1
ZXApOworIyBlbHNlCisgIFlZVVNFICh5eW91dHB1dCk7CisjIGVuZGlmCisgIHN3aXRjaCAoeXl0
eXBlKQorICAgIHsKKyAgICAgIGRlZmF1bHQ6CisJYnJlYWs7CisgICAgfQorfQorCisKKy8qLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCit8IFByaW50IHRoaXMgc3ltYm9sIG9uIFlZ
T1VUUFVULiAgfAorYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworI2lmIChk
ZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCisgICAgIHx8IGRlZmlu
ZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKK3N0YXRpYyB2b2lkCit5eV9zeW1i
b2xfcHJpbnQgKEZJTEUgKnl5b3V0cHV0LCBpbnQgeXl0eXBlLCBZWVNUWVBFIGNvbnN0ICogY29u
c3QgeXl2YWx1ZXApCisjZWxzZQorc3RhdGljIHZvaWQKK3l5X3N5bWJvbF9wcmludCAoeXlvdXRw
dXQsIHl5dHlwZSwgeXl2YWx1ZXApCisgICAgRklMRSAqeXlvdXRwdXQ7CisgICAgaW50IHl5dHlw
ZTsKKyAgICBZWVNUWVBFIGNvbnN0ICogY29uc3QgeXl2YWx1ZXA7CisjZW5kaWYKK3sKKyAgaWYg
KHl5dHlwZSA8IFlZTlRPS0VOUykKKyAgICBZWUZQUklOVEYgKHl5b3V0cHV0LCAidG9rZW4gJXMg
KCIsIHl5dG5hbWVbeXl0eXBlXSk7CisgIGVsc2UKKyAgICBZWUZQUklOVEYgKHl5b3V0cHV0LCAi
bnRlcm0gJXMgKCIsIHl5dG5hbWVbeXl0eXBlXSk7CisKKyAgeXlfc3ltYm9sX3ZhbHVlX3ByaW50
ICh5eW91dHB1dCwgeXl0eXBlLCB5eXZhbHVlcCk7CisgIFlZRlBSSU5URiAoeXlvdXRwdXQsICIp
Iik7Cit9CiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLgogfCB5eV9zdGFja19wcmludCAtLSBQcmludCB0aGUgc3Rh
dGUgc3RhY2sgZnJvbSBpdHMgQk9UVE9NIHVwIHRvIGl0cyB8CiB8IFRPUCAoaW5jbHVkZWQpLiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKIGAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0qLwogCi0jaWYgZGVmaW5lZCAoX19TVERDX18pIHx8IGRlZmluZWQgKF9fY3BsdXNwbHVz
KQorI2lmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCisgICAg
IHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKIHN0YXRpYyB2b2lk
Ci15eV9zdGFja19wcmludCAoc2hvcnQgaW50ICpib3R0b20sIHNob3J0IGludCAqdG9wKQoreXlf
c3RhY2tfcHJpbnQgKHl5dHlwZV9pbnQxNiAqYm90dG9tLCB5eXR5cGVfaW50MTYgKnRvcCkKICNl
bHNlCiBzdGF0aWMgdm9pZAogeXlfc3RhY2tfcHJpbnQgKGJvdHRvbSwgdG9wKQotICAgIHNob3J0
IGludCAqYm90dG9tOwotICAgIHNob3J0IGludCAqdG9wOworICAgIHl5dHlwZV9pbnQxNiAqYm90
dG9tOworICAgIHl5dHlwZV9pbnQxNiAqdG9wOwogI2VuZGlmCiB7CiAgIFlZRlBSSU5URiAoc3Rk
ZXJyLCAiU3RhY2sgbm93Iik7Ci0gIGZvciAoLyogTm90aGluZy4gKi87IGJvdHRvbSA8PSB0b3A7
ICsrYm90dG9tKQorICBmb3IgKDsgYm90dG9tIDw9IHRvcDsgKytib3R0b20pCiAgICAgWVlGUFJJ
TlRGIChzdGRlcnIsICIgJWQiLCAqYm90dG9tKTsKICAgWVlGUFJJTlRGIChzdGRlcnIsICJcbiIp
OwogfQpAQCAtMTM1OSw0NSArMTU1OSw1MiBAQAogZG8gewkJCQkJCQkJXAogICBpZiAoeXlkZWJ1
ZykJCQkJCQkJXAogICAgIHl5X3N0YWNrX3ByaW50ICgoQm90dG9tKSwgKFRvcCkpOwkJCQlcCi19
IHdoaWxlICgwKQorfSB3aGlsZSAoWVlJRCAoMCkpCiAKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCiB8IFJlcG9ydCB0aGF0IHRoZSBZWVJVTEUg
aXMgZ29pbmcgdG8gYmUgcmVkdWNlZC4gIHwKIGAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCi0jaWYgZGVmaW5lZCAoX19TVERDX18pIHx8IGRlZmlu
ZWQgKF9fY3BsdXNwbHVzKQorI2lmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlf
X0ZVTkNfXyBcCisgICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZF
UikKIHN0YXRpYyB2b2lkCi15eV9yZWR1Y2VfcHJpbnQgKGludCB5eXJ1bGUpCit5eV9yZWR1Y2Vf
cHJpbnQgKFlZU1RZUEUgKnl5dnNwLCBpbnQgeXlydWxlKQogI2Vsc2UKIHN0YXRpYyB2b2lkCi15
eV9yZWR1Y2VfcHJpbnQgKHl5cnVsZSkKK3l5X3JlZHVjZV9wcmludCAoeXl2c3AsIHl5cnVsZSkK
KyAgICBZWVNUWVBFICp5eXZzcDsKICAgICBpbnQgeXlydWxlOwogI2VuZGlmCiB7CisgIGludCB5
eW5yaHMgPSB5eXIyW3l5cnVsZV07CiAgIGludCB5eWk7Ci0gIHVuc2lnbmVkIGludCB5eWxubyA9
IHl5cmxpbmVbeXlydWxlXTsKLSAgWVlGUFJJTlRGIChzdGRlcnIsICJSZWR1Y2luZyBzdGFjayBi
eSBydWxlICVkIChsaW5lICV1KSwgIiwKLSAgICAgICAgICAgICB5eXJ1bGUgLSAxLCB5eWxubyk7
Ci0gIC8qIFByaW50IHRoZSBzeW1ib2xzIGJlaW5nIHJlZHVjZWQsIGFuZCB0aGVpciByZXN1bHQu
ICAqLwotICBmb3IgKHl5aSA9IHl5cHJoc1t5eXJ1bGVdOyAwIDw9IHl5cmhzW3l5aV07IHl5aSsr
KQotICAgIFlZRlBSSU5URiAoc3RkZXJyLCAiJXMgIiwgeXl0bmFtZSBbeXlyaHNbeXlpXV0pOwot
ICBZWUZQUklOVEYgKHN0ZGVyciwgIi0+ICVzXG4iLCB5eXRuYW1lIFt5eXIxW3l5cnVsZV1dKTsK
KyAgdW5zaWduZWQgbG9uZyBpbnQgeXlsbm8gPSB5eXJsaW5lW3l5cnVsZV07CisgIFlZRlBSSU5U
RiAoc3RkZXJyLCAiUmVkdWNpbmcgc3RhY2sgYnkgcnVsZSAlZCAobGluZSAlbHUpOlxuIiwKKwkg
ICAgIHl5cnVsZSAtIDEsIHl5bG5vKTsKKyAgLyogVGhlIHN5bWJvbHMgYmVpbmcgcmVkdWNlZC4g
ICovCisgIGZvciAoeXlpID0gMDsgeXlpIDwgeXlucmhzOyB5eWkrKykKKyAgICB7CisgICAgICBm
cHJpbnRmIChzdGRlcnIsICIgICAkJWQgPSAiLCB5eWkgKyAxKTsKKyAgICAgIHl5X3N5bWJvbF9w
cmludCAoc3RkZXJyLCB5eXJoc1t5eXByaHNbeXlydWxlXSArIHl5aV0sCisJCSAgICAgICAmKHl5
dnNwWyh5eWkgKyAxKSAtICh5eW5yaHMpXSkKKwkJICAgICAgIAkJICAgICAgICk7CisgICAgICBm
cHJpbnRmIChzdGRlcnIsICJcbiIpOworICAgIH0KIH0KIAogIyBkZWZpbmUgWVlfUkVEVUNFX1BS
SU5UKFJ1bGUpCQlcCiBkbyB7CQkJCQlcCiAgIGlmICh5eWRlYnVnKQkJCQlcCi0gICAgeXlfcmVk
dWNlX3ByaW50IChSdWxlKTsJCVwKLX0gd2hpbGUgKDApCisgICAgeXlfcmVkdWNlX3ByaW50ICh5
eXZzcCwgUnVsZSk7IFwKK30gd2hpbGUgKFlZSUQgKDApKQogCiAvKiBOb256ZXJvIG1lYW5zIHBy
aW50IHBhcnNlIHRyYWNlLiAgSXQgaXMgbGVmdCB1bmluaXRpYWxpemVkIHNvIHRoYXQKICAgIG11
bHRpcGxlIHBhcnNlcnMgY2FuIGNvZXhpc3QuICAqLwogaW50IHl5ZGVidWc7CiAjZWxzZSAvKiAh
WVlERUJVRyAqLwogIyBkZWZpbmUgWVlEUFJJTlRGKEFyZ3MpCi0jIGRlZmluZSBZWURTWU1QUklO
VChBcmdzKQotIyBkZWZpbmUgWVlEU1lNUFJJTlRGKFRpdGxlLCBUb2tlbiwgVmFsdWUsIExvY2F0
aW9uKQorIyBkZWZpbmUgWVlfU1lNQk9MX1BSSU5UKFRpdGxlLCBUeXBlLCBWYWx1ZSwgTG9jYXRp
b24pCiAjIGRlZmluZSBZWV9TVEFDS19QUklOVChCb3R0b20sIFRvcCkKICMgZGVmaW5lIFlZX1JF
RFVDRV9QUklOVChSdWxlKQogI2VuZGlmIC8qICFZWURFQlVHICovCkBAIC0xNDEyLDEzICsxNjE5
LDkgQEAKICAgIGlmIHRoZSBidWlsdC1pbiBzdGFjayBleHRlbnNpb24gbWV0aG9kIGlzIHVzZWQp
LgogCiAgICBEbyBub3QgbWFrZSB0aGlzIHZhbHVlIHRvbyBsYXJnZTsgdGhlIHJlc3VsdHMgYXJl
IHVuZGVmaW5lZCBpZgotICAgU0laRV9NQVggPCBZWVNUQUNLX0JZVEVTIChZWU1BWERFUFRIKQor
ICAgWVlTVEFDS19BTExPQ19NQVhJTVVNIDwgWVlTVEFDS19CWVRFUyAoWVlNQVhERVBUSCkKICAg
IGV2YWx1YXRlZCB3aXRoIGluZmluaXRlLXByZWNpc2lvbiBpbnRlZ2VyIGFyaXRobWV0aWMuICAq
LwogCi0jaWYgZGVmaW5lZCAoWVlNQVhERVBUSCkgJiYgWVlNQVhERVBUSCA9PSAwCi0jIHVuZGVm
IFlZTUFYREVQVEgKLSNlbmRpZgotCiAjaWZuZGVmIFlZTUFYREVQVEgKICMgZGVmaW5lIFlZTUFY
REVQVEggMTAwMDAKICNlbmRpZgpAQCAtMTQyOCw0NSArMTYzMSw0NyBAQAogI2lmIFlZRVJST1Jf
VkVSQk9TRQogCiAjIGlmbmRlZiB5eXN0cmxlbgotIyAgaWYgZGVmaW5lZCAoX19HTElCQ19fKSAm
JiBkZWZpbmVkIChfU1RSSU5HX0gpCisjICBpZiBkZWZpbmVkIF9fR0xJQkNfXyAmJiBkZWZpbmVk
IF9TVFJJTkdfSAogIyAgIGRlZmluZSB5eXN0cmxlbiBzdHJsZW4KICMgIGVsc2UKIC8qIFJldHVy
biB0aGUgbGVuZ3RoIG9mIFlZU1RSLiAgKi8KKyNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZp
bmVkIF9fQzk5X19GVU5DX18gXAorICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmlu
ZWQgX01TQ19WRVIpCiBzdGF0aWMgWVlTSVpFX1QKLSMgICBpZiBkZWZpbmVkIChfX1NURENfXykg
fHwgZGVmaW5lZCAoX19jcGx1c3BsdXMpCiB5eXN0cmxlbiAoY29uc3QgY2hhciAqeXlzdHIpCi0j
ICAgZWxzZQorI2Vsc2UKK3N0YXRpYyBZWVNJWkVfVAogeXlzdHJsZW4gKHl5c3RyKQotICAgICBj
b25zdCBjaGFyICp5eXN0cjsKLSMgICBlbmRpZgorICAgIGNvbnN0IGNoYXIgKnl5c3RyOworI2Vu
ZGlmCiB7Ci0gIHJlZ2lzdGVyIGNvbnN0IGNoYXIgKnl5cyA9IHl5c3RyOwotCi0gIHdoaWxlICgq
eXlzKysgIT0gJ1wwJykKKyAgWVlTSVpFX1QgeXlsZW47CisgIGZvciAoeXlsZW4gPSAwOyB5eXN0
clt5eWxlbl07IHl5bGVuKyspCiAgICAgY29udGludWU7Ci0KLSAgcmV0dXJuIHl5cyAtIHl5c3Ry
IC0gMTsKKyAgcmV0dXJuIHl5bGVuOwogfQogIyAgZW5kaWYKICMgZW5kaWYKIAogIyBpZm5kZWYg
eXlzdHBjcHkKLSMgIGlmIGRlZmluZWQgKF9fR0xJQkNfXykgJiYgZGVmaW5lZCAoX1NUUklOR19I
KSAmJiBkZWZpbmVkIChfR05VX1NPVVJDRSkKKyMgIGlmIGRlZmluZWQgX19HTElCQ19fICYmIGRl
ZmluZWQgX1NUUklOR19IICYmIGRlZmluZWQgX0dOVV9TT1VSQ0UKICMgICBkZWZpbmUgeXlzdHBj
cHkgc3RwY3B5CiAjICBlbHNlCiAvKiBDb3B5IFlZU1JDIHRvIFlZREVTVCwgcmV0dXJuaW5nIHRo
ZSBhZGRyZXNzIG9mIHRoZSB0ZXJtaW5hdGluZyAnXDAnIGluCiAgICBZWURFU1QuICAqLworI2lm
IChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCisgICAgIHx8IGRl
ZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKIHN0YXRpYyBjaGFyICoKLSMg
ICBpZiBkZWZpbmVkIChfX1NURENfXykgfHwgZGVmaW5lZCAoX19jcGx1c3BsdXMpCiB5eXN0cGNw
eSAoY2hhciAqeXlkZXN0LCBjb25zdCBjaGFyICp5eXNyYykKLSMgICBlbHNlCisjZWxzZQorc3Rh
dGljIGNoYXIgKgogeXlzdHBjcHkgKHl5ZGVzdCwgeXlzcmMpCi0gICAgIGNoYXIgKnl5ZGVzdDsK
LSAgICAgY29uc3QgY2hhciAqeXlzcmM7Ci0jICAgZW5kaWYKKyAgICBjaGFyICp5eWRlc3Q7Cisg
ICAgY29uc3QgY2hhciAqeXlzcmM7CisjZW5kaWYKIHsKLSAgcmVnaXN0ZXIgY2hhciAqeXlkID0g
eXlkZXN0OwotICByZWdpc3RlciBjb25zdCBjaGFyICp5eXMgPSB5eXNyYzsKKyAgY2hhciAqeXlk
ID0geXlkZXN0OworICBjb25zdCBjaGFyICp5eXMgPSB5eXNyYzsKIAogICB3aGlsZSAoKCp5eWQr
KyA9ICp5eXMrKykgIT0gJ1wwJykKICAgICBjb250aW51ZTsKQEAgLTE0NzYsNzAgKzE2ODEsMTky
IEBACiAjICBlbmRpZgogIyBlbmRpZgogCi0jZW5kaWYgLyogIVlZRVJST1JfVkVSQk9TRSAqLwor
IyBpZm5kZWYgeXl0bmFtZXJyCisvKiBDb3B5IHRvIFlZUkVTIHRoZSBjb250ZW50cyBvZiBZWVNU
UiBhZnRlciBzdHJpcHBpbmcgYXdheSB1bm5lY2Vzc2FyeQorICAgcXVvdGVzIGFuZCBiYWNrc2xh
c2hlcywgc28gdGhhdCBpdCdzIHN1aXRhYmxlIGZvciB5eWVycm9yLiAgVGhlCisgICBoZXVyaXN0
aWMgaXMgdGhhdCBkb3VibGUtcXVvdGluZyBpcyB1bm5lY2Vzc2FyeSB1bmxlc3MgdGhlIHN0cmlu
ZworICAgY29udGFpbnMgYW4gYXBvc3Ryb3BoZSwgYSBjb21tYSwgb3IgYmFja3NsYXNoIChvdGhl
ciB0aGFuCisgICBiYWNrc2xhc2gtYmFja3NsYXNoKS4gIFlZU1RSIGlzIHRha2VuIGZyb20geXl0
bmFtZS4gIElmIFlZUkVTIGlzCisgICBudWxsLCBkbyBub3QgY29weTsgaW5zdGVhZCwgcmV0dXJu
IHRoZSBsZW5ndGggb2Ygd2hhdCB0aGUgcmVzdWx0CisgICB3b3VsZCBoYXZlIGJlZW4uICAqLwor
c3RhdGljIFlZU0laRV9UCit5eXRuYW1lcnIgKGNoYXIgKnl5cmVzLCBjb25zdCBjaGFyICp5eXN0
cikKK3sKKyAgaWYgKCp5eXN0ciA9PSAnIicpCisgICAgeworICAgICAgWVlTSVpFX1QgeXluID0g
MDsKKyAgICAgIGNoYXIgY29uc3QgKnl5cCA9IHl5c3RyOwogCi0MCisgICAgICBmb3IgKDs7KQor
CXN3aXRjaCAoKisreXlwKQorCSAgeworCSAgY2FzZSAnXCcnOgorCSAgY2FzZSAnLCc6CisJICAg
IGdvdG8gZG9fbm90X3N0cmlwX3F1b3RlczsKKworCSAgY2FzZSAnXFwnOgorCSAgICBpZiAoKisr
eXlwICE9ICdcXCcpCisJICAgICAgZ290byBkb19ub3Rfc3RyaXBfcXVvdGVzOworCSAgICAvKiBG
YWxsIHRocm91Z2guICAqLworCSAgZGVmYXVsdDoKKwkgICAgaWYgKHl5cmVzKQorCSAgICAgIHl5
cmVzW3l5bl0gPSAqeXlwOworCSAgICB5eW4rKzsKKwkgICAgYnJlYWs7CisKKwkgIGNhc2UgJyIn
OgorCSAgICBpZiAoeXlyZXMpCisJICAgICAgeXlyZXNbeXluXSA9ICdcMCc7CisJICAgIHJldHVy
biB5eW47CisJICB9CisgICAgZG9fbm90X3N0cmlwX3F1b3RlczogOworICAgIH0KIAotI2lmIFlZ
REVCVUcKLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCi18IFByaW50IHRoaXMg
c3ltYm9sIG9uIFlZT1VUUFVULiAgfAotYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ki8KKyAgaWYgKCEgeXlyZXMpCisgICAgcmV0dXJuIHl5c3RybGVuICh5eXN0cik7CiAKLSNpZiBk
ZWZpbmVkIChfX1NURENfXykgfHwgZGVmaW5lZCAoX19jcGx1c3BsdXMpCi1zdGF0aWMgdm9pZAot
eXlzeW1wcmludCAoRklMRSAqeXlvdXRwdXQsIGludCB5eXR5cGUsIFlZU1RZUEUgKnl5dmFsdWVw
KQotI2Vsc2UKLXN0YXRpYyB2b2lkCi15eXN5bXByaW50ICh5eW91dHB1dCwgeXl0eXBlLCB5eXZh
bHVlcCkKLSAgICBGSUxFICp5eW91dHB1dDsKLSAgICBpbnQgeXl0eXBlOwotICAgIFlZU1RZUEUg
Knl5dmFsdWVwOwotI2VuZGlmCisgIHJldHVybiB5eXN0cGNweSAoeXlyZXMsIHl5c3RyKSAtIHl5
cmVzOworfQorIyBlbmRpZgorCisvKiBDb3B5IGludG8gWVlSRVNVTFQgYW4gZXJyb3IgbWVzc2Fn
ZSBhYm91dCB0aGUgdW5leHBlY3RlZCB0b2tlbgorICAgWVlDSEFSIHdoaWxlIGluIHN0YXRlIFlZ
U1RBVEUuICBSZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyBjb3BpZWQsCisgICBpbmNsdWRpbmcg
dGhlIHRlcm1pbmF0aW5nIG51bGwgYnl0ZS4gIElmIFlZUkVTVUxUIGlzIG51bGwsIGRvIG5vdAor
ICAgY29weSBhbnl0aGluZzsganVzdCByZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyB0aGF0IHdv
dWxkIGJlCisgICBjb3BpZWQuICBBcyBhIHNwZWNpYWwgY2FzZSwgcmV0dXJuIDAgaWYgYW4gb3Jk
aW5hcnkgInN5bnRheCBlcnJvciIKKyAgIG1lc3NhZ2Ugd2lsbCBkby4gIFJldHVybiBZWVNJWkVf
TUFYSU1VTSBpZiBvdmVyZmxvdyBvY2N1cnMgZHVyaW5nCisgICBzaXplIGNhbGN1bGF0aW9uLiAg
Ki8KK3N0YXRpYyBZWVNJWkVfVAoreXlzeW50YXhfZXJyb3IgKGNoYXIgKnl5cmVzdWx0LCBpbnQg
eXlzdGF0ZSwgaW50IHl5Y2hhcikKIHsKLSAgLyogUGFjaWZ5IGBgdW51c2VkIHZhcmlhYmxlJycg
d2FybmluZ3MuICAqLwotICAodm9pZCkgeXl2YWx1ZXA7CisgIGludCB5eW4gPSB5eXBhY3RbeXlz
dGF0ZV07CiAKLSAgaWYgKHl5dHlwZSA8IFlZTlRPS0VOUykKKyAgaWYgKCEgKFlZUEFDVF9OSU5G
IDwgeXluICYmIHl5biA8PSBZWUxBU1QpKQorICAgIHJldHVybiAwOworICBlbHNlCiAgICAgewot
ICAgICAgWVlGUFJJTlRGICh5eW91dHB1dCwgInRva2VuICVzICgiLCB5eXRuYW1lW3l5dHlwZV0p
OwotIyBpZmRlZiBZWVBSSU5UCi0gICAgICBZWVBSSU5UICh5eW91dHB1dCwgeXl0b2tudW1beXl0
eXBlXSwgKnl5dmFsdWVwKTsKKyAgICAgIGludCB5eXR5cGUgPSBZWVRSQU5TTEFURSAoeXljaGFy
KTsKKyAgICAgIFlZU0laRV9UIHl5c2l6ZTAgPSB5eXRuYW1lcnIgKDAsIHl5dG5hbWVbeXl0eXBl
XSk7CisgICAgICBZWVNJWkVfVCB5eXNpemUgPSB5eXNpemUwOworICAgICAgWVlTSVpFX1QgeXlz
aXplMTsKKyAgICAgIGludCB5eXNpemVfb3ZlcmZsb3cgPSAwOworICAgICAgZW51bSB7IFlZRVJS
T1JfVkVSQk9TRV9BUkdTX01BWElNVU0gPSA1IH07CisgICAgICBjaGFyIGNvbnN0ICp5eWFyZ1tZ
WUVSUk9SX1ZFUkJPU0VfQVJHU19NQVhJTVVNXTsKKyAgICAgIGludCB5eXg7CisKKyMgaWYgMAor
ICAgICAgLyogVGhpcyBpcyBzbyB4Z2V0dGV4dCBzZWVzIHRoZSB0cmFuc2xhdGFibGUgZm9ybWF0
cyB0aGF0IGFyZQorCSBjb25zdHJ1Y3RlZCBvbiB0aGUgZmx5LiAgKi8KKyAgICAgIFlZXygic3lu
dGF4IGVycm9yLCB1bmV4cGVjdGVkICVzIik7CisgICAgICBZWV8oInN5bnRheCBlcnJvciwgdW5l
eHBlY3RlZCAlcywgZXhwZWN0aW5nICVzIik7CisgICAgICBZWV8oInN5bnRheCBlcnJvciwgdW5l
eHBlY3RlZCAlcywgZXhwZWN0aW5nICVzIG9yICVzIik7CisgICAgICBZWV8oInN5bnRheCBlcnJv
ciwgdW5leHBlY3RlZCAlcywgZXhwZWN0aW5nICVzIG9yICVzIG9yICVzIik7CisgICAgICBZWV8o
InN5bnRheCBlcnJvciwgdW5leHBlY3RlZCAlcywgZXhwZWN0aW5nICVzIG9yICVzIG9yICVzIG9y
ICVzIik7CiAjIGVuZGlmCi0gICAgfQotICBlbHNlCi0gICAgWVlGUFJJTlRGICh5eW91dHB1dCwg
Im50ZXJtICVzICgiLCB5eXRuYW1lW3l5dHlwZV0pOworICAgICAgY2hhciAqeXlmbXQ7CisgICAg
ICBjaGFyIGNvbnN0ICp5eWY7CisgICAgICBzdGF0aWMgY2hhciBjb25zdCB5eXVuZXhwZWN0ZWRb
XSA9ICJzeW50YXggZXJyb3IsIHVuZXhwZWN0ZWQgJXMiOworICAgICAgc3RhdGljIGNoYXIgY29u
c3QgeXlleHBlY3RpbmdbXSA9ICIsIGV4cGVjdGluZyAlcyI7CisgICAgICBzdGF0aWMgY2hhciBj
b25zdCB5eW9yW10gPSAiIG9yICVzIjsKKyAgICAgIGNoYXIgeXlmb3JtYXRbc2l6ZW9mIHl5dW5l
eHBlY3RlZAorCQkgICAgKyBzaXplb2YgeXlleHBlY3RpbmcgLSAxCisJCSAgICArICgoWVlFUlJP
Ul9WRVJCT1NFX0FSR1NfTUFYSU1VTSAtIDIpCisJCSAgICAgICAqIChzaXplb2YgeXlvciAtIDEp
KV07CisgICAgICBjaGFyIGNvbnN0ICp5eXByZWZpeCA9IHl5ZXhwZWN0aW5nOworCisgICAgICAv
KiBTdGFydCBZWVggYXQgLVlZTiBpZiBuZWdhdGl2ZSB0byBhdm9pZCBuZWdhdGl2ZSBpbmRleGVz
IGluCisJIFlZQ0hFQ0suICAqLworICAgICAgaW50IHl5eGJlZ2luID0geXluIDwgMCA/IC15eW4g
OiAwOworCisgICAgICAvKiBTdGF5IHdpdGhpbiBib3VuZHMgb2YgYm90aCB5eWNoZWNrIGFuZCB5
eXRuYW1lLiAgKi8KKyAgICAgIGludCB5eWNoZWNrbGltID0gWVlMQVNUIC0geXluICsgMTsKKyAg
ICAgIGludCB5eXhlbmQgPSB5eWNoZWNrbGltIDwgWVlOVE9LRU5TID8geXljaGVja2xpbSA6IFlZ
TlRPS0VOUzsKKyAgICAgIGludCB5eWNvdW50ID0gMTsKKworICAgICAgeXlhcmdbMF0gPSB5eXRu
YW1lW3l5dHlwZV07CisgICAgICB5eWZtdCA9IHl5c3RwY3B5ICh5eWZvcm1hdCwgeXl1bmV4cGVj
dGVkKTsKKworICAgICAgZm9yICh5eXggPSB5eXhiZWdpbjsgeXl4IDwgeXl4ZW5kOyArK3l5eCkK
KwlpZiAoeXljaGVja1t5eXggKyB5eW5dID09IHl5eCAmJiB5eXggIT0gWVlURVJST1IpCisJICB7
CisJICAgIGlmICh5eWNvdW50ID09IFlZRVJST1JfVkVSQk9TRV9BUkdTX01BWElNVU0pCisJICAg
ICAgeworCQl5eWNvdW50ID0gMTsKKwkJeXlzaXplID0geXlzaXplMDsKKwkJeXlmb3JtYXRbc2l6
ZW9mIHl5dW5leHBlY3RlZCAtIDFdID0gJ1wwJzsKKwkJYnJlYWs7CisJICAgICAgfQorCSAgICB5
eWFyZ1t5eWNvdW50KytdID0geXl0bmFtZVt5eXhdOworCSAgICB5eXNpemUxID0geXlzaXplICsg
eXl0bmFtZXJyICgwLCB5eXRuYW1lW3l5eF0pOworCSAgICB5eXNpemVfb3ZlcmZsb3cgfD0gKHl5
c2l6ZTEgPCB5eXNpemUpOworCSAgICB5eXNpemUgPSB5eXNpemUxOworCSAgICB5eWZtdCA9IHl5
c3RwY3B5ICh5eWZtdCwgeXlwcmVmaXgpOworCSAgICB5eXByZWZpeCA9IHl5b3I7CisJICB9CisK
KyAgICAgIHl5ZiA9IFlZXyh5eWZvcm1hdCk7CisgICAgICB5eXNpemUxID0geXlzaXplICsgeXlz
dHJsZW4gKHl5Zik7CisgICAgICB5eXNpemVfb3ZlcmZsb3cgfD0gKHl5c2l6ZTEgPCB5eXNpemUp
OworICAgICAgeXlzaXplID0geXlzaXplMTsKIAotICBzd2l0Y2ggKHl5dHlwZSkKLSAgICB7Ci0g
ICAgICBkZWZhdWx0OgotICAgICAgICBicmVhazsKKyAgICAgIGlmICh5eXNpemVfb3ZlcmZsb3cp
CisJcmV0dXJuIFlZU0laRV9NQVhJTVVNOworCisgICAgICBpZiAoeXlyZXN1bHQpCisJeworCSAg
LyogQXZvaWQgc3ByaW50ZiwgYXMgdGhhdCBpbmZyaW5nZXMgb24gdGhlIHVzZXIncyBuYW1lIHNw
YWNlLgorCSAgICAgRG9uJ3QgaGF2ZSB1bmRlZmluZWQgYmVoYXZpb3IgZXZlbiBpZiB0aGUgdHJh
bnNsYXRpb24KKwkgICAgIHByb2R1Y2VkIGEgc3RyaW5nIHdpdGggdGhlIHdyb25nIG51bWJlciBv
ZiAiJXMicy4gICovCisJICBjaGFyICp5eXAgPSB5eXJlc3VsdDsKKwkgIGludCB5eWkgPSAwOwor
CSAgd2hpbGUgKCgqeXlwID0gKnl5ZikgIT0gJ1wwJykKKwkgICAgeworCSAgICAgIGlmICgqeXlw
ID09ICclJyAmJiB5eWZbMV0gPT0gJ3MnICYmIHl5aSA8IHl5Y291bnQpCisJCXsKKwkJICB5eXAg
Kz0geXl0bmFtZXJyICh5eXAsIHl5YXJnW3l5aSsrXSk7CisJCSAgeXlmICs9IDI7CisJCX0KKwkg
ICAgICBlbHNlCisJCXsKKwkJICB5eXArKzsKKwkJICB5eWYrKzsKKwkJfQorCSAgICB9CisJfQor
ICAgICAgcmV0dXJuIHl5c2l6ZTsKICAgICB9Ci0gIFlZRlBSSU5URiAoeXlvdXRwdXQsICIpIik7
CiB9CisjZW5kaWYgLyogWVlFUlJPUl9WRVJCT1NFICovCisMCiAKLSNlbmRpZiAvKiAhIFlZREVC
VUcgKi8KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0u
CiB8IFJlbGVhc2UgdGhlIG1lbW9yeSBhc3NvY2lhdGVkIHRvIHRoaXMgc3ltYm9sLiAgfAogYC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAotI2lmIGRl
ZmluZWQgKF9fU1REQ19fKSB8fCBkZWZpbmVkIChfX2NwbHVzcGx1cykKKy8qQVJHU1VTRUQqLwor
I2lmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCisgICAgIHx8
IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKIHN0YXRpYyB2b2lkCi15
eWRlc3RydWN0IChpbnQgeXl0eXBlLCBZWVNUWVBFICp5eXZhbHVlcCkKK3l5ZGVzdHJ1Y3QgKGNv
bnN0IGNoYXIgKnl5bXNnLCBpbnQgeXl0eXBlLCBZWVNUWVBFICp5eXZhbHVlcCkKICNlbHNlCiBz
dGF0aWMgdm9pZAoteXlkZXN0cnVjdCAoeXl0eXBlLCB5eXZhbHVlcCkKK3l5ZGVzdHJ1Y3QgKHl5
bXNnLCB5eXR5cGUsIHl5dmFsdWVwKQorICAgIGNvbnN0IGNoYXIgKnl5bXNnOwogICAgIGludCB5
eXR5cGU7CiAgICAgWVlTVFlQRSAqeXl2YWx1ZXA7CiAjZW5kaWYKIHsKLSAgLyogUGFjaWZ5IGBg
dW51c2VkIHZhcmlhYmxlJycgd2FybmluZ3MuICAqLwotICAodm9pZCkgeXl2YWx1ZXA7CisgIFlZ
VVNFICh5eXZhbHVlcCk7CisKKyAgaWYgKCF5eW1zZykKKyAgICB5eW1zZyA9ICJEZWxldGluZyI7
CisgIFlZX1NZTUJPTF9QUklOVCAoeXltc2csIHl5dHlwZSwgeXl2YWx1ZXAsIHl5bG9jYXRpb25w
KTsKIAogICBzd2l0Y2ggKHl5dHlwZSkKICAgICB7CiAKICAgICAgIGRlZmF1bHQ6Ci0gICAgICAg
IGJyZWFrOworCWJyZWFrOwogICAgIH0KIH0KIAwKQEAgLTE1NDcsMTMgKzE4NzQsMTMgQEAKIC8q
IFByZXZlbnQgd2FybmluZ3MgZnJvbSAtV21pc3NpbmctcHJvdG90eXBlcy4gICovCiAKICNpZmRl
ZiBZWVBBUlNFX1BBUkFNCi0jIGlmIGRlZmluZWQgKF9fU1REQ19fKSB8fCBkZWZpbmVkIChfX2Nw
bHVzcGx1cykKKyNpZiBkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19jcGx1c3BsdXMKIGlu
dCB5eXBhcnNlICh2b2lkICpZWVBBUlNFX1BBUkFNKTsKLSMgZWxzZQorI2Vsc2UKIGludCB5eXBh
cnNlICgpOwotIyBlbmRpZgorI2VuZGlmCiAjZWxzZSAvKiAhIFlZUEFSU0VfUEFSQU0gKi8KLSNp
ZiBkZWZpbmVkIChfX1NURENfXykgfHwgZGVmaW5lZCAoX19jcGx1c3BsdXMpCisjaWYgZGVmaW5l
ZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzCiBpbnQgeXlwYXJzZSAodm9pZCk7CiAj
ZWxzZQogaW50IHl5cGFyc2UgKCk7CkBAIC0xNTcwLDE0ICsxODk3LDE4IEBACiBgLS0tLS0tLS0t
LSovCiAKICNpZmRlZiBZWVBBUlNFX1BBUkFNCi0jIGlmIGRlZmluZWQgKF9fU1REQ19fKSB8fCBk
ZWZpbmVkIChfX2NwbHVzcGx1cykKLWludCB5eXBhcnNlICh2b2lkICpZWVBBUlNFX1BBUkFNKQot
IyBlbHNlCi1pbnQgeXlwYXJzZSAoWVlQQVJTRV9QQVJBTSkKLSAgdm9pZCAqWVlQQVJTRV9QQVJB
TTsKLSMgZW5kaWYKKyNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5D
X18gXAorICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCitp
bnQKK3l5cGFyc2UgKHZvaWQgKllZUEFSU0VfUEFSQU0pCisjZWxzZQoraW50Cit5eXBhcnNlIChZ
WVBBUlNFX1BBUkFNKQorICAgIHZvaWQgKllZUEFSU0VfUEFSQU07CisjZW5kaWYKICNlbHNlIC8q
ICEgWVlQQVJTRV9QQVJBTSAqLwotI2lmIGRlZmluZWQgKF9fU1REQ19fKSB8fCBkZWZpbmVkIChf
X2NwbHVzcGx1cykKKyNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5D
X18gXAorICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCiBp
bnQKIHl5cGFyc2UgKHZvaWQpCiAjZWxzZQpAQCAtMTU4NywyMiArMTkxOCwyOCBAQAogI2VuZGlm
CiAjZW5kaWYKIHsKLSAgLyogVGhlIGxvb2thaGVhZCBzeW1ib2wuICAqLworICAvKiBUaGUgbG9v
ay1haGVhZCBzeW1ib2wuICAqLwogaW50IHl5Y2hhcjsKIAotLyogVGhlIHNlbWFudGljIHZhbHVl
IG9mIHRoZSBsb29rYWhlYWQgc3ltYm9sLiAgKi8KKy8qIFRoZSBzZW1hbnRpYyB2YWx1ZSBvZiB0
aGUgbG9vay1haGVhZCBzeW1ib2wuICAqLwogWVlTVFlQRSB5eWx2YWw7CiAKIC8qIE51bWJlciBv
ZiBzeW50YXggZXJyb3JzIHNvIGZhci4gICovCiBpbnQgeXluZXJyczsKIAotICByZWdpc3RlciBp
bnQgeXlzdGF0ZTsKLSAgcmVnaXN0ZXIgaW50IHl5bjsKKyAgaW50IHl5c3RhdGU7CisgIGludCB5
eW47CiAgIGludCB5eXJlc3VsdDsKICAgLyogTnVtYmVyIG9mIHRva2VucyB0byBzaGlmdCBiZWZv
cmUgZXJyb3IgbWVzc2FnZXMgZW5hYmxlZC4gICovCiAgIGludCB5eWVycnN0YXR1czsKLSAgLyog
TG9va2FoZWFkIHRva2VuIGFzIGFuIGludGVybmFsICh0cmFuc2xhdGVkKSB0b2tlbiBudW1iZXIu
ICAqLworICAvKiBMb29rLWFoZWFkIHRva2VuIGFzIGFuIGludGVybmFsICh0cmFuc2xhdGVkKSB0
b2tlbiBudW1iZXIuICAqLwogICBpbnQgeXl0b2tlbiA9IDA7CisjaWYgWVlFUlJPUl9WRVJCT1NF
CisgIC8qIEJ1ZmZlciBmb3IgZXJyb3IgbWVzc2FnZXMsIGFuZCBpdHMgYWxsb2NhdGVkIHNpemUu
ICAqLworICBjaGFyIHl5bXNnYnVmWzEyOF07CisgIGNoYXIgKnl5bXNnID0geXltc2didWY7Cisg
IFlZU0laRV9UIHl5bXNnX2FsbG9jID0gc2l6ZW9mIHl5bXNnYnVmOworI2VuZGlmCiAKICAgLyog
VGhyZWUgc3RhY2tzIGFuZCB0aGVpciB0b29sczoKICAgICAgYHl5c3MnOiByZWxhdGVkIHRvIHN0
YXRlcywKQEAgLTE2MTMsMTggKzE5NTAsMTggQEAKICAgICAgdG8gcmVhbGxvY2F0ZSB0aGVtIGVs
c2V3aGVyZS4gICovCiAKICAgLyogVGhlIHN0YXRlIHN0YWNrLiAgKi8KLSAgc2hvcnQgaW50IHl5
c3NhW1lZSU5JVERFUFRIXTsKLSAgc2hvcnQgaW50ICp5eXNzID0geXlzc2E7Ci0gIHJlZ2lzdGVy
IHNob3J0IGludCAqeXlzc3A7CisgIHl5dHlwZV9pbnQxNiB5eXNzYVtZWUlOSVRERVBUSF07Cisg
IHl5dHlwZV9pbnQxNiAqeXlzcyA9IHl5c3NhOworICB5eXR5cGVfaW50MTYgKnl5c3NwOwogCiAg
IC8qIFRoZSBzZW1hbnRpYyB2YWx1ZSBzdGFjay4gICovCiAgIFlZU1RZUEUgeXl2c2FbWVlJTklU
REVQVEhdOwogICBZWVNUWVBFICp5eXZzID0geXl2c2E7Ci0gIHJlZ2lzdGVyIFlZU1RZUEUgKnl5
dnNwOworICBZWVNUWVBFICp5eXZzcDsKIAogCiAKLSNkZWZpbmUgWVlQT1BTVEFDSyAgICh5eXZz
cC0tLCB5eXNzcC0tKQorI2RlZmluZSBZWVBPUFNUQUNLKE4pICAgKHl5dnNwIC09IChOKSwgeXlz
c3AgLT0gKE4pKQogCiAgIFlZU0laRV9UIHl5c3RhY2tzaXplID0gWVlJTklUREVQVEg7CiAKQEAg
LTE2MzMsOSArMTk3MCw5IEBACiAgIFlZU1RZUEUgeXl2YWw7CiAKIAotICAvKiBXaGVuIHJlZHVj
aW5nLCB0aGUgbnVtYmVyIG9mIHN5bWJvbHMgb24gdGhlIFJIUyBvZiB0aGUgcmVkdWNlZAotICAg
ICBydWxlLiAgKi8KLSAgaW50IHl5bGVuOworICAvKiBUaGUgbnVtYmVyIG9mIHN5bWJvbHMgb24g
dGhlIFJIUyBvZiB0aGUgcmVkdWNlZCBydWxlLgorICAgICBLZWVwIHRvIHplcm8gd2hlbiBubyBz
eW1ib2wgc2hvdWxkIGJlIHBvcHBlZC4gICovCisgIGludCB5eWxlbiA9IDA7CiAKICAgWVlEUFJJ
TlRGICgoc3RkZXJyLCAiU3RhcnRpbmcgcGFyc2VcbiIpKTsKIApAQCAtMTY1Miw3ICsxOTg5LDYg
QEAKICAgeXlzc3AgPSB5eXNzOwogICB5eXZzcCA9IHl5dnM7CiAKLQogICBnb3RvIHl5c2V0c3Rh
dGU7CiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLgpAQCAtMTY2MCw4ICsxOTk2LDcgQEAKIGAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIHl5bmV3c3RhdGU6
CiAgIC8qIEluIGFsbCBjYXNlcywgd2hlbiB5b3UgZ2V0IGhlcmUsIHRoZSB2YWx1ZSBhbmQgbG9j
YXRpb24gc3RhY2tzCi0gICAgIGhhdmUganVzdCBiZWVuIHB1c2hlZC4gc28gcHVzaGluZyBhIHN0
YXRlIGhlcmUgZXZlbnMgdGhlIHN0YWNrcy4KLSAgICAgKi8KKyAgICAgaGF2ZSBqdXN0IGJlZW4g
cHVzaGVkLiAgU28gcHVzaGluZyBhIHN0YXRlIGhlcmUgZXZlbnMgdGhlIHN0YWNrcy4gICovCiAg
IHl5c3NwKys7CiAKICB5eXNldHN0YXRlOgpAQCAtMTY3NCwxOCArMjAwOSwxOCBAQAogCiAjaWZk
ZWYgeXlvdmVyZmxvdwogICAgICAgewotCS8qIEdpdmUgdXNlciBhIGNoYW5jZSB0byByZWFsbG9j
YXRlIHRoZSBzdGFjay4gVXNlIGNvcGllcyBvZgorCS8qIEdpdmUgdXNlciBhIGNoYW5jZSB0byBy
ZWFsbG9jYXRlIHRoZSBzdGFjay4gIFVzZSBjb3BpZXMgb2YKIAkgICB0aGVzZSBzbyB0aGF0IHRo
ZSAmJ3MgZG9uJ3QgZm9yY2UgdGhlIHJlYWwgb25lcyBpbnRvCiAJICAgbWVtb3J5LiAgKi8KIAlZ
WVNUWVBFICp5eXZzMSA9IHl5dnM7Ci0Jc2hvcnQgaW50ICp5eXNzMSA9IHl5c3M7CisJeXl0eXBl
X2ludDE2ICp5eXNzMSA9IHl5c3M7CiAKIAogCS8qIEVhY2ggc3RhY2sgcG9pbnRlciBhZGRyZXNz
IGlzIGZvbGxvd2VkIGJ5IHRoZSBzaXplIG9mIHRoZQogCSAgIGRhdGEgaW4gdXNlIGluIHRoYXQg
c3RhY2ssIGluIGJ5dGVzLiAgVGhpcyB1c2VkIHRvIGJlIGEKIAkgICBjb25kaXRpb25hbCBhcm91
bmQganVzdCB0aGUgdHdvIGV4dHJhIGFyZ3MsIGJ1dCB0aGF0IG1pZ2h0CiAJICAgYmUgdW5kZWZp
bmVkIGlmIHl5b3ZlcmZsb3cgaXMgYSBtYWNyby4gICovCi0JeXlvdmVyZmxvdyAoInBhcnNlciBz
dGFjayBvdmVyZmxvdyIsCisJeXlvdmVyZmxvdyAoWVlfKCJtZW1vcnkgZXhoYXVzdGVkIiksCiAJ
CSAgICAmeXlzczEsIHl5c2l6ZSAqIHNpemVvZiAoKnl5c3NwKSwKIAkJICAgICZ5eXZzMSwgeXlz
aXplICogc2l6ZW9mICgqeXl2c3ApLAogCkBAIC0xNjk2LDIxICsyMDMxLDIxIEBACiAgICAgICB9
CiAjZWxzZSAvKiBubyB5eW92ZXJmbG93ICovCiAjIGlmbmRlZiBZWVNUQUNLX1JFTE9DQVRFCi0g
ICAgICBnb3RvIHl5b3ZlcmZsb3dsYWI7CisgICAgICBnb3RvIHl5ZXhoYXVzdGVkbGFiOwogIyBl
bHNlCiAgICAgICAvKiBFeHRlbmQgdGhlIHN0YWNrIG91ciBvd24gd2F5LiAgKi8KICAgICAgIGlm
IChZWU1BWERFUFRIIDw9IHl5c3RhY2tzaXplKQotCWdvdG8geXlvdmVyZmxvd2xhYjsKKwlnb3Rv
IHl5ZXhoYXVzdGVkbGFiOwogICAgICAgeXlzdGFja3NpemUgKj0gMjsKICAgICAgIGlmIChZWU1B
WERFUFRIIDwgeXlzdGFja3NpemUpCiAJeXlzdGFja3NpemUgPSBZWU1BWERFUFRIOwogCiAgICAg
ICB7Ci0Jc2hvcnQgaW50ICp5eXNzMSA9IHl5c3M7CisJeXl0eXBlX2ludDE2ICp5eXNzMSA9IHl5
c3M7CiAJdW5pb24geXlhbGxvYyAqeXlwdHIgPQogCSAgKHVuaW9uIHl5YWxsb2MgKikgWVlTVEFD
S19BTExPQyAoWVlTVEFDS19CWVRFUyAoeXlzdGFja3NpemUpKTsKIAlpZiAoISB5eXB0cikKLQkg
IGdvdG8geXlvdmVyZmxvd2xhYjsKKwkgIGdvdG8geXlleGhhdXN0ZWRsYWI7CiAJWVlTVEFDS19S
RUxPQ0FURSAoeXlzcyk7CiAJWVlTVEFDS19SRUxPQ0FURSAoeXl2cyk7CiAKQEAgLTE3NDEsMTkg
KzIwNzYsMTcgQEAKIGAtLS0tLS0tLS0tLSovCiB5eWJhY2t1cDoKIAotLyogRG8gYXBwcm9wcmlh
dGUgcHJvY2Vzc2luZyBnaXZlbiB0aGUgY3VycmVudCBzdGF0ZS4gICovCi0vKiBSZWFkIGEgbG9v
a2FoZWFkIHRva2VuIGlmIHdlIG5lZWQgb25lIGFuZCBkb24ndCBhbHJlYWR5IGhhdmUgb25lLiAg
Ki8KLS8qIHl5cmVzdW1lOiAqLwotCi0gIC8qIEZpcnN0IHRyeSB0byBkZWNpZGUgd2hhdCB0byBk
byB3aXRob3V0IHJlZmVyZW5jZSB0byBsb29rYWhlYWQgdG9rZW4uICAqLworICAvKiBEbyBhcHBy
b3ByaWF0ZSBwcm9jZXNzaW5nIGdpdmVuIHRoZSBjdXJyZW50IHN0YXRlLiAgUmVhZCBhCisgICAg
IGxvb2stYWhlYWQgdG9rZW4gaWYgd2UgbmVlZCBvbmUgYW5kIGRvbid0IGFscmVhZHkgaGF2ZSBv
bmUuICAqLwogCisgIC8qIEZpcnN0IHRyeSB0byBkZWNpZGUgd2hhdCB0byBkbyB3aXRob3V0IHJl
ZmVyZW5jZSB0byBsb29rLWFoZWFkIHRva2VuLiAgKi8KICAgeXluID0geXlwYWN0W3l5c3RhdGVd
OwogICBpZiAoeXluID09IFlZUEFDVF9OSU5GKQogICAgIGdvdG8geXlkZWZhdWx0OwogCi0gIC8q
IE5vdCBrbm93biA9PiBnZXQgYSBsb29rYWhlYWQgdG9rZW4gaWYgZG9uJ3QgYWxyZWFkeSBoYXZl
IG9uZS4gICovCisgIC8qIE5vdCBrbm93biA9PiBnZXQgYSBsb29rLWFoZWFkIHRva2VuIGlmIGRv
bid0IGFscmVhZHkgaGF2ZSBvbmUuICAqLwogCi0gIC8qIFlZQ0hBUiBpcyBlaXRoZXIgWVlFTVBU
WSBvciBZWUVPRiBvciBhIHZhbGlkIGxvb2thaGVhZCBzeW1ib2wuICAqLworICAvKiBZWUNIQVIg
aXMgZWl0aGVyIFlZRU1QVFkgb3IgWVlFT0Ygb3IgYSB2YWxpZCBsb29rLWFoZWFkIHN5bWJvbC4g
ICovCiAgIGlmICh5eWNoYXIgPT0gWVlFTVBUWSkKICAgICB7CiAgICAgICBZWURQUklOVEYgKChz
dGRlcnIsICJSZWFkaW5nIGEgdG9rZW46ICIpKTsKQEAgLTE3NjgsNyArMjEwMSw3IEBACiAgIGVs
c2UKICAgICB7CiAgICAgICB5eXRva2VuID0gWVlUUkFOU0xBVEUgKHl5Y2hhcik7Ci0gICAgICBZ
WURTWU1QUklOVEYgKCJOZXh0IHRva2VuIGlzIiwgeXl0b2tlbiwgJnl5bHZhbCwgJnl5bGxvYyk7
CisgICAgICBZWV9TWU1CT0xfUFJJTlQgKCJOZXh0IHRva2VuIGlzIiwgeXl0b2tlbiwgJnl5bHZh
bCwgJnl5bGxvYyk7CiAgICAgfQogCiAgIC8qIElmIHRoZSBwcm9wZXIgYWN0aW9uIG9uIHNlZWlu
ZyB0b2tlbiBZWVRPS0VOIGlzIHRvIHJlZHVjZSBvciB0bwpAQCAtMTc4OCwyMiArMjEyMSwyMSBA
QAogICBpZiAoeXluID09IFlZRklOQUwpCiAgICAgWVlBQ0NFUFQ7CiAKLSAgLyogU2hpZnQgdGhl
IGxvb2thaGVhZCB0b2tlbi4gICovCi0gIFlZRFBSSU5URiAoKHN0ZGVyciwgIlNoaWZ0aW5nIHRv
a2VuICVzLCAiLCB5eXRuYW1lW3l5dG9rZW5dKSk7Ci0KLSAgLyogRGlzY2FyZCB0aGUgdG9rZW4g
YmVpbmcgc2hpZnRlZCB1bmxlc3MgaXQgaXMgZW9mLiAgKi8KLSAgaWYgKHl5Y2hhciAhPSBZWUVP
RikKLSAgICB5eWNoYXIgPSBZWUVNUFRZOwotCi0gICorK3l5dnNwID0geXlsdmFsOwotCi0KICAg
LyogQ291bnQgdG9rZW5zIHNoaWZ0ZWQgc2luY2UgZXJyb3I7IGFmdGVyIHRocmVlLCB0dXJuIG9m
ZiBlcnJvcgogICAgICBzdGF0dXMuICAqLwogICBpZiAoeXllcnJzdGF0dXMpCiAgICAgeXllcnJz
dGF0dXMtLTsKIAorICAvKiBTaGlmdCB0aGUgbG9vay1haGVhZCB0b2tlbi4gICovCisgIFlZX1NZ
TUJPTF9QUklOVCAoIlNoaWZ0aW5nIiwgeXl0b2tlbiwgJnl5bHZhbCwgJnl5bGxvYyk7CisKKyAg
LyogRGlzY2FyZCB0aGUgc2hpZnRlZCB0b2tlbiB1bmxlc3MgaXQgaXMgZW9mLiAgKi8KKyAgaWYg
KHl5Y2hhciAhPSBZWUVPRikKKyAgICB5eWNoYXIgPSBZWUVNUFRZOworCiAgIHl5c3RhdGUgPSB5
eW47CisgICorK3l5dnNwID0geXlsdmFsOworCiAgIGdvdG8geXluZXdzdGF0ZTsKIAogCkBAIC0x
ODQxLDE0ICsyMTczLDE0IEBACiAgICAgICAgIGNhc2UgMTI6CiAjbGluZSAyNzggIldlYkNvcmUv
Y3NzL0NTU0dyYW1tYXIueSIKICAgICB7Ci0gICAgICAgIHN0YXRpY19jYXN0PENTU1BhcnNlcio+
KHBhcnNlciktPm1fcnVsZSA9IHl5dnNwWy0yXS5ydWxlOworICAgICAgICBzdGF0aWNfY2FzdDxD
U1NQYXJzZXIqPihwYXJzZXIpLT5tX3J1bGUgPSAoeXl2c3BbKDQpIC0gKDYpXS5ydWxlKTsKICAg
ICA7fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTM6CiAjbGluZSAyODQgIldlYkNvcmUvY3NzL0NT
U0dyYW1tYXIueSIKICAgICB7Ci0gICAgICAgIHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNl
ciktPm1fa2V5ZnJhbWUgPSB5eXZzcFstMl0ua2V5ZnJhbWVSdWxlOworICAgICAgICBzdGF0aWNf
Y2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpLT5tX2tleWZyYW1lID0gKHl5dnNwWyg0KSAtICg2KV0u
a2V5ZnJhbWVSdWxlKTsKICAgICA7fQogICAgIGJyZWFrOwogCkBAIC0xODcwLDggKzIyMDIsOCBA
QAogI2xpbmUgMzAyICJXZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkiCiAgICAgewogICAgICAgICBD
U1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOwotICAgICAgICBp
ZiAoeXl2c3BbLTFdLnZhbHVlTGlzdCkgewotICAgICAgICAgICAgcC0+bV92YWx1ZUxpc3QgPSBw
LT5zaW5rRmxvYXRpbmdWYWx1ZUxpc3QoeXl2c3BbLTFdLnZhbHVlTGlzdCk7CisgICAgICAgIGlm
ICgoeXl2c3BbKDQpIC0gKDUpXS52YWx1ZUxpc3QpKSB7CisgICAgICAgICAgICBwLT5tX3ZhbHVl
TGlzdCA9IHAtPnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCgoeXl2c3BbKDQpIC0gKDUpXS52YWx1ZUxp
c3QpKTsKICAgICAgICAgICAgIGludCBvbGRQYXJzZWRQcm9wZXJ0aWVzID0gcC0+bV9udW1QYXJz
ZWRQcm9wZXJ0aWVzOwogICAgICAgICAgICAgaWYgKCFwLT5wYXJzZVZhbHVlKHAtPm1faWQsIHAt
Pm1faW1wb3J0YW50KSkKICAgICAgICAgICAgICAgICBwLT5yb2xsYmFja0xhc3RQcm9wZXJ0aWVz
KHAtPm1fbnVtUGFyc2VkUHJvcGVydGllcyAtIG9sZFBhcnNlZFByb3BlcnRpZXMpOwpAQCAtMTg4
NSw3ICsyMjE3LDcgQEAKICNsaW5lIDMxNiAiV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55IgogICAg
IHsKICAgICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNl
cik7Ci0gICAgICAgICBwLT5tX21lZGlhUXVlcnkgPSBwLT5zaW5rRmxvYXRpbmdNZWRpYVF1ZXJ5
KHl5dnNwWy0xXS5tZWRpYVF1ZXJ5KTsKKyAgICAgICAgIHAtPm1fbWVkaWFRdWVyeSA9IHAtPnNp
bmtGbG9hdGluZ01lZGlhUXVlcnkoKHl5dnNwWyg0KSAtICg1KV0ubWVkaWFRdWVyeSkpOwogICAg
ICA7fQogICAgIGJyZWFrOwogCkBAIC0xODkzLDcgKzIyMjUsNyBAQAogI2xpbmUgMzIzICJXZWJD
b3JlL2Nzcy9DU1NHcmFtbWFyLnkiCiAgICAgewogICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0
aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOwotICAgICAgICBwLT5tX2Zsb2F0aW5nU2VsZWN0
b3IgPSBwLT5zaW5rRmxvYXRpbmdTZWxlY3Rvcih5eXZzcFstMV0uc2VsZWN0b3IpOworICAgICAg
ICBwLT5tX2Zsb2F0aW5nU2VsZWN0b3IgPSBwLT5zaW5rRmxvYXRpbmdTZWxlY3RvcigoeXl2c3Bb
KDQpIC0gKDUpXS5zZWxlY3RvcikpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKQEAgLTE5MDcsOSAr
MjIzOSw5IEBACiAjbGluZSAzNTIgIldlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSIKICAgICB7CiAg
ICAgIENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7Ci0gICAg
IHl5dmFsLnJ1bGUgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpLT5jcmVhdGVDaGFy
c2V0UnVsZSh5eXZzcFstMl0uc3RyaW5nKTsKLSAgICAgaWYgKHl5dmFsLnJ1bGUgJiYgcC0+bV9z
dHlsZVNoZWV0KQotICAgICAgICAgcC0+bV9zdHlsZVNoZWV0LT5hcHBlbmQoeXl2YWwucnVsZSk7
CisgICAgICh5eXZhbC5ydWxlKSA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlciktPmNy
ZWF0ZUNoYXJzZXRSdWxlKCh5eXZzcFsoMykgLSAoNSldLnN0cmluZykpOworICAgICBpZiAoKHl5
dmFsLnJ1bGUpICYmIHAtPm1fc3R5bGVTaGVldCkKKyAgICAgICAgIHAtPm1fc3R5bGVTaGVldC0+
YXBwZW5kKCh5eXZhbC5ydWxlKSk7CiAgIDt9CiAgICAgYnJlYWs7CiAKQEAgLTE5MjksOCArMjI2
MSw4IEBACiAjbGluZSAzNjYgIldlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSIKICAgICB7CiAgICAg
IENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7Ci0gICAgIGlm
ICh5eXZzcFstMV0ucnVsZSAmJiBwLT5tX3N0eWxlU2hlZXQpCi0gICAgICAgICBwLT5tX3N0eWxl
U2hlZXQtPmFwcGVuZCh5eXZzcFstMV0ucnVsZSk7CisgICAgIGlmICgoeXl2c3BbKDIpIC0gKDMp
XS5ydWxlKSAmJiBwLT5tX3N0eWxlU2hlZXQpCisgICAgICAgICBwLT5tX3N0eWxlU2hlZXQtPmFw
cGVuZCgoeXl2c3BbKDIpIC0gKDMpXS5ydWxlKSk7CiAgO30KICAgICBicmVhazsKIApAQCAtMTk0
NCw4ICsyMjc2LDggQEAKICNsaW5lIDM3NyAiV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55IgogICAg
IHsKICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOwot
ICAgICBpZiAoeXl2c3BbLTFdLnJ1bGUgJiYgcC0+bV9zdHlsZVNoZWV0KQotICAgICAgICAgcC0+
bV9zdHlsZVNoZWV0LT5hcHBlbmQoeXl2c3BbLTFdLnJ1bGUpOworICAgICBpZiAoKHl5dnNwWygy
KSAtICgzKV0ucnVsZSkgJiYgcC0+bV9zdHlsZVNoZWV0KQorICAgICAgICAgcC0+bV9zdHlsZVNo
ZWV0LT5hcHBlbmQoKHl5dnNwWygyKSAtICgzKV0ucnVsZSkpOwogO30KICAgICBicmVhazsKIApA
QCAtMTk1MywyNCArMjI4NSwyNCBAQAogI2xpbmUgMzkxICJXZWJDb3JlL2Nzcy9DU1NHcmFtbWFy
LnkiCiAgICAgewogICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihw
YXJzZXIpOwotICAgICBpZiAoeXl2c3BbLTFdLnJ1bGUgJiYgcC0+bV9zdHlsZVNoZWV0KQotICAg
ICAgICAgcC0+bV9zdHlsZVNoZWV0LT5hcHBlbmQoeXl2c3BbLTFdLnJ1bGUpOworICAgICBpZiAo
KHl5dnNwWygyKSAtICgzKV0ucnVsZSkgJiYgcC0+bV9zdHlsZVNoZWV0KQorICAgICAgICAgcC0+
bV9zdHlsZVNoZWV0LT5hcHBlbmQoKHl5dnNwWygyKSAtICgzKV0ucnVsZSkpOwogIDt9CiAgICAg
YnJlYWs7CiAKICAgY2FzZSA0OToKICNsaW5lIDQxNCAiV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55
IgotICAgIHsgeXl2YWwucnVsZUxpc3QgPSAwOyA7fQorICAgIHsgKHl5dmFsLnJ1bGVMaXN0KSA9
IDA7IDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA1MDoKICNsaW5lIDQxNSAiV2ViQ29yZS9jc3Mv
Q1NTR3JhbW1hci55IgogICAgIHsKLSAgICAgIHl5dmFsLnJ1bGVMaXN0ID0geXl2c3BbLTJdLnJ1
bGVMaXN0OwotICAgICAgaWYgKHl5dnNwWy0xXS5ydWxlKSB7Ci0gICAgICAgICAgaWYgKCF5eXZh
bC5ydWxlTGlzdCkKLSAgICAgICAgICAgICAgeXl2YWwucnVsZUxpc3QgPSBzdGF0aWNfY2FzdDxD
U1NQYXJzZXIqPihwYXJzZXIpLT5jcmVhdGVSdWxlTGlzdCgpOwotICAgICAgICAgIHl5dmFsLnJ1
bGVMaXN0LT5hcHBlbmQoeXl2c3BbLTFdLnJ1bGUpOworICAgICAgKHl5dmFsLnJ1bGVMaXN0KSA9
ICh5eXZzcFsoMSkgLSAoMyldLnJ1bGVMaXN0KTsKKyAgICAgIGlmICgoeXl2c3BbKDIpIC0gKDMp
XS5ydWxlKSkgeworICAgICAgICAgIGlmICghKHl5dmFsLnJ1bGVMaXN0KSkKKyAgICAgICAgICAg
ICAgKHl5dmFsLnJ1bGVMaXN0KSA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlciktPmNy
ZWF0ZVJ1bGVMaXN0KCk7CisgICAgICAgICAgKHl5dmFsLnJ1bGVMaXN0KS0+YXBwZW5kKCh5eXZz
cFsoMikgLSAoMyldLnJ1bGUpKTsKICAgICAgIH0KICAgO30KICAgICBicmVhazsKQEAgLTE5Nzgs
MTc5ICsyMzEwLDE3OSBAQAogICBjYXNlIDYwOgogI2xpbmUgNDQyICJXZWJDb3JlL2Nzcy9DU1NH
cmFtbWFyLnkiCiAgICAgewotICAgICAgICB5eXZhbC5ydWxlID0gc3RhdGljX2Nhc3Q8Q1NTUGFy
c2VyKj4ocGFyc2VyKS0+Y3JlYXRlSW1wb3J0UnVsZSh5eXZzcFstM10uc3RyaW5nLCB5eXZzcFst
MV0ubWVkaWFMaXN0KTsKKyAgICAgICAgKHl5dmFsLnJ1bGUpID0gc3RhdGljX2Nhc3Q8Q1NTUGFy
c2VyKj4ocGFyc2VyKS0+Y3JlYXRlSW1wb3J0UnVsZSgoeXl2c3BbKDMpIC0gKDYpXS5zdHJpbmcp
LCAoeXl2c3BbKDUpIC0gKDYpXS5tZWRpYUxpc3QpKTsKICAgICA7fQogICAgIGJyZWFrOwogCiAg
IGNhc2UgNjE6CiAjbGluZSA0NDUgIldlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSIKICAgICB7Ci0g
ICAgICAgIHl5dmFsLnJ1bGUgPSAwOworICAgICAgICAoeXl2YWwucnVsZSkgPSAwOwogICAgIDt9
CiAgICAgYnJlYWs7CiAKICAgY2FzZSA2MjoKICNsaW5lIDQ0OCAiV2ViQ29yZS9jc3MvQ1NTR3Jh
bW1hci55IgogICAgIHsKLSAgICAgICAgeXl2YWwucnVsZSA9IDA7CisgICAgICAgICh5eXZhbC5y
dWxlKSA9IDA7CiAgICAgO30KICAgICBicmVhazsKIAogICBjYXNlIDYzOgogI2xpbmUgNDUxICJX
ZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkiCiAgICAgewotICAgICAgICB5eXZhbC5ydWxlID0gMDsK
KyAgICAgICAgKHl5dmFsLnJ1bGUpID0gMDsKICAgICA7fQogICAgIGJyZWFrOwogCiAgIGNhc2Ug
NjQ6CiAjbGluZSA0NTcgIldlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSIKICAgICB7Ci0gICAgICAg
IHl5dmFsLnJ1bGUgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpLT5jcmVhdGVWYXJp
YWJsZXNSdWxlKHl5dnNwWy00XS5tZWRpYUxpc3QsIHRydWUpOworICAgICAgICAoeXl2YWwucnVs
ZSkgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpLT5jcmVhdGVWYXJpYWJsZXNSdWxl
KCh5eXZzcFsoMykgLSAoNyldLm1lZGlhTGlzdCksIHRydWUpOwogICAgIDt9CiAgICAgYnJlYWs7
CiAKICAgY2FzZSA2NToKICNsaW5lIDQ2MSAiV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55IgogICAg
IHsKLSAgICAgICAgeXl2YWwucnVsZSA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcikt
PmNyZWF0ZVZhcmlhYmxlc1J1bGUoeXl2c3BbLTRdLm1lZGlhTGlzdCwgZmFsc2UpOworICAgICAg
ICAoeXl2YWwucnVsZSkgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpLT5jcmVhdGVW
YXJpYWJsZXNSdWxlKCh5eXZzcFsoMykgLSAoNyldLm1lZGlhTGlzdCksIGZhbHNlKTsKICAgICA7
fQogICAgIGJyZWFrOwogCiAgIGNhc2UgNjY6CiAjbGluZSA0NjcgIldlYkNvcmUvY3NzL0NTU0dy
YW1tYXIueSIKICAgICB7Ci0gICAgICAgIHl5dmFsLm1lZGlhTGlzdCA9IHN0YXRpY19jYXN0PENT
U1BhcnNlcio+KHBhcnNlciktPmNyZWF0ZU1lZGlhTGlzdCgpOworICAgICAgICAoeXl2YWwubWVk
aWFMaXN0KSA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlciktPmNyZWF0ZU1lZGlhTGlz
dCgpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA2NzoKICNsaW5lIDQ3MSAiV2ViQ29y
ZS9jc3MvQ1NTR3JhbW1hci55IgogICAgIHsKLSAgICAgICAgeXl2YWwubWVkaWFMaXN0ID0geXl2
c3BbMF0ubWVkaWFMaXN0OworICAgICAgICAoeXl2YWwubWVkaWFMaXN0KSA9ICh5eXZzcFsoMykg
LSAoMyldLm1lZGlhTGlzdCk7CiAgICAgO30KICAgICBicmVhazsKIAogICBjYXNlIDY4OgogI2xp
bmUgNDc3ICJXZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkiCiAgICAgewotICAgICAgICB5eXZhbC5i
b29sZWFuID0geXl2c3BbMF0uYm9vbGVhbjsKKyAgICAgICAgKHl5dmFsLmJvb2xlYW4pID0gKHl5
dnNwWygxKSAtICgxKV0uYm9vbGVhbik7CiAgICAgO30KICAgICBicmVhazsKIAogICBjYXNlIDY5
OgogI2xpbmUgNDgwICJXZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkiCiAgICAgewotICAgICAgICB5
eXZhbC5ib29sZWFuID0geXl2c3BbLTFdLmJvb2xlYW47Ci0gICAgICAgIGlmICh5eXZzcFswXS5i
b29sZWFuKQotICAgICAgICAgICAgeXl2YWwuYm9vbGVhbiA9IHl5dnNwWzBdLmJvb2xlYW47Cisg
ICAgICAgICh5eXZhbC5ib29sZWFuKSA9ICh5eXZzcFsoMSkgLSAoMildLmJvb2xlYW4pOworICAg
ICAgICBpZiAoKHl5dnNwWygyKSAtICgyKV0uYm9vbGVhbikpCisgICAgICAgICAgICAoeXl2YWwu
Ym9vbGVhbikgPSAoeXl2c3BbKDIpIC0gKDIpXS5ib29sZWFuKTsKICAgICA7fQogICAgIGJyZWFr
OwogCiAgIGNhc2UgNzA6CiAjbGluZSA0ODUgIldlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSIKICAg
ICB7Ci0gICAgICAgIHl5dmFsLmJvb2xlYW4gPSB5eXZzcFswXS5ib29sZWFuOworICAgICAgICAo
eXl2YWwuYm9vbGVhbikgPSAoeXl2c3BbKDEpIC0gKDEpXS5ib29sZWFuKTsKICAgICA7fQogICAg
IGJyZWFrOwogCiAgIGNhc2UgNzE6CiAjbGluZSA0ODggIldlYkNvcmUvY3NzL0NTU0dyYW1tYXIu
eSIKICAgICB7Ci0gICAgICAgIHl5dmFsLmJvb2xlYW4gPSBmYWxzZTsKKyAgICAgICAgKHl5dmFs
LmJvb2xlYW4pID0gZmFsc2U7CiAgICAgO30KICAgICBicmVhazsKIAogICBjYXNlIDcyOgogI2xp
bmUgNDkxICJXZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkiCiAgICAgewotICAgICAgICB5eXZhbC5i
b29sZWFuID0gZmFsc2U7CisgICAgICAgICh5eXZhbC5ib29sZWFuKSA9IGZhbHNlOwogICAgIDt9
CiAgICAgYnJlYWs7CiAKICAgY2FzZSA3MzoKICNsaW5lIDQ5NCAiV2ViQ29yZS9jc3MvQ1NTR3Jh
bW1hci55IgogICAgIHsKLSAgICAgICAgeXl2YWwuYm9vbGVhbiA9IHl5dnNwWy0xXS5ib29sZWFu
OworICAgICAgICAoeXl2YWwuYm9vbGVhbikgPSAoeXl2c3BbKDEpIC0gKDIpXS5ib29sZWFuKTsK
ICAgICA7fQogICAgIGJyZWFrOwogCiAgIGNhc2UgNzQ6CiAjbGluZSA1MDAgIldlYkNvcmUvY3Nz
L0NTU0dyYW1tYXIueSIKICAgICB7Ci0gICAgICAgIHl5dmFsLmJvb2xlYW4gPSB5eXZzcFstMl0u
Ym9vbGVhbjsKKyAgICAgICAgKHl5dmFsLmJvb2xlYW4pID0gKHl5dnNwWygxKSAtICgzKV0uYm9v
bGVhbik7CiAgICAgO30KICAgICBicmVhazsKIAogICBjYXNlIDc1OgogI2xpbmUgNTAzICJXZWJD
b3JlL2Nzcy9DU1NHcmFtbWFyLnkiCiAgICAgewotICAgICAgICB5eXZhbC5ib29sZWFuID0gZmFs
c2U7CisgICAgICAgICh5eXZhbC5ib29sZWFuKSA9IGZhbHNlOwogICAgIDt9CiAgICAgYnJlYWs7
CiAKICAgY2FzZSA3NjoKICNsaW5lIDUwNiAiV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55IgogICAg
IHsKLSAgICAgICAgeXl2YWwuYm9vbGVhbiA9IGZhbHNlOworICAgICAgICAoeXl2YWwuYm9vbGVh
bikgPSBmYWxzZTsKICAgICA7fQogICAgIGJyZWFrOwogCiAgIGNhc2UgNzc6CiAjbGluZSA1MDkg
IldlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSIKICAgICB7Ci0gICAgICAgIHl5dmFsLmJvb2xlYW4g
PSBmYWxzZTsKKyAgICAgICAgKHl5dmFsLmJvb2xlYW4pID0gZmFsc2U7CiAgICAgO30KICAgICBi
cmVhazsKIAogICBjYXNlIDc4OgogI2xpbmUgNTEyICJXZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnki
CiAgICAgewotICAgICAgICB5eXZhbC5ib29sZWFuID0geXl2c3BbLTNdLmJvb2xlYW47Ci0gICAg
ICAgIGlmICh5eXZzcFstMl0uYm9vbGVhbikKLSAgICAgICAgICAgIHl5dmFsLmJvb2xlYW4gPSB5
eXZzcFstMl0uYm9vbGVhbjsKKyAgICAgICAgKHl5dmFsLmJvb2xlYW4pID0gKHl5dnNwWygxKSAt
ICg0KV0uYm9vbGVhbik7CisgICAgICAgIGlmICgoeXl2c3BbKDIpIC0gKDQpXS5ib29sZWFuKSkK
KyAgICAgICAgICAgICh5eXZhbC5ib29sZWFuKSA9ICh5eXZzcFsoMikgLSAoNCldLmJvb2xlYW4p
OwogICAgIDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSA3OToKICNsaW5lIDUxNyAiV2ViQ29yZS9j
c3MvQ1NTR3JhbW1hci55IgogICAgIHsKLSAgICAgICAgeXl2YWwuYm9vbGVhbiA9IHl5dnNwWy0z
XS5ib29sZWFuOworICAgICAgICAoeXl2YWwuYm9vbGVhbikgPSAoeXl2c3BbKDEpIC0gKDQpXS5i
b29sZWFuKTsKICAgICA7fQogICAgIGJyZWFrOwogCiAgIGNhc2UgODA6CiAjbGluZSA1MjAgIldl
YkNvcmUvY3NzL0NTU0dyYW1tYXIueSIKICAgICB7Ci0gICAgICAgIHl5dmFsLmJvb2xlYW4gPSB5
eXZzcFstNV0uYm9vbGVhbjsKKyAgICAgICAgKHl5dmFsLmJvb2xlYW4pID0gKHl5dnNwWygxKSAt
ICg2KV0uYm9vbGVhbik7CiAgICAgO30KICAgICBicmVhazsKIAogICBjYXNlIDgxOgogI2xpbmUg
NTI2ICJXZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkiCiAgICAgewotICAgICAgICB5eXZhbC5ib29s
ZWFuID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKS0+YWRkVmFyaWFibGUoeXl2c3Bb
LTNdLnN0cmluZywgeXl2c3BbMF0udmFsdWVMaXN0KTsKKyAgICAgICAgKHl5dmFsLmJvb2xlYW4p
ID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKS0+YWRkVmFyaWFibGUoKHl5dnNwWygx
KSAtICg0KV0uc3RyaW5nKSwgKHl5dnNwWyg0KSAtICg0KV0udmFsdWVMaXN0KSk7CiAgICAgO30K
ICAgICBicmVhazsKIAogICBjYXNlIDgyOgogI2xpbmUgNTMwICJXZWJDb3JlL2Nzcy9DU1NHcmFt
bWFyLnkiCiAgICAgewotICAgICAgICB5eXZhbC5ib29sZWFuID0gc3RhdGljX2Nhc3Q8Q1NTUGFy
c2VyKj4ocGFyc2VyKS0+YWRkVmFyaWFibGVEZWNsYXJhdGlvbkJsb2NrKHl5dnNwWy02XS5zdHJp
bmcpOworICAgICAgICAoeXl2YWwuYm9vbGVhbikgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihw
YXJzZXIpLT5hZGRWYXJpYWJsZURlY2xhcmF0aW9uQmxvY2soKHl5dnNwWygxKSAtICg3KV0uc3Ry
aW5nKSk7CiAgICAgO30KICAgICBicmVhazsKIAogICBjYXNlIDgzOgogI2xpbmUgNTM0ICJXZWJD
b3JlL2Nzcy9DU1NHcmFtbWFyLnkiCiAgICAgewotICAgICAgICB5eXZhbC5ib29sZWFuID0gZmFs
c2U7CisgICAgICAgICh5eXZhbC5ib29sZWFuKSA9IGZhbHNlOwogICAgIDt9CiAgICAgYnJlYWs7
CiAKICAgY2FzZSA4NDoKICNsaW5lIDUzOCAiV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55IgogICAg
IHsKLSAgICAgICAgeXl2YWwuYm9vbGVhbiA9IGZhbHNlOworICAgICAgICAoeXl2YWwuYm9vbGVh
bikgPSBmYWxzZTsKICAgICA7fQogICAgIGJyZWFrOwogCkBAIC0yMTU4LDcgKzI0OTAsNyBAQAog
I2xpbmUgNTQyICJXZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkiCiAgICAgewogICAgICAgICAvKiBA
dmFyaWFibGVzIHsgdmFybmFtZTogfSBKdXN0IHJlZHVjZSBhd2F5IHRoaXMgdmFyaWFibGUgd2l0
aCBubyB2YWx1ZS4gKi8KLSAgICAgICAgeXl2YWwuYm9vbGVhbiA9IGZhbHNlOworICAgICAgICAo
eXl2YWwuYm9vbGVhbikgPSBmYWxzZTsKICAgICA7fQogICAgIGJyZWFrOwogCkBAIC0yMTY2LDE0
ICsyNDk4LDE0IEBACiAjbGluZSA1NDcgIldlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSIKICAgICB7
CiAgICAgICAgIC8qIGlmIHdlIGNvbWUgYWNyb3NzIHJ1bGVzIHdpdGggaW52YWxpZCB2YWx1ZXMg
bGlrZSB0aGlzIGNhc2U6IEB2YXJpYWJsZXMgeyB2YXJuYW1lOiAqOyB9LCBqdXN0IGRpc2NhcmQg
dGhlIHByb3BlcnR5L3ZhbHVlIHBhaXIgKi8KLSAgICAgICAgeXl2YWwuYm9vbGVhbiA9IGZhbHNl
OworICAgICAgICAoeXl2YWwuYm9vbGVhbikgPSBmYWxzZTsKICAgICA7fQogICAgIGJyZWFrOwog
CiAgIGNhc2UgODc6CiAjbGluZSA1NTQgIldlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSIKICAgICB7
Ci0gICAgICAgIHl5dmFsLnN0cmluZyA9IHl5dnNwWy0xXS5zdHJpbmc7CisgICAgICAgICh5eXZh
bC5zdHJpbmcpID0gKHl5dnNwWygxKSAtICgyKV0uc3RyaW5nKTsKICAgICA7fQogICAgIGJyZWFr
OwogCkBAIC0yMTgyLDQ2ICsyNTE0LDQ2IEBACiAgICAgewogICAgIENTU1BhcnNlciogcCA9IHN0
YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7CiAgICAgaWYgKHAtPm1fc3R5bGVTaGVldCkK
LSAgICAgICAgcC0+bV9zdHlsZVNoZWV0LT5hZGROYW1lc3BhY2UocCwgeXl2c3BbLTNdLnN0cmlu
ZywgeXl2c3BbLTJdLnN0cmluZyk7CisgICAgICAgIHAtPm1fc3R5bGVTaGVldC0+YWRkTmFtZXNw
YWNlKHAsICh5eXZzcFsoMykgLSAoNildLnN0cmluZyksICh5eXZzcFsoNCkgLSAoNildLnN0cmlu
ZykpOwogO30KICAgICBicmVhazsKIAogICBjYXNlIDkxOgogI2xpbmUgNTcwICJXZWJDb3JlL2Nz
cy9DU1NHcmFtbWFyLnkiCi0gICAgeyB5eXZhbC5zdHJpbmcuY2hhcmFjdGVycyA9IDA7IDt9Cisg
ICAgeyAoeXl2YWwuc3RyaW5nKS5jaGFyYWN0ZXJzID0gMDsgO30KICAgICBicmVhazsKIAogICBj
YXNlIDkyOgogI2xpbmUgNTcxICJXZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkiCi0gICAgeyB5eXZh
bC5zdHJpbmcgPSB5eXZzcFstMV0uc3RyaW5nOyA7fQorICAgIHsgKHl5dmFsLnN0cmluZykgPSAo
eXl2c3BbKDEpIC0gKDIpXS5zdHJpbmcpOyA7fQogICAgIGJyZWFrOwogCiAgIGNhc2UgOTU6CiAj
bGluZSA1ODAgIldlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSIKICAgICB7Ci0gICAgICAgIHl5dmFs
LnN0cmluZyA9IHl5dnNwWy0xXS5zdHJpbmc7CisgICAgICAgICh5eXZhbC5zdHJpbmcpID0gKHl5
dnNwWygxKSAtICgyKV0uc3RyaW5nKTsKICAgICA7fQogICAgIGJyZWFrOwogCiAgIGNhc2UgOTY6
CiAjbGluZSA1ODYgIldlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSIKICAgICB7Ci0gICAgICAgIHl5
dmFsLnZhbHVlTGlzdCA9IDA7CisgICAgICAgICh5eXZhbC52YWx1ZUxpc3QpID0gMDsKICAgICA7
fQogICAgIGJyZWFrOwogCiAgIGNhc2UgOTc6CiAjbGluZSA1ODkgIldlYkNvcmUvY3NzL0NTU0dy
YW1tYXIueSIKICAgICB7Ci0gICAgICAgIHl5dmFsLnZhbHVlTGlzdCA9IHl5dnNwWy0xXS52YWx1
ZUxpc3Q7CisgICAgICAgICh5eXZhbC52YWx1ZUxpc3QpID0gKHl5dnNwWygzKSAtICg0KV0udmFs
dWVMaXN0KTsKICAgICA7fQogICAgIGJyZWFrOwogCiAgIGNhc2UgOTg6CiAjbGluZSA1OTUgIldl
YkNvcmUvY3NzL0NTU0dyYW1tYXIueSIKICAgICB7Ci0gICAgICAgIHl5dnNwWy00XS5zdHJpbmcu
bG93ZXIoKTsKLSAgICAgICAgeXl2YWwubWVkaWFRdWVyeUV4cCA9IHN0YXRpY19jYXN0PENTU1Bh
cnNlcio+KHBhcnNlciktPmNyZWF0ZUZsb2F0aW5nTWVkaWFRdWVyeUV4cCh5eXZzcFstNF0uc3Ry
aW5nLCB5eXZzcFstMl0udmFsdWVMaXN0KTsKKyAgICAgICAgKHl5dnNwWygzKSAtICg3KV0uc3Ry
aW5nKS5sb3dlcigpOworICAgICAgICAoeXl2YWwubWVkaWFRdWVyeUV4cCkgPSBzdGF0aWNfY2Fz
dDxDU1NQYXJzZXIqPihwYXJzZXIpLT5jcmVhdGVGbG9hdGluZ01lZGlhUXVlcnlFeHAoKHl5dnNw
WygzKSAtICg3KV0uc3RyaW5nKSwgKHl5dnNwWyg1KSAtICg3KV0udmFsdWVMaXN0KSk7CiAgICAg
O30KICAgICBicmVhazsKIApAQCAtMjIyOSw1MSArMjU2MSw1MSBAQAogI2xpbmUgNjAyICJXZWJD
b3JlL2Nzcy9DU1NHcmFtbWFyLnkiCiAgICAgewogICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0
aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOwotICAgICAgICB5eXZhbC5tZWRpYVF1ZXJ5RXhw
TGlzdCA9IHAtPmNyZWF0ZUZsb2F0aW5nTWVkaWFRdWVyeUV4cExpc3QoKTsKLSAgICAgICAgeXl2
YWwubWVkaWFRdWVyeUV4cExpc3QtPmFwcGVuZChwLT5zaW5rRmxvYXRpbmdNZWRpYVF1ZXJ5RXhw
KHl5dnNwWzBdLm1lZGlhUXVlcnlFeHApKTsKKyAgICAgICAgKHl5dmFsLm1lZGlhUXVlcnlFeHBM
aXN0KSA9IHAtPmNyZWF0ZUZsb2F0aW5nTWVkaWFRdWVyeUV4cExpc3QoKTsKKyAgICAgICAgKHl5
dmFsLm1lZGlhUXVlcnlFeHBMaXN0KS0+YXBwZW5kKHAtPnNpbmtGbG9hdGluZ01lZGlhUXVlcnlF
eHAoKHl5dnNwWygxKSAtICgxKV0ubWVkaWFRdWVyeUV4cCkpKTsKICAgICA7fQogICAgIGJyZWFr
OwogCiAgIGNhc2UgMTAwOgogI2xpbmUgNjA3ICJXZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkiCiAg
ICAgewotICAgICAgICB5eXZhbC5tZWRpYVF1ZXJ5RXhwTGlzdCA9IHl5dnNwWy00XS5tZWRpYVF1
ZXJ5RXhwTGlzdDsKLSAgICAgICAgeXl2YWwubWVkaWFRdWVyeUV4cExpc3QtPmFwcGVuZChzdGF0
aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpLT5zaW5rRmxvYXRpbmdNZWRpYVF1ZXJ5RXhwKHl5
dnNwWzBdLm1lZGlhUXVlcnlFeHApKTsKKyAgICAgICAgKHl5dmFsLm1lZGlhUXVlcnlFeHBMaXN0
KSA9ICh5eXZzcFsoMSkgLSAoNSldLm1lZGlhUXVlcnlFeHBMaXN0KTsKKyAgICAgICAgKHl5dmFs
Lm1lZGlhUXVlcnlFeHBMaXN0KS0+YXBwZW5kKHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNl
ciktPnNpbmtGbG9hdGluZ01lZGlhUXVlcnlFeHAoKHl5dnNwWyg1KSAtICg1KV0ubWVkaWFRdWVy
eUV4cCkpKTsKICAgICA7fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTAxOgogI2xpbmUgNjE0ICJX
ZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkiCiAgICAgewotICAgICAgICB5eXZhbC5tZWRpYVF1ZXJ5
RXhwTGlzdCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlciktPmNyZWF0ZUZsb2F0aW5n
TWVkaWFRdWVyeUV4cExpc3QoKTsKKyAgICAgICAgKHl5dmFsLm1lZGlhUXVlcnlFeHBMaXN0KSA9
IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlciktPmNyZWF0ZUZsb2F0aW5nTWVkaWFRdWVy
eUV4cExpc3QoKTsKICAgICA7fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTAyOgogI2xpbmUgNjE3
ICJXZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkiCiAgICAgewotICAgICAgICB5eXZhbC5tZWRpYVF1
ZXJ5RXhwTGlzdCA9IHl5dnNwWzBdLm1lZGlhUXVlcnlFeHBMaXN0OworICAgICAgICAoeXl2YWwu
bWVkaWFRdWVyeUV4cExpc3QpID0gKHl5dnNwWygzKSAtICgzKV0ubWVkaWFRdWVyeUV4cExpc3Qp
OwogICAgIDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMDM6CiAjbGluZSA2MjMgIldlYkNvcmUv
Y3NzL0NTU0dyYW1tYXIueSIKICAgICB7Ci0gICAgICAgIHl5dmFsLm1lZGlhUXVlcnlSZXN0cmlj
dG9yID0gTWVkaWFRdWVyeTo6Tm9uZTsKKyAgICAgICAgKHl5dmFsLm1lZGlhUXVlcnlSZXN0cmlj
dG9yKSA9IE1lZGlhUXVlcnk6Ok5vbmU7CiAgICAgO30KICAgICBicmVhazsKIAogICBjYXNlIDEw
NDoKICNsaW5lIDYyNiAiV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55IgogICAgIHsKLSAgICAgICAg
eXl2YWwubWVkaWFRdWVyeVJlc3RyaWN0b3IgPSBNZWRpYVF1ZXJ5OjpPbmx5OworICAgICAgICAo
eXl2YWwubWVkaWFRdWVyeVJlc3RyaWN0b3IpID0gTWVkaWFRdWVyeTo6T25seTsKICAgICA7fQog
ICAgIGJyZWFrOwogCiAgIGNhc2UgMTA1OgogI2xpbmUgNjI5ICJXZWJDb3JlL2Nzcy9DU1NHcmFt
bWFyLnkiCiAgICAgewotICAgICAgICB5eXZhbC5tZWRpYVF1ZXJ5UmVzdHJpY3RvciA9IE1lZGlh
UXVlcnk6Ok5vdDsKKyAgICAgICAgKHl5dmFsLm1lZGlhUXVlcnlSZXN0cmljdG9yKSA9IE1lZGlh
UXVlcnk6Ok5vdDsKICAgICA7fQogICAgIGJyZWFrOwogCkBAIC0yMjgxLDcgKzI2MTMsNyBAQAog
I2xpbmUgNjM1ICJXZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkiCiAgICAgewogICAgICAgICBDU1NQ
YXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOwotICAgICAgICB5eXZh
bC5tZWRpYVF1ZXJ5ID0gcC0+Y3JlYXRlRmxvYXRpbmdNZWRpYVF1ZXJ5KHAtPnNpbmtGbG9hdGlu
Z01lZGlhUXVlcnlFeHBMaXN0KHl5dnNwWzBdLm1lZGlhUXVlcnlFeHBMaXN0KSk7CisgICAgICAg
ICh5eXZhbC5tZWRpYVF1ZXJ5KSA9IHAtPmNyZWF0ZUZsb2F0aW5nTWVkaWFRdWVyeShwLT5zaW5r
RmxvYXRpbmdNZWRpYVF1ZXJ5RXhwTGlzdCgoeXl2c3BbKDEpIC0gKDEpXS5tZWRpYVF1ZXJ5RXhw
TGlzdCkpKTsKICAgICA7fQogICAgIGJyZWFrOwogCkBAIC0yMjg5LDE1ICsyNjIxLDE1IEBACiAj
bGluZSA2NDAgIldlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSIKICAgICB7CiAgICAgICAgIENTU1Bh
cnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7Ci0gICAgICAgIHl5dnNw
Wy0xXS5zdHJpbmcubG93ZXIoKTsKLSAgICAgICAgeXl2YWwubWVkaWFRdWVyeSA9IHAtPmNyZWF0
ZUZsb2F0aW5nTWVkaWFRdWVyeSh5eXZzcFstM10ubWVkaWFRdWVyeVJlc3RyaWN0b3IsIHl5dnNw
Wy0xXS5zdHJpbmcsIHAtPnNpbmtGbG9hdGluZ01lZGlhUXVlcnlFeHBMaXN0KHl5dnNwWzBdLm1l
ZGlhUXVlcnlFeHBMaXN0KSk7CisgICAgICAgICh5eXZzcFsoMykgLSAoNCldLnN0cmluZykubG93
ZXIoKTsKKyAgICAgICAgKHl5dmFsLm1lZGlhUXVlcnkpID0gcC0+Y3JlYXRlRmxvYXRpbmdNZWRp
YVF1ZXJ5KCh5eXZzcFsoMSkgLSAoNCldLm1lZGlhUXVlcnlSZXN0cmljdG9yKSwgKHl5dnNwWygz
KSAtICg0KV0uc3RyaW5nKSwgcC0+c2lua0Zsb2F0aW5nTWVkaWFRdWVyeUV4cExpc3QoKHl5dnNw
Wyg0KSAtICg0KV0ubWVkaWFRdWVyeUV4cExpc3QpKSk7CiAgICAgO30KICAgICBicmVhazsKIAog
ICBjYXNlIDEwODoKICNsaW5lIDY0OCAiV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55IgogICAgIHsK
LSAgICAgICAgeXl2YWwubWVkaWFMaXN0ID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2Vy
KS0+Y3JlYXRlTWVkaWFMaXN0KCk7CisgICAgICAgICh5eXZhbC5tZWRpYUxpc3QpID0gc3RhdGlj
X2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKS0+Y3JlYXRlTWVkaWFMaXN0KCk7CiAgICAgIDt9CiAg
ICAgYnJlYWs7CiAKQEAgLTIzMDUsNzQgKzI2MzcsNzQgQEAKICNsaW5lIDY1NSAiV2ViQ29yZS9j
c3MvQ1NTR3JhbW1hci55IgogICAgIHsKICAgICAgICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nh
c3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKLSAgICAgICAgeXl2YWwubWVkaWFMaXN0ID0gcC0+Y3Jl
YXRlTWVkaWFMaXN0KCk7Ci0gICAgICAgIHl5dmFsLm1lZGlhTGlzdC0+YXBwZW5kTWVkaWFRdWVy
eShwLT5zaW5rRmxvYXRpbmdNZWRpYVF1ZXJ5KHl5dnNwWzBdLm1lZGlhUXVlcnkpKTsKKyAgICAg
ICAgKHl5dmFsLm1lZGlhTGlzdCkgPSBwLT5jcmVhdGVNZWRpYUxpc3QoKTsKKyAgICAgICAgKHl5
dmFsLm1lZGlhTGlzdCktPmFwcGVuZE1lZGlhUXVlcnkocC0+c2lua0Zsb2F0aW5nTWVkaWFRdWVy
eSgoeXl2c3BbKDEpIC0gKDEpXS5tZWRpYVF1ZXJ5KSkpOwogICAgIDt9CiAgICAgYnJlYWs7CiAK
ICAgY2FzZSAxMTE6CiAjbGluZSA2NjAgIldlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSIKICAgICB7
Ci0gICAgICAgIHl5dmFsLm1lZGlhTGlzdCA9IHl5dnNwWy0zXS5tZWRpYUxpc3Q7Ci0gICAgICAg
IGlmICh5eXZhbC5tZWRpYUxpc3QpCi0gICAgICAgICAgICB5eXZhbC5tZWRpYUxpc3QtPmFwcGVu
ZE1lZGlhUXVlcnkoc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKS0+c2lua0Zsb2F0aW5n
TWVkaWFRdWVyeSh5eXZzcFswXS5tZWRpYVF1ZXJ5KSk7CisgICAgICAgICh5eXZhbC5tZWRpYUxp
c3QpID0gKHl5dnNwWygxKSAtICg0KV0ubWVkaWFMaXN0KTsKKyAgICAgICAgaWYgKCh5eXZhbC5t
ZWRpYUxpc3QpKQorICAgICAgICAgICAgKHl5dmFsLm1lZGlhTGlzdCktPmFwcGVuZE1lZGlhUXVl
cnkoc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKS0+c2lua0Zsb2F0aW5nTWVkaWFRdWVy
eSgoeXl2c3BbKDQpIC0gKDQpXS5tZWRpYVF1ZXJ5KSkpOwogICAgIDt9CiAgICAgYnJlYWs7CiAK
ICAgY2FzZSAxMTI6CiAjbGluZSA2NjUgIldlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSIKICAgICB7
Ci0gICAgICAgIHl5dmFsLm1lZGlhTGlzdCA9IDA7CisgICAgICAgICh5eXZhbC5tZWRpYUxpc3Qp
ID0gMDsKICAgICA7fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTEzOgogI2xpbmUgNjcxICJXZWJD
b3JlL2Nzcy9DU1NHcmFtbWFyLnkiCiAgICAgewotICAgICAgICB5eXZhbC5ydWxlID0gc3RhdGlj
X2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKS0+Y3JlYXRlTWVkaWFSdWxlKHl5dnNwWy00XS5tZWRp
YUxpc3QsIHl5dnNwWy0xXS5ydWxlTGlzdCk7CisgICAgICAgICh5eXZhbC5ydWxlKSA9IHN0YXRp
Y19jYXN0PENTU1BhcnNlcio+KHBhcnNlciktPmNyZWF0ZU1lZGlhUnVsZSgoeXl2c3BbKDMpIC0g
KDcpXS5tZWRpYUxpc3QpLCAoeXl2c3BbKDYpIC0gKDcpXS5ydWxlTGlzdCkpOwogICAgIDt9CiAg
ICAgYnJlYWs7CiAKICAgY2FzZSAxMTQ6CiAjbGluZSA2NzQgIldlYkNvcmUvY3NzL0NTU0dyYW1t
YXIueSIKICAgICB7Ci0gICAgICAgIHl5dmFsLnJ1bGUgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIq
PihwYXJzZXIpLT5jcmVhdGVNZWRpYVJ1bGUoMCwgeXl2c3BbLTFdLnJ1bGVMaXN0KTsKKyAgICAg
ICAgKHl5dmFsLnJ1bGUpID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKS0+Y3JlYXRl
TWVkaWFSdWxlKDAsICh5eXZzcFsoNSkgLSAoNildLnJ1bGVMaXN0KSk7CiAgICAgO30KICAgICBi
cmVhazsKIAogICBjYXNlIDExNToKICNsaW5lIDY4MCAiV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55
IgogICAgIHsKLSAgICAgIHl5dmFsLnN0cmluZyA9IHl5dnNwWy0xXS5zdHJpbmc7CisgICAgICAo
eXl2YWwuc3RyaW5nKSA9ICh5eXZzcFsoMSkgLSAoMildLnN0cmluZyk7CiAgIDt9CiAgICAgYnJl
YWs7CiAKICAgY2FzZSAxMTY6CiAjbGluZSA2ODYgIldlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSIK
ICAgICB7Ci0gICAgICAgIHl5dmFsLnJ1bGUgPSB5eXZzcFstMV0ua2V5ZnJhbWVzUnVsZTsKLSAg
ICAgICAgeXl2c3BbLTFdLmtleWZyYW1lc1J1bGUtPnNldE5hbWVJbnRlcm5hbCh5eXZzcFstNV0u
c3RyaW5nKTsKKyAgICAgICAgKHl5dmFsLnJ1bGUpID0gKHl5dnNwWyg3KSAtICg4KV0ua2V5ZnJh
bWVzUnVsZSk7CisgICAgICAgICh5eXZzcFsoNykgLSAoOCldLmtleWZyYW1lc1J1bGUpLT5zZXRO
YW1lSW50ZXJuYWwoKHl5dnNwWygzKSAtICg4KV0uc3RyaW5nKSk7CiAgICAgO30KICAgICBicmVh
azsKIAogICBjYXNlIDExOToKICNsaW5lIDY5OCAiV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55Igot
ICAgIHsgeXl2YWwua2V5ZnJhbWVzUnVsZSA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNl
ciktPmNyZWF0ZUtleWZyYW1lc1J1bGUoKTsgO30KKyAgICB7ICh5eXZhbC5rZXlmcmFtZXNSdWxl
KSA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlciktPmNyZWF0ZUtleWZyYW1lc1J1bGUo
KTsgO30KICAgICBicmVhazsKIAogICBjYXNlIDEyMDoKICNsaW5lIDY5OSAiV2ViQ29yZS9jc3Mv
Q1NTR3JhbW1hci55IgogICAgIHsKLSAgICAgICAgeXl2YWwua2V5ZnJhbWVzUnVsZSA9IHl5dnNw
Wy0yXS5rZXlmcmFtZXNSdWxlOwotICAgICAgICBpZiAoeXl2c3BbLTFdLmtleWZyYW1lUnVsZSkK
LSAgICAgICAgICAgIHl5dmFsLmtleWZyYW1lc1J1bGUtPmFwcGVuZCh5eXZzcFstMV0ua2V5ZnJh
bWVSdWxlKTsKKyAgICAgICAgKHl5dmFsLmtleWZyYW1lc1J1bGUpID0gKHl5dnNwWygxKSAtICgz
KV0ua2V5ZnJhbWVzUnVsZSk7CisgICAgICAgIGlmICgoeXl2c3BbKDIpIC0gKDMpXS5rZXlmcmFt
ZVJ1bGUpKQorICAgICAgICAgICAgKHl5dmFsLmtleWZyYW1lc1J1bGUpLT5hcHBlbmQoKHl5dnNw
WygyKSAtICgzKV0ua2V5ZnJhbWVSdWxlKSk7CiAgICAgO30KICAgICBicmVhazsKIAogICBjYXNl
IDEyMToKICNsaW5lIDcwNyAiV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55IgogICAgIHsKLSAgICAg
ICAgeXl2YWwua2V5ZnJhbWVSdWxlID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKS0+
Y3JlYXRlS2V5ZnJhbWVSdWxlKHl5dnNwWy01XS52YWx1ZUxpc3QpOworICAgICAgICAoeXl2YWwu
a2V5ZnJhbWVSdWxlKSA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlciktPmNyZWF0ZUtl
eWZyYW1lUnVsZSgoeXl2c3BbKDEpIC0gKDYpXS52YWx1ZUxpc3QpKTsKICAgICA7fQogICAgIGJy
ZWFrOwogCkBAIC0yMzgwLDggKzI3MTIsOCBAQAogI2xpbmUgNzEzICJXZWJDb3JlL2Nzcy9DU1NH
cmFtbWFyLnkiCiAgICAgewogICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQ
YXJzZXIqPihwYXJzZXIpOwotICAgICAgICB5eXZhbC52YWx1ZUxpc3QgPSBwLT5jcmVhdGVGbG9h
dGluZ1ZhbHVlTGlzdCgpOwotICAgICAgICB5eXZhbC52YWx1ZUxpc3QtPmFkZFZhbHVlKHAtPnNp
bmtGbG9hdGluZ1ZhbHVlKHl5dnNwWzBdLnZhbHVlKSk7CisgICAgICAgICh5eXZhbC52YWx1ZUxp
c3QpID0gcC0+Y3JlYXRlRmxvYXRpbmdWYWx1ZUxpc3QoKTsKKyAgICAgICAgKHl5dmFsLnZhbHVl
TGlzdCktPmFkZFZhbHVlKHAtPnNpbmtGbG9hdGluZ1ZhbHVlKCh5eXZzcFsoMSkgLSAoMSldLnZh
bHVlKSkpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKQEAgLTIzODksMjYgKzI3MjEsMjYgQEAKICNs
aW5lIDcxOCAiV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55IgogICAgIHsKICAgICAgICAgQ1NTUGFy
c2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKLSAgICAgICAgeXl2YWwu
dmFsdWVMaXN0ID0geXl2c3BbLTRdLnZhbHVlTGlzdDsKLSAgICAgICAgaWYgKHl5dmFsLnZhbHVl
TGlzdCkKLSAgICAgICAgICAgIHl5dmFsLnZhbHVlTGlzdC0+YWRkVmFsdWUocC0+c2lua0Zsb2F0
aW5nVmFsdWUoeXl2c3BbMF0udmFsdWUpKTsKKyAgICAgICAgKHl5dmFsLnZhbHVlTGlzdCkgPSAo
eXl2c3BbKDEpIC0gKDUpXS52YWx1ZUxpc3QpOworICAgICAgICBpZiAoKHl5dmFsLnZhbHVlTGlz
dCkpCisgICAgICAgICAgICAoeXl2YWwudmFsdWVMaXN0KS0+YWRkVmFsdWUocC0+c2lua0Zsb2F0
aW5nVmFsdWUoKHl5dnNwWyg1KSAtICg1KV0udmFsdWUpKSk7CiAgICAgO30KICAgICBicmVhazsK
IAogICBjYXNlIDEyNDoKICNsaW5lIDcyNyAiV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55IgotICAg
IHsgeXl2YWwudmFsdWUuaWQgPSAwOyB5eXZhbC52YWx1ZS5pc0ludCA9IGZhbHNlOyB5eXZhbC52
YWx1ZS5mVmFsdWUgPSB5eXZzcFswXS5udW1iZXI7IHl5dmFsLnZhbHVlLnVuaXQgPSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX05VTUJFUjsgO30KKyAgICB7ICh5eXZhbC52YWx1ZSkuaWQgPSAwOyAo
eXl2YWwudmFsdWUpLmlzSW50ID0gZmFsc2U7ICh5eXZhbC52YWx1ZSkuZlZhbHVlID0gKHl5dnNw
WygxKSAtICgxKV0ubnVtYmVyKTsgKHl5dmFsLnZhbHVlKS51bml0ID0gQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19OVU1CRVI7IDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMjU6CiAjbGluZSA3Mjgg
IldlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSIKICAgICB7Ci0gICAgICAgIHl5dmFsLnZhbHVlLmlk
ID0gMDsgeXl2YWwudmFsdWUuaXNJbnQgPSBmYWxzZTsgeXl2YWwudmFsdWUudW5pdCA9IENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSOwotICAgICAgICBDU1NQYXJzZXJTdHJpbmcmIHN0ciA9
IHl5dnNwWzBdLnN0cmluZzsKKyAgICAgICAgKHl5dmFsLnZhbHVlKS5pZCA9IDA7ICh5eXZhbC52
YWx1ZSkuaXNJbnQgPSBmYWxzZTsgKHl5dmFsLnZhbHVlKS51bml0ID0gQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19OVU1CRVI7CisgICAgICAgIENTU1BhcnNlclN0cmluZyYgc3RyID0gKHl5dnNwWygx
KSAtICgxKV0uc3RyaW5nKTsKICAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHN0YXRpY19j
YXN0PGNvbnN0IFN0cmluZyY+KHN0ciksICJmcm9tIikpCi0gICAgICAgICAgICB5eXZhbC52YWx1
ZS5mVmFsdWUgPSAwOworICAgICAgICAgICAgKHl5dmFsLnZhbHVlKS5mVmFsdWUgPSAwOwogICAg
ICAgICBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShzdGF0aWNfY2FzdDxjb25zdCBTdHJpbmcm
PihzdHIpLCAidG8iKSkKLSAgICAgICAgICAgIHl5dmFsLnZhbHVlLmZWYWx1ZSA9IDEwMDsKKyAg
ICAgICAgICAgICh5eXZhbC52YWx1ZSkuZlZhbHVlID0gMTAwOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBZWUVSUk9SOwogICAgIDt9CkBAIC0yNDE3LDEzMCArMjc0OSwxMzAgQEAKICAgY2Fz
ZSAxMjY6CiAjbGluZSA3NTIgIldlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSIKICAgICB7Ci0gICAg
ICB5eXZhbC5ydWxlID0gMDsKKyAgICAgICh5eXZhbC5ydWxlKSA9IDA7CiAgICAgO30KICAgICBi
cmVhazsKIAogICBjYXNlIDEyNzoKICNsaW5lIDc1NSAiV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55
IgogICAgIHsKLSAgICAgIHl5dmFsLnJ1bGUgPSAwOworICAgICAgKHl5dmFsLnJ1bGUpID0gMDsK
ICAgICA7fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTI4OgogI2xpbmUgNzYyICJXZWJDb3JlL2Nz
cy9DU1NHcmFtbWFyLnkiCiAgICAgewotICAgICAgICB5eXZhbC5ydWxlID0gc3RhdGljX2Nhc3Q8
Q1NTUGFyc2VyKj4ocGFyc2VyKS0+Y3JlYXRlRm9udEZhY2VSdWxlKCk7CisgICAgICAgICh5eXZh
bC5ydWxlKSA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlciktPmNyZWF0ZUZvbnRGYWNl
UnVsZSgpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMjk6CiAjbGluZSA3NjUgIldl
YkNvcmUvY3NzL0NTU0dyYW1tYXIueSIKICAgICB7Ci0gICAgICB5eXZhbC5ydWxlID0gMDsKKyAg
ICAgICh5eXZhbC5ydWxlKSA9IDA7CiAgICAgO30KICAgICBicmVhazsKIAogICBjYXNlIDEzMDoK
ICNsaW5lIDc2OCAiV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55IgogICAgIHsKLSAgICAgIHl5dmFs
LnJ1bGUgPSAwOworICAgICAgKHl5dmFsLnJ1bGUpID0gMDsKICAgICA7fQogICAgIGJyZWFrOwog
CiAgIGNhc2UgMTMxOgogI2xpbmUgNzc0ICJXZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkiCi0gICAg
eyB5eXZhbC5yZWxhdGlvbiA9IENTU1NlbGVjdG9yOjpEaXJlY3RBZGphY2VudDsgO30KKyAgICB7
ICh5eXZhbC5yZWxhdGlvbikgPSBDU1NTZWxlY3Rvcjo6RGlyZWN0QWRqYWNlbnQ7IDt9CiAgICAg
YnJlYWs7CiAKICAgY2FzZSAxMzI6CiAjbGluZSA3NzUgIldlYkNvcmUvY3NzL0NTU0dyYW1tYXIu
eSIKLSAgICB7IHl5dmFsLnJlbGF0aW9uID0gQ1NTU2VsZWN0b3I6OkluZGlyZWN0QWRqYWNlbnQ7
IDt9CisgICAgeyAoeXl2YWwucmVsYXRpb24pID0gQ1NTU2VsZWN0b3I6OkluZGlyZWN0QWRqYWNl
bnQ7IDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMzM6CiAjbGluZSA3NzYgIldlYkNvcmUvY3Nz
L0NTU0dyYW1tYXIueSIKLSAgICB7IHl5dmFsLnJlbGF0aW9uID0gQ1NTU2VsZWN0b3I6OkNoaWxk
OyA7fQorICAgIHsgKHl5dmFsLnJlbGF0aW9uKSA9IENTU1NlbGVjdG9yOjpDaGlsZDsgO30KICAg
ICBicmVhazsKIAogICBjYXNlIDEzNDoKICNsaW5lIDc4MCAiV2ViQ29yZS9jc3MvQ1NTR3JhbW1h
ci55IgotICAgIHsgeXl2YWwuaW50ZWdlciA9IC0xOyA7fQorICAgIHsgKHl5dmFsLmludGVnZXIp
ID0gLTE7IDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMzU6CiAjbGluZSA3ODEgIldlYkNvcmUv
Y3NzL0NTU0dyYW1tYXIueSIKLSAgICB7IHl5dmFsLmludGVnZXIgPSAxOyA7fQorICAgIHsgKHl5
dmFsLmludGVnZXIpID0gMTsgO30KICAgICBicmVhazsKIAogICBjYXNlIDEzNjoKICNsaW5lIDc4
NSAiV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55IgogICAgIHsKLSAgICAgICAgeXl2YWwucnVsZSA9
IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlciktPmNyZWF0ZVN0eWxlUnVsZSh5eXZzcFst
NF0uc2VsZWN0b3IpOworICAgICAgICAoeXl2YWwucnVsZSkgPSBzdGF0aWNfY2FzdDxDU1NQYXJz
ZXIqPihwYXJzZXIpLT5jcmVhdGVTdHlsZVJ1bGUoKHl5dnNwWygxKSAtICg1KV0uc2VsZWN0b3Ip
KTsKICAgICA7fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTM3OgogI2xpbmUgNzkxICJXZWJDb3Jl
L2Nzcy9DU1NHcmFtbWFyLnkiCiAgICAgewotICAgICAgICB5eXZhbC5zZWxlY3RvciA9IHl5dnNw
WzBdLnNlbGVjdG9yOworICAgICAgICAoeXl2YWwuc2VsZWN0b3IpID0gKHl5dnNwWygxKSAtICgx
KV0uc2VsZWN0b3IpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxMzg6CiAjbGluZSA3
OTQgIldlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSIKICAgICB7Ci0gICAgICAgIGlmICh5eXZzcFst
M10uc2VsZWN0b3IgJiYgeXl2c3BbMF0uc2VsZWN0b3IpIHsKKyAgICAgICAgaWYgKCh5eXZzcFso
MSkgLSAoNCldLnNlbGVjdG9yKSAmJiAoeXl2c3BbKDQpIC0gKDQpXS5zZWxlY3RvcikpIHsKICAg
ICAgICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7
Ci0gICAgICAgICAgICB5eXZhbC5zZWxlY3RvciA9IHl5dnNwWy0zXS5zZWxlY3RvcjsKLSAgICAg
ICAgICAgIHl5dmFsLnNlbGVjdG9yLT5hcHBlbmQocC0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoeXl2
c3BbMF0uc2VsZWN0b3IpKTsKKyAgICAgICAgICAgICh5eXZhbC5zZWxlY3RvcikgPSAoeXl2c3Bb
KDEpIC0gKDQpXS5zZWxlY3Rvcik7CisgICAgICAgICAgICAoeXl2YWwuc2VsZWN0b3IpLT5hcHBl
bmQocC0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoKHl5dnNwWyg0KSAtICg0KV0uc2VsZWN0b3IpKSk7
CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgeXl2YWwuc2VsZWN0b3IgPSAwOworICAgICAg
ICAgICAgKHl5dmFsLnNlbGVjdG9yKSA9IDA7CiAgICAgO30KICAgICBicmVhazsKIAogICBjYXNl
IDEzOToKICNsaW5lIDgwMiAiV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55IgogICAgIHsKLSAgICAg
ICAgeXl2YWwuc2VsZWN0b3IgPSAwOworICAgICAgICAoeXl2YWwuc2VsZWN0b3IpID0gMDsKICAg
ICA7fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTQwOgogI2xpbmUgODA4ICJXZWJDb3JlL2Nzcy9D
U1NHcmFtbWFyLnkiCiAgICAgewotICAgICAgICB5eXZhbC5zZWxlY3RvciA9IHl5dnNwWy0xXS5z
ZWxlY3RvcjsKKyAgICAgICAgKHl5dmFsLnNlbGVjdG9yKSA9ICh5eXZzcFsoMSkgLSAoMildLnNl
bGVjdG9yKTsKICAgICA7fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTQxOgogI2xpbmUgODE0ICJX
ZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkiCiAgICAgewotICAgICAgICB5eXZhbC5zZWxlY3RvciA9
IHl5dnNwWzBdLnNlbGVjdG9yOworICAgICAgICAoeXl2YWwuc2VsZWN0b3IpID0gKHl5dnNwWygx
KSAtICgxKV0uc2VsZWN0b3IpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNDI6CiAj
bGluZSA4MTggIldlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSIKICAgICB7Ci0gICAgICAgIHl5dmFs
LnNlbGVjdG9yID0geXl2c3BbMF0uc2VsZWN0b3I7CisgICAgICAgICh5eXZhbC5zZWxlY3Rvcikg
PSAoeXl2c3BbKDEpIC0gKDEpXS5zZWxlY3Rvcik7CiAgICAgO30KICAgICBicmVhazsKIAogICBj
YXNlIDE0MzoKICNsaW5lIDgyMiAiV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55IgogICAgIHsKLSAg
ICAgICAgeXl2YWwuc2VsZWN0b3IgPSB5eXZzcFswXS5zZWxlY3RvcjsKLSAgICAgICAgaWYgKCF5
eXZzcFstMV0uc2VsZWN0b3IpCi0gICAgICAgICAgICB5eXZhbC5zZWxlY3RvciA9IDA7Ci0gICAg
ICAgIGVsc2UgaWYgKHl5dmFsLnNlbGVjdG9yKSB7CisgICAgICAgICh5eXZhbC5zZWxlY3Rvcikg
PSAoeXl2c3BbKDIpIC0gKDIpXS5zZWxlY3Rvcik7CisgICAgICAgIGlmICghKHl5dnNwWygxKSAt
ICgyKV0uc2VsZWN0b3IpKQorICAgICAgICAgICAgKHl5dmFsLnNlbGVjdG9yKSA9IDA7CisgICAg
ICAgIGVsc2UgaWYgKCh5eXZhbC5zZWxlY3RvcikpIHsKICAgICAgICAgICAgIENTU1BhcnNlciog
cCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7Ci0gICAgICAgICAgICBDU1NTZWxl
Y3RvciogZW5kID0geXl2YWwuc2VsZWN0b3I7CisgICAgICAgICAgICBDU1NTZWxlY3RvciogZW5k
ID0gKHl5dmFsLnNlbGVjdG9yKTsKICAgICAgICAgICAgIHdoaWxlIChlbmQtPm1fdGFnSGlzdG9y
eSkKICAgICAgICAgICAgICAgICBlbmQgPSBlbmQtPm1fdGFnSGlzdG9yeTsKICAgICAgICAgICAg
IGVuZC0+bV9yZWxhdGlvbiA9IENTU1NlbGVjdG9yOjpEZXNjZW5kYW50OwotICAgICAgICAgICAg
ZW5kLT5tX3RhZ0hpc3RvcnkgPSBwLT5zaW5rRmxvYXRpbmdTZWxlY3Rvcih5eXZzcFstMV0uc2Vs
ZWN0b3IpOworICAgICAgICAgICAgZW5kLT5tX3RhZ0hpc3RvcnkgPSBwLT5zaW5rRmxvYXRpbmdT
ZWxlY3RvcigoeXl2c3BbKDEpIC0gKDIpXS5zZWxlY3RvcikpOwogICAgICAgICAgICAgaWYgKERv
Y3VtZW50KiBkb2MgPSBwLT5kb2N1bWVudCgpKQogICAgICAgICAgICAgICAgIGRvYy0+c2V0VXNl
c0Rlc2NlbmRhbnRSdWxlcyh0cnVlKTsKICAgICAgICAgfQpAQCAtMjU1MCwyMCArMjg4MiwyMCBA
QAogICBjYXNlIDE0NDoKICNsaW5lIDgzNyAiV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55IgogICAg
IHsKLSAgICAgICAgeXl2YWwuc2VsZWN0b3IgPSB5eXZzcFswXS5zZWxlY3RvcjsKLSAgICAgICAg
aWYgKCF5eXZzcFstMl0uc2VsZWN0b3IpCi0gICAgICAgICAgICB5eXZhbC5zZWxlY3RvciA9IDA7
Ci0gICAgICAgIGVsc2UgaWYgKHl5dmFsLnNlbGVjdG9yKSB7CisgICAgICAgICh5eXZhbC5zZWxl
Y3RvcikgPSAoeXl2c3BbKDMpIC0gKDMpXS5zZWxlY3Rvcik7CisgICAgICAgIGlmICghKHl5dnNw
WygxKSAtICgzKV0uc2VsZWN0b3IpKQorICAgICAgICAgICAgKHl5dmFsLnNlbGVjdG9yKSA9IDA7
CisgICAgICAgIGVsc2UgaWYgKCh5eXZhbC5zZWxlY3RvcikpIHsKICAgICAgICAgICAgIENTU1Bh
cnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7Ci0gICAgICAgICAgICBD
U1NTZWxlY3RvciogZW5kID0geXl2YWwuc2VsZWN0b3I7CisgICAgICAgICAgICBDU1NTZWxlY3Rv
ciogZW5kID0gKHl5dmFsLnNlbGVjdG9yKTsKICAgICAgICAgICAgIHdoaWxlIChlbmQtPm1fdGFn
SGlzdG9yeSkKICAgICAgICAgICAgICAgICBlbmQgPSBlbmQtPm1fdGFnSGlzdG9yeTsKLSAgICAg
ICAgICAgIGVuZC0+bV9yZWxhdGlvbiA9IHl5dnNwWy0xXS5yZWxhdGlvbjsKLSAgICAgICAgICAg
IGVuZC0+bV90YWdIaXN0b3J5ID0gcC0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoeXl2c3BbLTJdLnNl
bGVjdG9yKTsKLSAgICAgICAgICAgIGlmICh5eXZzcFstMV0ucmVsYXRpb24gPT0gQ1NTU2VsZWN0
b3I6OkNoaWxkKSB7CisgICAgICAgICAgICBlbmQtPm1fcmVsYXRpb24gPSAoeXl2c3BbKDIpIC0g
KDMpXS5yZWxhdGlvbik7CisgICAgICAgICAgICBlbmQtPm1fdGFnSGlzdG9yeSA9IHAtPnNpbmtG
bG9hdGluZ1NlbGVjdG9yKCh5eXZzcFsoMSkgLSAoMyldLnNlbGVjdG9yKSk7CisgICAgICAgICAg
ICBpZiAoKHl5dnNwWygyKSAtICgzKV0ucmVsYXRpb24pID09IENTU1NlbGVjdG9yOjpDaGlsZCkg
ewogICAgICAgICAgICAgICAgIGlmIChEb2N1bWVudCogZG9jID0gcC0+ZG9jdW1lbnQoKSkKICAg
ICAgICAgICAgICAgICAgICAgZG9jLT5zZXRVc2VzRGVzY2VuZGFudFJ1bGVzKHRydWUpOwotICAg
ICAgICAgICAgfSBlbHNlIGlmICh5eXZzcFstMV0ucmVsYXRpb24gPT0gQ1NTU2VsZWN0b3I6OkRp
cmVjdEFkamFjZW50IHx8IHl5dnNwWy0xXS5yZWxhdGlvbiA9PSBDU1NTZWxlY3Rvcjo6SW5kaXJl
Y3RBZGphY2VudCkgeworICAgICAgICAgICAgfSBlbHNlIGlmICgoeXl2c3BbKDIpIC0gKDMpXS5y
ZWxhdGlvbikgPT0gQ1NTU2VsZWN0b3I6OkRpcmVjdEFkamFjZW50IHx8ICh5eXZzcFsoMikgLSAo
MyldLnJlbGF0aW9uKSA9PSBDU1NTZWxlY3Rvcjo6SW5kaXJlY3RBZGphY2VudCkgewogICAgICAg
ICAgICAgICAgIGlmIChEb2N1bWVudCogZG9jID0gcC0+ZG9jdW1lbnQoKSkKICAgICAgICAgICAg
ICAgICAgICAgZG9jLT5zZXRVc2VzU2libGluZ1J1bGVzKHRydWUpOwogICAgICAgICAgICAgfQpA
QCAtMjU3NCw0MSArMjkwNiw0MSBAQAogICBjYXNlIDE0NToKICNsaW5lIDg1NyAiV2ViQ29yZS9j
c3MvQ1NTR3JhbW1hci55IgogICAgIHsKLSAgICAgICAgeXl2YWwuc2VsZWN0b3IgPSAwOworICAg
ICAgICAoeXl2YWwuc2VsZWN0b3IpID0gMDsKICAgICA7fQogICAgIGJyZWFrOwogCiAgIGNhc2Ug
MTQ2OgogI2xpbmUgODYzICJXZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkiCi0gICAgeyB5eXZhbC5z
dHJpbmcuY2hhcmFjdGVycyA9IDA7IHl5dmFsLnN0cmluZy5sZW5ndGggPSAwOyA7fQorICAgIHsg
KHl5dmFsLnN0cmluZykuY2hhcmFjdGVycyA9IDA7ICh5eXZhbC5zdHJpbmcpLmxlbmd0aCA9IDA7
IDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNDc6CiAjbGluZSA4NjQgIldlYkNvcmUvY3NzL0NT
U0dyYW1tYXIueSIKLSAgICB7IHN0YXRpYyBVQ2hhciBzdGFyID0gJyonOyB5eXZhbC5zdHJpbmcu
Y2hhcmFjdGVycyA9ICZzdGFyOyB5eXZhbC5zdHJpbmcubGVuZ3RoID0gMTsgO30KKyAgICB7IHN0
YXRpYyBVQ2hhciBzdGFyID0gJyonOyAoeXl2YWwuc3RyaW5nKS5jaGFyYWN0ZXJzID0gJnN0YXI7
ICh5eXZhbC5zdHJpbmcpLmxlbmd0aCA9IDE7IDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNDg6
CiAjbGluZSA4NjUgIldlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSIKLSAgICB7IHl5dmFsLnN0cmlu
ZyA9IHl5dnNwWy0xXS5zdHJpbmc7IDt9CisgICAgeyAoeXl2YWwuc3RyaW5nKSA9ICh5eXZzcFso
MSkgLSAoMildLnN0cmluZyk7IDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNDk6CiAjbGluZSA4
NjkgIldlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSIKICAgICB7CiAgICAgICAgIENTU1BhcnNlciog
cCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7Ci0gICAgICAgIHl5dmFsLnNlbGVj
dG9yID0gcC0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwotICAgICAgICB5eXZhbC5zZWxlY3Rv
ci0+bV90YWcgPSBRdWFsaWZpZWROYW1lKG51bGxBdG9tLCB5eXZzcFswXS5zdHJpbmcsIHAtPm1f
ZGVmYXVsdE5hbWVzcGFjZSk7CisgICAgICAgICh5eXZhbC5zZWxlY3RvcikgPSBwLT5jcmVhdGVG
bG9hdGluZ1NlbGVjdG9yKCk7CisgICAgICAgICh5eXZhbC5zZWxlY3RvciktPm1fdGFnID0gUXVh
bGlmaWVkTmFtZShudWxsQXRvbSwgKHl5dnNwWygxKSAtICgxKV0uc3RyaW5nKSwgcC0+bV9kZWZh
dWx0TmFtZXNwYWNlKTsKICAgICA7fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTUwOgogI2xpbmUg
ODc0ICJXZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkiCiAgICAgewotICAgICAgICB5eXZhbC5zZWxl
Y3RvciA9IHl5dnNwWzBdLnNlbGVjdG9yOwotICAgICAgICBpZiAoeXl2YWwuc2VsZWN0b3IpIHsK
KyAgICAgICAgKHl5dmFsLnNlbGVjdG9yKSA9ICh5eXZzcFsoMikgLSAoMildLnNlbGVjdG9yKTsK
KyAgICAgICAgaWYgKCh5eXZhbC5zZWxlY3RvcikpIHsKICAgICAgICAgICAgIENTU1BhcnNlciog
cCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7Ci0gICAgICAgICAgICB5eXZhbC5z
ZWxlY3Rvci0+bV90YWcgPSBRdWFsaWZpZWROYW1lKG51bGxBdG9tLCB5eXZzcFstMV0uc3RyaW5n
LCBwLT5tX2RlZmF1bHROYW1lc3BhY2UpOworICAgICAgICAgICAgKHl5dmFsLnNlbGVjdG9yKS0+
bV90YWcgPSBRdWFsaWZpZWROYW1lKG51bGxBdG9tLCAoeXl2c3BbKDEpIC0gKDIpXS5zdHJpbmcp
LCBwLT5tX2RlZmF1bHROYW1lc3BhY2UpOwogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsK
QEAgLTI2MTYsMzkgKzI5NDgsMzkgQEAKICAgY2FzZSAxNTE6CiAjbGluZSA4ODEgIldlYkNvcmUv
Y3NzL0NTU0dyYW1tYXIueSIKICAgICB7Ci0gICAgICAgIHl5dmFsLnNlbGVjdG9yID0geXl2c3Bb
MF0uc2VsZWN0b3I7CisgICAgICAgICh5eXZhbC5zZWxlY3RvcikgPSAoeXl2c3BbKDEpIC0gKDEp
XS5zZWxlY3Rvcik7CiAgICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNl
cio+KHBhcnNlcik7Ci0gICAgICAgIGlmICh5eXZhbC5zZWxlY3RvciAmJiBwLT5tX2RlZmF1bHRO
YW1lc3BhY2UgIT0gc3RhckF0b20pCi0gICAgICAgICAgICB5eXZhbC5zZWxlY3Rvci0+bV90YWcg
PSBRdWFsaWZpZWROYW1lKG51bGxBdG9tLCBzdGFyQXRvbSwgcC0+bV9kZWZhdWx0TmFtZXNwYWNl
KTsKKyAgICAgICAgaWYgKCh5eXZhbC5zZWxlY3RvcikgJiYgcC0+bV9kZWZhdWx0TmFtZXNwYWNl
ICE9IHN0YXJBdG9tKQorICAgICAgICAgICAgKHl5dmFsLnNlbGVjdG9yKS0+bV90YWcgPSBRdWFs
aWZpZWROYW1lKG51bGxBdG9tLCBzdGFyQXRvbSwgcC0+bV9kZWZhdWx0TmFtZXNwYWNlKTsKICAg
ICA7fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTUyOgogI2xpbmUgODg3ICJXZWJDb3JlL2Nzcy9D
U1NHcmFtbWFyLnkiCiAgICAgewotICAgICAgICBBdG9taWNTdHJpbmcgbmFtZXNwYWNlUHJlZml4
ID0geXl2c3BbLTFdLnN0cmluZzsKKyAgICAgICAgQXRvbWljU3RyaW5nIG5hbWVzcGFjZVByZWZp
eCA9ICh5eXZzcFsoMSkgLSAoMildLnN0cmluZyk7CiAgICAgICAgIENTU1BhcnNlciogcCA9IHN0
YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7Ci0gICAgICAgIHl5dmFsLnNlbGVjdG9yID0g
cC0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOworICAgICAgICAoeXl2YWwuc2VsZWN0b3IpID0g
cC0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwogICAgICAgICBpZiAocC0+bV9zdHlsZVNoZWV0
KQotICAgICAgICAgICAgeXl2YWwuc2VsZWN0b3ItPm1fdGFnID0gUXVhbGlmaWVkTmFtZShuYW1l
c3BhY2VQcmVmaXgsIHl5dnNwWzBdLnN0cmluZywKKyAgICAgICAgICAgICh5eXZhbC5zZWxlY3Rv
ciktPm1fdGFnID0gUXVhbGlmaWVkTmFtZShuYW1lc3BhY2VQcmVmaXgsICh5eXZzcFsoMikgLSAo
MildLnN0cmluZyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAtPm1f
c3R5bGVTaGVldC0+ZGV0ZXJtaW5lTmFtZXNwYWNlKG5hbWVzcGFjZVByZWZpeCkpOwogICAgICAg
ICBlbHNlIC8vIEZJWE1FOiBTaG91bGRuJ3QgdGhpcyBjYXNlIGJlIGFuIGVycm9yPwotICAgICAg
ICAgICAgeXl2YWwuc2VsZWN0b3ItPm1fdGFnID0gUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgeXl2
c3BbMF0uc3RyaW5nLCBwLT5tX2RlZmF1bHROYW1lc3BhY2UpOworICAgICAgICAgICAgKHl5dmFs
LnNlbGVjdG9yKS0+bV90YWcgPSBRdWFsaWZpZWROYW1lKG51bGxBdG9tLCAoeXl2c3BbKDIpIC0g
KDIpXS5zdHJpbmcpLCBwLT5tX2RlZmF1bHROYW1lc3BhY2UpOwogICAgIDt9CiAgICAgYnJlYWs7
CiAKICAgY2FzZSAxNTM6CiAjbGluZSA4OTcgIldlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSIKICAg
ICB7Ci0gICAgICAgIHl5dmFsLnNlbGVjdG9yID0geXl2c3BbMF0uc2VsZWN0b3I7Ci0gICAgICAg
IGlmICh5eXZhbC5zZWxlY3RvcikgewotICAgICAgICAgICAgQXRvbWljU3RyaW5nIG5hbWVzcGFj
ZVByZWZpeCA9IHl5dnNwWy0yXS5zdHJpbmc7CisgICAgICAgICh5eXZhbC5zZWxlY3RvcikgPSAo
eXl2c3BbKDMpIC0gKDMpXS5zZWxlY3Rvcik7CisgICAgICAgIGlmICgoeXl2YWwuc2VsZWN0b3Ip
KSB7CisgICAgICAgICAgICBBdG9taWNTdHJpbmcgbmFtZXNwYWNlUHJlZml4ID0gKHl5dnNwWygx
KSAtICgzKV0uc3RyaW5nKTsKICAgICAgICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0
PENTU1BhcnNlcio+KHBhcnNlcik7CiAgICAgICAgICAgICBpZiAocC0+bV9zdHlsZVNoZWV0KQot
ICAgICAgICAgICAgICAgIHl5dmFsLnNlbGVjdG9yLT5tX3RhZyA9IFF1YWxpZmllZE5hbWUobmFt
ZXNwYWNlUHJlZml4LCB5eXZzcFstMV0uc3RyaW5nLAorICAgICAgICAgICAgICAgICh5eXZhbC5z
ZWxlY3RvciktPm1fdGFnID0gUXVhbGlmaWVkTmFtZShuYW1lc3BhY2VQcmVmaXgsICh5eXZzcFso
MikgLSAoMyldLnN0cmluZyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwLT5tX3N0eWxlU2hlZXQtPmRldGVybWluZU5hbWVzcGFjZShuYW1lc3BhY2VQcmVmaXgp
KTsKICAgICAgICAgICAgIGVsc2UgLy8gRklYTUU6IFNob3VsZG4ndCB0aGlzIGNhc2UgYmUgYW4g
ZXJyb3I/Ci0gICAgICAgICAgICAgICAgeXl2YWwuc2VsZWN0b3ItPm1fdGFnID0gUXVhbGlmaWVk
TmFtZShudWxsQXRvbSwgeXl2c3BbLTFdLnN0cmluZywgcC0+bV9kZWZhdWx0TmFtZXNwYWNlKTsK
KyAgICAgICAgICAgICAgICAoeXl2YWwuc2VsZWN0b3IpLT5tX3RhZyA9IFF1YWxpZmllZE5hbWUo
bnVsbEF0b20sICh5eXZzcFsoMikgLSAoMyldLnN0cmluZyksIHAtPm1fZGVmYXVsdE5hbWVzcGFj
ZSk7CiAgICAgICAgIH0KICAgICA7fQogICAgIGJyZWFrOwpAQCAtMjY1NiwxMiArMjk4OCwxMiBA
QAogICBjYXNlIDE1NDoKICNsaW5lIDkwOSAiV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55IgogICAg
IHsKLSAgICAgICAgeXl2YWwuc2VsZWN0b3IgPSB5eXZzcFswXS5zZWxlY3RvcjsKLSAgICAgICAg
aWYgKHl5dmFsLnNlbGVjdG9yKSB7Ci0gICAgICAgICAgICBBdG9taWNTdHJpbmcgbmFtZXNwYWNl
UHJlZml4ID0geXl2c3BbLTFdLnN0cmluZzsKKyAgICAgICAgKHl5dmFsLnNlbGVjdG9yKSA9ICh5
eXZzcFsoMikgLSAoMildLnNlbGVjdG9yKTsKKyAgICAgICAgaWYgKCh5eXZhbC5zZWxlY3Rvcikp
IHsKKyAgICAgICAgICAgIEF0b21pY1N0cmluZyBuYW1lc3BhY2VQcmVmaXggPSAoeXl2c3BbKDEp
IC0gKDIpXS5zdHJpbmcpOwogICAgICAgICAgICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8
Q1NTUGFyc2VyKj4ocGFyc2VyKTsKICAgICAgICAgICAgIGlmIChwLT5tX3N0eWxlU2hlZXQpCi0g
ICAgICAgICAgICAgICAgeXl2YWwuc2VsZWN0b3ItPm1fdGFnID0gUXVhbGlmaWVkTmFtZShuYW1l
c3BhY2VQcmVmaXgsIHN0YXJBdG9tLAorICAgICAgICAgICAgICAgICh5eXZhbC5zZWxlY3Rvcikt
Pm1fdGFnID0gUXVhbGlmaWVkTmFtZShuYW1lc3BhY2VQcmVmaXgsIHN0YXJBdG9tLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcC0+bV9zdHlsZVNoZWV0LT5kZXRl
cm1pbmVOYW1lc3BhY2UobmFtZXNwYWNlUHJlZml4KSk7CiAgICAgICAgIH0KICAgICA7fQpAQCAt
MjY3MCwxMiArMzAwMiwxMiBAQAogICBjYXNlIDE1NToKICNsaW5lIDkyMiAiV2ViQ29yZS9jc3Mv
Q1NTR3JhbW1hci55IgogICAgIHsKLSAgICAgICAgQ1NTUGFyc2VyU3RyaW5nJiBzdHIgPSB5eXZz
cFswXS5zdHJpbmc7CisgICAgICAgIENTU1BhcnNlclN0cmluZyYgc3RyID0gKHl5dnNwWygxKSAt
ICgxKV0uc3RyaW5nKTsKICAgICAgICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFy
c2VyKj4ocGFyc2VyKTsKICAgICAgICAgRG9jdW1lbnQqIGRvYyA9IHAtPmRvY3VtZW50KCk7CiAg
ICAgICAgIGlmIChkb2MgJiYgZG9jLT5pc0hUTUxEb2N1bWVudCgpKQogICAgICAgICAgICAgc3Ry
Lmxvd2VyKCk7Ci0gICAgICAgIHl5dmFsLnN0cmluZyA9IHN0cjsKKyAgICAgICAgKHl5dmFsLnN0
cmluZykgPSBzdHI7CiAgICAgO30KICAgICBicmVhazsKIApAQCAtMjY4MywzMSArMzAxNSwzMSBA
QAogI2xpbmUgOTMwICJXZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkiCiAgICAgewogICAgICAgICBz
dGF0aWMgVUNoYXIgc3RhciA9ICcqJzsKLSAgICAgICAgeXl2YWwuc3RyaW5nLmNoYXJhY3RlcnMg
PSAmc3RhcjsKLSAgICAgICAgeXl2YWwuc3RyaW5nLmxlbmd0aCA9IDE7CisgICAgICAgICh5eXZh
bC5zdHJpbmcpLmNoYXJhY3RlcnMgPSAmc3RhcjsKKyAgICAgICAgKHl5dmFsLnN0cmluZykubGVu
Z3RoID0gMTsKICAgICA7fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTU3OgogI2xpbmUgOTM4ICJX
ZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkiCiAgICAgewotICAgICAgICB5eXZhbC5zZWxlY3RvciA9
IHl5dnNwWzBdLnNlbGVjdG9yOworICAgICAgICAoeXl2YWwuc2VsZWN0b3IpID0gKHl5dnNwWygx
KSAtICgxKV0uc2VsZWN0b3IpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNTg6CiAj
bGluZSA5NDEgIldlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSIKICAgICB7Ci0gICAgICAgIGlmICgh
eXl2c3BbMF0uc2VsZWN0b3IpCi0gICAgICAgICAgICB5eXZhbC5zZWxlY3RvciA9IDA7Ci0gICAg
ICAgIGVsc2UgaWYgKHl5dnNwWy0xXS5zZWxlY3RvcikgewotICAgICAgICAgICAgeXl2YWwuc2Vs
ZWN0b3IgPSB5eXZzcFstMV0uc2VsZWN0b3I7CisgICAgICAgIGlmICghKHl5dnNwWygyKSAtICgy
KV0uc2VsZWN0b3IpKQorICAgICAgICAgICAgKHl5dmFsLnNlbGVjdG9yKSA9IDA7CisgICAgICAg
IGVsc2UgaWYgKCh5eXZzcFsoMSkgLSAoMildLnNlbGVjdG9yKSkgeworICAgICAgICAgICAgKHl5
dmFsLnNlbGVjdG9yKSA9ICh5eXZzcFsoMSkgLSAoMildLnNlbGVjdG9yKTsKICAgICAgICAgICAg
IENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7Ci0gICAgICAg
ICAgICBDU1NTZWxlY3RvciogZW5kID0geXl2c3BbLTFdLnNlbGVjdG9yOworICAgICAgICAgICAg
Q1NTU2VsZWN0b3IqIGVuZCA9ICh5eXZzcFsoMSkgLSAoMildLnNlbGVjdG9yKTsKICAgICAgICAg
ICAgIHdoaWxlIChlbmQtPm1fdGFnSGlzdG9yeSkKICAgICAgICAgICAgICAgICBlbmQgPSBlbmQt
Pm1fdGFnSGlzdG9yeTsKICAgICAgICAgICAgIGVuZC0+bV9yZWxhdGlvbiA9IENTU1NlbGVjdG9y
OjpTdWJTZWxlY3RvcjsKLSAgICAgICAgICAgIGVuZC0+bV90YWdIaXN0b3J5ID0gcC0+c2lua0Zs
b2F0aW5nU2VsZWN0b3IoeXl2c3BbMF0uc2VsZWN0b3IpOworICAgICAgICAgICAgZW5kLT5tX3Rh
Z0hpc3RvcnkgPSBwLT5zaW5rRmxvYXRpbmdTZWxlY3RvcigoeXl2c3BbKDIpIC0gKDIpXS5zZWxl
Y3RvcikpOwogICAgICAgICB9CiAgICAgO30KICAgICBicmVhazsKQEAgLTI3MTUsNyArMzA0Nyw3
IEBACiAgIGNhc2UgMTU5OgogI2xpbmUgOTU0ICJXZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkiCiAg
ICAgewotICAgICAgICB5eXZhbC5zZWxlY3RvciA9IDA7CisgICAgICAgICh5eXZhbC5zZWxlY3Rv
cikgPSAwOwogICAgIDt9CiAgICAgYnJlYWs7CiAKQEAgLTI3MjMsMjggKzMwNTUsMjggQEAKICNs
aW5lIDk2MCAiV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55IgogICAgIHsKICAgICAgICAgQ1NTUGFy
c2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKLSAgICAgICAgeXl2YWwu
c2VsZWN0b3IgPSBwLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7Ci0gICAgICAgIHl5dmFsLnNl
bGVjdG9yLT5tX21hdGNoID0gQ1NTU2VsZWN0b3I6OklkOworICAgICAgICAoeXl2YWwuc2VsZWN0
b3IpID0gcC0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOworICAgICAgICAoeXl2YWwuc2VsZWN0
b3IpLT5tX21hdGNoID0gQ1NTU2VsZWN0b3I6OklkOwogICAgICAgICBpZiAoIXAtPm1fc3RyaWN0
KQotICAgICAgICAgICAgeXl2c3BbMF0uc3RyaW5nLmxvd2VyKCk7Ci0gICAgICAgIHl5dmFsLnNl
bGVjdG9yLT5tX2F0dHIgPSBpZEF0dHI7Ci0gICAgICAgIHl5dmFsLnNlbGVjdG9yLT5tX3ZhbHVl
ID0geXl2c3BbMF0uc3RyaW5nOworICAgICAgICAgICAgKHl5dnNwWygxKSAtICgxKV0uc3RyaW5n
KS5sb3dlcigpOworICAgICAgICAoeXl2YWwuc2VsZWN0b3IpLT5tX2F0dHIgPSBpZEF0dHI7Cisg
ICAgICAgICh5eXZhbC5zZWxlY3RvciktPm1fdmFsdWUgPSAoeXl2c3BbKDEpIC0gKDEpXS5zdHJp
bmcpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNjE6CiAjbGluZSA5NjkgIldlYkNv
cmUvY3NzL0NTU0dyYW1tYXIueSIKICAgICB7Ci0gICAgICAgIGlmICh5eXZzcFswXS5zdHJpbmcu
Y2hhcmFjdGVyc1swXSA+PSAnMCcgJiYgeXl2c3BbMF0uc3RyaW5nLmNoYXJhY3RlcnNbMF0gPD0g
JzknKSB7Ci0gICAgICAgICAgICB5eXZhbC5zZWxlY3RvciA9IDA7CisgICAgICAgIGlmICgoeXl2
c3BbKDEpIC0gKDEpXS5zdHJpbmcpLmNoYXJhY3RlcnNbMF0gPj0gJzAnICYmICh5eXZzcFsoMSkg
LSAoMSldLnN0cmluZykuY2hhcmFjdGVyc1swXSA8PSAnOScpIHsKKyAgICAgICAgICAgICh5eXZh
bC5zZWxlY3RvcikgPSAwOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQ1NTUGFyc2Vy
KiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKLSAgICAgICAgICAgIHl5dmFs
LnNlbGVjdG9yID0gcC0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwotICAgICAgICAgICAgeXl2
YWwuc2VsZWN0b3ItPm1fbWF0Y2ggPSBDU1NTZWxlY3Rvcjo6SWQ7CisgICAgICAgICAgICAoeXl2
YWwuc2VsZWN0b3IpID0gcC0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOworICAgICAgICAgICAg
KHl5dmFsLnNlbGVjdG9yKS0+bV9tYXRjaCA9IENTU1NlbGVjdG9yOjpJZDsKICAgICAgICAgICAg
IGlmICghcC0+bV9zdHJpY3QpCi0gICAgICAgICAgICAgICAgeXl2c3BbMF0uc3RyaW5nLmxvd2Vy
KCk7Ci0gICAgICAgICAgICB5eXZhbC5zZWxlY3Rvci0+bV9hdHRyID0gaWRBdHRyOwotICAgICAg
ICAgICAgeXl2YWwuc2VsZWN0b3ItPm1fdmFsdWUgPSB5eXZzcFswXS5zdHJpbmc7CisgICAgICAg
ICAgICAgICAgKHl5dnNwWygxKSAtICgxKV0uc3RyaW5nKS5sb3dlcigpOworICAgICAgICAgICAg
KHl5dmFsLnNlbGVjdG9yKS0+bV9hdHRyID0gaWRBdHRyOworICAgICAgICAgICAgKHl5dmFsLnNl
bGVjdG9yKS0+bV92YWx1ZSA9ICh5eXZzcFsoMSkgLSAoMSldLnN0cmluZyk7CiAgICAgICAgIH0K
ICAgICA7fQogICAgIGJyZWFrOwpAQCAtMjc1MywxMjMgKzMwODUsMTIzIEBACiAjbGluZSA5ODgg
IldlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSIKICAgICB7CiAgICAgICAgIENTU1BhcnNlciogcCA9
IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7Ci0gICAgICAgIHl5dmFsLnNlbGVjdG9y
ID0gcC0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwotICAgICAgICB5eXZhbC5zZWxlY3Rvci0+
bV9tYXRjaCA9IENTU1NlbGVjdG9yOjpDbGFzczsKKyAgICAgICAgKHl5dmFsLnNlbGVjdG9yKSA9
IHAtPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgKHl5dmFsLnNlbGVjdG9yKS0+
bV9tYXRjaCA9IENTU1NlbGVjdG9yOjpDbGFzczsKICAgICAgICAgaWYgKCFwLT5tX3N0cmljdCkK
LSAgICAgICAgICAgIHl5dnNwWzBdLnN0cmluZy5sb3dlcigpOwotICAgICAgICB5eXZhbC5zZWxl
Y3Rvci0+bV9hdHRyID0gY2xhc3NBdHRyOwotICAgICAgICB5eXZhbC5zZWxlY3Rvci0+bV92YWx1
ZSA9IHl5dnNwWzBdLnN0cmluZzsKKyAgICAgICAgICAgICh5eXZzcFsoMikgLSAoMildLnN0cmlu
ZykubG93ZXIoKTsKKyAgICAgICAgKHl5dmFsLnNlbGVjdG9yKS0+bV9hdHRyID0gY2xhc3NBdHRy
OworICAgICAgICAoeXl2YWwuc2VsZWN0b3IpLT5tX3ZhbHVlID0gKHl5dnNwWygyKSAtICgyKV0u
c3RyaW5nKTsKICAgICA7fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTY2OgogI2xpbmUgMTAwMCAi
V2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55IgogICAgIHsKLSAgICAgICAgQ1NTUGFyc2VyU3RyaW5n
JiBzdHIgPSB5eXZzcFstMV0uc3RyaW5nOworICAgICAgICBDU1NQYXJzZXJTdHJpbmcmIHN0ciA9
ICh5eXZzcFsoMSkgLSAoMildLnN0cmluZyk7CiAgICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRp
Y19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7CiAgICAgICAgIERvY3VtZW50KiBkb2MgPSBwLT5k
b2N1bWVudCgpOwogICAgICAgICBpZiAoZG9jICYmIGRvYy0+aXNIVE1MRG9jdW1lbnQoKSkKICAg
ICAgICAgICAgIHN0ci5sb3dlcigpOwotICAgICAgICB5eXZhbC5zdHJpbmcgPSBzdHI7CisgICAg
ICAgICh5eXZhbC5zdHJpbmcpID0gc3RyOwogICAgIDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAx
Njc6CiAjbGluZSAxMDExICJXZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkiCiAgICAgewotICAgICAg
ICB5eXZhbC5zZWxlY3RvciA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlciktPmNyZWF0
ZUZsb2F0aW5nU2VsZWN0b3IoKTsKLSAgICAgICAgeXl2YWwuc2VsZWN0b3ItPm1fYXR0ciA9IFF1
YWxpZmllZE5hbWUobnVsbEF0b20sIHl5dnNwWy0xXS5zdHJpbmcsIG51bGxBdG9tKTsKLSAgICAg
ICAgeXl2YWwuc2VsZWN0b3ItPm1fbWF0Y2ggPSBDU1NTZWxlY3Rvcjo6U2V0OworICAgICAgICAo
eXl2YWwuc2VsZWN0b3IpID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKS0+Y3JlYXRl
RmxvYXRpbmdTZWxlY3RvcigpOworICAgICAgICAoeXl2YWwuc2VsZWN0b3IpLT5tX2F0dHIgPSBR
dWFsaWZpZWROYW1lKG51bGxBdG9tLCAoeXl2c3BbKDMpIC0gKDQpXS5zdHJpbmcpLCBudWxsQXRv
bSk7CisgICAgICAgICh5eXZhbC5zZWxlY3RvciktPm1fbWF0Y2ggPSBDU1NTZWxlY3Rvcjo6U2V0
OwogICAgIDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxNjg6CiAjbGluZSAxMDE2ICJXZWJDb3Jl
L2Nzcy9DU1NHcmFtbWFyLnkiCiAgICAgewotICAgICAgICB5eXZhbC5zZWxlY3RvciA9IHN0YXRp
Y19jYXN0PENTU1BhcnNlcio+KHBhcnNlciktPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKLSAg
ICAgICAgeXl2YWwuc2VsZWN0b3ItPm1fYXR0ciA9IFF1YWxpZmllZE5hbWUobnVsbEF0b20sIHl5
dnNwWy01XS5zdHJpbmcsIG51bGxBdG9tKTsKLSAgICAgICAgeXl2YWwuc2VsZWN0b3ItPm1fbWF0
Y2ggPSAoQ1NTU2VsZWN0b3I6Ok1hdGNoKXl5dnNwWy00XS5pbnRlZ2VyOwotICAgICAgICB5eXZh
bC5zZWxlY3Rvci0+bV92YWx1ZSA9IHl5dnNwWy0yXS5zdHJpbmc7CisgICAgICAgICh5eXZhbC5z
ZWxlY3RvcikgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpLT5jcmVhdGVGbG9hdGlu
Z1NlbGVjdG9yKCk7CisgICAgICAgICh5eXZhbC5zZWxlY3RvciktPm1fYXR0ciA9IFF1YWxpZmll
ZE5hbWUobnVsbEF0b20sICh5eXZzcFsoMykgLSAoOCldLnN0cmluZyksIG51bGxBdG9tKTsKKyAg
ICAgICAgKHl5dmFsLnNlbGVjdG9yKS0+bV9tYXRjaCA9IChDU1NTZWxlY3Rvcjo6TWF0Y2gpKHl5
dnNwWyg0KSAtICg4KV0uaW50ZWdlcik7CisgICAgICAgICh5eXZhbC5zZWxlY3RvciktPm1fdmFs
dWUgPSAoeXl2c3BbKDYpIC0gKDgpXS5zdHJpbmcpOwogICAgIDt9CiAgICAgYnJlYWs7CiAKICAg
Y2FzZSAxNjk6CiAjbGluZSAxMDIyICJXZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkiCiAgICAgewot
ICAgICAgICBBdG9taWNTdHJpbmcgbmFtZXNwYWNlUHJlZml4ID0geXl2c3BbLTJdLnN0cmluZzsK
KyAgICAgICAgQXRvbWljU3RyaW5nIG5hbWVzcGFjZVByZWZpeCA9ICh5eXZzcFsoMykgLSAoNSld
LnN0cmluZyk7CiAgICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+
KHBhcnNlcik7Ci0gICAgICAgIHl5dmFsLnNlbGVjdG9yID0gcC0+Y3JlYXRlRmxvYXRpbmdTZWxl
Y3RvcigpOwotICAgICAgICB5eXZhbC5zZWxlY3Rvci0+bV9hdHRyID0gUXVhbGlmaWVkTmFtZShu
YW1lc3BhY2VQcmVmaXgsIHl5dnNwWy0xXS5zdHJpbmcsCisgICAgICAgICh5eXZhbC5zZWxlY3Rv
cikgPSBwLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CisgICAgICAgICh5eXZhbC5zZWxlY3Rv
ciktPm1fYXR0ciA9IFF1YWxpZmllZE5hbWUobmFtZXNwYWNlUHJlZml4LCAoeXl2c3BbKDQpIC0g
KDUpXS5zdHJpbmcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLT5tX3N0
eWxlU2hlZXQtPmRldGVybWluZU5hbWVzcGFjZShuYW1lc3BhY2VQcmVmaXgpKTsKLSAgICAgICAg
eXl2YWwuc2VsZWN0b3ItPm1fbWF0Y2ggPSBDU1NTZWxlY3Rvcjo6U2V0OworICAgICAgICAoeXl2
YWwuc2VsZWN0b3IpLT5tX21hdGNoID0gQ1NTU2VsZWN0b3I6OlNldDsKICAgICA7fQogICAgIGJy
ZWFrOwogCiAgIGNhc2UgMTcwOgogI2xpbmUgMTAzMCAiV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55
IgogICAgIHsKLSAgICAgICAgQXRvbWljU3RyaW5nIG5hbWVzcGFjZVByZWZpeCA9IHl5dnNwWy02
XS5zdHJpbmc7CisgICAgICAgIEF0b21pY1N0cmluZyBuYW1lc3BhY2VQcmVmaXggPSAoeXl2c3Bb
KDMpIC0gKDkpXS5zdHJpbmcpOwogICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxD
U1NQYXJzZXIqPihwYXJzZXIpOwotICAgICAgICB5eXZhbC5zZWxlY3RvciA9IHAtPmNyZWF0ZUZs
b2F0aW5nU2VsZWN0b3IoKTsKLSAgICAgICAgeXl2YWwuc2VsZWN0b3ItPm1fYXR0ciA9IFF1YWxp
ZmllZE5hbWUobmFtZXNwYWNlUHJlZml4LCB5eXZzcFstNV0uc3RyaW5nLAorICAgICAgICAoeXl2
YWwuc2VsZWN0b3IpID0gcC0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOworICAgICAgICAoeXl2
YWwuc2VsZWN0b3IpLT5tX2F0dHIgPSBRdWFsaWZpZWROYW1lKG5hbWVzcGFjZVByZWZpeCwgKHl5
dnNwWyg0KSAtICg5KV0uc3RyaW5nKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcC0+bV9zdHlsZVNoZWV0LT5kZXRlcm1pbmVOYW1lc3BhY2UobmFtZXNwYWNlUHJlZml4KSk7
Ci0gICAgICAgIHl5dmFsLnNlbGVjdG9yLT5tX21hdGNoID0gKENTU1NlbGVjdG9yOjpNYXRjaCl5
eXZzcFstNF0uaW50ZWdlcjsKLSAgICAgICAgeXl2YWwuc2VsZWN0b3ItPm1fdmFsdWUgPSB5eXZz
cFstMl0uc3RyaW5nOworICAgICAgICAoeXl2YWwuc2VsZWN0b3IpLT5tX21hdGNoID0gKENTU1Nl
bGVjdG9yOjpNYXRjaCkoeXl2c3BbKDUpIC0gKDkpXS5pbnRlZ2VyKTsKKyAgICAgICAgKHl5dmFs
LnNlbGVjdG9yKS0+bV92YWx1ZSA9ICh5eXZzcFsoNykgLSAoOSldLnN0cmluZyk7CiAgICAgO30K
ICAgICBicmVhazsKIAogICBjYXNlIDE3MToKICNsaW5lIDEwNDIgIldlYkNvcmUvY3NzL0NTU0dy
YW1tYXIueSIKICAgICB7Ci0gICAgICAgIHl5dmFsLmludGVnZXIgPSBDU1NTZWxlY3Rvcjo6RXhh
Y3Q7CisgICAgICAgICh5eXZhbC5pbnRlZ2VyKSA9IENTU1NlbGVjdG9yOjpFeGFjdDsKICAgICA7
fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTcyOgogI2xpbmUgMTA0NSAiV2ViQ29yZS9jc3MvQ1NT
R3JhbW1hci55IgogICAgIHsKLSAgICAgICAgeXl2YWwuaW50ZWdlciA9IENTU1NlbGVjdG9yOjpM
aXN0OworICAgICAgICAoeXl2YWwuaW50ZWdlcikgPSBDU1NTZWxlY3Rvcjo6TGlzdDsKICAgICA7
fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTczOgogI2xpbmUgMTA0OCAiV2ViQ29yZS9jc3MvQ1NT
R3JhbW1hci55IgogICAgIHsKLSAgICAgICAgeXl2YWwuaW50ZWdlciA9IENTU1NlbGVjdG9yOjpI
eXBoZW47CisgICAgICAgICh5eXZhbC5pbnRlZ2VyKSA9IENTU1NlbGVjdG9yOjpIeXBoZW47CiAg
ICAgO30KICAgICBicmVhazsKIAogICBjYXNlIDE3NDoKICNsaW5lIDEwNTEgIldlYkNvcmUvY3Nz
L0NTU0dyYW1tYXIueSIKICAgICB7Ci0gICAgICAgIHl5dmFsLmludGVnZXIgPSBDU1NTZWxlY3Rv
cjo6QmVnaW47CisgICAgICAgICh5eXZhbC5pbnRlZ2VyKSA9IENTU1NlbGVjdG9yOjpCZWdpbjsK
ICAgICA7fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTc1OgogI2xpbmUgMTA1NCAiV2ViQ29yZS9j
c3MvQ1NTR3JhbW1hci55IgogICAgIHsKLSAgICAgICAgeXl2YWwuaW50ZWdlciA9IENTU1NlbGVj
dG9yOjpFbmQ7CisgICAgICAgICh5eXZhbC5pbnRlZ2VyKSA9IENTU1NlbGVjdG9yOjpFbmQ7CiAg
ICAgO30KICAgICBicmVhazsKIAogICBjYXNlIDE3NjoKICNsaW5lIDEwNTcgIldlYkNvcmUvY3Nz
L0NTU0dyYW1tYXIueSIKICAgICB7Ci0gICAgICAgIHl5dmFsLmludGVnZXIgPSBDU1NTZWxlY3Rv
cjo6Q29udGFpbjsKKyAgICAgICAgKHl5dmFsLmludGVnZXIpID0gQ1NTU2VsZWN0b3I6OkNvbnRh
aW47CiAgICAgO30KICAgICBicmVhazsKIAogICBjYXNlIDE3OToKICNsaW5lIDEwNjggIldlYkNv
cmUvY3NzL0NTU0dyYW1tYXIueSIKICAgICB7Ci0gICAgICAgIHl5dmFsLnNlbGVjdG9yID0gc3Rh
dGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKS0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwot
ICAgICAgICB5eXZhbC5zZWxlY3Rvci0+bV9tYXRjaCA9IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFz
czsKLSAgICAgICAgeXl2c3BbMF0uc3RyaW5nLmxvd2VyKCk7Ci0gICAgICAgIHl5dmFsLnNlbGVj
dG9yLT5tX3ZhbHVlID0geXl2c3BbMF0uc3RyaW5nOwotICAgICAgICBDU1NTZWxlY3Rvcjo6UHNl
dWRvVHlwZSB0eXBlID0geXl2YWwuc2VsZWN0b3ItPnBzZXVkb1R5cGUoKTsKKyAgICAgICAgKHl5
dmFsLnNlbGVjdG9yKSA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlciktPmNyZWF0ZUZs
b2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgKHl5dmFsLnNlbGVjdG9yKS0+bV9tYXRjaCA9IENT
U1NlbGVjdG9yOjpQc2V1ZG9DbGFzczsKKyAgICAgICAgKHl5dnNwWygyKSAtICgyKV0uc3RyaW5n
KS5sb3dlcigpOworICAgICAgICAoeXl2YWwuc2VsZWN0b3IpLT5tX3ZhbHVlID0gKHl5dnNwWygy
KSAtICgyKV0uc3RyaW5nKTsKKyAgICAgICAgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUgdHlwZSA9
ICh5eXZhbC5zZWxlY3RvciktPnBzZXVkb1R5cGUoKTsKICAgICAgICAgaWYgKHR5cGUgPT0gQ1NT
U2VsZWN0b3I6OlBzZXVkb1Vua25vd24pCi0gICAgICAgICAgICB5eXZhbC5zZWxlY3RvciA9IDA7
CisgICAgICAgICAgICAoeXl2YWwuc2VsZWN0b3IpID0gMDsKICAgICAgICAgZWxzZSBpZiAodHlw
ZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvRW1wdHkgfHwKICAgICAgICAgICAgICAgICAgdHlwZSA9
PSBDU1NTZWxlY3Rvcjo6UHNldWRvRmlyc3RDaGlsZCB8fAogICAgICAgICAgICAgICAgICB0eXBl
ID09IENTU1NlbGVjdG9yOjpQc2V1ZG9GaXJzdE9mVHlwZSB8fApAQCAtMjg5MiwxMyArMzIyNCwx
MyBAQAogICBjYXNlIDE4MDoKICNsaW5lIDEwOTMgIldlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSIK
ICAgICB7Ci0gICAgICAgIHl5dmFsLnNlbGVjdG9yID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4o
cGFyc2VyKS0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwotICAgICAgICB5eXZhbC5zZWxlY3Rv
ci0+bV9tYXRjaCA9IENTU1NlbGVjdG9yOjpQc2V1ZG9FbGVtZW50OwotICAgICAgICB5eXZzcFsw
XS5zdHJpbmcubG93ZXIoKTsKLSAgICAgICAgeXl2YWwuc2VsZWN0b3ItPm1fdmFsdWUgPSB5eXZz
cFswXS5zdHJpbmc7Ci0gICAgICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHR5cGUgPSB5eXZh
bC5zZWxlY3Rvci0+cHNldWRvVHlwZSgpOworICAgICAgICAoeXl2YWwuc2VsZWN0b3IpID0gc3Rh
dGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKS0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwor
ICAgICAgICAoeXl2YWwuc2VsZWN0b3IpLT5tX21hdGNoID0gQ1NTU2VsZWN0b3I6OlBzZXVkb0Vs
ZW1lbnQ7CisgICAgICAgICh5eXZzcFsoMykgLSAoMyldLnN0cmluZykubG93ZXIoKTsKKyAgICAg
ICAgKHl5dmFsLnNlbGVjdG9yKS0+bV92YWx1ZSA9ICh5eXZzcFsoMykgLSAoMyldLnN0cmluZyk7
CisgICAgICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHR5cGUgPSAoeXl2YWwuc2VsZWN0b3Ip
LT5wc2V1ZG9UeXBlKCk7CiAgICAgICAgIGlmICh0eXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9V
bmtub3duKQotICAgICAgICAgICAgeXl2YWwuc2VsZWN0b3IgPSAwOworICAgICAgICAgICAgKHl5
dmFsLnNlbGVjdG9yKSA9IDA7CiAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gQ1NTU2VsZWN0b3I6
OlBzZXVkb0ZpcnN0TGluZSkgewogICAgICAgICAgICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nh
c3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKICAgICAgICAgICAgIGlmIChEb2N1bWVudCogZG9jID0g
cC0+ZG9jdW1lbnQoKSkKQEAgLTI5MTEsMTMgKzMyNDMsMTMgQEAKICNsaW5lIDExMDggIldlYkNv
cmUvY3NzL0NTU0dyYW1tYXIueSIKICAgICB7CiAgICAgICAgIENTU1BhcnNlciAqcCA9IHN0YXRp
Y19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7Ci0gICAgICAgIHl5dmFsLnNlbGVjdG9yID0gc3Rh
dGljX2Nhc3Q8Q1NTU2VsZWN0b3IqPihwLT5jcmVhdGVGbG9hdGluZ050aFNlbGVjdG9yKCkpOwot
ICAgICAgICB5eXZhbC5zZWxlY3Rvci0+bV9tYXRjaCA9IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFz
czsKLSAgICAgICAgeXl2YWwuc2VsZWN0b3ItPm1fYXJndW1lbnQgPSB5eXZzcFstMV0uc3RyaW5n
OwotICAgICAgICB5eXZhbC5zZWxlY3Rvci0+bV92YWx1ZSA9IHl5dnNwWy0yXS5zdHJpbmc7Ci0g
ICAgICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHR5cGUgPSB5eXZhbC5zZWxlY3Rvci0+cHNl
dWRvVHlwZSgpOworICAgICAgICAoeXl2YWwuc2VsZWN0b3IpID0gc3RhdGljX2Nhc3Q8Q1NTU2Vs
ZWN0b3IqPihwLT5jcmVhdGVGbG9hdGluZ050aFNlbGVjdG9yKCkpOworICAgICAgICAoeXl2YWwu
c2VsZWN0b3IpLT5tX21hdGNoID0gQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzOworICAgICAgICAo
eXl2YWwuc2VsZWN0b3IpLT5tX2FyZ3VtZW50ID0gKHl5dnNwWygzKSAtICg0KV0uc3RyaW5nKTsK
KyAgICAgICAgKHl5dmFsLnNlbGVjdG9yKS0+bV92YWx1ZSA9ICh5eXZzcFsoMikgLSAoNCldLnN0
cmluZyk7CisgICAgICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHR5cGUgPSAoeXl2YWwuc2Vs
ZWN0b3IpLT5wc2V1ZG9UeXBlKCk7CiAgICAgICAgIGlmICh0eXBlID09IENTU1NlbGVjdG9yOjpQ
c2V1ZG9Vbmtub3duKQotICAgICAgICAgICAgeXl2YWwuc2VsZWN0b3IgPSAwOworICAgICAgICAg
ICAgKHl5dmFsLnNlbGVjdG9yKSA9IDA7CiAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gQ1NTU2Vs
ZWN0b3I6OlBzZXVkb050aENoaWxkIHx8CiAgICAgICAgICAgICAgICAgIHR5cGUgPT0gQ1NTU2Vs
ZWN0b3I6OlBzZXVkb050aE9mVHlwZSB8fAogICAgICAgICAgICAgICAgICB0eXBlID09IENTU1Nl
bGVjdG9yOjpQc2V1ZG9OdGhMYXN0Q2hpbGQgfHwKQEAgLTI5MzIsMTMgKzMyNjQsMTMgQEAKICNs
aW5lIDExMjYgIldlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSIKICAgICB7CiAgICAgICAgIENTU1Bh
cnNlciAqcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7Ci0gICAgICAgIHl5dmFs
LnNlbGVjdG9yID0gc3RhdGljX2Nhc3Q8Q1NTU2VsZWN0b3IqPihwLT5jcmVhdGVGbG9hdGluZ050
aFNlbGVjdG9yKCkpOwotICAgICAgICB5eXZhbC5zZWxlY3Rvci0+bV9tYXRjaCA9IENTU1NlbGVj
dG9yOjpQc2V1ZG9DbGFzczsKLSAgICAgICAgeXl2YWwuc2VsZWN0b3ItPm1fYXJndW1lbnQgPSBT
dHJpbmc6Om51bWJlcih5eXZzcFstMV0ubnVtYmVyKTsKLSAgICAgICAgeXl2YWwuc2VsZWN0b3It
Pm1fdmFsdWUgPSB5eXZzcFstMl0uc3RyaW5nOwotICAgICAgICBDU1NTZWxlY3Rvcjo6UHNldWRv
VHlwZSB0eXBlID0geXl2YWwuc2VsZWN0b3ItPnBzZXVkb1R5cGUoKTsKKyAgICAgICAgKHl5dmFs
LnNlbGVjdG9yKSA9IHN0YXRpY19jYXN0PENTU1NlbGVjdG9yKj4ocC0+Y3JlYXRlRmxvYXRpbmdO
dGhTZWxlY3RvcigpKTsKKyAgICAgICAgKHl5dmFsLnNlbGVjdG9yKS0+bV9tYXRjaCA9IENTU1Nl
bGVjdG9yOjpQc2V1ZG9DbGFzczsKKyAgICAgICAgKHl5dmFsLnNlbGVjdG9yKS0+bV9hcmd1bWVu
dCA9IFN0cmluZzo6bnVtYmVyKCh5eXZzcFsoMykgLSAoNCldLm51bWJlcikpOworICAgICAgICAo
eXl2YWwuc2VsZWN0b3IpLT5tX3ZhbHVlID0gKHl5dnNwWygyKSAtICg0KV0uc3RyaW5nKTsKKyAg
ICAgICAgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUgdHlwZSA9ICh5eXZhbC5zZWxlY3RvciktPnBz
ZXVkb1R5cGUoKTsKICAgICAgICAgaWYgKHR5cGUgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb1Vua25v
d24pCi0gICAgICAgICAgICB5eXZhbC5zZWxlY3RvciA9IDA7CisgICAgICAgICAgICAoeXl2YWwu
c2VsZWN0b3IpID0gMDsKICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNl
dWRvTnRoQ2hpbGQgfHwKICAgICAgICAgICAgICAgICAgdHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNl
dWRvTnRoT2ZUeXBlIHx8CiAgICAgICAgICAgICAgICAgIHR5cGUgPT0gQ1NTU2VsZWN0b3I6OlBz
ZXVkb050aExhc3RDaGlsZCB8fApAQCAtMjk1MywxNCArMzI4NSwxNCBAQAogI2xpbmUgMTE0NCAi
V2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55IgogICAgIHsKICAgICAgICAgQ1NTUGFyc2VyICpwID0g
c3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKLSAgICAgICAgeXl2YWwuc2VsZWN0b3Ig
PSBzdGF0aWNfY2FzdDxDU1NTZWxlY3Rvcio+KHAtPmNyZWF0ZUZsb2F0aW5nTnRoU2VsZWN0b3Io
KSk7Ci0gICAgICAgIHl5dmFsLnNlbGVjdG9yLT5tX21hdGNoID0gQ1NTU2VsZWN0b3I6OlBzZXVk
b0NsYXNzOwotICAgICAgICB5eXZhbC5zZWxlY3Rvci0+bV9hcmd1bWVudCA9IHl5dnNwWy0xXS5z
dHJpbmc7Ci0gICAgICAgIHl5dnNwWy0yXS5zdHJpbmcubG93ZXIoKTsKLSAgICAgICAgeXl2YWwu
c2VsZWN0b3ItPm1fdmFsdWUgPSB5eXZzcFstMl0uc3RyaW5nOwotICAgICAgICBDU1NTZWxlY3Rv
cjo6UHNldWRvVHlwZSB0eXBlID0geXl2YWwuc2VsZWN0b3ItPnBzZXVkb1R5cGUoKTsKKyAgICAg
ICAgKHl5dmFsLnNlbGVjdG9yKSA9IHN0YXRpY19jYXN0PENTU1NlbGVjdG9yKj4ocC0+Y3JlYXRl
RmxvYXRpbmdOdGhTZWxlY3RvcigpKTsKKyAgICAgICAgKHl5dmFsLnNlbGVjdG9yKS0+bV9tYXRj
aCA9IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzczsKKyAgICAgICAgKHl5dmFsLnNlbGVjdG9yKS0+
bV9hcmd1bWVudCA9ICh5eXZzcFsoMykgLSAoNCldLnN0cmluZyk7CisgICAgICAgICh5eXZzcFso
MikgLSAoNCldLnN0cmluZykubG93ZXIoKTsKKyAgICAgICAgKHl5dmFsLnNlbGVjdG9yKS0+bV92
YWx1ZSA9ICh5eXZzcFsoMikgLSAoNCldLnN0cmluZyk7CisgICAgICAgIENTU1NlbGVjdG9yOjpQ
c2V1ZG9UeXBlIHR5cGUgPSAoeXl2YWwuc2VsZWN0b3IpLT5wc2V1ZG9UeXBlKCk7CiAgICAgICAg
IGlmICh0eXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9Vbmtub3duKQotICAgICAgICAgICAgeXl2
YWwuc2VsZWN0b3IgPSAwOworICAgICAgICAgICAgKHl5dmFsLnNlbGVjdG9yKSA9IDA7CiAgICAg
ICAgIGVsc2UgaWYgKHR5cGUgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb050aENoaWxkIHx8CiAgICAg
ICAgICAgICAgICAgIHR5cGUgPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb050aE9mVHlwZSB8fAogICAg
ICAgICAgICAgICAgICB0eXBlID09IENTU1NlbGVjdG9yOjpQc2V1ZG9OdGhMYXN0Q2hpbGQgfHwK
QEAgLTI5NzQsMTUgKzMzMDYsMTUgQEAKICAgY2FzZSAxODQ6CiAjbGluZSAxMTYzICJXZWJDb3Jl
L2Nzcy9DU1NHcmFtbWFyLnkiCiAgICAgewotICAgICAgICBpZiAoIXl5dnNwWy0yXS5zZWxlY3Rv
cikKLSAgICAgICAgICAgIHl5dmFsLnNlbGVjdG9yID0gMDsKKyAgICAgICAgaWYgKCEoeXl2c3Bb
KDQpIC0gKDYpXS5zZWxlY3RvcikpCisgICAgICAgICAgICAoeXl2YWwuc2VsZWN0b3IpID0gMDsK
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxD
U1NQYXJzZXIqPihwYXJzZXIpOwotICAgICAgICAgICAgeXl2YWwuc2VsZWN0b3IgPSBwLT5jcmVh
dGVGbG9hdGluZ1NlbGVjdG9yKCk7Ci0gICAgICAgICAgICB5eXZhbC5zZWxlY3Rvci0+bV9tYXRj
aCA9IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzczsKLSAgICAgICAgICAgIHl5dmFsLnNlbGVjdG9y
LT5tX3NpbXBsZVNlbGVjdG9yID0gcC0+c2lua0Zsb2F0aW5nU2VsZWN0b3IoeXl2c3BbLTJdLnNl
bGVjdG9yKTsKLSAgICAgICAgICAgIHl5dnNwWy00XS5zdHJpbmcubG93ZXIoKTsKLSAgICAgICAg
ICAgIHl5dmFsLnNlbGVjdG9yLT5tX3ZhbHVlID0geXl2c3BbLTRdLnN0cmluZzsKKyAgICAgICAg
ICAgICh5eXZhbC5zZWxlY3RvcikgPSBwLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CisgICAg
ICAgICAgICAoeXl2YWwuc2VsZWN0b3IpLT5tX21hdGNoID0gQ1NTU2VsZWN0b3I6OlBzZXVkb0Ns
YXNzOworICAgICAgICAgICAgKHl5dmFsLnNlbGVjdG9yKS0+bV9zaW1wbGVTZWxlY3RvciA9IHAt
PnNpbmtGbG9hdGluZ1NlbGVjdG9yKCh5eXZzcFsoNCkgLSAoNildLnNlbGVjdG9yKSk7CisgICAg
ICAgICAgICAoeXl2c3BbKDIpIC0gKDYpXS5zdHJpbmcpLmxvd2VyKCk7CisgICAgICAgICAgICAo
eXl2YWwuc2VsZWN0b3IpLT5tX3ZhbHVlID0gKHl5dnNwWygyKSAtICg2KV0uc3RyaW5nKTsKICAg
ICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CkBAIC0yOTkwLDExNSArMzMyMiwxMTUgQEAKICAg
Y2FzZSAxODU6CiAjbGluZSAxMTc4ICJXZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkiCiAgICAgewot
ICAgICAgICB5eXZhbC5ib29sZWFuID0geXl2c3BbMF0uYm9vbGVhbjsKKyAgICAgICAgKHl5dmFs
LmJvb2xlYW4pID0gKHl5dnNwWygxKSAtICgxKV0uYm9vbGVhbik7CiAgICAgO30KICAgICBicmVh
azsKIAogICBjYXNlIDE4NjoKICNsaW5lIDExODEgIldlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSIK
ICAgICB7Ci0gICAgICAgIHl5dmFsLmJvb2xlYW4gPSB5eXZzcFstMV0uYm9vbGVhbjsKLSAgICAg
ICAgaWYgKCB5eXZzcFswXS5ib29sZWFuICkKLSAgICAgICAgICAgIHl5dmFsLmJvb2xlYW4gPSB5
eXZzcFswXS5ib29sZWFuOworICAgICAgICAoeXl2YWwuYm9vbGVhbikgPSAoeXl2c3BbKDEpIC0g
KDIpXS5ib29sZWFuKTsKKyAgICAgICAgaWYgKCAoeXl2c3BbKDIpIC0gKDIpXS5ib29sZWFuKSAp
CisgICAgICAgICAgICAoeXl2YWwuYm9vbGVhbikgPSAoeXl2c3BbKDIpIC0gKDIpXS5ib29sZWFu
KTsKICAgICA7fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMTg3OgogI2xpbmUgMTE4NiAiV2ViQ29y
ZS9jc3MvQ1NTR3JhbW1hci55IgogICAgIHsKLSAgICAgICAgeXl2YWwuYm9vbGVhbiA9IHl5dnNw
WzBdLmJvb2xlYW47CisgICAgICAgICh5eXZhbC5ib29sZWFuKSA9ICh5eXZzcFsoMSkgLSAoMSld
LmJvb2xlYW4pOwogICAgIDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxODg6CiAjbGluZSAxMTg5
ICJXZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkiCiAgICAgewotICAgICAgICB5eXZhbC5ib29sZWFu
ID0gZmFsc2U7CisgICAgICAgICh5eXZhbC5ib29sZWFuKSA9IGZhbHNlOwogICAgIDt9CiAgICAg
YnJlYWs7CiAKICAgY2FzZSAxODk6CiAjbGluZSAxMTkyICJXZWJDb3JlL2Nzcy9DU1NHcmFtbWFy
LnkiCiAgICAgewotICAgICAgICB5eXZhbC5ib29sZWFuID0gZmFsc2U7CisgICAgICAgICh5eXZh
bC5ib29sZWFuKSA9IGZhbHNlOwogICAgIDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxOTA6CiAj
bGluZSAxMTk1ICJXZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkiCiAgICAgewotICAgICAgICB5eXZh
bC5ib29sZWFuID0geXl2c3BbLTFdLmJvb2xlYW47CisgICAgICAgICh5eXZhbC5ib29sZWFuKSA9
ICh5eXZzcFsoMSkgLSAoMildLmJvb2xlYW4pOwogICAgIDt9CiAgICAgYnJlYWs7CiAKICAgY2Fz
ZSAxOTE6CiAjbGluZSAxMTk4ICJXZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkiCiAgICAgewotICAg
ICAgICB5eXZhbC5ib29sZWFuID0geXl2c3BbLTFdLmJvb2xlYW47CisgICAgICAgICh5eXZhbC5i
b29sZWFuKSA9ICh5eXZzcFsoMSkgLSAoMildLmJvb2xlYW4pOwogICAgIDt9CiAgICAgYnJlYWs7
CiAKICAgY2FzZSAxOTI6CiAjbGluZSAxMjA0ICJXZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkiCiAg
ICAgewotICAgICAgICB5eXZhbC5ib29sZWFuID0geXl2c3BbLTJdLmJvb2xlYW47CisgICAgICAg
ICh5eXZhbC5ib29sZWFuKSA9ICh5eXZzcFsoMSkgLSAoMyldLmJvb2xlYW4pOwogICAgIDt9CiAg
ICAgYnJlYWs7CiAKICAgY2FzZSAxOTM6CiAjbGluZSAxMjA3ICJXZWJDb3JlL2Nzcy9DU1NHcmFt
bWFyLnkiCiAgICAgewotICAgICAgICB5eXZhbC5ib29sZWFuID0gZmFsc2U7CisgICAgICAgICh5
eXZhbC5ib29sZWFuKSA9IGZhbHNlOwogICAgIDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxOTQ6
CiAjbGluZSAxMjEwICJXZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkiCiAgICAgewotICAgICAgICB5
eXZhbC5ib29sZWFuID0gZmFsc2U7CisgICAgICAgICh5eXZhbC5ib29sZWFuKSA9IGZhbHNlOwog
ICAgIDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxOTU6CiAjbGluZSAxMjEzICJXZWJDb3JlL2Nz
cy9DU1NHcmFtbWFyLnkiCiAgICAgewotICAgICAgICB5eXZhbC5ib29sZWFuID0gZmFsc2U7Cisg
ICAgICAgICh5eXZhbC5ib29sZWFuKSA9IGZhbHNlOwogICAgIDt9CiAgICAgYnJlYWs7CiAKICAg
Y2FzZSAxOTY6CiAjbGluZSAxMjE2ICJXZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkiCiAgICAgewot
ICAgICAgICB5eXZhbC5ib29sZWFuID0geXl2c3BbLTNdLmJvb2xlYW47Ci0gICAgICAgIGlmICh5
eXZzcFstMl0uYm9vbGVhbikKLSAgICAgICAgICAgIHl5dmFsLmJvb2xlYW4gPSB5eXZzcFstMl0u
Ym9vbGVhbjsKKyAgICAgICAgKHl5dmFsLmJvb2xlYW4pID0gKHl5dnNwWygxKSAtICg0KV0uYm9v
bGVhbik7CisgICAgICAgIGlmICgoeXl2c3BbKDIpIC0gKDQpXS5ib29sZWFuKSkKKyAgICAgICAg
ICAgICh5eXZhbC5ib29sZWFuKSA9ICh5eXZzcFsoMikgLSAoNCldLmJvb2xlYW4pOwogICAgIDt9
CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxOTc6CiAjbGluZSAxMjIxICJXZWJDb3JlL2Nzcy9DU1NH
cmFtbWFyLnkiCiAgICAgewotICAgICAgICB5eXZhbC5ib29sZWFuID0geXl2c3BbLTNdLmJvb2xl
YW47CisgICAgICAgICh5eXZhbC5ib29sZWFuKSA9ICh5eXZzcFsoMSkgLSAoNCldLmJvb2xlYW4p
OwogICAgIDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxOTg6CiAjbGluZSAxMjI0ICJXZWJDb3Jl
L2Nzcy9DU1NHcmFtbWFyLnkiCiAgICAgewotICAgICAgICB5eXZhbC5ib29sZWFuID0geXl2c3Bb
LTVdLmJvb2xlYW47CisgICAgICAgICh5eXZhbC5ib29sZWFuKSA9ICh5eXZzcFsoMSkgLSAoNild
LmJvb2xlYW4pOwogICAgIDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAxOTk6CiAjbGluZSAxMjMw
ICJXZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkiCiAgICAgewotICAgICAgICB5eXZhbC5ib29sZWFu
ID0gZmFsc2U7CisgICAgICAgICh5eXZhbC5ib29sZWFuKSA9IGZhbHNlOwogICAgICAgICBDU1NQ
YXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOwotICAgICAgICBpZiAo
eXl2c3BbLTRdLmludGVnZXIgJiYgeXl2c3BbLTFdLnZhbHVlTGlzdCkgewotICAgICAgICAgICAg
cC0+bV92YWx1ZUxpc3QgPSBwLT5zaW5rRmxvYXRpbmdWYWx1ZUxpc3QoeXl2c3BbLTFdLnZhbHVl
TGlzdCk7CisgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDUpXS5pbnRlZ2VyKSAmJiAoeXl2c3Bb
KDQpIC0gKDUpXS52YWx1ZUxpc3QpKSB7CisgICAgICAgICAgICBwLT5tX3ZhbHVlTGlzdCA9IHAt
PnNpbmtGbG9hdGluZ1ZhbHVlTGlzdCgoeXl2c3BbKDQpIC0gKDUpXS52YWx1ZUxpc3QpKTsKICAg
ICAgICAgICAgIGludCBvbGRQYXJzZWRQcm9wZXJ0aWVzID0gcC0+bV9udW1QYXJzZWRQcm9wZXJ0
aWVzOwotICAgICAgICAgICAgeXl2YWwuYm9vbGVhbiA9IHAtPnBhcnNlVmFsdWUoeXl2c3BbLTRd
LmludGVnZXIsIHl5dnNwWzBdLmJvb2xlYW4pOwotICAgICAgICAgICAgaWYgKCF5eXZhbC5ib29s
ZWFuKQorICAgICAgICAgICAgKHl5dmFsLmJvb2xlYW4pID0gcC0+cGFyc2VWYWx1ZSgoeXl2c3Bb
KDEpIC0gKDUpXS5pbnRlZ2VyKSwgKHl5dnNwWyg1KSAtICg1KV0uYm9vbGVhbikpOworICAgICAg
ICAgICAgaWYgKCEoeXl2YWwuYm9vbGVhbikpCiAgICAgICAgICAgICAgICAgcC0+cm9sbGJhY2tM
YXN0UHJvcGVydGllcyhwLT5tX251bVBhcnNlZFByb3BlcnRpZXMgLSBvbGRQYXJzZWRQcm9wZXJ0
aWVzKTsKICAgICAgICAgICAgIGRlbGV0ZSBwLT5tX3ZhbHVlTGlzdDsKICAgICAgICAgICAgIHAt
Pm1fdmFsdWVMaXN0ID0gMDsKQEAgLTMxMTEsMTAgKzM0NDMsMTAgQEAKICAgICB7CiAgICAgICAg
IENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7CiAgICAgICAg
IHAtPm1fdmFsdWVMaXN0ID0gbmV3IENTU1BhcnNlclZhbHVlTGlzdDsKLSAgICAgICAgcC0+bV92
YWx1ZUxpc3QtPmFkZFZhbHVlKHAtPnNpbmtGbG9hdGluZ1ZhbHVlKHl5dnNwWy0xXS52YWx1ZSkp
OworICAgICAgICBwLT5tX3ZhbHVlTGlzdC0+YWRkVmFsdWUocC0+c2lua0Zsb2F0aW5nVmFsdWUo
KHl5dnNwWygxKSAtICgyKV0udmFsdWUpKSk7CiAgICAgICAgIGludCBvbGRQYXJzZWRQcm9wZXJ0
aWVzID0gcC0+bV9udW1QYXJzZWRQcm9wZXJ0aWVzOwotICAgICAgICB5eXZhbC5ib29sZWFuID0g
cC0+cGFyc2VWYWx1ZShDU1NQcm9wZXJ0eVdlYmtpdFZhcmlhYmxlRGVjbGFyYXRpb25CbG9jaywg
ZmFsc2UpOwotICAgICAgICBpZiAoIXl5dmFsLmJvb2xlYW4pCisgICAgICAgICh5eXZhbC5ib29s
ZWFuKSA9IHAtPnBhcnNlVmFsdWUoQ1NTUHJvcGVydHlXZWJraXRWYXJpYWJsZURlY2xhcmF0aW9u
QmxvY2ssIGZhbHNlKTsKKyAgICAgICAgaWYgKCEoeXl2YWwuYm9vbGVhbikpCiAgICAgICAgICAg
ICBwLT5yb2xsYmFja0xhc3RQcm9wZXJ0aWVzKHAtPm1fbnVtUGFyc2VkUHJvcGVydGllcyAtIG9s
ZFBhcnNlZFByb3BlcnRpZXMpOwogICAgICAgICBkZWxldGUgcC0+bV92YWx1ZUxpc3Q7CiAgICAg
ICAgIHAtPm1fdmFsdWVMaXN0ID0gMDsKQEAgLTMxMjQsNyArMzQ1Niw3IEBACiAgIGNhc2UgMjAx
OgogI2xpbmUgMTI1NiAiV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55IgogICAgIHsKLSAgICAgICAg
eXl2YWwuYm9vbGVhbiA9IGZhbHNlOworICAgICAgICAoeXl2YWwuYm9vbGVhbikgPSBmYWxzZTsK
ICAgICA7fQogICAgIGJyZWFrOwogCkBAIC0zMTM0LDcgKzM0NjYsNyBAQAogICAgICAgICAvKiBU
aGUgZGVmYXVsdCBtb3ZhYmxlIHR5cGUgdGVtcGxhdGUgaGFzIGxldHRlci1zcGFjaW5nOiAubm9u
ZTsgIEhhbmRsZSB0aGlzIGJ5IGxvb2tpbmcgZm9yCiAgICAgICAgIGVycm9yIHRva2VucyBhdCB0
aGUgc3RhcnQgb2YgYW4gZXhwciwgcmVjb3ZlciB0aGUgZXhwciBhbmQgdGhlbiB0cmVhdCBhcyBh
biBlcnJvciwgY2xlYW5pbmcKICAgICAgICAgdXAgYW5kIGRlbGV0aW5nIHRoZSBzaGlmdGVkIGV4
cHIuICAqLwotICAgICAgICB5eXZhbC5ib29sZWFuID0gZmFsc2U7CisgICAgICAgICh5eXZhbC5i
b29sZWFuKSA9IGZhbHNlOwogICAgIDt9CiAgICAgYnJlYWs7CiAKQEAgLTMxNDIsNyArMzQ3NCw3
IEBACiAjbGluZSAxMjY3ICJXZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkiCiAgICAgewogICAgICAg
ICAvKiBXaGVuIHdlIGVuY291bnRlciBzb21ldGhpbmcgbGlrZSBwIHtjb2xvcjogcmVkICFpbXBv
cnRhbnQgZmFpbDt9IHdlIHNob3VsZCBkcm9wIHRoZSBkZWNsYXJhdGlvbiAqLwotICAgICAgICB5
eXZhbC5ib29sZWFuID0gZmFsc2U7CisgICAgICAgICh5eXZhbC5ib29sZWFuKSA9IGZhbHNlOwog
ICAgIDt9CiAgICAgYnJlYWs7CiAKQEAgLTMxNTAsNyArMzQ4Miw3IEBACiAjbGluZSAxMjcyICJX
ZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkiCiAgICAgewogICAgICAgICAvKiBIYW5kbGUgdGhpcyBj
YXNlOiBkaXYgeyB0ZXh0LWFsaWduOiBjZW50ZXI7ICFpbXBvcnRhbnQgfSBKdXN0IHJlZHVjZSBh
d2F5IHRoZSBzdHJheSAhaW1wb3J0YW50LiAqLwotICAgICAgICB5eXZhbC5ib29sZWFuID0gZmFs
c2U7CisgICAgICAgICh5eXZhbC5ib29sZWFuKSA9IGZhbHNlOwogICAgIDt9CiAgICAgYnJlYWs7
CiAKQEAgLTMxNTgsNyArMzQ5MCw3IEBACiAjbGluZSAxMjc3ICJXZWJDb3JlL2Nzcy9DU1NHcmFt
bWFyLnkiCiAgICAgewogICAgICAgICAvKiBkaXYgeyBmb250LWZhbWlseTogfSBKdXN0IHJlZHVj
ZSBhd2F5IHRoaXMgcHJvcGVydHkgd2l0aCBubyB2YWx1ZS4gKi8KLSAgICAgICAgeXl2YWwuYm9v
bGVhbiA9IGZhbHNlOworICAgICAgICAoeXl2YWwuYm9vbGVhbikgPSBmYWxzZTsKICAgICA7fQog
ICAgIGJyZWFrOwogCkBAIC0zMTY2LDcgKzM0OTgsNyBAQAogI2xpbmUgMTI4MiAiV2ViQ29yZS9j
c3MvQ1NTR3JhbW1hci55IgogICAgIHsKICAgICAgICAgLyogaWYgd2UgY29tZSBhY3Jvc3MgcnVs
ZXMgd2l0aCBpbnZhbGlkIHZhbHVlcyBsaWtlIHRoaXMgY2FzZTogcCB7IHdlaWdodDogKjsgfSwg
anVzdCBkaXNjYXJkIHRoZSBydWxlICovCi0gICAgICAgIHl5dmFsLmJvb2xlYW4gPSBmYWxzZTsK
KyAgICAgICAgKHl5dmFsLmJvb2xlYW4pID0gZmFsc2U7CiAgICAgO30KICAgICBicmVhazsKIApA
QCAtMzE3NCwzMyArMzUwNiwzMyBAQAogI2xpbmUgMTI4NyAiV2ViQ29yZS9jc3MvQ1NTR3JhbW1h
ci55IgogICAgIHsKICAgICAgICAgLyogaWYgd2UgY29tZSBhY3Jvc3M6IGRpdiB7IGNvbG9yeztj
b2xvcjptYXJvb259IH0sIGlnbm9yZSBldmVyeXRoaW5nIHdpdGhpbiBjdXJseSBicmFja2V0cyAq
LwotICAgICAgICB5eXZhbC5ib29sZWFuID0gZmFsc2U7CisgICAgICAgICh5eXZhbC5ib29sZWFu
KSA9IGZhbHNlOwogICAgIDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAyMDg6CiAjbGluZSAxMjk0
ICJXZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkiCiAgICAgewotICAgICAgICB5eXZhbC5pbnRlZ2Vy
ID0gY3NzUHJvcGVydHlJRCh5eXZzcFstMV0uc3RyaW5nKTsKKyAgICAgICAgKHl5dmFsLmludGVn
ZXIpID0gY3NzUHJvcGVydHlJRCgoeXl2c3BbKDEpIC0gKDIpXS5zdHJpbmcpKTsKICAgICA7fQog
ICAgIGJyZWFrOwogCiAgIGNhc2UgMjA5OgogI2xpbmUgMTMwMCAiV2ViQ29yZS9jc3MvQ1NTR3Jh
bW1hci55IgotICAgIHsgeXl2YWwuYm9vbGVhbiA9IHRydWU7IDt9CisgICAgeyAoeXl2YWwuYm9v
bGVhbikgPSB0cnVlOyA7fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMjEwOgogI2xpbmUgMTMwMSAi
V2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55IgotICAgIHsgeXl2YWwuYm9vbGVhbiA9IGZhbHNlOyA7
fQorICAgIHsgKHl5dmFsLmJvb2xlYW4pID0gZmFsc2U7IDt9CiAgICAgYnJlYWs7CiAKICAgY2Fz
ZSAyMTE6CiAjbGluZSAxMzA1ICJXZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkiCiAgICAgewogICAg
ICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOwotICAg
ICAgICB5eXZhbC52YWx1ZUxpc3QgPSBwLT5jcmVhdGVGbG9hdGluZ1ZhbHVlTGlzdCgpOwotICAg
ICAgICB5eXZhbC52YWx1ZUxpc3QtPmFkZFZhbHVlKHAtPnNpbmtGbG9hdGluZ1ZhbHVlKHl5dnNw
WzBdLnZhbHVlKSk7CisgICAgICAgICh5eXZhbC52YWx1ZUxpc3QpID0gcC0+Y3JlYXRlRmxvYXRp
bmdWYWx1ZUxpc3QoKTsKKyAgICAgICAgKHl5dmFsLnZhbHVlTGlzdCktPmFkZFZhbHVlKHAtPnNp
bmtGbG9hdGluZ1ZhbHVlKCh5eXZzcFsoMSkgLSAoMSldLnZhbHVlKSkpOwogICAgIDt9CiAgICAg
YnJlYWs7CiAKQEAgLTMyMDgsMTYgKzM1NDAsMTYgQEAKICNsaW5lIDEzMTAgIldlYkNvcmUvY3Nz
L0NTU0dyYW1tYXIueSIKICAgICB7CiAgICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0
PENTU1BhcnNlcio+KHBhcnNlcik7Ci0gICAgICAgIHl5dmFsLnZhbHVlTGlzdCA9IHl5dnNwWy0y
XS52YWx1ZUxpc3Q7Ci0gICAgICAgIGlmICh5eXZhbC52YWx1ZUxpc3QpIHsKLSAgICAgICAgICAg
IGlmICh5eXZzcFstMV0uY2hhcmFjdGVyKSB7CisgICAgICAgICh5eXZhbC52YWx1ZUxpc3QpID0g
KHl5dnNwWygxKSAtICgzKV0udmFsdWVMaXN0KTsKKyAgICAgICAgaWYgKCh5eXZhbC52YWx1ZUxp
c3QpKSB7CisgICAgICAgICAgICBpZiAoKHl5dnNwWygyKSAtICgzKV0uY2hhcmFjdGVyKSkgewog
ICAgICAgICAgICAgICAgIENTU1BhcnNlclZhbHVlIHY7CiAgICAgICAgICAgICAgICAgdi5pZCA9
IDA7CiAgICAgICAgICAgICAgICAgdi51bml0ID0gQ1NTUGFyc2VyVmFsdWU6Ok9wZXJhdG9yOwot
ICAgICAgICAgICAgICAgIHYuaVZhbHVlID0geXl2c3BbLTFdLmNoYXJhY3RlcjsKLSAgICAgICAg
ICAgICAgICB5eXZhbC52YWx1ZUxpc3QtPmFkZFZhbHVlKHYpOworICAgICAgICAgICAgICAgIHYu
aVZhbHVlID0gKHl5dnNwWygyKSAtICgzKV0uY2hhcmFjdGVyKTsKKyAgICAgICAgICAgICAgICAo
eXl2YWwudmFsdWVMaXN0KS0+YWRkVmFsdWUodik7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICB5eXZhbC52YWx1ZUxpc3QtPmFkZFZhbHVlKHAtPnNpbmtGbG9hdGluZ1ZhbHVlKHl5dnNwWzBd
LnZhbHVlKSk7CisgICAgICAgICAgICAoeXl2YWwudmFsdWVMaXN0KS0+YWRkVmFsdWUocC0+c2lu
a0Zsb2F0aW5nVmFsdWUoKHl5dnNwWygzKSAtICgzKV0udmFsdWUpKSk7CiAgICAgICAgIH0KICAg
ICA7fQogICAgIGJyZWFrOwpAQCAtMzIyNSw5NiArMzU1Nyw5NiBAQAogICBjYXNlIDIxMzoKICNs
aW5lIDEzMjQgIldlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSIKICAgICB7Ci0gICAgICAgIHl5dmFs
LnZhbHVlTGlzdCA9IDA7CisgICAgICAgICh5eXZhbC52YWx1ZUxpc3QpID0gMDsKICAgICA7fQog
ICAgIGJyZWFrOwogCiAgIGNhc2UgMjE0OgogI2xpbmUgMTMzMCAiV2ViQ29yZS9jc3MvQ1NTR3Jh
bW1hci55IgogICAgIHsKLSAgICAgICAgeXl2YWwuY2hhcmFjdGVyID0gJy8nOworICAgICAgICAo
eXl2YWwuY2hhcmFjdGVyKSA9ICcvJzsKICAgICA7fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMjE1
OgogI2xpbmUgMTMzMyAiV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55IgogICAgIHsKLSAgICAgICAg
eXl2YWwuY2hhcmFjdGVyID0gJywnOworICAgICAgICAoeXl2YWwuY2hhcmFjdGVyKSA9ICcsJzsK
ICAgICA7fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMjE2OgogI2xpbmUgMTMzNiAiV2ViQ29yZS9j
c3MvQ1NTR3JhbW1hci55IgogICAgIHsKLSAgICAgICAgeXl2YWwuY2hhcmFjdGVyID0gMDsKKyAg
ICAgICAgKHl5dmFsLmNoYXJhY3RlcikgPSAwOwogICA7fQogICAgIGJyZWFrOwogCiAgIGNhc2Ug
MjE3OgogI2xpbmUgMTM0MiAiV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55IgotICAgIHsgeXl2YWwu
dmFsdWUgPSB5eXZzcFswXS52YWx1ZTsgO30KKyAgICB7ICh5eXZhbC52YWx1ZSkgPSAoeXl2c3Bb
KDEpIC0gKDEpXS52YWx1ZSk7IDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAyMTg6CiAjbGluZSAx
MzQzICJXZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkiCi0gICAgeyB5eXZhbC52YWx1ZSA9IHl5dnNw
WzBdLnZhbHVlOyB5eXZhbC52YWx1ZS5mVmFsdWUgKj0geXl2c3BbLTFdLmludGVnZXI7IDt9Cisg
ICAgeyAoeXl2YWwudmFsdWUpID0gKHl5dnNwWygyKSAtICgyKV0udmFsdWUpOyAoeXl2YWwudmFs
dWUpLmZWYWx1ZSAqPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlZ2VyKTsgO30KICAgICBicmVhazsK
IAogICBjYXNlIDIxOToKICNsaW5lIDEzNDQgIldlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSIKLSAg
ICB7IHl5dmFsLnZhbHVlLmlkID0gMDsgeXl2YWwudmFsdWUuc3RyaW5nID0geXl2c3BbLTFdLnN0
cmluZzsgeXl2YWwudmFsdWUudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HOyA7
fQorICAgIHsgKHl5dmFsLnZhbHVlKS5pZCA9IDA7ICh5eXZhbC52YWx1ZSkuc3RyaW5nID0gKHl5
dnNwWygxKSAtICgyKV0uc3RyaW5nKTsgKHl5dmFsLnZhbHVlKS51bml0ID0gQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19TVFJJTkc7IDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAyMjA6CiAjbGluZSAx
MzQ1ICJXZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkiCiAgICAgewotICAgICAgeXl2YWwudmFsdWUu
aWQgPSBjc3NWYWx1ZUtleXdvcmRJRCh5eXZzcFstMV0uc3RyaW5nKTsKLSAgICAgIHl5dmFsLnZh
bHVlLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UOwotICAgICAgeXl2YWwudmFs
dWUuc3RyaW5nID0geXl2c3BbLTFdLnN0cmluZzsKKyAgICAgICh5eXZhbC52YWx1ZSkuaWQgPSBj
c3NWYWx1ZUtleXdvcmRJRCgoeXl2c3BbKDEpIC0gKDIpXS5zdHJpbmcpKTsKKyAgICAgICh5eXZh
bC52YWx1ZSkudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSURFTlQ7CisgICAgICAoeXl2
YWwudmFsdWUpLnN0cmluZyA9ICh5eXZzcFsoMSkgLSAoMildLnN0cmluZyk7CiAgIDt9CiAgICAg
YnJlYWs7CiAKICAgY2FzZSAyMjE6CiAjbGluZSAxMzUxICJXZWJDb3JlL2Nzcy9DU1NHcmFtbWFy
LnkiCi0gICAgeyB5eXZhbC52YWx1ZS5pZCA9IDA7IHl5dmFsLnZhbHVlLnN0cmluZyA9IHl5dnNw
Wy0xXS5zdHJpbmc7IHl5dmFsLnZhbHVlLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RJ
TUVOU0lPTiA7fQorICAgIHsgKHl5dmFsLnZhbHVlKS5pZCA9IDA7ICh5eXZhbC52YWx1ZSkuc3Ry
aW5nID0gKHl5dnNwWygxKSAtICgyKV0uc3RyaW5nKTsgKHl5dmFsLnZhbHVlKS51bml0ID0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19ESU1FTlNJT04gO30KICAgICBicmVhazsKIAogICBjYXNlIDIy
MjoKICNsaW5lIDEzNTIgIldlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSIKLSAgICB7IHl5dmFsLnZh
bHVlLmlkID0gMDsgeXl2YWwudmFsdWUuc3RyaW5nID0geXl2c3BbLTFdLnN0cmluZzsgeXl2YWwu
dmFsdWUudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRElNRU5TSU9OIDt9CisgICAgeyAo
eXl2YWwudmFsdWUpLmlkID0gMDsgKHl5dmFsLnZhbHVlKS5zdHJpbmcgPSAoeXl2c3BbKDIpIC0g
KDMpXS5zdHJpbmcpOyAoeXl2YWwudmFsdWUpLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X0RJTUVOU0lPTiA7fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMjIzOgogI2xpbmUgMTM1MyAiV2Vi
Q29yZS9jc3MvQ1NTR3JhbW1hci55IgotICAgIHsgeXl2YWwudmFsdWUuaWQgPSAwOyB5eXZhbC52
YWx1ZS5zdHJpbmcgPSB5eXZzcFstMV0uc3RyaW5nOyB5eXZhbC52YWx1ZS51bml0ID0gQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19VUkk7IDt9CisgICAgeyAoeXl2YWwudmFsdWUpLmlkID0gMDsgKHl5
dmFsLnZhbHVlKS5zdHJpbmcgPSAoeXl2c3BbKDEpIC0gKDIpXS5zdHJpbmcpOyAoeXl2YWwudmFs
dWUpLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VSSTsgO30KICAgICBicmVhazsKIAog
ICBjYXNlIDIyNDoKICNsaW5lIDEzNTQgIldlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSIKLSAgICB7
IHl5dmFsLnZhbHVlLmlkID0gMDsgeXl2YWwudmFsdWUuc3RyaW5nID0geXl2c3BbLTFdLnN0cmlu
ZzsgeXl2YWwudmFsdWUudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVU5JQ09ERV9SQU5H
RSA7fQorICAgIHsgKHl5dmFsLnZhbHVlKS5pZCA9IDA7ICh5eXZhbC52YWx1ZSkuc3RyaW5nID0g
KHl5dnNwWygxKSAtICgyKV0uc3RyaW5nKTsgKHl5dmFsLnZhbHVlKS51bml0ID0gQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19VTklDT0RFX1JBTkdFIDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAyMjU6
CiAjbGluZSAxMzU1ICJXZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkiCi0gICAgeyB5eXZhbC52YWx1
ZS5pZCA9IDA7IHl5dmFsLnZhbHVlLnN0cmluZyA9IHl5dnNwWzBdLnN0cmluZzsgeXl2YWwudmFs
dWUudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEFSU0VSX0hFWENPTE9SOyA7fQorICAg
IHsgKHl5dmFsLnZhbHVlKS5pZCA9IDA7ICh5eXZhbC52YWx1ZSkuc3RyaW5nID0gKHl5dnNwWygx
KSAtICgxKV0uc3RyaW5nKTsgKHl5dmFsLnZhbHVlKS51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19QQVJTRVJfSEVYQ09MT1I7IDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAyMjY6CiAjbGlu
ZSAxMzU2ICJXZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkiCi0gICAgeyB5eXZhbC52YWx1ZS5pZCA9
IDA7IHl5dmFsLnZhbHVlLnN0cmluZyA9IENTU1BhcnNlclN0cmluZygpOyB5eXZhbC52YWx1ZS51
bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QQVJTRVJfSEVYQ09MT1I7IDt9CisgICAgeyAo
eXl2YWwudmFsdWUpLmlkID0gMDsgKHl5dmFsLnZhbHVlKS5zdHJpbmcgPSBDU1NQYXJzZXJTdHJp
bmcoKTsgKHl5dmFsLnZhbHVlKS51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QQVJTRVJf
SEVYQ09MT1I7IDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAyMjc6CiAjbGluZSAxMzU4ICJXZWJD
b3JlL2Nzcy9DU1NHcmFtbWFyLnkiCiAgICAgewotICAgICAgeXl2YWwudmFsdWUgPSB5eXZzcFsw
XS52YWx1ZTsKKyAgICAgICh5eXZhbC52YWx1ZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS52YWx1ZSk7
CiAgIDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAyMjg6CiAjbGluZSAxMzYxICJXZWJDb3JlL2Nz
cy9DU1NHcmFtbWFyLnkiCiAgICAgewotICAgICAgeXl2YWwudmFsdWUgPSB5eXZzcFstMV0udmFs
dWU7CisgICAgICAoeXl2YWwudmFsdWUpID0gKHl5dnNwWygxKSAtICgyKV0udmFsdWUpOwogICA7
fQogICAgIGJyZWFrOwogCkBAIC0zMzI1LDEwNSArMzY1NywxMDUgQEAKIAogICBjYXNlIDIzMDoK
ICNsaW5lIDEzNjggIldlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSIKLSAgICB7IHl5dmFsLnZhbHVl
LmlkID0gMDsgeXl2YWwudmFsdWUuaXNJbnQgPSB0cnVlOyB5eXZhbC52YWx1ZS5mVmFsdWUgPSB5
eXZzcFstMV0ubnVtYmVyOyB5eXZhbC52YWx1ZS51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19OVU1CRVI7IDt9CisgICAgeyAoeXl2YWwudmFsdWUpLmlkID0gMDsgKHl5dmFsLnZhbHVlKS5p
c0ludCA9IHRydWU7ICh5eXZhbC52YWx1ZSkuZlZhbHVlID0gKHl5dnNwWygxKSAtICgyKV0ubnVt
YmVyKTsgKHl5dmFsLnZhbHVlKS51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVI7
IDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAyMzE6CiAjbGluZSAxMzY5ICJXZWJDb3JlL2Nzcy9D
U1NHcmFtbWFyLnkiCi0gICAgeyB5eXZhbC52YWx1ZS5pZCA9IDA7IHl5dmFsLnZhbHVlLmlzSW50
ID0gZmFsc2U7IHl5dmFsLnZhbHVlLmZWYWx1ZSA9IHl5dnNwWy0xXS5udW1iZXI7IHl5dmFsLnZh
bHVlLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUjsgO30KKyAgICB7ICh5eXZh
bC52YWx1ZSkuaWQgPSAwOyAoeXl2YWwudmFsdWUpLmlzSW50ID0gZmFsc2U7ICh5eXZhbC52YWx1
ZSkuZlZhbHVlID0gKHl5dnNwWygxKSAtICgyKV0ubnVtYmVyKTsgKHl5dmFsLnZhbHVlKS51bml0
ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVI7IDt9CiAgICAgYnJlYWs7CiAKICAgY2Fz
ZSAyMzI6CiAjbGluZSAxMzcwICJXZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkiCi0gICAgeyB5eXZh
bC52YWx1ZS5pZCA9IDA7IHl5dmFsLnZhbHVlLmZWYWx1ZSA9IHl5dnNwWy0xXS5udW1iZXI7IHl5
dmFsLnZhbHVlLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0U7IDt9Cisg
ICAgeyAoeXl2YWwudmFsdWUpLmlkID0gMDsgKHl5dmFsLnZhbHVlKS5mVmFsdWUgPSAoeXl2c3Bb
KDEpIC0gKDIpXS5udW1iZXIpOyAoeXl2YWwudmFsdWUpLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1BFUkNFTlRBR0U7IDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAyMzM6CiAjbGluZSAx
MzcxICJXZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkiCi0gICAgeyB5eXZhbC52YWx1ZS5pZCA9IDA7
IHl5dmFsLnZhbHVlLmZWYWx1ZSA9IHl5dnNwWy0xXS5udW1iZXI7IHl5dmFsLnZhbHVlLnVuaXQg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYOyA7fQorICAgIHsgKHl5dmFsLnZhbHVlKS5pZCA9
IDA7ICh5eXZhbC52YWx1ZSkuZlZhbHVlID0gKHl5dnNwWygxKSAtICgyKV0ubnVtYmVyKTsgKHl5
dmFsLnZhbHVlKS51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QWDsgO30KICAgICBicmVh
azsKIAogICBjYXNlIDIzNDoKICNsaW5lIDEzNzIgIldlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSIK
LSAgICB7IHl5dmFsLnZhbHVlLmlkID0gMDsgeXl2YWwudmFsdWUuZlZhbHVlID0geXl2c3BbLTFd
Lm51bWJlcjsgeXl2YWwudmFsdWUudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfQ007IDt9
CisgICAgeyAoeXl2YWwudmFsdWUpLmlkID0gMDsgKHl5dmFsLnZhbHVlKS5mVmFsdWUgPSAoeXl2
c3BbKDEpIC0gKDIpXS5udW1iZXIpOyAoeXl2YWwudmFsdWUpLnVuaXQgPSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX0NNOyA7fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMjM1OgogI2xpbmUgMTM3MyAi
V2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55IgotICAgIHsgeXl2YWwudmFsdWUuaWQgPSAwOyB5eXZh
bC52YWx1ZS5mVmFsdWUgPSB5eXZzcFstMV0ubnVtYmVyOyB5eXZhbC52YWx1ZS51bml0ID0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19NTTsgO30KKyAgICB7ICh5eXZhbC52YWx1ZSkuaWQgPSAwOyAo
eXl2YWwudmFsdWUpLmZWYWx1ZSA9ICh5eXZzcFsoMSkgLSAoMildLm51bWJlcik7ICh5eXZhbC52
YWx1ZSkudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTU07IDt9CiAgICAgYnJlYWs7CiAK
ICAgY2FzZSAyMzY6CiAjbGluZSAxMzc0ICJXZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkiCi0gICAg
eyB5eXZhbC52YWx1ZS5pZCA9IDA7IHl5dmFsLnZhbHVlLmZWYWx1ZSA9IHl5dnNwWy0xXS5udW1i
ZXI7IHl5dmFsLnZhbHVlLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lOOyA7fQorICAg
IHsgKHl5dmFsLnZhbHVlKS5pZCA9IDA7ICh5eXZhbC52YWx1ZSkuZlZhbHVlID0gKHl5dnNwWygx
KSAtICgyKV0ubnVtYmVyKTsgKHl5dmFsLnZhbHVlKS51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19JTjsgO30KICAgICBicmVhazsKIAogICBjYXNlIDIzNzoKICNsaW5lIDEzNzUgIldlYkNv
cmUvY3NzL0NTU0dyYW1tYXIueSIKLSAgICB7IHl5dmFsLnZhbHVlLmlkID0gMDsgeXl2YWwudmFs
dWUuZlZhbHVlID0geXl2c3BbLTFdLm51bWJlcjsgeXl2YWwudmFsdWUudW5pdCA9IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfUFQ7IDt9CisgICAgeyAoeXl2YWwudmFsdWUpLmlkID0gMDsgKHl5dmFs
LnZhbHVlKS5mVmFsdWUgPSAoeXl2c3BbKDEpIC0gKDIpXS5udW1iZXIpOyAoeXl2YWwudmFsdWUp
LnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BUOyA7fQogICAgIGJyZWFrOwogCiAgIGNh
c2UgMjM4OgogI2xpbmUgMTM3NiAiV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55IgotICAgIHsgeXl2
YWwudmFsdWUuaWQgPSAwOyB5eXZhbC52YWx1ZS5mVmFsdWUgPSB5eXZzcFstMV0ubnVtYmVyOyB5
eXZhbC52YWx1ZS51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QQzsgO30KKyAgICB7ICh5
eXZhbC52YWx1ZSkuaWQgPSAwOyAoeXl2YWwudmFsdWUpLmZWYWx1ZSA9ICh5eXZzcFsoMSkgLSAo
MildLm51bWJlcik7ICh5eXZhbC52YWx1ZSkudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UEM7IDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAyMzk6CiAjbGluZSAxMzc3ICJXZWJDb3JlL2Nz
cy9DU1NHcmFtbWFyLnkiCi0gICAgeyB5eXZhbC52YWx1ZS5pZCA9IDA7IHl5dmFsLnZhbHVlLmZW
YWx1ZSA9IHl5dnNwWy0xXS5udW1iZXI7IHl5dmFsLnZhbHVlLnVuaXQgPSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX0RFRzsgO30KKyAgICB7ICh5eXZhbC52YWx1ZSkuaWQgPSAwOyAoeXl2YWwudmFs
dWUpLmZWYWx1ZSA9ICh5eXZzcFsoMSkgLSAoMildLm51bWJlcik7ICh5eXZhbC52YWx1ZSkudW5p
dCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfREVHOyA7fQogICAgIGJyZWFrOwogCiAgIGNhc2Ug
MjQwOgogI2xpbmUgMTM3OCAiV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55IgotICAgIHsgeXl2YWwu
dmFsdWUuaWQgPSAwOyB5eXZhbC52YWx1ZS5mVmFsdWUgPSB5eXZzcFstMV0ubnVtYmVyOyB5eXZh
bC52YWx1ZS51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19SQUQ7IDt9CisgICAgeyAoeXl2
YWwudmFsdWUpLmlkID0gMDsgKHl5dmFsLnZhbHVlKS5mVmFsdWUgPSAoeXl2c3BbKDEpIC0gKDIp
XS5udW1iZXIpOyAoeXl2YWwudmFsdWUpLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1JB
RDsgO30KICAgICBicmVhazsKIAogICBjYXNlIDI0MToKICNsaW5lIDEzNzkgIldlYkNvcmUvY3Nz
L0NTU0dyYW1tYXIueSIKLSAgICB7IHl5dmFsLnZhbHVlLmlkID0gMDsgeXl2YWwudmFsdWUuZlZh
bHVlID0geXl2c3BbLTFdLm51bWJlcjsgeXl2YWwudmFsdWUudW5pdCA9IENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfR1JBRDsgO30KKyAgICB7ICh5eXZhbC52YWx1ZSkuaWQgPSAwOyAoeXl2YWwudmFs
dWUpLmZWYWx1ZSA9ICh5eXZzcFsoMSkgLSAoMildLm51bWJlcik7ICh5eXZhbC52YWx1ZSkudW5p
dCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfR1JBRDsgO30KICAgICBicmVhazsKIAogICBjYXNl
IDI0MjoKICNsaW5lIDEzODAgIldlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSIKLSAgICB7IHl5dmFs
LnZhbHVlLmlkID0gMDsgeXl2YWwudmFsdWUuZlZhbHVlID0geXl2c3BbLTFdLm51bWJlcjsgeXl2
YWwudmFsdWUudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTVM7IDt9CisgICAgeyAoeXl2
YWwudmFsdWUpLmlkID0gMDsgKHl5dmFsLnZhbHVlKS5mVmFsdWUgPSAoeXl2c3BbKDEpIC0gKDIp
XS5udW1iZXIpOyAoeXl2YWwudmFsdWUpLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX01T
OyA7fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMjQzOgogI2xpbmUgMTM4MSAiV2ViQ29yZS9jc3Mv
Q1NTR3JhbW1hci55IgotICAgIHsgeXl2YWwudmFsdWUuaWQgPSAwOyB5eXZhbC52YWx1ZS5mVmFs
dWUgPSB5eXZzcFstMV0ubnVtYmVyOyB5eXZhbC52YWx1ZS51bml0ID0gQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19TOyA7fQorICAgIHsgKHl5dmFsLnZhbHVlKS5pZCA9IDA7ICh5eXZhbC52YWx1ZSku
ZlZhbHVlID0gKHl5dnNwWygxKSAtICgyKV0ubnVtYmVyKTsgKHl5dmFsLnZhbHVlKS51bml0ID0g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TOyA7fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMjQ0Ogog
I2xpbmUgMTM4MiAiV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55IgotICAgIHsgeXl2YWwudmFsdWUu
aWQgPSAwOyB5eXZhbC52YWx1ZS5mVmFsdWUgPSB5eXZzcFstMV0ubnVtYmVyOyB5eXZhbC52YWx1
ZS51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19IWjsgO30KKyAgICB7ICh5eXZhbC52YWx1
ZSkuaWQgPSAwOyAoeXl2YWwudmFsdWUpLmZWYWx1ZSA9ICh5eXZzcFsoMSkgLSAoMildLm51bWJl
cik7ICh5eXZhbC52YWx1ZSkudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfSFo7IDt9CiAg
ICAgYnJlYWs7CiAKICAgY2FzZSAyNDU6CiAjbGluZSAxMzgzICJXZWJDb3JlL2Nzcy9DU1NHcmFt
bWFyLnkiCi0gICAgeyB5eXZhbC52YWx1ZS5pZCA9IDA7IHl5dmFsLnZhbHVlLmZWYWx1ZSA9IHl5
dnNwWy0xXS5udW1iZXI7IHl5dmFsLnZhbHVlLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X0tIWjsgO30KKyAgICB7ICh5eXZhbC52YWx1ZSkuaWQgPSAwOyAoeXl2YWwudmFsdWUpLmZWYWx1
ZSA9ICh5eXZzcFsoMSkgLSAoMildLm51bWJlcik7ICh5eXZhbC52YWx1ZSkudW5pdCA9IENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfS0haOyA7fQogICAgIGJyZWFrOwogCiAgIGNhc2UgMjQ2OgogI2xp
bmUgMTM4NCAiV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55IgotICAgIHsgeXl2YWwudmFsdWUuaWQg
PSAwOyB5eXZhbC52YWx1ZS5mVmFsdWUgPSB5eXZzcFstMV0ubnVtYmVyOyB5eXZhbC52YWx1ZS51
bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FTVM7IDt9CisgICAgeyAoeXl2YWwudmFsdWUp
LmlkID0gMDsgKHl5dmFsLnZhbHVlKS5mVmFsdWUgPSAoeXl2c3BbKDEpIC0gKDIpXS5udW1iZXIp
OyAoeXl2YWwudmFsdWUpLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUzsgO30KICAg
ICBicmVhazsKIAogICBjYXNlIDI0NzoKICNsaW5lIDEzODUgIldlYkNvcmUvY3NzL0NTU0dyYW1t
YXIueSIKLSAgICB7IHl5dmFsLnZhbHVlLmlkID0gMDsgeXl2YWwudmFsdWUuZlZhbHVlID0geXl2
c3BbLTFdLm51bWJlcjsgeXl2YWwudmFsdWUudW5pdCA9IENTU1BhcnNlclZhbHVlOjpRX0VNUzsg
O30KKyAgICB7ICh5eXZhbC52YWx1ZSkuaWQgPSAwOyAoeXl2YWwudmFsdWUpLmZWYWx1ZSA9ICh5
eXZzcFsoMSkgLSAoMildLm51bWJlcik7ICh5eXZhbC52YWx1ZSkudW5pdCA9IENTU1BhcnNlclZh
bHVlOjpRX0VNUzsgO30KICAgICBicmVhazsKIAogICBjYXNlIDI0ODoKICNsaW5lIDEzODYgIldl
YkNvcmUvY3NzL0NTU0dyYW1tYXIueSIKLSAgICB7IHl5dmFsLnZhbHVlLmlkID0gMDsgeXl2YWwu
dmFsdWUuZlZhbHVlID0geXl2c3BbLTFdLm51bWJlcjsgeXl2YWwudmFsdWUudW5pdCA9IENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfRVhTOyA7fQorICAgIHsgKHl5dmFsLnZhbHVlKS5pZCA9IDA7ICh5
eXZhbC52YWx1ZSkuZlZhbHVlID0gKHl5dnNwWygxKSAtICgyKV0ubnVtYmVyKTsgKHl5dmFsLnZh
bHVlKS51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FWFM7IDt9CiAgICAgYnJlYWs7CiAK
ICAgY2FzZSAyNDk6CiAjbGluZSAxMzkwICJXZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkiCiAgICAg
ewotICAgICAgeXl2YWwudmFsdWUuaWQgPSAwOwotICAgICAgeXl2YWwudmFsdWUuc3RyaW5nID0g
eXl2c3BbMF0uc3RyaW5nOwotICAgICAgeXl2YWwudmFsdWUudW5pdCA9IENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfUEFSU0VSX1ZBUklBQkxFX0ZVTkNUSU9OX1NZTlRBWDsKKyAgICAgICh5eXZhbC52
YWx1ZSkuaWQgPSAwOworICAgICAgKHl5dmFsLnZhbHVlKS5zdHJpbmcgPSAoeXl2c3BbKDEpIC0g
KDEpXS5zdHJpbmcpOworICAgICAgKHl5dmFsLnZhbHVlKS51bml0ID0gQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19QQVJTRVJfVkFSSUFCTEVfRlVOQ1RJT05fU1lOVEFYOwogICA7fQogICAgIGJyZWFr
OwogCkBAIC0zNDMyLDExICszNzY0LDExIEBACiAgICAgewogICAgICAgICBDU1NQYXJzZXIqIHAg
PSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOwogICAgICAgICBDU1NQYXJzZXJGdW5j
dGlvbiogZiA9IHAtPmNyZWF0ZUZsb2F0aW5nRnVuY3Rpb24oKTsKLSAgICAgICAgZi0+bmFtZSA9
IHl5dnNwWy00XS5zdHJpbmc7Ci0gICAgICAgIGYtPmFyZ3MgPSBwLT5zaW5rRmxvYXRpbmdWYWx1
ZUxpc3QoeXl2c3BbLTJdLnZhbHVlTGlzdCk7Ci0gICAgICAgIHl5dmFsLnZhbHVlLmlkID0gMDsK
LSAgICAgICAgeXl2YWwudmFsdWUudW5pdCA9IENTU1BhcnNlclZhbHVlOjpGdW5jdGlvbjsKLSAg
ICAgICAgeXl2YWwudmFsdWUuZnVuY3Rpb24gPSBmOworICAgICAgICBmLT5uYW1lID0gKHl5dnNw
WygxKSAtICg1KV0uc3RyaW5nKTsKKyAgICAgICAgZi0+YXJncyA9IHAtPnNpbmtGbG9hdGluZ1Zh
bHVlTGlzdCgoeXl2c3BbKDMpIC0gKDUpXS52YWx1ZUxpc3QpKTsKKyAgICAgICAgKHl5dmFsLnZh
bHVlKS5pZCA9IDA7CisgICAgICAgICh5eXZhbC52YWx1ZSkudW5pdCA9IENTU1BhcnNlclZhbHVl
OjpGdW5jdGlvbjsKKyAgICAgICAgKHl5dmFsLnZhbHVlKS5mdW5jdGlvbiA9IGY7CiAgICAgO30K
ICAgICBicmVhazsKIApAQCAtMzQ0NSw4MyArMzc3Nyw4MiBAQAogICAgIHsKICAgICAgICAgQ1NT
UGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKICAgICAgICAgQ1NT
UGFyc2VyRnVuY3Rpb24qIGYgPSBwLT5jcmVhdGVGbG9hdGluZ0Z1bmN0aW9uKCk7Ci0gICAgICAg
IGYtPm5hbWUgPSB5eXZzcFstMl0uc3RyaW5nOworICAgICAgICBmLT5uYW1lID0gKHl5dnNwWygx
KSAtICgzKV0uc3RyaW5nKTsKICAgICAgICAgZi0+YXJncyA9IDA7Ci0gICAgICAgIHl5dmFsLnZh
bHVlLmlkID0gMDsKLSAgICAgICAgeXl2YWwudmFsdWUudW5pdCA9IENTU1BhcnNlclZhbHVlOjpG
dW5jdGlvbjsKLSAgICAgICAgeXl2YWwudmFsdWUuZnVuY3Rpb24gPSBmOworICAgICAgICAoeXl2
YWwudmFsdWUpLmlkID0gMDsKKyAgICAgICAgKHl5dmFsLnZhbHVlKS51bml0ID0gQ1NTUGFyc2Vy
VmFsdWU6OkZ1bmN0aW9uOworICAgICAgICAoeXl2YWwudmFsdWUpLmZ1bmN0aW9uID0gZjsKICAg
O30KICAgICBicmVhazsKIAogICBjYXNlIDI1MjoKICNsaW5lIDE0MjMgIldlYkNvcmUvY3NzL0NT
U0dyYW1tYXIueSIKLSAgICB7IHl5dmFsLnN0cmluZyA9IHl5dnNwWy0xXS5zdHJpbmc7IDt9Cisg
ICAgeyAoeXl2YWwuc3RyaW5nKSA9ICh5eXZzcFsoMSkgLSAoMildLnN0cmluZyk7IDt9CiAgICAg
YnJlYWs7CiAKICAgY2FzZSAyNTM6CiAjbGluZSAxNDI0ICJXZWJDb3JlL2Nzcy9DU1NHcmFtbWFy
LnkiCi0gICAgeyB5eXZhbC5zdHJpbmcgPSB5eXZzcFstMV0uc3RyaW5nOyA7fQorICAgIHsgKHl5
dmFsLnN0cmluZykgPSAoeXl2c3BbKDEpIC0gKDIpXS5zdHJpbmcpOyA7fQogICAgIGJyZWFrOwog
CiAgIGNhc2UgMjU0OgogI2xpbmUgMTQzMSAiV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55IgogICAg
IHsKLSAgICAgICAgeXl2YWwucnVsZSA9IDA7CisgICAgICAgICh5eXZhbC5ydWxlKSA9IDA7CiAg
ICAgO30KICAgICBicmVhazsKIAogICBjYXNlIDI1NToKICNsaW5lIDE0MzQgIldlYkNvcmUvY3Nz
L0NTU0dyYW1tYXIueSIKICAgICB7Ci0gICAgICAgIHl5dmFsLnJ1bGUgPSAwOworICAgICAgICAo
eXl2YWwucnVsZSkgPSAwOwogICAgIDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAyNTY6CiAjbGlu
ZSAxNDQwICJXZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkiCiAgICAgewotICAgICAgICB5eXZhbC5y
dWxlID0gMDsKKyAgICAgICAgKHl5dmFsLnJ1bGUpID0gMDsKICAgICA7fQogICAgIGJyZWFrOwog
CiAgIGNhc2UgMjU3OgogI2xpbmUgMTQ0MyAiV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55IgogICAg
IHsKLSAgICAgICAgeXl2YWwucnVsZSA9IDA7CisgICAgICAgICh5eXZhbC5ydWxlKSA9IDA7CiAg
ICAgO30KICAgICBicmVhazsKIAogICBjYXNlIDI2MDoKICNsaW5lIDE0NTQgIldlYkNvcmUvY3Nz
L0NTU0dyYW1tYXIueSIKICAgICB7Ci0gICAgICAgIHl5dmFsLnJ1bGUgPSAwOworICAgICAgICAo
eXl2YWwucnVsZSkgPSAwOwogICAgIDt9CiAgICAgYnJlYWs7CiAKICAgY2FzZSAyNjE6CiAjbGlu
ZSAxNDYwICJXZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkiCiAgICAgewotICAgICAgICB5eXZhbC5y
dWxlID0gMDsKKyAgICAgICAgKHl5dmFsLnJ1bGUpID0gMDsKICAgICA7fQogICAgIGJyZWFrOwog
CiAgIGNhc2UgMjYyOgogI2xpbmUgMTQ2NiAiV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55IgogICAg
IHsKLSAgICAgICAgeXl2YWwucnVsZSA9IDA7CisgICAgICAgICh5eXZhbC5ydWxlKSA9IDA7CiAg
ICAgO30KICAgICBicmVhazsKIAogCisvKiBMaW5lIDEyNjcgb2YgeWFjYy5jLiAgKi8KKyNsaW5l
IDM4NTAgIi4vRGVyaXZlZFNvdXJjZXMvQ1NTR3JhbW1hci5jcHAiCisgICAgICBkZWZhdWx0OiBi
cmVhazsKICAgICB9CisgIFlZX1NZTUJPTF9QUklOVCAoIi0+ICQkID0iLCB5eXIxW3l5bl0sICZ5
eXZhbCwgJnl5bG9jKTsKIAotLyogTGluZSAxMDEwIG9mIHlhY2MuYy4gICovCi0jbGluZSAzNTIw
ICJmYXVsdHkvQ1NTR3JhbW1hci5jcHAiCi0MCi0gIHl5dnNwIC09IHl5bGVuOwotICB5eXNzcCAt
PSB5eWxlbjsKLQotCisgIFlZUE9QU1RBQ0sgKHl5bGVuKTsKKyAgeXlsZW4gPSAwOwogICBZWV9T
VEFDS19QUklOVCAoeXlzcywgeXlzc3ApOwogCiAgICorK3l5dnNwID0geXl2YWw7CkBAIC0zNTUw
LDk5ICszODgxLDY1IEBACiAgIGlmICgheXllcnJzdGF0dXMpCiAgICAgewogICAgICAgKyt5eW5l
cnJzOwotI2lmIFlZRVJST1JfVkVSQk9TRQotICAgICAgeXluID0geXlwYWN0W3l5c3RhdGVdOwot
Ci0gICAgICBpZiAoWVlQQUNUX05JTkYgPCB5eW4gJiYgeXluIDwgWVlMQVNUKQotCXsKLQkgIFlZ
U0laRV9UIHl5c2l6ZSA9IDA7Ci0JICBpbnQgeXl0eXBlID0gWVlUUkFOU0xBVEUgKHl5Y2hhcik7
Ci0JICBjb25zdCBjaGFyKiB5eXByZWZpeDsKLQkgIGNoYXIgKnl5bXNnOwotCSAgaW50IHl5eDsK
LQotCSAgLyogU3RhcnQgWVlYIGF0IC1ZWU4gaWYgbmVnYXRpdmUgdG8gYXZvaWQgbmVnYXRpdmUg
aW5kZXhlcyBpbgotCSAgICAgWVlDSEVDSy4gICovCi0JICBpbnQgeXl4YmVnaW4gPSB5eW4gPCAw
ID8gLXl5biA6IDA7Ci0KLQkgIC8qIFN0YXkgd2l0aGluIGJvdW5kcyBvZiBib3RoIHl5Y2hlY2sg
YW5kIHl5dG5hbWUuICAqLwotCSAgaW50IHl5Y2hlY2tsaW0gPSBZWUxBU1QgLSB5eW47Ci0JICBp
bnQgeXl4ZW5kID0geXljaGVja2xpbSA8IFlZTlRPS0VOUyA/IHl5Y2hlY2tsaW0gOiBZWU5UT0tF
TlM7Ci0JICBpbnQgeXljb3VudCA9IDA7Ci0KLQkgIHl5cHJlZml4ID0gIiwgZXhwZWN0aW5nICI7
Ci0JICBmb3IgKHl5eCA9IHl5eGJlZ2luOyB5eXggPCB5eXhlbmQ7ICsreXl4KQotCSAgICBpZiAo
eXljaGVja1t5eXggKyB5eW5dID09IHl5eCAmJiB5eXggIT0gWVlURVJST1IpCisjaWYgISBZWUVS
Uk9SX1ZFUkJPU0UKKyAgICAgIHl5ZXJyb3IgKFlZXygic3ludGF4IGVycm9yIikpOworI2Vsc2UK
KyAgICAgIHsKKwlZWVNJWkVfVCB5eXNpemUgPSB5eXN5bnRheF9lcnJvciAoMCwgeXlzdGF0ZSwg
eXljaGFyKTsKKwlpZiAoeXltc2dfYWxsb2MgPCB5eXNpemUgJiYgeXltc2dfYWxsb2MgPCBZWVNU
QUNLX0FMTE9DX01BWElNVU0pCisJICB7CisJICAgIFlZU0laRV9UIHl5YWxsb2MgPSAyICogeXlz
aXplOworCSAgICBpZiAoISAoeXlzaXplIDw9IHl5YWxsb2MgJiYgeXlhbGxvYyA8PSBZWVNUQUNL
X0FMTE9DX01BWElNVU0pKQorCSAgICAgIHl5YWxsb2MgPSBZWVNUQUNLX0FMTE9DX01BWElNVU07
CisJICAgIGlmICh5eW1zZyAhPSB5eW1zZ2J1ZikKKwkgICAgICBZWVNUQUNLX0ZSRUUgKHl5bXNn
KTsKKwkgICAgeXltc2cgPSAoY2hhciAqKSBZWVNUQUNLX0FMTE9DICh5eWFsbG9jKTsKKwkgICAg
aWYgKHl5bXNnKQorCSAgICAgIHl5bXNnX2FsbG9jID0geXlhbGxvYzsKKwkgICAgZWxzZQogCSAg
ICAgIHsKLQkJeXlzaXplICs9IHl5c3RybGVuICh5eXByZWZpeCkgKyB5eXN0cmxlbiAoeXl0bmFt
ZSBbeXl4XSk7Ci0JCXl5Y291bnQgKz0gMTsKLQkJaWYgKHl5Y291bnQgPT0gNSkKLQkJICB7Ci0J
CSAgICB5eXNpemUgPSAwOwotCQkgICAgYnJlYWs7Ci0JCSAgfQorCQl5eW1zZyA9IHl5bXNnYnVm
OworCQl5eW1zZ19hbGxvYyA9IHNpemVvZiB5eW1zZ2J1ZjsKIAkgICAgICB9Ci0JICB5eXNpemUg
Kz0gKHNpemVvZiAoInN5bnRheCBlcnJvciwgdW5leHBlY3RlZCAiKQotCQkgICAgICsgeXlzdHJs
ZW4gKHl5dG5hbWVbeXl0eXBlXSkpOwotCSAgeXltc2cgPSAoY2hhciAqKSBZWVNUQUNLX0FMTE9D
ICh5eXNpemUpOwotCSAgaWYgKHl5bXNnICE9IDApCi0JICAgIHsKLQkgICAgICBjaGFyICp5eXAg
PSB5eXN0cGNweSAoeXltc2csICJzeW50YXggZXJyb3IsIHVuZXhwZWN0ZWQgIik7Ci0JICAgICAg
eXlwID0geXlzdHBjcHkgKHl5cCwgeXl0bmFtZVt5eXR5cGVdKTsKKwkgIH0KIAotCSAgICAgIGlm
ICh5eWNvdW50IDwgNSkKLQkJewotCQkgIHl5cHJlZml4ID0gIiwgZXhwZWN0aW5nICI7Ci0JCSAg
Zm9yICh5eXggPSB5eXhiZWdpbjsgeXl4IDwgeXl4ZW5kOyArK3l5eCkKLQkJICAgIGlmICh5eWNo
ZWNrW3l5eCArIHl5bl0gPT0geXl4ICYmIHl5eCAhPSBZWVRFUlJPUikKLQkJICAgICAgewotCQkJ
eXlwID0geXlzdHBjcHkgKHl5cCwgeXlwcmVmaXgpOwotCQkJeXlwID0geXlzdHBjcHkgKHl5cCwg
eXl0bmFtZVt5eXhdKTsKLQkJCXl5cHJlZml4ID0gIiBvciAiOwotCQkgICAgICB9Ci0JCX0KLQkg
ICAgICB5eWVycm9yICh5eW1zZyk7Ci0JICAgICAgWVlTVEFDS19GUkVFICh5eW1zZyk7Ci0JICAg
IH0KLQkgIGVsc2UKLQkgICAgeXllcnJvciAoInN5bnRheCBlcnJvcjsgYWxzbyB2aXJ0dWFsIG1l
bW9yeSBleGhhdXN0ZWQiKTsKLQl9Ci0gICAgICBlbHNlCi0jZW5kaWYgLyogWVlFUlJPUl9WRVJC
T1NFICovCi0JeXllcnJvciAoInN5bnRheCBlcnJvciIpOworCWlmICgwIDwgeXlzaXplICYmIHl5
c2l6ZSA8PSB5eW1zZ19hbGxvYykKKwkgIHsKKwkgICAgKHZvaWQpIHl5c3ludGF4X2Vycm9yICh5
eW1zZywgeXlzdGF0ZSwgeXljaGFyKTsKKwkgICAgeXllcnJvciAoeXltc2cpOworCSAgfQorCWVs
c2UKKwkgIHsKKwkgICAgeXllcnJvciAoWVlfKCJzeW50YXggZXJyb3IiKSk7CisJICAgIGlmICh5
eXNpemUgIT0gMCkKKwkgICAgICBnb3RvIHl5ZXhoYXVzdGVkbGFiOworCSAgfQorICAgICAgfQor
I2VuZGlmCiAgICAgfQogCiAKIAogICBpZiAoeXllcnJzdGF0dXMgPT0gMykKICAgICB7Ci0gICAg
ICAvKiBJZiBqdXN0IHRyaWVkIGFuZCBmYWlsZWQgdG8gcmV1c2UgbG9va2FoZWFkIHRva2VuIGFm
dGVyIGFuCisgICAgICAvKiBJZiBqdXN0IHRyaWVkIGFuZCBmYWlsZWQgdG8gcmV1c2UgbG9vay1h
aGVhZCB0b2tlbiBhZnRlciBhbgogCSBlcnJvciwgZGlzY2FyZCBpdC4gICovCiAKICAgICAgIGlm
ICh5eWNoYXIgPD0gWVlFT0YpCi0gICAgICAgIHsKLSAgICAgICAgICAvKiBJZiBhdCBlbmQgb2Yg
aW5wdXQsIHBvcCB0aGUgZXJyb3IgdG9rZW4sCi0JICAgICB0aGVuIHRoZSByZXN0IG9mIHRoZSBz
dGFjaywgdGhlbiByZXR1cm4gZmFpbHVyZS4gICovCisJeworCSAgLyogUmV0dXJuIGZhaWx1cmUg
aWYgYXQgZW5kIG9mIGlucHV0LiAgKi8KIAkgIGlmICh5eWNoYXIgPT0gWVlFT0YpCi0JICAgICBm
b3IgKDs7KQotCSAgICAgICB7Ci0JCSBZWVBPUFNUQUNLOwotCQkgaWYgKHl5c3NwID09IHl5c3Mp
Ci0JCSAgIFlZQUJPUlQ7Ci0JCSBZWURTWU1QUklOVEYgKCJFcnJvcjogcG9wcGluZyIsIHl5c3Rv
c1sqeXlzc3BdLCB5eXZzcCwgeXlsc3ApOwotCQkgeXlkZXN0cnVjdCAoeXlzdG9zWyp5eXNzcF0s
IHl5dnNwKTsKLQkgICAgICAgfQotICAgICAgICB9CisJICAgIFlZQUJPUlQ7CisJfQogICAgICAg
ZWxzZQogCXsKLQkgIFlZRFNZTVBSSU5URiAoIkVycm9yOiBkaXNjYXJkaW5nIiwgeXl0b2tlbiwg
Jnl5bHZhbCwgJnl5bGxvYyk7Ci0JICB5eWRlc3RydWN0ICh5eXRva2VuLCAmeXlsdmFsKTsKKwkg
IHl5ZGVzdHJ1Y3QgKCJFcnJvcjogZGlzY2FyZGluZyIsCisJCSAgICAgIHl5dG9rZW4sICZ5eWx2
YWwpOwogCSAgeXljaGFyID0gWVlFTVBUWTsKLQogCX0KICAgICB9CiAKLSAgLyogRWxzZSB3aWxs
IHRyeSB0byByZXVzZSBsb29rYWhlYWQgdG9rZW4gYWZ0ZXIgc2hpZnRpbmcgdGhlIGVycm9yCisg
IC8qIEVsc2Ugd2lsbCB0cnkgdG8gcmV1c2UgbG9vay1haGVhZCB0b2tlbiBhZnRlciBzaGlmdGlu
ZyB0aGUgZXJyb3IKICAgICAgdG9rZW4uICAqLwogICBnb3RvIHl5ZXJybGFiMTsKIApAQCAtMzY1
MiwxNSArMzk0OSwxNyBAQAogYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSovCiB5eWVycm9ybGFiOgogCi0jaWZkZWYgX19HTlVDX18KLSAgLyogUGFj
aWZ5IEdDQyB3aGVuIHRoZSB1c2VyIGNvZGUgbmV2ZXIgaW52b2tlcyBZWUVSUk9SIGFuZCB0aGUg
bGFiZWwKLSAgICAgeXllcnJvcmxhYiB0aGVyZWZvcmUgbmV2ZXIgYXBwZWFycyBpbiB1c2VyIGNv
ZGUuICAqLwotICBpZiAoMCkKKyAgLyogUGFjaWZ5IGNvbXBpbGVycyBsaWtlIEdDQyB3aGVuIHRo
ZSB1c2VyIGNvZGUgbmV2ZXIgaW52b2tlcworICAgICBZWUVSUk9SIGFuZCB0aGUgbGFiZWwgeXll
cnJvcmxhYiB0aGVyZWZvcmUgbmV2ZXIgYXBwZWFycyBpbiB1c2VyCisgICAgIGNvZGUuICAqLwor
ICBpZiAoLypDT05TVENPTkQqLyAwKQogICAgICBnb3RvIHl5ZXJyb3JsYWI7Ci0jZW5kaWYKIAot
ICB5eXZzcCAtPSB5eWxlbjsKLSAgeXlzc3AgLT0geXlsZW47CisgIC8qIERvIG5vdCByZWNsYWlt
IHRoZSBzeW1ib2xzIG9mIHRoZSBydWxlIHdoaWNoIGFjdGlvbiB0cmlnZ2VyZWQKKyAgICAgdGhp
cyBZWUVSUk9SLiAgKi8KKyAgWVlQT1BTVEFDSyAoeXlsZW4pOworICB5eWxlbiA9IDA7CisgIFlZ
X1NUQUNLX1BSSU5UICh5eXNzLCB5eXNzcCk7CiAgIHl5c3RhdGUgPSAqeXlzc3A7CiAgIGdvdG8g
eXllcnJsYWIxOwogCkBAIC0zNjg5LDkgKzM5ODgsMTAgQEAKICAgICAgIGlmICh5eXNzcCA9PSB5
eXNzKQogCVlZQUJPUlQ7CiAKLSAgICAgIFlZRFNZTVBSSU5URiAoIkVycm9yOiBwb3BwaW5nIiwg
eXlzdG9zWyp5eXNzcF0sIHl5dnNwLCB5eWxzcCk7Ci0gICAgICB5eWRlc3RydWN0ICh5eXN0b3Nb
eXlzdGF0ZV0sIHl5dnNwKTsKLSAgICAgIFlZUE9QU1RBQ0s7CisKKyAgICAgIHl5ZGVzdHJ1Y3Qg
KCJFcnJvcjogcG9wcGluZyIsCisJCSAgeXlzdG9zW3l5c3RhdGVdLCB5eXZzcCk7CisgICAgICBZ
WVBPUFNUQUNLICgxKTsKICAgICAgIHl5c3RhdGUgPSAqeXlzc3A7CiAgICAgICBZWV9TVEFDS19Q
UklOVCAoeXlzcywgeXlzc3ApOwogICAgIH0KQEAgLTM2OTksMTEgKzM5OTksMTIgQEAKICAgaWYg
KHl5biA9PSBZWUZJTkFMKQogICAgIFlZQUNDRVBUOwogCi0gIFlZRFBSSU5URiAoKHN0ZGVyciwg
IlNoaWZ0aW5nIGVycm9yIHRva2VuLCAiKSk7Ci0KICAgKisreXl2c3AgPSB5eWx2YWw7CiAKIAor
ICAvKiBTaGlmdCB0aGUgZXJyb3IgdG9rZW4uICAqLworICBZWV9TWU1CT0xfUFJJTlQgKCJTaGlm
dGluZyIsIHl5c3Rvc1t5eW5dLCB5eXZzcCwgeXlsc3ApOworCiAgIHl5c3RhdGUgPSB5eW47CiAg
IGdvdG8geXluZXdzdGF0ZTsKIApAQCAtMzcyMywyMSArNDAyNCwzOSBAQAogICBnb3RvIHl5cmV0
dXJuOwogCiAjaWZuZGVmIHl5b3ZlcmZsb3cKLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS4KLXwgeXlvdmVyZmxvd2xhYiAtLSBwYXJzZXIgb3ZlcmZsb3cg
Y29tZXMgaGVyZS4gIHwKLWAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tKi8KLXl5b3ZlcmZsb3dsYWI6Ci0gIHl5ZXJyb3IgKCJwYXJzZXIgc3RhY2sgb3ZlcmZs
b3ciKTsKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS4KK3wgeXlleGhhdXN0ZWRsYWIgLS0gbWVtb3J5IGV4aGF1c3Rpb24gY29tZXMgaGVyZS4gIHwK
K2AtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3l5
ZXhoYXVzdGVkbGFiOgorICB5eWVycm9yIChZWV8oIm1lbW9yeSBleGhhdXN0ZWQiKSk7CiAgIHl5
cmVzdWx0ID0gMjsKICAgLyogRmFsbCB0aHJvdWdoLiAgKi8KICNlbmRpZgogCiB5eXJldHVybjoK
KyAgaWYgKHl5Y2hhciAhPSBZWUVPRiAmJiB5eWNoYXIgIT0gWVlFTVBUWSkKKyAgICAgeXlkZXN0
cnVjdCAoIkNsZWFudXA6IGRpc2NhcmRpbmcgbG9va2FoZWFkIiwKKwkJIHl5dG9rZW4sICZ5eWx2
YWwpOworICAvKiBEbyBub3QgcmVjbGFpbSB0aGUgc3ltYm9scyBvZiB0aGUgcnVsZSB3aGljaCBh
Y3Rpb24gdHJpZ2dlcmVkCisgICAgIHRoaXMgWVlBQk9SVCBvciBZWUFDQ0VQVC4gICovCisgIFlZ
UE9QU1RBQ0sgKHl5bGVuKTsKKyAgWVlfU1RBQ0tfUFJJTlQgKHl5c3MsIHl5c3NwKTsKKyAgd2hp
bGUgKHl5c3NwICE9IHl5c3MpCisgICAgeworICAgICAgeXlkZXN0cnVjdCAoIkNsZWFudXA6IHBv
cHBpbmciLAorCQkgIHl5c3Rvc1sqeXlzc3BdLCB5eXZzcCk7CisgICAgICBZWVBPUFNUQUNLICgx
KTsKKyAgICB9CiAjaWZuZGVmIHl5b3ZlcmZsb3cKICAgaWYgKHl5c3MgIT0geXlzc2EpCiAgICAg
WVlTVEFDS19GUkVFICh5eXNzKTsKICNlbmRpZgotICByZXR1cm4geXlyZXN1bHQ7CisjaWYgWVlF
UlJPUl9WRVJCT1NFCisgIGlmICh5eW1zZyAhPSB5eW1zZ2J1ZikKKyAgICBZWVNUQUNLX0ZSRUUg
KHl5bXNnKTsKKyNlbmRpZgorICAvKiBNYWtlIHN1cmUgWVlJRCBpcyB1c2VkLiAgKi8KKyAgcmV0
dXJuIFlZSUQgKHl5cmVzdWx0KTsKIH0KIAogCmRpZmYgLXVyIGZhdWx0eS9DU1NHcmFtbWFyLmgg
Z29vZC9DU1NHcmFtbWFyLmgKLS0tIGZhdWx0eS9DU1NHcmFtbWFyLmgJMjAwOC0xMS0yNCAxNjoy
MjozMS4wMDAwMDAwMDAgKzAyMDAKKysrIGdvb2QvQ1NTR3JhbW1hci5oCTIwMDgtMTEtMjQgMTY6
MzE6MjEuMDAwMDAwMDAwICswMjAwCkBAIC0xLDkgKzEsMTEgQEAKICNpZm5kZWYgQ1NTR3JhbW1h
cl9oCiAjZGVmaW5lIENTU0dyYW1tYXJfaAotLyogQSBCaXNvbiBwYXJzZXIsIG1hZGUgYnkgR05V
IEJpc29uIDEuODc1ZC4gICovCisvKiBBIEJpc29uIHBhcnNlciwgbWFkZSBieSBHTlUgQmlzb24g
Mi4zLiAgKi8KIAotLyogU2tlbGV0b24gcGFyc2VyIGZvciBZYWNjLWxpa2UgcGFyc2luZyB3aXRo
IEJpc29uLAotICAgQ29weXJpZ2h0IChDKSAxOTg0LCAxOTg5LCAxOTkwLCAyMDAwLCAyMDAxLCAy
MDAyLCAyMDAzLCAyMDA0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLyogU2tlbGV0
b24gaW50ZXJmYWNlIGZvciBCaXNvbidzIFlhY2MtbGlrZSBwYXJzZXJzIGluIEMKKworICAgQ29w
eXJpZ2h0IChDKSAxOTg0LCAxOTg5LCAxOTkwLCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0
LCAyMDA1LCAyMDA2CisgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIAogICAgVGhp
cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
ciBtb2RpZnkKICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CkBAIC0xNywxMyArMTksMjEgQEAKIAogICAgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVl
IFNvZnR3YXJlCi0gICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAz
MzAsCi0gICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCisgICBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuICAqLworCisvKiBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB5b3UgbWF5IGNy
ZWF0ZSBhIGxhcmdlciB3b3JrIHRoYXQgY29udGFpbnMKKyAgIHBhcnQgb3IgYWxsIG9mIHRoZSBC
aXNvbiBwYXJzZXIgc2tlbGV0b24gYW5kIGRpc3RyaWJ1dGUgdGhhdCB3b3JrCisgICB1bmRlciB0
ZXJtcyBvZiB5b3VyIGNob2ljZSwgc28gbG9uZyBhcyB0aGF0IHdvcmsgaXNuJ3QgaXRzZWxmIGEK
KyAgIHBhcnNlciBnZW5lcmF0b3IgdXNpbmcgdGhlIHNrZWxldG9uIG9yIGEgbW9kaWZpZWQgdmVy
c2lvbiB0aGVyZW9mCisgICBhcyBhIHBhcnNlciBza2VsZXRvbi4gIEFsdGVybmF0aXZlbHksIGlm
IHlvdSBtb2RpZnkgb3IgcmVkaXN0cmlidXRlCisgICB0aGUgcGFyc2VyIHNrZWxldG9uIGl0c2Vs
ZiwgeW91IG1heSAoYXQgeW91ciBvcHRpb24pIHJlbW92ZSB0aGlzCisgICBzcGVjaWFsIGV4Y2Vw
dGlvbiwgd2hpY2ggd2lsbCBjYXVzZSB0aGUgc2tlbGV0b24gYW5kIHRoZSByZXN1bHRpbmcKKyAg
IEJpc29uIG91dHB1dCBmaWxlcyB0byBiZSBsaWNlbnNlZCB1bmRlciB0aGUgR05VIEdlbmVyYWwg
UHVibGljCisgICBMaWNlbnNlIHdpdGhvdXQgdGhpcyBzcGVjaWFsIGV4Y2VwdGlvbi4KIAotLyog
QXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgd2hlbiB0aGlzIGZpbGUgaXMgY29waWVkIGJ5IEJpc29u
IGludG8gYQotICAgQmlzb24gb3V0cHV0IGZpbGUsIHlvdSBtYXkgdXNlIHRoYXQgb3V0cHV0IGZp
bGUgd2l0aG91dCByZXN0cmljdGlvbi4KLSAgIFRoaXMgc3BlY2lhbCBleGNlcHRpb24gd2FzIGFk
ZGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KLSAgIGluIHZlcnNpb24gMS4yNCBv
ZiBCaXNvbi4gICovCisgICBUaGlzIHNwZWNpYWwgZXhjZXB0aW9uIHdhcyBhZGRlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGluCisgICB2ZXJzaW9uIDIuMiBvZiBCaXNvbi4gICov
CiAKIC8qIFRva2Vucy4gICovCiAjaWZuZGVmIFlZVE9LRU5UWVBFCkBAIC05NCw2ICsxMDQsNyBA
QAogICAgICBWQVJDQUxMID0gMzE3CiAgICB9OwogI2VuZGlmCisvKiBUb2tlbnMuICAqLwogI2Rl
ZmluZSBUT0tFTl9FT0YgMAogI2RlZmluZSBVTklNUE9SVEFOVF9UT0sgMjU4CiAjZGVmaW5lIFdI
SVRFU1BBQ0UgMjU5CkBAIC0xNTksOSArMTcwLDEwIEBACiAKIAogCi0jaWYgISBkZWZpbmVkIChZ
WVNUWVBFKSAmJiAhIGRlZmluZWQgKFlZU1RZUEVfSVNfREVDTEFSRUQpCisjaWYgISBkZWZpbmVk
IFlZU1RZUEUgJiYgISBkZWZpbmVkIFlZU1RZUEVfSVNfREVDTEFSRUQKK3R5cGVkZWYgdW5pb24g
WVlTVFlQRQogI2xpbmUgNTggIldlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSIKLXR5cGVkZWYgdW5p
b24gWVlTVFlQRSB7Cit7CiAgICAgYm9vbCBib29sZWFuOwogICAgIGNoYXIgY2hhcmFjdGVyOwog
ICAgIGludCBpbnRlZ2VyOwpAQCAtMTgyLDkgKzE5NCwxMCBAQAogICAgIFdlYktpdENTU0tleWZy
YW1lUnVsZSoga2V5ZnJhbWVSdWxlOwogICAgIFdlYktpdENTU0tleWZyYW1lc1J1bGUqIGtleWZy
YW1lc1J1bGU7CiAgICAgZmxvYXQgdmFsOwotfSBZWVNUWVBFOwotLyogTGluZSAxMjQxIG9mIHlh
Y2MuYy4gICovCi0jbGluZSAxODYgIi4vRGVyaXZlZFNvdXJjZXMvQ1NTR3JhbW1hci5ocHAiCit9
CisvKiBMaW5lIDE0ODkgb2YgeWFjYy5jLiAgKi8KKyNsaW5lIDE5OCAiLi9EZXJpdmVkU291cmNl
cy9DU1NHcmFtbWFyLmhwcCIKKwlZWVNUWVBFOwogIyBkZWZpbmUgeXlzdHlwZSBZWVNUWVBFIC8q
IG9ic29sZXNjZW50OyB3aWxsIGJlIHdpdGhkcmF3biAqLwogIyBkZWZpbmUgWVlTVFlQRV9JU19E
RUNMQVJFRCAxCiAjIGRlZmluZSBZWVNUWVBFX0lTX1RSSVZJQUwgMQpAQCAtMTkyLDYgKzIwNSw0
IEBACiAKIAogCi0KLQogI2VuZGlmCmRpZmYgLXVyIGZhdWx0eS9DU1NHcmFtbWFyLmhwcCBnb29k
L0NTU0dyYW1tYXIuaHBwCi0tLSBmYXVsdHkvQ1NTR3JhbW1hci5ocHAJMjAwOC0xMS0yNCAxNjoy
NTo1OC4wMDAwMDAwMDAgKzAyMDAKKysrIGdvb2QvQ1NTR3JhbW1hci5ocHAJMjAwOC0xMS0yNCAx
NjoyNjowOC4wMDAwMDAwMDAgKzAyMDAKQEAgLTEsNyArMSw5IEBACi0vKiBBIEJpc29uIHBhcnNl
ciwgbWFkZSBieSBHTlUgQmlzb24gMS44NzVkLiAgKi8KKy8qIEEgQmlzb24gcGFyc2VyLCBtYWRl
IGJ5IEdOVSBCaXNvbiAyLjMuICAqLwogCi0vKiBTa2VsZXRvbiBwYXJzZXIgZm9yIFlhY2MtbGlr
ZSBwYXJzaW5nIHdpdGggQmlzb24sCi0gICBDb3B5cmlnaHQgKEMpIDE5ODQsIDE5ODksIDE5OTAs
IDIwMDAsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuCisvKiBTa2VsZXRvbiBpbnRlcmZhY2UgZm9yIEJpc29uJ3MgWWFjYy1saWtlIHBhcnNlcnMg
aW4gQworCisgICBDb3B5cmlnaHQgKEMpIDE5ODQsIDE5ODksIDE5OTAsIDIwMDAsIDIwMDEsIDIw
MDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYKKyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLgogCiAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKQEAgLTE1LDEzICsxNywyMSBA
QAogCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3Jp
dGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQ
bGFjZSAtIFN1aXRlIDMzMCwKLSAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KKyAg
IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICBC
b3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4gICovCisKKy8qIEFzIGEgc3BlY2lhbCBleGNlcHRp
b24sIHlvdSBtYXkgY3JlYXRlIGEgbGFyZ2VyIHdvcmsgdGhhdCBjb250YWlucworICAgcGFydCBv
ciBhbGwgb2YgdGhlIEJpc29uIHBhcnNlciBza2VsZXRvbiBhbmQgZGlzdHJpYnV0ZSB0aGF0IHdv
cmsKKyAgIHVuZGVyIHRlcm1zIG9mIHlvdXIgY2hvaWNlLCBzbyBsb25nIGFzIHRoYXQgd29yayBp
c24ndCBpdHNlbGYgYQorICAgcGFyc2VyIGdlbmVyYXRvciB1c2luZyB0aGUgc2tlbGV0b24gb3Ig
YSBtb2RpZmllZCB2ZXJzaW9uIHRoZXJlb2YKKyAgIGFzIGEgcGFyc2VyIHNrZWxldG9uLiAgQWx0
ZXJuYXRpdmVseSwgaWYgeW91IG1vZGlmeSBvciByZWRpc3RyaWJ1dGUKKyAgIHRoZSBwYXJzZXIg
c2tlbGV0b24gaXRzZWxmLCB5b3UgbWF5IChhdCB5b3VyIG9wdGlvbikgcmVtb3ZlIHRoaXMKKyAg
IHNwZWNpYWwgZXhjZXB0aW9uLCB3aGljaCB3aWxsIGNhdXNlIHRoZSBza2VsZXRvbiBhbmQgdGhl
IHJlc3VsdGluZworICAgQmlzb24gb3V0cHV0IGZpbGVzIHRvIGJlIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBHTlUgR2VuZXJhbCBQdWJsaWMKKyAgIExpY2Vuc2Ugd2l0aG91dCB0aGlzIHNwZWNpYWwgZXhj
ZXB0aW9uLgogCi0vKiBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB3aGVuIHRoaXMgZmlsZSBpcyBj
b3BpZWQgYnkgQmlzb24gaW50byBhCi0gICBCaXNvbiBvdXRwdXQgZmlsZSwgeW91IG1heSB1c2Ug
dGhhdCBvdXRwdXQgZmlsZSB3aXRob3V0IHJlc3RyaWN0aW9uLgotICAgVGhpcyBzcGVjaWFsIGV4
Y2VwdGlvbiB3YXMgYWRkZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgotICAgaW4g
dmVyc2lvbiAxLjI0IG9mIEJpc29uLiAgKi8KKyAgIFRoaXMgc3BlY2lhbCBleGNlcHRpb24gd2Fz
IGFkZGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gaW4KKyAgIHZlcnNpb24gMi4y
IG9mIEJpc29uLiAgKi8KIAogLyogVG9rZW5zLiAgKi8KICNpZm5kZWYgWVlUT0tFTlRZUEUKQEAg
LTkyLDYgKzEwMiw3IEBACiAgICAgIFZBUkNBTEwgPSAzMTcKICAgIH07CiAjZW5kaWYKKy8qIFRv
a2Vucy4gICovCiAjZGVmaW5lIFRPS0VOX0VPRiAwCiAjZGVmaW5lIFVOSU1QT1JUQU5UX1RPSyAy
NTgKICNkZWZpbmUgV0hJVEVTUEFDRSAyNTkKQEAgLTE1Nyw5ICsxNjgsMTAgQEAKIAogCiAKLSNp
ZiAhIGRlZmluZWQgKFlZU1RZUEUpICYmICEgZGVmaW5lZCAoWVlTVFlQRV9JU19ERUNMQVJFRCkK
KyNpZiAhIGRlZmluZWQgWVlTVFlQRSAmJiAhIGRlZmluZWQgWVlTVFlQRV9JU19ERUNMQVJFRAor
dHlwZWRlZiB1bmlvbiBZWVNUWVBFCiAjbGluZSA1OCAiV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55
IgotdHlwZWRlZiB1bmlvbiBZWVNUWVBFIHsKK3sKICAgICBib29sIGJvb2xlYW47CiAgICAgY2hh
ciBjaGFyYWN0ZXI7CiAgICAgaW50IGludGVnZXI7CkBAIC0xODAsOSArMTkyLDEwIEBACiAgICAg
V2ViS2l0Q1NTS2V5ZnJhbWVSdWxlKiBrZXlmcmFtZVJ1bGU7CiAgICAgV2ViS2l0Q1NTS2V5ZnJh
bWVzUnVsZSoga2V5ZnJhbWVzUnVsZTsKICAgICBmbG9hdCB2YWw7Ci19IFlZU1RZUEU7Ci0vKiBM
aW5lIDEyNDEgb2YgeWFjYy5jLiAgKi8KLSNsaW5lIDE4NiAiZmF1bHR5L0NTU0dyYW1tYXIuaHBw
IgorfQorLyogTGluZSAxNDg5IG9mIHlhY2MuYy4gICovCisjbGluZSAxOTggImdvb2QvQ1NTR3Jh
bW1hci5ocHAiCisJWVlTVFlQRTsKICMgZGVmaW5lIHl5c3R5cGUgWVlTVFlQRSAvKiBvYnNvbGVz
Y2VudDsgd2lsbCBiZSB3aXRoZHJhd24gKi8KICMgZGVmaW5lIFlZU1RZUEVfSVNfREVDTEFSRUQg
MQogIyBkZWZpbmUgWVlTVFlQRV9JU19UUklWSUFMIDEKQEAgLTE5MCw1ICsyMDMsMyBAQAogCiAK
IAotCi0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25429</attachid>
            <date>2008-11-24 07:17:54 -0800</date>
            <delta_ts>2008-11-24 09:07:13 -0800</delta_ts>
            <desc>And finally, a patch to check for bison version &gt;=2.2 when compiling for ARM</desc>
            <filename>0001-Check-for-bison-version-2.2-or-greater-on-ARM.-Earli.patch</filename>
            <type>text/plain</type>
            <size>1541</size>
            <attacher name="Kalle Vahlman">zuh</attacher>
            
              <data encoding="base64">RnJvbSA2ODQwMWM5NzEwZmFlYWY4MjI1YjE4MDIxOTJmNzVhMzI5NmY1OWYzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBLYWxsZSBWYWhsbWFuIDxrYWxsZS52YWhsbWFuQG1vdmlhbC5j
b20+CkRhdGU6IE1vbiwgMjQgTm92IDIwMDggMTY6NDg6MzQgKzAyMDAKU3ViamVjdDogW1BBVENI
XSBDaGVjayBmb3IgYmlzb24gdmVyc2lvbiAyLjIgb3IgZ3JlYXRlciBvbiBBUk0uIEVhcmxpZXIg
dmVyc2lvbnMgcHJvZHVjZQogY29kZSB0aGF0IGNyYXNoZXMgb24gQVJNIGRldmljZXMuCgotLS0K
IENoYW5nZUxvZyAgICB8ICAgIDkgKysrKysrKysrCiBjb25maWd1cmUuYWMgfCAgICA5ICsrKysr
KysrKwogMiBmaWxlcyBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspLCAwIGRlbGV0aW9ucygtKQoK
ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA3MzhlMjFkLi44N2NlNDgy
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMDgtMTEtMjQgIEthbGxlIFZhaGxtYW4gIDxrYWxsZS52YWhsbWFuQG1vdmlhbC5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hlY2sgZm9y
IGJpc29uIHZlcnNpb24gMi4yIG9yIGdyZWF0ZXIgb24gQVJNLiBFYXJsaWVyIHZlcnNpb25zIHBy
b2R1Y2UKKyAgICAgICAgY29kZSB0aGF0IGNyYXNoZXMgb24gQVJNIGRldmljZXMuCisKKyAgICAg
ICAgKiBjb25maWd1cmUuYWM6CisKIDIwMDgtMDktMDkgIEpvZXJnIEJvcm5lbWFubiAgPGpvZXJn
LmJvcm5lbWFubkB0cm9sbHRlY2guY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhh
dXNtYW5uLgpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCmluZGV4IGY0
OGY5OGYuLjFkZDVkNjYgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1cmUu
YWMKQEAgLTk5LDYgKzk5LDE1IEBAIGZpCiBBQ19QQVRIX1BST0coQklTT04sIGJpc29uKQogaWYg
dGVzdCAteiAiJEJJU09OIjsgdGhlbgogICAgQUNfTVNHX0VSUk9SKFtZb3UgbmVlZCB0aGUgJ2Jp
c29uJyBwYXJzZXIgZ2VuZXJhdG9yIHRvIGNvbXBpbGUgV2ViS2l0XSkKK2Vsc2UKKyAgICBjYXNl
ICIkdGFyZ2V0X2NwdSIgaW4KKyAgICAgICAgYXJtKQorICAgICAgICAgICAgQklTT05fVkVSU0lP
Tj1gJEJJU09OIC0tdmVyc2lvbiB8IGhlYWQgLTEgfCBzZWQgJ3MsLipcIFwoWzAtOV0qXC5bMC05
XSpcKSQsXDEsJ2AKKyAgICAgICAgICAgIEFYX0NPTVBBUkVfVkVSU0lPTihbMi4yXSxbZ3RdLFsk
QklTT05fVkVSU0lPTl0sCisgICAgICAgICAgICAgICAgQUNfTVNHX0VSUk9SKFtZb3UgbmVlZCBh
dCBsZWFzdCB2ZXJzaW9uIDIuMiBvZiB0aGUgJ2Jpc29uJyBwYXJzZXIgZ2VuZXJhdG9yIHRvIGNv
bXBpbGUgV2ViS2l0IGNvcnJlY3RseSBmb3IgQVJNXSkpCisgICAgICAgIDs7CisgICAgICAgICop
IDs7CisgICAgZXNhYwogZmkKIAogQUNfUEFUSF9QUk9HKEZMRVgsIGZsZXgpCi0tIAoxLjUuNi4x
Cgo=
</data>
<flag name="review"
          id="11791"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>