<?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>81717</bug_id>
          
          <creation_ts>2012-03-20 16:23:49 -0700</creation_ts>
          <short_desc>Update ANGLE in WebKit</short_desc>
          <delta_ts>2012-03-27 12:22:07 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dean Jackson">dino</reporter>
          <assigned_to name="Dean Jackson">dino</assigned_to>
          <cc>kbr</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zmo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>583583</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2012-03-20 16:23:49 -0700</bug_when>
    <thetext>ANGLE is currently r1000+ while ToT is r939. This is causing failures such as https://bugs.webkit.org/show_bug.cgi?id=70989.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583586</commentid>
    <comment_count>1</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2012-03-20 16:24:13 -0700</bug_when>
    <thetext>Chromium must import a different version of ANGLE?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>583588</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2012-03-20 16:24:23 -0700</bug_when>
    <thetext>&lt;rdar://problem/11086369&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588020</commentid>
    <comment_count>3</comment_count>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-03-26 12:53:35 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Chromium must import a different version of ANGLE?

Yes, Chromium frequently pulls in the latest version of ANGLE via its multiple repository management tool, gclient. See the angle-related variable in http://src.chromium.org/viewvc/chrome/trunk/src/DEPS?view=markup .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588407</commentid>
    <comment_count>4</comment_count>
      <attachid>133951</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2012-03-26 18:08:53 -0700</bug_when>
    <thetext>Created attachment 133951
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588435</commentid>
    <comment_count>5</comment_count>
      <attachid>133951</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-03-26 18:31:24 -0700</bug_when>
    <thetext>Comment on attachment 133951
Patch

Looks good as long as it compiles and has been tested. r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588447</commentid>
    <comment_count>6</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2012-03-26 18:41:32 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 133951 [details])
&gt; Looks good as long as it compiles and has been tested. r=me

Yep, thanks.

I&apos;ll let the EWS bots run through just in case. Ignore all the style errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>589135</commentid>
    <comment_count>7</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2012-03-27 12:22:07 -0700</bug_when>
    <thetext>Committed r112300: &lt;http://trac.webkit.org/changeset/112300&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133951</attachid>
            <date>2012-03-26 18:08:53 -0700</date>
            <delta_ts>2012-03-26 18:31:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81717-20120327120836.patch</filename>
            <type>text/plain</type>
            <size>490076</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9DaGFuZ2VMb2cgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cKaW5k
ZXggYzg5NDgxNzlmZDY1MTk4ZGUxYzBjZGZjZmIzYjFkMmJkYjg2YTA0Ni4uOGVjYjMwYTliZTcz
ZTE4NWRlOWY0MGI4ODczM2U5OTc0MmM0ZWYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDQzMCBAQAorMjAxMi0wMy0yNiAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBs
ZS5jb20+CisKKyAgICAgICAgVXBkYXRlIEFOR0xFIGluIFdlYktpdAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODE3MTcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgYW5nbGVwcm9qZWN0IHRvIHIx
MDA5LiBTeW5jZWQgdGhlIHNvdXJjZSBkaXJlY3RvcnkKKyAgICAgICAgYmV0d2VlbiB0aGUgYW5n
bGUgcmVwb3NpdG9yeSBhbmQgV2ViS2l0LiBSYW4gdGhlIE9TIFggTGlvbgorICAgICAgICB2ZXJz
aW9uIG9mIEJpc29uIG92ZXIgdGhlIGdsc2xhbmcubCBpbnB1dCB3aGljaCBnZW5lcmF0ZXMKKyAg
ICAgICAgYSBzbGlnaHRseSBkaWZmZXJlbnQgb3V0cHV0IHRoYW4gYW5nbGUgcHJvdmlkZWQuCisK
KyAgICAgICAgKiBpbmNsdWRlL0VHTC9lZ2xleHQuaDoKKyAgICAgICAgKiBpbmNsdWRlL0dMRVMy
L2dsMmV4dC5oOgorICAgICAgICAqIGluY2x1ZGUvR0xTTEFORy9TaGFkZXJMYW5nLmg6CisgICAg
ICAgICogc3JjL2NvbW1vbi9SZWZDb3VudE9iamVjdC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1JlZkNvdW50T2JqZWN0LmNwcC4KKyAgICAg
ICAgKFJlZkNvdW50T2JqZWN0OjpSZWZDb3VudE9iamVjdCk6CisgICAgICAgIChSZWZDb3VudE9i
amVjdDo6flJlZkNvdW50T2JqZWN0KToKKyAgICAgICAgKFJlZkNvdW50T2JqZWN0OjphZGRSZWYp
OgorICAgICAgICAoUmVmQ291bnRPYmplY3Q6OnJlbGVhc2UpOgorICAgICAgICAoUmVmQ291bnRP
YmplY3RCaW5kaW5nUG9pbnRlcjo6c2V0KToKKyAgICAgICAgKiBzcmMvY29tbW9uL1JlZkNvdW50
T2JqZWN0Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xF
U3YyL1JlZkNvdW50T2JqZWN0LmguCisgICAgICAgIChSZWZDb3VudE9iamVjdCk6CisgICAgICAg
IChSZWZDb3VudE9iamVjdDo6aWQpOgorICAgICAgICAoUmVmQ291bnRPYmplY3RCaW5kaW5nUG9p
bnRlcik6CisgICAgICAgIChSZWZDb3VudE9iamVjdEJpbmRpbmdQb2ludGVyOjpSZWZDb3VudE9i
amVjdEJpbmRpbmdQb2ludGVyKToKKyAgICAgICAgKFJlZkNvdW50T2JqZWN0QmluZGluZ1BvaW50
ZXI6On5SZWZDb3VudE9iamVjdEJpbmRpbmdQb2ludGVyKToKKyAgICAgICAgKFJlZkNvdW50T2Jq
ZWN0QmluZGluZ1BvaW50ZXI6OmdldCk6CisgICAgICAgIChSZWZDb3VudE9iamVjdEJpbmRpbmdQ
b2ludGVyOjppZCk6CisgICAgICAgIChSZWZDb3VudE9iamVjdEJpbmRpbmdQb2ludGVyOjpvcGVy
YXRvciAhICk6CisgICAgICAgIChCaW5kaW5nUG9pbnRlcik6CisgICAgICAgIChCaW5kaW5nUG9p
bnRlcjo6c2V0KToKKyAgICAgICAgKEJpbmRpbmdQb2ludGVyOjpnZXQpOgorICAgICAgICAoQmlu
ZGluZ1BvaW50ZXI6Om9wZXJhdG9yIC0+ICk6CisgICAgICAgICogc3JjL2NvbW1vbi9kZWJ1Zy5j
cHA6CisgICAgICAgIChnbDo6b3V0cHV0KToKKyAgICAgICAgKiBzcmMvY29tbW9uL3ZlcnNpb24u
aDoKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvQmFzZVR5cGVzLmg6CisgICAgICAgICogc3JjL2Nv
bXBpbGVyL0NvbXBpbGVyLmNwcDoKKyAgICAgICAgKFRDb21waWxlcjo6VENvbXBpbGVyKToKKyAg
ICAgICAgKFRDb21waWxlcjo6flRDb21waWxlcik6CisgICAgICAgIChUQ29tcGlsZXI6Om1hcExv
bmdWYXJpYWJsZU5hbWVzKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvQ29uc3RhbnRVbmlvbi5o
OgorICAgICAgICAoQ29uc3RhbnRVbmlvbjo6Q29uc3RhbnRVbmlvbik6CisgICAgICAgIChDb25z
dGFudFVuaW9uOjpvcGVyYXRvcj09KToKKyAgICAgICAgKENvbnN0YW50VW5pb246Om9wZXJhdG9y
Pik6CisgICAgICAgIChDb25zdGFudFVuaW9uOjpvcGVyYXRvcjwpOgorICAgICAgICAqIHNyYy9j
b21waWxlci9JbnRlcm1lZGlhdGUuY3BwOgorICAgICAgICAoVEludGVybUNvbnN0YW50VW5pb246
OmZvbGQpOgorICAgICAgICAqIHNyYy9jb21waWxlci9NYXBMb25nVmFyaWFibGVOYW1lcy5jcHA6
CisgICAgICAgIChMb25nTmFtZU1hcDo6TG9uZ05hbWVNYXApOgorICAgICAgICAoTG9uZ05hbWVN
YXA6On5Mb25nTmFtZU1hcCk6CisgICAgICAgIChMb25nTmFtZU1hcDo6R2V0SW5zdGFuY2UpOgor
ICAgICAgICAoTG9uZ05hbWVNYXA6OlJlbGVhc2UpOgorICAgICAgICAoTG9uZ05hbWVNYXA6OkZp
bmQpOgorICAgICAgICAoTG9uZ05hbWVNYXA6Okluc2VydCk6CisgICAgICAgIChMb25nTmFtZU1h
cDo6U2l6ZSk6CisgICAgICAgIChNYXBMb25nVmFyaWFibGVOYW1lczo6TWFwTG9uZ1ZhcmlhYmxl
TmFtZXMpOgorICAgICAgICAoTWFwTG9uZ1ZhcmlhYmxlTmFtZXM6OnZpc2l0U3ltYm9sKToKKyAg
ICAgICAgKE1hcExvbmdWYXJpYWJsZU5hbWVzOjptYXBHbG9iYWxMb25nTmFtZSk6CisgICAgICAg
ICogc3JjL2NvbXBpbGVyL01hcExvbmdWYXJpYWJsZU5hbWVzLmg6CisgICAgICAgIChMb25nTmFt
ZU1hcCk6CisgICAgICAgIChNYXBMb25nVmFyaWFibGVOYW1lcyk6CisgICAgICAgICogc3JjL2Nv
bXBpbGVyL091dHB1dEhMU0wuY3BwOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6Ok91dHB1dEhM
U0wpOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OmhlYWRlcik6CisgICAgICAgIChzaDo6T3V0
cHV0SExTTDo6dmlzaXRTeW1ib2wpOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OnZpc2l0VW5h
cnkpOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OnZpc2l0QWdncmVnYXRlKToKKyAgICAgICAg
KHNoOjpPdXRwdXRITFNMOjp2aXNpdExvb3ApOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6Omhh
bmRsZUV4Y2Vzc2l2ZUxvb3ApOgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OnR5cGVTdHJpbmcp
OgorICAgICAgICAoc2g6Ok91dHB1dEhMU0w6OmFkZENvbnN0cnVjdG9yKToKKyAgICAgICAgKHNo
OjpPdXRwdXRITFNMOjpkZWNvcmF0ZVVuaWZvcm0pOgorICAgICAgICAqIHNyYy9jb21waWxlci9P
dXRwdXRITFNMLmg6CisgICAgICAgIChPdXRwdXRITFNMKToKKyAgICAgICAgKiBzcmMvY29tcGls
ZXIvUG9vbEFsbG9jLmNwcDoKKyAgICAgICAgKFRBbGxvY2F0aW9uOjpjaGVja0d1YXJkQmxvY2sp
OgorICAgICAgICAqIHNyYy9jb21waWxlci9TaEhhbmRsZS5oOgorICAgICAgICAoVENvbXBpbGVy
KToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvU3ltYm9sVGFibGUuY3BwOgorICAgICAgICAqIHNy
Yy9jb21waWxlci9TeW1ib2xUYWJsZS5oOgorICAgICAgICAoVFN5bWJvbFRhYmxlKToKKyAgICAg
ICAgKFRTeW1ib2xUYWJsZTo6Z2V0T3V0ZXJMZXZlbCk6CisgICAgICAgICogc3JjL2NvbXBpbGVy
L1ZhcmlhYmxlSW5mby5jcHA6CisgICAgICAgIChnZXRWYXJpYWJsZURhdGFUeXBlKToKKyAgICAg
ICAgKiBzcmMvY29tcGlsZXIvZ2xzbGFuZy5sOgorICAgICAgICAqIHNyYy9jb21waWxlci9nbHNs
YW5nLnk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL2dsc2xhbmdfbGV4LmNwcDoKKyAgICAgICAg
KHl5X2J1ZmZlcl9zdGF0ZSk6CisgICAgICAgICh5eWd1dHNfdCk6CisgICAgICAgIChpbnB1dCk6
CisgICAgICAgICh5eWVuc3VyZV9idWZmZXJfc3RhY2spOgorICAgICAgICAoeXlfc2Nhbl9ieXRl
cyk6CisgICAgICAgICh5eWdldF9sZW5nKToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvZ2xzbGFu
Z190YWIuY3BwOgorICAgICAgICAqIHNyYy9jb21waWxlci9vc2luY2x1ZGUuaDoKKyAgICAgICAg
KiBzcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL2NwcC5jOgorICAgICAgICAqIHNyYy9jb21waWxl
ci9wcmVwcm9jZXNzb3IvbWVtb3J5LmM6CisgICAgICAgICogc3JjL2NvbXBpbGVyL3ByZXByb2Nl
c3Nvci9uZXcvQ29udGV4dC5jcHA6IEFkZGVkLgorICAgICAgICAoaXNNYWNyb05hbWVSZXNlcnZl
ZCk6CisgICAgICAgIChwcCk6CisgICAgICAgIChwcDo6Q29udGV4dDo6Q29udGV4dCk6CisgICAg
ICAgIChwcDo6Q29udGV4dDo6fkNvbnRleHQpOgorICAgICAgICAocHA6OkNvbnRleHQ6OmluaXQp
OgorICAgICAgICAocHA6OkNvbnRleHQ6OnByb2Nlc3MpOgorICAgICAgICAocHA6OkNvbnRleHQ6
OmRlZmluZU1hY3JvKToKKyAgICAgICAgKHBwOjpDb250ZXh0Ojp1bmRlZmluZU1hY3JvKToKKyAg
ICAgICAgKHBwOjpDb250ZXh0Ojppc01hY3JvRGVmaW5lZCk6CisgICAgICAgIChwcDo6Q29udGV4
dDo6cmVzZXQpOgorICAgICAgICAocHA6OkNvbnRleHQ6OmRlZmluZUJ1aWx0SW5NYWNybyk6Cisg
ICAgICAgICogc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9uZXcvQ29udGV4dC5oOiBBZGRlZC4K
KyAgICAgICAgKHBwKToKKyAgICAgICAgKENvbnRleHQpOgorICAgICAgICAocHA6OkNvbnRleHQ6
OmxleGVyKToKKyAgICAgICAgKHBwOjpDb250ZXh0OjpvdXRwdXQpOgorICAgICAgICAqIHNyYy9j
b21waWxlci9wcmVwcm9jZXNzb3IvbmV3L0lucHV0LmNwcDogQWRkZWQuCisgICAgICAgIChwcCk6
CisgICAgICAgIChwcDo6SW5wdXQ6OklucHV0KToKKyAgICAgICAgKHBwOjpJbnB1dDo6ZW9mKToK
KyAgICAgICAgKHBwOjpJbnB1dDo6cmVhZCk6CisgICAgICAgIChwcDo6SW5wdXQ6OmdldENoYXIp
OgorICAgICAgICAocHA6OklucHV0OjpwZWVrQ2hhcik6CisgICAgICAgIChwcDo6SW5wdXQ6OnN3
aXRjaFRvTmV4dFN0cmluZyk6CisgICAgICAgIChwcDo6SW5wdXQ6OmlzU3RyaW5nRW1wdHkpOgor
ICAgICAgICAocHA6OklucHV0OjpzdHJpbmdMZW5ndGgpOgorICAgICAgICAqIHNyYy9jb21waWxl
ci9wcmVwcm9jZXNzb3IvbmV3L0lucHV0Lmg6IEFkZGVkLgorICAgICAgICAocHApOgorICAgICAg
ICAoSW5wdXQpOgorICAgICAgICAocHA6OklucHV0OjplcnJvcik6CisgICAgICAgIChwcDo6SW5w
dXQ6OnN0cmluZ0luZGV4KToKKyAgICAgICAgKiBzcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL25l
dy9NYWNyby5jcHA6IEFkZGVkLgorICAgICAgICAocHApOgorICAgICAgICAocHA6Ok1hY3JvOjpN
YWNybyk6CisgICAgICAgIChwcDo6TWFjcm86On5NYWNybyk6CisgICAgICAgICogc3JjL2NvbXBp
bGVyL3ByZXByb2Nlc3Nvci9uZXcvTWFjcm8uaDogQWRkZWQuCisgICAgICAgIChwcCk6CisgICAg
ICAgIChNYWNybyk6CisgICAgICAgIChwcDo6TWFjcm86OnR5cGUpOgorICAgICAgICAocHA6Ok1h
Y3JvOjppZGVudGlmaWVyKToKKyAgICAgICAgKHBwOjpNYWNybzo6cGFyYW1ldGVycyk6CisgICAg
ICAgIChwcDo6TWFjcm86OnJlcGxhY2VtZW50cyk6CisgICAgICAgICogc3JjL2NvbXBpbGVyL3By
ZXByb2Nlc3Nvci9uZXcvUHJlcHJvY2Vzc29yLmNwcDogQWRkZWQuCisgICAgICAgIChwcCk6Cisg
ICAgICAgIChwcDo6UHJlcHJvY2Vzc29yOjpQcmVwcm9jZXNzb3IpOgorICAgICAgICAocHA6OlBy
ZXByb2Nlc3Nvcjo6flByZXByb2Nlc3Nvcik6CisgICAgICAgIChwcDo6UHJlcHJvY2Vzc29yOjpp
bml0KToKKyAgICAgICAgKHBwOjpQcmVwcm9jZXNzb3I6OnByb2Nlc3MpOgorICAgICAgICAocHA6
OlByZXByb2Nlc3Nvcjo6cmVzZXQpOgorICAgICAgICAqIHNyYy9jb21waWxlci9wcmVwcm9jZXNz
b3IvbmV3L1ByZXByb2Nlc3Nvci5oOiBBZGRlZC4KKyAgICAgICAgKHBwKToKKyAgICAgICAgKFBy
ZXByb2Nlc3Nvcik6CisgICAgICAgIChwcDo6UHJlcHJvY2Vzc29yOjpiZWdpbik6CisgICAgICAg
IChwcDo6UHJlcHJvY2Vzc29yOjplbmQpOgorICAgICAgICAqIHNyYy9jb21waWxlci9wcmVwcm9j
ZXNzb3IvbmV3L1Rva2VuLmNwcDogQWRkZWQuCisgICAgICAgIChwcCk6CisgICAgICAgIChwcDo6
VG9rZW46OmVuY29kZUxvY2F0aW9uKToKKyAgICAgICAgKHBwOjpUb2tlbjo6ZGVjb2RlTG9jYXRp
b24pOgorICAgICAgICAocHA6OlRva2VuOjpUb2tlbik6CisgICAgICAgIChwcDo6VG9rZW46On5U
b2tlbik6CisgICAgICAgIChwcDo6b3BlcmF0b3I8PCk6CisgICAgICAgICogc3JjL2NvbXBpbGVy
L3ByZXByb2Nlc3Nvci9uZXcvVG9rZW4uaDogQWRkZWQuCisgICAgICAgIChwcCk6CisgICAgICAg
IChUb2tlbik6CisgICAgICAgIChwcDo6VG9rZW46OmxvY2F0aW9uKToKKyAgICAgICAgKHBwOjpU
b2tlbjo6dHlwZSk6CisgICAgICAgIChwcDo6VG9rZW46OnZhbHVlKToKKyAgICAgICAgKiBzcmMv
Y29tcGlsZXIvcHJlcHJvY2Vzc29yL25ldy9nZW5lcmF0ZV9wYXJzZXIuc2g6IEFkZGVkLgorICAg
ICAgICAqIHNyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvbmV3L3BwLmw6IEFkZGVkLgorICAgICAg
ICAqIHNyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvbmV3L3BwLnk6IEFkZGVkLgorICAgICAgICAq
IHNyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvbmV3L3BwX2xleC5jcHA6IEFkZGVkLgorICAgICAg
ICAoeXlfYnVmZmVyX3N0YXRlKToKKyAgICAgICAgKHl5X3RyYW5zX2luZm8pOgorICAgICAgICAo
eXlndXRzX3QpOgorICAgICAgICAoeXlfZ2V0X3ByZXZpb3VzX3N0YXRlKToKKyAgICAgICAgKHl5
X3RyeV9OVUxfdHJhbnMpOgorICAgICAgICAoaW5wdXQpOgorICAgICAgICAocHByZXN0YXJ0KToK
KyAgICAgICAgKHBwX3N3aXRjaF90b19idWZmZXIpOgorICAgICAgICAocHBfbG9hZF9idWZmZXJf
c3RhdGUpOgorICAgICAgICAocHBfY3JlYXRlX2J1ZmZlcik6CisgICAgICAgIChwcF9kZWxldGVf
YnVmZmVyKToKKyAgICAgICAgKHBwX2luaXRfYnVmZmVyKToKKyAgICAgICAgKHBwX2ZsdXNoX2J1
ZmZlcik6CisgICAgICAgIChwcHB1c2hfYnVmZmVyX3N0YXRlKToKKyAgICAgICAgKHBwcG9wX2J1
ZmZlcl9zdGF0ZSk6CisgICAgICAgIChwcGVuc3VyZV9idWZmZXJfc3RhY2spOgorICAgICAgICAo
cHBfc2Nhbl9idWZmZXIpOgorICAgICAgICAocHBfc2Nhbl9zdHJpbmcpOgorICAgICAgICAocHBf
c2Nhbl9ieXRlcyk6CisgICAgICAgICh5eV9wdXNoX3N0YXRlKToKKyAgICAgICAgKHl5X3BvcF9z
dGF0ZSk6CisgICAgICAgICh5eV90b3Bfc3RhdGUpOgorICAgICAgICAoeXlfZmF0YWxfZXJyb3Ip
OgorICAgICAgICAocHBnZXRfZXh0cmEpOgorICAgICAgICAocHBnZXRfbGluZW5vKToKKyAgICAg
ICAgKHBwZ2V0X2NvbHVtbik6CisgICAgICAgIChwcGdldF9pbik6CisgICAgICAgIChwcGdldF9v
dXQpOgorICAgICAgICAocHBnZXRfbGVuZyk6CisgICAgICAgIChwcGdldF90ZXh0KToKKyAgICAg
ICAgKHBwc2V0X2V4dHJhKToKKyAgICAgICAgKHBwc2V0X2xpbmVubyk6CisgICAgICAgIChwcHNl
dF9jb2x1bW4pOgorICAgICAgICAocHBzZXRfaW4pOgorICAgICAgICAocHBzZXRfb3V0KToKKyAg
ICAgICAgKHBwZ2V0X2RlYnVnKToKKyAgICAgICAgKHBwc2V0X2RlYnVnKToKKyAgICAgICAgKHBw
Z2V0X2x2YWwpOgorICAgICAgICAocHBzZXRfbHZhbCk6CisgICAgICAgIChwcGdldF9sbG9jKToK
KyAgICAgICAgKHBwc2V0X2xsb2MpOgorICAgICAgICAocHBsZXhfaW5pdCk6CisgICAgICAgIChw
cGxleF9pbml0X2V4dHJhKToKKyAgICAgICAgKHl5X2luaXRfZ2xvYmFscyk6CisgICAgICAgIChw
cGxleF9kZXN0cm95KToKKyAgICAgICAgKHl5X2ZsZXhfc3RybmNweSk6CisgICAgICAgICh5eV9m
bGV4X3N0cmxlbik6CisgICAgICAgIChwcGFsbG9jKToKKyAgICAgICAgKHBwcmVhbGxvYyk6Cisg
ICAgICAgIChwcGZyZWUpOgorICAgICAgICAoZXh0cmFjdE1hY3JvTmFtZSk6CisgICAgICAgIChw
cCk6CisgICAgICAgIChwcDo6Q29udGV4dDo6cmVhZElucHV0KToKKyAgICAgICAgKHBwOjpDb250
ZXh0Ojppbml0TGV4ZXIpOgorICAgICAgICAocHA6OkNvbnRleHQ6OmRlc3Ryb3lMZXhlcik6Cisg
ICAgICAgICogc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9uZXcvcHBfdGFiLmNwcDogQWRkZWQu
CisgICAgICAgIChZWUxUWVBFKToKKyAgICAgICAgKHl5c3ludGF4X2Vycm9yKToKKyAgICAgICAg
KHl5ZXJyb3IpOgorICAgICAgICAocHVzaENvbmRpdGlvbmFsQmxvY2spOgorICAgICAgICAocG9w
Q29uZGl0aW9uYWxCbG9jayk6CisgICAgICAgIChwcDo6Q29udGV4dDo6cGFyc2UpOgorICAgICAg
ICAqIHNyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvbmV3L3BwX3RhYi5oOiBBZGRlZC4KKyAgICAg
ICAgKFlZTFRZUEUpOgorICAgICAgICAqIHNyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvbmV3L3N0
bF91dGlscy5oOiBBZGRlZC4KKyAgICAgICAgKHBwKToKKyAgICAgICAgKERlbGV0ZSk6CisgICAg
ICAgIChwcDo6RGVsZXRlOjpvcGVyYXRvcigpKToKKyAgICAgICAgKERlbGV0ZVNlY29uZCk6Cisg
ICAgICAgIChwcDo6RGVsZXRlU2Vjb25kOjpvcGVyYXRvcigpKToKKyAgICAgICAgKiBzcmMvY29t
cGlsZXIvcHJlcHJvY2Vzc29yL25ldy90b2tlbl90eXBlLmg6IEFkZGVkLgorICAgICAgICAqIHNy
Yy9jb21waWxlci9wcmVwcm9jZXNzb3Ivc2Nhbm5lci5jOgorICAgICAgICAoeXlsZXhfQ1BQKToK
KyAgICAgICAgKiBzcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL3N5bWJvbHMuYzoKKyAgICAgICAg
KiBzcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL3Rva2Vucy5jOgorICAgICAgICAqIHNyYy9saWJF
R0wvQ29uZmlnLmNwcDoKKyAgICAgICAgKGVnbDo6Q29uZmlnU2V0OjpnZXRDb25maWdzKToKKyAg
ICAgICAgKiBzcmMvbGliRUdML0Rpc3BsYXkuY3BwOgorICAgICAgICAoZWdsOjpEaXNwbGF5Ojpp
bml0aWFsaXplKToKKyAgICAgICAgKGVnbDo6RGlzcGxheTo6dGVybWluYXRlKToKKyAgICAgICAg
KGVnbDo6RGlzcGxheTo6cmVzdG9yZUxvc3REZXZpY2UpOgorICAgICAgICAoZWdsOjpEaXNwbGF5
OjpzeW5jKToKKyAgICAgICAgKGVnbCk6CisgICAgICAgIChlZ2w6OkRpc3BsYXk6OmFsbG9jYXRl
RXZlbnRRdWVyeSk6CisgICAgICAgIChlZ2w6OkRpc3BsYXk6OmZyZWVFdmVudFF1ZXJ5KToKKyAg
ICAgICAgKGVnbDo6RGlzcGxheTo6Z2V0RmxvYXQzMlRleHR1cmVTdXBwb3J0KToKKyAgICAgICAg
KGVnbDo6RGlzcGxheTo6Z2V0RmxvYXQxNlRleHR1cmVTdXBwb3J0KToKKyAgICAgICAgKGVnbDo6
RGlzcGxheTo6Z2V0RXZlbnRRdWVyeVN1cHBvcnQpOgorICAgICAgICAoZWdsOjpEaXNwbGF5Ojpp
bml0RXh0ZW5zaW9uU3RyaW5nKToKKyAgICAgICAgKGVnbDo6RGlzcGxheTo6c2hhcmVIYW5kbGVT
dXBwb3J0ZWQpOgorICAgICAgICAoZWdsOjpEaXNwbGF5OjpnZXRPY2NsdXNpb25RdWVyeVN1cHBv
cnQpOgorICAgICAgICAoZWdsOjpEaXNwbGF5OjpnZXRJbnN0YW5jaW5nU3VwcG9ydCk6CisgICAg
ICAgICogc3JjL2xpYkVHTC9EaXNwbGF5Lmg6CisgICAgICAgIChEaXNwbGF5KToKKyAgICAgICAg
KGVnbDo6RGlzcGxheTo6aXNEM2Q5RXhEZXZpY2UpOgorICAgICAgICAqIHNyYy9saWJFR0wvU3Vy
ZmFjZS5jcHA6CisgICAgICAgIChlZ2w6OlN1cmZhY2U6OnJlc2V0U3dhcENoYWluKToKKyAgICAg
ICAgKiBzcmMvbGliRUdML2xpYkVHTC5jcHA6CisgICAgICAgICogc3JjL2xpYkVHTC9saWJFR0wu
dmNwcm9qOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvQmxpdC5jcHA6CisgICAgICAgIChnbDo6
QmxpdDo6c2V0Q29tbW9uQmxpdFN0YXRlKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL0J1ZmZl
ci5oOgorICAgICAgICAoQnVmZmVyKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL0NvbnRleHQu
Y3BwOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OkNvbnRleHQpOgorICAgICAgICAoZ2w6OkNvbnRl
eHQ6On5Db250ZXh0KToKKyAgICAgICAgKGdsOjpDb250ZXh0OjptYWtlQ3VycmVudCk6CisgICAg
ICAgIChnbDo6Q29udGV4dDo6Z2V0QWN0aXZlUXVlcnkpOgorICAgICAgICAoZ2wpOgorICAgICAg
ICAoZ2w6OkNvbnRleHQ6OmNyZWF0ZUZlbmNlKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpjcmVh
dGVRdWVyeSk6CisgICAgICAgIChnbDo6Q29udGV4dDo6ZGVsZXRlUXVlcnkpOgorICAgICAgICAo
Z2w6OkNvbnRleHQ6OmJlZ2luUXVlcnkpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmVuZFF1ZXJ5
KToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpnZXRRdWVyeSk6CisgICAgICAgIChnbDo6Q29udGV4
dDo6YXBwbHlWZXJ0ZXhCdWZmZXIpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmFwcGx5SW5kZXhC
dWZmZXIpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnJlYWRQaXhlbHMpOgorICAgICAgICAoZ2w6
OkNvbnRleHQ6OmNsZWFyKToKKyAgICAgICAgKGdsOjpDb250ZXh0OjpkcmF3QXJyYXlzKToKKyAg
ICAgICAgKGdsOjpDb250ZXh0OjpkcmF3RWxlbWVudHMpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6
OnN5bmMpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmRyYXdMaW5lTG9vcCk6CisgICAgICAgIChn
bDo6Q29udGV4dDo6c3VwcG9ydHNPY2NsdXNpb25RdWVyaWVzKToKKyAgICAgICAgKGdsOjpDb250
ZXh0OjpzdXBwb3J0c0luc3RhbmNpbmcpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OnNldFZlcnRl
eEF0dHJpYkRpdmlzb3IpOgorICAgICAgICAoZ2w6OkNvbnRleHQ6OmluaXRFeHRlbnNpb25TdHJp
bmcpOgorICAgICAgICAoZ2w6OlZlcnRleERlY2xhcmF0aW9uQ2FjaGU6OmFwcGx5RGVjbGFyYXRp
b24pOgorICAgICAgICAoZ2w6OlZlcnRleERlY2xhcmF0aW9uQ2FjaGU6Om1hcmtTdGF0ZURpcnR5
KToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL0NvbnRleHQuaDoKKyAgICAgICAgKGdsKToKKyAg
ICAgICAgKGdsOjpWZXJ0ZXhBdHRyaWJ1dGU6OlZlcnRleEF0dHJpYnV0ZSk6CisgICAgICAgIChT
dGF0ZSk6CisgICAgICAgIChWZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlKToKKyAgICAgICAgKENvbnRl
eHQpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvRmVuY2UuY3BwOgorICAgICAgICAoZ2w6OkZl
bmNlOjpGZW5jZSk6CisgICAgICAgIChnbDo6RmVuY2U6On5GZW5jZSk6CisgICAgICAgIChnbDo6
RmVuY2U6OnNldEZlbmNlKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL0ZlbmNlLmg6CisgICAg
ICAgIChlZ2wpOgorICAgICAgICAoRmVuY2UpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvRnJh
bWVidWZmZXIuY3BwOgorICAgICAgICAoZ2w6OkZyYW1lYnVmZmVyOjpsb29rdXBSZW5kZXJidWZm
ZXIpOgorICAgICAgICAoZ2w6OkZyYW1lYnVmZmVyOjpkZXRhY2hUZXh0dXJlKToKKyAgICAgICAg
KGdsOjpGcmFtZWJ1ZmZlcjo6Y29tcGxldGVuZXNzKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3Yy
L0ZyYW1lYnVmZmVyLmg6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9JbmRleERhdGFNYW5hZ2Vy
LmNwcDoKKyAgICAgICAgKGdsOjpJbmRleERhdGFNYW5hZ2VyOjpJbmRleERhdGFNYW5hZ2VyKToK
KyAgICAgICAgKGdsOjpJbmRleERhdGFNYW5hZ2VyOjp+SW5kZXhEYXRhTWFuYWdlcik6CisgICAg
ICAgIChnbDo6Y29tcHV0ZVJhbmdlKToKKyAgICAgICAgKGdsOjpJbmRleERhdGFNYW5hZ2VyOjpw
cmVwYXJlSW5kZXhEYXRhKToKKyAgICAgICAgKGdsOjpJbmRleERhdGFNYW5hZ2VyOjpnZXRDb3Vu
dGluZ0luZGljZXMpOgorICAgICAgICAoZ2wpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvSW5k
ZXhEYXRhTWFuYWdlci5oOgorICAgICAgICAoSW5kZXhEYXRhTWFuYWdlcik6CisgICAgICAgICog
c3JjL2xpYkdMRVN2Mi9Qcm9ncmFtLmNwcDoKKyAgICAgICAgKGdsOjpQcm9ncmFtOjpnZXRVbmlm
b3JtTG9jYXRpb24pOgorICAgICAgICAoZ2w6OlByb2dyYW06OnNldFVuaWZvcm0xZnYpOgorICAg
ICAgICAoZ2w6OlByb2dyYW06OnNldFVuaWZvcm0yZnYpOgorICAgICAgICAoZ2w6OlByb2dyYW06
OnNldFVuaWZvcm0zZnYpOgorICAgICAgICAoZ2w6OlByb2dyYW06OnNldFVuaWZvcm00ZnYpOgor
ICAgICAgICAoZ2w6OlByb2dyYW06OnNldFVuaWZvcm0xaXYpOgorICAgICAgICAoZ2w6OlByb2dy
YW06OnNldFVuaWZvcm0yaXYpOgorICAgICAgICAoZ2w6OlByb2dyYW06OnNldFVuaWZvcm0zaXYp
OgorICAgICAgICAoZ2w6OlByb2dyYW06OnNldFVuaWZvcm00aXYpOgorICAgICAgICAoZ2w6OlBy
b2dyYW06OnBhY2tWYXJ5aW5ncyk6CisgICAgICAgIChnbDo6UHJvZ3JhbTo6bGlua1Zhcnlpbmdz
KToKKyAgICAgICAgKGdsOjpQcm9ncmFtOjpkZWZpbmVVbmlmb3JtKToKKyAgICAgICAgKGdsOjpQ
cm9ncmFtOjpjcmVhdGVVbmlmb3JtKToKKyAgICAgICAgKGdsOjpQcm9ncmFtOjphcHBseVVuaWZv
cm1uYnYpOgorICAgICAgICAoZ2w6OlByb2dyYW06OmFwcGx5VW5pZm9ybTFpdik6CisgICAgICAg
IChnbDo6UHJvZ3JhbTo6YXBwbHlVbmlmb3JtMml2KToKKyAgICAgICAgKGdsOjpQcm9ncmFtOjph
cHBseVVuaWZvcm0zaXYpOgorICAgICAgICAoZ2w6OlByb2dyYW06OmFwcGx5VW5pZm9ybTRpdik6
CisgICAgICAgIChnbDo6UHJvZ3JhbTo6Z2V0SW5mb0xvZyk6CisgICAgICAgICogc3JjL2xpYkdM
RVN2Mi9Qcm9ncmFtLmg6CisgICAgICAgIChQcm9ncmFtKToKKyAgICAgICAgKiBzcmMvbGliR0xF
U3YyL1F1ZXJ5LmNwcDogQWRkZWQuCisgICAgICAgIChnbCk6CisgICAgICAgIChnbDo6UXVlcnk6
OlF1ZXJ5KToKKyAgICAgICAgKGdsOjpRdWVyeTo6flF1ZXJ5KToKKyAgICAgICAgKGdsOjpRdWVy
eTo6YmVnaW4pOgorICAgICAgICAoZ2w6OlF1ZXJ5OjplbmQpOgorICAgICAgICAoZ2w6OlF1ZXJ5
OjpnZXRSZXN1bHQpOgorICAgICAgICAoZ2w6OlF1ZXJ5Ojppc1Jlc3VsdEF2YWlsYWJsZSk6Cisg
ICAgICAgIChnbDo6UXVlcnk6OmdldFR5cGUpOgorICAgICAgICAoZ2w6OlF1ZXJ5Ojp0ZXN0UXVl
cnkpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvUXVlcnkuaDogQWRkZWQuCisgICAgICAgIChn
bCk6CisgICAgICAgIChRdWVyeSk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9SZW5kZXJidWZm
ZXIuY3BwOgorICAgICAgICAoZ2wpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlckludGVyZmFj
ZTo6YWRkUHJveHlSZWYpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlckludGVyZmFjZTo6cmVs
ZWFzZVByb3h5KToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXJUZXh0dXJlOjpSZW5kZXJidWZm
ZXJUZXh0dXJlKToKKyAgICAgICAgKGdsOjpSZW5kZXJidWZmZXJUZXh0dXJlOjp+UmVuZGVyYnVm
ZmVyVGV4dHVyZSk6CisgICAgICAgIChnbDo6UmVuZGVyYnVmZmVyVGV4dHVyZTo6YWRkUHJveHlS
ZWYpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1ZmZlclRleHR1cmU6OnJlbGVhc2VQcm94eSk6Cisg
ICAgICAgIChnbDo6UmVuZGVyYnVmZmVyOjphZGRSZWYpOgorICAgICAgICAoZ2w6OlJlbmRlcmJ1
ZmZlcjo6cmVsZWFzZSk6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9SZW5kZXJidWZmZXIuaDoK
KyAgICAgICAgKGdsKToKKyAgICAgICAgKFJlbmRlcmJ1ZmZlckludGVyZmFjZSk6CisgICAgICAg
IChSZW5kZXJidWZmZXJUZXh0dXJlKToKKyAgICAgICAgKFJlbmRlcmJ1ZmZlcik6CisgICAgICAg
ICogc3JjL2xpYkdMRVN2Mi9TaGFkZXIuY3BwOgorICAgICAgICAoZ2w6OlNoYWRlcjo6U2hhZGVy
KToKKyAgICAgICAgKGdsOjpTaGFkZXI6OmdldEluZm9Mb2cpOgorICAgICAgICAoZ2w6OlNoYWRl
cjo6Z2V0U291cmNlSW1wbCk6CisgICAgICAgIChnbCk6CisgICAgICAgIChnbDo6U2hhZGVyOjpp
bml0aWFsaXplQ29tcGlsZXIpOgorICAgICAgICAoZ2w6OlNoYWRlcjo6cGFyc2VWYXJ5aW5ncyk6
CisgICAgICAgIChnbDo6U2hhZGVyOjp1bmNvbXBpbGUpOgorICAgICAgICAoZ2w6OlNoYWRlcjo6
Y29tcGlsZVRvSExTTCk6CisgICAgICAgIChnbDo6VmVydGV4U2hhZGVyOjp1bmNvbXBpbGUpOgor
ICAgICAgICAoZ2w6OlZlcnRleFNoYWRlcjo6Y29tcGlsZSk6CisgICAgICAgIChnbDo6VmVydGV4
U2hhZGVyOjpwYXJzZUF0dHJpYnV0ZXMpOgorICAgICAgICAoZ2w6OkZyYWdtZW50U2hhZGVyOjpj
b21waWxlKToKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL1NoYWRlci5oOgorICAgICAgICAoU2hh
ZGVyKToKKyAgICAgICAgKFZlcnRleFNoYWRlcik6CisgICAgICAgICogc3JjL2xpYkdMRVN2Mi9U
ZXh0dXJlLmNwcDoKKyAgICAgICAgKGdsOjpUZXh0dXJlMkQ6OlRleHR1cmUyRCk6CisgICAgICAg
IChnbDo6VGV4dHVyZTJEOjp+VGV4dHVyZTJEKToKKyAgICAgICAgKGdsKToKKyAgICAgICAgKGds
OjpUZXh0dXJlMkQ6OmFkZFByb3h5UmVmKToKKyAgICAgICAgKGdsOjpUZXh0dXJlMkQ6OnJlbGVh
c2VQcm94eSk6CisgICAgICAgIChnbDo6VGV4dHVyZTJEOjpnZXRSZW5kZXJidWZmZXIpOgorICAg
ICAgICAoZ2w6OlRleHR1cmVDdWJlTWFwOjpUZXh0dXJlQ3ViZU1hcCk6CisgICAgICAgIChnbDo6
VGV4dHVyZUN1YmVNYXA6On5UZXh0dXJlQ3ViZU1hcCk6CisgICAgICAgIChnbDo6VGV4dHVyZUN1
YmVNYXA6OmFkZFByb3h5UmVmKToKKyAgICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1hcDo6cmVsZWFz
ZVByb3h5KToKKyAgICAgICAgKGdsOjpUZXh0dXJlQ3ViZU1hcDo6aXNTYW1wbGVyQ29tcGxldGUp
OgorICAgICAgICAoZ2w6OlRleHR1cmVDdWJlTWFwOjpjb252ZXJ0VG9SZW5kZXJUYXJnZXQpOgor
ICAgICAgICAoZ2w6OlRleHR1cmVDdWJlTWFwOjpnZXRSZW5kZXJidWZmZXIpOgorICAgICAgICAq
IHNyYy9saWJHTEVTdjIvVGV4dHVyZS5oOgorICAgICAgICAoVGV4dHVyZSk6CisgICAgICAgIChU
ZXh0dXJlMkQpOgorICAgICAgICAoVGV4dHVyZUN1YmVNYXApOgorICAgICAgICAqIHNyYy9saWJH
TEVTdjIvVmVydGV4RGF0YU1hbmFnZXIuY3BwOgorICAgICAgICAoZ2w6OlZlcnRleERhdGFNYW5h
Z2VyOjp3cml0ZUF0dHJpYnV0ZURhdGEpOgorICAgICAgICAoZ2w6OlZlcnRleERhdGFNYW5hZ2Vy
OjpwcmVwYXJlVmVydGV4RGF0YSk6CisgICAgICAgIChnbDo6VmVydGV4RGF0YU1hbmFnZXI6OnNw
YWNlUmVxdWlyZWQpOgorICAgICAgICAoZ2wpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvVmVy
dGV4RGF0YU1hbmFnZXIuaDoKKyAgICAgICAgKFRyYW5zbGF0ZWRBdHRyaWJ1dGUpOgorICAgICAg
ICAoVmVydGV4RGF0YU1hbmFnZXIpOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIvbGliR0xFU3Yy
LmNwcDoKKyAgICAgICAgKiBzcmMvbGliR0xFU3YyL2xpYkdMRVN2Mi5kZWY6CisgICAgICAgICog
c3JjL2xpYkdMRVN2Mi9saWJHTEVTdjIudmNwcm9qOgorICAgICAgICAqIHNyYy9saWJHTEVTdjIv
dXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKGdsOjpJc0ludGVybmFsVGV4dHVyZVRhcmdldCk6Cisg
ICAgICAgICogc3JjL2xpYkdMRVN2Mi91dGlsaXRpZXMuaDoKKyAgICAgICAgKGdsKToKKwogMjAx
Mi0wMy0wOSAgQXNob2QgTmFrYXNoaWFuICA8YXNob2RuYWthc2hpYW5AeWFob28uY29tPgogCiAg
ICAgICAgIEJhc2ggc2NyaXB0cyBzaG91bGQgc3VwcG9ydCBMRiBlbmRpbmdzIG9ubHkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvRUdML2VnbGV4dC5oIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9FR0wvZWdsZXh0LmgKaW5kZXggMmQ0YWIyMjM1
MDQ2YjQzZjM1ZDY0Y2M3NWFhNWU1N2FjODFkNTUxMi4uYjY3MDg0MGQxMmU0YWIxZDcxMzRlNDkw
Y2I3ZmJjMjIzYWZlMjM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5j
bHVkZS9FR0wvZWdsZXh0LmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9F
R0wvZWdsZXh0LmgKQEAgLTYsNyArNiw3IEBAIGV4dGVybiAiQyIgewogI2VuZGlmCiAKIC8qCi0q
KiBDb3B5cmlnaHQgKGMpIDIwMDctMjAxMCBUaGUgS2hyb25vcyBHcm91cCBJbmMuCisqKiBDb3B5
cmlnaHQgKGMpIDIwMDctMjAxMiBUaGUgS2hyb25vcyBHcm91cCBJbmMuCiAqKgogKiogUGVybWlz
c2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0
YWluaW5nIGEKICoqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQvb3IgYXNzb2NpYXRlZCBkb2N1
bWVudGF0aW9uIGZpbGVzICh0aGUKQEAgLTM0LDggKzM0LDggQEAgZXh0ZXJuICJDIiB7CiAKIC8q
IEhlYWRlciBmaWxlIHZlcnNpb24gbnVtYmVyICovCiAvKiBDdXJyZW50IHZlcnNpb24gYXQgaHR0
cDovL3d3dy5raHJvbm9zLm9yZy9yZWdpc3RyeS9lZ2wvICovCi0vKiAkUmV2aXNpb246IDE1MDUy
ICQgb24gJERhdGU6IDIwMTEtMDctMDYgMTc6NDM6NDYgLTA3MDAgKFdlZCwgMDYgSnVsIDIwMTEp
ICQgKi8KLSNkZWZpbmUgRUdMX0VHTEVYVF9WRVJTSU9OIDEwCisvKiAkUmV2aXNpb246IDE2NDcz
ICQgb24gJERhdGU6IDIwMTItMDEtMDQgMDI6MjA6NDggLTA4MDAgKFdlZCwgMDQgSmFuIDIwMTIp
ICQgKi8KKyNkZWZpbmUgRUdMX0VHTEVYVF9WRVJTSU9OIDExCiAKICNpZm5kZWYgRUdMX0tIUl9j
b25maWdfYXR0cmlicwogI2RlZmluZSBFR0xfS0hSX2NvbmZpZ19hdHRyaWJzIDEKQEAgLTE3OCwx
NSArMTc4LDE1IEBAIHR5cGVkZWYgRUdMQm9vbGVhbiAoRUdMQVBJRU5UUllQIFBGTkVHTEdFVFNZ
TkNBVFRSSUJLSFJQUk9DKSAoRUdMRGlzcGxheSBkcHksIEVHCiAKICNpZm5kZWYgRUdMX05WX2Nv
dmVyYWdlX3NhbXBsZQogI2RlZmluZSBFR0xfTlZfY292ZXJhZ2Vfc2FtcGxlIDEKLSNkZWZpbmUg
RUdMX0NPVkVSQUdFX0JVRkZFUlNfTlYgMHgzMEUwCi0jZGVmaW5lIEVHTF9DT1ZFUkFHRV9TQU1Q
TEVTX05WIDB4MzBFMQorI2RlZmluZSBFR0xfQ09WRVJBR0VfQlVGRkVSU19OVgkJCTB4MzBFMAor
I2RlZmluZSBFR0xfQ09WRVJBR0VfU0FNUExFU19OVgkJCTB4MzBFMQogI2VuZGlmCiAKICNpZm5k
ZWYgRUdMX05WX2RlcHRoX25vbmxpbmVhcgogI2RlZmluZSBFR0xfTlZfZGVwdGhfbm9ubGluZWFy
IDEKLSNkZWZpbmUgRUdMX0RFUFRIX0VOQ09ESU5HX05WIDB4MzBFMgorI2RlZmluZSBFR0xfREVQ
VEhfRU5DT0RJTkdfTlYJCQkweDMwRTIKICNkZWZpbmUgRUdMX0RFUFRIX0VOQ09ESU5HX05PTkVf
TlYgMAotI2RlZmluZSBFR0xfREVQVEhfRU5DT0RJTkdfTk9OTElORUFSX05WIDB4MzBFMworI2Rl
ZmluZSBFR0xfREVQVEhfRU5DT0RJTkdfTk9OTElORUFSX05WCQkweDMwRTMKICNlbmRpZgogCiAj
aWYgS0hST05PU19TVVBQT1JUX0lOVDY0ICAgLyogRUdMVGltZU5WIHJlcXVpcmVzIDY0LWJpdCB1
aW50IHN1cHBvcnQgKi8KQEAgLTMwMSwxNiArMzAxLDE2IEBAIEVHTEFQSSBFR0xCb29sZWFuIGVn
bFF1ZXJ5U3VyZmFjZVBvaW50ZXJBTkdMRShFR0xEaXNwbGF5IGRweSwgRUdMU3VyZmFjZSBzdXJm
YWNlCiB0eXBlZGVmIEVHTEJvb2xlYW4gKEVHTEFQSUVOVFJZUCBQRk5FR0xRVUVSWVNVUkZBQ0VQ
T0lOVEVSQU5HTEVQUk9DKSAoRUdMRGlzcGxheSBkcHksIEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdM
aW50IGF0dHJpYnV0ZSwgdm9pZCAqKnZhbHVlKTsKICNlbmRpZgogCi0jaWZuZGVmIEVHTF9BTkdM
RV9zdXJmYWNlX2QzZF90ZXh0dXJlXzJkX3NoYXJlX2hhbmRsZQotI2RlZmluZSBFR0xfQU5HTEVf
c3VyZmFjZV9kM2RfdGV4dHVyZV8yZF9zaGFyZV9oYW5kbGUgMQotI2RlZmluZSBFR0xfRDNEX1RF
WFRVUkVfMkRfU0hBUkVfSEFORExFX0FOR0xFCTB4MzIwMAotI2VuZGlmCi0KICNpZm5kZWYgRUdM
X0FOR0xFX3NvZnR3YXJlX2Rpc3BsYXkKICNkZWZpbmUgRUdMX0FOR0xFX3NvZnR3YXJlX2Rpc3Bs
YXkgMQogI2RlZmluZSBFR0xfU09GVFdBUkVfRElTUExBWV9BTkdMRSAoKEVHTE5hdGl2ZURpc3Bs
YXlUeXBlKS0xKQogI2VuZGlmCiAKKyNpZm5kZWYgRUdMX0FOR0xFX3N1cmZhY2VfZDNkX3RleHR1
cmVfMmRfc2hhcmVfaGFuZGxlCisjZGVmaW5lIEVHTF9BTkdMRV9zdXJmYWNlX2QzZF90ZXh0dXJl
XzJkX3NoYXJlX2hhbmRsZSAxCisjZGVmaW5lIEVHTF9EM0RfVEVYVFVSRV8yRF9TSEFSRV9IQU5E
TEVfQU5HTEUJMHgzMjAwCisjZW5kaWYKKwogI2lmbmRlZiBFR0xfTlZfY292ZXJhZ2Vfc2FtcGxl
X3Jlc29sdmUKICNkZWZpbmUgRUdMX05WX2NvdmVyYWdlX3NhbXBsZV9yZXNvbHZlIDEKICNkZWZp
bmUgRUdMX0NPVkVSQUdFX1NBTVBMRV9SRVNPTFZFX05WCQkweDMxMzEKQEAgLTMxOCwxNCArMzE4
LDYgQEAgdHlwZWRlZiBFR0xCb29sZWFuIChFR0xBUElFTlRSWVAgUEZORUdMUVVFUllTVVJGQUNF
UE9JTlRFUkFOR0xFUFJPQykgKEVHTERpc3BsYXkKICNkZWZpbmUgRUdMX0NPVkVSQUdFX1NBTVBM
RV9SRVNPTFZFX05PTkVfTlYJMHgzMTMzCiAjZW5kaWYKIAotI2lmbmRlZiBFR0xfRVhUX2NyZWF0
ZV9jb250ZXh0X3JvYnVzdG5lc3MKLSNkZWZpbmUgRUdMX0VYVF9jcmVhdGVfY29udGV4dF9yb2J1
c3RuZXNzIDEKLSNkZWZpbmUgRUdMX0NPTlRFWFRfT1BFTkdMX1JPQlVTVF9BQ0NFU1NfRVhUICAg
ICAgICAgICAgICAgIDB4MzBCRgotI2RlZmluZSBFR0xfQ09OVEVYVF9PUEVOR0xfUkVTRVRfTk9U
SUZJQ0FUSU9OX1NUUkFURUdZX0VYVCAgMHgzMTM4Ci0jZGVmaW5lIEVHTF9OT19SRVNFVF9OT1RJ
RklDQVRJT05fRVhUICAgICAgICAgICAgICAgICAgICAgICAweDMxQkUKLSNkZWZpbmUgRUdMX0xP
U0VfQ09OVEVYVF9PTl9SRVNFVF9FWFQgICAgICAgICAgICAgICAgICAgICAgIDB4MzFCRgotI2Vu
ZGlmCi0KICNpZiBLSFJPTk9TX1NVUFBPUlRfSU5UNjQgICAvKiBFR0xUaW1lS0hSIHJlcXVpcmVz
IDY0LWJpdCB1aW50IHN1cHBvcnQgKi8KICNpZm5kZWYgRUdMX05WX3N5c3RlbV90aW1lCiAjZGVm
aW5lIEVHTF9OVl9zeXN0ZW1fdGltZSAxCkBAIC0zNDEsNiArMzMzLDE0IEBAIHR5cGVkZWYgRUdM
dWludDY0TlYgKEVHTEFQSUVOVFJZUCBQRk5FR0xHRVRTWVNURU1USU1FTlZQUk9DKSAodm9pZCk7
CiAjZW5kaWYKICNlbmRpZgogCisjaWZuZGVmIEVHTF9FWFRfY3JlYXRlX2NvbnRleHRfcm9idXN0
bmVzcworI2RlZmluZSBFR0xfRVhUX2NyZWF0ZV9jb250ZXh0X3JvYnVzdG5lc3MgMQorI2RlZmlu
ZSBFR0xfQ09OVEVYVF9PUEVOR0xfUk9CVVNUX0FDQ0VTU19FWFQJMHgzMEJGCisjZGVmaW5lIEVH
TF9DT05URVhUX09QRU5HTF9SRVNFVF9OT1RJRklDQVRJT05fU1RSQVRFR1lfRVhUIDB4MzEzOAor
I2RlZmluZSBFR0xfTk9fUkVTRVRfTk9USUZJQ0FUSU9OX0VYVAkJMHgzMUJFCisjZGVmaW5lIEVH
TF9MT1NFX0NPTlRFWFRfT05fUkVTRVRfRVhUCQkweDMxQkYKKyNlbmRpZgorCiAjaWZkZWYgX19j
cGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
aW5jbHVkZS9HTEVTMi9nbDJleHQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUv
R0xFUzIvZ2wyZXh0LmgKaW5kZXggNTIzM2Y0YTE2ZDNjYzU4OGZlNzRhYTNhZGU2NzIyZmYyMjA0
NmI5OC4uYTEyNDAxNDE3MmEyNzkwYjAzMjg0MGVkM2NmYjA2NDhkZWY0Mzk0NCAxMDA2NDQKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTEVTMi9nbDJleHQuaAorKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dMRVMyL2dsMmV4dC5oCkBAIC0xLDcgKzEs
NyBAQAogI2lmbmRlZiBfX2dsMmV4dF9oXwogI2RlZmluZSBfX2dsMmV4dF9oXwogCi0vKiAkUmV2
aXNpb246IDE1MDQ5ICQgb24gJERhdGU6OiAyMDExLTA3LTA2IDE3OjI4OjE2IC0wNzAwICMkICov
CisvKiAkUmV2aXNpb246IDE2NDgyICQgb24gJERhdGU6OiAyMDEyLTAxLTA0IDEzOjQ0OjU1IC0w
NTAwICMkICovCiAKICNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CkBAIC0yMzMsNiAr
MjMzLDExIEBAIHR5cGVkZWYgdm9pZCogR0xlZ2xJbWFnZU9FUzsKICNkZWZpbmUgR0xfRlJBTUVC
VUZGRVJfQVRUQUNITUVOVF9BTkdMRSAgICAgICAgICAgICAgICAgICAgICAgICAweDkzQTMKICNl
bmRpZgogCisvKiBHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzICovCisjaWZuZGVmIEdMX0FOR0xF
X2luc3RhbmNlZF9hcnJheXMKKyNkZWZpbmUgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9ESVZJU09S
X0FOR0xFICAgICAgICAgICAgICAgICAgICAweDg4RkUKKyNlbmRpZgorCiAvKi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSoKICAqIEFQUExFIGV4dGVuc2lvbiB0b2tlbnMKICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KQEAg
LTI4Nyw2ICsyOTIsMjkgQEAgdHlwZWRlZiB2b2lkKiBHTGVnbEltYWdlT0VTOwogI2RlZmluZSBH
TF9NQVhfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4
ODAwOAogI2VuZGlmCiAKKy8qIEdMX0VYVF9jb2xvcl9idWZmZXJfaGFsZl9mbG9hdCAqLworI2lm
bmRlZiBHTF9FWFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQKKyNkZWZpbmUgR0xfUkdCQTE2Rl9F
WFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4MUEKKyNkZWZp
bmUgR0xfUkdCMTZGX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAweDg4MUIKKyNkZWZpbmUgR0xfUkcxNkZfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAweDgyMkYKKyNkZWZpbmUgR0xfUjE2Rl9FWFQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyMkQKKyNkZWZpbmUgR0xfRlJBTUVC
VUZGRVJfQVRUQUNITUVOVF9DT01QT05FTlRfVFlQRV9FWFQgICAgICAgICAgICAweDgyMTEKKyNk
ZWZpbmUgR0xfVU5TSUdORURfTk9STUFMSVpFRF9FWFQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAweDhDMTcKKyNlbmRpZgorCisvKiBHTF9FWFRfZGVidWdfbGFiZWwgKi8KKyNpZm5kZWYg
R0xfRVhUX2RlYnVnX2xhYmVsCisjZGVmaW5lIEdMX1BST0dSQU1fUElQRUxJTkVfT0JKRUNUX0VY
VCAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4QTRGCisjZGVmaW5lIEdMX1BST0dSQU1fT0JK
RUNUX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4QjQwCisjZGVmaW5l
IEdMX1NIQURFUl9PQkpFQ1RfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MHg4QjQ4CisjZGVmaW5lIEdMX0JVRkZFUl9PQkpFQ1RfRVhUICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMHg5MTUxCisjZGVmaW5lIEdMX1FVRVJZX09CSkVDVF9FWFQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MTUzCisjZGVmaW5lIEdMX1ZFUlRFWF9B
UlJBWV9PQkpFQ1RfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MTU0CisjZW5k
aWYKKworLyogR0xfRVhUX2RlYnVnX21hcmtlciAqLworLyogTm8gbmV3IHRva2VucyBpbnRyb2R1
Y2VkIGJ5IHRoaXMgZXh0ZW5zaW9uLiAqLworCiAvKiBHTF9FWFRfZGlzY2FyZF9mcmFtZWJ1ZmZl
ciAqLwogI2lmbmRlZiBHTF9FWFRfZGlzY2FyZF9mcmFtZWJ1ZmZlcgogI2RlZmluZSBHTF9DT0xP
Ul9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTgwMApA
QCAtMjk0LDkgKzMyMiwyNiBAQCB0eXBlZGVmIHZvaWQqIEdMZWdsSW1hZ2VPRVM7CiAjZGVmaW5l
IEdMX1NURU5DSUxfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MHgxODAyCiAjZW5kaWYKIAorLyogR0xfRVhUX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVy
ZSAqLworI2lmbmRlZiBHTF9FWFRfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJlCisjZGVm
aW5lIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9TQU1QTEVTX0VYVCAgICAgICAg
ICAgMHg4RDZDCisjZGVmaW5lIEdMX1JFTkRFUkJVRkZFUl9TQU1QTEVTX0VYVCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMHg5MTMzCisjZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExF
VEVfTVVMVElTQU1QTEVfRVhUICAgICAgICAgICAgICAgMHg5MTM0CisjZGVmaW5lIEdMX01BWF9T
QU1QTEVTX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MTM1Cisj
ZW5kaWYKKwogLyogR0xfRVhUX211bHRpX2RyYXdfYXJyYXlzICovCiAvKiBObyBuZXcgdG9rZW5z
IGludHJvZHVjZWQgYnkgdGhpcyBleHRlbnNpb24uICovCiAKKy8qIEdMX0VYVF9vY2NsdXNpb25f
cXVlcnlfYm9vbGVhbiAqLworI2lmbmRlZiBHTF9FWFRfb2NjbHVzaW9uX3F1ZXJ5X2Jvb2xlYW4K
KyNkZWZpbmUgR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0VYVCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAweDhDMkYKKyNkZWZpbmUgR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElW
RV9FWFQgICAgICAgICAgICAgICAgICAweDhENkEKKyNkZWZpbmUgR0xfQ1VSUkVOVF9RVUVSWV9F
WFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4NjUKKyNkZWZpbmUgR0xf
UVVFUllfUkVTVUxUX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4
NjYKKyNkZWZpbmUgR0xfUVVFUllfUkVTVUxUX0FWQUlMQUJMRV9FWFQgICAgICAgICAgICAgICAg
ICAgICAgICAgICAweDg4NjcKKyNlbmRpZgorCiAvKiBHTF9FWFRfcmVhZF9mb3JtYXRfYmdyYSAq
LwogI2lmbmRlZiBHTF9FWFRfcmVhZF9mb3JtYXRfYmdyYQogI2RlZmluZSBHTF9CR1JBX0VYVCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODBFMQpAQCAtMzA0
LDIzICszNDksNDQgQEAgdHlwZWRlZiB2b2lkKiBHTGVnbEltYWdlT0VTOwogI2RlZmluZSBHTF9V
TlNJR05FRF9TSE9SVF8xXzVfNV81X1JFVl9FWFQgICAgICAgICAgICAgICAgICAgICAgIDB4ODM2
NgogI2VuZGlmCiAKKy8qIEdMX0VYVF9yb2J1c3RuZXNzICovCisjaWZuZGVmIEdMX0VYVF9yb2J1
c3RuZXNzCisvKiByZXVzZSBHTF9OT19FUlJPUiAqLworI2RlZmluZSBHTF9HVUlMVFlfQ09OVEVY
VF9SRVNFVF9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODI1MworI2RlZmluZSBH
TF9JTk5PQ0VOVF9DT05URVhUX1JFU0VUX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4
ODI1NAorI2RlZmluZSBHTF9VTktOT1dOX0NPTlRFWFRfUkVTRVRfRVhUICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDB4ODI1NQorI2RlZmluZSBHTF9DT05URVhUX1JPQlVTVF9BQ0NFU1NfRVhU
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTBGMworI2RlZmluZSBHTF9SRVNFVF9OT1RJ
RklDQVRJT05fU1RSQVRFR1lfRVhUICAgICAgICAgICAgICAgICAgICAgIDB4ODI1NgorI2RlZmlu
ZSBHTF9MT1NFX0NPTlRFWFRfT05fUkVTRVRfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAg
IDB4ODI1MgorI2RlZmluZSBHTF9OT19SRVNFVF9OT1RJRklDQVRJT05fRVhUICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDB4ODI2MQorI2VuZGlmCisKKy8qIEdMX0VYVF9zZXBhcmF0ZV9zaGFk
ZXJfb2JqZWN0cyAqLworI2lmbmRlZiBHTF9FWFRfc2VwYXJhdGVfc2hhZGVyX29iamVjdHMKKyNk
ZWZpbmUgR0xfVkVSVEVYX1NIQURFUl9CSVRfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAweDAwMDAwMDAxCisjZGVmaW5lIEdMX0ZSQUdNRU5UX1NIQURFUl9CSVRfRVhUICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMgorI2RlZmluZSBHTF9BTExfU0hBREVS
X0JJVFNfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RkZGRkZGRkYKKyNk
ZWZpbmUgR0xfUFJPR1JBTV9TRVBBUkFCTEVfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAweDgyNTgKKyNkZWZpbmUgR0xfQUNUSVZFX1BST0dSQU1fRVhUICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAweDgyNTkKKyNkZWZpbmUgR0xfUFJPR1JBTV9QSVBFTElORV9C
SU5ESU5HX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAweDgyNUEKKyNlbmRpZgorCiAvKiBH
TF9FWFRfc2hhZGVyX3RleHR1cmVfbG9kICovCiAvKiBObyBuZXcgdG9rZW5zIGludHJvZHVjZWQg
YnkgdGhpcyBleHRlbnNpb24uICovCiAKLS8qIEdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ry
b3BpYyAqLwotI2lmbmRlZiBHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMKLSNkZWZp
bmUgR0xfVEVYVFVSRV9NQVhfQU5JU09UUk9QWV9FWFQgICAgICAgICAgICAgICAgICAgICAgICAg
ICAweDg0RkUKLSNkZWZpbmUgR0xfTUFYX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUICAgICAg
ICAgICAgICAgICAgICAgICAweDg0RkYKKy8qIEdMX0VYVF9zaGFkb3dfc2FtcGxlcnMgKi8KKyNp
Zm5kZWYgR0xfRVhUX3NoYWRvd19zYW1wbGVycworI2RlZmluZSBHTF9URVhUVVJFX0NPTVBBUkVf
TU9ERV9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODg0QworI2RlZmluZSBHTF9U
RVhUVVJFX0NPTVBBUkVfRlVOQ19FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODg0
RAorI2RlZmluZSBHTF9DT01QQVJFX1JFRl9UT19URVhUVVJFX0VYVCAgICAgICAgICAgICAgICAg
ICAgICAgICAgIDB4ODg0RQogI2VuZGlmCiAKLS8qIEdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JB
ODg4OCAqLwotI2lmbmRlZiBHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgKLSNkZWZpbmUg
R0xfQkdSQV9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAw
eDgwRTEKLSNlbmRpZgotCi0vKiBHTF9FWFRfdGV4dHVyZV90eXBlXzJfMTBfMTBfMTBfUkVWICov
Ci0jaWZuZGVmIEdMX0VYVF90ZXh0dXJlX3R5cGVfMl8xMF8xMF8xMF9SRVYKLSNkZWZpbmUgR0xf
VU5TSUdORURfSU5UXzJfMTBfMTBfMTBfUkVWX0VYVCAgICAgICAgICAgICAgICAgICAgICAweDgz
NjgKKy8qIEdMX0VYVF9zUkdCICovCisjaWZuZGVmIEdMX0VYVF9zUkdCCisjZGVmaW5lIEdMX1NS
R0JfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4QzQw
CisjZGVmaW5lIEdMX1NSR0JfQUxQSEFfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMHg4QzQyCisjZGVmaW5lIEdMX1NSR0I4X0FMUEhBOF9FWFQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMHg4QzQzCisjZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0FU
VEFDSE1FTlRfQ09MT1JfRU5DT0RJTkdfRVhUICAgICAgICAgICAgMHg4MjEwCiAjZW5kaWYKIAog
LyogR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSAqLwpAQCAtMzI5LDQ5ICszOTUsNTgg
QEAgdHlwZWRlZiB2b2lkKiBHTGVnbEltYWdlT0VTOwogI2RlZmluZSBHTF9DT01QUkVTU0VEX1JH
QkFfUzNUQ19EWFQxX0VYVCAgICAgICAgICAgICAgICAgICAgICAgIDB4ODNGMQogI2VuZGlmCiAK
LS8qIEdMX0VYVF91bnBhY2tfc3ViaW1hZ2UgKi8KLSNpZm5kZWYgR0xfRVhUX3VucGFja19zdWJp
bWFnZQotI2RlZmluZSBHTF9VTlBBQ0tfUk9XX0xFTkdUSCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDB4MENGMgotI2RlZmluZSBHTF9VTlBBQ0tfU0tJUF9ST1dTICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MENGMwotI2RlZmluZSBHTF9VTlBBQ0tfU0tJ
UF9QSVhFTFMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MENGNAorLyogR0xf
RVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljICovCisjaWZuZGVmIEdMX0VYVF90ZXh0dXJl
X2ZpbHRlcl9hbmlzb3Ryb3BpYworI2RlZmluZSBHTF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VY
VCAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODRGRQorI2RlZmluZSBHTF9NQVhfVEVYVFVS
RV9NQVhfQU5JU09UUk9QWV9FWFQgICAgICAgICAgICAgICAgICAgICAgIDB4ODRGRgogI2VuZGlm
CiAKLS8qIEdMX0VYVF9yb2J1c3RuZXNzICovCi0jaWZuZGVmIEdMX0VYVF9yb2J1c3RuZXNzCi0j
ZGVmaW5lIEdMX0dVSUxUWV9DT05URVhUX1JFU0VUX0VYVCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMHg4MjUzCi0jZGVmaW5lIEdMX0lOTk9DRU5UX0NPTlRFWFRfUkVTRVRfRVhUICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMHg4MjU0Ci0jZGVmaW5lIEdMX1VOS05PV05fQ09OVEVYVF9S
RVNFVF9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MjU1Ci0jZGVmaW5lIEdMX0NP
TlRFWFRfUk9CVVNUX0FDQ0VTU19FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MEYz
Ci0jZGVmaW5lIEdMX1JFU0VUX05PVElGSUNBVElPTl9TVFJBVEVHWV9FWFQgICAgICAgICAgICAg
ICAgICAgICAgMHg4MjU2Ci0jZGVmaW5lIEdMX0xPU0VfQ09OVEVYVF9PTl9SRVNFVF9FWFQgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMHg4MjUyCi0jZGVmaW5lIEdMX05PX1JFU0VUX05PVElG
SUNBVElPTl9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MjYxCisvKiBHTF9FWFRf
dGV4dHVyZV9mb3JtYXRfQkdSQTg4ODggKi8KKyNpZm5kZWYgR0xfRVhUX3RleHR1cmVfZm9ybWF0
X0JHUkE4ODg4CisjZGVmaW5lIEdMX0JHUkFfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMHg4MEUxCisjZW5kaWYKKworLyogR0xfRVhUX3RleHR1cmVfcmcg
Ki8KKyNpZm5kZWYgR0xfRVhUX3RleHR1cmVfcmcKKyNkZWZpbmUgR0xfUkVEX0VYVCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE5MDMKKyNkZWZpbmUgR0xf
UkdfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgy
MjcKKyNkZWZpbmUgR0xfUjhfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAweDgyMjkKKyNkZWZpbmUgR0xfUkc4X0VYVCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAweDgyMkIKICNlbmRpZgogCiAvKiBHTF9FWFRfdGV4
dHVyZV9zdG9yYWdlICovCiAjaWZuZGVmIEdMX0VYVF90ZXh0dXJlX3N0b3JhZ2UKICNkZWZpbmUg
R0xfVEVYVFVSRV9JTU1VVEFCTEVfRk9STUFUX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAw
eDkxMkYKLSNkZWZpbmUgR0xfQUxQSEE4X0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAweDgwM0MKKyNkZWZpbmUgR0xfQUxQSEE4X0VYVCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwM0MgIAogI2RlZmluZSBHTF9MVU1JTkFO
Q0U4X0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODA0MAogI2Rl
ZmluZSBHTF9MVU1JTkFOQ0U4X0FMUEhBOF9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIDB4ODA0NQotLyogT0VTX3RleHR1cmVfZmxvYXQgZGVwZW5kZW50IGludGVybmFsIGZvcm1h
dHMgKi8KLSNkZWZpbmUgR0xfUkdCQTMyRl9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAweDg4MTQgIC8qIHJldXNlIHRva2VucyBmcm9tIEFSQl90ZXh0dXJlX2Zs
b2F0ICovCisjZGVmaW5lIEdMX1JHQkEzMkZfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgMHg4ODE0ICAKICNkZWZpbmUgR0xfUkdCMzJGX0VYVCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4MTUKICNkZWZpbmUgR0xfQUxQSEEz
MkZfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4MTYKICNk
ZWZpbmUgR0xfTFVNSU5BTkNFMzJGX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAweDg4MTgKICNkZWZpbmUgR0xfTFVNSU5BTkNFX0FMUEhBMzJGX0VYVCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAweDg4MTkKLS8qIE9FU190ZXh0dXJlX2hhbGZfZmxvYXQgZGVw
ZW5kZW50IGludGVybmFsIGZvcm1hdHMgKi8KLSNkZWZpbmUgR0xfUkdCQTE2Rl9FWFQgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4MUEgLyogcmV1c2UgdG9rZW5z
IGZyb20gQVJCX3RleHR1cmVfZmxvYXQgKi8KKy8qIHJldXNlIEdMX1JHQkExNkZfRVhUICovCiAj
ZGVmaW5lIEdMX1JHQjE2Rl9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMHg4ODFCCiAjZGVmaW5lIEdMX0FMUEhBMTZGX0VYVCAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgMHg4ODFDCiAjZGVmaW5lIEdMX0xVTUlOQU5DRTE2Rl9FWFQg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODFFCiAjZGVmaW5lIEdMX0xV
TUlOQU5DRV9BTFBIQTE2Rl9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4ODFG
Ci0vKiBFWFRfdGV4dHVyZV90eXBlXzJfMTBfMTBfMTBfUkVWIGRlcGVuZGVudCBpbnRlcm5hbCBm
b3JtYXRzICovCi0jZGVmaW5lIEdMX1JHQjEwX0EyX0VYVCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgMHg4MDU5ICAvKiByZXVzZSB0b2tlbnMgZnJvbSBFWFRfdGV4dHVy
ZSAqLworI2RlZmluZSBHTF9SR0IxMF9BMl9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDB4ODA1OSAgCiAjZGVmaW5lIEdMX1JHQjEwX0VYVCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MDUyCi0vKiBFWFRfdGV4dHVyZV9mb3Jt
YXRfQkdSQTg4ODggZGVwZW5kZW50IGludGVybmFsIGZvcm1hdHMgKi8KICNkZWZpbmUgR0xfQkdS
QThfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDkzQTEK
ICNlbmRpZgogCisvKiBHTF9FWFRfdGV4dHVyZV90eXBlXzJfMTBfMTBfMTBfUkVWICovCisjaWZu
ZGVmIEdMX0VYVF90ZXh0dXJlX3R5cGVfMl8xMF8xMF8xMF9SRVYKKyNkZWZpbmUgR0xfVU5TSUdO
RURfSU5UXzJfMTBfMTBfMTBfUkVWX0VYVCAgICAgICAgICAgICAgICAgICAgICAweDgzNjgKKyNl
bmRpZgorCisvKiBHTF9FWFRfdW5wYWNrX3N1YmltYWdlICovCisjaWZuZGVmIEdMX0VYVF91bnBh
Y2tfc3ViaW1hZ2UKKyNkZWZpbmUgR0xfVU5QQUNLX1JPV19MRU5HVEggICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAweDBDRjIKKyNkZWZpbmUgR0xfVU5QQUNLX1NLSVBfUk9XUyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDBDRjMKKyNkZWZpbmUgR0xfVU5Q
QUNLX1NLSVBfUElYRUxTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDBDRjQK
KyNlbmRpZgorCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoKICAqIERNUCBleHRlbnNpb24gdG9rZW5zCiAg
Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSovCkBAIC04ODEsNiArOTU2LDE5IEBAIHR5cGVkZWYgdm9pZCAoR0xf
QVBJRU5UUllQIFBGTkdMR0VUVFJBTlNMQVRFRFNIQURFUlNPVVJDRUFOR0xFUFJPQykgKEdMdWlu
dCBzaGFkCiAjZGVmaW5lIEdMX0FOR0xFX3RleHR1cmVfdXNhZ2UgMQogI2VuZGlmCiAKKy8qIEdM
X0FOR0xFX2luc3RhbmNlZF9hcnJheXMgKi8KKyNpZm5kZWYgR0xfQU5HTEVfaW5zdGFuY2VkX2Fy
cmF5cworI2RlZmluZSBHTF9BTkdMRV9pbnN0YW5jZWRfYXJyYXlzIDEKKyNpZmRlZiBHTF9HTEVY
VF9QUk9UT1RZUEVTCitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xWZXJ0ZXhBdHRyaWJE
aXZpc29yQU5HTEUoR0x1aW50IGluZGV4LCBHTHVpbnQgZGl2aXNvcik7CitHTF9BUElDQUxMIHZv
aWQgR0xfQVBJRU5UUlkgZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUoR0xlbnVtIG1vZGUsIEdM
aW50IGZpcnN0LCBHTHNpemVpIGNvdW50LCBHTHNpemVpIHByaW1jb3VudCk7CitHTF9BUElDQUxM
IHZvaWQgR0xfQVBJRU5UUlkgZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRShHTGVudW0gbW9k
ZSwgR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywgR0xz
aXplaSBwcmltY291bnQpOworI2VuZGlmCit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5H
TFZFUlRFWEFUVFJJQkRJVklTT1JBTkdMRVBST0MpIChHTHVpbnQgaW5kZXgsIEdMdWludCBkaXZp
c29yKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRFJBV0FSUkFZU0lOU1RBTkNF
REFOR0xFUFJPQykgKEdMZW51bSBtb2RlLCBHTGludCBmaXJzdCwgR0xzaXplaSBjb3VudCwgR0xz
aXplaSBwcmltY291bnQpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xEUkFXRUxF
TUVOVFNJTlNUQU5DRURBTkdMRVBST0MpIChHTGVudW0gbW9kZSwgR0xzaXplaSBjb3VudCwgR0xl
bnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywgR0xzaXplaSBwcmltY291bnQpOworI2Vu
ZGlmCisKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKgogICogQVBQTEUgZXh0ZW5zaW9uIGZ1bmN0aW9ucwog
ICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtOTM0LDYgKzEwMjIsMzUgQEAgdHlwZWRlZiB2b2lkIChH
TF9BUElFTlRSWVAgUEZOR0xSRVNPTFZFTVVMVElTQU1QTEVGUkFNRUJVRkZFUkFQUExFUFJPQykg
KHZvaWQpOwogI2RlZmluZSBHTF9FWFRfYmxlbmRfbWlubWF4IDEKICNlbmRpZgogCisvKiBHTF9F
WFRfY29sb3JfYnVmZmVyX2hhbGZfZmxvYXQgKi8KKyNpZm5kZWYgR0xfRVhUX2NvbG9yX2J1ZmZl
cl9oYWxmX2Zsb2F0CisjZGVmaW5lIEdMX0VYVF9jb2xvcl9idWZmZXJfaGFsZl9mbG9hdCAxCisj
ZW5kaWYKKworLyogR0xfRVhUX2RlYnVnX2xhYmVsICovCisjaWZuZGVmIEdMX0VYVF9kZWJ1Z19s
YWJlbAorI2RlZmluZSBHTF9FWFRfZGVidWdfbGFiZWwgMQorI2lmZGVmIEdMX0dMRVhUX1BST1RP
VFlQRVMKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbExhYmVsT2JqZWN0RVhUIChHTGVu
dW0gdHlwZSwgR0x1aW50IG9iamVjdCwgR0xzaXplaSBsZW5ndGgsIGNvbnN0IEdMY2hhciAqbGFi
ZWwpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0T2JqZWN0TGFiZWxFWFQgKEdM
ZW51bSB0eXBlLCBHTHVpbnQgb2JqZWN0LCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0
aCwgR0xjaGFyICpsYWJlbCk7CisjZW5kaWYKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBG
TkdMTEFCRUxPQkpFQ1RFWFRQUk9DKSAoR0xlbnVtIHR5cGUsIEdMdWludCBvYmplY3QsIEdMc2l6
ZWkgbGVuZ3RoLCBjb25zdCBHTGNoYXIgKmxhYmVsKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5U
UllQIFBGTkdMR0VUT0JKRUNUTEFCRUxFWFRQUk9DKSAoR0xlbnVtIHR5cGUsIEdMdWludCBvYmpl
Y3QsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGNoYXIgKmxhYmVsKTsKKyNl
bmRpZgorCisvKiBHTF9FWFRfZGVidWdfbWFya2VyICovCisjaWZuZGVmIEdMX0VYVF9kZWJ1Z19t
YXJrZXIKKyNkZWZpbmUgR0xfRVhUX2RlYnVnX21hcmtlciAxCisjaWZkZWYgR0xfR0xFWFRfUFJP
VE9UWVBFUworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsSW5zZXJ0RXZlbnRNYXJrZXJF
WFQgKEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBHTGNoYXIgKm1hcmtlcik7CitHTF9BUElDQUxMIHZv
aWQgR0xfQVBJRU5UUlkgZ2xQdXNoR3JvdXBNYXJrZXJFWFQgKEdMc2l6ZWkgbGVuZ3RoLCBjb25z
dCBHTGNoYXIgKm1hcmtlcik7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQb3BHcm91
cE1hcmtlckVYVCAodm9pZCk7CisjZW5kaWYKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBG
TkdMSU5TRVJURVZFTlRNQVJLRVJFWFRQUk9DKSAoR0xzaXplaSBsZW5ndGgsIGNvbnN0IEdMY2hh
ciAqbWFya2VyKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFVTSEdST1VQTUFS
S0VSRVhUUFJPQykgKEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBHTGNoYXIgKm1hcmtlcik7Cit0eXBl
ZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBPUEdST1VQTUFSS0VSRVhUUFJPQykgKHZvaWQp
OworI2VuZGlmCisKIC8qIEdMX0VYVF9kaXNjYXJkX2ZyYW1lYnVmZmVyICovCiAjaWZuZGVmIEdM
X0VYVF9kaXNjYXJkX2ZyYW1lYnVmZmVyCiAjZGVmaW5lIEdMX0VYVF9kaXNjYXJkX2ZyYW1lYnVm
ZmVyIDEKQEAgLTk0Myw2ICsxMDYwLDE3IEBAIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBn
bERpc2NhcmRGcmFtZWJ1ZmZlckVYVCAoR0xlbnVtIHRhcmdldCwgR0xzaXplaSBudW1BCiB0eXBl
ZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTERJU0NBUkRGUkFNRUJVRkZFUkVYVFBST0MpIChH
TGVudW0gdGFyZ2V0LCBHTHNpemVpIG51bUF0dGFjaG1lbnRzLCBjb25zdCBHTGVudW0gKmF0dGFj
aG1lbnRzKTsKICNlbmRpZgogCisvKiBHTF9FWFRfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0
dXJlICovCisjaWZuZGVmIEdMX0VYVF9tdWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUKKyNk
ZWZpbmUgR0xfRVhUX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSAxCisjaWZkZWYgR0xf
R0xFWFRfUFJPVE9UWVBFUworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUmVuZGVyYnVm
ZmVyU3RvcmFnZU11bHRpc2FtcGxlRVhUIChHTGVudW0sIEdMc2l6ZWksIEdMZW51bSwgR0xzaXpl
aSwgR0xzaXplaSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xGcmFtZWJ1ZmZlclRl
eHR1cmUyRE11bHRpc2FtcGxlRVhUIChHTGVudW0sIEdMZW51bSwgR0xlbnVtLCBHTHVpbnQsIEdM
aW50LCBHTHNpemVpKTsKKyNlbmRpZgordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xS
RU5ERVJCVUZGRVJTVE9SQUdFTVVMVElTQU1QTEVFWFRQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xz
aXplaSBzYW1wbGVzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6
ZWkgaGVpZ2h0KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRlJBTUVCVUZGRVJU
RVhUVVJFMkRNVUxUSVNBTVBMRUVYVFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0YWNo
bWVudCwgR0xlbnVtIHRleHRhcmdldCwgR0x1aW50IHRleHR1cmUsIEdMaW50IGxldmVsLCBHTHNp
emVpIHNhbXBsZXMpOworI2VuZGlmCisKICNpZm5kZWYgR0xfRVhUX211bHRpX2RyYXdfYXJyYXlz
CiAjZGVmaW5lIEdMX0VYVF9tdWx0aV9kcmF3X2FycmF5cyAxCiAjaWZkZWYgR0xfR0xFWFRfUFJP
VE9UWVBFUwpAQCAtOTUzLDE2ICsxMDgxLDEzNCBAQCB0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZ
UCBQRk5HTE1VTFRJRFJBV0FSUkFZU0VYVFBST0MpIChHTGVudW0gbW9kZSwgR0xpbnQgKmZpcgog
dHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xNVUxUSURSQVdFTEVNRU5UU0VYVFBST0Mp
IChHTGVudW0gbW9kZSwgY29uc3QgR0xzaXplaSAqY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCBH
THZvaWQqICppbmRpY2VzLCBHTHNpemVpIHByaW1jb3VudCk7CiAjZW5kaWYKIAorLyogR0xfRVhU
X29jY2x1c2lvbl9xdWVyeV9ib29sZWFuICovCisjaWZuZGVmIEdMX0VYVF9vY2NsdXNpb25fcXVl
cnlfYm9vbGVhbgorI2RlZmluZSBHTF9FWFRfb2NjbHVzaW9uX3F1ZXJ5X2Jvb2xlYW4gMQorI2lm
ZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdl
blF1ZXJpZXNFWFQgKEdMc2l6ZWkgbiwgR0x1aW50ICppZHMpOworR0xfQVBJQ0FMTCB2b2lkIEdM
X0FQSUVOVFJZIGdsRGVsZXRlUXVlcmllc0VYVCAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKmlk
cyk7CitHTF9BUElDQUxMIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBnbElzUXVlcnlFWFQgKEdMdWlu
dCBpZCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xCZWdpblF1ZXJ5RVhUIChHTGVu
dW0gdGFyZ2V0LCBHTHVpbnQgaWQpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRW5k
UXVlcnlFWFQgKEdMZW51bSB0YXJnZXQpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGds
R2V0UXVlcnlpdkVYVCAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1z
KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFF1ZXJ5T2JqZWN0dWl2RVhUIChH
THVpbnQgaWQsIEdMZW51bSBwbmFtZSwgR0x1aW50ICpwYXJhbXMpOworI2VuZGlmCit0eXBlZGVm
IHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFTlFVRVJJRVNFWFRQUk9DKSAoR0xzaXplaSBuLCBH
THVpbnQgKmlkcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTERFTEVURVFVRVJJ
RVNFWFRQUk9DKSAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKmlkcyk7Cit0eXBlZGVmIEdMYm9v
bGVhbiAoR0xfQVBJRU5UUllQIFBGTkdMSVNRVUVSWUVYVFBST0MpIChHTHVpbnQgaWQpOwordHlw
ZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xCRUdJTlFVRVJZRVhUUFJPQykgKEdMZW51bSB0
YXJnZXQsIEdMdWludCBpZCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEVORFFV
RVJZRVhUUFJPQykgKEdMZW51bSB0YXJnZXQpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAg
UEZOR0xHRVRRVUVSWUlWRVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xp
bnQgKnBhcmFtcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFFVRVJZT0JK
RUNUVUlWRVhUUFJPQykgKEdMdWludCBpZCwgR0xlbnVtIHBuYW1lLCBHTHVpbnQgKnBhcmFtcyk7
CisjZW5kaWYKKwogLyogR0xfRVhUX3JlYWRfZm9ybWF0X2JncmEgKi8KICNpZm5kZWYgR0xfRVhU
X3JlYWRfZm9ybWF0X2JncmEKICNkZWZpbmUgR0xfRVhUX3JlYWRfZm9ybWF0X2JncmEgMQogI2Vu
ZGlmCiAKKy8qIEdMX0VYVF9yb2J1c3RuZXNzICovCisjaWZuZGVmIEdMX0VYVF9yb2J1c3RuZXNz
CisjZGVmaW5lIEdMX0VYVF9yb2J1c3RuZXNzIDEKKyNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVT
CitHTF9BUElDQUxMIEdMZW51bSBHTF9BUElFTlRSWSBnbEdldEdyYXBoaWNzUmVzZXRTdGF0dXNF
WFQgKHZvaWQpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUmVhZG5QaXhlbHNFWFQg
KEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0g
Zm9ybWF0LCBHTGVudW0gdHlwZSwgR0xzaXplaSBidWZTaXplLCB2b2lkICpkYXRhKTsKK0dMX0FQ
SUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldG5Vbmlmb3JtZnZFWFQgKEdMdWludCBwcm9ncmFt
LCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBidWZTaXplLCBmbG9hdCAqcGFyYW1zKTsKK0dMX0FQ
SUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldG5Vbmlmb3JtaXZFWFQgKEdMdWludCBwcm9ncmFt
LCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBidWZTaXplLCBHTGludCAqcGFyYW1zKTsKKyNlbmRp
ZgordHlwZWRlZiBHTGVudW0gKEdMX0FQSUVOVFJZUCBQRk5HTEdFVEdSQVBISUNTUkVTRVRTVEFU
VVNFWFRQUk9DKSAodm9pZCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFJFQURO
UElYRUxTRVhUUFJPQykgKEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkg
aGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0xzaXplaSBidWZTaXplLCB2b2lk
ICpkYXRhKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUTlVOSUZPUk1GVkVY
VFBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgYnVmU2l6ZSwg
ZmxvYXQgKnBhcmFtcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVE5VTklG
T1JNSVZFWFRQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGJ1
ZlNpemUsIEdMaW50ICpwYXJhbXMpOworI2VuZGlmCisKKy8qIEdMX0VYVF9zZXBhcmF0ZV9zaGFk
ZXJfb2JqZWN0cyAqLworI2lmbmRlZiBHTF9FWFRfc2VwYXJhdGVfc2hhZGVyX29iamVjdHMKKyNk
ZWZpbmUgR0xfRVhUX3NlcGFyYXRlX3NoYWRlcl9vYmplY3RzIDEKKyNpZmRlZiBHTF9HTEVYVF9Q
Uk9UT1RZUEVTCitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xVc2VQcm9ncmFtU3RhZ2Vz
RVhUIChHTHVpbnQgcGlwZWxpbmUsIEdMYml0ZmllbGQgc3RhZ2VzLCBHTHVpbnQgcHJvZ3JhbSk7
CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xBY3RpdmVTaGFkZXJQcm9ncmFtRVhUIChH
THVpbnQgcGlwZWxpbmUsIEdMdWludCBwcm9ncmFtKTsKK0dMX0FQSUNBTEwgR0x1aW50IEdMX0FQ
SUVOVFJZIGdsQ3JlYXRlU2hhZGVyUHJvZ3JhbXZFWFQgKEdMZW51bSB0eXBlLCBHTHNpemVpIGNv
dW50LCBjb25zdCBHTGNoYXIgKipzdHJpbmdzKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRS
WSBnbEJpbmRQcm9ncmFtUGlwZWxpbmVFWFQgKEdMdWludCBwaXBlbGluZSk7CitHTF9BUElDQUxM
IHZvaWQgR0xfQVBJRU5UUlkgZ2xEZWxldGVQcm9ncmFtUGlwZWxpbmVzRVhUIChHTHNpemVpIG4s
IGNvbnN0IEdMdWludCAqcGlwZWxpbmVzKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBn
bEdlblByb2dyYW1QaXBlbGluZXNFWFQgKEdMc2l6ZWkgbiwgR0x1aW50ICpwaXBlbGluZXMpOwor
R0xfQVBJQ0FMTCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgZ2xJc1Byb2dyYW1QaXBlbGluZUVYVCAo
R0x1aW50IHBpcGVsaW5lKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Q
YXJhbWV0ZXJpRVhUIChHTHVpbnQgcHJvZ3JhbSwgR0xlbnVtIHBuYW1lLCBHTGludCB2YWx1ZSk7
CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRQcm9ncmFtUGlwZWxpbmVpdkVYVCAo
R0x1aW50IHBpcGVsaW5lLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOworR0xfQVBJQ0FM
TCB2b2lkIEdMX0FQSUVOVFJZIGdsUHJvZ3JhbVVuaWZvcm0xaUVYVCAoR0x1aW50IHByb2dyYW0s
IEdMaW50IGxvY2F0aW9uLCBHTGludCB4KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBn
bFByb2dyYW1Vbmlmb3JtMmlFWFQgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xp
bnQgeCwgR0xpbnQgeSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5p
Zm9ybTNpRVhUIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMaW50IHgsIEdMaW50
IHksIEdMaW50IHopOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUHJvZ3JhbVVuaWZv
cm00aUVYVCAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGludCB4LCBHTGludCB5
LCBHTGludCB6LCBHTGludCB3KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFByb2dy
YW1Vbmlmb3JtMWZFWFQgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB4
KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtMmZFWFQgKEdM
dWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB4LCBHTGZsb2F0IHkpOworR0xf
QVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUHJvZ3JhbVVuaWZvcm0zZkVYVCAoR0x1aW50IHBy
b2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsK
K0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtNGZFWFQgKEdMdWlu
dCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQg
eiwgR0xmbG9hdCB3KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFByb2dyYW1Vbmlm
b3JtMWl2RVhUIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQs
IGNvbnN0IEdMaW50ICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9n
cmFtVW5pZm9ybTJpdkVYVCAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVp
IGNvdW50LCBjb25zdCBHTGludCAqdmFsdWUpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZ
IGdsUHJvZ3JhbVVuaWZvcm0zaXZFWFQgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwg
R0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnZhbHVlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9B
UElFTlRSWSBnbFByb2dyYW1Vbmlmb3JtNGl2RVhUIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9j
YXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2YWx1ZSk7CitHTF9BUElDQUxMIHZv
aWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybTFmdkVYVCAoR0x1aW50IHByb2dyYW0sIEdM
aW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CitHTF9B
UElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybTJmdkVYVCAoR0x1aW50IHBy
b2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0ICp2YWx1
ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybTNmdkVYVCAo
R0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZs
b2F0ICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9y
bTRmdkVYVCAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBj
b25zdCBHTGZsb2F0ICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9n
cmFtVW5pZm9ybU1hdHJpeDJmdkVYVCAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBH
THNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7
CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDNmdkVY
VCAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xl
YW4gdHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xf
QVBJRU5UUlkgZ2xQcm9ncmFtVW5pZm9ybU1hdHJpeDRmdkVYVCAoR0x1aW50IHByb2dyYW0sIEdM
aW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4gdHJhbnNwb3NlLCBjb25zdCBH
TGZsb2F0ICp2YWx1ZSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xWYWxpZGF0ZVBy
b2dyYW1QaXBlbGluZUVYVCAoR0x1aW50IHBpcGVsaW5lKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9B
UElFTlRSWSBnbEdldFByb2dyYW1QaXBlbGluZUluZm9Mb2dFWFQgKEdMdWludCBwaXBlbGluZSwg
R0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMY2hhciAqaW5mb0xvZyk7CisjZW5k
aWYKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVVNFUFJPR1JBTVNUQUdFU0VYVFBS
T0MpIChHTHVpbnQgcGlwZWxpbmUsIEdMYml0ZmllbGQgc3RhZ2VzLCBHTHVpbnQgcHJvZ3JhbSk7
Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEFDVElWRVNIQURFUlBST0dSQU1FWFRQ
Uk9DKSAoR0x1aW50IHBpcGVsaW5lLCBHTHVpbnQgcHJvZ3JhbSk7Cit0eXBlZGVmIEdMdWludCAo
R0xfQVBJRU5UUllQIFBGTkdMQ1JFQVRFU0hBREVSUFJPR1JBTVZFWFRQUk9DKSAoR0xlbnVtIHR5
cGUsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMY2hhciAqKnN0cmluZ3MpOwordHlwZWRlZiB2b2lk
IChHTF9BUElFTlRSWVAgUEZOR0xCSU5EUFJPR1JBTVBJUEVMSU5FRVhUUFJPQykgKEdMdWludCBw
aXBlbGluZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTERFTEVURVBST0dSQU1Q
SVBFTElORVNFWFRQUk9DKSAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKnBpcGVsaW5lcyk7Cit0
eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFTlBST0dSQU1QSVBFTElORVNFWFRQUk9D
KSAoR0xzaXplaSBuLCBHTHVpbnQgKnBpcGVsaW5lcyk7Cit0eXBlZGVmIEdMYm9vbGVhbiAoR0xf
QVBJRU5UUllQIFBGTkdMSVNQUk9HUkFNUElQRUxJTkVFWFRQUk9DKSAoR0x1aW50IHBpcGVsaW5l
KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJPR1JBTVBBUkFNRVRFUklFWFRQ
Uk9DKSAoR0x1aW50IHByb2dyYW0sIEdMZW51bSBwbmFtZSwgR0xpbnQgdmFsdWUpOwordHlwZWRl
ZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRQUk9HUkFNUElQRUxJTkVJVkVYVFBST0MpIChH
THVpbnQgcGlwZWxpbmUsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcyk7Cit0eXBlZGVmIHZv
aWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBST0dSQU1VTklGT1JNMUlFWFRQUk9DKSAoR0x1aW50IHBy
b2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGludCB4KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5U
UllQIFBGTkdMUFJPR1JBTVVOSUZPUk0ySUVYVFBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQg
bG9jYXRpb24sIEdMaW50IHgsIEdMaW50IHkpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAg
UEZOR0xQUk9HUkFNVU5JRk9STTNJRVhUUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2Nh
dGlvbiwgR0xpbnQgeCwgR0xpbnQgeSwgR0xpbnQgeik7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVO
VFJZUCBQRk5HTFBST0dSQU1VTklGT1JNNElFWFRQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMaW50
IGxvY2F0aW9uLCBHTGludCB4LCBHTGludCB5LCBHTGludCB6LCBHTGludCB3KTsKK3R5cGVkZWYg
dm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJPR1JBTVVOSUZPUk0xRkVYVFBST0MpIChHTHVpbnQg
cHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQgeCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQ
SUVOVFJZUCBQRk5HTFBST0dSQU1VTklGT1JNMkZFWFRQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdM
aW50IGxvY2F0aW9uLCBHTGZsb2F0IHgsIEdMZmxvYXQgeSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQ
SUVOVFJZUCBQRk5HTFBST0dSQU1VTklGT1JNM0ZFWFRQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdM
aW50IGxvY2F0aW9uLCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KTsKK3R5cGVkZWYg
dm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJPR1JBTVVOSUZPUk00RkVYVFBST0MpIChHTHVpbnQg
cHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHos
IEdMZmxvYXQgdyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBST0dSQU1VTklG
T1JNMUlWRVhUUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBj
b3VudCwgY29uc3QgR0xpbnQgKnZhbHVlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBG
TkdMUFJPR1JBTVVOSUZPUk0ySVZFWFRQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0
aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdmFsdWUpOwordHlwZWRlZiB2b2lkIChH
TF9BUElFTlRSWVAgUEZOR0xQUk9HUkFNVU5JRk9STTNJVkVYVFBST0MpIChHTHVpbnQgcHJvZ3Jh
bSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2YWx1ZSk7Cit0
eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBST0dSQU1VTklGT1JNNElWRVhUUFJPQykg
KEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xp
bnQgKnZhbHVlKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJPR1JBTVVOSUZP
Uk0xRlZFWFRQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNv
dW50LCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQ
Rk5HTFBST0dSQU1VTklGT1JNMkZWRVhUUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2Nh
dGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdmFsdWUpOwordHlwZWRlZiB2b2lk
IChHTF9BUElFTlRSWVAgUEZOR0xQUk9HUkFNVU5JRk9STTNGVkVYVFBST0MpIChHTHVpbnQgcHJv
Z3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnZhbHVl
KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJPR1JBTVVOSUZPUk00RlZFWFRQ
Uk9DKSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25z
dCBHTGZsb2F0ICp2YWx1ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFBST0dS
QU1VTklGT1JNTUFUUklYMkZWRVhUUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlv
biwgR0xzaXplaSBjb3VudCwgR0xib29sZWFuIHRyYW5zcG9zZSwgY29uc3QgR0xmbG9hdCAqdmFs
dWUpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xQUk9HUkFNVU5JRk9STU1BVFJJ
WDNGVkVYVFBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291
bnQsIEdMYm9vbGVhbiB0cmFuc3Bvc2UsIGNvbnN0IEdMZmxvYXQgKnZhbHVlKTsKK3R5cGVkZWYg
dm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJPR1JBTVVOSUZPUk1NQVRSSVg0RlZFWFRQUk9DKSAo
R0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBHTGJvb2xlYW4g
dHJhbnNwb3NlLCBjb25zdCBHTGZsb2F0ICp2YWx1ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVO
VFJZUCBQRk5HTFZBTElEQVRFUFJPR1JBTVBJUEVMSU5FRVhUUFJPQykgKEdMdWludCBwaXBlbGlu
ZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFBST0dSQU1QSVBFTElORUlO
Rk9MT0dFWFRQUk9DKSAoR0x1aW50IHBpcGVsaW5lLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkg
Kmxlbmd0aCwgR0xjaGFyICppbmZvTG9nKTsKKyNlbmRpZgorCiAvKiBHTF9FWFRfc2hhZGVyX3Rl
eHR1cmVfbG9kICovCiAjaWZuZGVmIEdMX0VYVF9zaGFkZXJfdGV4dHVyZV9sb2QKICNkZWZpbmUg
R0xfRVhUX3NoYWRlcl90ZXh0dXJlX2xvZCAxCiAjZW5kaWYKIAorLyogR0xfRVhUX3NoYWRvd19z
YW1wbGVycyAqLworI2lmbmRlZiBHTF9FWFRfc2hhZG93X3NhbXBsZXJzCisjZGVmaW5lIEdMX0VY
VF9zaGFkb3dfc2FtcGxlcnMgMQorI2VuZGlmCisKKy8qIEdMX0VYVF9zUkdCICovCisjaWZuZGVm
IEdMX0VYVF9zUkdCCisjZGVmaW5lIEdMX0VYVF9zUkdCIDEKKyNlbmRpZgorCisvKiBHTF9FWFRf
dGV4dHVyZV9jb21wcmVzc2lvbl9keHQxICovCisjaWZuZGVmIEdMX0VYVF90ZXh0dXJlX2NvbXBy
ZXNzaW9uX2R4dDEKKyNkZWZpbmUgR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSAxCisj
ZW5kaWYKKwogLyogR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljICovCiAjaWZuZGVm
IEdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYwogI2RlZmluZSBHTF9FWFRfdGV4dHVy
ZV9maWx0ZXJfYW5pc290cm9waWMgMQpAQCAtOTczLDQ1ICsxMjE5LDQwIEBAIHR5cGVkZWYgdm9p
ZCAoR0xfQVBJRU5UUllQIFBGTkdMTVVMVElEUkFXRUxFTUVOVFNFWFRQUk9DKSAoR0xlbnVtIG1v
ZGUsIGNvbnN0IEdMCiAjZGVmaW5lIEdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCAxCiAj
ZW5kaWYKIAorLyogR0xfRVhUX3RleHR1cmVfcmcgKi8KKyNpZm5kZWYgR0xfRVhUX3RleHR1cmVf
cmcKKyNkZWZpbmUgR0xfRVhUX3RleHR1cmVfcmcgMQorI2VuZGlmCisKKy8qIEdMX0VYVF90ZXh0
dXJlX3N0b3JhZ2UgKi8KKyNpZm5kZWYgR0xfRVhUX3RleHR1cmVfc3RvcmFnZQorI2RlZmluZSBH
TF9FWFRfdGV4dHVyZV9zdG9yYWdlIDEKKyNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCitHTF9B
UElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xUZXhTdG9yYWdlMURFWFQgKEdMZW51bSB0YXJnZXQs
IEdMc2l6ZWkgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgpOwor
R0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVGV4U3RvcmFnZTJERVhUIChHTGVudW0gdGFy
Z2V0LCBHTHNpemVpIGxldmVscywgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRo
LCBHTHNpemVpIGhlaWdodCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xUZXhTdG9y
YWdlM0RFWFQgKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxm
b3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoKTsKK0dM
X0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFRleHR1cmVTdG9yYWdlMURFWFQgKEdMdWludCB0
ZXh0dXJlLCBHTGVudW0gdGFyZ2V0LCBHTHNpemVpIGxldmVscywgR0xlbnVtIGludGVybmFsZm9y
bWF0LCBHTHNpemVpIHdpZHRoKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFRleHR1
cmVTdG9yYWdlMkRFWFQgKEdMdWludCB0ZXh0dXJlLCBHTGVudW0gdGFyZ2V0LCBHTHNpemVpIGxl
dmVscywgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdo
dCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xUZXh0dXJlU3RvcmFnZTNERVhUIChH
THVpbnQgdGV4dHVyZSwgR0xlbnVtIHRhcmdldCwgR0xzaXplaSBsZXZlbHMsIEdMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgp
OworI2VuZGlmCit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFRFWFNUT1JBR0UxREVY
VFBST0MpIChHTGVudW0gdGFyZ2V0LCBHTHNpemVpIGxldmVscywgR0xlbnVtIGludGVybmFsZm9y
bWF0LCBHTHNpemVpIHdpZHRoKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVEVY
U1RPUkFHRTJERVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgbGV2ZWxzLCBHTGVudW0g
aW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKK3R5cGVkZWYg
dm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVEVYU1RPUkFHRTNERVhUUFJPQykgKEdMZW51bSB0YXJn
ZXQsIEdMc2l6ZWkgbGV2ZWxzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgs
IEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5U
UllQIFBGTkdMVEVYVFVSRVNUT1JBR0UxREVYVFBST0MpIChHTHVpbnQgdGV4dHVyZSwgR0xlbnVt
IHRhcmdldCwgR0xzaXplaSBsZXZlbHMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3
aWR0aCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFRFWFRVUkVTVE9SQUdFMkRF
WFRQUk9DKSAoR0x1aW50IHRleHR1cmUsIEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgbGV2ZWxzLCBH
TGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKK3R5
cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVEVYVFVSRVNUT1JBR0UzREVYVFBST0MpIChH
THVpbnQgdGV4dHVyZSwgR0xlbnVtIHRhcmdldCwgR0xzaXplaSBsZXZlbHMsIEdMZW51bSBpbnRl
cm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgp
OworI2VuZGlmCisKIC8qIEdMX0VYVF90ZXh0dXJlX3R5cGVfMl8xMF8xMF8xMF9SRVYgKi8KICNp
Zm5kZWYgR0xfRVhUX3RleHR1cmVfdHlwZV8yXzEwXzEwXzEwX1JFVgogI2RlZmluZSBHTF9FWFRf
dGV4dHVyZV90eXBlXzJfMTBfMTBfMTBfUkVWIDEKICNlbmRpZgogCi0vKiBHTF9FWFRfdGV4dHVy
ZV9jb21wcmVzc2lvbl9keHQxICovCi0jaWZuZGVmIEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9u
X2R4dDEKLSNkZWZpbmUgR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSAxCi0jZW5kaWYK
LQogLyogR0xfRVhUX3VucGFja19zdWJpbWFnZSAqLwogI2lmbmRlZiBHTF9FWFRfdW5wYWNrX3N1
YmltYWdlCiAjZGVmaW5lIEdMX0VYVF91bnBhY2tfc3ViaW1hZ2UgMQogI2VuZGlmCiAKLS8qIEdM
X0VYVF9yb2J1c3RuZXNzICovCi0jaWZuZGVmIEdMX0VYVF9yb2J1c3RuZXNzCi0jZGVmaW5lIEdM
X0VYVF9yb2J1c3RuZXNzIDEKLSNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCi1HTF9BUElDQUxM
IEdMZW51bSBHTF9BUElFTlRSWSBnbEdldEdyYXBoaWNzUmVzZXRTdGF0dXNFWFQgKHZvaWQpOwot
R0xfQVBJQ0FMTCB2b2lkICAgR0xfQVBJRU5UUlkgZ2xSZWFkblBpeGVsc0VYVCAoR0xpbnQgeCwg
R0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdM
ZW51bSB0eXBlLCBHTHNpemVpIGJ1ZlNpemUsIEdMdm9pZCAqZGF0YSk7Ci1HTF9BUElDQUxMIHZv
aWQgICBHTF9BUElFTlRSWSBnbEdldG5Vbmlmb3JtZnZFWFQgKEdMdWludCBwcm9ncmFtLCBHTGlu
dCBsb2NhdGlvbiwgR0xzaXplaSBidWZTaXplLCBHTGZsb2F0ICpwYXJhbXMpOwotR0xfQVBJQ0FM
TCB2b2lkICAgR0xfQVBJRU5UUlkgZ2xHZXRuVW5pZm9ybWl2RVhUIChHTHVpbnQgcHJvZ3JhbSwg
R0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgYnVmU2l6ZSwgR0xpbnQgKnBhcmFtcyk7Ci0jZW5kaWYg
LyogR0xfR0xFWFRfUFJPVE9UWVBFUyAqLwotdHlwZWRlZiBHTGVudW0gKEdMX0FQSUVOVFJZUCBQ
Rk5HTEdFVEdSQVBISUNTUkVTRVRTVEFUVVNFWFRQUk9DKSAodm9pZCk7Ci10eXBlZGVmIHZvaWQg
ICAoR0xfQVBJRU5UUllQIFBGTkdMUkVBRE5QSVhFTFNFWFRQUk9DKSAoR0xpbnQgeCwgR0xpbnQg
eSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0
eXBlLCBHTHNpemVpIGJ1ZlNpemUsIEdMdm9pZCAqZGF0YSk7Ci10eXBlZGVmIHZvaWQgICAoR0xf
QVBJRU5UUllQIFBGTkdMR0VUTlVOSUZPUk1GVkVYVFBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xp
bnQgbG9jYXRpb24sIEdMc2l6ZWkgYnVmU2l6ZSwgR0xmbG9hdCAqcGFyYW1zKTsKLXR5cGVkZWYg
dm9pZCAgIChHTF9BUElFTlRSWVAgUEZOR0xHRVROVU5JRk9STUlWRVhUUFJPQykgKEdMdWludCBw
cm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xzaXplaSBidWZTaXplLCBHTGludCAqcGFyYW1zKTsK
LSNlbmRpZgotCi0vKiBHTF9FWFRfdGV4dHVyZV9zdG9yYWdlICovCi0jaWZuZGVmIEdMX0VYVF90
ZXh0dXJlX3N0b3JhZ2UKLSNkZWZpbmUgR0xfRVhUX3RleHR1cmVfc3RvcmFnZSAxCi0jaWZkZWYg
R0xfR0xFWFRfUFJPVE9UWVBFUwotR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIFRleFN0b3Jh
Z2UyREVYVCAoR0xlbnVtIHRhcmdldCwgR0xzaXplaSBsZXZlbHMsIEdMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwotI2VuZGlmIC8qIEdMX0dMRVhU
X1BST1RPVFlQRVMgKi8KLXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVEVYU1RPUkFH
RTJERVhUKSAoR0xlbnVtIHRhcmdldCwgR0xzaXplaSBsZXZlbHMsIEdMZW51bSBpbnRlcm5hbGZv
cm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwotI2VuZGlmCi0KIC8qLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKgogICogRE1QIGV4dGVuc2lvbiBmdW5jdGlvbnMKICAqLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ki8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xTTEFORy9T
aGFkZXJMYW5nLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9pbmNsdWRlL0dMU0xBTkcvU2hh
ZGVyTGFuZy5oCmluZGV4IDMzZGQ2YTU3OGU2NmM1NzAzZjM3OWY0MWQzNTM2OGE3N2RmZTg4NjEu
LmEzZmM5MzUxMzhjMDJhZGQwOGI0ODhiMTU4YzkyOTc1NjczMmIwYzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL2luY2x1ZGUvR0xTTEFORy9TaGFkZXJMYW5nLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvaW5jbHVkZS9HTFNMQU5HL1NoYWRlckxhbmcuaApAQCAt
NzcsNyArNzcsOCBAQCB0eXBlZGVmIGVudW0gewogICBTSF9GTE9BVF9NQVQ0ICAgICA9IDB4OEI1
QywKICAgU0hfU0FNUExFUl8yRCAgICAgPSAweDhCNUUsCiAgIFNIX1NBTVBMRVJfQ1VCRSAgID0g
MHg4QjYwLAotICBTSF9TQU1QTEVSXzJEX1JFQ1RfQVJCID0gMHg4QjYzCisgIFNIX1NBTVBMRVJf
MkRfUkVDVF9BUkIgPSAweDhCNjMsCisgIFNIX1NBTVBMRVJfRVhURVJOQUxfT0VTID0gMHg4RDY2
CiB9IFNoRGF0YVR5cGU7CiAKIHR5cGVkZWYgZW51bSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL1JlZkNvdW50T2JqZWN0LmNwcCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vUmVmQ291bnRPYmplY3QuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMx
ZWY5MGNkY2NjMjYwOTVmZmU1MTgzMDMxNmExODJkZjEyNmZlNzYKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL1JlZkNvdW50T2JqZWN0LmNwcApA
QCAtMCwwICsxLDQ3IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTAgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
Ky8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBSZWZDb3VudE9iamVjdC5j
cHA6IERlZmluZXMgdGhlIGdsOjpSZWZDb3VudE9iamVjdCBiYXNlIGNsYXNzIHRoYXQgcHJvdmlk
ZXMKKy8vIGxpZmVjeWNsZSBzdXBwb3J0IGZvciBHTCBvYmplY3RzIHVzaW5nIHRoZSB0cmFkaXRp
b25hbCBCaW5kT2JqZWN0IHNjaGVtZSwgYnV0CisvLyB0aGF0IG5lZWQgdG8gYmUgcmVmZXJlbmNl
IGNvdW50ZWQgZm9yIGNvcnJlY3QgY3Jvc3MtY29udGV4dCBkZWxldGlvbi4KKy8vIChDb25jcmV0
ZWx5LCB0ZXh0dXJlcywgYnVmZmVycyBhbmQgcmVuZGVyYnVmZmVycy4pCisKKyNpbmNsdWRlICJS
ZWZDb3VudE9iamVjdC5oIgorCitSZWZDb3VudE9iamVjdDo6UmVmQ291bnRPYmplY3QoR0x1aW50
IGlkKQoreworICAgIG1JZCA9IGlkOworICAgIG1SZWZDb3VudCA9IDA7Cit9CisKK1JlZkNvdW50
T2JqZWN0Ojp+UmVmQ291bnRPYmplY3QoKQoreworICAgIEFTU0VSVChtUmVmQ291bnQgPT0gMCk7
Cit9CisKK3ZvaWQgUmVmQ291bnRPYmplY3Q6OmFkZFJlZigpIGNvbnN0Cit7CisgICAgbVJlZkNv
dW50Kys7Cit9CisKK3ZvaWQgUmVmQ291bnRPYmplY3Q6OnJlbGVhc2UoKSBjb25zdAoreworICAg
IEFTU0VSVChtUmVmQ291bnQgPiAwKTsKKworICAgIGlmICgtLW1SZWZDb3VudCA9PSAwKQorICAg
IHsKKyAgICAgICAgZGVsZXRlIHRoaXM7CisgICAgfQorfQorCit2b2lkIFJlZkNvdW50T2JqZWN0
QmluZGluZ1BvaW50ZXI6OnNldChSZWZDb3VudE9iamVjdCAqbmV3T2JqZWN0KQoreworICAgIC8v
IGFkZFJlZiBmaXJzdCBpbiBjYXNlIG5ld09iamVjdCA9PSBtT2JqZWN0IGFuZCB0aGlzIGlzIHRo
ZSBsYXN0IHJlZmVyZW5jZSB0byBpdC4KKyAgICBpZiAobmV3T2JqZWN0ICE9IE5VTEwpIG5ld09i
amVjdC0+YWRkUmVmKCk7CisgICAgaWYgKG1PYmplY3QgIT0gTlVMTCkgbU9iamVjdC0+cmVsZWFz
ZSgpOworCisgICAgbU9iamVjdCA9IG5ld09iamVjdDsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vUmVmQ291bnRPYmplY3QuaCBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vUmVmQ291bnRPYmplY3QuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43Mjdj
NzFjMzYyNGZiODQ5ZTVkY2Y1MmMwZTJhM2UzOThkYmJlZTUwCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbW1vbi9SZWZDb3VudE9iamVjdC5oCkBAIC0w
LDAgKzEsNjUgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMCBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFJlZkNvdW50T2JqZWN0Lmg6IERl
ZmluZXMgdGhlIGdsOjpSZWZDb3VudE9iamVjdCBiYXNlIGNsYXNzIHRoYXQgcHJvdmlkZXMKKy8v
IGxpZmVjeWNsZSBzdXBwb3J0IGZvciBHTCBvYmplY3RzIHVzaW5nIHRoZSB0cmFkaXRpb25hbCBC
aW5kT2JqZWN0IHNjaGVtZSwgYnV0CisvLyB0aGF0IG5lZWQgdG8gYmUgcmVmZXJlbmNlIGNvdW50
ZWQgZm9yIGNvcnJlY3QgY3Jvc3MtY29udGV4dCBkZWxldGlvbi4KKy8vIChDb25jcmV0ZWx5LCB0
ZXh0dXJlcywgYnVmZmVycyBhbmQgcmVuZGVyYnVmZmVycy4pCisKKyNpZm5kZWYgQ09NTU9OX1JF
RkNPVU5UT0JKRUNUX0hfCisjZGVmaW5lIENPTU1PTl9SRUZDT1VOVE9CSkVDVF9IXworCisjaW5j
bHVkZSA8Y3N0ZGRlZj4KKworI2RlZmluZSBHTF9BUElDQUxMCisjaW5jbHVkZSA8R0xFUzIvZ2wy
Lmg+CisKKyNpbmNsdWRlICJjb21tb24vZGVidWcuaCIKKworY2xhc3MgUmVmQ291bnRPYmplY3QK
K3sKKyAgcHVibGljOgorICAgIGV4cGxpY2l0IFJlZkNvdW50T2JqZWN0KEdMdWludCBpZCk7Cisg
ICAgdmlydHVhbCB+UmVmQ291bnRPYmplY3QoKTsKKworICAgIHZpcnR1YWwgdm9pZCBhZGRSZWYo
KSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZSgpIGNvbnN0OworCisgICAgR0x1aW50
IGlkKCkgY29uc3QgeyByZXR1cm4gbUlkOyB9CisgICAgCisgIHByaXZhdGU6CisgICAgR0x1aW50
IG1JZDsKKworICAgIG11dGFibGUgc3RkOjpzaXplX3QgbVJlZkNvdW50OworfTsKKworY2xhc3Mg
UmVmQ291bnRPYmplY3RCaW5kaW5nUG9pbnRlcgoreworICBwcm90ZWN0ZWQ6CisgICAgUmVmQ291
bnRPYmplY3RCaW5kaW5nUG9pbnRlcigpIDogbU9iamVjdChOVUxMKSB7IH0KKyAgICB+UmVmQ291
bnRPYmplY3RCaW5kaW5nUG9pbnRlcigpIHsgQVNTRVJUKG1PYmplY3QgPT0gTlVMTCk7IH0gLy8g
T2JqZWN0cyBoYXZlIHRvIGJlIHJlbGVhc2VkIGJlZm9yZSB0aGUgcmVzb3VyY2UgbWFuYWdlciBp
cyBkZXN0cm95ZWQsIHNvIHRoZXkgbXVzdCBiZSBleHBsaWNpdGx5IGNsZWFuZWQgdXAuCisKKyAg
ICB2b2lkIHNldChSZWZDb3VudE9iamVjdCAqbmV3T2JqZWN0KTsKKyAgICBSZWZDb3VudE9iamVj
dCAqZ2V0KCkgY29uc3QgeyByZXR1cm4gbU9iamVjdDsgfQorCisgIHB1YmxpYzoKKyAgICBHTHVp
bnQgaWQoKSBjb25zdCB7IHJldHVybiAobU9iamVjdCAhPSBOVUxMKSA/IG1PYmplY3QtPmlkKCkg
OiAwOyB9CisgICAgYm9vbCBvcGVyYXRvciAhICgpIGNvbnN0IHsgcmV0dXJuIChnZXQoKSA9PSBO
VUxMKTsgfQorCisgIHByaXZhdGU6CisgICAgUmVmQ291bnRPYmplY3QgKm1PYmplY3Q7Cit9Owor
Cit0ZW1wbGF0ZSA8Y2xhc3MgT2JqZWN0VHlwZT4KK2NsYXNzIEJpbmRpbmdQb2ludGVyIDogcHVi
bGljIFJlZkNvdW50T2JqZWN0QmluZGluZ1BvaW50ZXIKK3sKKyAgcHVibGljOgorICAgIHZvaWQg
c2V0KE9iamVjdFR5cGUgKm5ld09iamVjdCkgeyBSZWZDb3VudE9iamVjdEJpbmRpbmdQb2ludGVy
OjpzZXQobmV3T2JqZWN0KTsgfQorICAgIE9iamVjdFR5cGUgKmdldCgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PE9iamVjdFR5cGUqPihSZWZDb3VudE9iamVjdEJpbmRpbmdQb2ludGVyOjpn
ZXQoKSk7IH0KKyAgICBPYmplY3RUeXBlICpvcGVyYXRvciAtPiAoKSBjb25zdCB7IHJldHVybiBn
ZXQoKTsgfQorfTsKKworI2VuZGlmICAgLy8gQ09NTU9OX1JFRkNPVU5UT0JKRUNUX0hfCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL2RlYnVnLmNwcCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vZGVidWcuY3BwCmluZGV4IDgxYTE4M2U4
ZjIxMzZmNTEwM2U4ZWQ2MDAyNDc1MWY4YjgwN2MzZjMuLjg0NWQyNTg5NjI0NmQwMWVjMGZiMzk3
MDcwZGNmODIwYTBhMzI0M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21tb24vZGVidWcuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21t
b24vZGVidWcuY3BwCkBAIC0yMyw3ICsyMyw3IEBAIHN0YXRpYyB2b2lkIG91dHB1dChib29sIHRy
YWNlRmlsZURlYnVnT25seSwgUGVyZk91dHB1dEZ1bmN0aW9uIHBlcmZGdW5jLCBjb25zdCBjCiAj
aWYgIWRlZmluZWQoQU5HTEVfRElTQUJMRV9QRVJGKQ0KICAgICBpZiAocGVyZkFjdGl2ZSgpKQ0K
ICAgICB7DQotICAgICAgICBjaGFyIG1lc3NhZ2VbNDA5Nl07DQorICAgICAgICBjaGFyIG1lc3Nh
Z2VbMzI3NjhdOw0KICAgICAgICAgaW50IGxlbiA9IHZzcHJpbnRmX3MobWVzc2FnZSwgZm9ybWF0
LCB2YXJhcmcpOw0KICAgICAgICAgaWYgKGxlbiA8IDApDQogICAgICAgICB7DQpAQCAtMzEsNyAr
MzEsNyBAQCBzdGF0aWMgdm9pZCBvdXRwdXQoYm9vbCB0cmFjZUZpbGVEZWJ1Z09ubHksIFBlcmZP
dXRwdXRGdW5jdGlvbiBwZXJmRnVuYywgY29uc3QgYwogICAgICAgICB9DQogDQogICAgICAgICAv
LyBUaGVyZSBhcmUgbm8gQVNDSUkgdmFyaWFudHMgb2YgdGhlc2UgRDNEUEVSRiBmdW5jdGlvbnMu
DQotICAgICAgICB3Y2hhcl90IHdpZGVNZXNzYWdlWzQwOTZdOw0KKyAgICAgICAgd2NoYXJfdCB3
aWRlTWVzc2FnZVszMjc2OF07DQogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbjsgKytp
KQ0KICAgICAgICAgew0KICAgICAgICAgICAgIHdpZGVNZXNzYWdlW2ldID0gbWVzc2FnZVtpXTsN
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tbW9uL3ZlcnNpb24u
aCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21tb24vdmVyc2lvbi5oCmluZGV4IDBm
OTJjMmMyYzkzODQwZDNlMjkyOTg0MWFlNjM1MzliMDQzNmE3N2QuLjIwM2M0MjE3NzM3OTRiMGI5
MTNiYTg4YmFkODJmMTc3MDE1MjQ0YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21tb24vdmVyc2lvbi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21tb24vdmVyc2lvbi5oCkBAIC0xLDcgKzEsNyBAQAogI2RlZmluZSBNQUpPUl9WRVJTSU9O
IDEKICNkZWZpbmUgTUlOT1JfVkVSU0lPTiAwCiAjZGVmaW5lIEJVSUxEX1ZFUlNJT04gMAotI2Rl
ZmluZSBCVUlMRF9SRVZJU0lPTiA5MzkKKyNkZWZpbmUgQlVJTERfUkVWSVNJT04gMTAwOQogCiAj
ZGVmaW5lIFNUUklOR0lGWSh4KSAjeAogI2RlZmluZSBNQUNST19TVFJJTkdJRlkoeCkgU1RSSU5H
SUZZKHgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
QmFzZVR5cGVzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQmFzZVR5
cGVzLmgKaW5kZXggNTViMWY5YTE1ZGVkNmRhMDY1MzIxYTBmYzdkMzZiZGNiZDQ5OTliMi4uNWY4
MzE4NTMwNGE5YjBlNzMxNTA4MWM3Y2I3NzgwNDUyY2U5ODFhMSAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0Jhc2VUeXBlcy5oCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9CYXNlVHlwZXMuaApAQCAtNDcsNiArNDcsNyBA
QCBlbnVtIFRCYXNpY1R5cGUKICAgICBFYnRHdWFyZFNhbXBsZXJFbmQsICAgIC8vIG5vbiB0eXBl
OiAgc2VlIGltcGxlbWVudGF0aW9uIG9mIElzU2FtcGxlcigpCiAgICAgRWJ0U3RydWN0LAogICAg
IEVidEFkZHJlc3MsICAgICAgICAgICAgLy8gc2hvdWxkIGJlIGRlcHJlY2F0ZWQ/PworICAgIEVi
dEludmFyaWFudCwgICAgICAgICAgLy8gdXNlZCBhcyBhIHR5cGUgd2hlbiBxdWFsaWZ5aW5nIGEg
cHJldmlvdXNseSBkZWNsYXJlZCB2YXJpYWJsZSBhcyBiZWluZyBpbnZhcmlhbnQKIH07CiAKIGlu
bGluZSBjb25zdCBjaGFyKiBnZXRCYXNpY1N0cmluZyhUQmFzaWNUeXBlIHQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29tcGlsZXIuY3BwIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0NvbXBpbGVyLmNwcAppbmRleCAyMjc2
NGJkY2ZiYTU2NjJhYjM1MGZkOTkyNmU3ZmVjYmM1NzBlYzI4Li5mMjdjYjc1ZDUxNWU3N2FmMmQx
OTI4M2JkZmMyMGQ2ZTQ1ZTMzYmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvQ29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9Db21waWxlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvLwotLy8gQ29weXJp
Z2h0IChjKSAyMDAyLTIwMTEgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1
dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp
cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBp
biB0aGUgTElDRU5TRSBmaWxlLgogLy8KQEAgLTgsMTAgKzgsMTAgQEAKICNpbmNsdWRlICJjb21w
aWxlci9EZXRlY3RSZWN1cnNpb24uaCIKICNpbmNsdWRlICJjb21waWxlci9Gb3JMb29wVW5yb2xs
LmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvSW5pdGlhbGl6ZS5oIgorI2luY2x1ZGUgImNvbXBpbGVy
L01hcExvbmdWYXJpYWJsZU5hbWVzLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvUGFyc2VIZWxwZXIu
aCIKICNpbmNsdWRlICJjb21waWxlci9TaEhhbmRsZS5oIgogI2luY2x1ZGUgImNvbXBpbGVyL1Zh
bGlkYXRlTGltaXRhdGlvbnMuaCIKLSNpbmNsdWRlICJjb21waWxlci9NYXBMb25nVmFyaWFibGVO
YW1lcy5oIgogCiBuYW1lc3BhY2UgewogYm9vbCBJbml0aWFsaXplU3ltYm9sVGFibGUoCkBAIC05
MSwxMCArOTEsMTMgQEAgVENvbXBpbGVyOjpUQ29tcGlsZXIoU2hTaGFkZXJUeXBlIHR5cGUsIFNo
U2hhZGVyU3BlYyBzcGVjKQogICAgICAgc2hhZGVyU3BlYyhzcGVjKSwKICAgICAgIGJ1aWx0SW5G
dW5jdGlvbkVtdWxhdG9yKHR5cGUpCiB7CisgICAgbG9uZ05hbWVNYXAgPSBMb25nTmFtZU1hcDo6
R2V0SW5zdGFuY2UoKTsKIH0KIAogVENvbXBpbGVyOjp+VENvbXBpbGVyKCkKIHsKKyAgICBBU1NF
UlQobG9uZ05hbWVNYXApOworICAgIGxvbmdOYW1lTWFwLT5SZWxlYXNlKCk7CiB9CiAKIGJvb2wg
VENvbXBpbGVyOjpJbml0KGNvbnN0IFNoQnVpbHRJblJlc291cmNlcyYgcmVzb3VyY2VzKQpAQCAt
MjQ2LDcgKzI0OSw4IEBAIHZvaWQgVENvbXBpbGVyOjpjb2xsZWN0QXR0cmlic1VuaWZvcm1zKFRJ
bnRlcm1Ob2RlKiByb290KQogCiB2b2lkIFRDb21waWxlcjo6bWFwTG9uZ1ZhcmlhYmxlTmFtZXMo
VEludGVybU5vZGUqIHJvb3QpCiB7Ci0gICAgTWFwTG9uZ1ZhcmlhYmxlTmFtZXMgbWFwKHZhcnlp
bmdMb25nTmFtZU1hcCk7CisgICAgQVNTRVJUKGxvbmdOYW1lTWFwKTsKKyAgICBNYXBMb25nVmFy
aWFibGVOYW1lcyBtYXAobG9uZ05hbWVNYXApOwogICAgIHJvb3QtPnRyYXZlcnNlKCZtYXApOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29u
c3RhbnRVbmlvbi5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL0NvbnN0
YW50VW5pb24uaAppbmRleCBkMjhhMTFiOGI4ZjYxN2I5M2UyYTQzNzkyNTc3N2E5Y2RkZmYwYTY0
Li5mZDlkOTRkYzVhOGJlYTVlZDVkMDViZTVmNmJiNjY5MzhlNzE1ZGZjIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvQ29uc3RhbnRVbmlvbi5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Db25zdGFudFVuaW9uLmgKQEAg
LTExLDYgKzExLDEwIEBACiAKIGNsYXNzIENvbnN0YW50VW5pb24gewogcHVibGljOgorICAgIENv
bnN0YW50VW5pb24oKQorICAgIHsKKyAgICAgICAgaUNvbnN0ID0gMDsKKyAgICB9CiAKICAgICBQ
T09MX0FMTE9DQVRPUl9ORVdfREVMRVRFKEdsb2JhbFBvb2xBbGxvY2F0b3IpICAgICAgICAKICAg
ICB2b2lkIHNldElDb25zdChpbnQgaSkge2lDb25zdCA9IGk7IHR5cGUgPSBFYnRJbnQ7IH0KQEAg
LTU0LDggKzU4LDYgQEAgcHVibGljOgogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAog
ICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBpbnQgaSkgY29uc3QKQEAgLTg5LDggKzkxLDYgQEAg
cHVibGljOgogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAgIC8v
IEludmFsaWQgb3BlcmF0aW9uLCBoYW5kbGVkIGF0IHNlbWFudGljIGFuYWx5c2lzCiAgICAgICAg
IH0KLQotICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgYm9vbCBvcGVyYXRvcjwo
Y29uc3QgQ29uc3RhbnRVbmlvbiYgY29uc3RhbnQpIGNvbnN0CkBAIC0xMDQsOCArMTA0LDYgQEAg
cHVibGljOgogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAgIC8v
IEludmFsaWQgb3BlcmF0aW9uLCBoYW5kbGVkIGF0IHNlbWFudGljIGFuYWx5c2lzCiAgICAgICAg
IH0KLQotICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgQ29uc3RhbnRVbmlvbiBv
cGVyYXRvcisoY29uc3QgQ29uc3RhbnRVbmlvbiYgY29uc3RhbnQpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvSW50ZXJtZWRpYXRlLmNwcCBi
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9JbnRlcm1lZGlhdGUuY3BwCmlu
ZGV4IGUxZThkYTI1YWE3Mzg2MjlmODExNDJiMGYzYWM4MjVjNGExNzYyMDEuLmNhNmQ4Zjc0NjA4
MzJlMWZhNjY4MjMxY2E5MTk4ZDRhYmU4MzA2ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9JbnRlcm1lZGlhdGUuY3BwCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9JbnRlcm1lZGlhdGUuY3BwCkBAIC0xMzcxLDggKzEz
NzEsNiBAQCBUSW50ZXJtVHlwZWQqIFRJbnRlcm1Db25zdGFudFVuaW9uOjpmb2xkKFRPcGVyYXRv
ciBvcCwgVEludGVybVR5cGVkKiBjb25zdGFudE5vZAogICAgICAgICBuZXdOb2RlLT5zZXRMaW5l
KGdldExpbmUoKSk7CiAgICAgICAgIHJldHVybiBuZXdOb2RlOwogICAgIH0KLQotICAgIHJldHVy
biB0aGlzOwogfQogCiBUSW50ZXJtVHlwZWQqIFRJbnRlcm1lZGlhdGU6OnByb21vdGVDb25zdGFu
dFVuaW9uKFRCYXNpY1R5cGUgcHJvbW90ZVRvLCBUSW50ZXJtQ29uc3RhbnRVbmlvbiogbm9kZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9NYXBMb25n
VmFyaWFibGVOYW1lcy5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
TWFwTG9uZ1ZhcmlhYmxlTmFtZXMuY3BwCmluZGV4IDNjNWQzNTZkYTA0M2EzMDNhZWYwZjcxNzUx
Y2E3YWI0MTVkOTkxM2IuLjBjN2UxYTljYjgwOWIyY2QzOWVhODZkYzlkNmZhMzE0OGRhMjhiODkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9NYXBMb25n
VmFyaWFibGVOYW1lcy5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL01hcExvbmdWYXJpYWJsZU5hbWVzLmNwcApAQCAtOCwyNCArOCw3NSBAQAogCiBuYW1lc3Bh
Y2UgewogCi1UU3RyaW5nIG1hcExvbmdOYW1lKGludCBpZCwgY29uc3QgVFN0cmluZyYgbmFtZSwg
Ym9vbCBpc1ZhcnlpbmcpCitUU3RyaW5nIG1hcExvbmdOYW1lKGludCBpZCwgY29uc3QgVFN0cmlu
ZyYgbmFtZSwgYm9vbCBpc0dsb2JhbCkKIHsKICAgICBBU1NFUlQobmFtZS5zaXplKCkgPiBNQVhf
U0hPUlRFTkVEX0lERU5USUZJRVJfU0laRSk7CiAgICAgVFN0cmluZ1N0cmVhbSBzdHJlYW07CiAg
ICAgc3RyZWFtIDw8ICJ3ZWJnbF8iOwotICAgIGlmIChpc1ZhcnlpbmcpCi0gICAgICAgIHN0cmVh
bSA8PCAidiI7CisgICAgaWYgKGlzR2xvYmFsKQorICAgICAgICBzdHJlYW0gPDwgImciOwogICAg
IHN0cmVhbSA8PCBpZCA8PCAiXyI7CiAgICAgc3RyZWFtIDw8IG5hbWUuc3Vic3RyKDAsIE1BWF9T
SE9SVEVORURfSURFTlRJRklFUl9TSVpFIC0gc3RyZWFtLnN0cigpLnNpemUoKSk7CiAgICAgcmV0
dXJuIHN0cmVhbS5zdHIoKTsKIH0KIAorTG9uZ05hbWVNYXAqIGdMb25nTmFtZU1hcEluc3RhbmNl
ID0gTlVMTDsKKwogfSAgLy8gYW5vbnltb3VzIG5hbWVzcGFjZQogCi1NYXBMb25nVmFyaWFibGVO
YW1lczo6TWFwTG9uZ1ZhcmlhYmxlTmFtZXMoCi0gICAgc3RkOjptYXA8c3RkOjpzdHJpbmcsIHN0
ZDo6c3RyaW5nPiYgdmFyeWluZ0xvbmdOYW1lTWFwKQotICAgIDogbVZhcnlpbmdMb25nTmFtZU1h
cCh2YXJ5aW5nTG9uZ05hbWVNYXApCitMb25nTmFtZU1hcDo6TG9uZ05hbWVNYXAoKQorICAgIDog
cmVmQ291bnQoMCkKK3sKK30KKworTG9uZ05hbWVNYXA6On5Mb25nTmFtZU1hcCgpCit7Cit9CisK
Ky8vIHN0YXRpYworTG9uZ05hbWVNYXAqIExvbmdOYW1lTWFwOjpHZXRJbnN0YW5jZSgpCit7Cisg
ICAgaWYgKGdMb25nTmFtZU1hcEluc3RhbmNlID09IE5VTEwpCisgICAgICAgIGdMb25nTmFtZU1h
cEluc3RhbmNlID0gbmV3IExvbmdOYW1lTWFwOworICAgIGdMb25nTmFtZU1hcEluc3RhbmNlLT5y
ZWZDb3VudCsrOworICAgIHJldHVybiBnTG9uZ05hbWVNYXBJbnN0YW5jZTsKK30KKwordm9pZCBM
b25nTmFtZU1hcDo6UmVsZWFzZSgpCit7CisgICAgQVNTRVJUKGdMb25nTmFtZU1hcEluc3RhbmNl
ID09IHRoaXMpOworICAgIEFTU0VSVChyZWZDb3VudCA+IDApOworICAgIHJlZkNvdW50LS07Cisg
ICAgaWYgKHJlZkNvdW50ID09IDApIHsKKyAgICAgICAgZGVsZXRlIGdMb25nTmFtZU1hcEluc3Rh
bmNlOworICAgICAgICBnTG9uZ05hbWVNYXBJbnN0YW5jZSA9IE5VTEw7CisgICAgfQorfQorCitj
b25zdCBjaGFyKiBMb25nTmFtZU1hcDo6RmluZChjb25zdCBjaGFyKiBvcmlnaW5hbE5hbWUpIGNv
bnN0CiB7CisgICAgc3RkOjptYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPjo6Y29uc3RfaXRl
cmF0b3IgaXQgPSBtTG9uZ05hbWVNYXAuZmluZCgKKyAgICAgICAgb3JpZ2luYWxOYW1lKTsKKyAg
ICBpZiAoaXQgIT0gbUxvbmdOYW1lTWFwLmVuZCgpKQorICAgICAgICByZXR1cm4gKCppdCkuc2Vj
b25kLmNfc3RyKCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3ZvaWQgTG9uZ05hbWVNYXA6Oklu
c2VydChjb25zdCBjaGFyKiBvcmlnaW5hbE5hbWUsIGNvbnN0IGNoYXIqIG1hcHBlZE5hbWUpCit7
CisgICAgbUxvbmdOYW1lTWFwLmluc2VydChzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJp
bmc+Ojp2YWx1ZV90eXBlKAorICAgICAgICBvcmlnaW5hbE5hbWUsIG1hcHBlZE5hbWUpKTsKK30K
KworaW50IExvbmdOYW1lTWFwOjpTaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbUxvbmdOYW1l
TWFwLnNpemUoKTsKK30KKworTWFwTG9uZ1ZhcmlhYmxlTmFtZXM6Ok1hcExvbmdWYXJpYWJsZU5h
bWVzKExvbmdOYW1lTWFwKiBnbG9iYWxNYXApCit7CisgICAgQVNTRVJUKGdsb2JhbE1hcCk7Cisg
ICAgbUdsb2JhbE1hcCA9IGdsb2JhbE1hcDsKIH0KIAogdm9pZCBNYXBMb25nVmFyaWFibGVOYW1l
czo6dmlzaXRTeW1ib2woVEludGVybVN5bWJvbCogc3ltYm9sKQpAQCAtMzksNyArOTAsNyBAQCB2
b2lkIE1hcExvbmdWYXJpYWJsZU5hbWVzOjp2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sKiBzeW1i
b2wpCiAgICAgICAgICAgY2FzZSBFdnFJbnZhcmlhbnRWYXJ5aW5nT3V0OgogICAgICAgICAgIGNh
c2UgRXZxVW5pZm9ybToKICAgICAgICAgICAgIHN5bWJvbC0+c2V0U3ltYm9sKAotICAgICAgICAg
ICAgICAgIG1hcFZhcnlpbmdMb25nTmFtZShzeW1ib2wtPmdldFN5bWJvbCgpKSk7CisgICAgICAg
ICAgICAgICAgbWFwR2xvYmFsTG9uZ05hbWUoc3ltYm9sLT5nZXRTeW1ib2woKSkpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHN5bWJvbC0+c2V0
U3ltYm9sKApAQCAtNTYsMTUgKzEwNywxNCBAQCBib29sIE1hcExvbmdWYXJpYWJsZU5hbWVzOjp2
aXNpdExvb3AoVmlzaXQsIFRJbnRlcm1Mb29wKiBub2RlKQogICAgIHJldHVybiB0cnVlOwogfQog
Ci1UU3RyaW5nIE1hcExvbmdWYXJpYWJsZU5hbWVzOjptYXBWYXJ5aW5nTG9uZ05hbWUoY29uc3Qg
VFN0cmluZyYgbmFtZSkKK1RTdHJpbmcgTWFwTG9uZ1ZhcmlhYmxlTmFtZXM6Om1hcEdsb2JhbExv
bmdOYW1lKGNvbnN0IFRTdHJpbmcmIG5hbWUpCiB7Ci0gICAgc3RkOjptYXA8c3RkOjpzdHJpbmcs
IHN0ZDo6c3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtVmFyeWluZ0xvbmdOYW1lTWFwLmZp
bmQobmFtZS5jX3N0cigpKTsKLSAgICBpZiAoaXQgIT0gbVZhcnlpbmdMb25nTmFtZU1hcC5lbmQo
KSkKLSAgICAgICAgcmV0dXJuICgqaXQpLnNlY29uZC5jX3N0cigpOwotCi0gICAgaW50IGlkID0g
bVZhcnlpbmdMb25nTmFtZU1hcC5zaXplKCk7Ci0gICAgVFN0cmluZyBtYXBwZWROYW1lID0gbWFw
TG9uZ05hbWUoaWQsIG5hbWUsIHRydWUpOwotICAgIG1WYXJ5aW5nTG9uZ05hbWVNYXAuaW5zZXJ0
KAotICAgICAgICBzdGQ6Om1hcDxzdGQ6OnN0cmluZywgc3RkOjpzdHJpbmc+Ojp2YWx1ZV90eXBl
KG5hbWUuY19zdHIoKSwgbWFwcGVkTmFtZS5jX3N0cigpKSk7Ci0gICAgcmV0dXJuIG1hcHBlZE5h
bWU7CisgICAgQVNTRVJUKG1HbG9iYWxNYXApOworICAgIGNvbnN0IGNoYXIqIG1hcHBlZE5hbWUg
PSBtR2xvYmFsTWFwLT5GaW5kKG5hbWUuY19zdHIoKSk7CisgICAgaWYgKG1hcHBlZE5hbWUgIT0g
TlVMTCkKKyAgICAgICAgcmV0dXJuIG1hcHBlZE5hbWU7CisgICAgaW50IGlkID0gbUdsb2JhbE1h
cC0+U2l6ZSgpOworICAgIFRTdHJpbmcgcnQgPSBtYXBMb25nTmFtZShpZCwgbmFtZSwgdHJ1ZSk7
CisgICAgbUdsb2JhbE1hcC0+SW5zZXJ0KG5hbWUuY19zdHIoKSwgcnQuY19zdHIoKSk7CisgICAg
cmV0dXJuIHJ0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL01hcExvbmdWYXJpYWJsZU5hbWVzLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvTWFwTG9uZ1ZhcmlhYmxlTmFtZXMuaAppbmRleCAwODZmMmI5ZThiMGY0MzA3
MmU1MDMwN2VhNzcxYmVhOTdmMmY0Y2UxLi5mYjJjN2U4MWNiOGU4ZDMzOTQ3OGNiMjAyM2UxZjBl
NDM1YWRjMzFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvTWFwTG9uZ1ZhcmlhYmxlTmFtZXMuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvTWFwTG9uZ1ZhcmlhYmxlTmFtZXMuaApAQCAtMSw1ICsxLDUgQEAKIC8vCi0v
LyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTIgVGhlIEFOR0xFIFBy
b2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJj
ZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8v
IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtMTUsMTkgKzE1LDQ1IEBACiAvLyBU
aGlzIHNpemUgZG9lcyBub3QgaW5jbHVkZSAnXDAnIGluIHRoZSBlbmQuCiAjZGVmaW5lIE1BWF9T
SE9SVEVORURfSURFTlRJRklFUl9TSVpFIDMyCiAKKy8vIFRoaXMgaXMgYSByZWYtY291bnRlZCBz
aW5nbGV0b24uIEdldEluc3RhbmNlKCkgcmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlCisvLyBzaW5n
bGV0b24sIGFuZCBhZnRlciB1c2UsIGNhbGwgUmVsZWFzZSgpLiBHZXRJbnN0YW5jZSgpIGFuZCBS
ZWxlYXNlKCkgc2hvdWxkCisvLyBiZSBwYWlyZWQuCitjbGFzcyBMb25nTmFtZU1hcCB7CitwdWJs
aWM6CisgICAgc3RhdGljIExvbmdOYW1lTWFwKiBHZXRJbnN0YW5jZSgpOworICAgIHZvaWQgUmVs
ZWFzZSgpOworCisgICAgLy8gUmV0dXJuIHRoZSBtYXBwZWQgbmFtZSBpZiA8b3JpZ2luYWxOYW1l
LCBtYXBwZWROYW1lPiBpcyBpbiB0aGUgbWFwOworICAgIC8vIG90aGVyd2lzZSwgcmV0dXJuIE5V
TEwuCisgICAgY29uc3QgY2hhciogRmluZChjb25zdCBjaGFyKiBvcmlnaW5hbE5hbWUpIGNvbnN0
OworCisgICAgLy8gSW5zZXJ0IGEgcGFpciBpbnRvIHRoZSBtYXAuCisgICAgdm9pZCBJbnNlcnQo
Y29uc3QgY2hhciogb3JpZ2luYWxOYW1lLCBjb25zdCBjaGFyKiBtYXBwZWROYW1lKTsKKworICAg
IC8vIFJldHVybiB0aGUgbnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIG1hcC4KKyAgICBpbnQgU2l6
ZSgpIGNvbnN0OworCitwcml2YXRlOgorICAgIExvbmdOYW1lTWFwKCk7CisgICAgfkxvbmdOYW1l
TWFwKCk7CisKKyAgICBzaXplX3QgcmVmQ291bnQ7CisgICAgc3RkOjptYXA8c3RkOjpzdHJpbmcs
IHN0ZDo6c3RyaW5nPiBtTG9uZ05hbWVNYXA7Cit9OworCiAvLyBUcmF2ZXJzZXMgaW50ZXJtZWRp
YXRlIHRyZWUgdG8gbWFwIGF0dHJpYnV0ZXMgYW5kIHVuaWZvcm1zIG5hbWVzIHRoYXQgYXJlCiAv
LyBsb25nZXIgdGhhbiBNQVhfU0hPUlRFTkVEX0lERU5USUZJRVJfU0laRSB0byBNQVhfU0hPUlRF
TkVEX0lERU5USUZJRVJfU0laRS4KIGNsYXNzIE1hcExvbmdWYXJpYWJsZU5hbWVzIDogcHVibGlj
IFRJbnRlcm1UcmF2ZXJzZXIgewogcHVibGljOgotICAgIE1hcExvbmdWYXJpYWJsZU5hbWVzKHN0
ZDo6bWFwPHN0ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4mIHZhcnlpbmdMb25nTmFtZU1hcCk7Cisg
ICAgTWFwTG9uZ1ZhcmlhYmxlTmFtZXMoTG9uZ05hbWVNYXAqIGdsb2JhbE1hcCk7CiAKICAgICB2
aXJ0dWFsIHZvaWQgdmlzaXRTeW1ib2woVEludGVybVN5bWJvbCopOwogICAgIHZpcnR1YWwgYm9v
bCB2aXNpdExvb3AoVmlzaXQsIFRJbnRlcm1Mb29wKik7CiAKIHByaXZhdGU6Ci0gICAgVFN0cmlu
ZyBtYXBWYXJ5aW5nTG9uZ05hbWUoY29uc3QgVFN0cmluZyYgbmFtZSk7CisgICAgVFN0cmluZyBt
YXBHbG9iYWxMb25nTmFtZShjb25zdCBUU3RyaW5nJiBuYW1lKTsKIAotICAgIHN0ZDo6bWFwPHN0
ZDo6c3RyaW5nLCBzdGQ6OnN0cmluZz4mIG1WYXJ5aW5nTG9uZ05hbWVNYXA7CisgICAgTG9uZ05h
bWVNYXAqIG1HbG9iYWxNYXA7CiB9OwogCiAjZW5kaWYgIC8vIENPTVBJTEVSX01BUF9MT05HX1ZB
UklBQkxFX05BTUVTX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvT3V0cHV0SExTTC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvT3V0cHV0SExTTC5jcHAKaW5kZXggYjNhMDBkMzBkYzQ0M2RlN2ExNGM4ZTVhOWY5MGU4
YmZmNzI2ODk4My4uNjliOGMyNmI4NjZkZDM3YTFhNTY4YzFkMzNkYmVkNTM4NjAwNzE5ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEhMU0wu
Y3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRITFNM
LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMSBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0
IChjKSAyMDAyLTIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAv
LwpAQCAtNjcsNyArNjcsMTAgQEAgT3V0cHV0SExTTDo6T3V0cHV0SExTTChUUGFyc2VDb250ZXh0
ICZjb250ZXh0KSA6IFRJbnRlcm1UcmF2ZXJzZXIodHJ1ZSwgdHJ1ZSwgdHIKICAgICBtVXNlc0Vx
dWFsQlZlYzIgPSBmYWxzZTsKICAgICBtVXNlc0VxdWFsQlZlYzMgPSBmYWxzZTsKICAgICBtVXNl
c0VxdWFsQlZlYzQgPSBmYWxzZTsKLSAgICBtVXNlc0F0YW4yID0gZmFsc2U7CisgICAgbVVzZXNB
dGFuMl8xID0gZmFsc2U7CisgICAgbVVzZXNBdGFuMl8yID0gZmFsc2U7CisgICAgbVVzZXNBdGFu
Ml8zID0gZmFsc2U7CisgICAgbVVzZXNBdGFuMl80ID0gZmFsc2U7CiAKICAgICBtU2NvcGVEZXB0
aCA9IDA7CiAKQEAgLTEzOSw3ICsxNDIsNyBAQCB2b2lkIE91dHB1dEhMU0w6OmhlYWRlcigpCiAg
ICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBpZiAobVJlZmVyZW5jZWRVbmlm
b3Jtcy5maW5kKG5hbWUuY19zdHIoKSkgIT0gbVJlZmVyZW5jZWRVbmlmb3Jtcy5lbmQoKSkKICAg
ICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgdW5pZm9ybXMgKz0g
InVuaWZvcm0gIiArIHR5cGVTdHJpbmcodHlwZSkgKyAiICIgKyBkZWNvcmF0ZVVuaWZvcm0obmFt
ZSwgdHlwZS5pc0FycmF5KCkpICsgYXJyYXlTdHJpbmcodHlwZSkgKyAiO1xuIjsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHVuaWZvcm1zICs9ICJ1bmlmb3JtICIgKyB0eXBlU3RyaW5nKHR5cGUp
ICsgIiAiICsgZGVjb3JhdGVVbmlmb3JtKG5hbWUsIHR5cGUpICsgYXJyYXlTdHJpbmcodHlwZSkg
KyAiO1xuIjsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICBlbHNlIGlmIChxdWFsaWZpZXIgPT0gRXZxVmFyeWluZ0luIHx8IHF1YWxpZmll
ciA9PSBFdnFJbnZhcmlhbnRWYXJ5aW5nSW4pCkBAIC0zMDMsNyArMzA2LDcgQEAgdm9pZCBPdXRw
dXRITFNMOjpoZWFkZXIoKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAg
aWYgKG1SZWZlcmVuY2VkVW5pZm9ybXMuZmluZChuYW1lLmNfc3RyKCkpICE9IG1SZWZlcmVuY2Vk
VW5pZm9ybXMuZW5kKCkpCiAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHVuaWZvcm1zICs9ICJ1bmlmb3JtICIgKyB0eXBlU3RyaW5nKHR5cGUpICsgIiAiICsg
ZGVjb3JhdGVVbmlmb3JtKG5hbWUsIHR5cGUuaXNBcnJheSgpKSArIGFycmF5U3RyaW5nKHR5cGUp
ICsgIjtcbiI7CisgICAgICAgICAgICAgICAgICAgICAgICB1bmlmb3JtcyArPSAidW5pZm9ybSAi
ICsgdHlwZVN0cmluZyh0eXBlKSArICIgIiArIGRlY29yYXRlVW5pZm9ybShuYW1lLCB0eXBlKSAr
IGFycmF5U3RyaW5nKHR5cGUpICsgIjtcbiI7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAocXVhbGlmaWVyID09IEV2cUF0
dHJpYnV0ZSkKQEAgLTcwMyw3ICs3MDYsNyBAQCB2b2lkIE91dHB1dEhMU0w6OmhlYWRlcigpCiAg
ICAgICAgICAgICAgICAifVxuIjsKICAgICB9CiAKLSAgICBpZiAobVVzZXNBdGFuMikKKyAgICBp
ZiAobVVzZXNBdGFuMl8xKQogICAgIHsKICAgICAgICAgb3V0IDw8ICJmbG9hdCBhdGFueXgoZmxv
YXQgeSwgZmxvYXQgeClcbiIKICAgICAgICAgICAgICAgICJ7XG4iCkBAIC03MTEsNiArNzE0LDM5
IEBAIHZvaWQgT3V0cHV0SExTTDo6aGVhZGVyKCkKICAgICAgICAgICAgICAgICIgICAgcmV0dXJu
IGF0YW4yKHksIHgpO1xuIgogICAgICAgICAgICAgICAgIn1cbiI7CiAgICAgfQorCisgICAgaWYg
KG1Vc2VzQXRhbjJfMikKKyAgICB7CisgICAgICAgIG91dCA8PCAiZmxvYXQyIGF0YW55eChmbG9h
dDIgeSwgZmxvYXQyIHgpXG4iCisgICAgICAgICAgICAgICAie1xuIgorICAgICAgICAgICAgICAg
IiAgICBpZih4WzBdID09IDAgJiYgeVswXSA9PSAwKSB4WzBdID0gMTtcbiIKKyAgICAgICAgICAg
ICAgICIgICAgaWYoeFsxXSA9PSAwICYmIHlbMV0gPT0gMCkgeFsxXSA9IDE7XG4iCisgICAgICAg
ICAgICAgICAiICAgIHJldHVybiBmbG9hdDIoYXRhbjIoeVswXSwgeFswXSksIGF0YW4yKHlbMV0s
IHhbMV0pKTtcbiIKKyAgICAgICAgICAgICAgICJ9XG4iOworICAgIH0KKworICAgIGlmIChtVXNl
c0F0YW4yXzMpCisgICAgeworICAgICAgICBvdXQgPDwgImZsb2F0MyBhdGFueXgoZmxvYXQzIHks
IGZsb2F0MyB4KVxuIgorICAgICAgICAgICAgICAgIntcbiIKKyAgICAgICAgICAgICAgICIgICAg
aWYoeFswXSA9PSAwICYmIHlbMF0gPT0gMCkgeFswXSA9IDE7XG4iCisgICAgICAgICAgICAgICAi
ICAgIGlmKHhbMV0gPT0gMCAmJiB5WzFdID09IDApIHhbMV0gPSAxO1xuIgorICAgICAgICAgICAg
ICAgIiAgICBpZih4WzJdID09IDAgJiYgeVsyXSA9PSAwKSB4WzJdID0gMTtcbiIKKyAgICAgICAg
ICAgICAgICIgICAgcmV0dXJuIGZsb2F0MyhhdGFuMih5WzBdLCB4WzBdKSwgYXRhbjIoeVsxXSwg
eFsxXSksIGF0YW4yKHlbMl0sIHhbMl0pKTtcbiIKKyAgICAgICAgICAgICAgICJ9XG4iOworICAg
IH0KKworICAgIGlmIChtVXNlc0F0YW4yXzQpCisgICAgeworICAgICAgICBvdXQgPDwgImZsb2F0
NCBhdGFueXgoZmxvYXQ0IHksIGZsb2F0NCB4KVxuIgorICAgICAgICAgICAgICAgIntcbiIKKyAg
ICAgICAgICAgICAgICIgICAgaWYoeFswXSA9PSAwICYmIHlbMF0gPT0gMCkgeFswXSA9IDE7XG4i
CisgICAgICAgICAgICAgICAiICAgIGlmKHhbMV0gPT0gMCAmJiB5WzFdID09IDApIHhbMV0gPSAx
O1xuIgorICAgICAgICAgICAgICAgIiAgICBpZih4WzJdID09IDAgJiYgeVsyXSA9PSAwKSB4WzJd
ID0gMTtcbiIKKyAgICAgICAgICAgICAgICIgICAgaWYoeFszXSA9PSAwICYmIHlbM10gPT0gMCkg
eFszXSA9IDE7XG4iCisgICAgICAgICAgICAgICAiICAgIHJldHVybiBmbG9hdDQoYXRhbjIoeVsw
XSwgeFswXSksIGF0YW4yKHlbMV0sIHhbMV0pLCBhdGFuMih5WzJdLCB4WzJdKSwgYXRhbjIoeVsz
XSwgeFszXSkpO1xuIgorICAgICAgICAgICAgICAgIn1cbiI7CisgICAgfQogfQogCiB2b2lkIE91
dHB1dEhMU0w6OnZpc2l0U3ltYm9sKFRJbnRlcm1TeW1ib2wgKm5vZGUpCkBAIC03NTksNyArNzk1
LDcgQEAgdm9pZCBPdXRwdXRITFNMOjp2aXNpdFN5bWJvbChUSW50ZXJtU3ltYm9sICpub2RlKQog
ICAgICAgICBpZiAocXVhbGlmaWVyID09IEV2cVVuaWZvcm0pCiAgICAgICAgIHsKICAgICAgICAg
ICAgIG1SZWZlcmVuY2VkVW5pZm9ybXMuaW5zZXJ0KG5hbWUuY19zdHIoKSk7Ci0gICAgICAgICAg
ICBvdXQgPDwgZGVjb3JhdGVVbmlmb3JtKG5hbWUsIG5vZGUtPmlzQXJyYXkoKSk7CisgICAgICAg
ICAgICBvdXQgPDwgZGVjb3JhdGVVbmlmb3JtKG5hbWUsIG5vZGUtPmdldFR5cGUoKSk7CiAgICAg
ICAgIH0KICAgICAgICAgZWxzZSBpZiAocXVhbGlmaWVyID09IEV2cUF0dHJpYnV0ZSkKICAgICAg
ICAgewpAQCAtMTAzMiw4ICsxMDY4LDYgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdEJpbmFyeShW
aXNpdCB2aXNpdCwgVEludGVybUJpbmFyeSAqbm9kZSkKIAogYm9vbCBPdXRwdXRITFNMOjp2aXNp
dFVuYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtVW5hcnkgKm5vZGUpCiB7Ci0gICAgVEluZm9TaW5r
QmFzZSAmb3V0ID0gbUJvZHk7Ci0KICAgICBzd2l0Y2ggKG5vZGUtPmdldE9wKCkpCiAgICAgewog
ICAgICAgY2FzZSBFT3BOZWdhdGl2ZTogICAgICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0LCAiKC0i
LCAiIiwgIikiKTsgIGJyZWFrOwpAQCAtMTExMCw3ICsxMTQ0LDYgQEAgYm9vbCBPdXRwdXRITFNM
Ojp2aXNpdFVuYXJ5KFZpc2l0IHZpc2l0LCBUSW50ZXJtVW5hcnkgKm5vZGUpCiAKIGJvb2wgT3V0
cHV0SExTTDo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlzaXQsIFRJbnRlcm1BZ2dyZWdhdGUgKm5v
ZGUpCiB7Ci0gICAgU2hTaGFkZXJUeXBlIHNoYWRlclR5cGUgPSBtQ29udGV4dC5zaGFkZXJUeXBl
OwogICAgIFRJbmZvU2lua0Jhc2UgJm91dCA9IG1Cb2R5OwogCiAgICAgc3dpdGNoIChub2RlLT5n
ZXRPcCgpKQpAQCAtMTI1Miw3ICsxMjg1LDcgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdEFnZ3Jl
Z2F0ZShWaXNpdCB2aXNpdCwgVEludGVybUFnZ3JlZ2F0ZSAqbm9kZSkKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgRU9wQ29t
bWE6ICAgICAgICAgICAgb3V0cHV0VHJpcGxldCh2aXNpdCwgIiIsICIsICIsICIiKTsgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEVPcENvbW1hOiAgICAgICAgICAgIG91dHB1dFRy
aXBsZXQodmlzaXQsICIoIiwgIiwgIiwgIikiKTsgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICBjYXNlIEVPcEZ1bmN0aW9uOgogICAgICAgICB7CiAgICAgICAgICAgICBUU3RyaW5nIG5hbWUg
PSBURnVuY3Rpb246OnVubWFuZ2xlTmFtZShub2RlLT5nZXROYW1lKCkpOwpAQCAtMTI3OSw2ICsx
MzEyLDExIEBAIGJvb2wgT3V0cHV0SExTTDo6dmlzaXRBZ2dyZWdhdGUoVmlzaXQgdmlzaXQsIFRJ
bnRlcm1BZ2dyZWdhdGUgKm5vZGUpCiAKICAgICAgICAgICAgICAgICAgICAgaWYgKHN5bWJvbCkK
ICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN5bWJv
bC0+Z2V0VHlwZSgpLmdldFN0cnVjdCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFkZENvbnN0cnVjdG9yKHN5bWJvbC0+Z2V0VHlwZSgp
LCBzY29wZWRTdHJ1Y3Qoc3ltYm9sLT5nZXRUeXBlKCkuZ2V0VHlwZU5hbWUoKSksIE5VTEwpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgICAgICAgICBvdXQg
PDwgYXJndW1lbnRTdHJpbmcoc3ltYm9sKTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGkgPCBhcmd1bWVudHMuc2l6ZSgpIC0gMSkKQEAgLTE0OTcsNyArMTUzNSwxNCBAQCBib29sIE91
dHB1dEhMU0w6OnZpc2l0QWdncmVnYXRlKFZpc2l0IHZpc2l0LCBUSW50ZXJtQWdncmVnYXRlICpu
b2RlKQogICAgICAgY2FzZSBFT3BQb3c6ICAgICAgICAgICAgICBvdXRwdXRUcmlwbGV0KHZpc2l0
LCAicG93KCIsICIsICIsICIpIik7ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEVP
cEF0YW46CiAgICAgICAgIEFTU0VSVChub2RlLT5nZXRTZXF1ZW5jZSgpLnNpemUoKSA9PSAyKTsg
ICAvLyBhdGFuKHgpIGlzIGEgdW5hcnkgb3BlcmF0b3IKLSAgICAgICAgbVVzZXNBdGFuMiA9IHRy
dWU7CisgICAgICAgIHN3aXRjaCAobm9kZS0+Z2V0U2VxdWVuY2UoKVswXS0+Z2V0QXNUeXBlZCgp
LT5nZXROb21pbmFsU2l6ZSgpKQorICAgICAgICB7CisgICAgICAgICAgY2FzZSAxOiBtVXNlc0F0
YW4yXzEgPSB0cnVlOyBicmVhazsKKyAgICAgICAgICBjYXNlIDI6IG1Vc2VzQXRhbjJfMiA9IHRy
dWU7IGJyZWFrOworICAgICAgICAgIGNhc2UgMzogbVVzZXNBdGFuMl8zID0gdHJ1ZTsgYnJlYWs7
CisgICAgICAgICAgY2FzZSA0OiBtVXNlc0F0YW4yXzQgPSB0cnVlOyBicmVhazsKKyAgICAgICAg
ICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgICB9CiAgICAgICAgIG91dHB1dFRyaXBs
ZXQodmlzaXQsICJhdGFueXgoIiwgIiwgIiwgIikiKTsKICAgICAgICAgYnJlYWs7CiAgICAgICBj
YXNlIEVPcE1pbjogICAgICAgICAgIG91dHB1dFRyaXBsZXQodmlzaXQsICJtaW4oIiwgIiwgIiwg
IikiKTsgICAgICAgICAgIGJyZWFrOwpAQCAtMTU5NSwxNCArMTY0MCwxNCBAQCBib29sIE91dHB1
dEhMU0w6OnZpc2l0TG9vcChWaXNpdCB2aXNpdCwgVEludGVybUxvb3AgKm5vZGUpCiAKICAgICBp
ZiAobm9kZS0+Z2V0VHlwZSgpID09IEVMb29wRG9XaGlsZSkKICAgICB7Ci0gICAgICAgIG91dCA8
PCAiZG9cbiI7CisgICAgICAgIG91dCA8PCAie2RvXG4iOwogCiAgICAgICAgIG91dHB1dExpbmVE
aXJlY3RpdmUobm9kZS0+Z2V0TGluZSgpKTsKICAgICAgICAgb3V0IDw8ICJ7XG4iOwogICAgIH0K
ICAgICBlbHNlCiAgICAgewotICAgICAgICBvdXQgPDwgImZvcigiOworICAgICAgICBvdXQgPDwg
Intmb3IoIjsKICAgICAgICAgCiAgICAgICAgIGlmIChub2RlLT5nZXRJbml0KCkpCiAgICAgICAg
IHsKQEAgLTE2NDQsMTAgKzE2ODksMTAgQEAgYm9vbCBPdXRwdXRITFNMOjp2aXNpdExvb3AoVmlz
aXQgdmlzaXQsIFRJbnRlcm1Mb29wICpub2RlKQogCiAgICAgICAgIG5vZGUtPmdldENvbmRpdGlv
bigpLT50cmF2ZXJzZSh0aGlzKTsKIAotICAgICAgICBvdXQgPDwgIikiOworICAgICAgICBvdXQg
PDwgIik7IjsKICAgICB9CiAKLSAgICBvdXQgPDwgIjtcbiI7CisgICAgb3V0IDw8ICJ9XG4iOwog
CiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtMTgzOSw3ICsxODg0LDYgQEAgYm9vbCBPdXRwdXRI
TFNMOjpoYW5kbGVFeGNlc3NpdmVMb29wKFRJbnRlcm1Mb29wICpub2RlKQogCiAgICAgICAgICAg
ICB3aGlsZSAoaXRlcmF0aW9ucyA+IDApCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAg
aW50IHJlbWFpbmRlciA9IChsaW1pdCAtIGluaXRpYWwpICUgaW5jcmVtZW50OwogICAgICAgICAg
ICAgICAgIGludCBjbGFtcGVkTGltaXQgPSBpbml0aWFsICsgaW5jcmVtZW50ICogc3RkOjptaW4o
MjU1LCBpdGVyYXRpb25zKTsKIAogICAgICAgICAgICAgICAgIC8vIGZvcihpbnQgaW5kZXggPSBp
bml0aWFsOyBpbmRleCA8IGNsYW1wZWRMaW1pdDsgaW5kZXggKz0gaW5jcmVtZW50KQpAQCAtMjAx
OSw2ICsyMDYzLDggQEAgVFN0cmluZyBPdXRwdXRITFNMOjp0eXBlU3RyaW5nKGNvbnN0IFRUeXBl
ICZ0eXBlKQogICAgICAgICAgICAgcmV0dXJuICJzYW1wbGVyMkQiOwogICAgICAgICAgIGNhc2Ug
RWJ0U2FtcGxlckN1YmU6CiAgICAgICAgICAgICByZXR1cm4gInNhbXBsZXJDVUJFIjsKKyAgICAg
ICAgICBjYXNlIEVidFNhbXBsZXJFeHRlcm5hbE9FUzoKKyAgICAgICAgICAgIHJldHVybiAic2Ft
cGxlcjJEIjsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjA2MCw2ICsyMTA2LDExIEBAIHZvaWQg
T3V0cHV0SExTTDo6YWRkQ29uc3RydWN0b3IoY29uc3QgVFR5cGUgJnR5cGUsIGNvbnN0IFRTdHJp
bmcgJm5hbWUsIGNvbnN0IFRJCiAgICAgICAgIHJldHVybjsgICAvLyBOYW1lbGVzcyBzdHJ1Y3R1
cmVzIGRvbid0IGhhdmUgY29uc3RydWN0b3JzCiAgICAgfQogCisgICAgaWYgKHR5cGUuZ2V0U3Ry
dWN0KCkgJiYgbVN0cnVjdE5hbWVzLmZpbmQoZGVjb3JhdGUobmFtZSkpICE9IG1TdHJ1Y3ROYW1l
cy5lbmQoKSkKKyAgICB7CisgICAgICAgIHJldHVybjsgICAvLyBBbHJlYWR5IGFkZGVkCisgICAg
fQorCiAgICAgVFR5cGUgY3RvclR5cGUgPSB0eXBlOwogICAgIGN0b3JUeXBlLmNsZWFyQXJyYXlu
ZXNzKCk7CiAgICAgY3RvclR5cGUuc2V0UHJlY2lzaW9uKEVicEhpZ2gpOwpAQCAtMjM3MCwxMiAr
MjQyMSwxNiBAQCBUU3RyaW5nIE91dHB1dEhMU0w6OmRlY29yYXRlKGNvbnN0IFRTdHJpbmcgJnN0
cmluZykKICAgICByZXR1cm4gc3RyaW5nOwogfQogCi1UU3RyaW5nIE91dHB1dEhMU0w6OmRlY29y
YXRlVW5pZm9ybShjb25zdCBUU3RyaW5nICZzdHJpbmcsIGJvb2wgYXJyYXkpCitUU3RyaW5nIE91
dHB1dEhMU0w6OmRlY29yYXRlVW5pZm9ybShjb25zdCBUU3RyaW5nICZzdHJpbmcsIGNvbnN0IFRU
eXBlICZ0eXBlKQogewotICAgIGlmIChhcnJheSkKKyAgICBpZiAodHlwZS5pc0FycmF5KCkpCiAg
ICAgewogICAgICAgICByZXR1cm4gImFyXyIgKyBzdHJpbmc7ICAgLy8gQWxsb3dzIGlkZW50aWZ5
aW5nIGFycmF5cyBvZiBzaXplIDEKICAgICB9CisgICAgZWxzZSBpZiAodHlwZS5nZXRCYXNpY1R5
cGUoKSA9PSBFYnRTYW1wbGVyRXh0ZXJuYWxPRVMpCisgICAgeworICAgICAgICByZXR1cm4gImV4
XyIgKyBzdHJpbmc7CisgICAgfQogICAgIAogICAgIHJldHVybiBkZWNvcmF0ZShzdHJpbmcpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1
dEhMU0wuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9PdXRwdXRITFNM
LmgKaW5kZXggMDZhZDg0OTg2ZmRkNzZkYTZiMTliZDdmYTEyNjM5NmNiMjA5M2Q0My4uODI0YmMw
NzFiNzQxOWRkYTkwMzc0N2Q4NjE2YTM0NjgyZmU3ZGNhNyAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL091dHB1dEhMU0wuaAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvT3V0cHV0SExTTC5oCkBAIC0xLDUgKzEsNSBAQAog
Ly8KLS8vIENvcHlyaWdodCAoYykgMjAwMi0yMDExIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5H
TEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBi
ZQogLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCkBAIC0zMiw3ICszMiw3IEBAIGNs
YXNzIE91dHB1dEhMU0wgOiBwdWJsaWMgVEludGVybVRyYXZlcnNlcgogICAgIHN0YXRpYyBUU3Ry
aW5nIGFycmF5U3RyaW5nKGNvbnN0IFRUeXBlICZ0eXBlKTsKICAgICBzdGF0aWMgVFN0cmluZyBp
bml0aWFsaXplcihjb25zdCBUVHlwZSAmdHlwZSk7CiAgICAgc3RhdGljIFRTdHJpbmcgZGVjb3Jh
dGUoY29uc3QgVFN0cmluZyAmc3RyaW5nKTsgICAgICAgICAgICAgICAgICAgICAgLy8gUHJlcGVu
ZHMgYW4gdW5kZXJzY29yZSB0byBhdm9pZCBuYW1pbmcgY2xhc2hlcwotICAgIHN0YXRpYyBUU3Ry
aW5nIGRlY29yYXRlVW5pZm9ybShjb25zdCBUU3RyaW5nICZzdHJpbmcsIGJvb2wgYXJyYXkpOwor
ICAgIHN0YXRpYyBUU3RyaW5nIGRlY29yYXRlVW5pZm9ybShjb25zdCBUU3RyaW5nICZzdHJpbmcs
IGNvbnN0IFRUeXBlICZ0eXBlKTsKIAogICBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBoZWFkZXIoKTsK
QEAgLTExMyw3ICsxMTMsMTAgQEAgY2xhc3MgT3V0cHV0SExTTCA6IHB1YmxpYyBUSW50ZXJtVHJh
dmVyc2VyCiAgICAgYm9vbCBtVXNlc0VxdWFsQlZlYzI7CiAgICAgYm9vbCBtVXNlc0VxdWFsQlZl
YzM7CiAgICAgYm9vbCBtVXNlc0VxdWFsQlZlYzQ7Ci0gICAgYm9vbCBtVXNlc0F0YW4yOworICAg
IGJvb2wgbVVzZXNBdGFuMl8xOworICAgIGJvb2wgbVVzZXNBdGFuMl8yOworICAgIGJvb2wgbVVz
ZXNBdGFuMl8zOworICAgIGJvb2wgbVVzZXNBdGFuMl80OwogCiAgICAgdHlwZWRlZiBzdGQ6OnNl
dDxUU3RyaW5nPiBDb25zdHJ1Y3RvcnM7CiAgICAgQ29uc3RydWN0b3JzIG1Db25zdHJ1Y3RvcnM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvUG9vbEFs
bG9jLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Qb29sQWxsb2Mu
Y3BwCmluZGV4IGUyODZjN2QyMDZkZDAyYzNlOGY4NmY0M2I4NjFlMjAxOTIyZjE3NjcuLmE2MDBj
MDJjYmE2ODM2ODdiY2NhNmM2OTAyMzJiYWNlYTE1ZTQ5YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Qb29sQWxsb2MuY3BwCisrKyBiL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9Qb29sQWxsb2MuY3BwCkBAIC0xNTcsOCArMTU3
LDEzIEBAIHZvaWQgVEFsbG9jYXRpb246OmNoZWNrR3VhcmRCbG9jayh1bnNpZ25lZCBjaGFyKiBi
bG9ja01lbSwgdW5zaWduZWQgY2hhciB2YWwsIGNvCiAgICAgICAgICAgICBjaGFyIGFzc2VydE1z
Z1s4MF07CiAKICAgICAgICAgICAgIC8vIFdlIGRvbid0IHByaW50IHRoZSBhc3NlcnQgbWVzc2Fn
ZS4gIEl0J3MgaGVyZSBqdXN0IHRvIGJlIGhlbHBmdWwuCi0gICAgICAgICAgICBzcHJpbnRmKGFz
c2VydE1zZywgIlBvb2xBbGxvYzogRGFtYWdlICVzICVsdSBieXRlIGFsbG9jYXRpb24gYXQgMHgl
cFxuIiwKKyNpZiBkZWZpbmVkKF9NU0NfVkVSKQorICAgICAgICAgICAgc3ByaW50Zihhc3NlcnRN
c2csICJQb29sQWxsb2M6IERhbWFnZSAlcyAlSXUgYnl0ZSBhbGxvY2F0aW9uIGF0IDB4JXBcbiIs
CiAgICAgICAgICAgICAgICAgICAgIGxvY1RleHQsIHNpemUsIGRhdGEoKSk7CisjZWxzZQorICAg
ICAgICAgICAgc3ByaW50Zihhc3NlcnRNc2csICJQb29sQWxsb2M6IERhbWFnZSAlcyAlenUgYnl0
ZSBhbGxvY2F0aW9uIGF0IDB4JXBcbiIsCisgICAgICAgICAgICAgICAgICAgIGxvY1RleHQsIHNp
emUsIGRhdGEoKSk7CisjZW5kaWYKICAgICAgICAgICAgIGFzc2VydCgwICYmICJQb29sQWxsb2M6
IERhbWFnZSBpbiBndWFyZCBibG9jayIpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1NoSGFuZGxlLmggYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU2hIYW5kbGUuaAppbmRleCA4ZGRmMGYxNTI3
YTg1YjEzZDcxZTJjZTliN2YyZWZjNGJkZDdmOTZlLi45MWM0N2U3Nzc2NDUxZThiMjMwZDcwZGRm
ZDM3ZThlODM4ZDIxNmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvU2hIYW5kbGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvU2hIYW5kbGUuaApAQCAtMSw1ICsxLDUgQEAKIC8vCi0vLyBDb3B5cmlnaHQgKGMpIDIw
MDItMjAxMCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
Ly8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk
IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8vIGZvdW5kIGluIHRoZSBMSUNF
TlNFIGZpbGUuCiAvLwpAQCAtMjIsNiArMjIsNyBAQAogI2luY2x1ZGUgImNvbXBpbGVyL1N5bWJv
bFRhYmxlLmgiCiAjaW5jbHVkZSAiY29tcGlsZXIvVmFyaWFibGVJbmZvLmgiCiAKK2NsYXNzIExv
bmdOYW1lTWFwOwogY2xhc3MgVENvbXBpbGVyOwogCiAvLwpAQCAtMTAwLDggKzEwMSw4IEBAIHBy
aXZhdGU6CiAgICAgVFZhcmlhYmxlSW5mb0xpc3QgYXR0cmliczsgIC8vIEFjdGl2ZSBhdHRyaWJ1
dGVzIGluIHRoZSBjb21waWxlZCBzaGFkZXIuCiAgICAgVFZhcmlhYmxlSW5mb0xpc3QgdW5pZm9y
bXM7ICAvLyBBY3RpdmUgdW5pZm9ybXMgaW4gdGhlIGNvbXBpbGVkIHNoYWRlci4KIAotICAgIC8v
IFBhaXIgb2YgbG9uZyB2YXJ5aW5nIHZhcmliYWxlIG5hbWUgPG9yaWdpbmFsTmFtZSwgbWFwcGVk
TmFtZT4uCi0gICAgc3RkOjptYXA8c3RkOjpzdHJpbmcsIHN0ZDo6c3RyaW5nPiB2YXJ5aW5nTG9u
Z05hbWVNYXA7CisgICAgLy8gQ2FjaGVkIGNvcHkgb2YgdGhlIHJlZi1jb3VudGVkIHNpbmdsZXRv
bi4KKyAgICBMb25nTmFtZU1hcCogbG9uZ05hbWVNYXA7CiB9OwogCiAvLwpkaWZmIC0tZ2l0IGEv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1N5bWJvbFRhYmxlLmNwcCBiL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9TeW1ib2xUYWJsZS5jcHAKaW5kZXgg
ZTY2OTVkNmI5MDRmNWRmMjExMDc2NTlmZDMzOWI1ZmYyNWIyOGVkZC4uZWRiZWE5OWI5YTViYWIz
ZjIxYzgxNWI5YzExNTBlYTQ4OWI1Njc3YiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL1N5bWJvbFRhYmxlLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvU3ltYm9sVGFibGUuY3BwCkBAIC05LDYgKzksMTAgQEAKIC8v
IGFyZSBkb2N1bWVudGVkIGluIHRoZSBoZWFkZXIgZmlsZS4KIC8vCiAKKyNpZiBkZWZpbmVkKF9N
U0NfVkVSKQorI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ3MTgpCisjZW5kaWYKKwogI2luY2x1
ZGUgImNvbXBpbGVyL1N5bWJvbFRhYmxlLmgiCiAKICNpbmNsdWRlIDxzdGRpby5oPgpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1N5bWJvbFRhYmxlLmgg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvU3ltYm9sVGFibGUuaAppbmRl
eCAzOGJjNjU3NTkzNjE2NmE2NDgxM2E0NmY5OTA5NjFhMzBjYmU4ZDkwLi4zMzYxNmRjNmNkZjQ5
MmFkNzExZTk3NDAwNjhlZGYyNWZiYWExNTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvU3ltYm9sVGFibGUuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvU3ltYm9sVGFibGUuaApAQCAtMzAyLDYgKzMwMiwxMiBAQCBw
dWJsaWM6CiAgICAgICAgIGFzc2VydCh0YWJsZS5zaXplKCkgPj0gMik7CiAgICAgICAgIHJldHVy
biB0YWJsZVsxXTsKICAgICB9CisKKyAgICBUU3ltYm9sVGFibGVMZXZlbCogZ2V0T3V0ZXJMZXZl
bCgpIHsKKyAgICAgICAgYXNzZXJ0KHRhYmxlLnNpemUoKSA+PSAyKTsKKyAgICAgICAgcmV0dXJu
IHRhYmxlW2N1cnJlbnRMZXZlbCgpIC0gMV07CisgICAgfQorCiAgICAgdm9pZCByZWxhdGVUb09w
ZXJhdG9yKGNvbnN0IGNoYXIqIG5hbWUsIFRPcGVyYXRvciBvcCkgewogICAgICAgICB0YWJsZVsw
XS0+cmVsYXRlVG9PcGVyYXRvcihuYW1lLCBvcCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL1ZhcmlhYmxlSW5mby5jcHAgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvVmFyaWFibGVJbmZvLmNwcAppbmRleCA4NDNm
MTg3N2M5ODBhMzNlZGZjYzUwNTg5NjgzODc5NTIwMzc4N2YyLi4xZTk0ODZmOGQzMzlkZTA4NjI0
MzdjMGE2NTYxYzViZDM2OTBlMmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9zcmMvY29tcGlsZXIvVmFyaWFibGVJbmZvLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvVmFyaWFibGVJbmZvLmNwcApAQCAtNjMsNiArNjMsNyBAQCBzdGF0
aWMgU2hEYXRhVHlwZSBnZXRWYXJpYWJsZURhdGFUeXBlKGNvbnN0IFRUeXBlJiB0eXBlKQogICAg
ICAgICAgIH0KICAgICAgIGNhc2UgRWJ0U2FtcGxlcjJEOiByZXR1cm4gU0hfU0FNUExFUl8yRDsK
ICAgICAgIGNhc2UgRWJ0U2FtcGxlckN1YmU6IHJldHVybiBTSF9TQU1QTEVSX0NVQkU7CisgICAg
ICBjYXNlIEVidFNhbXBsZXJFeHRlcm5hbE9FUzogcmV0dXJuIFNIX1NBTVBMRVJfRVhURVJOQUxf
T0VTOwogICAgICAgY2FzZSBFYnRTYW1wbGVyMkRSZWN0OiByZXR1cm4gU0hfU0FNUExFUl8yRF9S
RUNUX0FSQjsKICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmcubCBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nLmwKaW5kZXggNGNlZTJmMmY1
YzY4ODczNjVjMzBmOTY4Nzg0Yzc4OTI1MTRlNjc2YS4uOWEwMzk0YmM1N2ZjYTZiNjZmYTY1ZWUy
ZDUzZmU4MzcwZGIzYzFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL2dsc2xhbmcubAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29t
cGlsZXIvZ2xzbGFuZy5sCkBAIC0yMSw2ICsyMSwxOCBAQCBXSElDSCBHRU5FUkFURVMgVEhFIEdM
U0wgRVMgTEVYRVIgKGdsc2xhbmdfbGV4LmNwcCkuCiAvLwogCiAvLyBUaGlzIGZpbGUgaXMgYXV0
by1nZW5lcmF0ZWQgYnkgZ2VuZXJhdGVfcGFyc2VyLnNoLiBETyBOT1QgRURJVCEKKworLy8gSWdu
b3JlIGVycm9ycyBpbiBhdXRvLWdlbmVyYXRlZCBjb2RlLgorI2lmIGRlZmluZWQoX19HTlVDX18p
CisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW51c2VkLWZ1bmN0aW9uIgorI3By
YWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV3VudXNlZC12YXJpYWJsZSIKKyNwcmFnbWEg
R0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdzd2l0Y2gtZW51bSIKKyNlbGlmIGRlZmluZWQoX01T
Q19WRVIpCisjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDA2NSkKKyNwcmFnbWEgd2FybmluZyhk
aXNhYmxlOiA0MTg5KQorI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ1MDUpCisjcHJhZ21hIHdh
cm5pbmcoZGlzYWJsZTogNDcwMSkKKyNlbmRpZgogfQogCiAlewpAQCAtNDgzLDcgKzQ5NSw3IEBA
IHZvaWQgdXBkYXRlRXh0ZW5zaW9uQmVoYXZpb3IoY29uc3QgY2hhciogZXh0TmFtZSwgY29uc3Qg
Y2hhciogYmVoYXZpb3IpCiAgICAgICAgICAgICAgICAgY29udGV4dC0+aW5mb1NpbmsuaW5mby5t
ZXNzYWdlKEVQcmVmaXhXYXJuaW5nLCBtc2cuY19zdHIoKSwgeXlsaW5lbm8pOyAKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgOwor
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9nbHNsYW5nLnkgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvZ2xzbGFuZy55CmluZGV4IGVjMWE4NWNkNTAwZTNlYzg1MzU2N2ZlMzI1Y2YxYWJhMjJmZTBl
YjkuLmQ2Yzg4NjlmMzI5NTIwNjNiNjRlM2E1ZjBjNWFhYWI2NDVkYjEzNjMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nLnkKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmcueQpAQCAtMjIsNiArMjIs
MTggQEAgV0hJQ0ggR0VORVJBVEVTIFRIRSBHTFNMIEVTIFBBUlNFUiAoZ2xzbGFuZ190YWIuY3Bw
IEFORCBnbHNsYW5nX3RhYi5oKS4KIAogLy8gVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGJ5
IGdlbmVyYXRlX3BhcnNlci5zaC4gRE8gTk9UIEVESVQhCiAKKy8vIElnbm9yZSBlcnJvcnMgaW4g
YXV0by1nZW5lcmF0ZWQgY29kZS4KKyNpZiBkZWZpbmVkKF9fR05VQ19fKQorI3ByYWdtYSBHQ0Mg
ZGlhZ25vc3RpYyBpZ25vcmVkICItV3VudXNlZC1mdW5jdGlvbiIKKyNwcmFnbWEgR0NDIGRpYWdu
b3N0aWMgaWdub3JlZCAiLVd1bnVzZWQtdmFyaWFibGUiCisjcHJhZ21hIEdDQyBkaWFnbm9zdGlj
IGlnbm9yZWQgIi1Xc3dpdGNoLWVudW0iCisjZWxpZiBkZWZpbmVkKF9NU0NfVkVSKQorI3ByYWdt
YSB3YXJuaW5nKGRpc2FibGU6IDQwNjUpCisjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDE4OSkK
KyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NTA1KQorI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6
IDQ3MDEpCisjZW5kaWYKKwogI2luY2x1ZGUgImNvbXBpbGVyL1N5bWJvbFRhYmxlLmgiCiAjaW5j
bHVkZSAiY29tcGlsZXIvUGFyc2VIZWxwZXIuaCIKICNpbmNsdWRlICJHTFNMQU5HL1NoYWRlckxh
bmcuaCIKQEAgLTEyOSw3ICsxNDEsNyBAQCBleHRlcm4gdm9pZCB5eWVycm9yKFRQYXJzZUNvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IGNoYXIqIHJlYXNvbik7CiAldHlwZSA8aW50ZXJtLmludGVybU5v
ZGU+IGRlY2xhcmF0aW9uIGV4dGVybmFsX2RlY2xhcmF0aW9uCiAldHlwZSA8aW50ZXJtLmludGVy
bU5vZGU+IGZvcl9pbml0X3N0YXRlbWVudCBjb21wb3VuZF9zdGF0ZW1lbnRfbm9fbmV3X3Njb3Bl
CiAldHlwZSA8aW50ZXJtLm5vZGVQYWlyPiBzZWxlY3Rpb25fcmVzdF9zdGF0ZW1lbnQgZm9yX3Jl
c3Rfc3RhdGVtZW50Ci0ldHlwZSA8aW50ZXJtLmludGVybU5vZGU+IGl0ZXJhdGlvbl9zdGF0ZW1l
bnQganVtcF9zdGF0ZW1lbnQgc3RhdGVtZW50X25vX25ld19zY29wZQorJXR5cGUgPGludGVybS5p
bnRlcm1Ob2RlPiBpdGVyYXRpb25fc3RhdGVtZW50IGp1bXBfc3RhdGVtZW50IHN0YXRlbWVudF9u
b19uZXdfc2NvcGUgc3RhdGVtZW50X3dpdGhfc2NvcGUKICV0eXBlIDxpbnRlcm0+IHNpbmdsZV9k
ZWNsYXJhdGlvbiBpbml0X2RlY2xhcmF0b3JfbGlzdAogCiAldHlwZSA8aW50ZXJtPiBwYXJhbWV0
ZXJfZGVjbGFyYXRpb24gcGFyYW1ldGVyX2RlY2xhcmF0b3IgcGFyYW1ldGVyX3R5cGVfc3BlY2lm
aWVyCkBAIC05NjgsNiArOTgwLDggQEAgZGVjbGFyYXRpb24KICAgICAgICAgCiAgICAgICAgIHBy
b3RvdHlwZS0+c2V0T3AoRU9wUHJvdG90eXBlKTsKICAgICAgICAgJCQgPSBwcm90b3R5cGU7CisK
KyAgICAgICAgY29udGV4dC0+c3ltYm9sVGFibGUucG9wKCk7CiAgICAgfQogICAgIHwgaW5pdF9k
ZWNsYXJhdG9yX2xpc3QgU0VNSUNPTE9OIHsKICAgICAgICAgaWYgKCQxLmludGVybUFnZ3JlZ2F0
ZSkKQEAgLTEwMTIsNyArMTAyNiw5IEBAIGZ1bmN0aW9uX3Byb3RvdHlwZQogICAgICAgICAkJC5m
dW5jdGlvbiA9ICQxOwogICAgICAgICAkJC5saW5lID0gJDIubGluZTsKIAotICAgICAgICBjb250
ZXh0LT5zeW1ib2xUYWJsZS5pbnNlcnQoKiQkLmZ1bmN0aW9uKTsKKyAgICAgICAgLy8gV2UncmUg
YXQgdGhlIGlubmVyIHNjb3BlIGxldmVsIG9mIHRoZSBmdW5jdGlvbidzIGFyZ3VtZW50cyBhbmQg
Ym9keSBzdGF0ZW1lbnQuCisgICAgICAgIC8vIEFkZCB0aGUgZnVuY3Rpb24gcHJvdG90eXBlIHRv
IHRoZSBzdXJyb3VuZGluZyBzY29wZSBpbnN0ZWFkLgorICAgICAgICBjb250ZXh0LT5zeW1ib2xU
YWJsZS5nZXRPdXRlckxldmVsKCktPmluc2VydCgqJCQuZnVuY3Rpb24pOwogICAgIH0KICAgICA7
CiAKQEAgLTEwNzAsNiArMTA4Niw4IEBAIGZ1bmN0aW9uX2hlYWRlcgogICAgICAgICBUVHlwZSB0
eXBlKCQxKTsKICAgICAgICAgZnVuY3Rpb24gPSBuZXcgVEZ1bmN0aW9uKCQyLnN0cmluZywgdHlw
ZSk7CiAgICAgICAgICQkID0gZnVuY3Rpb247CisgICAgICAgIAorICAgICAgICBjb250ZXh0LT5z
eW1ib2xUYWJsZS5wdXNoKCk7CiAgICAgfQogICAgIDsKIApAQCAtMTE3MSw2ICsxMTg5LDEyIEBA
IGluaXRfZGVjbGFyYXRvcl9saXN0CiAgICAgICAgICQkID0gJDE7CiAgICAgfQogICAgIHwgaW5p
dF9kZWNsYXJhdG9yX2xpc3QgQ09NTUEgSURFTlRJRklFUiB7CisgICAgICAgIGlmICgkMS50eXBl
LnR5cGUgPT0gRWJ0SW52YXJpYW50ICYmICEkMy5zeW1ib2wpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmVycm9yKCQzLmxpbmUsICJ1bmRlY2xhcmVkIGlkZW50aWZpZXIgZGVjbGFy
ZWQgYXMgaW52YXJpYW50IiwgJDMuc3RyaW5nLT5jX3N0cigpLCAiIik7CisgICAgICAgICAgICBj
b250ZXh0LT5yZWNvdmVyKCk7CisgICAgICAgIH0KKwogICAgICAgICBUSW50ZXJtU3ltYm9sKiBz
eW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICokMy5zdHJpbmcsIFRU
eXBlKCQxLnR5cGUpLCAkMy5saW5lKTsKICAgICAgICAgJCQuaW50ZXJtQWdncmVnYXRlID0gY29u
dGV4dC0+aW50ZXJtZWRpYXRlLmdyb3dBZ2dyZWdhdGUoJDEuaW50ZXJtTm9kZSwgc3ltYm9sLCAk
My5saW5lKTsKICAgICAgICAgCkBAIC0xMzM1LDggKzEzNTksMjEgQEAgc2luZ2xlX2RlY2xhcmF0
aW9uCiAgICAgfQogICAgIHwgSU5WQVJJQU5UIElERU5USUZJRVIgewogICAgICAgICBWRVJURVhf
T05MWSgiaW52YXJpYW50IGRlY2xhcmF0aW9uIiwgJDEubGluZSk7Ci0gICAgICAgICQkLnF1YWxp
ZmllciA9IEV2cUludmFyaWFudFZhcnlpbmdPdXQ7Ci0gICAgICAgICQkLmludGVybUFnZ3JlZ2F0
ZSA9IDA7CisgICAgICAgIGlmIChjb250ZXh0LT5nbG9iYWxFcnJvckNoZWNrKCQxLmxpbmUsIGNv
bnRleHQtPnN5bWJvbFRhYmxlLmF0R2xvYmFsTGV2ZWwoKSwgImludmFyaWFudCB2YXJ5aW5nIikp
CisgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7CisgICAgICAgICQkLnR5cGUuc2V0QmFz
aWMoRWJ0SW52YXJpYW50LCBFdnFJbnZhcmlhbnRWYXJ5aW5nT3V0LCAkMi5saW5lKTsKKyAgICAg
ICAgaWYgKCEkMi5zeW1ib2wpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPmVycm9y
KCQyLmxpbmUsICJ1bmRlY2xhcmVkIGlkZW50aWZpZXIgZGVjbGFyZWQgYXMgaW52YXJpYW50Iiwg
JDIuc3RyaW5nLT5jX3N0cigpLCAiIik7CisgICAgICAgICAgICBjb250ZXh0LT5yZWNvdmVyKCk7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgICQkLmludGVybUFnZ3JlZ2F0ZSA9IDA7CisgICAg
ICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBUSW50ZXJtU3ltYm9s
ICpzeW1ib2wgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkU3ltYm9sKDAsICokMi5zdHJpbmcs
IFRUeXBlKCQkLnR5cGUpLCAkMi5saW5lKTsKKyAgICAgICAgICAgICQkLmludGVybUFnZ3JlZ2F0
ZSA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwgJDIubGluZSk7
CisgICAgICAgIH0KICAgICB9CiAKIC8vCkBAIC0xODAwLDYgKzE4MzcsMTEgQEAgc3RhdGVtZW50
X25vX25ld19zY29wZQogICAgIHwgc2ltcGxlX3N0YXRlbWVudCAgICAgICAgICAgICAgICB7ICQk
ID0gJDE7IH0KICAgICA7CiAKK3N0YXRlbWVudF93aXRoX3Njb3BlCisgICAgOiB7IGNvbnRleHQt
PnN5bWJvbFRhYmxlLnB1c2goKTsgfSBjb21wb3VuZF9zdGF0ZW1lbnRfbm9fbmV3X3Njb3BlIHsg
Y29udGV4dC0+c3ltYm9sVGFibGUucG9wKCk7ICQkID0gJDI7IH0KKyAgICB8IHsgY29udGV4dC0+
c3ltYm9sVGFibGUucHVzaCgpOyB9IHNpbXBsZV9zdGF0ZW1lbnQgICAgICAgICAgICAgICAgeyBj
b250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsgJCQgPSAkMjsgfQorICAgIDsKKwogY29tcG91bmRf
c3RhdGVtZW50X25vX25ld19zY29wZQogICAgIC8vIFN0YXRlbWVudCB0aGF0IGRvZXNuJ3QgY3Jl
YXRlIGEgbmV3IHNjb3BlLCBmb3Igc2VsZWN0aW9uX3N0YXRlbWVudCwgaXRlcmF0aW9uX3N0YXRl
bWVudAogICAgIDogTEVGVF9CUkFDRSBSSUdIVF9CUkFDRSB7CkBAIC0xODM3LDExICsxODc5LDEx
IEBAIHNlbGVjdGlvbl9zdGF0ZW1lbnQKICAgICA7CiAKIHNlbGVjdGlvbl9yZXN0X3N0YXRlbWVu
dAotICAgIDogc3RhdGVtZW50IEVMU0Ugc3RhdGVtZW50IHsKKyAgICA6IHN0YXRlbWVudF93aXRo
X3Njb3BlIEVMU0Ugc3RhdGVtZW50X3dpdGhfc2NvcGUgewogICAgICAgICAkJC5ub2RlMSA9ICQx
OwogICAgICAgICAkJC5ub2RlMiA9ICQzOwogICAgIH0KLSAgICB8IHN0YXRlbWVudCB7CisgICAg
fCBzdGF0ZW1lbnRfd2l0aF9zY29wZSB7CiAgICAgICAgICQkLm5vZGUxID0gJDE7CiAgICAgICAg
ICQkLm5vZGUyID0gMDsKICAgICB9CkBAIC0xODc4LDcgKzE5MjAsNyBAQCBpdGVyYXRpb25fc3Rh
dGVtZW50CiAgICAgICAgICQkID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmFkZExvb3AoRUxvb3BX
aGlsZSwgMCwgJDQsIDAsICQ2LCAkMS5saW5lKTsKICAgICAgICAgLS1jb250ZXh0LT5sb29wTmVz
dGluZ0xldmVsOwogICAgIH0KLSAgICB8IERPIHsgKytjb250ZXh0LT5sb29wTmVzdGluZ0xldmVs
OyB9IHN0YXRlbWVudCBXSElMRSBMRUZUX1BBUkVOIGV4cHJlc3Npb24gUklHSFRfUEFSRU4gU0VN
SUNPTE9OIHsKKyAgICB8IERPIHsgKytjb250ZXh0LT5sb29wTmVzdGluZ0xldmVsOyB9IHN0YXRl
bWVudF93aXRoX3Njb3BlIFdISUxFIExFRlRfUEFSRU4gZXhwcmVzc2lvbiBSSUdIVF9QQVJFTiBT
RU1JQ09MT04gewogICAgICAgICBpZiAoY29udGV4dC0+Ym9vbEVycm9yQ2hlY2soJDgubGluZSwg
JDYpKQogICAgICAgICAgICAgY29udGV4dC0+cmVjb3ZlcigpOwogCkBAIC0yMDE1LDExICsyMDU3
LDYgQEAgZnVuY3Rpb25fZGVmaW5pdGlvbgogICAgICAgICB9CiAKICAgICAgICAgLy8KLSAgICAg
ICAgLy8gTmV3IHN5bWJvbCB0YWJsZSBzY29wZSBmb3IgYm9keSBvZiBmdW5jdGlvbiBwbHVzIGl0
cyBhcmd1bWVudHMKLSAgICAgICAgLy8KLSAgICAgICAgY29udGV4dC0+c3ltYm9sVGFibGUucHVz
aCgpOwotCi0gICAgICAgIC8vCiAgICAgICAgIC8vIFJlbWVtYmVyIHRoZSByZXR1cm4gdHlwZSBm
b3IgbGF0ZXIgY2hlY2tpbmcgZm9yIFJFVFVSTiBzdGF0ZW1lbnRzLgogICAgICAgICAvLwogICAg
ICAgICBjb250ZXh0LT5jdXJyZW50RnVuY3Rpb25UeXBlID0gJihwcmV2RGVjLT5nZXRSZXR1cm5U
eXBlKCkpOwpAQCAtMjA3MSw3ICsyMTA4LDcgQEAgZnVuY3Rpb25fZGVmaW5pdGlvbgogICAgICAg
ICAgICAgY29udGV4dC0+ZXJyb3IoJDEubGluZSwgImZ1bmN0aW9uIGRvZXMgbm90IHJldHVybiBh
IHZhbHVlOiIsICIiLCAkMS5mdW5jdGlvbi0+Z2V0TmFtZSgpLmNfc3RyKCkpOwogICAgICAgICAg
ICAgY29udGV4dC0+cmVjb3ZlcigpOwogICAgICAgICB9Ci0gICAgICAgIGNvbnRleHQtPnN5bWJv
bFRhYmxlLnBvcCgpOworICAgICAgICAKICAgICAgICAgJCQgPSBjb250ZXh0LT5pbnRlcm1lZGlh
dGUuZ3Jvd0FnZ3JlZ2F0ZSgkMS5pbnRlcm1BZ2dyZWdhdGUsICQzLCAwKTsKICAgICAgICAgY29u
dGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKCQkLCBFT3BGdW5jdGlvbiwg
JDEubGluZSk7CiAgICAgICAgICQkLT5nZXRBc0FnZ3JlZ2F0ZSgpLT5zZXROYW1lKCQxLmZ1bmN0
aW9uLT5nZXRNYW5nbGVkTmFtZSgpLmNfc3RyKCkpOwpAQCAtMjA4NSw2ICsyMTIyLDggQEAgZnVu
Y3Rpb25fZGVmaW5pdGlvbgogCiAgICAgICAgIGlmICgkMyAmJiAkMy0+Z2V0QXNBZ2dyZWdhdGUo
KSkKICAgICAgICAgICAgICQkLT5nZXRBc0FnZ3JlZ2F0ZSgpLT5zZXRFbmRMaW5lKCQzLT5nZXRB
c0FnZ3JlZ2F0ZSgpLT5nZXRFbmRMaW5lKCkpOworCisgICAgICAgIGNvbnRleHQtPnN5bWJvbFRh
YmxlLnBvcCgpOwogICAgIH0KICAgICA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9nbHNsYW5nX2xleC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvZ2xzbGFuZ19sZXguY3BwCmluZGV4IDllMGJiYjE3YmQ2ZjJjMTZh
MTI5MGU3MjMyZjI0NjhhZDQyNjdiNDQuLjU5YjcyOTkxMzc0NzdhODllMjZkYTNhNDJmMzBkM2Ni
OTJjMGYxOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9nbHNsYW5nX2xleC5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL2dsc2xhbmdfbGV4LmNwcApAQCAtMSw0ICsxLDQgQEAKLSNsaW5lIDE3ICIuL2NvbXBpbGVy
L2dsc2xhbmcubCIKKyNsaW5lIDE3ICIuL2dsc2xhbmcubCIKIC8vCiAvLyBDb3B5cmlnaHQgKGMp
IDIwMTAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKQEAgLTcsOSArNywyMSBAQAogCiAvLyBUaGlzIGZpbGUgaXMgYXV0by1n
ZW5lcmF0ZWQgYnkgZ2VuZXJhdGVfcGFyc2VyLnNoLiBETyBOT1QgRURJVCEKIAorLy8gSWdub3Jl
IGVycm9ycyBpbiBhdXRvLWdlbmVyYXRlZCBjb2RlLgorI2lmIGRlZmluZWQoX19HTlVDX18pCisj
cHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW51c2VkLWZ1bmN0aW9uIgorI3ByYWdt
YSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV3VudXNlZC12YXJpYWJsZSIKKyNwcmFnbWEgR0ND
IGRpYWdub3N0aWMgaWdub3JlZCAiLVdzd2l0Y2gtZW51bSIKKyNlbGlmIGRlZmluZWQoX01TQ19W
RVIpCisjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDA2NSkKKyNwcmFnbWEgd2FybmluZyhkaXNh
YmxlOiA0MTg5KQorI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ1MDUpCisjcHJhZ21hIHdhcm5p
bmcoZGlzYWJsZTogNDcwMSkKKyNlbmRpZgorCiAKIAotI2xpbmUgMTMgIi4vY29tcGlsZXIvZ2xz
bGFuZ19sZXguY3BwIgorI2xpbmUgMjUgIi4vZ2xzbGFuZ19sZXguY3BwIgogCiAjZGVmaW5lICBZ
WV9JTlRfQUxJR05FRCBzaG9ydCBpbnQKIApAQCAtMTc5LDExICsxOTEsNiBAQCB0eXBlZGVmIHZv
aWQqIHl5c2Nhbl90OwogdHlwZWRlZiBzdHJ1Y3QgeXlfYnVmZmVyX3N0YXRlICpZWV9CVUZGRVJf
U1RBVEU7CiAjZW5kaWYKIAotI2lmbmRlZiBZWV9UWVBFREVGX1lZX1NJWkVfVAotI2RlZmluZSBZ
WV9UWVBFREVGX1lZX1NJWkVfVAotdHlwZWRlZiBzaXplX3QgeXlfc2l6ZV90OwotI2VuZGlmCi0K
ICNkZWZpbmUgRU9CX0FDVF9DT05USU5VRV9TQ0FOIDAKICNkZWZpbmUgRU9CX0FDVF9FTkRfT0Zf
RklMRSAxCiAjZGVmaW5lIEVPQl9BQ1RfTEFTVF9NQVRDSCAyCkBAIC0xOTcsNyArMjA0LDcgQEAg
dHlwZWRlZiBzaXplX3QgeXlfc2l6ZV90OwogICAgICAqLwogICAgICNkZWZpbmUgIFlZX0xFU1Nf
TElORU5PKG4pIFwKICAgICAgICAgICAgIGRvIHsgXAotICAgICAgICAgICAgICAgIHl5X3NpemVf
dCB5eWw7XAorICAgICAgICAgICAgICAgIGludCB5eWw7XAogICAgICAgICAgICAgICAgIGZvciAo
IHl5bCA9IG47IHl5bCA8IHl5bGVuZzsgKyt5eWwgKVwKICAgICAgICAgICAgICAgICAgICAgaWYg
KCB5eXRleHRbeXlsXSA9PSAnXG4nIClcCiAgICAgICAgICAgICAgICAgICAgICAgICAtLXl5bGlu
ZW5vO1wKQEAgLTIxOSw2ICsyMjYsMTEgQEAgdHlwZWRlZiBzaXplX3QgeXlfc2l6ZV90OwogCiAj
ZGVmaW5lIHVucHV0KGMpIHl5dW5wdXQoIGMsIHl5Zy0+eXl0ZXh0X3B0ciAsIHl5c2Nhbm5lciAp
CiAKKyNpZm5kZWYgWVlfVFlQRURFRl9ZWV9TSVpFX1QKKyNkZWZpbmUgWVlfVFlQRURFRl9ZWV9T
SVpFX1QKK3R5cGVkZWYgc2l6ZV90IHl5X3NpemVfdDsKKyNlbmRpZgorCiAjaWZuZGVmIFlZX1NU
UlVDVF9ZWV9CVUZGRVJfU1RBVEUKICNkZWZpbmUgWVlfU1RSVUNUX1lZX0JVRkZFUl9TVEFURQog
c3RydWN0IHl5X2J1ZmZlcl9zdGF0ZQpAQCAtMjM2LDcgKzI0OCw3IEBAIHN0cnVjdCB5eV9idWZm
ZXJfc3RhdGUKIAkvKiBOdW1iZXIgb2YgY2hhcmFjdGVycyByZWFkIGludG8geXlfY2hfYnVmLCBu
b3QgaW5jbHVkaW5nIEVPQgogCSAqIGNoYXJhY3RlcnMuCiAJICovCi0JeXlfc2l6ZV90IHl5X25f
Y2hhcnM7CisJaW50IHl5X25fY2hhcnM7CiAKIAkvKiBXaGV0aGVyIHdlICJvd24iIHRoZSBidWZm
ZXIgLSBpLmUuLCB3ZSBrbm93IHdlIGNyZWF0ZWQgaXQsCiAJICogYW5kIGNhbiByZWFsbG9jKCkg
aXQgdG8gZ3JvdyBpdCwgYW5kIHNob3VsZCBmcmVlKCkgaXQgdG8KQEAgLTMxNSw3ICszMjcsNyBA
QCBzdGF0aWMgdm9pZCB5eV9pbml0X2J1ZmZlciAoWVlfQlVGRkVSX1NUQVRFIGIsRklMRSAqZmls
ZSAseXlzY2FuX3QgeXlzY2FubmVyICk7CiAKIFlZX0JVRkZFUl9TVEFURSB5eV9zY2FuX2J1ZmZl
ciAoY2hhciAqYmFzZSx5eV9zaXplX3Qgc2l6ZSAseXlzY2FuX3QgeXlzY2FubmVyICk7CiBZWV9C
VUZGRVJfU1RBVEUgeXlfc2Nhbl9zdHJpbmcgKHl5Y29uc3QgY2hhciAqeXlfc3RyICx5eXNjYW5f
dCB5eXNjYW5uZXIgKTsKLVlZX0JVRkZFUl9TVEFURSB5eV9zY2FuX2J5dGVzICh5eWNvbnN0IGNo
YXIgKmJ5dGVzLHl5X3NpemVfdCBsZW4gLHl5c2Nhbl90IHl5c2Nhbm5lciApOworWVlfQlVGRkVS
X1NUQVRFIHl5X3NjYW5fYnl0ZXMgKHl5Y29uc3QgY2hhciAqYnl0ZXMsaW50IGxlbiAseXlzY2Fu
X3QgeXlzY2FubmVyICk7CiAKIHZvaWQgKnl5YWxsb2MgKHl5X3NpemVfdCAseXlzY2FuX3QgeXlz
Y2FubmVyICk7CiB2b2lkICp5eXJlYWxsb2MgKHZvaWQgKix5eV9zaXplX3QgLHl5c2Nhbl90IHl5
c2Nhbm5lciApOwpAQCAtODA5LDggKzgyMSw4IEBAIHN0cnVjdCB5eWd1dHNfdAogICAgIHNpemVf
dCB5eV9idWZmZXJfc3RhY2tfbWF4OyAvKio8IGNhcGFjaXR5IG9mIHN0YWNrLiAqLwogICAgIFlZ
X0JVRkZFUl9TVEFURSAqIHl5X2J1ZmZlcl9zdGFjazsgLyoqPCBTdGFjayBhcyBhbiBhcnJheS4g
Ki8KICAgICBjaGFyIHl5X2hvbGRfY2hhcjsKLSAgICB5eV9zaXplX3QgeXlfbl9jaGFyczsKLSAg
ICB5eV9zaXplX3QgeXlsZW5nX3I7CisgICAgaW50IHl5X25fY2hhcnM7CisgICAgaW50IHl5bGVu
Z19yOwogICAgIGNoYXIgKnl5X2NfYnVmX3A7CiAgICAgaW50IHl5X2luaXQ7CiAgICAgaW50IHl5
X3N0YXJ0OwpAQCAtODYzLDcgKzg3NSw3IEBAIEZJTEUgKnl5Z2V0X291dCAoeXlzY2FuX3QgeXlz
Y2FubmVyICk7CiAKIHZvaWQgeXlzZXRfb3V0ICAoRklMRSAqIG91dF9zdHIgLHl5c2Nhbl90IHl5
c2Nhbm5lciApOwogCi15eV9zaXplX3QgeXlnZXRfbGVuZyAoeXlzY2FuX3QgeXlzY2FubmVyICk7
CitpbnQgeXlnZXRfbGVuZyAoeXlzY2FuX3QgeXlzY2FubmVyICk7CiAKIGNoYXIgKnl5Z2V0X3Rl
eHQgKHl5c2Nhbl90IHl5c2Nhbm5lciApOwogCkBAIC0xODk3LDcgKzE5MDksNyBAQCBzdGF0aWMg
aW50IHl5X2dldF9uZXh0X2J1ZmZlciAoeXlzY2FuX3QgeXlzY2FubmVyKQogCiAJZWxzZQogCQl7
Ci0JCQl5eV9zaXplX3QgbnVtX3RvX3JlYWQgPQorCQkJaW50IG51bV90b19yZWFkID0KIAkJCVlZ
X0NVUlJFTlRfQlVGRkVSX0xWQUxVRS0+eXlfYnVmX3NpemUgLSBudW1iZXJfdG9fbW92ZSAtIDE7
CiAKIAkJd2hpbGUgKCBudW1fdG9fcmVhZCA8PSAwICkKQEAgLTE5MTEsNyArMTkyMyw3IEBAIHN0
YXRpYyBpbnQgeXlfZ2V0X25leHRfYnVmZmVyICh5eXNjYW5fdCB5eXNjYW5uZXIpCiAKIAkJCWlm
ICggYi0+eXlfaXNfb3VyX2J1ZmZlciApCiAJCQkJewotCQkJCXl5X3NpemVfdCBuZXdfc2l6ZSA9
IGItPnl5X2J1Zl9zaXplICogMjsKKwkJCQlpbnQgbmV3X3NpemUgPSBiLT55eV9idWZfc2l6ZSAq
IDI7CiAKIAkJCQlpZiAoIG5ld19zaXplIDw9IDAgKQogCQkJCQliLT55eV9idWZfc2l6ZSArPSBi
LT55eV9idWZfc2l6ZSAvIDg7CkBAIC0xOTQyLDcgKzE5NTQsNyBAQCBzdGF0aWMgaW50IHl5X2dl
dF9uZXh0X2J1ZmZlciAoeXlzY2FuX3QgeXlzY2FubmVyKQogCiAJCS8qIFJlYWQgaW4gbW9yZSBk
YXRhLiAqLwogCQlZWV9JTlBVVCggKCZZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X2NoX2J1
ZltudW1iZXJfdG9fbW92ZV0pLAotCQkJeXlnLT55eV9uX2NoYXJzLCBudW1fdG9fcmVhZCApOwor
CQkJeXlnLT55eV9uX2NoYXJzLCAoc2l6ZV90KSBudW1fdG9fcmVhZCApOwogCiAJCVlZX0NVUlJF
TlRfQlVGRkVSX0xWQUxVRS0+eXlfbl9jaGFycyA9IHl5Zy0+eXlfbl9jaGFyczsKIAkJfQpAQCAt
MjA2Nyw3ICsyMDc5LDcgQEAgc3RhdGljIGludCB5eV9nZXRfbmV4dF9idWZmZXIgKHl5c2Nhbl90
IHl5c2Nhbm5lcikKIAogCQllbHNlCiAJCQl7IC8qIG5lZWQgbW9yZSBpbnB1dCAqLwotCQkJeXlf
c2l6ZV90IG9mZnNldCA9IHl5Zy0+eXlfY19idWZfcCAtIHl5Zy0+eXl0ZXh0X3B0cjsKKwkJCWlu
dCBvZmZzZXQgPSB5eWctPnl5X2NfYnVmX3AgLSB5eWctPnl5dGV4dF9wdHI7CiAJCQkrK3l5Zy0+
eXlfY19idWZfcDsKIAogCQkJc3dpdGNoICggeXlfZ2V0X25leHRfYnVmZmVyKCB5eXNjYW5uZXIg
KSApCkBAIC0yMDkxLDcgKzIxMDMsNyBAQCBzdGF0aWMgaW50IHl5X2dldF9uZXh0X2J1ZmZlciAo
eXlzY2FuX3QgeXlzY2FubmVyKQogCQkJCWNhc2UgRU9CX0FDVF9FTkRfT0ZfRklMRToKIAkJCQkJ
ewogCQkJCQlpZiAoIHl5d3JhcCh5eXNjYW5uZXIgKSApCi0JCQkJCQlyZXR1cm4gMDsKKwkJCQkJ
CXJldHVybiBFT0Y7CiAKIAkJCQkJaWYgKCAhIHl5Zy0+eXlfZGlkX2J1ZmZlcl9zd2l0Y2hfb25f
ZW9mICkKIAkJCQkJCVlZX05FV19GSUxFOwpAQCAtMjM1NCw3ICsyMzY2LDcgQEAgdm9pZCB5eXBv
cF9idWZmZXJfc3RhdGUgKHl5c2Nhbl90IHl5c2Nhbm5lcikKICAqLwogc3RhdGljIHZvaWQgeXll
bnN1cmVfYnVmZmVyX3N0YWNrICh5eXNjYW5fdCB5eXNjYW5uZXIpCiB7Ci0JeXlfc2l6ZV90IG51
bV90b19hbGxvYzsKKwlpbnQgbnVtX3RvX2FsbG9jOwogICAgIHN0cnVjdCB5eWd1dHNfdCAqIHl5
ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKXl5c2Nhbm5lcjsKIAogCWlmICgheXlnLT55eV9idWZmZXJf
c3RhY2spIHsKQEAgLTI0NTIsMTEgKzI0NjQsMTIgQEAgWVlfQlVGRkVSX1NUQVRFIHl5X3NjYW5f
c3RyaW5nICh5eWNvbnN0IGNoYXIgKiB5eXN0ciAsIHl5c2Nhbl90IHl5c2Nhbm5lcikKICAqIEBw
YXJhbSB5eXNjYW5uZXIgVGhlIHNjYW5uZXIgb2JqZWN0LgogICogQHJldHVybiB0aGUgbmV3bHkg
YWxsb2NhdGVkIGJ1ZmZlciBzdGF0ZSBvYmplY3QuCiAgKi8KLVlZX0JVRkZFUl9TVEFURSB5eV9z
Y2FuX2J5dGVzICAoeXljb25zdCBjaGFyICogeXlieXRlcywgeXlfc2l6ZV90ICBfeXlieXRlc19s
ZW4gLCB5eXNjYW5fdCB5eXNjYW5uZXIpCitZWV9CVUZGRVJfU1RBVEUgeXlfc2Nhbl9ieXRlcyAg
KHl5Y29uc3QgY2hhciAqIHl5Ynl0ZXMsIGludCAgX3l5Ynl0ZXNfbGVuICwgeXlzY2FuX3QgeXlz
Y2FubmVyKQogewogCVlZX0JVRkZFUl9TVEFURSBiOwogCWNoYXIgKmJ1ZjsKLQl5eV9zaXplX3Qg
biwgaTsKKwl5eV9zaXplX3QgbjsKKwlpbnQgaTsKICAgICAKIAkvKiBHZXQgbWVtb3J5IGZvciBm
dWxsIGJ1ZmZlciwgaW5jbHVkaW5nIHNwYWNlIGZvciB0cmFpbGluZyBFT0Incy4gKi8KIAluID0g
X3l5Ynl0ZXNfbGVuICsgMjsKQEAgLTI2MDYsNyArMjYxOSw3IEBAIEZJTEUgKnl5Z2V0X291dCAg
KHl5c2Nhbl90IHl5c2Nhbm5lcikKIC8qKiBHZXQgdGhlIGxlbmd0aCBvZiB0aGUgY3VycmVudCB0
b2tlbi4KICAqIEBwYXJhbSB5eXNjYW5uZXIgVGhlIHNjYW5uZXIgb2JqZWN0LgogICovCi15eV9z
aXplX3QgeXlnZXRfbGVuZyAgKHl5c2Nhbl90IHl5c2Nhbm5lcikKK2ludCB5eWdldF9sZW5nICAo
eXlzY2FuX3QgeXlzY2FubmVyKQogewogICAgIHN0cnVjdCB5eWd1dHNfdCAqIHl5ZyA9IChzdHJ1
Y3QgeXlndXRzX3QqKXl5c2Nhbm5lcjsKICAgICByZXR1cm4geXlsZW5nOwpAQCAtMzExNiw3ICsz
MTI5LDcgQEAgdm9pZCB1cGRhdGVFeHRlbnNpb25CZWhhdmlvcihjb25zdCBjaGFyKiBleHROYW1l
LCBjb25zdCBjaGFyKiBiZWhhdmlvcikKICAgICAgICAgICAgICAgICBjb250ZXh0LT5pbmZvU2lu
ay5pbmZvLm1lc3NhZ2UoRVByZWZpeFdhcm5pbmcsIG1zZy5jX3N0cigpLCB5eWxpbmVubyk7IAog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAg
ICAgICA7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0gZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL2dsc2xhbmdfdGFiLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9nbHNsYW5nX3RhYi5jcHAKaW5kZXggZjY5NjI3MmQ1MTEzMGRkMjVm
ODUyZTY5ZWQ4NGJiYjI5ZTFkN2ZlNS4uMzdhMGYwNTIyODg4NjcwNGE5YTNlYzZmM2JmYWYwZTlm
ZTE1M2ZiZCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L2dsc2xhbmdfdGFiLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGls
ZXIvZ2xzbGFuZ190YWIuY3BwCkBAIC0yNjMsMTMgKzI2MywyNSBAQAogCiAKIC8vCi0vLyBDb3B5
cmlnaHQgKGMpIDIwMDItMjAxMCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTIgVGhlIEFOR0xFIFByb2plY3Qg
QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl
IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8vIGZvdW5k
IGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwogCiAvLyBUaGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0
ZWQgYnkgZ2VuZXJhdGVfcGFyc2VyLnNoLiBETyBOT1QgRURJVCEKIAorLy8gSWdub3JlIGVycm9y
cyBpbiBhdXRvLWdlbmVyYXRlZCBjb2RlLgorI2lmIGRlZmluZWQoX19HTlVDX18pCisjcHJhZ21h
IEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XdW51c2VkLWZ1bmN0aW9uIgorI3ByYWdtYSBHQ0Mg
ZGlhZ25vc3RpYyBpZ25vcmVkICItV3VudXNlZC12YXJpYWJsZSIKKyNwcmFnbWEgR0NDIGRpYWdu
b3N0aWMgaWdub3JlZCAiLVdzd2l0Y2gtZW51bSIKKyNlbGlmIGRlZmluZWQoX01TQ19WRVIpCisj
cHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDA2NSkKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0
MTg5KQorI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQ1MDUpCisjcHJhZ21hIHdhcm5pbmcoZGlz
YWJsZTogNDcwMSkKKyNlbmRpZgorCiAjaW5jbHVkZSAiY29tcGlsZXIvU3ltYm9sVGFibGUuaCIK
ICNpbmNsdWRlICJjb21waWxlci9QYXJzZUhlbHBlci5oIgogI2luY2x1ZGUgIkdMU0xBTkcvU2hh
ZGVyTGFuZy5oIgpAQCAtNTg0LDE2ICs1OTYsMTYgQEAgdW5pb24geXlhbGxvYwogLyogWVlGSU5B
TCAtLSBTdGF0ZSBudW1iZXIgb2YgdGhlIHRlcm1pbmF0aW9uIHN0YXRlLiAgKi8KICNkZWZpbmUg
WVlGSU5BTCAgNzEKIC8qIFlZTEFTVCAtLSBMYXN0IGluZGV4IGluIFlZVEFCTEUuICAqLwotI2Rl
ZmluZSBZWUxBU1QgICAxMzcwCisjZGVmaW5lIFlZTEFTVCAgIDE0MTYKIAogLyogWVlOVE9LRU5T
IC0tIE51bWJlciBvZiB0ZXJtaW5hbHMuICAqLwogI2RlZmluZSBZWU5UT0tFTlMgIDk2CiAvKiBZ
WU5OVFMgLS0gTnVtYmVyIG9mIG5vbnRlcm1pbmFscy4gICovCi0jZGVmaW5lIFlZTk5UUyAgODAK
KyNkZWZpbmUgWVlOTlRTICA4MwogLyogWVlOUlVMRVMgLS0gTnVtYmVyIG9mIHJ1bGVzLiAgKi8K
LSNkZWZpbmUgWVlOUlVMRVMgIDE5NworI2RlZmluZSBZWU5SVUxFUyAgMjAxCiAvKiBZWU5SVUxF
UyAtLSBOdW1iZXIgb2Ygc3RhdGVzLiAgKi8KLSNkZWZpbmUgWVlOU1RBVEVTICAzMDAKKyNkZWZp
bmUgWVlOU1RBVEVTICAzMDQKIAogLyogWVlUUkFOU0xBVEUoWVlMRVgpIC0tIEJpc29uIHN5bWJv
bCBudW1iZXIgY29ycmVzcG9uZGluZyB0byBZWUxFWC4gICovCiAjZGVmaW5lIFlZVU5ERUZUT0sg
IDIKQEAgLTY2NCwxNiArNjc2LDE3IEBAIHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDE2IHl5cHJo
c1tdID0KICAgICAgMzY4LCAgIDM3MCwgICAzNzIsICAgMzc0LCAgIDM3NiwgICAzNzgsICAgMzgw
LCAgIDM4MiwgICAzODQsICAgMzg1LAogICAgICAzOTIsICAgMzkzLCAgIDM5OSwgICA0MDEsICAg
NDA0LCAgIDQwOCwgICA0MTAsICAgNDE0LCAgIDQxNiwgICA0MjEsCiAgICAgIDQyMywgICA0MjUs
ICAgNDI3LCAgIDQyOSwgICA0MzEsICAgNDMzLCAgIDQzNSwgICA0MzcsICAgNDM5LCAgIDQ0MiwK
LSAgICAgNDQzLCAgIDQ0NCwgICA0NTAsICAgNDUyLCAgIDQ1NCwgICA0NTcsICAgNDYxLCAgIDQ2
MywgICA0NjYsICAgNDY4LAotICAgICA0NzEsICAgNDc3LCAgIDQ4MSwgICA0ODMsICAgNDg1LCAg
IDQ5MCwgICA0OTEsICAgNDk4LCAgIDQ5OSwgICA1MDgsCi0gICAgIDUwOSwgICA1MTcsICAgNTE5
LCAgIDUyMSwgICA1MjMsICAgNTI0LCAgIDUyNywgICA1MzEsICAgNTM0LCAgIDUzNywKLSAgICAg
NTQwLCAgIDU0NCwgICA1NDcsICAgNTQ5LCAgIDU1MiwgICA1NTQsICAgNTU2LCAgIDU1NworICAg
ICA0NDMsICAgNDQ0LCAgIDQ1MCwgICA0NTIsICAgNDU0LCAgIDQ1NSwgICA0NTgsICAgNDU5LCAg
IDQ2MiwgICA0NjUsCisgICAgIDQ2OSwgICA0NzEsICAgNDc0LCAgIDQ3NiwgICA0NzksICAgNDg1
LCAgIDQ4OSwgICA0OTEsICAgNDkzLCAgIDQ5OCwKKyAgICAgNDk5LCAgIDUwNiwgICA1MDcsICAg
NTE2LCAgIDUxNywgICA1MjUsICAgNTI3LCAgIDUyOSwgICA1MzEsICAgNTMyLAorICAgICA1MzUs
ICAgNTM5LCAgIDU0MiwgICA1NDUsICAgNTQ4LCAgIDU1MiwgICA1NTUsICAgNTU3LCAgIDU2MCwg
ICA1NjIsCisgICAgIDU2NCwgICA1NjUKIH07CiAKIC8qIFlZUkhTIC0tIEEgYC0xJy1zZXBhcmF0
ZWQgbGlzdCBvZiB0aGUgcnVsZXMnIFJIUy4gICovCiBzdGF0aWMgY29uc3QgeXl0eXBlX2ludDE2
IHl5cmhzW10gPQogewotICAgICAxNzIsICAgICAwLCAgICAtMSwgICAgNDUsICAgIC0xLCAgICA5
NywgICAgLTEsICAgIDQ4LCAgICAtMSwgICAgNDcsCisgICAgIDE3NSwgICAgIDAsICAgIC0xLCAg
ICA0NSwgICAgLTEsICAgIDk3LCAgICAtMSwgICAgNDgsICAgIC0xLCAgICA0NywKICAgICAgIC0x
LCAgICA0OSwgICAgLTEsICAgIDcyLCAgIDEyNCwgICAgNzMsICAgIC0xLCAgICA5OCwgICAgLTEs
ICAgIDk5LAogICAgICAgNzQsICAgMTAwLCAgICA3NSwgICAgLTEsICAgMTAxLCAgICAtMSwgICAg
OTksICAgIDc4LCAgICA1MCwgICAgLTEsCiAgICAgICA5OSwgICAgNTMsICAgIC0xLCAgICA5OSwg
ICAgNTQsICAgIC0xLCAgIDEyNCwgICAgLTEsICAgMTAyLCAgICAtMSwKQEAgLTcxNiw0NSArNzI5
LDQ2IEBAIHN0YXRpYyBjb25zdCB5eXR5cGVfaW50MTYgeXlyaHNbXSA9CiAgICAgICAtMSwgICAx
NDYsICAgMTQ3LCAgICAtMSwgICAxMzksICAgMTQ4LCAgICA4MiwgICAgLTEsICAgMTQ5LCAgICAt
MSwKICAgICAgMTQ4LCAgICA3OSwgICAxNDksICAgIC0xLCAgICA0NSwgICAgLTEsICAgIDQ1LCAg
ICA3NCwgICAxMjUsICAgIDc1LAogICAgICAgLTEsICAgMTIyLCAgICAtMSwgICAxMjYsICAgIC0x
LCAgIDE1NCwgICAgLTEsICAgMTUzLCAgICAtMSwgICAxNTEsCi0gICAgICAtMSwgICAxNjAsICAg
IC0xLCAgIDE2MSwgICAgLTEsICAgMTY0LCAgICAtMSwgICAxNzEsICAgIC0xLCAgICA3NiwKLSAg
ICAgIDc3LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA3NiwgICAxNTUsICAgMTU5LCAgIDE1Niwg
ICAgNzcsICAgIC0xLAotICAgICAxNTgsICAgIC0xLCAgIDE1MywgICAgLTEsICAgIDc2LCAgICA3
NywgICAgLTEsICAgIDc2LCAgIDE1OSwgICAgNzcsCi0gICAgICAtMSwgICAxNTIsICAgIC0xLCAg
IDE1OSwgICAxNTIsICAgIC0xLCAgICA4MiwgICAgLTEsICAgMTI0LCAgICA4MiwKLSAgICAgIC0x
LCAgICAxOCwgICAgNzIsICAgMTI0LCAgICA3MywgICAxNjIsICAgIC0xLCAgIDE1MiwgICAgMTYs
ICAgMTUyLAotICAgICAgLTEsICAgMTUyLCAgICAtMSwgICAxMjQsICAgIC0xLCAgIDEzNywgICAg
NDUsICAgIDgxLCAgIDE1MCwgICAgLTEsCi0gICAgICAtMSwgICAgNDAsICAgIDcyLCAgIDE2NSwg
ICAxNjMsICAgIDczLCAgIDE1NywgICAgLTEsICAgIC0xLCAgICAxNSwKLSAgICAgMTY2LCAgIDE1
MiwgICAgNDAsICAgIDcyLCAgIDEyNCwgICAgNzMsICAgIDgyLCAgICAtMSwgICAgLTEsICAgIDE3
LAotICAgICAgNzIsICAgMTY3LCAgIDE2OCwgICAxNzAsICAgIDczLCAgIDE1NywgICAgLTEsICAg
MTYwLCAgICAtMSwgICAxNTEsCi0gICAgICAtMSwgICAxNjMsICAgIC0xLCAgICAtMSwgICAxNjks
ICAgIDgyLCAgICAtMSwgICAxNjksICAgIDgyLCAgIDEyNCwKLSAgICAgIC0xLCAgICAxNCwgICAg
ODIsICAgIC0xLCAgICAxMywgICAgODIsICAgIC0xLCAgICAyMCwgICAgODIsICAgIC0xLAotICAg
ICAgMjAsICAgMTI0LCAgICA4MiwgICAgLTEsICAgIDE5LCAgICA4MiwgICAgLTEsICAgMTczLCAg
ICAtMSwgICAxNzIsCi0gICAgIDE3MywgICAgLTEsICAgMTc0LCAgICAtMSwgICAxMjYsICAgIC0x
LCAgICAtMSwgICAxMjcsICAgMTc1LCAgIDE1OCwKLSAgICAgIC0xCisgICAgICAtMSwgICAxNjMs
ICAgIC0xLCAgIDE2NCwgICAgLTEsICAgMTY3LCAgICAtMSwgICAxNzQsICAgIC0xLCAgICA3NiwK
KyAgICAgIDc3LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA3NiwgICAxNTUsICAgMTYyLCAgIDE1
NiwgICAgNzcsICAgIC0xLAorICAgICAxNjEsICAgIC0xLCAgIDE1MywgICAgLTEsICAgIC0xLCAg
IDE1OSwgICAxNjEsICAgIC0xLCAgICAtMSwgICAxNjAsCisgICAgIDE1MywgICAgLTEsICAgIDc2
LCAgICA3NywgICAgLTEsICAgIDc2LCAgIDE2MiwgICAgNzcsICAgIC0xLCAgIDE1MiwKKyAgICAg
IC0xLCAgIDE2MiwgICAxNTIsICAgIC0xLCAgICA4MiwgICAgLTEsICAgMTI0LCAgICA4MiwgICAg
LTEsICAgIDE4LAorICAgICAgNzIsICAgMTI0LCAgICA3MywgICAxNjUsICAgIC0xLCAgIDE1OCwg
ICAgMTYsICAgMTU4LCAgICAtMSwgICAxNTgsCisgICAgICAtMSwgICAxMjQsICAgIC0xLCAgIDEz
NywgICAgNDUsICAgIDgxLCAgIDE1MCwgICAgLTEsICAgIC0xLCAgICA0MCwKKyAgICAgIDcyLCAg
IDE2OCwgICAxNjYsICAgIDczLCAgIDE1NywgICAgLTEsICAgIC0xLCAgICAxNSwgICAxNjksICAg
MTU4LAorICAgICAgNDAsICAgIDcyLCAgIDEyNCwgICAgNzMsICAgIDgyLCAgICAtMSwgICAgLTEs
ICAgIDE3LCAgICA3MiwgICAxNzAsCisgICAgIDE3MSwgICAxNzMsICAgIDczLCAgIDE1NywgICAg
LTEsICAgMTYzLCAgICAtMSwgICAxNTEsICAgIC0xLCAgIDE2NiwKKyAgICAgIC0xLCAgICAtMSwg
ICAxNzIsICAgIDgyLCAgICAtMSwgICAxNzIsICAgIDgyLCAgIDEyNCwgICAgLTEsICAgIDE0LAor
ICAgICAgODIsICAgIC0xLCAgICAxMywgICAgODIsICAgIC0xLCAgICAyMCwgICAgODIsICAgIC0x
LCAgICAyMCwgICAxMjQsCisgICAgICA4MiwgICAgLTEsICAgIDE5LCAgICA4MiwgICAgLTEsICAg
MTc2LCAgICAtMSwgICAxNzUsICAgMTc2LCAgICAtMSwKKyAgICAgMTc3LCAgICAtMSwgICAxMjYs
ICAgIC0xLCAgICAtMSwgICAxMjcsICAgMTc4LCAgIDE2MSwgICAgLTEKIH07CiAKIC8qIFlZUkxJ
TkVbWVlOXSAtLSBzb3VyY2UgbGluZSB3aGVyZSBydWxlIG51bWJlciBZWU4gd2FzIGRlZmluZWQu
ICAqLwogc3RhdGljIGNvbnN0IHl5dHlwZV91aW50MTYgeXlybGluZVtdID0KIHsKLSAgICAgICAw
LCAgIDE1MywgICAxNTMsICAgMTg4LCAgIDE5MSwgICAyMDQsICAgMjA5LCAgIDIxNCwgICAyMjAs
ICAgMjIzLAotICAgICAyOTYsICAgMjk5LCAgIDQwOCwgICA0MTgsICAgNDMxLCAgIDQzOSwgICA1
MzgsICAgNTQxLCAgIDU0OSwgICA1NTMsCi0gICAgIDU2MCwgICA1NjQsICAgNTcxLCAgIDU3Nywg
ICA1ODYsICAgNTk0LCAgIDY0OSwgICA2NTYsICAgNjY2LCAgIDY2OSwKLSAgICAgNjc5LCAgIDY4
OSwgICA3MTAsICAgNzExLCAgIDcxMiwgICA3MTcsICAgNzE4LCAgIDcyNywgICA3MzksICAgNzQw
LAotICAgICA3NDgsICAgNzU5LCAgIDc2MywgICA3NjQsICAgNzc0LCAgIDc4NCwgICA3OTQsICAg
ODA3LCAgIDgwOCwgICA4MTgsCi0gICAgIDgzMSwgICA4MzUsICAgODM5LCAgIDg0MywgICA4NDQs
ICAgODU3LCAgIDg1OCwgICA4NzEsICAgODcyLCAgIDg4NSwKLSAgICAgODg2LCAgIDkwMywgICA5
MDQsICAgOTE3LCAgIDkxOCwgICA5MTksICAgOTIwLCAgIDkyMSwgICA5MjUsICAgOTI4LAotICAg
ICA5MzksICAgOTQ3LCAgIDk3MiwgICA5NzcsICAgOTg0LCAgMTAyMCwgIDEwMjMsICAxMDMwLCAg
MTAzOCwgIDEwNTksCi0gICAgMTA3OCwgIDEwODksICAxMTE4LCAgMTEyMywgIDExMzMsICAxMTM4
LCAgMTE0OCwgIDExNTEsICAxMTU0LCAgMTE1NywKLSAgICAxMTYzLCAgMTE3MCwgIDExNzMsICAx
MTg5LCAgMTIwNywgIDEyMzEsICAxMjU0LCAgMTI1OCwgIDEyNzYsICAxMjg0LAotICAgIDEzMTYs
ICAxMzM2LCAgMTQxMiwgIDE0MjEsICAxNDQ0LCAgMTQ0NywgIDE0NTMsICAxNDYxLCAgMTQ2OSwg
IDE0NzcsCi0gICAgMTQ4NywgIDE0OTQsICAxNDk3LCAgMTUwMCwgIDE1MDYsICAxNTA5LCAgMTUy
NCwgIDE1MjgsICAxNTMyLCAgMTUzNiwKLSAgICAxNTQ1LCAgMTU1MCwgIDE1NTUsICAxNTYwLCAg
MTU2NSwgIDE1NzAsICAxNTc1LCAgMTU4MCwgIDE1ODUsICAxNTkwLAotICAgIDE1OTYsICAxNjAy
LCAgMTYwOCwgIDE2MTMsICAxNjE4LCAgMTYyNywgIDE2MzYsICAxNjQxLCAgMTY1NCwgIDE2NTQs
Ci0gICAgMTY2OCwgIDE2NjgsICAxNjc3LCAgMTY4MCwgIDE2OTUsICAxNzMxLCAgMTczNSwgIDE3
NDEsICAxNzQ5LCAgMTc2NSwKLSAgICAxNzY5LCAgMTc3MywgIDE3NzQsICAxNzgwLCAgMTc4MSwg
IDE3ODIsICAxNzgzLCAgMTc4NCwgIDE3ODgsICAxNzg5LAotICAgIDE3ODksICAxNzg5LCAgMTc5
OSwgIDE4MDAsICAxODA1LCAgMTgwOCwgIDE4MTgsICAxODIxLCAgMTgyNywgIDE4MjgsCi0gICAg
MTgzMiwgIDE4NDAsICAxODQ0LCAgMTg1NCwgIDE4NTksICAxODc2LCAgMTg3NiwgIDE4ODEsICAx
ODgxLCAgMTg4OCwKLSAgICAxODg4LCAgMTg5NiwgIDE4OTksICAxOTA1LCAgMTkwOCwgIDE5MTQs
ICAxOTE4LCAgMTkyNSwgIDE5MzIsICAxOTM5LAotICAgIDE5NDYsICAxOTU3LCAgMTk2NiwgIDE5
NzAsICAxOTc3LCAgMTk4MCwgIDE5ODYsICAxOTg2CisgICAgICAgMCwgICAxNjUsICAgMTY1LCAg
IDIwMCwgICAyMDMsICAgMjE2LCAgIDIyMSwgICAyMjYsICAgMjMyLCAgIDIzNSwKKyAgICAgMzA4
LCAgIDMxMSwgICA0MjAsICAgNDMwLCAgIDQ0MywgICA0NTEsICAgNTUwLCAgIDU1MywgICA1NjEs
ICAgNTY1LAorICAgICA1NzIsICAgNTc2LCAgIDU4MywgICA1ODksICAgNTk4LCAgIDYwNiwgICA2
NjEsICAgNjY4LCAgIDY3OCwgICA2ODEsCisgICAgIDY5MSwgICA3MDEsICAgNzIyLCAgIDcyMywg
ICA3MjQsICAgNzI5LCAgIDczMCwgICA3MzksICAgNzUxLCAgIDc1MiwKKyAgICAgNzYwLCAgIDc3
MSwgICA3NzUsICAgNzc2LCAgIDc4NiwgICA3OTYsICAgODA2LCAgIDgxOSwgICA4MjAsICAgODMw
LAorICAgICA4NDMsICAgODQ3LCAgIDg1MSwgICA4NTUsICAgODU2LCAgIDg2OSwgICA4NzAsICAg
ODgzLCAgIDg4NCwgICA4OTcsCisgICAgIDg5OCwgICA5MTUsICAgOTE2LCAgIDkyOSwgICA5MzAs
ICAgOTMxLCAgIDkzMiwgICA5MzMsICAgOTM3LCAgIDk0MCwKKyAgICAgOTUxLCAgIDk1OSwgICA5
ODYsICAgOTkxLCAgIDk5OCwgIDEwMzYsICAxMDM5LCAgMTA0NiwgIDEwNTQsICAxMDc1LAorICAg
IDEwOTYsICAxMTA3LCAgMTEzNiwgIDExNDEsICAxMTUxLCAgMTE1NiwgIDExNjYsICAxMTY5LCAg
MTE3MiwgIDExNzUsCisgICAgMTE4MSwgIDExODgsICAxMTkxLCAgMTIxMywgIDEyMzEsICAxMjU1
LCAgMTI3OCwgIDEyODIsICAxMzAwLCAgMTMwOCwKKyAgICAxMzQwLCAgMTM2MCwgIDE0NDksICAx
NDU4LCAgMTQ4MSwgIDE0ODQsICAxNDkwLCAgMTQ5OCwgIDE1MDYsICAxNTE0LAorICAgIDE1MjQs
ICAxNTMxLCAgMTUzNCwgIDE1MzcsICAxNTQzLCAgMTU0NiwgIDE1NjEsICAxNTY1LCAgMTU2OSwg
IDE1NzMsCisgICAgMTU4MiwgIDE1ODcsICAxNTkyLCAgMTU5NywgIDE2MDIsICAxNjA3LCAgMTYx
MiwgIDE2MTcsICAxNjIyLCAgMTYyNywKKyAgICAxNjMzLCAgMTYzOSwgIDE2NDUsICAxNjUwLCAg
MTY1NSwgIDE2NjQsICAxNjczLCAgMTY3OCwgIDE2OTEsICAxNjkxLAorICAgIDE3MDUsICAxNzA1
LCAgMTcxNCwgIDE3MTcsICAxNzMyLCAgMTc2OCwgIDE3NzIsICAxNzc4LCAgMTc4NiwgIDE4MDIs
CisgICAgMTgwNiwgIDE4MTAsICAxODExLCAgMTgxNywgIDE4MTgsICAxODE5LCAgMTgyMCwgIDE4
MjEsICAxODI1LCAgMTgyNiwKKyAgICAxODI2LCAgMTgyNiwgIDE4MzYsICAxODM3LCAgMTg0MSwg
IDE4NDEsICAxODQyLCAgMTg0MiwgIDE4NDcsICAxODUwLAorICAgIDE4NjAsICAxODYzLCAgMTg2
OSwgIDE4NzAsICAxODc0LCAgMTg4MiwgIDE4ODYsICAxODk2LCAgMTkwMSwgIDE5MTgsCisgICAg
MTkxOCwgIDE5MjMsICAxOTIzLCAgMTkzMCwgIDE5MzAsICAxOTM4LCAgMTk0MSwgIDE5NDcsICAx
OTUwLCAgMTk1NiwKKyAgICAxOTYwLCAgMTk2NywgIDE5NzQsICAxOTgxLCAgMTk4OCwgIDE5OTks
ICAyMDA4LCAgMjAxMiwgIDIwMTksICAyMDIyLAorICAgIDIwMjgsICAyMDI4CiB9OwogI2VuZGlm
CiAKQEAgLTgwMiwxMiArODE2LDEyIEBAIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCB5eXRuYW1l
W10gPQogICAic3RydWN0X2RlY2xhcmF0b3JfbGlzdCIsICJzdHJ1Y3RfZGVjbGFyYXRvciIsICJp
bml0aWFsaXplciIsCiAgICJkZWNsYXJhdGlvbl9zdGF0ZW1lbnQiLCAic3RhdGVtZW50IiwgInNp
bXBsZV9zdGF0ZW1lbnQiLAogICAiY29tcG91bmRfc3RhdGVtZW50IiwgIkAzIiwgIkA0IiwgInN0
YXRlbWVudF9ub19uZXdfc2NvcGUiLAotICAiY29tcG91bmRfc3RhdGVtZW50X25vX25ld19zY29w
ZSIsICJzdGF0ZW1lbnRfbGlzdCIsCi0gICJleHByZXNzaW9uX3N0YXRlbWVudCIsICJzZWxlY3Rp
b25fc3RhdGVtZW50IiwKLSAgInNlbGVjdGlvbl9yZXN0X3N0YXRlbWVudCIsICJjb25kaXRpb24i
LCAiaXRlcmF0aW9uX3N0YXRlbWVudCIsICJANSIsCi0gICJANiIsICJANyIsICJmb3JfaW5pdF9z
dGF0ZW1lbnQiLCAiY29uZGl0aW9ub3B0IiwgImZvcl9yZXN0X3N0YXRlbWVudCIsCisgICJzdGF0
ZW1lbnRfd2l0aF9zY29wZSIsICJANSIsICJANiIsICJjb21wb3VuZF9zdGF0ZW1lbnRfbm9fbmV3
X3Njb3BlIiwKKyAgInN0YXRlbWVudF9saXN0IiwgImV4cHJlc3Npb25fc3RhdGVtZW50IiwgInNl
bGVjdGlvbl9zdGF0ZW1lbnQiLAorICAic2VsZWN0aW9uX3Jlc3Rfc3RhdGVtZW50IiwgImNvbmRp
dGlvbiIsICJpdGVyYXRpb25fc3RhdGVtZW50IiwgIkA3IiwKKyAgIkA4IiwgIkA5IiwgImZvcl9p
bml0X3N0YXRlbWVudCIsICJjb25kaXRpb25vcHQiLCAiZm9yX3Jlc3Rfc3RhdGVtZW50IiwKICAg
Imp1bXBfc3RhdGVtZW50IiwgInRyYW5zbGF0aW9uX3VuaXQiLCAiZXh0ZXJuYWxfZGVjbGFyYXRp
b24iLAotICAiZnVuY3Rpb25fZGVmaW5pdGlvbiIsICJAOCIsIDAKKyAgImZ1bmN0aW9uX2RlZmlu
aXRpb24iLCAiQDEwIiwgMAogfTsKICNlbmRpZgogCkBAIC04NDgsMTAgKzg2MiwxMSBAQCBzdGF0
aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5cjFbXSA9CiAgICAgIDE0MiwgICAxNDIsICAgMTQyLCAg
IDE0MiwgICAxNDIsICAgMTQyLCAgIDE0MiwgICAxNDIsICAgMTQ0LCAgIDE0MywKICAgICAgMTQ1
LCAgIDE0MywgICAxNDYsICAgMTQ2LCAgIDE0NywgICAxNDgsICAgMTQ4LCAgIDE0OSwgICAxNDks
ICAgMTUwLAogICAgICAxNTEsICAgMTUyLCAgIDE1MiwgICAxNTMsICAgMTUzLCAgIDE1MywgICAx
NTMsICAgMTUzLCAgIDE1NCwgICAxNTUsCi0gICAgIDE1NiwgICAxNTQsICAgMTU3LCAgIDE1Nywg
ICAxNTgsICAgMTU4LCAgIDE1OSwgICAxNTksICAgMTYwLCAgIDE2MCwKLSAgICAgMTYxLCAgIDE2
MiwgICAxNjIsICAgMTYzLCAgIDE2MywgICAxNjUsICAgMTY0LCAgIDE2NiwgICAxNjQsICAgMTY3
LAotICAgICAxNjQsICAgMTY4LCAgIDE2OCwgICAxNjksICAgMTY5LCAgIDE3MCwgICAxNzAsICAg
MTcxLCAgIDE3MSwgICAxNzEsCi0gICAgIDE3MSwgICAxNzEsICAgMTcyLCAgIDE3MiwgICAxNzMs
ICAgMTczLCAgIDE3NSwgICAxNzQKKyAgICAgMTU2LCAgIDE1NCwgICAxNTcsICAgMTU3LCAgIDE1
OSwgICAxNTgsICAgMTYwLCAgIDE1OCwgICAxNjEsICAgMTYxLAorICAgICAxNjIsICAgMTYyLCAg
IDE2MywgICAxNjMsICAgMTY0LCAgIDE2NSwgICAxNjUsICAgMTY2LCAgIDE2NiwgICAxNjgsCisg
ICAgIDE2NywgICAxNjksICAgMTY3LCAgIDE3MCwgICAxNjcsICAgMTcxLCAgIDE3MSwgICAxNzIs
ICAgMTcyLCAgIDE3MywKKyAgICAgMTczLCAgIDE3NCwgICAxNzQsICAgMTc0LCAgIDE3NCwgICAx
NzQsICAgMTc1LCAgIDE3NSwgICAxNzYsICAgMTc2LAorICAgICAxNzgsICAgMTc3CiB9OwogCiAv
KiBZWVIyW1lZTl0gLS0gTnVtYmVyIG9mIHN5bWJvbHMgY29tcG9zaW5nIHJpZ2h0IGhhbmQgc2lk
ZSBvZiBydWxlIFlZTi4gICovCkBAIC04NzMsMTAgKzg4OCwxMSBAQCBzdGF0aWMgY29uc3QgeXl0
eXBlX3VpbnQ4IHl5cjJbXSA9CiAgICAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEs
ICAgICAxLCAgICAgMSwgICAgIDEsICAgICAwLCAgICAgNiwKICAgICAgICAwLCAgICAgNSwgICAg
IDEsICAgICAyLCAgICAgMywgICAgIDEsICAgICAzLCAgICAgMSwgICAgIDQsICAgICAxLAogICAg
ICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAg
ICAgMiwgICAgIDAsCi0gICAgICAgMCwgICAgIDUsICAgICAxLCAgICAgMSwgICAgIDIsICAgICAz
LCAgICAgMSwgICAgIDIsICAgICAxLCAgICAgMiwKLSAgICAgICA1LCAgICAgMywgICAgIDEsICAg
ICAxLCAgICAgNCwgICAgIDAsICAgICA2LCAgICAgMCwgICAgIDgsICAgICAwLAotICAgICAgIDcs
ICAgICAxLCAgICAgMSwgICAgIDEsICAgICAwLCAgICAgMiwgICAgIDMsICAgICAyLCAgICAgMiwg
ICAgIDIsCi0gICAgICAgMywgICAgIDIsICAgICAxLCAgICAgMiwgICAgIDEsICAgICAxLCAgICAg
MCwgICAgIDMKKyAgICAgICAwLCAgICAgNSwgICAgIDEsICAgICAxLCAgICAgMCwgICAgIDIsICAg
ICAwLCAgICAgMiwgICAgIDIsICAgICAzLAorICAgICAgIDEsICAgICAyLCAgICAgMSwgICAgIDIs
ICAgICA1LCAgICAgMywgICAgIDEsICAgICAxLCAgICAgNCwgICAgIDAsCisgICAgICAgNiwgICAg
IDAsICAgICA4LCAgICAgMCwgICAgIDcsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAwLCAgICAg
MiwKKyAgICAgICAzLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMywgICAgIDIsICAgICAxLCAg
ICAgMiwgICAgIDEsICAgICAxLAorICAgICAgIDAsICAgICAzCiB9OwogCiAvKiBZWURFRkFDVFtT
VEFURS1OQU1FXSAtLSBEZWZhdWx0IHJ1bGUgdG8gcmVkdWNlIHdpdGggaW4gc3RhdGUKQEAgLTg4
NywzMyArOTAzLDM0IEBAIHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXlkZWZhY3RbXSA9CiAg
ICAgICAgMCwgICAgIDAsICAgMTExLCAgIDExMiwgICAxMTMsICAgICAwLCAgIDEwNSwgICAxMDQs
ICAgMTE5LCAgIDExNywKICAgICAgMTE4LCAgIDEyMywgICAxMjQsICAgMTI1LCAgIDEyNiwgICAx
MjcsICAgMTI4LCAgIDEyMCwgICAxMjEsICAgMTIyLAogICAgICAxMjksICAgMTMwLCAgIDEzMSwg
ICAxMDgsICAgMTA2LCAgICAgMCwgICAxMTYsICAgMTMyLCAgIDEzMywgICAxMzQsCi0gICAgIDEz
NSwgICAxMzcsICAgMTk1LCAgIDE5NiwgICAgIDAsICAgIDc2LCAgICA4NiwgICAgIDAsICAgIDkx
LCAgICA5NiwKLSAgICAgICAwLCAgIDEwMiwgICAgIDAsICAgMTA5LCAgIDExNCwgICAxMzYsICAg
ICAwLCAgIDE5MiwgICAxOTQsICAgMTA3LAorICAgICAxMzUsICAgMTM3LCAgIDE5OSwgICAyMDAs
ICAgICAwLCAgICA3NiwgICAgODYsICAgICAwLCAgICA5MSwgICAgOTYsCisgICAgICAgMCwgICAx
MDIsICAgICAwLCAgIDEwOSwgICAxMTQsICAgMTM2LCAgICAgMCwgICAxOTYsICAgMTk4LCAgIDEw
NywKICAgICAgMTAxLCAgICAgMCwgICAgIDAsICAgMTQwLCAgICA3MSwgICAgIDAsICAgIDc0LCAg
ICA4NiwgICAgIDAsICAgIDg3LAogICAgICAgODgsICAgIDg5LCAgICA3NywgICAgIDAsICAgIDg2
LCAgICAgMCwgICAgNzIsICAgIDk3LCAgIDEwMywgICAxMTAsCi0gICAgICAgMCwgICAgIDEsICAg
MTkzLCAgICAgMCwgICAxMzgsICAgICAwLCAgICAgMCwgICAxOTcsICAgIDc4LCAgICA4MywKKyAg
ICAgICAwLCAgICAgMSwgICAxOTcsICAgICAwLCAgIDEzOCwgICAgIDAsICAgICAwLCAgIDIwMSwg
ICAgNzgsICAgIDgzLAogICAgICAgODUsICAgIDkwLCAgICAgMCwgICAgOTIsICAgIDc5LCAgICAg
MCwgICAgIDAsICAgICAyLCAgICAgNSwgICAgIDQsCiAgICAgICAgNiwgICAgMjcsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgIDM0LCAgICAzMywgICAgMzIsICAgICAzLCAgICAgOCwKICAgICAgIDI4
LCAgICAxMCwgICAgMTUsICAgIDE2LCAgICAgMCwgICAgIDAsICAgIDIxLCAgICAgMCwgICAgMzUs
ICAgICAwLAogICAgICAgMzgsICAgIDQxLCAgICA0MiwgICAgNDcsICAgIDUwLCAgICA1MSwgICAg
NTIsICAgIDUzLCAgICA1NSwgICAgNTcsCiAgICAgICA1OSwgICAgNzAsICAgICAwLCAgICAyNSwg
ICAgNzMsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTQyLCAgICAgMCwKLSAgICAgICAwLCAgIDE3
NywgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE1OSwgICAxNjQsICAgMTY4
LAotICAgICAgMzUsICAgIDYxLCAgICA2OCwgICAgIDAsICAgMTUwLCAgICAgMCwgICAxMTQsICAg
MTUzLCAgIDE2NiwgICAxNTIsCisgICAgICAgMCwgICAxODEsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAxNTksICAgMTY4LCAgIDE3MiwKKyAgICAgIDM1LCAgICA2MSwgICAg
NjgsICAgICAwLCAgIDE1MCwgICAgIDAsICAgMTE0LCAgIDE1MywgICAxNzAsICAgMTUyLAogICAg
ICAxNTEsICAgICAwLCAgIDE1NCwgICAxNTUsICAgMTU2LCAgIDE1NywgICAgODAsICAgIDgyLCAg
ICA4NCwgICAgIDAsCiAgICAgICAgMCwgICAgOTgsICAgICAwLCAgIDE0OSwgICAxMDAsICAgIDI5
LCAgICAzMCwgICAgIDAsICAgIDEyLCAgICAxMywKICAgICAgICAwLCAgICAgMCwgICAgMTksICAg
IDE4LCAgICAgMCwgICAgMjAsICAgIDIyLCAgICAyNCwgICAgMzEsICAgICAwLAogICAgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsCiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgIDExNSwgICAgIDAsICAgMTQ3LCAgICAg
MCwgICAxNDUsICAgMTQxLCAgIDE0MywKLSAgICAgMTg4LCAgIDE4NywgICAgIDAsICAgMTc5LCAg
ICAgMCwgICAxOTEsICAgMTg5LCAgICAgMCwgICAxNzUsICAgMTU4LAotICAgICAgIDAsICAgIDY0
LCAgICA2NSwgICAgNjYsICAgIDY3LCAgICA2MywgICAgIDAsICAgICAwLCAgIDE2OSwgICAxNjUs
Ci0gICAgIDE2NywgICAgIDAsICAgIDkzLCAgICAgMCwgICAgOTUsICAgIDk5LCAgICAgNywgICAg
IDAsICAgIDE0LCAgICAyNiwKKyAgICAgMTkyLCAgIDE5MSwgICAxNjYsICAgMTgzLCAgICAgMCwg
ICAxOTUsICAgMTkzLCAgICAgMCwgICAxNzksICAgMTU4LAorICAgICAgIDAsICAgIDY0LCAgICA2
NSwgICAgNjYsICAgIDY3LCAgICA2MywgICAgIDAsICAgICAwLCAgIDE3MywgICAxNjksCisgICAg
IDE3MSwgICAgIDAsICAgIDkzLCAgICAgMCwgICAgOTUsICAgIDk5LCAgICAgNywgICAgIDAsICAg
IDE0LCAgICAyNiwKICAgICAgIDExLCAgICAxNywgICAgMjMsICAgIDM2LCAgICAzNywgICAgNDAs
ICAgIDM5LCAgICA0NSwgICAgNDYsICAgIDQzLAogICAgICAgNDQsICAgIDQ4LCAgICA0OSwgICAg
NTQsICAgIDU2LCAgICA1OCwgICAgIDAsICAgMTM5LCAgICAgMCwgICAgIDAsCi0gICAgIDE0NCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAxOTAsICAgICAwLCAgIDE2MCwgICAgNjIsICAgIDY5LCAg
ICAgMCwKLSAgICAgIDk0LCAgICAgOSwgICAgIDAsICAgICAwLCAgIDE0NiwgICAgIDAsICAgMTgy
LCAgIDE4MSwgICAxODQsICAgICAwLAotICAgICAxNzMsICAgICAwLCAgICAgMCwgICAgIDAsICAg
IDgxLCAgICA2MCwgICAxNDgsICAgICAwLCAgIDE4MywgICAgIDAsCi0gICAgICAgMCwgICAxNzIs
ICAgMTcwLCAgICAgMCwgICAgIDAsICAgMTYxLCAgICAgMCwgICAxODUsICAgICAwLCAgICAgMCwK
LSAgICAgICAwLCAgIDE2MywgICAxNzYsICAgMTYyLCAgICAgMCwgICAxODYsICAgMTgwLCAgIDE3
MSwgICAxNzQsICAgMTc4CisgICAgIDE0NCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgIDE5NCwgICAgIDAsICAgMTYwLCAgICA2MiwKKyAgICAgIDY5LCAgICAgMCwgICAgOTQs
ICAgICA5LCAgICAgMCwgICAgIDAsICAgMTQ2LCAgICAgMCwgICAxNjUsICAgMTY3LAorICAgICAx
ODYsICAgMTg1LCAgIDE4OCwgICAxNjYsICAgMTc3LCAgICAgMCwgICAgIDAsICAgICAwLCAgICA4
MSwgICAgNjAsCisgICAgIDE0OCwgICAgIDAsICAgMTg3LCAgICAgMCwgICAgIDAsICAgMTc2LCAg
IDE3NCwgICAgIDAsICAgICAwLCAgIDE2MSwKKyAgICAgICAwLCAgIDE4OSwgICAgIDAsICAgMTY2
LCAgICAgMCwgICAxNjMsICAgMTgwLCAgIDE2MiwgICAgIDAsICAgMTkwLAorICAgICAxODQsICAg
MTc1LCAgIDE3OCwgICAxODIKIH07CiAKIC8qIFlZREVGR09UT1tOVEVSTS1OVU1dLiAgKi8KQEAg
LTkyNSwzNDcgKzk0MiwzNTggQEAgc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQxNiB5eWRlZmdvdG9b
XSA9CiAgICAgIDE0NCwgICAxNDUsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDc5LCAgICA2Miwg
ICAgNjMsICAgIDgwLCAgICAzNywKICAgICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0
MiwgICAgNDMsICAgMTIzLCAgICA0NSwgICAxMjUsICAgIDc1LAogICAgICAxMjcsICAgMTI4LCAg
IDE5NiwgICAxOTcsICAgMTY0LCAgIDE0NywgICAxNDgsICAgMTQ5LCAgIDE1MCwgICAyMTAsCi0g
ICAgIDI3MywgICAyOTIsICAgMjkzLCAgIDE1MSwgICAxNTIsICAgMTUzLCAgIDI4MiwgICAyNzIs
ICAgMTU0LCAgIDI1NSwKLSAgICAgMjAyLCAgIDI1MiwgICAyNjgsICAgMjc5LCAgIDI4MCwgICAx
NTUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDU1CisgICAgIDI3NywgICAyOTYsICAgMjUxLCAg
IDI1MiwgICAyNTMsICAgMjk3LCAgIDE1MSwgICAxNTIsICAgMTUzLCAgIDI4NiwKKyAgICAgMjc2
LCAgIDE1NCwgICAyNTcsICAgMjAyLCAgIDI1NCwgICAyNzIsICAgMjgzLCAgIDI4NCwgICAxNTUs
ICAgIDQ2LAorICAgICAgNDcsICAgIDQ4LCAgICA1NQogfTsKIAogLyogWVlQQUNUW1NUQVRFLU5V
TV0gLS0gSW5kZXggaW4gWVlUQUJMRSBvZiB0aGUgcG9ydGlvbiBkZXNjcmliaW5nCiAgICBTVEFU
RS1OVU0uICAqLwotI2RlZmluZSBZWVBBQ1RfTklORiAtMjUxCisjZGVmaW5lIFlZUEFDVF9OSU5G
IC0yNjYKIHN0YXRpYyBjb25zdCB5eXR5cGVfaW50MTYgeXlwYWN0W10gPQogewotICAgIDEyNTAs
ICAgLTE3LCAgLTI1MSwgIC0yNTEsICAtMjUxLCAgIDExMywgIC0yNTEsICAtMjUxLCAgLTI1MSwg
IC0yNTEsCi0gICAgLTI1MSwgIC0yNTEsICAtMjUxLCAgLTI1MSwgIC0yNTEsICAtMjUxLCAgLTI1
MSwgIC0yNTEsICAtMjUxLCAgLTI1MSwKLSAgICAtMjUxLCAgLTI1MSwgIC0yNTEsICAtMjUxLCAg
LTI1MSwgICAtMzksICAtMjUxLCAgLTI1MSwgIC0yNTEsICAtMjUxLAotICAgIC0yNTEsICAtMjUx
LCAgLTI1MSwgICAtNjUsICAgLTM0LCAgIC0xMCwgICAgMjEsICAgLTMyLCAgLTI1MSwgICAgMjgs
Ci0gICAgIDIwNywgIC0yNTEsICAxMzI0LCAgLTI1MSwgICAgNTYsICAtMjUxLCAgMTIwNiwgIC0y
NTEsICAtMjUxLCAgLTI1MSwKLSAgICAtMjUxLCAgMTMyNCwgICAgNzQsICAtMjUxLCAgLTI1MSwg
ICAgODYsICAtMjUxLCAgICA3MSwgICAgOTUsICAtMjUxLAotICAgIC0yNTEsICAtMjUxLCAgLTI1
MSwgICAyMDcsICAgMTE5LCAgIDEyMCwgIC0yNTEsICAgLTU2LCAgLTI1MSwgIC0yNTEsCi0gICAg
IDk3MSwgIC0yNTEsICAtMjUxLCAgICA4NCwgIC0yNTEsICAgMjA3LCAgIDI4NywgIC0yNTEsICAt
MjUxLCAgLTI1MSwKLSAgICAtMjUxLCAgIDEyNCwgICAyMDcsICAgLTU5LCAgLTI1MSwgICA3NzMs
ICAgOTcxLCAgICA5OCwgIC0yNTEsICAtMjUxLAotICAgIC0yNTEsICAtMjUxLCAgIDk3MSwgICA5
NzEsICAgOTcxLCAgLTI1MSwgIC0yNTEsICAtMjUxLCAgLTI1MSwgIC0yNTEsCi0gICAgICAzNSwg
IC0yNTEsICAtMjUxLCAgLTI1MSwgICAxMDAsICAgIC05LCAgMTAzNywgICAxMDIsICAtMjUxLCAg
IDk3MSwKLSAgICAgLTI3LCAgICAtMSwgIC0yNTEsICAgLTI0LCAgICA5OSwgIC0yNTEsICAtMjUx
LCAgLTI1MSwgICAxMTIsICAgMTExLAotICAgICAtNTEsICAtMjUxLCAgIDEwMywgIC0yNTEsICAt
MjUxLCAgIDIwNywgICAxMzUsICAxMTA2LCAgLTI1MSwgICAxMDEsCi0gICAgIDEwNCwgIC0yNTEs
ICAgMTA5LCAgIDExNSwgICAxMDYsICAgODM5LCAgIDExNywgICAxMDcsICAtMjUxLCAgLTI1MSwK
LSAgICAgIDM5LCAgLTI1MSwgIC0yNTEsICAgLTExLCAgLTI1MSwgICAtNjUsICAgIDU0LCAgLTI1
MSwgIC0yNTEsICAtMjUxLAotICAgIC0yNTEsICAgMzcxLCAgLTI1MSwgIC0yNTEsICAtMjUxLCAg
LTI1MSwgICAxMTYsICAtMjUxLCAgLTI1MSwgICA5MDUsCi0gICAgIDk3MSwgIC0yNTEsICAgMTE4
LCAgLTI1MSwgIC0yNTEsICAtMjUxLCAgLTI1MSwgICAgIDgsICAtMjUxLCAgLTI1MSwKLSAgICAg
OTcxLCAgMTI4NywgIC0yNTEsICAtMjUxLCAgIDk3MSwgICAxMjUsICAtMjUxLCAgLTI1MSwgIC0y
NTEsICAgOTcxLAotICAgICA5NzEsICAgOTcxLCAgIDk3MSwgICA5NzEsICAgOTcxLCAgIDk3MSwg
ICA5NzEsICAgOTcxLCAgIDk3MSwgICA5NzEsCi0gICAgIDk3MSwgICA5NzEsICAgOTcxLCAgLTI1
MSwgIDExNDksICAgMTIyLCAgICAxNywgIC0yNTEsICAtMjUxLCAgLTI1MSwKLSAgICAtMjUxLCAg
LTI1MSwgICA0NTUsICAtMjUxLCAgIDk3MSwgIC0yNTEsICAtMjUxLCAgICAzMiwgIC0yNTEsICAt
MjUxLAotICAgICA0NTUsICAtMjUxLCAgLTI1MSwgIC0yNTEsICAtMjUxLCAgLTI1MSwgICA5NzEs
ICAgOTcxLCAgLTI1MSwgIC0yNTEsCi0gICAgLTI1MSwgICA5NzEsICAtMjUxLCAgIDEyMywgIC0y
NTEsICAtMjUxLCAgLTI1MSwgICAxMjYsICAgMTIxLCAgLTI1MSwKLSAgICAgMTI3LCAgLTI1MSwg
IC0yNTEsICAtMjUxLCAgLTI1MSwgICAtMjcsICAgLTI3LCAgLTI1MSwgIC0yNTEsICAtMjUxLAot
ICAgIC0yNTEsICAgLTI0LCAgIC0yNCwgIC0yNTEsICAgMTEyLCAgIDExMSwgICAgNzksICAtMjUx
LCAgIDk3MSwgICAxMzUsCi0gICAgLTI1MSwgICAxNTEsICAgNjIzLCAgICAxMSwgIC0yNTEsICAg
NzA3LCAgIDQ1NSwgIC0yNTEsICAtMjUxLCAgIDEyOCwKLSAgICAtMjUxLCAgLTI1MSwgICA5NzEs
ICAgMTMwLCAgLTI1MSwgICAxMzQsICAtMjUxLCAgLTI1MSwgICA3MDcsICAgNDU1LAotICAgICAx
MjEsICAgMTQ3LCAgIDEzNiwgICAxMzEsICAtMjUxLCAgLTI1MSwgIC0yNTEsICAgOTcxLCAgLTI1
MSwgICAxMzIsCi0gICAgIDE0MiwgICAyMDAsICAtMjUxLCAgIDEzOSwgICA1MzksICAtMjUxLCAg
ICAxOSwgICA5NzEsICAgNTM5LCAgIDQ1NSwKLSAgICAgOTcxLCAgLTI1MSwgIC0yNTEsICAtMjUx
LCAgIDE0MCwgICAxMjEsICAtMjUxLCAgLTI1MSwgIC0yNTEsICAtMjUxCisgICAgMTI1MywgICAt
MjAsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAgMTQ4LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2
NiwKKyAgICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAg
LTI2NiwgIC0yNjYsICAtMjY2LAorICAgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2
LCAgIC0zOSwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsCisgICAgLTI2NiwgIC0yNjYsICAt
MjY2LCAgIC0xOCwgICAgLTIsICAgICA2LCAgICAyMSwgICAtNjEsICAtMjY2LCAgICA1MSwKKyAg
ICAxMjk2LCAgLTI2NiwgIDEzNzAsICAtMjY2LCAgICAyNSwgIC0yNjYsICAxMjA5LCAgLTI2Niwg
IC0yNjYsICAtMjY2LAorICAgIC0yNjYsICAxMzcwLCAgICA0MiwgIC0yNjYsICAtMjY2LCAgICA1
MCwgIC0yNjYsICAgIDcxLCAgICA5NSwgIC0yNjYsCisgICAgLTI2NiwgIC0yNjYsICAtMjY2LCAg
MTI5NiwgICAxMjMsICAgMTA1LCAgLTI2NiwgICAgIDksICAtMjY2LCAgLTI2NiwKKyAgICAgOTc0
LCAgLTI2NiwgIC0yNjYsICAgIDgxLCAgLTI2NiwgIDEyOTYsICAgMjkwLCAgLTI2NiwgIC0yNjYs
ICAtMjY2LAorICAgIC0yNjYsICAgMTI1LCAgMTI5NiwgICAtMTMsICAtMjY2LCAgIDc3NiwgICA5
NzQsICAgIDk5LCAgLTI2NiwgIC0yNjYsCisgICAgLTI2NiwgIC0yNjYsICAgOTc0LCAgIDk3NCwg
ICA5NzQsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwKKyAgICAgIDM1LCAgLTI2
NiwgIC0yNjYsICAtMjY2LCAgIDEwMCwgICAgLTYsICAxMDQwLCAgIDEwNCwgIC0yNjYsICAgOTc0
LAorICAgICAgMzYsICAgLTY0LCAgLTI2NiwgICAtMjEsICAgMTAyLCAgLTI2NiwgIC0yNjYsICAt
MjY2LCAgIDExMywgICAxMTcsCisgICAgIC01MSwgIC0yNjYsICAgMTA4LCAgLTI2NiwgIC0yNjYs
ICAxMjk2LCAgIDEyOSwgIDExMDksICAtMjY2LCAgICA5NywKKyAgICAgMTAzLCAgLTI2NiwgICAx
MTIsICAgMTE0LCAgIDEwNiwgICA4NDIsICAgMTE1LCAgIDExNiwgIC0yNjYsICAtMjY2LAorICAg
ICAgMzksICAtMjY2LCAgLTI2NiwgICAtNDMsICAtMjY2LCAgIC0xOCwgICAgNDcsICAtMjY2LCAg
LTI2NiwgIC0yNjYsCisgICAgLTI2NiwgICAzNzQsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2
LCAgIDExOCwgIC0yNjYsICAtMjY2LCAgIDkwOCwKKyAgICAgOTc0LCAgLTI2NiwgICAxMjAsICAt
MjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgICAxOSwgIC0yNjYsICAtMjY2LAorICAgICA5NzQs
ICAxMzMzLCAgLTI2NiwgIC0yNjYsICAgOTc0LCAgIDExOSwgIC0yNjYsICAtMjY2LCAgLTI2Niwg
ICA5NzQsCisgICAgIDk3NCwgICA5NzQsICAgOTc0LCAgIDk3NCwgICA5NzQsICAgOTc0LCAgIDk3
NCwgICA5NzQsICAgOTc0LCAgIDk3NCwKKyAgICAgOTc0LCAgIDk3NCwgICA5NzQsICAtMjY2LCAg
MTE1MiwgICAxMjIsICAgLTI5LCAgLTI2NiwgIC0yNjYsICAtMjY2LAorICAgIC0yNjYsICAtMjY2
LCAgIDEyMSwgIC0yNjYsICAgOTc0LCAgLTI2NiwgIC0yNjYsICAgICA1LCAgLTI2NiwgIC0yNjYs
CisgICAgIDQ1OCwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgIDk3NCwgICA5
NzQsICAtMjY2LCAgLTI2NiwKKyAgICAtMjY2LCAgIDk3NCwgIC0yNjYsICAgMTM3LCAgLTI2Niwg
IC0yNjYsICAtMjY2LCAgIDEzOCwgICAxMTEsICAtMjY2LAorICAgICAxNDIsICAtMjY2LCAgLTI2
NiwgIC0yNjYsICAtMjY2LCAgICAzNiwgICAgMzYsICAtMjY2LCAgLTI2NiwgIC0yNjYsCisgICAg
LTI2NiwgICAtMjEsICAgLTIxLCAgLTI2NiwgICAxMTMsICAgMTE3LCAgICA4MiwgIC0yNjYsICAg
OTc0LCAgIDEyOSwKKyAgICAtMjY2LCAgIDE3NSwgICAgNTAsICAgNjI2LCAgIDcxMCwgICAgMzgs
ICAtMjY2LCAgIDE5NywgICA0NTgsICAtMjY2LAorICAgIC0yNjYsICAgMTQxLCAgLTI2NiwgIC0y
NjYsICAgOTc0LCAgIDE1NSwgIC0yNjYsICAgMTQ1LCAgLTI2NiwgIC0yNjYsCisgICAgLTI2Niwg
IC0yNjYsICAgMTk3LCAgIDEyMSwgICAxMTEsICAgMTg2LCAgIDE1OSwgICAxNjAsICAtMjY2LCAg
LTI2NiwKKyAgICAtMjY2LCAgIDk3NCwgIC0yNjYsICAgMTY2LCAgIDE3NiwgICAyMzYsICAtMjY2
LCAgIDE3NCwgICA1NDIsICAtMjY2LAorICAgICAgNDMsICAgOTc0LCAgIDU0MiwgICAxMjEsICAg
OTc0LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgIDE3NywgICAxMTEsCisgICAgLTI2NiwgIC0yNjYs
ICAtMjY2LCAgLTI2NgogfTsKIAogLyogWVlQR09UT1tOVEVSTS1OVU1dLiAgKi8KIHN0YXRpYyBj
b25zdCB5eXR5cGVfaW50MTYgeXlwZ290b1tdID0KIHsKLSAgICAtMjUxLCAgLTI1MSwgIC0yNTEs
ICAtMjUxLCAgLTI1MSwgIC0yNTEsICAtMjUxLCAgICA1MCwgIC0yNTEsICAtMjUxLAotICAgIC0y
NTEsICAtMjUxLCAgIC00NCwgIC0yNTEsICAgLTIxLCAgLTI1MSwgICAtNjIsICAgLTIwLCAgLTI1
MSwgIC0yNTEsCi0gICAgLTI1MSwgICAgMzQsICAgIDM2LCAgICAzMywgIC0yNTEsICAgLTY2LCAg
IC04MywgIC0yNTEsICAgLTkyLCAgIC03MywKLSAgICAgICA3LCAgICAxMywgIC0yNTEsICAtMjUx
LCAgLTI1MSwgICAxNDMsICAgMTcwLCAgIDE3NiwgICAxNTksICAtMjUxLAotICAgIC0yNTEsICAt
MjQ3LCAgIC0yMiwgICAtMzAsICAgMjM3LCAgIC0xNSwgICAgIDAsICAtMjUxLCAgLTI1MSwgIC0y
NTEsCi0gICAgIDEyOSwgIC0xMjIsICAtMjUxLCAgICAtNiwgIC0xNTksICAgIC04LCAgLTE0MCwg
IC0yNTAsICAtMjUxLCAgLTI1MSwKLSAgICAtMjUxLCAgIC00MSwgICAyMDIsICAgIDQ4LCAgICAg
OSwgIC0yNTEsICAtMjUxLCAgICAtNSwgIC0yNTEsICAtMjUxLAotICAgIC0yNTEsICAtMjUxLCAg
LTI1MSwgIC0yNTEsICAtMjUxLCAgLTI1MSwgIC0yNTEsICAgMjEzLCAgLTI1MSwgIC0yNTEKKyAg
ICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgICA4NSwg
IC0yNjYsICAtMjY2LAorICAgIC0yNjYsICAtMjY2LCAgIC00NCwgIC0yNjYsICAgLTE1LCAgLTI2
NiwgICAtNTUsICAgLTE5LCAgLTI2NiwgIC0yNjYsCisgICAgLTI2NiwgICAgNzIsICAgIDcwLCAg
ICA3MywgIC0yNjYsICAgLTY2LCAgIC04MywgIC0yNjYsICAgLTkyLCAgIC03MywKKyAgICAgIDEz
LCAgICAxNCwgIC0yNjYsICAtMjY2LCAgLTI2NiwgICAxODAsICAgMjA2LCAgIDIwMSwgICAxODQs
ICAtMjY2LAorICAgIC0yNjYsICAtMjQxLCAgIC0yNSwgICAtMzAsICAgMjYyLCAgICAtNCwgICAg
IDAsICAtMjY2LCAgLTI2NiwgIC0yNjYsCisgICAgIDE0MywgIC0xMjIsICAtMjY2LCAgICAyMiwg
IC0xNDUsICAgIDE2LCAgLTE0NCwgIC0yMjYsICAtMjY2LCAgLTI2NiwKKyAgICAtMjY2LCAgIC0x
NywgIC0yNjUsICAtMjY2LCAgLTI2NiwgICAtNTQsICAgIDYzLCAgICAyMCwgIC0yNjYsICAtMjY2
LAorICAgICAgIDQsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAtMjY2LCAgLTI2NiwgIC0yNjYsICAt
MjY2LCAgLTI2NiwgIC0yNjYsCisgICAgIDIzMSwgIC0yNjYsICAtMjY2CiB9OwogCiAvKiBZWVRB
QkxFW1lZUEFDVFtTVEFURS1OVU1dXS4gIFdoYXQgdG8gZG8gaW4gc3RhdGUgU1RBVEUtTlVNLiAg
SWYKICAgIHBvc2l0aXZlLCBzaGlmdCB0aGF0IHRva2VuLiAgSWYgbmVnYXRpdmUsIHJlZHVjZSB0
aGUgcnVsZSB3aGljaAogICAgbnVtYmVyIGlzIHRoZSBvcHBvc2l0ZS4gIElmIHplcm8sIGRvIHdo
YXQgWVlERUZBQ1Qgc2F5cy4KICAgIElmIFlZVEFCTEVfTklORiwgc3ludGF4IGVycm9yLiAgKi8K
LSNkZWZpbmUgWVlUQUJMRV9OSU5GIC0xMTcKKyNkZWZpbmUgWVlUQUJMRV9OSU5GIC0xNjUKIHN0
YXRpYyBjb25zdCB5eXR5cGVfaW50MTYgeXl0YWJsZVtdID0KIHsKLSAgICAgIDQ0LCAgIDIyNCwg
ICAxNjcsICAgMTYzLCAgIDEyMSwgICAxOTksICAgIDUyLCAgICAzMiwgICAyNzEsICAgMTkxLAot
ICAgICAgNjgsICAgMjIwLCAgIDE2MiwgICAgMzMsICAgIDY0LCAgIDE1OSwgICAgODQsICAgIDU0
LCAgICA4NSwgICAxMjEsCi0gICAgICA0OSwgICAyNzEsICAgMTYwLCAgIDE3NiwgICAgNTgsICAg
IDg2LCAgIDEwOCwgICAgNjksICAgIDUwLCAgICAgNiwKLSAgICAgICA3LCAgIDE4MywgICAxODQs
ICAgIDgxLCAgIDI5MSwgICAgNjQsICAgIDczLCAgICA1MywgICAyOTEsICAgIDU2LAotICAgICAg
NDQsICAgMTA4LCAgICA0NCwgICAyMDcsICAgMTkyLCAgIDEyNiwgICAgNDQsICAgIDY1LCAgIDE2
NSwgICAxNjYsCi0gICAgICA2NiwgICAgNDQsICAgIDgxLCAgICAzMiwgICAgNTksICAgIDYwLCAg
ICA2MSwgICAgMjMsICAgIDI0LCAgICAzMywKLSAgICAgMTc5LCAgIDE4MCwgICAyNTEsICAgIDQ0
LCAgIDE3MywgICAxNzgsICAgMTg1LCAgIDE4NiwgICAyMTcsICAgIDU3LAotICAgICAxNzQsICAg
MjE4LCAgIDE5OSwgICAgNjcsICAgIDU4LCAgICA0NCwgICAxNDYsICAgMTYzLCAgIDIyOCwgICAg
IDYsCi0gICAgICAgNywgICAyMjYsICAgIDQ0LCAgIDE4MSwgICAyNjksICAgMTgyLCAgIDIyMywg
ICAyMTcsICAgMTY4LCAgIDE2OSwKLSAgICAgMjE3LCAgIDIzMiwgICAyOTQsICAgMTIxLCAgIC03
NSwgICAxMjYsICAgMjQ5LCAgIDEyNiwgICAyMTcsICAgMjUwLAorICAgICAgNDQsICAgIDc3LCAg
IDE2NywgICAxNjMsICAgMTIxLCAgIDE5OSwgICAgNTIsICAgMjIwLCAgIDI4NSwgICAxOTEsCisg
ICAgICA2OCwgICAgNjQsICAgMTYyLCAgICAzMiwgICAgMzMsICAgMjI0LCAgIDI3NSwgICAgNDks
ICAgIDY1LCAgIDEyMSwKKyAgICAgMTgxLCAgICA2NiwgICAxODIsICAgMTc2LCAgICA1OCwgICAg
NTAsICAgMTA4LCAgIDI2OSwgICAzMDEsICAgICA2LAorICAgICAgIDcsICAgMjc1LCAgICA2NCwg
ICAgODEsICAgMTgzLCAgIDE4NCwgICAyMTcsICAgIDUzLCAgICA2OSwgICAyMTgsCisgICAgICA0
NCwgICAxMDgsICAgIDQ0LCAgIDIwNywgICAxOTIsICAgMTI2LCAgICA0NCwgICAgNzMsICAgMTY1
LCAgIDE2NiwKKyAgICAgMjQ5LCAgICA0NCwgICAgODEsICAgMjUwLCAgICA1OSwgICAgNjAsICAg
IDYxLCAgICAyMywgICAgMjQsICAgIDMyLAorICAgICAgMzMsICAgMTU5LCAgIDI5NSwgICAgNDQs
ICAgIDU0LCAgIDE3OCwgICAyOTUsICAgMTczLCAgIDE2MCwgICAxODUsCisgICAgIDE4NiwgICAg
NTYsICAgMTk5LCAgIDE3NCwgICAgNTgsICAgIDQ0LCAgIDE0NiwgICAxNjMsICAgMjI4LCAgICAg
NiwKKyAgICAgICA3LCAgICA4NCwgICAgNDQsICAgIDg1LCAgIDIxNywgICAgNTcsICAgMjIzLCAg
IDI1NiwgICAxNjgsICAgMTY5LAorICAgICAgODYsICAgMjMyLCAgIDIyNiwgICAxMjEsICAgLTc1
LCAgIDEyNiwgICAgNjcsICAgMTI2LCAgIDIxNywgICAgNzAsCiAgICAgIDI0NiwgICAyMTEsICAg
MjEyLCAgIDIxMywgICAgNTksICAgIDYwLCAgICA2MSwgICAgMjMsICAgIDI0LCAgIDE3MCwKLSAg
ICAgMjE0LCAgIDIxNywgICAyNTMsICAgMTcxLCAgIDI1NCwgICAxMDgsICAgMjIwLCAgICAgMiwg
ICAgIDMsICAgICA0LAotICAgICAyMTUsICAgMjM3LCAgIDIzOCwgICAyMzksICAgMjQwLCAgICA0
NCwgICAtMjUsICAgIDQ0LCAgICA3MCwgICAyODEsCi0gICAgICA3MCwgICAyOTgsICAgIDQ5LCAg
IDI1NywgICAyNTgsICAgMjMzLCAgIDIzNCwgICAxMDgsICAgMTA4LCAgIDEwOCwKLSAgICAgMTA4
LCAgIDEwOCwgICAxMDgsICAgMTA4LCAgIDEwOCwgICAxMDgsICAgMTA4LCAgIDEwOCwgICAyNTks
ICAgMjk3LAotICAgICAgNzQsICAgMTQ2LCAgICA1OSwgICAgNjAsICAgIDYxLCAgIDEyMSwgICAx
ODcsICAgMTg4LCAgIDIxNywgICAyNjIsCi0gICAgIDIzNSwgICAyMzYsICAgIDc2LCAgIDI3MCwg
ICAxMjYsICAgIDgzLCAgIDEyNCwgICAyNDEsICAgMjQyLCAgIDE1NiwKLSAgICAgLTI2LCAgIDE4
OSwgICAxOTAsICAgMTcyLCAgIDE3NywgICAyNjMsICAgMjcwLCAgIDEwOCwgICAxOTMsICAgMjc1
LAotICAgICAxOTUsICAgMjAzLCAgIDEyMSwgICAyMDAsICAgMjA5LCAgIDI4NiwgICAyMDEsICAg
MjA0LCAgIDIwNSwgICAyMDgsCi0gICAgIDIyMSwgICAyNjUsICAgMjgzLCAgIDIyNSwgICAgNDQs
ICAgMjk1LCAgIDI0OCwgIC0xMTYsICAgMjYwLCAgIC0yNywKLSAgICAgMjE3LCAgIDI2MSwgICAx
NDYsICAgMjc0LCAgIDEwOCwgICAyNzYsICAgMjc3LCAgIDE2MywgICAyODUsICAgMjg0LAotICAg
ICAxNDYsICAgICAyLCAgICAgMywgICAgIDQsICAgMjg3LCAgIDI4OCwgICAyODksICAgICA4LCAg
ICAgOSwgICAgMTAsCi0gICAgIDI5MCwgICAyMzEsICAgMjk5LCAgIDI0MywgICAyNDUsICAgMTU3
LCAgIDI0NCwgICAgNzgsICAgIDExLCAgICAxMiwKKyAgICAgMjE0LCAgIDI3MywgICAyNTUsICAg
MTcxLCAgIDIyMCwgICAxMDgsICAgMjk4LCAgIDIxNywgICAgNzQsICAgLTI1LAorICAgICAyMTUs
ICAgIDcwLCAgIDIxNywgICAxNzksICAgMTgwLCAgICA0NCwgICAgNzYsICAgIDQ0LCAgIDIzNywg
ICAyMzgsCisgICAgIDIzOSwgICAyNDAsICAgIDQ5LCAgIDI1OSwgICAyNjAsICAgMjMzLCAgIDIz
NCwgICAxMDgsICAgMTA4LCAgIDEwOCwKKyAgICAgMTA4LCAgIDEwOCwgICAxMDgsICAgMTA4LCAg
IDEwOCwgICAxMDgsICAgMTA4LCAgIDEwOCwgICAyNjEsICAgMzAyLAorICAgICAgODMsICAgMTQ2
LCAgICAgMiwgICAgIDMsICAgICA0LCAgIDEyMSwgICAgNTksICAgIDYwLCAgICA2MSwgICAxODcs
CisgICAgIDE4OCwgICAyMTcsICAgMjY0LCAgIDEyNCwgICAxMjYsICAgMjc0LCAgIDIzNSwgICAy
MzYsICAgMjQxLCAgIDI0MiwKKyAgICAgMTU2LCAgIC0yNiwgICAxODksICAgMTcyLCAgIDE5NSwg
ICAyNjUsICAgMTc3LCAgIDEwOCwgICAxOTAsICAgMjAwLAorICAgICAyNzQsICAgMjc5LCAgIDEy
MSwgICAxOTMsICAgMjAzLCAgIDIwMSwgICAyMDQsICAgMjA4LCAgIDIwNSwgICAyOTAsCisgICAg
IDIxNywgIC0xMTYsICAgMjIxLCAgIDIwOSwgICAgNDQsICAgMjI1LCAgIDI0OCwgIC0xNjQsICAg
MjY4LCAgIDI5OSwKKyAgICAgIDU4LCAgICAgMiwgICAgIDMsICAgICA0LCAgIDEwOCwgICAgIDYs
ICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLAorICAgICAxNDYsICAgMTYzLCAgIDI2MiwgICAy
NjMsICAgLTI3LCAgIDI2NywgICAyNzgsICAgMjgxLCAgICAxMSwgICAgMTIsCiAgICAgICAxMywg
ICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAg
ICAyMiwKLSAgICAgIDgyLCAgIDE1OCwgICAgNTEsICAgMjY0LCAgIDI2NiwgICAgMjUsICAgIDI2
LCAgIDI5NiwgICAgMjcsICAgIDI4LAotICAgICAgMjksICAgIDMwLCAgIDE0NiwgICAgMzEsICAg
MTk0LCAgIDE0NiwgICAxNDYsICAgIDc3LCAgIDI1NiwgICAgNzIsCi0gICAgICAgMCwgICAyNjcs
ICAgICAwLCAgIDI3OCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTQ2LCAgIDE0NiwK
KyAgICAgMjgwLCAgIDI4NywgICAyODgsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgIDI4
OSwgICAgMjcsICAgIDI4LAorICAgICAgMjksICAgIDMwLCAgICA4NywgICAgMzEsICAgIDg4LCAg
ICA4OSwgICAgOTAsICAgIDkxLCAgIDI5MSwgICAyOTIsCisgICAgICA5MiwgICAgOTMsICAgMjkz
LCAgIDE0NiwgICAxNDYsICAgMjk0LCAgIDIzMSwgICAxNDYsICAgMTQ2LCAgIDMwMywKKyAgICAg
MjQ0LCAgIDI0MywgICAxNTcsICAgIDc4LCAgIDI0NSwgICAgODIsICAgMTU4LCAgICA1MSwgICAx
OTQsICAgIDk0LAorICAgICAyNzAsICAgMjY2LCAgIDE0NiwgICAyNTgsICAgMjcxLCAgIDMwMCwg
ICAyODIsICAgIDcyLCAgICAgMCwgICAgIDAsCisgICAgICA5NSwgICAgOTYsICAgICAwLCAgICA5
NywgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTQ2LCAgICAgMCwKKyAgICAgICAwLCAg
ICAgMCwgICAxNDYsICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAg
ICA3LAorICAgICAgIDgsICAgICA5LCAgICAxMCwgICAxMjksICAgMTMwLCAgIDEzMSwgICAgIDAs
ICAgMTMyLCAgIDEzMywgICAxMzQsCisgICAgIDEzNSwgICAgMTEsICAgIDEyLCAgICAxMywgICAg
MTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwKKyAgICAgIDIwLCAgICAyMSwg
ICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LAor
ICAgICAxMzYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICA4NywgICAgMzEsICAgIDg4
LCAgICA4OSwgICAgOTAsCisgICAgICA5MSwgICAgIDAsICAgICAwLCAgICA5MiwgICAgOTMsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKICAgICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTQ2LCAgICAgMCwgICAgIDAsICAgICAwLCAgIDE0
NiwgICAxNDYsCi0gICAgICAgMSwgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAg
ICAgNywgICAgIDgsICAgICA5LCAgICAxMCwKLSAgICAgMTI5LCAgIDEzMCwgICAxMzEsICAgICAw
LCAgIDEzMiwgICAxMzMsICAgMTM0LCAgIDEzNSwgICAgMTEsICAgIDEyLAotICAgICAgMTMsICAg
IDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAg
MjIsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwg
ICAxMzYsICAgIDI3LCAgICAyOCwKLSAgICAgIDI5LCAgICAzMCwgICAgODcsICAgIDMxLCAgICA4
OCwgICAgODksICAgIDkwLCAgICA5MSwgICAgIDAsICAgICAwLAotICAgICAgOTIsICAgIDkzLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0g
ICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICA5NCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgMTM3LCAgIDEzOCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgMTM5LAotICAgICAgOTUsICAgIDk2LCAgICAgMCwg
ICAgOTcsICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsCi0gICAgICAg
NywgICAgIDgsICAgICA5LCAgICAxMCwgICAxMjksICAgMTMwLCAgIDEzMSwgICAgIDAsICAgMTMy
LCAgIDEzMywKLSAgICAgMTM0LCAgIDEzNSwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAg
IDE1LCAgICAxNiwgICAgMTcsICAgIDE4LAotICAgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgIDIzLCAgICAyNCwgICAgMjUsCi0gICAgICAyNiwgICAx
MzYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICA4NywgICAgMzEsICAgIDg4LCAgICA4
OSwKLSAgICAgIDkwLCAgICA5MSwgICAgIDAsICAgICAwLCAgICA5MiwgICAgOTMsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICA5NCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAxMzcsICAgMTM4LCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAg
MTM5LCAgICA5NSwgICAgOTYsICAgICAwLCAgICA5NywgICAgIDEsICAgICAyLCAgICAgMywKKyAg
ICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgIDEyOSwg
ICAxMzAsICAgMTMxLAorICAgICAgIDAsICAgMTMyLCAgIDEzMywgICAxMzQsICAgMTM1LCAgICAx
MSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsCisgICAgICAxNiwgICAgMTcsICAgIDE4LCAg
ICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgIDIz
LCAgICAyNCwgICAgMjUsICAgIDI2LCAgIDEzNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAs
ICAgIDg3LAorICAgICAgMzEsICAgIDg4LCAgICA4OSwgICAgOTAsICAgIDkxLCAgICAgMCwgICAg
IDAsICAgIDkyLCAgICA5MywgICAgIDAsCiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAg
MCwgICAgIDAsICAgIDk0LCAgICAgMCwgICAgIDAsICAgICAwLCAgIDEzNywgICAyMTksICAgICAw
LAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAxMzksICAgIDk1LCAgICA5NiwgICAgIDAsICAg
IDk3LCAgICAgMSwgICAgIDIsCi0gICAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcs
ICAgICA4LCAgICAgOSwgICAgMTAsICAgMTI5LCAgIDEzMCwKLSAgICAgMTMxLCAgICAgMCwgICAx
MzIsICAgMTMzLCAgIDEzNCwgICAxMzUsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LAotICAg
ICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAg
ICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgMTM2
LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwKLSAgICAgIDg3LCAgICAzMSwgICAgODgsICAg
IDg5LCAgICA5MCwgICAgOTEsICAgICAwLCAgICAgMCwgICAgOTIsICAgIDkzLAorICAgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTQsICAgICAwLCAgICAgMCwg
ICAgIDAsCisgICAgIDEzNywgICAyMTksICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDEz
OSwgICAgOTUsICAgIDk2LCAgICAgMCwKKyAgICAgIDk3LCAgICAgMSwgICAgIDIsICAgICAzLCAg
ICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LAorICAgICAgMTAsICAgMTI5
LCAgIDEzMCwgICAxMzEsICAgICAwLCAgIDEzMiwgICAxMzMsICAgMTM0LCAgIDEzNSwgICAgMTEs
CisgICAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAg
MTksICAgIDIwLCAgICAyMSwKKyAgICAgIDIyLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAyMywg
ICAgMjQsICAgIDI1LCAgICAyNiwgICAxMzYsICAgIDI3LAorICAgICAgMjgsICAgIDI5LCAgICAz
MCwgICAgODcsICAgIDMxLCAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAgIDAsCisgICAg
ICAgMCwgICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwKICAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk0LCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwg
ICAxMzcsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxMzksICAgIDk1LCAg
ICA5NiwKLSAgICAgICAwLCAgICA5NywgICAgIDEsICAgICAyLCAgICAgMywgICAgIDQsICAgICA1
LCAgICAgNiwgICAgIDcsICAgICA4LAotICAgICAgIDksICAgIDEwLCAgIDEyOSwgICAxMzAsICAg
MTMxLCAgICAgMCwgICAxMzIsICAgMTMzLCAgIDEzNCwgICAxMzUsCi0gICAgICAxMSwgICAgMTIs
ICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwK
LSAgICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMjMsICAgIDI0LCAgICAy
NSwgICAgMjYsICAgMTM2LAotICAgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDg3LCAg
ICAzMSwgICAgODgsICAgIDg5LCAgICA5MCwgICAgOTEsCi0gICAgICAgMCwgICAgIDAsICAgIDky
LCAgICA5MywgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAg
IDk0LCAgICAgMCwgICAgIDAsICAgICAwLCAgIDEzNywgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLAorICAgICAxMzksICAgIDk1LCAgICA5NiwgICAgIDAsICAgIDk3LCAgICAgMSwg
ICAgIDIsICAgICAzLCAgICAgNCwgICAgIDUsCisgICAgICAgNiwgICAgIDcsICAgICA4LCAgICAg
OSwgICAgMTAsICAgMTI5LCAgIDEzMCwgICAxMzEsICAgICAwLCAgIDEzMiwKKyAgICAgMTMzLCAg
IDEzNCwgICAxMzUsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAg
IDE3LAorICAgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAyMywgICAgMjQsCisgICAgICAyNSwgICAgMjYsICAgMTM2LCAgICAyNywgICAg
MjgsICAgIDI5LCAgICAzMCwgICAgODcsICAgIDMxLCAgICA4OCwKKyAgICAgIDg5LCAgICA5MCwg
ICAgOTEsICAgICAwLCAgICAgMCwgICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAgICAwLAog
ICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgOTQsICAgICAwLCAgICAgMCwgICAgIDAsICAg
IDc2LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgIDEzOSwgICAgOTUs
ICAgIDk2LCAgICAgMCwgICAgOTcsICAgICAxLCAgICAgMiwgICAgIDMsICAgICA0LAotICAgICAg
IDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTEsICAgIDEyLCAg
ICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwKLSAgICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIw
LCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDIzLAotICAgICAgMjQsICAg
IDI1LCAgICAyNiwgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICA4NywgICAg
MzEsCi0gICAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAgIDAsICAgICAwLCAgICA5Miwg
ICAgOTMsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5
NCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgNzYsICAgICAwLAorICAgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgMTM5LCAgICA5NSwgICAgOTYsICAgICAwLCAgICA5NywgICAgIDEsCisg
ICAgICAgMiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDks
ICAgIDEwLCAgIDEyOSwKKyAgICAgMTMwLCAgIDEzMSwgICAgIDAsICAgMTMyLCAgIDEzMywgICAx
MzQsICAgMTM1LCAgICAxMSwgICAgMTIsICAgIDEzLAorICAgICAgMTQsICAgIDE1LCAgICAxNiwg
ICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsCisgICAgICAg
MCwgICAgIDAsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgIDEzNiwgICAgMjcsICAgIDI4
LCAgICAyOSwKKyAgICAgIDMwLCAgICA4NywgICAgMzEsICAgIDg4LCAgICA4OSwgICAgOTAsICAg
IDkxLCAgICAgMCwgICAgIDAsICAgIDkyLAorICAgICAgOTMsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk0LCAgICAg
MCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAxMzksICAgIDk1LAorICAgICAgOTYsICAgICAwLCAgICA5NywgICAgIDEsICAgICAy
LCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsCisgICAgICAgOCwgICAgIDksICAg
IDEwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAg
ICAgICAwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywg
ICAgMTgsICAgIDE5LAorICAgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsCisgICAgICAgMCwgICAgMjcsICAgIDI4LCAg
ICAyOSwgICAgMzAsICAgIDg3LCAgICAzMSwgICAgODgsICAgIDg5LCAgICA5MCwKKyAgICAgIDkx
LCAgICAgMCwgICAgIDAsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLAogICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgIDk0LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAxMzksICAgIDk1LCAgICA5NiwgICAgIDAsICAgIDk3
LAotICAgICAgNTgsICAgICAyLCAgICAgMywgICAgIDQsICAgICAwLCAgICAgNiwgICAgIDcsICAg
ICA4LCAgICAgOSwgICAgMTAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgIDExLCAgICAxMiwKLSAgICAgIDEzLCAgICAxNCwgICAg
MTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLAotICAg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgICAwLCAg
ICAyNywgICAgMjgsCi0gICAgICAyOSwgICAgMzAsICAgIDg3LCAgICAzMSwgICAgODgsICAgIDg5
LCAgICA5MCwgICAgOTEsICAgICAwLCAgICAgMCwKLSAgICAgIDkyLCAgICA5MywgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLAotICAgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgOTQsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgOCwgICAgIDksICAgIDEwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgIDk1LCAgICA5NiwgICAgIDAsICAgIDk3LCAg
ICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LAotICAgICAgMTcsICAgIDE4
LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
Ci0gICAgICAgMCwgICAgMjUsICAgIDI2LCAgICAgMCwgICAgMjcsICAgIDI4LCAgICAyOSwgICAg
MzAsICAgIDg3LCAgICAzMSwKLSAgICAgIDg4LCAgICA4OSwgICAgOTAsICAgIDkxLCAgICAgMCwg
ICAgIDAsICAgIDkyLCAgICA5MywgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICA5
NCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsCisgICAg
ICAgMCwgICAgIDAsICAgMTM5LCAgICA5NSwgICAgOTYsICAgICAwLCAgICA5NywgICAgMTEsICAg
IDEyLCAgICAxMywKKyAgICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTks
ICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgIDI1LCAgICAyNiwgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksCisgICAgICAzMCwg
ICAgODcsICAgIDMxLCAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAgIDAsICAgICAwLCAg
ICA5MiwKKyAgICAgIDkzLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NCwgICAgIDAsCisgICAgICAgMCwgICAxNjEs
ICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NSwK
KyAgICAgIDk2LCAgICAgMCwgICAgOTcsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAx
NSwgICAgMTYsICAgIDE3LAorICAgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAyNSwgICAgMjYsICAgICAw
LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgODcsICAgIDMxLCAgICA4OCwKKyAgICAg
IDg5LCAgICA5MCwgICAgOTEsICAgICAwLCAgICAgMCwgICAgOTIsICAgIDkzLCAgICAgMCwgICAg
IDAsICAgICAwLAogICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgIDk0LCAgICAgMCwgICAgIDAsICAgMTYxLCAgICAgOCwKLSAgICAgICA5LCAg
ICAxMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk1LCAgICA5NiwgICAgIDAsICAg
IDk3LAotICAgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcs
ICAgIDE4LCAgICAxOSwgICAgMjAsCi0gICAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgMjUsICAgIDI2LCAgICAgMCwKLSAgICAgIDI3LCAgICAyOCwg
ICAgMjksICAgIDMwLCAgICA4NywgICAgMzEsICAgIDg4LCAgICA4OSwgICAgOTAsICAgIDkxLAot
ICAgICAgIDAsICAgICAwLCAgICA5MiwgICAgOTMsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTQsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICA4LCAgICAgOSwKKyAgICAgIDEwLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgIDIwNiwgICAgOTUsICAgIDk2LCAgICAgMCwgICAgOTcsICAgIDExLAorICAgICAg
MTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAy
MCwgICAgMjEsCisgICAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAyNSwgICAgMjYsICAgICAwLCAgICAyNywKKyAgICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDg3
LCAgICAzMSwgICAgODgsICAgIDg5LCAgICA5MCwgICAgOTEsICAgICAwLAorICAgICAgIDAsICAg
IDkyLCAgICA5MywgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsCiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICA5NCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsICAgICAwLAotICAgICAgIDAsICAgMjA2LCAg
ICA5NSwgICAgOTYsICAgICAwLCAgICA5NywgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsCi0g
ICAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIs
ICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LCAgICAyNiwgICAg
IDAsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLAotICAgICAgODcsICAgIDMxLCAgICA4OCwg
ICAgODksICAgIDkwLCAgICA5MSwgICAgIDAsICAgICAwLCAgICA5MiwgICAgOTMsCisgICAgICA5
NCwgICAgIDAsICAgICAwLCAgIDIyMiwgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsICAgICAw
LCAgICAgMCwKKyAgICAgICAwLCAgICA5NSwgICAgOTYsICAgICAwLCAgICA5NywgICAgMTEsICAg
IDEyLCAgICAxMywgICAgMTQsICAgIDE1LAorICAgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTks
ICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAg
IDAsICAgIDI1LCAgICAyNiwgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICA4
NywKKyAgICAgIDMxLCAgICA4OCwgICAgODksICAgIDkwLCAgICA5MSwgICAgIDAsICAgICAwLCAg
ICA5MiwgICAgOTMsICAgICAwLAogICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCi0gICAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgOTQsICAgICAwLCAgICAgMCwKLSAg
ICAgMjIyLCAgICAgOCwgICAgIDksICAgIDEwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgOTUsICAgIDk2LAotICAgICAgIDAsICAgIDk3LCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAx
NCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsCi0gICAgICAxOSwgICAgMjAsICAgIDIxLCAg
ICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAyNSwKLSAgICAgIDI2
LCAgICAgMCwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDg3LCAgICAzMSwgICAgODgs
ICAgIDg5LAotICAgICAgOTAsICAgIDkxLCAgICAgMCwgICAgIDAsICAgIDkyLCAgICA5MywgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICA5NCwgICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICA4LCAgICAg
OSwgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICA5NSwgICAgOTYsICAgICAw
LAorICAgICAgOTcsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAg
IDE3LCAgICAxOCwgICAgMTksCisgICAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LCAgIDE3NSwKKyAgICAgICAwLCAgICAyNywgICAg
MjgsICAgIDI5LCAgICAzMCwgICAgODcsICAgIDMxLCAgICA4OCwgICAgODksICAgIDkwLAorICAg
ICAgOTEsICAgICAwLCAgICAgMCwgICAgOTIsICAgIDkzLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsCiAgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAg
IDk0LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgOCwgICAgIDksICAgIDEwLAotICAgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk1LCAgICA5NiwgICAgIDAsICAgIDk3LCAgICAxMSwg
ICAgMTIsCi0gICAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsICAgIDE4LCAgICAx
OSwgICAgMjAsICAgIDIxLCAgICAyMiwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgMjUsICAgMTc1LCAgICAgMCwgICAgMjcsICAgIDI4LAotICAgICAgMjksICAgIDMw
LCAgICA4NywgICAgMzEsICAgIDg4LCAgICA4OSwgICAgOTAsICAgIDkxLCAgICAgMCwgICAgIDAs
Ci0gICAgICA5MiwgICAgOTMsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDk0LAorICAgICAgIDAsICAgICAwLCAgICA5
NCwgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDgsCisgICAg
ICAgOSwgICAgMTAsICAgICAwLCAgICA5NSwgICAgOTYsICAgICAwLCAgICA5NywgICAgIDAsICAg
ICAwLCAgICAgMCwKKyAgICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYs
ICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLAorICAgICAgMjEsICAgIDIyLCAgICAgMCwgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LCAgICAyNiwgICAgIDAsCisgICAgICAyNywg
ICAgMjgsICAgIDI5LCAgICAzMCwgICAgIDAsICAgIDMxLCAgICAgMiwgICAgIDMsICAgICA0LCAg
ICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTEsICAg
IDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwgICAgMTcsCisgICAgICAxOCwgICAgMTks
ICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgIDE5OCwgICAgIDAsICAgICAwLCAgICAgMCwK
KyAgICAgIDI1LCAgICAyNiwgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAg
MCwgICAgMzEsICAgICAwLAorICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgNzEsCisgICAgICAgMCwgICAgIDAsICAgICAx
LCAgICAgMiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwKKyAgICAg
ICA5LCAgICAxMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgMjQ3LAorICAgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwg
ICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsCisgICAgICAyMSwgICAgMjIsICAgICAwLCAgICAg
MCwgICAgIDAsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAgMCwKKyAgICAgIDI3LCAg
ICAyOCwgICAgMjksICAgIDMwLCAgICAgMCwgICAgMzEsICAgICAxLCAgICAgMiwgICAgIDMsICAg
ICA0LAorICAgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAs
ICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
MTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwKKyAgICAgIDE3LCAgICAxOCwg
ICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDIzLAor
ICAgICAgMjQsICAgIDI1LCAgICAyNiwgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMw
LCAgICAgMCwgICAgMzEsCiAgICAgICAgMiwgICAgIDMsICAgICA0LCAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgOCwgICAgIDksICAgIDEwLCAgICAgMCwKLSAgICAgIDk1LCAgICA5NiwgICAgIDAs
ICAgIDk3LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAxMSwgICAgMTIsICAgIDEzLAorICAgICAg
IDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDExLCAgICAx
MiwgICAgMTMsCiAgICAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAg
ICAyMCwgICAgMjEsICAgIDIyLCAgICAgMCwKICAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAyNSwgICAgMjYsICAgICAwLCAgICAyNywgICAgMjgsICAgIDI5LAotICAgICAgMzAsICAg
ICAwLCAgICAzMSwgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDgsCi0gICAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAx
NSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLAotICAgICAgMjEsICAgIDIyLCAg
ICAgMCwgICAxOTgsICAgICAwLCAgICAgMCwgICAgIDAsICAgIDI1LCAgICAyNiwgICAgIDAsCi0g
ICAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgIDAsICAgIDMxLCAgICAgMCwgICAgIDAs
ICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
IDAsICAgIDcxLCAgICAgMCwgICAgIDAsICAgICAxLAotICAgICAgIDIsICAgICAzLCAgICAgNCwg
ICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAgIDAsCi0gICAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgIDI0NywgICAgMTEsICAgIDEy
LCAgICAxMywKLSAgICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAg
IDIwLCAgICAyMSwgICAgMjIsICAgICAwLAotICAgICAgIDAsICAgICAwLCAgICAyMywgICAgMjQs
ICAgIDI1LCAgICAyNiwgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksCi0gICAgICAzMCwgICAg
IDAsICAgIDMxLCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAg
NywKLSAgICAgICA4LCAgICAgOSwgICAgMTAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgICAwLAorICAgICAgMzAsICAgICAwLCAgICAzMSwgICAgIDgsICAgICA5
LCAgICAxMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsCisgICAgICAgMCwgICAgIDAsICAg
ICAwLCAgICAgMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAxNiwKKyAg
ICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLAorICAgICAgIDAsICAgIDI1LCAgICAyNiwgICAgIDAsICAgIDI3LCAgICAy
OCwgICAgMjksICAgIDMwLCAgIDIyOSwgICAgMzEsCisgICAgICAgOCwgICAgIDksICAgIDEwLCAg
IDIzMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwKICAgICAgICAw
LCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgs
ICAgIDE5LAotICAgICAgMjAsICAgIDIxLCAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwgICAg
MjMsICAgIDI0LCAgICAyNSwgICAgMjYsCi0gICAgICAgMCwgICAgMjcsICAgIDI4LCAgICAyOSwg
ICAgMzAsICAgICAwLCAgICAzMSwgICAgIDgsICAgICA5LCAgICAxMCwKLSAgICAgICAwLCAgICAg
MCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTEsICAgIDEy
LAotICAgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsICAgIDE3LCAgICAxOCwgICAgMTksICAg
IDIwLCAgICAyMSwgICAgMjIsCi0gICAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAs
ICAgIDI1LCAgICAyNiwgICAgIDAsICAgIDI3LCAgICAyOCwKLSAgICAgIDI5LCAgICAzMCwgICAy
MjksICAgIDMxLCAgICAgOCwgICAgIDksICAgIDEwLCAgIDIzMCwgICAgIDAsICAgICAwLAotICAg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAxMSwgICAgMTIsICAgIDEzLCAg
ICAxNCwgICAgMTUsCi0gICAgICAxNiwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIx
LCAgICAyMiwgICAgIDAsICAgICAwLCAgICAgMCwKLSAgICAgICAwLCAgICAgMCwgICAgMjUsICAg
IDI2LCAgICAgMCwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgICAwLAotICAgICAgMzEK
KyAgICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgMjUsICAgIDI2LAorICAgICAgIDAsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAg
ICAgMCwgICAgMzEKIH07CiAKIHN0YXRpYyBjb25zdCB5eXR5cGVfaW50MTYgeXljaGVja1tdID0K
IHsKLSAgICAgICAwLCAgIDE2MCwgICAgOTQsICAgIDg2LCAgICA3MCwgICAxMjcsICAgIDQ1LCAg
ICAgMCwgICAyNTUsICAgIDYwLAotICAgICAgNDAsICAgMTUxLCAgICA4NSwgICAgIDAsICAgIDM2
LCAgICA3NCwgICAgNzIsICAgIDgyLCAgICA3NCwgICAgODUsCi0gICAgICAzNywgICAyNjgsICAg
IDgxLCAgIDEwNiwgICAgIDMsICAgIDgxLCAgICA3MCwgICAgNDIsICAgIDQ1LCAgICAgOCwKLSAg
ICAgICA5LCAgICA1NSwgICAgNTYsICAgIDYzLCAgIDI4NCwgICAgNTcsICAgIDUxLCAgICA3Niwg
ICAyODgsICAgIDczLAotICAgICAgNDAsICAgIDg1LCAgICA0MiwgICAxMzUsICAgIDk1LCAgICA3
NSwgICAgNDYsICAgIDc5LCAgICA5MiwgICAgOTMsCi0gICAgICA4MiwgICAgNTEsICAgIDgyLCAg
ICA0NiwgICAgMzMsICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3LCAgICA0NiwKLSAgICAgIDg3
LCAgICA4OCwgICAyMDIsICAgIDYzLCAgICA3MywgICAxMDksICAgIDkwLCAgICA5MSwgICAgNzks
ICAgIDc5LAotICAgICAgNzksICAgIDgyLCAgIDE5NCwgICAgNDUsICAgICAzLCAgICA3NSwgICAg
NzYsICAgMTYwLCAgIDE3MCwgICAgIDgsCi0gICAgICAgOSwgICAgNzMsICAgIDgyLCAgICA4NCwg
ICAgNzMsICAgIDg2LCAgIDE1OSwgICAgNzksICAgIDUzLCAgICA1NCwKLSAgICAgIDc5LCAgIDE3
NCwgICAgNzMsICAgMTU5LCAgICA3MywgICAxMjUsICAgIDc5LCAgIDEyNywgICAgNzksICAgIDgy
LAorICAgICAgIDAsICAgIDU1LCAgICA5NCwgICAgODYsICAgIDcwLCAgIDEyNywgICAgNDUsICAg
MTUxLCAgIDI3MywgICAgNjAsCisgICAgICA0MCwgICAgMzYsICAgIDg1LCAgICAgMCwgICAgIDAs
ICAgMTYwLCAgIDI1NywgICAgMzcsICAgIDc5LCAgICA4NSwKKyAgICAgIDg0LCAgICA4MiwgICAg
ODYsICAgMTA2LCAgICAgMywgICAgNDUsICAgIDcwLCAgIDI1MywgICAyOTMsICAgICA4LAorICAg
ICAgIDksICAgMjcyLCAgICA1NywgICAgNjMsICAgIDU1LCAgICA1NiwgICAgNzksICAgIDc2LCAg
ICA0MiwgICAgODIsCisgICAgICA0MCwgICAgODUsICAgIDQyLCAgIDEzNSwgICAgOTUsICAgIDc1
LCAgICA0NiwgICAgNTEsICAgIDkyLCAgICA5MywKKyAgICAgIDc5LCAgICA1MSwgICAgODIsICAg
IDgyLCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDQ2LAorICAgICAgNDYs
ICAgIDc0LCAgIDI4OCwgICAgNjMsICAgIDgyLCAgIDEwOSwgICAyOTIsICAgIDczLCAgICA4MSwg
ICAgOTAsCisgICAgICA5MSwgICAgNzMsICAgMTk0LCAgICA3OSwgICAgIDMsICAgIDc1LCAgICA3
NiwgICAxNjAsICAgMTcwLCAgICAgOCwKKyAgICAgICA5LCAgICA3MiwgICAgODIsICAgIDc0LCAg
ICA3OSwgICAgNzksICAgMTU5LCAgICA4MiwgICAgNTMsICAgIDU0LAorICAgICAgODEsICAgMTc0
LCAgICA3MywgICAxNTksICAgIDczLCAgIDEyNSwgICAgNDUsICAgMTI3LCAgICA3OSwgICAgNzQs
CiAgICAgIDE5MiwgICAgNjIsICAgIDYzLCAgICA2NCwgICAgMzMsICAgIDM0LCAgICAzNSwgICAg
MzYsICAgIDM3LCAgICA3NCwKLSAgICAgIDcxLCAgICA3OSwgICAyMDQsICAgIDc4LCAgICA4Miwg
ICAxNTksICAgMjU2LCAgICAgNCwgICAgIDUsICAgICA2LAotICAgICAgODEsICAgMTgzLCAgIDE4
NCwgICAxODUsICAgMTg2LCAgIDEyNSwgICAgNzIsICAgMTI3LCAgICA3NCwgICAyNjksCi0gICAg
ICA3NCwgICAyOTAsICAgIDM3LCAgIDIxNiwgICAyMTcsICAgMTc5LCAgIDE4MCwgICAxODEsICAg
MTgyLCAgIDE4MywKLSAgICAgMTg0LCAgIDE4NSwgICAxODYsICAgMTg3LCAgIDE4OCwgICAxODks
ICAgMTkwLCAgIDE5MSwgICAyMjEsICAgMjg5LAotICAgICAgNzYsICAgMTUxLCAgICAzMywgICAg
MzQsICAgIDM1LCAgIDIyMSwgICAgNTcsICAgIDU4LCAgICA3OSwgICAgODAsCi0gICAgIDE4MSwg
ICAxODIsICAgIDc2LCAgIDI1NSwgICAxOTQsICAgIDQ1LCAgICA4MiwgICAxODcsICAgMTg4LCAg
ICA0NSwKLSAgICAgIDcyLCAgICA1OSwgICAgNjEsICAgIDczLCAgICA3MiwgICAyNDgsICAgMjY4
LCAgIDIyMSwgICAgNzUsICAgMjYyLAotICAgICAgNDUsICAgIDcyLCAgIDI0OCwgICAgODIsICAg
IDc3LCAgIDI3NywgICAgODIsICAgIDcyLCAgICA4MiwgICAgNzIsCi0gICAgICA3NCwgICAgNDAs
ICAgIDQ1LCAgICA3NSwgICAxOTQsICAgMjg3LCAgICA3NCwgICAgNzIsICAgIDc1LCAgICA3MiwK
LSAgICAgIDc5LCAgICA3NSwgICAyMDIsICAgIDc1LCAgIDI0OCwgICAgNzUsICAgIDcyLCAgIDI5
MCwgICAgNzcsICAgIDczLAotICAgICAyMTAsICAgICA0LCAgICAgNSwgICAgIDYsICAgIDgyLCAg
ICA3MywgICAgMTYsICAgIDEwLCAgICAxMSwgICAgMTIsCi0gICAgICA4MSwgICAxNzEsICAgIDgy
LCAgIDE4OSwgICAxOTEsICAgIDgyLCAgIDE5MCwgICAgNTcsICAgIDIxLCAgICAyMiwKKyAgICAg
IDcxLCAgICA3MywgICAyMDQsICAgIDc4LCAgIDI1OCwgICAxNTksICAgIDczLCAgICA3OSwgICAg
NzYsICAgIDcyLAorICAgICAgODEsICAgIDc0LCAgICA3OSwgICAgODcsICAgIDg4LCAgIDEyNSwg
ICAgNzYsICAgMTI3LCAgIDE4MywgICAxODQsCisgICAgIDE4NSwgICAxODYsICAgIDM3LCAgIDIx
NiwgICAyMTcsICAgMTc5LCAgIDE4MCwgICAxODEsICAgMTgyLCAgIDE4MywKKyAgICAgMTg0LCAg
IDE4NSwgICAxODYsICAgMTg3LCAgIDE4OCwgICAxODksICAgMTkwLCAgIDE5MSwgICAyMjEsICAg
Mjk0LAorICAgICAgNDUsICAgMTUxLCAgICAgNCwgICAgIDUsICAgICA2LCAgIDIyMSwgICAgMzMs
ICAgIDM0LCAgICAzNSwgICAgNTcsCisgICAgICA1OCwgICAgNzksICAgIDgwLCAgICA4MiwgICAx
OTQsICAgMjU3LCAgIDE4MSwgICAxODIsICAgMTg3LCAgIDE4OCwKKyAgICAgIDQ1LCAgICA3Miwg
ICAgNTksICAgIDczLCAgICA0NSwgICAyNDgsICAgIDcyLCAgIDIyMSwgICAgNjEsICAgIDgyLAor
ICAgICAyNzIsICAgMjY0LCAgIDI0OCwgICAgNzUsICAgIDcyLCAgICA4MiwgICAgNzIsICAgIDcy
LCAgICA4MiwgICAyODEsCisgICAgICA3OSwgICAgNzIsICAgIDc0LCAgICA3NywgICAxOTQsICAg
IDc1LCAgICA3NCwgICAgNzYsICAgMjUyLCAgIDI5MSwKKyAgICAgICAzLCAgICAgNCwgICAgIDUs
ICAgICA2LCAgIDI0OCwgICAgIDgsICAgICA5LCAgICAxMCwgICAgMTEsICAgIDEyLAorICAgICAy
MTAsICAgMjk0LCAgICA3NSwgICAgNzUsICAgIDcyLCAgICA0MCwgICAgNzUsICAgIDcyLCAgICAy
MSwgICAgMjIsCiAgICAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAg
ICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwKLSAgICAgIDY0LCAgICA4MiwgICAgIDUsICAgMjQ5
LCAgIDI1MiwgICAgMzgsICAgIDM5LCAgIDI4OCwgICAgNDEsICAgIDQyLAotICAgICAgNDMsICAg
IDQ0LCAgIDI1MiwgICAgNDYsICAgMTI1LCAgIDI1NSwgICAyNTYsICAgIDU1LCAgIDIxMCwgICAg
NDYsCi0gICAgICAtMSwgICAyNTIsICAgIC0xLCAgIDI2OCwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgMjY4LCAgIDI2OSwKKyAgICAgIDc1LCAgICA0NSwgICAgNzMsICAgIDM2LCAgICAz
NywgICAgMzgsICAgIDM5LCAgICA3NywgICAgNDEsICAgIDQyLAorICAgICAgNDMsICAgIDQ0LCAg
ICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAgICA4MiwgICAgNzMsCisg
ICAgICA1MywgICAgNTQsICAgIDE2LCAgIDI1MywgICAyNTQsICAgIDgxLCAgIDE3MSwgICAyNTcs
ICAgMjU4LCAgICA4MiwKKyAgICAgMTkwLCAgIDE4OSwgICAgODIsICAgIDU3LCAgIDE5MSwgICAg
NjQsICAgIDgyLCAgICAgNSwgICAxMjUsICAgIDcyLAorICAgICAyNTQsICAgMjQ5LCAgIDI3Miwg
ICAyMTAsICAgMjU0LCAgIDI5MiwgICAyNzIsICAgIDQ2LCAgICAtMSwgICAgLTEsCisgICAgICA4
MywgICAgODQsICAgIC0xLCAgICA4NiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgMjg4
LCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAyOTIsICAgICAzLCAgICAgNCwgICAgIDUsICAg
ICA2LCAgICAgNywgICAgIDgsICAgICA5LAorICAgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMs
ICAgIDE0LCAgICAxNSwgICAgLTEsICAgIDE3LCAgICAxOCwgICAgMTksCisgICAgICAyMCwgICAg
MjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAy
OSwKKyAgICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM2LCAg
ICAzNywgICAgMzgsICAgIDM5LAorICAgICAgNDAsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0
LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDksCisgICAgICA1MCwgICAgLTEsICAg
IC0xLCAgICA1MywgICAgNTQsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKICAg
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgMjg0LCAgICAt
MSwgICAgLTEsICAgIC0xLCAgIDI4OCwgICAyODksCi0gICAgICAgMywgICAgIDQsICAgICA1LCAg
ICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwKLSAgICAgIDEz
LCAgICAxNCwgICAgMTUsICAgIC0xLCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEs
ICAgIDIyLAotICAgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAg
MjksICAgIDMwLCAgICAzMSwgICAgMzIsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzNiwg
ICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0MiwKLSAgICAgIDQzLCAgICA0
NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgLTEsICAgIC0x
LAotICAgICAgNTMsICAgIDU0LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA3MiwKLSAgICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIDc2LCAgICA3NywgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgyLAotICAg
ICAgODMsICAgIDg0LCAgICAtMSwgICAgODYsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAg
ICAgNywgICAgIDgsCi0gICAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0
LCAgICAxNSwgICAgLTEsICAgIDE3LCAgICAxOCwKLSAgICAgIDE5LCAgICAyMCwgICAgMjEsICAg
IDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LAotICAgICAgMjks
ICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM2LCAgICAzNywg
ICAgMzgsCi0gICAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0
NSwgICAgNDYsICAgIDQ3LCAgICA0OCwKLSAgICAgIDQ5LCAgICA1MCwgICAgLTEsICAgIC0xLCAg
ICA1MywgICAgNTQsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIC0x
LCAgICA3MiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzYsICAgIDc3LCAgICAtMSwgICAgLTEs
CisgICAgICAtMSwgICAgLTEsICAgIDgyLCAgICA4MywgICAgODQsICAgIC0xLCAgICA4NiwgICAg
IDMsICAgICA0LCAgICAgNSwKKyAgICAgICA2LCAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwg
ICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LAorICAgICAgLTEsICAgIDE3LCAgICAx
OCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsCisgICAg
ICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsICAg
IC0xLCAgICAtMSwKKyAgICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEs
ICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1LAorICAgICAgNDYsICAgIDQ3LCAgICA0OCwgICAg
NDksICAgIDUwLCAgICAtMSwgICAgLTEsICAgIDUzLCAgICA1NCwgICAgLTEsCiAgICAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcyLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICA3NiwgICAgNzcsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgODIsICAg
IDgzLCAgICA4NCwgICAgLTEsICAgIDg2LCAgICAgMywgICAgIDQsCi0gICAgICAgNSwgICAgIDYs
ICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwK
LSAgICAgIDE1LCAgICAtMSwgICAgMTcsICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAy
MiwgICAgMjMsICAgIDI0LAotICAgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAg
ICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgMzYsICAgIDM3
LCAgICAzOCwgICAgMzksICAgIDQwLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwKLSAgICAg
IDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIC0xLCAgICAtMSwgICAg
NTMsICAgIDU0LAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgNzIsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICA3NiwgICAgNzcsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICA4MiwgICAgODMsICAgIDg0LCAgICAtMSwKKyAgICAgIDg2LCAg
ICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAg
IDExLAorICAgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIC0xLCAgICAxNywgICAgMTgs
ICAgIDE5LCAgICAyMCwgICAgMjEsCisgICAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAg
MjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwKKyAgICAgIDMyLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLAor
ICAgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5
LCAgICA1MCwgICAgLTEsCisgICAgICAtMSwgICAgNTMsICAgIDU0LCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKICAgICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAotICAgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcyLCAgICAt
MSwgICAgLTEsCi0gICAgICAtMSwgICAgNzYsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgODIsICAgIDgzLCAgICA4NCwKLSAgICAgIC0xLCAgICA4NiwgICAgIDMsICAgICA0
LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgIDEwLAotICAgICAgMTEsICAg
IDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAtMSwgICAgMTcsICAgIDE4LCAgICAxOSwgICAg
MjAsCi0gICAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywg
ICAgMjgsICAgIDI5LCAgICAzMCwKLSAgICAgIDMxLCAgICAzMiwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAgIDQwLAotICAgICAgNDEsICAgIDQyLCAg
ICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsCi0g
ICAgICAtMSwgICAgLTEsICAgIDUzLCAgICA1NCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwKKyAgICAgIDcyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA3NiwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgODIsICAgIDgzLCAgICA4NCwg
ICAgLTEsICAgIDg2LCAgICAgMywgICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsCisgICAgICAg
OCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIC0x
LCAgICAxNywKKyAgICAgIDE4LCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAyMiwgICAgMjMsICAg
IDI0LCAgICAyNSwgICAgMjYsICAgIDI3LAorICAgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEs
ICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzNiwgICAgMzcsCisgICAgICAzOCwgICAg
MzksICAgIDQwLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0
NywKKyAgICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIC0xLCAgICAtMSwgICAgNTMsICAgIDU0LCAg
ICAtMSwgICAgLTEsICAgIC0xLAogICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgNzIsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIDc2LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAg
ICAgIC0xLCAgICA4MiwgICAgODMsICAgIDg0LCAgICAtMSwgICAgODYsICAgICAzLCAgICAgNCwg
ICAgIDUsICAgICA2LAotICAgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAx
MiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwKLSAgICAgIDI3
LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEs
ICAgIDM2LAotICAgICAgMzcsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAg
NDMsICAgIDQ0LCAgICA0NSwgICAgNDYsCi0gICAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwg
ICAgLTEsICAgIC0xLCAgICA1MywgICAgNTQsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICA3MiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzYsICAgIC0x
LAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgyLCAgICA4MywgICAgODQsICAg
IC0xLCAgICA4NiwgICAgIDMsCisgICAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgs
ICAgICA5LCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAxMywKKyAgICAgIDE0LCAgICAxNSwgICAg
LTEsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLAorICAg
ICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAg
ICAzMiwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5
LCAgICA0MCwgICAgNDEsICAgIDQyLCAgICA0MywKKyAgICAgIDQ0LCAgICA0NSwgICAgNDYsICAg
IDQ3LCAgICA0OCwgICAgNDksICAgIDUwLCAgICAtMSwgICAgLTEsICAgIDUzLAorICAgICAgNTQs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIDcyLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgODIsICAgIDgzLAorICAgICAgODQsICAgIC0x
LCAgICA4NiwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDks
CisgICAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwg
ICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LAorICAgICAgMzAsICAgIDMxLCAgICAz
MiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksCisgICAg
ICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAg
IDQ4LCAgICA0OSwKKyAgICAgIDUwLCAgICAtMSwgICAgLTEsICAgIDUzLCAgICA1NCwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAogICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcyLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgODIsICAgIDgz
LCAgICA4NCwgICAgLTEsICAgIDg2LAotICAgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAg
IC0xLCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsCi0gICAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDIxLCAgICAyMiwK
LSAgICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAz
MCwgICAgMzEsICAgIDMyLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzYsICAgIDM3LCAg
ICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwgICAgNDIsCi0gICAgICA0MywgICAgNDQsICAgIDQ1
LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIC0xLCAgICAtMSwKLSAgICAg
IDUzLCAgICA1NCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgNzIsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAx
MCwgICAgMTEsICAgIDEyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIDgzLCAg
ICA4NCwgICAgLTEsICAgIDg2LCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAg
IDI2LAotICAgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAtMSwgICAgMzgsICAgIDM5LCAgICAtMSwgICAg
NDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwKLSAgICAgIDQ3LCAgICA0OCwg
ICAgNDksICAgIDUwLCAgICAtMSwgICAgLTEsICAgIDUzLCAgICA1NCwgICAgLTEsICAgIC0xLAor
ICAgICAgLTEsICAgIC0xLCAgICA3MiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMTAsICAgIDEx
LCAgICAxMiwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIDgyLCAgICA4MywgICAgODQsICAg
IC0xLCAgICA4NiwgICAgMjEsICAgIDIyLCAgICAyMywKKyAgICAgIDI0LCAgICAyNSwgICAgMjYs
ICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLAorICAgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0
MiwgICAgNDMsCisgICAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAg
ICA1MCwgICAgLTEsICAgIC0xLCAgICA1MywKKyAgICAgIDU0LCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA3MiwgICAg
LTEsCisgICAgICAtMSwgICAgNzUsICAgIDEwLCAgICAxMSwgICAgMTIsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICA4MywKKyAgICAgIDg0LCAgICAtMSwgICAgODYsICAgIDIxLCAgICAy
MiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LAorICAgICAgMjgsICAgIDI5LCAg
ICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisg
ICAgICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUs
ICAgIDQ2LCAgICA0NywKKyAgICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIC0xLCAgICAtMSwgICAg
NTMsICAgIDU0LCAgICAtMSwgICAgLTEsICAgIC0xLAogICAgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCi0gICAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcyLCAgICAtMSwgICAgLTEsICAgIDc1
LCAgICAxMCwKLSAgICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IDgzLCAgICA4NCwgICAgLTEsICAgIDg2LAotICAgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQs
ICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsCi0gICAgICAzMSwgICAg
MzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDM5LCAgICAt
MSwKLSAgICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAg
ICA0OCwgICAgNDksICAgIDUwLAotICAgICAgLTEsICAgIC0xLCAgICA1MywgICAgNTQsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgNzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDEwLCAgICAxMSwKKyAg
ICAgIDEyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA4MiwgICAgODMsICAgIDg0LCAgICAtMSwg
ICAgODYsICAgIDIxLAorICAgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAy
NywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsCisgICAgICAzMiwgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwKKyAgICAgIDQy
LCAgICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAs
ICAgIC0xLAorICAgICAgLTEsICAgIDUzLCAgICA1NCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsCiAgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICA3
MiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0x
LAotICAgICAgLTEsICAgIDgyLCAgICA4MywgICAgODQsICAgIC0xLCAgICA4NiwgICAgMjEsICAg
IDIyLCAgICAyMywgICAgMjQsCi0gICAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjks
ICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LAotICAg
ICAgNDUsICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAgICA1MCwgICAgLTEsICAgIC0xLCAg
ICA1MywgICAgNTQsCisgICAgICA3MiwgICAgLTEsICAgIC0xLCAgICA3NSwgICAgMTAsICAgIDEx
LCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICA4MywgICAgODQsICAg
IC0xLCAgICA4NiwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LAorICAgICAgMjYs
ICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAtMSwg
ICAgLTEsCisgICAgICAtMSwgICAgLTEsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0
MiwgICAgNDMsICAgIDQ0LCAgICA0NSwKKyAgICAgIDQ2LCAgICA0NywgICAgNDgsICAgIDQ5LCAg
ICA1MCwgICAgLTEsICAgIC0xLCAgICA1MywgICAgNTQsICAgIC0xLAogICAgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
Ci0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
NzIsICAgIC0xLCAgICAtMSwKLSAgICAgIDc1LCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgODMsICAgIDg0LAotICAgICAgLTEsICAgIDg2LCAgICAy
MSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsCi0gICAg
ICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAzOCwKLSAgICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQs
ICAgIDQ1LCAgICA0NiwgICAgNDcsICAgIDQ4LAotICAgICAgNDksICAgIDUwLCAgICAtMSwgICAg
LTEsICAgIDUzLCAgICA1NCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICA3MiwgICAgLTEsICAgIC0xLCAg
ICAtMSwKKyAgICAgIDEwLCAgICAxMSwgICAgMTIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICA4MywgICAgODQsICAgIC0xLAorICAgICAgODYsICAgIDIxLCAgICAyMiwgICAgMjMsICAg
IDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksCisgICAgICAzMCwgICAgMzEs
ICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM4LCAgICAzOSwK
KyAgICAgIC0xLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0
NywgICAgNDgsICAgIDQ5LAorICAgICAgNTAsICAgIC0xLCAgICAtMSwgICAgNTMsICAgIDU0LCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCiAgICAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAg
IC0xLCAgICAtMSwgICAgLTEsICAgIDcyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAxMCwgICAg
MTEsICAgIDEyLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDgzLCAgICA4NCwg
ICAgLTEsICAgIDg2LCAgICAyMSwgICAgMjIsCi0gICAgICAyMywgICAgMjQsICAgIDI1LCAgICAy
NiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwKLSAgICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDM5LCAgICAtMSwgICAgNDEsICAg
IDQyLAotICAgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsICAgIDQ3LCAgICA0OCwgICAgNDks
ICAgIDUwLCAgICAtMSwgICAgLTEsCi0gICAgICA1MywgICAgNTQsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDcyLAor
ICAgICAgLTEsICAgIC0xLCAgICA3MiwgICAgIDQsICAgICA1LCAgICAgNiwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgMTAsCisgICAgICAxMSwgICAgMTIsICAgIC0xLCAgICA4MywgICAgODQsICAg
IC0xLCAgICA4NiwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIDIxLCAgICAyMiwgICAgMjMs
ICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLAorICAgICAg
MzEsICAgIDMyLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM4LCAgICAz
OSwgICAgLTEsCisgICAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgLTEsICAgIDQ2LCAg
ICAgNCwgICAgIDUsICAgICA2LCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwgICAgMTAsICAgIDEx
LCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAg
IC0xLCAgICAtMSwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAg
MjcsCisgICAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICA3Nywg
ICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0
MiwgICAgNDMsICAgIDQ0LCAgICAtMSwgICAgNDYsICAgIC0xLAorICAgICAgLTEsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgIDAsCisg
ICAgICAtMSwgICAgLTEsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgs
ICAgICA5LCAgICAxMCwKKyAgICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDc3LAorICAgICAgMjEsICAgIDIyLCAgICAyMywg
ICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsCisgICAgICAz
MSwgICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5
LCAgICAtMSwKKyAgICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICAtMSwgICAgNDYsICAg
ICAzLCAgICAgNCwgICAgIDUsICAgICA2LAorICAgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAs
ICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsCisgICAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAy
NiwKKyAgICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIDM2LAorICAgICAgMzcsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQx
LCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICAtMSwgICAgNDYsCiAgICAgICAgNCwgICAgIDUsICAg
ICA2LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAtMSwKLSAg
ICAgIDgzLCAgICA4NCwgICAgLTEsICAgIDg2LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAyMSwg
ICAgMjIsICAgIDIzLAorICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIDIxLCAgICAyMiwgICAgMjMsCiAgICAgICAyNCwgICAgMjUsICAgIDI2LCAg
ICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMyLCAgICAtMSwKICAgICAgIC0x
LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAzOCwgICAgMzksICAgIC0xLCAgICA0MSwgICAgNDIs
ICAgIDQzLAotICAgICAgNDQsICAgIC0xLCAgICA0NiwgICAgIDQsICAgICA1LCAgICAgNiwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgMTAsCi0gICAgICAxMSwgICAgMTIsICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIDIxLCAgICAy
MiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMw
LAotICAgICAgMzEsICAgIDMyLCAgICAtMSwgICAgNzcsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IDM4LCAgICAzOSwgICAgLTEsCi0gICAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgLTEs
ICAgIDQ2LCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAgIC0xLCAgICAtMSwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgICAwLCAgICAtMSwgICAgLTEsICAgICAzLAotICAg
ICAgIDQsICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAg
ICAxMiwgICAgLTEsCi0gICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICA3NywgICAgMjEsICAgIDIyLCAgICAyMywKLSAgICAgIDI0LCAgICAyNSwgICAgMjYsICAg
IDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLAotICAgICAgLTEs
ICAgIC0xLCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0Miwg
ICAgNDMsCi0gICAgICA0NCwgICAgLTEsICAgIDQ2LCAgICAgMywgICAgIDQsICAgICA1LCAgICAg
NiwgICAgIDcsICAgICA4LCAgICAgOSwKLSAgICAgIDEwLCAgICAxMSwgICAgMTIsICAgIC0xLCAg
ICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgNDQsICAgIC0x
LCAgICA0NiwgICAgMTAsICAgIDExLCAgICAxMiwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEs
CisgICAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMjEsICAgIDIyLCAgICAyMywgICAg
MjQsICAgIDI1LCAgICAyNiwKKyAgICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwg
ICAgMzIsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLAorICAgICAgLTEsICAgIDM4LCAgICAz
OSwgICAgLTEsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsCisgICAg
ICAxMCwgICAgMTEsICAgIDEyLCAgICA1MCwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAg
IC0xLCAgICAtMSwKICAgICAgIC0xLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUs
ICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LAotICAgICAgMzAsICAgIDMxLCAgICAzMiwgICAg
LTEsICAgIC0xLCAgICAtMSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksCi0gICAgICAtMSwg
ICAgNDEsICAgIDQyLCAgICA0MywgICAgNDQsICAgIC0xLCAgICA0NiwgICAgMTAsICAgIDExLCAg
ICAxMiwKLSAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0x
LCAgICAtMSwgICAgMjEsICAgIDIyLAotICAgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAg
IDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsCi0gICAgICAtMSwgICAgLTEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDM4LCAgICAzOSwgICAgLTEsICAgIDQxLCAgICA0MiwK
LSAgICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICAxMCwgICAgMTEsICAgIDEyLCAgICA1
MCwgICAgLTEsICAgIC0xLAotICAgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAg
ICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsCi0gICAgICAyNiwgICAgMjcsICAgIDI4
LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgLTEsICAgIC0xLCAgICAtMSwKLSAgICAg
IC0xLCAgICAtMSwgICAgMzgsICAgIDM5LCAgICAtMSwgICAgNDEsICAgIDQyLCAgICA0MywgICAg
NDQsICAgIC0xLAotICAgICAgNDYKKyAgICAgIDMwLCAgICAzMSwgICAgMzIsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgMzgsICAgIDM5LAorICAgICAgLTEsICAgIDQxLCAg
ICA0MiwgICAgNDMsICAgIDQ0LCAgICAtMSwgICAgNDYKIH07CiAKIC8qIFlZU1RPU1tTVEFURS1O
VU1dIC0tIFRoZSAoaW50ZXJuYWwgbnVtYmVyIG9mIHRoZSkgYWNjZXNzaW5nCkBAIC0xMjc2LDEw
ICsxMzA0LDEwIEBAIHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXlzdG9zW10gPQogICAgICAg
MTIsICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAy
OCwgICAgMjksCiAgICAgICAzMCwgICAgMzEsICAgIDMyLCAgICAzNiwgICAgMzcsICAgIDM4LCAg
ICAzOSwgICAgNDEsICAgIDQyLCAgICA0MywKICAgICAgIDQ0LCAgICA0NiwgICAxMjYsICAgMTI3
LCAgIDEyOCwgICAxMjksICAgMTMwLCAgIDEzNSwgICAxMzYsICAgMTM3LAotICAgICAxMzgsICAg
MTM5LCAgIDE0MCwgICAxNDEsICAgMTQyLCAgIDE0MywgICAxNzIsICAgMTczLCAgIDE3NCwgICAg
MzcsCi0gICAgICA0NSwgICAxNDAsICAgIDQ1LCAgICA3NiwgICAgODIsICAgMTc1LCAgICA3Mywg
ICAgNzksICAgICAzLCAgICAzMywKKyAgICAgMTM4LCAgIDEzOSwgICAxNDAsICAgMTQxLCAgIDE0
MiwgICAxNDMsICAgMTc1LCAgIDE3NiwgICAxNzcsICAgIDM3LAorICAgICAgNDUsICAgMTQwLCAg
ICA0NSwgICAgNzYsICAgIDgyLCAgIDE3OCwgICAgNzMsICAgIDc5LCAgICAgMywgICAgMzMsCiAg
ICAgICAzNCwgICAgMzUsICAgMTMyLCAgIDEzMywgICAxMzgsICAgIDc5LCAgICA4MiwgICAgNDUs
ICAgMTM5LCAgIDE0MSwKLSAgICAgIDc0LCAgICAgMCwgICAxNzMsICAgMTQxLCAgICA3NiwgICAx
NDUsICAgIDc2LCAgIDE1OCwgICAxMzIsICAgMTMxLAorICAgICAgNzQsICAgICAwLCAgIDE3Niwg
ICAxNDEsICAgIDc2LCAgIDE0NSwgICAgNzYsICAgMTYxLCAgIDEzMiwgICAxMzEsCiAgICAgIDEz
NCwgICAxMzksICAgMTMzLCAgICA0NSwgICAgNzIsICAgIDc0LCAgICA4MSwgICAgNDUsICAgIDQ3
LCAgICA0OCwKICAgICAgIDQ5LCAgICA1MCwgICAgNTMsICAgIDU0LCAgICA3MiwgICAgODMsICAg
IDg0LCAgICA4NiwgICAgOTcsICAgIDk4LAogICAgICAgOTksICAgMTAxLCAgIDEwMiwgICAxMDMs
ICAgMTA0LCAgIDEwNSwgICAxMDYsICAgMTA3LCAgIDEwOCwgICAxMDksCkBAIC0xMjg3LDIxICsx
MzE1LDIyIEBAIHN0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXlzdG9zW10gPQogICAgICAxMjAs
ICAgMTIxLCAgIDEyNSwgICAxNDIsICAgIDgyLCAgIDE0NCwgICAxMzksICAgMTQ2LCAgIDE0Nywg
ICAgMTMsCiAgICAgICAxNCwgICAgMTUsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICA0
MCwgICAgNzYsICAgIDc3LCAgICA4MiwKICAgICAgMTA4LCAgIDEyMSwgICAxMjIsICAgMTI0LCAg
IDEyNiwgICAxMjcsICAgMTQyLCAgIDE1MSwgICAxNTIsICAgMTUzLAotICAgICAxNTQsICAgMTU5
LCAgIDE2MCwgICAxNjEsICAgMTY0LCAgIDE3MSwgICAgNDUsICAgMTMxLCAgIDEzNCwgICAgNzQs
CisgICAgIDE1NCwgICAxNjIsICAgMTYzLCAgIDE2NCwgICAxNjcsICAgMTc0LCAgICA0NSwgICAx
MzEsICAgMTM0LCAgICA3NCwKICAgICAgIDgxLCAgICA3NSwgICAxMjUsICAgMTIyLCAgIDE1MCwg
ICAxMDgsICAgMTA4LCAgIDEyNCwgICAgNTMsICAgIDU0LAogICAgICAgNzQsICAgIDc4LCAgICA3
MywgICAgNzMsICAgIDc5LCAgICAzOSwgICAxMjIsICAgIDcyLCAgIDEwOCwgICAgODcsCiAgICAg
ICA4OCwgICAgODQsICAgIDg2LCAgICA1NSwgICAgNTYsICAgIDkwLCAgICA5MSwgICAgNTcsICAg
IDU4LCAgICA1OSwKICAgICAgIDYxLCAgICA2MCwgICAgOTUsICAgIDc1LCAgIDE0NiwgICAgNDUs
ICAgMTQ4LCAgIDE0OSwgICAgNzcsICAgMTQ3LAotICAgICAgODIsICAgIDgyLCAgIDE2NiwgICAg
NzIsICAgIDcyLCAgICA4MiwgICAgODIsICAgMTI0LCAgICA3MiwgICAgNzcsCisgICAgICA4Miwg
ICAgODIsICAgMTY5LCAgICA3MiwgICAgNzIsICAgIDgyLCAgICA4MiwgICAxMjQsICAgIDcyLCAg
ICA3NywKICAgICAgMTU1LCAgICA2MiwgICAgNjMsICAgIDY0LCAgICA3MSwgICAgODEsICAgMTIz
LCAgICA3OSwgICAgODIsICAgIDc3LAogICAgICAxNTIsICAgIDc0LCAgICA3NSwgICAxMjUsICAg
MTUwLCAgICA3NSwgICAgNzMsICAgMTAwLCAgIDEyNCwgICAgNDUsCiAgICAgICA1MCwgICAxMDMs
ICAgMTIyLCAgIDEwOCwgICAxMDgsICAgMTEwLCAgIDExMCwgICAxMTIsICAgMTEyLCAgIDExMiwK
ICAgICAgMTEyLCAgIDExMywgICAxMTMsICAgMTE3LCAgIDExOCwgICAxMTksICAgMTI0LCAgICA3
NywgICAgNzQsICAgIDc5LAotICAgICAgODIsICAgMTUyLCAgIDE2NywgICAxMjQsICAgIDgyLCAg
IDE2NSwgICAxNTksICAgMTIyLCAgIDEyMiwgICAxMjUsCi0gICAgICA3NSwgICAgNzUsICAgIDgw
LCAgIDEyNSwgICAxNDksICAgIDQwLCAgIDE1MSwgICAxNjAsICAgMTY4LCAgICA3MywKLSAgICAg
MTI0LCAgIDEzNywgICAxNjMsICAgMTU2LCAgICA3NSwgICAxMjIsICAgIDc1LCAgICA3MiwgICAx
NjMsICAgMTY5LAotICAgICAxNzAsICAgMTUyLCAgIDE2MiwgICAgNDUsICAgIDczLCAgICA3Nywg
ICAxMjQsICAgIDgyLCAgICA3MywgICAgMTYsCi0gICAgICA4MSwgICAxNTMsICAgMTU3LCAgIDE1
OCwgICAgNzMsICAgMTI0LCAgIDE1NywgICAxNTIsICAgMTUwLCAgICA4MgorICAgICAgODIsICAg
MTU4LCAgIDE1OSwgICAxNjAsICAgMTcwLCAgIDEyNCwgICAgODIsICAgMTY4LCAgIDE2MiwgICAx
MjIsCisgICAgIDEyMiwgICAxMjUsICAgIDc1LCAgICA3NSwgICAgODAsICAgMTI1LCAgIDE0OSwg
ICAgNDAsICAgMTYxLCAgIDE1MywKKyAgICAgMTUxLCAgIDE2MywgICAxNzEsICAgIDczLCAgIDEy
NCwgICAxMzcsICAgMTY2LCAgIDE1NiwgICAgNzUsICAgMTIyLAorICAgICAgNzUsICAgIDcyLCAg
IDE2NiwgICAxNzIsICAgMTczLCAgIDE1OCwgICAxNjUsICAgIDQ1LCAgICA3MywgICAgNzcsCisg
ICAgIDEyNCwgICAgODIsICAgIDczLCAgICAxNiwgICAgODEsICAgMTUzLCAgIDE1NywgICAxNjEs
ICAgIDczLCAgIDEyNCwKKyAgICAgMTU3LCAgIDE1OCwgICAxNTAsICAgIDgyCiB9OwogCiAjZGVm
aW5lIHl5ZXJyb2sJCSh5eWVycnN0YXR1cyA9IDApCkBAIC0zMTI2LDYgKzMxNTUsOCBAQCB5eXJl
ZHVjZToKICAgICAgICAgCiAgICAgICAgIHByb3RvdHlwZS0+c2V0T3AoRU9wUHJvdG90eXBlKTsK
ICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9IHByb3RvdHlwZTsKKworICAgICAg
ICBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsKICAgICA7fQogICAgIGJyZWFrOwogCkBAIC0z
MTc5LDcgKzMyMTAsOSBAQCB5eXJlZHVjZToKICAgICAgICAgKHl5dmFsLmludGVybSkuZnVuY3Rp
b24gPSAoeXl2c3BbKDEpIC0gKDIpXS5pbnRlcm0uZnVuY3Rpb24pOwogICAgICAgICAoeXl2YWwu
aW50ZXJtKS5saW5lID0gKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lOwogCi0gICAgICAgIGNv
bnRleHQtPnN5bWJvbFRhYmxlLmluc2VydCgqKHl5dmFsLmludGVybSkuZnVuY3Rpb24pOworICAg
ICAgICAvLyBXZSdyZSBhdCB0aGUgaW5uZXIgc2NvcGUgbGV2ZWwgb2YgdGhlIGZ1bmN0aW9uJ3Mg
YXJndW1lbnRzIGFuZCBib2R5IHN0YXRlbWVudC4KKyAgICAgICAgLy8gQWRkIHRoZSBmdW5jdGlv
biBwcm90b3R5cGUgdG8gdGhlIHN1cnJvdW5kaW5nIHNjb3BlIGluc3RlYWQuCisgICAgICAgIGNv
bnRleHQtPnN5bWJvbFRhYmxlLmdldE91dGVyTGV2ZWwoKS0+aW5zZXJ0KCooeXl2YWwuaW50ZXJt
KS5mdW5jdGlvbik7CiAgICAgO30KICAgICBicmVhazsKIApAQCAtMzI0Nyw2ICszMjgwLDggQEAg
eXlyZWR1Y2U6CiAgICAgICAgIFRUeXBlIHR5cGUoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtLnR5
cGUpKTsKICAgICAgICAgZnVuY3Rpb24gPSBuZXcgVEZ1bmN0aW9uKCh5eXZzcFsoMikgLSAoMyld
LmxleCkuc3RyaW5nLCB0eXBlKTsKICAgICAgICAgKHl5dmFsLmludGVybS5mdW5jdGlvbikgPSBm
dW5jdGlvbjsKKyAgICAgICAgCisgICAgICAgIGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsK
ICAgICA7fQogICAgIGJyZWFrOwogCkBAIC0zMzczLDYgKzM0MDgsMTIgQEAgeXlyZWR1Y2U6CiAg
IGNhc2UgOTI6CiAKICAgICB7CisgICAgICAgIGlmICgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0p
LnR5cGUudHlwZSA9PSBFYnRJbnZhcmlhbnQgJiYgISh5eXZzcFsoMykgLSAoMyldLmxleCkuc3lt
Ym9sKQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDMpIC0g
KDMpXS5sZXgpLmxpbmUsICJ1bmRlY2xhcmVkIGlkZW50aWZpZXIgZGVjbGFyZWQgYXMgaW52YXJp
YW50IiwgKHl5dnNwWygzKSAtICgzKV0ubGV4KS5zdHJpbmctPmNfc3RyKCksICIiKTsKKyAgICAg
ICAgICAgIGNvbnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgfQorCiAgICAgICAgIFRJbnRlcm1T
eW1ib2wqIHN5bWJvbCA9IGNvbnRleHQtPmludGVybWVkaWF0ZS5hZGRTeW1ib2woMCwgKih5eXZz
cFsoMykgLSAoMyldLmxleCkuc3RyaW5nLCBUVHlwZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0p
LnR5cGUpLCAoeXl2c3BbKDMpIC0gKDMpXS5sZXgpLmxpbmUpOwogICAgICAgICAoeXl2YWwuaW50
ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuZ3Jvd0FnZ3JlZ2F0
ZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLmludGVybU5vZGUsIHN5bWJvbCwgKHl5dnNwWygz
KSAtICgzKV0ubGV4KS5saW5lKTsKICAgICAgICAgCkBAIC0zNTcwLDggKzM2MTEsMjEgQEAgeXly
ZWR1Y2U6CiAKICAgICB7CiAgICAgICAgIFZFUlRFWF9PTkxZKCJpbnZhcmlhbnQgZGVjbGFyYXRp
b24iLCAoeXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUpOwotICAgICAgICAoeXl2YWwuaW50ZXJt
KS5xdWFsaWZpZXIgPSBFdnFJbnZhcmlhbnRWYXJ5aW5nT3V0OwotICAgICAgICAoeXl2YWwuaW50
ZXJtKS5pbnRlcm1BZ2dyZWdhdGUgPSAwOworICAgICAgICBpZiAoY29udGV4dC0+Z2xvYmFsRXJy
b3JDaGVjaygoeXl2c3BbKDEpIC0gKDIpXS5sZXgpLmxpbmUsIGNvbnRleHQtPnN5bWJvbFRhYmxl
LmF0R2xvYmFsTGV2ZWwoKSwgImludmFyaWFudCB2YXJ5aW5nIikpCisgICAgICAgICAgICBjb250
ZXh0LT5yZWNvdmVyKCk7CisgICAgICAgICh5eXZhbC5pbnRlcm0pLnR5cGUuc2V0QmFzaWMoRWJ0
SW52YXJpYW50LCBFdnFJbnZhcmlhbnRWYXJ5aW5nT3V0LCAoeXl2c3BbKDIpIC0gKDIpXS5sZXgp
LmxpbmUpOworICAgICAgICBpZiAoISh5eXZzcFsoMikgLSAoMildLmxleCkuc3ltYm9sKQorICAg
ICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5lcnJvcigoeXl2c3BbKDIpIC0gKDIpXS5sZXgp
LmxpbmUsICJ1bmRlY2xhcmVkIGlkZW50aWZpZXIgZGVjbGFyZWQgYXMgaW52YXJpYW50IiwgKHl5
dnNwWygyKSAtICgyKV0ubGV4KS5zdHJpbmctPmNfc3RyKCksICIiKTsKKyAgICAgICAgICAgIGNv
bnRleHQtPnJlY292ZXIoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgKHl5dmFsLmludGVy
bSkuaW50ZXJtQWdncmVnYXRlID0gMDsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAg
IHsKKyAgICAgICAgICAgIFRJbnRlcm1TeW1ib2wgKnN5bWJvbCA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5hZGRTeW1ib2woMCwgKih5eXZzcFsoMikgLSAoMildLmxleCkuc3RyaW5nLCBUVHlwZSgo
eXl2YWwuaW50ZXJtKS50eXBlKSwgKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lKTsKKyAgICAg
ICAgICAgICh5eXZhbC5pbnRlcm0pLmludGVybUFnZ3JlZ2F0ZSA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5tYWtlQWdncmVnYXRlKHN5bWJvbCwgKHl5dnNwWygyKSAtICgyKV0ubGV4KS5saW5lKTsK
KyAgICAgICAgfQogICAgIDt9CiAgICAgYnJlYWs7CiAKQEAgLTQxNjMsMTIgKzQyMTcsMzIgQEAg
eXlyZWR1Y2U6CiAKICAgY2FzZSAxNjQ6CiAKKyAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1
c2goKTsgO30KKyAgICBicmVhazsKKworICBjYXNlIDE2NToKKworICAgIHsgY29udGV4dC0+c3lt
Ym9sVGFibGUucG9wKCk7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDIpIC0g
KDIpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IDt9CisgICAgYnJlYWs7CisKKyAgY2FzZSAxNjY6CisK
KyAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxlLnB1c2goKTsgO30KKyAgICBicmVhazsKKworICBj
YXNlIDE2NzoKKworICAgIHsgY29udGV4dC0+c3ltYm9sVGFibGUucG9wKCk7ICh5eXZhbC5pbnRl
cm0uaW50ZXJtTm9kZSkgPSAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtTm9kZSk7IDt9
CisgICAgYnJlYWs7CisKKyAgY2FzZSAxNjg6CisKICAgICB7CiAgICAgICAgICh5eXZhbC5pbnRl
cm0uaW50ZXJtTm9kZSkgPSAwOwogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNjU6Cisg
IGNhc2UgMTY5OgogCiAgICAgewogICAgICAgICBpZiAoKHl5dnNwWygyKSAtICgzKV0uaW50ZXJt
LmludGVybUFnZ3JlZ2F0ZSkpIHsKQEAgLTQxNzksMzEgKzQyNTMsMzEgQEAgeXlyZWR1Y2U6CiAg
ICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE2NjoKKyAgY2FzZSAxNzA6CiAKICAgICB7CiAg
ICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKSA9IGNvbnRleHQtPmludGVybWVk
aWF0ZS5tYWtlQWdncmVnYXRlKCh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKSwg
MCk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE2NzoKKyAgY2FzZSAxNzE6CiAKICAg
ICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtQWdncmVnYXRlKSA9IGNvbnRleHQtPmlu
dGVybWVkaWF0ZS5ncm93QWdncmVnYXRlKCh5eXZzcFsoMSkgLSAoMildLmludGVybS5pbnRlcm1B
Z2dyZWdhdGUpLCAoeXl2c3BbKDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtTm9kZSksIDApOwogICAg
IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNjg6CisgIGNhc2UgMTcyOgogCiAgICAgeyAoeXl2
YWwuaW50ZXJtLmludGVybU5vZGUpID0gMDsgO30KICAgICBicmVhazsKIAotICBjYXNlIDE2OToK
KyAgY2FzZSAxNzM6CiAKICAgICB7ICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBzdGF0aWNf
Y2FzdDxUSW50ZXJtTm9kZSo+KCh5eXZzcFsoMSkgLSAoMildLmludGVybS5pbnRlcm1UeXBlZE5v
ZGUpKTsgO30KICAgICBicmVhazsKIAotICBjYXNlIDE3MDoKKyAgY2FzZSAxNzQ6CiAKICAgICB7
CiAgICAgICAgIGlmIChjb250ZXh0LT5ib29sRXJyb3JDaGVjaygoeXl2c3BbKDEpIC0gKDUpXS5s
ZXgpLmxpbmUsICh5eXZzcFsoMykgLSAoNSldLmludGVybS5pbnRlcm1UeXBlZE5vZGUpKSkKQEAg
LTQyMTIsNyArNDI4Niw3IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2Fz
ZSAxNzE6CisgIGNhc2UgMTc1OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLm5vZGVQ
YWlyKS5ub2RlMSA9ICh5eXZzcFsoMSkgLSAoMyldLmludGVybS5pbnRlcm1Ob2RlKTsKQEAgLTQy
MjAsNyArNDI5NCw3IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAx
NzI6CisgIGNhc2UgMTc2OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLm5vZGVQYWly
KS5ub2RlMSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsKQEAgLTQyMjgs
NyArNDMwMiw3IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNzM6
CisgIGNhc2UgMTc3OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybVR5cGVk
Tm9kZSkgPSAoeXl2c3BbKDEpIC0gKDEpXS5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKTsKQEAgLTQy
MzcsNyArNDMxMSw3IEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAx
NzQ6CisgIGNhc2UgMTc4OgogCiAgICAgewogICAgICAgICBUSW50ZXJtTm9kZSogaW50ZXJtTm9k
ZTsKQEAgLTQyNTUsMTIgKzQzMjksMTIgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsK
IAotICBjYXNlIDE3NToKKyAgY2FzZSAxNzk6CiAKICAgICB7IGNvbnRleHQtPnN5bWJvbFRhYmxl
LnB1c2goKTsgKytjb250ZXh0LT5sb29wTmVzdGluZ0xldmVsOyA7fQogICAgIGJyZWFrOwogCi0g
IGNhc2UgMTc2OgorICBjYXNlIDE4MDoKIAogICAgIHsKICAgICAgICAgY29udGV4dC0+c3ltYm9s
VGFibGUucG9wKCk7CkBAIC00MjY5LDEyICs0MzQzLDEyIEBAIHl5cmVkdWNlOgogICAgIDt9CiAg
ICAgYnJlYWs7CiAKLSAgY2FzZSAxNzc6CisgIGNhc2UgMTgxOgogCiAgICAgeyArK2NvbnRleHQt
Pmxvb3BOZXN0aW5nTGV2ZWw7IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxNzg6CisgIGNhc2Ug
MTgyOgogCiAgICAgewogICAgICAgICBpZiAoY29udGV4dC0+Ym9vbEVycm9yQ2hlY2soKHl5dnNw
Wyg4KSAtICg4KV0ubGV4KS5saW5lLCAoeXl2c3BbKDYpIC0gKDgpXS5pbnRlcm0uaW50ZXJtVHlw
ZWROb2RlKSkpCkBAIC00Mjg1LDEyICs0MzU5LDEyIEBAIHl5cmVkdWNlOgogICAgIDt9CiAgICAg
YnJlYWs7CiAKLSAgY2FzZSAxNzk6CisgIGNhc2UgMTgzOgogCiAgICAgeyBjb250ZXh0LT5zeW1i
b2xUYWJsZS5wdXNoKCk7ICsrY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbDsgO30KICAgICBicmVh
azsKIAotICBjYXNlIDE4MDoKKyAgY2FzZSAxODQ6CiAKICAgICB7CiAgICAgICAgIGNvbnRleHQt
PnN5bWJvbFRhYmxlLnBvcCgpOwpAQCAtNDI5OSwzNSArNDM3MywzNSBAQCB5eXJlZHVjZToKICAg
ICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTgxOgorICBjYXNlIDE4NToKIAogICAgIHsKICAg
ICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVy
bS5pbnRlcm1Ob2RlKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTgyOgorICBjYXNl
IDE4NjoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZz
cFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0g
IGNhc2UgMTgzOgorICBjYXNlIDE4NzoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5p
bnRlcm1UeXBlZE5vZGUpID0gKHl5dnNwWygxKSAtICgxKV0uaW50ZXJtLmludGVybVR5cGVkTm9k
ZSk7CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE4NDoKKyAgY2FzZSAxODg6CiAKICAg
ICB7CiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtVHlwZWROb2RlKSA9IDA7CiAgICAgO30K
ICAgICBicmVhazsKIAotICBjYXNlIDE4NToKKyAgY2FzZSAxODk6CiAKICAgICB7CiAgICAgICAg
ICh5eXZhbC5pbnRlcm0ubm9kZVBhaXIpLm5vZGUxID0gKHl5dnNwWygxKSAtICgyKV0uaW50ZXJt
LmludGVybVR5cGVkTm9kZSk7CkBAIC00MzM1LDcgKzQ0MDksNyBAQCB5eXJlZHVjZToKICAgICA7
fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTg2OgorICBjYXNlIDE5MDoKIAogICAgIHsKICAgICAg
ICAgKHl5dmFsLmludGVybS5ub2RlUGFpcikubm9kZTEgPSAoeXl2c3BbKDEpIC0gKDMpXS5pbnRl
cm0uaW50ZXJtVHlwZWROb2RlKTsKQEAgLTQzNDMsNyArNDQxNyw3IEBAIHl5cmVkdWNlOgogICAg
IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxODc6CisgIGNhc2UgMTkxOgogCiAgICAgewogICAg
ICAgICBpZiAoY29udGV4dC0+bG9vcE5lc3RpbmdMZXZlbCA8PSAwKSB7CkBAIC00MzU0LDcgKzQ0
MjgsNyBAQCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTg4OgorICBj
YXNlIDE5MjoKIAogICAgIHsKICAgICAgICAgaWYgKGNvbnRleHQtPmxvb3BOZXN0aW5nTGV2ZWwg
PD0gMCkgewpAQCAtNDM2NSw3ICs0NDM5LDcgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVh
azsKIAotICBjYXNlIDE4OToKKyAgY2FzZSAxOTM6CiAKICAgICB7CiAgICAgICAgICh5eXZhbC5p
bnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1lZGlhdGUuYWRkQnJhbmNoKEVPcFJl
dHVybiwgKHl5dnNwWygxKSAtICgyKV0ubGV4KS5saW5lKTsKQEAgLTQzNzYsNyArNDQ1MCw3IEBA
IHl5cmVkdWNlOgogICAgIDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTA6CisgIGNhc2UgMTk0
OgogCiAgICAgewogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+
aW50ZXJtZWRpYXRlLmFkZEJyYW5jaChFT3BSZXR1cm4sICh5eXZzcFsoMikgLSAoMyldLmludGVy
bS5pbnRlcm1UeXBlZE5vZGUpLCAoeXl2c3BbKDEpIC0gKDMpXS5sZXgpLmxpbmUpOwpAQCAtNDM5
MSw3ICs0NDY1LDcgQEAgeXlyZWR1Y2U6CiAgICAgO30KICAgICBicmVhazsKIAotICBjYXNlIDE5
MToKKyAgY2FzZSAxOTU6CiAKICAgICB7CiAgICAgICAgIEZSQUdfT05MWSgiZGlzY2FyZCIsICh5
eXZzcFsoMSkgLSAoMildLmxleCkubGluZSk7CkBAIC00Mzk5LDcgKzQ0NzMsNyBAQCB5eXJlZHVj
ZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTkyOgorICBjYXNlIDE5NjoKIAogICAg
IHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSld
LmludGVybS5pbnRlcm1Ob2RlKTsKQEAgLTQ0MDcsNyArNDQ4MSw3IEBAIHl5cmVkdWNlOgogICAg
IDt9CiAgICAgYnJlYWs7CiAKLSAgY2FzZSAxOTM6CisgIGNhc2UgMTk3OgogCiAgICAgewogICAg
ICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpID0gY29udGV4dC0+aW50ZXJtZWRpYXRlLmdy
b3dBZ2dyZWdhdGUoKHl5dnNwWygxKSAtICgyKV0uaW50ZXJtLmludGVybU5vZGUpLCAoeXl2c3Bb
KDIpIC0gKDIpXS5pbnRlcm0uaW50ZXJtTm9kZSksIDApOwpAQCAtNDQxNSwyMSArNDQ4OSwyMSBA
QCB5eXJlZHVjZToKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNhc2UgMTk0OgorICBjYXNlIDE5
ODoKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRlcm1Ob2RlKSA9ICh5eXZzcFso
MSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsKICAgICA7fQogICAgIGJyZWFrOwogCi0gIGNh
c2UgMTk1OgorICBjYXNlIDE5OToKIAogICAgIHsKICAgICAgICAgKHl5dmFsLmludGVybS5pbnRl
cm1Ob2RlKSA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybS5pbnRlcm1Ob2RlKTsKICAgICA7fQog
ICAgIGJyZWFrOwogCi0gIGNhc2UgMTk2OgorICBjYXNlIDIwMDoKIAogICAgIHsKICAgICAgICAg
VEZ1bmN0aW9uKiBmdW5jdGlvbiA9ICh5eXZzcFsoMSkgLSAoMSldLmludGVybSkuZnVuY3Rpb247
CkBAIC00NDYzLDExICs0NTM3LDYgQEAgeXlyZWR1Y2U6CiAgICAgICAgIH0KIAogICAgICAgICAv
LwotICAgICAgICAvLyBOZXcgc3ltYm9sIHRhYmxlIHNjb3BlIGZvciBib2R5IG9mIGZ1bmN0aW9u
IHBsdXMgaXRzIGFyZ3VtZW50cwotICAgICAgICAvLwotICAgICAgICBjb250ZXh0LT5zeW1ib2xU
YWJsZS5wdXNoKCk7Ci0KLSAgICAgICAgLy8KICAgICAgICAgLy8gUmVtZW1iZXIgdGhlIHJldHVy
biB0eXBlIGZvciBsYXRlciBjaGVja2luZyBmb3IgUkVUVVJOIHN0YXRlbWVudHMuCiAgICAgICAg
IC8vCiAgICAgICAgIGNvbnRleHQtPmN1cnJlbnRGdW5jdGlvblR5cGUgPSAmKHByZXZEZWMtPmdl
dFJldHVyblR5cGUoKSk7CkBAIC00NTE0LDcgKzQ1ODMsNyBAQCB5eXJlZHVjZToKICAgICA7fQog
ICAgIGJyZWFrOwogCi0gIGNhc2UgMTk3OgorICBjYXNlIDIwMToKIAogICAgIHsKICAgICAgICAg
Ly8/PyBDaGVjayB0aGF0IGFsbCBwYXRocyByZXR1cm4gYSB2YWx1ZSBpZiByZXR1cm4gdHlwZSAh
PSB2b2lkID8KQEAgLTQ1MjMsNyArNDU5Miw3IEBAIHl5cmVkdWNlOgogICAgICAgICAgICAgY29u
dGV4dC0+ZXJyb3IoKHl5dnNwWygxKSAtICgzKV0uaW50ZXJtKS5saW5lLCAiZnVuY3Rpb24gZG9l
cyBub3QgcmV0dXJuIGEgdmFsdWU6IiwgIiIsICh5eXZzcFsoMSkgLSAoMyldLmludGVybSkuZnVu
Y3Rpb24tPmdldE5hbWUoKS5jX3N0cigpKTsKICAgICAgICAgICAgIGNvbnRleHQtPnJlY292ZXIo
KTsKICAgICAgICAgfQotICAgICAgICBjb250ZXh0LT5zeW1ib2xUYWJsZS5wb3AoKTsKKyAgICAg
ICAgCiAgICAgICAgICh5eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSkgPSBjb250ZXh0LT5pbnRlcm1l
ZGlhdGUuZ3Jvd0FnZ3JlZ2F0ZSgoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLmludGVybUFnZ3Jl
Z2F0ZSwgKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybU5vZGUpLCAwKTsKICAgICAgICAg
Y29udGV4dC0+aW50ZXJtZWRpYXRlLnNldEFnZ3JlZ2F0ZU9wZXJhdG9yKCh5eXZhbC5pbnRlcm0u
aW50ZXJtTm9kZSksIEVPcEZ1bmN0aW9uLCAoeXl2c3BbKDEpIC0gKDMpXS5pbnRlcm0pLmxpbmUp
OwogICAgICAgICAoeXl2YWwuaW50ZXJtLmludGVybU5vZGUpLT5nZXRBc0FnZ3JlZ2F0ZSgpLT5z
ZXROYW1lKCh5eXZzcFsoMSkgLSAoMyldLmludGVybSkuZnVuY3Rpb24tPmdldE1hbmdsZWROYW1l
KCkuY19zdHIoKSk7CkBAIC00NTM3LDYgKzQ2MDYsOCBAQCB5eXJlZHVjZToKIAogICAgICAgICBp
ZiAoKHl5dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybU5vZGUpICYmICh5eXZzcFsoMykgLSAo
MyldLmludGVybS5pbnRlcm1Ob2RlKS0+Z2V0QXNBZ2dyZWdhdGUoKSkKICAgICAgICAgICAgICh5
eXZhbC5pbnRlcm0uaW50ZXJtTm9kZSktPmdldEFzQWdncmVnYXRlKCktPnNldEVuZExpbmUoKHl5
dnNwWygzKSAtICgzKV0uaW50ZXJtLmludGVybU5vZGUpLT5nZXRBc0FnZ3JlZ2F0ZSgpLT5nZXRF
bmRMaW5lKCkpOworCisgICAgICAgIGNvbnRleHQtPnN5bWJvbFRhYmxlLnBvcCgpOwogICAgIDt9
CiAgICAgYnJlYWs7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9vc2luY2x1ZGUuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxl
ci9vc2luY2x1ZGUuaAppbmRleCA2Y2U0ZGY5NGRhMDlmN2Y3MGIwMzJkNWE1MjFhMjRhYWRkMThk
ZDE4Li45YjNhY2RmMmI1Nzk0ZDQyNDcwNzZkOTVjMDkwM2E4MTMzZDEzMzg3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvb3NpbmNsdWRlLmgKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL29zaW5jbHVkZS5oCkBAIC0xNiw3
ICsxNiw4IEBACiAjZGVmaW5lIEFOR0xFX09TX1dJTgogI2VsaWYgZGVmaW5lZChfX0FQUExFX18p
IHx8IGRlZmluZWQoX19saW51eF9fKSB8fCBcCiAgICAgICBkZWZpbmVkKF9fRnJlZUJTRF9fKSB8
fCBkZWZpbmVkKF9fT3BlbkJTRF9fKSB8fCBcCi0gICAgICBkZWZpbmVkKF9fc3VuKSB8fCBkZWZp
bmVkKEFORFJPSUQpCisgICAgICBkZWZpbmVkKF9fc3VuKSB8fCBkZWZpbmVkKEFORFJPSUQpIHx8
IFwKKyAgICAgIGRlZmluZWQoX19HTElCQ19fKSB8fCBkZWZpbmVkKF9fR05VX18pCiAjZGVmaW5l
IEFOR0xFX09TX1BPU0lYCiAjZWxzZQogI2Vycm9yIFVuc3VwcG9ydGVkIHBsYXRmb3JtLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nv
ci9jcHAuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNz
b3IvY3BwLmMKaW5kZXggMDNkZDRmNjc0MTA5NWRjOGZjZDkwMGE1OWQ3NDc3MjA2NTU3MDk5Mi4u
MTNhNWRmMThhOWIzZWFhYTc0OWEzNmRiMTQ1MmI3YzcwYjM3ZDRiMSAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9jcHAuYworKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL2NwcC5j
CkBAIC01Myw2ICs1MywxMiBAQCBOVklESUEgSEFTIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKICNpbmNsdWRlICJjb21waWxlci9wcmVwcm9jZXNzb3Iv
c2xnbG9iYWxzLmgiCiAKKyNpZiBkZWZpbmVkKF9NU0NfVkVSKQorI3ByYWdtYSB3YXJuaW5nKGRp
c2FibGU6IDQwNTQpCisjcHJhZ21hIHdhcm5pbmcoZGlzYWJsZTogNDE1MikKKyNwcmFnbWEgd2Fy
bmluZyhkaXNhYmxlOiA0NzA2KQorI2VuZGlmCisKIHN0YXRpYyBpbnQgQ1BQaWYoeXlzdHlwZXBw
ICogeXlsdmFscHApOwogCiAvKiBEb24ndCB1c2UgbWVtb3J5LmMncyByZXBsYWNlbWVudHMsIGFz
IHdlIGNsZWFuIHVwIHByb3Blcmx5IGhlcmUgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvbWVtb3J5LmMgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL21lbW9yeS5jCmluZGV4IGU2
ZmVhN2FhMzNlYjUzNjY0ZDhjM2ZhYzdjZTQzY2Y1ZjhlMmE3YzUuLjAyOTUyMWE1NTkyODk4N2U4
ODI5YmE5ZjgxNzc4ZTMyYTAwMDgyMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvbWVtb3J5LmMKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9tZW1vcnkuYwpAQCAtNTIsNiAr
NTIsMTAgQEAgTlZJRElBIEhBUyBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogCiAjaW5jbHVkZSAiY29tcGlsZXIvcHJlcHJvY2Vzc29yL21lbW9yeS5oIgog
CisjaWYgZGVmaW5lZChfTVNDX1ZFUikKKyNwcmFnbWEgd2FybmluZyhkaXNhYmxlOiA0NzA2KQor
I2VuZGlmCisKIC8vIGRlZmF1bHQgYWxpZ25tZW50IGFuZCBjaHVua3NpemUsIGlmIGNhbGxlZCB3
aXRoIDAgYXJndW1lbnRzCiAjZGVmaW5lIENIVU5LU0laRSAgICAgICAoNjQqMTAyNCkKICNkZWZp
bmUgQUxJR04gICAgICAgICAgIDgKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvbmV3L0NvbnRleHQuY3BwIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9uZXcvQ29udGV4dC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMjU5Y2M0M2VhMWU5NGFjZjBjY2NiMWEwNWZmODQ2ZDg1NWY0YTY2NQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9j
ZXNzb3IvbmV3L0NvbnRleHQuY3BwCkBAIC0wLDAgKzEsMTM5IEBACisvLworLy8gQ29weXJpZ2h0
IChjKSAyMDExIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKwor
I2luY2x1ZGUgIkNvbnRleHQuaCIKKworI2luY2x1ZGUgPGFsZ29yaXRobT4KKyNpbmNsdWRlIDxz
c3RyZWFtPgorCisjaW5jbHVkZSAiY29tcGlsZXIvZGVidWcuaCIKKyNpbmNsdWRlICJzdGxfdXRp
bHMuaCIKKyNpbmNsdWRlICJ0b2tlbl90eXBlLmgiCisKK3N0YXRpYyBib29sIGlzTWFjcm9OYW1l
UmVzZXJ2ZWQoY29uc3Qgc3RkOjpzdHJpbmcqIG5hbWUpCit7CisgICAgQVNTRVJUKG5hbWUpOwor
CisgICAgLy8gTmFtZXMgcHJlZml4ZWQgd2l0aCAiR0xfIiBhcmUgcmVzZXJ2ZWQuCisgICAgaWYg
KG5hbWUtPnN1YnN0cigwLCAzKSA9PSAiR0xfIikKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAg
ICAvLyBOYW1lcyBjb250YWluaW5nIHR3byBjb25zZWN1dGl2ZSB1bmRlcnNjb3JlcyBhcmUgcmVz
ZXJ2ZWQuCisgICAgaWYgKG5hbWUtPmZpbmQoIl9fIikgIT0gc3RkOjpzdHJpbmc6Om5wb3MpCisg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCituYW1lc3BhY2Ug
cHAKK3sKKworQ29udGV4dDo6Q29udGV4dCgpCisgICAgOiBtTGV4ZXIoTlVMTCksCisgICAgICBt
SW5wdXQoTlVMTCksCisgICAgICBtT3V0cHV0KE5VTEwpCit7Cit9CisKK0NvbnRleHQ6On5Db250
ZXh0KCkKK3sKKyAgICBkZXN0cm95TGV4ZXIoKTsKK30KKworYm9vbCBDb250ZXh0Ojppbml0KCkK
K3sKKyAgICByZXR1cm4gaW5pdExleGVyKCk7CisKKyAgICAvLyBUT0RPKGFsb2twKTogRGVmaW5l
IGJ1aWx0LWluIG1hY3JvcyBoZXJlIHNvIHRoYXQgd2UgZG8gbm90IG5lZWQgdG8KKyAgICAvLyBk
ZWZpbmUgdGhlbSBldmVyeXRpbWUgaW4gcHJvY2VzcygpLgorfQorCitib29sIENvbnRleHQ6OnBy
b2Nlc3MoaW50IGNvdW50LAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0
IHN0cmluZ1tdLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCBsZW5ndGhbXSwKKyAg
ICAgICAgICAgICAgICAgICAgICBUb2tlblZlY3Rvciogb3V0cHV0KQoreworICAgIEFTU0VSVCgo
Y291bnQgPj0wKSAmJiAoc3RyaW5nICE9IE5VTEwpICYmIChvdXRwdXQgIT0gTlVMTCkpOworCisg
ICAgLy8gU2V0dXAuCisgICAgbUlucHV0ID0gbmV3IElucHV0KGNvdW50LCBzdHJpbmcsIGxlbmd0
aCk7CisgICAgbU91dHB1dCA9IG91dHB1dDsKKyAgICBkZWZpbmVCdWlsdEluTWFjcm8oIkdMX0VT
IiwgMSk7CisKKyAgICAvLyBQYXJzZS4KKyAgICBib29sIHN1Y2Nlc3MgPSBwYXJzZSgpOworCisg
ICAgLy8gQ2xlYW51cC4KKyAgICByZXNldCgpOworICAgIHJldHVybiBzdWNjZXNzOworfQorCiti
b29sIENvbnRleHQ6OmRlZmluZU1hY3JvKHBwOjpUb2tlbjo6TG9jYXRpb24gbG9jYXRpb24sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBwOjpNYWNybzo6VHlwZSB0eXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyogbmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHA6OlRva2VuVmVjdG9yKiBwYXJhbWV0ZXJzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBwcDo6VG9rZW5WZWN0b3IqIHJlcGxhY2VtZW50cykKK3sKKyAgICBzdGQ6OmF1dG9fcHRy
PE1hY3JvPiBtYWNybyhuZXcgTWFjcm8odHlwZSwgbmFtZSwgcGFyYW1ldGVycywgcmVwbGFjZW1l
bnRzKSk7CisgICAgaWYgKGlzTWFjcm9OYW1lUmVzZXJ2ZWQobmFtZSkpCisgICAgeworICAgICAg
ICAvLyBUT0RPKGFsb2twKTogUmVwb3J0IGVycm9yLgorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorICAgIGlmIChpc01hY3JvRGVmaW5lZChuYW1lKSkKKyAgICB7CisgICAgICAgIC8vIFRP
RE8oYWxva3ApOiBSZXBvcnQgZXJyb3IuCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisK
KyAgICBtTWFjcm9zWypuYW1lXSA9IG1hY3JvLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworYm9vbCBDb250ZXh0Ojp1bmRlZmluZU1hY3JvKGNvbnN0IHN0ZDo6c3RyaW5nKiBuYW1l
KQoreworICAgIE1hY3JvU2V0OjppdGVyYXRvciBpdGVyID0gbU1hY3Jvcy5maW5kKCpuYW1lKTsK
KyAgICBpZiAoaXRlciA9PSBtTWFjcm9zLmVuZCgpKQorICAgIHsKKyAgICAgICAgLy8gVE9ETyhh
bG9rcCk6IFJlcG9ydCBlcnJvci4KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBt
TWFjcm9zLmVyYXNlKGl0ZXIpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIENvbnRleHQ6
OmlzTWFjcm9EZWZpbmVkKGNvbnN0IHN0ZDo6c3RyaW5nKiBuYW1lKQoreworICAgIHJldHVybiBt
TWFjcm9zLmZpbmQoKm5hbWUpICE9IG1NYWNyb3MuZW5kKCk7Cit9CisKKy8vIFJlc2V0IHRvIGlu
aXRpYWxpemVkIHN0YXRlLgordm9pZCBDb250ZXh0OjpyZXNldCgpCit7CisgICAgc3RkOjpmb3Jf
ZWFjaChtTWFjcm9zLmJlZ2luKCksIG1NYWNyb3MuZW5kKCksIERlbGV0ZVNlY29uZCgpKTsKKyAg
ICBtTWFjcm9zLmNsZWFyKCk7CisKKyAgICBkZWxldGUgbUlucHV0OworICAgIG1JbnB1dCA9IE5V
TEw7CisKKyAgICBtT3V0cHV0ID0gTlVMTDsKK30KKwordm9pZCBDb250ZXh0OjpkZWZpbmVCdWls
dEluTWFjcm8oY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsIGludCB2YWx1ZSkKK3sKKyAgICBzdGQ6
Om9zdHJpbmdzdHJlYW0gc3RyZWFtOworICAgIHN0cmVhbSA8PCB2YWx1ZTsKKyAgICBUb2tlbiog
dG9rZW4gPSBuZXcgVG9rZW4oMCwgSU5UX0NPTlNUQU5ULCBuZXcgc3RkOjpzdHJpbmcoc3RyZWFt
LnN0cigpKSk7CisgICAgVG9rZW5WZWN0b3IqIHJlcGxhY2VtZW50cyA9IG5ldyBwcDo6VG9rZW5W
ZWN0b3IoMSwgdG9rZW4pOworCisgICAgbU1hY3Jvc1tuYW1lXSA9IG5ldyBNYWNybyhNYWNybzo6
a1R5cGVPYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgc3RkOjpzdHJpbmco
bmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRzKTsKK30KKworfSAgLy8gbmFtZXNwYWNlIHBw
CisKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVw
cm9jZXNzb3IvbmV3L0NvbnRleHQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9wcmVwcm9jZXNzb3IvbmV3L0NvbnRleHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hODEyNzQ3MTk5YmY5
NDA4ZjM0ZWMxNmZlZjVmM2NkNzA0NmFlYjdlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9uZXcvQ29udGV4dC5oCkBA
IC0wLDAgKzEsNjAgQEAKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTEgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisjaWZuZGVmIENPTVBJTEVSX1BSRVBST0NF
U1NPUl9DT05URVhUX0hfCisjZGVmaW5lIENPTVBJTEVSX1BSRVBST0NFU1NPUl9DT05URVhUX0hf
CisKKyNpbmNsdWRlIDxtYXA+CisKKyNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgorI2lu
Y2x1ZGUgIklucHV0LmgiCisjaW5jbHVkZSAiTWFjcm8uaCIKKyNpbmNsdWRlICJUb2tlbi5oIgor
CituYW1lc3BhY2UgcHAKK3sKKworY2xhc3MgQ29udGV4dAoreworICBwdWJsaWM6CisgICAgQ29u
dGV4dCgpOworICAgIH5Db250ZXh0KCk7CisKKyAgICBib29sIGluaXQoKTsKKyAgICBib29sIHBy
b2Nlc3MoaW50IGNvdW50LCBjb25zdCBjaGFyKiBjb25zdCBzdHJpbmdbXSwgY29uc3QgaW50IGxl
bmd0aFtdLAorICAgICAgICAgICAgICAgICBUb2tlblZlY3Rvciogb3V0cHV0KTsKKworICAgIHZv
aWQqIGxleGVyKCkgeyByZXR1cm4gbUxleGVyOyB9CisgICAgaW50IHJlYWRJbnB1dChjaGFyKiBi
dWYsIGludCBtYXhTaXplKTsKKyAgICBUb2tlblZlY3Rvciogb3V0cHV0KCkgeyByZXR1cm4gbU91
dHB1dDsgfQorCisgICAgYm9vbCBkZWZpbmVNYWNybyhwcDo6VG9rZW46OkxvY2F0aW9uIGxvY2F0
aW9uLAorICAgICAgICAgICAgICAgICAgICAgcHA6Ok1hY3JvOjpUeXBlIHR5cGUsCisgICAgICAg
ICAgICAgICAgICAgICBzdGQ6OnN0cmluZyogbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgIHBw
OjpUb2tlblZlY3RvciogcGFyYW1ldGVycywKKyAgICAgICAgICAgICAgICAgICAgIHBwOjpUb2tl
blZlY3RvciogcmVwbGFjZW1lbnRzKTsKKyAgICBib29sIHVuZGVmaW5lTWFjcm8oY29uc3Qgc3Rk
OjpzdHJpbmcqIG5hbWUpOworICAgIGJvb2wgaXNNYWNyb0RlZmluZWQoY29uc3Qgc3RkOjpzdHJp
bmcqIG5hbWUpOworCisgIHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKENv
bnRleHQpOworICAgIHR5cGVkZWYgc3RkOjptYXA8c3RkOjpzdHJpbmcsIE1hY3JvKj4gTWFjcm9T
ZXQ7CisKKyAgICB2b2lkIHJlc2V0KCk7CisgICAgYm9vbCBpbml0TGV4ZXIoKTsKKyAgICB2b2lk
IGRlc3Ryb3lMZXhlcigpOworICAgIHZvaWQgZGVmaW5lQnVpbHRJbk1hY3JvKGNvbnN0IHN0ZDo6
c3RyaW5nJiBuYW1lLCBpbnQgdmFsdWUpOworICAgIGJvb2wgcGFyc2UoKTsKKworICAgIHZvaWQq
IG1MZXhlcjsgIC8vIExleGVyIGhhbmRsZS4KKyAgICBJbnB1dCogbUlucHV0OworICAgIFRva2Vu
VmVjdG9yKiBtT3V0cHV0OworICAgIE1hY3JvU2V0IG1NYWNyb3M7ICAvLyBEZWZpbmVkIG1hY3Jv
cy4KK307CisKK30gIC8vIG5hbWVzcGFjZSBwcAorI2VuZGlmICAvLyBDT01QSUxFUl9QUkVQUk9D
RVNTT1JfQ09OVEVYVF9IXworCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9z
cmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL25ldy9JbnB1dC5jcHAgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL25ldy9JbnB1dC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNjk0YzNiZGE4M2UwN2QzNDI2OWQ3M2Q3ZWQ0Njg4NjJjMDg3MzY3YQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3Iv
bmV3L0lucHV0LmNwcApAQCAtMCwwICsxLDE2NSBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAx
MSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNl
IG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0
aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKyNpbmNsdWRl
ICJJbnB1dC5oIgorCisjaW5jbHVkZSA8Y3N0ZGlvPgorCisjaW5jbHVkZSAiY29tcGlsZXIvZGVi
dWcuaCIKKworbmFtZXNwYWNlIHBwCit7CisKK0lucHV0OjpJbnB1dChpbnQgY291bnQsIGNvbnN0
IGNoYXIqIGNvbnN0IHN0cmluZ1tdLCBjb25zdCBpbnQgbGVuZ3RoW10pCisgICAgOiBtQ291bnQo
Y291bnQpLAorICAgICAgbVN0cmluZyhzdHJpbmcpLAorICAgICAgbUxlbmd0aChsZW5ndGgpLAor
ICAgICAgbUluZGV4KC0xKSwKKyAgICAgIG1TaXplKDApLAorICAgICAgbUVycm9yKGtFcnJvck5v
bmUpLAorICAgICAgbVN0YXRlKGtTdGF0ZUluaXRpYWwpCit7CisgICAgQVNTRVJUKG1Db3VudCA+
PSAwKTsKKyAgICBzd2l0Y2hUb05leHRTdHJpbmcoKTsKK30KKworYm9vbCBJbnB1dDo6ZW9mKCkg
Y29uc3QKK3sKKyAgICBBU1NFUlQobUluZGV4IDw9IG1Db3VudCk7CisgICAgcmV0dXJuIG1JbmRl
eCA9PSBtQ291bnQ7Cit9CisKK2ludCBJbnB1dDo6cmVhZChjaGFyKiBidWYsIGludCBidWZTaXpl
KQoreworICAgIGludCBucmVhZCA9IDA7CisgICAgaW50IHN0YXJ0SW5kZXggPSBtSW5kZXg7Cisg
ICAgLy8gS2VlcCByZWFkaW5nIHVudGlsIHRoZSBidWZmZXIgaXMgZnVsbCBvciB0aGUgY3VycmVu
dCBzdHJpbmcgaXMgZXhoYXVzdGVkLgorICAgIHdoaWxlICgobUluZGV4ID09IHN0YXJ0SW5kZXgp
ICYmIChucmVhZCA8IGJ1ZlNpemUpKQorICAgIHsKKyAgICAgICAgaW50IGMgPSBnZXRDaGFyKCk7
CisgICAgICAgIGlmIChjID09IEVPRikKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKG1TdGF0
ZSA9PSBrU3RhdGVCbG9ja0NvbW1lbnQpCisgICAgICAgICAgICAgICAgbUVycm9yID0ga0Vycm9y
VW5leHBlY3RlZEVPRjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAg
c3dpdGNoIChtU3RhdGUpCisgICAgICAgIHsKKyAgICAgICAgICBjYXNlIGtTdGF0ZUluaXRpYWw6
CisgICAgICAgICAgICBpZiAoYyA9PSAnLycpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgLy8gUG90ZW50aWFsbHkgYSBjb21tZW50LgorICAgICAgICAgICAgICAgIHN3aXRjaCAocGVl
a0NoYXIoKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICBjYXNlICcvJzoK
KyAgICAgICAgICAgICAgICAgICAgZ2V0Q2hhcigpOyAgLy8gRWF0ICcvJy4KKyAgICAgICAgICAg
ICAgICAgICAgbVN0YXRlID0ga1N0YXRlTGluZUNvbW1lbnQ7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgICAgY2FzZSAnKic6CisgICAgICAgICAgICAgICAgICAg
IGdldENoYXIoKTsgIC8vIEVhdCAnKicuCisgICAgICAgICAgICAgICAgICAgIG1TdGF0ZSA9IGtT
dGF0ZUJsb2NrQ29tbWVudDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAvLyBOb3QgYSBjb21tZW50Lgor
ICAgICAgICAgICAgICAgICAgICBidWZbbnJlYWQrK10gPSBjOworICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBidWZbbnJlYWQrK10gPSBjOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICBjYXNlIGtTdGF0ZUxpbmVDb21tZW50Ogor
ICAgICAgICAgICAgaWYgKGMgPT0gJ1xuJykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICBidWZbbnJlYWQrK10gPSBjOworICAgICAgICAgICAgICAgIG1TdGF0ZSA9IGtTdGF0ZUluaXRp
YWw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgIGNhc2Ug
a1N0YXRlQmxvY2tDb21tZW50OgorICAgICAgICAgICAgaWYgKGMgPT0gJyonICYmIChwZWVrQ2hh
cigpID09ICcvJykpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZ2V0Q2hhcigpOyAg
IC8vIEVhdCAnLycuCisgICAgICAgICAgICAgICAgYnVmW25yZWFkKytdID0gJyAnOyAgLy8gUmVw
bGFjZSBjb21tZW50IHdpdGggd2hpdGVzcGFjZS4KKyAgICAgICAgICAgICAgICBtU3RhdGUgPSBr
U3RhdGVJbml0aWFsOworICAgICAgICAgICAgfSBlbHNlIGlmIChjID09ICdcbicpCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgLy8gTGluZSBicmVha3MgYXJlIG5ldmVyIHNraXBwZWQu
CisgICAgICAgICAgICAgICAgYnVmW25yZWFkKytdID0gYzsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIEFTU0VSVChm
YWxzZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVy
biBucmVhZDsKK30KKworaW50IElucHV0OjpnZXRDaGFyKCkKK3sKKyAgICBpZiAoZW9mKCkpIHJl
dHVybiBFT0Y7CisKKyAgICBjb25zdCBjaGFyKiBzdHIgPSBtU3RyaW5nW21JbmRleF07CisgICAg
aW50IGMgPSBzdHJbbVNpemUrK107CisKKyAgICAvLyBTd2l0Y2ggdG8gbmV4dCBzdHJpbmcgaWYg
dGhlIGN1cnJlbnQgb25lIGlzIGZ1bGx5IHJlYWQuCisgICAgaW50IGxlbmd0aCA9IHN0cmluZ0xl
bmd0aChtSW5kZXgpOworICAgIC8vIFdlIG5ldmVyIHJlYWQgZnJvbSBlbXB0eSBzdHJpbmcuCisg
ICAgQVNTRVJUKGxlbmd0aCAhPSAwKTsKKyAgICBpZiAoKChsZW5ndGggPCAwKSAmJiAoc3RyW21T
aXplXSA9PSAnXDAnKSkgfHwKKyAgICAgICAgKChsZW5ndGggPiAwKSAmJiAobVNpemUgPT0gbGVu
Z3RoKSkpCisgICAgICAgIHN3aXRjaFRvTmV4dFN0cmluZygpOworCisgICAgcmV0dXJuIGM7Cit9
CisKK2ludCBJbnB1dDo6cGVla0NoYXIoKQoreworICAgIC8vIFNhdmUgdGhlIGN1cnJlbnQgcmVh
ZCBwb3NpdGlvbi4KKyAgICBpbnQgaW5kZXggPSBtSW5kZXg7CisgICAgaW50IHNpemUgPSBtU2l6
ZTsKKyAgICBpbnQgYyA9IGdldENoYXIoKTsKKworICAgIC8vIFJlc3RvcmUgcmVhZCBwb3NpdGlv
bi4KKyAgICBtSW5kZXggPSBpbmRleDsKKyAgICBtU2l6ZSA9IHNpemU7CisgICAgcmV0dXJuIGM7
Cit9CisKK3ZvaWQgSW5wdXQ6OnN3aXRjaFRvTmV4dFN0cmluZygpCit7CisgICAgQVNTRVJUKG1J
bmRleCA8IG1Db3VudCk7CisKKyAgICBtU2l6ZSA9IDA7CisgICAgZG8KKyAgICB7CisgICAgICAg
ICsrbUluZGV4OworICAgIH0gd2hpbGUgKCFlb2YoKSAmJiBpc1N0cmluZ0VtcHR5KG1JbmRleCkp
OworfQorCitib29sIElucHV0Ojppc1N0cmluZ0VtcHR5KGludCBpbmRleCkKK3sKKyAgICBBU1NF
UlQoaW5kZXggPCBtQ291bnQpOworCisgICAgY29uc3QgY2hhciogc3RyID0gbVN0cmluZ1ttSW5k
ZXhdOworICAgIGludCBsZW5ndGggPSBzdHJpbmdMZW5ndGgobUluZGV4KTsKKyAgICByZXR1cm4g
KGxlbmd0aCA9PSAwKSB8fCAoKGxlbmd0aCA8IDApICYmIChzdHJbMF0gPT0gJ1wwJykpOworfQor
CitpbnQgSW5wdXQ6OnN0cmluZ0xlbmd0aChpbnQgaW5kZXgpCit7CisgICAgQVNTRVJUKGluZGV4
IDwgbUNvdW50KTsKKyAgICByZXR1cm4gbUxlbmd0aCA/IG1MZW5ndGhbaW5kZXhdIDogLTE7Cit9
CisKK30gIC8vIG5hbWVzcGFjZSBwcAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL25ldy9JbnB1dC5oIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9uZXcvSW5wdXQuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi41YTFiNWQxYTQ5NjdmZmZjMTdlMTAzNTFkYzlmZDJjNjIwMzJjNzZjCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nv
ci9uZXcvSW5wdXQuaApAQCAtMCwwICsxLDc0IEBACisvLworLy8gQ29weXJpZ2h0IChjKSAyMDEx
IFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ug
b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo
YXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworI2lmbmRlZiBD
T01QSUxFUl9QUkVQUk9DRVNTT1JfSU5QVVRfSF8KKyNkZWZpbmUgQ09NUElMRVJfUFJFUFJPQ0VT
U09SX0lOUFVUX0hfCisKK25hbWVzcGFjZSBwcAoreworCisvLyBSZWFkcyB0aGUgZ2l2ZW4gc2V0
IG9mIHN0cmluZ3MgaW50byBpbnB1dCBidWZmZXIuCisvLyBTdHJpcHMgY29tbWVudHMuCitjbGFz
cyBJbnB1dAoreworICBwdWJsaWM6CisgICAgSW5wdXQoaW50IGNvdW50LCBjb25zdCBjaGFyKiBj
b25zdCBzdHJpbmdbXSwgY29uc3QgaW50IGxlbmd0aFtdKTsKKworICAgIGVudW0gRXJyb3IKKyAg
ICB7CisgICAgICAgIGtFcnJvck5vbmUsCisgICAgICAgIGtFcnJvclVuZXhwZWN0ZWRFT0YKKyAg
ICB9OworICAgIEVycm9yIGVycm9yKCkgY29uc3QgeyByZXR1cm4gbUVycm9yOyB9CisKKyAgICAv
LyBSZXR1cm5zIHRoZSBpbmRleCBvZiBzdHJpbmcgY3VycmVudGx5IGJlaW5nIHNjYW5uZWQuCisg
ICAgaW50IHN0cmluZ0luZGV4KCkgY29uc3QgeyByZXR1cm4gbUluZGV4OyB9CisgICAgLy8gUmV0
dXJucyB0cnVlIGlmIEVPRiBoYXMgcmVhY2hlZC4KKyAgICBib29sIGVvZigpIGNvbnN0OworCisg
ICAgLy8gUmVhZHMgdXAgdG8gYnVmU2l6ZSBjaGFyYWN0ZXJzIGludG8gYnVmLgorICAgIC8vIFJl
dHVybnMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHJlYWQuCisgICAgLy8gSXQgcmVwbGFjZXMg
ZWFjaCBjb21tZW50IGJ5IGEgd2hpdGVzcGFjZS4gSXQgcmVhZHMgb25seSBvbmUgc3RyaW5nCisg
ICAgLy8gYXQgYSB0aW1lIHNvIHRoYXQgdGhlIGxleGVyIGhhcyBvcHBvcnR1bml0eSB0byB1cGRh
dGUgdGhlIHN0cmluZyBudW1iZXIKKyAgICAvLyBmb3IgbWVhbmluZ2Z1bCBkaWFnbm9zdGljIG1l
c3NhZ2VzLgorICAgIGludCByZWFkKGNoYXIqIGJ1ZiwgaW50IGJ1ZlNpemUpOworCitwcml2YXRl
OgorICAgIGVudW0gU3RhdGUKKyAgICB7CisgICAgICAgIGtTdGF0ZUluaXRpYWwsCisgICAgICAg
IGtTdGF0ZUxpbmVDb21tZW50LAorICAgICAgICBrU3RhdGVCbG9ja0NvbW1lbnQKKyAgICB9Owor
CisgICAgaW50IGdldENoYXIoKTsKKyAgICBpbnQgcGVla0NoYXIoKTsKKyAgICAvLyBTd2l0Y2hl
cyBpbnB1dCBidWZmZXIgdG8gdGhlIG5leHQgbm9uLWVtcHR5IHN0cmluZy4KKyAgICAvLyBUaGlz
IGlzIGNhbGxlZCB3aGVuIHRoZSBjdXJyZW50IHN0cmluZyBpcyBmdWxseSByZWFkLgorICAgIHZv
aWQgc3dpdGNoVG9OZXh0U3RyaW5nKCk7CisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZl
biBzdHJpbmcgaXMgZW1wdHkuCisgICAgYm9vbCBpc1N0cmluZ0VtcHR5KGludCBpbmRleCk7Cisg
ICAgLy8gUmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIGdpdmVuIHN0cmluZy4KKyAgICAvLyBSZXR1
cm5zIGEgbmVnYXRpdmUgdmFsdWUgZm9yIG51bGwtdGVybWluYXRlZCBzdHJpbmdzLgorICAgIGlu
dCBzdHJpbmdMZW5ndGgoaW50IGluZGV4KTsKKworICAgIC8vIElucHV0LgorICAgIGludCBtQ291
bnQ7CisgICAgY29uc3QgY2hhciogY29uc3QqIG1TdHJpbmc7CisgICAgY29uc3QgaW50KiBtTGVu
Z3RoOworCisgICAgLy8gQ3VycmVudCByZWFkIHBvc2l0aW9uLgorICAgIGludCBtSW5kZXg7ICAg
Ly8gSW5kZXggb2Ygc3RyaW5nIGN1cnJlbnRseSBiZWluZyBzY2FubmVkLgorICAgIGludCBtU2l6
ZTsgICAgLy8gU2l6ZSBvZiBzdHJpbmcgYWxyZWFkeSBzY2FubmVkLgorCisgICAgLy8gQ3VycmVu
dCBlcnJvciBhbmQgc3RhdGUuCisgICAgRXJyb3IgbUVycm9yOworICAgIFN0YXRlIG1TdGF0ZTsK
K307CisKK30gIC8vIG5hbWVzcGFjZSBwcAorI2VuZGlmICAvLyBDT01QSUxFUl9QUkVQUk9DRVNT
T1JfSU5QVVRfSF8KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2Nv
bXBpbGVyL3ByZXByb2Nlc3Nvci9uZXcvTWFjcm8uY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9uZXcvTWFjcm8uY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZj
Y2NhOTY2ZGQ5YmVlMjk3OTkyZjJkZDU3YzgzMjNjYjQyMzQxZTMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL25ldy9N
YWNyby5jcHAKQEAgLTAsMCArMSw0NSBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMSBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKyNpbmNsdWRlICJNYWNy
by5oIgorCisjaW5jbHVkZSA8YWxnb3JpdGhtPgorCisjaW5jbHVkZSAic3RsX3V0aWxzLmgiCisK
K25hbWVzcGFjZSBwcAoreworCitNYWNybzo6TWFjcm8oVHlwZSB0eXBlLAorICAgICAgICAgICAg
IHN0ZDo6c3RyaW5nKiBuYW1lLAorICAgICAgICAgICAgIFRva2VuVmVjdG9yKiBwYXJhbWV0ZXJz
LAorICAgICAgICAgICAgIFRva2VuVmVjdG9yKiByZXBsYWNlbWVudHMpCisgICAgOiBtVHlwZSh0
eXBlKSwKKyAgICAgIG1OYW1lKG5hbWUpLAorICAgICAgbVBhcmFtZXRlcnMocGFyYW1ldGVycyks
CisgICAgICBtUmVwbGFjZW1lbnRzKHJlcGxhY2VtZW50cykKK3sKK30KKworTWFjcm86On5NYWNy
bygpCit7CisgICAgZGVsZXRlIG1OYW1lOworCisgICAgaWYgKG1QYXJhbWV0ZXJzKQorICAgIHsK
KyAgICAgICAgc3RkOjpmb3JfZWFjaChtUGFyYW1ldGVycy0+YmVnaW4oKSwgbVBhcmFtZXRlcnMt
PmVuZCgpLCBEZWxldGUoKSk7CisgICAgICAgIGRlbGV0ZSBtUGFyYW1ldGVyczsKKyAgICB9CisK
KyAgICBpZiAobVJlcGxhY2VtZW50cykKKyAgICB7CisgICAgICAgIHN0ZDo6Zm9yX2VhY2gobVJl
cGxhY2VtZW50cy0+YmVnaW4oKSwgbVJlcGxhY2VtZW50cy0+ZW5kKCksIERlbGV0ZSgpKTsKKyAg
ICAgICAgZGVsZXRlIG1SZXBsYWNlbWVudHM7CisgICAgfQorfQorCit9ICAvLyBuYW1lc3BhY2Ug
cHAKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3By
ZXByb2Nlc3Nvci9uZXcvTWFjcm8uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9wcmVwcm9jZXNzb3IvbmV3L01hY3JvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTI0MzMwNjYwY2IxNjJk
ODhkYTJkZTRkNTUzZGQwYjM1MTE4MjMwZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvbmV3L01hY3JvLmgKQEAgLTAs
MCArMSw1MSBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMSBUaGUgQU5HTEUgUHJvamVjdCBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUg
aXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQg
aW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKyNpZm5kZWYgQ09NUElMRVJfUFJFUFJPQ0VTU09S
X01BQ1JPX0hfCisjZGVmaW5lIENPTVBJTEVSX1BSRVBST0NFU1NPUl9NQUNST19IXworCisjaW5j
bHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1ZGUgImNvbW1vbi9hbmds
ZXV0aWxzLmgiCisjaW5jbHVkZSAiVG9rZW4uaCIKKworbmFtZXNwYWNlIHBwCit7CisKK2NsYXNz
IE1hY3JvCit7CisgIHB1YmxpYzoKKyAgICBlbnVtIFR5cGUKKyAgICB7CisgICAgICAgIGtUeXBl
T2JqLAorICAgICAgICBrVHlwZUZ1bmMKKyAgICB9OworCisgICAgLy8gVGFrZXMgb3duZXJzaGlw
IG9mIHBvaW50ZXIgcGFyYW1ldGVycy4KKyAgICBNYWNybyhUeXBlIHR5cGUsCisgICAgICAgICAg
c3RkOjpzdHJpbmcqIG5hbWUsCisgICAgICAgICAgVG9rZW5WZWN0b3IqIHBhcmFtZXRlcnMsCisg
ICAgICAgICAgVG9rZW5WZWN0b3IqIHJlcGxhY2VtZW50cyk7CisgICAgfk1hY3JvKCk7CisKKyAg
ICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtVHlwZTsgfQorICAgIGNvbnN0IHN0ZDo6c3Ry
aW5nKiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbU5hbWU7IH0KKyAgICBjb25zdCBUb2tl
blZlY3RvciogcGFyYW1ldGVycygpIGNvbnN0IHsgcmV0dXJuIG1QYXJhbWV0ZXJzOyB9CisgICAg
Y29uc3QgVG9rZW5WZWN0b3IqIHJlcGxhY2VtZW50cygpIGNvbnN0IHsgcmV0dXJuIG1SZXBsYWNl
bWVudHM7IH0KKworICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihNYWNy
byk7CisKKyAgICBUeXBlIG1UeXBlOworICAgIHN0ZDo6c3RyaW5nKiBtTmFtZTsKKyAgICBUb2tl
blZlY3RvciogbVBhcmFtZXRlcnM7CisgICAgVG9rZW5WZWN0b3IqIG1SZXBsYWNlbWVudHM7Cit9
OworCit9ICAvLyBuYW1lc3BhY2UgcHAKKyNlbmRpZiBDT01QSUxFUl9QUkVQUk9DRVNTT1JfTUFD
Uk9fSF8KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3ByZXByb2Nlc3Nvci9uZXcvUHJlcHJvY2Vzc29yLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvbmV3L1ByZXByb2Nlc3Nvci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZWY0OWU1NzcyMmQ2ZDQ3NWY1ZDU4ZmEzZTI4YmIwNjRjNmJhMmVmMgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNz
b3IvbmV3L1ByZXByb2Nlc3Nvci5jcHAKQEAgLTAsMCArMSw1MyBAQAorLy8KKy8vIENvcHlyaWdo
dCAoYykgMjAxMSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg
bGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisK
KyNpbmNsdWRlICJQcmVwcm9jZXNzb3IuaCIKKworI2luY2x1ZGUgPGFsZ29yaXRobT4KKworI2lu
Y2x1ZGUgImNvbXBpbGVyL2RlYnVnLmgiCisjaW5jbHVkZSAiQ29udGV4dC5oIgorI2luY2x1ZGUg
InN0bF91dGlscy5oIgorCituYW1lc3BhY2UgcHAKK3sKKworUHJlcHJvY2Vzc29yOjpQcmVwcm9j
ZXNzb3IoKSA6IG1Db250ZXh0KE5VTEwpCit7Cit9CisKK1ByZXByb2Nlc3Nvcjo6flByZXByb2Nl
c3NvcigpCit7CisgICAgZGVsZXRlIG1Db250ZXh0OworfQorCitib29sIFByZXByb2Nlc3Nvcjo6
aW5pdCgpCit7CisgICAgbUNvbnRleHQgPSBuZXcgQ29udGV4dDsKKyAgICByZXR1cm4gbUNvbnRl
eHQtPmluaXQoKTsKK30KKworYm9vbCBQcmVwcm9jZXNzb3I6OnByb2Nlc3MoaW50IGNvdW50LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogY29uc3Qgc3RyaW5nW10sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQgbGVuZ3RoW10pCit7CisgICAgQVNT
RVJUKChjb3VudCA+PTApICYmIChzdHJpbmcgIT0gTlVMTCkpOworICAgIGlmICgoY291bnQgPCAw
KSB8fCAoc3RyaW5nID09IE5VTEwpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXNl
dCgpOworCisgICAgcmV0dXJuIG1Db250ZXh0LT5wcm9jZXNzKGNvdW50LCBzdHJpbmcsIGxlbmd0
aCwgJm1Ub2tlbnMpOworfQorCit2b2lkIFByZXByb2Nlc3Nvcjo6cmVzZXQoKQoreworICAgIHN0
ZDo6Zm9yX2VhY2gobVRva2Vucy5iZWdpbigpLCBtVG9rZW5zLmVuZCgpLCBEZWxldGUoKSk7Cisg
ICAgbVRva2Vucy5jbGVhcigpOworfQorCit9ICAvLyBuYW1lc3BhY2UgcHAKKwpkaWZmIC0tZ2l0
IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9uZXcv
UHJlcHJvY2Vzc29yLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJl
cHJvY2Vzc29yL25ldy9QcmVwcm9jZXNzb3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44ODViYjcwZGQ0NTdkYTNi
OGIzOTEwNWQzMDk4MzQxYjkxODJiNDRkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9uZXcvUHJlcHJvY2Vzc29yLmgK
QEAgLTAsMCArMSw0MiBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMSBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKyNpZm5kZWYgQ09NUElMRVJfUFJFUFJP
Q0VTU09SX1BSRVBST0NFU1NPUl9IXworI2RlZmluZSBDT01QSUxFUl9QUkVQUk9DRVNTT1JfUFJF
UFJPQ0VTU09SX0hfCisKKyNpbmNsdWRlICJjb21tb24vYW5nbGV1dGlscy5oIgorI2luY2x1ZGUg
IlRva2VuLmgiCisKK25hbWVzcGFjZSBwcAoreworCitjbGFzcyBDb250ZXh0OworCitjbGFzcyBQ
cmVwcm9jZXNzb3IKK3sKKyAgcHVibGljOgorICAgIFByZXByb2Nlc3NvcigpOworICAgIH5QcmVw
cm9jZXNzb3IoKTsKKworICAgIGJvb2wgaW5pdCgpOworCisgICAgYm9vbCBwcm9jZXNzKGludCBj
b3VudCwgY29uc3QgY2hhciogY29uc3Qgc3RyaW5nW10sIGNvbnN0IGludCBsZW5ndGhbXSk7Cisg
ICAgVG9rZW5JdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1Ub2tlbnMuYmVnaW4oKTsg
fQorICAgIFRva2VuSXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbVRva2Vucy5lbmQoKTsg
fQorCisgIHByaXZhdGU6CisgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFByZXByb2Nlc3Nv
cik7CisKKyAgICAvLyBSZXNldCB0byBpbml0aWFsaXplZCBzdGF0ZS4KKyAgICB2b2lkIHJlc2V0
KCk7CisKKyAgICBDb250ZXh0KiBtQ29udGV4dDsKKyAgICBUb2tlblZlY3RvciBtVG9rZW5zOyAg
Ly8gT3V0cHV0LgorfTsKKworfSAgLy8gbmFtZXNwYWNlIHBwCisjZW5kaWYgIC8vIENPTVBJTEVS
X1BSRVBST0NFU1NPUl9QUkVQUk9DRVNTT1JfSF8KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9uZXcvVG9rZW4uY3BwIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9uZXcvVG9rZW4u
Y3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmEyZTc1OWM2OTE5YmMxZmQyMDc4NGZjYTY1YTBhZDk4YzhhYjIyYTIK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
cHJlcHJvY2Vzc29yL25ldy9Ub2tlbi5jcHAKQEAgLTAsMCArMSw1NSBAQAorLy8KKy8vIENvcHly
aWdodCAoYykgMjAxMSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8v
CisKKyNpbmNsdWRlICJUb2tlbi5oIgorCisjaW5jbHVkZSAidG9rZW5fdHlwZS5oIgorCitzdGF0
aWMgY29uc3QgaW50IGtMb2NhdGlvbkxpbmVTaXplID0gMTY7ICAvLyBpbiBiaXRzLgorc3RhdGlj
IGNvbnN0IGludCBrTG9jYXRpb25MaW5lTWFzayA9ICgxIDw8IGtMb2NhdGlvbkxpbmVTaXplKSAt
IDE7CisKK25hbWVzcGFjZSBwcAoreworCitUb2tlbjo6TG9jYXRpb24gVG9rZW46OmVuY29kZUxv
Y2F0aW9uKGludCBsaW5lLCBpbnQgZmlsZSkKK3sKKyAgICByZXR1cm4gKGZpbGUgPDwga0xvY2F0
aW9uTGluZVNpemUpIHwgKGxpbmUgJiBrTG9jYXRpb25MaW5lTWFzayk7Cit9CisKK3ZvaWQgVG9r
ZW46OmRlY29kZUxvY2F0aW9uKExvY2F0aW9uIGxvYywgaW50KiBsaW5lLCBpbnQqIGZpbGUpCit7
CisgICAgaWYgKGZpbGUpICpmaWxlID0gbG9jID4+IGtMb2NhdGlvbkxpbmVTaXplOworICAgIGlm
IChsaW5lKSAqbGluZSA9IGxvYyAmIGtMb2NhdGlvbkxpbmVNYXNrOworfQorCitUb2tlbjo6VG9r
ZW4oTG9jYXRpb24gbG9jYXRpb24sIGludCB0eXBlLCBzdGQ6OnN0cmluZyogdmFsdWUpCisgICAg
OiBtTG9jYXRpb24obG9jYXRpb24pLAorICAgICAgbVR5cGUodHlwZSksCisgICAgICBtVmFsdWUo
dmFsdWUpCit7Cit9CisKK1Rva2VuOjp+VG9rZW4oKSB7CisgICAgZGVsZXRlIG1WYWx1ZTsKK30K
Kworc3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0cmVhbSYgb3V0LCBjb25zdCBUb2tl
biYgdG9rZW4pCit7CisgICAgc3dpdGNoICh0b2tlbi50eXBlKCkpCisgICAgeworICAgICAgY2Fz
ZSBJTlRfQ09OU1RBTlQ6CisgICAgICBjYXNlIEZMT0FUX0NPTlNUQU5UOgorICAgICAgY2FzZSBJ
REVOVElGSUVSOgorICAgICAgICBvdXQgPDwgKih0b2tlbi52YWx1ZSgpKTsKKyAgICAgICAgYnJl
YWs7CisgICAgICBkZWZhdWx0OgorICAgICAgICBvdXQgPDwgc3RhdGljX2Nhc3Q8Y2hhcj4odG9r
ZW4udHlwZSgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBvdXQ7Cit9Cit9
ICAvLyBuYW1lc3BhY2UgcHAKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9uZXcvVG9rZW4uaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvbmV3L1Rva2VuLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGY1YTEyYmYxNmM2NTg0MWMxMzMzNjRmZjI2OWE0ZGNlYzBiYmZiNwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvbmV3
L1Rva2VuLmgKQEAgLTAsMCArMSw0OCBAQAorLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMSBUaGUg
QU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRo
aXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNh
biBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKyNpZm5kZWYgQ09NUElM
RVJfUFJFUFJPQ0VTU09SX1RPS0VOX0hfCisjZGVmaW5lIENPTVBJTEVSX1BSRVBST0NFU1NPUl9U
T0tFTl9IXworCisjaW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHZlY3Rvcj4KKworI2luY2x1
ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCisKK25hbWVzcGFjZSBwcAoreworCitjbGFzcyBUb2tl
bgoreworICBwdWJsaWM6CisgICAgdHlwZWRlZiBpbnQgTG9jYXRpb247CisgICAgc3RhdGljIExv
Y2F0aW9uIGVuY29kZUxvY2F0aW9uKGludCBsaW5lLCBpbnQgZmlsZSk7CisgICAgc3RhdGljIHZv
aWQgZGVjb2RlTG9jYXRpb24oTG9jYXRpb24gbG9jLCBpbnQqIGxpbmUsIGludCogZmlsZSk7CisK
KyAgICAvLyBUYWtlcyBvd25lcnNoaXAgb2Ygc3RyaW5nLgorICAgIFRva2VuKExvY2F0aW9uIGxv
Y2F0aW9uLCBpbnQgdHlwZSwgc3RkOjpzdHJpbmcqIHZhbHVlKTsKKyAgICB+VG9rZW4oKTsKKwor
ICAgIExvY2F0aW9uIGxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbUxvY2F0aW9uOyB9CisgICAg
aW50IHR5cGUoKSBjb25zdCB7IHJldHVybiBtVHlwZTsgfQorICAgIGNvbnN0IHN0ZDo6c3RyaW5n
KiB2YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1WYWx1ZTsgfQorCisgIHByaXZhdGU6CisgICAgRElT
QUxMT1dfQ09QWV9BTkRfQVNTSUdOKFRva2VuKTsKKworICAgIExvY2F0aW9uIG1Mb2NhdGlvbjsK
KyAgICBpbnQgbVR5cGU7CisgICAgc3RkOjpzdHJpbmcqIG1WYWx1ZTsKK307CisKK3R5cGVkZWYg
c3RkOjp2ZWN0b3I8VG9rZW4qPiBUb2tlblZlY3RvcjsKK3R5cGVkZWYgVG9rZW5WZWN0b3I6OmNv
bnN0X2l0ZXJhdG9yIFRva2VuSXRlcmF0b3I7CisKK2V4dGVybiBzdGQ6Om9zdHJlYW0mIG9wZXJh
dG9yPDwoc3RkOjpvc3RyZWFtJiBvdXQsIGNvbnN0IFRva2VuJiB0b2tlbik7CisKK30gIC8vIG5h
bWVwc2FjZSBwcAorI2VuZGlmICAvLyBDT01QSUxFUl9QUkVQUk9DRVNTT1JfVE9LRU5fSF8KKwpk
aWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nl
c3Nvci9uZXcvZ2VuZXJhdGVfcGFyc2VyLnNoIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9uZXcvZ2VuZXJhdGVfcGFyc2VyLnNoCm5ldyBmaWxlIG1v
ZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjViMzJmNzFhYzJhZjVmNDk0ZTVkMGI0MzQ0NTE4MjFiZWVjMDYzNjIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL25l
dy9nZW5lcmF0ZV9wYXJzZXIuc2gKQEAgLTAsMCArMSwyNyBAQAorIyEvYmluL2Jhc2gKKyMgQ29w
eXJpZ2h0IChjKSAyMDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0
eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKyMgZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKwor
IyBHZW5lcmF0ZXMgR0xTTCBFUyBwcmVwcm9jZXNzb3IgLSBwcF9sZXguY3BwLCBwcF90YWIuaCwg
YW5kIHBwX3RhYi5jcHAKKworcnVuX2ZsZXgoKQoreworaW5wdXRfZmlsZT0kc2NyaXB0X2Rpci8k
MS5sCitvdXRwdXRfc291cmNlPSRzY3JpcHRfZGlyLyQxX2xleC5jcHAKK2ZsZXggLS1ub2xpbmUg
LS1ub3VuaXN0ZCAtLW91dGZpbGU9JG91dHB1dF9zb3VyY2UgJGlucHV0X2ZpbGUKK30KKworcnVu
X2Jpc29uKCkKK3sKK2lucHV0X2ZpbGU9JHNjcmlwdF9kaXIvJDEueQorb3V0cHV0X2hlYWRlcj0k
c2NyaXB0X2Rpci8kMV90YWIuaAorb3V0cHV0X3NvdXJjZT0kc2NyaXB0X2Rpci8kMV90YWIuY3Bw
CitiaXNvbiAtLW5vLWxpbmVzIC0tc2tlbGV0b249eWFjYy5jIC0tZGVmaW5lcz0kb3V0cHV0X2hl
YWRlciAtLW91dHB1dD0kb3V0cHV0X3NvdXJjZSAkaW5wdXRfZmlsZQorfQorCitzY3JpcHRfZGly
PSQoZGlybmFtZSAkMCkKKworIyBHZW5lcmF0ZSBwcmVwcm9jZXNzb3IKK3J1bl9mbGV4IHBwCity
dW5fYmlzb24gcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21w
aWxlci9wcmVwcm9jZXNzb3IvbmV3L3BwLmwgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvcHJlcHJvY2Vzc29yL25ldy9wcC5sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYyN2NhMDRiMmMwZjUy
MGE4ZWNiNmU4YjlhN2I1N2M4NjdmYjY4ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL25ldy9wcC5sCkBAIC0wLDAg
KzEsMTgxIEBACisvKgorLy8KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDExIFRoZSBBTkdMRSBQ
cm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3Vy
Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisv
LyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKworVGhpcyBmaWxlIGNvbnRhaW5zIHRo
ZSBMZXggc3BlY2lmaWNhdGlvbiBmb3IgR0xTTCBFUyBwcmVwcm9jZXNzb3IuCitCYXNlZCBvbiBN
aWNyb3NvZnQgVmlzdWFsIFN0dWRpbyAyMDEwIFByZXByb2Nlc3NvciBHcmFtbWFyOgoraHR0cDov
L21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5LzJzY3h5czg5LmFzcHgKKworSUYgWU9V
IE1PRElGWSBUSElTIEZJTEUgWU9VIEFMU08gTkVFRCBUTyBSVU4gZ2VuZXJhdGVfcGFyc2VyLnNo
LgorKi8KKworJXRvcHsKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTEgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBj
b2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZv
dW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBUaGlzIGZpbGUgaXMgYXV0by1nZW5l
cmF0ZWQgYnkgZ2VuZXJhdGVfcGFyc2VyLnNoLiBETyBOT1QgRURJVCEKK30KKworJXsKKyNpbmNs
dWRlICJjb21waWxlci9kZWJ1Zy5oIgorI2luY2x1ZGUgIkNvbnRleHQuaCIKKyNpbmNsdWRlICJw
cF90YWIuaCIKKworI2RlZmluZSBZWV9VU0VSX0FDVElPTiAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIHl5bGxvYy0+Zmlyc3RfbGluZSA9IHl5bGluZW5vOyAgICAgICAgXAorICAgICAgICB5eWxs
b2MtPmZpcnN0X2NvbHVtbiA9IHl5Y29sdW1uICsgMTsgIFwKKyAgICAgICAgeXljb2x1bW4gKz0g
eXlsZW5nOyAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSgwKTsKKworI2RlZmluZSBZ
WV9JTlBVVChidWYsIHJlc3VsdCwgbWF4U2l6ZSkgXAorICAgIHJlc3VsdCA9IHl5ZXh0cmEtPnJl
YWRJbnB1dChidWYsIG1heFNpemUpOworICAgIAorc3RhdGljIHN0ZDo6c3RyaW5nKiBleHRyYWN0
TWFjcm9OYW1lKGNvbnN0IGNoYXIqIHN0ciwgaW50IGxlbik7CislfQorCislb3B0aW9uIG5veXl3
cmFwIG5vdW5wdXQgbmV2ZXItaW50ZXJhY3RpdmUKKyVvcHRpb24geXlsaW5lbm8gcmVlbnRyYW50
IGJpc29uLWJyaWRnZSBiaXNvbi1sb2NhdGlvbnMKKyVvcHRpb24gc3RhY2sKKyVvcHRpb24gcHJl
Zml4PSJwcCIKKyVvcHRpb24gZXh0cmEtdHlwZT0icHA6OkNvbnRleHQqIgorCitIU1BBQ0UgICAg
ICBbIFx0XQorSEFTSCAgICAgICAgXntIU1BBQ0V9KiN7SFNQQUNFfSoKK0lERU5USUZJRVIgIFtf
YS16QS1aXVtfYS16QS1aMC05XSoKK1BVTkNUVUFUT1IgIFtdWzw+KCl7fS4rLS8qJV58Jn49ITo7
LD9dCisKK0RFQ0lNQUxfQ09OU1RBTlQgICAgICBbMS05XVswLTldKgorT0NUQUxfQ09OU1RBTlQg
ICAgICAgIDBbMC03XSoKK0hFWEFERUNJTUFMX0NPTlNUQU5UICAwW3hYXVswLTlhLWZBLUZdKwor
CitESUdJVCAgICAgICAgICAgICAgICBbMC05XQorRVhQT05FTlRfUEFSVCAgICAgICAgW2VFXVsr
LV0/e0RJR0lUfSsKK0ZSQUNUSU9OQUxfQ09OU1RBTlQgICh7RElHSVR9KiIuIntESUdJVH0rKXwo
e0RJR0lUfSsiLiIpCisKKyUlCisKK3tIQVNIfSB7IHJldHVybiBIQVNIOyB9CisKK3tIQVNIfWRl
ZmluZXtIU1BBQ0V9K3tJREVOVElGSUVSfS9bIFx0XG5dIHsKKyAgICB5eWx2YWwtPnN2YWwgPSBl
eHRyYWN0TWFjcm9OYW1lKHl5dGV4dCwgeXlsZW5nKTsKKyAgICByZXR1cm4gSEFTSF9ERUZJTkVf
T0JKOworfQore0hBU0h9ZGVmaW5le0hTUEFDRX0re0lERU5USUZJRVJ9LyIoIiB7CisgICAgeXls
dmFsLT5zdmFsID0gZXh0cmFjdE1hY3JvTmFtZSh5eXRleHQsIHl5bGVuZyk7CisgICAgcmV0dXJu
IEhBU0hfREVGSU5FX0ZVTkM7Cit9Cit7SEFTSH11bmRlZntIU1BBQ0V9KyB7IHJldHVybiBIQVNI
X1VOREVGOyB9CisKK3tIQVNIfWlmIHsgcmV0dXJuIEhBU0hfSUY7IH0KK3tIQVNIfWlmZGVmIHsg
cmV0dXJuIEhBU0hfSUZERUY7IH0KK3tIQVNIfWlmbmRlZiB7IHJldHVybiBIQVNIX0lGTkRFRjsg
fQore0hBU0h9ZWxzZSB7IHJldHVybiBIQVNIX0VMU0U7IH0KK3tIQVNIfWVsaWYgeyByZXR1cm4g
SEFTSF9FTElGOyB9Cit7SEFTSH1lbmRpZiB7IHJldHVybiBIQVNIX0VORElGOyB9CisiZGVmaW5l
ZCIgeyByZXR1cm4gREVGSU5FRDsgfQorCit7SEFTSH1lcnJvciB7IHJldHVybiBIQVNIX0VSUk9S
OyB9Cit7SEFTSH1wcmFnbWEgeyByZXR1cm4gSEFTSF9QUkFHTUE7IH0KK3tIQVNIfWV4dGVuc2lv
biB7IHJldHVybiBIQVNIX0VYVEVOU0lPTjsgfQore0hBU0h9dmVyc2lvbiB7IHJldHVybiBIQVNI
X1ZFUlNJT047IH0KK3tIQVNIfWxpbmUgeyByZXR1cm4gSEFTSF9MSU5FOyB9CisKK3tJREVOVElG
SUVSfSB7CisgICAgeXlsdmFsLT5zdmFsID0gbmV3IHN0ZDo6c3RyaW5nKHl5dGV4dCwgeXlsZW5n
KTsKKyAgICByZXR1cm4gSURFTlRJRklFUjsKK30KKwore0RFQ0lNQUxfQ09OU1RBTlR9fHtPQ1RB
TF9DT05TVEFOVH18e0hFWEFERUNJTUFMX0NPTlNUQU5UfSB7CisgICAgeXlsdmFsLT5zdmFsID0g
bmV3IHN0ZDo6c3RyaW5nKHl5dGV4dCwgeXlsZW5nKTsKKyAgICByZXR1cm4gSU5UX0NPTlNUQU5U
OworfQorCisoe0RJR0lUfSt7RVhQT05FTlRfUEFSVH0pfCh7RlJBQ1RJT05BTF9DT05TVEFOVH17
RVhQT05FTlRfUEFSVH0/KSB7CisgICAgeXlsdmFsLT5zdmFsID0gbmV3IHN0ZDo6c3RyaW5nKHl5
dGV4dCwgeXlsZW5nKTsKKyAgICByZXR1cm4gRkxPQVRfQ09OU1RBTlQ7Cit9CisKK3tQVU5DVFVB
VE9SfSB7IHJldHVybiB5eXRleHRbMF07IH0KKworWyBcdFx2XGZdKyB7IC8qIElnbm9yZSB3aGl0
ZXNwYWNlICovIH0KKworXG4geworICAgICsreXlsaW5lbm87IHl5Y29sdW1uID0gMDsKKyAgICBy
ZXR1cm4geXl0ZXh0WzBdOworfQorCis8Kj48PEVPRj4+ICAgICB7IHl5dGVybWluYXRlKCk7IH0K
KworJSUKKworc3RkOjpzdHJpbmcqIGV4dHJhY3RNYWNyb05hbWUoY29uc3QgY2hhciogc3RyLCBp
bnQgbGVuKQoreworICAgIC8vIFRoZSBpbnB1dCBzdHJpbmcgaXMgb2YgdGhlIGZvcm0ge0hBU0h9
ZGVmaW5le0hTUEFDRX0re0lERU5USUZJRVJ9CisgICAgLy8gV2UganVzdCBuZWVkIHRvIGZpbmQg
dGhlIGxhc3QgSFNQQUNFLgorICAgIEFTU0VSVChzdHIgJiYgKGxlbiA+IDgpKTsgIC8vIHN0cmxl
bigiI2RlZmluZSAiKSA9PSA4OworCisgICAgc3RkOjpzdHJpbmcqIG5hbWUgPSBOVUxMOworICAg
IGZvciAoaW50IGkgPSBsZW4gLSAxOyBpID49IDA7IC0taSkKKyAgICB7CisgICAgICAgIGlmICgo
c3RyW2ldID09ICcgJykgfHwgKHN0cltpXSA9PSAnXHQnKSkKKyAgICAgICAgeworICAgICAgICAg
ICAgbmFtZSA9IG5ldyBzdGQ6OnN0cmluZyhzdHIgKyBpICsgMSwgbGVuIC0gaSAtIDEpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgQVNTRVJUKG5hbWUpOworICAg
IHJldHVybiBuYW1lOworfQorCituYW1lc3BhY2UgcHAgeworCitpbnQgQ29udGV4dDo6cmVhZElu
cHV0KGNoYXIqIGJ1ZiwgaW50IG1heFNpemUpCit7CisgICAgaW50IG5yZWFkID0gWVlfTlVMTDsK
KyAgICB3aGlsZSAoIW1JbnB1dC0+ZW9mKCkgJiYKKyAgICAgICAgICAgKG1JbnB1dC0+ZXJyb3Io
KSA9PSBwcDo6SW5wdXQ6OmtFcnJvck5vbmUpICYmCisgICAgICAgICAgIChucmVhZCA9PSBZWV9O
VUxMKSkKKyAgICB7CisgICAgICAgIGludCBsaW5lID0gMCwgZmlsZSA9IDA7CisgICAgICAgIHBw
OjpUb2tlbjo6ZGVjb2RlTG9jYXRpb24oeXlnZXRfbGluZW5vKG1MZXhlciksICZsaW5lLCAmZmls
ZSk7CisgICAgICAgIGZpbGUgPSBtSW5wdXQtPnN0cmluZ0luZGV4KCk7CisgICAgICAgIHl5c2V0
X2xpbmVubyhwcDo6VG9rZW46OmVuY29kZUxvY2F0aW9uKGxpbmUsIGZpbGUpLCBtTGV4ZXIpOwor
CisgICAgICAgIG5yZWFkID0gbUlucHV0LT5yZWFkKGJ1ZiwgbWF4U2l6ZSk7CisKKyAgICAgICAg
aWYgKG1JbnB1dC0+ZXJyb3IoKSA9PSBwcDo6SW5wdXQ6OmtFcnJvclVuZXhwZWN0ZWRFT0YpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIC8vIFRPRE8oYWxva3ApOiBSZXBvcnQgZXJyb3IuCisgICAg
ICAgIH0KKyAgICB9CisgICAgcmV0dXJuIG5yZWFkOworfQorCitib29sIENvbnRleHQ6OmluaXRM
ZXhlcigpCit7CisgICAgQVNTRVJUKG1MZXhlciA9PSBOVUxMKTsKKworICAgIGlmICh5eWxleF9p
bml0X2V4dHJhKHRoaXMsICZtTGV4ZXIpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB5
eXJlc3RhcnQoMCwgbUxleGVyKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDb250ZXh0
OjpkZXN0cm95TGV4ZXIoKQoreworICAgIEFTU0VSVChtTGV4ZXIpOworCisgICAgeXlsZXhfZGVz
dHJveShtTGV4ZXIpOworICAgIG1MZXhlciA9IE5VTEw7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBw
cAorCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJl
cHJvY2Vzc29yL25ldy9wcC55IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVy
L3ByZXByb2Nlc3Nvci9uZXcvcHAueQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41NTE5M2FiZmNjOTM2ZTczNmUyMTVj
NGY5YjAwMTY0Mzk2ODUxY2MwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9uZXcvcHAueQpAQCAtMCwwICsxLDIyNSBA
QAorLyoKKy8vCisvLyBDb3B5cmlnaHQgKGMpIDIwMTEgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCisvLworCitUaGlzIGZpbGUgY29udGFpbnMgdGhlIFlhY2MgZ3JhbW1h
ciBmb3IgR0xTTCBFUyBwcmVwcm9jZXNzb3IuCitCYXNlZCBvbiBNaWNyb3NvZnQgVmlzdWFsIFN0
dWRpbyAyMDEwIFByZXByb2Nlc3NvciBHcmFtbWFyOgoraHR0cDovL21zZG4ubWljcm9zb2Z0LmNv
bS9lbi11cy9saWJyYXJ5LzJzY3h5czg5LmFzcHgKKworSUYgWU9VIE1PRElGWSBUSElTIEZJTEUg
WU9VIEFMU08gTkVFRCBUTyBSVU4gZ2VuZXJhdGVfZ2xzbF9wYXJzZXIuc2gsCitXSElDSCBHRU5F
UkFURVMgVEhFIEdMU0wgRVMgUEFSU0VSLgorKi8KKworJXsKKy8vCisvLyBDb3B5cmlnaHQgKGMp
IDIwMTEgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCisvLyBU
aGlzIGZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgYnkgZ2VuZXJhdGVfZ2xzbGFuZ19wYXJzZXIuc2gu
IERPIE5PVCBFRElUIQorCisjaW5jbHVkZSAiQ29udGV4dC5oIgorCisjZGVmaW5lIFlZTEVYX1BB
UkFNIGNvbnRleHQtPmxleGVyKCkKKyNkZWZpbmUgWVlERUJVRyAxCislfQorCislcHVyZS1wYXJz
ZXIKKyVuYW1lLXByZWZpeD0icHAiCislbG9jYXRpb25zCislcGFyc2UtcGFyYW0ge3BwOjpDb250
ZXh0KiBjb250ZXh0fQorCisldW5pb24geworICAgIGludCBpdmFsOworICAgIHN0ZDo6c3RyaW5n
KiBzdmFsOworICAgIHBwOjpUb2tlbiogdHZhbDsKKyAgICBwcDo6VG9rZW5WZWN0b3IqIHRsaXN0
OworfQorCisleworZXh0ZXJuIGludCB5eWxleChZWVNUWVBFKiBsdmFscCwgWVlMVFlQRSogbGxv
Y3AsIHZvaWQqIGxleGVyKTsKK3N0YXRpYyB2b2lkIHl5ZXJyb3IoWVlMVFlQRSogbGxvY3AsCisg
ICAgICAgICAgICAgICAgICAgIHBwOjpDb250ZXh0KiBjb250ZXh0LAorICAgICAgICAgICAgICAg
ICAgICBjb25zdCBjaGFyKiByZWFzb24pOworCitzdGF0aWMgdm9pZCBwdXNoQ29uZGl0aW9uYWxC
bG9jayhwcDo6Q29udGV4dCogY29udGV4dCwgYm9vbCBjb25kaXRpb24pOworc3RhdGljIHZvaWQg
cG9wQ29uZGl0aW9uYWxCbG9jayhwcDo6Q29udGV4dCogY29udGV4dCk7CislfQorCisldG9rZW4g
SEFTSCBIQVNIX1VOREVGCisldG9rZW4gSEFTSF9JRiBIQVNIX0lGREVGIEhBU0hfSUZOREVGIEhB
U0hfRUxTRSBIQVNIX0VMSUYgSEFTSF9FTkRJRiBERUZJTkVECisldG9rZW4gSEFTSF9FUlJPUiBI
QVNIX1BSQUdNQSBIQVNIX0VYVEVOU0lPTiBIQVNIX1ZFUlNJT04gSEFTSF9MSU5FCisldG9rZW4g
PHN2YWw+IEhBU0hfREVGSU5FX09CSiBIQVNIX0RFRklORV9GVU5DCisldG9rZW4gPHN2YWw+IElO
VF9DT05TVEFOVCBGTE9BVF9DT05TVEFOVCBJREVOVElGSUVSCisldHlwZSA8aXZhbD4gb3BlcmF0
b3IKKyV0eXBlIDx0dmFsPiBjb25kaXRpb25hbF90b2tlbiB0b2tlbgorJXR5cGUgPHRsaXN0PiBw
YXJhbWV0ZXJfbGlzdCByZXBsYWNlbWVudF9saXN0IGNvbmRpdGlvbmFsX2xpc3QgdG9rZW5fbGlz
dAorJSUKKworaW5wdXQKKyAgICA6IC8qIGVtcHR5ICovCisgICAgfCBpbnB1dCBsaW5lCis7CisK
K2xpbmUKKyAgICA6IHRleHRfbGluZQorICAgIHwgY29udHJvbF9saW5lCis7CisKK3RleHRfbGlu
ZQorICAgIDogJ1xuJworICAgIHwgdG9rZW5fbGlzdCAnXG4nIHsKKyAgICAgICAgLy8gVE9ETyhh
bG9rcCk6IEV4cGFuZCBtYWNyb3MuCisgICAgICAgIHBwOjpUb2tlblZlY3Rvciogb3V0ID0gY29u
dGV4dC0+b3V0cHV0KCk7CisgICAgICAgIG91dC0+aW5zZXJ0KG91dC0+ZW5kKCksICQxLT5iZWdp
bigpLCAkMS0+ZW5kKCkpOworICAgICAgICBkZWxldGUgJDE7CisgICAgfQorOworCitjb250cm9s
X2xpbmUKKyAgICA6IEhBU0ggJ1xuJworICAgIHwgSEFTSF9ERUZJTkVfT0JKIHJlcGxhY2VtZW50
X2xpc3QgJ1xuJyB7CisgICAgICAgIGNvbnRleHQtPmRlZmluZU1hY3JvKEAxLmZpcnN0X2xpbmUs
IHBwOjpNYWNybzo6a1R5cGVPYmosICQxLCBOVUxMLCAkMik7CisgICAgfQorICAgIHwgSEFTSF9E
RUZJTkVfRlVOQyAnKCcgcGFyYW1ldGVyX2xpc3QgJyknIHJlcGxhY2VtZW50X2xpc3QgJ1xuJyB7
CisgICAgICAgIGNvbnRleHQtPmRlZmluZU1hY3JvKEAxLmZpcnN0X2xpbmUsIHBwOjpNYWNybzo6
a1R5cGVGdW5jLCAkMSwgJDMsICQ1KTsKKyAgICB9CisgICAgfCBIQVNIX1VOREVGIElERU5USUZJ
RVIgJ1xuJyB7CisgICAgICAgIGNvbnRleHQtPnVuZGVmaW5lTWFjcm8oJDIpOworICAgIH0KKyAg
ICB8IEhBU0hfSUYgY29uZGl0aW9uYWxfbGlzdCAnXG4nIHsKKyAgICAgICAgcHVzaENvbmRpdGlv
bmFsQmxvY2soY29udGV4dCwgJDIgPyB0cnVlIDogZmFsc2UpOworICAgIH0KKyAgICB8IEhBU0hf
SUZERUYgSURFTlRJRklFUiAnXG4nIHsKKyAgICAgICAgcHVzaENvbmRpdGlvbmFsQmxvY2soY29u
dGV4dCwgY29udGV4dC0+aXNNYWNyb0RlZmluZWQoJDIpKTsKKyAgICB9CisgICAgfCBIQVNIX0lG
TkRFRiBJREVOVElGSUVSICdcbicgeworICAgICAgICBwdXNoQ29uZGl0aW9uYWxCbG9jayhjb250
ZXh0LCAhY29udGV4dC0+aXNNYWNyb0RlZmluZWQoJDIpKTsKKyAgICB9CisgICAgfCBIQVNIX0VM
SUYgY29uZGl0aW9uYWxfbGlzdCAnXG4nIHsKKyAgICB9CisgICAgfCBIQVNIX0VMU0UgJ1xuJyB7
CisgICAgfQorICAgIHwgSEFTSF9FTkRJRiAnXG4nIHsKKyAgICAgICAgcG9wQ29uZGl0aW9uYWxC
bG9jayhjb250ZXh0KTsKKyAgICB9CisgICAgfCBIQVNIX0VSUk9SICdcbicKKyAgICB8IEhBU0hf
UFJBR01BICdcbicKKyAgICB8IEhBU0hfRVhURU5TSU9OICdcbicKKyAgICB8IEhBU0hfVkVSU0lP
TiAnXG4nCisgICAgfCBIQVNIX0xJTkUgJ1xuJworOworCityZXBsYWNlbWVudF9saXN0CisgICAg
OiAvKiBlbXB0eSAqLyB7ICQkID0gTlVMTDsgfQorICAgIHwgdG9rZW5fbGlzdAorCitwYXJhbWV0
ZXJfbGlzdAorICAgIDogLyogZW1wdHkgKi8geyAkJCA9IE5VTEw7IH0KKyAgICB8IElERU5USUZJ
RVIgeworICAgICAgICAkJCA9IG5ldyBwcDo6VG9rZW5WZWN0b3I7CisgICAgICAgICQkLT5wdXNo
X2JhY2sobmV3IHBwOjpUb2tlbihAMS5maXJzdF9saW5lLCBJREVOVElGSUVSLCAkMSkpOworICAg
IH0KKyAgICB8IHBhcmFtZXRlcl9saXN0ICcsJyBJREVOVElGSUVSIHsKKyAgICAgICAgJCQgPSAk
MTsKKyAgICAgICAgJCQtPnB1c2hfYmFjayhuZXcgcHA6OlRva2VuKEAzLmZpcnN0X2xpbmUsIElE
RU5USUZJRVIsICQzKSk7CisgICAgfQorCitjb25kaXRpb25hbF9saXN0CisgICAgOiBjb25kaXRp
b25hbF90b2tlbiB7CisgICAgICAgICQkID0gbmV3IHBwOjpUb2tlblZlY3RvcjsKKyAgICAgICAg
JCQtPnB1c2hfYmFjaygkMSk7CisgICAgfQorICAgIHwgY29uZGl0aW9uYWxfbGlzdCBjb25kaXRp
b25hbF90b2tlbiB7CisgICAgICAgICQkID0gJDE7CisgICAgICAgICQkLT5wdXNoX2JhY2soJDIp
OworICAgIH0KKzsKKwordG9rZW5fbGlzdAorICAgIDogdG9rZW4geworICAgICAgICAkJCA9IG5l
dyBwcDo6VG9rZW5WZWN0b3I7CisgICAgICAgICQkLT5wdXNoX2JhY2soJDEpOworICAgIH0KKyAg
ICB8IHRva2VuX2xpc3QgdG9rZW4geworICAgICAgICAkJCA9ICQxOworICAgICAgICAkJC0+cHVz
aF9iYWNrKCQyKTsKKyAgICB9Cis7CisKK2NvbmRpdGlvbmFsX3Rva2VuCisgICAgOiBERUZJTkVE
IElERU5USUZJRVIgeworICAgIH0KKyAgICB8IERFRklORUQgJygnIElERU5USUZJRVIgJyknIHsK
KyAgICB9CisgICAgfCB0b2tlbgorOworCit0b2tlbgorICAgIDogb3BlcmF0b3IgeworICAgICAg
ICAkJCA9IG5ldyBwcDo6VG9rZW4oQDEuZmlyc3RfbGluZSwgJDEsIE5VTEwpOworICAgIH0KKyAg
ICB8IElOVF9DT05TVEFOVCB7CisgICAgICAgICQkID0gbmV3IHBwOjpUb2tlbihAMS5maXJzdF9s
aW5lLCBJTlRfQ09OU1RBTlQsICQxKTsKKyAgICB9CisgICAgfCBGTE9BVF9DT05TVEFOVCB7Cisg
ICAgICAgICQkID0gbmV3IHBwOjpUb2tlbihAMS5maXJzdF9saW5lLCBGTE9BVF9DT05TVEFOVCwg
JDEpOworICAgIH0KKyAgICB8IElERU5USUZJRVIgeworICAgICAgICAkJCA9IG5ldyBwcDo6VG9r
ZW4oQDEuZmlyc3RfbGluZSwgSURFTlRJRklFUiwgJDEpOworICAgIH0KKzsKKworb3BlcmF0b3IK
KyAgICA6ICdbJyB7ICQkID0gJ1snOyB9CisgICAgfCAnXScgeyAkJCA9ICddJzsgfQorICAgIHwg
JzwnIHsgJCQgPSAnPCc7IH0KKyAgICB8ICc+JyB7ICQkID0gJz4nOyB9CisgICAgfCAnKCcgeyAk
JCA9ICcoJzsgfQorICAgIHwgJyknIHsgJCQgPSAnKSc7IH0KKyAgICB8ICd7JyB7ICQkID0gJ3sn
OyB9CisgICAgfCAnfScgeyAkJCA9ICd9JzsgfQorICAgIHwgJy4nIHsgJCQgPSAnLic7IH0KKyAg
ICB8ICcrJyB7ICQkID0gJysnOyB9CisgICAgfCAnLScgeyAkJCA9ICctJzsgfQorICAgIHwgJy8n
IHsgJCQgPSAnLyc7IH0KKyAgICB8ICcqJyB7ICQkID0gJyonOyB9CisgICAgfCAnJScgeyAkJCA9
ICclJzsgfQorICAgIHwgJ14nIHsgJCQgPSAnXic7IH0KKyAgICB8ICd8JyB7ICQkID0gJ3wnOyB9
CisgICAgfCAnJicgeyAkJCA9ICcmJzsgfQorICAgIHwgJ34nIHsgJCQgPSAnfic7IH0KKyAgICB8
ICc9JyB7ICQkID0gJz0nOyB9CisgICAgfCAnIScgeyAkJCA9ICchJzsgfQorICAgIHwgJzonIHsg
JCQgPSAnOic7IH0KKyAgICB8ICc7JyB7ICQkID0gJzsnOyB9CisgICAgfCAnLCcgeyAkJCA9ICcs
JzsgfQorICAgIHwgJz8nIHsgJCQgPSAnPyc7IH0KKzsKKworJSUKKwordm9pZCB5eWVycm9yKFlZ
TFRZUEUqIGxsb2NwLCBwcDo6Q29udGV4dCogY29udGV4dCwgY29uc3QgY2hhciogcmVhc29uKQor
eworfQorCit2b2lkIHB1c2hDb25kaXRpb25hbEJsb2NrKHBwOjpDb250ZXh0KiBjb250ZXh0LCBi
b29sIGNvbmRpdGlvbikKK3sKK30KKwordm9pZCBwb3BDb25kaXRpb25hbEJsb2NrKHBwOjpDb250
ZXh0KiBjb250ZXh0KQoreworfQorCituYW1lc3BhY2UgcHAgeworYm9vbCBDb250ZXh0OjpwYXJz
ZSgpCit7CisgICAgeXlkZWJ1ZyA9IDE7CisgICAgcmV0dXJuIHl5cGFyc2UodGhpcykgPT0gMCA/
IHRydWUgOiBmYWxzZTsKK30KK30gIC8vIG5hbWVzcGFjZSBwcAorCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL25ldy9wcF9sZXgu
Y3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9u
ZXcvcHBfbGV4LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MDg0ODMxYTFmODRlZjhlZjkyOGU4NTUwOGNjYmYy
NWQ5MGExNmIxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9uZXcvcHBfbGV4LmNwcApAQCAtMCwwICsxLDIyNjggQEAK
KyNsaW5lIDE2ICJjb21waWxlci9wcmVwcm9jZXNzb3IvbmV3L3BwLmwiCisvLworLy8gQ29weXJp
Z2h0IChjKSAyMDExIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8K
KworLy8gVGhpcyBmaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGJ5IGdlbmVyYXRlX3BhcnNlci5zaC4g
RE8gTk9UIEVESVQhCisKKworCisjbGluZSAxMyAiY29tcGlsZXIvcHJlcHJvY2Vzc29yL25ldy9w
cF9sZXguY3BwIgorCisjZGVmaW5lICBZWV9JTlRfQUxJR05FRCBzaG9ydCBpbnQKKworLyogQSBs
ZXhpY2FsIHNjYW5uZXIgZ2VuZXJhdGVkIGJ5IGZsZXggKi8KKworI2RlZmluZSBGTEVYX1NDQU5O
RVIKKyNkZWZpbmUgWVlfRkxFWF9NQUpPUl9WRVJTSU9OIDIKKyNkZWZpbmUgWVlfRkxFWF9NSU5P
Ul9WRVJTSU9OIDUKKyNkZWZpbmUgWVlfRkxFWF9TVUJNSU5PUl9WRVJTSU9OIDM1CisjaWYgWVlf
RkxFWF9TVUJNSU5PUl9WRVJTSU9OID4gMAorI2RlZmluZSBGTEVYX0JFVEEKKyNlbmRpZgorCisv
KiBGaXJzdCwgd2UgZGVhbCB3aXRoICBwbGF0Zm9ybS1zcGVjaWZpYyBvciBjb21waWxlci1zcGVj
aWZpYyBpc3N1ZXMuICovCisKKy8qIGJlZ2luIHN0YW5kYXJkIEMgaGVhZGVycy4gKi8KKyNpbmNs
dWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGVycm5vLmg+Cisj
aW5jbHVkZSA8c3RkbGliLmg+CisKKy8qIGVuZCBzdGFuZGFyZCBDIGhlYWRlcnMuICovCisKKy8q
IGZsZXggaW50ZWdlciB0eXBlIGRlZmluaXRpb25zICovCisKKyNpZm5kZWYgRkxFWElOVF9ICisj
ZGVmaW5lIEZMRVhJTlRfSAorCisvKiBDOTkgc3lzdGVtcyBoYXZlIDxpbnR0eXBlcy5oPi4gTm9u
LUM5OSBzeXN0ZW1zIG1heSBvciBtYXkgbm90LiAqLworCisjaWYgZGVmaW5lZCAoX19TVERDX1ZF
UlNJT05fXykgJiYgX19TVERDX1ZFUlNJT05fXyA+PSAxOTk5MDFMCisKKy8qIEM5OSBzYXlzIHRv
IGRlZmluZSBfX1NURENfTElNSVRfTUFDUk9TIGJlZm9yZSBpbmNsdWRpbmcgc3RkaW50LmgsCisg
KiBpZiB5b3Ugd2FudCB0aGUgbGltaXQgKG1heC9taW4pIG1hY3JvcyBmb3IgaW50IHR5cGVzLiAK
KyAqLworI2lmbmRlZiBfX1NURENfTElNSVRfTUFDUk9TCisjZGVmaW5lIF9fU1REQ19MSU1JVF9N
QUNST1MgMQorI2VuZGlmCisKKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgordHlwZWRlZiBpbnQ4X3Qg
ZmxleF9pbnQ4X3Q7Cit0eXBlZGVmIHVpbnQ4X3QgZmxleF91aW50OF90OwordHlwZWRlZiBpbnQx
Nl90IGZsZXhfaW50MTZfdDsKK3R5cGVkZWYgdWludDE2X3QgZmxleF91aW50MTZfdDsKK3R5cGVk
ZWYgaW50MzJfdCBmbGV4X2ludDMyX3Q7Cit0eXBlZGVmIHVpbnQzMl90IGZsZXhfdWludDMyX3Q7
CisjZWxzZQordHlwZWRlZiBzaWduZWQgY2hhciBmbGV4X2ludDhfdDsKK3R5cGVkZWYgc2hvcnQg
aW50IGZsZXhfaW50MTZfdDsKK3R5cGVkZWYgaW50IGZsZXhfaW50MzJfdDsKK3R5cGVkZWYgdW5z
aWduZWQgY2hhciBmbGV4X3VpbnQ4X3Q7IAordHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBpbnQgZmxl
eF91aW50MTZfdDsKK3R5cGVkZWYgdW5zaWduZWQgaW50IGZsZXhfdWludDMyX3Q7CisjZW5kaWYg
LyogISBDOTkgKi8KKworLyogTGltaXRzIG9mIGludGVncmFsIHR5cGVzLiAqLworI2lmbmRlZiBJ
TlQ4X01JTgorI2RlZmluZSBJTlQ4X01JTiAgICAgICAgICAgICAgICgtMTI4KQorI2VuZGlmCisj
aWZuZGVmIElOVDE2X01JTgorI2RlZmluZSBJTlQxNl9NSU4gICAgICAgICAgICAgICgtMzI3Njct
MSkKKyNlbmRpZgorI2lmbmRlZiBJTlQzMl9NSU4KKyNkZWZpbmUgSU5UMzJfTUlOICAgICAgICAg
ICAgICAoLTIxNDc0ODM2NDctMSkKKyNlbmRpZgorI2lmbmRlZiBJTlQ4X01BWAorI2RlZmluZSBJ
TlQ4X01BWCAgICAgICAgICAgICAgICgxMjcpCisjZW5kaWYKKyNpZm5kZWYgSU5UMTZfTUFYCisj
ZGVmaW5lIElOVDE2X01BWCAgICAgICAgICAgICAgKDMyNzY3KQorI2VuZGlmCisjaWZuZGVmIElO
VDMyX01BWAorI2RlZmluZSBJTlQzMl9NQVggICAgICAgICAgICAgICgyMTQ3NDgzNjQ3KQorI2Vu
ZGlmCisjaWZuZGVmIFVJTlQ4X01BWAorI2RlZmluZSBVSU5UOF9NQVggICAgICAgICAgICAgICgy
NTVVKQorI2VuZGlmCisjaWZuZGVmIFVJTlQxNl9NQVgKKyNkZWZpbmUgVUlOVDE2X01BWCAgICAg
ICAgICAgICAoNjU1MzVVKQorI2VuZGlmCisjaWZuZGVmIFVJTlQzMl9NQVgKKyNkZWZpbmUgVUlO
VDMyX01BWCAgICAgICAgICAgICAoNDI5NDk2NzI5NVUpCisjZW5kaWYKKworI2VuZGlmIC8qICEg
RkxFWElOVF9IICovCisKKyNpZmRlZiBfX2NwbHVzcGx1cworCisvKiBUaGUgImNvbnN0IiBzdG9y
YWdlLWNsYXNzLW1vZGlmaWVyIGlzIHZhbGlkLiAqLworI2RlZmluZSBZWV9VU0VfQ09OU1QKKwor
I2Vsc2UJLyogISBfX2NwbHVzcGx1cyAqLworCisvKiBDOTkgcmVxdWlyZXMgX19TVERDX18gdG8g
YmUgZGVmaW5lZCBhcyAxLiAqLworI2lmIGRlZmluZWQgKF9fU1REQ19fKQorCisjZGVmaW5lIFlZ
X1VTRV9DT05TVAorCisjZW5kaWYJLyogZGVmaW5lZCAoX19TVERDX18pICovCisjZW5kaWYJLyog
ISBfX2NwbHVzcGx1cyAqLworCisjaWZkZWYgWVlfVVNFX0NPTlNUCisjZGVmaW5lIHl5Y29uc3Qg
Y29uc3QKKyNlbHNlCisjZGVmaW5lIHl5Y29uc3QKKyNlbmRpZgorCisvKiBSZXR1cm5lZCB1cG9u
IGVuZC1vZi1maWxlLiAqLworI2RlZmluZSBZWV9OVUxMIDAKKworLyogUHJvbW90ZXMgYSBwb3Nz
aWJseSBuZWdhdGl2ZSwgcG9zc2libHkgc2lnbmVkIGNoYXIgdG8gYW4gdW5zaWduZWQKKyAqIGlu
dGVnZXIgZm9yIHVzZSBhcyBhbiBhcnJheSBpbmRleC4gIElmIHRoZSBzaWduZWQgY2hhciBpcyBu
ZWdhdGl2ZSwKKyAqIHdlIHdhbnQgdG8gaW5zdGVhZCB0cmVhdCBpdCBhcyBhbiA4LWJpdCB1bnNp
Z25lZCBjaGFyLCBoZW5jZSB0aGUKKyAqIGRvdWJsZSBjYXN0LgorICovCisjZGVmaW5lIFlZX1ND
X1RPX1VJKGMpICgodW5zaWduZWQgaW50KSAodW5zaWduZWQgY2hhcikgYykKKworLyogQW4gb3Bh
cXVlIHBvaW50ZXIuICovCisjaWZuZGVmIFlZX1RZUEVERUZfWVlfU0NBTk5FUl9UCisjZGVmaW5l
IFlZX1RZUEVERUZfWVlfU0NBTk5FUl9UCit0eXBlZGVmIHZvaWQqIHl5c2Nhbl90OworI2VuZGlm
CisKKy8qIEZvciBjb252ZW5pZW5jZSwgdGhlc2UgdmFycyAocGx1cyB0aGUgYmlzb24gdmFycyBm
YXIgYmVsb3cpCisgICBhcmUgbWFjcm9zIGluIHRoZSByZWVudHJhbnQgc2Nhbm5lci4gKi8KKyNk
ZWZpbmUgeXlpbiB5eWctPnl5aW5fcgorI2RlZmluZSB5eW91dCB5eWctPnl5b3V0X3IKKyNkZWZp
bmUgeXlleHRyYSB5eWctPnl5ZXh0cmFfcgorI2RlZmluZSB5eWxlbmcgeXlnLT55eWxlbmdfcgor
I2RlZmluZSB5eXRleHQgeXlnLT55eXRleHRfcgorI2RlZmluZSB5eWxpbmVubyAoWVlfQ1VSUkVO
VF9CVUZGRVJfTFZBTFVFLT55eV9ic19saW5lbm8pCisjZGVmaW5lIHl5Y29sdW1uIChZWV9DVVJS
RU5UX0JVRkZFUl9MVkFMVUUtPnl5X2JzX2NvbHVtbikKKyNkZWZpbmUgeXlfZmxleF9kZWJ1ZyB5
eWctPnl5X2ZsZXhfZGVidWdfcgorCisvKiBFbnRlciBhIHN0YXJ0IGNvbmRpdGlvbi4gIFRoaXMg
bWFjcm8gcmVhbGx5IG91Z2h0IHRvIHRha2UgYSBwYXJhbWV0ZXIsCisgKiBidXQgd2UgZG8gaXQg
dGhlIGRpc2d1c3RpbmcgY3J1ZnR5IHdheSBmb3JjZWQgb24gdXMgYnkgdGhlICgpLWxlc3MKKyAq
IGRlZmluaXRpb24gb2YgQkVHSU4uCisgKi8KKyNkZWZpbmUgQkVHSU4geXlnLT55eV9zdGFydCA9
IDEgKyAyICoKKworLyogVHJhbnNsYXRlIHRoZSBjdXJyZW50IHN0YXJ0IHN0YXRlIGludG8gYSB2
YWx1ZSB0aGF0IGNhbiBiZSBsYXRlciBoYW5kZWQKKyAqIHRvIEJFR0lOIHRvIHJldHVybiB0byB0
aGUgc3RhdGUuICBUaGUgWVlTVEFURSBhbGlhcyBpcyBmb3IgbGV4CisgKiBjb21wYXRpYmlsaXR5
LgorICovCisjZGVmaW5lIFlZX1NUQVJUICgoeXlnLT55eV9zdGFydCAtIDEpIC8gMikKKyNkZWZp
bmUgWVlTVEFURSBZWV9TVEFSVAorCisvKiBBY3Rpb24gbnVtYmVyIGZvciBFT0YgcnVsZSBvZiBh
IGdpdmVuIHN0YXJ0IHN0YXRlLiAqLworI2RlZmluZSBZWV9TVEFURV9FT0Yoc3RhdGUpIChZWV9F
TkRfT0ZfQlVGRkVSICsgc3RhdGUgKyAxKQorCisvKiBTcGVjaWFsIGFjdGlvbiBtZWFuaW5nICJz
dGFydCBwcm9jZXNzaW5nIGEgbmV3IGZpbGUiLiAqLworI2RlZmluZSBZWV9ORVdfRklMRSBwcHJl
c3RhcnQoeXlpbiAseXlzY2FubmVyICkKKworI2RlZmluZSBZWV9FTkRfT0ZfQlVGRkVSX0NIQVIg
MAorCisvKiBTaXplIG9mIGRlZmF1bHQgaW5wdXQgYnVmZmVyLiAqLworI2lmbmRlZiBZWV9CVUZf
U0laRQorI2RlZmluZSBZWV9CVUZfU0laRSAxNjM4NAorI2VuZGlmCisKKy8qIFRoZSBzdGF0ZSBi
dWYgbXVzdCBiZSBsYXJnZSBlbm91Z2ggdG8gaG9sZCBvbmUgc3RhdGUgcGVyIGNoYXJhY3RlciBp
biB0aGUgbWFpbiBidWZmZXIuCisgKi8KKyNkZWZpbmUgWVlfU1RBVEVfQlVGX1NJWkUgICAoKFlZ
X0JVRl9TSVpFICsgMikgKiBzaXplb2YoeXlfc3RhdGVfdHlwZSkpCisKKyNpZm5kZWYgWVlfVFlQ
RURFRl9ZWV9CVUZGRVJfU1RBVEUKKyNkZWZpbmUgWVlfVFlQRURFRl9ZWV9CVUZGRVJfU1RBVEUK
K3R5cGVkZWYgc3RydWN0IHl5X2J1ZmZlcl9zdGF0ZSAqWVlfQlVGRkVSX1NUQVRFOworI2VuZGlm
CisKKyNkZWZpbmUgRU9CX0FDVF9DT05USU5VRV9TQ0FOIDAKKyNkZWZpbmUgRU9CX0FDVF9FTkRf
T0ZfRklMRSAxCisjZGVmaW5lIEVPQl9BQ1RfTEFTVF9NQVRDSCAyCisKKyAgICAvKiBOb3RlOiBX
ZSBzcGVjaWZpY2FsbHkgb21pdCB0aGUgdGVzdCBmb3IgeXlfcnVsZV9jYW5fbWF0Y2hfZW9sIGJl
Y2F1c2UgaXQgcmVxdWlyZXMKKyAgICAgKiAgICAgICBhY2Nlc3MgdG8gdGhlIGxvY2FsIHZhcmlh
YmxlIHl5X2FjdC4gU2luY2UgeXlsZXNzKCkgaXMgYSBtYWNybywgaXQgd291bGQgYnJlYWsKKyAg
ICAgKiAgICAgICBleGlzdGluZyBzY2FubmVycyB0aGF0IGNhbGwgeXlsZXNzKCkgZnJvbSBPVVRT
SURFIHBwbGV4LiAKKyAgICAgKiAgICAgICBPbmUgb2J2aW91cyBzb2x1dGlvbiBpdCB0byBtYWtl
IHl5X2FjdCBhIGdsb2JhbC4gSSB0cmllZCB0aGF0LCBhbmQgc2F3CisgICAgICogICAgICAgYSA1
JSBwZXJmb3JtYW5jZSBoaXQgaW4gYSBub24teXlsaW5lbm8gc2Nhbm5lciwgYmVjYXVzZSB5eV9h
Y3QgaXMKKyAgICAgKiAgICAgICBub3JtYWxseSBkZWNsYXJlZCBhcyBhIHJlZ2lzdGVyIHZhcmlh
YmxlLS0gc28gaXQgaXMgbm90IHdvcnRoIGl0LgorICAgICAqLworICAgICNkZWZpbmUgIFlZX0xF
U1NfTElORU5PKG4pIFwKKyAgICAgICAgICAgIGRvIHsgXAorICAgICAgICAgICAgICAgIGludCB5
eWw7XAorICAgICAgICAgICAgICAgIGZvciAoIHl5bCA9IG47IHl5bCA8IHl5bGVuZzsgKyt5eWwg
KVwKKyAgICAgICAgICAgICAgICAgICAgaWYgKCB5eXRleHRbeXlsXSA9PSAnXG4nIClcCisgICAg
ICAgICAgICAgICAgICAgICAgICAtLXl5bGluZW5vO1wKKyAgICAgICAgICAgIH13aGlsZSgwKQor
ICAgIAorLyogUmV0dXJuIGFsbCBidXQgdGhlIGZpcnN0ICJuIiBtYXRjaGVkIGNoYXJhY3RlcnMg
YmFjayB0byB0aGUgaW5wdXQgc3RyZWFtLiAqLworI2RlZmluZSB5eWxlc3MobikgXAorCWRvIFwK
KwkJeyBcCisJCS8qIFVuZG8gZWZmZWN0cyBvZiBzZXR0aW5nIHVwIHl5dGV4dC4gKi8gXAorICAg
ICAgICBpbnQgeXlsZXNzX21hY3JvX2FyZyA9IChuKTsgXAorICAgICAgICBZWV9MRVNTX0xJTkVO
Tyh5eWxlc3NfbWFjcm9fYXJnKTtcCisJCSp5eV9jcCA9IHl5Zy0+eXlfaG9sZF9jaGFyOyBcCisJ
CVlZX1JFU1RPUkVfWVlfTU9SRV9PRkZTRVQgXAorCQl5eWctPnl5X2NfYnVmX3AgPSB5eV9jcCA9
IHl5X2JwICsgeXlsZXNzX21hY3JvX2FyZyAtIFlZX01PUkVfQURKOyBcCisJCVlZX0RPX0JFRk9S
RV9BQ1RJT047IC8qIHNldCB1cCB5eXRleHQgYWdhaW4gKi8gXAorCQl9IFwKKwl3aGlsZSAoIDAg
KQorCisjZGVmaW5lIHVucHV0KGMpIHl5dW5wdXQoIGMsIHl5Zy0+eXl0ZXh0X3B0ciAsIHl5c2Nh
bm5lciApCisKKyNpZm5kZWYgWVlfVFlQRURFRl9ZWV9TSVpFX1QKKyNkZWZpbmUgWVlfVFlQRURF
Rl9ZWV9TSVpFX1QKK3R5cGVkZWYgc2l6ZV90IHl5X3NpemVfdDsKKyNlbmRpZgorCisjaWZuZGVm
IFlZX1NUUlVDVF9ZWV9CVUZGRVJfU1RBVEUKKyNkZWZpbmUgWVlfU1RSVUNUX1lZX0JVRkZFUl9T
VEFURQorc3RydWN0IHl5X2J1ZmZlcl9zdGF0ZQorCXsKKwlGSUxFICp5eV9pbnB1dF9maWxlOwor
CisJY2hhciAqeXlfY2hfYnVmOwkJLyogaW5wdXQgYnVmZmVyICovCisJY2hhciAqeXlfYnVmX3Bv
czsJCS8qIGN1cnJlbnQgcG9zaXRpb24gaW4gaW5wdXQgYnVmZmVyICovCisKKwkvKiBTaXplIG9m
IGlucHV0IGJ1ZmZlciBpbiBieXRlcywgbm90IGluY2x1ZGluZyByb29tIGZvciBFT0IKKwkgKiBj
aGFyYWN0ZXJzLgorCSAqLworCXl5X3NpemVfdCB5eV9idWZfc2l6ZTsKKworCS8qIE51bWJlciBv
ZiBjaGFyYWN0ZXJzIHJlYWQgaW50byB5eV9jaF9idWYsIG5vdCBpbmNsdWRpbmcgRU9CCisJICog
Y2hhcmFjdGVycy4KKwkgKi8KKwlpbnQgeXlfbl9jaGFyczsKKworCS8qIFdoZXRoZXIgd2UgIm93
biIgdGhlIGJ1ZmZlciAtIGkuZS4sIHdlIGtub3cgd2UgY3JlYXRlZCBpdCwKKwkgKiBhbmQgY2Fu
IHJlYWxsb2MoKSBpdCB0byBncm93IGl0LCBhbmQgc2hvdWxkIGZyZWUoKSBpdCB0bworCSAqIGRl
bGV0ZSBpdC4KKwkgKi8KKwlpbnQgeXlfaXNfb3VyX2J1ZmZlcjsKKworCS8qIFdoZXRoZXIgdGhp
cyBpcyBhbiAiaW50ZXJhY3RpdmUiIGlucHV0IHNvdXJjZTsgaWYgc28sIGFuZAorCSAqIGlmIHdl
J3JlIHVzaW5nIHN0ZGlvIGZvciBpbnB1dCwgdGhlbiB3ZSB3YW50IHRvIHVzZSBnZXRjKCkKKwkg
KiBpbnN0ZWFkIG9mIGZyZWFkKCksIHRvIG1ha2Ugc3VyZSB3ZSBzdG9wIGZldGNoaW5nIGlucHV0
IGFmdGVyCisJICogZWFjaCBuZXdsaW5lLgorCSAqLworCWludCB5eV9pc19pbnRlcmFjdGl2ZTsK
KworCS8qIFdoZXRoZXIgd2UncmUgY29uc2lkZXJlZCB0byBiZSBhdCB0aGUgYmVnaW5uaW5nIG9m
IGEgbGluZS4KKwkgKiBJZiBzbywgJ14nIHJ1bGVzIHdpbGwgYmUgYWN0aXZlIG9uIHRoZSBuZXh0
IG1hdGNoLCBvdGhlcndpc2UKKwkgKiBub3QuCisJICovCisJaW50IHl5X2F0X2JvbDsKKworICAg
IGludCB5eV9ic19saW5lbm87IC8qKjwgVGhlIGxpbmUgY291bnQuICovCisgICAgaW50IHl5X2Jz
X2NvbHVtbjsgLyoqPCBUaGUgY29sdW1uIGNvdW50LiAqLworICAgIAorCS8qIFdoZXRoZXIgdG8g
dHJ5IHRvIGZpbGwgdGhlIGlucHV0IGJ1ZmZlciB3aGVuIHdlIHJlYWNoIHRoZQorCSAqIGVuZCBv
ZiBpdC4KKwkgKi8KKwlpbnQgeXlfZmlsbF9idWZmZXI7CisKKwlpbnQgeXlfYnVmZmVyX3N0YXR1
czsKKworI2RlZmluZSBZWV9CVUZGRVJfTkVXIDAKKyNkZWZpbmUgWVlfQlVGRkVSX05PUk1BTCAx
CisJLyogV2hlbiBhbiBFT0YncyBiZWVuIHNlZW4gYnV0IHRoZXJlJ3Mgc3RpbGwgc29tZSB0ZXh0
IHRvIHByb2Nlc3MKKwkgKiB0aGVuIHdlIG1hcmsgdGhlIGJ1ZmZlciBhcyBZWV9FT0ZfUEVORElO
RywgdG8gaW5kaWNhdGUgdGhhdCB3ZQorCSAqIHNob3VsZG4ndCB0cnkgcmVhZGluZyBmcm9tIHRo
ZSBpbnB1dCBzb3VyY2UgYW55IG1vcmUuICBXZSBtaWdodAorCSAqIHN0aWxsIGhhdmUgYSBidW5j
aCBvZiB0b2tlbnMgdG8gbWF0Y2gsIHRob3VnaCwgYmVjYXVzZSBvZgorCSAqIHBvc3NpYmxlIGJh
Y2tpbmctdXAuCisJICoKKwkgKiBXaGVuIHdlIGFjdHVhbGx5IHNlZSB0aGUgRU9GLCB3ZSBjaGFu
Z2UgdGhlIHN0YXR1cyB0byAibmV3IgorCSAqICh2aWEgcHByZXN0YXJ0KCkpLCBzbyB0aGF0IHRo
ZSB1c2VyIGNhbiBjb250aW51ZSBzY2FubmluZyBieQorCSAqIGp1c3QgcG9pbnRpbmcgeXlpbiBh
dCBhIG5ldyBpbnB1dCBmaWxlLgorCSAqLworI2RlZmluZSBZWV9CVUZGRVJfRU9GX1BFTkRJTkcg
MgorCisJfTsKKyNlbmRpZiAvKiAhWVlfU1RSVUNUX1lZX0JVRkZFUl9TVEFURSAqLworCisvKiBX
ZSBwcm92aWRlIG1hY3JvcyBmb3IgYWNjZXNzaW5nIGJ1ZmZlciBzdGF0ZXMgaW4gY2FzZSBpbiB0
aGUKKyAqIGZ1dHVyZSB3ZSB3YW50IHRvIHB1dCB0aGUgYnVmZmVyIHN0YXRlcyBpbiBhIG1vcmUg
Z2VuZXJhbAorICogInNjYW5uZXIgc3RhdGUiLgorICoKKyAqIFJldHVybnMgdGhlIHRvcCBvZiB0
aGUgc3RhY2ssIG9yIE5VTEwuCisgKi8KKyNkZWZpbmUgWVlfQ1VSUkVOVF9CVUZGRVIgKCB5eWct
Pnl5X2J1ZmZlcl9zdGFjayBcCisgICAgICAgICAgICAgICAgICAgICAgICAgID8geXlnLT55eV9i
dWZmZXJfc3RhY2tbeXlnLT55eV9idWZmZXJfc3RhY2tfdG9wXSBcCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIDogTlVMTCkKKworLyogU2FtZSBhcyBwcmV2aW91cyBtYWNybywgYnV0IHVzZWZ1
bCB3aGVuIHdlIGtub3cgdGhhdCB0aGUgYnVmZmVyIHN0YWNrIGlzIG5vdAorICogTlVMTCBvciB3
aGVuIHdlIG5lZWQgYW4gbHZhbHVlLiBGb3IgaW50ZXJuYWwgdXNlIG9ubHkuCisgKi8KKyNkZWZp
bmUgWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVFIHl5Zy0+eXlfYnVmZmVyX3N0YWNrW3l5Zy0+eXlf
YnVmZmVyX3N0YWNrX3RvcF0KKwordm9pZCBwcHJlc3RhcnQgKEZJTEUgKmlucHV0X2ZpbGUgLHl5
c2Nhbl90IHl5c2Nhbm5lciApOwordm9pZCBwcF9zd2l0Y2hfdG9fYnVmZmVyIChZWV9CVUZGRVJf
U1RBVEUgbmV3X2J1ZmZlciAseXlzY2FuX3QgeXlzY2FubmVyICk7CitZWV9CVUZGRVJfU1RBVEUg
cHBfY3JlYXRlX2J1ZmZlciAoRklMRSAqZmlsZSxpbnQgc2l6ZSAseXlzY2FuX3QgeXlzY2FubmVy
ICk7Cit2b2lkIHBwX2RlbGV0ZV9idWZmZXIgKFlZX0JVRkZFUl9TVEFURSBiICx5eXNjYW5fdCB5
eXNjYW5uZXIgKTsKK3ZvaWQgcHBfZmx1c2hfYnVmZmVyIChZWV9CVUZGRVJfU1RBVEUgYiAseXlz
Y2FuX3QgeXlzY2FubmVyICk7Cit2b2lkIHBwcHVzaF9idWZmZXJfc3RhdGUgKFlZX0JVRkZFUl9T
VEFURSBuZXdfYnVmZmVyICx5eXNjYW5fdCB5eXNjYW5uZXIgKTsKK3ZvaWQgcHBwb3BfYnVmZmVy
X3N0YXRlICh5eXNjYW5fdCB5eXNjYW5uZXIgKTsKKworc3RhdGljIHZvaWQgcHBlbnN1cmVfYnVm
ZmVyX3N0YWNrICh5eXNjYW5fdCB5eXNjYW5uZXIgKTsKK3N0YXRpYyB2b2lkIHBwX2xvYWRfYnVm
ZmVyX3N0YXRlICh5eXNjYW5fdCB5eXNjYW5uZXIgKTsKK3N0YXRpYyB2b2lkIHBwX2luaXRfYnVm
ZmVyIChZWV9CVUZGRVJfU1RBVEUgYixGSUxFICpmaWxlICx5eXNjYW5fdCB5eXNjYW5uZXIgKTsK
KworI2RlZmluZSBZWV9GTFVTSF9CVUZGRVIgcHBfZmx1c2hfYnVmZmVyKFlZX0NVUlJFTlRfQlVG
RkVSICx5eXNjYW5uZXIpCisKK1lZX0JVRkZFUl9TVEFURSBwcF9zY2FuX2J1ZmZlciAoY2hhciAq
YmFzZSx5eV9zaXplX3Qgc2l6ZSAseXlzY2FuX3QgeXlzY2FubmVyICk7CitZWV9CVUZGRVJfU1RB
VEUgcHBfc2Nhbl9zdHJpbmcgKHl5Y29uc3QgY2hhciAqeXlfc3RyICx5eXNjYW5fdCB5eXNjYW5u
ZXIgKTsKK1lZX0JVRkZFUl9TVEFURSBwcF9zY2FuX2J5dGVzICh5eWNvbnN0IGNoYXIgKmJ5dGVz
LGludCBsZW4gLHl5c2Nhbl90IHl5c2Nhbm5lciApOworCit2b2lkICpwcGFsbG9jICh5eV9zaXpl
X3QgLHl5c2Nhbl90IHl5c2Nhbm5lciApOwordm9pZCAqcHByZWFsbG9jICh2b2lkICoseXlfc2l6
ZV90ICx5eXNjYW5fdCB5eXNjYW5uZXIgKTsKK3ZvaWQgcHBmcmVlICh2b2lkICogLHl5c2Nhbl90
IHl5c2Nhbm5lciApOworCisjZGVmaW5lIHl5X25ld19idWZmZXIgcHBfY3JlYXRlX2J1ZmZlcgor
CisjZGVmaW5lIHl5X3NldF9pbnRlcmFjdGl2ZShpc19pbnRlcmFjdGl2ZSkgXAorCXsgXAorCWlm
ICggISBZWV9DVVJSRU5UX0JVRkZFUiApeyBcCisgICAgICAgIHBwZW5zdXJlX2J1ZmZlcl9zdGFj
ayAoeXlzY2FubmVyKTsgXAorCQlZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUgPSAgICBcCisgICAg
ICAgICAgICBwcF9jcmVhdGVfYnVmZmVyKHl5aW4sWVlfQlVGX1NJWkUgLHl5c2Nhbm5lcik7IFwK
Kwl9IFwKKwlZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X2lzX2ludGVyYWN0aXZlID0gaXNf
aW50ZXJhY3RpdmU7IFwKKwl9CisKKyNkZWZpbmUgeXlfc2V0X2JvbChhdF9ib2wpIFwKKwl7IFwK
KwlpZiAoICEgWVlfQ1VSUkVOVF9CVUZGRVIgKXtcCisgICAgICAgIHBwZW5zdXJlX2J1ZmZlcl9z
dGFjayAoeXlzY2FubmVyKTsgXAorCQlZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUgPSAgICBcCisg
ICAgICAgICAgICBwcF9jcmVhdGVfYnVmZmVyKHl5aW4sWVlfQlVGX1NJWkUgLHl5c2Nhbm5lcik7
IFwKKwl9IFwKKwlZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X2F0X2JvbCA9IGF0X2JvbDsg
XAorCX0KKworI2RlZmluZSBZWV9BVF9CT0woKSAoWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVFLT55
eV9hdF9ib2wpCisKKy8qIEJlZ2luIHVzZXIgc2VjdDMgKi8KKworI2RlZmluZSBwcHdyYXAobikg
MQorI2RlZmluZSBZWV9TS0lQX1lZV1JBUAorCit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgWVlfQ0hB
UjsKKwordHlwZWRlZiBpbnQgeXlfc3RhdGVfdHlwZTsKKworI2RlZmluZSB5eXRleHRfcHRyIHl5
dGV4dF9yCisKK3N0YXRpYyB5eV9zdGF0ZV90eXBlIHl5X2dldF9wcmV2aW91c19zdGF0ZSAoeXlz
Y2FuX3QgeXlzY2FubmVyICk7CitzdGF0aWMgeXlfc3RhdGVfdHlwZSB5eV90cnlfTlVMX3RyYW5z
ICh5eV9zdGF0ZV90eXBlIGN1cnJlbnRfc3RhdGUgICx5eXNjYW5fdCB5eXNjYW5uZXIpOworc3Rh
dGljIGludCB5eV9nZXRfbmV4dF9idWZmZXIgKHl5c2Nhbl90IHl5c2Nhbm5lciApOworc3RhdGlj
IHZvaWQgeXlfZmF0YWxfZXJyb3IgKHl5Y29uc3QgY2hhciBtc2dbXSAseXlzY2FuX3QgeXlzY2Fu
bmVyICk7CisKKy8qIERvbmUgYWZ0ZXIgdGhlIGN1cnJlbnQgcGF0dGVybiBoYXMgYmVlbiBtYXRj
aGVkIGFuZCBiZWZvcmUgdGhlCisgKiBjb3JyZXNwb25kaW5nIGFjdGlvbiAtIHNldHMgdXAgeXl0
ZXh0LgorICovCisjZGVmaW5lIFlZX0RPX0JFRk9SRV9BQ1RJT04gXAorCXl5Zy0+eXl0ZXh0X3B0
ciA9IHl5X2JwOyBcCisJeXlsZW5nID0gKHNpemVfdCkgKHl5X2NwIC0geXlfYnApOyBcCisJeXln
LT55eV9ob2xkX2NoYXIgPSAqeXlfY3A7IFwKKwkqeXlfY3AgPSAnXDAnOyBcCisJeXlnLT55eV9j
X2J1Zl9wID0geXlfY3A7CisKKyNkZWZpbmUgWVlfTlVNX1JVTEVTIDIzCisjZGVmaW5lIFlZX0VO
RF9PRl9CVUZGRVIgMjQKKy8qIFRoaXMgc3RydWN0IGlzIG5vdCB1c2VkIGluIHRoaXMgc2Nhbm5l
ciwKKyAgIGJ1dCBpdHMgcHJlc2VuY2UgaXMgbmVjZXNzYXJ5LiAqLworc3RydWN0IHl5X3RyYW5z
X2luZm8KKwl7CisJZmxleF9pbnQzMl90IHl5X3ZlcmlmeTsKKwlmbGV4X2ludDMyX3QgeXlfbnh0
OworCX07CitzdGF0aWMgeXljb25zdCBmbGV4X2ludDE2X3QgeXlfYWNjZXB0WzEwNV0gPQorICAg
IHsgICAwLAorICAgICAgICAwLCAgICAwLCAgIDI0LCAgIDIzLCAgIDIxLCAgIDIyLCAgIDIwLCAg
IDIwLCAgIDE4LCAgIDE4LAorICAgICAgIDE3LCAgIDE3LCAgIDIxLCAgICAxLCAgIDIxLCAgIDE5
LCAgIDE5LCAgIDE4LCAgICAwLCAgICAwLAorICAgICAgICAwLCAgIDE4LCAgIDE3LCAgIDE3LCAg
IDIxLCAgICAxLCAgICAxLCAgICAwLCAgICAwLCAgICAwLAorICAgICAgICAwLCAgICAwLCAgICAw
LCAgICAwLCAgICAwLCAgICAwLCAgIDE5LCAgIDE4LCAgIDE3LCAgICAwLAorICAgICAgICAwLCAg
ICAwLCAgICAwLCAgICAwLCAgICA1LCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLAorICAg
ICAgIDE5LCAgIDE3LCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgICAwLCAg
ICAwLAorICAgICAgICAwLCAgICAwLCAgICAwLCAgICAwLCAgIDE3LCAgICAwLCAgICA5LCAgICA4
LCAgICAwLCAgICAwLAorICAgICAgICAwLCAgICAwLCAgICAwLCAgIDE2LCAgICAwLCAgICAwLCAg
ICAwLCAgIDE3LCAgICAwLCAgIDEwLAorICAgICAgIDEyLCAgICAwLCAgICA2LCAgICAwLCAgICAw
LCAgICAwLCAgICAwLCAgIDExLCAgICAwLCAgICAwLAorICAgICAgICA3LCAgIDEzLCAgICA0LCAg
ICAwLCAgICAwLCAgICAwLCAgIDE1LCAgICAwLCAgICAwLCAgICAyLAorCisgICAgICAgIDMsICAg
IDAsICAgMTQsICAgIDAKKyAgICB9IDsKKworc3RhdGljIHl5Y29uc3QgZmxleF9pbnQzMl90IHl5
X2VjWzI1Nl0gPQorICAgIHsgICAwLAorICAgICAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAx
LCAgICAxLCAgICAxLCAgICAxLCAgICAyLCAgICAzLAorICAgICAgICA0LCAgICA0LCAgICAxLCAg
ICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLAorICAgICAgICAxLCAgICAx
LCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLCAgICAxLAorICAgICAg
ICAxLCAgICAyLCAgICA1LCAgICAxLCAgICA2LCAgICAxLCAgICA1LCAgICA1LCAgICAxLCAgICA3
LAorICAgICAgICA1LCAgICA1LCAgICA4LCAgICA1LCAgICA4LCAgICA5LCAgICA1LCAgIDEwLCAg
IDExLCAgIDExLAorICAgICAgIDExLCAgIDExLCAgIDExLCAgIDExLCAgIDExLCAgIDEyLCAgIDEy
LCAgICA1LCAgICA1LCAgICA1LAorICAgICAgICA1LCAgICA1LCAgICA1LCAgICAxLCAgIDEzLCAg
IDEzLCAgIDEzLCAgIDEzLCAgIDE0LCAgIDEzLAorICAgICAgIDE1LCAgIDE1LCAgIDE1LCAgIDE1
LCAgIDE1LCAgIDE1LCAgIDE1LCAgIDE1LCAgIDE1LCAgIDE1LAorICAgICAgIDE1LCAgIDE1LCAg
IDE1LCAgIDE1LCAgIDE1LCAgIDE1LCAgIDE1LCAgIDE2LCAgIDE1LCAgIDE1LAorICAgICAgICA1
LCAgICAxLCAgICA1LCAgICA1LCAgIDE1LCAgICAxLCAgIDE3LCAgIDEzLCAgIDEzLCAgIDE4LAor
CisgICAgICAgMTksICAgMjAsICAgMjEsICAgMTUsICAgMjIsICAgMTUsICAgMTUsICAgMjMsICAg
MjQsICAgMjUsCisgICAgICAgMjYsICAgMjcsICAgMTUsICAgMjgsICAgMjksICAgMzAsICAgMzEs
ICAgMzIsICAgMTUsICAgMzMsCisgICAgICAgMTUsICAgMTUsICAgIDUsICAgIDUsICAgIDUsICAg
IDUsICAgIDEsICAgIDEsICAgIDEsICAgIDEsCisgICAgICAgIDEsICAgIDEsICAgIDEsICAgIDEs
ICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsCisgICAgICAgIDEsICAgIDEsICAg
IDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsCisgICAgICAgIDEs
ICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsCisg
ICAgICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEs
ICAgIDEsCisgICAgICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAg
IDEsICAgIDEsICAgIDEsCisgICAgICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEs
ICAgIDEsICAgIDEsICAgIDEsICAgIDEsCisgICAgICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAg
IDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsCisKKyAgICAgICAgMSwgICAgMSwgICAg
MSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKKyAgICAgICAgMSwg
ICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwKKyAg
ICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwg
ICAgMSwKKyAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAg
MSwgICAgMSwgICAgMSwKKyAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAgMSwg
ICAgMSwgICAgMSwgICAgMSwgICAgMSwKKyAgICAgICAgMSwgICAgMSwgICAgMSwgICAgMSwgICAg
MQorICAgIH0gOworCitzdGF0aWMgeXljb25zdCBmbGV4X2ludDMyX3QgeXlfbWV0YVszNF0gPQor
ICAgIHsgICAwLAorICAgICAgICAxLCAgICAyLCAgICAzLCAgICAxLCAgICAxLCAgICAxLCAgICAz
LCAgICAxLCAgICAxLCAgICA0LAorICAgICAgICA0LCAgICA0LCAgICA1LCAgICA2LCAgICA3LCAg
ICA3LCAgICA1LCAgICA1LCAgICA2LCAgICA1LAorICAgICAgICA3LCAgICA3LCAgICA3LCAgICA3
LCAgICA3LCAgICA3LCAgICA3LCAgICA3LCAgICA3LCAgICA3LAorICAgICAgICA3LCAgICA3LCAg
ICA3CisgICAgfSA7CisKK3N0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9iYXNlWzExMV0g
PQorICAgIHsgICAwLAorICAgICAgICAwLCAgIDE4LCAgMTg0LCAgMTg1LCAgIDExLCAgMTg1LCAg
MTg1LCAgIDIxLCAgIDI4LCAgIDUzLAorICAgICAgICAwLCAgMTY0LCAgIDM5LCAgIDcxLCAgIDEy
LCAgIDMyLCAgIDM0LCAgICAxLCAgIDM5LCAgIDQ0LAorICAgICAgICAwLCAgICAwLCAgICAwLCAg
MTYyLCAgIDY0LCAgICAwLCAgICAwLCAgMTYyLCAgIDQ2LCAgMTYwLAorICAgICAgMTU3LCAgMTUw
LCAgMTUyLCAgMTU3LCAgIDcwLCAgIDQ3LCAgIDY1LCAgICAwLCAgMTUzLCAgMTU0LAorICAgICAg
IDYyLCAgMTU1LCAgMTQ0LCAgMTQxLCAgIDY3LCAgMTQ1LCAgMTUyLCAgMTUwLCAgMTM5LCAgIDc2
LAorICAgICAgIDg1LCAgMTQxLCAgMTQzLCAgMTQ0LCAgMTQ0LCAgMTQwLCAgMTM1LCAgMTQxLCAg
MTQwLCAgMTQwLAorICAgICAgMTM4LCAgMTM1LCAgMTM2LCAgMTI1LCAgMTM0LCAgMTI3LCAgMTg1
LCAgMTg1LCAgMTMxLCAgMTIyLAorICAgICAgMTI0LCAgMTI4LCAgMTI4LCAgMTg1LCAgMTIyLCAg
MTI1LCAgMTIyLCAgMTI1LCAgMTIzLCAgMTg1LAorICAgICAgMTg1LCAgMTEyLCAgMTg1LCAgMTIw
LCAgMTEzLCAgMTI3LCAgIDk3LCAgICAwLCAgMTA3LCAgIDg2LAorICAgICAgMTg1LCAgMTg1LCAg
MTA1LCAgIDc2LCAgIDgxLCAgIDM0LCAgMTg1LCAgIDk3LCAgIDEwLCAgMTg1LAorCisgICAgICAx
ODUsICAxMDMsICAxODUsICAxODUsICAxMTAsICAxMTQsICAxMTgsICAxMjEsICAxMjYsICAxMzIK
KyAgICB9IDsKKworc3RhdGljIHl5Y29uc3QgZmxleF9pbnQxNl90IHl5X2RlZlsxMTFdID0KKyAg
ICB7ICAgMCwKKyAgICAgIDEwNSwgIDEwNSwgIDEwNCwgIDEwNCwgIDEwNCwgIDEwNCwgIDEwNCwg
IDEwNCwgIDEwNCwgIDEwNCwKKyAgICAgIDEwNiwgIDEwNiwgIDEwNCwgIDEwNCwgIDEwNCwgIDEw
NywgIDEwNywgICAgOSwgICAxOCwgIDEwNCwKKyAgICAgIDEwOCwgICAxMCwgIDEwNiwgIDEwNiwg
IDEwNCwgICAxNCwgICAxNCwgIDEwNCwgIDEwNCwgIDEwNCwKKyAgICAgIDEwNCwgIDEwNCwgIDEw
NCwgIDEwNCwgIDEwNCwgIDEwNCwgIDEwNCwgIDEwOCwgIDEwNiwgIDEwNCwKKyAgICAgIDEwNCwg
IDEwNCwgIDEwNCwgIDEwNCwgIDEwNCwgIDEwNCwgIDEwNCwgIDEwNCwgIDEwNCwgIDEwNCwKKyAg
ICAgIDEwNCwgIDEwNiwgIDEwNCwgIDEwNCwgIDEwNCwgIDEwNCwgIDEwNCwgIDEwNCwgIDEwNCwg
IDEwNCwKKyAgICAgIDEwNCwgIDEwNCwgIDEwNCwgIDEwNCwgIDEwNiwgIDEwNCwgIDEwNCwgIDEw
NCwgIDEwNCwgIDEwNCwKKyAgICAgIDEwNCwgIDEwNCwgIDEwNCwgIDEwNCwgIDEwNCwgIDEwNCwg
IDEwNCwgIDEwNiwgIDEwNCwgIDEwNCwKKyAgICAgIDEwNCwgIDEwNCwgIDEwNCwgIDEwNCwgIDEw
NCwgIDEwNCwgIDEwNCwgIDEwNiwgIDEwNCwgIDEwNCwKKyAgICAgIDEwNCwgIDEwNCwgIDEwNCwg
IDEwNCwgIDEwOSwgIDEwNCwgIDEwNCwgIDExMCwgIDEwNCwgIDEwNCwKKworICAgICAgMTA0LCAg
MTEwLCAgMTA0LCAgICAwLCAgMTA0LCAgMTA0LCAgMTA0LCAgMTA0LCAgMTA0LCAgMTA0CisgICAg
fSA7CisKK3N0YXRpYyB5eWNvbnN0IGZsZXhfaW50MTZfdCB5eV9ueHRbMjE5XSA9CisgICAgeyAg
IDAsCisgICAgICAgIDQsICAgIDUsICAgIDYsICAgIDUsICAgIDcsICAgIDQsICAgIDcsICAgIDcs
ICAgIDgsICAgIDksCisgICAgICAgMTAsICAgMTAsICAgMTUsICAgMTUsICAgMTUsICAgMTUsICAx
MDQsICAgMTIsICAgIDQsICAgMTMsCisgICAgICAgIDYsICAgIDUsICAgIDcsICAgMTQsICAgIDcs
ICAgIDcsICAgIDgsICAgIDksICAgMTAsICAgMTAsCisgICAgICAgMTYsICAgMTYsICAgMTYsICAx
MDQsICAxMDMsICAgMTIsICAgMTcsICAgMTgsICAgMTgsICAgMTksCisgICAgICAgMjUsICAgMjAs
ICAgMTUsICAgMjEsICAgMjYsICAgMzUsICAgMjAsICAgMzUsICAgMTksICAgMTksCisgICAgICAg
MzUsICAgMzYsICAgMzUsICAgMzcsICAgMzcsICAgMzcsICAgMzcsICAgMzcsICAgMzcsICAgOTks
CisgICAgICAgMjEsICAgMTcsICAgMjIsICAgMjIsICAgMjIsICAgMjUsICAgMjAsICAgMTUsICAg
NDEsICAgMjYsCisgICAgICAgNDIsICAgMjAsICAgMjcsICAgNDMsICAgMzcsICAgMzcsICAgMzcs
ICAgNTAsICAgNDQsICAgNTEsCisgICAgICAgNTEsICAgNTEsICAgOTUsICAgNTQsICAgNTksICAg
NTEsICAgNTEsICAgNTEsICAgMjgsICAgMjksCisgICAgICAgNTUsICAgNjAsICAgMzAsICAgMzEs
ICAgNTEsICAgNTEsICAgNTEsICAgMzIsICAxMDAsICAxMDAsCisKKyAgICAgICA5NywgICAzMywg
ICAzNCwgIDEwMSwgIDEwMCwgIDEwMCwgICA5MywgICA5NiwgICA5NSwgIDEwMSwKKyAgICAgICAx
MSwgICAxMSwgICAxMSwgICAxMSwgICAxMSwgICAxMSwgICAxMSwgICAyMywgICAyMywgICAyMywK
KyAgICAgICAyMywgICAxNiwgICA5NCwgICAxNiwgICAzOCwgICAzOCwgICAzOCwgICA5OCwgICA5
MywgICA5MiwKKyAgICAgICA5OCwgICA5OCwgICA5OCwgIDEwMiwgIDEwMiwgIDEwMiwgIDEwMiwg
IDEwMiwgIDEwMiwgICA5MSwKKyAgICAgICA5MCwgICA4OSwgICA4OCwgICA4NywgICA4NiwgICA4
NSwgICA4NCwgICA4MywgICA4MiwgICA4MSwKKyAgICAgICA4MCwgICA3OSwgICA3OCwgICA3Nywg
ICA3NiwgICA3NSwgICA3NCwgICA3MywgICA3MiwgICA3MSwKKyAgICAgICA3MCwgICA2OSwgICA2
OCwgICA2NywgICA2NiwgICA2NSwgICA2NCwgICA2MywgICA2MiwgICA2MSwKKyAgICAgICA1OCwg
ICA1NywgICA1NiwgICA1MywgICA1MiwgICA0OSwgICA0OCwgICA0NywgICA0NiwgICA0NSwKKyAg
ICAgICA0MCwgICAzOSwgICAyNCwgIDEwNCwgICAgMywgIDEwNCwgIDEwNCwgIDEwNCwgIDEwNCwg
IDEwNCwKKyAgICAgIDEwNCwgIDEwNCwgIDEwNCwgIDEwNCwgIDEwNCwgIDEwNCwgIDEwNCwgIDEw
NCwgIDEwNCwgIDEwNCwKKworICAgICAgMTA0LCAgMTA0LCAgMTA0LCAgMTA0LCAgMTA0LCAgMTA0
LCAgMTA0LCAgMTA0LCAgMTA0LCAgMTA0LAorICAgICAgMTA0LCAgMTA0LCAgMTA0LCAgMTA0LCAg
MTA0LCAgMTA0LCAgMTA0LCAgMTA0CisgICAgfSA7CisKK3N0YXRpYyB5eWNvbnN0IGZsZXhfaW50
MTZfdCB5eV9jaGtbMjE5XSA9CisgICAgeyAgIDAsCisgICAgICAgIDEsICAgIDEsICAgIDEsICAg
IDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsICAgIDEsCisgICAgICAgIDEsICAgIDEs
ICAgIDUsICAgMTUsICAgIDUsICAgMTUsICAgMTgsICAgIDEsICAgIDIsICAgIDIsCisgICAgICAg
IDIsICAgIDIsICAgIDIsICAgIDIsICAgIDIsICAgIDIsICAgIDIsICAgIDIsICAgIDIsICAgIDIs
CisgICAgICAgIDgsICAgIDgsICAgIDgsICAgMTgsICAgOTksICAgIDIsICAgIDksICAgIDksICAg
IDksICAgIDksCisgICAgICAgMTMsICAgIDksICAgMTMsICAgIDksICAgMTMsICAgMTYsICAgIDks
ICAgMTcsICAgMTksICAgMTksCisgICAgICAgMTYsICAgMjAsICAgMTcsICAgMjAsICAgMjAsICAg
MjAsICAgMzYsICAgMzYsICAgMzYsICAgOTYsCisgICAgICAgIDksICAgMTAsICAgMTAsICAgMTAs
ICAgMTAsICAgMjUsICAgMTAsICAgMjUsICAgMjksICAgMjUsCisgICAgICAgMjksICAgMTAsICAg
MTQsICAgMjksICAgMzcsICAgMzcsICAgMzcsICAgMzUsICAgMjksICAgMzUsCisgICAgICAgMzUs
ICAgMzUsICAgOTUsICAgNDEsICAgNDUsICAgNTAsICAgNTAsICAgNTAsICAgMTQsICAgMTQsCisg
ICAgICAgNDEsICAgNDUsICAgMTQsICAgMTQsICAgNTEsICAgNTEsICAgNTEsICAgMTQsICAgOTgs
ICAgOTgsCisKKyAgICAgICA5NCwgICAxNCwgICAxNCwgICA5OCwgIDEwMiwgIDEwMiwgICA5Mywg
ICA5MCwgICA4OSwgIDEwMiwKKyAgICAgIDEwNSwgIDEwNSwgIDEwNSwgIDEwNSwgIDEwNSwgIDEw
NSwgIDEwNSwgIDEwNiwgIDEwNiwgIDEwNiwKKyAgICAgIDEwNiwgIDEwNywgICA4NywgIDEwNywg
IDEwOCwgIDEwOCwgIDEwOCwgIDEwOSwgICA4NiwgICA4NSwKKyAgICAgIDEwOSwgIDEwOSwgIDEw
OSwgIDExMCwgIDExMCwgIDExMCwgIDExMCwgIDExMCwgIDExMCwgICA4NCwKKyAgICAgICA4Miwg
ICA3OSwgICA3OCwgICA3NywgICA3NiwgICA3NSwgICA3MywgICA3MiwgICA3MSwgICA3MCwKKyAg
ICAgICA2OSwgICA2NiwgICA2NSwgICA2NCwgICA2MywgICA2MiwgICA2MSwgICA2MCwgICA1OSwg
ICA1OCwKKyAgICAgICA1NywgICA1NiwgICA1NSwgICA1NCwgICA1MywgICA1MiwgICA0OSwgICA0
OCwgICA0NywgICA0NiwKKyAgICAgICA0NCwgICA0MywgICA0MiwgICA0MCwgICAzOSwgICAzNCwg
ICAzMywgICAzMiwgICAzMSwgICAzMCwKKyAgICAgICAyOCwgICAyNCwgICAxMiwgICAgMywgIDEw
NCwgIDEwNCwgIDEwNCwgIDEwNCwgIDEwNCwgIDEwNCwKKyAgICAgIDEwNCwgIDEwNCwgIDEwNCwg
IDEwNCwgIDEwNCwgIDEwNCwgIDEwNCwgIDEwNCwgIDEwNCwgIDEwNCwKKworICAgICAgMTA0LCAg
MTA0LCAgMTA0LCAgMTA0LCAgMTA0LCAgMTA0LCAgMTA0LCAgMTA0LCAgMTA0LCAgMTA0LAorICAg
ICAgMTA0LCAgMTA0LCAgMTA0LCAgMTA0LCAgMTA0LCAgMTA0LCAgMTA0LCAgMTA0CisgICAgfSA7
CisKKy8qIFRhYmxlIG9mIGJvb2xlYW5zLCB0cnVlIGlmIHJ1bGUgY291bGQgbWF0Y2ggZW9sLiAq
Lworc3RhdGljIHl5Y29uc3QgZmxleF9pbnQzMl90IHl5X3J1bGVfY2FuX21hdGNoX2VvbFsyNF0g
PQorICAgIHsgICAwLAorMCwgMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwg
MCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMSwgMCwgICAgIH07CisKKy8qIFRoZSBpbnRlbnQg
YmVoaW5kIHRoaXMgZGVmaW5pdGlvbiBpcyB0aGF0IGl0J2xsIGNhdGNoCisgKiBhbnkgdXNlcyBv
ZiBSRUpFQ1Qgd2hpY2ggZmxleCBtaXNzZWQuCisgKi8KKyNkZWZpbmUgUkVKRUNUIHJlamVjdF91
c2VkX2J1dF9ub3RfZGV0ZWN0ZWQKKyNkZWZpbmUgeXltb3JlKCkgeXltb3JlX3VzZWRfYnV0X25v
dF9kZXRlY3RlZAorI2RlZmluZSBZWV9NT1JFX0FESiAwCisjZGVmaW5lIFlZX1JFU1RPUkVfWVlf
TU9SRV9PRkZTRVQKKy8qCisvLworLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTEgVGhlIEFOR0xF
IFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNv
dXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUK
Ky8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisvLworCitUaGlzIGZpbGUgY29udGFpbnMg
dGhlIExleCBzcGVjaWZpY2F0aW9uIGZvciBHTFNMIEVTIHByZXByb2Nlc3Nvci4KK0Jhc2VkIG9u
IE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIDIwMTAgUHJlcHJvY2Vzc29yIEdyYW1tYXI6CitodHRw
Oi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvMnNjeHlzODkuYXNweAorCitJRiBZ
T1UgTU9ESUZZIFRISVMgRklMRSBZT1UgQUxTTyBORUVEIFRPIFJVTiBnZW5lcmF0ZV9wYXJzZXIu
c2guCisqLworCisjaW5jbHVkZSAiY29tcGlsZXIvZGVidWcuaCIKKyNpbmNsdWRlICJDb250ZXh0
LmgiCisjaW5jbHVkZSAicHBfdGFiLmgiCisKKyNkZWZpbmUgWVlfVVNFUl9BQ1RJT04gICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICB5eWxsb2MtPmZpcnN0X2xpbmUgPSB5eWxpbmVubzsgICAgICAg
IFwKKyAgICAgICAgeXlsbG9jLT5maXJzdF9jb2x1bW4gPSB5eWNvbHVtbiArIDE7ICBcCisgICAg
ICAgIHl5Y29sdW1uICs9IHl5bGVuZzsgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUo
MCk7CisKKyNkZWZpbmUgWVlfSU5QVVQoYnVmLCByZXN1bHQsIG1heFNpemUpIFwKKyAgICByZXN1
bHQgPSB5eWV4dHJhLT5yZWFkSW5wdXQoYnVmLCBtYXhTaXplKTsKKyAgICAKK3N0YXRpYyBzdGQ6
OnN0cmluZyogZXh0cmFjdE1hY3JvTmFtZShjb25zdCBjaGFyKiBzdHIsIGludCBsZW4pOworCisj
ZGVmaW5lIElOSVRJQUwgMAorCisjZGVmaW5lIFlZX0VYVFJBX1RZUEUgcHA6OkNvbnRleHQqCisK
Ky8qIEhvbGRzIHRoZSBlbnRpcmUgc3RhdGUgb2YgdGhlIHJlZW50cmFudCBzY2FubmVyLiAqLwor
c3RydWN0IHl5Z3V0c190CisgICAgeworCisgICAgLyogVXNlci1kZWZpbmVkLiBOb3QgdG91Y2hl
ZCBieSBmbGV4LiAqLworICAgIFlZX0VYVFJBX1RZUEUgeXlleHRyYV9yOworCisgICAgLyogVGhl
IHJlc3QgYXJlIHRoZSBzYW1lIGFzIHRoZSBnbG9iYWxzIGRlY2xhcmVkIGluIHRoZSBub24tcmVl
bnRyYW50IHNjYW5uZXIuICovCisgICAgRklMRSAqeXlpbl9yLCAqeXlvdXRfcjsKKyAgICBzaXpl
X3QgeXlfYnVmZmVyX3N0YWNrX3RvcDsgLyoqPCBpbmRleCBvZiB0b3Agb2Ygc3RhY2suICovCisg
ICAgc2l6ZV90IHl5X2J1ZmZlcl9zdGFja19tYXg7IC8qKjwgY2FwYWNpdHkgb2Ygc3RhY2suICov
CisgICAgWVlfQlVGRkVSX1NUQVRFICogeXlfYnVmZmVyX3N0YWNrOyAvKio8IFN0YWNrIGFzIGFu
IGFycmF5LiAqLworICAgIGNoYXIgeXlfaG9sZF9jaGFyOworICAgIGludCB5eV9uX2NoYXJzOwor
ICAgIGludCB5eWxlbmdfcjsKKyAgICBjaGFyICp5eV9jX2J1Zl9wOworICAgIGludCB5eV9pbml0
OworICAgIGludCB5eV9zdGFydDsKKyAgICBpbnQgeXlfZGlkX2J1ZmZlcl9zd2l0Y2hfb25fZW9m
OworICAgIGludCB5eV9zdGFydF9zdGFja19wdHI7CisgICAgaW50IHl5X3N0YXJ0X3N0YWNrX2Rl
cHRoOworICAgIGludCAqeXlfc3RhcnRfc3RhY2s7CisgICAgeXlfc3RhdGVfdHlwZSB5eV9sYXN0
X2FjY2VwdGluZ19zdGF0ZTsKKyAgICBjaGFyKiB5eV9sYXN0X2FjY2VwdGluZ19jcG9zOworCisg
ICAgaW50IHl5bGluZW5vX3I7CisgICAgaW50IHl5X2ZsZXhfZGVidWdfcjsKKworICAgIGNoYXIg
Knl5dGV4dF9yOworICAgIGludCB5eV9tb3JlX2ZsYWc7CisgICAgaW50IHl5X21vcmVfbGVuOwor
CisgICAgWVlTVFlQRSAqIHl5bHZhbF9yOworCisgICAgWVlMVFlQRSAqIHl5bGxvY19yOworCisg
ICAgfTsgLyogZW5kIHN0cnVjdCB5eWd1dHNfdCAqLworCitzdGF0aWMgaW50IHl5X2luaXRfZ2xv
YmFscyAoeXlzY2FuX3QgeXlzY2FubmVyICk7CisKKyAgICAvKiBUaGlzIG11c3QgZ28gaGVyZSBi
ZWNhdXNlIFlZU1RZUEUgYW5kIFlZTFRZUEUgYXJlIGluY2x1ZGVkCisgICAgICogZnJvbSBiaXNv
biBvdXRwdXQgaW4gc2VjdGlvbiAxLiovCisgICAgIyAgICBkZWZpbmUgeXlsdmFsIHl5Zy0+eXls
dmFsX3IKKyAgICAKKyAgICAjICAgIGRlZmluZSB5eWxsb2MgeXlnLT55eWxsb2NfcgorICAgIAor
aW50IHBwbGV4X2luaXQgKHl5c2Nhbl90KiBzY2FubmVyKTsKKworaW50IHBwbGV4X2luaXRfZXh0
cmEgKFlZX0VYVFJBX1RZUEUgdXNlcl9kZWZpbmVkLHl5c2Nhbl90KiBzY2FubmVyKTsKKworLyog
QWNjZXNzb3IgbWV0aG9kcyB0byBnbG9iYWxzLgorICAgVGhlc2UgYXJlIG1hZGUgdmlzaWJsZSB0
byBub24tcmVlbnRyYW50IHNjYW5uZXJzIGZvciBjb252ZW5pZW5jZS4gKi8KKworaW50IHBwbGV4
X2Rlc3Ryb3kgKHl5c2Nhbl90IHl5c2Nhbm5lciApOworCitpbnQgcHBnZXRfZGVidWcgKHl5c2Nh
bl90IHl5c2Nhbm5lciApOworCit2b2lkIHBwc2V0X2RlYnVnIChpbnQgZGVidWdfZmxhZyAseXlz
Y2FuX3QgeXlzY2FubmVyICk7CisKK1lZX0VYVFJBX1RZUEUgcHBnZXRfZXh0cmEgKHl5c2Nhbl90
IHl5c2Nhbm5lciApOworCit2b2lkIHBwc2V0X2V4dHJhIChZWV9FWFRSQV9UWVBFIHVzZXJfZGVm
aW5lZCAseXlzY2FuX3QgeXlzY2FubmVyICk7CisKK0ZJTEUgKnBwZ2V0X2luICh5eXNjYW5fdCB5
eXNjYW5uZXIgKTsKKwordm9pZCBwcHNldF9pbiAgKEZJTEUgKiBpbl9zdHIgLHl5c2Nhbl90IHl5
c2Nhbm5lciApOworCitGSUxFICpwcGdldF9vdXQgKHl5c2Nhbl90IHl5c2Nhbm5lciApOworCit2
b2lkIHBwc2V0X291dCAgKEZJTEUgKiBvdXRfc3RyICx5eXNjYW5fdCB5eXNjYW5uZXIgKTsKKwor
aW50IHBwZ2V0X2xlbmcgKHl5c2Nhbl90IHl5c2Nhbm5lciApOworCitjaGFyICpwcGdldF90ZXh0
ICh5eXNjYW5fdCB5eXNjYW5uZXIgKTsKKworaW50IHBwZ2V0X2xpbmVubyAoeXlzY2FuX3QgeXlz
Y2FubmVyICk7CisKK3ZvaWQgcHBzZXRfbGluZW5vIChpbnQgbGluZV9udW1iZXIgLHl5c2Nhbl90
IHl5c2Nhbm5lciApOworCitZWVNUWVBFICogcHBnZXRfbHZhbCAoeXlzY2FuX3QgeXlzY2FubmVy
ICk7CisKK3ZvaWQgcHBzZXRfbHZhbCAoWVlTVFlQRSAqIHl5bHZhbF9wYXJhbSAseXlzY2FuX3Qg
eXlzY2FubmVyICk7CisKKyAgICAgICBZWUxUWVBFICpwcGdldF9sbG9jICh5eXNjYW5fdCB5eXNj
YW5uZXIgKTsKKyAgICAKKyAgICAgICAgdm9pZCBwcHNldF9sbG9jIChZWUxUWVBFICogeXlsbG9j
X3BhcmFtICx5eXNjYW5fdCB5eXNjYW5uZXIgKTsKKyAgICAKKy8qIE1hY3JvcyBhZnRlciB0aGlz
IHBvaW50IGNhbiBhbGwgYmUgb3ZlcnJpZGRlbiBieSB1c2VyIGRlZmluaXRpb25zIGluCisgKiBz
ZWN0aW9uIDEuCisgKi8KKworI2lmbmRlZiBZWV9TS0lQX1lZV1JBUAorI2lmZGVmIF9fY3BsdXNw
bHVzCitleHRlcm4gIkMiIGludCBwcHdyYXAgKHl5c2Nhbl90IHl5c2Nhbm5lciApOworI2Vsc2UK
K2V4dGVybiBpbnQgcHB3cmFwICh5eXNjYW5fdCB5eXNjYW5uZXIgKTsKKyNlbmRpZgorI2VuZGlm
CisKKyNpZm5kZWYgeXl0ZXh0X3B0cgorc3RhdGljIHZvaWQgeXlfZmxleF9zdHJuY3B5IChjaGFy
ICoseXljb25zdCBjaGFyICosaW50ICx5eXNjYW5fdCB5eXNjYW5uZXIpOworI2VuZGlmCisKKyNp
ZmRlZiBZWV9ORUVEX1NUUkxFTgorc3RhdGljIGludCB5eV9mbGV4X3N0cmxlbiAoeXljb25zdCBj
aGFyICogLHl5c2Nhbl90IHl5c2Nhbm5lcik7CisjZW5kaWYKKworI2lmbmRlZiBZWV9OT19JTlBV
VAorCisjaWZkZWYgX19jcGx1c3BsdXMKK3N0YXRpYyBpbnQgeXlpbnB1dCAoeXlzY2FuX3QgeXlz
Y2FubmVyICk7CisjZWxzZQorc3RhdGljIGludCBpbnB1dCAoeXlzY2FuX3QgeXlzY2FubmVyICk7
CisjZW5kaWYKKworI2VuZGlmCisKKyAgICBzdGF0aWMgdm9pZCB5eV9wdXNoX3N0YXRlIChpbnQg
bmV3X3N0YXRlICx5eXNjYW5fdCB5eXNjYW5uZXIpOworICAgIAorICAgIHN0YXRpYyB2b2lkIHl5
X3BvcF9zdGF0ZSAoeXlzY2FuX3QgeXlzY2FubmVyICk7CisgICAgCisgICAgc3RhdGljIGludCB5
eV90b3Bfc3RhdGUgKHl5c2Nhbl90IHl5c2Nhbm5lciApOworICAgIAorLyogQW1vdW50IG9mIHN0
dWZmIHRvIHNsdXJwIHVwIHdpdGggZWFjaCByZWFkLiAqLworI2lmbmRlZiBZWV9SRUFEX0JVRl9T
SVpFCisjZGVmaW5lIFlZX1JFQURfQlVGX1NJWkUgODE5MgorI2VuZGlmCisKKy8qIENvcHkgd2hh
dGV2ZXIgdGhlIGxhc3QgcnVsZSBtYXRjaGVkIHRvIHRoZSBzdGFuZGFyZCBvdXRwdXQuICovCisj
aWZuZGVmIEVDSE8KKy8qIFRoaXMgdXNlZCB0byBiZSBhbiBmcHV0cygpLCBidXQgc2luY2UgdGhl
IHN0cmluZyBtaWdodCBjb250YWluIE5VTCdzLAorICogd2Ugbm93IHVzZSBmd3JpdGUoKS4KKyAq
LworI2RlZmluZSBFQ0hPIGZ3cml0ZSggeXl0ZXh0LCB5eWxlbmcsIDEsIHl5b3V0ICkKKyNlbmRp
ZgorCisvKiBHZXRzIGlucHV0IGFuZCBzdHVmZnMgaXQgaW50byAiYnVmIi4gIG51bWJlciBvZiBj
aGFyYWN0ZXJzIHJlYWQsIG9yIFlZX05VTEwsCisgKiBpcyByZXR1cm5lZCBpbiAicmVzdWx0Ii4K
KyAqLworI2lmbmRlZiBZWV9JTlBVVAorI2RlZmluZSBZWV9JTlBVVChidWYscmVzdWx0LG1heF9z
aXplKSBcCisJaWYgKCBZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X2lzX2ludGVyYWN0aXZl
ICkgXAorCQl7IFwKKwkJaW50IGMgPSAnKic7IFwKKwkJaW50IG47IFwKKwkJZm9yICggbiA9IDA7
IG4gPCBtYXhfc2l6ZSAmJiBcCisJCQkgICAgIChjID0gZ2V0YyggeXlpbiApKSAhPSBFT0YgJiYg
YyAhPSAnXG4nOyArK24gKSBcCisJCQlidWZbbl0gPSAoY2hhcikgYzsgXAorCQlpZiAoIGMgPT0g
J1xuJyApIFwKKwkJCWJ1ZltuKytdID0gKGNoYXIpIGM7IFwKKwkJaWYgKCBjID09IEVPRiAmJiBm
ZXJyb3IoIHl5aW4gKSApIFwKKwkJCVlZX0ZBVEFMX0VSUk9SKCAiaW5wdXQgaW4gZmxleCBzY2Fu
bmVyIGZhaWxlZCIgKTsgXAorCQlyZXN1bHQgPSBuOyBcCisJCX0gXAorCWVsc2UgXAorCQl7IFwK
KwkJZXJybm89MDsgXAorCQl3aGlsZSAoIChyZXN1bHQgPSBmcmVhZChidWYsIDEsIG1heF9zaXpl
LCB5eWluKSk9PTAgJiYgZmVycm9yKHl5aW4pKSBcCisJCQl7IFwKKwkJCWlmKCBlcnJubyAhPSBF
SU5UUikgXAorCQkJCXsgXAorCQkJCVlZX0ZBVEFMX0VSUk9SKCAiaW5wdXQgaW4gZmxleCBzY2Fu
bmVyIGZhaWxlZCIgKTsgXAorCQkJCWJyZWFrOyBcCisJCQkJfSBcCisJCQllcnJubz0wOyBcCisJ
CQljbGVhcmVycih5eWluKTsgXAorCQkJfSBcCisJCX1cCitcCisKKyNlbmRpZgorCisvKiBObyBz
ZW1pLWNvbG9uIGFmdGVyIHJldHVybjsgY29ycmVjdCB1c2FnZSBpcyB0byB3cml0ZSAieXl0ZXJt
aW5hdGUoKTsiIC0KKyAqIHdlIGRvbid0IHdhbnQgYW4gZXh0cmEgJzsnIGFmdGVyIHRoZSAicmV0
dXJuIiBiZWNhdXNlIHRoYXQgd2lsbCBjYXVzZQorICogc29tZSBjb21waWxlcnMgdG8gY29tcGxh
aW4gYWJvdXQgdW5yZWFjaGFibGUgc3RhdGVtZW50cy4KKyAqLworI2lmbmRlZiB5eXRlcm1pbmF0
ZQorI2RlZmluZSB5eXRlcm1pbmF0ZSgpIHJldHVybiBZWV9OVUxMCisjZW5kaWYKKworLyogTnVt
YmVyIG9mIGVudHJpZXMgYnkgd2hpY2ggc3RhcnQtY29uZGl0aW9uIHN0YWNrIGdyb3dzLiAqLwor
I2lmbmRlZiBZWV9TVEFSVF9TVEFDS19JTkNSCisjZGVmaW5lIFlZX1NUQVJUX1NUQUNLX0lOQ1Ig
MjUKKyNlbmRpZgorCisvKiBSZXBvcnQgYSBmYXRhbCBlcnJvci4gKi8KKyNpZm5kZWYgWVlfRkFU
QUxfRVJST1IKKyNkZWZpbmUgWVlfRkFUQUxfRVJST1IobXNnKSB5eV9mYXRhbF9lcnJvciggbXNn
ICwgeXlzY2FubmVyKQorI2VuZGlmCisKKy8qIGVuZCB0YWJsZXMgc2VyaWFsaXphdGlvbiBzdHJ1
Y3R1cmVzIGFuZCBwcm90b3R5cGVzICovCisKKy8qIERlZmF1bHQgZGVjbGFyYXRpb24gb2YgZ2Vu
ZXJhdGVkIHNjYW5uZXIgLSBhIGRlZmluZSBzbyB0aGUgdXNlciBjYW4KKyAqIGVhc2lseSBhZGQg
cGFyYW1ldGVycy4KKyAqLworI2lmbmRlZiBZWV9ERUNMCisjZGVmaW5lIFlZX0RFQ0xfSVNfT1VS
UyAxCisKK2V4dGVybiBpbnQgcHBsZXggXAorICAgICAgICAgICAgICAgKFlZU1RZUEUgKiB5eWx2
YWxfcGFyYW0sWVlMVFlQRSAqIHl5bGxvY19wYXJhbSAseXlzY2FuX3QgeXlzY2FubmVyKTsKKwor
I2RlZmluZSBZWV9ERUNMIGludCBwcGxleCBcCisgICAgICAgICAgICAgICAoWVlTVFlQRSAqIHl5
bHZhbF9wYXJhbSwgWVlMVFlQRSAqIHl5bGxvY19wYXJhbSAsIHl5c2Nhbl90IHl5c2Nhbm5lcikK
KyNlbmRpZiAvKiAhWVlfREVDTCAqLworCisvKiBDb2RlIGV4ZWN1dGVkIGF0IHRoZSBiZWdpbm5p
bmcgb2YgZWFjaCBydWxlLCBhZnRlciB5eXRleHQgYW5kIHl5bGVuZworICogaGF2ZSBiZWVuIHNl
dCB1cC4KKyAqLworI2lmbmRlZiBZWV9VU0VSX0FDVElPTgorI2RlZmluZSBZWV9VU0VSX0FDVElP
TgorI2VuZGlmCisKKy8qIENvZGUgZXhlY3V0ZWQgYXQgdGhlIGVuZCBvZiBlYWNoIHJ1bGUuICov
CisjaWZuZGVmIFlZX0JSRUFLCisjZGVmaW5lIFlZX0JSRUFLIGJyZWFrOworI2VuZGlmCisKKyNk
ZWZpbmUgWVlfUlVMRV9TRVRVUCBcCisJaWYgKCB5eWxlbmcgPiAwICkgXAorCQlZWV9DVVJSRU5U
X0JVRkZFUl9MVkFMVUUtPnl5X2F0X2JvbCA9IFwKKwkJCQkoeXl0ZXh0W3l5bGVuZyAtIDFdID09
ICdcbicpOyBcCisJWVlfVVNFUl9BQ1RJT04KKworLyoqIFRoZSBtYWluIHNjYW5uZXIgZnVuY3Rp
b24gd2hpY2ggZG9lcyBhbGwgdGhlIHdvcmsuCisgKi8KK1lZX0RFQ0wKK3sKKwlyZWdpc3RlciB5
eV9zdGF0ZV90eXBlIHl5X2N1cnJlbnRfc3RhdGU7CisJcmVnaXN0ZXIgY2hhciAqeXlfY3AsICp5
eV9icDsKKwlyZWdpc3RlciBpbnQgeXlfYWN0OworICAgIHN0cnVjdCB5eWd1dHNfdCAqIHl5ZyA9
IChzdHJ1Y3QgeXlndXRzX3QqKXl5c2Nhbm5lcjsKKworICAgIHl5bHZhbCA9IHl5bHZhbF9wYXJh
bTsKKworICAgIHl5bGxvYyA9IHl5bGxvY19wYXJhbTsKKworCWlmICggIXl5Zy0+eXlfaW5pdCAp
CisJCXsKKwkJeXlnLT55eV9pbml0ID0gMTsKKworI2lmZGVmIFlZX1VTRVJfSU5JVAorCQlZWV9V
U0VSX0lOSVQ7CisjZW5kaWYKKworCQlpZiAoICEgeXlnLT55eV9zdGFydCApCisJCQl5eWctPnl5
X3N0YXJ0ID0gMTsJLyogZmlyc3Qgc3RhcnQgc3RhdGUgKi8KKworCQlpZiAoICEgeXlpbiApCisJ
CQl5eWluID0gc3RkaW47CisKKwkJaWYgKCAhIHl5b3V0ICkKKwkJCXl5b3V0ID0gc3Rkb3V0Owor
CisJCWlmICggISBZWV9DVVJSRU5UX0JVRkZFUiApIHsKKwkJCXBwZW5zdXJlX2J1ZmZlcl9zdGFj
ayAoeXlzY2FubmVyKTsKKwkJCVlZX0NVUlJFTlRfQlVGRkVSX0xWQUxVRSA9CisJCQkJcHBfY3Jl
YXRlX2J1ZmZlcih5eWluLFlZX0JVRl9TSVpFICx5eXNjYW5uZXIpOworCQl9CisKKwkJcHBfbG9h
ZF9idWZmZXJfc3RhdGUoeXlzY2FubmVyICk7CisJCX0KKworCXdoaWxlICggMSApCQkvKiBsb29w
cyB1bnRpbCBlbmQtb2YtZmlsZSBpcyByZWFjaGVkICovCisJCXsKKwkJeXlfY3AgPSB5eWctPnl5
X2NfYnVmX3A7CisKKwkJLyogU3VwcG9ydCBvZiB5eXRleHQuICovCisJCSp5eV9jcCA9IHl5Zy0+
eXlfaG9sZF9jaGFyOworCisJCS8qIHl5X2JwIHBvaW50cyB0byB0aGUgcG9zaXRpb24gaW4geXlf
Y2hfYnVmIG9mIHRoZSBzdGFydCBvZgorCQkgKiB0aGUgY3VycmVudCBydW4uCisJCSAqLworCQl5
eV9icCA9IHl5X2NwOworCisJCXl5X2N1cnJlbnRfc3RhdGUgPSB5eWctPnl5X3N0YXJ0OworCQl5
eV9jdXJyZW50X3N0YXRlICs9IFlZX0FUX0JPTCgpOworeXlfbWF0Y2g6CisJCWRvCisJCQl7CisJ
CQlyZWdpc3RlciBZWV9DSEFSIHl5X2MgPSB5eV9lY1tZWV9TQ19UT19VSSgqeXlfY3ApXTsKKwkJ
CWlmICggeXlfYWNjZXB0W3l5X2N1cnJlbnRfc3RhdGVdICkKKwkJCQl7CisJCQkJeXlnLT55eV9s
YXN0X2FjY2VwdGluZ19zdGF0ZSA9IHl5X2N1cnJlbnRfc3RhdGU7CisJCQkJeXlnLT55eV9sYXN0
X2FjY2VwdGluZ19jcG9zID0geXlfY3A7CisJCQkJfQorCQkJd2hpbGUgKCB5eV9jaGtbeXlfYmFz
ZVt5eV9jdXJyZW50X3N0YXRlXSArIHl5X2NdICE9IHl5X2N1cnJlbnRfc3RhdGUgKQorCQkJCXsK
KwkJCQl5eV9jdXJyZW50X3N0YXRlID0gKGludCkgeXlfZGVmW3l5X2N1cnJlbnRfc3RhdGVdOwor
CQkJCWlmICggeXlfY3VycmVudF9zdGF0ZSA+PSAxMDUgKQorCQkJCQl5eV9jID0geXlfbWV0YVso
dW5zaWduZWQgaW50KSB5eV9jXTsKKwkJCQl9CisJCQl5eV9jdXJyZW50X3N0YXRlID0geXlfbnh0
W3l5X2Jhc2VbeXlfY3VycmVudF9zdGF0ZV0gKyAodW5zaWduZWQgaW50KSB5eV9jXTsKKwkJCSsr
eXlfY3A7CisJCQl9CisJCXdoaWxlICggeXlfY3VycmVudF9zdGF0ZSAhPSAxMDQgKTsKKwkJeXlf
Y3AgPSB5eWctPnl5X2xhc3RfYWNjZXB0aW5nX2Nwb3M7CisJCXl5X2N1cnJlbnRfc3RhdGUgPSB5
eWctPnl5X2xhc3RfYWNjZXB0aW5nX3N0YXRlOworCit5eV9maW5kX2FjdGlvbjoKKwkJeXlfYWN0
ID0geXlfYWNjZXB0W3l5X2N1cnJlbnRfc3RhdGVdOworCisJCVlZX0RPX0JFRk9SRV9BQ1RJT047
CisKKwkJaWYgKCB5eV9hY3QgIT0gWVlfRU5EX09GX0JVRkZFUiAmJiB5eV9ydWxlX2Nhbl9tYXRj
aF9lb2xbeXlfYWN0XSApCisJCQl7CisJCQlpbnQgeXlsOworCQkJZm9yICggeXlsID0gMDsgeXls
IDwgeXlsZW5nOyArK3l5bCApCisJCQkJaWYgKCB5eXRleHRbeXlsXSA9PSAnXG4nICkKKwkJCQkJ
ICAgCisgICAgZG97IHl5bGluZW5vKys7CisgICAgICAgIHl5Y29sdW1uPTA7CisgICAgfXdoaWxl
KDApCis7CisJCQl9CisKK2RvX2FjdGlvbjoJLyogVGhpcyBsYWJlbCBpcyB1c2VkIG9ubHkgdG8g
YWNjZXNzIEVPRiBhY3Rpb25zLiAqLworCisJCXN3aXRjaCAoIHl5X2FjdCApCisJeyAvKiBiZWdp
bm5pbmcgb2YgYWN0aW9uIHN3aXRjaCAqLworCQkJY2FzZSAwOiAvKiBtdXN0IGJhY2sgdXAgKi8K
KwkJCS8qIHVuZG8gdGhlIGVmZmVjdHMgb2YgWVlfRE9fQkVGT1JFX0FDVElPTiAqLworCQkJKnl5
X2NwID0geXlnLT55eV9ob2xkX2NoYXI7CisJCQl5eV9jcCA9IHl5Zy0+eXlfbGFzdF9hY2NlcHRp
bmdfY3BvczsKKwkJCXl5X2N1cnJlbnRfc3RhdGUgPSB5eWctPnl5X2xhc3RfYWNjZXB0aW5nX3N0
YXRlOworCQkJZ290byB5eV9maW5kX2FjdGlvbjsKKworY2FzZSAxOgorWVlfUlVMRV9TRVRVUAor
eyByZXR1cm4gSEFTSDsgfQorCVlZX0JSRUFLCitjYXNlIDI6CisvKiBydWxlIDIgY2FuIG1hdGNo
IGVvbCAqLworKnl5X2NwID0geXlnLT55eV9ob2xkX2NoYXI7IC8qIHVuZG8gZWZmZWN0cyBvZiBz
ZXR0aW5nIHVwIHl5dGV4dCAqLworeXlnLT55eV9jX2J1Zl9wID0geXlfY3AgLT0gMTsKK1lZX0RP
X0JFRk9SRV9BQ1RJT047IC8qIHNldCB1cCB5eXRleHQgYWdhaW4gKi8KK1lZX1JVTEVfU0VUVVAK
K3sKKyAgICB5eWx2YWwtPnN2YWwgPSBleHRyYWN0TWFjcm9OYW1lKHl5dGV4dCwgeXlsZW5nKTsK
KyAgICByZXR1cm4gSEFTSF9ERUZJTkVfT0JKOworfQorCVlZX0JSRUFLCitjYXNlIDM6CisqeXlf
Y3AgPSB5eWctPnl5X2hvbGRfY2hhcjsgLyogdW5kbyBlZmZlY3RzIG9mIHNldHRpbmcgdXAgeXl0
ZXh0ICovCit5eWctPnl5X2NfYnVmX3AgPSB5eV9jcCAtPSAxOworWVlfRE9fQkVGT1JFX0FDVElP
TjsgLyogc2V0IHVwIHl5dGV4dCBhZ2FpbiAqLworWVlfUlVMRV9TRVRVUAoreworICAgIHl5bHZh
bC0+c3ZhbCA9IGV4dHJhY3RNYWNyb05hbWUoeXl0ZXh0LCB5eWxlbmcpOworICAgIHJldHVybiBI
QVNIX0RFRklORV9GVU5DOworfQorCVlZX0JSRUFLCitjYXNlIDQ6CitZWV9SVUxFX1NFVFVQCit7
IHJldHVybiBIQVNIX1VOREVGOyB9CisJWVlfQlJFQUsKK2Nhc2UgNToKK1lZX1JVTEVfU0VUVVAK
K3sgcmV0dXJuIEhBU0hfSUY7IH0KKwlZWV9CUkVBSworY2FzZSA2OgorWVlfUlVMRV9TRVRVUAor
eyByZXR1cm4gSEFTSF9JRkRFRjsgfQorCVlZX0JSRUFLCitjYXNlIDc6CitZWV9SVUxFX1NFVFVQ
Cit7IHJldHVybiBIQVNIX0lGTkRFRjsgfQorCVlZX0JSRUFLCitjYXNlIDg6CitZWV9SVUxFX1NF
VFVQCit7IHJldHVybiBIQVNIX0VMU0U7IH0KKwlZWV9CUkVBSworY2FzZSA5OgorWVlfUlVMRV9T
RVRVUAoreyByZXR1cm4gSEFTSF9FTElGOyB9CisJWVlfQlJFQUsKK2Nhc2UgMTA6CitZWV9SVUxF
X1NFVFVQCit7IHJldHVybiBIQVNIX0VORElGOyB9CisJWVlfQlJFQUsKK2Nhc2UgMTE6CitZWV9S
VUxFX1NFVFVQCit7IHJldHVybiBERUZJTkVEOyB9CisJWVlfQlJFQUsKK2Nhc2UgMTI6CitZWV9S
VUxFX1NFVFVQCit7IHJldHVybiBIQVNIX0VSUk9SOyB9CisJWVlfQlJFQUsKK2Nhc2UgMTM6CitZ
WV9SVUxFX1NFVFVQCit7IHJldHVybiBIQVNIX1BSQUdNQTsgfQorCVlZX0JSRUFLCitjYXNlIDE0
OgorWVlfUlVMRV9TRVRVUAoreyByZXR1cm4gSEFTSF9FWFRFTlNJT047IH0KKwlZWV9CUkVBSwor
Y2FzZSAxNToKK1lZX1JVTEVfU0VUVVAKK3sgcmV0dXJuIEhBU0hfVkVSU0lPTjsgfQorCVlZX0JS
RUFLCitjYXNlIDE2OgorWVlfUlVMRV9TRVRVUAoreyByZXR1cm4gSEFTSF9MSU5FOyB9CisJWVlf
QlJFQUsKK2Nhc2UgMTc6CitZWV9SVUxFX1NFVFVQCit7CisgICAgeXlsdmFsLT5zdmFsID0gbmV3
IHN0ZDo6c3RyaW5nKHl5dGV4dCwgeXlsZW5nKTsKKyAgICByZXR1cm4gSURFTlRJRklFUjsKK30K
KwlZWV9CUkVBSworY2FzZSAxODoKK1lZX1JVTEVfU0VUVVAKK3sKKyAgICB5eWx2YWwtPnN2YWwg
PSBuZXcgc3RkOjpzdHJpbmcoeXl0ZXh0LCB5eWxlbmcpOworICAgIHJldHVybiBJTlRfQ09OU1RB
TlQ7Cit9CisJWVlfQlJFQUsKK2Nhc2UgMTk6CitZWV9SVUxFX1NFVFVQCit7CisgICAgeXlsdmFs
LT5zdmFsID0gbmV3IHN0ZDo6c3RyaW5nKHl5dGV4dCwgeXlsZW5nKTsKKyAgICByZXR1cm4gRkxP
QVRfQ09OU1RBTlQ7Cit9CisJWVlfQlJFQUsKK2Nhc2UgMjA6CitZWV9SVUxFX1NFVFVQCit7IHJl
dHVybiB5eXRleHRbMF07IH0KKwlZWV9CUkVBSworY2FzZSAyMToKK1lZX1JVTEVfU0VUVVAKK3sg
LyogSWdub3JlIHdoaXRlc3BhY2UgKi8gfQorCVlZX0JSRUFLCitjYXNlIDIyOgorLyogcnVsZSAy
MiBjYW4gbWF0Y2ggZW9sICovCitZWV9SVUxFX1NFVFVQCit7CisgICAgKyt5eWxpbmVubzsgeXlj
b2x1bW4gPSAwOworICAgIHJldHVybiB5eXRleHRbMF07Cit9CisJWVlfQlJFQUsKK2Nhc2UgWVlf
U1RBVEVfRU9GKElOSVRJQUwpOgoreyB5eXRlcm1pbmF0ZSgpOyB9CisJWVlfQlJFQUsKK2Nhc2Ug
MjM6CitZWV9SVUxFX1NFVFVQCitFQ0hPOworCVlZX0JSRUFLCisKKwljYXNlIFlZX0VORF9PRl9C
VUZGRVI6CisJCXsKKwkJLyogQW1vdW50IG9mIHRleHQgbWF0Y2hlZCBub3QgaW5jbHVkaW5nIHRo
ZSBFT0IgY2hhci4gKi8KKwkJaW50IHl5X2Ftb3VudF9vZl9tYXRjaGVkX3RleHQgPSAoaW50KSAo
eXlfY3AgLSB5eWctPnl5dGV4dF9wdHIpIC0gMTsKKworCQkvKiBVbmRvIHRoZSBlZmZlY3RzIG9m
IFlZX0RPX0JFRk9SRV9BQ1RJT04uICovCisJCSp5eV9jcCA9IHl5Zy0+eXlfaG9sZF9jaGFyOwor
CQlZWV9SRVNUT1JFX1lZX01PUkVfT0ZGU0VUCisKKwkJaWYgKCBZWV9DVVJSRU5UX0JVRkZFUl9M
VkFMVUUtPnl5X2J1ZmZlcl9zdGF0dXMgPT0gWVlfQlVGRkVSX05FVyApCisJCQl7CisJCQkvKiBX
ZSdyZSBzY2FubmluZyBhIG5ldyBmaWxlIG9yIGlucHV0IHNvdXJjZS4gIEl0J3MKKwkJCSAqIHBv
c3NpYmxlIHRoYXQgdGhpcyBoYXBwZW5lZCBiZWNhdXNlIHRoZSB1c2VyCisJCQkgKiBqdXN0IHBv
aW50ZWQgeXlpbiBhdCBhIG5ldyBzb3VyY2UgYW5kIGNhbGxlZAorCQkJICogcHBsZXgoKS4gIElm
IHNvLCB0aGVuIHdlIGhhdmUgdG8gYXNzdXJlCisJCQkgKiBjb25zaXN0ZW5jeSBiZXR3ZWVuIFlZ
X0NVUlJFTlRfQlVGRkVSIGFuZCBvdXIKKwkJCSAqIGdsb2JhbHMuICBIZXJlIGlzIHRoZSByaWdo
dCBwbGFjZSB0byBkbyBzbywgYmVjYXVzZQorCQkJICogdGhpcyBpcyB0aGUgZmlyc3QgYWN0aW9u
IChvdGhlciB0aGFuIHBvc3NpYmx5IGEKKwkJCSAqIGJhY2stdXApIHRoYXQgd2lsbCBtYXRjaCBm
b3IgdGhlIG5ldyBpbnB1dCBzb3VyY2UuCisJCQkgKi8KKwkJCXl5Zy0+eXlfbl9jaGFycyA9IFlZ
X0NVUlJFTlRfQlVGRkVSX0xWQUxVRS0+eXlfbl9jaGFyczsKKwkJCVlZX0NVUlJFTlRfQlVGRkVS
X0xWQUxVRS0+eXlfaW5wdXRfZmlsZSA9IHl5aW47CisJCQlZWV9DVVJSRU5UX0JVRkZFUl9MVkFM
VUUtPnl5X2J1ZmZlcl9zdGF0dXMgPSBZWV9CVUZGRVJfTk9STUFMOworCQkJfQorCisJCS8qIE5v
dGUgdGhhdCBoZXJlIHdlIHRlc3QgZm9yIHl5X2NfYnVmX3AgIjw9IiB0byB0aGUgcG9zaXRpb24K
KwkJICogb2YgdGhlIGZpcnN0IEVPQiBpbiB0aGUgYnVmZmVyLCBzaW5jZSB5eV9jX2J1Zl9wIHdp
bGwKKwkJICogYWxyZWFkeSBoYXZlIGJlZW4gaW5jcmVtZW50ZWQgcGFzdCB0aGUgTlVMIGNoYXJh
Y3RlcgorCQkgKiAoc2luY2UgYWxsIHN0YXRlcyBtYWtlIHRyYW5zaXRpb25zIG9uIEVPQiB0byB0
aGUKKwkJICogZW5kLW9mLWJ1ZmZlciBzdGF0ZSkuICBDb250cmFzdCB0aGlzIHdpdGggdGhlIHRl
c3QKKwkJICogaW4gaW5wdXQoKS4KKwkJICovCisJCWlmICggeXlnLT55eV9jX2J1Zl9wIDw9ICZZ
WV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X2NoX2J1Zlt5eWctPnl5X25fY2hhcnNdICkKKwkJ
CXsgLyogVGhpcyB3YXMgcmVhbGx5IGEgTlVMLiAqLworCQkJeXlfc3RhdGVfdHlwZSB5eV9uZXh0
X3N0YXRlOworCisJCQl5eWctPnl5X2NfYnVmX3AgPSB5eWctPnl5dGV4dF9wdHIgKyB5eV9hbW91
bnRfb2ZfbWF0Y2hlZF90ZXh0OworCisJCQl5eV9jdXJyZW50X3N0YXRlID0geXlfZ2V0X3ByZXZp
b3VzX3N0YXRlKCB5eXNjYW5uZXIgKTsKKworCQkJLyogT2theSwgd2UncmUgbm93IHBvc2l0aW9u
ZWQgdG8gbWFrZSB0aGUgTlVMCisJCQkgKiB0cmFuc2l0aW9uLiAgV2UgY291bGRuJ3QgaGF2ZQor
CQkJICogeXlfZ2V0X3ByZXZpb3VzX3N0YXRlKCkgZ28gYWhlYWQgYW5kIGRvIGl0CisJCQkgKiBm
b3IgdXMgYmVjYXVzZSBpdCBkb2Vzbid0IGtub3cgaG93IHRvIGRlYWwKKwkJCSAqIHdpdGggdGhl
IHBvc3NpYmlsaXR5IG9mIGphbW1pbmcgKGFuZCB3ZSBkb24ndAorCQkJICogd2FudCB0byBidWls
ZCBqYW1taW5nIGludG8gaXQgYmVjYXVzZSB0aGVuIGl0CisJCQkgKiB3aWxsIHJ1biBtb3JlIHNs
b3dseSkuCisJCQkgKi8KKworCQkJeXlfbmV4dF9zdGF0ZSA9IHl5X3RyeV9OVUxfdHJhbnMoIHl5
X2N1cnJlbnRfc3RhdGUgLCB5eXNjYW5uZXIpOworCisJCQl5eV9icCA9IHl5Zy0+eXl0ZXh0X3B0
ciArIFlZX01PUkVfQURKOworCisJCQlpZiAoIHl5X25leHRfc3RhdGUgKQorCQkJCXsKKwkJCQkv
KiBDb25zdW1lIHRoZSBOVUwuICovCisJCQkJeXlfY3AgPSArK3l5Zy0+eXlfY19idWZfcDsKKwkJ
CQl5eV9jdXJyZW50X3N0YXRlID0geXlfbmV4dF9zdGF0ZTsKKwkJCQlnb3RvIHl5X21hdGNoOwor
CQkJCX0KKworCQkJZWxzZQorCQkJCXsKKwkJCQl5eV9jcCA9IHl5Zy0+eXlfbGFzdF9hY2NlcHRp
bmdfY3BvczsKKwkJCQl5eV9jdXJyZW50X3N0YXRlID0geXlnLT55eV9sYXN0X2FjY2VwdGluZ19z
dGF0ZTsKKwkJCQlnb3RvIHl5X2ZpbmRfYWN0aW9uOworCQkJCX0KKwkJCX0KKworCQllbHNlIHN3
aXRjaCAoIHl5X2dldF9uZXh0X2J1ZmZlciggeXlzY2FubmVyICkgKQorCQkJeworCQkJY2FzZSBF
T0JfQUNUX0VORF9PRl9GSUxFOgorCQkJCXsKKwkJCQl5eWctPnl5X2RpZF9idWZmZXJfc3dpdGNo
X29uX2VvZiA9IDA7CisKKwkJCQlpZiAoIHBwd3JhcCh5eXNjYW5uZXIgKSApCisJCQkJCXsKKwkJ
CQkJLyogTm90ZTogYmVjYXVzZSB3ZSd2ZSB0YWtlbiBjYXJlIGluCisJCQkJCSAqIHl5X2dldF9u
ZXh0X2J1ZmZlcigpIHRvIGhhdmUgc2V0IHVwCisJCQkJCSAqIHl5dGV4dCwgd2UgY2FuIG5vdyBz
ZXQgdXAKKwkJCQkJICogeXlfY19idWZfcCBzbyB0aGF0IGlmIHNvbWUgdG90YWwKKwkJCQkJICog
aG9zZXIgKGxpa2UgZmxleCBpdHNlbGYpIHdhbnRzIHRvCisJCQkJCSAqIGNhbGwgdGhlIHNjYW5u
ZXIgYWZ0ZXIgd2UgcmV0dXJuIHRoZQorCQkJCQkgKiBZWV9OVUxMLCBpdCdsbCBzdGlsbCB3b3Jr
IC0gYW5vdGhlcgorCQkJCQkgKiBZWV9OVUxMIHdpbGwgZ2V0IHJldHVybmVkLgorCQkJCQkgKi8K
KwkJCQkJeXlnLT55eV9jX2J1Zl9wID0geXlnLT55eXRleHRfcHRyICsgWVlfTU9SRV9BREo7CisK
KwkJCQkJeXlfYWN0ID0gWVlfU1RBVEVfRU9GKFlZX1NUQVJUKTsKKwkJCQkJZ290byBkb19hY3Rp
b247CisJCQkJCX0KKworCQkJCWVsc2UKKwkJCQkJeworCQkJCQlpZiAoICEgeXlnLT55eV9kaWRf
YnVmZmVyX3N3aXRjaF9vbl9lb2YgKQorCQkJCQkJWVlfTkVXX0ZJTEU7CisJCQkJCX0KKwkJCQli
cmVhazsKKwkJCQl9CisKKwkJCWNhc2UgRU9CX0FDVF9DT05USU5VRV9TQ0FOOgorCQkJCXl5Zy0+
eXlfY19idWZfcCA9CisJCQkJCXl5Zy0+eXl0ZXh0X3B0ciArIHl5X2Ftb3VudF9vZl9tYXRjaGVk
X3RleHQ7CisKKwkJCQl5eV9jdXJyZW50X3N0YXRlID0geXlfZ2V0X3ByZXZpb3VzX3N0YXRlKCB5
eXNjYW5uZXIgKTsKKworCQkJCXl5X2NwID0geXlnLT55eV9jX2J1Zl9wOworCQkJCXl5X2JwID0g
eXlnLT55eXRleHRfcHRyICsgWVlfTU9SRV9BREo7CisJCQkJZ290byB5eV9tYXRjaDsKKworCQkJ
Y2FzZSBFT0JfQUNUX0xBU1RfTUFUQ0g6CisJCQkJeXlnLT55eV9jX2J1Zl9wID0KKwkJCQkmWVlf
Q1VSUkVOVF9CVUZGRVJfTFZBTFVFLT55eV9jaF9idWZbeXlnLT55eV9uX2NoYXJzXTsKKworCQkJ
CXl5X2N1cnJlbnRfc3RhdGUgPSB5eV9nZXRfcHJldmlvdXNfc3RhdGUoIHl5c2Nhbm5lciApOwor
CisJCQkJeXlfY3AgPSB5eWctPnl5X2NfYnVmX3A7CisJCQkJeXlfYnAgPSB5eWctPnl5dGV4dF9w
dHIgKyBZWV9NT1JFX0FESjsKKwkJCQlnb3RvIHl5X2ZpbmRfYWN0aW9uOworCQkJfQorCQlicmVh
azsKKwkJfQorCisJZGVmYXVsdDoKKwkJWVlfRkFUQUxfRVJST1IoCisJCQkiZmF0YWwgZmxleCBz
Y2FubmVyIGludGVybmFsIGVycm9yLS1ubyBhY3Rpb24gZm91bmQiICk7CisJfSAvKiBlbmQgb2Yg
YWN0aW9uIHN3aXRjaCAqLworCQl9IC8qIGVuZCBvZiBzY2FubmluZyBvbmUgdG9rZW4gKi8KK30g
LyogZW5kIG9mIHBwbGV4ICovCisKKy8qIHl5X2dldF9uZXh0X2J1ZmZlciAtIHRyeSB0byByZWFk
IGluIGEgbmV3IGJ1ZmZlcgorICoKKyAqIFJldHVybnMgYSBjb2RlIHJlcHJlc2VudGluZyBhbiBh
Y3Rpb246CisgKglFT0JfQUNUX0xBU1RfTUFUQ0ggLQorICoJRU9CX0FDVF9DT05USU5VRV9TQ0FO
IC0gY29udGludWUgc2Nhbm5pbmcgZnJvbSBjdXJyZW50IHBvc2l0aW9uCisgKglFT0JfQUNUX0VO
RF9PRl9GSUxFIC0gZW5kIG9mIGZpbGUKKyAqLworc3RhdGljIGludCB5eV9nZXRfbmV4dF9idWZm
ZXIgKHl5c2Nhbl90IHl5c2Nhbm5lcikKK3sKKyAgICBzdHJ1Y3QgeXlndXRzX3QgKiB5eWcgPSAo
c3RydWN0IHl5Z3V0c190Kil5eXNjYW5uZXI7CisJcmVnaXN0ZXIgY2hhciAqZGVzdCA9IFlZX0NV
UlJFTlRfQlVGRkVSX0xWQUxVRS0+eXlfY2hfYnVmOworCXJlZ2lzdGVyIGNoYXIgKnNvdXJjZSA9
IHl5Zy0+eXl0ZXh0X3B0cjsKKwlyZWdpc3RlciBpbnQgbnVtYmVyX3RvX21vdmUsIGk7CisJaW50
IHJldF92YWw7CisKKwlpZiAoIHl5Zy0+eXlfY19idWZfcCA+ICZZWV9DVVJSRU5UX0JVRkZFUl9M
VkFMVUUtPnl5X2NoX2J1Zlt5eWctPnl5X25fY2hhcnMgKyAxXSApCisJCVlZX0ZBVEFMX0VSUk9S
KAorCQkiZmF0YWwgZmxleCBzY2FubmVyIGludGVybmFsIGVycm9yLS1lbmQgb2YgYnVmZmVyIG1p
c3NlZCIgKTsKKworCWlmICggWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVFLT55eV9maWxsX2J1ZmZl
ciA9PSAwICkKKwkJeyAvKiBEb24ndCB0cnkgdG8gZmlsbCB0aGUgYnVmZmVyLCBzbyB0aGlzIGlz
IGFuIEVPRi4gKi8KKwkJaWYgKCB5eWctPnl5X2NfYnVmX3AgLSB5eWctPnl5dGV4dF9wdHIgLSBZ
WV9NT1JFX0FESiA9PSAxICkKKwkJCXsKKwkJCS8qIFdlIG1hdGNoZWQgYSBzaW5nbGUgY2hhcmFj
dGVyLCB0aGUgRU9CLCBzbworCQkJICogdHJlYXQgdGhpcyBhcyBhIGZpbmFsIEVPRi4KKwkJCSAq
LworCQkJcmV0dXJuIEVPQl9BQ1RfRU5EX09GX0ZJTEU7CisJCQl9CisKKwkJZWxzZQorCQkJewor
CQkJLyogV2UgbWF0Y2hlZCBzb21lIHRleHQgcHJpb3IgdG8gdGhlIEVPQiwgZmlyc3QKKwkJCSAq
IHByb2Nlc3MgaXQuCisJCQkgKi8KKwkJCXJldHVybiBFT0JfQUNUX0xBU1RfTUFUQ0g7CisJCQl9
CisJCX0KKworCS8qIFRyeSB0byByZWFkIG1vcmUgZGF0YS4gKi8KKworCS8qIEZpcnN0IG1vdmUg
bGFzdCBjaGFycyB0byBzdGFydCBvZiBidWZmZXIuICovCisJbnVtYmVyX3RvX21vdmUgPSAoaW50
KSAoeXlnLT55eV9jX2J1Zl9wIC0geXlnLT55eXRleHRfcHRyKSAtIDE7CisKKwlmb3IgKCBpID0g
MDsgaSA8IG51bWJlcl90b19tb3ZlOyArK2kgKQorCQkqKGRlc3QrKykgPSAqKHNvdXJjZSsrKTsK
KworCWlmICggWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVFLT55eV9idWZmZXJfc3RhdHVzID09IFlZ
X0JVRkZFUl9FT0ZfUEVORElORyApCisJCS8qIGRvbid0IGRvIHRoZSByZWFkLCBpdCdzIG5vdCBn
dWFyYW50ZWVkIHRvIHJldHVybiBhbiBFT0YsCisJCSAqIGp1c3QgZm9yY2UgYW4gRU9GCisJCSAq
LworCQlZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X25fY2hhcnMgPSB5eWctPnl5X25fY2hh
cnMgPSAwOworCisJZWxzZQorCQl7CisJCQlpbnQgbnVtX3RvX3JlYWQgPQorCQkJWVlfQ1VSUkVO
VF9CVUZGRVJfTFZBTFVFLT55eV9idWZfc2l6ZSAtIG51bWJlcl90b19tb3ZlIC0gMTsKKworCQl3
aGlsZSAoIG51bV90b19yZWFkIDw9IDAgKQorCQkJeyAvKiBOb3QgZW5vdWdoIHJvb20gaW4gdGhl
IGJ1ZmZlciAtIGdyb3cgaXQuICovCisKKwkJCS8qIGp1c3QgYSBzaG9ydGVyIG5hbWUgZm9yIHRo
ZSBjdXJyZW50IGJ1ZmZlciAqLworCQkJWVlfQlVGRkVSX1NUQVRFIGIgPSBZWV9DVVJSRU5UX0JV
RkZFUjsKKworCQkJaW50IHl5X2NfYnVmX3Bfb2Zmc2V0ID0KKwkJCQkoaW50KSAoeXlnLT55eV9j
X2J1Zl9wIC0gYi0+eXlfY2hfYnVmKTsKKworCQkJaWYgKCBiLT55eV9pc19vdXJfYnVmZmVyICkK
KwkJCQl7CisJCQkJaW50IG5ld19zaXplID0gYi0+eXlfYnVmX3NpemUgKiAyOworCisJCQkJaWYg
KCBuZXdfc2l6ZSA8PSAwICkKKwkJCQkJYi0+eXlfYnVmX3NpemUgKz0gYi0+eXlfYnVmX3NpemUg
LyA4OworCQkJCWVsc2UKKwkJCQkJYi0+eXlfYnVmX3NpemUgKj0gMjsKKworCQkJCWItPnl5X2No
X2J1ZiA9IChjaGFyICopCisJCQkJCS8qIEluY2x1ZGUgcm9vbSBpbiBmb3IgMiBFT0IgY2hhcnMu
ICovCisJCQkJCXBwcmVhbGxvYygodm9pZCAqKSBiLT55eV9jaF9idWYsYi0+eXlfYnVmX3NpemUg
KyAyICx5eXNjYW5uZXIgKTsKKwkJCQl9CisJCQllbHNlCisJCQkJLyogQ2FuJ3QgZ3JvdyBpdCwg
d2UgZG9uJ3Qgb3duIGl0LiAqLworCQkJCWItPnl5X2NoX2J1ZiA9IDA7CisKKwkJCWlmICggISBi
LT55eV9jaF9idWYgKQorCQkJCVlZX0ZBVEFMX0VSUk9SKAorCQkJCSJmYXRhbCBlcnJvciAtIHNj
YW5uZXIgaW5wdXQgYnVmZmVyIG92ZXJmbG93IiApOworCisJCQl5eWctPnl5X2NfYnVmX3AgPSAm
Yi0+eXlfY2hfYnVmW3l5X2NfYnVmX3Bfb2Zmc2V0XTsKKworCQkJbnVtX3RvX3JlYWQgPSBZWV9D
VVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X2J1Zl9zaXplIC0KKwkJCQkJCW51bWJlcl90b19tb3Zl
IC0gMTsKKworCQkJfQorCisJCWlmICggbnVtX3RvX3JlYWQgPiBZWV9SRUFEX0JVRl9TSVpFICkK
KwkJCW51bV90b19yZWFkID0gWVlfUkVBRF9CVUZfU0laRTsKKworCQkvKiBSZWFkIGluIG1vcmUg
ZGF0YS4gKi8KKwkJWVlfSU5QVVQoICgmWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVFLT55eV9jaF9i
dWZbbnVtYmVyX3RvX21vdmVdKSwKKwkJCXl5Zy0+eXlfbl9jaGFycywgKHNpemVfdCkgbnVtX3Rv
X3JlYWQgKTsKKworCQlZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X25fY2hhcnMgPSB5eWct
Pnl5X25fY2hhcnM7CisJCX0KKworCWlmICggeXlnLT55eV9uX2NoYXJzID09IDAgKQorCQl7CisJ
CWlmICggbnVtYmVyX3RvX21vdmUgPT0gWVlfTU9SRV9BREogKQorCQkJeworCQkJcmV0X3ZhbCA9
IEVPQl9BQ1RfRU5EX09GX0ZJTEU7CisJCQlwcHJlc3RhcnQoeXlpbiAgLHl5c2Nhbm5lcik7CisJ
CQl9CisKKwkJZWxzZQorCQkJeworCQkJcmV0X3ZhbCA9IEVPQl9BQ1RfTEFTVF9NQVRDSDsKKwkJ
CVlZX0NVUlJFTlRfQlVGRkVSX0xWQUxVRS0+eXlfYnVmZmVyX3N0YXR1cyA9CisJCQkJWVlfQlVG
RkVSX0VPRl9QRU5ESU5HOworCQkJfQorCQl9CisKKwllbHNlCisJCXJldF92YWwgPSBFT0JfQUNU
X0NPTlRJTlVFX1NDQU47CisKKwlpZiAoKHl5X3NpemVfdCkgKHl5Zy0+eXlfbl9jaGFycyArIG51
bWJlcl90b19tb3ZlKSA+IFlZX0NVUlJFTlRfQlVGRkVSX0xWQUxVRS0+eXlfYnVmX3NpemUpIHsK
KwkJLyogRXh0ZW5kIHRoZSBhcnJheSBieSA1MCUsIHBsdXMgdGhlIG51bWJlciB3ZSByZWFsbHkg
bmVlZC4gKi8KKwkJeXlfc2l6ZV90IG5ld19zaXplID0geXlnLT55eV9uX2NoYXJzICsgbnVtYmVy
X3RvX21vdmUgKyAoeXlnLT55eV9uX2NoYXJzID4+IDEpOworCQlZWV9DVVJSRU5UX0JVRkZFUl9M
VkFMVUUtPnl5X2NoX2J1ZiA9IChjaGFyICopIHBwcmVhbGxvYygodm9pZCAqKSBZWV9DVVJSRU5U
X0JVRkZFUl9MVkFMVUUtPnl5X2NoX2J1ZixuZXdfc2l6ZSAseXlzY2FubmVyICk7CisJCWlmICgg
ISBZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X2NoX2J1ZiApCisJCQlZWV9GQVRBTF9FUlJP
UiggIm91dCBvZiBkeW5hbWljIG1lbW9yeSBpbiB5eV9nZXRfbmV4dF9idWZmZXIoKSIgKTsKKwl9
CisKKwl5eWctPnl5X25fY2hhcnMgKz0gbnVtYmVyX3RvX21vdmU7CisJWVlfQ1VSUkVOVF9CVUZG
RVJfTFZBTFVFLT55eV9jaF9idWZbeXlnLT55eV9uX2NoYXJzXSA9IFlZX0VORF9PRl9CVUZGRVJf
Q0hBUjsKKwlZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X2NoX2J1Zlt5eWctPnl5X25fY2hh
cnMgKyAxXSA9IFlZX0VORF9PRl9CVUZGRVJfQ0hBUjsKKworCXl5Zy0+eXl0ZXh0X3B0ciA9ICZZ
WV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X2NoX2J1ZlswXTsKKworCXJldHVybiByZXRfdmFs
OworfQorCisvKiB5eV9nZXRfcHJldmlvdXNfc3RhdGUgLSBnZXQgdGhlIHN0YXRlIGp1c3QgYmVm
b3JlIHRoZSBFT0IgY2hhciB3YXMgcmVhY2hlZCAqLworCisgICAgc3RhdGljIHl5X3N0YXRlX3R5
cGUgeXlfZ2V0X3ByZXZpb3VzX3N0YXRlICh5eXNjYW5fdCB5eXNjYW5uZXIpCit7CisJcmVnaXN0
ZXIgeXlfc3RhdGVfdHlwZSB5eV9jdXJyZW50X3N0YXRlOworCXJlZ2lzdGVyIGNoYXIgKnl5X2Nw
OworICAgIHN0cnVjdCB5eWd1dHNfdCAqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKXl5c2Nhbm5l
cjsKKworCXl5X2N1cnJlbnRfc3RhdGUgPSB5eWctPnl5X3N0YXJ0OworCXl5X2N1cnJlbnRfc3Rh
dGUgKz0gWVlfQVRfQk9MKCk7CisKKwlmb3IgKCB5eV9jcCA9IHl5Zy0+eXl0ZXh0X3B0ciArIFlZ
X01PUkVfQURKOyB5eV9jcCA8IHl5Zy0+eXlfY19idWZfcDsgKyt5eV9jcCApCisJCXsKKwkJcmVn
aXN0ZXIgWVlfQ0hBUiB5eV9jID0gKCp5eV9jcCA/IHl5X2VjW1lZX1NDX1RPX1VJKCp5eV9jcCld
IDogMSk7CisJCWlmICggeXlfYWNjZXB0W3l5X2N1cnJlbnRfc3RhdGVdICkKKwkJCXsKKwkJCXl5
Zy0+eXlfbGFzdF9hY2NlcHRpbmdfc3RhdGUgPSB5eV9jdXJyZW50X3N0YXRlOworCQkJeXlnLT55
eV9sYXN0X2FjY2VwdGluZ19jcG9zID0geXlfY3A7CisJCQl9CisJCXdoaWxlICggeXlfY2hrW3l5
X2Jhc2VbeXlfY3VycmVudF9zdGF0ZV0gKyB5eV9jXSAhPSB5eV9jdXJyZW50X3N0YXRlICkKKwkJ
CXsKKwkJCXl5X2N1cnJlbnRfc3RhdGUgPSAoaW50KSB5eV9kZWZbeXlfY3VycmVudF9zdGF0ZV07
CisJCQlpZiAoIHl5X2N1cnJlbnRfc3RhdGUgPj0gMTA1ICkKKwkJCQl5eV9jID0geXlfbWV0YVso
dW5zaWduZWQgaW50KSB5eV9jXTsKKwkJCX0KKwkJeXlfY3VycmVudF9zdGF0ZSA9IHl5X254dFt5
eV9iYXNlW3l5X2N1cnJlbnRfc3RhdGVdICsgKHVuc2lnbmVkIGludCkgeXlfY107CisJCX0KKwor
CXJldHVybiB5eV9jdXJyZW50X3N0YXRlOworfQorCisvKiB5eV90cnlfTlVMX3RyYW5zIC0gdHJ5
IHRvIG1ha2UgYSB0cmFuc2l0aW9uIG9uIHRoZSBOVUwgY2hhcmFjdGVyCisgKgorICogc3lub3Bz
aXMKKyAqCW5leHRfc3RhdGUgPSB5eV90cnlfTlVMX3RyYW5zKCBjdXJyZW50X3N0YXRlICk7Cisg
Ki8KKyAgICBzdGF0aWMgeXlfc3RhdGVfdHlwZSB5eV90cnlfTlVMX3RyYW5zICAoeXlfc3RhdGVf
dHlwZSB5eV9jdXJyZW50X3N0YXRlICwgeXlzY2FuX3QgeXlzY2FubmVyKQoreworCXJlZ2lzdGVy
IGludCB5eV9pc19qYW07CisgICAgc3RydWN0IHl5Z3V0c190ICogeXlnID0gKHN0cnVjdCB5eWd1
dHNfdCopeXlzY2FubmVyOyAvKiBUaGlzIHZhciBtYXkgYmUgdW51c2VkIGRlcGVuZGluZyB1cG9u
IG9wdGlvbnMuICovCisJcmVnaXN0ZXIgY2hhciAqeXlfY3AgPSB5eWctPnl5X2NfYnVmX3A7CisK
KwlyZWdpc3RlciBZWV9DSEFSIHl5X2MgPSAxOworCWlmICggeXlfYWNjZXB0W3l5X2N1cnJlbnRf
c3RhdGVdICkKKwkJeworCQl5eWctPnl5X2xhc3RfYWNjZXB0aW5nX3N0YXRlID0geXlfY3VycmVu
dF9zdGF0ZTsKKwkJeXlnLT55eV9sYXN0X2FjY2VwdGluZ19jcG9zID0geXlfY3A7CisJCX0KKwl3
aGlsZSAoIHl5X2Noa1t5eV9iYXNlW3l5X2N1cnJlbnRfc3RhdGVdICsgeXlfY10gIT0geXlfY3Vy
cmVudF9zdGF0ZSApCisJCXsKKwkJeXlfY3VycmVudF9zdGF0ZSA9IChpbnQpIHl5X2RlZlt5eV9j
dXJyZW50X3N0YXRlXTsKKwkJaWYgKCB5eV9jdXJyZW50X3N0YXRlID49IDEwNSApCisJCQl5eV9j
ID0geXlfbWV0YVsodW5zaWduZWQgaW50KSB5eV9jXTsKKwkJfQorCXl5X2N1cnJlbnRfc3RhdGUg
PSB5eV9ueHRbeXlfYmFzZVt5eV9jdXJyZW50X3N0YXRlXSArICh1bnNpZ25lZCBpbnQpIHl5X2Nd
OworCXl5X2lzX2phbSA9ICh5eV9jdXJyZW50X3N0YXRlID09IDEwNCk7CisKKwlyZXR1cm4geXlf
aXNfamFtID8gMCA6IHl5X2N1cnJlbnRfc3RhdGU7Cit9CisKKyNpZm5kZWYgWVlfTk9fSU5QVVQK
KyNpZmRlZiBfX2NwbHVzcGx1cworICAgIHN0YXRpYyBpbnQgeXlpbnB1dCAoeXlzY2FuX3QgeXlz
Y2FubmVyKQorI2Vsc2UKKyAgICBzdGF0aWMgaW50IGlucHV0ICAoeXlzY2FuX3QgeXlzY2FubmVy
KQorI2VuZGlmCisKK3sKKwlpbnQgYzsKKyAgICBzdHJ1Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3Ry
dWN0IHl5Z3V0c190Kil5eXNjYW5uZXI7CisKKwkqeXlnLT55eV9jX2J1Zl9wID0geXlnLT55eV9o
b2xkX2NoYXI7CisKKwlpZiAoICp5eWctPnl5X2NfYnVmX3AgPT0gWVlfRU5EX09GX0JVRkZFUl9D
SEFSICkKKwkJeworCQkvKiB5eV9jX2J1Zl9wIG5vdyBwb2ludHMgdG8gdGhlIGNoYXJhY3RlciB3
ZSB3YW50IHRvIHJldHVybi4KKwkJICogSWYgdGhpcyBvY2N1cnMgKmJlZm9yZSogdGhlIEVPQiBj
aGFyYWN0ZXJzLCB0aGVuIGl0J3MgYQorCQkgKiB2YWxpZCBOVUw7IGlmIG5vdCwgdGhlbiB3ZSd2
ZSBoaXQgdGhlIGVuZCBvZiB0aGUgYnVmZmVyLgorCQkgKi8KKwkJaWYgKCB5eWctPnl5X2NfYnVm
X3AgPCAmWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVFLT55eV9jaF9idWZbeXlnLT55eV9uX2NoYXJz
XSApCisJCQkvKiBUaGlzIHdhcyByZWFsbHkgYSBOVUwuICovCisJCQkqeXlnLT55eV9jX2J1Zl9w
ID0gJ1wwJzsKKworCQllbHNlCisJCQl7IC8qIG5lZWQgbW9yZSBpbnB1dCAqLworCQkJaW50IG9m
ZnNldCA9IHl5Zy0+eXlfY19idWZfcCAtIHl5Zy0+eXl0ZXh0X3B0cjsKKwkJCSsreXlnLT55eV9j
X2J1Zl9wOworCisJCQlzd2l0Y2ggKCB5eV9nZXRfbmV4dF9idWZmZXIoIHl5c2Nhbm5lciApICkK
KwkJCQl7CisJCQkJY2FzZSBFT0JfQUNUX0xBU1RfTUFUQ0g6CisJCQkJCS8qIFRoaXMgaGFwcGVu
cyBiZWNhdXNlIHl5X2dfbl9iKCkKKwkJCQkJICogc2VlcyB0aGF0IHdlJ3ZlIGFjY3VtdWxhdGVk
IGEKKwkJCQkJICogdG9rZW4gYW5kIGZsYWdzIHRoYXQgd2UgbmVlZCB0bworCQkJCQkgKiB0cnkg
bWF0Y2hpbmcgdGhlIHRva2VuIGJlZm9yZQorCQkJCQkgKiBwcm9jZWVkaW5nLiAgQnV0IGZvciBp
bnB1dCgpLAorCQkJCQkgKiB0aGVyZSdzIG5vIG1hdGNoaW5nIHRvIGNvbnNpZGVyLgorCQkJCQkg
KiBTbyBjb252ZXJ0IHRoZSBFT0JfQUNUX0xBU1RfTUFUQ0gKKwkJCQkJICogdG8gRU9CX0FDVF9F
TkRfT0ZfRklMRS4KKwkJCQkJICovCisKKwkJCQkJLyogUmVzZXQgYnVmZmVyIHN0YXR1cy4gKi8K
KwkJCQkJcHByZXN0YXJ0KHl5aW4gLHl5c2Nhbm5lcik7CisKKwkJCQkJLypGQUxMVEhST1VHSCov
CisKKwkJCQljYXNlIEVPQl9BQ1RfRU5EX09GX0ZJTEU6CisJCQkJCXsKKwkJCQkJaWYgKCBwcHdy
YXAoeXlzY2FubmVyICkgKQorCQkJCQkJcmV0dXJuIEVPRjsKKworCQkJCQlpZiAoICEgeXlnLT55
eV9kaWRfYnVmZmVyX3N3aXRjaF9vbl9lb2YgKQorCQkJCQkJWVlfTkVXX0ZJTEU7CisjaWZkZWYg
X19jcGx1c3BsdXMKKwkJCQkJcmV0dXJuIHl5aW5wdXQoeXlzY2FubmVyKTsKKyNlbHNlCisJCQkJ
CXJldHVybiBpbnB1dCh5eXNjYW5uZXIpOworI2VuZGlmCisJCQkJCX0KKworCQkJCWNhc2UgRU9C
X0FDVF9DT05USU5VRV9TQ0FOOgorCQkJCQl5eWctPnl5X2NfYnVmX3AgPSB5eWctPnl5dGV4dF9w
dHIgKyBvZmZzZXQ7CisJCQkJCWJyZWFrOworCQkJCX0KKwkJCX0KKwkJfQorCisJYyA9ICoodW5z
aWduZWQgY2hhciAqKSB5eWctPnl5X2NfYnVmX3A7CS8qIGNhc3QgZm9yIDgtYml0IGNoYXIncyAq
LworCSp5eWctPnl5X2NfYnVmX3AgPSAnXDAnOwkvKiBwcmVzZXJ2ZSB5eXRleHQgKi8KKwl5eWct
Pnl5X2hvbGRfY2hhciA9ICorK3l5Zy0+eXlfY19idWZfcDsKKworCVlZX0NVUlJFTlRfQlVGRkVS
X0xWQUxVRS0+eXlfYXRfYm9sID0gKGMgPT0gJ1xuJyk7CisJaWYgKCBZWV9DVVJSRU5UX0JVRkZF
Ul9MVkFMVUUtPnl5X2F0X2JvbCApCisJCSAgIAorICAgIGRveyB5eWxpbmVubysrOworICAgICAg
ICB5eWNvbHVtbj0wOworICAgIH13aGlsZSgwKQorOworCisJcmV0dXJuIGM7Cit9CisjZW5kaWYJ
LyogaWZuZGVmIFlZX05PX0lOUFVUICovCisKKy8qKiBJbW1lZGlhdGVseSBzd2l0Y2ggdG8gYSBk
aWZmZXJlbnQgaW5wdXQgc3RyZWFtLgorICogQHBhcmFtIGlucHV0X2ZpbGUgQSByZWFkYWJsZSBz
dHJlYW0uCisgKiBAcGFyYW0geXlzY2FubmVyIFRoZSBzY2FubmVyIG9iamVjdC4KKyAqIEBub3Rl
IFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmVzZXQgdGhlIHN0YXJ0IGNvbmRpdGlvbiB0byBAYyBJ
TklUSUFMIC4KKyAqLworICAgIHZvaWQgcHByZXN0YXJ0ICAoRklMRSAqIGlucHV0X2ZpbGUgLCB5
eXNjYW5fdCB5eXNjYW5uZXIpCit7CisgICAgc3RydWN0IHl5Z3V0c190ICogeXlnID0gKHN0cnVj
dCB5eWd1dHNfdCopeXlzY2FubmVyOworCisJaWYgKCAhIFlZX0NVUlJFTlRfQlVGRkVSICl7Cisg
ICAgICAgIHBwZW5zdXJlX2J1ZmZlcl9zdGFjayAoeXlzY2FubmVyKTsKKwkJWVlfQ1VSUkVOVF9C
VUZGRVJfTFZBTFVFID0KKyAgICAgICAgICAgIHBwX2NyZWF0ZV9idWZmZXIoeXlpbixZWV9CVUZf
U0laRSAseXlzY2FubmVyKTsKKwl9CisKKwlwcF9pbml0X2J1ZmZlcihZWV9DVVJSRU5UX0JVRkZF
UixpbnB1dF9maWxlICx5eXNjYW5uZXIpOworCXBwX2xvYWRfYnVmZmVyX3N0YXRlKHl5c2Nhbm5l
ciApOworfQorCisvKiogU3dpdGNoIHRvIGEgZGlmZmVyZW50IGlucHV0IGJ1ZmZlci4KKyAqIEBw
YXJhbSBuZXdfYnVmZmVyIFRoZSBuZXcgaW5wdXQgYnVmZmVyLgorICogQHBhcmFtIHl5c2Nhbm5l
ciBUaGUgc2Nhbm5lciBvYmplY3QuCisgKi8KKyAgICB2b2lkIHBwX3N3aXRjaF90b19idWZmZXIg
IChZWV9CVUZGRVJfU1RBVEUgIG5ld19idWZmZXIgLCB5eXNjYW5fdCB5eXNjYW5uZXIpCit7Cisg
ICAgc3RydWN0IHl5Z3V0c190ICogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopeXlzY2FubmVyOwor
CisJLyogVE9ETy4gV2Ugc2hvdWxkIGJlIGFibGUgdG8gcmVwbGFjZSB0aGlzIGVudGlyZSBmdW5j
dGlvbiBib2R5CisJICogd2l0aAorCSAqCQlwcHBvcF9idWZmZXJfc3RhdGUoKTsKKwkgKgkJcHBw
dXNoX2J1ZmZlcl9zdGF0ZShuZXdfYnVmZmVyKTsKKyAgICAgKi8KKwlwcGVuc3VyZV9idWZmZXJf
c3RhY2sgKHl5c2Nhbm5lcik7CisJaWYgKCBZWV9DVVJSRU5UX0JVRkZFUiA9PSBuZXdfYnVmZmVy
ICkKKwkJcmV0dXJuOworCisJaWYgKCBZWV9DVVJSRU5UX0JVRkZFUiApCisJCXsKKwkJLyogRmx1
c2ggb3V0IGluZm9ybWF0aW9uIGZvciBvbGQgYnVmZmVyLiAqLworCQkqeXlnLT55eV9jX2J1Zl9w
ID0geXlnLT55eV9ob2xkX2NoYXI7CisJCVlZX0NVUlJFTlRfQlVGRkVSX0xWQUxVRS0+eXlfYnVm
X3BvcyA9IHl5Zy0+eXlfY19idWZfcDsKKwkJWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVFLT55eV9u
X2NoYXJzID0geXlnLT55eV9uX2NoYXJzOworCQl9CisKKwlZWV9DVVJSRU5UX0JVRkZFUl9MVkFM
VUUgPSBuZXdfYnVmZmVyOworCXBwX2xvYWRfYnVmZmVyX3N0YXRlKHl5c2Nhbm5lciApOworCisJ
LyogV2UgZG9uJ3QgYWN0dWFsbHkga25vdyB3aGV0aGVyIHdlIGRpZCB0aGlzIHN3aXRjaCBkdXJp
bmcKKwkgKiBFT0YgKHBwd3JhcCgpKSBwcm9jZXNzaW5nLCBidXQgdGhlIG9ubHkgdGltZSB0aGlz
IGZsYWcKKwkgKiBpcyBsb29rZWQgYXQgaXMgYWZ0ZXIgcHB3cmFwKCkgaXMgY2FsbGVkLCBzbyBp
dCdzIHNhZmUKKwkgKiB0byBnbyBhaGVhZCBhbmQgYWx3YXlzIHNldCBpdC4KKwkgKi8KKwl5eWct
Pnl5X2RpZF9idWZmZXJfc3dpdGNoX29uX2VvZiA9IDE7Cit9CisKK3N0YXRpYyB2b2lkIHBwX2xv
YWRfYnVmZmVyX3N0YXRlICAoeXlzY2FuX3QgeXlzY2FubmVyKQoreworICAgIHN0cnVjdCB5eWd1
dHNfdCAqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKXl5c2Nhbm5lcjsKKwl5eWctPnl5X25fY2hh
cnMgPSBZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X25fY2hhcnM7CisJeXlnLT55eXRleHRf
cHRyID0geXlnLT55eV9jX2J1Zl9wID0gWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVFLT55eV9idWZf
cG9zOworCXl5aW4gPSBZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X2lucHV0X2ZpbGU7CisJ
eXlnLT55eV9ob2xkX2NoYXIgPSAqeXlnLT55eV9jX2J1Zl9wOworfQorCisvKiogQWxsb2NhdGUg
YW5kIGluaXRpYWxpemUgYW4gaW5wdXQgYnVmZmVyIHN0YXRlLgorICogQHBhcmFtIGZpbGUgQSBy
ZWFkYWJsZSBzdHJlYW0uCisgKiBAcGFyYW0gc2l6ZSBUaGUgY2hhcmFjdGVyIGJ1ZmZlciBzaXpl
IGluIGJ5dGVzLiBXaGVuIGluIGRvdWJ0LCB1c2UgQGMgWVlfQlVGX1NJWkUuCisgKiBAcGFyYW0g
eXlzY2FubmVyIFRoZSBzY2FubmVyIG9iamVjdC4KKyAqIEByZXR1cm4gdGhlIGFsbG9jYXRlZCBi
dWZmZXIgc3RhdGUuCisgKi8KKyAgICBZWV9CVUZGRVJfU1RBVEUgcHBfY3JlYXRlX2J1ZmZlciAg
KEZJTEUgKiBmaWxlLCBpbnQgIHNpemUgLCB5eXNjYW5fdCB5eXNjYW5uZXIpCit7CisJWVlfQlVG
RkVSX1NUQVRFIGI7CisgICAgCisJYiA9IChZWV9CVUZGRVJfU1RBVEUpIHBwYWxsb2Moc2l6ZW9m
KCBzdHJ1Y3QgeXlfYnVmZmVyX3N0YXRlICkgLHl5c2Nhbm5lciApOworCWlmICggISBiICkKKwkJ
WVlfRkFUQUxfRVJST1IoICJvdXQgb2YgZHluYW1pYyBtZW1vcnkgaW4gcHBfY3JlYXRlX2J1ZmZl
cigpIiApOworCisJYi0+eXlfYnVmX3NpemUgPSBzaXplOworCisJLyogeXlfY2hfYnVmIGhhcyB0
byBiZSAyIGNoYXJhY3RlcnMgbG9uZ2VyIHRoYW4gdGhlIHNpemUgZ2l2ZW4gYmVjYXVzZQorCSAq
IHdlIG5lZWQgdG8gcHV0IGluIDIgZW5kLW9mLWJ1ZmZlciBjaGFyYWN0ZXJzLgorCSAqLworCWIt
Pnl5X2NoX2J1ZiA9IChjaGFyICopIHBwYWxsb2MoYi0+eXlfYnVmX3NpemUgKyAyICx5eXNjYW5u
ZXIgKTsKKwlpZiAoICEgYi0+eXlfY2hfYnVmICkKKwkJWVlfRkFUQUxfRVJST1IoICJvdXQgb2Yg
ZHluYW1pYyBtZW1vcnkgaW4gcHBfY3JlYXRlX2J1ZmZlcigpIiApOworCisJYi0+eXlfaXNfb3Vy
X2J1ZmZlciA9IDE7CisKKwlwcF9pbml0X2J1ZmZlcihiLGZpbGUgLHl5c2Nhbm5lcik7CisKKwly
ZXR1cm4gYjsKK30KKworLyoqIERlc3Ryb3kgdGhlIGJ1ZmZlci4KKyAqIEBwYXJhbSBiIGEgYnVm
ZmVyIGNyZWF0ZWQgd2l0aCBwcF9jcmVhdGVfYnVmZmVyKCkKKyAqIEBwYXJhbSB5eXNjYW5uZXIg
VGhlIHNjYW5uZXIgb2JqZWN0LgorICovCisgICAgdm9pZCBwcF9kZWxldGVfYnVmZmVyIChZWV9C
VUZGRVJfU1RBVEUgIGIgLCB5eXNjYW5fdCB5eXNjYW5uZXIpCit7CisgICAgc3RydWN0IHl5Z3V0
c190ICogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopeXlzY2FubmVyOworCisJaWYgKCAhIGIgKQor
CQlyZXR1cm47CisKKwlpZiAoIGIgPT0gWVlfQ1VSUkVOVF9CVUZGRVIgKSAvKiBOb3Qgc3VyZSBp
ZiB3ZSBzaG91bGQgcG9wIGhlcmUuICovCisJCVlZX0NVUlJFTlRfQlVGRkVSX0xWQUxVRSA9IChZ
WV9CVUZGRVJfU1RBVEUpIDA7CisKKwlpZiAoIGItPnl5X2lzX291cl9idWZmZXIgKQorCQlwcGZy
ZWUoKHZvaWQgKikgYi0+eXlfY2hfYnVmICx5eXNjYW5uZXIgKTsKKworCXBwZnJlZSgodm9pZCAq
KSBiICx5eXNjYW5uZXIgKTsKK30KKworLyogSW5pdGlhbGl6ZXMgb3IgcmVpbml0aWFsaXplcyBh
IGJ1ZmZlci4KKyAqIFRoaXMgZnVuY3Rpb24gaXMgc29tZXRpbWVzIGNhbGxlZCBtb3JlIHRoYW4g
b25jZSBvbiB0aGUgc2FtZSBidWZmZXIsCisgKiBzdWNoIGFzIGR1cmluZyBhIHBwcmVzdGFydCgp
IG9yIGF0IEVPRi4KKyAqLworICAgIHN0YXRpYyB2b2lkIHBwX2luaXRfYnVmZmVyICAoWVlfQlVG
RkVSX1NUQVRFICBiLCBGSUxFICogZmlsZSAsIHl5c2Nhbl90IHl5c2Nhbm5lcikKKworeworCWlu
dCBvZXJybm8gPSBlcnJubzsKKyAgICBzdHJ1Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5
Z3V0c190Kil5eXNjYW5uZXI7CisKKwlwcF9mbHVzaF9idWZmZXIoYiAseXlzY2FubmVyKTsKKwor
CWItPnl5X2lucHV0X2ZpbGUgPSBmaWxlOworCWItPnl5X2ZpbGxfYnVmZmVyID0gMTsKKworICAg
IC8qIElmIGIgaXMgdGhlIGN1cnJlbnQgYnVmZmVyLCB0aGVuIHBwX2luaXRfYnVmZmVyIHdhcyBf
cHJvYmFibHlfCisgICAgICogY2FsbGVkIGZyb20gcHByZXN0YXJ0KCkgb3IgdGhyb3VnaCB5eV9n
ZXRfbmV4dF9idWZmZXIuCisgICAgICogSW4gdGhhdCBjYXNlLCB3ZSBkb24ndCB3YW50IHRvIHJl
c2V0IHRoZSBsaW5lbm8gb3IgY29sdW1uLgorICAgICAqLworICAgIGlmIChiICE9IFlZX0NVUlJF
TlRfQlVGRkVSKXsKKyAgICAgICAgYi0+eXlfYnNfbGluZW5vID0gMTsKKyAgICAgICAgYi0+eXlf
YnNfY29sdW1uID0gMDsKKyAgICB9CisKKyAgICAgICAgYi0+eXlfaXNfaW50ZXJhY3RpdmUgPSAw
OworICAgIAorCWVycm5vID0gb2Vycm5vOworfQorCisvKiogRGlzY2FyZCBhbGwgYnVmZmVyZWQg
Y2hhcmFjdGVycy4gT24gdGhlIG5leHQgc2NhbiwgWVlfSU5QVVQgd2lsbCBiZSBjYWxsZWQuCisg
KiBAcGFyYW0gYiB0aGUgYnVmZmVyIHN0YXRlIHRvIGJlIGZsdXNoZWQsIHVzdWFsbHkgQGMgWVlf
Q1VSUkVOVF9CVUZGRVIuCisgKiBAcGFyYW0geXlzY2FubmVyIFRoZSBzY2FubmVyIG9iamVjdC4K
KyAqLworICAgIHZvaWQgcHBfZmx1c2hfYnVmZmVyIChZWV9CVUZGRVJfU1RBVEUgIGIgLCB5eXNj
YW5fdCB5eXNjYW5uZXIpCit7CisgICAgc3RydWN0IHl5Z3V0c190ICogeXlnID0gKHN0cnVjdCB5
eWd1dHNfdCopeXlzY2FubmVyOworCWlmICggISBiICkKKwkJcmV0dXJuOworCisJYi0+eXlfbl9j
aGFycyA9IDA7CisKKwkvKiBXZSBhbHdheXMgbmVlZCB0d28gZW5kLW9mLWJ1ZmZlciBjaGFyYWN0
ZXJzLiAgVGhlIGZpcnN0IGNhdXNlcworCSAqIGEgdHJhbnNpdGlvbiB0byB0aGUgZW5kLW9mLWJ1
ZmZlciBzdGF0ZS4gIFRoZSBzZWNvbmQgY2F1c2VzCisJICogYSBqYW0gaW4gdGhhdCBzdGF0ZS4K
KwkgKi8KKwliLT55eV9jaF9idWZbMF0gPSBZWV9FTkRfT0ZfQlVGRkVSX0NIQVI7CisJYi0+eXlf
Y2hfYnVmWzFdID0gWVlfRU5EX09GX0JVRkZFUl9DSEFSOworCisJYi0+eXlfYnVmX3BvcyA9ICZi
LT55eV9jaF9idWZbMF07CisKKwliLT55eV9hdF9ib2wgPSAxOworCWItPnl5X2J1ZmZlcl9zdGF0
dXMgPSBZWV9CVUZGRVJfTkVXOworCisJaWYgKCBiID09IFlZX0NVUlJFTlRfQlVGRkVSICkKKwkJ
cHBfbG9hZF9idWZmZXJfc3RhdGUoeXlzY2FubmVyICk7Cit9CisKKy8qKiBQdXNoZXMgdGhlIG5l
dyBzdGF0ZSBvbnRvIHRoZSBzdGFjay4gVGhlIG5ldyBzdGF0ZSBiZWNvbWVzCisgKiAgdGhlIGN1
cnJlbnQgc3RhdGUuIFRoaXMgZnVuY3Rpb24gd2lsbCBhbGxvY2F0ZSB0aGUgc3RhY2sKKyAqICBp
ZiBuZWNlc3NhcnkuCisgKiAgQHBhcmFtIG5ld19idWZmZXIgVGhlIG5ldyBzdGF0ZS4KKyAqICBA
cGFyYW0geXlzY2FubmVyIFRoZSBzY2FubmVyIG9iamVjdC4KKyAqLwordm9pZCBwcHB1c2hfYnVm
ZmVyX3N0YXRlIChZWV9CVUZGRVJfU1RBVEUgbmV3X2J1ZmZlciAsIHl5c2Nhbl90IHl5c2Nhbm5l
cikKK3sKKyAgICBzdHJ1Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5eXNj
YW5uZXI7CisJaWYgKG5ld19idWZmZXIgPT0gTlVMTCkKKwkJcmV0dXJuOworCisJcHBlbnN1cmVf
YnVmZmVyX3N0YWNrKHl5c2Nhbm5lcik7CisKKwkvKiBUaGlzIGJsb2NrIGlzIGNvcGllZCBmcm9t
IHBwX3N3aXRjaF90b19idWZmZXIuICovCisJaWYgKCBZWV9DVVJSRU5UX0JVRkZFUiApCisJCXsK
KwkJLyogRmx1c2ggb3V0IGluZm9ybWF0aW9uIGZvciBvbGQgYnVmZmVyLiAqLworCQkqeXlnLT55
eV9jX2J1Zl9wID0geXlnLT55eV9ob2xkX2NoYXI7CisJCVlZX0NVUlJFTlRfQlVGRkVSX0xWQUxV
RS0+eXlfYnVmX3BvcyA9IHl5Zy0+eXlfY19idWZfcDsKKwkJWVlfQ1VSUkVOVF9CVUZGRVJfTFZB
TFVFLT55eV9uX2NoYXJzID0geXlnLT55eV9uX2NoYXJzOworCQl9CisKKwkvKiBPbmx5IHB1c2gg
aWYgdG9wIGV4aXN0cy4gT3RoZXJ3aXNlLCByZXBsYWNlIHRvcC4gKi8KKwlpZiAoWVlfQ1VSUkVO
VF9CVUZGRVIpCisJCXl5Zy0+eXlfYnVmZmVyX3N0YWNrX3RvcCsrOworCVlZX0NVUlJFTlRfQlVG
RkVSX0xWQUxVRSA9IG5ld19idWZmZXI7CisKKwkvKiBjb3BpZWQgZnJvbSBwcF9zd2l0Y2hfdG9f
YnVmZmVyLiAqLworCXBwX2xvYWRfYnVmZmVyX3N0YXRlKHl5c2Nhbm5lciApOworCXl5Zy0+eXlf
ZGlkX2J1ZmZlcl9zd2l0Y2hfb25fZW9mID0gMTsKK30KKworLyoqIFJlbW92ZXMgYW5kIGRlbGV0
ZXMgdGhlIHRvcCBvZiB0aGUgc3RhY2ssIGlmIHByZXNlbnQuCisgKiAgVGhlIG5leHQgZWxlbWVu
dCBiZWNvbWVzIHRoZSBuZXcgdG9wLgorICogIEBwYXJhbSB5eXNjYW5uZXIgVGhlIHNjYW5uZXIg
b2JqZWN0LgorICovCit2b2lkIHBwcG9wX2J1ZmZlcl9zdGF0ZSAoeXlzY2FuX3QgeXlzY2FubmVy
KQoreworICAgIHN0cnVjdCB5eWd1dHNfdCAqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKXl5c2Nh
bm5lcjsKKwlpZiAoIVlZX0NVUlJFTlRfQlVGRkVSKQorCQlyZXR1cm47CisKKwlwcF9kZWxldGVf
YnVmZmVyKFlZX0NVUlJFTlRfQlVGRkVSICx5eXNjYW5uZXIpOworCVlZX0NVUlJFTlRfQlVGRkVS
X0xWQUxVRSA9IE5VTEw7CisJaWYgKHl5Zy0+eXlfYnVmZmVyX3N0YWNrX3RvcCA+IDApCisJCS0t
eXlnLT55eV9idWZmZXJfc3RhY2tfdG9wOworCisJaWYgKFlZX0NVUlJFTlRfQlVGRkVSKSB7CisJ
CXBwX2xvYWRfYnVmZmVyX3N0YXRlKHl5c2Nhbm5lciApOworCQl5eWctPnl5X2RpZF9idWZmZXJf
c3dpdGNoX29uX2VvZiA9IDE7CisJfQorfQorCisvKiBBbGxvY2F0ZXMgdGhlIHN0YWNrIGlmIGl0
IGRvZXMgbm90IGV4aXN0LgorICogIEd1YXJhbnRlZXMgc3BhY2UgZm9yIGF0IGxlYXN0IG9uZSBw
dXNoLgorICovCitzdGF0aWMgdm9pZCBwcGVuc3VyZV9idWZmZXJfc3RhY2sgKHl5c2Nhbl90IHl5
c2Nhbm5lcikKK3sKKwlpbnQgbnVtX3RvX2FsbG9jOworICAgIHN0cnVjdCB5eWd1dHNfdCAqIHl5
ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKXl5c2Nhbm5lcjsKKworCWlmICgheXlnLT55eV9idWZmZXJf
c3RhY2spIHsKKworCQkvKiBGaXJzdCBhbGxvY2F0aW9uIGlzIGp1c3QgZm9yIDIgZWxlbWVudHMs
IHNpbmNlIHdlIGRvbid0IGtub3cgaWYgdGhpcworCQkgKiBzY2FubmVyIHdpbGwgZXZlbiBuZWVk
IGEgc3RhY2suIFdlIHVzZSAyIGluc3RlYWQgb2YgMSB0byBhdm9pZCBhbgorCQkgKiBpbW1lZGlh
dGUgcmVhbGxvYyBvbiB0aGUgbmV4dCBjYWxsLgorICAgICAgICAgKi8KKwkJbnVtX3RvX2FsbG9j
ID0gMTsKKwkJeXlnLT55eV9idWZmZXJfc3RhY2sgPSAoc3RydWN0IHl5X2J1ZmZlcl9zdGF0ZSoq
KXBwYWxsb2MKKwkJCQkJCQkJKG51bV90b19hbGxvYyAqIHNpemVvZihzdHJ1Y3QgeXlfYnVmZmVy
X3N0YXRlKikKKwkJCQkJCQkJLCB5eXNjYW5uZXIpOworCQlpZiAoICEgeXlnLT55eV9idWZmZXJf
c3RhY2sgKQorCQkJWVlfRkFUQUxfRVJST1IoICJvdXQgb2YgZHluYW1pYyBtZW1vcnkgaW4gcHBl
bnN1cmVfYnVmZmVyX3N0YWNrKCkiICk7CisJCQkJCQkJCSAgCisJCW1lbXNldCh5eWctPnl5X2J1
ZmZlcl9zdGFjaywgMCwgbnVtX3RvX2FsbG9jICogc2l6ZW9mKHN0cnVjdCB5eV9idWZmZXJfc3Rh
dGUqKSk7CisJCQkJCisJCXl5Zy0+eXlfYnVmZmVyX3N0YWNrX21heCA9IG51bV90b19hbGxvYzsK
KwkJeXlnLT55eV9idWZmZXJfc3RhY2tfdG9wID0gMDsKKwkJcmV0dXJuOworCX0KKworCWlmICh5
eWctPnl5X2J1ZmZlcl9zdGFja190b3AgPj0gKHl5Zy0+eXlfYnVmZmVyX3N0YWNrX21heCkgLSAx
KXsKKworCQkvKiBJbmNyZWFzZSB0aGUgYnVmZmVyIHRvIHByZXBhcmUgZm9yIGEgcG9zc2libGUg
cHVzaC4gKi8KKwkJaW50IGdyb3dfc2l6ZSA9IDggLyogYXJiaXRyYXJ5IGdyb3cgc2l6ZSAqLzsK
KworCQludW1fdG9fYWxsb2MgPSB5eWctPnl5X2J1ZmZlcl9zdGFja19tYXggKyBncm93X3NpemU7
CisJCXl5Zy0+eXlfYnVmZmVyX3N0YWNrID0gKHN0cnVjdCB5eV9idWZmZXJfc3RhdGUqKilwcHJl
YWxsb2MKKwkJCQkJCQkJKHl5Zy0+eXlfYnVmZmVyX3N0YWNrLAorCQkJCQkJCQludW1fdG9fYWxs
b2MgKiBzaXplb2Yoc3RydWN0IHl5X2J1ZmZlcl9zdGF0ZSopCisJCQkJCQkJCSwgeXlzY2FubmVy
KTsKKwkJaWYgKCAhIHl5Zy0+eXlfYnVmZmVyX3N0YWNrICkKKwkJCVlZX0ZBVEFMX0VSUk9SKCAi
b3V0IG9mIGR5bmFtaWMgbWVtb3J5IGluIHBwZW5zdXJlX2J1ZmZlcl9zdGFjaygpIiApOworCisJ
CS8qIHplcm8gb25seSB0aGUgbmV3IHNsb3RzLiovCisJCW1lbXNldCh5eWctPnl5X2J1ZmZlcl9z
dGFjayArIHl5Zy0+eXlfYnVmZmVyX3N0YWNrX21heCwgMCwgZ3Jvd19zaXplICogc2l6ZW9mKHN0
cnVjdCB5eV9idWZmZXJfc3RhdGUqKSk7CisJCXl5Zy0+eXlfYnVmZmVyX3N0YWNrX21heCA9IG51
bV90b19hbGxvYzsKKwl9Cit9CisKKy8qKiBTZXR1cCB0aGUgaW5wdXQgYnVmZmVyIHN0YXRlIHRv
IHNjYW4gZGlyZWN0bHkgZnJvbSBhIHVzZXItc3BlY2lmaWVkIGNoYXJhY3RlciBidWZmZXIuCisg
KiBAcGFyYW0gYmFzZSB0aGUgY2hhcmFjdGVyIGJ1ZmZlcgorICogQHBhcmFtIHNpemUgdGhlIHNp
emUgaW4gYnl0ZXMgb2YgdGhlIGNoYXJhY3RlciBidWZmZXIKKyAqIEBwYXJhbSB5eXNjYW5uZXIg
VGhlIHNjYW5uZXIgb2JqZWN0LgorICogQHJldHVybiB0aGUgbmV3bHkgYWxsb2NhdGVkIGJ1ZmZl
ciBzdGF0ZSBvYmplY3QuIAorICovCitZWV9CVUZGRVJfU1RBVEUgcHBfc2Nhbl9idWZmZXIgIChj
aGFyICogYmFzZSwgeXlfc2l6ZV90ICBzaXplICwgeXlzY2FuX3QgeXlzY2FubmVyKQoreworCVlZ
X0JVRkZFUl9TVEFURSBiOworICAgIAorCWlmICggc2l6ZSA8IDIgfHwKKwkgICAgIGJhc2Vbc2l6
ZS0yXSAhPSBZWV9FTkRfT0ZfQlVGRkVSX0NIQVIgfHwKKwkgICAgIGJhc2Vbc2l6ZS0xXSAhPSBZ
WV9FTkRfT0ZfQlVGRkVSX0NIQVIgKQorCQkvKiBUaGV5IGZvcmdvdCB0byBsZWF2ZSByb29tIGZv
ciB0aGUgRU9CJ3MuICovCisJCXJldHVybiAwOworCisJYiA9IChZWV9CVUZGRVJfU1RBVEUpIHBw
YWxsb2Moc2l6ZW9mKCBzdHJ1Y3QgeXlfYnVmZmVyX3N0YXRlICkgLHl5c2Nhbm5lciApOworCWlm
ICggISBiICkKKwkJWVlfRkFUQUxfRVJST1IoICJvdXQgb2YgZHluYW1pYyBtZW1vcnkgaW4gcHBf
c2Nhbl9idWZmZXIoKSIgKTsKKworCWItPnl5X2J1Zl9zaXplID0gc2l6ZSAtIDI7CS8qICItIDIi
IHRvIHRha2UgY2FyZSBvZiBFT0IncyAqLworCWItPnl5X2J1Zl9wb3MgPSBiLT55eV9jaF9idWYg
PSBiYXNlOworCWItPnl5X2lzX291cl9idWZmZXIgPSAwOworCWItPnl5X2lucHV0X2ZpbGUgPSAw
OworCWItPnl5X25fY2hhcnMgPSBiLT55eV9idWZfc2l6ZTsKKwliLT55eV9pc19pbnRlcmFjdGl2
ZSA9IDA7CisJYi0+eXlfYXRfYm9sID0gMTsKKwliLT55eV9maWxsX2J1ZmZlciA9IDA7CisJYi0+
eXlfYnVmZmVyX3N0YXR1cyA9IFlZX0JVRkZFUl9ORVc7CisKKwlwcF9zd2l0Y2hfdG9fYnVmZmVy
KGIgLHl5c2Nhbm5lciApOworCisJcmV0dXJuIGI7Cit9CisKKy8qKiBTZXR1cCB0aGUgaW5wdXQg
YnVmZmVyIHN0YXRlIHRvIHNjYW4gYSBzdHJpbmcuIFRoZSBuZXh0IGNhbGwgdG8gcHBsZXgoKSB3
aWxsCisgKiBzY2FuIGZyb20gYSBAZSBjb3B5IG9mIEBhIHN0ci4KKyAqIEBwYXJhbSB5eXN0ciBh
IE5VTC10ZXJtaW5hdGVkIHN0cmluZyB0byBzY2FuCisgKiBAcGFyYW0geXlzY2FubmVyIFRoZSBz
Y2FubmVyIG9iamVjdC4KKyAqIEByZXR1cm4gdGhlIG5ld2x5IGFsbG9jYXRlZCBidWZmZXIgc3Rh
dGUgb2JqZWN0LgorICogQG5vdGUgSWYgeW91IHdhbnQgdG8gc2NhbiBieXRlcyB0aGF0IG1heSBj
b250YWluIE5VTCB2YWx1ZXMsIHRoZW4gdXNlCisgKiAgICAgICBwcF9zY2FuX2J5dGVzKCkgaW5z
dGVhZC4KKyAqLworWVlfQlVGRkVSX1NUQVRFIHBwX3NjYW5fc3RyaW5nICh5eWNvbnN0IGNoYXIg
KiB5eXN0ciAsIHl5c2Nhbl90IHl5c2Nhbm5lcikKK3sKKyAgICAKKwlyZXR1cm4gcHBfc2Nhbl9i
eXRlcyh5eXN0cixzdHJsZW4oeXlzdHIpICx5eXNjYW5uZXIpOworfQorCisvKiogU2V0dXAgdGhl
IGlucHV0IGJ1ZmZlciBzdGF0ZSB0byBzY2FuIHRoZSBnaXZlbiBieXRlcy4gVGhlIG5leHQgY2Fs
bCB0byBwcGxleCgpIHdpbGwKKyAqIHNjYW4gZnJvbSBhIEBlIGNvcHkgb2YgQGEgYnl0ZXMuCisg
KiBAcGFyYW0gYnl0ZXMgdGhlIGJ5dGUgYnVmZmVyIHRvIHNjYW4KKyAqIEBwYXJhbSBsZW4gdGhl
IG51bWJlciBvZiBieXRlcyBpbiB0aGUgYnVmZmVyIHBvaW50ZWQgdG8gYnkgQGEgYnl0ZXMuCisg
KiBAcGFyYW0geXlzY2FubmVyIFRoZSBzY2FubmVyIG9iamVjdC4KKyAqIEByZXR1cm4gdGhlIG5l
d2x5IGFsbG9jYXRlZCBidWZmZXIgc3RhdGUgb2JqZWN0LgorICovCitZWV9CVUZGRVJfU1RBVEUg
cHBfc2Nhbl9ieXRlcyAgKHl5Y29uc3QgY2hhciAqIHl5Ynl0ZXMsIGludCAgX3l5Ynl0ZXNfbGVu
ICwgeXlzY2FuX3QgeXlzY2FubmVyKQoreworCVlZX0JVRkZFUl9TVEFURSBiOworCWNoYXIgKmJ1
ZjsKKwl5eV9zaXplX3QgbjsKKwlpbnQgaTsKKyAgICAKKwkvKiBHZXQgbWVtb3J5IGZvciBmdWxs
IGJ1ZmZlciwgaW5jbHVkaW5nIHNwYWNlIGZvciB0cmFpbGluZyBFT0Incy4gKi8KKwluID0gX3l5
Ynl0ZXNfbGVuICsgMjsKKwlidWYgPSAoY2hhciAqKSBwcGFsbG9jKG4gLHl5c2Nhbm5lciApOwor
CWlmICggISBidWYgKQorCQlZWV9GQVRBTF9FUlJPUiggIm91dCBvZiBkeW5hbWljIG1lbW9yeSBp
biBwcF9zY2FuX2J5dGVzKCkiICk7CisKKwlmb3IgKCBpID0gMDsgaSA8IF95eWJ5dGVzX2xlbjsg
KytpICkKKwkJYnVmW2ldID0geXlieXRlc1tpXTsKKworCWJ1ZltfeXlieXRlc19sZW5dID0gYnVm
W195eWJ5dGVzX2xlbisxXSA9IFlZX0VORF9PRl9CVUZGRVJfQ0hBUjsKKworCWIgPSBwcF9zY2Fu
X2J1ZmZlcihidWYsbiAseXlzY2FubmVyKTsKKwlpZiAoICEgYiApCisJCVlZX0ZBVEFMX0VSUk9S
KCAiYmFkIGJ1ZmZlciBpbiBwcF9zY2FuX2J5dGVzKCkiICk7CisKKwkvKiBJdCdzIG9rYXkgdG8g
Z3JvdyBldGMuIHRoaXMgYnVmZmVyLCBhbmQgd2Ugc2hvdWxkIHRocm93IGl0CisJICogYXdheSB3
aGVuIHdlJ3JlIGRvbmUuCisJICovCisJYi0+eXlfaXNfb3VyX2J1ZmZlciA9IDE7CisKKwlyZXR1
cm4gYjsKK30KKworICAgIHN0YXRpYyB2b2lkIHl5X3B1c2hfc3RhdGUgKGludCAgbmV3X3N0YXRl
ICwgeXlzY2FuX3QgeXlzY2FubmVyKQoreworICAgIHN0cnVjdCB5eWd1dHNfdCAqIHl5ZyA9IChz
dHJ1Y3QgeXlndXRzX3QqKXl5c2Nhbm5lcjsKKwlpZiAoIHl5Zy0+eXlfc3RhcnRfc3RhY2tfcHRy
ID49IHl5Zy0+eXlfc3RhcnRfc3RhY2tfZGVwdGggKQorCQl7CisJCXl5X3NpemVfdCBuZXdfc2l6
ZTsKKworCQl5eWctPnl5X3N0YXJ0X3N0YWNrX2RlcHRoICs9IFlZX1NUQVJUX1NUQUNLX0lOQ1I7
CisJCW5ld19zaXplID0geXlnLT55eV9zdGFydF9zdGFja19kZXB0aCAqIHNpemVvZiggaW50ICk7
CisKKwkJaWYgKCAhIHl5Zy0+eXlfc3RhcnRfc3RhY2sgKQorCQkJeXlnLT55eV9zdGFydF9zdGFj
ayA9IChpbnQgKikgcHBhbGxvYyhuZXdfc2l6ZSAseXlzY2FubmVyICk7CisKKwkJZWxzZQorCQkJ
eXlnLT55eV9zdGFydF9zdGFjayA9IChpbnQgKikgcHByZWFsbG9jKCh2b2lkICopIHl5Zy0+eXlf
c3RhcnRfc3RhY2ssbmV3X3NpemUgLHl5c2Nhbm5lciApOworCisJCWlmICggISB5eWctPnl5X3N0
YXJ0X3N0YWNrICkKKwkJCVlZX0ZBVEFMX0VSUk9SKCAib3V0IG9mIG1lbW9yeSBleHBhbmRpbmcg
c3RhcnQtY29uZGl0aW9uIHN0YWNrIiApOworCQl9CisKKwl5eWctPnl5X3N0YXJ0X3N0YWNrW3l5
Zy0+eXlfc3RhcnRfc3RhY2tfcHRyKytdID0gWVlfU1RBUlQ7CisKKwlCRUdJTihuZXdfc3RhdGUp
OworfQorCisgICAgc3RhdGljIHZvaWQgeXlfcG9wX3N0YXRlICAoeXlzY2FuX3QgeXlzY2FubmVy
KQoreworICAgIHN0cnVjdCB5eWd1dHNfdCAqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKXl5c2Nh
bm5lcjsKKwlpZiAoIC0teXlnLT55eV9zdGFydF9zdGFja19wdHIgPCAwICkKKwkJWVlfRkFUQUxf
RVJST1IoICJzdGFydC1jb25kaXRpb24gc3RhY2sgdW5kZXJmbG93IiApOworCisJQkVHSU4oeXln
LT55eV9zdGFydF9zdGFja1t5eWctPnl5X3N0YXJ0X3N0YWNrX3B0cl0pOworfQorCisgICAgc3Rh
dGljIGludCB5eV90b3Bfc3RhdGUgICh5eXNjYW5fdCB5eXNjYW5uZXIpCit7CisgICAgc3RydWN0
IHl5Z3V0c190ICogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopeXlzY2FubmVyOworCXJldHVybiB5
eWctPnl5X3N0YXJ0X3N0YWNrW3l5Zy0+eXlfc3RhcnRfc3RhY2tfcHRyIC0gMV07Cit9CisKKyNp
Zm5kZWYgWVlfRVhJVF9GQUlMVVJFCisjZGVmaW5lIFlZX0VYSVRfRkFJTFVSRSAyCisjZW5kaWYK
Kworc3RhdGljIHZvaWQgeXlfZmF0YWxfZXJyb3IgKHl5Y29uc3QgY2hhciogbXNnICwgeXlzY2Fu
X3QgeXlzY2FubmVyKQoreworICAgIAkodm9pZCkgZnByaW50Ziggc3RkZXJyLCAiJXNcbiIsIG1z
ZyApOworCWV4aXQoIFlZX0VYSVRfRkFJTFVSRSApOworfQorCisvKiBSZWRlZmluZSB5eWxlc3Mo
KSBzbyBpdCB3b3JrcyBpbiBzZWN0aW9uIDMgY29kZS4gKi8KKworI3VuZGVmIHl5bGVzcworI2Rl
ZmluZSB5eWxlc3MobikgXAorCWRvIFwKKwkJeyBcCisJCS8qIFVuZG8gZWZmZWN0cyBvZiBzZXR0
aW5nIHVwIHl5dGV4dC4gKi8gXAorICAgICAgICBpbnQgeXlsZXNzX21hY3JvX2FyZyA9IChuKTsg
XAorICAgICAgICBZWV9MRVNTX0xJTkVOTyh5eWxlc3NfbWFjcm9fYXJnKTtcCisJCXl5dGV4dFt5
eWxlbmddID0geXlnLT55eV9ob2xkX2NoYXI7IFwKKwkJeXlnLT55eV9jX2J1Zl9wID0geXl0ZXh0
ICsgeXlsZXNzX21hY3JvX2FyZzsgXAorCQl5eWctPnl5X2hvbGRfY2hhciA9ICp5eWctPnl5X2Nf
YnVmX3A7IFwKKwkJKnl5Zy0+eXlfY19idWZfcCA9ICdcMCc7IFwKKwkJeXlsZW5nID0geXlsZXNz
X21hY3JvX2FyZzsgXAorCQl9IFwKKwl3aGlsZSAoIDAgKQorCisvKiBBY2Nlc3NvciAgbWV0aG9k
cyAoZ2V0L3NldCBmdW5jdGlvbnMpIHRvIHN0cnVjdCBtZW1iZXJzLiAqLworCisvKiogR2V0IHRo
ZSB1c2VyLWRlZmluZWQgZGF0YSBmb3IgdGhpcyBzY2FubmVyLgorICogQHBhcmFtIHl5c2Nhbm5l
ciBUaGUgc2Nhbm5lciBvYmplY3QuCisgKi8KK1lZX0VYVFJBX1RZUEUgcHBnZXRfZXh0cmEgICh5
eXNjYW5fdCB5eXNjYW5uZXIpCit7CisgICAgc3RydWN0IHl5Z3V0c190ICogeXlnID0gKHN0cnVj
dCB5eWd1dHNfdCopeXlzY2FubmVyOworICAgIHJldHVybiB5eWV4dHJhOworfQorCisvKiogR2V0
IHRoZSBjdXJyZW50IGxpbmUgbnVtYmVyLgorICogQHBhcmFtIHl5c2Nhbm5lciBUaGUgc2Nhbm5l
ciBvYmplY3QuCisgKi8KK2ludCBwcGdldF9saW5lbm8gICh5eXNjYW5fdCB5eXNjYW5uZXIpCit7
CisgICAgc3RydWN0IHl5Z3V0c190ICogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopeXlzY2FubmVy
OworICAgIAorICAgICAgICBpZiAoISBZWV9DVVJSRU5UX0JVRkZFUikKKyAgICAgICAgICAgIHJl
dHVybiAwOworICAgIAorICAgIHJldHVybiB5eWxpbmVubzsKK30KKworLyoqIEdldCB0aGUgY3Vy
cmVudCBjb2x1bW4gbnVtYmVyLgorICogQHBhcmFtIHl5c2Nhbm5lciBUaGUgc2Nhbm5lciBvYmpl
Y3QuCisgKi8KK2ludCBwcGdldF9jb2x1bW4gICh5eXNjYW5fdCB5eXNjYW5uZXIpCit7CisgICAg
c3RydWN0IHl5Z3V0c190ICogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopeXlzY2FubmVyOworICAg
IAorICAgICAgICBpZiAoISBZWV9DVVJSRU5UX0JVRkZFUikKKyAgICAgICAgICAgIHJldHVybiAw
OworICAgIAorICAgIHJldHVybiB5eWNvbHVtbjsKK30KKworLyoqIEdldCB0aGUgaW5wdXQgc3Ry
ZWFtLgorICogQHBhcmFtIHl5c2Nhbm5lciBUaGUgc2Nhbm5lciBvYmplY3QuCisgKi8KK0ZJTEUg
KnBwZ2V0X2luICAoeXlzY2FuX3QgeXlzY2FubmVyKQoreworICAgIHN0cnVjdCB5eWd1dHNfdCAq
IHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKXl5c2Nhbm5lcjsKKyAgICByZXR1cm4geXlpbjsKK30K
KworLyoqIEdldCB0aGUgb3V0cHV0IHN0cmVhbS4KKyAqIEBwYXJhbSB5eXNjYW5uZXIgVGhlIHNj
YW5uZXIgb2JqZWN0LgorICovCitGSUxFICpwcGdldF9vdXQgICh5eXNjYW5fdCB5eXNjYW5uZXIp
Cit7CisgICAgc3RydWN0IHl5Z3V0c190ICogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopeXlzY2Fu
bmVyOworICAgIHJldHVybiB5eW91dDsKK30KKworLyoqIEdldCB0aGUgbGVuZ3RoIG9mIHRoZSBj
dXJyZW50IHRva2VuLgorICogQHBhcmFtIHl5c2Nhbm5lciBUaGUgc2Nhbm5lciBvYmplY3QuCisg
Ki8KK2ludCBwcGdldF9sZW5nICAoeXlzY2FuX3QgeXlzY2FubmVyKQoreworICAgIHN0cnVjdCB5
eWd1dHNfdCAqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKXl5c2Nhbm5lcjsKKyAgICByZXR1cm4g
eXlsZW5nOworfQorCisvKiogR2V0IHRoZSBjdXJyZW50IHRva2VuLgorICogQHBhcmFtIHl5c2Nh
bm5lciBUaGUgc2Nhbm5lciBvYmplY3QuCisgKi8KKworY2hhciAqcHBnZXRfdGV4dCAgKHl5c2Nh
bl90IHl5c2Nhbm5lcikKK3sKKyAgICBzdHJ1Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5
Z3V0c190Kil5eXNjYW5uZXI7CisgICAgcmV0dXJuIHl5dGV4dDsKK30KKworLyoqIFNldCB0aGUg
dXNlci1kZWZpbmVkIGRhdGEuIFRoaXMgZGF0YSBpcyBuZXZlciB0b3VjaGVkIGJ5IHRoZSBzY2Fu
bmVyLgorICogQHBhcmFtIHVzZXJfZGVmaW5lZCBUaGUgZGF0YSB0byBiZSBhc3NvY2lhdGVkIHdp
dGggdGhpcyBzY2FubmVyLgorICogQHBhcmFtIHl5c2Nhbm5lciBUaGUgc2Nhbm5lciBvYmplY3Qu
CisgKi8KK3ZvaWQgcHBzZXRfZXh0cmEgKFlZX0VYVFJBX1RZUEUgIHVzZXJfZGVmaW5lZCAsIHl5
c2Nhbl90IHl5c2Nhbm5lcikKK3sKKyAgICBzdHJ1Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3RydWN0
IHl5Z3V0c190Kil5eXNjYW5uZXI7CisgICAgeXlleHRyYSA9IHVzZXJfZGVmaW5lZCA7Cit9CisK
Ky8qKiBTZXQgdGhlIGN1cnJlbnQgbGluZSBudW1iZXIuCisgKiBAcGFyYW0gbGluZV9udW1iZXIK
KyAqIEBwYXJhbSB5eXNjYW5uZXIgVGhlIHNjYW5uZXIgb2JqZWN0LgorICovCit2b2lkIHBwc2V0
X2xpbmVubyAoaW50ICBsaW5lX251bWJlciAsIHl5c2Nhbl90IHl5c2Nhbm5lcikKK3sKKyAgICBz
dHJ1Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5eXNjYW5uZXI7CisKKyAg
ICAgICAgLyogbGluZW5vIGlzIG9ubHkgdmFsaWQgaWYgYW4gaW5wdXQgYnVmZmVyIGV4aXN0cy4g
Ki8KKyAgICAgICAgaWYgKCEgWVlfQ1VSUkVOVF9CVUZGRVIgKQorICAgICAgICAgICB5eV9mYXRh
bF9lcnJvciggInBwc2V0X2xpbmVubyBjYWxsZWQgd2l0aCBubyBidWZmZXIiICwgeXlzY2FubmVy
KTsgCisgICAgCisgICAgeXlsaW5lbm8gPSBsaW5lX251bWJlcjsKK30KKworLyoqIFNldCB0aGUg
Y3VycmVudCBjb2x1bW4uCisgKiBAcGFyYW0gbGluZV9udW1iZXIKKyAqIEBwYXJhbSB5eXNjYW5u
ZXIgVGhlIHNjYW5uZXIgb2JqZWN0LgorICovCit2b2lkIHBwc2V0X2NvbHVtbiAoaW50ICBjb2x1
bW5fbm8gLCB5eXNjYW5fdCB5eXNjYW5uZXIpCit7CisgICAgc3RydWN0IHl5Z3V0c190ICogeXln
ID0gKHN0cnVjdCB5eWd1dHNfdCopeXlzY2FubmVyOworCisgICAgICAgIC8qIGNvbHVtbiBpcyBv
bmx5IHZhbGlkIGlmIGFuIGlucHV0IGJ1ZmZlciBleGlzdHMuICovCisgICAgICAgIGlmICghIFlZ
X0NVUlJFTlRfQlVGRkVSICkKKyAgICAgICAgICAgeXlfZmF0YWxfZXJyb3IoICJwcHNldF9jb2x1
bW4gY2FsbGVkIHdpdGggbm8gYnVmZmVyIiAsIHl5c2Nhbm5lcik7IAorICAgIAorICAgIHl5Y29s
dW1uID0gY29sdW1uX25vOworfQorCisvKiogU2V0IHRoZSBpbnB1dCBzdHJlYW0uIFRoaXMgZG9l
cyBub3QgZGlzY2FyZCB0aGUgY3VycmVudAorICogaW5wdXQgYnVmZmVyLgorICogQHBhcmFtIGlu
X3N0ciBBIHJlYWRhYmxlIHN0cmVhbS4KKyAqIEBwYXJhbSB5eXNjYW5uZXIgVGhlIHNjYW5uZXIg
b2JqZWN0LgorICogQHNlZSBwcF9zd2l0Y2hfdG9fYnVmZmVyCisgKi8KK3ZvaWQgcHBzZXRfaW4g
KEZJTEUgKiAgaW5fc3RyICwgeXlzY2FuX3QgeXlzY2FubmVyKQoreworICAgIHN0cnVjdCB5eWd1
dHNfdCAqIHl5ZyA9IChzdHJ1Y3QgeXlndXRzX3QqKXl5c2Nhbm5lcjsKKyAgICB5eWluID0gaW5f
c3RyIDsKK30KKwordm9pZCBwcHNldF9vdXQgKEZJTEUgKiAgb3V0X3N0ciAsIHl5c2Nhbl90IHl5
c2Nhbm5lcikKK3sKKyAgICBzdHJ1Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190
Kil5eXNjYW5uZXI7CisgICAgeXlvdXQgPSBvdXRfc3RyIDsKK30KKworaW50IHBwZ2V0X2RlYnVn
ICAoeXlzY2FuX3QgeXlzY2FubmVyKQoreworICAgIHN0cnVjdCB5eWd1dHNfdCAqIHl5ZyA9IChz
dHJ1Y3QgeXlndXRzX3QqKXl5c2Nhbm5lcjsKKyAgICByZXR1cm4geXlfZmxleF9kZWJ1ZzsKK30K
Kwordm9pZCBwcHNldF9kZWJ1ZyAoaW50ICBiZGVidWcgLCB5eXNjYW5fdCB5eXNjYW5uZXIpCit7
CisgICAgc3RydWN0IHl5Z3V0c190ICogeXlnID0gKHN0cnVjdCB5eWd1dHNfdCopeXlzY2FubmVy
OworICAgIHl5X2ZsZXhfZGVidWcgPSBiZGVidWcgOworfQorCisvKiBBY2Nlc3NvciBtZXRob2Rz
IGZvciB5eWx2YWwgYW5kIHl5bGxvYyAqLworCitZWVNUWVBFICogcHBnZXRfbHZhbCAgKHl5c2Nh
bl90IHl5c2Nhbm5lcikKK3sKKyAgICBzdHJ1Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5
Z3V0c190Kil5eXNjYW5uZXI7CisgICAgcmV0dXJuIHl5bHZhbDsKK30KKwordm9pZCBwcHNldF9s
dmFsIChZWVNUWVBFICogIHl5bHZhbF9wYXJhbSAsIHl5c2Nhbl90IHl5c2Nhbm5lcikKK3sKKyAg
ICBzdHJ1Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5eXNjYW5uZXI7Cisg
ICAgeXlsdmFsID0geXlsdmFsX3BhcmFtOworfQorCitZWUxUWVBFICpwcGdldF9sbG9jICAoeXlz
Y2FuX3QgeXlzY2FubmVyKQoreworICAgIHN0cnVjdCB5eWd1dHNfdCAqIHl5ZyA9IChzdHJ1Y3Qg
eXlndXRzX3QqKXl5c2Nhbm5lcjsKKyAgICByZXR1cm4geXlsbG9jOworfQorICAgIAordm9pZCBw
cHNldF9sbG9jIChZWUxUWVBFICogIHl5bGxvY19wYXJhbSAsIHl5c2Nhbl90IHl5c2Nhbm5lcikK
K3sKKyAgICBzdHJ1Y3QgeXlndXRzX3QgKiB5eWcgPSAoc3RydWN0IHl5Z3V0c190Kil5eXNjYW5u
ZXI7CisgICAgeXlsbG9jID0geXlsbG9jX3BhcmFtOworfQorICAgIAorLyogVXNlci12aXNpYmxl
IEFQSSAqLworCisvKiBwcGxleF9pbml0IGlzIHNwZWNpYWwgYmVjYXVzZSBpdCBjcmVhdGVzIHRo
ZSBzY2FubmVyIGl0c2VsZiwgc28gaXQgaXMKKyAqIHRoZSBPTkxZIHJlZW50cmFudCBmdW5jdGlv
biB0aGF0IGRvZXNuJ3QgdGFrZSB0aGUgc2Nhbm5lciBhcyB0aGUgbGFzdCBhcmd1bWVudC4KKyAq
IFRoYXQncyB3aHkgd2UgZXhwbGljaXRseSBoYW5kbGUgdGhlIGRlY2xhcmF0aW9uLCBpbnN0ZWFk
IG9mIHVzaW5nIG91ciBtYWNyb3MuCisgKi8KKworaW50IHBwbGV4X2luaXQoeXlzY2FuX3QqIHB0
cl95eV9nbG9iYWxzKQorCit7CisgICAgaWYgKHB0cl95eV9nbG9iYWxzID09IE5VTEwpeworICAg
ICAgICBlcnJubyA9IEVJTlZBTDsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgKnB0
cl95eV9nbG9iYWxzID0gKHl5c2Nhbl90KSBwcGFsbG9jICggc2l6ZW9mKCBzdHJ1Y3QgeXlndXRz
X3QgKSwgTlVMTCApOworCisgICAgaWYgKCpwdHJfeXlfZ2xvYmFscyA9PSBOVUxMKXsKKyAgICAg
ICAgZXJybm8gPSBFTk9NRU07CisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIC8qIEJ5
IHNldHRpbmcgdG8gMHhBQSwgd2UgZXhwb3NlIGJ1Z3MgaW4geXlfaW5pdF9nbG9iYWxzLiBMZWF2
ZSBhdCAweDAwIGZvciByZWxlYXNlcy4gKi8KKyAgICBtZW1zZXQoKnB0cl95eV9nbG9iYWxzLDB4
MDAsc2l6ZW9mKHN0cnVjdCB5eWd1dHNfdCkpOworCisgICAgcmV0dXJuIHl5X2luaXRfZ2xvYmFs
cyAoICpwdHJfeXlfZ2xvYmFscyApOworfQorCisvKiBwcGxleF9pbml0X2V4dHJhIGhhcyB0aGUg
c2FtZSBmdW5jdGlvbmFsaXR5IGFzIHBwbGV4X2luaXQsIGJ1dCBmb2xsb3dzIHRoZQorICogY29u
dmVudGlvbiBvZiB0YWtpbmcgdGhlIHNjYW5uZXIgYXMgdGhlIGxhc3QgYXJndW1lbnQuIE5vdGUg
aG93ZXZlciwgdGhhdAorICogdGhpcyBpcyBhICpwb2ludGVyKiB0byBhIHNjYW5uZXIsIGFzIGl0
IHdpbGwgYmUgYWxsb2NhdGVkIGJ5IHRoaXMgY2FsbCAoYW5kCisgKiBpcyB0aGUgcmVhc29uLCB0
b28sIHdoeSB0aGlzIGZ1bmN0aW9uIGFsc28gbXVzdCBoYW5kbGUgaXRzIG93biBkZWNsYXJhdGlv
bikuCisgKiBUaGUgdXNlciBkZWZpbmVkIHZhbHVlIGluIHRoZSBmaXJzdCBhcmd1bWVudCB3aWxs
IGJlIGF2YWlsYWJsZSB0byBwcGFsbG9jIGluCisgKiB0aGUgeXlleHRyYSBmaWVsZC4KKyAqLwor
CitpbnQgcHBsZXhfaW5pdF9leHRyYShZWV9FWFRSQV9UWVBFIHl5X3VzZXJfZGVmaW5lZCx5eXNj
YW5fdCogcHRyX3l5X2dsb2JhbHMgKQorCit7CisgICAgc3RydWN0IHl5Z3V0c190IGR1bW15X3l5
Z3V0czsKKworICAgIHBwc2V0X2V4dHJhICh5eV91c2VyX2RlZmluZWQsICZkdW1teV95eWd1dHMp
OworCisgICAgaWYgKHB0cl95eV9nbG9iYWxzID09IE5VTEwpeworICAgICAgICBlcnJubyA9IEVJ
TlZBTDsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCQorICAgICpwdHJfeXlfZ2xvYmFscyA9
ICh5eXNjYW5fdCkgcHBhbGxvYyAoIHNpemVvZiggc3RydWN0IHl5Z3V0c190ICksICZkdW1teV95
eWd1dHMgKTsKKwkKKyAgICBpZiAoKnB0cl95eV9nbG9iYWxzID09IE5VTEwpeworICAgICAgICBl
cnJubyA9IEVOT01FTTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIAorICAgIC8qIEJ5
IHNldHRpbmcgdG8gMHhBQSwgd2UgZXhwb3NlIGJ1Z3MgaW4KKyAgICB5eV9pbml0X2dsb2JhbHMu
IExlYXZlIGF0IDB4MDAgZm9yIHJlbGVhc2VzLiAqLworICAgIG1lbXNldCgqcHRyX3l5X2dsb2Jh
bHMsMHgwMCxzaXplb2Yoc3RydWN0IHl5Z3V0c190KSk7CisgICAgCisgICAgcHBzZXRfZXh0cmEg
KHl5X3VzZXJfZGVmaW5lZCwgKnB0cl95eV9nbG9iYWxzKTsKKyAgICAKKyAgICByZXR1cm4geXlf
aW5pdF9nbG9iYWxzICggKnB0cl95eV9nbG9iYWxzICk7Cit9CisKK3N0YXRpYyBpbnQgeXlfaW5p
dF9nbG9iYWxzICh5eXNjYW5fdCB5eXNjYW5uZXIpCit7CisgICAgc3RydWN0IHl5Z3V0c190ICog
eXlnID0gKHN0cnVjdCB5eWd1dHNfdCopeXlzY2FubmVyOworICAgIC8qIEluaXRpYWxpemF0aW9u
IGlzIHRoZSBzYW1lIGFzIGZvciB0aGUgbm9uLXJlZW50cmFudCBzY2FubmVyLgorICAgICAqIFRo
aXMgZnVuY3Rpb24gaXMgY2FsbGVkIGZyb20gcHBsZXhfZGVzdHJveSgpLCBzbyBkb24ndCBhbGxv
Y2F0ZSBoZXJlLgorICAgICAqLworCisgICAgeXlnLT55eV9idWZmZXJfc3RhY2sgPSAwOworICAg
IHl5Zy0+eXlfYnVmZmVyX3N0YWNrX3RvcCA9IDA7CisgICAgeXlnLT55eV9idWZmZXJfc3RhY2tf
bWF4ID0gMDsKKyAgICB5eWctPnl5X2NfYnVmX3AgPSAoY2hhciAqKSAwOworICAgIHl5Zy0+eXlf
aW5pdCA9IDA7CisgICAgeXlnLT55eV9zdGFydCA9IDA7CisKKyAgICB5eWctPnl5X3N0YXJ0X3N0
YWNrX3B0ciA9IDA7CisgICAgeXlnLT55eV9zdGFydF9zdGFja19kZXB0aCA9IDA7CisgICAgeXln
LT55eV9zdGFydF9zdGFjayA9ICBOVUxMOworCisvKiBEZWZpbmVkIGluIG1haW4uYyAqLworI2lm
ZGVmIFlZX1NURElOSVQKKyAgICB5eWluID0gc3RkaW47CisgICAgeXlvdXQgPSBzdGRvdXQ7Cisj
ZWxzZQorICAgIHl5aW4gPSAoRklMRSAqKSAwOworICAgIHl5b3V0ID0gKEZJTEUgKikgMDsKKyNl
bmRpZgorCisgICAgLyogRm9yIGZ1dHVyZSByZWZlcmVuY2U6IFNldCBlcnJubyBvbiBlcnJvciwg
c2luY2Ugd2UgYXJlIGNhbGxlZCBieQorICAgICAqIHBwbGV4X2luaXQoKQorICAgICAqLworICAg
IHJldHVybiAwOworfQorCisvKiBwcGxleF9kZXN0cm95IGlzIGZvciBib3RoIHJlZW50cmFudCBh
bmQgbm9uLXJlZW50cmFudCBzY2FubmVycy4gKi8KK2ludCBwcGxleF9kZXN0cm95ICAoeXlzY2Fu
X3QgeXlzY2FubmVyKQoreworICAgIHN0cnVjdCB5eWd1dHNfdCAqIHl5ZyA9IChzdHJ1Y3QgeXln
dXRzX3QqKXl5c2Nhbm5lcjsKKworICAgIC8qIFBvcCB0aGUgYnVmZmVyIHN0YWNrLCBkZXN0cm95
aW5nIGVhY2ggZWxlbWVudC4gKi8KKwl3aGlsZShZWV9DVVJSRU5UX0JVRkZFUil7CisJCXBwX2Rl
bGV0ZV9idWZmZXIoWVlfQ1VSUkVOVF9CVUZGRVIgLHl5c2Nhbm5lciApOworCQlZWV9DVVJSRU5U
X0JVRkZFUl9MVkFMVUUgPSBOVUxMOworCQlwcHBvcF9idWZmZXJfc3RhdGUoeXlzY2FubmVyKTsK
Kwl9CisKKwkvKiBEZXN0cm95IHRoZSBzdGFjayBpdHNlbGYuICovCisJcHBmcmVlKHl5Zy0+eXlf
YnVmZmVyX3N0YWNrICx5eXNjYW5uZXIpOworCXl5Zy0+eXlfYnVmZmVyX3N0YWNrID0gTlVMTDsK
KworICAgIC8qIERlc3Ryb3kgdGhlIHN0YXJ0IGNvbmRpdGlvbiBzdGFjay4gKi8KKyAgICAgICAg
cHBmcmVlKHl5Zy0+eXlfc3RhcnRfc3RhY2sgLHl5c2Nhbm5lciApOworICAgICAgICB5eWctPnl5
X3N0YXJ0X3N0YWNrID0gTlVMTDsKKworICAgIC8qIFJlc2V0IHRoZSBnbG9iYWxzLiBUaGlzIGlz
IGltcG9ydGFudCBpbiBhIG5vbi1yZWVudHJhbnQgc2Nhbm5lciBzbyB0aGUgbmV4dCB0aW1lCisg
ICAgICogcHBsZXgoKSBpcyBjYWxsZWQsIGluaXRpYWxpemF0aW9uIHdpbGwgb2NjdXIuICovCisg
ICAgeXlfaW5pdF9nbG9iYWxzKCB5eXNjYW5uZXIpOworCisgICAgLyogRGVzdHJveSB0aGUgbWFp
biBzdHJ1Y3QgKHJlZW50cmFudCBvbmx5KS4gKi8KKyAgICBwcGZyZWUgKCB5eXNjYW5uZXIgLCB5
eXNjYW5uZXIgKTsKKyAgICB5eXNjYW5uZXIgPSBOVUxMOworICAgIHJldHVybiAwOworfQorCisv
KgorICogSW50ZXJuYWwgdXRpbGl0eSByb3V0aW5lcy4KKyAqLworCisjaWZuZGVmIHl5dGV4dF9w
dHIKK3N0YXRpYyB2b2lkIHl5X2ZsZXhfc3RybmNweSAoY2hhciogczEsIHl5Y29uc3QgY2hhciAq
IHMyLCBpbnQgbiAsIHl5c2Nhbl90IHl5c2Nhbm5lcikKK3sKKwlyZWdpc3RlciBpbnQgaTsKKwlm
b3IgKCBpID0gMDsgaSA8IG47ICsraSApCisJCXMxW2ldID0gczJbaV07Cit9CisjZW5kaWYKKwor
I2lmZGVmIFlZX05FRURfU1RSTEVOCitzdGF0aWMgaW50IHl5X2ZsZXhfc3RybGVuICh5eWNvbnN0
IGNoYXIgKiBzICwgeXlzY2FuX3QgeXlzY2FubmVyKQoreworCXJlZ2lzdGVyIGludCBuOworCWZv
ciAoIG4gPSAwOyBzW25dOyArK24gKQorCQk7CisKKwlyZXR1cm4gbjsKK30KKyNlbmRpZgorCit2
b2lkICpwcGFsbG9jICh5eV9zaXplX3QgIHNpemUgLCB5eXNjYW5fdCB5eXNjYW5uZXIpCit7CisJ
cmV0dXJuICh2b2lkICopIG1hbGxvYyggc2l6ZSApOworfQorCit2b2lkICpwcHJlYWxsb2MgICh2
b2lkICogcHRyLCB5eV9zaXplX3QgIHNpemUgLCB5eXNjYW5fdCB5eXNjYW5uZXIpCit7CisJLyog
VGhlIGNhc3QgdG8gKGNoYXIgKikgaW4gdGhlIGZvbGxvd2luZyBhY2NvbW1vZGF0ZXMgYm90aAor
CSAqIGltcGxlbWVudGF0aW9ucyB0aGF0IHVzZSBjaGFyKiBnZW5lcmljIHBvaW50ZXJzLCBhbmQg
dGhvc2UKKwkgKiB0aGF0IHVzZSB2b2lkKiBnZW5lcmljIHBvaW50ZXJzLiAgSXQgd29ya3Mgd2l0
aCB0aGUgbGF0dGVyCisJICogYmVjYXVzZSBib3RoIEFOU0kgQyBhbmQgQysrIGFsbG93IGNhc3Rs
ZXNzIGFzc2lnbm1lbnQgZnJvbQorCSAqIGFueSBwb2ludGVyIHR5cGUgdG8gdm9pZCosIGFuZCBk
ZWFsIHdpdGggYXJndW1lbnQgY29udmVyc2lvbnMKKwkgKiBhcyB0aG91Z2ggZG9pbmcgYW4gYXNz
aWdubWVudC4KKwkgKi8KKwlyZXR1cm4gKHZvaWQgKikgcmVhbGxvYyggKGNoYXIgKikgcHRyLCBz
aXplICk7Cit9CisKK3ZvaWQgcHBmcmVlICh2b2lkICogcHRyICwgeXlzY2FuX3QgeXlzY2FubmVy
KQoreworCWZyZWUoIChjaGFyICopIHB0ciApOwkvKiBzZWUgcHByZWFsbG9jKCkgZm9yIChjaGFy
ICopIGNhc3QgKi8KK30KKworI2RlZmluZSBZWVRBQkxFU19OQU1FICJ5eXRhYmxlcyIKKworc3Rk
OjpzdHJpbmcqIGV4dHJhY3RNYWNyb05hbWUoY29uc3QgY2hhciogc3RyLCBpbnQgbGVuKQorewor
ICAgIC8vIFRoZSBpbnB1dCBzdHJpbmcgaXMgb2YgdGhlIGZvcm0ge0hBU0h9ZGVmaW5le0hTUEFD
RX0re0lERU5USUZJRVJ9CisgICAgLy8gV2UganVzdCBuZWVkIHRvIGZpbmQgdGhlIGxhc3QgSFNQ
QUNFLgorICAgIEFTU0VSVChzdHIgJiYgKGxlbiA+IDgpKTsgIC8vIHN0cmxlbigiI2RlZmluZSAi
KSA9PSA4OworCisgICAgc3RkOjpzdHJpbmcqIG5hbWUgPSBOVUxMOworICAgIGZvciAoaW50IGkg
PSBsZW4gLSAxOyBpID49IDA7IC0taSkKKyAgICB7CisgICAgICAgIGlmICgoc3RyW2ldID09ICcg
JykgfHwgKHN0cltpXSA9PSAnXHQnKSkKKyAgICAgICAgeworICAgICAgICAgICAgbmFtZSA9IG5l
dyBzdGQ6OnN0cmluZyhzdHIgKyBpICsgMSwgbGVuIC0gaSAtIDEpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICB9CisgICAgQVNTRVJUKG5hbWUpOworICAgIHJldHVybiBuYW1l
OworfQorCituYW1lc3BhY2UgcHAgeworCitpbnQgQ29udGV4dDo6cmVhZElucHV0KGNoYXIqIGJ1
ZiwgaW50IG1heFNpemUpCit7CisgICAgaW50IG5yZWFkID0gWVlfTlVMTDsKKyAgICB3aGlsZSAo
IW1JbnB1dC0+ZW9mKCkgJiYKKyAgICAgICAgICAgKG1JbnB1dC0+ZXJyb3IoKSA9PSBwcDo6SW5w
dXQ6OmtFcnJvck5vbmUpICYmCisgICAgICAgICAgIChucmVhZCA9PSBZWV9OVUxMKSkKKyAgICB7
CisgICAgICAgIGludCBsaW5lID0gMCwgZmlsZSA9IDA7CisgICAgICAgIHBwOjpUb2tlbjo6ZGVj
b2RlTG9jYXRpb24ocHBnZXRfbGluZW5vKG1MZXhlciksICZsaW5lLCAmZmlsZSk7CisgICAgICAg
IGZpbGUgPSBtSW5wdXQtPnN0cmluZ0luZGV4KCk7CisgICAgICAgIHBwc2V0X2xpbmVubyhwcDo6
VG9rZW46OmVuY29kZUxvY2F0aW9uKGxpbmUsIGZpbGUpLG1MZXhlcik7CisKKyAgICAgICAgbnJl
YWQgPSBtSW5wdXQtPnJlYWQoYnVmLCBtYXhTaXplKTsKKworICAgICAgICBpZiAobUlucHV0LT5l
cnJvcigpID09IHBwOjpJbnB1dDo6a0Vycm9yVW5leHBlY3RlZEVPRikKKyAgICAgICAgeworICAg
ICAgICAgICAgLy8gVE9ETyhhbG9rcCk6IFJlcG9ydCBlcnJvci4KKyAgICAgICAgfQorICAgIH0K
KyAgICByZXR1cm4gbnJlYWQ7Cit9CisKK2Jvb2wgQ29udGV4dDo6aW5pdExleGVyKCkKK3sKKyAg
ICBBU1NFUlQobUxleGVyID09IE5VTEwpOworCisgICAgaWYgKHBwbGV4X2luaXRfZXh0cmEodGhp
cywmbUxleGVyKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcHByZXN0YXJ0KDAsbUxl
eGVyKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDb250ZXh0OjpkZXN0cm95TGV4ZXIo
KQoreworICAgIEFTU0VSVChtTGV4ZXIpOworCisgICAgcHBsZXhfZGVzdHJveShtTGV4ZXIpOwor
ICAgIG1MZXhlciA9IE5VTEw7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBwcAorCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL25ldy9w
cF90YWIuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nl
c3Nvci9uZXcvcHBfdGFiLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZTBmNGVmMmQxNGQxYzMyNzA4ODYyMzk3
MmRhNTVjMGQ2Mzk1ZDk4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9uZXcvcHBfdGFiLmNwcApAQCAtMCwwICsxLDIw
NzIgQEAKKy8qIEEgQmlzb24gcGFyc2VyLCBtYWRlIGJ5IEdOVSBCaXNvbiAyLjMuICAqLworCisv
KiBTa2VsZXRvbiBpbXBsZW1lbnRhdGlvbiBmb3IgQmlzb24ncyBZYWNjLWxpa2UgcGFyc2VycyBp
biBDCisKKyAgIENvcHlyaWdodCAoQykgMTk4NCwgMTk4OSwgMTk5MCwgMjAwMCwgMjAwMSwgMjAw
MiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNgorICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorICAg
YW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAgIEdO
VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlvdSBzaG91
bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBT
b2Z0d2FyZQorICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBG
bG9vciwKKyAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLiAgKi8KKworLyogQXMgYSBzcGVj
aWFsIGV4Y2VwdGlvbiwgeW91IG1heSBjcmVhdGUgYSBsYXJnZXIgd29yayB0aGF0IGNvbnRhaW5z
CisgICBwYXJ0IG9yIGFsbCBvZiB0aGUgQmlzb24gcGFyc2VyIHNrZWxldG9uIGFuZCBkaXN0cmli
dXRlIHRoYXQgd29yaworICAgdW5kZXIgdGVybXMgb2YgeW91ciBjaG9pY2UsIHNvIGxvbmcgYXMg
dGhhdCB3b3JrIGlzbid0IGl0c2VsZiBhCisgICBwYXJzZXIgZ2VuZXJhdG9yIHVzaW5nIHRoZSBz
a2VsZXRvbiBvciBhIG1vZGlmaWVkIHZlcnNpb24gdGhlcmVvZgorICAgYXMgYSBwYXJzZXIgc2tl
bGV0b24uICBBbHRlcm5hdGl2ZWx5LCBpZiB5b3UgbW9kaWZ5IG9yIHJlZGlzdHJpYnV0ZQorICAg
dGhlIHBhcnNlciBza2VsZXRvbiBpdHNlbGYsIHlvdSBtYXkgKGF0IHlvdXIgb3B0aW9uKSByZW1v
dmUgdGhpcworICAgc3BlY2lhbCBleGNlcHRpb24sIHdoaWNoIHdpbGwgY2F1c2UgdGhlIHNrZWxl
dG9uIGFuZCB0aGUgcmVzdWx0aW5nCisgICBCaXNvbiBvdXRwdXQgZmlsZXMgdG8gYmUgbGljZW5z
ZWQgdW5kZXIgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworICAgTGljZW5zZSB3aXRob3V0IHRoaXMg
c3BlY2lhbCBleGNlcHRpb24uCisKKyAgIFRoaXMgc3BlY2lhbCBleGNlcHRpb24gd2FzIGFkZGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gaW4KKyAgIHZlcnNpb24gMi4yIG9mIEJp
c29uLiAgKi8KKworLyogQyBMQUxSKDEpIHBhcnNlciBza2VsZXRvbiB3cml0dGVuIGJ5IFJpY2hh
cmQgU3RhbGxtYW4sIGJ5CisgICBzaW1wbGlmeWluZyB0aGUgb3JpZ2luYWwgc28tY2FsbGVkICJz
ZW1hbnRpYyIgcGFyc2VyLiAgKi8KKworLyogQWxsIHN5bWJvbHMgZGVmaW5lZCBiZWxvdyBzaG91
bGQgYmVnaW4gd2l0aCB5eSBvciBZWSwgdG8gYXZvaWQKKyAgIGluZnJpbmdpbmcgb24gdXNlciBu
YW1lIHNwYWNlLiAgVGhpcyBzaG91bGQgYmUgZG9uZSBldmVuIGZvciBsb2NhbAorICAgdmFyaWFi
bGVzLCBhcyB0aGV5IG1pZ2h0IG90aGVyd2lzZSBiZSBleHBhbmRlZCBieSB1c2VyIG1hY3Jvcy4K
KyAgIFRoZXJlIGFyZSBzb21lIHVuYXZvaWRhYmxlIGV4Y2VwdGlvbnMgd2l0aGluIGluY2x1ZGUg
ZmlsZXMgdG8KKyAgIGRlZmluZSBuZWNlc3NhcnkgbGlicmFyeSBzeW1ib2xzOyB0aGV5IGFyZSBu
b3RlZCAiSU5GUklOR0VTIE9OCisgICBVU0VSIE5BTUUgU1BBQ0UiIGJlbG93LiAgKi8KKworLyog
SWRlbnRpZnkgQmlzb24gb3V0cHV0LiAgKi8KKyNkZWZpbmUgWVlCSVNPTiAxCisKKy8qIEJpc29u
IHZlcnNpb24uICAqLworI2RlZmluZSBZWUJJU09OX1ZFUlNJT04gIjIuMyIKKworLyogU2tlbGV0
b24gbmFtZS4gICovCisjZGVmaW5lIFlZU0tFTEVUT05fTkFNRSAieWFjYy5jIgorCisvKiBQdXJl
IHBhcnNlcnMuICAqLworI2RlZmluZSBZWVBVUkUgMQorCisvKiBVc2luZyBsb2NhdGlvbnMuICAq
LworI2RlZmluZSBZWUxTUF9ORUVERUQgMQorCisvKiBTdWJzdGl0dXRlIHRoZSB2YXJpYWJsZSBh
bmQgZnVuY3Rpb24gbmFtZXMuICAqLworI2RlZmluZSB5eXBhcnNlIHBwcGFyc2UKKyNkZWZpbmUg
eXlsZXggICBwcGxleAorI2RlZmluZSB5eWVycm9yIHBwZXJyb3IKKyNkZWZpbmUgeXlsdmFsICBw
cGx2YWwKKyNkZWZpbmUgeXljaGFyICBwcGNoYXIKKyNkZWZpbmUgeXlkZWJ1ZyBwcGRlYnVnCisj
ZGVmaW5lIHl5bmVycnMgcHBuZXJycworI2RlZmluZSB5eWxsb2MgcHBsbG9jCisKKy8qIFRva2Vu
cy4gICovCisjaWZuZGVmIFlZVE9LRU5UWVBFCisjIGRlZmluZSBZWVRPS0VOVFlQRQorICAgLyog
UHV0IHRoZSB0b2tlbnMgaW50byB0aGUgc3ltYm9sIHRhYmxlLCBzbyB0aGF0IEdEQiBhbmQgb3Ro
ZXIgZGVidWdnZXJzCisgICAgICBrbm93IGFib3V0IHRoZW0uICAqLworICAgZW51bSB5eXRva2Vu
dHlwZSB7CisgICAgIEhBU0ggPSAyNTgsCisgICAgIEhBU0hfVU5ERUYgPSAyNTksCisgICAgIEhB
U0hfSUYgPSAyNjAsCisgICAgIEhBU0hfSUZERUYgPSAyNjEsCisgICAgIEhBU0hfSUZOREVGID0g
MjYyLAorICAgICBIQVNIX0VMU0UgPSAyNjMsCisgICAgIEhBU0hfRUxJRiA9IDI2NCwKKyAgICAg
SEFTSF9FTkRJRiA9IDI2NSwKKyAgICAgREVGSU5FRCA9IDI2NiwKKyAgICAgSEFTSF9FUlJPUiA9
IDI2NywKKyAgICAgSEFTSF9QUkFHTUEgPSAyNjgsCisgICAgIEhBU0hfRVhURU5TSU9OID0gMjY5
LAorICAgICBIQVNIX1ZFUlNJT04gPSAyNzAsCisgICAgIEhBU0hfTElORSA9IDI3MSwKKyAgICAg
SEFTSF9ERUZJTkVfT0JKID0gMjcyLAorICAgICBIQVNIX0RFRklORV9GVU5DID0gMjczLAorICAg
ICBJTlRfQ09OU1RBTlQgPSAyNzQsCisgICAgIEZMT0FUX0NPTlNUQU5UID0gMjc1LAorICAgICBJ
REVOVElGSUVSID0gMjc2CisgICB9OworI2VuZGlmCisvKiBUb2tlbnMuICAqLworI2RlZmluZSBI
QVNIIDI1OAorI2RlZmluZSBIQVNIX1VOREVGIDI1OQorI2RlZmluZSBIQVNIX0lGIDI2MAorI2Rl
ZmluZSBIQVNIX0lGREVGIDI2MQorI2RlZmluZSBIQVNIX0lGTkRFRiAyNjIKKyNkZWZpbmUgSEFT
SF9FTFNFIDI2MworI2RlZmluZSBIQVNIX0VMSUYgMjY0CisjZGVmaW5lIEhBU0hfRU5ESUYgMjY1
CisjZGVmaW5lIERFRklORUQgMjY2CisjZGVmaW5lIEhBU0hfRVJST1IgMjY3CisjZGVmaW5lIEhB
U0hfUFJBR01BIDI2OAorI2RlZmluZSBIQVNIX0VYVEVOU0lPTiAyNjkKKyNkZWZpbmUgSEFTSF9W
RVJTSU9OIDI3MAorI2RlZmluZSBIQVNIX0xJTkUgMjcxCisjZGVmaW5lIEhBU0hfREVGSU5FX09C
SiAyNzIKKyNkZWZpbmUgSEFTSF9ERUZJTkVfRlVOQyAyNzMKKyNkZWZpbmUgSU5UX0NPTlNUQU5U
IDI3NAorI2RlZmluZSBGTE9BVF9DT05TVEFOVCAyNzUKKyNkZWZpbmUgSURFTlRJRklFUiAyNzYK
KworCisKKworLyogQ29weSB0aGUgZmlyc3QgcGFydCBvZiB1c2VyIGRlY2xhcmF0aW9ucy4gICov
CisKKworLy8KKy8vIENvcHlyaWdodCAoYykgMjAxMSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3Jz
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292
ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhl
IExJQ0VOU0UgZmlsZS4KKy8vCisKKy8vIFRoaXMgZmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBieSBn
ZW5lcmF0ZV9nbHNsYW5nX3BhcnNlci5zaC4gRE8gTk9UIEVESVQhCisKKyNpbmNsdWRlICJDb250
ZXh0LmgiCisKKyNkZWZpbmUgWVlMRVhfUEFSQU0gY29udGV4dC0+bGV4ZXIoKQorI2RlZmluZSBZ
WURFQlVHIDEKKworCisvKiBFbmFibGluZyB0cmFjZXMuICAqLworI2lmbmRlZiBZWURFQlVHCisj
IGRlZmluZSBZWURFQlVHIDAKKyNlbmRpZgorCisvKiBFbmFibGluZyB2ZXJib3NlIGVycm9yIG1l
c3NhZ2VzLiAgKi8KKyNpZmRlZiBZWUVSUk9SX1ZFUkJPU0UKKyMgdW5kZWYgWVlFUlJPUl9WRVJC
T1NFCisjIGRlZmluZSBZWUVSUk9SX1ZFUkJPU0UgMQorI2Vsc2UKKyMgZGVmaW5lIFlZRVJST1Jf
VkVSQk9TRSAwCisjZW5kaWYKKworLyogRW5hYmxpbmcgdGhlIHRva2VuIHRhYmxlLiAgKi8KKyNp
Zm5kZWYgWVlUT0tFTl9UQUJMRQorIyBkZWZpbmUgWVlUT0tFTl9UQUJMRSAwCisjZW5kaWYKKwor
I2lmICEgZGVmaW5lZCBZWVNUWVBFICYmICEgZGVmaW5lZCBZWVNUWVBFX0lTX0RFQ0xBUkVECit0
eXBlZGVmIHVuaW9uIFlZU1RZUEUKKworeworICAgIGludCBpdmFsOworICAgIHN0ZDo6c3RyaW5n
KiBzdmFsOworICAgIHBwOjpUb2tlbiogdHZhbDsKKyAgICBwcDo6VG9rZW5WZWN0b3IqIHRsaXN0
OworfQorLyogTGluZSAxODcgb2YgeWFjYy5jLiAgKi8KKworCVlZU1RZUEU7CisjIGRlZmluZSB5
eXN0eXBlIFlZU1RZUEUgLyogb2Jzb2xlc2NlbnQ7IHdpbGwgYmUgd2l0aGRyYXduICovCisjIGRl
ZmluZSBZWVNUWVBFX0lTX0RFQ0xBUkVEIDEKKyMgZGVmaW5lIFlZU1RZUEVfSVNfVFJJVklBTCAx
CisjZW5kaWYKKworI2lmICEgZGVmaW5lZCBZWUxUWVBFICYmICEgZGVmaW5lZCBZWUxUWVBFX0lT
X0RFQ0xBUkVECit0eXBlZGVmIHN0cnVjdCBZWUxUWVBFCit7CisgIGludCBmaXJzdF9saW5lOwor
ICBpbnQgZmlyc3RfY29sdW1uOworICBpbnQgbGFzdF9saW5lOworICBpbnQgbGFzdF9jb2x1bW47
Cit9IFlZTFRZUEU7CisjIGRlZmluZSB5eWx0eXBlIFlZTFRZUEUgLyogb2Jzb2xlc2NlbnQ7IHdp
bGwgYmUgd2l0aGRyYXduICovCisjIGRlZmluZSBZWUxUWVBFX0lTX0RFQ0xBUkVEIDEKKyMgZGVm
aW5lIFlZTFRZUEVfSVNfVFJJVklBTCAxCisjZW5kaWYKKworCisvKiBDb3B5IHRoZSBzZWNvbmQg
cGFydCBvZiB1c2VyIGRlY2xhcmF0aW9ucy4gICovCisKKworZXh0ZXJuIGludCB5eWxleChZWVNU
WVBFKiBsdmFscCwgWVlMVFlQRSogbGxvY3AsIHZvaWQqIGxleGVyKTsKK3N0YXRpYyB2b2lkIHl5
ZXJyb3IoWVlMVFlQRSogbGxvY3AsCisgICAgICAgICAgICAgICAgICAgIHBwOjpDb250ZXh0KiBj
b250ZXh0LAorICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiByZWFzb24pOworCitzdGF0
aWMgdm9pZCBwdXNoQ29uZGl0aW9uYWxCbG9jayhwcDo6Q29udGV4dCogY29udGV4dCwgYm9vbCBj
b25kaXRpb24pOworc3RhdGljIHZvaWQgcG9wQ29uZGl0aW9uYWxCbG9jayhwcDo6Q29udGV4dCog
Y29udGV4dCk7CisKKworLyogTGluZSAyMTYgb2YgeWFjYy5jLiAgKi8KKworCisjaWZkZWYgc2hv
cnQKKyMgdW5kZWYgc2hvcnQKKyNlbmRpZgorCisjaWZkZWYgWVlUWVBFX1VJTlQ4Cit0eXBlZGVm
IFlZVFlQRV9VSU5UOCB5eXR5cGVfdWludDg7CisjZWxzZQordHlwZWRlZiB1bnNpZ25lZCBjaGFy
IHl5dHlwZV91aW50ODsKKyNlbmRpZgorCisjaWZkZWYgWVlUWVBFX0lOVDgKK3R5cGVkZWYgWVlU
WVBFX0lOVDggeXl0eXBlX2ludDg7CisjZWxpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVk
IF9fQzk5X19GVU5DX18gXAorICAgICB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQg
X01TQ19WRVIpCit0eXBlZGVmIHNpZ25lZCBjaGFyIHl5dHlwZV9pbnQ4OworI2Vsc2UKK3R5cGVk
ZWYgc2hvcnQgaW50IHl5dHlwZV9pbnQ4OworI2VuZGlmCisKKyNpZmRlZiBZWVRZUEVfVUlOVDE2
Cit0eXBlZGVmIFlZVFlQRV9VSU5UMTYgeXl0eXBlX3VpbnQxNjsKKyNlbHNlCit0eXBlZGVmIHVu
c2lnbmVkIHNob3J0IGludCB5eXR5cGVfdWludDE2OworI2VuZGlmCisKKyNpZmRlZiBZWVRZUEVf
SU5UMTYKK3R5cGVkZWYgWVlUWVBFX0lOVDE2IHl5dHlwZV9pbnQxNjsKKyNlbHNlCit0eXBlZGVm
IHNob3J0IGludCB5eXR5cGVfaW50MTY7CisjZW5kaWYKKworI2lmbmRlZiBZWVNJWkVfVAorIyBp
ZmRlZiBfX1NJWkVfVFlQRV9fCisjICBkZWZpbmUgWVlTSVpFX1QgX19TSVpFX1RZUEVfXworIyBl
bGlmIGRlZmluZWQgc2l6ZV90CisjICBkZWZpbmUgWVlTSVpFX1Qgc2l6ZV90CisjIGVsaWYgISBk
ZWZpbmVkIFlZU0laRV9UICYmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZV
TkNfXyBcCisgICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikK
KyMgIGluY2x1ZGUgPHN0ZGRlZi5oPiAvKiBJTkZSSU5HRVMgT04gVVNFUiBOQU1FIFNQQUNFICov
CisjICBkZWZpbmUgWVlTSVpFX1Qgc2l6ZV90CisjIGVsc2UKKyMgIGRlZmluZSBZWVNJWkVfVCB1
bnNpZ25lZCBpbnQKKyMgZW5kaWYKKyNlbmRpZgorCisjZGVmaW5lIFlZU0laRV9NQVhJTVVNICgo
WVlTSVpFX1QpIC0xKQorCisjaWZuZGVmIFlZXworIyBpZiBZWUVOQUJMRV9OTFMKKyMgIGlmIEVO
QUJMRV9OTFMKKyMgICBpbmNsdWRlIDxsaWJpbnRsLmg+IC8qIElORlJJTkdFUyBPTiBVU0VSIE5B
TUUgU1BBQ0UgKi8KKyMgICBkZWZpbmUgWVlfKG1zZ2lkKSBkZ2V0dGV4dCAoImJpc29uLXJ1bnRp
bWUiLCBtc2dpZCkKKyMgIGVuZGlmCisjIGVuZGlmCisjIGlmbmRlZiBZWV8KKyMgIGRlZmluZSBZ
WV8obXNnaWQpIG1zZ2lkCisjIGVuZGlmCisjZW5kaWYKKworLyogU3VwcHJlc3MgdW51c2VkLXZh
cmlhYmxlIHdhcm5pbmdzIGJ5ICJ1c2luZyIgRS4gICovCisjaWYgISBkZWZpbmVkIGxpbnQgfHwg
ZGVmaW5lZCBfX0dOVUNfXworIyBkZWZpbmUgWVlVU0UoZSkgKCh2b2lkKSAoZSkpCisjZWxzZQor
IyBkZWZpbmUgWVlVU0UoZSkgLyogZW1wdHkgKi8KKyNlbmRpZgorCisvKiBJZGVudGl0eSBmdW5j
dGlvbiwgdXNlZCB0byBzdXBwcmVzcyB3YXJuaW5ncyBhYm91dCBjb25zdGFudCBjb25kaXRpb25z
LiAgKi8KKyNpZm5kZWYgbGludAorIyBkZWZpbmUgWVlJRChuKSAobikKKyNlbHNlCisjaWYgKGRl
ZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKKyAgICAgfHwgZGVmaW5l
ZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQorc3RhdGljIGludAorWVlJRCAoaW50
IGkpCisjZWxzZQorc3RhdGljIGludAorWVlJRCAoaSkKKyAgICBpbnQgaTsKKyNlbmRpZgorewor
ICByZXR1cm4gaTsKK30KKyNlbmRpZgorCisjaWYgISBkZWZpbmVkIHl5b3ZlcmZsb3cgfHwgWVlF
UlJPUl9WRVJCT1NFCisKKy8qIFRoZSBwYXJzZXIgaW52b2tlcyBhbGxvY2Egb3IgbWFsbG9jOyBk
ZWZpbmUgdGhlIG5lY2Vzc2FyeSBzeW1ib2xzLiAgKi8KKworIyBpZmRlZiBZWVNUQUNLX1VTRV9B
TExPQ0EKKyMgIGlmIFlZU1RBQ0tfVVNFX0FMTE9DQQorIyAgIGlmZGVmIF9fR05VQ19fCisjICAg
IGRlZmluZSBZWVNUQUNLX0FMTE9DIF9fYnVpbHRpbl9hbGxvY2EKKyMgICBlbGlmIGRlZmluZWQg
X19CVUlMVElOX1ZBX0FSR19JTkNSCisjICAgIGluY2x1ZGUgPGFsbG9jYS5oPiAvKiBJTkZSSU5H
RVMgT04gVVNFUiBOQU1FIFNQQUNFICovCisjICAgZWxpZiBkZWZpbmVkIF9BSVgKKyMgICAgZGVm
aW5lIFlZU1RBQ0tfQUxMT0MgX19hbGxvY2EKKyMgICBlbGlmIGRlZmluZWQgX01TQ19WRVIKKyMg
ICAgaW5jbHVkZSA8bWFsbG9jLmg+IC8qIElORlJJTkdFUyBPTiBVU0VSIE5BTUUgU1BBQ0UgKi8K
KyMgICAgZGVmaW5lIGFsbG9jYSBfYWxsb2NhCisjICAgZWxzZQorIyAgICBkZWZpbmUgWVlTVEFD
S19BTExPQyBhbGxvY2EKKyMgICAgaWYgISBkZWZpbmVkIF9BTExPQ0FfSCAmJiAhIGRlZmluZWQg
X1NURExJQl9IICYmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBc
CisgICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKKyMgICAg
IGluY2x1ZGUgPHN0ZGxpYi5oPiAvKiBJTkZSSU5HRVMgT04gVVNFUiBOQU1FIFNQQUNFICovCisj
ICAgICBpZm5kZWYgX1NURExJQl9ICisjICAgICAgZGVmaW5lIF9TVERMSUJfSCAxCisjICAgICBl
bmRpZgorIyAgICBlbmRpZgorIyAgIGVuZGlmCisjICBlbmRpZgorIyBlbmRpZgorCisjIGlmZGVm
IFlZU1RBQ0tfQUxMT0MKKyAgIC8qIFBhY2lmeSBHQ0MncyBgZW1wdHkgaWYtYm9keScgd2Fybmlu
Zy4gICovCisjICBkZWZpbmUgWVlTVEFDS19GUkVFKFB0cikgZG8geyAvKiBlbXB0eSAqLzsgfSB3
aGlsZSAoWVlJRCAoMCkpCisjICBpZm5kZWYgWVlTVEFDS19BTExPQ19NQVhJTVVNCisgICAgLyog
VGhlIE9TIG1pZ2h0IGd1YXJhbnRlZSBvbmx5IG9uZSBndWFyZCBwYWdlIGF0IHRoZSBib3R0b20g
b2YgdGhlIHN0YWNrLAorICAgICAgIGFuZCBhIHBhZ2Ugc2l6ZSBjYW4gYmUgYXMgc21hbGwgYXMg
NDA5NiBieXRlcy4gIFNvIHdlIGNhbm5vdCBzYWZlbHkKKyAgICAgICBpbnZva2UgYWxsb2NhIChO
KSBpZiBOIGV4Y2VlZHMgNDA5Ni4gIFVzZSBhIHNsaWdodGx5IHNtYWxsZXIgbnVtYmVyCisgICAg
ICAgdG8gYWxsb3cgZm9yIGEgZmV3IGNvbXBpbGVyLWFsbG9jYXRlZCB0ZW1wb3Jhcnkgc3RhY2sg
c2xvdHMuICAqLworIyAgIGRlZmluZSBZWVNUQUNLX0FMTE9DX01BWElNVU0gNDAzMiAvKiByZWFz
b25hYmxlIGNpcmNhIDIwMDYgKi8KKyMgIGVuZGlmCisjIGVsc2UKKyMgIGRlZmluZSBZWVNUQUNL
X0FMTE9DIFlZTUFMTE9DCisjICBkZWZpbmUgWVlTVEFDS19GUkVFIFlZRlJFRQorIyAgaWZuZGVm
IFlZU1RBQ0tfQUxMT0NfTUFYSU1VTQorIyAgIGRlZmluZSBZWVNUQUNLX0FMTE9DX01BWElNVU0g
WVlTSVpFX01BWElNVU0KKyMgIGVuZGlmCisjICBpZiAoZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiAh
IGRlZmluZWQgX1NURExJQl9IIFwKKyAgICAgICAmJiAhICgoZGVmaW5lZCBZWU1BTExPQyB8fCBk
ZWZpbmVkIG1hbGxvYykgXAorCSAgICAgJiYgKGRlZmluZWQgWVlGUkVFIHx8IGRlZmluZWQgZnJl
ZSkpKQorIyAgIGluY2x1ZGUgPHN0ZGxpYi5oPiAvKiBJTkZSSU5HRVMgT04gVVNFUiBOQU1FIFNQ
QUNFICovCisjICAgaWZuZGVmIF9TVERMSUJfSAorIyAgICBkZWZpbmUgX1NURExJQl9IIDEKKyMg
ICBlbmRpZgorIyAgZW5kaWYKKyMgIGlmbmRlZiBZWU1BTExPQworIyAgIGRlZmluZSBZWU1BTExP
QyBtYWxsb2MKKyMgICBpZiAhIGRlZmluZWQgbWFsbG9jICYmICEgZGVmaW5lZCBfU1RETElCX0gg
JiYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKKyAgICAgfHwg
ZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSKQordm9pZCAqbWFsbG9jIChZ
WVNJWkVfVCk7IC8qIElORlJJTkdFUyBPTiBVU0VSIE5BTUUgU1BBQ0UgKi8KKyMgICBlbmRpZgor
IyAgZW5kaWYKKyMgIGlmbmRlZiBZWUZSRUUKKyMgICBkZWZpbmUgWVlGUkVFIGZyZWUKKyMgICBp
ZiAhIGRlZmluZWQgZnJlZSAmJiAhIGRlZmluZWQgX1NURExJQl9IICYmIChkZWZpbmVkIF9fU1RE
Q19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCisgICAgIHx8IGRlZmluZWQgX19jcGx1c3Bs
dXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKK3ZvaWQgZnJlZSAodm9pZCAqKTsgLyogSU5GUklOR0VT
IE9OIFVTRVIgTkFNRSBTUEFDRSAqLworIyAgIGVuZGlmCisjICBlbmRpZgorIyBlbmRpZgorI2Vu
ZGlmIC8qICEgZGVmaW5lZCB5eW92ZXJmbG93IHx8IFlZRVJST1JfVkVSQk9TRSAqLworCisKKyNp
ZiAoISBkZWZpbmVkIHl5b3ZlcmZsb3cgXAorICAgICAmJiAoISBkZWZpbmVkIF9fY3BsdXNwbHVz
IFwKKwkgfHwgKGRlZmluZWQgWVlMVFlQRV9JU19UUklWSUFMICYmIFlZTFRZUEVfSVNfVFJJVklB
TCBcCisJICAgICAmJiBkZWZpbmVkIFlZU1RZUEVfSVNfVFJJVklBTCAmJiBZWVNUWVBFX0lTX1RS
SVZJQUwpKSkKKworLyogQSB0eXBlIHRoYXQgaXMgcHJvcGVybHkgYWxpZ25lZCBmb3IgYW55IHN0
YWNrIG1lbWJlci4gICovCit1bmlvbiB5eWFsbG9jCit7CisgIHl5dHlwZV9pbnQxNiB5eXNzOwor
ICBZWVNUWVBFIHl5dnM7CisgICAgWVlMVFlQRSB5eWxzOworfTsKKworLyogVGhlIHNpemUgb2Yg
dGhlIG1heGltdW0gZ2FwIGJldHdlZW4gb25lIGFsaWduZWQgc3RhY2sgYW5kIHRoZSBuZXh0LiAg
Ki8KKyMgZGVmaW5lIFlZU1RBQ0tfR0FQX01BWElNVU0gKHNpemVvZiAodW5pb24geXlhbGxvYykg
LSAxKQorCisvKiBUaGUgc2l6ZSBvZiBhbiBhcnJheSBsYXJnZSB0byBlbm91Z2ggdG8gaG9sZCBh
bGwgc3RhY2tzLCBlYWNoIHdpdGgKKyAgIE4gZWxlbWVudHMuICAqLworIyBkZWZpbmUgWVlTVEFD
S19CWVRFUyhOKSBcCisgICAgICgoTikgKiAoc2l6ZW9mICh5eXR5cGVfaW50MTYpICsgc2l6ZW9m
IChZWVNUWVBFKSArIHNpemVvZiAoWVlMVFlQRSkpIFwKKyAgICAgICsgMiAqIFlZU1RBQ0tfR0FQ
X01BWElNVU0pCisKKy8qIENvcHkgQ09VTlQgb2JqZWN0cyBmcm9tIEZST00gdG8gVE8uICBUaGUg
c291cmNlIGFuZCBkZXN0aW5hdGlvbiBkbworICAgbm90IG92ZXJsYXAuICAqLworIyBpZm5kZWYg
WVlDT1BZCisjICBpZiBkZWZpbmVkIF9fR05VQ19fICYmIDEgPCBfX0dOVUNfXworIyAgIGRlZmlu
ZSBZWUNPUFkoVG8sIEZyb20sIENvdW50KSBcCisgICAgICBfX2J1aWx0aW5fbWVtY3B5IChUbywg
RnJvbSwgKENvdW50KSAqIHNpemVvZiAoKihGcm9tKSkpCisjICBlbHNlCisjICAgZGVmaW5lIFlZ
Q09QWShUbywgRnJvbSwgQ291bnQpCQlcCisgICAgICBkbwkJCQkJXAorCXsJCQkJCVwKKwkgIFlZ
U0laRV9UIHl5aTsJCQkJXAorCSAgZm9yICh5eWkgPSAwOyB5eWkgPCAoQ291bnQpOyB5eWkrKykJ
XAorCSAgICAoVG8pW3l5aV0gPSAoRnJvbSlbeXlpXTsJCVwKKwl9CQkJCQlcCisgICAgICB3aGls
ZSAoWVlJRCAoMCkpCisjICBlbmRpZgorIyBlbmRpZgorCisvKiBSZWxvY2F0ZSBTVEFDSyBmcm9t
IGl0cyBvbGQgbG9jYXRpb24gdG8gdGhlIG5ldyBvbmUuICBUaGUKKyAgIGxvY2FsIHZhcmlhYmxl
cyBZWVNJWkUgYW5kIFlZU1RBQ0tTSVpFIGdpdmUgdGhlIG9sZCBhbmQgbmV3IG51bWJlciBvZgor
ICAgZWxlbWVudHMgaW4gdGhlIHN0YWNrLCBhbmQgWVlQVFIgZ2l2ZXMgdGhlIG5ldyBsb2NhdGlv
biBvZiB0aGUKKyAgIHN0YWNrLiAgQWR2YW5jZSBZWVBUUiB0byBhIHByb3Blcmx5IGFsaWduZWQg
bG9jYXRpb24gZm9yIHRoZSBuZXh0CisgICBzdGFjay4gICovCisjIGRlZmluZSBZWVNUQUNLX1JF
TE9DQVRFKFN0YWNrKQkJCQkJXAorICAgIGRvCQkJCQkJCQkJXAorICAgICAgewkJCQkJCQkJCVwK
KwlZWVNJWkVfVCB5eW5ld2J5dGVzOwkJCQkJCVwKKwlZWUNPUFkgKCZ5eXB0ci0+U3RhY2ssIFN0
YWNrLCB5eXNpemUpOwkJCQlcCisJU3RhY2sgPSAmeXlwdHItPlN0YWNrOwkJCQkJCVwKKwl5eW5l
d2J5dGVzID0geXlzdGFja3NpemUgKiBzaXplb2YgKCpTdGFjaykgKyBZWVNUQUNLX0dBUF9NQVhJ
TVVNOyBcCisJeXlwdHIgKz0geXluZXdieXRlcyAvIHNpemVvZiAoKnl5cHRyKTsJCQkJXAorICAg
ICAgfQkJCQkJCQkJCVwKKyAgICB3aGlsZSAoWVlJRCAoMCkpCisKKyNlbmRpZgorCisvKiBZWUZJ
TkFMIC0tIFN0YXRlIG51bWJlciBvZiB0aGUgdGVybWluYXRpb24gc3RhdGUuICAqLworI2RlZmlu
ZSBZWUZJTkFMICAyCisvKiBZWUxBU1QgLS0gTGFzdCBpbmRleCBpbiBZWVRBQkxFLiAgKi8KKyNk
ZWZpbmUgWVlMQVNUICAgMjQ3CisKKy8qIFlZTlRPS0VOUyAtLSBOdW1iZXIgb2YgdGVybWluYWxz
LiAgKi8KKyNkZWZpbmUgWVlOVE9LRU5TICA0NworLyogWVlOTlRTIC0tIE51bWJlciBvZiBub250
ZXJtaW5hbHMuICAqLworI2RlZmluZSBZWU5OVFMgIDEyCisvKiBZWU5SVUxFUyAtLSBOdW1iZXIg
b2YgcnVsZXMuICAqLworI2RlZmluZSBZWU5SVUxFUyAgNjIKKy8qIFlZTlJVTEVTIC0tIE51bWJl
ciBvZiBzdGF0ZXMuICAqLworI2RlZmluZSBZWU5TVEFURVMgIDkxCisKKy8qIFlZVFJBTlNMQVRF
KFlZTEVYKSAtLSBCaXNvbiBzeW1ib2wgbnVtYmVyIGNvcnJlc3BvbmRpbmcgdG8gWVlMRVguICAq
LworI2RlZmluZSBZWVVOREVGVE9LICAyCisjZGVmaW5lIFlZTUFYVVRPSyAgIDI3NgorCisjZGVm
aW5lIFlZVFJBTlNMQVRFKFlZWCkJCQkJCQlcCisgICgodW5zaWduZWQgaW50KSAoWVlYKSA8PSBZ
WU1BWFVUT0sgPyB5eXRyYW5zbGF0ZVtZWVhdIDogWVlVTkRFRlRPSykKKworLyogWVlUUkFOU0xB
VEVbWVlMRVhdIC0tIEJpc29uIHN5bWJvbCBudW1iZXIgY29ycmVzcG9uZGluZyB0byBZWUxFWC4g
ICovCitzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQ4IHl5dHJhbnNsYXRlW10gPQoreworICAgICAg
IDAsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAg
MiwgICAgIDIsCisgICAgICAyMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAg
ICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAy
LCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAorICAgICAgIDIsICAg
ICAyLCAgICAgMiwgICAgNDMsICAgICAyLCAgICAgMiwgICAgIDIsICAgIDM3LCAgICA0MCwgICAg
IDIsCisgICAgICAyMywgICAgMjQsICAgIDM2LCAgICAzMywgICAgMjUsICAgIDM0LCAgICAzMiwg
ICAgMzUsICAgICAyLCAgICAgMiwKKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAg
MiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgNDQsICAgIDQ1LAorICAgICAgMjgsICAgIDQyLCAg
ICAyOSwgICAgNDYsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCisg
ICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIs
ICAgICAyLCAgICAgMiwKKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAg
IDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLAorICAgICAgIDIsICAgIDI2LCAgICAgMiwg
ICAgMjcsICAgIDM4LCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCisgICAgICAg
MiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAy
LCAgICAgMiwKKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAg
ICAyLCAgICAgMiwgICAgIDIsICAgICAyLAorICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgMzAs
ICAgIDM5LCAgICAzMSwgICAgNDEsICAgICAyLCAgICAgMiwgICAgIDIsCisgICAgICAgMiwgICAg
IDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAg
MiwKKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAg
ICAgMiwgICAgIDIsICAgICAyLAorICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAy
LCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCisgICAgICAgMiwgICAgIDIsICAg
ICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKKyAg
ICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwg
ICAgIDIsICAgICAyLAorICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAg
MiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCisgICAgICAgMiwgICAgIDIsICAgICAyLCAg
ICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKKyAgICAgICAy
LCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIs
ICAgICAyLAorICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAg
IDIsICAgICAyLCAgICAgMiwgICAgIDIsCisgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwg
ICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKKyAgICAgICAyLCAgICAg
MiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAy
LAorICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAg
ICAyLCAgICAgMiwgICAgIDIsCisgICAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIs
ICAgICAyLCAgICAgMSwgICAgIDIsICAgICAzLCAgICAgNCwKKyAgICAgICA1LCAgICAgNiwgICAg
IDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LAorICAg
ICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgsICAgIDE5LCAgICAyMCwgICAgMjEKK307CisKKyNp
ZiBZWURFQlVHCisvKiBZWVBSSFNbWVlOXSAtLSBJbmRleCBvZiB0aGUgZmlyc3QgUkhTIHN5bWJv
bCBvZiBydWxlIG51bWJlciBZWU4gaW4KKyAgIFlZUkhTLiAgKi8KK3N0YXRpYyBjb25zdCB5eXR5
cGVfdWludDggeXlwcmhzW10gPQoreworICAgICAgIDAsICAgICAwLCAgICAgMywgICAgIDQsICAg
ICA3LCAgICAgOSwgICAgMTEsICAgIDEzLCAgICAxNiwgICAgMTksCisgICAgICAyMywgICAgMzAs
ICAgIDM0LCAgICAzOCwgICAgNDIsICAgIDQ2LCAgICA1MCwgICAgNTMsICAgIDU2LCAgICA1OSwK
KyAgICAgIDYyLCAgICA2NSwgICAgNjgsICAgIDcxLCAgICA3MiwgICAgNzQsICAgIDc1LCAgICA3
NywgICAgODEsICAgIDgzLAorICAgICAgODYsICAgIDg4LCAgICA5MSwgICAgOTQsICAgIDk5LCAg
IDEwMSwgICAxMDMsICAgMTA1LCAgIDEwNywgICAxMDksCisgICAgIDExMSwgICAxMTMsICAgMTE1
LCAgIDExNywgICAxMTksICAgMTIxLCAgIDEyMywgICAxMjUsICAgMTI3LCAgIDEyOSwKKyAgICAg
MTMxLCAgIDEzMywgICAxMzUsICAgMTM3LCAgIDEzOSwgICAxNDEsICAgMTQzLCAgIDE0NSwgICAx
NDcsICAgMTQ5LAorICAgICAxNTEsICAgMTUzLCAgIDE1NQorfTsKKworLyogWVlSSFMgLS0gQSBg
LTEnLXNlcGFyYXRlZCBsaXN0IG9mIHRoZSBydWxlcycgUkhTLiAgKi8KK3N0YXRpYyBjb25zdCB5
eXR5cGVfaW50OCB5eXJoc1tdID0KK3sKKyAgICAgIDQ4LCAgICAgMCwgICAgLTEsICAgIC0xLCAg
ICA0OCwgICAgNDksICAgIC0xLCAgICA1MCwgICAgLTEsICAgIDUxLAorICAgICAgLTEsICAgIDIy
LCAgICAtMSwgICAgNTUsICAgIDIyLCAgICAtMSwgICAgIDMsICAgIDIyLCAgICAtMSwgICAgMTcs
CisgICAgICA1MiwgICAgMjIsICAgIC0xLCAgICAxOCwgICAgMjMsICAgIDUzLCAgICAyNCwgICAg
NTIsICAgIDIyLCAgICAtMSwKKyAgICAgICA0LCAgICAyMSwgICAgMjIsICAgIC0xLCAgICAgNSwg
ICAgNTQsICAgIDIyLCAgICAtMSwgICAgIDYsICAgIDIxLAorICAgICAgMjIsICAgIC0xLCAgICAg
NywgICAgMjEsICAgIDIyLCAgICAtMSwgICAgIDksICAgIDU0LCAgICAyMiwgICAgLTEsCisgICAg
ICAgOCwgICAgMjIsICAgIC0xLCAgICAxMCwgICAgMjIsICAgIC0xLCAgICAxMiwgICAgMjIsICAg
IC0xLCAgICAxMywKKyAgICAgIDIyLCAgICAtMSwgICAgMTQsICAgIDIyLCAgICAtMSwgICAgMTUs
ICAgIDIyLCAgICAtMSwgICAgMTYsICAgIDIyLAorICAgICAgLTEsICAgIC0xLCAgICA1NSwgICAg
LTEsICAgIC0xLCAgICAyMSwgICAgLTEsICAgIDUzLCAgICAyNSwgICAgMjEsCisgICAgICAtMSwg
ICAgNTYsICAgIC0xLCAgICA1NCwgICAgNTYsICAgIC0xLCAgICA1NywgICAgLTEsICAgIDU1LCAg
ICA1NywKKyAgICAgIC0xLCAgICAxMSwgICAgMjEsICAgIC0xLCAgICAxMSwgICAgMjMsICAgIDIx
LCAgICAyNCwgICAgLTEsICAgIDU3LAorICAgICAgLTEsICAgIDU4LCAgICAtMSwgICAgMTksICAg
IC0xLCAgICAyMCwgICAgLTEsICAgIDIxLCAgICAtMSwgICAgMjYsCisgICAgICAtMSwgICAgMjcs
ICAgIC0xLCAgICAyOCwgICAgLTEsICAgIDI5LCAgICAtMSwgICAgMjMsICAgIC0xLCAgICAyNCwK
KyAgICAgIC0xLCAgICAzMCwgICAgLTEsICAgIDMxLCAgICAtMSwgICAgMzIsICAgIC0xLCAgICAz
MywgICAgLTEsICAgIDM0LAorICAgICAgLTEsICAgIDM1LCAgICAtMSwgICAgMzYsICAgIC0xLCAg
ICAzNywgICAgLTEsICAgIDM4LCAgICAtMSwgICAgMzksCisgICAgICAtMSwgICAgNDAsICAgIC0x
LCAgICA0MSwgICAgLTEsICAgIDQyLCAgICAtMSwgICAgNDMsICAgIC0xLCAgICA0NCwKKyAgICAg
IC0xLCAgICA0NSwgICAgLTEsICAgIDI1LCAgICAtMSwgICAgNDYsICAgIC0xCit9OworCisvKiBZ
WVJMSU5FW1lZTl0gLS0gc291cmNlIGxpbmUgd2hlcmUgcnVsZSBudW1iZXIgWVlOIHdhcyBkZWZp
bmVkLiAgKi8KK3N0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXlybGluZVtdID0KK3sKKyAgICAg
ICAwLCAgICA2MywgICAgNjMsICAgIDY1LCAgICA2OSwgICAgNzAsICAgIDc0LCAgICA3NSwgICAg
ODQsICAgIDg1LAorICAgICAgODgsICAgIDkxLCAgICA5NCwgICAgOTcsICAgMTAwLCAgIDEwMywg
ICAxMDUsICAgMTA3LCAgIDExMCwgICAxMTEsCisgICAgIDExMiwgICAxMTMsICAgMTE0LCAgIDEx
OCwgICAxMTksICAgMTIyLCAgIDEyMywgICAxMjcsICAgMTMzLCAgIDEzNywKKyAgICAgMTQ0LCAg
IDE0OCwgICAxNTUsICAgMTU3LCAgIDE1OSwgICAxNjMsICAgMTY2LCAgIDE2OSwgICAxNzIsICAg
MTc4LAorICAgICAxNzksICAgMTgwLCAgIDE4MSwgICAxODIsICAgMTgzLCAgIDE4NCwgICAxODUs
ICAgMTg2LCAgIDE4NywgICAxODgsCisgICAgIDE4OSwgICAxOTAsICAgMTkxLCAgIDE5MiwgICAx
OTMsICAgMTk0LCAgIDE5NSwgICAxOTYsICAgMTk3LCAgIDE5OCwKKyAgICAgMTk5LCAgIDIwMCwg
ICAyMDEKK307CisjZW5kaWYKKworI2lmIFlZREVCVUcgfHwgWVlFUlJPUl9WRVJCT1NFIHx8IFlZ
VE9LRU5fVEFCTEUKKy8qIFlZVE5BTUVbU1lNQk9MLU5VTV0gLS0gU3RyaW5nIG5hbWUgb2YgdGhl
IHN5bWJvbCBTWU1CT0wtTlVNLgorICAgRmlyc3QsIHRoZSB0ZXJtaW5hbHMsIHRoZW4sIHN0YXJ0
aW5nIGF0IFlZTlRPS0VOUywgbm9udGVybWluYWxzLiAgKi8KK3N0YXRpYyBjb25zdCBjaGFyICpj
b25zdCB5eXRuYW1lW10gPQoreworICAiJGVuZCIsICJlcnJvciIsICIkdW5kZWZpbmVkIiwgIkhB
U0giLCAiSEFTSF9VTkRFRiIsICJIQVNIX0lGIiwKKyAgIkhBU0hfSUZERUYiLCAiSEFTSF9JRk5E
RUYiLCAiSEFTSF9FTFNFIiwgIkhBU0hfRUxJRiIsICJIQVNIX0VORElGIiwKKyAgIkRFRklORUQi
LCAiSEFTSF9FUlJPUiIsICJIQVNIX1BSQUdNQSIsICJIQVNIX0VYVEVOU0lPTiIsICJIQVNIX1ZF
UlNJT04iLAorICAiSEFTSF9MSU5FIiwgIkhBU0hfREVGSU5FX09CSiIsICJIQVNIX0RFRklORV9G
VU5DIiwgIklOVF9DT05TVEFOVCIsCisgICJGTE9BVF9DT05TVEFOVCIsICJJREVOVElGSUVSIiwg
IidcXG4nIiwgIicoJyIsICInKSciLCAiJywnIiwgIidbJyIsCisgICInXSciLCAiJzwnIiwgIic+
JyIsICIneyciLCAiJ30nIiwgIicuJyIsICInKyciLCAiJy0nIiwgIicvJyIsICInKiciLAorICAi
JyUnIiwgIideJyIsICInfCciLCAiJyYnIiwgIid+JyIsICInPSciLCAiJyEnIiwgIic6JyIsICIn
OyciLCAiJz8nIiwKKyAgIiRhY2NlcHQiLCAiaW5wdXQiLCAibGluZSIsICJ0ZXh0X2xpbmUiLCAi
Y29udHJvbF9saW5lIiwKKyAgInJlcGxhY2VtZW50X2xpc3QiLCAicGFyYW1ldGVyX2xpc3QiLCAi
Y29uZGl0aW9uYWxfbGlzdCIsICJ0b2tlbl9saXN0IiwKKyAgImNvbmRpdGlvbmFsX3Rva2VuIiwg
InRva2VuIiwgIm9wZXJhdG9yIiwgMAorfTsKKyNlbmRpZgorCisjIGlmZGVmIFlZUFJJTlQKKy8q
IFlZVE9LTlVNW1lZTEVYLU5VTV0gLS0gSW50ZXJuYWwgdG9rZW4gbnVtYmVyIGNvcnJlc3BvbmRp
bmcgdG8KKyAgIHRva2VuIFlZTEVYLU5VTS4gICovCitzdGF0aWMgY29uc3QgeXl0eXBlX3VpbnQx
NiB5eXRva251bVtdID0KK3sKKyAgICAgICAwLCAgIDI1NiwgICAyNTcsICAgMjU4LCAgIDI1OSwg
ICAyNjAsICAgMjYxLCAgIDI2MiwgICAyNjMsICAgMjY0LAorICAgICAyNjUsICAgMjY2LCAgIDI2
NywgICAyNjgsICAgMjY5LCAgIDI3MCwgICAyNzEsICAgMjcyLCAgIDI3MywgICAyNzQsCisgICAg
IDI3NSwgICAyNzYsICAgIDEwLCAgICA0MCwgICAgNDEsICAgIDQ0LCAgICA5MSwgICAgOTMsICAg
IDYwLCAgICA2MiwKKyAgICAgMTIzLCAgIDEyNSwgICAgNDYsICAgIDQzLCAgICA0NSwgICAgNDcs
ICAgIDQyLCAgICAzNywgICAgOTQsICAgMTI0LAorICAgICAgMzgsICAgMTI2LCAgICA2MSwgICAg
MzMsICAgIDU4LCAgICA1OSwgICAgNjMKK307CisjIGVuZGlmCisKKy8qIFlZUjFbWVlOXSAtLSBT
eW1ib2wgbnVtYmVyIG9mIHN5bWJvbCB0aGF0IHJ1bGUgWVlOIGRlcml2ZXMuICAqLworc3RhdGlj
IGNvbnN0IHl5dHlwZV91aW50OCB5eXIxW10gPQoreworICAgICAgIDAsICAgIDQ3LCAgICA0OCwg
ICAgNDgsICAgIDQ5LCAgICA0OSwgICAgNTAsICAgIDUwLCAgICA1MSwgICAgNTEsCisgICAgICA1
MSwgICAgNTEsICAgIDUxLCAgICA1MSwgICAgNTEsICAgIDUxLCAgICA1MSwgICAgNTEsICAgIDUx
LCAgICA1MSwKKyAgICAgIDUxLCAgICA1MSwgICAgNTEsICAgIDUyLCAgICA1MiwgICAgNTMsICAg
IDUzLCAgICA1MywgICAgNTQsICAgIDU0LAorICAgICAgNTUsICAgIDU1LCAgICA1NiwgICAgNTYs
ICAgIDU2LCAgICA1NywgICAgNTcsICAgIDU3LCAgICA1NywgICAgNTgsCisgICAgICA1OCwgICAg
NTgsICAgIDU4LCAgICA1OCwgICAgNTgsICAgIDU4LCAgICA1OCwgICAgNTgsICAgIDU4LCAgICA1
OCwKKyAgICAgIDU4LCAgICA1OCwgICAgNTgsICAgIDU4LCAgICA1OCwgICAgNTgsICAgIDU4LCAg
ICA1OCwgICAgNTgsICAgIDU4LAorICAgICAgNTgsICAgIDU4LCAgICA1OAorfTsKKworLyogWVlS
MltZWU5dIC0tIE51bWJlciBvZiBzeW1ib2xzIGNvbXBvc2luZyByaWdodCBoYW5kIHNpZGUgb2Yg
cnVsZSBZWU4uICAqLworc3RhdGljIGNvbnN0IHl5dHlwZV91aW50OCB5eXIyW10gPQoreworICAg
ICAgIDAsICAgICAyLCAgICAgMCwgICAgIDIsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAyLCAg
ICAgMiwgICAgIDMsCisgICAgICAgNiwgICAgIDMsICAgICAzLCAgICAgMywgICAgIDMsICAgICAz
LCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwKKyAgICAgICAyLCAgICAgMiwgICAgIDIsICAg
ICAwLCAgICAgMSwgICAgIDAsICAgICAxLCAgICAgMywgICAgIDEsICAgICAyLAorICAgICAgIDEs
ICAgICAyLCAgICAgMiwgICAgIDQsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwg
ICAgIDEsCisgICAgICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAgICAg
MSwgICAgIDEsICAgICAxLCAgICAgMSwKKyAgICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLCAg
ICAgMSwgICAgIDEsICAgICAxLCAgICAgMSwgICAgIDEsICAgICAxLAorICAgICAgIDEsICAgICAx
LCAgICAgMQorfTsKKworLyogWVlERUZBQ1RbU1RBVEUtTkFNRV0gLS0gRGVmYXVsdCBydWxlIHRv
IHJlZHVjZSB3aXRoIGluIHN0YXRlCisgICBTVEFURS1OVU0gd2hlbiBZWVRBQkxFIGRvZXNuJ3Qg
c3BlY2lmeSBzb21ldGhpbmcgZWxzZSB0byBkby4gIFplcm8KKyAgIG1lYW5zIHRoZSBkZWZhdWx0
IGlzIGFuIGVycm9yLiAgKi8KK3N0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXlkZWZhY3RbXSA9
Cit7CisgICAgICAgMiwgICAgIDAsICAgICAxLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwg
ICAgIDAsICAgICAwLCAgICAgMCwKKyAgICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAg
MCwgICAgIDAsICAgIDIzLCAgICAgMCwgICAgMzYsICAgIDM3LAorICAgICAgMzgsICAgICA2LCAg
ICA0MywgICAgNDQsICAgIDYxLCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAgNDUsCisg
ICAgICA0NiwgICAgNDcsICAgIDQ4LCAgICA0OSwgICAgNTAsICAgIDUxLCAgICA1MiwgICAgNTMs
ICAgIDU0LCAgICA1NSwKKyAgICAgIDU2LCAgICA1NywgICAgNTgsICAgIDU5LCAgICA2MCwgICAg
NjIsICAgICAzLCAgICAgNCwgICAgIDUsICAgICAwLAorICAgICAgMzAsICAgIDM1LCAgICAgOCwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgMjgsICAgIDM0LCAgICAgMCwgICAgIDAsCisgICAgICAx
NiwgICAgIDAsICAgIDE3LCAgICAxOCwgICAgMTksICAgIDIwLCAgICAyMSwgICAgMjIsICAgICAw
LCAgICAyNCwKKyAgICAgIDI1LCAgICAgNywgICAgMzEsICAgIDExLCAgICAzMiwgICAgIDAsICAg
IDEyLCAgICAyOSwgICAgMTMsICAgIDE0LAorICAgICAgMTUsICAgICA5LCAgICAyNiwgICAgIDAs
ICAgICAwLCAgICAyMywgICAgIDAsICAgIDMzLCAgICAgMCwgICAgMjcsCisgICAgICAxMAorfTsK
KworLyogWVlERUZHT1RPW05URVJNLU5VTV0uICAqLworc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQ4
IHl5ZGVmZ290b1tdID0KK3sKKyAgICAgIC0xLCAgICAgMSwgICAgNDYsICAgIDQ3LCAgICA0OCwg
ICAgNjgsICAgIDgzLCAgICA1NSwgICAgNjksICAgIDU2LAorICAgICAgNTcsICAgIDUxCit9Owor
CisvKiBZWVBBQ1RbU1RBVEUtTlVNXSAtLSBJbmRleCBpbiBZWVRBQkxFIG9mIHRoZSBwb3J0aW9u
IGRlc2NyaWJpbmcKKyAgIFNUQVRFLU5VTS4gICovCisjZGVmaW5lIFlZUEFDVF9OSU5GIC01NQor
c3RhdGljIGNvbnN0IHl5dHlwZV9pbnQxNiB5eXBhY3RbXSA9Cit7CisgICAgIC01NSwgICAgNzMs
ICAgLTU1LCAgIC0xNywgICAtMTgsICAgMTQ1LCAgIC0xMCwgICAgLTksICAgLTE2LCAgIDE0NSwK
KyAgICAgIC04LCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjcsICAgMjAxLCAgICAy
OCwgICAtNTUsICAgLTU1LAorICAgICAtNTUsICAgLTU1LCAgIC01NSwgICAtNTUsICAgLTU1LCAg
IC01NSwgICAtNTUsICAgLTU1LCAgIC01NSwgICAtNTUsCisgICAgIC01NSwgICAtNTUsICAgLTU1
LCAgIC01NSwgICAtNTUsICAgLTU1LCAgIC01NSwgICAtNTUsICAgLTU1LCAgIC01NSwKKyAgICAg
LTU1LCAgIC01NSwgICAtNTUsICAgLTU1LCAgIC01NSwgICAtNTUsICAgLTU1LCAgIC01NSwgICAt
NTUsICAgMTczLAorICAgICAtNTUsICAgLTU1LCAgIC01NSwgICAgMzAsICAgLTE5LCAgICAtMywg
ICAtNTUsICAgLTU1LCAgICAzMSwgICAgMzIsCisgICAgIC01NSwgICAxMDksICAgLTU1LCAgIC01
NSwgICAtNTUsICAgLTU1LCAgIC01NSwgICAtNTUsICAgIDMzLCAgIDIwMSwKKyAgICAgIDI5LCAg
IC01NSwgICAtNTUsICAgLTU1LCAgIC01NSwgICAgMzUsICAgLTU1LCAgIC01NSwgICAtNTUsICAg
LTU1LAorICAgICAtNTUsICAgLTU1LCAgIC01NSwgICAtMTUsICAgLTExLCAgIDIwMSwgICAgMzYs
ICAgLTU1LCAgICAzNywgICAtNTUsCisgICAgIC01NQorfTsKKworLyogWVlQR09UT1tOVEVSTS1O
VU1dLiAgKi8KK3N0YXRpYyBjb25zdCB5eXR5cGVfaW50OCB5eXBnb3RvW10gPQoreworICAgICAt
NTUsICAgLTU1LCAgIC01NSwgICAtNTUsICAgLTU1LCAgIC0yNywgICAtNTUsICAgIDUxLCAgICA2
MCwgICAtNTQsCisgICAgICAtMSwgICAtNTUKK307CisKKy8qIFlZVEFCTEVbWVlQQUNUW1NUQVRF
LU5VTV1dLiAgV2hhdCB0byBkbyBpbiBzdGF0ZSBTVEFURS1OVU0uICBJZgorICAgcG9zaXRpdmUs
IHNoaWZ0IHRoYXQgdG9rZW4uICBJZiBuZWdhdGl2ZSwgcmVkdWNlIHRoZSBydWxlIHdoaWNoCisg
ICBudW1iZXIgaXMgdGhlIG9wcG9zaXRlLiAgSWYgemVybywgZG8gd2hhdCBZWURFRkFDVCBzYXlz
LgorICAgSWYgWVlUQUJMRV9OSU5GLCBzeW50YXggZXJyb3IuICAqLworI2RlZmluZSBZWVRBQkxF
X05JTkYgLTEKK3N0YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXl0YWJsZVtdID0KK3sKKyAgICAg
IDUwLCAgICA3NywgICAgNzQsICAgIDUzLCAgICA3NSwgICAgNTIsICAgIDYwLCAgICA3NywgICAg
NTQsICAgIDg1LAorICAgICAgODYsICAgIDU4LCAgICA1OSwgICAgODcsICAgIDYyLCAgICA1MCwg
ICAgMTgsICAgIDE5LCAgICAyMCwgICAgNzYsCisgICAgICAyMiwgICAgMjMsICAgIDI0LCAgICAy
NSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwKKyAgICAgIDMyLCAg
ICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAg
IDQxLAorICAgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDYzLCAgICA2NCwgICAgNjUs
ICAgIDY2LCAgICA3MiwgICAgNjcsCisgICAgICA4MiwgICAgNzAsICAgIDczLCAgICA3OCwgICAg
NzksICAgIDgxLCAgICA4NCwgICAgODksICAgIDg4LCAgICA5MCwKKyAgICAgIDYxLCAgICA0OSwg
ICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgNzIsICAgICAwLAor
ICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDIsICAgICAwLCAgICAgMCwgICAgIDMsICAgICA0
LCAgICAgNSwgICAgIDYsCisgICAgICAgNywgICAgIDgsICAgICA5LCAgICAxMCwgICAgNTAsICAg
IDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwKKyAgICAgIDE2LCAgICAxNywgICAgMTgs
ICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LAorICAgICAg
MjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIDMzLCAgICAz
NCwgICAgMzUsCisgICAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAg
ICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwKKyAgICAgIDU0LCAgICAgMCwgICAgIDAsICAgICAw
LCAgICAgMCwgICAgIDAsICAgICAwLCAgICAgMCwgICAgMTgsICAgIDE5LAorICAgICAgMjAsICAg
IDgwLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAg
MjksCisgICAgICAzMCwgICAgMzEsICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwg
ICAgMzcsICAgIDM4LCAgICAzOSwKKyAgICAgIDQwLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0
NCwgICAgNDUsICAgIDU0LCAgICAgMCwgICAgIDAsICAgICAwLAorICAgICAgIDAsICAgICAwLCAg
ICAgMCwgICAgIDAsICAgIDE4LCAgICAxOSwgICAgMjAsICAgICAwLCAgICAyMiwgICAgMjMsCisg
ICAgICAyNCwgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEs
ICAgIDMyLCAgICAzMywKKyAgICAgIDM0LCAgICAzNSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAg
MzksICAgIDQwLCAgICA0MSwgICAgNDIsICAgIDQzLAorICAgICAgNDQsICAgIDQ1LCAgICAxOCwg
ICAgMTksICAgIDIwLCAgICA3MSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsCisgICAgICAy
NiwgICAgMjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0
LCAgICAzNSwKKyAgICAgIDM2LCAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAg
IDQyLCAgICA0MywgICAgNDQsICAgIDQ1LAorICAgICAgMTgsICAgIDE5LCAgICAyMCwgICAgIDAs
ICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsCisgICAgICAyOCwgICAg
MjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAz
NywKKyAgICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAg
ICA0NQorfTsKKworc3RhdGljIGNvbnN0IHl5dHlwZV9pbnQ4IHl5Y2hlY2tbXSA9Cit7CisgICAg
ICAgMSwgICAgNTUsICAgIDIxLCAgICAyMSwgICAgMjMsICAgIDIyLCAgICAyMiwgICAgNjEsICAg
IDExLCAgICAyNCwKKyAgICAgIDI1LCAgICAyMSwgICAgMjEsICAgIDI0LCAgICAyMiwgICAgMTYs
ICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLAorICAgICAgMjMsICAgIDI0LCAgICAyNSwgICAg
MjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsCisgICAgICAzMywg
ICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAg
ICA0MiwKKyAgICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICAyMiwgICAgMjIsICAgIDIy
LCAgICAyMiwgICAgNDksICAgIDIyLAorICAgICAgMjEsICAgIDIzLCAgICAyMiwgICAgMjIsICAg
IDIyLCAgICAyMiwgICAgMjEsICAgIDIxLCAgICA4NSwgICAgMjIsCisgICAgICAgOSwgICAgIDEs
ICAgIC0xLCAgICAtMSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDY5LCAgICAtMSwK
KyAgICAgIC0xLCAgICAtMSwgICAgLTEsICAgICAwLCAgICAtMSwgICAgLTEsICAgICAzLCAgICAg
NCwgICAgIDUsICAgICA2LAorICAgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTAsICAgIDg1LCAg
ICAxMiwgICAgMTMsICAgIDE0LCAgICAxNSwgICAgMTYsCisgICAgICAxNywgICAgMTgsICAgIDE5
LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwKKyAgICAg
IDI3LCAgICAyOCwgICAgMjksICAgIDMwLCAgICAzMSwgICAgMzIsICAgIDMzLCAgICAzNCwgICAg
MzUsICAgIDM2LAorICAgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0Miwg
ICAgNDMsICAgIDQ0LCAgICA0NSwgICAgNDYsCisgICAgICAxMSwgICAgLTEsICAgIC0xLCAgICAt
MSwgICAgLTEsICAgIC0xLCAgICAtMSwgICAgLTEsICAgIDE5LCAgICAyMCwKKyAgICAgIDIxLCAg
ICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAgMjYsICAgIDI3LCAgICAyOCwgICAgMjksICAg
IDMwLAorICAgICAgMzEsICAgIDMyLCAgICAzMywgICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcs
ICAgIDM4LCAgICAzOSwgICAgNDAsCisgICAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAg
NDUsICAgIDQ2LCAgICAxMSwgICAgLTEsICAgIC0xLCAgICAtMSwKKyAgICAgIC0xLCAgICAtMSwg
ICAgLTEsICAgIC0xLCAgICAxOSwgICAgMjAsICAgIDIxLCAgICAtMSwgICAgMjMsICAgIDI0LAor
ICAgICAgMjUsICAgIDI2LCAgICAyNywgICAgMjgsICAgIDI5LCAgICAzMCwgICAgMzEsICAgIDMy
LCAgICAzMywgICAgMzQsCisgICAgICAzNSwgICAgMzYsICAgIDM3LCAgICAzOCwgICAgMzksICAg
IDQwLCAgICA0MSwgICAgNDIsICAgIDQzLCAgICA0NCwKKyAgICAgIDQ1LCAgICA0NiwgICAgMTks
ICAgIDIwLCAgICAyMSwgICAgMjIsICAgIDIzLCAgICAyNCwgICAgMjUsICAgIDI2LAorICAgICAg
MjcsICAgIDI4LCAgICAyOSwgICAgMzAsICAgIDMxLCAgICAzMiwgICAgMzMsICAgIDM0LCAgICAz
NSwgICAgMzYsCisgICAgICAzNywgICAgMzgsICAgIDM5LCAgICA0MCwgICAgNDEsICAgIDQyLCAg
ICA0MywgICAgNDQsICAgIDQ1LCAgICA0NiwKKyAgICAgIDE5LCAgICAyMCwgICAgMjEsICAgIC0x
LCAgICAyMywgICAgMjQsICAgIDI1LCAgICAyNiwgICAgMjcsICAgIDI4LAorICAgICAgMjksICAg
IDMwLCAgICAzMSwgICAgMzIsICAgIDMzLCAgICAzNCwgICAgMzUsICAgIDM2LCAgICAzNywgICAg
MzgsCisgICAgICAzOSwgICAgNDAsICAgIDQxLCAgICA0MiwgICAgNDMsICAgIDQ0LCAgICA0NSwg
ICAgNDYKK307CisKKy8qIFlZU1RPU1tTVEFURS1OVU1dIC0tIFRoZSAoaW50ZXJuYWwgbnVtYmVy
IG9mIHRoZSkgYWNjZXNzaW5nCisgICBzeW1ib2wgb2Ygc3RhdGUgU1RBVEUtTlVNLiAgKi8KK3N0
YXRpYyBjb25zdCB5eXR5cGVfdWludDggeXlzdG9zW10gPQoreworICAgICAgIDAsICAgIDQ4LCAg
ICAgMCwgICAgIDMsICAgICA0LCAgICAgNSwgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksCisg
ICAgICAxMCwgICAgMTIsICAgIDEzLCAgICAxNCwgICAgMTUsICAgIDE2LCAgICAxNywgICAgMTgs
ICAgIDE5LCAgICAyMCwKKyAgICAgIDIxLCAgICAyMiwgICAgMjMsICAgIDI0LCAgICAyNSwgICAg
MjYsICAgIDI3LCAgICAyOCwgICAgMjksICAgIDMwLAorICAgICAgMzEsICAgIDMyLCAgICAzMywg
ICAgMzQsICAgIDM1LCAgICAzNiwgICAgMzcsICAgIDM4LCAgICAzOSwgICAgNDAsCisgICAgICA0
MSwgICAgNDIsICAgIDQzLCAgICA0NCwgICAgNDUsICAgIDQ2LCAgICA0OSwgICAgNTAsICAgIDUx
LCAgICA1NSwKKyAgICAgIDU3LCAgICA1OCwgICAgMjIsICAgIDIxLCAgICAxMSwgICAgNTQsICAg
IDU2LCAgICA1NywgICAgMjEsICAgIDIxLAorICAgICAgMjIsICAgIDU0LCAgICAyMiwgICAgMjIs
ICAgIDIyLCAgICAyMiwgICAgMjIsICAgIDIyLCAgICA1MiwgICAgNTUsCisgICAgICAyMywgICAg
MjIsICAgIDU3LCAgICAyMiwgICAgMjEsICAgIDIzLCAgICAyMiwgICAgNTYsICAgIDIyLCAgICAy
MiwKKyAgICAgIDIyLCAgICAyMiwgICAgMjEsICAgIDUzLCAgICAyMSwgICAgMjQsICAgIDI1LCAg
ICAyNCwgICAgNTIsICAgIDIxLAorICAgICAgMjIKK307CisKKyNkZWZpbmUgeXllcnJvawkJKHl5
ZXJyc3RhdHVzID0gMCkKKyNkZWZpbmUgeXljbGVhcmluCSh5eWNoYXIgPSBZWUVNUFRZKQorI2Rl
ZmluZSBZWUVNUFRZCQkoLTIpCisjZGVmaW5lIFlZRU9GCQkwCisKKyNkZWZpbmUgWVlBQ0NFUFQJ
Z290byB5eWFjY2VwdGxhYgorI2RlZmluZSBZWUFCT1JUCQlnb3RvIHl5YWJvcnRsYWIKKyNkZWZp
bmUgWVlFUlJPUgkJZ290byB5eWVycm9ybGFiCisKKworLyogTGlrZSBZWUVSUk9SIGV4Y2VwdCBk
byBjYWxsIHl5ZXJyb3IuICBUaGlzIHJlbWFpbnMgaGVyZSB0ZW1wb3JhcmlseQorICAgdG8gZWFz
ZSB0aGUgdHJhbnNpdGlvbiB0byB0aGUgbmV3IG1lYW5pbmcgb2YgWVlFUlJPUiwgZm9yIEdDQy4K
KyAgIE9uY2UgR0NDIHZlcnNpb24gMiBoYXMgc3VwcGxhbnRlZCB2ZXJzaW9uIDEsIHRoaXMgY2Fu
IGdvLiAgKi8KKworI2RlZmluZSBZWUZBSUwJCWdvdG8geXllcnJsYWIKKworI2RlZmluZSBZWVJF
Q09WRVJJTkcoKSAgKCEheXllcnJzdGF0dXMpCisKKyNkZWZpbmUgWVlCQUNLVVAoVG9rZW4sIFZh
bHVlKQkJCQkJXAorZG8JCQkJCQkJCVwKKyAgaWYgKHl5Y2hhciA9PSBZWUVNUFRZICYmIHl5bGVu
ID09IDEpCQkJCVwKKyAgICB7CQkJCQkJCQlcCisgICAgICB5eWNoYXIgPSAoVG9rZW4pOwkJCQkJ
CVwKKyAgICAgIHl5bHZhbCA9IChWYWx1ZSk7CQkJCQkJXAorICAgICAgeXl0b2tlbiA9IFlZVFJB
TlNMQVRFICh5eWNoYXIpOwkJCQlcCisgICAgICBZWVBPUFNUQUNLICgxKTsJCQkJCQlcCisgICAg
ICBnb3RvIHl5YmFja3VwOwkJCQkJCVwKKyAgICB9CQkJCQkJCQlcCisgIGVsc2UJCQkJCQkJCVwK
KyAgICB7CQkJCQkJCQlcCisgICAgICB5eWVycm9yICgmeXlsbG9jLCBjb250ZXh0LCBZWV8oInN5
bnRheCBlcnJvcjogY2Fubm90IGJhY2sgdXAiKSk7IFwKKyAgICAgIFlZRVJST1I7CQkJCQkJCVwK
KyAgICB9CQkJCQkJCQlcCit3aGlsZSAoWVlJRCAoMCkpCisKKworI2RlZmluZSBZWVRFUlJPUgkx
CisjZGVmaW5lIFlZRVJSQ09ERQkyNTYKKworCisvKiBZWUxMT0NfREVGQVVMVCAtLSBTZXQgQ1VS
UkVOVCB0byBzcGFuIGZyb20gUkhTWzFdIHRvIFJIU1tOXS4KKyAgIElmIE4gaXMgMCwgdGhlbiBz
ZXQgQ1VSUkVOVCB0byB0aGUgZW1wdHkgbG9jYXRpb24gd2hpY2ggZW5kcworICAgdGhlIHByZXZp
b3VzIHN5bWJvbDogUkhTWzBdIChhbHdheXMgZGVmaW5lZCkuICAqLworCisjZGVmaW5lIFlZUkhT
TE9DKFJocywgSykgKChSaHMpW0tdKQorI2lmbmRlZiBZWUxMT0NfREVGQVVMVAorIyBkZWZpbmUg
WVlMTE9DX0RFRkFVTFQoQ3VycmVudCwgUmhzLCBOKQkJCQlcCisgICAgZG8JCQkJCQkJCQlcCisg
ICAgICBpZiAoWVlJRCAoTikpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKwl7CQkJCQkJCQlcCisJICAoQ3VycmVudCkuZmlyc3RfbGluZSAgID0g
WVlSSFNMT0MgKFJocywgMSkuZmlyc3RfbGluZTsJXAorCSAgKEN1cnJlbnQpLmZpcnN0X2NvbHVt
biA9IFlZUkhTTE9DIChSaHMsIDEpLmZpcnN0X2NvbHVtbjsJXAorCSAgKEN1cnJlbnQpLmxhc3Rf
bGluZSAgICA9IFlZUkhTTE9DIChSaHMsIE4pLmxhc3RfbGluZTsJCVwKKwkgIChDdXJyZW50KS5s
YXN0X2NvbHVtbiAgPSBZWVJIU0xPQyAoUmhzLCBOKS5sYXN0X2NvbHVtbjsJXAorCX0JCQkJCQkJ
CVwKKyAgICAgIGVsc2UJCQkJCQkJCVwKKwl7CQkJCQkJCQlcCisJICAoQ3VycmVudCkuZmlyc3Rf
bGluZSAgID0gKEN1cnJlbnQpLmxhc3RfbGluZSAgID0JCVwKKwkgICAgWVlSSFNMT0MgKFJocywg
MCkubGFzdF9saW5lOwkJCQlcCisJICAoQ3VycmVudCkuZmlyc3RfY29sdW1uID0gKEN1cnJlbnQp
Lmxhc3RfY29sdW1uID0JCVwKKwkgICAgWVlSSFNMT0MgKFJocywgMCkubGFzdF9jb2x1bW47CQkJ
CVwKKwl9CQkJCQkJCQlcCisgICAgd2hpbGUgKFlZSUQgKDApKQorI2VuZGlmCisKKworLyogWVlf
TE9DQVRJT05fUFJJTlQgLS0gUHJpbnQgdGhlIGxvY2F0aW9uIG9uIHRoZSBzdHJlYW0uCisgICBU
aGlzIG1hY3JvIHdhcyBub3QgbWFuZGF0ZWQgb3JpZ2luYWxseTogZGVmaW5lIG9ubHkgaWYgd2Ug
a25vdworICAgd2Ugd29uJ3QgYnJlYWsgdXNlciBjb2RlOiB3aGVuIHRoZXNlIGFyZSB0aGUgbG9j
YXRpb25zIHdlIGtub3cuICAqLworCisjaWZuZGVmIFlZX0xPQ0FUSU9OX1BSSU5UCisjIGlmIFlZ
TFRZUEVfSVNfVFJJVklBTAorIyAgZGVmaW5lIFlZX0xPQ0FUSU9OX1BSSU5UKEZpbGUsIExvYykJ
CQlcCisgICAgIGZwcmludGYgKEZpbGUsICIlZC4lZC0lZC4lZCIsCQkJXAorCSAgICAgIChMb2Mp
LmZpcnN0X2xpbmUsIChMb2MpLmZpcnN0X2NvbHVtbiwJXAorCSAgICAgIChMb2MpLmxhc3RfbGlu
ZSwgIChMb2MpLmxhc3RfY29sdW1uKQorIyBlbHNlCisjICBkZWZpbmUgWVlfTE9DQVRJT05fUFJJ
TlQoRmlsZSwgTG9jKSAoKHZvaWQpIDApCisjIGVuZGlmCisjZW5kaWYKKworCisvKiBZWUxFWCAt
LSBjYWxsaW5nIGB5eWxleCcgd2l0aCB0aGUgcmlnaHQgYXJndW1lbnRzLiAgKi8KKworI2lmZGVm
IFlZTEVYX1BBUkFNCisjIGRlZmluZSBZWUxFWCB5eWxleCAoJnl5bHZhbCwgJnl5bGxvYywgWVlM
RVhfUEFSQU0pCisjZWxzZQorIyBkZWZpbmUgWVlMRVggeXlsZXggKCZ5eWx2YWwsICZ5eWxsb2Mp
CisjZW5kaWYKKworLyogRW5hYmxlIGRlYnVnZ2luZyBpZiByZXF1ZXN0ZWQuICAqLworI2lmIFlZ
REVCVUcKKworIyBpZm5kZWYgWVlGUFJJTlRGCisjICBpbmNsdWRlIDxzdGRpby5oPiAvKiBJTkZS
SU5HRVMgT04gVVNFUiBOQU1FIFNQQUNFICovCisjICBkZWZpbmUgWVlGUFJJTlRGIGZwcmludGYK
KyMgZW5kaWYKKworIyBkZWZpbmUgWVlEUFJJTlRGKEFyZ3MpCQkJXAorZG8gewkJCQkJCVwKKyAg
aWYgKHl5ZGVidWcpCQkJCQlcCisgICAgWVlGUFJJTlRGIEFyZ3M7CQkJCVwKK30gd2hpbGUgKFlZ
SUQgKDApKQorCisjIGRlZmluZSBZWV9TWU1CT0xfUFJJTlQoVGl0bGUsIFR5cGUsIFZhbHVlLCBM
b2NhdGlvbikJCQkgIFwKK2RvIHsJCQkJCQkJCQkgIFwKKyAgaWYgKHl5ZGVidWcpCQkJCQkJCQkg
IFwKKyAgICB7CQkJCQkJCQkJICBcCisgICAgICBZWUZQUklOVEYgKHN0ZGVyciwgIiVzICIsIFRp
dGxlKTsJCQkJCSAgXAorICAgICAgeXlfc3ltYm9sX3ByaW50IChzdGRlcnIsCQkJCQkJICBcCisJ
CSAgVHlwZSwgVmFsdWUsIExvY2F0aW9uLCBjb250ZXh0KTsgXAorICAgICAgWVlGUFJJTlRGIChz
dGRlcnIsICJcbiIpOwkJCQkJCSAgXAorICAgIH0JCQkJCQkJCQkgIFwKK30gd2hpbGUgKFlZSUQg
KDApKQorCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCit8IFByaW50IHRo
aXMgc3ltYm9sIG9uIFlZT1VUUFVULiAgfAorYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKi8KKworLypBUkdTVVNFRCovCisjaWYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBf
X0M5OV9fRlVOQ19fIFwKKyAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9N
U0NfVkVSKQorc3RhdGljIHZvaWQKK3l5X3N5bWJvbF92YWx1ZV9wcmludCAoRklMRSAqeXlvdXRw
dXQsIGludCB5eXR5cGUsIFlZU1RZUEUgY29uc3QgKiBjb25zdCB5eXZhbHVlcCwgWVlMVFlQRSBj
b25zdCAqIGNvbnN0IHl5bG9jYXRpb25wLCBwcDo6Q29udGV4dCogY29udGV4dCkKKyNlbHNlCitz
dGF0aWMgdm9pZAoreXlfc3ltYm9sX3ZhbHVlX3ByaW50ICh5eW91dHB1dCwgeXl0eXBlLCB5eXZh
bHVlcCwgeXlsb2NhdGlvbnAsIGNvbnRleHQpCisgICAgRklMRSAqeXlvdXRwdXQ7CisgICAgaW50
IHl5dHlwZTsKKyAgICBZWVNUWVBFIGNvbnN0ICogY29uc3QgeXl2YWx1ZXA7CisgICAgWVlMVFlQ
RSBjb25zdCAqIGNvbnN0IHl5bG9jYXRpb25wOworICAgIHBwOjpDb250ZXh0KiBjb250ZXh0Owor
I2VuZGlmCit7CisgIGlmICgheXl2YWx1ZXApCisgICAgcmV0dXJuOworICBZWVVTRSAoeXlsb2Nh
dGlvbnApOworICBZWVVTRSAoY29udGV4dCk7CisjIGlmZGVmIFlZUFJJTlQKKyAgaWYgKHl5dHlw
ZSA8IFlZTlRPS0VOUykKKyAgICBZWVBSSU5UICh5eW91dHB1dCwgeXl0b2tudW1beXl0eXBlXSwg
Knl5dmFsdWVwKTsKKyMgZWxzZQorICBZWVVTRSAoeXlvdXRwdXQpOworIyBlbmRpZgorICBzd2l0
Y2ggKHl5dHlwZSkKKyAgICB7CisgICAgICBkZWZhdWx0OgorCWJyZWFrOworICAgIH0KK30KKwor
CisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgorfCBQcmludCB0aGlzIHN5bWJv
bCBvbiBZWU9VVFBVVC4gIHwKK2AtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisK
KyNpZiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAorICAgICB8
fCBkZWZpbmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCitzdGF0aWMgdm9pZAor
eXlfc3ltYm9sX3ByaW50IChGSUxFICp5eW91dHB1dCwgaW50IHl5dHlwZSwgWVlTVFlQRSBjb25z
dCAqIGNvbnN0IHl5dmFsdWVwLCBZWUxUWVBFIGNvbnN0ICogY29uc3QgeXlsb2NhdGlvbnAsIHBw
OjpDb250ZXh0KiBjb250ZXh0KQorI2Vsc2UKK3N0YXRpYyB2b2lkCit5eV9zeW1ib2xfcHJpbnQg
KHl5b3V0cHV0LCB5eXR5cGUsIHl5dmFsdWVwLCB5eWxvY2F0aW9ucCwgY29udGV4dCkKKyAgICBG
SUxFICp5eW91dHB1dDsKKyAgICBpbnQgeXl0eXBlOworICAgIFlZU1RZUEUgY29uc3QgKiBjb25z
dCB5eXZhbHVlcDsKKyAgICBZWUxUWVBFIGNvbnN0ICogY29uc3QgeXlsb2NhdGlvbnA7CisgICAg
cHA6OkNvbnRleHQqIGNvbnRleHQ7CisjZW5kaWYKK3sKKyAgaWYgKHl5dHlwZSA8IFlZTlRPS0VO
UykKKyAgICBZWUZQUklOVEYgKHl5b3V0cHV0LCAidG9rZW4gJXMgKCIsIHl5dG5hbWVbeXl0eXBl
XSk7CisgIGVsc2UKKyAgICBZWUZQUklOVEYgKHl5b3V0cHV0LCAibnRlcm0gJXMgKCIsIHl5dG5h
bWVbeXl0eXBlXSk7CisKKyAgWVlfTE9DQVRJT05fUFJJTlQgKHl5b3V0cHV0LCAqeXlsb2NhdGlv
bnApOworICBZWUZQUklOVEYgKHl5b3V0cHV0LCAiOiAiKTsKKyAgeXlfc3ltYm9sX3ZhbHVlX3By
aW50ICh5eW91dHB1dCwgeXl0eXBlLCB5eXZhbHVlcCwgeXlsb2NhdGlvbnAsIGNvbnRleHQpOwor
ICBZWUZQUklOVEYgKHl5b3V0cHV0LCAiKSIpOworfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KK3wgeXlfc3Rh
Y2tfcHJpbnQgLS0gUHJpbnQgdGhlIHN0YXRlIHN0YWNrIGZyb20gaXRzIEJPVFRPTSB1cCB0byBp
dHMgfAorfCBUT1AgKGluY2x1ZGVkKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8CitgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworI2lmIChkZWZpbmVkIF9fU1REQ19f
IHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCisgICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMg
fHwgZGVmaW5lZCBfTVNDX1ZFUikKK3N0YXRpYyB2b2lkCit5eV9zdGFja19wcmludCAoeXl0eXBl
X2ludDE2ICpib3R0b20sIHl5dHlwZV9pbnQxNiAqdG9wKQorI2Vsc2UKK3N0YXRpYyB2b2lkCit5
eV9zdGFja19wcmludCAoYm90dG9tLCB0b3ApCisgICAgeXl0eXBlX2ludDE2ICpib3R0b207Cisg
ICAgeXl0eXBlX2ludDE2ICp0b3A7CisjZW5kaWYKK3sKKyAgWVlGUFJJTlRGIChzdGRlcnIsICJT
dGFjayBub3ciKTsKKyAgZm9yICg7IGJvdHRvbSA8PSB0b3A7ICsrYm90dG9tKQorICAgIFlZRlBS
SU5URiAoc3RkZXJyLCAiICVkIiwgKmJvdHRvbSk7CisgIFlZRlBSSU5URiAoc3RkZXJyLCAiXG4i
KTsKK30KKworIyBkZWZpbmUgWVlfU1RBQ0tfUFJJTlQoQm90dG9tLCBUb3ApCQkJCVwKK2RvIHsJ
CQkJCQkJCVwKKyAgaWYgKHl5ZGVidWcpCQkJCQkJCVwKKyAgICB5eV9zdGFja19wcmludCAoKEJv
dHRvbSksIChUb3ApKTsJCQkJXAorfSB3aGlsZSAoWVlJRCAoMCkpCisKKworLyotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCit8IFJlcG9ydCB0aGF0IHRo
ZSBZWVJVTEUgaXMgZ29pbmcgdG8gYmUgcmVkdWNlZC4gIHwKK2AtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisjaWYgKGRlZmluZWQgX19TVERDX18g
fHwgZGVmaW5lZCBfX0M5OV9fRlVOQ19fIFwKKyAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8
fCBkZWZpbmVkIF9NU0NfVkVSKQorc3RhdGljIHZvaWQKK3l5X3JlZHVjZV9wcmludCAoWVlTVFlQ
RSAqeXl2c3AsIFlZTFRZUEUgKnl5bHNwLCBpbnQgeXlydWxlLCBwcDo6Q29udGV4dCogY29udGV4
dCkKKyNlbHNlCitzdGF0aWMgdm9pZAoreXlfcmVkdWNlX3ByaW50ICh5eXZzcCwgeXlsc3AsIHl5
cnVsZSwgY29udGV4dCkKKyAgICBZWVNUWVBFICp5eXZzcDsKKyAgICBZWUxUWVBFICp5eWxzcDsK
KyAgICBpbnQgeXlydWxlOworICAgIHBwOjpDb250ZXh0KiBjb250ZXh0OworI2VuZGlmCit7Cisg
IGludCB5eW5yaHMgPSB5eXIyW3l5cnVsZV07CisgIGludCB5eWk7CisgIHVuc2lnbmVkIGxvbmcg
aW50IHl5bG5vID0geXlybGluZVt5eXJ1bGVdOworICBZWUZQUklOVEYgKHN0ZGVyciwgIlJlZHVj
aW5nIHN0YWNrIGJ5IHJ1bGUgJWQgKGxpbmUgJWx1KTpcbiIsCisJICAgICB5eXJ1bGUgLSAxLCB5
eWxubyk7CisgIC8qIFRoZSBzeW1ib2xzIGJlaW5nIHJlZHVjZWQuICAqLworICBmb3IgKHl5aSA9
IDA7IHl5aSA8IHl5bnJoczsgeXlpKyspCisgICAgeworICAgICAgZnByaW50ZiAoc3RkZXJyLCAi
ICAgJCVkID0gIiwgeXlpICsgMSk7CisgICAgICB5eV9zeW1ib2xfcHJpbnQgKHN0ZGVyciwgeXly
aHNbeXlwcmhzW3l5cnVsZV0gKyB5eWldLAorCQkgICAgICAgJih5eXZzcFsoeXlpICsgMSkgLSAo
eXlucmhzKV0pCisJCSAgICAgICAsICYoeXlsc3BbKHl5aSArIDEpIC0gKHl5bnJocyldKQkJICAg
ICAgICwgY29udGV4dCk7CisgICAgICBmcHJpbnRmIChzdGRlcnIsICJcbiIpOworICAgIH0KK30K
KworIyBkZWZpbmUgWVlfUkVEVUNFX1BSSU5UKFJ1bGUpCQlcCitkbyB7CQkJCQlcCisgIGlmICh5
eWRlYnVnKQkJCQlcCisgICAgeXlfcmVkdWNlX3ByaW50ICh5eXZzcCwgeXlsc3AsIFJ1bGUsIGNv
bnRleHQpOyBcCit9IHdoaWxlIChZWUlEICgwKSkKKworLyogTm9uemVybyBtZWFucyBwcmludCBw
YXJzZSB0cmFjZS4gIEl0IGlzIGxlZnQgdW5pbml0aWFsaXplZCBzbyB0aGF0CisgICBtdWx0aXBs
ZSBwYXJzZXJzIGNhbiBjb2V4aXN0LiAgKi8KK2ludCB5eWRlYnVnOworI2Vsc2UgLyogIVlZREVC
VUcgKi8KKyMgZGVmaW5lIFlZRFBSSU5URihBcmdzKQorIyBkZWZpbmUgWVlfU1lNQk9MX1BSSU5U
KFRpdGxlLCBUeXBlLCBWYWx1ZSwgTG9jYXRpb24pCisjIGRlZmluZSBZWV9TVEFDS19QUklOVChC
b3R0b20sIFRvcCkKKyMgZGVmaW5lIFlZX1JFRFVDRV9QUklOVChSdWxlKQorI2VuZGlmIC8qICFZ
WURFQlVHICovCisKKworLyogWVlJTklUREVQVEggLS0gaW5pdGlhbCBzaXplIG9mIHRoZSBwYXJz
ZXIncyBzdGFja3MuICAqLworI2lmbmRlZglZWUlOSVRERVBUSAorIyBkZWZpbmUgWVlJTklUREVQ
VEggMjAwCisjZW5kaWYKKworLyogWVlNQVhERVBUSCAtLSBtYXhpbXVtIHNpemUgdGhlIHN0YWNr
cyBjYW4gZ3JvdyB0byAoZWZmZWN0aXZlIG9ubHkKKyAgIGlmIHRoZSBidWlsdC1pbiBzdGFjayBl
eHRlbnNpb24gbWV0aG9kIGlzIHVzZWQpLgorCisgICBEbyBub3QgbWFrZSB0aGlzIHZhbHVlIHRv
byBsYXJnZTsgdGhlIHJlc3VsdHMgYXJlIHVuZGVmaW5lZCBpZgorICAgWVlTVEFDS19BTExPQ19N
QVhJTVVNIDwgWVlTVEFDS19CWVRFUyAoWVlNQVhERVBUSCkKKyAgIGV2YWx1YXRlZCB3aXRoIGlu
ZmluaXRlLXByZWNpc2lvbiBpbnRlZ2VyIGFyaXRobWV0aWMuICAqLworCisjaWZuZGVmIFlZTUFY
REVQVEgKKyMgZGVmaW5lIFlZTUFYREVQVEggMTAwMDAKKyNlbmRpZgorCisMCisKKyNpZiBZWUVS
Uk9SX1ZFUkJPU0UKKworIyBpZm5kZWYgeXlzdHJsZW4KKyMgIGlmIGRlZmluZWQgX19HTElCQ19f
ICYmIGRlZmluZWQgX1NUUklOR19ICisjICAgZGVmaW5lIHl5c3RybGVuIHN0cmxlbgorIyAgZWxz
ZQorLyogUmV0dXJuIHRoZSBsZW5ndGggb2YgWVlTVFIuICAqLworI2lmIChkZWZpbmVkIF9fU1RE
Q19fIHx8IGRlZmluZWQgX19DOTlfX0ZVTkNfXyBcCisgICAgIHx8IGRlZmluZWQgX19jcGx1c3Bs
dXMgfHwgZGVmaW5lZCBfTVNDX1ZFUikKK3N0YXRpYyBZWVNJWkVfVAoreXlzdHJsZW4gKGNvbnN0
IGNoYXIgKnl5c3RyKQorI2Vsc2UKK3N0YXRpYyBZWVNJWkVfVAoreXlzdHJsZW4gKHl5c3RyKQor
ICAgIGNvbnN0IGNoYXIgKnl5c3RyOworI2VuZGlmCit7CisgIFlZU0laRV9UIHl5bGVuOworICBm
b3IgKHl5bGVuID0gMDsgeXlzdHJbeXlsZW5dOyB5eWxlbisrKQorICAgIGNvbnRpbnVlOworICBy
ZXR1cm4geXlsZW47Cit9CisjICBlbmRpZgorIyBlbmRpZgorCisjIGlmbmRlZiB5eXN0cGNweQor
IyAgaWYgZGVmaW5lZCBfX0dMSUJDX18gJiYgZGVmaW5lZCBfU1RSSU5HX0ggJiYgZGVmaW5lZCBf
R05VX1NPVVJDRQorIyAgIGRlZmluZSB5eXN0cGNweSBzdHBjcHkKKyMgIGVsc2UKKy8qIENvcHkg
WVlTUkMgdG8gWVlERVNULCByZXR1cm5pbmcgdGhlIGFkZHJlc3Mgb2YgdGhlIHRlcm1pbmF0aW5n
ICdcMCcgaW4KKyAgIFlZREVTVC4gICovCisjaWYgKGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5l
ZCBfX0M5OV9fRlVOQ19fIFwKKyAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVk
IF9NU0NfVkVSKQorc3RhdGljIGNoYXIgKgoreXlzdHBjcHkgKGNoYXIgKnl5ZGVzdCwgY29uc3Qg
Y2hhciAqeXlzcmMpCisjZWxzZQorc3RhdGljIGNoYXIgKgoreXlzdHBjcHkgKHl5ZGVzdCwgeXlz
cmMpCisgICAgY2hhciAqeXlkZXN0OworICAgIGNvbnN0IGNoYXIgKnl5c3JjOworI2VuZGlmCit7
CisgIGNoYXIgKnl5ZCA9IHl5ZGVzdDsKKyAgY29uc3QgY2hhciAqeXlzID0geXlzcmM7CisKKyAg
d2hpbGUgKCgqeXlkKysgPSAqeXlzKyspICE9ICdcMCcpCisgICAgY29udGludWU7CisKKyAgcmV0
dXJuIHl5ZCAtIDE7Cit9CisjICBlbmRpZgorIyBlbmRpZgorCisjIGlmbmRlZiB5eXRuYW1lcnIK
Ky8qIENvcHkgdG8gWVlSRVMgdGhlIGNvbnRlbnRzIG9mIFlZU1RSIGFmdGVyIHN0cmlwcGluZyBh
d2F5IHVubmVjZXNzYXJ5CisgICBxdW90ZXMgYW5kIGJhY2tzbGFzaGVzLCBzbyB0aGF0IGl0J3Mg
c3VpdGFibGUgZm9yIHl5ZXJyb3IuICBUaGUKKyAgIGhldXJpc3RpYyBpcyB0aGF0IGRvdWJsZS1x
dW90aW5nIGlzIHVubmVjZXNzYXJ5IHVubGVzcyB0aGUgc3RyaW5nCisgICBjb250YWlucyBhbiBh
cG9zdHJvcGhlLCBhIGNvbW1hLCBvciBiYWNrc2xhc2ggKG90aGVyIHRoYW4KKyAgIGJhY2tzbGFz
aC1iYWNrc2xhc2gpLiAgWVlTVFIgaXMgdGFrZW4gZnJvbSB5eXRuYW1lLiAgSWYgWVlSRVMgaXMK
KyAgIG51bGwsIGRvIG5vdCBjb3B5OyBpbnN0ZWFkLCByZXR1cm4gdGhlIGxlbmd0aCBvZiB3aGF0
IHRoZSByZXN1bHQKKyAgIHdvdWxkIGhhdmUgYmVlbi4gICovCitzdGF0aWMgWVlTSVpFX1QKK3l5
dG5hbWVyciAoY2hhciAqeXlyZXMsIGNvbnN0IGNoYXIgKnl5c3RyKQoreworICBpZiAoKnl5c3Ry
ID09ICciJykKKyAgICB7CisgICAgICBZWVNJWkVfVCB5eW4gPSAwOworICAgICAgY2hhciBjb25z
dCAqeXlwID0geXlzdHI7CisKKyAgICAgIGZvciAoOzspCisJc3dpdGNoICgqKyt5eXApCisJICB7
CisJICBjYXNlICdcJyc6CisJICBjYXNlICcsJzoKKwkgICAgZ290byBkb19ub3Rfc3RyaXBfcXVv
dGVzOworCisJICBjYXNlICdcXCc6CisJICAgIGlmICgqKyt5eXAgIT0gJ1xcJykKKwkgICAgICBn
b3RvIGRvX25vdF9zdHJpcF9xdW90ZXM7CisJICAgIC8qIEZhbGwgdGhyb3VnaC4gICovCisJICBk
ZWZhdWx0OgorCSAgICBpZiAoeXlyZXMpCisJICAgICAgeXlyZXNbeXluXSA9ICp5eXA7CisJICAg
IHl5bisrOworCSAgICBicmVhazsKKworCSAgY2FzZSAnIic6CisJICAgIGlmICh5eXJlcykKKwkg
ICAgICB5eXJlc1t5eW5dID0gJ1wwJzsKKwkgICAgcmV0dXJuIHl5bjsKKwkgIH0KKyAgICBkb19u
b3Rfc3RyaXBfcXVvdGVzOiA7CisgICAgfQorCisgIGlmICghIHl5cmVzKQorICAgIHJldHVybiB5
eXN0cmxlbiAoeXlzdHIpOworCisgIHJldHVybiB5eXN0cGNweSAoeXlyZXMsIHl5c3RyKSAtIHl5
cmVzOworfQorIyBlbmRpZgorCisvKiBDb3B5IGludG8gWVlSRVNVTFQgYW4gZXJyb3IgbWVzc2Fn
ZSBhYm91dCB0aGUgdW5leHBlY3RlZCB0b2tlbgorICAgWVlDSEFSIHdoaWxlIGluIHN0YXRlIFlZ
U1RBVEUuICBSZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyBjb3BpZWQsCisgICBpbmNsdWRpbmcg
dGhlIHRlcm1pbmF0aW5nIG51bGwgYnl0ZS4gIElmIFlZUkVTVUxUIGlzIG51bGwsIGRvIG5vdAor
ICAgY29weSBhbnl0aGluZzsganVzdCByZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyB0aGF0IHdv
dWxkIGJlCisgICBjb3BpZWQuICBBcyBhIHNwZWNpYWwgY2FzZSwgcmV0dXJuIDAgaWYgYW4gb3Jk
aW5hcnkgInN5bnRheCBlcnJvciIKKyAgIG1lc3NhZ2Ugd2lsbCBkby4gIFJldHVybiBZWVNJWkVf
TUFYSU1VTSBpZiBvdmVyZmxvdyBvY2N1cnMgZHVyaW5nCisgICBzaXplIGNhbGN1bGF0aW9uLiAg
Ki8KK3N0YXRpYyBZWVNJWkVfVAoreXlzeW50YXhfZXJyb3IgKGNoYXIgKnl5cmVzdWx0LCBpbnQg
eXlzdGF0ZSwgaW50IHl5Y2hhcikKK3sKKyAgaW50IHl5biA9IHl5cGFjdFt5eXN0YXRlXTsKKwor
ICBpZiAoISAoWVlQQUNUX05JTkYgPCB5eW4gJiYgeXluIDw9IFlZTEFTVCkpCisgICAgcmV0dXJu
IDA7CisgIGVsc2UKKyAgICB7CisgICAgICBpbnQgeXl0eXBlID0gWVlUUkFOU0xBVEUgKHl5Y2hh
cik7CisgICAgICBZWVNJWkVfVCB5eXNpemUwID0geXl0bmFtZXJyICgwLCB5eXRuYW1lW3l5dHlw
ZV0pOworICAgICAgWVlTSVpFX1QgeXlzaXplID0geXlzaXplMDsKKyAgICAgIFlZU0laRV9UIHl5
c2l6ZTE7CisgICAgICBpbnQgeXlzaXplX292ZXJmbG93ID0gMDsKKyAgICAgIGVudW0geyBZWUVS
Uk9SX1ZFUkJPU0VfQVJHU19NQVhJTVVNID0gNSB9OworICAgICAgY2hhciBjb25zdCAqeXlhcmdb
WVlFUlJPUl9WRVJCT1NFX0FSR1NfTUFYSU1VTV07CisgICAgICBpbnQgeXl4OworCisjIGlmIDAK
KyAgICAgIC8qIFRoaXMgaXMgc28geGdldHRleHQgc2VlcyB0aGUgdHJhbnNsYXRhYmxlIGZvcm1h
dHMgdGhhdCBhcmUKKwkgY29uc3RydWN0ZWQgb24gdGhlIGZseS4gICovCisgICAgICBZWV8oInN5
bnRheCBlcnJvciwgdW5leHBlY3RlZCAlcyIpOworICAgICAgWVlfKCJzeW50YXggZXJyb3IsIHVu
ZXhwZWN0ZWQgJXMsIGV4cGVjdGluZyAlcyIpOworICAgICAgWVlfKCJzeW50YXggZXJyb3IsIHVu
ZXhwZWN0ZWQgJXMsIGV4cGVjdGluZyAlcyBvciAlcyIpOworICAgICAgWVlfKCJzeW50YXggZXJy
b3IsIHVuZXhwZWN0ZWQgJXMsIGV4cGVjdGluZyAlcyBvciAlcyBvciAlcyIpOworICAgICAgWVlf
KCJzeW50YXggZXJyb3IsIHVuZXhwZWN0ZWQgJXMsIGV4cGVjdGluZyAlcyBvciAlcyBvciAlcyBv
ciAlcyIpOworIyBlbmRpZgorICAgICAgY2hhciAqeXlmbXQ7CisgICAgICBjaGFyIGNvbnN0ICp5
eWY7CisgICAgICBzdGF0aWMgY2hhciBjb25zdCB5eXVuZXhwZWN0ZWRbXSA9ICJzeW50YXggZXJy
b3IsIHVuZXhwZWN0ZWQgJXMiOworICAgICAgc3RhdGljIGNoYXIgY29uc3QgeXlleHBlY3Rpbmdb
XSA9ICIsIGV4cGVjdGluZyAlcyI7CisgICAgICBzdGF0aWMgY2hhciBjb25zdCB5eW9yW10gPSAi
IG9yICVzIjsKKyAgICAgIGNoYXIgeXlmb3JtYXRbc2l6ZW9mIHl5dW5leHBlY3RlZAorCQkgICAg
KyBzaXplb2YgeXlleHBlY3RpbmcgLSAxCisJCSAgICArICgoWVlFUlJPUl9WRVJCT1NFX0FSR1Nf
TUFYSU1VTSAtIDIpCisJCSAgICAgICAqIChzaXplb2YgeXlvciAtIDEpKV07CisgICAgICBjaGFy
IGNvbnN0ICp5eXByZWZpeCA9IHl5ZXhwZWN0aW5nOworCisgICAgICAvKiBTdGFydCBZWVggYXQg
LVlZTiBpZiBuZWdhdGl2ZSB0byBhdm9pZCBuZWdhdGl2ZSBpbmRleGVzIGluCisJIFlZQ0hFQ0su
ICAqLworICAgICAgaW50IHl5eGJlZ2luID0geXluIDwgMCA/IC15eW4gOiAwOworCisgICAgICAv
KiBTdGF5IHdpdGhpbiBib3VuZHMgb2YgYm90aCB5eWNoZWNrIGFuZCB5eXRuYW1lLiAgKi8KKyAg
ICAgIGludCB5eWNoZWNrbGltID0gWVlMQVNUIC0geXluICsgMTsKKyAgICAgIGludCB5eXhlbmQg
PSB5eWNoZWNrbGltIDwgWVlOVE9LRU5TID8geXljaGVja2xpbSA6IFlZTlRPS0VOUzsKKyAgICAg
IGludCB5eWNvdW50ID0gMTsKKworICAgICAgeXlhcmdbMF0gPSB5eXRuYW1lW3l5dHlwZV07Cisg
ICAgICB5eWZtdCA9IHl5c3RwY3B5ICh5eWZvcm1hdCwgeXl1bmV4cGVjdGVkKTsKKworICAgICAg
Zm9yICh5eXggPSB5eXhiZWdpbjsgeXl4IDwgeXl4ZW5kOyArK3l5eCkKKwlpZiAoeXljaGVja1t5
eXggKyB5eW5dID09IHl5eCAmJiB5eXggIT0gWVlURVJST1IpCisJICB7CisJICAgIGlmICh5eWNv
dW50ID09IFlZRVJST1JfVkVSQk9TRV9BUkdTX01BWElNVU0pCisJICAgICAgeworCQl5eWNvdW50
ID0gMTsKKwkJeXlzaXplID0geXlzaXplMDsKKwkJeXlmb3JtYXRbc2l6ZW9mIHl5dW5leHBlY3Rl
ZCAtIDFdID0gJ1wwJzsKKwkJYnJlYWs7CisJICAgICAgfQorCSAgICB5eWFyZ1t5eWNvdW50Kytd
ID0geXl0bmFtZVt5eXhdOworCSAgICB5eXNpemUxID0geXlzaXplICsgeXl0bmFtZXJyICgwLCB5
eXRuYW1lW3l5eF0pOworCSAgICB5eXNpemVfb3ZlcmZsb3cgfD0gKHl5c2l6ZTEgPCB5eXNpemUp
OworCSAgICB5eXNpemUgPSB5eXNpemUxOworCSAgICB5eWZtdCA9IHl5c3RwY3B5ICh5eWZtdCwg
eXlwcmVmaXgpOworCSAgICB5eXByZWZpeCA9IHl5b3I7CisJICB9CisKKyAgICAgIHl5ZiA9IFlZ
Xyh5eWZvcm1hdCk7CisgICAgICB5eXNpemUxID0geXlzaXplICsgeXlzdHJsZW4gKHl5Zik7Cisg
ICAgICB5eXNpemVfb3ZlcmZsb3cgfD0gKHl5c2l6ZTEgPCB5eXNpemUpOworICAgICAgeXlzaXpl
ID0geXlzaXplMTsKKworICAgICAgaWYgKHl5c2l6ZV9vdmVyZmxvdykKKwlyZXR1cm4gWVlTSVpF
X01BWElNVU07CisKKyAgICAgIGlmICh5eXJlc3VsdCkKKwl7CisJICAvKiBBdm9pZCBzcHJpbnRm
LCBhcyB0aGF0IGluZnJpbmdlcyBvbiB0aGUgdXNlcidzIG5hbWUgc3BhY2UuCisJICAgICBEb24n
dCBoYXZlIHVuZGVmaW5lZCBiZWhhdmlvciBldmVuIGlmIHRoZSB0cmFuc2xhdGlvbgorCSAgICAg
cHJvZHVjZWQgYSBzdHJpbmcgd2l0aCB0aGUgd3JvbmcgbnVtYmVyIG9mICIlcyJzLiAgKi8KKwkg
IGNoYXIgKnl5cCA9IHl5cmVzdWx0OworCSAgaW50IHl5aSA9IDA7CisJICB3aGlsZSAoKCp5eXAg
PSAqeXlmKSAhPSAnXDAnKQorCSAgICB7CisJICAgICAgaWYgKCp5eXAgPT0gJyUnICYmIHl5Zlsx
XSA9PSAncycgJiYgeXlpIDwgeXljb3VudCkKKwkJeworCQkgIHl5cCArPSB5eXRuYW1lcnIgKHl5
cCwgeXlhcmdbeXlpKytdKTsKKwkJICB5eWYgKz0gMjsKKwkJfQorCSAgICAgIGVsc2UKKwkJewor
CQkgIHl5cCsrOworCQkgIHl5ZisrOworCQl9CisJICAgIH0KKwl9CisgICAgICByZXR1cm4geXlz
aXplOworICAgIH0KK30KKyNlbmRpZiAvKiBZWUVSUk9SX1ZFUkJPU0UgKi8KKwwKKworLyotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KK3wgUmVsZWFzZSB0
aGUgbWVtb3J5IGFzc29jaWF0ZWQgdG8gdGhpcyBzeW1ib2wuICB8CitgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisvKkFSR1NVU0VEKi8KKyNpZiAo
ZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fQzk5X19GVU5DX18gXAorICAgICB8fCBkZWZp
bmVkIF9fY3BsdXNwbHVzIHx8IGRlZmluZWQgX01TQ19WRVIpCitzdGF0aWMgdm9pZAoreXlkZXN0
cnVjdCAoY29uc3QgY2hhciAqeXltc2csIGludCB5eXR5cGUsIFlZU1RZUEUgKnl5dmFsdWVwLCBZ
WUxUWVBFICp5eWxvY2F0aW9ucCwgcHA6OkNvbnRleHQqIGNvbnRleHQpCisjZWxzZQorc3RhdGlj
IHZvaWQKK3l5ZGVzdHJ1Y3QgKHl5bXNnLCB5eXR5cGUsIHl5dmFsdWVwLCB5eWxvY2F0aW9ucCwg
Y29udGV4dCkKKyAgICBjb25zdCBjaGFyICp5eW1zZzsKKyAgICBpbnQgeXl0eXBlOworICAgIFlZ
U1RZUEUgKnl5dmFsdWVwOworICAgIFlZTFRZUEUgKnl5bG9jYXRpb25wOworICAgIHBwOjpDb250
ZXh0KiBjb250ZXh0OworI2VuZGlmCit7CisgIFlZVVNFICh5eXZhbHVlcCk7CisgIFlZVVNFICh5
eWxvY2F0aW9ucCk7CisgIFlZVVNFIChjb250ZXh0KTsKKworICBpZiAoIXl5bXNnKQorICAgIHl5
bXNnID0gIkRlbGV0aW5nIjsKKyAgWVlfU1lNQk9MX1BSSU5UICh5eW1zZywgeXl0eXBlLCB5eXZh
bHVlcCwgeXlsb2NhdGlvbnApOworCisgIHN3aXRjaCAoeXl0eXBlKQorICAgIHsKKworICAgICAg
ZGVmYXVsdDoKKwlicmVhazsKKyAgICB9Cit9CisMCisKKy8qIFByZXZlbnQgd2FybmluZ3MgZnJv
bSAtV21pc3NpbmctcHJvdG90eXBlcy4gICovCisKKyNpZmRlZiBZWVBBUlNFX1BBUkFNCisjaWYg
ZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzCitpbnQgeXlwYXJzZSAodm9p
ZCAqWVlQQVJTRV9QQVJBTSk7CisjZWxzZQoraW50IHl5cGFyc2UgKCk7CisjZW5kaWYKKyNlbHNl
IC8qICEgWVlQQVJTRV9QQVJBTSAqLworI2lmIGRlZmluZWQgX19TVERDX18gfHwgZGVmaW5lZCBf
X2NwbHVzcGx1cworaW50IHl5cGFyc2UgKHBwOjpDb250ZXh0KiBjb250ZXh0KTsKKyNlbHNlCitp
bnQgeXlwYXJzZSAoKTsKKyNlbmRpZgorI2VuZGlmIC8qICEgWVlQQVJTRV9QQVJBTSAqLworCisK
KworCisKKworLyotLS0tLS0tLS0tLgorfCB5eXBhcnNlLiAgfAorYC0tLS0tLS0tLS0qLworCisj
aWZkZWYgWVlQQVJTRV9QQVJBTQorI2lmIChkZWZpbmVkIF9fU1REQ19fIHx8IGRlZmluZWQgX19D
OTlfX0ZVTkNfXyBcCisgICAgIHx8IGRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfTVND
X1ZFUikKK2ludAoreXlwYXJzZSAodm9pZCAqWVlQQVJTRV9QQVJBTSkKKyNlbHNlCitpbnQKK3l5
cGFyc2UgKFlZUEFSU0VfUEFSQU0pCisgICAgdm9pZCAqWVlQQVJTRV9QQVJBTTsKKyNlbmRpZgor
I2Vsc2UgLyogISBZWVBBUlNFX1BBUkFNICovCisjaWYgKGRlZmluZWQgX19TVERDX18gfHwgZGVm
aW5lZCBfX0M5OV9fRlVOQ19fIFwKKyAgICAgfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZp
bmVkIF9NU0NfVkVSKQoraW50Cit5eXBhcnNlIChwcDo6Q29udGV4dCogY29udGV4dCkKKyNlbHNl
CitpbnQKK3l5cGFyc2UgKGNvbnRleHQpCisgICAgcHA6OkNvbnRleHQqIGNvbnRleHQ7CisjZW5k
aWYKKyNlbmRpZgoreworICAvKiBUaGUgbG9vay1haGVhZCBzeW1ib2wuICAqLworaW50IHl5Y2hh
cjsKKworLyogVGhlIHNlbWFudGljIHZhbHVlIG9mIHRoZSBsb29rLWFoZWFkIHN5bWJvbC4gICov
CitZWVNUWVBFIHl5bHZhbDsKKworLyogTnVtYmVyIG9mIHN5bnRheCBlcnJvcnMgc28gZmFyLiAg
Ki8KK2ludCB5eW5lcnJzOworLyogTG9jYXRpb24gZGF0YSBmb3IgdGhlIGxvb2stYWhlYWQgc3lt
Ym9sLiAgKi8KK1lZTFRZUEUgeXlsbG9jOworCisgIGludCB5eXN0YXRlOworICBpbnQgeXluOwor
ICBpbnQgeXlyZXN1bHQ7CisgIC8qIE51bWJlciBvZiB0b2tlbnMgdG8gc2hpZnQgYmVmb3JlIGVy
cm9yIG1lc3NhZ2VzIGVuYWJsZWQuICAqLworICBpbnQgeXllcnJzdGF0dXM7CisgIC8qIExvb2st
YWhlYWQgdG9rZW4gYXMgYW4gaW50ZXJuYWwgKHRyYW5zbGF0ZWQpIHRva2VuIG51bWJlci4gICov
CisgIGludCB5eXRva2VuID0gMDsKKyNpZiBZWUVSUk9SX1ZFUkJPU0UKKyAgLyogQnVmZmVyIGZv
ciBlcnJvciBtZXNzYWdlcywgYW5kIGl0cyBhbGxvY2F0ZWQgc2l6ZS4gICovCisgIGNoYXIgeXlt
c2didWZbMTI4XTsKKyAgY2hhciAqeXltc2cgPSB5eW1zZ2J1ZjsKKyAgWVlTSVpFX1QgeXltc2df
YWxsb2MgPSBzaXplb2YgeXltc2didWY7CisjZW5kaWYKKworICAvKiBUaHJlZSBzdGFja3MgYW5k
IHRoZWlyIHRvb2xzOgorICAgICBgeXlzcyc6IHJlbGF0ZWQgdG8gc3RhdGVzLAorICAgICBgeXl2
cyc6IHJlbGF0ZWQgdG8gc2VtYW50aWMgdmFsdWVzLAorICAgICBgeXlscyc6IHJlbGF0ZWQgdG8g
bG9jYXRpb25zLgorCisgICAgIFJlZmVyIHRvIHRoZSBzdGFja3MgdGhydSBzZXBhcmF0ZSBwb2lu
dGVycywgdG8gYWxsb3cgeXlvdmVyZmxvdworICAgICB0byByZWFsbG9jYXRlIHRoZW0gZWxzZXdo
ZXJlLiAgKi8KKworICAvKiBUaGUgc3RhdGUgc3RhY2suICAqLworICB5eXR5cGVfaW50MTYgeXlz
c2FbWVlJTklUREVQVEhdOworICB5eXR5cGVfaW50MTYgKnl5c3MgPSB5eXNzYTsKKyAgeXl0eXBl
X2ludDE2ICp5eXNzcDsKKworICAvKiBUaGUgc2VtYW50aWMgdmFsdWUgc3RhY2suICAqLworICBZ
WVNUWVBFIHl5dnNhW1lZSU5JVERFUFRIXTsKKyAgWVlTVFlQRSAqeXl2cyA9IHl5dnNhOworICBZ
WVNUWVBFICp5eXZzcDsKKworICAvKiBUaGUgbG9jYXRpb24gc3RhY2suICAqLworICBZWUxUWVBF
IHl5bHNhW1lZSU5JVERFUFRIXTsKKyAgWVlMVFlQRSAqeXlscyA9IHl5bHNhOworICBZWUxUWVBF
ICp5eWxzcDsKKyAgLyogVGhlIGxvY2F0aW9ucyB3aGVyZSB0aGUgZXJyb3Igc3RhcnRlZCBhbmQg
ZW5kZWQuICAqLworICBZWUxUWVBFIHl5ZXJyb3JfcmFuZ2VbMl07CisKKyNkZWZpbmUgWVlQT1BT
VEFDSyhOKSAgICh5eXZzcCAtPSAoTiksIHl5c3NwIC09IChOKSwgeXlsc3AgLT0gKE4pKQorCisg
IFlZU0laRV9UIHl5c3RhY2tzaXplID0gWVlJTklUREVQVEg7CisKKyAgLyogVGhlIHZhcmlhYmxl
cyB1c2VkIHRvIHJldHVybiBzZW1hbnRpYyB2YWx1ZSBhbmQgbG9jYXRpb24gZnJvbSB0aGUKKyAg
ICAgYWN0aW9uIHJvdXRpbmVzLiAgKi8KKyAgWVlTVFlQRSB5eXZhbDsKKyAgWVlMVFlQRSB5eWxv
YzsKKworICAvKiBUaGUgbnVtYmVyIG9mIHN5bWJvbHMgb24gdGhlIFJIUyBvZiB0aGUgcmVkdWNl
ZCBydWxlLgorICAgICBLZWVwIHRvIHplcm8gd2hlbiBubyBzeW1ib2wgc2hvdWxkIGJlIHBvcHBl
ZC4gICovCisgIGludCB5eWxlbiA9IDA7CisKKyAgWVlEUFJJTlRGICgoc3RkZXJyLCAiU3RhcnRp
bmcgcGFyc2VcbiIpKTsKKworICB5eXN0YXRlID0gMDsKKyAgeXllcnJzdGF0dXMgPSAwOworICB5
eW5lcnJzID0gMDsKKyAgeXljaGFyID0gWVlFTVBUWTsJCS8qIENhdXNlIGEgdG9rZW4gdG8gYmUg
cmVhZC4gICovCisKKyAgLyogSW5pdGlhbGl6ZSBzdGFjayBwb2ludGVycy4KKyAgICAgV2FzdGUg
b25lIGVsZW1lbnQgb2YgdmFsdWUgYW5kIGxvY2F0aW9uIHN0YWNrCisgICAgIHNvIHRoYXQgdGhl
eSBzdGF5IG9uIHRoZSBzYW1lIGxldmVsIGFzIHRoZSBzdGF0ZSBzdGFjay4KKyAgICAgVGhlIHdh
c3RlZCBlbGVtZW50cyBhcmUgbmV2ZXIgaW5pdGlhbGl6ZWQuICAqLworCisgIHl5c3NwID0geXlz
czsKKyAgeXl2c3AgPSB5eXZzOworICB5eWxzcCA9IHl5bHM7CisjaWYgWVlMVFlQRV9JU19UUklW
SUFMCisgIC8qIEluaXRpYWxpemUgdGhlIGRlZmF1bHQgbG9jYXRpb24gYmVmb3JlIHBhcnNpbmcg
c3RhcnRzLiAgKi8KKyAgeXlsbG9jLmZpcnN0X2xpbmUgICA9IHl5bGxvYy5sYXN0X2xpbmUgICA9
IDE7CisgIHl5bGxvYy5maXJzdF9jb2x1bW4gPSB5eWxsb2MubGFzdF9jb2x1bW4gPSAwOworI2Vu
ZGlmCisKKyAgZ290byB5eXNldHN0YXRlOworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KK3wgeXluZXdzdGF0ZSAtLSBQdXNo
IGEgbmV3IHN0YXRlLCB3aGljaCBpcyBmb3VuZCBpbiB5eXN0YXRlLiAgfAorYC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisgeXlu
ZXdzdGF0ZToKKyAgLyogSW4gYWxsIGNhc2VzLCB3aGVuIHlvdSBnZXQgaGVyZSwgdGhlIHZhbHVl
IGFuZCBsb2NhdGlvbiBzdGFja3MKKyAgICAgaGF2ZSBqdXN0IGJlZW4gcHVzaGVkLiAgU28gcHVz
aGluZyBhIHN0YXRlIGhlcmUgZXZlbnMgdGhlIHN0YWNrcy4gICovCisgIHl5c3NwKys7CisKKyB5
eXNldHN0YXRlOgorICAqeXlzc3AgPSB5eXN0YXRlOworCisgIGlmICh5eXNzICsgeXlzdGFja3Np
emUgLSAxIDw9IHl5c3NwKQorICAgIHsKKyAgICAgIC8qIEdldCB0aGUgY3VycmVudCB1c2VkIHNp
emUgb2YgdGhlIHRocmVlIHN0YWNrcywgaW4gZWxlbWVudHMuICAqLworICAgICAgWVlTSVpFX1Qg
eXlzaXplID0geXlzc3AgLSB5eXNzICsgMTsKKworI2lmZGVmIHl5b3ZlcmZsb3cKKyAgICAgIHsK
KwkvKiBHaXZlIHVzZXIgYSBjaGFuY2UgdG8gcmVhbGxvY2F0ZSB0aGUgc3RhY2suICBVc2UgY29w
aWVzIG9mCisJICAgdGhlc2Ugc28gdGhhdCB0aGUgJidzIGRvbid0IGZvcmNlIHRoZSByZWFsIG9u
ZXMgaW50bworCSAgIG1lbW9yeS4gICovCisJWVlTVFlQRSAqeXl2czEgPSB5eXZzOworCXl5dHlw
ZV9pbnQxNiAqeXlzczEgPSB5eXNzOworCVlZTFRZUEUgKnl5bHMxID0geXlsczsKKworCS8qIEVh
Y2ggc3RhY2sgcG9pbnRlciBhZGRyZXNzIGlzIGZvbGxvd2VkIGJ5IHRoZSBzaXplIG9mIHRoZQor
CSAgIGRhdGEgaW4gdXNlIGluIHRoYXQgc3RhY2ssIGluIGJ5dGVzLiAgVGhpcyB1c2VkIHRvIGJl
IGEKKwkgICBjb25kaXRpb25hbCBhcm91bmQganVzdCB0aGUgdHdvIGV4dHJhIGFyZ3MsIGJ1dCB0
aGF0IG1pZ2h0CisJICAgYmUgdW5kZWZpbmVkIGlmIHl5b3ZlcmZsb3cgaXMgYSBtYWNyby4gICov
CisJeXlvdmVyZmxvdyAoWVlfKCJtZW1vcnkgZXhoYXVzdGVkIiksCisJCSAgICAmeXlzczEsIHl5
c2l6ZSAqIHNpemVvZiAoKnl5c3NwKSwKKwkJICAgICZ5eXZzMSwgeXlzaXplICogc2l6ZW9mICgq
eXl2c3ApLAorCQkgICAgJnl5bHMxLCB5eXNpemUgKiBzaXplb2YgKCp5eWxzcCksCisJCSAgICAm
eXlzdGFja3NpemUpOworCXl5bHMgPSB5eWxzMTsKKwl5eXNzID0geXlzczE7CisJeXl2cyA9IHl5
dnMxOworICAgICAgfQorI2Vsc2UgLyogbm8geXlvdmVyZmxvdyAqLworIyBpZm5kZWYgWVlTVEFD
S19SRUxPQ0FURQorICAgICAgZ290byB5eWV4aGF1c3RlZGxhYjsKKyMgZWxzZQorICAgICAgLyog
RXh0ZW5kIHRoZSBzdGFjayBvdXIgb3duIHdheS4gICovCisgICAgICBpZiAoWVlNQVhERVBUSCA8
PSB5eXN0YWNrc2l6ZSkKKwlnb3RvIHl5ZXhoYXVzdGVkbGFiOworICAgICAgeXlzdGFja3NpemUg
Kj0gMjsKKyAgICAgIGlmIChZWU1BWERFUFRIIDwgeXlzdGFja3NpemUpCisJeXlzdGFja3NpemUg
PSBZWU1BWERFUFRIOworCisgICAgICB7CisJeXl0eXBlX2ludDE2ICp5eXNzMSA9IHl5c3M7CisJ
dW5pb24geXlhbGxvYyAqeXlwdHIgPQorCSAgKHVuaW9uIHl5YWxsb2MgKikgWVlTVEFDS19BTExP
QyAoWVlTVEFDS19CWVRFUyAoeXlzdGFja3NpemUpKTsKKwlpZiAoISB5eXB0cikKKwkgIGdvdG8g
eXlleGhhdXN0ZWRsYWI7CisJWVlTVEFDS19SRUxPQ0FURSAoeXlzcyk7CisJWVlTVEFDS19SRUxP
Q0FURSAoeXl2cyk7CisJWVlTVEFDS19SRUxPQ0FURSAoeXlscyk7CisjICB1bmRlZiBZWVNUQUNL
X1JFTE9DQVRFCisJaWYgKHl5c3MxICE9IHl5c3NhKQorCSAgWVlTVEFDS19GUkVFICh5eXNzMSk7
CisgICAgICB9CisjIGVuZGlmCisjZW5kaWYgLyogbm8geXlvdmVyZmxvdyAqLworCisgICAgICB5
eXNzcCA9IHl5c3MgKyB5eXNpemUgLSAxOworICAgICAgeXl2c3AgPSB5eXZzICsgeXlzaXplIC0g
MTsKKyAgICAgIHl5bHNwID0geXlscyArIHl5c2l6ZSAtIDE7CisKKyAgICAgIFlZRFBSSU5URiAo
KHN0ZGVyciwgIlN0YWNrIHNpemUgaW5jcmVhc2VkIHRvICVsdVxuIiwKKwkJICAodW5zaWduZWQg
bG9uZyBpbnQpIHl5c3RhY2tzaXplKSk7CisKKyAgICAgIGlmICh5eXNzICsgeXlzdGFja3NpemUg
LSAxIDw9IHl5c3NwKQorCVlZQUJPUlQ7CisgICAgfQorCisgIFlZRFBSSU5URiAoKHN0ZGVyciwg
IkVudGVyaW5nIHN0YXRlICVkXG4iLCB5eXN0YXRlKSk7CisKKyAgZ290byB5eWJhY2t1cDsKKwor
LyotLS0tLS0tLS0tLS4KK3wgeXliYWNrdXAuICB8CitgLS0tLS0tLS0tLS0qLworeXliYWNrdXA6
CisKKyAgLyogRG8gYXBwcm9wcmlhdGUgcHJvY2Vzc2luZyBnaXZlbiB0aGUgY3VycmVudCBzdGF0
ZS4gIFJlYWQgYQorICAgICBsb29rLWFoZWFkIHRva2VuIGlmIHdlIG5lZWQgb25lIGFuZCBkb24n
dCBhbHJlYWR5IGhhdmUgb25lLiAgKi8KKworICAvKiBGaXJzdCB0cnkgdG8gZGVjaWRlIHdoYXQg
dG8gZG8gd2l0aG91dCByZWZlcmVuY2UgdG8gbG9vay1haGVhZCB0b2tlbi4gICovCisgIHl5biA9
IHl5cGFjdFt5eXN0YXRlXTsKKyAgaWYgKHl5biA9PSBZWVBBQ1RfTklORikKKyAgICBnb3RvIHl5
ZGVmYXVsdDsKKworICAvKiBOb3Qga25vd24gPT4gZ2V0IGEgbG9vay1haGVhZCB0b2tlbiBpZiBk
b24ndCBhbHJlYWR5IGhhdmUgb25lLiAgKi8KKworICAvKiBZWUNIQVIgaXMgZWl0aGVyIFlZRU1Q
VFkgb3IgWVlFT0Ygb3IgYSB2YWxpZCBsb29rLWFoZWFkIHN5bWJvbC4gICovCisgIGlmICh5eWNo
YXIgPT0gWVlFTVBUWSkKKyAgICB7CisgICAgICBZWURQUklOVEYgKChzdGRlcnIsICJSZWFkaW5n
IGEgdG9rZW46ICIpKTsKKyAgICAgIHl5Y2hhciA9IFlZTEVYOworICAgIH0KKworICBpZiAoeXlj
aGFyIDw9IFlZRU9GKQorICAgIHsKKyAgICAgIHl5Y2hhciA9IHl5dG9rZW4gPSBZWUVPRjsKKyAg
ICAgIFlZRFBSSU5URiAoKHN0ZGVyciwgIk5vdyBhdCBlbmQgb2YgaW5wdXQuXG4iKSk7CisgICAg
fQorICBlbHNlCisgICAgeworICAgICAgeXl0b2tlbiA9IFlZVFJBTlNMQVRFICh5eWNoYXIpOwor
ICAgICAgWVlfU1lNQk9MX1BSSU5UICgiTmV4dCB0b2tlbiBpcyIsIHl5dG9rZW4sICZ5eWx2YWws
ICZ5eWxsb2MpOworICAgIH0KKworICAvKiBJZiB0aGUgcHJvcGVyIGFjdGlvbiBvbiBzZWVpbmcg
dG9rZW4gWVlUT0tFTiBpcyB0byByZWR1Y2Ugb3IgdG8KKyAgICAgZGV0ZWN0IGFuIGVycm9yLCB0
YWtlIHRoYXQgYWN0aW9uLiAgKi8KKyAgeXluICs9IHl5dG9rZW47CisgIGlmICh5eW4gPCAwIHx8
IFlZTEFTVCA8IHl5biB8fCB5eWNoZWNrW3l5bl0gIT0geXl0b2tlbikKKyAgICBnb3RvIHl5ZGVm
YXVsdDsKKyAgeXluID0geXl0YWJsZVt5eW5dOworICBpZiAoeXluIDw9IDApCisgICAgeworICAg
ICAgaWYgKHl5biA9PSAwIHx8IHl5biA9PSBZWVRBQkxFX05JTkYpCisJZ290byB5eWVycmxhYjsK
KyAgICAgIHl5biA9IC15eW47CisgICAgICBnb3RvIHl5cmVkdWNlOworICAgIH0KKworICBpZiAo
eXluID09IFlZRklOQUwpCisgICAgWVlBQ0NFUFQ7CisKKyAgLyogQ291bnQgdG9rZW5zIHNoaWZ0
ZWQgc2luY2UgZXJyb3I7IGFmdGVyIHRocmVlLCB0dXJuIG9mZiBlcnJvcgorICAgICBzdGF0dXMu
ICAqLworICBpZiAoeXllcnJzdGF0dXMpCisgICAgeXllcnJzdGF0dXMtLTsKKworICAvKiBTaGlm
dCB0aGUgbG9vay1haGVhZCB0b2tlbi4gICovCisgIFlZX1NZTUJPTF9QUklOVCAoIlNoaWZ0aW5n
IiwgeXl0b2tlbiwgJnl5bHZhbCwgJnl5bGxvYyk7CisKKyAgLyogRGlzY2FyZCB0aGUgc2hpZnRl
ZCB0b2tlbiB1bmxlc3MgaXQgaXMgZW9mLiAgKi8KKyAgaWYgKHl5Y2hhciAhPSBZWUVPRikKKyAg
ICB5eWNoYXIgPSBZWUVNUFRZOworCisgIHl5c3RhdGUgPSB5eW47CisgICorK3l5dnNwID0geXls
dmFsOworICAqKyt5eWxzcCA9IHl5bGxvYzsKKyAgZ290byB5eW5ld3N0YXRlOworCisKKy8qLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0u
Cit8IHl5ZGVmYXVsdCAtLSBkbyB0aGUgZGVmYXVsdCBhY3Rpb24gZm9yIHRoZSBjdXJyZW50IHN0
YXRlLiAgfAorYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tKi8KK3l5ZGVmYXVsdDoKKyAgeXluID0geXlkZWZhY3RbeXlzdGF0ZV07Cisg
IGlmICh5eW4gPT0gMCkKKyAgICBnb3RvIHl5ZXJybGFiOworICBnb3RvIHl5cmVkdWNlOworCisK
Ky8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCit8IHl5cmVkdWNlIC0tIERvIGEgcmVk
dWN0aW9uLiAgfAorYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3l5cmVkdWNlOgor
ICAvKiB5eW4gaXMgdGhlIG51bWJlciBvZiBhIHJ1bGUgdG8gcmVkdWNlIHdpdGguICAqLworICB5
eWxlbiA9IHl5cjJbeXluXTsKKworICAvKiBJZiBZWUxFTiBpcyBub256ZXJvLCBpbXBsZW1lbnQg
dGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlIGFjdGlvbjoKKyAgICAgYCQkID0gJDEnLgorCisgICAg
IE90aGVyd2lzZSwgdGhlIGZvbGxvd2luZyBsaW5lIHNldHMgWVlWQUwgdG8gZ2FyYmFnZS4KKyAg
ICAgVGhpcyBiZWhhdmlvciBpcyB1bmRvY3VtZW50ZWQgYW5kIEJpc29uCisgICAgIHVzZXJzIHNo
b3VsZCBub3QgcmVseSB1cG9uIGl0LiAgQXNzaWduaW5nIHRvIFlZVkFMCisgICAgIHVuY29uZGl0
aW9uYWxseSBtYWtlcyB0aGUgcGFyc2VyIGEgYml0IHNtYWxsZXIsIGFuZCBpdCBhdm9pZHMgYQor
ICAgICBHQ0Mgd2FybmluZyB0aGF0IFlZVkFMIG1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQuICAq
LworICB5eXZhbCA9IHl5dnNwWzEteXlsZW5dOworCisgIC8qIERlZmF1bHQgbG9jYXRpb24uICAq
LworICBZWUxMT0NfREVGQVVMVCAoeXlsb2MsICh5eWxzcCAtIHl5bGVuKSwgeXlsZW4pOworICBZ
WV9SRURVQ0VfUFJJTlQgKHl5bik7CisgIHN3aXRjaCAoeXluKQorICAgIHsKKyAgICAgICAgY2Fz
ZSA3OgorCisgICAgeworICAgICAgICAvLyBUT0RPKGFsb2twKTogRXhwYW5kIG1hY3Jvcy4KKyAg
ICAgICAgcHA6OlRva2VuVmVjdG9yKiBvdXQgPSBjb250ZXh0LT5vdXRwdXQoKTsKKyAgICAgICAg
b3V0LT5pbnNlcnQob3V0LT5lbmQoKSwgKHl5dnNwWygxKSAtICgyKV0udGxpc3QpLT5iZWdpbigp
LCAoeXl2c3BbKDEpIC0gKDIpXS50bGlzdCktPmVuZCgpKTsKKyAgICAgICAgZGVsZXRlICh5eXZz
cFsoMSkgLSAoMildLnRsaXN0KTsKKyAgICA7fQorICAgIGJyZWFrOworCisgIGNhc2UgOToKKwor
ICAgIHsKKyAgICAgICAgY29udGV4dC0+ZGVmaW5lTWFjcm8oKHl5bHNwWygxKSAtICgzKV0pLmZp
cnN0X2xpbmUsIHBwOjpNYWNybzo6a1R5cGVPYmosICh5eXZzcFsoMSkgLSAoMyldLnN2YWwpLCBO
VUxMLCAoeXl2c3BbKDIpIC0gKDMpXS50bGlzdCkpOworICAgIDt9CisgICAgYnJlYWs7CisKKyAg
Y2FzZSAxMDoKKworICAgIHsKKyAgICAgICAgY29udGV4dC0+ZGVmaW5lTWFjcm8oKHl5bHNwWygx
KSAtICg2KV0pLmZpcnN0X2xpbmUsIHBwOjpNYWNybzo6a1R5cGVGdW5jLCAoeXl2c3BbKDEpIC0g
KDYpXS5zdmFsKSwgKHl5dnNwWygzKSAtICg2KV0udGxpc3QpLCAoeXl2c3BbKDUpIC0gKDYpXS50
bGlzdCkpOworICAgIDt9CisgICAgYnJlYWs7CisKKyAgY2FzZSAxMToKKworICAgIHsKKyAgICAg
ICAgY29udGV4dC0+dW5kZWZpbmVNYWNybygoeXl2c3BbKDIpIC0gKDMpXS5zdmFsKSk7CisgICAg
O30KKyAgICBicmVhazsKKworICBjYXNlIDEyOgorCisgICAgeworICAgICAgICBwdXNoQ29uZGl0
aW9uYWxCbG9jayhjb250ZXh0LCAoeXl2c3BbKDIpIC0gKDMpXS50bGlzdCkgPyB0cnVlIDogZmFs
c2UpOworICAgIDt9CisgICAgYnJlYWs7CisKKyAgY2FzZSAxMzoKKworICAgIHsKKyAgICAgICAg
cHVzaENvbmRpdGlvbmFsQmxvY2soY29udGV4dCwgY29udGV4dC0+aXNNYWNyb0RlZmluZWQoKHl5
dnNwWygyKSAtICgzKV0uc3ZhbCkpKTsKKyAgICA7fQorICAgIGJyZWFrOworCisgIGNhc2UgMTQ6
CisKKyAgICB7CisgICAgICAgIHB1c2hDb25kaXRpb25hbEJsb2NrKGNvbnRleHQsICFjb250ZXh0
LT5pc01hY3JvRGVmaW5lZCgoeXl2c3BbKDIpIC0gKDMpXS5zdmFsKSkpOworICAgIDt9CisgICAg
YnJlYWs7CisKKyAgY2FzZSAxNToKKworICAgIHsKKyAgICA7fQorICAgIGJyZWFrOworCisgIGNh
c2UgMTY6CisKKyAgICB7CisgICAgO30KKyAgICBicmVhazsKKworICBjYXNlIDE3OgorCisgICAg
eworICAgICAgICBwb3BDb25kaXRpb25hbEJsb2NrKGNvbnRleHQpOworICAgIDt9CisgICAgYnJl
YWs7CisKKyAgY2FzZSAyMzoKKworICAgIHsgKHl5dmFsLnRsaXN0KSA9IE5VTEw7IDt9CisgICAg
YnJlYWs7CisKKyAgY2FzZSAyNToKKworICAgIHsgKHl5dmFsLnRsaXN0KSA9IE5VTEw7IDt9Cisg
ICAgYnJlYWs7CisKKyAgY2FzZSAyNjoKKworICAgIHsKKyAgICAgICAgKHl5dmFsLnRsaXN0KSA9
IG5ldyBwcDo6VG9rZW5WZWN0b3I7CisgICAgICAgICh5eXZhbC50bGlzdCktPnB1c2hfYmFjayhu
ZXcgcHA6OlRva2VuKCh5eWxzcFsoMSkgLSAoMSldKS5maXJzdF9saW5lLCBJREVOVElGSUVSLCAo
eXl2c3BbKDEpIC0gKDEpXS5zdmFsKSkpOworICAgIDt9CisgICAgYnJlYWs7CisKKyAgY2FzZSAy
NzoKKworICAgIHsKKyAgICAgICAgKHl5dmFsLnRsaXN0KSA9ICh5eXZzcFsoMSkgLSAoMyldLnRs
aXN0KTsKKyAgICAgICAgKHl5dmFsLnRsaXN0KS0+cHVzaF9iYWNrKG5ldyBwcDo6VG9rZW4oKHl5
bHNwWygzKSAtICgzKV0pLmZpcnN0X2xpbmUsIElERU5USUZJRVIsICh5eXZzcFsoMykgLSAoMyld
LnN2YWwpKSk7CisgICAgO30KKyAgICBicmVhazsKKworICBjYXNlIDI4OgorCisgICAgeworICAg
ICAgICAoeXl2YWwudGxpc3QpID0gbmV3IHBwOjpUb2tlblZlY3RvcjsKKyAgICAgICAgKHl5dmFs
LnRsaXN0KS0+cHVzaF9iYWNrKCh5eXZzcFsoMSkgLSAoMSldLnR2YWwpKTsKKyAgICA7fQorICAg
IGJyZWFrOworCisgIGNhc2UgMjk6CisKKyAgICB7CisgICAgICAgICh5eXZhbC50bGlzdCkgPSAo
eXl2c3BbKDEpIC0gKDIpXS50bGlzdCk7CisgICAgICAgICh5eXZhbC50bGlzdCktPnB1c2hfYmFj
aygoeXl2c3BbKDIpIC0gKDIpXS50dmFsKSk7CisgICAgO30KKyAgICBicmVhazsKKworICBjYXNl
IDMwOgorCisgICAgeworICAgICAgICAoeXl2YWwudGxpc3QpID0gbmV3IHBwOjpUb2tlblZlY3Rv
cjsKKyAgICAgICAgKHl5dmFsLnRsaXN0KS0+cHVzaF9iYWNrKCh5eXZzcFsoMSkgLSAoMSldLnR2
YWwpKTsKKyAgICA7fQorICAgIGJyZWFrOworCisgIGNhc2UgMzE6CisKKyAgICB7CisgICAgICAg
ICh5eXZhbC50bGlzdCkgPSAoeXl2c3BbKDEpIC0gKDIpXS50bGlzdCk7CisgICAgICAgICh5eXZh
bC50bGlzdCktPnB1c2hfYmFjaygoeXl2c3BbKDIpIC0gKDIpXS50dmFsKSk7CisgICAgO30KKyAg
ICBicmVhazsKKworICBjYXNlIDMyOgorCisgICAgeworICAgIDt9CisgICAgYnJlYWs7CisKKyAg
Y2FzZSAzMzoKKworICAgIHsKKyAgICA7fQorICAgIGJyZWFrOworCisgIGNhc2UgMzU6CisKKyAg
ICB7CisgICAgICAgICh5eXZhbC50dmFsKSA9IG5ldyBwcDo6VG9rZW4oKHl5bHNwWygxKSAtICgx
KV0pLmZpcnN0X2xpbmUsICh5eXZzcFsoMSkgLSAoMSldLml2YWwpLCBOVUxMKTsKKyAgICA7fQor
ICAgIGJyZWFrOworCisgIGNhc2UgMzY6CisKKyAgICB7CisgICAgICAgICh5eXZhbC50dmFsKSA9
IG5ldyBwcDo6VG9rZW4oKHl5bHNwWygxKSAtICgxKV0pLmZpcnN0X2xpbmUsIElOVF9DT05TVEFO
VCwgKHl5dnNwWygxKSAtICgxKV0uc3ZhbCkpOworICAgIDt9CisgICAgYnJlYWs7CisKKyAgY2Fz
ZSAzNzoKKworICAgIHsKKyAgICAgICAgKHl5dmFsLnR2YWwpID0gbmV3IHBwOjpUb2tlbigoeXls
c3BbKDEpIC0gKDEpXSkuZmlyc3RfbGluZSwgRkxPQVRfQ09OU1RBTlQsICh5eXZzcFsoMSkgLSAo
MSldLnN2YWwpKTsKKyAgICA7fQorICAgIGJyZWFrOworCisgIGNhc2UgMzg6CisKKyAgICB7Cisg
ICAgICAgICh5eXZhbC50dmFsKSA9IG5ldyBwcDo6VG9rZW4oKHl5bHNwWygxKSAtICgxKV0pLmZp
cnN0X2xpbmUsIElERU5USUZJRVIsICh5eXZzcFsoMSkgLSAoMSldLnN2YWwpKTsKKyAgICA7fQor
ICAgIGJyZWFrOworCisgIGNhc2UgMzk6CisKKyAgICB7ICh5eXZhbC5pdmFsKSA9ICdbJzsgO30K
KyAgICBicmVhazsKKworICBjYXNlIDQwOgorCisgICAgeyAoeXl2YWwuaXZhbCkgPSAnXSc7IDt9
CisgICAgYnJlYWs7CisKKyAgY2FzZSA0MToKKworICAgIHsgKHl5dmFsLml2YWwpID0gJzwnOyA7
fQorICAgIGJyZWFrOworCisgIGNhc2UgNDI6CisKKyAgICB7ICh5eXZhbC5pdmFsKSA9ICc+Jzsg
O30KKyAgICBicmVhazsKKworICBjYXNlIDQzOgorCisgICAgeyAoeXl2YWwuaXZhbCkgPSAnKCc7
IDt9CisgICAgYnJlYWs7CisKKyAgY2FzZSA0NDoKKworICAgIHsgKHl5dmFsLml2YWwpID0gJykn
OyA7fQorICAgIGJyZWFrOworCisgIGNhc2UgNDU6CisKKyAgICB7ICh5eXZhbC5pdmFsKSA9ICd7
JzsgO30KKyAgICBicmVhazsKKworICBjYXNlIDQ2OgorCisgICAgeyAoeXl2YWwuaXZhbCkgPSAn
fSc7IDt9CisgICAgYnJlYWs7CisKKyAgY2FzZSA0NzoKKworICAgIHsgKHl5dmFsLml2YWwpID0g
Jy4nOyA7fQorICAgIGJyZWFrOworCisgIGNhc2UgNDg6CisKKyAgICB7ICh5eXZhbC5pdmFsKSA9
ICcrJzsgO30KKyAgICBicmVhazsKKworICBjYXNlIDQ5OgorCisgICAgeyAoeXl2YWwuaXZhbCkg
PSAnLSc7IDt9CisgICAgYnJlYWs7CisKKyAgY2FzZSA1MDoKKworICAgIHsgKHl5dmFsLml2YWwp
ID0gJy8nOyA7fQorICAgIGJyZWFrOworCisgIGNhc2UgNTE6CisKKyAgICB7ICh5eXZhbC5pdmFs
KSA9ICcqJzsgO30KKyAgICBicmVhazsKKworICBjYXNlIDUyOgorCisgICAgeyAoeXl2YWwuaXZh
bCkgPSAnJSc7IDt9CisgICAgYnJlYWs7CisKKyAgY2FzZSA1MzoKKworICAgIHsgKHl5dmFsLml2
YWwpID0gJ14nOyA7fQorICAgIGJyZWFrOworCisgIGNhc2UgNTQ6CisKKyAgICB7ICh5eXZhbC5p
dmFsKSA9ICd8JzsgO30KKyAgICBicmVhazsKKworICBjYXNlIDU1OgorCisgICAgeyAoeXl2YWwu
aXZhbCkgPSAnJic7IDt9CisgICAgYnJlYWs7CisKKyAgY2FzZSA1NjoKKworICAgIHsgKHl5dmFs
Lml2YWwpID0gJ34nOyA7fQorICAgIGJyZWFrOworCisgIGNhc2UgNTc6CisKKyAgICB7ICh5eXZh
bC5pdmFsKSA9ICc9JzsgO30KKyAgICBicmVhazsKKworICBjYXNlIDU4OgorCisgICAgeyAoeXl2
YWwuaXZhbCkgPSAnISc7IDt9CisgICAgYnJlYWs7CisKKyAgY2FzZSA1OToKKworICAgIHsgKHl5
dmFsLml2YWwpID0gJzonOyA7fQorICAgIGJyZWFrOworCisgIGNhc2UgNjA6CisKKyAgICB7ICh5
eXZhbC5pdmFsKSA9ICc7JzsgO30KKyAgICBicmVhazsKKworICBjYXNlIDYxOgorCisgICAgeyAo
eXl2YWwuaXZhbCkgPSAnLCc7IDt9CisgICAgYnJlYWs7CisKKyAgY2FzZSA2MjoKKworICAgIHsg
KHl5dmFsLml2YWwpID0gJz8nOyA7fQorICAgIGJyZWFrOworCisKKy8qIExpbmUgMTI2NyBvZiB5
YWNjLmMuICAqLworCisgICAgICBkZWZhdWx0OiBicmVhazsKKyAgICB9CisgIFlZX1NZTUJPTF9Q
UklOVCAoIi0+ICQkID0iLCB5eXIxW3l5bl0sICZ5eXZhbCwgJnl5bG9jKTsKKworICBZWVBPUFNU
QUNLICh5eWxlbik7CisgIHl5bGVuID0gMDsKKyAgWVlfU1RBQ0tfUFJJTlQgKHl5c3MsIHl5c3Nw
KTsKKworICAqKyt5eXZzcCA9IHl5dmFsOworICAqKyt5eWxzcCA9IHl5bG9jOworCisgIC8qIE5v
dyBgc2hpZnQnIHRoZSByZXN1bHQgb2YgdGhlIHJlZHVjdGlvbi4gIERldGVybWluZSB3aGF0IHN0
YXRlCisgICAgIHRoYXQgZ29lcyB0bywgYmFzZWQgb24gdGhlIHN0YXRlIHdlIHBvcHBlZCBiYWNr
IHRvIGFuZCB0aGUgcnVsZQorICAgICBudW1iZXIgcmVkdWNlZCBieS4gICovCisKKyAgeXluID0g
eXlyMVt5eW5dOworCisgIHl5c3RhdGUgPSB5eXBnb3RvW3l5biAtIFlZTlRPS0VOU10gKyAqeXlz
c3A7CisgIGlmICgwIDw9IHl5c3RhdGUgJiYgeXlzdGF0ZSA8PSBZWUxBU1QgJiYgeXljaGVja1t5
eXN0YXRlXSA9PSAqeXlzc3ApCisgICAgeXlzdGF0ZSA9IHl5dGFibGVbeXlzdGF0ZV07CisgIGVs
c2UKKyAgICB5eXN0YXRlID0geXlkZWZnb3RvW3l5biAtIFlZTlRPS0VOU107CisKKyAgZ290byB5
eW5ld3N0YXRlOworCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgor
fCB5eWVycmxhYiAtLSBoZXJlIG9uIGRldGVjdGluZyBlcnJvciB8CitgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3l5ZXJybGFiOgorICAvKiBJZiBub3QgYWxyZWFkeSBy
ZWNvdmVyaW5nIGZyb20gYW4gZXJyb3IsIHJlcG9ydCB0aGlzIGVycm9yLiAgKi8KKyAgaWYgKCF5
eWVycnN0YXR1cykKKyAgICB7CisgICAgICArK3l5bmVycnM7CisjaWYgISBZWUVSUk9SX1ZFUkJP
U0UKKyAgICAgIHl5ZXJyb3IgKCZ5eWxsb2MsIGNvbnRleHQsIFlZXygic3ludGF4IGVycm9yIikp
OworI2Vsc2UKKyAgICAgIHsKKwlZWVNJWkVfVCB5eXNpemUgPSB5eXN5bnRheF9lcnJvciAoMCwg
eXlzdGF0ZSwgeXljaGFyKTsKKwlpZiAoeXltc2dfYWxsb2MgPCB5eXNpemUgJiYgeXltc2dfYWxs
b2MgPCBZWVNUQUNLX0FMTE9DX01BWElNVU0pCisJICB7CisJICAgIFlZU0laRV9UIHl5YWxsb2Mg
PSAyICogeXlzaXplOworCSAgICBpZiAoISAoeXlzaXplIDw9IHl5YWxsb2MgJiYgeXlhbGxvYyA8
PSBZWVNUQUNLX0FMTE9DX01BWElNVU0pKQorCSAgICAgIHl5YWxsb2MgPSBZWVNUQUNLX0FMTE9D
X01BWElNVU07CisJICAgIGlmICh5eW1zZyAhPSB5eW1zZ2J1ZikKKwkgICAgICBZWVNUQUNLX0ZS
RUUgKHl5bXNnKTsKKwkgICAgeXltc2cgPSAoY2hhciAqKSBZWVNUQUNLX0FMTE9DICh5eWFsbG9j
KTsKKwkgICAgaWYgKHl5bXNnKQorCSAgICAgIHl5bXNnX2FsbG9jID0geXlhbGxvYzsKKwkgICAg
ZWxzZQorCSAgICAgIHsKKwkJeXltc2cgPSB5eW1zZ2J1ZjsKKwkJeXltc2dfYWxsb2MgPSBzaXpl
b2YgeXltc2didWY7CisJICAgICAgfQorCSAgfQorCisJaWYgKDAgPCB5eXNpemUgJiYgeXlzaXpl
IDw9IHl5bXNnX2FsbG9jKQorCSAgeworCSAgICAodm9pZCkgeXlzeW50YXhfZXJyb3IgKHl5bXNn
LCB5eXN0YXRlLCB5eWNoYXIpOworCSAgICB5eWVycm9yICgmeXlsbG9jLCBjb250ZXh0LCB5eW1z
Zyk7CisJICB9CisJZWxzZQorCSAgeworCSAgICB5eWVycm9yICgmeXlsbG9jLCBjb250ZXh0LCBZ
WV8oInN5bnRheCBlcnJvciIpKTsKKwkgICAgaWYgKHl5c2l6ZSAhPSAwKQorCSAgICAgIGdvdG8g
eXlleGhhdXN0ZWRsYWI7CisJICB9CisgICAgICB9CisjZW5kaWYKKyAgICB9CisKKyAgeXllcnJv
cl9yYW5nZVswXSA9IHl5bGxvYzsKKworICBpZiAoeXllcnJzdGF0dXMgPT0gMykKKyAgICB7Cisg
ICAgICAvKiBJZiBqdXN0IHRyaWVkIGFuZCBmYWlsZWQgdG8gcmV1c2UgbG9vay1haGVhZCB0b2tl
biBhZnRlciBhbgorCSBlcnJvciwgZGlzY2FyZCBpdC4gICovCisKKyAgICAgIGlmICh5eWNoYXIg
PD0gWVlFT0YpCisJeworCSAgLyogUmV0dXJuIGZhaWx1cmUgaWYgYXQgZW5kIG9mIGlucHV0LiAg
Ki8KKwkgIGlmICh5eWNoYXIgPT0gWVlFT0YpCisJICAgIFlZQUJPUlQ7CisJfQorICAgICAgZWxz
ZQorCXsKKwkgIHl5ZGVzdHJ1Y3QgKCJFcnJvcjogZGlzY2FyZGluZyIsCisJCSAgICAgIHl5dG9r
ZW4sICZ5eWx2YWwsICZ5eWxsb2MsIGNvbnRleHQpOworCSAgeXljaGFyID0gWVlFTVBUWTsKKwl9
CisgICAgfQorCisgIC8qIEVsc2Ugd2lsbCB0cnkgdG8gcmV1c2UgbG9vay1haGVhZCB0b2tlbiBh
ZnRlciBzaGlmdGluZyB0aGUgZXJyb3IKKyAgICAgdG9rZW4uICAqLworICBnb3RvIHl5ZXJybGFi
MTsKKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS4KK3wgeXllcnJvcmxhYiAtLSBlcnJvciByYWlzZWQgZXhwbGljaXRseSBieSBZWUVSUk9S
LiAgfAorYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSovCit5eWVycm9ybGFiOgorCisgIC8qIFBhY2lmeSBjb21waWxlcnMgbGlrZSBHQ0Mgd2hlbiB0
aGUgdXNlciBjb2RlIG5ldmVyIGludm9rZXMKKyAgICAgWVlFUlJPUiBhbmQgdGhlIGxhYmVsIHl5
ZXJyb3JsYWIgdGhlcmVmb3JlIG5ldmVyIGFwcGVhcnMgaW4gdXNlcgorICAgICBjb2RlLiAgKi8K
KyAgaWYgKC8qQ09OU1RDT05EKi8gMCkKKyAgICAgZ290byB5eWVycm9ybGFiOworCisgIHl5ZXJy
b3JfcmFuZ2VbMF0gPSB5eWxzcFsxLXl5bGVuXTsKKyAgLyogRG8gbm90IHJlY2xhaW0gdGhlIHN5
bWJvbHMgb2YgdGhlIHJ1bGUgd2hpY2ggYWN0aW9uIHRyaWdnZXJlZAorICAgICB0aGlzIFlZRVJS
T1IuICAqLworICBZWVBPUFNUQUNLICh5eWxlbik7CisgIHl5bGVuID0gMDsKKyAgWVlfU1RBQ0tf
UFJJTlQgKHl5c3MsIHl5c3NwKTsKKyAgeXlzdGF0ZSA9ICp5eXNzcDsKKyAgZ290byB5eWVycmxh
YjE7CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLgorfCB5eWVycmxhYjEgLS0gY29tbW9uIGNvZGUgZm9yIGJvdGggc3lu
dGF4IGVycm9yIGFuZCBZWUVSUk9SLiAgfAorYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworeXllcnJsYWIxOgorICB5eWVycnN0
YXR1cyA9IDM7CS8qIEVhY2ggcmVhbCB0b2tlbiBzaGlmdGVkIGRlY3JlbWVudHMgdGhpcy4gICov
CisKKyAgZm9yICg7OykKKyAgICB7CisgICAgICB5eW4gPSB5eXBhY3RbeXlzdGF0ZV07CisgICAg
ICBpZiAoeXluICE9IFlZUEFDVF9OSU5GKQorCXsKKwkgIHl5biArPSBZWVRFUlJPUjsKKwkgIGlm
ICgwIDw9IHl5biAmJiB5eW4gPD0gWVlMQVNUICYmIHl5Y2hlY2tbeXluXSA9PSBZWVRFUlJPUikK
KwkgICAgeworCSAgICAgIHl5biA9IHl5dGFibGVbeXluXTsKKwkgICAgICBpZiAoMCA8IHl5bikK
KwkJYnJlYWs7CisJICAgIH0KKwl9CisKKyAgICAgIC8qIFBvcCB0aGUgY3VycmVudCBzdGF0ZSBi
ZWNhdXNlIGl0IGNhbm5vdCBoYW5kbGUgdGhlIGVycm9yIHRva2VuLiAgKi8KKyAgICAgIGlmICh5
eXNzcCA9PSB5eXNzKQorCVlZQUJPUlQ7CisKKyAgICAgIHl5ZXJyb3JfcmFuZ2VbMF0gPSAqeXls
c3A7CisgICAgICB5eWRlc3RydWN0ICgiRXJyb3I6IHBvcHBpbmciLAorCQkgIHl5c3Rvc1t5eXN0
YXRlXSwgeXl2c3AsIHl5bHNwLCBjb250ZXh0KTsKKyAgICAgIFlZUE9QU1RBQ0sgKDEpOworICAg
ICAgeXlzdGF0ZSA9ICp5eXNzcDsKKyAgICAgIFlZX1NUQUNLX1BSSU5UICh5eXNzLCB5eXNzcCk7
CisgICAgfQorCisgIGlmICh5eW4gPT0gWVlGSU5BTCkKKyAgICBZWUFDQ0VQVDsKKworICAqKyt5
eXZzcCA9IHl5bHZhbDsKKworICB5eWVycm9yX3JhbmdlWzFdID0geXlsbG9jOworICAvKiBVc2lu
ZyBZWUxMT0MgaXMgdGVtcHRpbmcsIGJ1dCB3b3VsZCBjaGFuZ2UgdGhlIGxvY2F0aW9uIG9mCisg
ICAgIHRoZSBsb29rLWFoZWFkLiAgWVlMT0MgaXMgYXZhaWxhYmxlIHRob3VnaC4gICovCisgIFlZ
TExPQ19ERUZBVUxUICh5eWxvYywgKHl5ZXJyb3JfcmFuZ2UgLSAxKSwgMik7CisgICorK3l5bHNw
ID0geXlsb2M7CisKKyAgLyogU2hpZnQgdGhlIGVycm9yIHRva2VuLiAgKi8KKyAgWVlfU1lNQk9M
X1BSSU5UICgiU2hpZnRpbmciLCB5eXN0b3NbeXluXSwgeXl2c3AsIHl5bHNwKTsKKworICB5eXN0
YXRlID0geXluOworICBnb3RvIHl5bmV3c3RhdGU7CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLgorfCB5eWFjY2VwdGxhYiAtLSBZWUFDQ0VQVCBjb21lcyBoZXJl
LiAgfAorYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworeXlhY2NlcHRs
YWI6CisgIHl5cmVzdWx0ID0gMDsKKyAgZ290byB5eXJldHVybjsKKworLyotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KK3wgeXlhYm9ydGxhYiAtLSBZWUFCT1JUIGNvbWVzIGhl
cmUuICB8CitgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworeXlhYm9ydGxh
YjoKKyAgeXlyZXN1bHQgPSAxOworICBnb3RvIHl5cmV0dXJuOworCisjaWZuZGVmIHl5b3ZlcmZs
b3cKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4K
K3wgeXlleGhhdXN0ZWRsYWIgLS0gbWVtb3J5IGV4aGF1c3Rpb24gY29tZXMgaGVyZS4gIHwKK2At
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3l5ZXho
YXVzdGVkbGFiOgorICB5eWVycm9yICgmeXlsbG9jLCBjb250ZXh0LCBZWV8oIm1lbW9yeSBleGhh
dXN0ZWQiKSk7CisgIHl5cmVzdWx0ID0gMjsKKyAgLyogRmFsbCB0aHJvdWdoLiAgKi8KKyNlbmRp
ZgorCit5eXJldHVybjoKKyAgaWYgKHl5Y2hhciAhPSBZWUVPRiAmJiB5eWNoYXIgIT0gWVlFTVBU
WSkKKyAgICAgeXlkZXN0cnVjdCAoIkNsZWFudXA6IGRpc2NhcmRpbmcgbG9va2FoZWFkIiwKKwkJ
IHl5dG9rZW4sICZ5eWx2YWwsICZ5eWxsb2MsIGNvbnRleHQpOworICAvKiBEbyBub3QgcmVjbGFp
bSB0aGUgc3ltYm9scyBvZiB0aGUgcnVsZSB3aGljaCBhY3Rpb24gdHJpZ2dlcmVkCisgICAgIHRo
aXMgWVlBQk9SVCBvciBZWUFDQ0VQVC4gICovCisgIFlZUE9QU1RBQ0sgKHl5bGVuKTsKKyAgWVlf
U1RBQ0tfUFJJTlQgKHl5c3MsIHl5c3NwKTsKKyAgd2hpbGUgKHl5c3NwICE9IHl5c3MpCisgICAg
eworICAgICAgeXlkZXN0cnVjdCAoIkNsZWFudXA6IHBvcHBpbmciLAorCQkgIHl5c3Rvc1sqeXlz
c3BdLCB5eXZzcCwgeXlsc3AsIGNvbnRleHQpOworICAgICAgWVlQT1BTVEFDSyAoMSk7CisgICAg
fQorI2lmbmRlZiB5eW92ZXJmbG93CisgIGlmICh5eXNzICE9IHl5c3NhKQorICAgIFlZU1RBQ0tf
RlJFRSAoeXlzcyk7CisjZW5kaWYKKyNpZiBZWUVSUk9SX1ZFUkJPU0UKKyAgaWYgKHl5bXNnICE9
IHl5bXNnYnVmKQorICAgIFlZU1RBQ0tfRlJFRSAoeXltc2cpOworI2VuZGlmCisgIC8qIE1ha2Ug
c3VyZSBZWUlEIGlzIHVzZWQuICAqLworICByZXR1cm4gWVlJRCAoeXlyZXN1bHQpOworfQorCisK
KworCisKK3ZvaWQgeXllcnJvcihZWUxUWVBFKiBsbG9jcCwgcHA6OkNvbnRleHQqIGNvbnRleHQs
IGNvbnN0IGNoYXIqIHJlYXNvbikKK3sKK30KKwordm9pZCBwdXNoQ29uZGl0aW9uYWxCbG9jayhw
cDo6Q29udGV4dCogY29udGV4dCwgYm9vbCBjb25kaXRpb24pCit7Cit9CisKK3ZvaWQgcG9wQ29u
ZGl0aW9uYWxCbG9jayhwcDo6Q29udGV4dCogY29udGV4dCkKK3sKK30KKworbmFtZXNwYWNlIHBw
IHsKK2Jvb2wgQ29udGV4dDo6cGFyc2UoKQoreworICAgIHl5ZGVidWcgPSAxOworICAgIHJldHVy
biB5eXBhcnNlKHRoaXMpID09IDAgPyB0cnVlIDogZmFsc2U7Cit9Cit9ICAvLyBuYW1lc3BhY2Ug
cHAKKworCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
cHJlcHJvY2Vzc29yL25ldy9wcF90YWIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9j
b21waWxlci9wcmVwcm9jZXNzb3IvbmV3L3BwX3RhYi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjllNTM0MTk3ZWY4
MDE4YzQ4OWVlNTQ2OGU0NzJjYzM5YTBkY2I0NWYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL25ldy9wcF90YWIuaApA
QCAtMCwwICsxLDExOSBAQAorLyogQSBCaXNvbiBwYXJzZXIsIG1hZGUgYnkgR05VIEJpc29uIDIu
My4gICovCisKKy8qIFNrZWxldG9uIGludGVyZmFjZSBmb3IgQmlzb24ncyBZYWNjLWxpa2UgcGFy
c2VycyBpbiBDCisKKyAgIENvcHlyaWdodCAoQykgMTk4NCwgMTk4OSwgMTk5MCwgMjAwMCwgMjAw
MSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNgorICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICAgdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9u
KQorICAgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl
ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgYnV0IFdJVEhPVVQgQU5Z
IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgIE1FUkNI
QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK
KyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUg
RnJlZSBTb2Z0d2FyZQorICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLiAgKi8KKworLyogQXMg
YSBzcGVjaWFsIGV4Y2VwdGlvbiwgeW91IG1heSBjcmVhdGUgYSBsYXJnZXIgd29yayB0aGF0IGNv
bnRhaW5zCisgICBwYXJ0IG9yIGFsbCBvZiB0aGUgQmlzb24gcGFyc2VyIHNrZWxldG9uIGFuZCBk
aXN0cmlidXRlIHRoYXQgd29yaworICAgdW5kZXIgdGVybXMgb2YgeW91ciBjaG9pY2UsIHNvIGxv
bmcgYXMgdGhhdCB3b3JrIGlzbid0IGl0c2VsZiBhCisgICBwYXJzZXIgZ2VuZXJhdG9yIHVzaW5n
IHRoZSBza2VsZXRvbiBvciBhIG1vZGlmaWVkIHZlcnNpb24gdGhlcmVvZgorICAgYXMgYSBwYXJz
ZXIgc2tlbGV0b24uICBBbHRlcm5hdGl2ZWx5LCBpZiB5b3UgbW9kaWZ5IG9yIHJlZGlzdHJpYnV0
ZQorICAgdGhlIHBhcnNlciBza2VsZXRvbiBpdHNlbGYsIHlvdSBtYXkgKGF0IHlvdXIgb3B0aW9u
KSByZW1vdmUgdGhpcworICAgc3BlY2lhbCBleGNlcHRpb24sIHdoaWNoIHdpbGwgY2F1c2UgdGhl
IHNrZWxldG9uIGFuZCB0aGUgcmVzdWx0aW5nCisgICBCaXNvbiBvdXRwdXQgZmlsZXMgdG8gYmUg
bGljZW5zZWQgdW5kZXIgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYworICAgTGljZW5zZSB3aXRob3V0
IHRoaXMgc3BlY2lhbCBleGNlcHRpb24uCisKKyAgIFRoaXMgc3BlY2lhbCBleGNlcHRpb24gd2Fz
IGFkZGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gaW4KKyAgIHZlcnNpb24gMi4y
IG9mIEJpc29uLiAgKi8KKworLyogVG9rZW5zLiAgKi8KKyNpZm5kZWYgWVlUT0tFTlRZUEUKKyMg
ZGVmaW5lIFlZVE9LRU5UWVBFCisgICAvKiBQdXQgdGhlIHRva2VucyBpbnRvIHRoZSBzeW1ib2wg
dGFibGUsIHNvIHRoYXQgR0RCIGFuZCBvdGhlciBkZWJ1Z2dlcnMKKyAgICAgIGtub3cgYWJvdXQg
dGhlbS4gICovCisgICBlbnVtIHl5dG9rZW50eXBlIHsKKyAgICAgSEFTSCA9IDI1OCwKKyAgICAg
SEFTSF9VTkRFRiA9IDI1OSwKKyAgICAgSEFTSF9JRiA9IDI2MCwKKyAgICAgSEFTSF9JRkRFRiA9
IDI2MSwKKyAgICAgSEFTSF9JRk5ERUYgPSAyNjIsCisgICAgIEhBU0hfRUxTRSA9IDI2MywKKyAg
ICAgSEFTSF9FTElGID0gMjY0LAorICAgICBIQVNIX0VORElGID0gMjY1LAorICAgICBERUZJTkVE
ID0gMjY2LAorICAgICBIQVNIX0VSUk9SID0gMjY3LAorICAgICBIQVNIX1BSQUdNQSA9IDI2OCwK
KyAgICAgSEFTSF9FWFRFTlNJT04gPSAyNjksCisgICAgIEhBU0hfVkVSU0lPTiA9IDI3MCwKKyAg
ICAgSEFTSF9MSU5FID0gMjcxLAorICAgICBIQVNIX0RFRklORV9PQkogPSAyNzIsCisgICAgIEhB
U0hfREVGSU5FX0ZVTkMgPSAyNzMsCisgICAgIElOVF9DT05TVEFOVCA9IDI3NCwKKyAgICAgRkxP
QVRfQ09OU1RBTlQgPSAyNzUsCisgICAgIElERU5USUZJRVIgPSAyNzYKKyAgIH07CisjZW5kaWYK
Ky8qIFRva2Vucy4gICovCisjZGVmaW5lIEhBU0ggMjU4CisjZGVmaW5lIEhBU0hfVU5ERUYgMjU5
CisjZGVmaW5lIEhBU0hfSUYgMjYwCisjZGVmaW5lIEhBU0hfSUZERUYgMjYxCisjZGVmaW5lIEhB
U0hfSUZOREVGIDI2MgorI2RlZmluZSBIQVNIX0VMU0UgMjYzCisjZGVmaW5lIEhBU0hfRUxJRiAy
NjQKKyNkZWZpbmUgSEFTSF9FTkRJRiAyNjUKKyNkZWZpbmUgREVGSU5FRCAyNjYKKyNkZWZpbmUg
SEFTSF9FUlJPUiAyNjcKKyNkZWZpbmUgSEFTSF9QUkFHTUEgMjY4CisjZGVmaW5lIEhBU0hfRVhU
RU5TSU9OIDI2OQorI2RlZmluZSBIQVNIX1ZFUlNJT04gMjcwCisjZGVmaW5lIEhBU0hfTElORSAy
NzEKKyNkZWZpbmUgSEFTSF9ERUZJTkVfT0JKIDI3MgorI2RlZmluZSBIQVNIX0RFRklORV9GVU5D
IDI3MworI2RlZmluZSBJTlRfQ09OU1RBTlQgMjc0CisjZGVmaW5lIEZMT0FUX0NPTlNUQU5UIDI3
NQorI2RlZmluZSBJREVOVElGSUVSIDI3NgorCisKKworCisjaWYgISBkZWZpbmVkIFlZU1RZUEUg
JiYgISBkZWZpbmVkIFlZU1RZUEVfSVNfREVDTEFSRUQKK3R5cGVkZWYgdW5pb24gWVlTVFlQRQor
Cit7CisgICAgaW50IGl2YWw7CisgICAgc3RkOjpzdHJpbmcqIHN2YWw7CisgICAgcHA6OlRva2Vu
KiB0dmFsOworICAgIHBwOjpUb2tlblZlY3RvciogdGxpc3Q7Cit9CisvKiBMaW5lIDE0ODkgb2Yg
eWFjYy5jLiAgKi8KKworCVlZU1RZUEU7CisjIGRlZmluZSB5eXN0eXBlIFlZU1RZUEUgLyogb2Jz
b2xlc2NlbnQ7IHdpbGwgYmUgd2l0aGRyYXduICovCisjIGRlZmluZSBZWVNUWVBFX0lTX0RFQ0xB
UkVEIDEKKyMgZGVmaW5lIFlZU1RZUEVfSVNfVFJJVklBTCAxCisjZW5kaWYKKworCisKKyNpZiAh
IGRlZmluZWQgWVlMVFlQRSAmJiAhIGRlZmluZWQgWVlMVFlQRV9JU19ERUNMQVJFRAordHlwZWRl
ZiBzdHJ1Y3QgWVlMVFlQRQoreworICBpbnQgZmlyc3RfbGluZTsKKyAgaW50IGZpcnN0X2NvbHVt
bjsKKyAgaW50IGxhc3RfbGluZTsKKyAgaW50IGxhc3RfY29sdW1uOworfSBZWUxUWVBFOworIyBk
ZWZpbmUgeXlsdHlwZSBZWUxUWVBFIC8qIG9ic29sZXNjZW50OyB3aWxsIGJlIHdpdGhkcmF3biAq
LworIyBkZWZpbmUgWVlMVFlQRV9JU19ERUNMQVJFRCAxCisjIGRlZmluZSBZWUxUWVBFX0lTX1RS
SVZJQUwgMQorI2VuZGlmCisKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9uZXcvc3RsX3V0aWxzLmggYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL25ldy9zdGxfdXRpbHMuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wZDFjZTUwNDg4MzEzZDg0Y2VhMDRjN2Q5NDlhYjMyOGVjYmQ5ODczCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nl
c3Nvci9uZXcvc3RsX3V0aWxzLmgKQEAgLTAsMCArMSwyOSBAQAorLy8KKy8vIENvcHlyaWdodCAo
YykgMjAxMSBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj
ZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKy8vCisKKy8v
IHN0bF91dGlscy5oOiBDb21tb24gU1RMIHV0aWxpdGllcy4KKworI2lmbmRlZiBDT01NT05fU1RM
VVRJTFNfSF8KKyNkZWZpbmUgQ09NTU9OX1NUTFVUSUxTX0hfCisKK25hbWVzcGFjZSBwcAorewor
CitzdHJ1Y3QgRGVsZXRlCit7CisgICAgdGVtcGxhdGU8Y2xhc3MgVD4KKyAgICB2b2lkIG9wZXJh
dG9yKCkgKFQgeCkgeyBkZWxldGUgeDsgfQorfTsKKworc3RydWN0IERlbGV0ZVNlY29uZAorewor
ICAgIHRlbXBsYXRlPGNsYXNzIEEsIGNsYXNzIEI+CisgICAgdm9pZCBvcGVyYXRvcigpIChzdGQ6
OnBhaXI8QSwgQj4mIHgpIHsgZGVsZXRlIHguc2Vjb25kOyB9Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBwcAorI2VuZGlmIC8vIENPTU1PTl9TVExVVElMU19IXworCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL25ldy90b2tlbl90eXBl
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL25l
dy90b2tlbl90eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzQzYTk0MTkwMzFhYTVlNjZjOTQ3YmQwYWE4Mzdh
NDU1Y2Y4Yjg0YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9jb21waWxlci9wcmVwcm9jZXNzb3IvbmV3L3Rva2VuX3R5cGUuaApAQCAtMCwwICsxLDEzIEBA
CisvLworLy8gQ29weXJpZ2h0IChjKSAyMDExIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5l
ZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElD
RU5TRSBmaWxlLgorLy8KKworI2lmbmRlZiBDT01QSUxFUl9QUkVQUk9DRVNTT1JfVE9LRU5fVFlQ
RV9IXworI2RlZmluZSBDT01QSUxFUl9QUkVQUk9DRVNTT1JfVE9LRU5fVFlQRV9IXworCisjaW5j
bHVkZSAicHBfdGFiLmgiCisKKyNlbmRpZiAgLy8gQ09NUElMRVJfUFJFUFJPQ0VTU09SX1RPS0VO
X1RZUEVfSF8KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBp
bGVyL3ByZXByb2Nlc3Nvci9zY2FubmVyLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvcHJlcHJvY2Vzc29yL3NjYW5uZXIuYwppbmRleCBkZWVkYjQzZjVhMjI3MTY3YjNl
YzMzMDc3NWRkYWEwNWZlYjRiNWY0Li42MGI2NmJkMjk4NGU0ZTBiNGQxNzNjM2IwOGU4ZjhkMmYz
ZDY5MjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIv
cHJlcHJvY2Vzc29yL3NjYW5uZXIuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
Y29tcGlsZXIvcHJlcHJvY2Vzc29yL3NjYW5uZXIuYwpAQCAtNjY1LDggKzY2NSw2IEBAIGludCB5
eWxleF9DUFAoY2hhciogYnVmLCBpbnQgbWF4U2l6ZSkKICAgICAgICAgICAgIHJldHVybiAwOwog
ICAgICAgICB9CiAgICAgfQotCi0gICAgcmV0dXJuIDA7CiB9IC8vIHl5bGV4CiAKIC8vQ2hlY2tz
IGlmIHRoZSB0b2tlbiBqdXN0IHJlYWQgaXMgRU9GIG9yIG5vdC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3Ivc3ltYm9scy5jIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9zeW1ib2xz
LmMKaW5kZXggNWJhZWRmNTJmZjQyNmY0MmRkNTJkNDA0YTc3MWUwMTU0NDEyOTA2Zi4uZjE4YjI1
NjliMzc4NzQ2YTI0NjZmYjBmZjlkNWQyNzVlZDM4NjU0MSAxMDA2NDQKLS0tIGEvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9zeW1ib2xzLmMKKysrIGIv
U291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci9zeW1ib2xz
LmMKQEAgLTUxLDYgKzUxLDEwIEBAIE5WSURJQSBIQVMgQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogI2luY2x1ZGUgImNvbXBpbGVyL3ByZXByb2Nlc3Nv
ci9zbGdsb2JhbHMuaCIKIAorI2lmIGRlZmluZWQoX01TQ19WRVIpCisjcHJhZ21hIHdhcm5pbmco
ZGlzYWJsZTogNDcwNikKKyNlbmRpZgorCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLwogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8gU3ltYm9sIFRhYmxl
IFZhcmlhYmxlczogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIC8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL3Rva2Vucy5jIGIvU291cmNlL1Ro
aXJkUGFydHkvQU5HTEUvc3JjL2NvbXBpbGVyL3ByZXByb2Nlc3Nvci90b2tlbnMuYwppbmRleCBh
YTgzZDJmY2U0ZjFlNzU4NjA2MjVhYmExYmY5MTQ5NzA4M2NkNjc5Li5kNjU4YzEyYTQ5NTE3NWRj
YTQzYTdhMWUxYzhhNzQwYjBkYzM1NDhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvY29tcGlsZXIvcHJlcHJvY2Vzc29yL3Rva2Vucy5jCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9jb21waWxlci9wcmVwcm9jZXNzb3IvdG9rZW5zLmMKQEAgLTU0LDYg
KzU0LDExIEBAIE5WSURJQSBIQVMgQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICNpbmNsdWRlICJjb21waWxlci9wcmVwcm9jZXNzb3Ivc2xnbG9iYWxzLmgi
CiAjaW5jbHVkZSAiY29tcGlsZXIvdXRpbC5oIgogCisjaWYgZGVmaW5lZChfTVNDX1ZFUikKKyNw
cmFnbWEgd2FybmluZyhkaXNhYmxlOiA0MDU0KQorI3ByYWdtYSB3YXJuaW5nKGRpc2FibGU6IDQx
NTIpCisjZW5kaWYKKwogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIC8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLyBQcmVwcm9jZXNzb3IgYW5kIFRva2VuIFJlY29yZGVyIGFu
ZCBQbGF5YmFjazogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAvLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8vLy8vLy8vLy8vLy8vLy8vLwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkVHTC9Db25maWcuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVH
TC9Db25maWcuY3BwCmluZGV4IGU0ZGM3MDRhOTk3NDg4YTZjNGM3NzM3MGM5MDA4ZGNmNjFmMjM2
ODEuLjg5YmM4ZDg5ZjQyMzZjMWE2OWU2MTQzN2QzYTJjYzJjNDk4YzA1ZTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvQ29uZmlnLmNwcAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML0NvbmZpZy5jcHAKQEAgLTMyMSwyNSArMzIx
LDI1IEBAIGJvb2wgQ29uZmlnU2V0OjpnZXRDb25maWdzKEVHTENvbmZpZyAqY29uZmlncywgY29u
c3QgRUdMaW50ICphdHRyaWJMaXN0LCBFR0xpbnQKICAgICAgICAgICAgICAgY2FzZSBFR0xfUkVE
X1NJWkU6ICAgICAgICAgICAgICAgICAgbWF0Y2ggPSBjb25maWctPm1SZWRTaXplID49IGF0dHJp
YnV0ZVsxXTsgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgIGNh
c2UgRUdMX0RFUFRIX1NJWkU6ICAgICAgICAgICAgICAgIG1hdGNoID0gY29uZmlnLT5tRGVwdGhT
aXplID49IGF0dHJpYnV0ZVsxXTsgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICBjYXNlIEVHTF9TVEVOQ0lMX1NJWkU6ICAgICAgICAgICAgICBtYXRjaCA9IGNvbmZp
Zy0+bVN0ZW5jaWxTaXplID49IGF0dHJpYnV0ZVsxXTsgICAgICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgICAgY2FzZSBFR0xfQ09ORklHX0NBVkVBVDogICAgICAgICAgICAgbWF0
Y2ggPSBjb25maWctPm1Db25maWdDYXZlYXQgPT0gYXR0cmlidXRlWzFdOyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgRUdMX0NPTkZJR19DQVZFQVQ6ICAgICAg
ICAgICAgIG1hdGNoID0gY29uZmlnLT5tQ29uZmlnQ2F2ZWF0ID09IChFR0xlbnVtKSBhdHRyaWJ1
dGVbMV07ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICBjYXNlIEVHTF9DT05GSUdfSUQ6
ICAgICAgICAgICAgICAgICBtYXRjaCA9IGNvbmZpZy0+bUNvbmZpZ0lEID09IGF0dHJpYnV0ZVsx
XTsgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgY2FzZSBFR0xf
TEVWRUw6ICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSBjb25maWctPm1MZXZlbCA+PSBhdHRy
aWJ1dGVbMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAg
IGNhc2UgRUdMX05BVElWRV9SRU5ERVJBQkxFOiAgICAgICAgIG1hdGNoID0gY29uZmlnLT5tTmF0
aXZlUmVuZGVyYWJsZSA9PSBhdHRyaWJ1dGVbMV07ICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICBjYXNlIEVHTF9OQVRJVkVfUkVOREVSQUJMRTogICAgICAgICBtYXRjaCA9IGNv
bmZpZy0+bU5hdGl2ZVJlbmRlcmFibGUgPT0gKEVHTEJvb2xlYW4pIGF0dHJpYnV0ZVsxXTsgICBi
cmVhazsKICAgICAgICAgICAgICAgY2FzZSBFR0xfTkFUSVZFX1ZJU1VBTF9UWVBFOiAgICAgICAg
bWF0Y2ggPSBjb25maWctPm1OYXRpdmVWaXN1YWxUeXBlID09IGF0dHJpYnV0ZVsxXTsgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgIGNhc2UgRUdMX1NBTVBMRVM6ICAgICAgICAg
ICAgICAgICAgIG1hdGNoID0gY29uZmlnLT5tU2FtcGxlcyA+PSBhdHRyaWJ1dGVbMV07ICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICBjYXNlIEVHTF9TQU1QTEVf
QlVGRkVSUzogICAgICAgICAgICBtYXRjaCA9IGNvbmZpZy0+bVNhbXBsZUJ1ZmZlcnMgPj0gYXR0
cmlidXRlWzFdOyAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgY2FzZSBF
R0xfU1VSRkFDRV9UWVBFOiAgICAgICAgICAgICAgbWF0Y2ggPSAoY29uZmlnLT5tU3VyZmFjZVR5
cGUgJiBhdHRyaWJ1dGVbMV0pID09IGF0dHJpYnV0ZVsxXTsgICAgYnJlYWs7Ci0gICAgICAgICAg
ICAgIGNhc2UgRUdMX1RSQU5TUEFSRU5UX1RZUEU6ICAgICAgICAgIG1hdGNoID0gY29uZmlnLT5t
VHJhbnNwYXJlbnRUeXBlID09IGF0dHJpYnV0ZVsxXTsgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICBjYXNlIEVHTF9UUkFOU1BBUkVOVF9UWVBFOiAgICAgICAgICBtYXRjaCA9
IGNvbmZpZy0+bVRyYW5zcGFyZW50VHlwZSA9PSAoRUdMZW51bSkgYXR0cmlidXRlWzFdOyAgICAg
ICBicmVhazsKICAgICAgICAgICAgICAgY2FzZSBFR0xfVFJBTlNQQVJFTlRfQkxVRV9WQUxVRTog
ICAgbWF0Y2ggPSBjb25maWctPm1UcmFuc3BhcmVudEJsdWVWYWx1ZSA9PSBhdHRyaWJ1dGVbMV07
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgIGNhc2UgRUdMX1RSQU5TUEFSRU5UX0dS
RUVOX1ZBTFVFOiAgIG1hdGNoID0gY29uZmlnLT5tVHJhbnNwYXJlbnRHcmVlblZhbHVlID09IGF0
dHJpYnV0ZVsxXTsgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICBjYXNlIEVHTF9UUkFO
U1BBUkVOVF9SRURfVkFMVUU6ICAgICBtYXRjaCA9IGNvbmZpZy0+bVRyYW5zcGFyZW50UmVkVmFs
dWUgPT0gYXR0cmlidXRlWzFdOyAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgY2Fz
ZSBFR0xfQklORF9UT19URVhUVVJFX1JHQjogICAgICAgbWF0Y2ggPSBjb25maWctPm1CaW5kVG9U
ZXh0dXJlUkdCID09IGF0dHJpYnV0ZVsxXTsgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgIGNhc2UgRUdMX0JJTkRfVE9fVEVYVFVSRV9SR0JBOiAgICAgIG1hdGNoID0gY29uZmln
LT5tQmluZFRvVGV4dHVyZVJHQkEgPT0gYXR0cmlidXRlWzFdOyAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICBjYXNlIEVHTF9CSU5EX1RPX1RFWFRVUkVfUkdCOiAgICAgICBtYXRj
aCA9IGNvbmZpZy0+bUJpbmRUb1RleHR1cmVSR0IgPT0gKEVHTEJvb2xlYW4pIGF0dHJpYnV0ZVsx
XTsgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBFR0xfQklORF9UT19URVhUVVJFX1JHQkE6
ICAgICAgbWF0Y2ggPSBjb25maWctPm1CaW5kVG9UZXh0dXJlUkdCQSA9PSAoRUdMQm9vbGVhbikg
YXR0cmlidXRlWzFdOyAgYnJlYWs7CiAgICAgICAgICAgICAgIGNhc2UgRUdMX01JTl9TV0FQX0lO
VEVSVkFMOiAgICAgICAgIG1hdGNoID0gY29uZmlnLT5tTWluU3dhcEludGVydmFsID09IGF0dHJp
YnV0ZVsxXTsgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICBjYXNlIEVHTF9N
QVhfU1dBUF9JTlRFUlZBTDogICAgICAgICBtYXRjaCA9IGNvbmZpZy0+bU1heFN3YXBJbnRlcnZh
bCA9PSBhdHRyaWJ1dGVbMV07ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
Y2FzZSBFR0xfTFVNSU5BTkNFX1NJWkU6ICAgICAgICAgICAgbWF0Y2ggPSBjb25maWctPm1MdW1p
bmFuY2VTaXplID49IGF0dHJpYnV0ZVsxXTsgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgIGNhc2UgRUdMX0FMUEhBX01BU0tfU0laRTogICAgICAgICAgIG1hdGNoID0gY29u
ZmlnLT5tQWxwaGFNYXNrU2l6ZSA+PSBhdHRyaWJ1dGVbMV07ICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICBjYXNlIEVHTF9DT0xPUl9CVUZGRVJfVFlQRTogICAgICAgICBt
YXRjaCA9IGNvbmZpZy0+bUNvbG9yQnVmZmVyVHlwZSA9PSBhdHRyaWJ1dGVbMV07ICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSBFR0xfQ09MT1JfQlVGRkVSX1RZUEU6
ICAgICAgICAgbWF0Y2ggPSBjb25maWctPm1Db2xvckJ1ZmZlclR5cGUgPT0gKEVHTGVudW0pIGF0
dHJpYnV0ZVsxXTsgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgIGNhc2UgRUdMX1JFTkRFUkFC
TEVfVFlQRTogICAgICAgICAgIG1hdGNoID0gKGNvbmZpZy0+bVJlbmRlcmFibGVUeXBlICYgYXR0
cmlidXRlWzFdKSA9PSBhdHRyaWJ1dGVbMV07IGJyZWFrOwogICAgICAgICAgICAgICBjYXNlIEVH
TF9NQVRDSF9OQVRJVkVfUElYTUFQOiAgICAgICBtYXRjaCA9IGZhbHNlOyBVTklNUExFTUVOVEVE
KCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgY2FzZSBFR0xfQ09ORk9STUFOVDogICAgICAgICAgICAgICAgbWF0Y2ggPSAoY29uZmlnLT5t
Q29uZm9ybWFudCAmIGF0dHJpYnV0ZVsxXSkgPT0gYXR0cmlidXRlWzFdOyAgICAgYnJlYWs7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML0Rpc3BsYXkuY3Bw
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9EaXNwbGF5LmNwcAppbmRleCA1
MzQ0MzFkOThhNDg3NzBjN2ZiZGQ2MTQxN2IzNDJlNTEyYTY5MmY2Li42YTVjZmQzNmVkYjQ1ZWEw
Y2M5Njc4Yjc4YjYxNDA4ZTNkNzdkZDhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliRUdML0Rpc3BsYXkuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJFR0wvRGlzcGxheS5jcHAKQEAgLTEsNSArMSw1IEBACiAvLwotLy8gQ29weXJpZ2h0
IChjKSAyMDAyLTIwMTEgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgogLy8KQEAgLTE2LDYgKzE2LDcgQEAKIAogI2luY2x1ZGUgImNvbW1v
bi9kZWJ1Zy5oIgogI2luY2x1ZGUgImxpYkdMRVN2Mi9tYXRodXRpbC5oIgorI2luY2x1ZGUgImxp
YkdMRVN2Mi91dGlsaXRpZXMuaCIKIAogI2luY2x1ZGUgImxpYkVHTC9tYWluLmgiCiAKQEAgLTI4
Nyw2ICsyODgsMTIgQEAgYm9vbCBEaXNwbGF5Ojppbml0aWFsaXplKCkKIAogICAgIG1EZXZpY2VX
aW5kb3cgPSBDcmVhdGVXaW5kb3dFeChXU19FWF9OT0FDVElWQVRFLCBjbGFzc05hbWUsIHdpbmRv
d05hbWUsIFdTX0RJU0FCTEVEIHwgV1NfUE9QVVAsIDAsIDAsIDEsIDEsIEhXTkRfTUVTU0FHRSwg
TlVMTCwgR2V0TW9kdWxlSGFuZGxlKE5VTEwpLCBOVUxMKTsKIAorICAgIGlmICghY3JlYXRlRGV2
aWNlKCkpCisgICAgeworICAgICAgICB0ZXJtaW5hdGUoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIH0KKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zMDIsNiArMzA5LDEyIEBAIHZv
aWQgRGlzcGxheTo6dGVybWluYXRlKCkKICAgICAgICAgZGVzdHJveUNvbnRleHQoKm1Db250ZXh0
U2V0LmJlZ2luKCkpOwogICAgIH0KIAorICAgIHdoaWxlICghbUV2ZW50UXVlcnlQb29sLmVtcHR5
KCkpCisgICAgeworICAgICAgICBtRXZlbnRRdWVyeVBvb2wuYmFjaygpLT5SZWxlYXNlKCk7Cisg
ICAgICAgIG1FdmVudFF1ZXJ5UG9vbC5wb3BfYmFjaygpOworICAgIH0KKwogICAgIGlmIChtRGV2
aWNlKQogICAgIHsKICAgICAgICAgLy8gSWYgdGhlIGRldmljZSBpcyBsb3N0LCByZXNldCBpdCBm
aXJzdCB0byBwcmV2ZW50IGxlYXZpbmcgdGhlIGRyaXZlciBpbiBhbiB1bnN0YWJsZSBzdGF0ZQpA
QCAtNzIzLDYgKzczNiwxMiBAQCBib29sIERpc3BsYXk6OnJlc3RvcmVMb3N0RGV2aWNlKCkKICAg
ICAgICAgKCpzdXJmYWNlKS0+cmVsZWFzZSgpOwogICAgIH0KIAorICAgIHdoaWxlICghbUV2ZW50
UXVlcnlQb29sLmVtcHR5KCkpCisgICAgeworICAgICAgICBtRXZlbnRRdWVyeVBvb2wuYmFjaygp
LT5SZWxlYXNlKCk7CisgICAgICAgIG1FdmVudFF1ZXJ5UG9vbC5wb3BfYmFjaygpOworICAgIH0K
KwogICAgIGlmICghcmVzZXREZXZpY2UoKSkKICAgICB7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTg2OCw2ICs4ODcsNzYgQEAgYm9vbCBEaXNwbGF5Ojp0ZXN0RGV2aWNlUmVzZXR0YWJsZSgp
CiAgICAgfQogfQogCit2b2lkIERpc3BsYXk6OnN5bmMoYm9vbCBibG9jaykKK3sKKyAgICBIUkVT
VUxUIHJlc3VsdDsKKworICAgIElEaXJlY3QzRFF1ZXJ5OSogcXVlcnkgPSBhbGxvY2F0ZUV2ZW50
UXVlcnkoKTsKKyAgICBpZiAoIXF1ZXJ5KQorICAgIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIHJlc3VsdCA9IHF1ZXJ5LT5Jc3N1ZShEM0RJU1NVRV9FTkQpOworICAgIEFTU0VSVChT
VUNDRUVERUQocmVzdWx0KSk7CisKKyAgICBkbworICAgIHsKKyAgICAgICAgcmVzdWx0ID0gcXVl
cnktPkdldERhdGEoTlVMTCwgMCwgRDNER0VUREFUQV9GTFVTSCk7CisKKyAgICAgICAgaWYoYmxv
Y2sgJiYgcmVzdWx0ID09IFNfRkFMU0UpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIEtlZXAg
cG9sbGluZywgYnV0IGFsbG93IG90aGVyIHRocmVhZHMgdG8gZG8gc29tZXRoaW5nIHVzZWZ1bCBm
aXJzdAorICAgICAgICAgICAgU2xlZXAoMCk7CisgICAgICAgICAgICAvLyBleHBsaWNpdGx5IGNo
ZWNrIGZvciBkZXZpY2UgbG9zcworICAgICAgICAgICAgLy8gc29tZSBkcml2ZXJzIHNlZW0gdG8g
cmV0dXJuIFNfRkFMU0UgZXZlbiBpZiB0aGUgZGV2aWNlIGlzIGxvc3QKKyAgICAgICAgICAgIC8v
IGluc3RlYWQgb2YgRDNERVJSX0RFVklDRUxPU1QgbGlrZSB0aGV5IHNob3VsZAorICAgICAgICAg
ICAgaWYgKHRlc3REZXZpY2VMb3N0KCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
cmVzdWx0ID0gRDNERVJSX0RFVklDRUxPU1Q7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICB9CisgICAgd2hpbGUoYmxvY2sgJiYgcmVzdWx0ID09IFNfRkFMU0UpOworCisgICAgZnJlZUV2
ZW50UXVlcnkocXVlcnkpOworCisgICAgaWYgKGlzRGV2aWNlTG9zdEVycm9yKHJlc3VsdCkpCisg
ICAgeworICAgICAgICBub3RpZnlEZXZpY2VMb3N0KCk7CisgICAgfQorfQorCitJRGlyZWN0M0RR
dWVyeTkqIERpc3BsYXk6OmFsbG9jYXRlRXZlbnRRdWVyeSgpCit7CisgICAgSURpcmVjdDNEUXVl
cnk5ICpxdWVyeSA9IE5VTEw7CisKKyAgICBpZiAobUV2ZW50UXVlcnlQb29sLmVtcHR5KCkpCisg
ICAgeworICAgICAgICBIUkVTVUxUIHJlc3VsdCA9IG1EZXZpY2UtPkNyZWF0ZVF1ZXJ5KEQzRFFV
RVJZVFlQRV9FVkVOVCwgJnF1ZXJ5KTsKKyAgICAgICAgQVNTRVJUKFNVQ0NFRURFRChyZXN1bHQp
KTsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcXVlcnkgPSBtRXZlbnRRdWVyeVBv
b2wuYmFjaygpOworICAgICAgICBtRXZlbnRRdWVyeVBvb2wucG9wX2JhY2soKTsKKyAgICB9CisK
KyAgICByZXR1cm4gcXVlcnk7Cit9CisKK3ZvaWQgRGlzcGxheTo6ZnJlZUV2ZW50UXVlcnkoSURp
cmVjdDNEUXVlcnk5KiBxdWVyeSkKK3sKKyAgICBpZiAobUV2ZW50UXVlcnlQb29sLnNpemUoKSA+
IDEwMDApCisgICAgeworICAgICAgICBxdWVyeS0+UmVsZWFzZSgpOworICAgIH0KKyAgICBlbHNl
CisgICAgeworICAgICAgICBtRXZlbnRRdWVyeVBvb2wucHVzaF9iYWNrKHF1ZXJ5KTsKKyAgICB9
Cit9CisKIHZvaWQgRGlzcGxheTo6Z2V0TXVsdGlTYW1wbGVTdXBwb3J0KEQzREZPUk1BVCBmb3Jt
YXQsIGJvb2wgKm11bHRpU2FtcGxlQXJyYXkpCiB7CiAgICAgZm9yIChpbnQgbXVsdGlTYW1wbGVJ
bmRleCA9IDA7IG11bHRpU2FtcGxlSW5kZXggPD0gRDNETVVMVElTQU1QTEVfMTZfU0FNUExFUzsg
bXVsdGlTYW1wbGVJbmRleCsrKQpAQCAtOTE4LDcgKzEwMDcsNyBAQCBib29sIERpc3BsYXk6Omdl
dEZsb2F0MzJUZXh0dXJlU3VwcG9ydChib29sICpmaWx0ZXJpbmcsIGJvb2wgKnJlbmRlcmFibGUp
CiAgICAgICAgICAgICAgICAgICBTVUNDRUVERUQobUQzZDktPkNoZWNrRGV2aWNlRm9ybWF0KG1B
ZGFwdGVyLCBtRGV2aWNlVHlwZSwgY3VycmVudERpc3BsYXlNb2RlLkZvcm1hdCwgRDNEVVNBR0Vf
UkVOREVSVEFSR0VULAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEM0RSVFlQRV9DVUJFVEVYVFVSRSwgRDNERk1UX0EzMkIzMkczMlIzMkYpKTsK
IAotICAgIGlmICghZmlsdGVyaW5nICYmICFyZW5kZXJhYmxlKQorICAgIGlmICghKmZpbHRlcmlu
ZyAmJiAhKnJlbmRlcmFibGUpCiAgICAgewogICAgICAgICByZXR1cm4gU1VDQ0VFREVEKG1EM2Q5
LT5DaGVja0RldmljZUZvcm1hdChtQWRhcHRlciwgbURldmljZVR5cGUsIGN1cnJlbnREaXNwbGF5
TW9kZS5Gb3JtYXQsIDAsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBEM0RSVFlQRV9URVhUVVJFLCBEM0RGTVRfQTMyQjMyRzMyUjMyRikpICYmCkBA
IC05NDYsNyArMTAzNSw3IEBAIGJvb2wgRGlzcGxheTo6Z2V0RmxvYXQxNlRleHR1cmVTdXBwb3J0
KGJvb2wgKmZpbHRlcmluZywgYm9vbCAqcmVuZGVyYWJsZSkKICAgICAgICAgICAgICAgICAgU1VD
Q0VFREVEKG1EM2Q5LT5DaGVja0RldmljZUZvcm1hdChtQWRhcHRlciwgbURldmljZVR5cGUsIGN1
cnJlbnREaXNwbGF5TW9kZS5Gb3JtYXQsIEQzRFVTQUdFX1JFTkRFUlRBUkdFVCwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEM0RSVFlQRV9DVUJF
VEVYVFVSRSwgRDNERk1UX0ExNkIxNkcxNlIxNkYpKTsKIAotICAgIGlmICghZmlsdGVyaW5nICYm
ICFyZW5kZXJhYmxlKQorICAgIGlmICghKmZpbHRlcmluZyAmJiAhKnJlbmRlcmFibGUpCiAgICAg
ewogICAgICAgICByZXR1cm4gU1VDQ0VFREVEKG1EM2Q5LT5DaGVja0RldmljZUZvcm1hdChtQWRh
cHRlciwgbURldmljZVR5cGUsIGN1cnJlbnREaXNwbGF5TW9kZS5Gb3JtYXQsIDAsIAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEM0RSVFlQRV9URVhU
VVJFLCBEM0RGTVRfQTE2QjE2RzE2UjE2RikpICYmCkBAIC0xMDExLDE0ICsxMTAwLDE2IEBAIEQz
RFBPT0wgRGlzcGxheTo6Z2V0VGV4dHVyZVBvb2woYm9vbCByZW5kZXJhYmxlKSBjb25zdAogCiBi
b29sIERpc3BsYXk6OmdldEV2ZW50UXVlcnlTdXBwb3J0KCkKIHsKLSAgICBJRGlyZWN0M0RRdWVy
eTkgKnF1ZXJ5OwotICAgIEhSRVNVTFQgcmVzdWx0ID0gbURldmljZS0+Q3JlYXRlUXVlcnkoRDNE
UVVFUllUWVBFX0VWRU5ULCAmcXVlcnkpOwotICAgIGlmIChTVUNDRUVERUQocmVzdWx0KSkKKyAg
ICBJRGlyZWN0M0RRdWVyeTkgKnF1ZXJ5ID0gYWxsb2NhdGVFdmVudFF1ZXJ5KCk7CisgICAgaWYg
KHF1ZXJ5KQogICAgIHsKLSAgICAgICAgcXVlcnktPlJlbGVhc2UoKTsKKyAgICAgICAgZnJlZUV2
ZW50UXVlcnkocXVlcnkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgZWxzZQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLQotICAgIHJldHVybiByZXN1bHQg
IT0gRDNERVJSX05PVEFWQUlMQUJMRTsKIH0KIAogRDNEUFJFU0VOVF9QQVJBTUVURVJTIERpc3Bs
YXk6OmdldERlZmF1bHRQcmVzZW50UGFyYW1ldGVycygpCkBAIC0xMDQ2LDcgKzExMzcsNiBAQCBE
M0RQUkVTRU5UX1BBUkFNRVRFUlMgRGlzcGxheTo6Z2V0RGVmYXVsdFByZXNlbnRQYXJhbWV0ZXJz
KCkKIHZvaWQgRGlzcGxheTo6aW5pdEV4dGVuc2lvblN0cmluZygpCiB7CiAgICAgSE1PRFVMRSBz
d2lmdFNoYWRlciA9IEdldE1vZHVsZUhhbmRsZShURVhUKCJzd2lmdHNoYWRlcl9kM2Q5LmRsbCIp
KTsKLSAgICBib29sIGlzZDNkOWV4ID0gaXNEM2Q5RXhEZXZpY2UoKTsKIAogICAgIG1FeHRlbnNp
b25TdHJpbmcgPSAiIjsKIApAQCAtMTA1NCw3ICsxMTQ0LDcgQEAgdm9pZCBEaXNwbGF5Ojppbml0
RXh0ZW5zaW9uU3RyaW5nKCkKICAgICBtRXh0ZW5zaW9uU3RyaW5nICs9ICJFR0xfRVhUX2NyZWF0
ZV9jb250ZXh0X3JvYnVzdG5lc3MgIjsKIAogICAgIC8vIEFOR0xFLXNwZWNpZmljIGV4dGVuc2lv
bnMKLSAgICBpZiAoaXNkM2Q5ZXgpCisgICAgaWYgKHNoYXJlSGFuZGxlU3VwcG9ydGVkKCkpCiAg
ICAgewogICAgICAgICBtRXh0ZW5zaW9uU3RyaW5nICs9ICJFR0xfQU5HTEVfZDNkX3NoYXJlX2hh
bmRsZV9jbGllbnRfYnVmZmVyICI7CiAgICAgfQpAQCAtMTA2Niw3ICsxMTU2LDcgQEAgdm9pZCBE
aXNwbGF5Ojppbml0RXh0ZW5zaW9uU3RyaW5nKCkKICAgICAgICAgbUV4dGVuc2lvblN0cmluZyAr
PSAiRUdMX0FOR0xFX3NvZnR3YXJlX2Rpc3BsYXkgIjsKICAgICB9CiAKLSAgICBpZiAoaXNkM2Q5
ZXgpCisgICAgaWYgKHNoYXJlSGFuZGxlU3VwcG9ydGVkKCkpCiAgICAgewogICAgICAgICBtRXh0
ZW5zaW9uU3RyaW5nICs9ICJFR0xfQU5HTEVfc3VyZmFjZV9kM2RfdGV4dHVyZV8yZF9zaGFyZV9o
YW5kbGUgIjsKICAgICB9CkBAIC0xMDg1LDYgKzExNzUsMTIgQEAgY29uc3QgY2hhciAqRGlzcGxh
eTo6Z2V0RXh0ZW5zaW9uU3RyaW5nKCkgY29uc3QKICAgICByZXR1cm4gbUV4dGVuc2lvblN0cmlu
Zy5jX3N0cigpOwogfQogCitib29sIERpc3BsYXk6OnNoYXJlSGFuZGxlU3VwcG9ydGVkKCkgY29u
c3QgCit7CisgICAgLy8gUElYIGRvZXNuJ3Qgc2VlbSB0byBzdXBwb3J0IHVzaW5nIHNoYXJlIGhh
bmRsZXMsIHNvIGRpc2FibGUgdGhlbS4KKyAgICByZXR1cm4gaXNEM2Q5RXhEZXZpY2UoKSAmJiAh
Z2w6OnBlcmZBY3RpdmUoKTsKK30KKwogLy8gT25seSBEaXJlY3QzRCAxMCByZWFkeSBkZXZpY2Vz
IHN1cHBvcnQgYWxsIHRoZSBuZWNlc3NhcnkgdmVydGV4IHRleHR1cmUgZm9ybWF0cy4KIC8vIFdl
IHRlc3QgdGhpcyB1c2luZyBEM0Q5IGJ5IGNoZWNraW5nIHN1cHBvcnQgZm9yIHRoZSBSMTZGIGZv
cm1hdC4KIGJvb2wgRGlzcGxheTo6Z2V0VmVydGV4VGV4dHVyZVN1cHBvcnQoKSBjb25zdApAQCAt
MTEwOSw0ICsxMjA1LDMwIEBAIGJvb2wgRGlzcGxheTo6Z2V0Tm9uUG93ZXIyVGV4dHVyZVN1cHBv
cnQoKSBjb25zdAogICAgICAgICAgICAhKG1EZXZpY2VDYXBzLlRleHR1cmVDYXBzICYgRDNEUFRF
WFRVUkVDQVBTX05PTlBPVzJDT05ESVRJT05BTCk7CiB9CiAKK2Jvb2wgRGlzcGxheTo6Z2V0T2Nj
bHVzaW9uUXVlcnlTdXBwb3J0KCkgY29uc3QKK3sKKyAgICBpZiAoIWlzSW5pdGlhbGl6ZWQoKSkK
KyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBJRGlyZWN0M0RRdWVy
eTkgKnF1ZXJ5ID0gTlVMTDsKKyAgICBIUkVTVUxUIHJlc3VsdCA9IG1EZXZpY2UtPkNyZWF0ZVF1
ZXJ5KEQzRFFVRVJZVFlQRV9PQ0NMVVNJT04sICZxdWVyeSk7CisgICAgCisgICAgaWYgKFNVQ0NF
RURFRChyZXN1bHQpICYmIHF1ZXJ5KQorICAgIHsKKyAgICAgICAgcXVlcnktPlJlbGVhc2UoKTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9Cit9CisKK2Jvb2wgRGlzcGxheTo6Z2V0SW5zdGFuY2luZ1N1cHBv
cnQoKSBjb25zdAoreworICAgIHJldHVybiBtRGV2aWNlQ2Fwcy5QaXhlbFNoYWRlclZlcnNpb24g
Pj0gRDNEUFNfVkVSU0lPTigzLCAwKTsgCit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvRGlzcGxheS5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkVHTC9EaXNwbGF5LmgKaW5kZXggZDA1NGVlOWNjYTdmODcyZGQ5MTNkNjQ3YjYy
MjU5NWNiNTUwMmRjMC4uNTAyODQzMWE4YjNjZGY5YTViYWMyMDZlMDI3YTgzOTI4MDhkMDYyMiAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9EaXNwbGF5LmgK
KysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9EaXNwbGF5LmgKQEAgLTEs
NSArMSw1IEBACiAvLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTEgVGhlIEFOR0xFIFByb2pl
Y3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENvcHlyaWdodCAoYykgMjAwMi0y
MDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBV
c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl
IHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgogLy8KQEAgLTE4LDYg
KzE4LDcgQEAKICNpbmNsdWRlIDxkM2Q5Lmg+CiAKICNpbmNsdWRlIDxzZXQ+CisjaW5jbHVkZSA8
dmVjdG9yPgogCiAjaW5jbHVkZSAibGliR0xFU3YyL0NvbnRleHQuaCIKIApAQCAtNjMsNiArNjQs
OSBAQCBjbGFzcyBEaXNwbGF5CiAgICAgdmlydHVhbCBEM0RBREFQVEVSX0lERU5USUZJRVI5ICpn
ZXRBZGFwdGVySWRlbnRpZmllcigpOwogICAgIHZpcnR1YWwgYm9vbCB0ZXN0RGV2aWNlTG9zdCgp
OwogICAgIHZpcnR1YWwgYm9vbCB0ZXN0RGV2aWNlUmVzZXR0YWJsZSgpOworICAgIHZpcnR1YWwg
dm9pZCBzeW5jKGJvb2wgYmxvY2spOworICAgIHZpcnR1YWwgSURpcmVjdDNEUXVlcnk5KiBhbGxv
Y2F0ZUV2ZW50UXVlcnkoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZnJlZUV2ZW50UXVlcnkoSURpcmVj
dDNEUXVlcnk5KiBxdWVyeSk7CiAgICAgdmlydHVhbCB2b2lkIGdldE11bHRpU2FtcGxlU3VwcG9y
dChEM0RGT1JNQVQgZm9ybWF0LCBib29sICptdWx0aVNhbXBsZUFycmF5KTsKICAgICB2aXJ0dWFs
IGJvb2wgZ2V0RFhUMVRleHR1cmVTdXBwb3J0KCk7CiAgICAgdmlydHVhbCBib29sIGdldERYVDNU
ZXh0dXJlU3VwcG9ydCgpOwpAQCAtNzQsMTQgKzc4LDE3IEBAIGNsYXNzIERpc3BsYXkKICAgICB2
aXJ0dWFsIGJvb2wgZ2V0THVtaW5hbmNlQWxwaGFUZXh0dXJlU3VwcG9ydCgpOwogICAgIHZpcnR1
YWwgYm9vbCBnZXRWZXJ0ZXhUZXh0dXJlU3VwcG9ydCgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9v
bCBnZXROb25Qb3dlcjJUZXh0dXJlU3VwcG9ydCgpIGNvbnN0OworICAgIHZpcnR1YWwgYm9vbCBn
ZXRPY2NsdXNpb25RdWVyeVN1cHBvcnQoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0SW5z
dGFuY2luZ1N1cHBvcnQoKSBjb25zdDsKICAgICB2aXJ0dWFsIEQzRFBPT0wgZ2V0QnVmZmVyUG9v
bChEV09SRCB1c2FnZSkgY29uc3Q7CiAgICAgdmlydHVhbCBEM0RQT09MIGdldFRleHR1cmVQb29s
KGJvb2wgcmVuZGVyYWJsZSkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RGV2aWNl
TG9zdCgpOwogICAgIGJvb2wgaXNEZXZpY2VMb3N0KCk7CiAKLSAgICBib29sIGlzRDNkOUV4RGV2
aWNlKCkgeyByZXR1cm4gbUQzZDlFeCAhPSBOVUxMOyB9CisgICAgYm9vbCBpc0QzZDlFeERldmlj
ZSgpIGNvbnN0IHsgcmV0dXJuIG1EM2Q5RXggIT0gTlVMTDsgfQogICAgIGNvbnN0IGNoYXIgKmdl
dEV4dGVuc2lvblN0cmluZygpIGNvbnN0OworICAgIGJvb2wgc2hhcmVIYW5kbGVTdXBwb3J0ZWQo
KSBjb25zdDsKIAogICBwcml2YXRlOgogICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihEaXNw
bGF5KTsKQEAgLTEwMyw2ICsxMTAsMTAgQEAgY2xhc3MgRGlzcGxheQogICAgIElEaXJlY3QzRDlF
eCAqbUQzZDlFeDsgIC8vIE1pZ2h0IGJlIG51bGwgaWYgRDNEOUV4IGlzIG5vdCBzdXBwb3J0ZWQu
CiAgICAgSURpcmVjdDNERGV2aWNlOSAqbURldmljZTsKICAgICBJRGlyZWN0M0REZXZpY2U5RXgg
Km1EZXZpY2VFeDsgIC8vIE1pZ2h0IGJlIG51bGwgaWYgRDNEOUV4IGlzIG5vdCBzdXBwb3J0ZWQu
CisKKyAgICAvLyBBIHBvb2wgb2YgZXZlbnQgcXVlcmllcyB0aGF0IGFyZSBjdXJyZW50bHkgdW51
c2VkLgorICAgIHN0ZDo6dmVjdG9yPElEaXJlY3QzRFF1ZXJ5OSo+IG1FdmVudFF1ZXJ5UG9vbDsK
KwogICAgIEQzRENBUFM5IG1EZXZpY2VDYXBzOwogICAgIEQzREFEQVBURVJfSURFTlRJRklFUjkg
bUFkYXB0ZXJJZGVudGlmaWVyOwogICAgIEhXTkQgbURldmljZVdpbmRvdzsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJFR0wvU3VyZmFjZS5jcHAgYi9Tb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML1N1cmZhY2UuY3BwCmluZGV4IGFjMmUyZDlhNTdm
M2NhZGNiMjgwNmI1N2EwZjZlNjUxMmRjNzY4ZmQuLjA3YWQzY2YwZjVhNmU0ODFlYjI2NzYxN2Zl
MDYxZDdhZmNiMWU5ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9s
aWJFR0wvU3VyZmFjZS5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVH
TC9TdXJmYWNlLmNwcApAQCAtMjUzLDcgKzI1Myw3IEBAIGJvb2wgU3VyZmFjZTo6cmVzZXRTd2Fw
Q2hhaW4oaW50IGJhY2tidWZmZXJXaWR0aCwgaW50IGJhY2tidWZmZXJIZWlnaHQpCiAgICAgICAg
IHJlc3VsdCA9IGRldmljZS0+Q3JlYXRlQWRkaXRpb25hbFN3YXBDaGFpbigmcHJlc2VudFBhcmFt
ZXRlcnMsICZtU3dhcENoYWluKTsKICAgICB9IGVsc2UgewogICAgICAgICBIQU5ETEUgKnBTaGFy
ZUhhbmRsZSA9IE5VTEw7Ci0gICAgICAgIGlmIChtRGlzcGxheS0+aXNEM2Q5RXhEZXZpY2UoKSkg
eworICAgICAgICBpZiAobURpc3BsYXktPnNoYXJlSGFuZGxlU3VwcG9ydGVkKCkpIHsKICAgICAg
ICAgICAgIHBTaGFyZUhhbmRsZSA9ICZtU2hhcmVIYW5kbGU7CiAgICAgICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9saWJFR0wuY3BwIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkVHTC9saWJFR0wuY3BwCmluZGV4IGZmZmRhNzg0
OTZkMDBjYmNjNTRmMzE3ZWVmM2M4Y2IwYjY0MDgzNDcuLjRiN2Y5ZTFmY2VkMjZkYWU5NTU1NGU5
NWU1NzdlYzg4OGY5OTVkNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJFR0wvbGliRUdMLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
RUdML2xpYkVHTC5jcHAKQEAgLTEwNSw4ICsxMDUsNiBAQCBFR0xEaXNwbGF5IF9fc3RkY2FsbCBl
Z2xHZXREaXNwbGF5KEVHTE5hdGl2ZURpc3BsYXlUeXBlIGRpc3BsYXlfaWQpCiAgICAgewogICAg
ICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9BTExPQywgRUdMX05PX0RJU1BMQVkpOwogICAgIH0K
LQotICAgIHJldHVybiBFR0xfTk9fRElTUExBWTsKIH0KIAogRUdMQm9vbGVhbiBfX3N0ZGNhbGwg
ZWdsSW5pdGlhbGl6ZShFR0xEaXNwbGF5IGRweSwgRUdMaW50ICptYWpvciwgRUdMaW50ICptaW5v
cikKQEAgLTEzNyw4ICsxMzUsNiBAQCBFR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xJbml0aWFsaXpl
KEVHTERpc3BsYXkgZHB5LCBFR0xpbnQgKm1ham9yLCBFR0xpbnQgKm1pbm9yKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIGVycm9yKEVHTF9CQURfQUxMT0MsIEVHTF9GQUxTRSk7CiAgICAgfQotCi0g
ICAgcmV0dXJuIEVHTF9GQUxTRTsKIH0KIAogRUdMQm9vbGVhbiBfX3N0ZGNhbGwgZWdsVGVybWlu
YXRlKEVHTERpc3BsYXkgZHB5KQpAQCAtMTYyLDggKzE1OCw2IEBAIEVHTEJvb2xlYW4gX19zdGRj
YWxsIGVnbFRlcm1pbmF0ZShFR0xEaXNwbGF5IGRweSkKICAgICB7CiAgICAgICAgIHJldHVybiBl
cnJvcihFR0xfQkFEX0FMTE9DLCBFR0xfRkFMU0UpOwogICAgIH0KLQotICAgIHJldHVybiBFR0xf
RkFMU0U7CiB9CiAKIGNvbnN0IGNoYXIgKl9fc3RkY2FsbCBlZ2xRdWVyeVN0cmluZyhFR0xEaXNw
bGF5IGRweSwgRUdMaW50IG5hbWUpCkBAIC0xOTcsOCArMTkxLDYgQEAgY29uc3QgY2hhciAqX19z
dGRjYWxsIGVnbFF1ZXJ5U3RyaW5nKEVHTERpc3BsYXkgZHB5LCBFR0xpbnQgbmFtZSkKICAgICB7
CiAgICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX0FMTE9DLCAoY29uc3QgY2hhciopTlVMTCk7
CiAgICAgfQotCi0gICAgcmV0dXJuIE5VTEw7CiB9CiAKIEVHTEJvb2xlYW4gX19zdGRjYWxsIGVn
bEdldENvbmZpZ3MoRUdMRGlzcGxheSBkcHksIEVHTENvbmZpZyAqY29uZmlncywgRUdMaW50IGNv
bmZpZ19zaXplLCBFR0xpbnQgKm51bV9jb25maWcpCkBAIC0yMzQsOCArMjI2LDYgQEAgRUdMQm9v
bGVhbiBfX3N0ZGNhbGwgZWdsR2V0Q29uZmlncyhFR0xEaXNwbGF5IGRweSwgRUdMQ29uZmlnICpj
b25maWdzLCBFR0xpbnQgY28KICAgICB7CiAgICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX0FM
TE9DLCBFR0xfRkFMU0UpOwogICAgIH0KLQotICAgIHJldHVybiBFR0xfRkFMU0U7CiB9CiAKIEVH
TEJvb2xlYW4gX19zdGRjYWxsIGVnbENob29zZUNvbmZpZyhFR0xEaXNwbGF5IGRweSwgY29uc3Qg
RUdMaW50ICphdHRyaWJfbGlzdCwgRUdMQ29uZmlnICpjb25maWdzLCBFR0xpbnQgY29uZmlnX3Np
emUsIEVHTGludCAqbnVtX2NvbmZpZykKQEAgLTI3Myw4ICsyNjMsNiBAQCBFR0xCb29sZWFuIF9f
c3RkY2FsbCBlZ2xDaG9vc2VDb25maWcoRUdMRGlzcGxheSBkcHksIGNvbnN0IEVHTGludCAqYXR0
cmliX2xpc3QsCiAgICAgewogICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9BTExPQywgRUdM
X0ZBTFNFKTsKICAgICB9Ci0KLSAgICByZXR1cm4gRUdMX0ZBTFNFOwogfQogCiBFR0xCb29sZWFu
IF9fc3RkY2FsbCBlZ2xHZXRDb25maWdBdHRyaWIoRUdMRGlzcGxheSBkcHksIEVHTENvbmZpZyBj
b25maWcsIEVHTGludCBhdHRyaWJ1dGUsIEVHTGludCAqdmFsdWUpCkBAIC0zMDIsOCArMjkwLDYg
QEAgRUdMQm9vbGVhbiBfX3N0ZGNhbGwgZWdsR2V0Q29uZmlnQXR0cmliKEVHTERpc3BsYXkgZHB5
LCBFR0xDb25maWcgY29uZmlnLCBFR0xpbnQKICAgICB7CiAgICAgICAgIHJldHVybiBlcnJvcihF
R0xfQkFEX0FMTE9DLCBFR0xfRkFMU0UpOwogICAgIH0KLQotICAgIHJldHVybiBFR0xfRkFMU0U7
CiB9CiAKIEVHTFN1cmZhY2UgX19zdGRjYWxsIGVnbENyZWF0ZVdpbmRvd1N1cmZhY2UoRUdMRGlz
cGxheSBkcHksIEVHTENvbmZpZyBjb25maWcsIEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luLCBjb25z
dCBFR0xpbnQgKmF0dHJpYl9saXN0KQpAQCAtMzMzLDggKzMxOSw2IEBAIEVHTFN1cmZhY2UgX19z
dGRjYWxsIGVnbENyZWF0ZVdpbmRvd1N1cmZhY2UoRUdMRGlzcGxheSBkcHksIEVHTENvbmZpZyBj
b25maWcsIEVHCiAgICAgewogICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9BTExPQywgRUdM
X05PX1NVUkZBQ0UpOwogICAgIH0KLQotICAgIHJldHVybiBFR0xfTk9fU1VSRkFDRTsKIH0KIAog
RUdMU3VyZmFjZSBfX3N0ZGNhbGwgZWdsQ3JlYXRlUGJ1ZmZlclN1cmZhY2UoRUdMRGlzcGxheSBk
cHksIEVHTENvbmZpZyBjb25maWcsIGNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QpCkBAIC0zNTcs
OCArMzQxLDYgQEAgRUdMU3VyZmFjZSBfX3N0ZGNhbGwgZWdsQ3JlYXRlUGJ1ZmZlclN1cmZhY2Uo
RUdMRGlzcGxheSBkcHksIEVHTENvbmZpZyBjb25maWcsIGMKICAgICB7CiAgICAgICAgIHJldHVy
biBlcnJvcihFR0xfQkFEX0FMTE9DLCBFR0xfTk9fU1VSRkFDRSk7CiAgICAgfQotCi0gICAgcmV0
dXJuIEVHTF9OT19TVVJGQUNFOwogfQogCiBFR0xTdXJmYWNlIF9fc3RkY2FsbCBlZ2xDcmVhdGVQ
aXhtYXBTdXJmYWNlKEVHTERpc3BsYXkgZHB5LCBFR0xDb25maWcgY29uZmlnLCBFR0xOYXRpdmVQ
aXhtYXBUeXBlIHBpeG1hcCwgY29uc3QgRUdMaW50ICphdHRyaWJfbGlzdCkKQEAgLTM4Myw4ICsz
NjUsNiBAQCBFR0xTdXJmYWNlIF9fc3RkY2FsbCBlZ2xDcmVhdGVQaXhtYXBTdXJmYWNlKEVHTERp
c3BsYXkgZHB5LCBFR0xDb25maWcgY29uZmlnLCBFRwogICAgIHsKICAgICAgICAgcmV0dXJuIGVy
cm9yKEVHTF9CQURfQUxMT0MsIEVHTF9OT19TVVJGQUNFKTsKICAgICB9Ci0KLSAgICByZXR1cm4g
RUdMX05PX1NVUkZBQ0U7CiB9CiAKIEVHTEJvb2xlYW4gX19zdGRjYWxsIGVnbERlc3Ryb3lTdXJm
YWNlKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIHN1cmZhY2UpCkBAIC00MTQsOCArMzk0LDYg
QEAgRUdMQm9vbGVhbiBfX3N0ZGNhbGwgZWdsRGVzdHJveVN1cmZhY2UoRUdMRGlzcGxheSBkcHks
IEVHTFN1cmZhY2Ugc3VyZmFjZSkKICAgICB7CiAgICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFE
X0FMTE9DLCBFR0xfRkFMU0UpOwogICAgIH0KLQotICAgIHJldHVybiBFR0xfRkFMU0U7CiB9CiAK
IEVHTEJvb2xlYW4gX19zdGRjYWxsIGVnbFF1ZXJ5U3VyZmFjZShFR0xEaXNwbGF5IGRweSwgRUdM
U3VyZmFjZSBzdXJmYWNlLCBFR0xpbnQgYXR0cmlidXRlLCBFR0xpbnQgKnZhbHVlKQpAQCAtNTAx
LDggKzQ3OSw2IEBAIEVHTEJvb2xlYW4gX19zdGRjYWxsIGVnbFF1ZXJ5U3VyZmFjZShFR0xEaXNw
bGF5IGRweSwgRUdMU3VyZmFjZSBzdXJmYWNlLCBFR0xpbnQKICAgICB7CiAgICAgICAgIHJldHVy
biBlcnJvcihFR0xfQkFEX0FMTE9DLCBFR0xfRkFMU0UpOwogICAgIH0KLQotICAgIHJldHVybiBF
R0xfRkFMU0U7CiB9CiAKIEVHTEJvb2xlYW4gX19zdGRjYWxsIGVnbFF1ZXJ5U3VyZmFjZVBvaW50
ZXJBTkdMRShFR0xEaXNwbGF5IGRweSwgRUdMU3VyZmFjZSBzdXJmYWNlLCBFR0xpbnQgYXR0cmli
dXRlLCB2b2lkICoqdmFsdWUpCkBAIC01NDAsOCArNTE2LDYgQEAgRUdMQm9vbGVhbiBfX3N0ZGNh
bGwgZWdsUXVlcnlTdXJmYWNlUG9pbnRlckFOR0xFKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJmYWNl
IHN1cmYKICAgICB7CiAgICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX0FMTE9DLCBFR0xfRkFM
U0UpOwogICAgIH0KLQotICAgIHJldHVybiBFR0xfRkFMU0U7CiB9CiAKIEVHTEJvb2xlYW4gX19z
dGRjYWxsIGVnbEJpbmRBUEkoRUdMZW51bSBhcGkpCkBAIC01NjksOCArNTQzLDYgQEAgRUdMQm9v
bGVhbiBfX3N0ZGNhbGwgZWdsQmluZEFQSShFR0xlbnVtIGFwaSkKICAgICB7CiAgICAgICAgIHJl
dHVybiBlcnJvcihFR0xfQkFEX0FMTE9DLCBFR0xfRkFMU0UpOwogICAgIH0KLQotICAgIHJldHVy
biBFR0xfRkFMU0U7CiB9CiAKIEVHTGVudW0gX19zdGRjYWxsIGVnbFF1ZXJ5QVBJKHZvaWQpCkBA
IC01ODcsOCArNTU5LDYgQEAgRUdMZW51bSBfX3N0ZGNhbGwgZWdsUXVlcnlBUEkodm9pZCkKICAg
ICB7CiAgICAgICAgIHJldHVybiBlcnJvcihFR0xfQkFEX0FMTE9DLCBFR0xfRkFMU0UpOwogICAg
IH0KLQotICAgIHJldHVybiBFR0xfRkFMU0U7CiB9CiAKIEVHTEJvb2xlYW4gX19zdGRjYWxsIGVn
bFdhaXRDbGllbnQodm9pZCkKQEAgLTYwNSw4ICs1NzUsNiBAQCBFR0xCb29sZWFuIF9fc3RkY2Fs
bCBlZ2xXYWl0Q2xpZW50KHZvaWQpCiAgICAgewogICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JB
RF9BTExPQywgRUdMX0ZBTFNFKTsKICAgICB9Ci0KLSAgICByZXR1cm4gRUdMX0ZBTFNFOwogfQog
CiBFR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xSZWxlYXNlVGhyZWFkKHZvaWQpCkBAIC02MjMsOCAr
NTkxLDYgQEAgRUdMQm9vbGVhbiBfX3N0ZGNhbGwgZWdsUmVsZWFzZVRocmVhZCh2b2lkKQogICAg
IHsKICAgICAgICAgcmV0dXJuIGVycm9yKEVHTF9CQURfQUxMT0MsIEVHTF9GQUxTRSk7CiAgICAg
fQotCi0gICAgcmV0dXJuIEVHTF9GQUxTRTsKIH0KIAogRUdMU3VyZmFjZSBfX3N0ZGNhbGwgZWds
Q3JlYXRlUGJ1ZmZlckZyb21DbGllbnRCdWZmZXIoRUdMRGlzcGxheSBkcHksIEVHTGVudW0gYnVm
dHlwZSwgRUdMQ2xpZW50QnVmZmVyIGJ1ZmZlciwgRUdMQ29uZmlnIGNvbmZpZywgY29uc3QgRUdM
aW50ICphdHRyaWJfbGlzdCkKQEAgLTY1Myw4ICs2MTksNiBAQCBFR0xTdXJmYWNlIF9fc3RkY2Fs
bCBlZ2xDcmVhdGVQYnVmZmVyRnJvbUNsaWVudEJ1ZmZlcihFR0xEaXNwbGF5IGRweSwgRUdMZW51
bSBidQogICAgIHsKICAgICAgICAgcmV0dXJuIGVycm9yKEVHTF9CQURfQUxMT0MsIEVHTF9OT19T
VVJGQUNFKTsKICAgICB9Ci0KLSAgICByZXR1cm4gRUdMX05PX1NVUkZBQ0U7CiB9CiAKIEVHTEJv
b2xlYW4gX19zdGRjYWxsIGVnbFN1cmZhY2VBdHRyaWIoRUdMRGlzcGxheSBkcHksIEVHTFN1cmZh
Y2Ugc3VyZmFjZSwgRUdMaW50IGF0dHJpYnV0ZSwgRUdMaW50IHZhbHVlKQpAQCAtNjgwLDggKzY0
NCw2IEBAIEVHTEJvb2xlYW4gX19zdGRjYWxsIGVnbFN1cmZhY2VBdHRyaWIoRUdMRGlzcGxheSBk
cHksIEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMaW50CiAgICAgewogICAgICAgICByZXR1cm4gZXJy
b3IoRUdMX0JBRF9BTExPQywgRUdMX0ZBTFNFKTsKICAgICB9Ci0KLSAgICByZXR1cm4gRUdMX0ZB
TFNFOwogfQogCiBFR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xCaW5kVGV4SW1hZ2UoRUdMRGlzcGxh
eSBkcHksIEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMaW50IGJ1ZmZlcikKQEAgLTcyOSw4ICs2OTEs
NiBAQCBFR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xCaW5kVGV4SW1hZ2UoRUdMRGlzcGxheSBkcHks
IEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMaW50CiAgICAgewogICAgICAgICByZXR1cm4gZXJyb3Io
RUdMX0JBRF9BTExPQywgRUdMX0ZBTFNFKTsKICAgICB9Ci0KLSAgICByZXR1cm4gRUdMX0ZBTFNF
OwogfQogCiBFR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xSZWxlYXNlVGV4SW1hZ2UoRUdMRGlzcGxh
eSBkcHksIEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMaW50IGJ1ZmZlcikKQEAgLTc3NSw4ICs3MzUs
NiBAQCBFR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xSZWxlYXNlVGV4SW1hZ2UoRUdMRGlzcGxheSBk
cHksIEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMaQogICAgIHsKICAgICAgICAgcmV0dXJuIGVycm9y
KEVHTF9CQURfQUxMT0MsIEVHTF9GQUxTRSk7CiAgICAgfQotCi0gICAgcmV0dXJuIEVHTF9GQUxT
RTsKIH0KIAogRUdMQm9vbGVhbiBfX3N0ZGNhbGwgZWdsU3dhcEludGVydmFsKEVHTERpc3BsYXkg
ZHB5LCBFR0xpbnQgaW50ZXJ2YWwpCkBAIC04MDcsOCArNzY1LDYgQEAgRUdMQm9vbGVhbiBfX3N0
ZGNhbGwgZWdsU3dhcEludGVydmFsKEVHTERpc3BsYXkgZHB5LCBFR0xpbnQgaW50ZXJ2YWwpCiAg
ICAgewogICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9BTExPQywgRUdMX0ZBTFNFKTsKICAg
ICB9Ci0KLSAgICByZXR1cm4gRUdMX0ZBTFNFOwogfQogCiBFR0xDb250ZXh0IF9fc3RkY2FsbCBl
Z2xDcmVhdGVDb250ZXh0KEVHTERpc3BsYXkgZHB5LCBFR0xDb25maWcgY29uZmlnLCBFR0xDb250
ZXh0IHNoYXJlX2NvbnRleHQsIGNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QpCkBAIC04MzYsNyAr
NzkyLDcgQEAgRUdMQ29udGV4dCBfX3N0ZGNhbGwgZWdsQ3JlYXRlQ29udGV4dChFR0xEaXNwbGF5
IGRweSwgRUdMQ29uZmlnIGNvbmZpZywgRUdMQ29udGUKICAgICAgICAgICAgICAgICAgICAgaWYg
KGF0dHJpYnV0ZVsxXSA9PSBFR0xfVFJVRSkKICAgICAgICAgICAgICAgICAgICAgewogICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEVHTF9CQURfQ09ORklHLCBFR0xfTk9fQ09O
VEVYVCk7ICAgLy8gVW5pbXBsZW1lbnRlZAotICAgICAgICAgICAgICAgICAgICAgICAgcm9idXN0
X2FjY2VzcyA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyByb2J1c3RfYWNjZXNz
ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBlbHNl
IGlmIChhdHRyaWJ1dGVbMV0gIT0gRUdMX0ZBTFNFKQogICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGVycm9yKEVHTF9CQURfQVRUUklCVVRFLCBFR0xfTk9fQ09OVEVYVCk7CkBAIC04ODEs
OCArODM3LDYgQEAgRUdMQ29udGV4dCBfX3N0ZGNhbGwgZWdsQ3JlYXRlQ29udGV4dChFR0xEaXNw
bGF5IGRweSwgRUdMQ29uZmlnIGNvbmZpZywgRUdMQ29udGUKICAgICB7CiAgICAgICAgIHJldHVy
biBlcnJvcihFR0xfQkFEX0FMTE9DLCBFR0xfTk9fQ09OVEVYVCk7CiAgICAgfQotCi0gICAgcmV0
dXJuIEVHTF9OT19DT05URVhUOwogfQogCiBFR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xEZXN0cm95
Q29udGV4dChFR0xEaXNwbGF5IGRweSwgRUdMQ29udGV4dCBjdHgpCkBAIC05MTIsOCArODY2LDYg
QEAgRUdMQm9vbGVhbiBfX3N0ZGNhbGwgZWdsRGVzdHJveUNvbnRleHQoRUdMRGlzcGxheSBkcHks
IEVHTENvbnRleHQgY3R4KQogICAgIHsKICAgICAgICAgcmV0dXJuIGVycm9yKEVHTF9CQURfQUxM
T0MsIEVHTF9GQUxTRSk7CiAgICAgfQotCi0gICAgcmV0dXJuIEVHTF9GQUxTRTsKIH0KIAogRUdM
Qm9vbGVhbiBfX3N0ZGNhbGwgZWdsTWFrZUN1cnJlbnQoRUdMRGlzcGxheSBkcHksIEVHTFN1cmZh
Y2UgZHJhdywgRUdMU3VyZmFjZSByZWFkLCBFR0xDb250ZXh0IGN0eCkKQEAgLTk1NCw5ICs5MDYs
NiBAQCBFR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xNYWtlQ3VycmVudChFR0xEaXNwbGF5IGRweSwg
RUdMU3VyZmFjZSBkcmF3LCBFR0xTdXJmYWNlCiAgICAgICAgICAgICBVTklNUExFTUVOVEVEKCk7
ICAgLy8gRklYTUUKICAgICAgICAgfQogCi0gICAgICAgIGVnbDo6U3VyZmFjZSogcHJldmlvdXNE
cmF3ID0gc3RhdGljX2Nhc3Q8ZWdsOjpTdXJmYWNlKj4oZWdsOjpnZXRDdXJyZW50RHJhd1N1cmZh
Y2UoKSk7Ci0gICAgICAgIGVnbDo6U3VyZmFjZSogcHJldmlvdXNSZWFkID0gc3RhdGljX2Nhc3Q8
ZWdsOjpTdXJmYWNlKj4oZWdsOjpnZXRDdXJyZW50UmVhZFN1cmZhY2UoKSk7Ci0KICAgICAgICAg
ZWdsOjpzZXRDdXJyZW50RGlzcGxheShkcHkpOwogICAgICAgICBlZ2w6OnNldEN1cnJlbnREcmF3
U3VyZmFjZShkcmF3KTsKICAgICAgICAgZWdsOjpzZXRDdXJyZW50UmVhZFN1cmZhY2UocmVhZCk7
CkBAIC05NjksOCArOTE4LDYgQEAgRUdMQm9vbGVhbiBfX3N0ZGNhbGwgZWdsTWFrZUN1cnJlbnQo
RUdMRGlzcGxheSBkcHksIEVHTFN1cmZhY2UgZHJhdywgRUdMU3VyZmFjZQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGVycm9yKEVHTF9CQURfQUxMT0MsIEVHTF9GQUxTRSk7CiAgICAgfQotCi0gICAg
cmV0dXJuIEVHTF9GQUxTRTsKIH0KIAogRUdMQ29udGV4dCBfX3N0ZGNhbGwgZWdsR2V0Q3VycmVu
dENvbnRleHQodm9pZCkKQEAgLTk4Nyw4ICs5MzQsNiBAQCBFR0xDb250ZXh0IF9fc3RkY2FsbCBl
Z2xHZXRDdXJyZW50Q29udGV4dCh2b2lkKQogICAgIHsKICAgICAgICAgcmV0dXJuIGVycm9yKEVH
TF9CQURfQUxMT0MsIEVHTF9OT19DT05URVhUKTsKICAgICB9Ci0KLSAgICByZXR1cm4gRUdMX05P
X0NPTlRFWFQ7CiB9CiAKIEVHTFN1cmZhY2UgX19zdGRjYWxsIGVnbEdldEN1cnJlbnRTdXJmYWNl
KEVHTGludCByZWFkZHJhdykKQEAgLTEwMTYsOCArOTYxLDYgQEAgRUdMU3VyZmFjZSBfX3N0ZGNh
bGwgZWdsR2V0Q3VycmVudFN1cmZhY2UoRUdMaW50IHJlYWRkcmF3KQogICAgIHsKICAgICAgICAg
cmV0dXJuIGVycm9yKEVHTF9CQURfQUxMT0MsIEVHTF9OT19TVVJGQUNFKTsKICAgICB9Ci0KLSAg
ICByZXR1cm4gRUdMX05PX1NVUkZBQ0U7CiB9CiAKIEVHTERpc3BsYXkgX19zdGRjYWxsIGVnbEdl
dEN1cnJlbnREaXNwbGF5KHZvaWQpCkBAIC0xMDM0LDggKzk3Nyw2IEBAIEVHTERpc3BsYXkgX19z
dGRjYWxsIGVnbEdldEN1cnJlbnREaXNwbGF5KHZvaWQpCiAgICAgewogICAgICAgICByZXR1cm4g
ZXJyb3IoRUdMX0JBRF9BTExPQywgRUdMX05PX0RJU1BMQVkpOwogICAgIH0KLQotICAgIHJldHVy
biBFR0xfTk9fRElTUExBWTsKIH0KIAogRUdMQm9vbGVhbiBfX3N0ZGNhbGwgZWdsUXVlcnlDb250
ZXh0KEVHTERpc3BsYXkgZHB5LCBFR0xDb250ZXh0IGN0eCwgRUdMaW50IGF0dHJpYnV0ZSwgRUdM
aW50ICp2YWx1ZSkKQEAgLTEwNjEsOCArMTAwMiw2IEBAIEVHTEJvb2xlYW4gX19zdGRjYWxsIGVn
bFF1ZXJ5Q29udGV4dChFR0xEaXNwbGF5IGRweSwgRUdMQ29udGV4dCBjdHgsIEVHTGludCBhdHRy
CiAgICAgewogICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9BTExPQywgRUdMX0ZBTFNFKTsK
ICAgICB9Ci0KLSAgICByZXR1cm4gRUdMX0ZBTFNFOwogfQogCiBFR0xCb29sZWFuIF9fc3RkY2Fs
bCBlZ2xXYWl0R0wodm9pZCkKQEAgLTEwNzksOCArMTAxOCw2IEBAIEVHTEJvb2xlYW4gX19zdGRj
YWxsIGVnbFdhaXRHTCh2b2lkKQogICAgIHsKICAgICAgICAgcmV0dXJuIGVycm9yKEVHTF9CQURf
QUxMT0MsIEVHTF9GQUxTRSk7CiAgICAgfQotCi0gICAgcmV0dXJuIEVHTF9GQUxTRTsKIH0KIAog
RUdMQm9vbGVhbiBfX3N0ZGNhbGwgZWdsV2FpdE5hdGl2ZShFR0xpbnQgZW5naW5lKQpAQCAtMTA5
Nyw4ICsxMDM0LDYgQEAgRUdMQm9vbGVhbiBfX3N0ZGNhbGwgZWdsV2FpdE5hdGl2ZShFR0xpbnQg
ZW5naW5lKQogICAgIHsKICAgICAgICAgcmV0dXJuIGVycm9yKEVHTF9CQURfQUxMT0MsIEVHTF9G
QUxTRSk7CiAgICAgfQotCi0gICAgcmV0dXJuIEVHTF9GQUxTRTsKIH0KIAogRUdMQm9vbGVhbiBf
X3N0ZGNhbGwgZWdsU3dhcEJ1ZmZlcnMoRUdMRGlzcGxheSBkcHksIEVHTFN1cmZhY2Ugc3VyZmFj
ZSkKQEAgLTExNjUsOCArMTEwMCw2IEBAIEVHTEJvb2xlYW4gX19zdGRjYWxsIGVnbENvcHlCdWZm
ZXJzKEVHTERpc3BsYXkgZHB5LCBFR0xTdXJmYWNlIHN1cmZhY2UsIEVHTE5hdGl2CiAgICAgewog
ICAgICAgICByZXR1cm4gZXJyb3IoRUdMX0JBRF9BTExPQywgRUdMX0ZBTFNFKTsKICAgICB9Ci0K
LSAgICByZXR1cm4gRUdMX0ZBTFNFOwogfQogCiBFR0xCb29sZWFuIF9fc3RkY2FsbCBlZ2xQb3N0
U3ViQnVmZmVyTlYoRUdMRGlzcGxheSBkcHksIEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMaW50IHgs
IEVHTGludCB5LCBFR0xpbnQgd2lkdGgsIEVHTGludCBoZWlnaHQpCkBAIC0xMjM5LDcgKzExNzIs
NSBAQCBfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlIF9fc3RkY2FsbCBl
Z2xHZXRQcm9jQWRkcmVzcyhjb25zdCBjaGFyCiAgICAgewogICAgICAgICByZXR1cm4gZXJyb3Io
RUdMX0JBRF9BTExPQywgKF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUp
TlVMTCk7CiAgICAgfQotCi0gICAgcmV0dXJuIE5VTEw7CiB9CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML2xpYkVHTC52Y3Byb2ogYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliRUdML2xpYkVHTC52Y3Byb2oKaW5kZXggNzIxM2Y5NTc5YWIz
ODE1N2VmMjY0OTIzNGI1NTliNDBiNWMzMTc0Ni4uYzNlOGE0YjllYTY1YWJkOTIzOTJjNjgxNGZk
ZGI0NmRlZGNlZjVlOCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkVHTC9saWJFR0wudmNwcm9qCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJF
R0wvbGliRUdMLnZjcHJvagpAQCAtNTAsOSArNTAsMTEgQEAKIAkJCQlCYXNpY1J1bnRpbWVDaGVj
a3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjEiCiAJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9
IjAiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKKwkJCQlEaXNh
YmxlU3BlY2lmaWNXYXJuaW5ncz0iNDEwMDs0MTI3OzQxODk7NDIzOTs0MjQ0OzQyNDU7NDUxMjs0
NzAyIgogCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iZmFsc2UiCiAJCQkJRGVi
dWdJbmZvcm1hdGlvbkZvcm1hdD0iNCIKKwkJCQlXYXJuQXNFcnJvcj0idHJ1ZSIKIAkJCS8+CiAJ
CQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMTI5
LDkgKzEzMSwxMSBAQAogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7
X1dJTkRPV1M7X1VTUkRMTDtMSUJFR0xfRVhQT1JUUztfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7
Tk9NSU5NQVg7X1NFQ1VSRV9TQ0w9MCIKIAkJCQlSdW50aW1lTGlicmFyeT0iMCIKIAkJCQlVc2VQ
cmVjb21waWxlZEhlYWRlcj0iMCIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xl
dmVsPSI0IgorCQkJCURpc2FibGVTcGVjaWZpY1dhcm5pbmdzPSI0MTAwOzQxMjc7NDE4OTs0MjM5
OzQyNDQ7NDI0NTs0NTEyOzQ3MDIiCiAJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1z
PSJmYWxzZSIKIAkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgorCQkJCVdhcm5Bc0Vycm9y
PSJ0cnVlIgogCQkJLz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21w
aWxlclRvb2wiCkBAIC0yMTEsOSArMjE1LDExIEBACiAJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIz
IgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIxIgogCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIgot
CQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjQiCisJCQkJRGlzYWJsZVNw
ZWNpZmljV2FybmluZ3M9IjQxMDA7NDEyNzs0MTg5OzQyMzk7NDI0NDs0MjQ1OzQ1MTI7NDcwMiIK
IAkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9ImZhbHNlIgogCQkJCURlYnVnSW5m
b3JtYXRpb25Gb3JtYXQ9IjMiCisJCQkJV2FybkFzRXJyb3I9InRydWUiCiAJCQkvPgogCQkJPFRv
b2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKQEAgLTI5MSw5ICsy
OTcsMTEgQEAKIAkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7TkRFQlVHO19XSU5E
T1dTO19VU1JETEw7TElCRUdMX0VYUE9SVFM7X0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO05PTUlO
TUFYO19TRUNVUkVfU0NMPTAiCiAJCQkJUnVudGltZUxpYnJhcnk9IjAiCiAJCQkJVXNlUHJlY29t
cGlsZWRIZWFkZXI9IjAiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0i
NCIKKwkJCQlEaXNhYmxlU3BlY2lmaWNXYXJuaW5ncz0iNDEwMDs0MTI3OzQxODk7NDIzOTs0MjQ0
OzQyNDU7NDUxMjs0NzAyIgogCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iZmFs
c2UiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKKwkJCQlXYXJuQXNFcnJvcj0idHJ1
ZSIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJU
b29sIgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9C
bGl0LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvQmxpdC5jcHAK
aW5kZXggOTIzYTlkZTA3N2M3MzU4ZWNiYmIxNjE3NDczYWVhZThmYzFhODE3OC4uYTI0OGQ2OTFm
OTIzYmQxODFhMWJmYmYxMzg2YzNhZjZjMWVhNmRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9CbGl0LmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL0JsaXQuY3BwCkBAIC01MDQsNiArNTA0LDExIEBAIHZvaWQg
QmxpdDo6c2V0Q29tbW9uQmxpdFN0YXRlKCkKIAogICAgIFJFQ1Qgc2Npc3NvclJlY3QgPSB7MH07
ICAgLy8gU2Npc3NvcmluZyBpcyBkaXNhYmxlZCBmb3IgZmxpcHBpbmcsIGJ1dCB3ZSBuZWVkIHRo
aXMgdG8gY2FwdHVyZSBhbmQgcmVzdG9yZSB0aGUgb2xkIHJlY3RhbmdsZQogICAgIGRldmljZS0+
U2V0U2Npc3NvclJlY3QoJnNjaXNzb3JSZWN0KTsKKworICAgIGZvcihpbnQgaSA9IDA7IGkgPCBN
QVhfVkVSVEVYX0FUVFJJQlM7IGkrKykKKyAgICB7CisgICAgICAgIGRldmljZS0+U2V0U3RyZWFt
U291cmNlRnJlcShpLCAxKTsKKyAgICB9CiB9CiAKIHZvaWQgQmxpdDo6cmVuZGVyKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvQnVmZmVyLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0J1ZmZlci5oCmluZGV4IGI2MTI2
MjY3ZTRjYWMxMjI0NGVlY2RmNDZlNjZjZDExODlkZWE0MWMuLjcwMTljNGUxNjBiMjIzZDNhNmQw
YTVmNTFlZDdlMzY4NjA3NWM2NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJHTEVTdjIvQnVmZmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9CdWZmZXIuaApAQCAtMTgsNyArMTgsNyBAQAogI2luY2x1ZGUgPEdMRVMyL2ds
Mi5oPgogCiAjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKLSNpbmNsdWRlICJsaWJHTEVT
djIvUmVmQ291bnRPYmplY3QuaCIKKyNpbmNsdWRlICJjb21tb24vUmVmQ291bnRPYmplY3QuaCIK
IAogbmFtZXNwYWNlIGdsCiB7CkBAIC00OCwxMiArNDgsMTIgQEAgY2xhc3MgQnVmZmVyIDogcHVi
bGljIFJlZkNvdW50T2JqZWN0CiAgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKEJ1ZmZlcik7
CiAKICAgICBHTHVieXRlICptQ29udGVudHM7Ci0gICAgc2l6ZV90IG1TaXplOworICAgIEdMc2l6
ZWlwdHIgbVNpemU7CiAgICAgR0xlbnVtIG1Vc2FnZTsKIAogICAgIFN0YXRpY1ZlcnRleEJ1ZmZl
ciAqbVN0YXRpY1ZlcnRleEJ1ZmZlcjsKICAgICBTdGF0aWNJbmRleEJ1ZmZlciAqbVN0YXRpY0lu
ZGV4QnVmZmVyOwotICAgIHNpemVfdCBtVW5tb2RpZmllZERhdGFVc2U7CisgICAgR0xzaXplaXB0
ciBtVW5tb2RpZmllZERhdGFVc2U7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0NvbnRleHQuY3BwIGIvU291cmNlL1RoaXJkUGFydHkv
QU5HTEUvc3JjL2xpYkdMRVN2Mi9Db250ZXh0LmNwcAppbmRleCA5YjhmNzI5ZTcxZWY5MWZjNDYw
YzMyNDBiNGEwOTY3ZmZiZmYzNjRhLi42NmNkNWMwOGNkOWU4MWEzZTgxYzMxM2JkODU2ZDBhYjU2
NjU3OTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3Yy
L0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIv
Q29udGV4dC5jcHAKQEAgLTEsNSArMSw1IEBACiAvLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIw
MTEgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENv
cHlyaWdodCAoYykgMjAwMi0yMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlLgogLy8KQEAgLTIyLDYgKzIyLDcgQEAKICNpbmNsdWRlICJsaWJHTEVTdjIvRmVuY2UuaCIK
ICNpbmNsdWRlICJsaWJHTEVTdjIvRnJhbWVCdWZmZXIuaCIKICNpbmNsdWRlICJsaWJHTEVTdjIv
UHJvZ3JhbS5oIgorI2luY2x1ZGUgImxpYkdMRVN2Mi9RdWVyeS5oIgogI2luY2x1ZGUgImxpYkdM
RVN2Mi9SZW5kZXJCdWZmZXIuaCIKICNpbmNsdWRlICJsaWJHTEVTdjIvU2hhZGVyLmgiCiAjaW5j
bHVkZSAibGliR0xFU3YyL1RleHR1cmUuaCIKQEAgLTMxLDExICszMiw2IEBACiAjdW5kZWYgbmVh
cgogI3VuZGVmIGZhcgogCi1uYW1lc3BhY2UKLXsKLSAgICBlbnVtIHsgQ0xPU0lOR19JTkRFWF9C
VUZGRVJfU0laRSA9IDQwOTYgfTsKLX0KLQogbmFtZXNwYWNlIGdsCiB7CiBDb250ZXh0OjpDb250
ZXh0KGNvbnN0IGVnbDo6Q29uZmlnICpjb25maWcsIGNvbnN0IGdsOjpDb250ZXh0ICpzaGFyZUNv
bnRleHQsIGJvb2wgbm90aWZ5UmVzZXRzLCBib29sIHJvYnVzdEFjY2VzcykgOiBtQ29uZmlnKGNv
bmZpZykKQEAgLTE1Miw3ICsxNDgsNyBAQCBDb250ZXh0OjpDb250ZXh0KGNvbnN0IGVnbDo6Q29u
ZmlnICpjb25maWcsIGNvbnN0IGdsOjpDb250ZXh0ICpzaGFyZUNvbnRleHQsIGJvbwogICAgIG1W
ZXJ0ZXhEYXRhTWFuYWdlciA9IE5VTEw7CiAgICAgbUluZGV4RGF0YU1hbmFnZXIgPSBOVUxMOwog
ICAgIG1CbGl0ID0gTlVMTDsKLSAgICBtQ2xvc2luZ0lCID0gTlVMTDsKKyAgICBtTGluZUxvb3BJ
QiA9IE5VTEw7CiAKICAgICBtSW52YWxpZEVudW0gPSBmYWxzZTsKICAgICBtSW52YWxpZFZhbHVl
ID0gZmFsc2U7CkBAIC0xNzAsNiArMTY2LDcgQEAgQ29udGV4dDo6Q29udGV4dChjb25zdCBlZ2w6
OkNvbmZpZyAqY29uZmlnLCBjb25zdCBnbDo6Q29udGV4dCAqc2hhcmVDb250ZXh0LCBib28KICAg
ICBtU3VwcG9ydHNEWFQzVGV4dHVyZXMgPSBmYWxzZTsKICAgICBtU3VwcG9ydHNEWFQ1VGV4dHVy
ZXMgPSBmYWxzZTsKICAgICBtU3VwcG9ydHNFdmVudFF1ZXJpZXMgPSBmYWxzZTsKKyAgICBtU3Vw
cG9ydHNPY2NsdXNpb25RdWVyaWVzID0gZmFsc2U7CiAgICAgbU51bUNvbXByZXNzZWRUZXh0dXJl
Rm9ybWF0cyA9IDA7CiAgICAgbU1heFN1cHBvcnRlZFNhbXBsZXMgPSAwOwogICAgIG1NYXNrZWRD
bGVhclNhdmVkU3RhdGUgPSBOVUxMOwpAQCAtMTk4LDYgKzE5NSwxMSBAQCBDb250ZXh0Ojp+Q29u
dGV4dCgpCiAgICAgICAgIGRlbGV0ZUZlbmNlKG1GZW5jZU1hcC5iZWdpbigpLT5maXJzdCk7CiAg
ICAgfQogCisgICAgd2hpbGUgKCFtUXVlcnlNYXAuZW1wdHkoKSkKKyAgICB7CisgICAgICAgIGRl
bGV0ZVF1ZXJ5KG1RdWVyeU1hcC5iZWdpbigpLT5maXJzdCk7CisgICAgfQorCiAgICAgd2hpbGUg
KCFtTXVsdGlTYW1wbGVTdXBwb3J0LmVtcHR5KCkpCiAgICAgewogICAgICAgICBkZWxldGUgW10g
bU11bHRpU2FtcGxlU3VwcG9ydC5iZWdpbigpLT5zZWNvbmQ7CkBAIC0yMjIsNiArMjI0LDExIEBA
IENvbnRleHQ6On5Db250ZXh0KCkKICAgICAgICAgbVN0YXRlLnZlcnRleEF0dHJpYnV0ZVtpXS5t
Qm91bmRCdWZmZXIuc2V0KE5VTEwpOwogICAgIH0KIAorICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
UVVFUllfVFlQRV9DT1VOVDsgaSsrKQorICAgIHsKKyAgICAgICAgbVN0YXRlLmFjdGl2ZVF1ZXJ5
W2ldLnNldChOVUxMKTsKKyAgICB9CisKICAgICBtU3RhdGUuYXJyYXlCdWZmZXIuc2V0KE5VTEwp
OwogICAgIG1TdGF0ZS5lbGVtZW50QXJyYXlCdWZmZXIuc2V0KE5VTEwpOwogICAgIG1TdGF0ZS5y
ZW5kZXJidWZmZXIuc2V0KE5VTEwpOwpAQCAtMjMyLDcgKzIzOSw3IEBAIENvbnRleHQ6On5Db250
ZXh0KCkKICAgICBkZWxldGUgbVZlcnRleERhdGFNYW5hZ2VyOwogICAgIGRlbGV0ZSBtSW5kZXhE
YXRhTWFuYWdlcjsKICAgICBkZWxldGUgbUJsaXQ7Ci0gICAgZGVsZXRlIG1DbG9zaW5nSUI7Cisg
ICAgZGVsZXRlIG1MaW5lTG9vcElCOwogCiAgICAgaWYgKG1NYXNrZWRDbGVhclNhdmVkU3RhdGUp
CiAgICAgewpAQCAtMjU1LDkgKzI2MiwxMCBAQCB2b2lkIENvbnRleHQ6Om1ha2VDdXJyZW50KGVn
bDo6RGlzcGxheSAqZGlzcGxheSwgZWdsOjpTdXJmYWNlICpzdXJmYWNlKQogICAgICAgICBtSW5k
ZXhEYXRhTWFuYWdlciA9IG5ldyBJbmRleERhdGFNYW5hZ2VyKHRoaXMsIG1EZXZpY2UpOwogICAg
ICAgICBtQmxpdCA9IG5ldyBCbGl0KHRoaXMpOwogCi0gICAgICAgIG1TdXBwb3J0c1NoYWRlck1v
ZGVsMyA9IG1EZXZpY2VDYXBzLlBpeGVsU2hhZGVyVmVyc2lvbiA9PSBEM0RQU19WRVJTSU9OKDMs
IDApOworICAgICAgICBtU3VwcG9ydHNTaGFkZXJNb2RlbDMgPSBtRGV2aWNlQ2Fwcy5QaXhlbFNo
YWRlclZlcnNpb24gPj0gRDNEUFNfVkVSU0lPTigzLCAwKTsKICAgICAgICAgbVN1cHBvcnRzVmVy
dGV4VGV4dHVyZSA9IG1EaXNwbGF5LT5nZXRWZXJ0ZXhUZXh0dXJlU3VwcG9ydCgpOwogICAgICAg
ICBtU3VwcG9ydHNOb25Qb3dlcjJUZXh0dXJlID0gbURpc3BsYXktPmdldE5vblBvd2VyMlRleHR1
cmVTdXBwb3J0KCk7CisgICAgICAgIG1TdXBwb3J0c0luc3RhbmNpbmcgPSBtRGlzcGxheS0+Z2V0
SW5zdGFuY2luZ1N1cHBvcnQoKTsKIAogICAgICAgICBtTWF4VGV4dHVyZURpbWVuc2lvbiA9IHN0
ZDo6bWluKHN0ZDo6bWluKChpbnQpbURldmljZUNhcHMuTWF4VGV4dHVyZVdpZHRoLCAoaW50KW1E
ZXZpY2VDYXBzLk1heFRleHR1cmVIZWlnaHQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChpbnQpZ2w6OklNUExFTUVOVEFUSU9OX01BWF9URVhUVVJFX1NJWkUpOwpA
QCAtMjk0LDYgKzMwMiw3IEBAIHZvaWQgQ29udGV4dDo6bWFrZUN1cnJlbnQoZWdsOjpEaXNwbGF5
ICpkaXNwbGF5LCBlZ2w6OlN1cmZhY2UgKnN1cmZhY2UpCiAgICAgICAgIG1NYXhTdXBwb3J0ZWRT
YW1wbGVzID0gbWF4OwogCiAgICAgICAgIG1TdXBwb3J0c0V2ZW50UXVlcmllcyA9IG1EaXNwbGF5
LT5nZXRFdmVudFF1ZXJ5U3VwcG9ydCgpOworICAgICAgICBtU3VwcG9ydHNPY2NsdXNpb25RdWVy
aWVzID0gbURpc3BsYXktPmdldE9jY2x1c2lvblF1ZXJ5U3VwcG9ydCgpOwogICAgICAgICBtU3Vw
cG9ydHNEWFQxVGV4dHVyZXMgPSBtRGlzcGxheS0+Z2V0RFhUMVRleHR1cmVTdXBwb3J0KCk7CiAg
ICAgICAgIG1TdXBwb3J0c0RYVDNUZXh0dXJlcyA9IG1EaXNwbGF5LT5nZXREWFQzVGV4dHVyZVN1
cHBvcnQoKTsKICAgICAgICAgbVN1cHBvcnRzRFhUNVRleHR1cmVzID0gbURpc3BsYXktPmdldERY
VDVUZXh0dXJlU3VwcG9ydCgpOwpAQCAtODA1LDYgKzgxNCwzMiBAQCBHTHVpbnQgQ29udGV4dDo6
Z2V0QXJyYXlCdWZmZXJIYW5kbGUoKSBjb25zdAogICAgIHJldHVybiBtU3RhdGUuYXJyYXlCdWZm
ZXIuaWQoKTsKIH0KIAorR0x1aW50IENvbnRleHQ6OmdldEFjdGl2ZVF1ZXJ5KEdMZW51bSB0YXJn
ZXQpIGNvbnN0Cit7CisgICAgUXVlcnkgKnF1ZXJ5T2JqZWN0ID0gTlVMTDsKKyAgICAKKyAgICBz
d2l0Y2ggKHRhcmdldCkKKyAgICB7CisgICAgICBjYXNlIEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9F
WFQ6CisgICAgICAgIHF1ZXJ5T2JqZWN0ID0gbVN0YXRlLmFjdGl2ZVF1ZXJ5W1FVRVJZX0FOWV9T
QU1QTEVTX1BBU1NFRF0uZ2V0KCk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9BTllf
U0FNUExFU19QQVNTRURfQ09OU0VSVkFUSVZFX0VYVDoKKyAgICAgICAgcXVlcnlPYmplY3QgPSBt
U3RhdGUuYWN0aXZlUXVlcnlbUVVFUllfQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRV0u
Z2V0KCk7CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUKGZh
bHNlKTsKKyAgICB9CisKKyAgICBpZiAocXVlcnlPYmplY3QpCisgICAgeworICAgICAgICByZXR1
cm4gcXVlcnlPYmplY3QtPmlkKCk7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIHJl
dHVybiAwOworICAgIH0KK30KKwogdm9pZCBDb250ZXh0OjpzZXRFbmFibGVWZXJ0ZXhBdHRyaWJB
cnJheSh1bnNpZ25lZCBpbnQgYXR0cmliTnVtLCBib29sIGVuYWJsZWQpCiB7CiAgICAgbVN0YXRl
LnZlcnRleEF0dHJpYnV0ZVthdHRyaWJOdW1dLm1BcnJheUVuYWJsZWQgPSBlbmFibGVkOwpAQCAt
OTA1LDcgKzk0MCwxNyBAQCBHTHVpbnQgQ29udGV4dDo6Y3JlYXRlRmVuY2UoKQogewogICAgIEdM
dWludCBoYW5kbGUgPSBtRmVuY2VIYW5kbGVBbGxvY2F0b3IuYWxsb2NhdGUoKTsKIAotICAgIG1G
ZW5jZU1hcFtoYW5kbGVdID0gbmV3IEZlbmNlOworICAgIG1GZW5jZU1hcFtoYW5kbGVdID0gbmV3
IEZlbmNlKG1EaXNwbGF5KTsKKworICAgIHJldHVybiBoYW5kbGU7Cit9CisKKy8vIFJldHVybnMg
YW4gdW51c2VkIHF1ZXJ5IG5hbWUKK0dMdWludCBDb250ZXh0OjpjcmVhdGVRdWVyeSgpCit7Cisg
ICAgR0x1aW50IGhhbmRsZSA9IG1RdWVyeUhhbmRsZUFsbG9jYXRvci5hbGxvY2F0ZSgpOworCisg
ICAgbVF1ZXJ5TWFwW2hhbmRsZV0gPSBOVUxMOwogCiAgICAgcmV0dXJuIGhhbmRsZTsKIH0KQEAg
LTk3Nyw2ICsxMDIyLDIwIEBAIHZvaWQgQ29udGV4dDo6ZGVsZXRlRmVuY2UoR0x1aW50IGZlbmNl
KQogICAgIH0KIH0KIAordm9pZCBDb250ZXh0OjpkZWxldGVRdWVyeShHTHVpbnQgcXVlcnkpCit7
CisgICAgUXVlcnlNYXA6Oml0ZXJhdG9yIHF1ZXJ5T2JqZWN0ID0gbVF1ZXJ5TWFwLmZpbmQocXVl
cnkpOworICAgIGlmIChxdWVyeU9iamVjdCAhPSBtUXVlcnlNYXAuZW5kKCkpCisgICAgeworICAg
ICAgICBtUXVlcnlIYW5kbGVBbGxvY2F0b3IucmVsZWFzZShxdWVyeU9iamVjdC0+Zmlyc3QpOwor
ICAgICAgICBpZiAocXVlcnlPYmplY3QtPnNlY29uZCkKKyAgICAgICAgeworICAgICAgICAgICAg
cXVlcnlPYmplY3QtPnNlY29uZC0+cmVsZWFzZSgpOworICAgICAgICB9CisgICAgICAgIG1RdWVy
eU1hcC5lcmFzZShxdWVyeU9iamVjdCk7CisgICAgfQorfQorCiBCdWZmZXIgKkNvbnRleHQ6Omdl
dEJ1ZmZlcihHTHVpbnQgaGFuZGxlKQogewogICAgIHJldHVybiBtUmVzb3VyY2VNYW5hZ2VyLT5n
ZXRCdWZmZXIoaGFuZGxlKTsKQEAgLTEwOTMsNiArMTE1Miw5NSBAQCB2b2lkIENvbnRleHQ6OnVz
ZVByb2dyYW0oR0x1aW50IHByb2dyYW0pCiAgICAgfQogfQogCit2b2lkIENvbnRleHQ6OmJlZ2lu
UXVlcnkoR0xlbnVtIHRhcmdldCwgR0x1aW50IHF1ZXJ5KQoreworICAgIC8vIEZyb20gRVhUX29j
Y2x1c2lvbl9xdWVyeV9ib29sZWFuOiBJZiBCZWdpblF1ZXJ5RVhUIGlzIGNhbGxlZCB3aXRoIGFu
IDxpZD4gIAorICAgIC8vIG9mIHplcm8sIGlmIHRoZSBhY3RpdmUgcXVlcnkgb2JqZWN0IG5hbWUg
Zm9yIDx0YXJnZXQ+IGlzIG5vbi16ZXJvIChmb3IgdGhlICAKKyAgICAvLyB0YXJnZXRzIEFOWV9T
QU1QTEVTX1BBU1NFRF9FWFQgYW5kIEFOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkVfRVhU
LCBpZiAgCisgICAgLy8gdGhlIGFjdGl2ZSBxdWVyeSBmb3IgZWl0aGVyIHRhcmdldCBpcyBub24t
emVybyksIGlmIDxpZD4gaXMgdGhlIG5hbWUgb2YgYW4gCisgICAgLy8gZXhpc3RpbmcgcXVlcnkg
b2JqZWN0IHdob3NlIHR5cGUgZG9lcyBub3QgbWF0Y2ggPHRhcmdldD4sIG9yIGlmIDxpZD4gaXMg
dGhlCisgICAgLy8gYWN0aXZlIHF1ZXJ5IG9iamVjdCBuYW1lIGZvciBhbnkgcXVlcnkgdHlwZSwg
dGhlIGVycm9yIElOVkFMSURfT1BFUkFUSU9OIGlzCisgICAgLy8gZ2VuZXJhdGVkLgorCisgICAg
Ly8gRW5zdXJlIG5vIG90aGVyIHF1ZXJpZXMgYXJlIGFjdGl2ZQorICAgIC8vIE5PVEU6IElmIG90
aGVyIHF1ZXJpZXMgdGhhbiBvY2NsdXNpb24gYXJlIHN1cHBvcnRlZCwgd2Ugd2lsbCBuZWVkIHRv
IGNoZWNrCisgICAgLy8gc2VwYXJhdGVseSB0aGF0OgorICAgIC8vICAgIGEpIFRoZSBxdWVyeSBJ
RCBwYXNzZWQgaXMgbm90IHRoZSBjdXJyZW50IGFjdGl2ZSBxdWVyeSBmb3IgYW55IHRhcmdldC90
eXBlCisgICAgLy8gICAgYikgVGhlcmUgYXJlIG5vIGFjdGl2ZSBxdWVyaWVzIGZvciB0aGUgcmVx
dWVzdGVkIHRhcmdldCAoYW5kIGluIHRoZSBjYXNlCisgICAgLy8gICAgICAgb2YgR0xfQU5ZX1NB
TVBMRVNfUEFTU0VEX0VYVCBhbmQgR0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRV9F
WFQsCisgICAgLy8gICAgICAgbm8gcXVlcnkgbWF5IGJlIGFjdGl2ZSBmb3IgZWl0aGVyIGlmIGds
QmVnaW5RdWVyeSB0YXJnZXRzIGVpdGhlci4KKyAgICBmb3IgKGludCBpID0gMDsgaSA8IFFVRVJZ
X1RZUEVfQ09VTlQ7IGkrKykKKyAgICB7CisgICAgICAgIGlmIChtU3RhdGUuYWN0aXZlUXVlcnlb
aV0uZ2V0KCkgIT0gTlVMTCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdM
X0lOVkFMSURfT1BFUkFUSU9OKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFF1ZXJ5VHlwZSBx
VHlwZTsKKyAgICBzd2l0Y2ggKHRhcmdldCkKKyAgICB7CisgICAgICBjYXNlIEdMX0FOWV9TQU1Q
TEVTX1BBU1NFRF9FWFQ6IAorICAgICAgICBxVHlwZSA9IFFVRVJZX0FOWV9TQU1QTEVTX1BBU1NF
RDsgCisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9BTllfU0FNUExFU19QQVNTRURfQ09O
U0VSVkFUSVZFX0VYVDogCisgICAgICAgIHFUeXBlID0gUVVFUllfQU5ZX1NBTVBMRVNfUEFTU0VE
X0NPTlNFUlZBVElWRTsgCisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDogCisgICAgICAg
IEFTU0VSVChmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBRdWVyeSAqcXVl
cnlPYmplY3QgPSBnZXRRdWVyeShxdWVyeSwgdHJ1ZSwgdGFyZ2V0KTsKKworICAgIC8vIGNoZWNr
IHRoYXQgbmFtZSB3YXMgb2J0YWluZWQgd2l0aCBnbEdlblF1ZXJpZXMKKyAgICBpZiAoIXF1ZXJ5
T2JqZWN0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9O
KTsKKyAgICB9CisKKyAgICAvLyBjaGVjayBmb3IgdHlwZSBtaXNtYXRjaAorICAgIGlmIChxdWVy
eU9iamVjdC0+Z2V0VHlwZSgpICE9IHRhcmdldCkKKyAgICB7CisgICAgICAgIHJldHVybiBlcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgfQorCisgICAgLy8gc2V0IHF1ZXJ5IGFzIGFj
dGl2ZSBmb3Igc3BlY2lmaWVkIHRhcmdldAorICAgIG1TdGF0ZS5hY3RpdmVRdWVyeVtxVHlwZV0u
c2V0KHF1ZXJ5T2JqZWN0KTsKKworICAgIC8vIGJlZ2luIHF1ZXJ5CisgICAgcXVlcnlPYmplY3Qt
PmJlZ2luKCk7Cit9CisKK3ZvaWQgQ29udGV4dDo6ZW5kUXVlcnkoR0xlbnVtIHRhcmdldCkKK3sK
KyAgICBRdWVyeVR5cGUgcVR5cGU7CisKKyAgICBzd2l0Y2ggKHRhcmdldCkKKyAgICB7CisgICAg
ICBjYXNlIEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9FWFQ6IAorICAgICAgICBxVHlwZSA9IFFVRVJZ
X0FOWV9TQU1QTEVTX1BBU1NFRDsgCisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHTF9BTllf
U0FNUExFU19QQVNTRURfQ09OU0VSVkFUSVZFX0VYVDogCisgICAgICAgIHFUeXBlID0gUVVFUllf
QU5ZX1NBTVBMRVNfUEFTU0VEX0NPTlNFUlZBVElWRTsgCisgICAgICAgIGJyZWFrOworICAgICAg
ZGVmYXVsdDogCisgICAgICAgIEFTU0VSVChmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBRdWVyeSAqcXVlcnlPYmplY3QgPSBtU3RhdGUuYWN0aXZlUXVlcnlbcVR5cGVdLmdl
dCgpOworCisgICAgaWYgKHF1ZXJ5T2JqZWN0ID09IE5VTEwpCisgICAgeworICAgICAgICByZXR1
cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgIH0KKworICAgIHF1ZXJ5T2JqZWN0
LT5lbmQoKTsKKworICAgIG1TdGF0ZS5hY3RpdmVRdWVyeVtxVHlwZV0uc2V0KE5VTEwpOworfQor
CiB2b2lkIENvbnRleHQ6OnNldEZyYW1lYnVmZmVyWmVybyhGcmFtZWJ1ZmZlciAqYnVmZmVyKQog
ewogICAgIGRlbGV0ZSBtRnJhbWVidWZmZXJNYXBbMF07CkBAIC0xMTM3LDYgKzEyODUsMjUgQEAg
RmVuY2UgKkNvbnRleHQ6OmdldEZlbmNlKHVuc2lnbmVkIGludCBoYW5kbGUpCiAgICAgfQogfQog
CitRdWVyeSAqQ29udGV4dDo6Z2V0UXVlcnkodW5zaWduZWQgaW50IGhhbmRsZSwgYm9vbCBjcmVh
dGUsIEdMZW51bSB0eXBlKQoreworICAgIFF1ZXJ5TWFwOjppdGVyYXRvciBxdWVyeSA9IG1RdWVy
eU1hcC5maW5kKGhhbmRsZSk7CisKKyAgICBpZiAocXVlcnkgPT0gbVF1ZXJ5TWFwLmVuZCgpKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAg
ICAgIGlmICghcXVlcnktPnNlY29uZCAmJiBjcmVhdGUpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHF1ZXJ5LT5zZWNvbmQgPSBuZXcgUXVlcnkoaGFuZGxlLCB0eXBlKTsKKyAgICAgICAgICAgIHF1
ZXJ5LT5zZWNvbmQtPmFkZFJlZigpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBxdWVyeS0+
c2Vjb25kOworICAgIH0KK30KKwogQnVmZmVyICpDb250ZXh0OjpnZXRBcnJheUJ1ZmZlcigpCiB7
CiAgICAgcmV0dXJuIG1TdGF0ZS5hcnJheUJ1ZmZlci5nZXQoKTsKQEAgLTIwNzksMjEgKzIyNDYs
MjEgQEAgdm9pZCBDb250ZXh0OjphcHBseVN0YXRlKEdMZW51bSBkcmF3TW9kZSkKICAgICB9CiB9
CiAKLUdMZW51bSBDb250ZXh0OjphcHBseVZlcnRleEJ1ZmZlcihHTGludCBmaXJzdCwgR0xzaXpl
aSBjb3VudCkKK0dMZW51bSBDb250ZXh0OjphcHBseVZlcnRleEJ1ZmZlcihHTGludCBmaXJzdCwg
R0xzaXplaSBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMsIEdMc2l6ZWkgKnJlcGVhdERyYXcpCiB7
CiAgICAgVHJhbnNsYXRlZEF0dHJpYnV0ZSBhdHRyaWJ1dGVzW01BWF9WRVJURVhfQVRUUklCU107
CiAKLSAgICBHTGVudW0gZXJyID0gbVZlcnRleERhdGFNYW5hZ2VyLT5wcmVwYXJlVmVydGV4RGF0
YShmaXJzdCwgY291bnQsIGF0dHJpYnV0ZXMpOworICAgIEdMZW51bSBlcnIgPSBtVmVydGV4RGF0
YU1hbmFnZXItPnByZXBhcmVWZXJ0ZXhEYXRhKGZpcnN0LCBjb3VudCwgYXR0cmlidXRlcywgaW5z
dGFuY2VzKTsKICAgICBpZiAoZXJyICE9IEdMX05PX0VSUk9SKQogICAgIHsKICAgICAgICAgcmV0
dXJuIGVycjsKICAgICB9CiAKLSAgICByZXR1cm4gbVZlcnRleERlY2xhcmF0aW9uQ2FjaGUuYXBw
bHlEZWNsYXJhdGlvbihtRGV2aWNlLCBhdHRyaWJ1dGVzLCBnZXRDdXJyZW50UHJvZ3JhbSgpKTsK
KyAgICByZXR1cm4gbVZlcnRleERlY2xhcmF0aW9uQ2FjaGUuYXBwbHlEZWNsYXJhdGlvbihtRGV2
aWNlLCBhdHRyaWJ1dGVzLCBnZXRDdXJyZW50UHJvZ3JhbSgpLCBpbnN0YW5jZXMsIHJlcGVhdERy
YXcpOwogfQogCiAvLyBBcHBsaWVzIHRoZSBpbmRpY2VzIGFuZCBlbGVtZW50IGFycmF5IGJpbmRp
bmdzIHRvIHRoZSBEaXJlY3QzRCA5IGRldmljZQotR0xlbnVtIENvbnRleHQ6OmFwcGx5SW5kZXhC
dWZmZXIoY29uc3Qgdm9pZCAqaW5kaWNlcywgR0xzaXplaSBjb3VudCwgR0xlbnVtIG1vZGUsIEdM
ZW51bSB0eXBlLCBUcmFuc2xhdGVkSW5kZXhEYXRhICppbmRleEluZm8pCitHTGVudW0gQ29udGV4
dDo6YXBwbHlJbmRleEJ1ZmZlcihjb25zdCBHTHZvaWQgKmluZGljZXMsIEdMc2l6ZWkgY291bnQs
IEdMZW51bSBtb2RlLCBHTGVudW0gdHlwZSwgVHJhbnNsYXRlZEluZGV4RGF0YSAqaW5kZXhJbmZv
KQogewogICAgIEdMZW51bSBlcnIgPSBtSW5kZXhEYXRhTWFuYWdlci0+cHJlcGFyZUluZGV4RGF0
YSh0eXBlLCBjb3VudCwgbVN0YXRlLmVsZW1lbnRBcnJheUJ1ZmZlci5nZXQoKSwgaW5kaWNlcywg
aW5kZXhJbmZvKTsKIApAQCAtMjI2Myw3ICsyNDMwLDcgQEAgdm9pZCBDb250ZXh0OjpyZWFkUGl4
ZWxzKEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAogICAg
IEhSRVNVTFQgcmVzdWx0OwogICAgIElEaXJlY3QzRFN1cmZhY2U5ICpzeXN0ZW1TdXJmYWNlID0g
TlVMTDsKICAgICBib29sIGRpcmVjdFRvUGl4ZWxzID0gZ2V0UGFja1JldmVyc2VSb3dPcmRlcigp
ICYmIGdldFBhY2tBbGlnbm1lbnQoKSA8PSA0ICYmIG1EaXNwbGF5LT5pc0QzZDlFeERldmljZSgp
ICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHggPT0gMCAmJiB5ID09IDAgJiYgd2lkdGgg
PT0gZGVzYy5XaWR0aCAmJiBoZWlnaHQgPT0gZGVzYy5IZWlnaHQgJiYKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgeCA9PSAwICYmIHkgPT0gMCAmJiBVSU5UKHdpZHRoKSA9PSBkZXNjLldpZHRo
ICYmIFVJTlQoaGVpZ2h0KSA9PSBkZXNjLkhlaWdodCAmJgogICAgICAgICAgICAgICAgICAgICAg
ICAgICBkZXNjLkZvcm1hdCA9PSBEM0RGTVRfQThSOEc4QjggJiYgZm9ybWF0ID09IEdMX0JHUkFf
RVhUICYmIHR5cGUgPT0gR0xfVU5TSUdORURfQllURTsKICAgICBpZiAoZGlyZWN0VG9QaXhlbHMp
CiAgICAgewpAQCAtMjQ0Niw2ICsyNjEzLDcgQEAgdm9pZCBDb250ZXh0OjpyZWFkUGl4ZWxzKEdM
aW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LAogICAgICAgICAg
ICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIFVOSU1QTEVNRU5URUQoKTsgICAvLyBGSVhN
RQogICAgICAgICAgICAgICAgIFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBzd2l0Y2ggKGZvcm1hdCkKQEAgLTI2Mzgs
NiArMjgwNiwxMSBAQCB2b2lkIENvbnRleHQ6OmNsZWFyKEdMYml0ZmllbGQgbWFzaykKICAgICAg
ICAgICAgIG1EZXZpY2UtPlNldFRleHR1cmVTdGFnZVN0YXRlKDAsIEQzRFRTU19BTFBIQUFSRzEs
IEQzRFRBX1RGQUNUT1IpOwogICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNE
UlNfVEVYVFVSRUZBQ1RPUiwgY29sb3IpOwogICAgICAgICAgICAgbURldmljZS0+U2V0UmVuZGVy
U3RhdGUoRDNEUlNfTVVMVElTQU1QTEVNQVNLLCAweEZGRkZGRkZGKTsKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IE1BWF9WRVJURVhfQVRUUklCUzsgaSsrKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1EZXZpY2UtPlNldFN0cmVhbVNvdXJjZUZy
ZXEoaSwgMSk7CisgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGhyID0gbURldmljZS0+RW5k
U3RhdGVCbG9jaygmbU1hc2tlZENsZWFyU2F2ZWRTdGF0ZSk7CiAgICAgICAgICAgICBBU1NFUlQo
U1VDQ0VFREVEKGhyKSB8fCBociA9PSBEM0RFUlJfT1VUT0ZWSURFT01FTU9SWSB8fCBociA9PSBF
X09VVE9GTUVNT1JZKTsKQEAgLTI2OTcsNiArMjg3MCwxMSBAQCB2b2lkIENvbnRleHQ6OmNsZWFy
KEdMYml0ZmllbGQgbWFzaykKICAgICAgICAgbURldmljZS0+U2V0UmVuZGVyU3RhdGUoRDNEUlNf
VEVYVFVSRUZBQ1RPUiwgY29sb3IpOwogICAgICAgICBtRGV2aWNlLT5TZXRSZW5kZXJTdGF0ZShE
M0RSU19NVUxUSVNBTVBMRU1BU0ssIDB4RkZGRkZGRkYpOwogCisgICAgICAgIGZvcihpbnQgaSA9
IDA7IGkgPCBNQVhfVkVSVEVYX0FUVFJJQlM7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAg
bURldmljZS0+U2V0U3RyZWFtU291cmNlRnJlcShpLCAxKTsKKyAgICAgICAgfQorCiAgICAgICAg
IGZsb2F0IHF1YWRbNF1bNF07ICAgLy8gQSBxdWFkcmlsYXRlcmFsIGNvdmVyaW5nIHRoZSB0YXJn
ZXQsIGFsaWduZWQgdG8gbWF0Y2ggdGhlIGVkZ2VzCiAgICAgICAgIHF1YWRbMF1bMF0gPSAtMC41
ZjsKICAgICAgICAgcXVhZFswXVsxXSA9IG1SZW5kZXJUYXJnZXREZXNjLkhlaWdodCAtIDAuNWY7
CkBAIC0yNzM5LDcgKzI5MTcsNyBAQCB2b2lkIENvbnRleHQ6OmNsZWFyKEdMYml0ZmllbGQgbWFz
aykKICAgICB9CiB9CiAKLXZvaWQgQ29udGV4dDo6ZHJhd0FycmF5cyhHTGVudW0gbW9kZSwgR0xp
bnQgZmlyc3QsIEdMc2l6ZWkgY291bnQpCit2b2lkIENvbnRleHQ6OmRyYXdBcnJheXMoR0xlbnVt
IG1vZGUsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50LCBHTHNpemVpIGluc3RhbmNlcykKIHsK
ICAgICBpZiAoIW1TdGF0ZS5jdXJyZW50UHJvZ3JhbSkKICAgICB7CkBAIC0yNzY0LDcgKzI5NDIs
OCBAQCB2b2lkIENvbnRleHQ6OmRyYXdBcnJheXMoR0xlbnVtIG1vZGUsIEdMaW50IGZpcnN0LCBH
THNpemVpIGNvdW50KQogCiAgICAgYXBwbHlTdGF0ZShtb2RlKTsKIAotICAgIEdMZW51bSBlcnIg
PSBhcHBseVZlcnRleEJ1ZmZlcihmaXJzdCwgY291bnQpOworICAgIEdMc2l6ZWkgcmVwZWF0RHJh
dyA9IDE7CisgICAgR0xlbnVtIGVyciA9IGFwcGx5VmVydGV4QnVmZmVyKGZpcnN0LCBjb3VudCwg
aW5zdGFuY2VzLCAmcmVwZWF0RHJhdyk7CiAgICAgaWYgKGVyciAhPSBHTF9OT19FUlJPUikKICAg
ICB7CiAgICAgICAgIHJldHVybiBlcnJvcihlcnIpOwpAQCAtMjc4MiwxNiArMjk2MSw0MCBAQCB2
b2lkIENvbnRleHQ6OmRyYXdBcnJheXMoR0xlbnVtIG1vZGUsIEdMaW50IGZpcnN0LCBHTHNpemVp
IGNvdW50KQogICAgIHsKICAgICAgICAgbURpc3BsYXktPnN0YXJ0U2NlbmUoKTsKICAgICAgICAg
Ci0gICAgICAgIG1EZXZpY2UtPkRyYXdQcmltaXRpdmUocHJpbWl0aXZlVHlwZSwgMCwgcHJpbWl0
aXZlQ291bnQpOworICAgICAgICBpZiAobW9kZSA9PSBHTF9MSU5FX0xPT1ApCisgICAgICAgIHsK
KyAgICAgICAgICAgIGRyYXdMaW5lTG9vcChjb3VudCwgR0xfTk9ORSwgTlVMTCwgMCk7CisgICAg
ICAgIH0KKyAgICAgICAgZWxzZSBpZiAoaW5zdGFuY2VzID4gMCkKKyAgICAgICAgeworICAgICAg
ICAgICAgU3RhdGljSW5kZXhCdWZmZXIgKmNvdW50aW5nSUIgPSBtSW5kZXhEYXRhTWFuYWdlci0+
Z2V0Q291bnRpbmdJbmRpY2VzKGNvdW50KTsKKyAgICAgICAgICAgIGlmIChjb3VudGluZ0lCKQor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChtQXBwbGllZElCU2VyaWFsICE9IGNv
dW50aW5nSUItPmdldFNlcmlhbCgpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgbURldmljZS0+U2V0SW5kaWNlcyhjb3VudGluZ0lCLT5nZXRCdWZmZXIoKSk7CisgICAg
ICAgICAgICAgICAgICAgIG1BcHBsaWVkSUJTZXJpYWwgPSBjb3VudGluZ0lCLT5nZXRTZXJpYWwo
KTsKKyAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgaWYgKG1vZGUgPT0gR0xfTElORV9MT09Q
KSAgIC8vIERyYXcgdGhlIGxhc3Qgc2VnbWVudCBzZXBhcmF0ZWx5CisgICAgICAgICAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCByZXBlYXREcmF3OyBpKyspCisgICAgICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgICAgICBtRGV2aWNlLT5EcmF3SW5kZXhlZFByaW1pdGl2ZShwcmltaXRp
dmVUeXBlLCAwLCAwLCBjb3VudCwgMCwgcHJpbWl0aXZlQ291bnQpOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBFUlIoIkNvdWxkIG5vdCBjcmVhdGUgYSBjb3VudGluZyBpbmRleCBidWZmZXIg
Zm9yIGdsRHJhd0FycmF5c0luc3RhbmNlZC4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZXJy
b3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
ZWxzZSAgIC8vIFJlZ3VsYXIgY2FzZQogICAgICAgICB7Ci0gICAgICAgICAgICBkcmF3Q2xvc2lu
Z0xpbmUoMCwgY291bnQgLSAxLCAwKTsKKyAgICAgICAgICAgIG1EZXZpY2UtPkRyYXdQcmltaXRp
dmUocHJpbWl0aXZlVHlwZSwgMCwgcHJpbWl0aXZlQ291bnQpOwogICAgICAgICB9CiAgICAgfQog
fQogCi12b2lkIENvbnRleHQ6OmRyYXdFbGVtZW50cyhHTGVudW0gbW9kZSwgR0xzaXplaSBjb3Vu
dCwgR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQgKmluZGljZXMpCit2b2lkIENvbnRleHQ6OmRyYXdF
bGVtZW50cyhHTGVudW0gbW9kZSwgR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdM
dm9pZCAqaW5kaWNlcywgR0xzaXplaSBpbnN0YW5jZXMpCiB7CiAgICAgaWYgKCFtU3RhdGUuY3Vy
cmVudFByb2dyYW0pCiAgICAgewpAQCAtMjgyOSw3ICszMDMyLDggQEAgdm9pZCBDb250ZXh0Ojpk
cmF3RWxlbWVudHMoR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25z
dCB2b2lkICoKICAgICB9CiAKICAgICBHTHNpemVpIHZlcnRleENvdW50ID0gaW5kZXhJbmZvLm1h
eEluZGV4IC0gaW5kZXhJbmZvLm1pbkluZGV4ICsgMTsKLSAgICBlcnIgPSBhcHBseVZlcnRleEJ1
ZmZlcihpbmRleEluZm8ubWluSW5kZXgsIHZlcnRleENvdW50KTsKKyAgICBHTHNpemVpIHJlcGVh
dERyYXcgPSAxOworICAgIGVyciA9IGFwcGx5VmVydGV4QnVmZmVyKGluZGV4SW5mby5taW5JbmRl
eCwgdmVydGV4Q291bnQsIGluc3RhbmNlcywgJnJlcGVhdERyYXcpOwogICAgIGlmIChlcnIgIT0g
R0xfTk9fRVJST1IpCiAgICAgewogICAgICAgICByZXR1cm4gZXJyb3IoZXJyKTsKQEAgLTI4NDcs
MTYzICszMDUxLDE2OSBAQCB2b2lkIENvbnRleHQ6OmRyYXdFbGVtZW50cyhHTGVudW0gbW9kZSwg
R0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQgKgogICAgIHsKICAgICAgICAg
bURpc3BsYXktPnN0YXJ0U2NlbmUoKTsKIAotICAgICAgICBtRGV2aWNlLT5EcmF3SW5kZXhlZFBy
aW1pdGl2ZShwcmltaXRpdmVUeXBlLCAtKElOVClpbmRleEluZm8ubWluSW5kZXgsIGluZGV4SW5m
by5taW5JbmRleCwgdmVydGV4Q291bnQsIGluZGV4SW5mby5zdGFydEluZGV4LCBwcmltaXRpdmVD
b3VudCk7Ci0KLSAgICAgICAgaWYgKG1vZGUgPT0gR0xfTElORV9MT09QKSAgIC8vIERyYXcgdGhl
IGxhc3Qgc2VnbWVudCBzZXBhcmF0ZWx5CisgICAgICAgIGlmIChtb2RlID09IEdMX0xJTkVfTE9P
UCkKICAgICAgICAgewotICAgICAgICAgICAgZHJhd0Nsb3NpbmdMaW5lKGNvdW50LCB0eXBlLCBp
bmRpY2VzLCBpbmRleEluZm8ubWluSW5kZXgpOworICAgICAgICAgICAgZHJhd0xpbmVMb29wKGNv
dW50LCB0eXBlLCBpbmRpY2VzLCBpbmRleEluZm8ubWluSW5kZXgpOyAgIAogICAgICAgICB9Ci0g
ICAgfQotfQotCi0vLyBJbXBsZW1lbnRzIGdsRmx1c2ggd2hlbiBibG9jayBpcyBmYWxzZSwgZ2xG
aW5pc2ggd2hlbiBibG9jayBpcyB0cnVlCi12b2lkIENvbnRleHQ6OnN5bmMoYm9vbCBibG9jaykK
LXsKLSAgICBlZ2w6OkRpc3BsYXkgKmRpc3BsYXkgPSBnZXREaXNwbGF5KCk7Ci0gICAgSURpcmVj
dDNEUXVlcnk5ICpldmVudFF1ZXJ5ID0gTlVMTDsKLSAgICBIUkVTVUxUIHJlc3VsdDsKLQotICAg
IHJlc3VsdCA9IG1EZXZpY2UtPkNyZWF0ZVF1ZXJ5KEQzRFFVRVJZVFlQRV9FVkVOVCwgJmV2ZW50
UXVlcnkpOwotICAgIGlmIChGQUlMRUQocmVzdWx0KSkKLSAgICB7Ci0gICAgICAgIEVSUigiQ3Jl
YXRlUXVlcnkgZmFpbGVkIGhyPSV4XG4iLCByZXN1bHQpOwotICAgICAgICBpZiAocmVzdWx0ID09
IEQzREVSUl9PVVRPRlZJREVPTUVNT1JZIHx8IHJlc3VsdCA9PSBFX09VVE9GTUVNT1JZKQotICAg
ICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7Ci0gICAg
ICAgIH0KLSAgICAgICAgQVNTRVJUKGZhbHNlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIHJlc3VsdCA9IGV2ZW50UXVlcnktPklzc3VlKEQzRElTU1VFX0VORCk7Ci0gICAgaWYgKEZB
SUxFRChyZXN1bHQpKQotICAgIHsKLSAgICAgICAgRVJSKCJldmVudFF1ZXJ5LT5Jc3N1ZShFTkQp
IGZhaWxlZCBocj0leFxuIiwgcmVzdWx0KTsKLSAgICAgICAgQVNTRVJUKGZhbHNlKTsKLSAgICAg
ICAgZXZlbnRRdWVyeS0+UmVsZWFzZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
ZG8KLSAgICB7Ci0gICAgICAgIHJlc3VsdCA9IGV2ZW50UXVlcnktPkdldERhdGEoTlVMTCwgMCwg
RDNER0VUREFUQV9GTFVTSCk7Ci0KLSAgICAgICAgaWYoYmxvY2sgJiYgcmVzdWx0ID09IFNfRkFM
U0UpCisgICAgICAgIGVsc2UKICAgICAgICAgewotICAgICAgICAgICAgLy8gS2VlcCBwb2xsaW5n
LCBidXQgYWxsb3cgb3RoZXIgdGhyZWFkcyB0byBkbyBzb21ldGhpbmcgdXNlZnVsIGZpcnN0Ci0g
ICAgICAgICAgICBTbGVlcCgwKTsKLSAgICAgICAgICAgIC8vIGV4cGxpY2l0bHkgY2hlY2sgZm9y
IGRldmljZSBsb3NzCi0gICAgICAgICAgICAvLyBzb21lIGRyaXZlcnMgc2VlbSB0byByZXR1cm4g
U19GQUxTRSBldmVuIGlmIHRoZSBkZXZpY2UgaXMgbG9zdAotICAgICAgICAgICAgLy8gaW5zdGVh
ZCBvZiBEM0RFUlJfREVWSUNFTE9TVCBsaWtlIHRoZXkgc2hvdWxkCi0gICAgICAgICAgICBpZiAo
ZGlzcGxheS0+dGVzdERldmljZUxvc3QoKSkKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgcmVwZWF0RHJhdzsgaSsrKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJlc3Vs
dCA9IEQzREVSUl9ERVZJQ0VMT1NUOworICAgICAgICAgICAgICAgIG1EZXZpY2UtPkRyYXdJbmRl
eGVkUHJpbWl0aXZlKHByaW1pdGl2ZVR5cGUsIC0oSU5UKWluZGV4SW5mby5taW5JbmRleCwgaW5k
ZXhJbmZvLm1pbkluZGV4LCB2ZXJ0ZXhDb3VudCwgaW5kZXhJbmZvLnN0YXJ0SW5kZXgsIHByaW1p
dGl2ZUNvdW50KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICB3aGlsZShi
bG9jayAmJiByZXN1bHQgPT0gU19GQUxTRSk7Cit9CiAKLSAgICBldmVudFF1ZXJ5LT5SZWxlYXNl
KCk7CisvLyBJbXBsZW1lbnRzIGdsRmx1c2ggd2hlbiBibG9jayBpcyBmYWxzZSwgZ2xGaW5pc2gg
d2hlbiBibG9jayBpcyB0cnVlCit2b2lkIENvbnRleHQ6OnN5bmMoYm9vbCBibG9jaykKK3sKKyAg
ICBtRGlzcGxheS0+c3luYyhibG9jayk7Cit9CiAKLSAgICBpZiAoY2hlY2tEZXZpY2VMb3N0KHJl
c3VsdCkpCit2b2lkIENvbnRleHQ6OmRyYXdMaW5lTG9vcChHTHNpemVpIGNvdW50LCBHTGVudW0g
dHlwZSwgY29uc3QgR0x2b2lkICppbmRpY2VzLCBpbnQgbWluSW5kZXgpCit7CisgICAgLy8gR2V0
IHRoZSByYXcgaW5kaWNlcyBmb3IgYW4gaW5kZXhlZCBkcmF3CisgICAgaWYgKHR5cGUgIT0gR0xf
Tk9ORSAmJiBtU3RhdGUuZWxlbWVudEFycmF5QnVmZmVyLmdldCgpKQogICAgIHsKLSAgICAgICAg
ZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgICAgIEJ1ZmZlciAqaW5kZXhCdWZmZXIgPSBt
U3RhdGUuZWxlbWVudEFycmF5QnVmZmVyLmdldCgpOworICAgICAgICBpbnRwdHJfdCBvZmZzZXQg
PSByZWludGVycHJldF9jYXN0PGludHB0cl90PihpbmRpY2VzKTsKKyAgICAgICAgaW5kaWNlcyA9
IHN0YXRpY19jYXN0PGNvbnN0IEdMdWJ5dGUqPihpbmRleEJ1ZmZlci0+ZGF0YSgpKSArIG9mZnNl
dDsKICAgICB9Ci19CiAKLXZvaWQgQ29udGV4dDo6ZHJhd0Nsb3NpbmdMaW5lKHVuc2lnbmVkIGlu
dCBmaXJzdCwgdW5zaWduZWQgaW50IGxhc3QsIGludCBtaW5JbmRleCkKLXsKLSAgICBJRGlyZWN0
M0RJbmRleEJ1ZmZlcjkgKmluZGV4QnVmZmVyID0gTlVMTDsKKyAgICBVSU5UIHN0YXJ0SW5kZXgg
PSAwOwogICAgIGJvb2wgc3VjY2VlZGVkID0gZmFsc2U7Ci0gICAgVUlOVCBvZmZzZXQ7CiAKICAg
ICBpZiAoc3VwcG9ydHMzMmJpdEluZGljZXMoKSkKICAgICB7Ci0gICAgICAgIGNvbnN0IGludCBz
cGFjZU5lZWRlZCA9IDIgKiBzaXplb2YodW5zaWduZWQgaW50KTsKKyAgICAgICAgY29uc3QgaW50
IHNwYWNlTmVlZGVkID0gKGNvdW50ICsgMSkgKiBzaXplb2YodW5zaWduZWQgaW50KTsKIAotICAg
ICAgICBpZiAoIW1DbG9zaW5nSUIpCisgICAgICAgIGlmICghbUxpbmVMb29wSUIpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIG1DbG9zaW5nSUIgPSBuZXcgU3RyZWFtaW5nSW5kZXhCdWZmZXIobURl
dmljZSwgQ0xPU0lOR19JTkRFWF9CVUZGRVJfU0laRSwgRDNERk1UX0lOREVYMzIpOworICAgICAg
ICAgICAgbUxpbmVMb29wSUIgPSBuZXcgU3RyZWFtaW5nSW5kZXhCdWZmZXIobURldmljZSwgSU5J
VElBTF9JTkRFWF9CVUZGRVJfU0laRSwgRDNERk1UX0lOREVYMzIpOwogICAgICAgICB9CiAKLSAg
ICAgICAgbUNsb3NpbmdJQi0+cmVzZXJ2ZVNwYWNlKHNwYWNlTmVlZGVkLCBHTF9VTlNJR05FRF9J
TlQpOwotCi0gICAgICAgIHVuc2lnbmVkIGludCAqZGF0YSA9IHN0YXRpY19jYXN0PHVuc2lnbmVk
IGludCo+KG1DbG9zaW5nSUItPm1hcChzcGFjZU5lZWRlZCwgJm9mZnNldCkpOwotICAgICAgICBp
ZiAoZGF0YSkKKyAgICAgICAgaWYgKG1MaW5lTG9vcElCKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBkYXRhWzBdID0gbGFzdDsKLSAgICAgICAgICAgIGRhdGFbMV0gPSBmaXJzdDsKLSAgICAgICAg
ICAgIG1DbG9zaW5nSUItPnVubWFwKCk7Ci0gICAgICAgICAgICBvZmZzZXQgLz0gNDsKLSAgICAg
ICAgICAgIHN1Y2NlZWRlZCA9IHRydWU7CisgICAgICAgICAgICBtTGluZUxvb3BJQi0+cmVzZXJ2
ZVNwYWNlKHNwYWNlTmVlZGVkLCBHTF9VTlNJR05FRF9JTlQpOworCisgICAgICAgICAgICBVSU5U
IG9mZnNldCA9IDA7CisgICAgICAgICAgICB1bnNpZ25lZCBpbnQgKmRhdGEgPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBpbnQqPihtTGluZUxvb3BJQi0+bWFwKHNwYWNlTmVlZGVkLCAmb2Zmc2V0KSk7
CisgICAgICAgICAgICBzdGFydEluZGV4ID0gb2Zmc2V0IC8gNDsKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgaWYgKGRhdGEpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgc3dpdGNo
ICh0eXBlKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIGNhc2UgR0xfTk9O
RTogICAvLyBOb24taW5kZXhlZCBkcmF3CisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgICAgICAgICAgZGF0YVtpXSA9IGk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgZGF0YVtjb3VudF0gPSAwOworICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICAgICAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgICAgICAgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgICAgICAgICBkYXRhW2ldID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
R0x1Ynl0ZSo+KGluZGljZXMpW2ldOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIGRhdGFbY291bnRdID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0x1Ynl0ZSo+KGluZGlj
ZXMpWzBdOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgIGNh
c2UgR0xfVU5TSUdORURfU0hPUlQ6CisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
ICAgICAgICAgZGF0YVtpXSA9IHN0YXRpY19jYXN0PGNvbnN0IEdMdXNob3J0Kj4oaW5kaWNlcylb
aV07CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZGF0YVtjb3Vu
dF0gPSBzdGF0aWNfY2FzdDxjb25zdCBHTHVzaG9ydCo+KGluZGljZXMpWzBdOworICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgIGNhc2UgR0xfVU5TSUdORURfSU5U
OgorICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspCisg
ICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbaV0gPSBz
dGF0aWNfY2FzdDxjb25zdCBHTHVpbnQqPihpbmRpY2VzKVtpXTsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICBkYXRhW2NvdW50XSA9IHN0YXRpY19jYXN0PGNvbnN0
IEdMdWludCo+KGluZGljZXMpWzBdOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgIGRlZmF1bHQ6IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgbUxpbmVMb29wSUItPnVubWFwKCk7CisgICAgICAgICAgICAgICAg
c3VjY2VlZGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICBl
bHNlCiAgICAgewotICAgICAgICBjb25zdCBpbnQgc3BhY2VOZWVkZWQgPSAyICogc2l6ZW9mKHVu
c2lnbmVkIHNob3J0KTsKKyAgICAgICAgY29uc3QgaW50IHNwYWNlTmVlZGVkID0gKGNvdW50ICsg
MSkgKiBzaXplb2YodW5zaWduZWQgc2hvcnQpOwogCi0gICAgICAgIGlmICghbUNsb3NpbmdJQikK
KyAgICAgICAgaWYgKCFtTGluZUxvb3BJQikKICAgICAgICAgewotICAgICAgICAgICAgbUNsb3Np
bmdJQiA9IG5ldyBTdHJlYW1pbmdJbmRleEJ1ZmZlcihtRGV2aWNlLCBDTE9TSU5HX0lOREVYX0JV
RkZFUl9TSVpFLCBEM0RGTVRfSU5ERVgxNik7CisgICAgICAgICAgICBtTGluZUxvb3BJQiA9IG5l
dyBTdHJlYW1pbmdJbmRleEJ1ZmZlcihtRGV2aWNlLCBJTklUSUFMX0lOREVYX0JVRkZFUl9TSVpF
LCBEM0RGTVRfSU5ERVgxNik7CiAgICAgICAgIH0KIAotICAgICAgICBtQ2xvc2luZ0lCLT5yZXNl
cnZlU3BhY2Uoc3BhY2VOZWVkZWQsIEdMX1VOU0lHTkVEX1NIT1JUKTsKLQotICAgICAgICB1bnNp
Z25lZCBzaG9ydCAqZGF0YSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIHNob3J0Kj4obUNsb3NpbmdJ
Qi0+bWFwKHNwYWNlTmVlZGVkLCAmb2Zmc2V0KSk7Ci0gICAgICAgIGlmIChkYXRhKQorICAgICAg
ICBpZiAobUxpbmVMb29wSUIpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGRhdGFbMF0gPSBsYXN0
OwotICAgICAgICAgICAgZGF0YVsxXSA9IGZpcnN0OwotICAgICAgICAgICAgbUNsb3NpbmdJQi0+
dW5tYXAoKTsKLSAgICAgICAgICAgIG9mZnNldCAvPSAyOwotICAgICAgICAgICAgc3VjY2VlZGVk
ID0gdHJ1ZTsKKyAgICAgICAgICAgIG1MaW5lTG9vcElCLT5yZXNlcnZlU3BhY2Uoc3BhY2VOZWVk
ZWQsIEdMX1VOU0lHTkVEX1NIT1JUKTsKKworICAgICAgICAgICAgVUlOVCBvZmZzZXQgPSAwOwor
ICAgICAgICAgICAgdW5zaWduZWQgc2hvcnQgKmRhdGEgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBz
aG9ydCo+KG1MaW5lTG9vcElCLT5tYXAoc3BhY2VOZWVkZWQsICZvZmZzZXQpKTsKKyAgICAgICAg
ICAgIHN0YXJ0SW5kZXggPSBvZmZzZXQgLyAyOworICAgICAgICAgICAgCisgICAgICAgICAgICBp
ZiAoZGF0YSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHR5cGUpCisg
ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgY2FzZSBHTF9OT05FOiAgIC8vIE5v
bi1pbmRleGVkIGRyYXcKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBj
b3VudDsgaSsrKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBkYXRhW2ldID0gaTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICBkYXRhW2NvdW50XSA9IDA7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgICAgICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGRhdGFbaV0gPSBzdGF0aWNfY2FzdDxjb25zdCBHTHVieXRlKj4o
aW5kaWNlcylbaV07CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
ZGF0YVtjb3VudF0gPSBzdGF0aWNfY2FzdDxjb25zdCBHTHVieXRlKj4oaW5kaWNlcylbMF07Cisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJ
R05FRF9TSE9SVDoKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3Vu
dDsgaSsrKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBk
YXRhW2ldID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0x1c2hvcnQqPihpbmRpY2VzKVtpXTsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBkYXRhW2NvdW50XSA9IHN0YXRp
Y19jYXN0PGNvbnN0IEdMdXNob3J0Kj4oaW5kaWNlcylbMF07CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9JTlQ6CisgICAgICAg
ICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVtpXSA9IHN0YXRpY19jYXN0
PGNvbnN0IEdMdWludCo+KGluZGljZXMpW2ldOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgIGRhdGFbY291bnRdID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0x1aW50Kj4o
aW5kaWNlcylbMF07CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICBtTGluZUxvb3BJQi0+dW5tYXAoKTsKKyAgICAgICAgICAgICAgICBzdWNjZWVkZWQg
PSB0cnVlOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIAogICAgIGlmIChz
dWNjZWVkZWQpCiAgICAgewotICAgICAgICBtRGV2aWNlLT5TZXRJbmRpY2VzKG1DbG9zaW5nSUIt
PmdldEJ1ZmZlcigpKTsKLSAgICAgICAgbUFwcGxpZWRJQlNlcmlhbCA9IG1DbG9zaW5nSUItPmdl
dFNlcmlhbCgpOworICAgICAgICBpZiAobUFwcGxpZWRJQlNlcmlhbCAhPSBtTGluZUxvb3BJQi0+
Z2V0U2VyaWFsKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1EZXZpY2UtPlNldEluZGljZXMo
bUxpbmVMb29wSUItPmdldEJ1ZmZlcigpKTsKKyAgICAgICAgICAgIG1BcHBsaWVkSUJTZXJpYWwg
PSBtTGluZUxvb3BJQi0+Z2V0U2VyaWFsKCk7CisgICAgICAgIH0KIAotICAgICAgICBtRGV2aWNl
LT5EcmF3SW5kZXhlZFByaW1pdGl2ZShEM0RQVF9MSU5FTElTVCwgLW1pbkluZGV4LCBtaW5JbmRl
eCwgbGFzdCwgb2Zmc2V0LCAxKTsKKyAgICAgICAgbURldmljZS0+RHJhd0luZGV4ZWRQcmltaXRp
dmUoRDNEUFRfTElORVNUUklQLCAtbWluSW5kZXgsIG1pbkluZGV4LCBjb3VudCwgc3RhcnRJbmRl
eCwgY291bnQpOwogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAgICBFUlIoIkNvdWxkIG5v
dCBjcmVhdGUgYW4gaW5kZXggYnVmZmVyIGZvciBjbG9zaW5nIGEgbGluZSBsb29wLiIpOwotICAg
ICAgICBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKLSAgICB9Ci19Ci0KLXZvaWQgQ29udGV4dDo6
ZHJhd0Nsb3NpbmdMaW5lKEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCB2b2lkICpp
bmRpY2VzLCBpbnQgbWluSW5kZXgpCi17Ci0gICAgdW5zaWduZWQgaW50IGZpcnN0ID0gMDsKLSAg
ICB1bnNpZ25lZCBpbnQgbGFzdCA9IDA7Ci0KLSAgICBpZiAobVN0YXRlLmVsZW1lbnRBcnJheUJ1
ZmZlci5nZXQoKSkKLSAgICB7Ci0gICAgICAgIEJ1ZmZlciAqaW5kZXhCdWZmZXIgPSBtU3RhdGUu
ZWxlbWVudEFycmF5QnVmZmVyLmdldCgpOwotICAgICAgICBpbnRwdHJfdCBvZmZzZXQgPSByZWlu
dGVycHJldF9jYXN0PGludHB0cl90PihpbmRpY2VzKTsKLSAgICAgICAgaW5kaWNlcyA9IHN0YXRp
Y19jYXN0PGNvbnN0IEdMdWJ5dGUqPihpbmRleEJ1ZmZlci0+ZGF0YSgpKSArIG9mZnNldDsKLSAg
ICB9Ci0KLSAgICBzd2l0Y2ggKHR5cGUpCi0gICAgewotICAgICAgY2FzZSBHTF9VTlNJR05FRF9C
WVRFOgotICAgICAgICBmaXJzdCA9IHN0YXRpY19jYXN0PGNvbnN0IEdMdWJ5dGUqPihpbmRpY2Vz
KVswXTsKLSAgICAgICAgbGFzdCA9IHN0YXRpY19jYXN0PGNvbnN0IEdMdWJ5dGUqPihpbmRpY2Vz
KVtjb3VudCAtIDFdOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hP
UlQ6Ci0gICAgICAgIGZpcnN0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgR0x1c2hvcnQqPihpbmRpY2Vz
KVswXTsKLSAgICAgICAgbGFzdCA9IHN0YXRpY19jYXN0PGNvbnN0IEdMdXNob3J0Kj4oaW5kaWNl
cylbY291bnQgLSAxXTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdMX1VOU0lHTkVEX0lO
VDoKLSAgICAgICAgZmlyc3QgPSBzdGF0aWNfY2FzdDxjb25zdCBHTHVpbnQqPihpbmRpY2VzKVsw
XTsKLSAgICAgICAgbGFzdCA9IHN0YXRpY19jYXN0PGNvbnN0IEdMdWludCo+KGluZGljZXMpW2Nv
dW50IC0gMV07Ci0gICAgICAgIGJyZWFrOwotICAgICAgZGVmYXVsdDogVU5SRUFDSEFCTEUoKTsK
KyAgICAgICAgRVJSKCJDb3VsZCBub3QgY3JlYXRlIGEgbG9vcGluZyBpbmRleCBidWZmZXIgZm9y
IEdMX0xJTkVfTE9PUC4iKTsKKyAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkp
OwogICAgIH0KLQotICAgIGRyYXdDbG9zaW5nTGluZShmaXJzdCwgbGFzdCwgbWluSW5kZXgpOwog
fQogCiB2b2lkIENvbnRleHQ6OnJlY29yZEludmFsaWRFbnVtKCkKQEAgLTMxNjIsNiArMzM3Miwx
MSBAQCBib29sIENvbnRleHQ6OnN1cHBvcnRzRXZlbnRRdWVyaWVzKCkgY29uc3QKICAgICByZXR1
cm4gbVN1cHBvcnRzRXZlbnRRdWVyaWVzOwogfQogCitib29sIENvbnRleHQ6OnN1cHBvcnRzT2Nj
bHVzaW9uUXVlcmllcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TdXBwb3J0c09jY2x1c2lvblF1
ZXJpZXM7Cit9CisKIGJvb2wgQ29udGV4dDo6c3VwcG9ydHNEWFQxVGV4dHVyZXMoKSBjb25zdAog
ewogICAgIHJldHVybiBtU3VwcG9ydHNEWFQxVGV4dHVyZXM7CkBAIC0zMjQ3LDYgKzM0NjIsMTEg
QEAgYm9vbCBDb250ZXh0OjpzdXBwb3J0c05vblBvd2VyMlRleHR1cmUoKSBjb25zdAogICAgIHJl
dHVybiBtU3VwcG9ydHNOb25Qb3dlcjJUZXh0dXJlOwogfQogCitib29sIENvbnRleHQ6OnN1cHBv
cnRzSW5zdGFuY2luZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TdXBwb3J0c0luc3RhbmNpbmc7
Cit9CisKIHZvaWQgQ29udGV4dDo6ZGV0YWNoQnVmZmVyKEdMdWludCBidWZmZXIpCiB7CiAgICAg
Ly8gW09wZW5HTCBFUyAyLjAuMjRdIHNlY3Rpb24gMi45IHBhZ2UgMjI6CkBAIC0zNDM1LDYgKzM2
NTUsMTMgQEAgdm9pZCBDb250ZXh0OjpzZXRWZXJ0ZXhBdHRyaWIoR0x1aW50IGluZGV4LCBjb25z
dCBHTGZsb2F0ICp2YWx1ZXMpCiAgICAgbVZlcnRleERhdGFNYW5hZ2VyLT5kaXJ0eUN1cnJlbnRW
YWx1ZShpbmRleCk7CiB9CiAKK3ZvaWQgQ29udGV4dDo6c2V0VmVydGV4QXR0cmliRGl2aXNvcihH
THVpbnQgaW5kZXgsIEdMdWludCBkaXZpc29yKQoreworICAgIEFTU0VSVChpbmRleCA8IGdsOjpN
QVhfVkVSVEVYX0FUVFJJQlMpOworCisgICAgbVN0YXRlLnZlcnRleEF0dHJpYnV0ZVtpbmRleF0u
bURpdmlzb3IgPSBkaXZpc29yOworfQorCiAvLyBrZWVwIGxpc3Qgc29ydGVkIGluIGZvbGxvd2lu
ZyBvcmRlcgogLy8gT0VTIGV4dGVuc2lvbnMKIC8vIEVYVCBleHRlbnNpb25zCkBAIC0zNDc2LDYg
KzM3MDMsMTEgQEAgdm9pZCBDb250ZXh0Ojppbml0RXh0ZW5zaW9uU3RyaW5nKCkKICAgICB9CiAK
ICAgICAvLyBNdWx0aS12ZW5kb3IgKEVYVCkgZXh0ZW5zaW9ucworICAgIGlmIChzdXBwb3J0c09j
Y2x1c2lvblF1ZXJpZXMoKSkKKyAgICB7CisgICAgICAgIG1FeHRlbnNpb25TdHJpbmcgKz0gIkdM
X0VYVF9vY2NsdXNpb25fcXVlcnlfYm9vbGVhbiAiOworICAgIH0KKwogICAgIG1FeHRlbnNpb25T
dHJpbmcgKz0gIkdMX0VYVF9yZWFkX2Zvcm1hdF9iZ3JhICI7CiAgICAgbUV4dGVuc2lvblN0cmlu
ZyArPSAiR0xfRVhUX3JvYnVzdG5lc3MgIjsKIApAQCAtMzQ5NCw2ICszNzI2LDExIEBAIHZvaWQg
Q29udGV4dDo6aW5pdEV4dGVuc2lvblN0cmluZygpCiAgICAgICAgIG1FeHRlbnNpb25TdHJpbmcg
Kz0gIkdMX0FOR0xFX2ZyYW1lYnVmZmVyX211bHRpc2FtcGxlICI7CiAgICAgfQogCisgICAgaWYg
KHN1cHBvcnRzSW5zdGFuY2luZygpKQorICAgIHsKKyAgICAgICAgbUV4dGVuc2lvblN0cmluZyAr
PSAiR0xfQU5HTEVfaW5zdGFuY2VkX2FycmF5cyAiOworICAgIH0KKwogICAgIG1FeHRlbnNpb25T
dHJpbmcgKz0gIkdMX0FOR0xFX3BhY2tfcmV2ZXJzZV9yb3dfb3JkZXIgIjsKIAogICAgIGlmIChz
dXBwb3J0c0RYVDNUZXh0dXJlcygpKQpAQCAtMzgzNyw4ICs0MDc0LDQ0IEBAIFZlcnRleERlY2xh
cmF0aW9uQ2FjaGU6On5WZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlKCkKICAgICB9CiB9CiAKLUdMZW51
bSBWZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlOjphcHBseURlY2xhcmF0aW9uKElEaXJlY3QzRERldmlj
ZTkgKmRldmljZSwgVHJhbnNsYXRlZEF0dHJpYnV0ZSBhdHRyaWJ1dGVzW10sIFByb2dyYW0gKnBy
b2dyYW0pCitHTGVudW0gVmVydGV4RGVjbGFyYXRpb25DYWNoZTo6YXBwbHlEZWNsYXJhdGlvbihJ
RGlyZWN0M0REZXZpY2U5ICpkZXZpY2UsIFRyYW5zbGF0ZWRBdHRyaWJ1dGUgYXR0cmlidXRlc1td
LCBQcm9ncmFtICpwcm9ncmFtLCBHTHNpemVpIGluc3RhbmNlcywgR0xzaXplaSAqcmVwZWF0RHJh
dykKIHsKKyAgICAqcmVwZWF0RHJhdyA9IDE7CisKKyAgICBpbnQgaW5kZXhlZEF0dHJpYnV0ZSA9
IE1BWF9WRVJURVhfQVRUUklCUzsKKyAgICBpbnQgaW5zdGFuY2VkQXR0cmlidXRlID0gTUFYX1ZF
UlRFWF9BVFRSSUJTOworCisgICAgaWYgKGluc3RhbmNlcyA+IDApCisgICAgeworICAgICAgICAv
LyBGaW5kIGFuIGluZGV4ZWQgYXR0cmlidXRlIHRvIGJlIG1hcHBlZCB0byBEM0Qgc3RyZWFtIDAK
KyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNQVhfVkVSVEVYX0FUVFJJQlM7IGkrKykKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXNbaV0uYWN0aXZlKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGlmIChpbmRleGVkQXR0cmlidXRlID09IE1BWF9WRVJURVhf
QVRUUklCUykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGlmIChhdHRy
aWJ1dGVzW2ldLmRpdmlzb3IgPT0gMCkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAg
ICAgICAgICAgICAgICAgaW5kZXhlZEF0dHJpYnV0ZSA9IGk7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoaW5zdGFuY2Vk
QXR0cmlidXRlID09IE1BWF9WRVJURVhfQVRUUklCUykKKyAgICAgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChhdHRyaWJ1dGVzW2ldLmRpdmlzb3IgIT0gMCkKKyAgICAgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFuY2VkQXR0cmlidXRl
ID0gaTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBlbHNlIGJyZWFrOyAgIC8vIEZvdW5kIGJvdGggYW4gaW5kZXhlZCBhbmQgaW5zdGFu
Y2VkIGF0dHJpYnV0ZQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKGlu
ZGV4ZWRBdHRyaWJ1dGUgPT0gTUFYX1ZFUlRFWF9BVFRSSUJTKQorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4gR0xfSU5WQUxJRF9PUEVSQVRJT047CisgICAgICAgIH0KKyAgICB9CisKICAg
ICBEM0RWRVJURVhFTEVNRU5UOSBlbGVtZW50c1tNQVhfVkVSVEVYX0FUVFJJQlMgKyAxXTsKICAg
ICBEM0RWRVJURVhFTEVNRU5UOSAqZWxlbWVudCA9ICZlbGVtZW50c1swXTsKIApAQCAtMzg0Niwx
NyArNDExOSw1MyBAQCBHTGVudW0gVmVydGV4RGVjbGFyYXRpb25DYWNoZTo6YXBwbHlEZWNsYXJh
dGlvbihJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UsIFRyYW5zbAogICAgIHsKICAgICAgICAgaWYg
KGF0dHJpYnV0ZXNbaV0uYWN0aXZlKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobUFwcGxp
ZWRWQnNbaV0uc2VyaWFsICE9IGF0dHJpYnV0ZXNbaV0uc2VyaWFsIHx8Ci0gICAgICAgICAgICAg
ICAgbUFwcGxpZWRWQnNbaV0uc3RyaWRlICE9IGF0dHJpYnV0ZXNbaV0uc3RyaWRlIHx8Ci0gICAg
ICAgICAgICAgICAgbUFwcGxpZWRWQnNbaV0ub2Zmc2V0ICE9IGF0dHJpYnV0ZXNbaV0ub2Zmc2V0
KQorICAgICAgICAgICAgaW50IHN0cmVhbSA9IGk7CisKKyAgICAgICAgICAgIGlmIChpbnN0YW5j
ZXMgPiAwKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGRldmljZS0+U2V0U3RyZWFt
U291cmNlKGksIGF0dHJpYnV0ZXNbaV0udmVydGV4QnVmZmVyLCBhdHRyaWJ1dGVzW2ldLm9mZnNl
dCwgYXR0cmlidXRlc1tpXS5zdHJpZGUpOwotICAgICAgICAgICAgICAgIG1BcHBsaWVkVkJzW2ld
LnNlcmlhbCA9IGF0dHJpYnV0ZXNbaV0uc2VyaWFsOwotICAgICAgICAgICAgICAgIG1BcHBsaWVk
VkJzW2ldLnN0cmlkZSA9IGF0dHJpYnV0ZXNbaV0uc3RyaWRlOwotICAgICAgICAgICAgICAgIG1B
cHBsaWVkVkJzW2ldLm9mZnNldCA9IGF0dHJpYnV0ZXNbaV0ub2Zmc2V0OworICAgICAgICAgICAg
ICAgIC8vIER1ZSB0byBhIGJ1ZyBvbiBBVEkgY2FyZHMgd2UgY2FuJ3QgZW5hYmxlIGluc3RhbmNp
bmcgd2hlbiBub25lIG9mIHRoZSBhdHRyaWJ1dGVzIGFyZSBpbnN0YW5jZWQuCisgICAgICAgICAg
ICAgICAgaWYgKGluc3RhbmNlZEF0dHJpYnV0ZSA9PSBNQVhfVkVSVEVYX0FUVFJJQlMpCisgICAg
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAqcmVwZWF0RHJhdyA9IGluc3RhbmNl
czsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT0gaW5kZXhlZEF0dHJpYnV0ZSkKKyAg
ICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtID0gMDsK
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpID09
IDApCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVh
bSA9IGluZGV4ZWRBdHRyaWJ1dGU7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgICAgICBVSU5UIGZyZXF1ZW5jeSA9IDE7CisgICAgICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgICAgICBpZiAoYXR0cmlidXRlc1tpXS5kaXZpc29yID09IDApCisgICAgICAg
ICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZyZXF1ZW5jeSA9IEQzRFNU
UkVBTVNPVVJDRV9JTkRFWEVEREFUQSB8IGluc3RhbmNlczsKKyAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGZyZXF1ZW5jeSA9IEQzRFNUUkVBTVNPVVJDRV9JTlNUQU5DRURB
VEEgfCBhdHRyaWJ1dGVzW2ldLmRpdmlzb3I7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGRldmljZS0+U2V0U3RyZWFtU291
cmNlRnJlcShzdHJlYW0sIGZyZXF1ZW5jeSk7CisgICAgICAgICAgICAgICAgICAgIG1JbnN0YW5j
aW5nRW5hYmxlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBpZiAobUFwcGxpZWRWQnNbc3RyZWFtXS5zZXJpYWwgIT0gYXR0cmlidXRlc1tp
XS5zZXJpYWwgfHwKKyAgICAgICAgICAgICAgICBtQXBwbGllZFZCc1tzdHJlYW1dLnN0cmlkZSAh
PSBhdHRyaWJ1dGVzW2ldLnN0cmlkZSB8fAorICAgICAgICAgICAgICAgIG1BcHBsaWVkVkJzW3N0
cmVhbV0ub2Zmc2V0ICE9IGF0dHJpYnV0ZXNbaV0ub2Zmc2V0KQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGRldmljZS0+U2V0U3RyZWFtU291cmNlKHN0cmVhbSwgYXR0cmlidXRlc1tp
XS52ZXJ0ZXhCdWZmZXIsIGF0dHJpYnV0ZXNbaV0ub2Zmc2V0LCBhdHRyaWJ1dGVzW2ldLnN0cmlk
ZSk7CisgICAgICAgICAgICAgICAgbUFwcGxpZWRWQnNbc3RyZWFtXS5zZXJpYWwgPSBhdHRyaWJ1
dGVzW2ldLnNlcmlhbDsKKyAgICAgICAgICAgICAgICBtQXBwbGllZFZCc1tzdHJlYW1dLnN0cmlk
ZSA9IGF0dHJpYnV0ZXNbaV0uc3RyaWRlOworICAgICAgICAgICAgICAgIG1BcHBsaWVkVkJzW3N0
cmVhbV0ub2Zmc2V0ID0gYXR0cmlidXRlc1tpXS5vZmZzZXQ7CiAgICAgICAgICAgICB9CiAKLSAg
ICAgICAgICAgIGVsZW1lbnQtPlN0cmVhbSA9IGk7CisgICAgICAgICAgICBlbGVtZW50LT5TdHJl
YW0gPSBzdHJlYW07CiAgICAgICAgICAgICBlbGVtZW50LT5PZmZzZXQgPSAwOwogICAgICAgICAg
ICAgZWxlbWVudC0+VHlwZSA9IGF0dHJpYnV0ZXNbaV0udHlwZTsKICAgICAgICAgICAgIGVsZW1l
bnQtPk1ldGhvZCA9IEQzRERFQ0xNRVRIT0RfREVGQVVMVDsKQEAgLTM4NjYsNiArNDE3NSwxOSBA
QCBHTGVudW0gVmVydGV4RGVjbGFyYXRpb25DYWNoZTo6YXBwbHlEZWNsYXJhdGlvbihJRGlyZWN0
M0REZXZpY2U5ICpkZXZpY2UsIFRyYW5zbAogICAgICAgICB9CiAgICAgfQogCisgICAgaWYgKGlu
c3RhbmNlcyA9PSAwIHx8IGluc3RhbmNlZEF0dHJpYnV0ZSA9PSBNQVhfVkVSVEVYX0FUVFJJQlMp
CisgICAgeworICAgICAgICBpZiAobUluc3RhbmNpbmdFbmFibGVkKQorICAgICAgICB7CisgICAg
ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IE1BWF9WRVJURVhfQVRUUklCUzsgaSsrKQorICAg
ICAgICAgICAgeworICAgICAgICAgICAgICAgIGRldmljZS0+U2V0U3RyZWFtU291cmNlRnJlcShp
LCAxKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbUluc3RhbmNpbmdFbmFibGVkID0g
ZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKICAgICBzdGF0aWMgY29uc3QgRDNEVkVSVEVYRUxF
TUVOVDkgZW5kID0gRDNEREVDTF9FTkQoKTsKICAgICAqKGVsZW1lbnQrKykgPSBlbmQ7CiAKQEAg
LTM5MjAsNiArNDI0Miw3IEBAIHZvaWQgVmVydGV4RGVjbGFyYXRpb25DYWNoZTo6bWFya1N0YXRl
RGlydHkoKQogICAgIH0KIAogICAgIG1MYXN0U2V0VkRlY2wgPSBOVUxMOworICAgIG1JbnN0YW5j
aW5nRW5hYmxlZCA9IHRydWU7ICAgLy8gRm9yY2VzIGl0IHRvIGJlIGRpc2FibGVkIHdoZW4gbm90
IHVzZWQKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9Db250ZXh0LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3Yy
L0NvbnRleHQuaAppbmRleCBlNDM2NzI0ZDYwODA4YzZjN2I4MGZjOGM3YzgwNzNmNjhjYjEwZmZl
Li44ZGNjZjBmOWFiNDQ3OTJjYzg3Nzk2NmM1NTMyZjhmZTc2Mzc1NjMxIDEwMDY0NAotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0NvbnRleHQuaAorKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0NvbnRleHQuaApAQCAtMSw1ICsxLDUg
QEAKIC8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMSBUaGUgQU5HTEUgUHJvamVjdCBBdXRo
b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTIgVGhl
IEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0
aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj
YW4gYmUKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtMjEsOSArMjEsOSBA
QAogI2luY2x1ZGUgPGhhc2hfbWFwPgogCiAjaW5jbHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIK
KyNpbmNsdWRlICJjb21tb24vUmVmQ291bnRPYmplY3QuaCIKICNpbmNsdWRlICJsaWJHTEVTdjIv
UmVzb3VyY2VNYW5hZ2VyLmgiCiAjaW5jbHVkZSAibGliR0xFU3YyL0hhbmRsZUFsbG9jYXRvci5o
IgotI2luY2x1ZGUgImxpYkdMRVN2Mi9SZWZDb3VudE9iamVjdC5oIgogCiBuYW1lc3BhY2UgZWds
CiB7CkBAIC01NSwxMSArNTUsMTYgQEAgY2xhc3MgVmVydGV4RGF0YU1hbmFnZXI7CiBjbGFzcyBJ
bmRleERhdGFNYW5hZ2VyOwogY2xhc3MgQmxpdDsKIGNsYXNzIEZlbmNlOworY2xhc3MgUXVlcnk7
CiAKIGVudW0KIHsKKyAgICBEM0Q5X01BWF9GTE9BVF9DT05TVEFOVFMgPSAyNTYsCisgICAgRDNE
OV9NQVhfQk9PTF9DT05TVEFOVFMgPSAxNiwKKyAgICBEM0Q5X01BWF9JTlRfQ09OU1RBTlRTID0g
MTYsCisKICAgICBNQVhfVkVSVEVYX0FUVFJJQlMgPSAxNiwKLSAgICBNQVhfVkVSVEVYX1VOSUZP
Uk1fVkVDVE9SUyA9IDI1NiAtIDIsICAgLy8gMjU2IGlzIHRoZSBtaW5pbXVtIGZvciBTTTIsIGFu
ZCBpbiBwcmFjdGljZSB0aGUgbWF4aW11bSBmb3IgRFg5LiBSZXNlcnZlIHNwYWNlIGZvciBkeF9I
YWxmUGl4ZWxTaXplIGFuZCBkeF9EZXB0aFJhbmdlLgorICAgIE1BWF9WRVJURVhfVU5JRk9STV9W
RUNUT1JTID0gRDNEOV9NQVhfRkxPQVRfQ09OU1RBTlRTIC0gMiwgICAvLyBSZXNlcnZlIHNwYWNl
IGZvciBkeF9IYWxmUGl4ZWxTaXplIGFuZCBkeF9EZXB0aFJhbmdlLgogICAgIE1BWF9WQVJZSU5H
X1ZFQ1RPUlNfU00yID0gOCwKICAgICBNQVhfVkFSWUlOR19WRUNUT1JTX1NNMyA9IDEwLAogICAg
IE1BWF9URVhUVVJFX0lNQUdFX1VOSVRTID0gMTYsCkBAIC03Myw2ICs3OCwxNCBAQCBlbnVtCiAg
ICAgSU1QTEVNRU5UQVRJT05fQ09MT1JfUkVBRF9UWVBFID0gR0xfVU5TSUdORURfU0hPUlRfNV82
XzUKIH07CiAKK2VudW0gUXVlcnlUeXBlCit7CisgICAgUVVFUllfQU5ZX1NBTVBMRVNfUEFTU0VE
LAorICAgIFFVRVJZX0FOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkUsCisKKyAgICBRVUVS
WV9UWVBFX0NPVU5UCit9OworCiBjb25zdCBmbG9hdCBBTElBU0VEX0xJTkVfV0lEVEhfUkFOR0Vf
TUlOID0gMS4wZjsKIGNvbnN0IGZsb2F0IEFMSUFTRURfTElORV9XSURUSF9SQU5HRV9NQVggPSAx
LjBmOwogY29uc3QgZmxvYXQgQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFX01JTiA9IDEuMGY7CkBA
IC05MSw3ICsxMDQsNyBAQCBzdHJ1Y3QgQ29sb3IKIGNsYXNzIFZlcnRleEF0dHJpYnV0ZQogewog
ICBwdWJsaWM6Ci0gICAgVmVydGV4QXR0cmlidXRlKCkgOiBtVHlwZShHTF9GTE9BVCksIG1TaXpl
KDApLCBtTm9ybWFsaXplZChmYWxzZSksIG1TdHJpZGUoMCksIG1Qb2ludGVyKE5VTEwpLCBtQXJy
YXlFbmFibGVkKGZhbHNlKQorICAgIFZlcnRleEF0dHJpYnV0ZSgpIDogbVR5cGUoR0xfRkxPQVQp
LCBtU2l6ZSgwKSwgbU5vcm1hbGl6ZWQoZmFsc2UpLCBtU3RyaWRlKDApLCBtUG9pbnRlcihOVUxM
KSwgbUFycmF5RW5hYmxlZChmYWxzZSksIG1EaXZpc29yKDApCiAgICAgewogICAgICAgICBtQ3Vy
cmVudFZhbHVlWzBdID0gMC4wZjsKICAgICAgICAgbUN1cnJlbnRWYWx1ZVsxXSA9IDAuMGY7CkBA
IC0xMzQsNiArMTQ3LDcgQEAgY2xhc3MgVmVydGV4QXR0cmlidXRlCiAKICAgICBib29sIG1BcnJh
eUVuYWJsZWQ7ICAgLy8gRnJvbSBnbEVuYWJsZS9EaXNhYmxlVmVydGV4QXR0cmliQXJyYXkKICAg
ICBmbG9hdCBtQ3VycmVudFZhbHVlWzRdOyAgIC8vIEZyb20gZ2xWZXJ0ZXhBdHRyaWIKKyAgICB1
bnNpZ25lZCBpbnQgbURpdmlzb3I7CiB9OwogCiB0eXBlZGVmIFZlcnRleEF0dHJpYnV0ZSBWZXJ0
ZXhBdHRyaWJ1dGVBcnJheVtNQVhfVkVSVEVYX0FUVFJJQlNdOwpAQCAtMjE2LDYgKzIzMCw3IEBA
IHN0cnVjdCBTdGF0ZQogCiAgICAgVmVydGV4QXR0cmlidXRlIHZlcnRleEF0dHJpYnV0ZVtNQVhf
VkVSVEVYX0FUVFJJQlNdOwogICAgIEJpbmRpbmdQb2ludGVyPFRleHR1cmU+IHNhbXBsZXJUZXh0
dXJlW1RFWFRVUkVfVFlQRV9DT1VOVF1bTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFNf
VlRGXTsKKyAgICBCaW5kaW5nUG9pbnRlcjxRdWVyeT4gYWN0aXZlUXVlcnlbUVVFUllfVFlQRV9D
T1VOVF07CiAKICAgICBHTGludCB1bnBhY2tBbGlnbm1lbnQ7CiAgICAgR0xpbnQgcGFja0FsaWdu
bWVudDsKQEAgLTIyOSw3ICsyNDQsNyBAQCBjbGFzcyBWZXJ0ZXhEZWNsYXJhdGlvbkNhY2hlCiAg
ICAgVmVydGV4RGVjbGFyYXRpb25DYWNoZSgpOwogICAgIH5WZXJ0ZXhEZWNsYXJhdGlvbkNhY2hl
KCk7CiAKLSAgICBHTGVudW0gYXBwbHlEZWNsYXJhdGlvbihJRGlyZWN0M0REZXZpY2U5ICpkZXZp
Y2UsIFRyYW5zbGF0ZWRBdHRyaWJ1dGUgYXR0cmlidXRlc1tdLCBQcm9ncmFtICpwcm9ncmFtKTsK
KyAgICBHTGVudW0gYXBwbHlEZWNsYXJhdGlvbihJRGlyZWN0M0REZXZpY2U5ICpkZXZpY2UsIFRy
YW5zbGF0ZWRBdHRyaWJ1dGUgYXR0cmlidXRlc1tdLCBQcm9ncmFtICpwcm9ncmFtLCBHTHNpemVp
IGluc3RhbmNlcywgR0xzaXplaSAqcmVwZWF0RHJhdyk7CiAKICAgICB2b2lkIG1hcmtTdGF0ZURp
cnR5KCk7CiAKQEAgLTI0Nyw2ICsyNjIsNyBAQCBjbGFzcyBWZXJ0ZXhEZWNsYXJhdGlvbkNhY2hl
CiAKICAgICBWQkRhdGEgbUFwcGxpZWRWQnNbTUFYX1ZFUlRFWF9BVFRSSUJTXTsKICAgICBJRGly
ZWN0M0RWZXJ0ZXhEZWNsYXJhdGlvbjkgKm1MYXN0U2V0VkRlY2w7CisgICAgYm9vbCBtSW5zdGFu
Y2luZ0VuYWJsZWQ7CiAKICAgICBzdHJ1Y3QgVmVydGV4RGVjbENhY2hlRW50cnkKICAgICB7CkBA
IC0zNDcsNiArMzYzLDggQEAgY2xhc3MgQ29udGV4dAogCiAgICAgR0x1aW50IGdldEFycmF5QnVm
ZmVySGFuZGxlKCkgY29uc3Q7CiAKKyAgICBHTHVpbnQgZ2V0QWN0aXZlUXVlcnkoR0xlbnVtIHRh
cmdldCkgY29uc3Q7CisKICAgICB2b2lkIHNldEVuYWJsZVZlcnRleEF0dHJpYkFycmF5KHVuc2ln
bmVkIGludCBhdHRyaWJOdW0sIGJvb2wgZW5hYmxlZCk7CiAgICAgY29uc3QgVmVydGV4QXR0cmli
dXRlICZnZXRWZXJ0ZXhBdHRyaWJTdGF0ZSh1bnNpZ25lZCBpbnQgYXR0cmliTnVtKTsKICAgICB2
b2lkIHNldFZlcnRleEF0dHJpYlN0YXRlKHVuc2lnbmVkIGludCBhdHRyaWJOdW0sIEJ1ZmZlciAq
Ym91bmRCdWZmZXIsIEdMaW50IHNpemUsIEdMZW51bSB0eXBlLApAQCAtMzg1LDYgKzQwMywxMCBA
QCBjbGFzcyBDb250ZXh0CiAgICAgLy8gRmVuY2VzIGFyZSBvd25lZCBieSB0aGUgQ29udGV4dC4K
ICAgICBHTHVpbnQgY3JlYXRlRmVuY2UoKTsKICAgICB2b2lkIGRlbGV0ZUZlbmNlKEdMdWludCBm
ZW5jZSk7CisgICAgCisgICAgLy8gUXVlcmllcyBhcmUgb3duZWQgYnkgdGhlIENvbnRleHQ7Cisg
ICAgR0x1aW50IGNyZWF0ZVF1ZXJ5KCk7CisgICAgdm9pZCBkZWxldGVRdWVyeShHTHVpbnQgcXVl
cnkpOwogCiAgICAgdm9pZCBiaW5kQXJyYXlCdWZmZXIoR0x1aW50IGJ1ZmZlcik7CiAgICAgdm9p
ZCBiaW5kRWxlbWVudEFycmF5QnVmZmVyKEdMdWludCBidWZmZXIpOwpAQCAtMzk1LDExICs0MTcs
MTUgQEAgY2xhc3MgQ29udGV4dAogICAgIHZvaWQgYmluZFJlbmRlcmJ1ZmZlcihHTHVpbnQgcmVu
ZGVyYnVmZmVyKTsKICAgICB2b2lkIHVzZVByb2dyYW0oR0x1aW50IHByb2dyYW0pOwogCisgICAg
dm9pZCBiZWdpblF1ZXJ5KEdMZW51bSB0YXJnZXQsIEdMdWludCBxdWVyeSk7CisgICAgdm9pZCBl
bmRRdWVyeShHTGVudW0gdGFyZ2V0KTsKKwogICAgIHZvaWQgc2V0RnJhbWVidWZmZXJaZXJvKEZy
YW1lYnVmZmVyICpmcmFtZWJ1ZmZlcik7CiAKICAgICB2b2lkIHNldFJlbmRlcmJ1ZmZlclN0b3Jh
Z2UoUmVuZGVyYnVmZmVyU3RvcmFnZSAqcmVuZGVyYnVmZmVyKTsKIAogICAgIHZvaWQgc2V0VmVy
dGV4QXR0cmliKEdMdWludCBpbmRleCwgY29uc3QgR0xmbG9hdCAqdmFsdWVzKTsKKyAgICB2b2lk
IHNldFZlcnRleEF0dHJpYkRpdmlzb3IoR0x1aW50IGluZGV4LCBHTHVpbnQgZGl2aXNvcik7CiAK
ICAgICBCdWZmZXIgKmdldEJ1ZmZlcihHTHVpbnQgaGFuZGxlKTsKICAgICBGZW5jZSAqZ2V0RmVu
Y2UoR0x1aW50IGhhbmRsZSk7CkBAIC00MDgsNiArNDM0LDcgQEAgY2xhc3MgQ29udGV4dAogICAg
IFRleHR1cmUgKmdldFRleHR1cmUoR0x1aW50IGhhbmRsZSk7CiAgICAgRnJhbWVidWZmZXIgKmdl
dEZyYW1lYnVmZmVyKEdMdWludCBoYW5kbGUpOwogICAgIFJlbmRlcmJ1ZmZlciAqZ2V0UmVuZGVy
YnVmZmVyKEdMdWludCBoYW5kbGUpOworICAgIFF1ZXJ5ICpnZXRRdWVyeShHTHVpbnQgaGFuZGxl
LCBib29sIGNyZWF0ZSwgR0xlbnVtIHR5cGUpOwogCiAgICAgQnVmZmVyICpnZXRBcnJheUJ1ZmZl
cigpOwogICAgIEJ1ZmZlciAqZ2V0RWxlbWVudEFycmF5QnVmZmVyKCk7CkBAIC00MjYsMTMgKzQ1
MywxMSBAQCBjbGFzcyBDb250ZXh0CiAKICAgICB2b2lkIHJlYWRQaXhlbHMoR0xpbnQgeCwgR0xp
bnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51
bSB0eXBlLCBHTHNpemVpICpidWZTaXplLCB2b2lkKiBwaXhlbHMpOwogICAgIHZvaWQgY2xlYXIo
R0xiaXRmaWVsZCBtYXNrKTsKLSAgICB2b2lkIGRyYXdBcnJheXMoR0xlbnVtIG1vZGUsIEdMaW50
IGZpcnN0LCBHTHNpemVpIGNvdW50KTsKLSAgICB2b2lkIGRyYXdFbGVtZW50cyhHTGVudW0gbW9k
ZSwgR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQgKmluZGljZXMpOworICAg
IHZvaWQgZHJhd0FycmF5cyhHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQs
IEdMc2l6ZWkgaW5zdGFuY2VzKTsKKyAgICB2b2lkIGRyYXdFbGVtZW50cyhHTGVudW0gbW9kZSwg
R0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywgR0xzaXpl
aSBpbnN0YW5jZXMpOwogICAgIHZvaWQgc3luYyhib29sIGJsb2NrKTsgICAvLyBmbHVzaC9maW5p
c2gKIAotCS8vIERyYXcgdGhlIGxhc3Qgc2VnbWVudCBvZiBhIGxpbmUgbG9vcAotICAgIHZvaWQg
ZHJhd0Nsb3NpbmdMaW5lKHVuc2lnbmVkIGludCBmaXJzdCwgdW5zaWduZWQgaW50IGxhc3QsIGlu
dCBtaW5JbmRleCk7Ci0gICAgdm9pZCBkcmF3Q2xvc2luZ0xpbmUoR0xzaXplaSBjb3VudCwgR0xl
bnVtIHR5cGUsIGNvbnN0IHZvaWQgKmluZGljZXMsIGludCBtaW5JbmRleCk7CisgICAgdm9pZCBk
cmF3TGluZUxvb3AoR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5k
aWNlcywgaW50IG1pbkluZGV4KTsKIAogICAgIHZvaWQgcmVjb3JkSW52YWxpZEVudW0oKTsKICAg
ICB2b2lkIHJlY29yZEludmFsaWRWYWx1ZSgpOwpAQCAtNDU4LDYgKzQ4Myw3IEBAIGNsYXNzIENv
bnRleHQKICAgICBjb25zdCBjaGFyICpnZXRFeHRlbnNpb25TdHJpbmcoKSBjb25zdDsKICAgICBj
b25zdCBjaGFyICpnZXRSZW5kZXJlclN0cmluZygpIGNvbnN0OwogICAgIGJvb2wgc3VwcG9ydHNF
dmVudFF1ZXJpZXMoKSBjb25zdDsKKyAgICBib29sIHN1cHBvcnRzT2NjbHVzaW9uUXVlcmllcygp
IGNvbnN0OwogICAgIGJvb2wgc3VwcG9ydHNEWFQxVGV4dHVyZXMoKSBjb25zdDsKICAgICBib29s
IHN1cHBvcnRzRFhUM1RleHR1cmVzKCkgY29uc3Q7CiAgICAgYm9vbCBzdXBwb3J0c0RYVDVUZXh0
dXJlcygpIGNvbnN0OwpAQCAtNDcxLDYgKzQ5Nyw3IEBAIGNsYXNzIENvbnRleHQKICAgICBib29s
IHN1cHBvcnRzTHVtaW5hbmNlQWxwaGFUZXh0dXJlcygpIGNvbnN0OwogICAgIGJvb2wgc3VwcG9y
dHMzMmJpdEluZGljZXMoKSBjb25zdDsKICAgICBib29sIHN1cHBvcnRzTm9uUG93ZXIyVGV4dHVy
ZSgpIGNvbnN0OworICAgIGJvb2wgc3VwcG9ydHNJbnN0YW5jaW5nKCkgY29uc3Q7CiAKICAgICB2
b2lkIGJsaXRGcmFtZWJ1ZmZlcihHTGludCBzcmNYMCwgR0xpbnQgc3JjWTAsIEdMaW50IHNyY1gx
LCBHTGludCBzcmNZMSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpbnQgZHN0WDAsIEdM
aW50IGRzdFkwLCBHTGludCBkc3RYMSwgR0xpbnQgZHN0WTEsCkBAIC00ODUsOCArNTEyLDggQEAg
Y2xhc3MgQ29udGV4dAogCiAgICAgYm9vbCBhcHBseVJlbmRlclRhcmdldChib29sIGlnbm9yZVZp
ZXdwb3J0KTsKICAgICB2b2lkIGFwcGx5U3RhdGUoR0xlbnVtIGRyYXdNb2RlKTsKLSAgICBHTGVu
dW0gYXBwbHlWZXJ0ZXhCdWZmZXIoR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQpOwotICAgIEdM
ZW51bSBhcHBseUluZGV4QnVmZmVyKGNvbnN0IHZvaWQgKmluZGljZXMsIEdMc2l6ZWkgY291bnQs
IEdMZW51bSBtb2RlLCBHTGVudW0gdHlwZSwgVHJhbnNsYXRlZEluZGV4RGF0YSAqaW5kZXhJbmZv
KTsKKyAgICBHTGVudW0gYXBwbHlWZXJ0ZXhCdWZmZXIoR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291
bnQsIEdMc2l6ZWkgaW5zdGFuY2VzLCBHTHNpemVpICpyZXBlYXREcmF3KTsKKyAgICBHTGVudW0g
YXBwbHlJbmRleEJ1ZmZlcihjb25zdCBHTHZvaWQgKmluZGljZXMsIEdMc2l6ZWkgY291bnQsIEdM
ZW51bSBtb2RlLCBHTGVudW0gdHlwZSwgVHJhbnNsYXRlZEluZGV4RGF0YSAqaW5kZXhJbmZvKTsK
ICAgICB2b2lkIGFwcGx5U2hhZGVycygpOwogICAgIHZvaWQgYXBwbHlUZXh0dXJlcygpOwogICAg
IHZvaWQgYXBwbHlUZXh0dXJlcyhTYW1wbGVyVHlwZSB0eXBlKTsKQEAgLTUyMSw2ICs1NDgsMTAg
QEAgY2xhc3MgQ29udGV4dAogICAgIEZlbmNlTWFwIG1GZW5jZU1hcDsKICAgICBIYW5kbGVBbGxv
Y2F0b3IgbUZlbmNlSGFuZGxlQWxsb2NhdG9yOwogCisgICAgdHlwZWRlZiBzdGRleHQ6Omhhc2hf
bWFwPEdMdWludCwgUXVlcnkqPiBRdWVyeU1hcDsKKyAgICBRdWVyeU1hcCBtUXVlcnlNYXA7Cisg
ICAgSGFuZGxlQWxsb2NhdG9yIG1RdWVyeUhhbmRsZUFsbG9jYXRvcjsKKwogICAgIHN0ZDo6c3Ry
aW5nIG1FeHRlbnNpb25TdHJpbmc7CiAgICAgc3RkOjpzdHJpbmcgbVJlbmRlcmVyU3RyaW5nOwog
CkBAIC01MjksNyArNTYwLDcgQEAgY2xhc3MgQ29udGV4dAogCiAgICAgQmxpdCAqbUJsaXQ7CiAK
LSAgICBTdHJlYW1pbmdJbmRleEJ1ZmZlciAqbUNsb3NpbmdJQjsKKyAgICBTdHJlYW1pbmdJbmRl
eEJ1ZmZlciAqbUxpbmVMb29wSUI7CiAgICAgCiAgICAgQmluZGluZ1BvaW50ZXI8VGV4dHVyZT4g
bUluY29tcGxldGVUZXh0dXJlc1tURVhUVVJFX1RZUEVfQ09VTlRdOwogCkBAIC01NjYsNiArNTk3
LDcgQEAgY2xhc3MgQ29udGV4dAogICAgIGJvb2wgbVN1cHBvcnRzU2hhZGVyTW9kZWwzOwogICAg
IGJvb2wgbVN1cHBvcnRzVmVydGV4VGV4dHVyZTsKICAgICBib29sIG1TdXBwb3J0c05vblBvd2Vy
MlRleHR1cmU7CisgICAgYm9vbCBtU3VwcG9ydHNJbnN0YW5jaW5nOwogICAgIGludCAgbU1heFJl
bmRlcmJ1ZmZlckRpbWVuc2lvbjsKICAgICBpbnQgIG1NYXhUZXh0dXJlRGltZW5zaW9uOwogICAg
IGludCAgbU1heEN1YmVUZXh0dXJlRGltZW5zaW9uOwpAQCAtNTczLDYgKzYwNSw3IEBAIGNsYXNz
IENvbnRleHQKICAgICBzdGQ6Om1hcDxEM0RGT1JNQVQsIGJvb2wgKj4gbU11bHRpU2FtcGxlU3Vw
cG9ydDsKICAgICBHTHNpemVpIG1NYXhTdXBwb3J0ZWRTYW1wbGVzOwogICAgIGJvb2wgbVN1cHBv
cnRzRXZlbnRRdWVyaWVzOworICAgIGJvb2wgbVN1cHBvcnRzT2NjbHVzaW9uUXVlcmllczsKICAg
ICBib29sIG1TdXBwb3J0c0RYVDFUZXh0dXJlczsKICAgICBib29sIG1TdXBwb3J0c0RYVDNUZXh0
dXJlczsKICAgICBib29sIG1TdXBwb3J0c0RYVDVUZXh0dXJlczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvRmVuY2UuY3BwIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9GZW5jZS5jcHAKaW5kZXggOTZhM2NjOWY1OGJmYzFl
ZGNhNzVjMGM4ZjMxYzNlMjFkNGJkMmYwZS4uMTRkMTIzOWFiZjJiYzFlYmNmMGQ2NWEyZDU5NTA0
YzBiNjEwNmRlYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9GZW5jZS5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9GZW5jZS5jcHAKQEAgLTEzLDggKzEzLDkgQEAKIG5hbWVzcGFjZSBnbAogewogCi1GZW5jZTo6
RmVuY2UoKQoteyAKK0ZlbmNlOjpGZW5jZShlZ2w6OkRpc3BsYXkqIGRpc3BsYXkpCit7CisgICAg
bURpc3BsYXkgPSBkaXNwbGF5OwogICAgIG1RdWVyeSA9IE5VTEw7CiAgICAgbUNvbmRpdGlvbiA9
IEdMX05PTkU7CiAgICAgbVN0YXR1cyA9IEdMX0ZBTFNFOwpAQCAtMjQsOCArMjUsNyBAQCBGZW5j
ZTo6fkZlbmNlKCkKIHsKICAgICBpZiAobVF1ZXJ5ICE9IE5VTEwpCiAgICAgewotICAgICAgICBt
UXVlcnktPlJlbGVhc2UoKTsKLSAgICAgICAgbVF1ZXJ5ID0gTlVMTDsKKyAgICAgICAgbURpc3Bs
YXktPmZyZWVFdmVudFF1ZXJ5KG1RdWVyeSk7CiAgICAgfQogfQogCkBAIC0zOCwxNSArMzgsMTMg
QEAgR0xib29sZWFuIEZlbmNlOjppc0ZlbmNlKCkKIAogdm9pZCBGZW5jZTo6c2V0RmVuY2UoR0xl
bnVtIGNvbmRpdGlvbikKIHsKLSAgICBpZiAobVF1ZXJ5ICE9IE5VTEwpCisgICAgaWYgKCFtUXVl
cnkpCiAgICAgewotICAgICAgICBtUXVlcnktPlJlbGVhc2UoKTsKLSAgICAgICAgbVF1ZXJ5ID0g
TlVMTDsKLSAgICB9Ci0KLSAgICBpZiAoRkFJTEVEKGdldERldmljZSgpLT5DcmVhdGVRdWVyeShE
M0RRVUVSWVRZUEVfRVZFTlQsICZtUXVlcnkpKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBlcnJv
cihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAgICAgbVF1ZXJ5ID0gbURpc3BsYXktPmFsbG9jYXRl
RXZlbnRRdWVyeSgpOworICAgICAgICBpZiAoIW1RdWVyeSkKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgICAgICB9CiAgICAgfQogCiAg
ICAgSFJFU1VMVCByZXN1bHQgPSBtUXVlcnktPklzc3VlKEQzRElTU1VFX0VORCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0ZlbmNlLmggYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0ZlbmNlLmgKaW5kZXggMTdiYWQ3OGVh
NWIxYWFlYmE0NTI0OGQ3MzJmMjIyYTFhYzRmMzQ0My4uOTYyNmNiMGZmMGUwZTM0YmJhNzE0YTQz
NzE3OWI4MDZhYjg3NTRmMCAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9GZW5jZS5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TEVTdjIvRmVuY2UuaApAQCAtMTUsMTMgKzE1LDE4IEBACiAKICNpbmNsdWRlICJjb21tb24vYW5n
bGV1dGlscy5oIgogCituYW1lc3BhY2UgZWdsCit7CitjbGFzcyBEaXNwbGF5OworfQorCiBuYW1l
c3BhY2UgZ2wKIHsKIAogY2xhc3MgRmVuY2UKIHsKICAgcHVibGljOgotICAgIEZlbmNlKCk7Cisg
ICAgZXhwbGljaXQgRmVuY2UoZWdsOjpEaXNwbGF5KiBkaXNwbGF5KTsKICAgICB2aXJ0dWFsIH5G
ZW5jZSgpOwogCiAgICAgR0xib29sZWFuIGlzRmVuY2UoKTsKQEAgLTMzLDYgKzM4LDcgQEAgY2xh
c3MgRmVuY2UKICAgcHJpdmF0ZToKICAgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oRmVuY2Up
OwogCisgICAgZWdsOjpEaXNwbGF5KiBtRGlzcGxheTsKICAgICBJRGlyZWN0M0RRdWVyeTkqIG1R
dWVyeTsKICAgICBHTGVudW0gbUNvbmRpdGlvbjsKICAgICBHTGJvb2xlYW4gbVN0YXR1czsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvRnJhbWVidWZm
ZXIuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9GcmFtZWJ1ZmZl
ci5jcHAKaW5kZXggMDBmN2Y5OGNlYTM1OWJlNjgwMDkzMGU2N2FmYmJmZDk5MzViMmJjZS4uNzMw
ZmZmYzc1ODJlMTlmMjhkMzAwN2UyZDUzYzBhYThhNjNlMmY1MiAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9GcmFtZWJ1ZmZlci5jcHAKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9GcmFtZWJ1ZmZlci5jcHAKQEAgLTQ0
LDcgKzQ0LDcgQEAgUmVuZGVyYnVmZmVyICpGcmFtZWJ1ZmZlcjo6bG9va3VwUmVuZGVyYnVmZmVy
KEdMZW51bSB0eXBlLCBHTHVpbnQgaGFuZGxlKSBjb25zdAogICAgIHsKICAgICAgICAgYnVmZmVy
ID0gY29udGV4dC0+Z2V0UmVuZGVyYnVmZmVyKGhhbmRsZSk7CiAgICAgfQotICAgIGVsc2UgaWYg
KElzVGV4dHVyZVRhcmdldCh0eXBlKSkKKyAgICBlbHNlIGlmIChJc0ludGVybmFsVGV4dHVyZVRh
cmdldCh0eXBlKSkKICAgICB7CiAgICAgICAgIGJ1ZmZlciA9IGNvbnRleHQtPmdldFRleHR1cmUo
aGFuZGxlKS0+Z2V0UmVuZGVyYnVmZmVyKHR5cGUpOwogICAgIH0KQEAgLTc2LDE5ICs3NiwxOSBA
QCB2b2lkIEZyYW1lYnVmZmVyOjpzZXRTdGVuY2lsYnVmZmVyKEdMZW51bSB0eXBlLCBHTHVpbnQg
c3RlbmNpbGJ1ZmZlcikKIAogdm9pZCBGcmFtZWJ1ZmZlcjo6ZGV0YWNoVGV4dHVyZShHTHVpbnQg
dGV4dHVyZSkKIHsKLSAgICBpZiAobUNvbG9yYnVmZmVyUG9pbnRlci5pZCgpID09IHRleHR1cmUg
JiYgSXNUZXh0dXJlVGFyZ2V0KG1Db2xvcmJ1ZmZlclR5cGUpKQorICAgIGlmIChtQ29sb3JidWZm
ZXJQb2ludGVyLmlkKCkgPT0gdGV4dHVyZSAmJiBJc0ludGVybmFsVGV4dHVyZVRhcmdldChtQ29s
b3JidWZmZXJUeXBlKSkKICAgICB7CiAgICAgICAgIG1Db2xvcmJ1ZmZlclR5cGUgPSBHTF9OT05F
OwogICAgICAgICBtQ29sb3JidWZmZXJQb2ludGVyLnNldChOVUxMKTsKICAgICB9CiAKLSAgICBp
ZiAobURlcHRoYnVmZmVyUG9pbnRlci5pZCgpID09IHRleHR1cmUgJiYgSXNUZXh0dXJlVGFyZ2V0
KG1EZXB0aGJ1ZmZlclR5cGUpKQorICAgIGlmIChtRGVwdGhidWZmZXJQb2ludGVyLmlkKCkgPT0g
dGV4dHVyZSAmJiBJc0ludGVybmFsVGV4dHVyZVRhcmdldChtRGVwdGhidWZmZXJUeXBlKSkKICAg
ICB7CiAgICAgICAgIG1EZXB0aGJ1ZmZlclR5cGUgPSBHTF9OT05FOwogICAgICAgICBtRGVwdGhi
dWZmZXJQb2ludGVyLnNldChOVUxMKTsKICAgICB9CiAKLSAgICBpZiAobVN0ZW5jaWxidWZmZXJQ
b2ludGVyLmlkKCkgPT0gdGV4dHVyZSAmJiBJc1RleHR1cmVUYXJnZXQobVN0ZW5jaWxidWZmZXJU
eXBlKSkKKyAgICBpZiAobVN0ZW5jaWxidWZmZXJQb2ludGVyLmlkKCkgPT0gdGV4dHVyZSAmJiBJ
c0ludGVybmFsVGV4dHVyZVRhcmdldChtU3RlbmNpbGJ1ZmZlclR5cGUpKQogICAgIHsKICAgICAg
ICAgbVN0ZW5jaWxidWZmZXJUeXBlID0gR0xfTk9ORTsKICAgICAgICAgbVN0ZW5jaWxidWZmZXJQ
b2ludGVyLnNldChOVUxMKTsKQEAgLTI2OCw3ICsyNjgsNyBAQCBHTGVudW0gRnJhbWVidWZmZXI6
OmNvbXBsZXRlbmVzcygpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEdMX0ZSQU1FQlVGRkVSX0lO
Q09NUExFVEVfQVRUQUNITUVOVDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBl
bHNlIGlmIChJc1RleHR1cmVUYXJnZXQobUNvbG9yYnVmZmVyVHlwZSkpCisgICAgICAgIGVsc2Ug
aWYgKElzSW50ZXJuYWxUZXh0dXJlVGFyZ2V0KG1Db2xvcmJ1ZmZlclR5cGUpKQogICAgICAgICB7
CiAgICAgICAgICAgICBpZiAoSXNDb21wcmVzc2VkKGNvbG9yYnVmZmVyLT5nZXRJbnRlcm5hbEZv
cm1hdCgpKSkKICAgICAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FO
R0xFL3NyYy9saWJHTEVTdjIvRnJhbWVidWZmZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJHTEVTdjIvRnJhbWVidWZmZXIuaAppbmRleCA4NzRjZjk0Y2I1MDIxMDQ5ODRkZDE2
YWU1MjU5MzMzOWU1M2FhN2M3Li5iNzNmOWEwZGZmYTFkOWE4MDkyZDdiOTI5Y2NhNzZjNTY3MGFj
NDUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0Zy
YW1lYnVmZmVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9G
cmFtZWJ1ZmZlci5oCkBAIC0xNSw3ICsxNSw3IEBACiAjaW5jbHVkZSA8ZDNkOS5oPgogCiAjaW5j
bHVkZSAiY29tbW9uL2FuZ2xldXRpbHMuaCIKLSNpbmNsdWRlICJsaWJHTEVTdjIvUmVmQ291bnRP
YmplY3QuaCIKKyNpbmNsdWRlICJjb21tb24vUmVmQ291bnRPYmplY3QuaCIKIAogbmFtZXNwYWNl
IGdsCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3Yy
L0luZGV4RGF0YU1hbmFnZXIuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9JbmRleERhdGFNYW5hZ2VyLmNwcAppbmRleCBkZWU0OTA2OWM4YTE2NzFhYjAwZDk5NGE5
MzExN2UzMWZlYzFjM2YyLi4zZGMwYWVmM2YxYjIzOGI4NjcyYjMzY2I4YzU1ZmFkMzBhMjAxOWRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0luZGV4
RGF0YU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVT
djIvSW5kZXhEYXRhTWFuYWdlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvLwotLy8gQ29weXJpZ2h0
IChjKSAyMDAyLTIwMTAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKy8vIENvcHlyaWdodCAoYykgMjAwMi0yMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhv
cnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBn
b3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0
aGUgTElDRU5TRSBmaWxlLgogLy8KQEAgLTE1LDExICsxNSw2IEBACiAjaW5jbHVkZSAibGliR0xF
U3YyL21hdGh1dGlsLmgiCiAjaW5jbHVkZSAibGliR0xFU3YyL21haW4uaCIKIAotbmFtZXNwYWNl
Ci17Ci0gICAgZW51bSB7IElOSVRJQUxfSU5ERVhfQlVGRkVSX1NJWkUgPSA0MDk2ICogc2l6ZW9m
KEdMdWludCkgfTsKLX0KLQogbmFtZXNwYWNlIGdsCiB7CiB1bnNpZ25lZCBpbnQgSW5kZXhCdWZm
ZXI6Om1DdXJyZW50U2VyaWFsID0gMTsKQEAgLTQ4LDEyICs0MywxNSBAQCBJbmRleERhdGFNYW5h
Z2VyOjpJbmRleERhdGFNYW5hZ2VyKENvbnRleHQgKmNvbnRleHQsIElEaXJlY3QzRERldmljZTkg
KmRldmljZSkgOgogICAgIHsKICAgICAgICAgRVJSKCJGYWlsZWQgdG8gYWxsb2NhdGUgdGhlIHN0
cmVhbWluZyBpbmRleCBidWZmZXIocykuIik7CiAgICAgfQorCisgICAgbUNvdW50aW5nQnVmZmVy
ID0gTlVMTDsKIH0KIAogSW5kZXhEYXRhTWFuYWdlcjo6fkluZGV4RGF0YU1hbmFnZXIoKQogewog
ICAgIGRlbGV0ZSBtU3RyZWFtaW5nQnVmZmVyU2hvcnQ7CiAgICAgZGVsZXRlIG1TdHJlYW1pbmdC
dWZmZXJJbnQ7CisgICAgZGVsZXRlIG1Db3VudGluZ0J1ZmZlcjsKIH0KIAogdm9pZCBjb252ZXJ0
SW5kaWNlcyhHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCAqaW5wdXQsIEdMc2l6ZWkgY291bnQsIHZv
aWQgKm91dHB1dCkKQEAgLTkyLDcgKzkwLDcgQEAgdm9pZCBjb21wdXRlUmFuZ2UoY29uc3QgSW5k
ZXhUeXBlICppbmRpY2VzLCBHTHNpemVpIGNvdW50LCBHTHVpbnQgKm1pbkluZGV4LCBHTHUKICAg
ICB9CiB9CiAKLXZvaWQgY29tcHV0ZVJhbmdlKEdMZW51bSB0eXBlLCBjb25zdCB2b2lkICppbmRp
Y2VzLCBHTHNpemVpIGNvdW50LCBHTHVpbnQgKm1pbkluZGV4LCBHTHVpbnQgKm1heEluZGV4KQor
dm9pZCBjb21wdXRlUmFuZ2UoR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5kaWNlcywgR0xz
aXplaSBjb3VudCwgR0x1aW50ICptaW5JbmRleCwgR0x1aW50ICptYXhJbmRleCkKIHsKICAgICBp
ZiAodHlwZSA9PSBHTF9VTlNJR05FRF9CWVRFKQogICAgIHsKQEAgLTEwOSw3ICsxMDcsNyBAQCB2
b2lkIGNvbXB1dGVSYW5nZShHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCAqaW5kaWNlcywgR0xzaXpl
aSBjb3VudCwgR0x1aW50ICptaW5JbgogICAgIGVsc2UgVU5SRUFDSEFCTEUoKTsKIH0KIAotR0xl
bnVtIEluZGV4RGF0YU1hbmFnZXI6OnByZXBhcmVJbmRleERhdGEoR0xlbnVtIHR5cGUsIEdMc2l6
ZWkgY291bnQsIEJ1ZmZlciAqYnVmZmVyLCBjb25zdCB2b2lkICppbmRpY2VzLCBUcmFuc2xhdGVk
SW5kZXhEYXRhICp0cmFuc2xhdGVkKQorR0xlbnVtIEluZGV4RGF0YU1hbmFnZXI6OnByZXBhcmVJ
bmRleERhdGEoR0xlbnVtIHR5cGUsIEdMc2l6ZWkgY291bnQsIEJ1ZmZlciAqYnVmZmVyLCBjb25z
dCBHTHZvaWQgKmluZGljZXMsIFRyYW5zbGF0ZWRJbmRleERhdGEgKnRyYW5zbGF0ZWQpCiB7CiAg
ICAgaWYgKCFtU3RyZWFtaW5nQnVmZmVyU2hvcnQpCiAgICAgewpAQCAtMjI4LDYgKzIyNiw2MSBA
QCBzdGQ6OnNpemVfdCBJbmRleERhdGFNYW5hZ2VyOjp0eXBlU2l6ZShHTGVudW0gdHlwZSkgY29u
c3QKICAgICB9CiB9CiAKK1N0YXRpY0luZGV4QnVmZmVyICpJbmRleERhdGFNYW5hZ2VyOjpnZXRD
b3VudGluZ0luZGljZXMoR0xzaXplaSBjb3VudCkKK3sKKyAgICBpZiAoY291bnQgPD0gNjU1MzYp
ICAgLy8gMTYtYml0IGluZGljZXMKKyAgICB7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIGludCBz
cGFjZU5lZWRlZCA9IGNvdW50ICogc2l6ZW9mKHVuc2lnbmVkIHNob3J0KTsKKworICAgICAgICBp
ZiAoIW1Db3VudGluZ0J1ZmZlciB8fCBtQ291bnRpbmdCdWZmZXItPnNpemUoKSA8IHNwYWNlTmVl
ZGVkKQorICAgICAgICB7CisgICAgICAgICAgICBkZWxldGUgbUNvdW50aW5nQnVmZmVyOworICAg
ICAgICAgICAgbUNvdW50aW5nQnVmZmVyID0gbmV3IFN0YXRpY0luZGV4QnVmZmVyKG1EZXZpY2Up
OworICAgICAgICAgICAgbUNvdW50aW5nQnVmZmVyLT5yZXNlcnZlU3BhY2Uoc3BhY2VOZWVkZWQs
IEdMX1VOU0lHTkVEX1NIT1JUKTsKKworICAgICAgICAgICAgVUlOVCBvZmZzZXQ7CisgICAgICAg
ICAgICB1bnNpZ25lZCBzaG9ydCAqZGF0YSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIHNob3J0Kj4o
bUNvdW50aW5nQnVmZmVyLT5tYXAoc3BhY2VOZWVkZWQsICZvZmZzZXQpKTsKKyAgICAgICAgCisg
ICAgICAgICAgICBpZiAoZGF0YSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBmb3Io
aW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAg
ICAgICAgICAgIGRhdGFbaV0gPSBpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgIG1Db3VudGluZ0J1ZmZlci0+dW5tYXAoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgIH0KKyAgICBlbHNlIGlmIChtU3RyZWFtaW5nQnVmZmVySW50KSAgIC8vIDMyLWJpdCBpbmRp
Y2VzIHN1cHBvcnRlZAorICAgIHsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgaW50IHNwYWNlTmVl
ZGVkID0gY291bnQgKiBzaXplb2YodW5zaWduZWQgaW50KTsKKworICAgICAgICBpZiAoIW1Db3Vu
dGluZ0J1ZmZlciB8fCBtQ291bnRpbmdCdWZmZXItPnNpemUoKSA8IHNwYWNlTmVlZGVkKQorICAg
ICAgICB7CisgICAgICAgICAgICBkZWxldGUgbUNvdW50aW5nQnVmZmVyOworICAgICAgICAgICAg
bUNvdW50aW5nQnVmZmVyID0gbmV3IFN0YXRpY0luZGV4QnVmZmVyKG1EZXZpY2UpOworICAgICAg
ICAgICAgbUNvdW50aW5nQnVmZmVyLT5yZXNlcnZlU3BhY2Uoc3BhY2VOZWVkZWQsIEdMX1VOU0lH
TkVEX0lOVCk7CisKKyAgICAgICAgICAgIFVJTlQgb2Zmc2V0OworICAgICAgICAgICAgdW5zaWdu
ZWQgaW50ICpkYXRhID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Kj4obUNvdW50aW5nQnVmZmVy
LT5tYXAoc3BhY2VOZWVkZWQsICZvZmZzZXQpKTsKKyAgICAgICAgCisgICAgICAgICAgICBpZiAo
ZGF0YSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwg
Y291bnQ7IGkrKykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGRhdGFb
aV0gPSBpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICBtQ291bnRpbmdCdWZmZXItPnVubWFwKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisgICAgZWxzZSByZXR1cm4gTlVMTDsKKyAgICAKKyAgICByZXR1cm4gbUNvdW50aW5n
QnVmZmVyOworfQorCiBJbmRleEJ1ZmZlcjo6SW5kZXhCdWZmZXIoSURpcmVjdDNERGV2aWNlOSAq
ZGV2aWNlLCBVSU5UIHNpemUsIEQzREZPUk1BVCBmb3JtYXQpIDogbURldmljZShkZXZpY2UpLCBt
QnVmZmVyU2l6ZShzaXplKSwgbUluZGV4QnVmZmVyKE5VTEwpCiB7CiAgICAgaWYgKHNpemUgPiAw
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9JbmRl
eERhdGFNYW5hZ2VyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0lu
ZGV4RGF0YU1hbmFnZXIuaAppbmRleCAwNGRiNGJlNjI1OTMyMzNkZjA0ODUyNjUzNjUzZjJhMGQ0
MTc5ZTAyLi5jMWQ0MTY4MzE1ZjhkZjVkNjUwZWNhNjc1YzRmYmVlNzQwOGQ0YTYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0luZGV4RGF0YU1hbmFn
ZXIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL0luZGV4RGF0
YU1hbmFnZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAx
MCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29w
eXJpZ2h0IChjKSAyMDAyLTIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCiAvLwpAQCAtMTgsNiArMTgsMTEgQEAKIAogI2luY2x1ZGUgImxpYkdMRVN2Mi9Db250ZXh0
LmgiCiAKK25hbWVzcGFjZQoreworICAgIGVudW0geyBJTklUSUFMX0lOREVYX0JVRkZFUl9TSVpF
ID0gNDA5NiAqIHNpemVvZihHTHVpbnQpIH07Cit9CisKIG5hbWVzcGFjZSBnbAogewogCkBAIC0x
MjMsNyArMTI4LDggQEAgY2xhc3MgSW5kZXhEYXRhTWFuYWdlcgogICAgIEluZGV4RGF0YU1hbmFn
ZXIoQ29udGV4dCAqY29udGV4dCwgSURpcmVjdDNERGV2aWNlOSAqZXZpY2UpOwogICAgIHZpcnR1
YWwgfkluZGV4RGF0YU1hbmFnZXIoKTsKIAotICAgIEdMZW51bSBwcmVwYXJlSW5kZXhEYXRhKEdM
ZW51bSB0eXBlLCBHTHNpemVpIGNvdW50LCBCdWZmZXIgKmFycmF5RWxlbWVudEJ1ZmZlciwgY29u
c3Qgdm9pZCAqaW5kaWNlcywgVHJhbnNsYXRlZEluZGV4RGF0YSAqdHJhbnNsYXRlZCk7CisgICAg
R0xlbnVtIHByZXBhcmVJbmRleERhdGEoR0xlbnVtIHR5cGUsIEdMc2l6ZWkgY291bnQsIEJ1ZmZl
ciAqYXJyYXlFbGVtZW50QnVmZmVyLCBjb25zdCBHTHZvaWQgKmluZGljZXMsIFRyYW5zbGF0ZWRJ
bmRleERhdGEgKnRyYW5zbGF0ZWQpOworICAgIFN0YXRpY0luZGV4QnVmZmVyICpnZXRDb3VudGlu
Z0luZGljZXMoR0xzaXplaSBjb3VudCk7CiAKICAgcHJpdmF0ZToKICAgICBESVNBTExPV19DT1BZ
X0FORF9BU1NJR04oSW5kZXhEYXRhTWFuYWdlcik7CkBAIC0xMzUsNiArMTQxLDcgQEAgY2xhc3Mg
SW5kZXhEYXRhTWFuYWdlcgogCiAgICAgU3RyZWFtaW5nSW5kZXhCdWZmZXIgKm1TdHJlYW1pbmdC
dWZmZXJTaG9ydDsKICAgICBTdHJlYW1pbmdJbmRleEJ1ZmZlciAqbVN0cmVhbWluZ0J1ZmZlcklu
dDsKKyAgICBTdGF0aWNJbmRleEJ1ZmZlciAqbUNvdW50aW5nQnVmZmVyOwogfTsKIAogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9Qcm9ncmFtLmNw
cCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvUHJvZ3JhbS5jcHAKaW5k
ZXggOTg2NTkzZjlmOGQzNWY1MTY4YzFmNTk1NDliZWIxYzgzMGU2NzY2ZS4uYTVlMzhiZjFiMjA1
MzBhZmJhMTkzMTFkZGE1ODM5Mzk5NTM3NDdhNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9Qcm9ncmFtLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL1Byb2dyYW0uY3BwCkBAIC0xLDUgKzEsNSBAQAogLy8KLS8v
IENvcHlyaWdodCAoYykgMjAwMi0yMDExIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCkBAIC0yNzAsNyArMjcwLDcgQEAgVGV4dHVy
ZVR5cGUgUHJvZ3JhbTo6Z2V0U2FtcGxlclRleHR1cmVUeXBlKFNhbXBsZXJUeXBlIHR5cGUsIHVu
c2lnbmVkIGludCBzYW1wbGUKIAogR0xpbnQgUHJvZ3JhbTo6Z2V0VW5pZm9ybUxvY2F0aW9uKHN0
ZDo6c3RyaW5nIG5hbWUpCiB7Ci0gICAgaW50IHN1YnNjcmlwdCA9IDA7CisgICAgdW5zaWduZWQg
aW50IHN1YnNjcmlwdCA9IDA7CiAKICAgICAvLyBTdHJpcCBhbnkgdHJhaWxpbmcgYXJyYXkgb3Bl
cmF0b3IgYW5kIHJldHJpZXZlIHRoZSBzdWJzY3JpcHQKICAgICBzaXplX3Qgb3BlbiA9IG5hbWUu
ZmluZF9sYXN0X29mKCdbJyk7CkBAIC0zMzMsNyArMzMzLDcgQEAgYm9vbCBQcm9ncmFtOjpzZXRV
bmlmb3JtMWZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGZsb2F0KiB2
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBhdHRlbXB0aW5nIHRvIHdyaXRlIGFuIGFy
cmF5IHRvIGEgbm9uLWFycmF5IHVuaWZvcm0gaXMgYW4gSU5WQUxJRF9PUEVSQVRJT04KIAogICAg
ICAgICBjb3VudCA9IHN0ZDo6bWluKGFycmF5U2l6ZSAtIChpbnQpbVVuaWZvcm1JbmRleFtsb2Nh
dGlvbl0uZWxlbWVudCwgY291bnQpOwotICAgICAgICBHTGJvb2xlYW4gKmJvb2xQYXJhbXMgPSBu
ZXcgR0xib29sZWFuW2NvdW50XTsKKyAgICAgICAgR0xib29sZWFuICpib29sUGFyYW1zID0gKEdM
Ym9vbGVhbiopdGFyZ2V0VW5pZm9ybS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVs
ZW1lbnQ7CiAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgKytpKQogICAgICAg
ICB7CkBAIC0zNDYsMTEgKzM0Niw2IEBAIGJvb2wgUHJvZ3JhbTo6c2V0VW5pZm9ybTFmdihHTGlu
dCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCogdikKICAgICAgICAgICAg
ICAgICBib29sUGFyYW1zW2ldID0gR0xfVFJVRTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQot
Ci0gICAgICAgIG1lbWNweSh0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZvcm1JbmRleFtsb2Nh
dGlvbl0uZWxlbWVudCAqIHNpemVvZihHTGJvb2xlYW4pLAotICAgICAgICAgICAgICAgYm9vbFBh
cmFtcywgc2l6ZW9mKEdMYm9vbGVhbikgKiBjb3VudCk7Ci0KLSAgICAgICAgZGVsZXRlIFtdIGJv
b2xQYXJhbXM7CiAgICAgfQogICAgIGVsc2UKICAgICB7CkBAIC00MDAsNyArMzk1LDcgQEAgYm9v
bCBQcm9ncmFtOjpzZXRVbmlmb3JtMmZ2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBj
b25zdCBHTGZsb2F0ICp2KQogCiAgICAgICAgIGNvdW50ID0gc3RkOjptaW4oYXJyYXlTaXplIC0g
KGludCltVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50LCBjb3VudCk7CiAKLSAgICAgICAg
R0xib29sZWFuICpib29sUGFyYW1zID0gbmV3IEdMYm9vbGVhbltjb3VudCAqIDJdOworICAgICAg
ICBHTGJvb2xlYW4gKmJvb2xQYXJhbXMgPSAoR0xib29sZWFuKil0YXJnZXRVbmlmb3JtLT5kYXRh
ICsgbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIDI7CiAKICAgICAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBjb3VudCAqIDI7ICsraSkKICAgICAgICAgewpAQCAtNDEzLDExICs0MDgs
NiBAQCBib29sIFByb2dyYW06OnNldFVuaWZvcm0yZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkg
Y291bnQsIGNvbnN0IEdMZmxvYXQgKnYpCiAgICAgICAgICAgICAgICAgYm9vbFBhcmFtc1tpXSA9
IEdMX1RSVUU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLQotICAgICAgICBtZW1jcHkodGFy
Z2V0VW5pZm9ybS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQgKiBzaXpl
b2YoR0xib29sZWFuKSAqIDIsCi0gICAgICAgICAgICAgICBib29sUGFyYW1zLCAyICogc2l6ZW9m
KEdMYm9vbGVhbikgKiBjb3VudCk7Ci0KLSAgICAgICAgZGVsZXRlIFtdIGJvb2xQYXJhbXM7CiAg
ICAgfQogICAgIGVsc2UgCiAgICAgewpAQCAtNDY2LDcgKzQ1Niw3IEBAIGJvb2wgUHJvZ3JhbTo6
c2V0VW5pZm9ybTNmdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9h
dCAqdikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gYXR0ZW1wdGluZyB0byB3cml0ZSBh
biBhcnJheSB0byBhIG5vbi1hcnJheSB1bmlmb3JtIGlzIGFuIElOVkFMSURfT1BFUkFUSU9OCiAK
ICAgICAgICAgY291bnQgPSBzdGQ6Om1pbihhcnJheVNpemUgLSAoaW50KW1Vbmlmb3JtSW5kZXhb
bG9jYXRpb25dLmVsZW1lbnQsIGNvdW50KTsKLSAgICAgICAgR0xib29sZWFuICpib29sUGFyYW1z
ID0gbmV3IEdMYm9vbGVhbltjb3VudCAqIDNdOworICAgICAgICBHTGJvb2xlYW4gKmJvb2xQYXJh
bXMgPSAoR0xib29sZWFuKil0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZvcm1JbmRleFtsb2Nh
dGlvbl0uZWxlbWVudCAqIDM7CiAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudCAq
IDM7ICsraSkKICAgICAgICAgewpAQCAtNDc5LDExICs0NjksNiBAQCBib29sIFByb2dyYW06OnNl
dFVuaWZvcm0zZnYoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQg
KnYpCiAgICAgICAgICAgICAgICAgYm9vbFBhcmFtc1tpXSA9IEdMX1RSVUU7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KLQotICAgICAgICBtZW1jcHkodGFyZ2V0VW5pZm9ybS0+ZGF0YSArIG1V
bmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQgKiBzaXplb2YoR0xib29sZWFuKSAqIDMsCi0g
ICAgICAgICAgICAgICBib29sUGFyYW1zLCAzICogc2l6ZW9mKEdMYm9vbGVhbikgKiBjb3VudCk7
Ci0KLSAgICAgICAgZGVsZXRlIFtdIGJvb2xQYXJhbXM7CiAgICAgfQogICAgIGVsc2UgCiAgICAg
ewpAQCAtNTIzLDcgKzUwOCw3IEBAIGJvb2wgUHJvZ3JhbTo6c2V0VW5pZm9ybTRmdihHTGludCBs
b2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xmbG9hdCAqdikKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsgLy8gYXR0ZW1wdGluZyB0byB3cml0ZSBhbiBhcnJheSB0byBhIG5vbi1hcnJh
eSB1bmlmb3JtIGlzIGFuIElOVkFMSURfT1BFUkFUSU9OCiAKICAgICAgICAgY291bnQgPSBzdGQ6
Om1pbihhcnJheVNpemUgLSAoaW50KW1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQsIGNv
dW50KTsKLSAgICAgICAgR0xib29sZWFuICpib29sUGFyYW1zID0gbmV3IEdMYm9vbGVhbltjb3Vu
dCAqIDRdOworICAgICAgICBHTGJvb2xlYW4gKmJvb2xQYXJhbXMgPSAoR0xib29sZWFuKil0YXJn
ZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIDQ7CiAK
ICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudCAqIDQ7ICsraSkKICAgICAgICAgewpA
QCAtNTM2LDExICs1MjEsNiBAQCBib29sIFByb2dyYW06OnNldFVuaWZvcm00ZnYoR0xpbnQgbG9j
YXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQgKnYpCiAgICAgICAgICAgICAgICAg
Ym9vbFBhcmFtc1tpXSA9IEdMX1RSVUU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLQotICAg
ICAgICBtZW1jcHkodGFyZ2V0VW5pZm9ybS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25d
LmVsZW1lbnQgKiBzaXplb2YoR0xib29sZWFuKSAqIDQsCi0gICAgICAgICAgICAgICBib29sUGFy
YW1zLCA0ICogc2l6ZW9mKEdMYm9vbGVhbikgKiBjb3VudCk7Ci0KLSAgICAgICAgZGVsZXRlIFtd
IGJvb2xQYXJhbXM7CiAgICAgfQogICAgIGVsc2UgCiAgICAgewpAQCAtNzEzLDcgKzY5Myw3IEBA
IGJvb2wgUHJvZ3JhbTo6c2V0VW5pZm9ybTFpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3Vu
dCwgY29uc3QgR0xpbnQgKnYpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIGF0dGVtcHRp
bmcgdG8gd3JpdGUgYW4gYXJyYXkgdG8gYSBub24tYXJyYXkgdW5pZm9ybSBpcyBhbiBJTlZBTElE
X09QRVJBVElPTgogCiAgICAgICAgIGNvdW50ID0gc3RkOjptaW4oYXJyYXlTaXplIC0gKGludClt
VW5pZm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50LCBjb3VudCk7Ci0gICAgICAgIEdMYm9vbGVh
biAqYm9vbFBhcmFtcyA9IG5ldyBHTGJvb2xlYW5bY291bnRdOworICAgICAgICBHTGJvb2xlYW4g
KmJvb2xQYXJhbXMgPSAoR0xib29sZWFuKil0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZvcm1J
bmRleFtsb2NhdGlvbl0uZWxlbWVudDsKIAogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNv
dW50OyArK2kpCiAgICAgICAgIHsKQEAgLTcyNiwxMSArNzA2LDYgQEAgYm9vbCBQcm9ncmFtOjpz
ZXRVbmlmb3JtMWl2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAq
dikKICAgICAgICAgICAgICAgICBib29sUGFyYW1zW2ldID0gR0xfVFJVRTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQotCi0gICAgICAgIG1lbWNweSh0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVu
aWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIHNpemVvZihHTGJvb2xlYW4pLAotICAgICAg
ICAgICAgICAgYm9vbFBhcmFtcywgc2l6ZW9mKEdMYm9vbGVhbikgKiBjb3VudCk7Ci0KLSAgICAg
ICAgZGVsZXRlIFtdIGJvb2xQYXJhbXM7CiAgICAgfQogICAgIGVsc2UKICAgICB7CkBAIC03NzAs
NyArNzQ1LDcgQEAgYm9vbCBQcm9ncmFtOjpzZXRVbmlmb3JtMml2KEdMaW50IGxvY2F0aW9uLCBH
THNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdikKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsg
Ly8gYXR0ZW1wdGluZyB0byB3cml0ZSBhbiBhcnJheSB0byBhIG5vbi1hcnJheSB1bmlmb3JtIGlz
IGFuIElOVkFMSURfT1BFUkFUSU9OCiAKICAgICAgICAgY291bnQgPSBzdGQ6Om1pbihhcnJheVNp
emUgLSAoaW50KW1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQsIGNvdW50KTsKLSAgICAg
ICAgR0xib29sZWFuICpib29sUGFyYW1zID0gbmV3IEdMYm9vbGVhbltjb3VudCAqIDJdOworICAg
ICAgICBHTGJvb2xlYW4gKmJvb2xQYXJhbXMgPSAoR0xib29sZWFuKil0YXJnZXRVbmlmb3JtLT5k
YXRhICsgbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIDI7CiAKICAgICAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBjb3VudCAqIDI7ICsraSkKICAgICAgICAgewpAQCAtNzgzLDExICs3
NTgsNiBAQCBib29sIFByb2dyYW06OnNldFVuaWZvcm0yaXYoR0xpbnQgbG9jYXRpb24sIEdMc2l6
ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2KQogICAgICAgICAgICAgICAgIGJvb2xQYXJhbXNbaV0g
PSBHTF9UUlVFOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0KLSAgICAgICAgbWVtY3B5KHRh
cmdldFVuaWZvcm0tPmRhdGEgKyBtVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50ICogc2l6
ZW9mKEdMYm9vbGVhbikgKiAyLAotICAgICAgICAgICAgICAgYm9vbFBhcmFtcywgMiAqIHNpemVv
ZihHTGJvb2xlYW4pICogY291bnQpOwotCi0gICAgICAgIGRlbGV0ZSBbXSBib29sUGFyYW1zOwog
ICAgIH0KICAgICBlbHNlCiAgICAgewpAQCAtODI3LDcgKzc5Nyw3IEBAIGJvb2wgUHJvZ3JhbTo6
c2V0VW5pZm9ybTNpdihHTGludCBsb2NhdGlvbiwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQg
KnYpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIGF0dGVtcHRpbmcgdG8gd3JpdGUgYW4g
YXJyYXkgdG8gYSBub24tYXJyYXkgdW5pZm9ybSBpcyBhbiBJTlZBTElEX09QRVJBVElPTgogCiAg
ICAgICAgIGNvdW50ID0gc3RkOjptaW4oYXJyYXlTaXplIC0gKGludCltVW5pZm9ybUluZGV4W2xv
Y2F0aW9uXS5lbGVtZW50LCBjb3VudCk7Ci0gICAgICAgIEdMYm9vbGVhbiAqYm9vbFBhcmFtcyA9
IG5ldyBHTGJvb2xlYW5bY291bnQgKiAzXTsKKyAgICAgICAgR0xib29sZWFuICpib29sUGFyYW1z
ID0gKEdMYm9vbGVhbiopdGFyZ2V0VW5pZm9ybS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRp
b25dLmVsZW1lbnQgKiAzOwogCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQgKiAz
OyArK2kpCiAgICAgICAgIHsKQEAgLTg0MCwxMSArODEwLDYgQEAgYm9vbCBQcm9ncmFtOjpzZXRV
bmlmb3JtM2l2KEdMaW50IGxvY2F0aW9uLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdikK
ICAgICAgICAgICAgICAgICBib29sUGFyYW1zW2ldID0gR0xfVFJVRTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQotCi0gICAgICAgIG1lbWNweSh0YXJnZXRVbmlmb3JtLT5kYXRhICsgbVVuaWZv
cm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCAqIHNpemVvZihHTGJvb2xlYW4pICogMywKLSAgICAg
ICAgICAgICAgIGJvb2xQYXJhbXMsIDMgKiBzaXplb2YoR0xib29sZWFuKSAqIGNvdW50KTsKLQot
ICAgICAgICBkZWxldGUgW10gYm9vbFBhcmFtczsKICAgICB9CiAgICAgZWxzZQogICAgIHsKQEAg
LTg4NCw3ICs4NDksNyBAQCBib29sIFByb2dyYW06OnNldFVuaWZvcm00aXYoR0xpbnQgbG9jYXRp
b24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50ICp2KQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOyAvLyBhdHRlbXB0aW5nIHRvIHdyaXRlIGFuIGFycmF5IHRvIGEgbm9uLWFycmF5IHVuaWZv
cm0gaXMgYW4gSU5WQUxJRF9PUEVSQVRJT04KIAogICAgICAgICBjb3VudCA9IHN0ZDo6bWluKGFy
cmF5U2l6ZSAtIChpbnQpbVVuaWZvcm1JbmRleFtsb2NhdGlvbl0uZWxlbWVudCwgY291bnQpOwot
ICAgICAgICBHTGJvb2xlYW4gKmJvb2xQYXJhbXMgPSBuZXcgR0xib29sZWFuW2NvdW50ICogNF07
CisgICAgICAgIEdMYm9vbGVhbiAqYm9vbFBhcmFtcyA9IChHTGJvb2xlYW4qKXRhcmdldFVuaWZv
cm0tPmRhdGEgKyBtVW5pZm9ybUluZGV4W2xvY2F0aW9uXS5lbGVtZW50ICogNDsKIAogICAgICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50ICogNDsgKytpKQogICAgICAgICB7CkBAIC04OTcs
MTEgKzg2Miw2IEBAIGJvb2wgUHJvZ3JhbTo6c2V0VW5pZm9ybTRpdihHTGludCBsb2NhdGlvbiwg
R0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnYpCiAgICAgICAgICAgICAgICAgYm9vbFBhcmFt
c1tpXSA9IEdMX1RSVUU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLQotICAgICAgICBtZW1j
cHkodGFyZ2V0VW5pZm9ybS0+ZGF0YSArIG1Vbmlmb3JtSW5kZXhbbG9jYXRpb25dLmVsZW1lbnQg
KiBzaXplb2YoR0xib29sZWFuKSAqIDQsCi0gICAgICAgICAgICAgICBib29sUGFyYW1zLCA0ICog
c2l6ZW9mKEdMYm9vbGVhbikgKiBjb3VudCk7Ci0KLSAgICAgICAgZGVsZXRlIFtdIGJvb2xQYXJh
bXM7CiAgICAgfQogICAgIGVsc2UKICAgICB7CkBAIC0xMTg1LDcgKzExNDUsNyBAQCBpbnQgUHJv
Z3JhbTo6cGFja1ZhcnlpbmdzKGNvbnN0IFZhcnlpbmcgKnBhY2tpbmdbXVs0XSkKICAgICBDb250
ZXh0ICpjb250ZXh0ID0gZ2V0Q29udGV4dCgpOwogICAgIGNvbnN0IGludCBtYXhWYXJ5aW5nVmVj
dG9ycyA9IGNvbnRleHQtPmdldE1heGltdW1WYXJ5aW5nVmVjdG9ycygpOwogCi0gICAgZm9yIChW
YXJ5aW5nTGlzdDo6aXRlcmF0b3IgdmFyeWluZyA9IG1GcmFnbWVudFNoYWRlci0+dmFyeWluZ3Mu
YmVnaW4oKTsgdmFyeWluZyAhPSBtRnJhZ21lbnRTaGFkZXItPnZhcnlpbmdzLmVuZCgpOyB2YXJ5
aW5nKyspCisgICAgZm9yIChWYXJ5aW5nTGlzdDo6aXRlcmF0b3IgdmFyeWluZyA9IG1GcmFnbWVu
dFNoYWRlci0+bVZhcnlpbmdzLmJlZ2luKCk7IHZhcnlpbmcgIT0gbUZyYWdtZW50U2hhZGVyLT5t
VmFyeWluZ3MuZW5kKCk7IHZhcnlpbmcrKykKICAgICB7CiAgICAgICAgIGludCBuID0gVmFyaWFi
bGVSb3dDb3VudCh2YXJ5aW5nLT50eXBlKSAqIHZhcnlpbmctPnNpemU7CiAgICAgICAgIGludCBt
ID0gVmFyaWFibGVDb2x1bW5Db3VudCh2YXJ5aW5nLT50eXBlKTsKQEAgLTEzMzYsMTMgKzEyOTYs
MTMgQEAgYm9vbCBQcm9ncmFtOjpsaW5rVmFyeWluZ3MoKQogICAgIH0KIAogICAgIC8vIFJlc2V0
IHRoZSB2YXJ5aW5nIHJlZ2lzdGVyIGFzc2lnbm1lbnRzCi0gICAgZm9yIChWYXJ5aW5nTGlzdDo6
aXRlcmF0b3IgZnJhZ1ZhciA9IG1GcmFnbWVudFNoYWRlci0+dmFyeWluZ3MuYmVnaW4oKTsgZnJh
Z1ZhciAhPSBtRnJhZ21lbnRTaGFkZXItPnZhcnlpbmdzLmVuZCgpOyBmcmFnVmFyKyspCisgICAg
Zm9yIChWYXJ5aW5nTGlzdDo6aXRlcmF0b3IgZnJhZ1ZhciA9IG1GcmFnbWVudFNoYWRlci0+bVZh
cnlpbmdzLmJlZ2luKCk7IGZyYWdWYXIgIT0gbUZyYWdtZW50U2hhZGVyLT5tVmFyeWluZ3MuZW5k
KCk7IGZyYWdWYXIrKykKICAgICB7CiAgICAgICAgIGZyYWdWYXItPnJlZyA9IC0xOwogICAgICAg
ICBmcmFnVmFyLT5jb2wgPSAtMTsKICAgICB9CiAKLSAgICBmb3IgKFZhcnlpbmdMaXN0OjppdGVy
YXRvciB2dHhWYXIgPSBtVmVydGV4U2hhZGVyLT52YXJ5aW5ncy5iZWdpbigpOyB2dHhWYXIgIT0g
bVZlcnRleFNoYWRlci0+dmFyeWluZ3MuZW5kKCk7IHZ0eFZhcisrKQorICAgIGZvciAoVmFyeWlu
Z0xpc3Q6Oml0ZXJhdG9yIHZ0eFZhciA9IG1WZXJ0ZXhTaGFkZXItPm1WYXJ5aW5ncy5iZWdpbigp
OyB2dHhWYXIgIT0gbVZlcnRleFNoYWRlci0+bVZhcnlpbmdzLmVuZCgpOyB2dHhWYXIrKykKICAg
ICB7CiAgICAgICAgIHZ0eFZhci0+cmVnID0gLTE7CiAgICAgICAgIHZ0eFZhci0+Y29sID0gLTE7
CkBAIC0xMzY5LDExICsxMzI5LDExIEBAIGJvb2wgUHJvZ3JhbTo6bGlua1ZhcnlpbmdzKCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGZvciAoVmFyeWluZ0xpc3Q6Oml0ZXJh
dG9yIGlucHV0ID0gbUZyYWdtZW50U2hhZGVyLT52YXJ5aW5ncy5iZWdpbigpOyBpbnB1dCAhPSBt
RnJhZ21lbnRTaGFkZXItPnZhcnlpbmdzLmVuZCgpOyBpbnB1dCsrKQorICAgIGZvciAoVmFyeWlu
Z0xpc3Q6Oml0ZXJhdG9yIGlucHV0ID0gbUZyYWdtZW50U2hhZGVyLT5tVmFyeWluZ3MuYmVnaW4o
KTsgaW5wdXQgIT0gbUZyYWdtZW50U2hhZGVyLT5tVmFyeWluZ3MuZW5kKCk7IGlucHV0KyspCiAg
ICAgewogICAgICAgICBib29sIG1hdGNoZWQgPSBmYWxzZTsKIAotICAgICAgICBmb3IgKFZhcnlp
bmdMaXN0OjppdGVyYXRvciBvdXRwdXQgPSBtVmVydGV4U2hhZGVyLT52YXJ5aW5ncy5iZWdpbigp
OyBvdXRwdXQgIT0gbVZlcnRleFNoYWRlci0+dmFyeWluZ3MuZW5kKCk7IG91dHB1dCsrKQorICAg
ICAgICBmb3IgKFZhcnlpbmdMaXN0OjppdGVyYXRvciBvdXRwdXQgPSBtVmVydGV4U2hhZGVyLT5t
VmFyeWluZ3MuYmVnaW4oKTsgb3V0cHV0ICE9IG1WZXJ0ZXhTaGFkZXItPm1WYXJ5aW5ncy5lbmQo
KTsgb3V0cHV0KyspCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChvdXRwdXQtPm5hbWUgPT0g
aW5wdXQtPm5hbWUpCiAgICAgICAgICAgICB7CkBAIC0xNDg0LDcgKzE0NDQsNyBAQCBib29sIFBy
b2dyYW06OmxpbmtWYXJ5aW5ncygpCiAgICAgICAgIG1WZXJ0ZXhITFNMICs9ICIgICAgb3V0cHV0
LmdsX0ZyYWdDb29yZCA9IGdsX1Bvc2l0aW9uO1xuIjsKICAgICB9CiAKLSAgICBmb3IgKFZhcnlp
bmdMaXN0OjppdGVyYXRvciB2YXJ5aW5nID0gbVZlcnRleFNoYWRlci0+dmFyeWluZ3MuYmVnaW4o
KTsgdmFyeWluZyAhPSBtVmVydGV4U2hhZGVyLT52YXJ5aW5ncy5lbmQoKTsgdmFyeWluZysrKQor
ICAgIGZvciAoVmFyeWluZ0xpc3Q6Oml0ZXJhdG9yIHZhcnlpbmcgPSBtVmVydGV4U2hhZGVyLT5t
VmFyeWluZ3MuYmVnaW4oKTsgdmFyeWluZyAhPSBtVmVydGV4U2hhZGVyLT5tVmFyeWluZ3MuZW5k
KCk7IHZhcnlpbmcrKykKICAgICB7CiAgICAgICAgIGlmICh2YXJ5aW5nLT5yZWcgPj0gMCkKICAg
ICAgICAgewpAQCAtMTU1Miw3ICsxNTEyLDcgQEAgYm9vbCBQcm9ncmFtOjpsaW5rVmFyeWluZ3Mo
KQogICAgIG1QaXhlbEhMU0wgKz0gInN0cnVjdCBQU19JTlBVVFxuIgogICAgICAgICAgICAgICAg
ICAgIntcbiI7CiAgICAgCi0gICAgZm9yIChWYXJ5aW5nTGlzdDo6aXRlcmF0b3IgdmFyeWluZyA9
IG1GcmFnbWVudFNoYWRlci0+dmFyeWluZ3MuYmVnaW4oKTsgdmFyeWluZyAhPSBtRnJhZ21lbnRT
aGFkZXItPnZhcnlpbmdzLmVuZCgpOyB2YXJ5aW5nKyspCisgICAgZm9yIChWYXJ5aW5nTGlzdDo6
aXRlcmF0b3IgdmFyeWluZyA9IG1GcmFnbWVudFNoYWRlci0+bVZhcnlpbmdzLmJlZ2luKCk7IHZh
cnlpbmcgIT0gbUZyYWdtZW50U2hhZGVyLT5tVmFyeWluZ3MuZW5kKCk7IHZhcnlpbmcrKykKICAg
ICB7CiAgICAgICAgIGlmICh2YXJ5aW5nLT5yZWcgPj0gMCkKICAgICAgICAgewpAQCAtMTYyOCw3
ICsxNTg4LDcgQEAgYm9vbCBQcm9ncmFtOjpsaW5rVmFyeWluZ3MoKQogICAgICAgICBtUGl4ZWxI
TFNMICs9ICIgICAgZ2xfRnJvbnRGYWNpbmcgPSBkeF9Qb2ludHNPckxpbmVzIHx8IChkeF9Gcm9u
dENDVyA/IChpbnB1dC52RmFjZSA+PSAwLjApIDogKGlucHV0LnZGYWNlIDw9IDAuMCkpO1xuIjsK
ICAgICB9CiAKLSAgICBmb3IgKFZhcnlpbmdMaXN0OjppdGVyYXRvciB2YXJ5aW5nID0gbUZyYWdt
ZW50U2hhZGVyLT52YXJ5aW5ncy5iZWdpbigpOyB2YXJ5aW5nICE9IG1GcmFnbWVudFNoYWRlci0+
dmFyeWluZ3MuZW5kKCk7IHZhcnlpbmcrKykKKyAgICBmb3IgKFZhcnlpbmdMaXN0OjppdGVyYXRv
ciB2YXJ5aW5nID0gbUZyYWdtZW50U2hhZGVyLT5tVmFyeWluZ3MuYmVnaW4oKTsgdmFyeWluZyAh
PSBtRnJhZ21lbnRTaGFkZXItPm1WYXJ5aW5ncy5lbmQoKTsgdmFyeWluZysrKQogICAgIHsKICAg
ICAgICAgaWYgKHZhcnlpbmctPnJlZyA+PSAwKQogICAgICAgICB7CkBAIC0xOTQyLDcgKzE5MDIs
NyBAQCBib29sIFByb2dyYW06OmRlZmluZVVuaWZvcm0oY29uc3QgRDNEWEhBTkRMRSAmY29uc3Rh
bnRIYW5kbGUsIGNvbnN0IEQzRFhDT05TVEFOVAogICAgIH0KIH0KIAotYm9vbCBQcm9ncmFtOjpk
ZWZpbmVVbmlmb3JtKGNvbnN0IEQzRFhDT05TVEFOVF9ERVNDICZjb25zdGFudERlc2NyaXB0aW9u
LCBzdGQ6OnN0cmluZyAmX25hbWUpCitib29sIFByb2dyYW06OmRlZmluZVVuaWZvcm0oY29uc3Qg
RDNEWENPTlNUQU5UX0RFU0MgJmNvbnN0YW50RGVzY3JpcHRpb24sIGNvbnN0IHN0ZDo6c3RyaW5n
ICZfbmFtZSkKIHsKICAgICBVbmlmb3JtICp1bmlmb3JtID0gY3JlYXRlVW5pZm9ybShjb25zdGFu
dERlc2NyaXB0aW9uLCBfbmFtZSk7CiAKQEAgLTE5ODMsNyArMTk0Myw3IEBAIGJvb2wgUHJvZ3Jh
bTo6ZGVmaW5lVW5pZm9ybShjb25zdCBEM0RYQ09OU1RBTlRfREVTQyAmY29uc3RhbnREZXNjcmlw
dGlvbiwgc3RkOjpzCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLVVuaWZvcm0gKlByb2dyYW06OmNy
ZWF0ZVVuaWZvcm0oY29uc3QgRDNEWENPTlNUQU5UX0RFU0MgJmNvbnN0YW50RGVzY3JpcHRpb24s
IHN0ZDo6c3RyaW5nICZfbmFtZSkKK1VuaWZvcm0gKlByb2dyYW06OmNyZWF0ZVVuaWZvcm0oY29u
c3QgRDNEWENPTlNUQU5UX0RFU0MgJmNvbnN0YW50RGVzY3JpcHRpb24sIGNvbnN0IHN0ZDo6c3Ry
aW5nICZfbmFtZSkKIHsKICAgICBpZiAoY29uc3RhbnREZXNjcmlwdGlvbi5Sb3dzID09IDEpICAg
Ly8gVmVjdG9ycyBhbmQgc2NhbGFycwogICAgIHsKQEAgLTIwODUsMTQgKzIwNDUsMTMgQEAgc3Rk
OjpzdHJpbmcgUHJvZ3JhbTo6dW5kZWNvcmF0ZVVuaWZvcm0oY29uc3Qgc3RkOjpzdHJpbmcgJl9u
YW1lKQogCiB2b2lkIFByb2dyYW06OmFwcGx5VW5pZm9ybW5idihVbmlmb3JtICp0YXJnZXRVbmlm
b3JtLCBHTHNpemVpIGNvdW50LCBpbnQgd2lkdGgsIGNvbnN0IEdMYm9vbGVhbiAqdikKIHsKLSAg
ICBmbG9hdCAqdmVjdG9yID0gTlVMTDsKLSAgICBCT09MICpib29sVmVjdG9yID0gTlVMTDsKKyAg
ICBmbG9hdCB2ZWN0b3JbRDNEOV9NQVhfRkxPQVRfQ09OU1RBTlRTICogNF07CisgICAgQk9PTCBi
b29sVmVjdG9yW0QzRDlfTUFYX0JPT0xfQ09OU1RBTlRTXTsKIAogICAgIGlmICh0YXJnZXRVbmlm
b3JtLT5wcy5yZWdpc3RlckNvdW50ICYmIHRhcmdldFVuaWZvcm0tPnBzLnJlZ2lzdGVyU2V0ID09
IEQzRFhSU19GTE9BVDQgfHwKICAgICAgICAgdGFyZ2V0VW5pZm9ybS0+dnMucmVnaXN0ZXJDb3Vu
dCAmJiB0YXJnZXRVbmlmb3JtLT52cy5yZWdpc3RlclNldCA9PSBEM0RYUlNfRkxPQVQ0KQogICAg
IHsKLSAgICAgICAgdmVjdG9yID0gbmV3IGZsb2F0WzQgKiBjb3VudF07Ci0KKyAgICAgICAgQVNT
RVJUKGNvdW50IDw9IEQzRDlfTUFYX0ZMT0FUX0NPTlNUQU5UUyk7CiAgICAgICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKICAgICAgICAgewogICAgICAgICAgICAgZm9yIChpbnQg
aiA9IDA7IGogPCA0OyBqKyspCkBAIC0yMTEyLDggKzIwNzEsMTEgQEAgdm9pZCBQcm9ncmFtOjph
cHBseVVuaWZvcm1uYnYoVW5pZm9ybSAqdGFyZ2V0VW5pZm9ybSwgR0xzaXplaSBjb3VudCwgaW50
IHdpZHRoLAogICAgIGlmICh0YXJnZXRVbmlmb3JtLT5wcy5yZWdpc3RlckNvdW50ICYmIHRhcmdl
dFVuaWZvcm0tPnBzLnJlZ2lzdGVyU2V0ID09IEQzRFhSU19CT09MIHx8CiAgICAgICAgIHRhcmdl
dFVuaWZvcm0tPnZzLnJlZ2lzdGVyQ291bnQgJiYgdGFyZ2V0VW5pZm9ybS0+dnMucmVnaXN0ZXJT
ZXQgPT0gRDNEWFJTX0JPT0wpCiAgICAgewotICAgICAgICBib29sVmVjdG9yID0gbmV3IEJPT0xb
Y291bnQgKiB3aWR0aF07Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQgKiB3aWR0
aDsgaSsrKQorICAgICAgICBpbnQgcHNDb3VudCA9IHRhcmdldFVuaWZvcm0tPnBzLnJlZ2lzdGVy
U2V0ID09IEQzRFhSU19CT09MID8gdGFyZ2V0VW5pZm9ybS0+cHMucmVnaXN0ZXJDb3VudCA6IDA7
CisgICAgICAgIGludCB2c0NvdW50ID0gdGFyZ2V0VW5pZm9ybS0+dnMucmVnaXN0ZXJTZXQgPT0g
RDNEWFJTX0JPT0wgPyB0YXJnZXRVbmlmb3JtLT52cy5yZWdpc3RlckNvdW50IDogMDsKKyAgICAg
ICAgaW50IGNvcHlDb3VudCA9IHN0ZDo6bWluKGNvdW50ICogd2lkdGgsIHN0ZDo6bWF4KHBzQ291
bnQsIHZzQ291bnQpKTsKKyAgICAgICAgQVNTRVJUKGNvcHlDb3VudCA8PSBEM0Q5X01BWF9CT09M
X0NPTlNUQU5UUyk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY29weUNvdW50OyBpKysp
CiAgICAgICAgIHsKICAgICAgICAgICAgIGJvb2xWZWN0b3JbaV0gPSB2W2ldICE9IEdMX0ZBTFNF
OwogICAgICAgICB9CkBAIC0yMTQ0LDkgKzIxMDYsNiBAQCB2b2lkIFByb2dyYW06OmFwcGx5VW5p
Zm9ybW5idihVbmlmb3JtICp0YXJnZXRVbmlmb3JtLCBHTHNpemVpIGNvdW50LCBpbnQgd2lkdGgs
CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBVTlJFQUNIQUJMRSgpOwogICAgIH0KLQotICAgIGRl
bGV0ZSBbXSB2ZWN0b3I7Ci0gICAgZGVsZXRlIFtdIGJvb2xWZWN0b3I7CiB9CiAKIGJvb2wgUHJv
Z3JhbTo6YXBwbHlVbmlmb3JtbmZ2KFVuaWZvcm0gKnRhcmdldFVuaWZvcm0sIGNvbnN0IEdMZmxv
YXQgKnYpCkBAIC0yMTY2LDcgKzIxMjUsOCBAQCBib29sIFByb2dyYW06OmFwcGx5VW5pZm9ybW5m
dihVbmlmb3JtICp0YXJnZXRVbmlmb3JtLCBjb25zdCBHTGZsb2F0ICp2KQogCiBib29sIFByb2dy
YW06OmFwcGx5VW5pZm9ybTFpdihVbmlmb3JtICp0YXJnZXRVbmlmb3JtLCBHTHNpemVpIGNvdW50
LCBjb25zdCBHTGludCAqdikKIHsKLSAgICBEM0RYVkVDVE9SNCAqdmVjdG9yID0gbmV3IEQzRFhW
RUNUT1I0W2NvdW50XTsKKyAgICBBU1NFUlQoY291bnQgPD0gRDNEOV9NQVhfRkxPQVRfQ09OU1RB
TlRTKTsKKyAgICBEM0RYVkVDVE9SNCB2ZWN0b3JbRDNEOV9NQVhfRkxPQVRfQ09OU1RBTlRTXTsK
IAogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKICAgICB7CkBAIC0yMjIxLDE0
ICsyMTgxLDEzIEBAIGJvb2wgUHJvZ3JhbTo6YXBwbHlVbmlmb3JtMWl2KFVuaWZvcm0gKnRhcmdl
dFVuaWZvcm0sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMaW50CiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBkZWxldGUgW10gdmVjdG9yOwotCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgUHJv
Z3JhbTo6YXBwbHlVbmlmb3JtMml2KFVuaWZvcm0gKnRhcmdldFVuaWZvcm0sIEdMc2l6ZWkgY291
bnQsIGNvbnN0IEdMaW50ICp2KQogewotICAgIEQzRFhWRUNUT1I0ICp2ZWN0b3IgPSBuZXcgRDNE
WFZFQ1RPUjRbY291bnRdOworICAgIEFTU0VSVChjb3VudCA8PSBEM0Q5X01BWF9GTE9BVF9DT05T
VEFOVFMpOworICAgIEQzRFhWRUNUT1I0IHZlY3RvcltEM0Q5X01BWF9GTE9BVF9DT05TVEFOVFNd
OwogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQogICAgIHsKQEAgLTIyMzks
MTQgKzIxOTgsMTMgQEAgYm9vbCBQcm9ncmFtOjphcHBseVVuaWZvcm0yaXYoVW5pZm9ybSAqdGFy
Z2V0VW5pZm9ybSwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQKIAogICAgIGFwcGx5VW5pZm9y
bW5pdih0YXJnZXRVbmlmb3JtLCBjb3VudCwgdmVjdG9yKTsKIAotICAgIGRlbGV0ZVtdIHZlY3Rv
cjsKLQogICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIFByb2dyYW06OmFwcGx5VW5pZm9ybTNp
dihVbmlmb3JtICp0YXJnZXRVbmlmb3JtLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGludCAqdikK
IHsKLSAgICBEM0RYVkVDVE9SNCAqdmVjdG9yID0gbmV3IEQzRFhWRUNUT1I0W2NvdW50XTsKKyAg
ICBBU1NFUlQoY291bnQgPD0gRDNEOV9NQVhfRkxPQVRfQ09OU1RBTlRTKTsKKyAgICBEM0RYVkVD
VE9SNCB2ZWN0b3JbRDNEOV9NQVhfRkxPQVRfQ09OU1RBTlRTXTsKIAogICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgY291bnQ7IGkrKykKICAgICB7CkBAIC0yMjU3LDE0ICsyMjE1LDEzIEBAIGJvb2wg
UHJvZ3JhbTo6YXBwbHlVbmlmb3JtM2l2KFVuaWZvcm0gKnRhcmdldFVuaWZvcm0sIEdMc2l6ZWkg
Y291bnQsIGNvbnN0IEdMaW50CiAKICAgICBhcHBseVVuaWZvcm1uaXYodGFyZ2V0VW5pZm9ybSwg
Y291bnQsIHZlY3Rvcik7CiAKLSAgICBkZWxldGVbXSB2ZWN0b3I7Ci0KICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogYm9vbCBQcm9ncmFtOjphcHBseVVuaWZvcm00aXYoVW5pZm9ybSAqdGFyZ2V0VW5p
Zm9ybSwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnYpCiB7Ci0gICAgRDNEWFZFQ1RPUjQg
KnZlY3RvciA9IG5ldyBEM0RYVkVDVE9SNFtjb3VudF07CisgICAgQVNTRVJUKGNvdW50IDw9IEQz
RDlfTUFYX0ZMT0FUX0NPTlNUQU5UUyk7CisgICAgRDNEWFZFQ1RPUjQgdmVjdG9yW0QzRDlfTUFY
X0ZMT0FUX0NPTlNUQU5UU107CiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKysp
CiAgICAgewpAQCAtMjI3NSw4ICsyMjMyLDYgQEAgYm9vbCBQcm9ncmFtOjphcHBseVVuaWZvcm00
aXYoVW5pZm9ybSAqdGFyZ2V0VW5pZm9ybSwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQKIAog
ICAgIGFwcGx5VW5pZm9ybW5pdih0YXJnZXRVbmlmb3JtLCBjb3VudCwgdmVjdG9yKTsKIAotICAg
IGRlbGV0ZSBbXSB2ZWN0b3I7Ci0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjUwMSwxMSAr
MjQ1Niw4IEBAIHZvaWQgUHJvZ3JhbTo6Z2V0SW5mb0xvZyhHTHNpemVpIGJ1ZlNpemUsIEdMc2l6
ZWkgKmxlbmd0aCwgY2hhciAqaW5mb0xvZykKIAogICAgIGlmIChtSW5mb0xvZykKICAgICB7Ci0g
ICAgICAgIHdoaWxlIChpbmRleCA8IGJ1ZlNpemUgLSAxICYmIGluZGV4IDwgKGludClzdHJsZW4o
bUluZm9Mb2cpKQotICAgICAgICB7Ci0gICAgICAgICAgICBpbmZvTG9nW2luZGV4XSA9IG1JbmZv
TG9nW2luZGV4XTsKLSAgICAgICAgICAgIGluZGV4Kys7Ci0gICAgICAgIH0KKyAgICAgICAgaW5k
ZXggPSBzdGQ6Om1pbihidWZTaXplIC0gMSwgKGludClzdHJsZW4obUluZm9Mb2cpKTsKKyAgICAg
ICAgbWVtY3B5KGluZm9Mb2csIG1JbmZvTG9nLCBpbmRleCk7CiAgICAgfQogCiAgICAgaWYgKGJ1
ZlNpemUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3Yy
L1Byb2dyYW0uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvUHJvZ3Jh
bS5oCmluZGV4IDc3ZmZkMjRjNDkxMTg0NTAwNDU0Y2E2YTkwNjc4ZmZhN2M5YWI0NDYuLjYxODMw
YzYxYzllYjgwNjhjZWI4ZTllMzliMDcwY2MzZDQxNzY3OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvUHJvZ3JhbS5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvUHJvZ3JhbS5oCkBAIC0xNTQsOCArMTU0LDggQEAg
Y2xhc3MgUHJvZ3JhbQogCiAgICAgYm9vbCBsaW5rVW5pZm9ybXMoSUQzRFhDb25zdGFudFRhYmxl
ICpjb25zdGFudFRhYmxlKTsKICAgICBib29sIGRlZmluZVVuaWZvcm0oY29uc3QgRDNEWEhBTkRM
RSAmY29uc3RhbnRIYW5kbGUsIGNvbnN0IEQzRFhDT05TVEFOVF9ERVNDICZjb25zdGFudERlc2Ny
aXB0aW9uLCBzdGQ6OnN0cmluZyBuYW1lID0gIiIpOwotICAgIGJvb2wgZGVmaW5lVW5pZm9ybShj
b25zdCBEM0RYQ09OU1RBTlRfREVTQyAmY29uc3RhbnREZXNjcmlwdGlvbiwgc3RkOjpzdHJpbmcg
Jm5hbWUpOwotICAgIFVuaWZvcm0gKmNyZWF0ZVVuaWZvcm0oY29uc3QgRDNEWENPTlNUQU5UX0RF
U0MgJmNvbnN0YW50RGVzY3JpcHRpb24sIHN0ZDo6c3RyaW5nICZuYW1lKTsKKyAgICBib29sIGRl
ZmluZVVuaWZvcm0oY29uc3QgRDNEWENPTlNUQU5UX0RFU0MgJmNvbnN0YW50RGVzY3JpcHRpb24s
IGNvbnN0IHN0ZDo6c3RyaW5nICZuYW1lKTsKKyAgICBVbmlmb3JtICpjcmVhdGVVbmlmb3JtKGNv
bnN0IEQzRFhDT05TVEFOVF9ERVNDICZjb25zdGFudERlc2NyaXB0aW9uLCBjb25zdCBzdGQ6OnN0
cmluZyAmbmFtZSk7CiAgICAgYm9vbCBhcHBseVVuaWZvcm1uZnYoVW5pZm9ybSAqdGFyZ2V0VW5p
Zm9ybSwgY29uc3QgR0xmbG9hdCAqdik7CiAgICAgYm9vbCBhcHBseVVuaWZvcm0xaXYoVW5pZm9y
bSAqdGFyZ2V0VW5pZm9ybSwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xpbnQgKnYpOwogICAgIGJv
b2wgYXBwbHlVbmlmb3JtMml2KFVuaWZvcm0gKnRhcmdldFVuaWZvcm0sIEdMc2l6ZWkgY291bnQs
IGNvbnN0IEdMaW50ICp2KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvUXVlcnkuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdM
RVN2Mi9RdWVyeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTBlZGRhNWM1NzZmNTM0NTRkN2RjNzM4MzA5MGJj
ZWEyMDkwYmQ4NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvUXVlcnkuY3BwCkBAIC0wLDAgKzEsMTI4IEBACisvLworLy8gQ29weXJpZ2h0
IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKwor
Ly8gUXVlcnkuY3BwOiBJbXBsZW1lbnRzIHRoZSBnbDo6UXVlcnkgY2xhc3MKKworI2luY2x1ZGUg
ImxpYkdMRVN2Mi9RdWVyeS5oIgorCisjaW5jbHVkZSAibGliR0xFU3YyL21haW4uaCIKKworbmFt
ZXNwYWNlIGdsCit7CisKK1F1ZXJ5OjpRdWVyeShHTHVpbnQgaWQsIEdMZW51bSB0eXBlKSA6IFJl
ZkNvdW50T2JqZWN0KGlkKQoreyAKKyAgICBtUXVlcnkgPSBOVUxMOworICAgIG1TdGF0dXMgPSBH
TF9GQUxTRTsKKyAgICBtUmVzdWx0ID0gR0xfRkFMU0U7CisgICAgbVR5cGUgPSB0eXBlOworfQor
CitRdWVyeTo6flF1ZXJ5KCkKK3sKKyAgICBpZiAobVF1ZXJ5ICE9IE5VTEwpCisgICAgeworICAg
ICAgICBtUXVlcnktPlJlbGVhc2UoKTsKKyAgICAgICAgbVF1ZXJ5ID0gTlVMTDsKKyAgICB9Cit9
CisKK3ZvaWQgUXVlcnk6OmJlZ2luKCkKK3sKKyAgICBpZiAobVF1ZXJ5ID09IE5VTEwpCisgICAg
eworICAgICAgICBpZiAoRkFJTEVEKGdldERldmljZSgpLT5DcmVhdGVRdWVyeShEM0RRVUVSWVRZ
UEVfT0NDTFVTSU9OLCAmbVF1ZXJ5KSkpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBl
cnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEhSRVNVTFQg
cmVzdWx0ID0gbVF1ZXJ5LT5Jc3N1ZShEM0RJU1NVRV9CRUdJTik7CisgICAgQVNTRVJUKFNVQ0NF
RURFRChyZXN1bHQpKTsKK30KKwordm9pZCBRdWVyeTo6ZW5kKCkKK3sKKyAgICBpZiAobVF1ZXJ5
ID09IE5VTEwpCisgICAgeworICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJ
T04pOworICAgIH0KKworICAgIEhSRVNVTFQgcmVzdWx0ID0gbVF1ZXJ5LT5Jc3N1ZShEM0RJU1NV
RV9FTkQpOworICAgIEFTU0VSVChTVUNDRUVERUQocmVzdWx0KSk7CisgICAgCisgICAgbVN0YXR1
cyA9IEdMX0ZBTFNFOworICAgIG1SZXN1bHQgPSBHTF9GQUxTRTsKK30KKworR0x1aW50IFF1ZXJ5
OjpnZXRSZXN1bHQoKQoreworICAgIGlmIChtUXVlcnkgIT0gTlVMTCkKKyAgICB7CisgICAgICAg
IHdoaWxlICghdGVzdFF1ZXJ5KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIFNsZWVwKDApOwor
ICAgICAgICAgICAgLy8gZXhwbGljaXRseSBjaGVjayBmb3IgZGV2aWNlIGxvc3MKKyAgICAgICAg
ICAgIC8vIHNvbWUgZHJpdmVycyBzZWVtIHRvIHJldHVybiBTX0ZBTFNFIGV2ZW4gaWYgdGhlIGRl
dmljZSBpcyBsb3N0CisgICAgICAgICAgICAvLyBpbnN0ZWFkIG9mIEQzREVSUl9ERVZJQ0VMT1NU
IGxpa2UgdGhleSBzaG91bGQKKyAgICAgICAgICAgIGlmIChnbDo6Z2V0RGlzcGxheSgpLT50ZXN0
RGV2aWNlTG9zdCgpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGdsOjpnZXREaXNw
bGF5KCktPm5vdGlmeURldmljZUxvc3QoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZXJyb3Io
R0xfT1VUX09GX01FTU9SWSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisK
KyAgICByZXR1cm4gKEdMdWludCltUmVzdWx0OworfQorCitHTGJvb2xlYW4gUXVlcnk6OmlzUmVz
dWx0QXZhaWxhYmxlKCkKK3sKKyAgICBpZiAobVF1ZXJ5ICE9IE5VTEwpCisgICAgeworICAgICAg
ICB0ZXN0UXVlcnkoKTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIG1TdGF0dXM7Cit9CisKK0dM
ZW51bSBRdWVyeTo6Z2V0VHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1UeXBlOworfQorCitH
TGJvb2xlYW4gUXVlcnk6OnRlc3RRdWVyeSgpCit7CisgICAgaWYgKG1RdWVyeSAhPSBOVUxMICYm
IG1TdGF0dXMgIT0gR0xfVFJVRSkKKyAgICB7CisgICAgICAgIERXT1JEIG51bVBpeGVscyA9IDA7
CisKKyAgICAgICAgSFJFU1VMVCBocmVzID0gbVF1ZXJ5LT5HZXREYXRhKCZudW1QaXhlbHMsIHNp
emVvZihEV09SRCksIEQzREdFVERBVEFfRkxVU0gpOworICAgICAgICBpZiAoaHJlcyA9PSBTX09L
KQorICAgICAgICB7CisgICAgICAgICAgICBtU3RhdHVzID0gR0xfVFJVRTsKKworICAgICAgICAg
ICAgc3dpdGNoIChtVHlwZSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY2FzZSBHTF9B
TllfU0FNUExFU19QQVNTRURfRVhUOgorICAgICAgICAgICAgICBjYXNlIEdMX0FOWV9TQU1QTEVT
X1BBU1NFRF9DT05TRVJWQVRJVkVfRVhUOgorICAgICAgICAgICAgICAgIG1SZXN1bHQgPSAobnVt
UGl4ZWxzID4gMCkgPyBHTF9UUlVFIDogR0xfRkFMU0U7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgQVNTRVJUKGZhbHNlKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChjaGVja0RldmljZUxv
c3QoaHJlcykpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0Zf
TUVNT1JZLCBHTF9UUlVFKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIG1T
dGF0dXM7CisgICAgfQorCisgICAgcmV0dXJuIEdMX1RSVUU7IC8vIHByZXZlbnQgYmxvY2tpbmcg
d2hlbiBxdWVyeSBpcyBudWxsCit9Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9B
TkdMRS9zcmMvbGliR0xFU3YyL1F1ZXJ5LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL1F1ZXJ5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzkzNTdhMDU4M2U0MTg0N2ZiZjNkNjc5Y2I1
NjkxM2U1MjQyZmEyOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJHTEVTdjIvUXVlcnkuaApAQCAtMCwwICsxLDQ4IEBACisvLworLy8gQ29weXJpZ2h0
IChjKSAyMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs
aWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorLy8KKwor
Ly8gUXVlcnkuaDogRGVmaW5lcyB0aGUgZ2w6OlF1ZXJ5IGNsYXNzCisKKyNpZm5kZWYgTElCR0xF
U1YyX1FVRVJZX0hfCisjZGVmaW5lIExJQkdMRVNWMl9RVUVSWV9IXworCisjZGVmaW5lIEdMX0FQ
SUNBTEwKKyNpbmNsdWRlIDxHTEVTMi9nbDIuaD4KKyNpbmNsdWRlIDxkM2Q5Lmg+CisKKyNpbmNs
dWRlICJjb21tb24vYW5nbGV1dGlscy5oIgorI2luY2x1ZGUgImNvbW1vbi9SZWZDb3VudE9iamVj
dC5oIgorCituYW1lc3BhY2UgZ2wKK3sKKworY2xhc3MgUXVlcnkgOiBwdWJsaWMgUmVmQ291bnRP
YmplY3QKK3sKKyAgcHVibGljOgorICAgIFF1ZXJ5KEdMdWludCBpZCwgR0xlbnVtIHR5cGUpOwor
ICAgIHZpcnR1YWwgflF1ZXJ5KCk7CisKKyAgICB2b2lkIGJlZ2luKCk7CisgICAgdm9pZCBlbmQo
KTsKKyAgICBHTHVpbnQgZ2V0UmVzdWx0KCk7CisgICAgR0xib29sZWFuIGlzUmVzdWx0QXZhaWxh
YmxlKCk7CisKKyAgICBHTGVudW0gZ2V0VHlwZSgpIGNvbnN0OworCisgIHByaXZhdGU6CisgICAg
RElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFF1ZXJ5KTsKKworICAgIEdMYm9vbGVhbiB0ZXN0UXVl
cnkoKTsKKworICAgIElEaXJlY3QzRFF1ZXJ5OSogbVF1ZXJ5OworICAgIEdMZW51bSBtVHlwZTsK
KyAgICBHTGJvb2xlYW4gbVN0YXR1czsKKyAgICBHTGludCBtUmVzdWx0OworfTsKKworfQorCisj
ZW5kaWYgICAvLyBMSUJHTEVTVjJfUVVFUllfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvUmVmQ291bnRPYmplY3QuY3BwIGIvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9SZWZDb3VudE9iamVjdC5jcHAKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDJkZTFlNzE4ZGI2MzQ2ZWM5YTg2N2I2MDM3Nzk5ZTFlY2I4ZDRh
NDYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9SZWZDb3VudE9iamVjdC5jcHAKKysrIC9k
ZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTAg
VGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBv
ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh
dCBjYW4gYmUKLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0vLyBSZWZDb3Vu
dE9iamVjdC5jcHA6IERlZmluZXMgdGhlIGdsOjpSZWZDb3VudE9iamVjdCBiYXNlIGNsYXNzIHRo
YXQgcHJvdmlkZXMKLS8vIGxpZmVjeWNsZSBzdXBwb3J0IGZvciBHTCBvYmplY3RzIHVzaW5nIHRo
ZSB0cmFkaXRpb25hbCBCaW5kT2JqZWN0IHNjaGVtZSwgYnV0Ci0vLyB0aGF0IG5lZWQgdG8gYmUg
cmVmZXJlbmNlIGNvdW50ZWQgZm9yIGNvcnJlY3QgY3Jvc3MtY29udGV4dCBkZWxldGlvbi4KLS8v
IChDb25jcmV0ZWx5LCB0ZXh0dXJlcywgYnVmZmVycyBhbmQgcmVuZGVyYnVmZmVycy4pCi0KLSNp
bmNsdWRlICJSZWZDb3VudE9iamVjdC5oIgotCi1uYW1lc3BhY2UgZ2wKLXsKLQotUmVmQ291bnRP
YmplY3Q6OlJlZkNvdW50T2JqZWN0KEdMdWludCBpZCkKLXsKLSAgICBtSWQgPSBpZDsKLSAgICBt
UmVmQ291bnQgPSAwOwotfQotCi1SZWZDb3VudE9iamVjdDo6flJlZkNvdW50T2JqZWN0KCkKLXsK
LSAgICBBU1NFUlQobVJlZkNvdW50ID09IDApOwotfQotCi12b2lkIFJlZkNvdW50T2JqZWN0Ojph
ZGRSZWYoKSBjb25zdAotewotICAgIG1SZWZDb3VudCsrOwotfQotCi12b2lkIFJlZkNvdW50T2Jq
ZWN0OjpyZWxlYXNlKCkgY29uc3QKLXsKLSAgICBBU1NFUlQobVJlZkNvdW50ID4gMCk7Ci0KLSAg
ICBpZiAoLS1tUmVmQ291bnQgPT0gMCkKLSAgICB7Ci0gICAgICAgIGRlbGV0ZSB0aGlzOwotICAg
IH0KLX0KLQotdm9pZCBSZWZDb3VudE9iamVjdEJpbmRpbmdQb2ludGVyOjpzZXQoUmVmQ291bnRP
YmplY3QgKm5ld09iamVjdCkKLXsKLSAgICAvLyBhZGRSZWYgZmlyc3QgaW4gY2FzZSBuZXdPYmpl
Y3QgPT0gbU9iamVjdCBhbmQgdGhpcyBpcyB0aGUgbGFzdCByZWZlcmVuY2UgdG8gaXQuCi0gICAg
aWYgKG5ld09iamVjdCAhPSBOVUxMKSBuZXdPYmplY3QtPmFkZFJlZigpOwotICAgIGlmIChtT2Jq
ZWN0ICE9IE5VTEwpIG1PYmplY3QtPnJlbGVhc2UoKTsKLQotICAgIG1PYmplY3QgPSBuZXdPYmpl
Y3Q7Ci19Ci0KLX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TEVTdjIvUmVmQ291bnRPYmplY3QuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TEVTdjIvUmVmQ291bnRPYmplY3QuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTE0
OTM1MDVmNzI4ZmZhMWVjYTFhNDg2YzE4NTczZDY2NTZjMDhmMC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL1JlZkNvdW50T2JqZWN0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBA
Ci0vLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIwMTAgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9y
cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKLS8vIGZvdW5kIGluIHRo
ZSBMSUNFTlNFIGZpbGUuCi0vLwotCi0vLyBSZWZDb3VudE9iamVjdC5oOiBEZWZpbmVzIHRoZSBn
bDo6UmVmQ291bnRPYmplY3QgYmFzZSBjbGFzcyB0aGF0IHByb3ZpZGVzCi0vLyBsaWZlY3ljbGUg
c3VwcG9ydCBmb3IgR0wgb2JqZWN0cyB1c2luZyB0aGUgdHJhZGl0aW9uYWwgQmluZE9iamVjdCBz
Y2hlbWUsIGJ1dAotLy8gdGhhdCBuZWVkIHRvIGJlIHJlZmVyZW5jZSBjb3VudGVkIGZvciBjb3Jy
ZWN0IGNyb3NzLWNvbnRleHQgZGVsZXRpb24uCi0vLyAoQ29uY3JldGVseSwgdGV4dHVyZXMsIGJ1
ZmZlcnMgYW5kIHJlbmRlcmJ1ZmZlcnMuKQotCi0jaWZuZGVmIExJQkdMRVNWMl9SRUZDT1VOVE9C
SkVDVF9IXwotI2RlZmluZSBMSUJHTEVTVjJfUkVGQ09VTlRPQkpFQ1RfSF8KLQotI2luY2x1ZGUg
PGNzdGRkZWY+Ci0KLSNkZWZpbmUgR0xfQVBJQ0FMTAotI2luY2x1ZGUgPEdMRVMyL2dsMi5oPgot
Ci0jaW5jbHVkZSAiY29tbW9uL2RlYnVnLmgiCi0KLW5hbWVzcGFjZSBnbAotewotCi1jbGFzcyBS
ZWZDb3VudE9iamVjdAotewotICBwdWJsaWM6Ci0gICAgZXhwbGljaXQgUmVmQ291bnRPYmplY3Qo
R0x1aW50IGlkKTsKLSAgICB2aXJ0dWFsIH5SZWZDb3VudE9iamVjdCgpOwotCi0gICAgdmlydHVh
bCB2b2lkIGFkZFJlZigpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlKCkgY29uc3Q7
Ci0KLSAgICBHTHVpbnQgaWQoKSBjb25zdCB7IHJldHVybiBtSWQ7IH0KLSAgICAKLSAgcHJpdmF0
ZToKLSAgICBHTHVpbnQgbUlkOwotCi0gICAgbXV0YWJsZSBzdGQ6OnNpemVfdCBtUmVmQ291bnQ7
Ci19OwotCi1jbGFzcyBSZWZDb3VudE9iamVjdEJpbmRpbmdQb2ludGVyCi17Ci0gIHByb3RlY3Rl
ZDoKLSAgICBSZWZDb3VudE9iamVjdEJpbmRpbmdQb2ludGVyKCkgOiBtT2JqZWN0KE5VTEwpIHsg
fQotICAgIH5SZWZDb3VudE9iamVjdEJpbmRpbmdQb2ludGVyKCkgeyBBU1NFUlQobU9iamVjdCA9
PSBOVUxMKTsgfSAvLyBPYmplY3RzIGhhdmUgdG8gYmUgcmVsZWFzZWQgYmVmb3JlIHRoZSByZXNv
dXJjZSBtYW5hZ2VyIGlzIGRlc3Ryb3llZCwgc28gdGhleSBtdXN0IGJlIGV4cGxpY2l0bHkgY2xl
YW5lZCB1cC4KLQotICAgIHZvaWQgc2V0KFJlZkNvdW50T2JqZWN0ICpuZXdPYmplY3QpOwotICAg
IFJlZkNvdW50T2JqZWN0ICpnZXQoKSBjb25zdCB7IHJldHVybiBtT2JqZWN0OyB9Ci0KLSAgcHVi
bGljOgotICAgIEdMdWludCBpZCgpIGNvbnN0IHsgcmV0dXJuIChtT2JqZWN0ICE9IE5VTEwpID8g
bU9iamVjdC0+aWQoKSA6IDA7IH0KLSAgICBib29sIG9wZXJhdG9yICEgKCkgY29uc3QgeyByZXR1
cm4gKGdldCgpID09IE5VTEwpOyB9Ci0KLSAgcHJpdmF0ZToKLSAgICBSZWZDb3VudE9iamVjdCAq
bU9iamVjdDsKLX07Ci0KLXRlbXBsYXRlIDxjbGFzcyBPYmplY3RUeXBlPgotY2xhc3MgQmluZGlu
Z1BvaW50ZXIgOiBwdWJsaWMgUmVmQ291bnRPYmplY3RCaW5kaW5nUG9pbnRlcgotewotICBwdWJs
aWM6Ci0gICAgdm9pZCBzZXQoT2JqZWN0VHlwZSAqbmV3T2JqZWN0KSB7IFJlZkNvdW50T2JqZWN0
QmluZGluZ1BvaW50ZXI6OnNldChuZXdPYmplY3QpOyB9Ci0gICAgT2JqZWN0VHlwZSAqZ2V0KCkg
Y29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8T2JqZWN0VHlwZSo+KFJlZkNvdW50T2JqZWN0Qmlu
ZGluZ1BvaW50ZXI6OmdldCgpKTsgfQotICAgIE9iamVjdFR5cGUgKm9wZXJhdG9yIC0+ICgpIGNv
bnN0IHsgcmV0dXJuIGdldCgpOyB9Ci19OwotCi19Ci0KLSNlbmRpZiAgIC8vIExJQkdMRVNWMl9S
RUZDT1VOVE9CSkVDVF9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9SZW5kZXJidWZmZXIuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3Jj
L2xpYkdMRVN2Mi9SZW5kZXJidWZmZXIuY3BwCmluZGV4IDY4NTFhMzc1YTRjYjJhOGU5YTMxYTEy
ZjNmMzNiOGE5OWMxZjg3ZTYuLjYwMDQyNTU2YmI4NDIwMjViYjBlZWJmYzcyMGY3NGY5YTA2MzEw
NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvUmVu
ZGVyYnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3Yy
L1JlbmRlcmJ1ZmZlci5jcHAKQEAgLTIyLDYgKzIyLDE3IEBAIFJlbmRlcmJ1ZmZlckludGVyZmFj
ZTo6UmVuZGVyYnVmZmVySW50ZXJmYWNlKCkKIHsKIH0KIAorLy8gVGhlIGRlZmF1bHQgY2FzZSBm
b3IgY2xhc3NlcyBpbmhlcml0ZWQgZnJvbSBSZW5kZXJidWZmZXJJbnRlcmZhY2UgaXMgbm90IHRv
CisvLyBuZWVkIHRvIGRvIGFueXRoaW5nIHVwb24gdGhlIHJlZmVyZW5jZSBjb3VudCB0byB0aGUg
cGFyZW50IFJlbmRlcmJ1ZmZlciBpbmNyZW1lbnRpbmcKKy8vIG9yIGRlY3JlbWVudGluZy4gCit2
b2lkIFJlbmRlcmJ1ZmZlckludGVyZmFjZTo6YWRkUHJveHlSZWYoY29uc3QgUmVuZGVyYnVmZmVy
ICpwcm94eSkKK3sKK30KKwordm9pZCBSZW5kZXJidWZmZXJJbnRlcmZhY2U6OnJlbGVhc2VQcm94
eShjb25zdCBSZW5kZXJidWZmZXIgKnByb3h5KQoreworfQorCiBHTHVpbnQgUmVuZGVyYnVmZmVy
SW50ZXJmYWNlOjpnZXRSZWRTaXplKCkgY29uc3QKIHsKICAgICByZXR1cm4gZHgyZXM6OkdldFJl
ZFNpemUoZ2V0RDNERm9ybWF0KCkpOwpAQCAtNTIsMTIgKzYzLDI2IEBAIEdMdWludCBSZW5kZXJi
dWZmZXJJbnRlcmZhY2U6OmdldFN0ZW5jaWxTaXplKCkgY29uc3QKICAgICByZXR1cm4gZHgyZXM6
OkdldFN0ZW5jaWxTaXplKGdldEQzREZvcm1hdCgpKTsKIH0KIAotUmVuZGVyYnVmZmVyVGV4dHVy
ZTo6UmVuZGVyYnVmZmVyVGV4dHVyZShUZXh0dXJlICp0ZXh0dXJlLCBHTGVudW0gdGFyZ2V0KSA6
IG1UZXh0dXJlKHRleHR1cmUpLCBtVGFyZ2V0KHRhcmdldCkKK1JlbmRlcmJ1ZmZlclRleHR1cmU6
OlJlbmRlcmJ1ZmZlclRleHR1cmUoVGV4dHVyZSAqdGV4dHVyZSwgR0xlbnVtIHRhcmdldCkgOiBt
VGFyZ2V0KHRhcmdldCkKIHsKKyAgICBtVGV4dHVyZS5zZXQodGV4dHVyZSk7CiB9CiAKIFJlbmRl
cmJ1ZmZlclRleHR1cmU6On5SZW5kZXJidWZmZXJUZXh0dXJlKCkKIHsKKyAgICBtVGV4dHVyZS5z
ZXQoTlVMTCk7Cit9CisKKy8vIFRleHR1cmVzIG5lZWQgdG8gbWFpbnRhaW4gdGhlaXIgb3duIHJl
ZmVyZW5jZSBjb3VudCBmb3IgcmVmZXJlbmNlcyB2aWEKKy8vIFJlbmRlcmJ1ZmZlcnMgYWN0aW5n
IGFzIHByb3hpZXMuIEhlcmUsIHdlIG5vdGlmeSB0aGUgdGV4dHVyZSBvZiBhIHJlZmVyZW5jZS4K
K3ZvaWQgUmVuZGVyYnVmZmVyVGV4dHVyZTo6YWRkUHJveHlSZWYoY29uc3QgUmVuZGVyYnVmZmVy
ICpwcm94eSkKK3sKKyAgICBtVGV4dHVyZS0+YWRkUHJveHlSZWYocHJveHkpOworfQorCit2b2lk
IFJlbmRlcmJ1ZmZlclRleHR1cmU6OnJlbGVhc2VQcm94eShjb25zdCBSZW5kZXJidWZmZXIgKnBy
b3h5KQoreworICAgIG1UZXh0dXJlLT5yZWxlYXNlUHJveHkocHJveHkpOwogfQogCiBJRGlyZWN0
M0RTdXJmYWNlOSAqUmVuZGVyYnVmZmVyVGV4dHVyZTo6Z2V0UmVuZGVyVGFyZ2V0KCkKQEAgLTEx
MSw2ICsxMzYsMjIgQEAgUmVuZGVyYnVmZmVyOjp+UmVuZGVyYnVmZmVyKCkKICAgICBkZWxldGUg
bUluc3RhbmNlOwogfQogCisvLyBUaGUgUmVuZGVyYnVmZmVySW50ZXJmYWNlIGNvbnRhaW5lZCBp
biB0aGlzIFJlbmRlcmJ1ZmZlciBtYXkgbmVlZCB0byBtYWludGFpbgorLy8gaXRzIG93biByZWZl
cmVuY2UgY291bnQsIHNvIHdlIHBhc3MgaXQgb24gaGVyZS4KK3ZvaWQgUmVuZGVyYnVmZmVyOjph
ZGRSZWYoKSBjb25zdAoreworICAgIG1JbnN0YW5jZS0+YWRkUHJveHlSZWYodGhpcyk7CisKKyAg
ICBSZWZDb3VudE9iamVjdDo6YWRkUmVmKCk7Cit9CisKK3ZvaWQgUmVuZGVyYnVmZmVyOjpyZWxl
YXNlKCkgY29uc3QKK3sKKyAgICBtSW5zdGFuY2UtPnJlbGVhc2VQcm94eSh0aGlzKTsKKworICAg
IFJlZkNvdW50T2JqZWN0OjpyZWxlYXNlKCk7Cit9CisKIElEaXJlY3QzRFN1cmZhY2U5ICpSZW5k
ZXJidWZmZXI6OmdldFJlbmRlclRhcmdldCgpCiB7CiAgICAgcmV0dXJuIG1JbnN0YW5jZS0+Z2V0
UmVuZGVyVGFyZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMv
bGliR0xFU3YyL1JlbmRlcmJ1ZmZlci5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xp
YkdMRVN2Mi9SZW5kZXJidWZmZXIuaAppbmRleCBlODU0Nzc1ZDkyOTUxNTI4OWU1YjY4ZGIzMjEy
ZGRjYzkwOGNmZTViLi42MGVjMDU4OGNjZDRjYjA3YmE2ZmE0NzM2ZTcyYWYwODIyNzExNGVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1JlbmRlcmJ1
ZmZlci5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvUmVuZGVy
YnVmZmVyLmgKQEAgLTE3LDExICsxNywxMiBAQAogI2luY2x1ZGUgPGQzZDkuaD4KIAogI2luY2x1
ZGUgImNvbW1vbi9hbmdsZXV0aWxzLmgiCi0jaW5jbHVkZSAibGliR0xFU3YyL1JlZkNvdW50T2Jq
ZWN0LmgiCisjaW5jbHVkZSAiY29tbW9uL1JlZkNvdW50T2JqZWN0LmgiCiAKIG5hbWVzcGFjZSBn
bAogewogY2xhc3MgVGV4dHVyZTsKK2NsYXNzIFJlbmRlcmJ1ZmZlcjsKIGNsYXNzIENvbG9yYnVm
ZmVyOwogY2xhc3MgRGVwdGhTdGVuY2lsYnVmZmVyOwogCkBAIC0zMiw2ICszMyw5IEBAIGNsYXNz
IFJlbmRlcmJ1ZmZlckludGVyZmFjZQogCiAgICAgdmlydHVhbCB+UmVuZGVyYnVmZmVySW50ZXJm
YWNlKCkge307CiAKKyAgICB2aXJ0dWFsIHZvaWQgYWRkUHJveHlSZWYoY29uc3QgUmVuZGVyYnVm
ZmVyICpwcm94eSk7CisgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VQcm94eShjb25zdCBSZW5kZXJi
dWZmZXIgKnByb3h5KTsKKwogICAgIHZpcnR1YWwgSURpcmVjdDNEU3VyZmFjZTkgKmdldFJlbmRl
clRhcmdldCgpID0gMDsKICAgICB2aXJ0dWFsIElEaXJlY3QzRFN1cmZhY2U5ICpnZXREZXB0aFN0
ZW5jaWwoKSA9IDA7CiAKQEAgLTYxLDYgKzY1LDkgQEAgY2xhc3MgUmVuZGVyYnVmZmVyVGV4dHVy
ZSA6IHB1YmxpYyBSZW5kZXJidWZmZXJJbnRlcmZhY2UKIAogICAgIHZpcnR1YWwgflJlbmRlcmJ1
ZmZlclRleHR1cmUoKTsKIAorICAgIHZvaWQgYWRkUHJveHlSZWYoY29uc3QgUmVuZGVyYnVmZmVy
ICpwcm94eSk7CisgICAgdm9pZCByZWxlYXNlUHJveHkoY29uc3QgUmVuZGVyYnVmZmVyICpwcm94
eSk7CisKICAgICBJRGlyZWN0M0RTdXJmYWNlOSAqZ2V0UmVuZGVyVGFyZ2V0KCk7CiAgICAgSURp
cmVjdDNEU3VyZmFjZTkgKmdldERlcHRoU3RlbmNpbCgpOwogCkBAIC03NSw3ICs4Miw3IEBAIGNs
YXNzIFJlbmRlcmJ1ZmZlclRleHR1cmUgOiBwdWJsaWMgUmVuZGVyYnVmZmVySW50ZXJmYWNlCiAg
IHByaXZhdGU6CiAgICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFJlbmRlcmJ1ZmZlclRleHR1
cmUpOwogCi0gICAgVGV4dHVyZSAqbVRleHR1cmU7CisgICAgQmluZGluZ1BvaW50ZXIgPFRleHR1
cmU+IG1UZXh0dXJlOwogICAgIEdMZW51bSBtVGFyZ2V0OwogfTsKIApAQCAtMTI4LDYgKzEzNSwx
MyBAQCBjbGFzcyBSZW5kZXJidWZmZXIgOiBwdWJsaWMgUmVmQ291bnRPYmplY3QKIAogICAgIHZp
cnR1YWwgflJlbmRlcmJ1ZmZlcigpOwogCisgICAgLy8gVGhlc2UgZnVuY3Rpb25zIGZyb20gUmVm
Q291bnRPYmplY3QgYXJlIG92ZXJsb2FkZWQgaGVyZSBiZWNhdXNlCisgICAgLy8gVGV4dHVyZXMg
bmVlZCB0byBtYWludGFpbiB0aGVpciBvd24gY291bnQgb2YgcmVmZXJlbmNlcyB0byB0aGVtIHZp
YQorICAgIC8vIFJlbmRlcmJ1ZmZlcnMvUmVuZGVyYnVmZmVyVGV4dHVyZXMuIFRoZXNlIGZ1bmN0
aW9ucyBpbnZva2UgdGhvc2UKKyAgICAvLyByZWZlcmVuY2UgY291bnRpbmcgZnVuY3Rpb25zIG9u
IHRoZSBSZW5kZXJidWZmZXJJbnRlcmZhY2UuCisgICAgdm9pZCBhZGRSZWYoKSBjb25zdDsKKyAg
ICB2b2lkIHJlbGVhc2UoKSBjb25zdDsKKwogICAgIElEaXJlY3QzRFN1cmZhY2U5ICpnZXRSZW5k
ZXJUYXJnZXQoKTsKICAgICBJRGlyZWN0M0RTdXJmYWNlOSAqZ2V0RGVwdGhTdGVuY2lsKCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvU2hhZGVy
LmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvU2hhZGVyLmNwcApp
bmRleCA1OGVlZDA3ODQwNjU0M2NlYjEyMWRjNzI4MjEzMjUzYmU1YWUwYjNjLi5hYzU4YWJlNTli
M2Q2OWZjYjRhNjVjNmYxNDgwMjU2YThkOWI1MTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1NoYWRlci5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9TaGFkZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLy8KLS8v
IENvcHlyaWdodCAoYykgMjAwMi0yMDEwIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNl
IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8g
Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KIC8vCkBAIC0yNywzMSArMjcsOCBAQCBTaGFkZXI6
OlNoYWRlcihSZXNvdXJjZU1hbmFnZXIgKm1hbmFnZXIsIEdMdWludCBoYW5kbGUpIDogbUhhbmRs
ZShoYW5kbGUpLCBtUmVzbwogICAgIG1IbHNsID0gTlVMTDsKICAgICBtSW5mb0xvZyA9IE5VTEw7
CiAKLSAgICAvLyBQZXJmb3JtIGEgb25lLXRpbWUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIHNoYWRl
ciBjb21waWxlciAob3IgYWZ0ZXIgYmVpbmcgZGVzdHJ1Y3RlZCBieSByZWxlYXNlQ29tcGlsZXIp
Ci0gICAgaWYgKCFtRnJhZ21lbnRDb21waWxlcikKLSAgICB7Ci0gICAgICAgIGludCByZXN1bHQg
PSBTaEluaXRpYWxpemUoKTsKLQotICAgICAgICBpZiAocmVzdWx0KQotICAgICAgICB7Ci0gICAg
ICAgICAgICBTaEJ1aWx0SW5SZXNvdXJjZXMgcmVzb3VyY2VzOwotICAgICAgICAgICAgU2hJbml0
QnVpbHRJblJlc291cmNlcygmcmVzb3VyY2VzKTsKLSAgICAgICAgICAgIENvbnRleHQgKmNvbnRl
eHQgPSBnZXRDb250ZXh0KCk7Ci0KLSAgICAgICAgICAgIHJlc291cmNlcy5NYXhWZXJ0ZXhBdHRy
aWJzID0gTUFYX1ZFUlRFWF9BVFRSSUJTOwotICAgICAgICAgICAgcmVzb3VyY2VzLk1heFZlcnRl
eFVuaWZvcm1WZWN0b3JzID0gTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlM7Ci0gICAgICAgICAg
ICByZXNvdXJjZXMuTWF4VmFyeWluZ1ZlY3RvcnMgPSBjb250ZXh0LT5nZXRNYXhpbXVtVmFyeWlu
Z1ZlY3RvcnMoKTsKLSAgICAgICAgICAgIHJlc291cmNlcy5NYXhWZXJ0ZXhUZXh0dXJlSW1hZ2VV
bml0cyA9IGNvbnRleHQtPmdldE1heGltdW1WZXJ0ZXhUZXh0dXJlSW1hZ2VVbml0cygpOwotICAg
ICAgICAgICAgcmVzb3VyY2VzLk1heENvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMgPSBjb250ZXh0
LT5nZXRNYXhpbXVtQ29tYmluZWRUZXh0dXJlSW1hZ2VVbml0cygpOwotICAgICAgICAgICAgcmVz
b3VyY2VzLk1heFRleHR1cmVJbWFnZVVuaXRzID0gTUFYX1RFWFRVUkVfSU1BR0VfVU5JVFM7Ci0g
ICAgICAgICAgICByZXNvdXJjZXMuTWF4RnJhZ21lbnRVbmlmb3JtVmVjdG9ycyA9IGNvbnRleHQt
PmdldE1heGltdW1GcmFnbWVudFVuaWZvcm1WZWN0b3JzKCk7Ci0gICAgICAgICAgICByZXNvdXJj
ZXMuTWF4RHJhd0J1ZmZlcnMgPSBNQVhfRFJBV19CVUZGRVJTOwotICAgICAgICAgICAgcmVzb3Vy
Y2VzLk9FU19zdGFuZGFyZF9kZXJpdmF0aXZlcyA9IDE7Ci0KLSAgICAgICAgICAgIG1GcmFnbWVu
dENvbXBpbGVyID0gU2hDb25zdHJ1Y3RDb21waWxlcihTSF9GUkFHTUVOVF9TSEFERVIsIFNIX0dM
RVMyX1NQRUMsIFNIX0hMU0xfT1VUUFVULCAmcmVzb3VyY2VzKTsKLSAgICAgICAgICAgIG1WZXJ0
ZXhDb21waWxlciA9IFNoQ29uc3RydWN0Q29tcGlsZXIoU0hfVkVSVEVYX1NIQURFUiwgU0hfR0xF
UzJfU1BFQywgU0hfSExTTF9PVVRQVVQsICZyZXNvdXJjZXMpOwotICAgICAgICB9Ci0gICAgfQor
ICAgIHVuY29tcGlsZSgpOworICAgIGluaXRpYWxpemVDb21waWxlcigpOwogCiAgICAgbVJlZkNv
dW50ID0gMDsKICAgICBtRGVsZXRlU3RhdHVzID0gZmFsc2U7CkBAIC0xMjcsMTEgKzEwNCw4IEBA
IHZvaWQgU2hhZGVyOjpnZXRJbmZvTG9nKEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3Ro
LCBjaGFyICppbmZvTG9nKQogCiAgICAgaWYgKG1JbmZvTG9nKQogICAgIHsKLSAgICAgICAgd2hp
bGUgKGluZGV4IDwgYnVmU2l6ZSAtIDEgJiYgaW5kZXggPCAoaW50KXN0cmxlbihtSW5mb0xvZykp
Ci0gICAgICAgIHsKLSAgICAgICAgICAgIGluZm9Mb2dbaW5kZXhdID0gbUluZm9Mb2dbaW5kZXhd
OwotICAgICAgICAgICAgaW5kZXgrKzsKLSAgICAgICAgfQorICAgICAgICBpbmRleCA9IHN0ZDo6
bWluKGJ1ZlNpemUgLSAxLCAoaW50KXN0cmxlbihtSW5mb0xvZykpOworICAgICAgICBtZW1jcHko
aW5mb0xvZywgbUluZm9Mb2csIGluZGV4KTsKICAgICB9CiAKICAgICBpZiAoYnVmU2l6ZSkKQEAg
LTE3NSwxMSArMTQ5LDggQEAgdm9pZCBTaGFkZXI6OmdldFNvdXJjZUltcGwoY2hhciAqc291cmNl
LCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgY2hhcgogCiAgICAgaWYgKHNvdXJj
ZSkKICAgICB7Ci0gICAgICAgIHdoaWxlIChpbmRleCA8IGJ1ZlNpemUgLSAxICYmIGluZGV4IDwg
KGludClzdHJsZW4oc291cmNlKSkKLSAgICAgICAgewotICAgICAgICAgICAgYnVmZmVyW2luZGV4
XSA9IHNvdXJjZVtpbmRleF07Ci0gICAgICAgICAgICBpbmRleCsrOwotICAgICAgICB9CisgICAg
ICAgIGluZGV4ID0gc3RkOjptaW4oYnVmU2l6ZSAtIDEsIChpbnQpc3RybGVuKHNvdXJjZSkpOwor
ICAgICAgICBtZW1jcHkoYnVmZmVyLCBzb3VyY2UsIGluZGV4KTsKICAgICB9CiAKICAgICBpZiAo
YnVmU2l6ZSkKQEAgLTI0Myw2ICsyMTQsMzYgQEAgdm9pZCBTaGFkZXI6OmZsYWdGb3JEZWxldGlv
bigpCiAgICAgbURlbGV0ZVN0YXR1cyA9IHRydWU7CiB9CiAKKy8vIFBlcmZvcm0gYSBvbmUtdGlt
ZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgc2hhZGVyIGNvbXBpbGVyIChvciBhZnRlciBiZWluZyBk
ZXN0cnVjdGVkIGJ5IHJlbGVhc2VDb21waWxlcikKK3ZvaWQgU2hhZGVyOjppbml0aWFsaXplQ29t
cGlsZXIoKQoreworICAgIGlmICghbUZyYWdtZW50Q29tcGlsZXIpCisgICAgeworICAgICAgICBp
bnQgcmVzdWx0ID0gU2hJbml0aWFsaXplKCk7CisKKyAgICAgICAgaWYgKHJlc3VsdCkKKyAgICAg
ICAgeworICAgICAgICAgICAgU2hCdWlsdEluUmVzb3VyY2VzIHJlc291cmNlczsKKyAgICAgICAg
ICAgIFNoSW5pdEJ1aWx0SW5SZXNvdXJjZXMoJnJlc291cmNlcyk7CisgICAgICAgICAgICBDb250
ZXh0ICpjb250ZXh0ID0gZ2V0Q29udGV4dCgpOworCisgICAgICAgICAgICByZXNvdXJjZXMuTWF4
VmVydGV4QXR0cmlicyA9IE1BWF9WRVJURVhfQVRUUklCUzsKKyAgICAgICAgICAgIHJlc291cmNl
cy5NYXhWZXJ0ZXhVbmlmb3JtVmVjdG9ycyA9IE1BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTOwor
ICAgICAgICAgICAgcmVzb3VyY2VzLk1heFZhcnlpbmdWZWN0b3JzID0gY29udGV4dC0+Z2V0TWF4
aW11bVZhcnlpbmdWZWN0b3JzKCk7CisgICAgICAgICAgICByZXNvdXJjZXMuTWF4VmVydGV4VGV4
dHVyZUltYWdlVW5pdHMgPSBjb250ZXh0LT5nZXRNYXhpbXVtVmVydGV4VGV4dHVyZUltYWdlVW5p
dHMoKTsKKyAgICAgICAgICAgIHJlc291cmNlcy5NYXhDb21iaW5lZFRleHR1cmVJbWFnZVVuaXRz
ID0gY29udGV4dC0+Z2V0TWF4aW11bUNvbWJpbmVkVGV4dHVyZUltYWdlVW5pdHMoKTsKKyAgICAg
ICAgICAgIHJlc291cmNlcy5NYXhUZXh0dXJlSW1hZ2VVbml0cyA9IE1BWF9URVhUVVJFX0lNQUdF
X1VOSVRTOworICAgICAgICAgICAgcmVzb3VyY2VzLk1heEZyYWdtZW50VW5pZm9ybVZlY3RvcnMg
PSBjb250ZXh0LT5nZXRNYXhpbXVtRnJhZ21lbnRVbmlmb3JtVmVjdG9ycygpOworICAgICAgICAg
ICAgcmVzb3VyY2VzLk1heERyYXdCdWZmZXJzID0gTUFYX0RSQVdfQlVGRkVSUzsKKyAgICAgICAg
ICAgIHJlc291cmNlcy5PRVNfc3RhbmRhcmRfZGVyaXZhdGl2ZXMgPSAxOworICAgICAgICAgICAg
Ly8gcmVzb3VyY2VzLk9FU19FR0xfaW1hZ2VfZXh0ZXJuYWwgPSBnZXREaXNwbGF5KCktPmlzRDNk
OUV4RGV2aWNlKCkgPyAxIDogMDsgLy8gVE9ETzogY29tbWVudGVkIG91dCB1bnRpbCB0aGUgZXh0
ZW5zaW9uIGlzIGFjdHVhbGx5IHN1cHBvcnRlZC4KKworICAgICAgICAgICAgbUZyYWdtZW50Q29t
cGlsZXIgPSBTaENvbnN0cnVjdENvbXBpbGVyKFNIX0ZSQUdNRU5UX1NIQURFUiwgU0hfR0xFUzJf
U1BFQywgU0hfSExTTF9PVVRQVVQsICZyZXNvdXJjZXMpOworICAgICAgICAgICAgbVZlcnRleENv
bXBpbGVyID0gU2hDb25zdHJ1Y3RDb21waWxlcihTSF9WRVJURVhfU0hBREVSLCBTSF9HTEVTMl9T
UEVDLCBTSF9ITFNMX09VVFBVVCwgJnJlc291cmNlcyk7CisgICAgICAgIH0KKyAgICB9Cit9CisK
IHZvaWQgU2hhZGVyOjpyZWxlYXNlQ29tcGlsZXIoKQogewogICAgIFNoRGVzdHJ1Y3QobUZyYWdt
ZW50Q29tcGlsZXIpOwpAQCAtMjgxLDcgKzI4Miw3IEBAIHZvaWQgU2hhZGVyOjpwYXJzZVZhcnlp
bmdzKCkKICAgICAgICAgICAgICAgICAqYXJyYXkgPSAnXDAnOwogICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICB2YXJ5aW5ncy5wdXNoX2JhY2soVmFyeWluZyhwYXJzZVR5cGUodmFyeWluZ1R5
cGUpLCB2YXJ5aW5nTmFtZSwgc2l6ZSwgYXJyYXkgIT0gTlVMTCkpOworICAgICAgICAgICAgbVZh
cnlpbmdzLnB1c2hfYmFjayhWYXJ5aW5nKHBhcnNlVHlwZSh2YXJ5aW5nVHlwZSksIHZhcnlpbmdO
YW1lLCBzaXplLCBhcnJheSAhPSBOVUxMKSk7CiAKICAgICAgICAgICAgIGlucHV0ID0gc3Ryc3Ry
KGlucHV0LCAiOyIpICsgMjsKICAgICAgICAgfQpAQCAtMjkzLDM2ICsyOTQsNTYgQEAgdm9pZCBT
aGFkZXI6OnBhcnNlVmFyeWluZ3MoKQogICAgIH0KIH0KIAorLy8gaW5pdGlhbGl6ZS9jbGVhbiB1
cCBwcmV2aW91cyBzdGF0ZQordm9pZCBTaGFkZXI6OnVuY29tcGlsZSgpCit7CisgICAgLy8gc2V0
IGJ5IGNvbXBpbGVUb0hMU0wKKyAgICBkZWxldGVbXSBtSGxzbDsKKyAgICBtSGxzbCA9IE5VTEw7
CisgICAgZGVsZXRlW10gbUluZm9Mb2c7CisgICAgbUluZm9Mb2cgPSBOVUxMOworCisgICAgLy8g
c2V0IGJ5IHBhcnNlVmFyeWluZ3MKKyAgICBtVmFyeWluZ3MuY2xlYXIoKTsKKworICAgIG1Vc2Vz
RnJhZ0Nvb3JkID0gZmFsc2U7CisgICAgbVVzZXNGcm9udEZhY2luZyA9IGZhbHNlOworICAgIG1V
c2VzUG9pbnRTaXplID0gZmFsc2U7CisgICAgbVVzZXNQb2ludENvb3JkID0gZmFsc2U7Cit9CisK
IHZvaWQgU2hhZGVyOjpjb21waWxlVG9ITFNMKHZvaWQgKmNvbXBpbGVyKQogewotICAgIGlmIChp
c0NvbXBpbGVkKCkgfHwgIW1Tb3VyY2UpCisgICAgLy8gZW5zdXJlIHdlIGRvbid0IHBhc3MgYSBO
VUxMIHNvdXJjZSB0byB0aGUgY29tcGlsZXIKKyAgICBjaGFyICpzb3VyY2UgPSAiXDAiOworICAg
IGlmIChtU291cmNlKQogICAgIHsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBzb3VyY2UgPSBt
U291cmNlOwogICAgIH0KIAotICAgIGRlbGV0ZVtdIG1JbmZvTG9nOwotICAgIG1JbmZvTG9nID0g
TlVMTDsKKyAgICAvLyBlbnN1cmUgdGhlIGNvbXBpbGVyIGlzIGxvYWRlZAorICAgIGluaXRpYWxp
emVDb21waWxlcigpOwogCiAgICAgaW50IGNvbXBpbGVPcHRpb25zID0gU0hfT0JKRUNUX0NPREU7
CiAgICAgc3RkOjpzdHJpbmcgc291cmNlUGF0aDsKICAgICBpZiAocGVyZkFjdGl2ZSgpKQogICAg
IHsKICAgICAgICAgc291cmNlUGF0aCA9IGdldFRlbXBQYXRoKCk7Ci0gICAgICAgIHdyaXRlRmls
ZShzb3VyY2VQYXRoLmNfc3RyKCksIG1Tb3VyY2UsIHN0cmxlbihtU291cmNlKSk7CisgICAgICAg
IHdyaXRlRmlsZShzb3VyY2VQYXRoLmNfc3RyKCksIHNvdXJjZSwgc3RybGVuKHNvdXJjZSkpOwog
ICAgICAgICBjb21waWxlT3B0aW9ucyB8PSBTSF9MSU5FX0RJUkVDVElWRVM7CiAgICAgfQogCiAg
ICAgaW50IHJlc3VsdDsKICAgICBpZiAoc291cmNlUGF0aC5lbXB0eSgpKQogICAgIHsKLSAgICAg
ICAgcmVzdWx0ID0gU2hDb21waWxlKGNvbXBpbGVyLCAmbVNvdXJjZSwgMSwgY29tcGlsZU9wdGlv
bnMpOworICAgICAgICByZXN1bHQgPSBTaENvbXBpbGUoY29tcGlsZXIsICZzb3VyY2UsIDEsIGNv
bXBpbGVPcHRpb25zKTsKICAgICB9CiAgICAgZWxzZQogICAgIHsKICAgICAgICAgY29uc3QgY2hh
ciogc291cmNlU3RyaW5nc1syXSA9CiAgICAgICAgIHsKICAgICAgICAgICAgIHNvdXJjZVBhdGgu
Y19zdHIoKSwKLSAgICAgICAgICAgIG1Tb3VyY2UKKyAgICAgICAgICAgIHNvdXJjZQogICAgICAg
ICB9OwogCiAgICAgICAgIHJlc3VsdCA9IFNoQ29tcGlsZShjb21waWxlciwgc291cmNlU3RyaW5n
cywgMiwgY29tcGlsZU9wdGlvbnMgfCBTSF9TT1VSQ0VfUEFUSCk7CkBAIC00NzcsOCArNDk4LDE4
IEBAIEdMZW51bSBWZXJ0ZXhTaGFkZXI6OmdldFR5cGUoKQogICAgIHJldHVybiBHTF9WRVJURVhf
U0hBREVSOwogfQogCit2b2lkIFZlcnRleFNoYWRlcjo6dW5jb21waWxlKCkKK3sKKyAgICBTaGFk
ZXI6OnVuY29tcGlsZSgpOworCisgICAgLy8gc2V0IGJ5IFBhcnNlQXR0cmlidXRlcworICAgIG1B
dHRyaWJ1dGVzLmNsZWFyKCk7Cit9OworCiB2b2lkIFZlcnRleFNoYWRlcjo6Y29tcGlsZSgpCiB7
CisgICAgdW5jb21waWxlKCk7CisKICAgICBjb21waWxlVG9ITFNMKG1WZXJ0ZXhDb21waWxlcik7
CiAgICAgcGFyc2VBdHRyaWJ1dGVzKCk7CiAgICAgcGFyc2VWYXJ5aW5ncygpOwpAQCAtNTA1LDkg
KzUzNiwxMCBAQCBpbnQgVmVydGV4U2hhZGVyOjpnZXRTZW1hbnRpY0luZGV4KGNvbnN0IHN0ZDo6
c3RyaW5nICZhdHRyaWJ1dGVOYW1lKQogCiB2b2lkIFZlcnRleFNoYWRlcjo6cGFyc2VBdHRyaWJ1
dGVzKCkKIHsKLSAgICBpZiAobUhsc2wpCisgICAgY29uc3QgY2hhciAqaGxzbCA9IGdldEhMU0wo
KTsKKyAgICBpZiAoaGxzbCkKICAgICB7Ci0gICAgICAgIGNvbnN0IGNoYXIgKmlucHV0ID0gc3Ry
c3RyKG1IbHNsLCAiLy8gQXR0cmlidXRlcyIpICsgMTQ7CisgICAgICAgIGNvbnN0IGNoYXIgKmlu
cHV0ID0gc3Ryc3RyKGhsc2wsICIvLyBBdHRyaWJ1dGVzIikgKyAxNDsKIAogICAgICAgICB3aGls
ZSh0cnVlKQogICAgICAgICB7CkBAIC01NDMsOCArNTc1LDEwIEBAIEdMZW51bSBGcmFnbWVudFNo
YWRlcjo6Z2V0VHlwZSgpCiAKIHZvaWQgRnJhZ21lbnRTaGFkZXI6OmNvbXBpbGUoKQogeworICAg
IHVuY29tcGlsZSgpOworCiAgICAgY29tcGlsZVRvSExTTChtRnJhZ21lbnRDb21waWxlcik7CiAg
ICAgcGFyc2VWYXJ5aW5ncygpOwotICAgIHZhcnlpbmdzLnNvcnQoY29tcGFyZVZhcnlpbmcpOwor
ICAgIG1WYXJ5aW5ncy5zb3J0KGNvbXBhcmVWYXJ5aW5nKTsKIH0KIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvU2hhZGVyLmggYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1NoYWRlci5oCmluZGV4IDIyZmM2Mzc2YzhlNGU5
Y2U2OWJhZDNlYWFlZGJhMDAyMmJmZjEwOTguLjljN2MwZGY2NzUxOGYwZjU1NWI5Y2Q0ODA4NTll
NjNlNGJiMzU4OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJH
TEVTdjIvU2hhZGVyLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9TaGFkZXIuaApAQCAtMSw1ICsxLDUgQEAKIC8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAx
MCBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29w
eXJpZ2h0IChjKSAyMDAyLTIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KIC8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg
QlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZp
bGUuCiAvLwpAQCAtNjIsNiArNjIsNyBAQCBjbGFzcyBTaGFkZXIKICAgICB2b2lkIGdldFRyYW5z
bGF0ZWRTb3VyY2UoR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIGNoYXIgKmJ1ZmZl
cik7CiAKICAgICB2aXJ0dWFsIHZvaWQgY29tcGlsZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
dW5jb21waWxlKCk7CiAgICAgYm9vbCBpc0NvbXBpbGVkKCk7CiAgICAgY29uc3QgY2hhciAqZ2V0
SExTTCgpOwogCkBAIC03NCw4ICs3NSw2IEBAIGNsYXNzIFNoYWRlcgogICAgIHN0YXRpYyB2b2lk
IHJlbGVhc2VDb21waWxlcigpOwogCiAgIHByb3RlY3RlZDoKLSAgICBESVNBTExPV19DT1BZX0FO
RF9BU1NJR04oU2hhZGVyKTsKLQogICAgIHZvaWQgcGFyc2VWYXJ5aW5ncygpOwogCiAgICAgdm9p
ZCBjb21waWxlVG9ITFNMKHZvaWQgKmNvbXBpbGVyKTsKQEAgLTg1LDYgKzg0LDIxIEBAIGNsYXNz
IFNoYWRlcgogICAgIHN0YXRpYyBHTGVudW0gcGFyc2VUeXBlKGNvbnN0IHN0ZDo6c3RyaW5nICZ0
eXBlKTsKICAgICBzdGF0aWMgYm9vbCBjb21wYXJlVmFyeWluZyhjb25zdCBWYXJ5aW5nICZ4LCBj
b25zdCBWYXJ5aW5nICZ5KTsKIAorICAgIFZhcnlpbmdMaXN0IG1WYXJ5aW5nczsKKworICAgIGJv
b2wgbVVzZXNGcmFnQ29vcmQ7CisgICAgYm9vbCBtVXNlc0Zyb250RmFjaW5nOworICAgIGJvb2wg
bVVzZXNQb2ludFNpemU7CisgICAgYm9vbCBtVXNlc1BvaW50Q29vcmQ7CisKKyAgICBzdGF0aWMg
dm9pZCAqbUZyYWdtZW50Q29tcGlsZXI7CisgICAgc3RhdGljIHZvaWQgKm1WZXJ0ZXhDb21waWxl
cjsKKworICBwcml2YXRlOgorICAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihTaGFkZXIpOwor
CisgICAgdm9pZCBpbml0aWFsaXplQ29tcGlsZXIoKTsKKwogICAgIGNvbnN0IEdMdWludCBtSGFu
ZGxlOwogICAgIHVuc2lnbmVkIGludCBtUmVmQ291bnQ7ICAgICAvLyBOdW1iZXIgb2YgcHJvZ3Jh
bSBvYmplY3RzIHRoaXMgc2hhZGVyIGlzIGF0dGFjaGVkIHRvCiAgICAgYm9vbCBtRGVsZXRlU3Rh
dHVzOyAgICAgICAgIC8vIEZsYWcgdG8gaW5kaWNhdGUgdGhhdCB0aGUgc2hhZGVyIGNhbiBiZSBk
ZWxldGVkIHdoZW4gbm8gbG9uZ2VyIGluIHVzZQpAQCAtOTMsMTcgKzEwNyw3IEBAIGNsYXNzIFNo
YWRlcgogICAgIGNoYXIgKm1IbHNsOwogICAgIGNoYXIgKm1JbmZvTG9nOwogCi0gICAgVmFyeWlu
Z0xpc3QgdmFyeWluZ3M7Ci0KLSAgICBib29sIG1Vc2VzRnJhZ0Nvb3JkOwotICAgIGJvb2wgbVVz
ZXNGcm9udEZhY2luZzsKLSAgICBib29sIG1Vc2VzUG9pbnRTaXplOwotICAgIGJvb2wgbVVzZXNQ
b2ludENvb3JkOwotCiAgICAgUmVzb3VyY2VNYW5hZ2VyICptUmVzb3VyY2VNYW5hZ2VyOwotCi0g
ICAgc3RhdGljIHZvaWQgKm1GcmFnbWVudENvbXBpbGVyOwotICAgIHN0YXRpYyB2b2lkICptVmVy
dGV4Q29tcGlsZXI7CiB9OwogCiBzdHJ1Y3QgQXR0cmlidXRlCkBAIC0xMzMsNiArMTM3LDcgQEAg
Y2xhc3MgVmVydGV4U2hhZGVyIDogcHVibGljIFNoYWRlcgogCiAgICAgdmlydHVhbCBHTGVudW0g
Z2V0VHlwZSgpOwogICAgIHZpcnR1YWwgdm9pZCBjb21waWxlKCk7CisgICAgdmlydHVhbCB2b2lk
IHVuY29tcGlsZSgpOwogICAgIGludCBnZXRTZW1hbnRpY0luZGV4KGNvbnN0IHN0ZDo6c3RyaW5n
ICZhdHRyaWJ1dGVOYW1lKTsKIAogICBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9UZXh0dXJlLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJHTEVTdjIvVGV4dHVyZS5jcHAKaW5kZXggYjgzNjUxZTNmNjVlMzhhMGQ5
ZjQ0MjExMjE1NmVhNjlkM2Q0YTE2MC4uMjkxNzdkMjAzODZiNmQ5NmU2YzUzMzA5NTgzNDg2YjFi
MTcyNGQzYyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2
Mi9UZXh0dXJlLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3Yy
L1RleHR1cmUuY3BwCkBAIC0xNzIyLDExICsxNzIyLDEzIEBAIFRleHR1cmUyRDo6VGV4dHVyZTJE
KEdMdWludCBpZCkgOiBUZXh0dXJlKGlkKQogewogICAgIG1UZXhTdG9yYWdlID0gTlVMTDsKICAg
ICBtU3VyZmFjZSA9IE5VTEw7CisgICAgbUNvbG9yYnVmZmVyUHJveHkgPSBOVUxMOworICAgIG1Q
cm94eVJlZnMgPSAwOwogfQogCiBUZXh0dXJlMkQ6On5UZXh0dXJlMkQoKQogewotICAgIG1Db2xv
cmJ1ZmZlclByb3h5LnNldChOVUxMKTsKKyAgICBtQ29sb3JidWZmZXJQcm94eSA9IE5VTEw7CiAK
ICAgICBkZWxldGUgbVRleFN0b3JhZ2U7CiAgICAgbVRleFN0b3JhZ2UgPSBOVUxMOwpAQCAtMTcz
OCw2ICsxNzQwLDIzIEBAIFRleHR1cmUyRDo6flRleHR1cmUyRCgpCiAgICAgfQogfQogCisvLyBX
ZSBuZWVkIHRvIG1haW50YWluIGEgY291bnQgb2YgcmVmZXJlbmNlcyB0byByZW5kZXJidWZmZXJz
IGFjdGluZyBhcyAKKy8vIHByb3hpZXMgZm9yIHRoaXMgdGV4dHVyZSwgc28gdGhhdCB3ZSBkbyBu
b3QgYXR0ZW1wdCB0byB1c2UgYSBwb2ludGVyIAorLy8gdG8gYSByZW5kZXJidWZmZXIgcHJveHkg
d2hpY2ggaGFzIGJlZW4gZGVsZXRlZC4KK3ZvaWQgVGV4dHVyZTJEOjphZGRQcm94eVJlZihjb25z
dCBSZW5kZXJidWZmZXIgKnByb3h5KQoreworICAgIG1Qcm94eVJlZnMrKzsKK30KKwordm9pZCBU
ZXh0dXJlMkQ6OnJlbGVhc2VQcm94eShjb25zdCBSZW5kZXJidWZmZXIgKnByb3h5KQoreworICAg
IGlmIChtUHJveHlSZWZzID4gMCkKKyAgICAgICAgbVByb3h5UmVmcy0tOworCisgICAgaWYgKG1Q
cm94eVJlZnMgPT0gMCkKKyAgICAgICAgbUNvbG9yYnVmZmVyUHJveHkgPSBOVUxMOworfQorCiBH
TGVudW0gVGV4dHVyZTJEOjpnZXRUYXJnZXQoKSBjb25zdAogewogICAgIHJldHVybiBHTF9URVhU
VVJFXzJEOwpAQCAtMjI5NCwxMiArMjMxMywxMiBAQCBSZW5kZXJidWZmZXIgKlRleHR1cmUyRDo6
Z2V0UmVuZGVyYnVmZmVyKEdMZW51bSB0YXJnZXQpCiAgICAgICAgIHJldHVybiBlcnJvcihHTF9J
TlZBTElEX09QRVJBVElPTiwgKFJlbmRlcmJ1ZmZlciAqKU5VTEwpOwogICAgIH0KIAotICAgIGlm
IChtQ29sb3JidWZmZXJQcm94eS5nZXQoKSA9PSBOVUxMKQorICAgIGlmIChtQ29sb3JidWZmZXJQ
cm94eSA9PSBOVUxMKQogICAgIHsKLSAgICAgICAgbUNvbG9yYnVmZmVyUHJveHkuc2V0KG5ldyBS
ZW5kZXJidWZmZXIoaWQoKSwgbmV3IFJlbmRlcmJ1ZmZlclRleHR1cmUodGhpcywgdGFyZ2V0KSkp
OworICAgICAgICBtQ29sb3JidWZmZXJQcm94eSA9IG5ldyBSZW5kZXJidWZmZXIoaWQoKSwgbmV3
IFJlbmRlcmJ1ZmZlclRleHR1cmUodGhpcywgdGFyZ2V0KSk7CiAgICAgfQogCi0gICAgcmV0dXJu
IG1Db2xvcmJ1ZmZlclByb3h5LmdldCgpOworICAgIHJldHVybiBtQ29sb3JidWZmZXJQcm94eTsK
IH0KIAogSURpcmVjdDNEU3VyZmFjZTkgKlRleHR1cmUyRDo6Z2V0UmVuZGVyVGFyZ2V0KEdMZW51
bSB0YXJnZXQpCkBAIC0yMzgzLDE5ICsyNDAyLDUzIEBAIHVuc2lnbmVkIGludCBUZXh0dXJlU3Rv
cmFnZUN1YmVNYXA6OmdldFJlbmRlclRhcmdldFNlcmlhbChHTGVudW0gdGFyZ2V0KSBjb25zdAog
VGV4dHVyZUN1YmVNYXA6OlRleHR1cmVDdWJlTWFwKEdMdWludCBpZCkgOiBUZXh0dXJlKGlkKQog
ewogICAgIG1UZXhTdG9yYWdlID0gTlVMTDsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDY7IGkr
KykKKyAgICB7CisgICAgICAgIG1GYWNlUHJveGllc1tpXSA9IE5VTEw7CisgICAgICAgIG1GYWNl
UHJveHlSZWZzW2ldID0gMDsKKyAgICB9CiB9CiAKIFRleHR1cmVDdWJlTWFwOjp+VGV4dHVyZUN1
YmVNYXAoKQogewogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNjsgaSsrKQogICAgIHsKLSAgICAg
ICAgbUZhY2VQcm94aWVzW2ldLnNldChOVUxMKTsKKyAgICAgICAgbUZhY2VQcm94aWVzW2ldID0g
TlVMTDsKICAgICB9CiAKICAgICBkZWxldGUgbVRleFN0b3JhZ2U7CiAgICAgbVRleFN0b3JhZ2Ug
PSBOVUxMOwogfQogCisvLyBXZSBuZWVkIHRvIG1haW50YWluIGEgY291bnQgb2YgcmVmZXJlbmNl
cyB0byByZW5kZXJidWZmZXJzIGFjdGluZyBhcyAKKy8vIHByb3hpZXMgZm9yIHRoaXMgdGV4dHVy
ZSwgc28gdGhhdCB0aGUgdGV4dHVyZSBpcyBub3QgZGVsZXRlZCB3aGlsZSAKKy8vIHByb3h5IHJl
ZmVyZW5jZXMgc3RpbGwgZXhpc3QuIElmIHRoZSByZWZlcmVuY2UgY291bnQgZHJvcHMgdG8gemVy
bywKKy8vIHdlIHNldCBvdXIgcHJveHkgcG9pbnRlciBOVUxMLCBzbyB0aGF0IGEgbmV3IGF0dGVt
cHQgYXQgcmVmZXJlbmNpbmcKKy8vIHdpbGwgY2F1c2UgcmVjcmVhdGlvbi4KK3ZvaWQgVGV4dHVy
ZUN1YmVNYXA6OmFkZFByb3h5UmVmKGNvbnN0IFJlbmRlcmJ1ZmZlciAqcHJveHkpCit7CisgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCA2OyBpKyspCisgICAgeworICAgICAgICBpZiAobUZhY2VQcm94
aWVzW2ldID09IHByb3h5KQorICAgICAgICAgICAgbUZhY2VQcm94eVJlZnNbaV0rKzsKKyAgICB9
Cit9CisKK3ZvaWQgVGV4dHVyZUN1YmVNYXA6OnJlbGVhc2VQcm94eShjb25zdCBSZW5kZXJidWZm
ZXIgKnByb3h5KQoreworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgNjsgaSsrKQorICAgIHsKKyAg
ICAgICAgaWYgKG1GYWNlUHJveGllc1tpXSA9PSBwcm94eSkKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKG1GYWNlUHJveHlSZWZzW2ldID4gMCkKKyAgICAgICAgICAgICAgICBtRmFjZVByb3h5
UmVmc1tpXS0tOworCisgICAgICAgICAgICBpZiAobUZhY2VQcm94eVJlZnNbaV0gPT0gMCkKKyAg
ICAgICAgICAgICAgICBtRmFjZVByb3hpZXNbaV0gPSBOVUxMOworICAgICAgICB9CisgICAgfQor
fQorCiBHTGVudW0gVGV4dHVyZUN1YmVNYXA6OmdldFRhcmdldCgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIEdMX1RFWFRVUkVfQ1VCRV9NQVA7CkBAIC0yNTI0LDcgKzI1NzcsOSBAQCBib29sIFRleHR1
cmVDdWJlTWFwOjppc1NhbXBsZXJDb21wbGV0ZSgpIGNvbnN0CiAgICAgICBjYXNlIEdMX0xJTkVB
Ul9NSVBNQVBfTElORUFSOgogICAgICAgICBtaXBtYXBwaW5nID0gdHJ1ZTsKICAgICAgICAgYnJl
YWs7Ci0gICAgICBkZWZhdWx0OiBVTlJFQUNIQUJMRSgpOworICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlm
ICgoZ2V0SW50ZXJuYWxGb3JtYXQoKSA9PSBHTF9GTE9BVCAmJiAhZ2V0Q29udGV4dCgpLT5zdXBw
b3J0c0Zsb2F0MzJMaW5lYXJGaWx0ZXIoKSkgfHwKQEAgLTI2OTMsOSArMjc0OCw2IEBAIHZvaWQg
VGV4dHVyZUN1YmVNYXA6OmNvbnZlcnRUb1JlbmRlclRhcmdldCgpCiAKICAgICAgICAgaWYgKG1U
ZXhTdG9yYWdlICE9IE5VTEwpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGVnbDo6RGlzcGxheSAq
ZGlzcGxheSA9IGdldERpc3BsYXkoKTsKLSAgICAgICAgICAgIElEaXJlY3QzRERldmljZTkgKmRl
dmljZSA9IGRpc3BsYXktPmdldERldmljZSgpOwotCiAgICAgICAgICAgICBpbnQgbGV2ZWxzID0g
bGV2ZWxDb3VudCgpOwogICAgICAgICAgICAgZm9yIChpbnQgZiA9IDA7IGYgPCA2OyBmKyspCiAg
ICAgICAgICAgICB7CkBAIC0yOTk1LDEyICszMDQ3LDEyIEBAIFJlbmRlcmJ1ZmZlciAqVGV4dHVy
ZUN1YmVNYXA6OmdldFJlbmRlcmJ1ZmZlcihHTGVudW0gdGFyZ2V0KQogCiAgICAgdW5zaWduZWQg
aW50IGZhY2UgPSBmYWNlSW5kZXgodGFyZ2V0KTsKIAotICAgIGlmIChtRmFjZVByb3hpZXNbZmFj
ZV0uZ2V0KCkgPT0gTlVMTCkKKyAgICBpZiAobUZhY2VQcm94aWVzW2ZhY2VdID09IE5VTEwpCiAg
ICAgewotICAgICAgICBtRmFjZVByb3hpZXNbZmFjZV0uc2V0KG5ldyBSZW5kZXJidWZmZXIoaWQo
KSwgbmV3IFJlbmRlcmJ1ZmZlclRleHR1cmUodGhpcywgdGFyZ2V0KSkpOworICAgICAgICBtRmFj
ZVByb3hpZXNbZmFjZV0gPSBuZXcgUmVuZGVyYnVmZmVyKGlkKCksIG5ldyBSZW5kZXJidWZmZXJU
ZXh0dXJlKHRoaXMsIHRhcmdldCkpOwogICAgIH0KIAotICAgIHJldHVybiBtRmFjZVByb3hpZXNb
ZmFjZV0uZ2V0KCk7CisgICAgcmV0dXJuIG1GYWNlUHJveGllc1tmYWNlXTsKIH0KIAogSURpcmVj
dDNEU3VyZmFjZTkgKlRleHR1cmVDdWJlTWFwOjpnZXRSZW5kZXJUYXJnZXQoR0xlbnVtIHRhcmdl
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvVGV4
dHVyZS5oIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9UZXh0dXJlLmgK
aW5kZXggYzJkZDcxOWY3ZjRlZWM5ZGVhYzU1NTY3MTNiYWRiZTdmNjM4MGQ4Zi4uMTlhNmViNTlj
ZjU1ZjA0YjZkMDQ1YWFkZmU4NjY5YWQwMTQzNDUzNiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9UZXh0dXJlLmgKKysrIGIvU291cmNlL1RoaXJkUGFy
dHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9UZXh0dXJlLmgKQEAgLTE3LDEwICsxNywxMCBAQAogI2lu
Y2x1ZGUgPEdMRVMyL2dsMi5oPgogI2luY2x1ZGUgPGQzZDkuaD4KIAorI2luY2x1ZGUgImNvbW1v
bi9kZWJ1Zy5oIgorI2luY2x1ZGUgImNvbW1vbi9SZWZDb3VudE9iamVjdC5oIgogI2luY2x1ZGUg
ImxpYkdMRVN2Mi9SZW5kZXJidWZmZXIuaCIKLSNpbmNsdWRlICJsaWJHTEVTdjIvUmVmQ291bnRP
YmplY3QuaCIKICNpbmNsdWRlICJsaWJHTEVTdjIvdXRpbGl0aWVzLmgiCi0jaW5jbHVkZSAiY29t
bW9uL2RlYnVnLmgiCiAKIG5hbWVzcGFjZSBlZ2wKIHsKQEAgLTE3Myw2ICsxNzMsOSBAQCBjbGFz
cyBUZXh0dXJlIDogcHVibGljIFJlZkNvdW50T2JqZWN0CiAKICAgICB2aXJ0dWFsIH5UZXh0dXJl
KCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgYWRkUHJveHlSZWYoY29uc3QgUmVuZGVyYnVmZmVyICpw
cm94eSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlUHJveHkoY29uc3QgUmVuZGVyYnVm
ZmVyICpwcm94eSkgPSAwOworCiAgICAgdmlydHVhbCBHTGVudW0gZ2V0VGFyZ2V0KCkgY29uc3Qg
PSAwOwogCiAgICAgYm9vbCBzZXRNaW5GaWx0ZXIoR0xlbnVtIGZpbHRlcik7CkBAIC0yNzgsNiAr
MjgxLDkgQEAgY2xhc3MgVGV4dHVyZTJEIDogcHVibGljIFRleHR1cmUKIAogICAgIH5UZXh0dXJl
MkQoKTsKIAorICAgIHZvaWQgYWRkUHJveHlSZWYoY29uc3QgUmVuZGVyYnVmZmVyICpwcm94eSk7
CisgICAgdm9pZCByZWxlYXNlUHJveHkoY29uc3QgUmVuZGVyYnVmZmVyICpwcm94eSk7CisKICAg
ICB2aXJ0dWFsIEdMZW51bSBnZXRUYXJnZXQoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgR0xzaXpl
aSBnZXRXaWR0aChHTGludCBsZXZlbCkgY29uc3Q7CkBAIC0zMjMsNyArMzI5LDEzIEBAIGNsYXNz
IFRleHR1cmUyRCA6IHB1YmxpYyBUZXh0dXJlCiAgICAgVGV4dHVyZVN0b3JhZ2UyRCAqbVRleFN0
b3JhZ2U7CiAgICAgZWdsOjpTdXJmYWNlICptU3VyZmFjZTsKIAotICAgIEJpbmRpbmdQb2ludGVy
PFJlbmRlcmJ1ZmZlcj4gbUNvbG9yYnVmZmVyUHJveHk7CisgICAgLy8gQSBzcGVjaWZpYyBpbnRl
cm5hbCByZWZlcmVuY2UgY291bnQgaXMga2VwdCBmb3IgY29sb3JidWZmZXIgcHJveHkgcmVmZXJl
bmNlcywKKyAgICAvLyBiZWNhdXNlLCBhcyB0aGUgcmVuZGVyYnVmZmVyIGFjdGluZyBhcyBwcm94
eSB3aWxsIG1haW50YWluIGEgYmluZGluZyBwb2ludGVyCisgICAgLy8gYmFjayB0byB0aGlzIHRl
eHR1cmUsIHRoZXJlIHdvdWxkIGJlIGEgY2lyY3VsYXIgcmVmZXJlbmNlIGlmIHdlIHVzZWQgYSBi
aW5kaW5nCisgICAgLy8gcG9pbnRlciBoZXJlLiBUaGlzIHJlZmVyZW5jZSBjb3VudCB3aWxsIGNh
dXNlIHRoZSBwb2ludGVyIHRvIGJlIHNldCB0byBOVUxMIGlmCisgICAgLy8gdGhlIGNvdW50IGRy
b3BzIHRvIHplcm8sIGJ1dCB3aWxsIG5vdCBjYXVzZSBkZWxldGlvbiBvZiB0aGUgUmVuZGVyYnVm
ZmVyLgorICAgIFJlbmRlcmJ1ZmZlciAqbUNvbG9yYnVmZmVyUHJveHk7CisgICAgdW5zaWduZWQg
aW50IG1Qcm94eVJlZnM7CiB9OwogCiBjbGFzcyBUZXh0dXJlU3RvcmFnZUN1YmVNYXAgOiBwdWJs
aWMgVGV4dHVyZVN0b3JhZ2UKQEAgLTM1Miw2ICszNjQsOSBAQCBjbGFzcyBUZXh0dXJlQ3ViZU1h
cCA6IHB1YmxpYyBUZXh0dXJlCiAKICAgICB+VGV4dHVyZUN1YmVNYXAoKTsKIAorICAgIHZvaWQg
YWRkUHJveHlSZWYoY29uc3QgUmVuZGVyYnVmZmVyICpwcm94eSk7CisgICAgdm9pZCByZWxlYXNl
UHJveHkoY29uc3QgUmVuZGVyYnVmZmVyICpwcm94eSk7CisKICAgICB2aXJ0dWFsIEdMZW51bSBn
ZXRUYXJnZXQoKSBjb25zdDsKICAgICAKICAgICB2aXJ0dWFsIEdMc2l6ZWkgZ2V0V2lkdGgoR0xp
bnQgbGV2ZWwpIGNvbnN0OwpAQCAtNDA1LDcgKzQyMCwxMyBAQCBjbGFzcyBUZXh0dXJlQ3ViZU1h
cCA6IHB1YmxpYyBUZXh0dXJlCiAKICAgICBUZXh0dXJlU3RvcmFnZUN1YmVNYXAgKm1UZXhTdG9y
YWdlOwogCi0gICAgQmluZGluZ1BvaW50ZXI8UmVuZGVyYnVmZmVyPiBtRmFjZVByb3hpZXNbNl07
CisgICAgLy8gQSBzcGVjaWZpYyBpbnRlcm5hbCByZWZlcmVuY2UgY291bnQgaXMga2VwdCBmb3Ig
Y29sb3JidWZmZXIgcHJveHkgcmVmZXJlbmNlcywKKyAgICAvLyBiZWNhdXNlLCBhcyB0aGUgcmVu
ZGVyYnVmZmVyIGFjdGluZyBhcyBwcm94eSB3aWxsIG1haW50YWluIGEgYmluZGluZyBwb2ludGVy
CisgICAgLy8gYmFjayB0byB0aGlzIHRleHR1cmUsIHRoZXJlIHdvdWxkIGJlIGEgY2lyY3VsYXIg
cmVmZXJlbmNlIGlmIHdlIHVzZWQgYSBiaW5kaW5nCisgICAgLy8gcG9pbnRlciBoZXJlLiBUaGlz
IHJlZmVyZW5jZSBjb3VudCB3aWxsIGNhdXNlIHRoZSBwb2ludGVyIHRvIGJlIHNldCB0byBOVUxM
IGlmCisgICAgLy8gdGhlIGNvdW50IGRyb3BzIHRvIHplcm8sIGJ1dCB3aWxsIG5vdCBjYXVzZSBk
ZWxldGlvbiBvZiB0aGUgUmVuZGVyYnVmZmVyLgorICAgIFJlbmRlcmJ1ZmZlciAqbUZhY2VQcm94
aWVzWzZdOworICAgIHVuc2lnbmVkIGludCAqbUZhY2VQcm94eVJlZnNbNl07CiB9OwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1ZlcnRleERh
dGFNYW5hZ2VyLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvVmVy
dGV4RGF0YU1hbmFnZXIuY3BwCmluZGV4IDY5OGQ4YjliZDQ1YTQ3N2E0MzEzYWMwZDI1ODRmMWY3
ZjE0MThkNTIuLjk1YmMzZmI4NzgzYzI5NWE3MzJhMTMyZDcxNzI1ZTVjYmJmOTZmNGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvVmVydGV4RGF0YU1h
bmFnZXIuY3BwCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvVmVy
dGV4RGF0YU1hbmFnZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLy8KLS8vIENvcHlyaWdodCAoYykg
MjAwMi0yMDExIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisvLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMiBUaGUgQU5HTEUgUHJvamVjdCBBdXRob3JzLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu
ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQogLy8gZm91bmQgaW4gdGhlIExJ
Q0VOU0UgZmlsZS4KIC8vCkBAIC02NSw3ICs2NSw3IEBAIFZlcnRleERhdGFNYW5hZ2VyOjp+VmVy
dGV4RGF0YU1hbmFnZXIoKQogICAgIH0KIH0KIAotc3RkOjpzaXplX3QgVmVydGV4RGF0YU1hbmFn
ZXI6OndyaXRlQXR0cmlidXRlRGF0YShBcnJheVZlcnRleEJ1ZmZlciAqdmVydGV4QnVmZmVyLCBH
TGludCBzdGFydCwgR0xzaXplaSBjb3VudCwgY29uc3QgVmVydGV4QXR0cmlidXRlICZhdHRyaWJ1
dGUpCitzdGQ6OnNpemVfdCBWZXJ0ZXhEYXRhTWFuYWdlcjo6d3JpdGVBdHRyaWJ1dGVEYXRhKEFy
cmF5VmVydGV4QnVmZmVyICp2ZXJ0ZXhCdWZmZXIsIEdMaW50IHN0YXJ0LCBHTHNpemVpIGNvdW50
LCBjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYnV0ZSwgR0xzaXplaSBpbnN0YW5jZXMpCiB7
CiAgICAgQnVmZmVyICpidWZmZXIgPSBhdHRyaWJ1dGUubUJvdW5kQnVmZmVyLmdldCgpOwogCkBA
IC03OCw3ICs3OCw3IEBAIHN0ZDo6c2l6ZV90IFZlcnRleERhdGFNYW5hZ2VyOjp3cml0ZUF0dHJp
YnV0ZURhdGEoQXJyYXlWZXJ0ZXhCdWZmZXIgKnZlcnRleEJ1ZmZlCiAgICAgCiAgICAgaWYgKHZl
cnRleEJ1ZmZlcikKICAgICB7Ci0gICAgICAgIG91dHB1dCA9IHZlcnRleEJ1ZmZlci0+bWFwKGF0
dHJpYnV0ZSwgc3BhY2VSZXF1aXJlZChhdHRyaWJ1dGUsIGNvdW50KSwgJnN0cmVhbU9mZnNldCk7
CisgICAgICAgIG91dHB1dCA9IHZlcnRleEJ1ZmZlci0+bWFwKGF0dHJpYnV0ZSwgc3BhY2VSZXF1
aXJlZChhdHRyaWJ1dGUsIGNvdW50LCBpbnN0YW5jZXMpLCAmc3RyZWFtT2Zmc2V0KTsKICAgICB9
CiAKICAgICBpZiAob3V0cHV0ID09IE5VTEwpCkBAIC0xMDAsNyArMTAwLDEwIEBAIHN0ZDo6c2l6
ZV90IFZlcnRleERhdGFNYW5hZ2VyOjp3cml0ZUF0dHJpYnV0ZURhdGEoQXJyYXlWZXJ0ZXhCdWZm
ZXIgKnZlcnRleEJ1ZmZlCiAgICAgICAgIGlucHV0ID0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+
KGF0dHJpYnV0ZS5tUG9pbnRlcik7CiAgICAgfQogCi0gICAgaW5wdXQgKz0gaW5wdXRTdHJpZGUg
KiBzdGFydDsKKyAgICBpZiAoaW5zdGFuY2VzID09IDAgfHwgYXR0cmlidXRlLm1EaXZpc29yID09
IDApCisgICAgeworICAgICAgICBpbnB1dCArPSBpbnB1dFN0cmlkZSAqIHN0YXJ0OworICAgIH0K
IAogICAgIGlmIChjb252ZXJ0ZXIuaWRlbnRpdHkgJiYgaW5wdXRTdHJpZGUgPT0gZWxlbWVudFNp
emUpCiAgICAgewpAQCAtMTE2LDcgKzExOSw3IEBAIHN0ZDo6c2l6ZV90IFZlcnRleERhdGFNYW5h
Z2VyOjp3cml0ZUF0dHJpYnV0ZURhdGEoQXJyYXlWZXJ0ZXhCdWZmZXIgKnZlcnRleEJ1ZmZlCiAg
ICAgcmV0dXJuIHN0cmVhbU9mZnNldDsKIH0KIAotR0xlbnVtIFZlcnRleERhdGFNYW5hZ2VyOjpw
cmVwYXJlVmVydGV4RGF0YShHTGludCBzdGFydCwgR0xzaXplaSBjb3VudCwgVHJhbnNsYXRlZEF0
dHJpYnV0ZSAqdHJhbnNsYXRlZCkKK0dMZW51bSBWZXJ0ZXhEYXRhTWFuYWdlcjo6cHJlcGFyZVZl
cnRleERhdGEoR0xpbnQgc3RhcnQsIEdMc2l6ZWkgY291bnQsIFRyYW5zbGF0ZWRBdHRyaWJ1dGUg
KnRyYW5zbGF0ZWQsIEdMc2l6ZWkgaW5zdGFuY2VzKQogewogICAgIGlmICghbVN0cmVhbWluZ0J1
ZmZlcikKICAgICB7CkBAIC0xNDQsNyArMTQ3LDcgQEAgR0xlbnVtIFZlcnRleERhdGFNYW5hZ2Vy
OjpwcmVwYXJlVmVydGV4RGF0YShHTGludCBzdGFydCwgR0xzaXplaSBjb3VudCwgVHJhbnNsYXQK
ICAgICAgICAgICAgICAgICBpZiAoc3RhdGljQnVmZmVyLT5zaXplKCkgPT0gMCkKICAgICAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIGludCB0b3RhbENvdW50ID0gZWxlbWVudHNJ
bkJ1ZmZlcihhdHRyaWJzW2ldLCBidWZmZXItPnNpemUoKSk7Ci0gICAgICAgICAgICAgICAgICAg
IHN0YXRpY0J1ZmZlci0+YWRkUmVxdWlyZWRTcGFjZShzcGFjZVJlcXVpcmVkKGF0dHJpYnNbaV0s
IHRvdGFsQ291bnQpKTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGljQnVmZmVyLT5hZGRSZXF1
aXJlZFNwYWNlKHNwYWNlUmVxdWlyZWQoYXR0cmlic1tpXSwgdG90YWxDb3VudCwgMCkpOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNlIGlmIChzdGF0aWNCdWZmZXItPmxv
b2t1cEF0dHJpYnV0ZShhdHRyaWJzW2ldKSA9PSAtMSkKICAgICAgICAgICAgICAgICB7CkBAIC0x
NTksMTkgKzE2MiwxOSBAQCBHTGVudW0gVmVydGV4RGF0YU1hbmFnZXI6OnByZXBhcmVWZXJ0ZXhE
YXRhKEdMaW50IHN0YXJ0LCBHTHNpemVpIGNvdW50LCBUcmFuc2xhdAogCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKHN0YXRpY0J1ZmZlciA9PSBwcmV2aW91c1N0YXRpY0J1ZmZlcikK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1TdHJlYW1pbmdCdWZmZXItPmFkZFJlcXVpcmVkU3BhY2Uoc3BhY2VSZXF1aXJlZChh
dHRyaWJzW3ByZXZpb3VzXSwgY291bnQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbVN0cmVhbWluZ0J1ZmZlci0+YWRkUmVxdWlyZWRTcGFjZShzcGFjZVJlcXVpcmVkKGF0dHJp
YnNbcHJldmlvdXNdLCBjb3VudCwgaW5zdGFuY2VzKSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgICAgICAgICAgbVN0cmVhbWluZ0J1ZmZlci0+YWRkUmVxdWlyZWRTcGFj
ZShzcGFjZVJlcXVpcmVkKGF0dHJpYnNbaV0sIGNvdW50KSk7CisgICAgICAgICAgICAgICAgICAg
IG1TdHJlYW1pbmdCdWZmZXItPmFkZFJlcXVpcmVkU3BhY2Uoc3BhY2VSZXF1aXJlZChhdHRyaWJz
W2ldLCBjb3VudCwgaW5zdGFuY2VzKSk7CiAKICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLT5p
bnZhbGlkYXRlU3RhdGljRGF0YSgpOwogICAgICAgICAgICAgICAgIH0gICAgCiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbVN0
cmVhbWluZ0J1ZmZlci0+YWRkUmVxdWlyZWRTcGFjZShzcGFjZVJlcXVpcmVkKGF0dHJpYnNbaV0s
IGNvdW50KSk7CisgICAgICAgICAgICAgICAgbVN0cmVhbWluZ0J1ZmZlci0+YWRkUmVxdWlyZWRT
cGFjZShzcGFjZVJlcXVpcmVkKGF0dHJpYnNbaV0sIGNvdW50LCBpbnN0YW5jZXMpKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTIyNSwxNyArMjI4LDIyIEBAIEdMZW51bSBW
ZXJ0ZXhEYXRhTWFuYWdlcjo6cHJlcGFyZVZlcnRleERhdGEoR0xpbnQgc3RhcnQsIEdMc2l6ZWkg
Y291bnQsIFRyYW5zbGF0CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdG90YWxDb3VudCA9
IGVsZW1lbnRzSW5CdWZmZXIoYXR0cmlic1tpXSwgYnVmZmVyLT5zaXplKCkpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgaW50IHN0YXJ0SW5kZXggPSBhdHRyaWJzW2ldLm1PZmZzZXQgLyBhdHRy
aWJzW2ldLnN0cmlkZSgpOwogCi0gICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1PZmZzZXQg
PSB3cml0ZUF0dHJpYnV0ZURhdGEoc3RhdGljQnVmZmVyLCAtc3RhcnRJbmRleCwgdG90YWxDb3Vu
dCwgYXR0cmlic1tpXSk7CisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1PZmZzZXQgPSB3
cml0ZUF0dHJpYnV0ZURhdGEoc3RhdGljQnVmZmVyLCAtc3RhcnRJbmRleCwgdG90YWxDb3VudCwg
YXR0cmlic1tpXSwgMCk7CiAgICAgICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAg
ICAgICBpZiAoc3RyZWFtT2Zmc2V0ICE9IC0xKQogICAgICAgICAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBzdHJlYW1PZmZzZXQgKz0gKHN0YXJ0ICsgYXR0cmlic1tpXS5t
T2Zmc2V0IC8gYXR0cmlic1tpXS5zdHJpZGUoKSkgKiBjb252ZXJ0ZXIub3V0cHV0RWxlbWVudFNp
emU7CisgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW1PZmZzZXQgKz0gKGF0dHJpYnNbaV0u
bU9mZnNldCAvIGF0dHJpYnNbaV0uc3RyaWRlKCkpICogY29udmVydGVyLm91dHB1dEVsZW1lbnRT
aXplOworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5zdGFuY2VzID09IDAgfHwgYXR0
cmlic1tpXS5tRGl2aXNvciA9PSAwKQorICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbU9mZnNldCArPSBzdGFydCAqIGNvbnZlcnRlci5v
dXRwdXRFbGVtZW50U2l6ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNlCiAgICAg
ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBzdHJlYW1PZmZzZXQgPSB3cml0ZUF0
dHJpYnV0ZURhdGEobVN0cmVhbWluZ0J1ZmZlciwgc3RhcnQsIGNvdW50LCBhdHRyaWJzW2ldKTsK
KyAgICAgICAgICAgICAgICAgICAgc3RyZWFtT2Zmc2V0ID0gd3JpdGVBdHRyaWJ1dGVEYXRhKG1T
dHJlYW1pbmdCdWZmZXIsIHN0YXJ0LCBjb3VudCwgYXR0cmlic1tpXSwgaW5zdGFuY2VzKTsKICAg
ICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAoc3RyZWFtT2Zmc2V0ID09IC0x
KQpAQCAtMjQ1LDYgKzI1Myw4IEBAIEdMZW51bSBWZXJ0ZXhEYXRhTWFuYWdlcjo6cHJlcGFyZVZl
cnRleERhdGEoR0xpbnQgc3RhcnQsIEdMc2l6ZWkgY291bnQsIFRyYW5zbGF0CiAKICAgICAgICAg
ICAgICAgICB0cmFuc2xhdGVkW2ldLnZlcnRleEJ1ZmZlciA9IHZlcnRleEJ1ZmZlci0+Z2V0QnVm
ZmVyKCk7CiAgICAgICAgICAgICAgICAgdHJhbnNsYXRlZFtpXS5zZXJpYWwgPSB2ZXJ0ZXhCdWZm
ZXItPmdldFNlcmlhbCgpOworICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWRbaV0uZGl2aXNvciA9
IGF0dHJpYnNbaV0ubURpdmlzb3I7CisKICAgICAgICAgICAgICAgICB0cmFuc2xhdGVkW2ldLnR5
cGUgPSBjb252ZXJ0ZXIuZDNkRGVjbFR5cGU7CiAgICAgICAgICAgICAgICAgdHJhbnNsYXRlZFtp
XS5zdHJpZGUgPSBjb252ZXJ0ZXIub3V0cHV0RWxlbWVudFNpemU7CiAgICAgICAgICAgICAgICAg
dHJhbnNsYXRlZFtpXS5vZmZzZXQgPSBzdHJlYW1PZmZzZXQ7CkBAIC0yNzcsNiArMjg3LDcgQEAg
R0xlbnVtIFZlcnRleERhdGFNYW5hZ2VyOjpwcmVwYXJlVmVydGV4RGF0YShHTGludCBzdGFydCwg
R0xzaXplaSBjb3VudCwgVHJhbnNsYXQKIAogICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWRbaV0u
dmVydGV4QnVmZmVyID0gbUN1cnJlbnRWYWx1ZUJ1ZmZlcltpXS0+Z2V0QnVmZmVyKCk7CiAgICAg
ICAgICAgICAgICAgdHJhbnNsYXRlZFtpXS5zZXJpYWwgPSBtQ3VycmVudFZhbHVlQnVmZmVyW2ld
LT5nZXRTZXJpYWwoKTsKKyAgICAgICAgICAgICAgICB0cmFuc2xhdGVkW2ldLmRpdmlzb3IgPSAw
OwogCiAgICAgICAgICAgICAgICAgdHJhbnNsYXRlZFtpXS50eXBlID0gRDNEREVDTFRZUEVfRkxP
QVQ0OwogICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWRbaV0uc3RyaWRlID0gMDsKQEAgLTMwMSw5
ICszMTIsMTggQEAgR0xlbnVtIFZlcnRleERhdGFNYW5hZ2VyOjpwcmVwYXJlVmVydGV4RGF0YShH
TGludCBzdGFydCwgR0xzaXplaSBjb3VudCwgVHJhbnNsYXQKICAgICByZXR1cm4gR0xfTk9fRVJS
T1I7CiB9CiAKLXN0ZDo6c2l6ZV90IFZlcnRleERhdGFNYW5hZ2VyOjpzcGFjZVJlcXVpcmVkKGNv
bnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLCBzdGQ6OnNpemVfdCBjb3VudCkgY29uc3QKK3N0
ZDo6c2l6ZV90IFZlcnRleERhdGFNYW5hZ2VyOjpzcGFjZVJlcXVpcmVkKGNvbnN0IFZlcnRleEF0
dHJpYnV0ZSAmYXR0cmliLCBzdGQ6OnNpemVfdCBjb3VudCwgR0xzaXplaSBpbnN0YW5jZXMpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIGZvcm1hdENvbnZlcnRlcihhdHRyaWIpLm91dHB1dEVsZW1lbnRT
aXplICogY291bnQ7CisgICAgc2l6ZV90IGVsZW1lbnRTaXplID0gZm9ybWF0Q29udmVydGVyKGF0
dHJpYikub3V0cHV0RWxlbWVudFNpemU7CisKKyAgICBpZiAoaW5zdGFuY2VzID09IDAgfHwgYXR0
cmliLm1EaXZpc29yID09IDApCisgICAgeworICAgICAgICByZXR1cm4gZWxlbWVudFNpemUgKiBj
b3VudDsKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVsZW1lbnRTaXpl
ICogKChpbnN0YW5jZXMgKyBhdHRyaWIubURpdmlzb3IgLSAxKSAvIGF0dHJpYi5tRGl2aXNvcik7
CisgICAgfQogfQogCiAvLyBNYXBwaW5nIGZyb20gT3BlbkdMLUVTIHZlcnRleCBhdHRyaWIgdHlw
ZSB0byBEM0QgZGVjbCB0eXBlOgpAQCAtNDk3LDE0ICs1MTcsMjAgQEAgcHVibGljOgogICAgICAg
ICB7IFRSQU5TTEFUSU9OX0ZPUl9UWVBFX05PUk1fU0laRSh0eXBlLCB0cnVlLCAxKSwgVFJBTlNM
QVRJT05fRk9SX1RZUEVfTk9STV9TSVpFKHR5cGUsIHRydWUsIDIpLCBUUkFOU0xBVElPTl9GT1Jf
VFlQRV9OT1JNX1NJWkUodHlwZSwgdHJ1ZSwgMyksIFRSQU5TTEFUSU9OX0ZPUl9UWVBFX05PUk1f
U0laRSh0eXBlLCB0cnVlLCA0KSB9LCAgICAgXAogICAgIH0KIAorI2RlZmluZSBUUkFOU0xBVElP
TlNfRk9SX1RZUEVfTk9fTk9STSh0eXBlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICB7IFRSQU5TTEFUSU9OX0ZPUl9UWVBFX05PUk1fU0laRSh0eXBlLCBmYWxzZSwgMSksIFRS
QU5TTEFUSU9OX0ZPUl9UWVBFX05PUk1fU0laRSh0eXBlLCBmYWxzZSwgMiksIFRSQU5TTEFUSU9O
X0ZPUl9UWVBFX05PUk1fU0laRSh0eXBlLCBmYWxzZSwgMyksIFRSQU5TTEFUSU9OX0ZPUl9UWVBF
X05PUk1fU0laRSh0eXBlLCBmYWxzZSwgNCkgfSwgXAorICAgICAgICB7IFRSQU5TTEFUSU9OX0ZP
Ul9UWVBFX05PUk1fU0laRSh0eXBlLCBmYWxzZSwgMSksIFRSQU5TTEFUSU9OX0ZPUl9UWVBFX05P
Uk1fU0laRSh0eXBlLCBmYWxzZSwgMiksIFRSQU5TTEFUSU9OX0ZPUl9UWVBFX05PUk1fU0laRSh0
eXBlLCBmYWxzZSwgMyksIFRSQU5TTEFUSU9OX0ZPUl9UWVBFX05PUk1fU0laRSh0eXBlLCBmYWxz
ZSwgNCkgfSwgXAorICAgIH0KKwogY29uc3QgVmVydGV4RGF0YU1hbmFnZXI6OlRyYW5zbGF0aW9u
RGVzY3JpcHRpb24gVmVydGV4RGF0YU1hbmFnZXI6Om1Qb3NzaWJsZVRyYW5zbGF0aW9uc1tOVU1f
R0xfVkVSVEVYX0FUVFJJQl9UWVBFU11bMl1bNF0gPSAvLyBbR0wgdHlwZXMgYXMgZW51bWVyYXRl
ZCBieSB0eXBlSW5kZXgoKV1bbm9ybWFsaXplZF1bc2l6ZS0xXQogewogICAgIFRSQU5TTEFUSU9O
U19GT1JfVFlQRShHTF9CWVRFKSwKICAgICBUUkFOU0xBVElPTlNfRk9SX1RZUEUoR0xfVU5TSUdO
RURfQllURSksCiAgICAgVFJBTlNMQVRJT05TX0ZPUl9UWVBFKEdMX1NIT1JUKSwKICAgICBUUkFO
U0xBVElPTlNfRk9SX1RZUEUoR0xfVU5TSUdORURfU0hPUlQpLAotICAgIFRSQU5TTEFUSU9OU19G
T1JfVFlQRShHTF9GSVhFRCksCi0gICAgVFJBTlNMQVRJT05TX0ZPUl9UWVBFKEdMX0ZMT0FUKQor
ICAgIFRSQU5TTEFUSU9OU19GT1JfVFlQRV9OT19OT1JNKEdMX0ZJWEVEKSwKKyAgICBUUkFOU0xB
VElPTlNfRk9SX1RZUEVfTk9fTk9STShHTF9GTE9BVCkKIH07CiAKIHZvaWQgVmVydGV4RGF0YU1h
bmFnZXI6OmNoZWNrVmVydGV4Q2FwcyhEV09SRCBkZWNsVHlwZXMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1ZlcnRleERhdGFNYW5hZ2VyLmggYi9T
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL1ZlcnRleERhdGFNYW5hZ2VyLmgK
aW5kZXggOWVkZmU2NWYzZmZhYjNjMjhmM2RjMDA3ZjRkOGI2ZDhiZTIyZWUwMS4uODU3NTkxYWMy
OTMwNDI4OWNkMWU1OGU2NzAxYmFkOWRiMzFjMTYzYiAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJk
UGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9WZXJ0ZXhEYXRhTWFuYWdlci5oCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvVmVydGV4RGF0YU1hbmFnZXIuaApAQCAt
MSw1ICsxLDUgQEAKIC8vCi0vLyBDb3B5cmlnaHQgKGMpIDIwMDItMjAxMSBUaGUgQU5HTEUgUHJv
amVjdCBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChjKSAyMDAy
LTIwMTIgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KIC8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vu
c2UgdGhhdCBjYW4gYmUKIC8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCiAvLwpAQCAtMzEs
NiArMzEsNyBAQCBzdHJ1Y3QgVHJhbnNsYXRlZEF0dHJpYnV0ZQogCiAgICAgSURpcmVjdDNEVmVy
dGV4QnVmZmVyOSAqdmVydGV4QnVmZmVyOwogICAgIHVuc2lnbmVkIGludCBzZXJpYWw7CisgICAg
dW5zaWduZWQgaW50IGRpdmlzb3I7CiB9OwogCiBjbGFzcyBWZXJ0ZXhCdWZmZXIKQEAgLTExNywx
MyArMTE4LDEzIEBAIGNsYXNzIFZlcnRleERhdGFNYW5hZ2VyCiAKICAgICB2b2lkIGRpcnR5Q3Vy
cmVudFZhbHVlKGludCBpbmRleCkgeyBtRGlydHlDdXJyZW50VmFsdWVbaW5kZXhdID0gdHJ1ZTsg
fQogCi0gICAgR0xlbnVtIHByZXBhcmVWZXJ0ZXhEYXRhKEdMaW50IHN0YXJ0LCBHTHNpemVpIGNv
dW50LCBUcmFuc2xhdGVkQXR0cmlidXRlICpvdXRBdHRyaWJzKTsKKyAgICBHTGVudW0gcHJlcGFy
ZVZlcnRleERhdGEoR0xpbnQgc3RhcnQsIEdMc2l6ZWkgY291bnQsIFRyYW5zbGF0ZWRBdHRyaWJ1
dGUgKm91dEF0dHJpYnMsIEdMc2l6ZWkgaW5zdGFuY2VzKTsKIAogICBwcml2YXRlOgogICAgIERJ
U0FMTE9XX0NPUFlfQU5EX0FTU0lHTihWZXJ0ZXhEYXRhTWFuYWdlcik7CiAKLSAgICBzdGQ6OnNp
emVfdCBzcGFjZVJlcXVpcmVkKGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmliLCBzdGQ6OnNp
emVfdCBjb3VudCkgY29uc3Q7Ci0gICAgc3RkOjpzaXplX3Qgd3JpdGVBdHRyaWJ1dGVEYXRhKEFy
cmF5VmVydGV4QnVmZmVyICp2ZXJ0ZXhCdWZmZXIsIEdMaW50IHN0YXJ0LCBHTHNpemVpIGNvdW50
LCBjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYnV0ZSk7CisgICAgc3RkOjpzaXplX3Qgc3Bh
Y2VSZXF1aXJlZChjb25zdCBWZXJ0ZXhBdHRyaWJ1dGUgJmF0dHJpYiwgc3RkOjpzaXplX3QgY291
bnQsIEdMc2l6ZWkgaW5zdGFuY2VzKSBjb25zdDsKKyAgICBzdGQ6OnNpemVfdCB3cml0ZUF0dHJp
YnV0ZURhdGEoQXJyYXlWZXJ0ZXhCdWZmZXIgKnZlcnRleEJ1ZmZlciwgR0xpbnQgc3RhcnQsIEdM
c2l6ZWkgY291bnQsIGNvbnN0IFZlcnRleEF0dHJpYnV0ZSAmYXR0cmlidXRlLCBHTHNpemVpIGlu
c3RhbmNlcyk7CiAKICAgICBDb250ZXh0ICpjb25zdCBtQ29udGV4dDsKICAgICBJRGlyZWN0M0RE
ZXZpY2U5ICpjb25zdCBtRGV2aWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvQU5H
TEUvc3JjL2xpYkdMRVN2Mi9saWJHTEVTdjIuY3BwIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUv
c3JjL2xpYkdMRVN2Mi9saWJHTEVTdjIuY3BwCmluZGV4IDMwMDU1YmI4MzIxODZiYmNlYjY2OTc2
MDAzOTRlOGM5MDY1ZGZmN2EuLmVlOGVjYTlkY2U1MTFhYmJkZDcxMTg0MDgwNWY2OTUxMDRjMGEx
ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbGli
R0xFU3YyLmNwcAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xp
YkdMRVN2Mi5jcHAKQEAgLTEsNSArMSw1IEBACiAvLwotLy8gQ29weXJpZ2h0IChjKSAyMDAyLTIw
MTEgVGhlIEFOR0xFIFByb2plY3QgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIENv
cHlyaWdodCAoYykgMjAwMi0yMDEyIFRoZSBBTkdMRSBQcm9qZWN0IEF1dGhvcnMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh
IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCiAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBm
aWxlLgogLy8KQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJsaWJHTEVTdjIvUmVuZGVyYnVm
ZmVyLmgiCiAjaW5jbHVkZSAibGliR0xFU3YyL1NoYWRlci5oIgogI2luY2x1ZGUgImxpYkdMRVN2
Mi9UZXh0dXJlLmgiCisjaW5jbHVkZSAibGliR0xFU3YyL1F1ZXJ5LmgiCiAKIGJvb2wgdmFsaWRJ
bWFnZVNpemUoR0xpbnQgbGV2ZWwsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KQogewpA
QCAtMjA0LDYgKzIwNSwzOSBAQCB2b2lkIF9fc3RkY2FsbCBnbEF0dGFjaFNoYWRlcihHTHVpbnQg
cHJvZ3JhbSwgR0x1aW50IHNoYWRlcikKICAgICB9CiB9CiAKK3ZvaWQgX19zdGRjYWxsIGdsQmVn
aW5RdWVyeUVYVChHTGVudW0gdGFyZ2V0LCBHTHVpbnQgaWQpCit7CisgICAgRVZFTlQoIihHTGVu
dW0gdGFyZ2V0ID0gMHglWCwgR0x1aW50ICVkKSIsIHRhcmdldCwgaWQpOworCisgICAgdHJ5Cisg
ICAgeworICAgICAgICBzd2l0Y2ggKHRhcmdldCkKKyAgICAgICAgeworICAgICAgICAgIGNhc2Ug
R0xfQU5ZX1NBTVBMRVNfUEFTU0VEX0VYVDogCisgICAgICAgICAgY2FzZSBHTF9BTllfU0FNUExF
U19QQVNTRURfQ09OU0VSVkFUSVZFX0VYVDoKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgZGVmYXVsdDogCisgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX0VOVU0p
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKGlkID09IDApCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgICAgIH0KKworICAg
ICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisg
ICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5iZWdp
blF1ZXJ5KHRhcmdldCwgaWQpOworICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFk
X2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsK
KyAgICB9Cit9CisKIHZvaWQgX19zdGRjYWxsIGdsQmluZEF0dHJpYkxvY2F0aW9uKEdMdWludCBw
cm9ncmFtLCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMY2hhciogbmFtZSkKIHsKICAgICBFVkVOVCgi
KEdMdWludCBwcm9ncmFtID0gJWQsIEdMdWludCBpbmRleCA9ICVkLCBjb25zdCBHTGNoYXIqIG5h
bWUgPSAweCUwLjhwKSIsIHByb2dyYW0sIGluZGV4LCBuYW1lKTsKQEAgLTk4OCw3ICsxMDIyLDcg
QEAgdm9pZCBfX3N0ZGNhbGwgZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRChHTGVudW0gdGFyZ2V0
LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnMKIAogICAgIHRyeQogICAgIHsKLSAgICAgICAgaWYg
KCFnbDo6SXNUZXh0dXJlVGFyZ2V0KHRhcmdldCkpCisgICAgICAgIGlmICghZ2w6OklzSW50ZXJu
YWxUZXh0dXJlVGFyZ2V0KHRhcmdldCkpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBl
cnJvcihHTF9JTlZBTElEX0VOVU0pOwogICAgICAgICB9CkBAIC0xMjc3LDcgKzEzMTEsNyBAQCB2
b2lkIF9fc3RkY2FsbCBnbENvcHlUZXhTdWJJbWFnZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50IGxl
dmVsLCBHTGludCB4b2Zmc2V0LCBHTAogCiAgICAgdHJ5CiAgICAgewotICAgICAgICBpZiAoIWds
OjpJc1RleHR1cmVUYXJnZXQodGFyZ2V0KSkKKyAgICAgICAgaWYgKCFnbDo6SXNJbnRlcm5hbFRl
eHR1cmVUYXJnZXQodGFyZ2V0KSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGVycm9y
KEdMX0lOVkFMSURfRU5VTSk7CiAgICAgICAgIH0KQEAgLTE1OTMsNiArMTYyNywzMyBAQCB2b2lk
IF9fc3RkY2FsbCBnbERlbGV0ZVByb2dyYW0oR0x1aW50IHByb2dyYW0pCiAgICAgfQogfQogCit2
b2lkIF9fc3RkY2FsbCBnbERlbGV0ZVF1ZXJpZXNFWFQoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQg
KmlkcykKK3sKKyAgICBFVkVOVCgiKEdMc2l6ZWkgbiA9ICVkLCBjb25zdCBHTHVpbnQgKmlkcyA9
IDB4JTAuOHApIiwgbiwgaWRzKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKG4gPCAw
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9WQUxVRSk7
CisgICAgICAgIH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25M
b3N0Q29udGV4dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBjb250ZXh0LT5kZWxldGVRdWVyeShpZHNbaV0pOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAg
IHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisKIHZvaWQgX19zdGRj
YWxsIGdsRGVsZXRlUmVuZGVyYnVmZmVycyhHTHNpemVpIG4sIGNvbnN0IEdMdWludCogcmVuZGVy
YnVmZmVycykKIHsKICAgICBFVkVOVCgiKEdMc2l6ZWkgbiA9ICVkLCBjb25zdCBHTHVpbnQqIHJl
bmRlcmJ1ZmZlcnMgPSAweCUwLjhwKSIsIG4sIHJlbmRlcmJ1ZmZlcnMpOwpAQCAtMTg4Miw3ICsx
OTQzLDM0IEBAIHZvaWQgX19zdGRjYWxsIGdsRHJhd0FycmF5cyhHTGVudW0gbW9kZSwgR0xpbnQg
Zmlyc3QsIEdMc2l6ZWkgY291bnQpCiAKICAgICAgICAgaWYgKGNvbnRleHQpCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPmRyYXdBcnJheXMobW9kZSwgZmlyc3QsIGNvdW50KTsKKyAg
ICAgICAgICAgIGNvbnRleHQtPmRyYXdBcnJheXMobW9kZSwgZmlyc3QsIGNvdW50LCAwKTsKKyAg
ICAgICAgfQorICAgIH0KKyAgICBjYXRjaChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAg
ICByZXR1cm4gZXJyb3IoR0xfT1VUX09GX01FTU9SWSk7CisgICAgfQorfQorCit2b2lkIF9fc3Rk
Y2FsbCBnbERyYXdBcnJheXNJbnN0YW5jZWRBTkdMRShHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3Qs
IEdMc2l6ZWkgY291bnQsIEdMc2l6ZWkgcHJpbWNvdW50KQoreworICAgIEVWRU5UKCIoR0xlbnVt
IG1vZGUgPSAweCVYLCBHTGludCBmaXJzdCA9ICVkLCBHTHNpemVpIGNvdW50ID0gJWQsIEdMc2l6
ZWkgcHJpbWNvdW50ID0gJWQpIiwgbW9kZSwgZmlyc3QsIGNvdW50LCBwcmltY291bnQpOworCisg
ICAgdHJ5CisgICAgeworICAgICAgICBpZiAoY291bnQgPCAwIHx8IGZpcnN0IDwgMCB8fCBwcmlt
Y291bnQgPCAwKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJ
RF9WQUxVRSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAocHJpbWNvdW50ID4gMCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZ2w6OkNvbnRleHQgKmNvbnRleHQgPSBnbDo6Z2V0Tm9uTG9zdENv
bnRleHQoKTsKKworICAgICAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgY29udGV4dC0+ZHJhd0FycmF5cyhtb2RlLCBmaXJzdCwgY291bnQsIHByaW1j
b3VudCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgY2F0Y2goc3RkOjpi
YWRfYWxsb2MmKQpAQCAtMTkyMiw3ICsyMDEwLDUwIEBAIHZvaWQgX19zdGRjYWxsIGdsRHJhd0Vs
ZW1lbnRzKEdMZW51bSBtb2RlLCBHTHNpemVpIGNvdW50LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2
CiAgICAgICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfRU5VTSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIAotICAgICAgICAgICAgY29udGV4dC0+ZHJhd0VsZW1lbnRzKG1vZGUs
IGNvdW50LCB0eXBlLCBpbmRpY2VzKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmRyYXdFbGVtZW50
cyhtb2RlLCBjb3VudCwgdHlwZSwgaW5kaWNlcywgMCk7CisgICAgICAgIH0KKyAgICB9CisgICAg
Y2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGVycm9yKEdMX09V
VF9PRl9NRU1PUlkpOworICAgIH0KK30KKwordm9pZCBfX3N0ZGNhbGwgZ2xEcmF3RWxlbWVudHNJ
bnN0YW5jZWRBTkdMRShHTGVudW0gbW9kZSwgR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNv
bnN0IEdMdm9pZCAqaW5kaWNlcywgR0xzaXplaSBwcmltY291bnQpCit7CisgICAgRVZFTlQoIihH
TGVudW0gbW9kZSA9IDB4JVgsIEdMc2l6ZWkgY291bnQgPSAlZCwgR0xlbnVtIHR5cGUgPSAweCVY
LCBjb25zdCBHTHZvaWQqIGluZGljZXMgPSAweCUwLjhwLCBHTHNpemVpIHByaW1jb3VudCA9ICVk
KSIsCisgICAgICAgICAgbW9kZSwgY291bnQsIHR5cGUsIGluZGljZXMsIHByaW1jb3VudCk7CisK
KyAgICB0cnkKKyAgICB7CisgICAgICAgIGlmIChjb3VudCA8IDAgfHwgcHJpbWNvdW50IDwgMCkK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfVkFMVUUpOwor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKHByaW1jb3VudCA+IDApCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisK
KyAgICAgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAg
IHN3aXRjaCAodHlwZSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICBjYXNl
IEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX1NI
T1JUOgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgIGNhc2Ug
R0xfVU5TSUdORURfSU5UOgorICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbnRleHQtPnN1cHBv
cnRzMzJiaXRJbmRpY2VzKCkpCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX0VOVU0pOyAgICAKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX0VO
VU0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGNv
bnRleHQtPmRyYXdFbGVtZW50cyhtb2RlLCBjb3VudCwgdHlwZSwgaW5kaWNlcywgcHJpbWNvdW50
KTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICBjYXRjaChzdGQ6OmJhZF9h
bGxvYyYpCkBAIC0xOTg3LDYgKzIxMTgsMzQgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xFbmFibGVWZXJ0
ZXhBdHRyaWJBcnJheShHTHVpbnQgaW5kZXgpCiAgICAgfQogfQogCit2b2lkIF9fc3RkY2FsbCBn
bEVuZFF1ZXJ5RVhUKEdMZW51bSB0YXJnZXQpCit7CisgICAgRVZFTlQoIkdMZW51bSB0YXJnZXQg
PSAweCVYKSIsIHRhcmdldCk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIHN3aXRjaCAodGFy
Z2V0KQorICAgICAgICB7CisgICAgICAgICAgY2FzZSBHTF9BTllfU0FNUExFU19QQVNTRURfRVhU
OiAKKyAgICAgICAgICBjYXNlIEdMX0FOWV9TQU1QTEVTX1BBU1NFRF9DT05TRVJWQVRJVkVfRVhU
OgorICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OiAKKyAgICAgICAgICAg
ICAgcmV0dXJuIGVycm9yKEdMX0lOVkFMSURfRU5VTSk7CisgICAgICAgIH0KKworICAgICAgICBn
bDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4dCgpOworCisgICAgICAg
IGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBjb250ZXh0LT5lbmRRdWVyeSh0
YXJnZXQpOworICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAg
ICB7CisgICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9CisK
IHZvaWQgX19zdGRjYWxsIGdsRmluaXNoRmVuY2VOVihHTHVpbnQgZmVuY2UpCiB7CiAgICAgRVZF
TlQoIihHTHVpbnQgZmVuY2UgPSAlZCkiLCBmZW5jZSk7CkBAIC0yMzY1LDYgKzI1MjQsMzMgQEAg
dm9pZCBfX3N0ZGNhbGwgZ2xHZW5GcmFtZWJ1ZmZlcnMoR0xzaXplaSBuLCBHTHVpbnQqIGZyYW1l
YnVmZmVycykKICAgICB9CiB9CiAKK3ZvaWQgX19zdGRjYWxsIGdsR2VuUXVlcmllc0VYVChHTHNp
emVpIG4sIEdMdWludCogaWRzKQoreworICAgIEVWRU5UKCIoR0xzaXplaSBuID0gJWQsIEdMdWlu
dCogaWRzID0gMHglMC44cCkiLCBuLCBpZHMpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBp
ZiAobiA8IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElE
X1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6
OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsK
KyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKQorICAgICAgICAgICAgewor
ICAgICAgICAgICAgICAgIGlkc1tpXSA9IGNvbnRleHQtPmNyZWF0ZVF1ZXJ5KCk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwog
dm9pZCBfX3N0ZGNhbGwgZ2xHZW5SZW5kZXJidWZmZXJzKEdMc2l6ZWkgbiwgR0x1aW50KiByZW5k
ZXJidWZmZXJzKQogewogICAgIEVWRU5UKCIoR0xzaXplaSBuID0gJWQsIEdMdWludCogcmVuZGVy
YnVmZmVycyA9IDB4JTAuOHApIiwgbiwgcmVuZGVyYnVmZmVycyk7CkBAIC0yODYwLDExICszMDQ2
LDE1IEBAIHZvaWQgX19zdGRjYWxsIGdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVy
aXYoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0dGFjCiAgICAgICAgICAgICB7CiAgICAgICAgICAg
ICAgICAgYXR0YWNobWVudE9iamVjdFR5cGUgPSBhdHRhY2htZW50VHlwZTsKICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGVsc2UgaWYgKGdsOjpJc1RleHR1cmVUYXJnZXQoYXR0YWNobWVudFR5
cGUpKQorICAgICAgICAgICAgZWxzZSBpZiAoZ2w6OklzSW50ZXJuYWxUZXh0dXJlVGFyZ2V0KGF0
dGFjaG1lbnRUeXBlKSkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBhdHRhY2htZW50
T2JqZWN0VHlwZSA9IEdMX1RFWFRVUkU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNl
IFVOUkVBQ0hBQkxFKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgVU5SRUFDSEFCTEUoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIHN3aXRjaCAocG5hbWUpCiAgICAgICAgICAgICB7CkBAIC0z
MDk0LDYgKzMyODQsODIgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xHZXRQcm9ncmFtSW5mb0xvZyhHTHVp
bnQgcHJvZ3JhbSwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpKiBsZW4KICAgICB9CiB9CiAKK3Zv
aWQgX19zdGRjYWxsIGdsR2V0UXVlcnlpdkVYVChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUs
IEdMaW50ICpwYXJhbXMpCit7CisgICAgRVZFTlQoIkdMZW51bSB0YXJnZXQgPSAweCVYLCBHTGVu
dW0gcG5hbWUgPSAweCVYLCBHTGludCAqcGFyYW1zID0gMHglMC44cCkiLCB0YXJnZXQsIHBuYW1l
LCBwYXJhbXMpOworCisgICAgdHJ5CisgICAgeworICAgICAgICBzd2l0Y2ggKHBuYW1lKQorICAg
ICAgICB7CisgICAgICAgICAgY2FzZSBHTF9DVVJSRU5UX1FVRVJZX0VYVDoKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZXJyb3IoR0xf
SU5WQUxJRF9FTlVNKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0
ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHBhcmFtc1swXSA9IGNvbnRleHQtPmdldEFjdGl2ZVF1ZXJ5KHRh
cmdldCk7CisgICAgICAgIH0KKyAgICB9CisgICAgY2F0Y2goc3RkOjpiYWRfYWxsb2MmKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlkpOworICAgIH0KK30KKwor
dm9pZCBfX3N0ZGNhbGwgZ2xHZXRRdWVyeU9iamVjdHVpdkVYVChHTHVpbnQgaWQsIEdMZW51bSBw
bmFtZSwgR0x1aW50ICpwYXJhbXMpCit7CisgICAgRVZFTlQoIihHTHVpbnQgaWQgPSAlZCwgR0xl
bnVtIHBuYW1lID0gMHglWCwgR0x1aW50ICpwYXJhbXMgPSAweCUwLjhwKSIsIGlkLCBwbmFtZSwg
cGFyYW1zKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgc3dpdGNoIChwbmFtZSkKKyAgICAg
ICAgeworICAgICAgICAgIGNhc2UgR0xfUVVFUllfUkVTVUxUX0VYVDoKKyAgICAgICAgICBjYXNl
IEdMX1FVRVJZX1JFU1VMVF9BVkFJTEFCTEVfRVhUOgorICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX0VOVU0p
OworICAgICAgICB9CisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0ID0gZ2w6OmdldE5vbkxv
c3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGdsOjpRdWVyeSAqcXVlcnlPYmplY3QgPSBjb250ZXh0LT5nZXRRdWVyeShpZCwgZmFsc2Us
IEdMX05PTkUpOworCisgICAgICAgICAgICBpZiAoIXF1ZXJ5T2JqZWN0KQorICAgICAgICAgICAg
eworICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChjb250ZXh0LT5nZXRBY3RpdmVRdWVyeShx
dWVyeU9iamVjdC0+Z2V0VHlwZSgpKSA9PSBpZCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBzd2l0Y2gocG5hbWUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
IGNhc2UgR0xfUVVFUllfUkVTVUxUX0VYVDoKKyAgICAgICAgICAgICAgICBwYXJhbXNbMF0gPSBx
dWVyeU9iamVjdC0+Z2V0UmVzdWx0KCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgIGNhc2UgR0xfUVVFUllfUkVTVUxUX0FWQUlMQUJMRV9FWFQ6CisgICAgICAgICAgICAg
ICAgcGFyYW1zWzBdID0gcXVlcnlPYmplY3QtPmlzUmVzdWx0QXZhaWxhYmxlKCk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
QVNTRVJUKGZhbHNlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBjYXRj
aChzdGQ6OmJhZF9hbGxvYyYpCisgICAgeworICAgICAgICByZXR1cm4gZXJyb3IoR0xfT1VUX09G
X01FTU9SWSk7CisgICAgfQorfQorCiB2b2lkIF9fc3RkY2FsbCBnbEdldFJlbmRlcmJ1ZmZlclBh
cmFtZXRlcml2KEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQqIHBhcmFtcykKIHsK
ICAgICBFVkVOVCgiKEdMZW51bSB0YXJnZXQgPSAweCVYLCBHTGVudW0gcG5hbWUgPSAweCVYLCBH
TGludCogcGFyYW1zID0gMHglMC44cCkiLCB0YXJnZXQsIHBuYW1lLCBwYXJhbXMpOwpAQCAtMzM2
NSw4ICszNjMxLDYgQEAgY29uc3QgR0x1Ynl0ZSogX19zdGRjYWxsIGdsR2V0U3RyaW5nKEdMZW51
bSBuYW1lKQogICAgIHsKICAgICAgICAgcmV0dXJuIGVycm9yKEdMX09VVF9PRl9NRU1PUlksIChH
THVieXRlKilOVUxMKTsKICAgICB9Ci0KLSAgICByZXR1cm4gTlVMTDsKIH0KIAogdm9pZCBfX3N0
ZGNhbGwgZ2xHZXRUZXhQYXJhbWV0ZXJmdihHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdM
ZmxvYXQqIHBhcmFtcykKQEAgLTM3MjUsNiArMzk4OSw5IEBAIHZvaWQgX19zdGRjYWxsIGdsR2V0
VmVydGV4QXR0cmliZnYoR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQqIHBhcmFt
cykKICAgICAgICAgICAgICAgICAgICAgcGFyYW1zW2ldID0gYXR0cmliU3RhdGUubUN1cnJlbnRW
YWx1ZVtpXTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgIGNhc2UgR0xfVkVSVEVYX0FUVFJJQl9BUlJBWV9ESVZJU09SX0FOR0xFOgorICAg
ICAgICAgICAgICAgICpwYXJhbXMgPSAoR0xmbG9hdClhdHRyaWJTdGF0ZS5tRGl2aXNvcjsKKyAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgZGVmYXVsdDogcmV0dXJuIGVycm9y
KEdMX0lOVkFMSURfRU5VTSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTM3NzksNiAr
NDA0Niw5IEBAIHZvaWQgX19zdGRjYWxsIGdsR2V0VmVydGV4QXR0cmliaXYoR0x1aW50IGluZGV4
LCBHTGVudW0gcG5hbWUsIEdMaW50KiBwYXJhbXMpCiAgICAgICAgICAgICAgICAgICAgIHBhcmFt
c1tpXSA9IChHTGludCkoY3VycmVudFZhbHVlID4gMC4wZiA/IGZsb29yKGN1cnJlbnRWYWx1ZSAr
IDAuNWYpIDogY2VpbChjdXJyZW50VmFsdWUgLSAwLjVmKSk7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIEdMX1ZFUlRFWF9BVFRS
SUJfQVJSQVlfRElWSVNPUl9BTkdMRToKKyAgICAgICAgICAgICAgICAqcGFyYW1zID0gKEdMaW50
KWF0dHJpYlN0YXRlLm1EaXZpc29yOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgICBkZWZhdWx0OiByZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQpAQCAtMzk5Myw2ICs0MjYzLDM3IEBAIEdMYm9vbGVhbiBfX3N0ZGNhbGwg
Z2xJc1Byb2dyYW0oR0x1aW50IHByb2dyYW0pCiAgICAgcmV0dXJuIEdMX0ZBTFNFOwogfQogCitH
TGJvb2xlYW4gX19zdGRjYWxsIGdsSXNRdWVyeUVYVChHTHVpbnQgaWQpCit7CisgICAgRVZFTlQo
IihHTHVpbnQgaWQgPSAlZCkiLCBpZCk7CisKKyAgICB0cnkKKyAgICB7CisgICAgICAgIGlmIChp
ZCA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gR0xfRkFMU0U7CisgICAgICAg
IH0KKworICAgICAgICBnbDo6Q29udGV4dCAqY29udGV4dCA9IGdsOjpnZXROb25Mb3N0Q29udGV4
dCgpOworCisgICAgICAgIGlmIChjb250ZXh0KQorICAgICAgICB7CisgICAgICAgICAgICBnbDo6
UXVlcnkgKnF1ZXJ5T2JqZWN0ID0gY29udGV4dC0+Z2V0UXVlcnkoaWQsIGZhbHNlLCBHTF9OT05F
KTsKKworICAgICAgICAgICAgaWYgKHF1ZXJ5T2JqZWN0KQorICAgICAgICAgICAgeworICAgICAg
ICAgICAgICAgIHJldHVybiBHTF9UUlVFOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikKKyAgICB7CisgICAgICAgIHJldHVybiBlcnJv
cihHTF9PVVRfT0ZfTUVNT1JZLCBHTF9GQUxTRSk7CisgICAgfQorCisgICAgcmV0dXJuIEdMX0ZB
TFNFOworfQorCiBHTGJvb2xlYW4gX19zdGRjYWxsIGdsSXNSZW5kZXJidWZmZXIoR0x1aW50IHJl
bmRlcmJ1ZmZlcikKIHsKICAgICBFVkVOVCgiKEdMdWludCByZW5kZXJidWZmZXIgPSAlZCkiLCBy
ZW5kZXJidWZmZXIpOwpAQCAtNDcwNiw3ICs1MDA3LDcgQEAgdm9pZCBfX3N0ZGNhbGwgZ2xUZXhJ
bWFnZTJEKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCBpbnRlcm5hbGZvcm1hdCwg
R0wKICAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9JTlZBTElEX1ZBTFVFKTsKICAgICAgICAg
fQogCi0gICAgICAgIGlmIChpbnRlcm5hbGZvcm1hdCAhPSBmb3JtYXQpCisgICAgICAgIGlmIChp
bnRlcm5hbGZvcm1hdCAhPSBHTGludChmb3JtYXQpKQogICAgICAgICB7CiAgICAgICAgICAgICBy
ZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogICAgICAgICB9CkBAIC01MTY4LDcg
KzU0NjksNyBAQCB2b2lkIF9fc3RkY2FsbCBnbFRleFN1YkltYWdlMkQoR0xlbnVtIHRhcmdldCwg
R0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50CiAKICAgICB0cnkKICAgICB7Ci0gICAg
ICAgIGlmICghZ2w6OklzVGV4dHVyZVRhcmdldCh0YXJnZXQpKQorICAgICAgICBpZiAoIWdsOjpJ
c0ludGVybmFsVGV4dHVyZVRhcmdldCh0YXJnZXQpKQogICAgICAgICB7CiAgICAgICAgICAgICBy
ZXR1cm4gZXJyb3IoR0xfSU5WQUxJRF9FTlVNKTsKICAgICAgICAgfQpAQCAtNTk5OSw2ICs2MzAw
LDMwIEBAIHZvaWQgX19zdGRjYWxsIGdsVmVydGV4QXR0cmliNGZ2KEdMdWludCBpbmRleCwgY29u
c3QgR0xmbG9hdCogdmFsdWVzKQogICAgIH0KIH0KIAordm9pZCBfX3N0ZGNhbGwgZ2xWZXJ0ZXhB
dHRyaWJEaXZpc29yQU5HTEUoR0x1aW50IGluZGV4LCBHTHVpbnQgZGl2aXNvcikKK3sKKyAgICBF
VkVOVCgiKEdMdWludCBpbmRleCA9ICVkLCBHTHVpbnQgZGl2aXNvciA9ICVkKSIsIGluZGV4LCBk
aXZpc29yKTsKKworICAgIHRyeQorICAgIHsKKyAgICAgICAgaWYgKGluZGV4ID49IGdsOjpNQVhf
VkVSVEVYX0FUVFJJQlMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBlcnJvcihHTF9J
TlZBTElEX1ZBTFVFKTsKKyAgICAgICAgfQorCisgICAgICAgIGdsOjpDb250ZXh0ICpjb250ZXh0
ID0gZ2w6OmdldE5vbkxvc3RDb250ZXh0KCk7CisKKyAgICAgICAgaWYgKGNvbnRleHQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGNvbnRleHQtPnNldFZlcnRleEF0dHJpYkRpdmlzb3IoaW5kZXgs
IGRpdmlzb3IpOworICAgICAgICB9CisgICAgfQorICAgIGNhdGNoKHN0ZDo6YmFkX2FsbG9jJikK
KyAgICB7CisgICAgICAgIHJldHVybiBlcnJvcihHTF9PVVRfT0ZfTUVNT1JZKTsKKyAgICB9Cit9
CisKIHZvaWQgX19zdGRjYWxsIGdsVmVydGV4QXR0cmliUG9pbnRlcihHTHVpbnQgaW5kZXgsIEdM
aW50IHNpemUsIEdMZW51bSB0eXBlLCBHTGJvb2xlYW4gbm9ybWFsaXplZCwgR0xzaXplaSBzdHJp
ZGUsIGNvbnN0IEdMdm9pZCogcHRyKQogewogICAgIEVWRU5UKCIoR0x1aW50IGluZGV4ID0gJWQs
IEdMaW50IHNpemUgPSAlZCwgR0xlbnVtIHR5cGUgPSAweCVYLCAiCkBAIC02MTY0LDYgKzY0ODks
MTYgQEAgX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSBfX3N0ZGNhbGwg
Z2xHZXRQcm9jQWRkcmVzcyhjb25zdCBjaGFyICoKICAgICAgICAgeyJnbFJlYWRuUGl4ZWxzRVhU
IiwgKF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUpZ2xSZWFkblBpeGVs
c0VYVH0sCiAgICAgICAgIHsiZ2xHZXRuVW5pZm9ybWZ2RVhUIiwgKF9fZWdsTXVzdENhc3RUb1By
b3BlckZ1bmN0aW9uUG9pbnRlclR5cGUpZ2xHZXRuVW5pZm9ybWZ2RVhUfSwKICAgICAgICAgeyJn
bEdldG5Vbmlmb3JtaXZFWFQiLCAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVy
VHlwZSlnbEdldG5Vbmlmb3JtaXZFWFR9LAorICAgICAgICB7ImdsR2VuUXVlcmllc0VYVCIsIChf
X2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKWdsR2VuUXVlcmllc0VYVH0s
CisgICAgICAgIHsiZ2xEZWxldGVRdWVyaWVzRVhUIiwgKF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1
bmN0aW9uUG9pbnRlclR5cGUpZ2xEZWxldGVRdWVyaWVzRVhUfSwKKyAgICAgICAgeyJnbElzUXVl
cnlFWFQiLCAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSlnbElzUXVl
cnlFWFR9LAorICAgICAgICB7ImdsQmVnaW5RdWVyeUVYVCIsIChfX2VnbE11c3RDYXN0VG9Qcm9w
ZXJGdW5jdGlvblBvaW50ZXJUeXBlKWdsQmVnaW5RdWVyeUVYVH0sCisgICAgICAgIHsiZ2xFbmRR
dWVyeUVYVCIsIChfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKWdsRW5k
UXVlcnlFWFR9LAorICAgICAgICB7ImdsR2V0UXVlcnlpdkVYVCIsIChfX2VnbE11c3RDYXN0VG9Q
cm9wZXJGdW5jdGlvblBvaW50ZXJUeXBlKWdsR2V0UXVlcnlpdkVYVH0sCisgICAgICAgIHsiZ2xH
ZXRRdWVyeU9iamVjdHVpdkVYVCIsIChfX2VnbE11c3RDYXN0VG9Qcm9wZXJGdW5jdGlvblBvaW50
ZXJUeXBlKWdsR2V0UXVlcnlPYmplY3R1aXZFWFR9LAorICAgICAgICB7ImdsVmVydGV4QXR0cmli
RGl2aXNvckFOR0xFIiwgKF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUp
Z2xWZXJ0ZXhBdHRyaWJEaXZpc29yQU5HTEV9LAorICAgICAgICB7ImdsRHJhd0FycmF5c0luc3Rh
bmNlZEFOR0xFIiwgKF9fZWdsTXVzdENhc3RUb1Byb3BlckZ1bmN0aW9uUG9pbnRlclR5cGUpZ2xE
cmF3QXJyYXlzSW5zdGFuY2VkQU5HTEV9LAorICAgICAgICB7ImdsRHJhd0VsZW1lbnRzSW5zdGFu
Y2VkQU5HTEUiLCAoX19lZ2xNdXN0Q2FzdFRvUHJvcGVyRnVuY3Rpb25Qb2ludGVyVHlwZSlnbERy
YXdFbGVtZW50c0luc3RhbmNlZEFOR0xFfSwKICAgICB9OwogCiAgICAgZm9yIChpbnQgZXh0ID0g
MDsgZXh0IDwgc2l6ZW9mKGdsRXh0ZW5zaW9ucykgLyBzaXplb2YoRXh0ZW5zaW9uKTsgZXh0Kysp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xpYkdM
RVN2Mi5kZWYgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL2xpYkdMRVN2
Mi5kZWYKaW5kZXggMjE3M2Y3NGZiZDVmOTQ0MzEwNzE5MzI2ZjFiNmE2NzQyNDQ2NjdiMC4uZWE3
NzY5YmE1NGI0ZDUzMDM2ZDI4NjBjMTY3OTQ0NjIyZWQ5NDA4ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9saWJHTEVTdjIuZGVmCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbGliR0xFU3YyLmRlZgpAQCAtMTYwLDYg
KzE2MCwxNiBAQCBFWFBPUlRTCiAgICAgZ2xSZWFkblBpeGVsc0VYVCAgICAgICAgICAgICAgICBA
MTYyCiAgICAgZ2xHZXRuVW5pZm9ybWZ2RVhUICAgICAgICAgICAgICBAMTYzCiAgICAgZ2xHZXRu
VW5pZm9ybWl2RVhUICAgICAgICAgICAgICBAMTY0CisgICAgZ2xHZW5RdWVyaWVzRVhUICAgICAg
ICAgICAgICAgICBAMTY1CisgICAgZ2xEZWxldGVRdWVyaWVzRVhUICAgICAgICAgICAgICBAMTY2
CisgICAgZ2xJc1F1ZXJ5RVhUICAgICAgICAgICAgICAgICAgICBAMTY3CisgICAgZ2xCZWdpblF1
ZXJ5RVhUICAgICAgICAgICAgICAgICBAMTY4CisgICAgZ2xFbmRRdWVyeUVYVCAgICAgICAgICAg
ICAgICAgICBAMTY5CisgICAgZ2xHZXRRdWVyeWl2RVhUICAgICAgICAgICAgICAgICBAMTcwCisg
ICAgZ2xHZXRRdWVyeU9iamVjdHVpdkVYVCAgICAgICAgICBAMTcxCisgICAgZ2xWZXJ0ZXhBdHRy
aWJEaXZpc29yQU5HTEUgICAgICBAMTcyCisgICAgZ2xEcmF3QXJyYXlzSW5zdGFuY2VkQU5HTEUg
ICAgICBAMTczCisgICAgZ2xEcmF3RWxlbWVudHNJbnN0YW5jZWRBTkdMRSAgICBAMTc0CiAKICAg
ICA7IEVHTCBkZXBlbmRlbmNpZXMKICAgICBnbENyZWF0ZUNvbnRleHQgICAgICAgICAgICAgICAg
IEAxNDQgTk9OQU1FCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
R0xFU3YyL2xpYkdMRVN2Mi52Y3Byb2ogYi9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGli
R0xFU3YyL2xpYkdMRVN2Mi52Y3Byb2oKaW5kZXggODBmMTVhMTRlODNlNGY0YmFlNDA2NWY2MWQ3
NDNmNjlhYTMwZDBjOC4uN2QyYjY0OWMyNWU2MGRiOTlhZjg5Yzk1OTZjOGU3NmM0OTZmMWE1NSAx
MDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi9saWJHTEVT
djIudmNwcm9qCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NyYy9saWJHTEVTdjIvbGli
R0xFU3YyLnZjcHJvagpAQCAtNTAsOSArNTAsMTEgQEAKIAkJCQlCYXNpY1J1bnRpbWVDaGVja3M9
IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjEiCiAJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAi
Ci0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKKwkJCQlEaXNhYmxl
U3BlY2lmaWNXYXJuaW5ncz0iNDEwMDs0MTI3OzQxODk7NDIzOTs0MjQ0OzQyNDU7NDUxMjs0NzAy
IgogCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iZmFsc2UiCiAJCQkJRGVidWdJ
bmZvcm1hdGlvbkZvcm1hdD0iNCIKKwkJCQlXYXJuQXNFcnJvcj0idHJ1ZSIKIAkJCS8+CiAJCQk8
VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMTI4LDkg
KzEzMCwxMSBAQAogCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X1dJ
TkRPV1M7X1VTUkRMTDtMSUJHTEVTVjJfRVhQT1JUUztfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7
Tk9NSU5NQVg7X1NFQ1VSRV9TQ0w9MCIKIAkJCQlSdW50aW1lTGlicmFyeT0iMCIKIAkJCQlVc2VQ
cmVjb21waWxlZEhlYWRlcj0iMCIKLQkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJV2FybmluZ0xl
dmVsPSI0IgorCQkJCURpc2FibGVTcGVjaWZpY1dhcm5pbmdzPSI0MTAwOzQxMjc7NDE4OTs0MjM5
OzQyNDQ7NDI0NTs0NTEyOzQ3MDI7NDcxOCIKIAkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJv
YmxlbXM9ImZhbHNlIgogCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCisJCQkJV2FybkFz
RXJyb3I9InRydWUiCiAJCQkvPgogCQkJPFRvb2wKIAkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJj
ZUNvbXBpbGVyVG9vbCIKQEAgLTIxMCw5ICsyMTQsMTEgQEAKIAkJCQlCYXNpY1J1bnRpbWVDaGVj
a3M9IjMiCiAJCQkJUnVudGltZUxpYnJhcnk9IjEiCiAJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9
IjAiCi0JCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVdhcm5pbmdMZXZlbD0iNCIKKwkJCQlEaXNh
YmxlU3BlY2lmaWNXYXJuaW5ncz0iNDEwMDs0MTI3OzQxODk7NDIzOTs0MjQ0OzQyNDU7NDUxMjs0
NzAyOzQ3MTgiCiAJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJmYWxzZSIKIAkJ
CQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgorCQkJCVdhcm5Bc0Vycm9yPSJ0cnVlIgogCQkJ
Lz4KIAkJCTxUb29sCiAJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCkBA
IC0yODksOSArMjk1LDExIEBACiAJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05E
RUJVRztfV0lORE9XUztfVVNSRExMO0xJQkdMRVNWMl9FWFBPUlRTO19DUlRfU0VDVVJFX05PX0RF
UFJFQ0FURTtOT01JTk1BWDtfU0VDVVJFX1NDTD0wIgogCQkJCVJ1bnRpbWVMaWJyYXJ5PSIwIgog
CQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIgotCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlX
YXJuaW5nTGV2ZWw9IjQiCisJCQkJRGlzYWJsZVNwZWNpZmljV2FybmluZ3M9IjQxMDA7NDEyNzs0
MTg5OzQyMzk7NDI0NDs0MjQ1OzQ1MTI7NDcwMjs0NzE4IgogCQkJCURldGVjdDY0Qml0UG9ydGFi
aWxpdHlQcm9ibGVtcz0iZmFsc2UiCiAJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKKwkJ
CQlXYXJuQXNFcnJvcj0idHJ1ZSIKIAkJCS8+CiAJCQk8VG9vbAogCQkJCU5hbWU9IlZDTWFuYWdl
ZFJlc291cmNlQ29tcGlsZXJUb29sIgpAQCAtMzkzLDcgKzQwMSwxMSBAQAogCQkJCT4KIAkJCTwv
RmlsZT4KIAkJCTxGaWxlCi0JCQkJUmVsYXRpdmVQYXRoPSIuXFJlZkNvdW50T2JqZWN0LmNwcCIK
KwkJCQlSZWxhdGl2ZVBhdGg9Ii5cUXVlcnkuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxG
aWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxjb21tb25cUmVmQ291bnRPYmplY3QuY3BwIgogCQkJ
CT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCkBAIC00NzksNyArNDkxLDExIEBACiAJCQkJPgogCQkJ
PC9GaWxlPgogCQkJPEZpbGUKLQkJCQlSZWxhdGl2ZVBhdGg9Ii5cUmVmQ291bnRPYmplY3QuaCIK
KwkJCQlSZWxhdGl2ZVBhdGg9Ii5cUXVlcnkuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8Rmls
ZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cY29tbW9uXFJlZkNvdW50T2JqZWN0LmgiCiAJCQkJPgog
CQkJPC9GaWxlPgogCQkJPEZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xF
L3NyYy9saWJHTEVTdjIvdXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3Ny
Yy9saWJHTEVTdjIvdXRpbGl0aWVzLmNwcAppbmRleCA2ZGM0MTljN2FkNTBmYTRjYTA2YTAzODYz
ZDY1YjBkMGZjZTZiYWNjLi42NTg5ZWIxMjE0ZjViN2JlMjBmM2UwNzAzYWM2NTFlYzdiMDI0MWI4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3V0aWxp
dGllcy5jcHAKKysrIGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi91dGls
aXRpZXMuY3BwCkBAIC0zMjgsNyArMzI4LDcgQEAgYm9vbCBJc0N1YmVtYXBUZXh0dXJlVGFyZ2V0
KEdMZW51bSB0YXJnZXQpCiAgICAgcmV0dXJuICh0YXJnZXQgPj0gR0xfVEVYVFVSRV9DVUJFX01B
UF9QT1NJVElWRV9YICYmIHRhcmdldCA8PSBHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1op
OwogfQogCi1ib29sIElzVGV4dHVyZVRhcmdldChHTGVudW0gdGFyZ2V0KQorYm9vbCBJc0ludGVy
bmFsVGV4dHVyZVRhcmdldChHTGVudW0gdGFyZ2V0KQogewogICAgIHJldHVybiB0YXJnZXQgPT0g
R0xfVEVYVFVSRV8yRCB8fCBJc0N1YmVtYXBUZXh0dXJlVGFyZ2V0KHRhcmdldCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9zcmMvbGliR0xFU3YyL3V0aWxpdGllcy5o
IGIvU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc3JjL2xpYkdMRVN2Mi91dGlsaXRpZXMuaAppbmRl
eCA3MzVmYTUwM2RlMzY4NDBmYTMzYzU0MmMxMDA4NzYxNDgwMGM2MDYzLi44ODIzOGRjYjE5Yzcy
OWE4ZmM3NTMxNzQyNDExZWNjNWJjNzQ3NWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9zcmMvbGliR0xFU3YyL3V0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L0FOR0xFL3NyYy9saWJHTEVTdjIvdXRpbGl0aWVzLmgKQEAgLTM3LDcgKzM3LDcgQEAgR0xzaXpl
aSBDb21wdXRlQ29tcHJlc3NlZFBpdGNoKEdMc2l6ZWkgd2lkdGgsIEdMZW51bSBmb3JtYXQpOwog
R0xzaXplaSBDb21wdXRlQ29tcHJlc3NlZFNpemUoR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWln
aHQsIEdMZW51bSBmb3JtYXQpOwogYm9vbCBJc0NvbXByZXNzZWQoR0xlbnVtIGZvcm1hdCk7CiBi
b29sIElzQ3ViZW1hcFRleHR1cmVUYXJnZXQoR0xlbnVtIHRhcmdldCk7Ci1ib29sIElzVGV4dHVy
ZVRhcmdldChHTGVudW0gdGFyZ2V0KTsKK2Jvb2wgSXNJbnRlcm5hbFRleHR1cmVUYXJnZXQoR0xl
bnVtIHRhcmdldCk7CiBib29sIENoZWNrVGV4dHVyZUZvcm1hdFR5cGUoR0xlbnVtIGZvcm1hdCwg
R0xlbnVtIHR5cGUpOwogR0xlbnVtIEV4dHJhY3RGb3JtYXQoR0xlbnVtIGludGVybmFsZm9ybWF0
KTsKIEdMZW51bSBFeHRyYWN0VHlwZShHTGVudW0gaW50ZXJuYWxmb3JtYXQpOwo=
</data>
<flag name="review"
          id="138082"
          type_id="1"
          status="+"
          setter="kbr"
    />
          </attachment>
      

    </bug>

</bugzilla>