<?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>14193</bug_id>
          
          <creation_ts>2007-06-16 19:48:16 -0700</creation_ts>
          <short_desc>Move the Screen object out of the JS bindings</short_desc>
          <delta_ts>2007-06-18 17:21:21 -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>DOM</component>
          <version>523.x (Safari 3)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>14192</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>7299</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-06-16 19:48:16 -0700</bug_when>
    <thetext>Forthcoming patch moves the Screen object out of the JS bindings code and autogenerates a wrapper instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>7300</commentid>
    <comment_count>1</comment_count>
      <attachid>15081</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-06-16 20:12:36 -0700</bug_when>
    <thetext>Created attachment 15081
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>7301</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-06-16 20:16:24 -0700</bug_when>
    <thetext>One change from the old code that this patch makes is that the properties of the Screen object used to be DontEnum|ReadOnly and now are DontDelete|ReadOnly.  I found no documentation or reason that the screen properties should be non-enumeratable and deletable so I changed them to be just like all the the other js objects we generate.   This change is visible in the changed results of the regression tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>7161</commentid>
    <comment_count>3</comment_count>
      <attachid>15081</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2007-06-18 11:23:42 -0700</bug_when>
    <thetext>Comment on attachment 15081
patch

r=me

Will the other platforms&apos; projects need to change to accommodate the new file paths? Maybe you should send email to webkit-dev.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>7119</commentid>
    <comment_count>4</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-06-18 17:21:21 -0700</bug_when>
    <thetext>Landed in r23576.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>15081</attachid>
            <date>2007-06-16 20:12:36 -0700</date>
            <delta_ts>2007-06-18 11:23:42 -0700</delta_ts>
            <desc>patch</desc>
            <filename>autoScreen.diff</filename>
            <type>text/plain</type>
            <size>79019</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMzU1OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjUgQEAKKzIwMDctMDYtMTYgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXRjaCBm
b3IgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQxOTMKKyAgICAgICAg
TW92ZSB0aGUgU2NyZWVuIG9iamVjdCBvdXQgb2YgdGhlIEpTIGJpbmRpbmdzCisKKyAgICAgICAg
LSBSZW5hbWVzIFNjcmVlbi5oIHRvIFBsYXRmb3JtU2NyZWVuLmggdG8gYWNjb21tb2RhdGUgbmV3
IGNsYXNzLgorICAgICAgICAtIEF1dG9nZW5lcmF0ZXMgSlNTY3JlZW4uCisKKyAgICAgICAgKiBE
ZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9ranNfd2luZG93LmNwcDoK
KyAgICAgICAgKEtKUzo6V2luZG93UHJpdmF0ZTo6V2luZG93UHJpdmF0ZSk6CisgICAgICAgIChL
SlM6OldpbmRvdzo6bWFyayk6CisgICAgICAgIChLSlM6OldpbmRvdzo6Z2V0VmFsdWVQcm9wZXJ0
eSk6CisgICAgICAgIChLSlM6OldpbmRvdzo6Y2xlYXJIZWxwZXJPYmplY3RQcm9wZXJ0aWVzKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9ranNfd2luZG93Lmg6CisgICAgICAgIChLSlM6OldpbmRv
dzo6KToKKyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHA6CisgICAgICAgICog
cGFnZS9ET01XaW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpET01XaW5k
b3cpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojp+RE9NV2luZG93KToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTVdpbmRvdzo6ZnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93
OjpkaXNjb25uZWN0RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpzY3JlZW4p
OgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93Lmg6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cu
aWRsOgorICAgICAgICAqIHBhZ2UvU2NyZWVuLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpTY3JlZW46OlNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpTY3JlZW46OmRpc2Nvbm5lY3RG
cmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JlZW46OmhlaWdodCk6CisgICAgICAgIChXZWJD
b3JlOjpTY3JlZW46OndpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmVlbjo6Y29sb3JEZXB0
aCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JlZW46OnBpeGVsRGVwdGgpOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyZWVuOjphdmFpbExlZnQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyZWVuOjphdmFp
bFRvcCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JlZW46OmF2YWlsSGVpZ2h0KToKKyAgICAgICAg
KFdlYkNvcmU6OlNjcmVlbjo6YXZhaWxXaWR0aCk6CisgICAgICAgICogcGFnZS9TY3JlZW4uaDog
QWRkZWQuCisgICAgICAgICogcGFnZS9TY3JlZW4uaWRsOiBBZGRlZC4KKyAgICAgICAgKiBwYWdl
L21hYy9XZWJDb3JlRnJhbWVCcmlkZ2UubW06CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1T
Y3JlZW4uaDogQ29waWVkIGZyb20gV2ViQ29yZS9wbGF0Zm9ybS9TY3JlZW4uaC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9TY3JlZW4uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9nZGsvUGxh
dGZvcm1TY3JlZW5HZGsuY3BwOiBDb3BpZWQgZnJvbSBXZWJDb3JlL3BsYXRmb3JtL2dkay9TY3Jl
ZW5HZGsuY3BwLgorICAgICAgICAqIHBsYXRmb3JtL2dkay9TY3JlZW5HZGsuY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIHBsYXRmb3JtL21hYy9QbGF0Zm9ybU1vdXNlRXZlbnRNYWMubW06CisgICAg
ICAgICogcGxhdGZvcm0vbWFjL1BsYXRmb3JtU2NyZWVuTWFjLm1tOiBDb3BpZWQgZnJvbSBXZWJD
b3JlL3BsYXRmb3JtL21hYy9TY3JlZW5NYWMubW0uCisgICAgICAgICogcGxhdGZvcm0vbWFjL1Nj
cmVlbk1hYy5tbTogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9QbGF0Zm9ybVNjcmVl
blF0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlOjpzY3JlZW5EZXB0aCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlOjpzY3JlZW5EZXB0aFBlckNvbXBvbmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpXZWJDb3JlOjpzY3JlZW5Jc01vbm9jaHJvbWUpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViQ29yZTo6c2NyZWVuUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3Jl
OjpzY3JlZW5BdmFpbGFibGVSZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9UZW1wb3JhcnlM
aW5rU3R1YnMuY3BwOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QbGF0Zm9ybVNjcmVlbldpbi5j
cHA6IENvcGllZCBmcm9tIFdlYkNvcmUvcGxhdGZvcm0vd2luL1NjcmVlbldpbi5jcHAuCisgICAg
ICAgICogcGxhdGZvcm0vd2luL1NjcmVlbldpbi5jcHA6IFJlbW92ZWQuCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisKIDIwMDctMDYtMTUgIERhdmlkIEh5YXR0ICA8aHlh
dHRAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBmb3IgYnVnemlsbGEgYnVncyAxNDE4MyBhbmQg
MTQxODQsICdyZXBlYXQnIHJlZ3Jlc3NlZCBpbiBib3JkZXItaW1hZ2UKSW5kZXg6IFdlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UJKHJldmlzaW9uIDIzNTU3KQorKysgV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3
b3JraW5nIGNvcHkpCkBAIC00MDcsNyArNDA3LDYgQEAgYWxsIDogXAogICAgIEpTUmFuZ2UuaCBc
CiAgICAgSlNSYW5nZUV4Y2VwdGlvbi5oIFwKICAgICBKU1JlY3QuaCBcCi0gICAgSlNTVkdab29t
RXZlbnQuaCBcCiAgICAgSlNTVkdBRWxlbWVudC5oIFwKICAgICBKU1NWR0FuZ2xlLmggXAogICAg
IEpTU1ZHQW5pbWF0ZWRBbmdsZS5oIFwKQEAgLTUzMCw2ICs1MjksOCBAQCBhbGwgOiBcCiAgICAg
SlNTVkdNYXNrRWxlbWVudC5oIFwKICAgICBKU1NWR01hcmtlckVsZW1lbnQuaCBcCiAgICAgSlNT
VkdUcmFuc2Zvcm0uaCBcCisgICAgSlNTVkdab29tRXZlbnQuaCBcCisgICAgSlNTY3JlZW4uaCBc
CiAgICAgSlNTdHlsZVNoZWV0LmggXAogICAgIEpTVGV4dC5oIFwKICAgICBKU1RleHRFdmVudC5o
IFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJD
b3JlLnBybwkocmV2aXNpb24gMjM1NTcpCisrKyBXZWJDb3JlL1dlYkNvcmUucHJvCSh3b3JraW5n
IGNvcHkpCkBAIC03NjMsMTIgKzc2MywxMiBAQCBxdC1wb3J0OlNPVVJDRVMgKz0gXAogICAgIHBs
YXRmb3JtL3F0L1Bhc3RlYm9hcmRRdC5jcHAgXAogICAgIHBsYXRmb3JtL3F0L1BsYXRmb3JtS2V5
Ym9hcmRFdmVudFF0LmNwcCBcCiAgICAgcGxhdGZvcm0vcXQvUGxhdGZvcm1Nb3VzZUV2ZW50UXQu
Y3BwIFwKKyAgICBwbGF0Zm9ybS9xdC9QbGF0Zm9ybVNjcmVlblF0LmNwcCBcCiAgICAgcGxhdGZv
cm0vcXQvUGxhdGZvcm1TY3JvbGxCYXJRdC5jcHAgXAogICAgIHBsYXRmb3JtL3F0L1BsdWdJbklu
Zm9TdG9yZVF0LmNwcCBcCiAgICAgcGxhdGZvcm0vcXQvUG9wdXBNZW51UXQuY3BwIFwKICAgICBw
bGF0Zm9ybS9xdC9RV2ViUG9wdXAuY3BwIFwKICAgICBwbGF0Zm9ybS9xdC9SZW5kZXJUaGVtZVF0
LmNwcCBcCi0gICAgcGxhdGZvcm0vcXQvU2NyZWVuUXQuY3BwIFwKICAgICBwbGF0Zm9ybS9xdC9T
Y3JvbGxWaWV3UXQuY3BwIFwKICAgICBwbGF0Zm9ybS9xdC9TZWFyY2hQb3B1cE1lbnVRdC5jcHAg
XAogICAgIHBsYXRmb3JtL3F0L1NoYXJlZFRpbWVyUXQuY3BwIFwKQEAgLTgxOSwxMSArODE5LDEx
IEBAIGdkay1wb3J0OlNPVVJDRVMgKz0gXAogICAgICAgICBwbGF0Zm9ybS9nZGsvTG9nZ2luZ0dk
ay5jcHAgXAogICAgICAgICBwbGF0Zm9ybS9nZGsvTWltZVR5cGVSZWdpc3RyeUdkay5jcHAgXAog
ICAgICAgICBwbGF0Zm9ybS9nZGsvTW91c2VFdmVudEdkay5jcHAgXAorICAgICAgICBwbGF0Zm9y
bS9nZGsvUGxhdGZvcm1TY3JlZW5HZGsuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ2RrL1BsYXRm
b3JtU2Nyb2xsQmFyR2RrLmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL2dkay9Qb3B1cE1lbnVHZGsu
Y3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ2RrL1JlbmRlclRoZW1lR2RrLmNwcCBcCiAgICAgICAg
IHBsYXRmb3JtL2dkay9TY3JvbGxWaWV3R2RrLmNwcCBcCi0gICAgICAgIHBsYXRmb3JtL2dkay9T
Y3JlZW5HZGsuY3BwIFwKICAgICAgICAgcGxhdGZvcm0vZ2RrL1NoYXJlZFRpbWVyTGludXguY3Bw
IFwKICAgICAgICAgcGxhdGZvcm0vZ2RrL1N5c3RlbVRpbWVMaW51eC5jcHAgXAogICAgICAgICBw
bGF0Zm9ybS9nZGsvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcCBcCkluZGV4OiBXZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDIzNTU1KQorKysgV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMzAzNCw3ICszMDM0LDcg
QEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQotCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxh
dGZvcm1cU2NyZWVuLmgiCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxQbGF0Zm9ybVNj
cmVlbi5oIgogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCkBAIC0zMzUzLDcgKzMzNTMsNyBA
QAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxGaWxlCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5c
cGxhdGZvcm1cd2luXFNjcmVlbldpbi5jcHAiCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZv
cm1cd2luXFBsYXRmb3JtU2NyZWVuV2luLmNwcCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8
RmlsZQpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDIzNTU3KQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDYgQEAKIAkJMDZGQzQ0MkQwQkFFNUE5RTAw
OTBFREUxIC8qIEphdmFTY3JpcHRTdGF0aXN0aWNzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA2RkM0NDJCMEJBRTVBOUUwMDkwRURFMSAvKiBKYXZh
U2NyaXB0U3RhdGlzdGljcy5jcHAgKi87IH07CiAJCTA2RkM0NDJFMEJBRTVBOUUwMDkwRURFMSAv
KiBKYXZhU2NyaXB0U3RhdGlzdGljcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDZGQzQ0MkMwQkFFNUE5RTAwOTBFREUxIC8qIEphdmFTY3JpcHRTdGF0
aXN0aWNzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMTQwMjY0NUUwQUZEQzE5QjAwNTkxOUUyIC8qIExvZ2dpbmdNYWMubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDAyNjQ1RDBBRkRDMTlCMDA1OTE5
RTIgLyogTG9nZ2luZ01hYy5tbSAqLzsgfTsKLQkJMTQwMjY5MkQwQUZFNzJEODAwNTkxOUUyIC8q
IFNjcmVlbk1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE0MDI2OTJDMEFGRTcyRDgwMDU5MTlFMiAvKiBTY3JlZW5NYWMubW0gKi87IH07CiAJCTE0
MDNCOTk3MDlFQjEzQUYwMDc5N0M3RiAvKiBET01XaW5kb3cuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MDNCOTk1MDlFQjEzQUYwMDc5N0M3RiAvKiBE
T01XaW5kb3cuaCAqLzsgfTsKIAkJMTQwM0I5OTgwOUVCMTNBRjAwNzk3QzdGIC8qIERPTVdpbmRv
dy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDAz
Qjk5NjA5RUIxM0FGMDA3OTdDN0YgLyogRE9NV2luZG93LmNwcCAqLzsgfTsKIAkJMTQwM0JBMEMw
OUVCMThDNzAwNzk3QzdGIC8qIEpTRE9NV2luZG93LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0MDNCQTBCMDlFQjE4QzcwMDc5N0M3RiAvKiBKU0RP
TVdpbmRvdy5jcHAgKi87IH07CkBAIC01NSw3ICs1NCw2IEBACiAJCTE0OEEwMDExMEFGNTlGM0Yw
MDhDQzcwMCAvKiBGb250UGxhdGZvcm1EYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxNDhBMDAxMDBBRjU5RjNGMDA4Q0M3MDAgLyogRm9udFBsYXRm
b3JtRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTE0OEFGREE1MEFGNTgzNjAwMDhDQzcwMCAvKiBFeGNlcHRpb25IYW5kbGVycy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ4QUZEQTMwQUY1ODM2
MDAwOENDNzAwIC8qIEV4Y2VwdGlvbkhhbmRsZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMTQ4QUZEQTYwQUY1ODM2MDAwOENDNzAwIC8qIEV4
Y2VwdGlvbkhhbmRsZXJzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMTQ4QUZEQTQwQUY1ODM2MDAwOENDNzAwIC8qIEV4Y2VwdGlvbkhhbmRsZXJzLm1t
ICovOyB9OwotCQkxNDhDRjY1RTBCMDA1NjE0MDBBOTk3RkMgLyogU2NyZWVuLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDhDRjY1RDBCMDA1NjE0MDBB
OTk3RkMgLyogU2NyZWVuLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMTQ5OTNCRTUwQjJGMkIxQzAwNTA0OTdGIC8qIEZvY3VzQ29udHJvbGxlci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDk5M0JF
MzBCMkYyQjFDMDA1MDQ5N0YgLyogRm9jdXNDb250cm9sbGVyLmNwcCAqLzsgfTsKIAkJMTQ5OTNC
RTYwQjJGMkIxQzAwNTA0OTdGIC8qIEZvY3VzQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ5OTNCRTQwQjJGMkIxQzAwNTA0OTdGIC8q
IEZvY3VzQ29udHJvbGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTE0QzlBNUVBMEIzRDEwNUYwMDVBMDIzMiAvKiBTZXR0aW5ncy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNEM5QTVFOTBCM0Qx
MDVGMDA1QTAyMzIgLyogU2V0dGluZ3MuY3BwICovOyB9OwpAQCAtMjczNCw2ICsyNzMyLDEzIEBA
CiAJCUJDMDZFREU0MEJGRDZEMEQwMDg1NkU5RCAvKiBKU0hUTUxUYWJsZUNlbGxFbGVtZW50Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzA2RURFMjBC
RkQ2RDBEMDA4NTZFOUQgLyogSlNIVE1MVGFibGVDZWxsRWxlbWVudC5oICovOyB9OwogCQlCQzA2
RUUwNDBCRkQ3MUFBMDA4NTZFOUQgLyogSlNIVE1MVGFibGVFbGVtZW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMDZFRTAyMEJGRDcxQUEwMDg1
NkU5RCAvKiBKU0hUTUxUYWJsZUVsZW1lbnQuY3BwICovOyB9OwogCQlCQzA2RUUwNTBCRkQ3MUFB
MDA4NTZFOUQgLyogSlNIVE1MVGFibGVFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzA2RUUwMzBCRkQ3MUFBMDA4NTZFOUQgLyogSlNIVE1M
VGFibGVFbGVtZW50LmggKi87IH07CisJCUJDMTI2RDc2MEMyNDdBM0UwMDJGNEIxQiAvKiBTY3Jl
ZW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMTI2
RDc1MEMyNDdBM0UwMDJGNEIxQiAvKiBTY3JlZW4uaCAqLzsgfTsKKwkJQkMxMjZEN0EwQzI0N0E5
MDAwMkY0QjFCIC8qIFNjcmVlbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCQzEyNkQ3OTBDMjQ3QTkwMDAyRjRCMUIgLyogU2NyZWVuLmNwcCAqLzsg
fTsKKwkJQkMxMjZEODQwQzI0N0IwNzAwMkY0QjFCIC8qIFNjcmVlbi5pZGwgaW4gUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMTI2RDgzMEMyNDdCMDcwMDJG
NEIxQiAvKiBTY3JlZW4uaWRsICovOyB9OworCQlCQzEyNkRBQTBDMjQ3REZCMDAyRjRCMUIgLyog
UGxhdGZvcm1TY3JlZW4uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDMTI2REE5MEMyNDdERkIwMDJGNEIxQiAvKiBQbGF0Zm9ybVNjcmVlbi5oICovOyB9
OworCQlCQzEyNkVCMTBDMjQ5MzA1MDAyRjRCMUIgLyogSlNTY3JlZW4uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxMjZFQUYwQzI0OTMwNDAwMkY0
QjFCIC8qIEpTU2NyZWVuLmNwcCAqLzsgfTsKKwkJQkMxMjZFQjIwQzI0OTMwNTAwMkY0QjFCIC8q
IEpTU2NyZWVuLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQzEyNkVCMDBDMjQ5MzA0MDAyRjRCMUIgLyogSlNTY3JlZW4uaCAqLzsgfTsKKwkJQkMxMjZG
MjYwQzI0RDQ2NDAwMkY0QjFCIC8qIFBsYXRmb3JtU2NyZWVuTWFjLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxMjZGMjUwQzI0RDQ2NDAwMkY0QjFC
IC8qIFBsYXRmb3JtU2NyZWVuTWFjLm1tICovOyB9OwogCQlCQzE3Rjk2NjBCNjRFQkI4MDA0QTY1
Q0IgLyogSlNIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzE3Rjk2NTBCNjRFQkI4MDA0QTY1Q0IgLyogSlNI
VE1MU2VsZWN0RWxlbWVudEN1c3RvbS5jcHAgKi87IH07CiAJCUJDMThDNUQwMEIyQTg4NkYwMDE4
NDYxRCAvKiBUZXh0QnJlYWtJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkMxOEM1Q0UwQjJBODg2RjAwMTg0NjFEIC8qIFRleHRCcmVha0l0
ZXJhdG9yLmggKi87IH07CiAJCUJDMThDNUQxMEIyQTg4NkYwMDE4NDYxRCAvKiBUZXh0QnJlYWtJ
dGVyYXRvcklDVS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQzE4QzVDRjBCMkE4ODZGMDAxODQ2MUQgLyogVGV4dEJyZWFrSXRlcmF0b3JJQ1UuY3Bw
ICovOyB9OwpAQCAtMzIxMSw3ICszMjE2LDYgQEAKIAkJMDZGQzQ0MkIwQkFFNUE5RTAwOTBFREUx
IC8qIEphdmFTY3JpcHRTdGF0aXN0aWNzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKYXZhU2NyaXB0U3RhdGlzdGljcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTA2RkM0NDJDMEJBRTVBOUUwMDkwRURFMSAvKiBKYXZhU2NyaXB0U3RhdGlzdGlj
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSmF2YVNjcmlwdFN0YXRpc3Rp
Y3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQwMjY0NUQwQUZEQzE5QjAwNTkx
OUUyIC8qIExvZ2dpbmdNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gTG9nZ2luZ01hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMTQwMjY5
MkMwQUZFNzJEODAwNTkxOUUyIC8qIFNjcmVlbk1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBTY3JlZW5NYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTE0MDNCOTBDMDlFQjEyNDUwMDc5N0M3RiAvKiBET01XaW5kb3cuaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IERPTVdpbmRvdy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTE0MDNCOTk1MDlFQjEzQUYwMDc5N0M3RiAvKiBET01XaW5kb3cuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NV2luZG93Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTE0MDNCOTk2MDlFQjEzQUYwMDc5N0M3RiAvKiBET01XaW5kb3cuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NV2luZG93LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTMyMzIsNyArMzIzNiw2IEBACiAJCTE0OEEwMDEwMEFGNTlGM0Yw
MDhDQzcwMCAvKiBGb250UGxhdGZvcm1EYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBGb250UGxhdGZvcm1EYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTE0OEFGREEzMEFGNTgzNjAwMDhDQzcwMCAvKiBFeGNlcHRpb25IYW5kbGVycy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhjZXB0aW9uSGFuZGxlcnMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ4QUZEQTQwQUY1ODM2MDAwOENDNzAwIC8qIEV4Y2VwdGlv
bkhhbmRsZXJzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEV4
Y2VwdGlvbkhhbmRsZXJzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkxNDhDRjY1
RDBCMDA1NjE0MDBBOTk3RkMgLyogU2NyZWVuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTY3JlZW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMTQ5OTNCRTMw
QjJGMkIxQzAwNTA0OTdGIC8qIEZvY3VzQ29udHJvbGxlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRm9jdXNDb250cm9sbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMTQ5OTNCRTQwQjJGMkIxQzAwNTA0OTdGIC8qIEZvY3VzQ29udHJvbGxl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRm9jdXNDb250cm9sbGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTE0QzlBNUU5MEIzRDEwNUYwMDVBMDIzMiAv
KiBTZXR0aW5ncy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2V0
dGluZ3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjAyNyw2ICs2MDMwLDEz
IEBACiAJCUJDMDZGMjRBMDZEMThBN0UwMDRBNkZBMyAvKiBYU0xTdHlsZVNoZWV0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhTTFN0eWxlU2hl
ZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7
IH07CiAJCUJDMDZGMjRCMDZEMThBN0UwMDRBNkZBMyAvKiBYU0xUUHJvY2Vzc29yLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGgg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFhTTFRQ
cm9jZXNzb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNU
YWJzID0gMDsgfTsKIAkJQkMwNkYyNEMwNkQxOEE3RTAwNEE2RkEzIC8qIFhTTFRQcm9jZXNzb3Iu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50
V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWFNM
VFByb2Nlc3Nvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNU
YWJzID0gMDsgfTsKKwkJQkMxMjZENzUwQzI0N0EzRTAwMkY0QjFCIC8qIFNjcmVlbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JlZW4uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQkMxMjZENzkwQzI0N0E5MDAwMkY0QjFCIC8qIFNjcmVlbi5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JlZW4uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlCQzEyNkQ4MzBDMjQ3QjA3MDAyRjRCMUIgLyogU2NyZWVuLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTY3JlZW4uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlCQzEyNkRBOTBDMjQ3REZCMDAyRjRCMUIgLyogUGxhdGZvcm1TY3JlZW4uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtU2NyZWVuLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMTI2RUFGMEMyNDkzMDQwMDJGNEIxQiAvKiBKU1NjcmVl
bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTY3JlZW4uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzEyNkVCMDBDMjQ5MzA0MDAyRjRCMUIg
LyogSlNTY3JlZW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU2NyZWVu
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDMTI2RjI1MEMyNEQ0NjQwMDJGNEIx
QiAvKiBQbGF0Zm9ybVNjcmVlbk1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBQbGF0Zm9ybVNjcmVlbk1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQkMxN0Y5NjUwQjY0RUJCODAwNEE2NUNCIC8qIEpTSFRNTFNlbGVjdEVsZW1lbnRDdXN0
b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTFNlbGVj
dEVsZW1lbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzE4QzVD
RTBCMkE4ODZGMDAxODQ2MUQgLyogVGV4dEJyZWFrSXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRCcmVha0l0ZXJhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUJDMThDNUNGMEIyQTg4NkYwMDE4NDYxRCAvKiBUZXh0QnJlYWtJdGVyYXRv
cklDVS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gVGV4dEJyZWFr
SXRlcmF0b3JJQ1UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjQ3MCw2ICs2
NDgwLDggQEAKIAkJMTRERkIzM0YwQTdERjc2MzAwMThGNzY5IC8qIERlcml2ZWQgU291cmNlcyAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQkMxMjZFQUYw
QzI0OTMwNDAwMkY0QjFCIC8qIEpTU2NyZWVuLmNwcCAqLywKKwkJCQlCQzEyNkVCMDBDMjQ5MzA0
MDAyRjRCMUIgLyogSlNTY3JlZW4uaCAqLywKIAkJCQk2NURGMzFEODA5RDFDMTIyMDAwQkUzMjUg
LyogSlNBdHRyLmNwcCAqLywKIAkJCQk2NURGMzFEOTA5RDFDMTIzMDAwQkUzMjUgLyogSlNBdHRy
LmggKi8sCiAJCQkJNjVERjMyMzMwOUQxREU2NTAwMEJFMzI1IC8qIEpTQ2FudmFzR3JhZGllbnQu
Y3BwICovLApAQCAtNzEyMCwxOSArNzEzMiwxOCBAQAogCQk2NTgyQTE0ODA5OTk5RDZDMDBCRUVC
NkQgLyogbWFjICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKLQkJ
CQlBQUNGMTQ0QzBCRUMxRUYwMDA4Mjc5ODIgLyogVGV4dEJyZWFrSXRlcmF0b3JJbnRlcm5hbElD
VU1hYy5tbSAqLywKLQkJCQlBN0NGQjNENDBCN0VEMTE4MDA3MEMzMkQgLyogRHJhZ0ltYWdlTWFj
Lm1tICovLAotCQkJCUE3OTU0NjNEMEI1QzRDODAwMDdCNDM4RiAvKiBEcmFnRGF0YU1hYy5tbSAq
LywKLQkJCQkwNjAyN0NCMjBCMUNDMDNEMDA4ODRCMkQgLyogQ29udGV4dE1lbnVJdGVtTWFjLm1t
ICovLAogCQkJCTY1QTY0MEYwMDUzM0JCMUYwMDg1RTc3NyAvKiBCbG9ja0V4Y2VwdGlvbnMuaCAq
LywKIAkJCQk2NUY4MDY5NzA1NEQ5Rjg2MDA4QkY3NzYgLyogQmxvY2tFeGNlcHRpb25zLm1tICov
LAogCQkJCTJEOTA2NjBCMDY2NUQ5MzcwMDZCNkYxQSAvKiBDbGlwYm9hcmRNYWMuaCAqLywKIAkJ
CQkyRDkwNjYwQzA2NjVEOTM3MDA2QjZGMUEgLyogQ2xpcGJvYXJkTWFjLm1tICovLAorCQkJCTA2
MDI3Q0IyMEIxQ0MwM0QwMDg4NEIyRCAvKiBDb250ZXh0TWVudUl0ZW1NYWMubW0gKi8sCiAJCQkJ
OTNCNkEwRTkwQjBCQ0E4NDAwRjUwMjdBIC8qIENvbnRleHRNZW51TWFjLm1tICovLAogCQkJCTkz
NTIwODc2MDlCRDQ1MzQwMEYyMDM4RCAvKiBDb29raWVKYXIubW0gKi8sCiAJCQkJRjU4Nzg0RjAw
MkRFMzc1OTAxRUE0MTIyIC8qIEN1cnNvck1hYy5tbSAqLywKIAkJCQk2NTFCNEQ4RTA5QUM4NTlG
MDAyOUYxRUYgLyogRGVwcmVjYXRlZFN0cmluZ0xpc3RNYWMubW0gKi8sCiAJCQkJNjU4MkExNzcw
OTk5OUVBMDAwQkVFQjZEIC8qIERlcHJlY2F0ZWRTdHJpbmdNYWMubW0gKi8sCisJCQkJQTc5NTQ2
M0QwQjVDNEM4MDAwN0I0MzhGIC8qIERyYWdEYXRhTWFjLm1tICovLAorCQkJCUE3Q0ZCM0Q0MEI3
RUQxMTgwMDcwQzMyRCAvKiBEcmFnSW1hZ2VNYWMubW0gKi8sCiAJCQkJMDY2Qzc3MkMwQUI2MDNE
MjAwMjM4Q0M0IC8qIEZpbGVDaG9vc2VyTWFjLm1tICovLAogCQkJCUJDRjdDMjMzMEExNkI1Rjgw
MDMyRjc1QiAvKiBGb250Q2FjaGVNYWMubW0gKi8sCiAJCQkJQkNDMDg4ODUwQTFCRDc4RDAwNjE4
OUE2IC8qIEZvbnREYXRhTWFjLm1tICovLApAQCAtNzE1MiwxNiArNzE2MywxNiBAQAogCQkJCUE3
RDNDNTIzMEI1NzZCNEIwMDJDQTQ1MCAvKiBQYXN0ZWJvYXJkSGVscGVyLmggKi8sCiAJCQkJNEIy
NzA5ODEwQUYyRTVFMDAwNjUxMjdGIC8qIFBhc3RlYm9hcmRNYWMubW0gKi8sCiAJCQkJOTM1QzQ3
NkYwOUFDNEQ3MzAwQTZBQUI0IC8qIFBsYXRmb3JtTW91c2VFdmVudE1hYy5tbSAqLywKKwkJCQlC
QzEyNkYyNTBDMjRENDY0MDAyRjRCMUIgLyogUGxhdGZvcm1TY3JlZW5NYWMubW0gKi8sCiAJCQkJ
QkMzRkNBQTgwQUMzREI1ODAwQkE1NEFEIC8qIFBsYXRmb3JtU2Nyb2xsQmFyLmggKi8sCiAJCQkJ
QkM3QjJBRjkwNDUwODI0MTAwQTgwMDBGIC8qIFBsYXRmb3JtU2Nyb2xsQmFyTWFjLm1tICovLAog
CQkJCUE4MjM5OEE3MDlCM0FDRjUwMEI2MDY0MSAvKiBQbHVnSW5JbmZvU3RvcmVNYWMubW0gKi8s
CiAJCQkJMDY2OEUxOEUwQUREOTY0MDAwNDEyOEUwIC8qIFBvcHVwTWVudU1hYy5tbSAqLywKLQkJ
CQkxNDAyNjkyQzBBRkU3MkQ4MDA1OTE5RTIgLyogU2NyZWVuTWFjLm1tICovLAogCQkJCUJDQUE5
MEMyMEE3RUJBNjAwMDhCMTIyOSAvKiBTY3JvbGxCYXIuY3BwICovLAogCQkJCTkzNTM2NzZBMDlB
RUQ4OEIwMEQzNUNENiAvKiBTY3JvbGxWaWV3TWFjLm1tICovLAogCQkJCUFCNzE3MDlGMEIzMTE5
M0IwMDE3MTIzRSAvKiBTZWFyY2hQb3B1cE1lbnVNYWMubW0gKi8sCi0JCQkJMzc5MTlDMUMwQkYz
NzYyODAwOTU2OTk4IC8qIFNoYXBlQXJhYmljLmggKi8sCiAJCQkJMzc5MTlDMTgwQkYzNzVERDAw
OTU2OTk4IC8qIFNoYXBlQXJhYmljLmMgKi8sCisJCQkJMzc5MTlDMUMwQkYzNzYyODAwOTU2OTk4
IC8qIFNoYXBlQXJhYmljLmggKi8sCiAJCQkJMUE0QTk1NTEwQjRFRENGRjAwMkQ4QzNDIC8qIFNo
YXJlZEJ1ZmZlck1hYy5tbSAqLywKIAkJCQk5MzMwOUU5RjA5OUVCNzhDMDA1NkU1ODEgLyogU2hh
cmVkVGltZXJNYWMuY3BwICovLAogCQkJCTRCMzA0M0M4MEFFMDM3MUQwMEE4MjY0NyAvKiBTb3Vu
ZE1hYy5tbSAqLywKQEAgLTcxNzAsNiArNzE4MSw3IEBACiAJCQkJOTNCMEZEODkwQTc1OUJFRDAw
ODBBRDQ0IC8qIFN0cmluZ01hYy5tbSAqLywKIAkJCQk2NTgyQTE1NTA5OTk5RDZEMDBCRUVCNkQg
LyogU3lzdGVtVGltZU1hYy5jcHAgKi8sCiAJCQkJOTM1MjA3MUIwOUJEM0JCQjAwRjIwMzhEIC8q
IFRleHRCb3VuZGFyaWVzLm1tICovLAorCQkJCUFBQ0YxNDRDMEJFQzFFRjAwMDgyNzk4MiAvKiBU
ZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVTWFjLm1tICovLAogCQkJCTUxREY2RDdGMEI5MkEx
OEUwMEMyREM4NSAvKiBUaHJlYWRDaGVjay5tbSAqLywKIAkJCQlGNTUxN0RDMjAzMUFCNTYzMDFB
ODAxODAgLyogV2ViQ29yZUhpc3RvcnkuaCAqLywKIAkJCQlGNTUxN0RDMzAzMUFCNTYzMDFBODAx
ODAgLyogV2ViQ29yZUhpc3RvcnkubSAqLywKQEAgLTcxNzcsOCArNzE4OSw4IEBACiAJCQkJODRC
MkIxRjgwNTZCRUYzQTAwRDJCNzcxIC8qIFdlYkNvcmVLZXlHZW5lcmF0b3IubSAqLywKIAkJCQk5
MzREOUJBNjBCOEMxMTc1MDA3QjQyQTkgLyogV2ViQ29yZU5TU3RyaW5nRXh0cmFzLmggKi8sCiAJ
CQkJOTM0RDlCQTQwQjhDMTE2QjAwN0I0MkE5IC8qIFdlYkNvcmVOU1N0cmluZ0V4dHJhcy5tbSAq
LywKLQkJCQlERDA1RkUwQjBCOEJBM0M2MDA5QUNERkUgLyogV2ViQ29yZU9iakNFeHRyYXMuaCAq
LywKIAkJCQlERDA1RkUwQzBCOEJBM0M2MDA5QUNERkUgLyogV2ViQ29yZU9iakNFeHRyYXMuYyAq
LywKKwkJCQlERDA1RkUwQjBCOEJBM0M2MDA5QUNERkUgLyogV2ViQ29yZU9iakNFeHRyYXMuaCAq
LywKIAkJCQk5M0VCMTY5NjA5Rjg4MEMwMDA5MUY4RkYgLyogV2ViQ29yZVN5c3RlbUludGVyZmFj
ZS5oICovLAogCQkJCTkzRUIxNjk0MDlGODgwQjAwMDkxRjhGRiAvKiBXZWJDb3JlU3lzdGVtSW50
ZXJmYWNlLm1tICovLAogCQkJCUJDMDY2RjZDMDlGRUIyRkEwMEM1ODlBNyAvKiBXZWJDb3JlVGV4
dFJlbmRlcmVyLmggKi8sCkBAIC03MjAwLDE3ICs3MjEyLDIxIEBACiAJCQkJODUzOEYwMDAwQUQ3
MTc3MDAwNkE4MUQxIC8qIEFic3RyYWN0Vmlldy5pZGwgKi8sCiAJCQkJMTREODIzOEEwQUY5MkRG
NjAwMDRGMDU3IC8qIENocm9tZS5jcHAgKi8sCiAJCQkJMTREODIzNTAwQUY5MkE3OTAwMDRGMDU3
IC8qIENocm9tZS5oICovLAorCQkJCTE0RDgyNDA2MEFGOTNBRUIwMDA0RjA1NyAvKiBDaHJvbWVD
bGllbnQuaCAqLywKIAkJCQkwNjVBRDRGMjBCMEMyRURBMDA1QTJCMUQgLyogQ29udGV4dE1lbnVD
bGllbnQuaCAqLywKIAkJCQkwNjVBRDRGMzBCMEMyRURBMDA1QTJCMUQgLyogQ29udGV4dE1lbnVD
b250cm9sbGVyLmNwcCAqLywKIAkJCQkwNjVBRDRGNDBCMEMyRURBMDA1QTJCMUQgLyogQ29udGV4
dE1lbnVDb250cm9sbGVyLmggKi8sCi0JCQkJMTREODI0MDYwQUY5M0FFQjAwMDRGMDU3IC8qIENo
cm9tZUNsaWVudC5oICovLAogCQkJCTE0MDNCOTk2MDlFQjEzQUYwMDc5N0M3RiAvKiBET01XaW5k
b3cuY3BwICovLAogCQkJCTE0MDNCOTk1MDlFQjEzQUYwMDc5N0M3RiAvKiBET01XaW5kb3cuaCAq
LywKIAkJCQkxNDAzQjkwQzA5RUIxMjQ1MDA3OTdDN0YgLyogRE9NV2luZG93LmlkbCAqLywKLQkJ
CQk5M0MwOUE1MjBCMDY0REIzMDA1QUJENEQgLyogRXZlbnRIYW5kbGVyLmggKi8sCisJCQkJQTcx
ODc2MEQwQjJBMTIwMTAwQTE2RUNFIC8qIERyYWdBY3Rpb25zLmggKi8sCisJCQkJQTdDQTU5NjIw
QjI3QzFGMjAwRkEwMjFEIC8qIERyYWdDbGllbnQuaCAqLywKKwkJCQlBN0NBNTk1QzBCMjdCRDlF
MDBGQTAyMUQgLyogRHJhZ0NvbnRyb2xsZXIuY3BwICovLAorCQkJCUE3Q0E1OTVCMEIyN0JEOUUw
MEZBMDIxRCAvKiBEcmFnQ29udHJvbGxlci5oICovLAogCQkJCTkzQzA5QTgwMEIwNjRGMDAwMDVB
QkQ0RCAvKiBFdmVudEhhbmRsZXIuY3BwICovLAotCQkJCTE0OTkzQkU0MEIyRjJCMUMwMDUwNDk3
RiAvKiBGb2N1c0NvbnRyb2xsZXIuaCAqLywKKwkJCQk5M0MwOUE1MjBCMDY0REIzMDA1QUJENEQg
LyogRXZlbnRIYW5kbGVyLmggKi8sCiAJCQkJMTQ5OTNCRTMwQjJGMkIxQzAwNTA0OTdGIC8qIEZv
Y3VzQ29udHJvbGxlci5jcHAgKi8sCisJCQkJMTQ5OTNCRTQwQjJGMkIxQzAwNTA0OTdGIC8qIEZv
Y3VzQ29udHJvbGxlci5oICovLAogCQkJCTA2MjI4NzgzMEI0REIzMjIwMDBDMzRERiAvKiBGb2N1
c0RpcmVjdGlvbi5oICovLAogCQkJCTY1QkYwMjI5MDk3NDgxNjMwMEM0MzE5NiAvKiBGcmFtZS5j
cHAgKi8sCiAJCQkJNjVCRjAyMkEwOTc0ODE2MzAwQzQzMTk2IC8qIEZyYW1lLmggKi8sCkBAIC03
MjI1LDEyICs3MjQxLDExIEBACiAJCQkJNjVGRUE4NjgwOTgzM0FERTAwQkVENEFCIC8qIFBhZ2Uu
Y3BwICovLAogCQkJCTY1QTIxNDY3MDk3QTMyOTEwMEI5MDUwQSAvKiBQYWdlLmggKi8sCiAJCQkJ
NjVEMUMxQzkwOTkzMkIyMjAwMENCMzI0IC8qIFBsdWdpbi5oICovLAotCQkJCUY1ODc4NjNBMDJE
RTNBMTQwMUVBNDEyMiAvKiBTZXR0aW5ncy5oICovLAotCQkJCUE3Q0E1OTVCMEIyN0JEOUUwMEZB
MDIxRCAvKiBEcmFnQ29udHJvbGxlci5oICovLAotCQkJCUE3Q0E1OTVDMEIyN0JEOUUwMEZBMDIx
RCAvKiBEcmFnQ29udHJvbGxlci5jcHAgKi8sCi0JCQkJQTdDQTU5NjIwQjI3QzFGMjAwRkEwMjFE
IC8qIERyYWdDbGllbnQuaCAqLywKLQkJCQlBNzE4NzYwRDBCMkExMjAxMDBBMTZFQ0UgLyogRHJh
Z0FjdGlvbnMuaCAqLywKKwkJCQlCQzEyNkQ3OTBDMjQ3QTkwMDAyRjRCMUIgLyogU2NyZWVuLmNw
cCAqLywKKwkJCQlCQzEyNkQ3NTBDMjQ3QTNFMDAyRjRCMUIgLyogU2NyZWVuLmggKi8sCisJCQkJ
QkMxMjZEODMwQzI0N0IwNzAwMkY0QjFCIC8qIFNjcmVlbi5pZGwgKi8sCiAJCQkJMTRDOUE1RTkw
QjNEMTA1RjAwNUEwMjMyIC8qIFNldHRpbmdzLmNwcCAqLywKKwkJCQlGNTg3ODYzQTAyREUzQTE0
MDFFQTQxMjIgLyogU2V0dGluZ3MuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gcGFnZTsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC05Mzk2LDcgKzk0MTEsNiBAQAogCQkJCUIyQTAxNTkx
MEFGNkNENTMwMDZCQ0UwRSAvKiBncmFwaGljcyAqLywKIAkJCQk2NTgyQTE0ODA5OTk5RDZDMDBC
RUVCNkQgLyogbWFjICovLAogCQkJCTY1NkI4NEQ3MEFFQTFDRTkwMEEwOTVCNCAvKiBuZXR3b3Jr
ICovLAotCQkJCTY1RjUzODIxMDlCMkI1NTcwMEYzREM0QSAvKiBtYWtlLWNoYXJzZXQtdGFibGUu
cGwgKi8sCiAJCQkJQkNGQjJGNzQwOTdBMkUxQTAwQkE3MDNEIC8qIEFyZW5hLmNwcCAqLywKIAkJ
CQlCQ0ZCMkY3NTA5N0EyRTFBMDBCQTcwM0QgLyogQXJlbmEuaCAqLywKIAkJCQlCQ0IxNkI4OTA5
NzlCMDE0MDA0Njc3NDEgLyogQXJyYXlJbXBsLmNwcCAqLywKQEAgLTk0MDQsOCArOTQxOCw4IEBA
CiAJCQkJOTNDRDRGRDcwOTk1RjlFQTAwN0VDQzk3IC8qIEF0b21pY1N0cmluZy5jcHAgKi8sCiAJ
CQkJOTNDRDRGRDgwOTk1RjlFQTAwN0VDQzk3IC8qIEF0b21pY1N0cmluZy5oICovLAogCQkJCTkz
Q0Q0RkQ5MDk5NUY5RUEwMDdFQ0M5NyAvKiBBdG9taWNTdHJpbmdJbXBsLmggKi8sCi0JCQkJRTEx
RDUxOTEwQjJFN0E1RjAwNTZDMTg4IC8qIEJhc2U2NC5oICovLAogCQkJCUUxMUQ1MTkyMEIyRTdB
NUYwMDU2QzE4OCAvKiBCYXNlNjQuY3BwICovLAorCQkJCUUxMUQ1MTkxMEIyRTdBNUYwMDU2QzE4
OCAvKiBCYXNlNjQuaCAqLywKIAkJCQk2NUY1MzgyMDA5QjJCNTU3MDBGM0RDNEEgLyogY2hhcmFj
dGVyLXNldHMudHh0ICovLAogCQkJCTkzQzdCNUYzMEI1MkQ4OTEwMEI1NDc3RSAvKiBDaGFyYWN0
ZXJOYW1lcy5oICovLAogCQkJCTkzMjZEQzBBMDlEQUQ1QkUwMEFGQzg0NyAvKiBDaGFyc2V0RGF0
YS5oICovLApAQCAtOTQzMSwxMCArOTQ0NSwxMCBAQAogCQkJCUY1ODc4NkMyMDJERTNCODYwMUVB
NDEyMiAvKiBEZXByZWNhdGVkVmFsdWVMaXN0LmggKi8sCiAJCQkJRjU4Nzg1M0MwMkRFMzc1OTAx
RUE0MTIyIC8qIERlcHJlY2F0ZWRWYWx1ZUxpc3RJbXBsLmNwcCAqLywKIAkJCQlGNTg3ODUzQjAy
REUzNzU5MDFFQTQxMjIgLyogRGVwcmVjYXRlZFZhbHVlTGlzdEltcGwuaCAqLywKLQkJCQlBN0I2
RTY5RDBCMjkxQTk2MDBEMDUyOUYgLyogRHJhZ0RhdGEuaCAqLywKIAkJCQlBNzk1NDY0MjBCNUM0
Q0I0MDA3QjQzOEYgLyogRHJhZ0RhdGEuY3BwICovLAotCQkJCUE3Q0ZCM0QwMEI3RUQxMEEwMDcw
QzMyRCAvKiBEcmFnSW1hZ2UuaCAqLywKKwkJCQlBN0I2RTY5RDBCMjkxQTk2MDBEMDUyOUYgLyog
RHJhZ0RhdGEuaCAqLywKIAkJCQlBN0NGQjNDRjBCN0VEMTBBMDA3MEMzMkQgLyogRHJhZ0ltYWdl
LmNwcCAqLywKKwkJCQlBN0NGQjNEMDBCN0VEMTBBMDA3MEMzMkQgLyogRHJhZ0ltYWdlLmggKi8s
CiAJCQkJOTM0RkU5RTQwQjVDQTUzOTAwM0U0QTczIC8qIEZpbGVDaG9vc2VyLmNwcCAqLywKIAkJ
CQkwNjZDNzcyQTBBQjYwM0I3MDAyMzhDQzQgLyogRmlsZUNob29zZXIuaCAqLywKIAkJCQlCQzZE
NkREMDA5QUY5MDY2MDBGNTk3NTkgLyogRm9udC5jcHAgKi8sCkBAIC05NDU5LDEyICs5NDczLDE0
IEBACiAJCQkJOTM1MjA3QkQwOUJENDEwQTAwRjIwMzhEIC8qIExvY2FsaXplZFN0cmluZ3MuaCAq
LywKIAkJCQlBODIzOURGRTA5QjNDRjhBMDBCNjA2NDEgLyogTG9nZ2luZy5jcHAgKi8sCiAJCQkJ
QTgyMzlERkYwOUIzQ0Y4QTAwQjYwNjQxIC8qIExvZ2dpbmcuaCAqLywKKwkJCQk2NUY1MzgyMTA5
QjJCNTU3MDBGM0RDNEEgLyogbWFrZS1jaGFyc2V0LXRhYmxlLnBsICovLAogCQkJCUE3MDAyM0ZC
MEIwMkJFQUIwMDE3MDIxNSAvKiBNaW1lVHlwZVJlZ2lzdHJ5LmNwcCAqLywKIAkJCQlBNzAwMjNG
QzBCMDJCRUFCMDAxNzAyMTUgLyogTWltZVR5cGVSZWdpc3RyeS5oICovLAogCQkJCTRCMjcwOEM1
MEFGMTlFRTQwMDY1MTI3RiAvKiBQYXN0ZWJvYXJkLmggKi8sCiAJCQkJOTM1QzQ3NjYwOUFDNEQ0
MzAwQTZBQUI0IC8qIFBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oICovLAogCQkJCTkzMjg3MUJGMEIy
MERFQjcwMDQ5MDM1QSAvKiBQbGF0Zm9ybU1lbnVEZXNjcmlwdGlvbi5oICovLAogCQkJCTkzNUM0
NzY3MDlBQzRENDMwMEE2QUFCNCAvKiBQbGF0Zm9ybU1vdXNlRXZlbnQuaCAqLywKKwkJCQlCQzEy
NkRBOTBDMjQ3REZCMDAyRjRCMUIgLyogUGxhdGZvcm1TY3JlZW4uaCAqLywKIAkJCQk5M0NENEZF
QjA5OTVGRDJBMDA3RUNDOTcgLyogUGxhdGZvcm1TdHJpbmcuaCAqLywKIAkJCQk5MzVDNDc2QTA5
QUM0RDRGMDBBNkFBQjQgLyogUGxhdGZvcm1XaGVlbEV2ZW50LmggKi8sCiAJCQkJQTgyMzk4QTUw
OUIzQUNEQjAwQjYwNjQxIC8qIFBsdWdJbkluZm9TdG9yZS5oICovLApAQCAtOTQ3Miw3ICs5NDg4
LDYgQEAKIAkJCQlBQkMxMjg3NjBCMzNBQTZEMDBDNjkzRDUgLyogUG9wdXBNZW51Q2xpZW50Lmgg
Ki8sCiAJCQkJRjU4Nzg1MkIwMkRFMzc1OTAxRUE0MTIyIC8qIFJlZ3VsYXJFeHByZXNzaW9uLmNw
cCAqLywKIAkJCQlGNTg3ODZCMzAyREUzQjg2MDFFQTQxMjIgLyogUmVndWxhckV4cHJlc3Npb24u
aCAqLywKLQkJCQkxNDhDRjY1RDBCMDA1NjE0MDBBOTk3RkMgLyogU2NyZWVuLmggKi8sCiAJCQkJ
QkM3QjJBRjgwNDUwODI0MTAwQTgwMDBGIC8qIFNjcm9sbEJhci5oICovLAogCQkJCTkzQzA5Qzg1
MEIwNjU3QUEwMDVBQkQ0RCAvKiBTY3JvbGxUeXBlcy5oICovLAogCQkJCUJDNkQ2RTI1MDlBRjk0
MzUwMEY1OTc1OSAvKiBTY3JvbGxWaWV3LmggKi8sCkBAIC0xMTM3Niw3ICsxMTM5MSw2IEBACiAJ
CQkJNjVEQURBMDAwQUZEODZCRjAwQ0U1M0VEIC8qIEZvcm1EYXRhU3RyZWFtTWFjLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk2NURBREExODBBRkQ4NzgwMDBDRTUzRUQgLyogRm9ybURhdGEuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTY1MTg4ODg5MEFGRjNCRjcwMDE2NDcyMCAvKiBSZXNvdXJjZUVycm9y
LmggaW4gSGVhZGVycyAqLywKLQkJCQkxNDhDRjY1RTBCMDA1NjE0MDBBOTk3RkMgLyogU2NyZWVu
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjc1MzU1NzBCMDUzODE0MDAyQ0U2NEYgLyogQWZmaW5l
VHJhbnNmb3JtLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjc1MzU1RDBCMDUzODE0MDAyQ0U2NEYg
LyogR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
Mjc1MzU2NTBCMDUzODE0MDAyQ0U2NEYgLyogUERGRG9jdW1lbnRJbWFnZS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0xMTU1OSw2ICsxMTU3Myw5IEBACiAJCQkJQkM2REM3QTEwQzFBNEJGQTAwNEUyMDE3
IC8qIEpTSFRNTEFsbENvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRkUyRjEyMEMx
QjU4MzgwMDIwMjM1RiAvKiBKU1JlY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDM2OEU4MEMy
MjZFMzIwMDVFRkI1RiAvKiBSZWN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzEyNkQ3NjBDMjQ3
QTNFMDAyRjRCMUIgLyogU2NyZWVuLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzEyNkRBQTBDMjQ3
REZCMDAyRjRCMUIgLyogUGxhdGZvcm1TY3JlZW4uaCBpbiBIZWFkZXJzICovLAorCQkJCUJDMTI2
RUIyMEMyNDkzMDUwMDJGNEIxQiAvKiBKU1NjcmVlbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwog
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xMTY3
Miw2ICsxMTY4OSw3IEBACiAJCQkJQkM0OTFCNEYwQzAyM0UyRDAwOUQ2MzE2IC8qIEhUTUxNYXJx
dWVlRWxlbWVudC5pZGwgaW4gUmVzb3VyY2VzICovLAogCQkJCTFBQjFBRTdBMEMwNTFGREUwMDEz
OUY0RiAvKiB6b29tSW5DdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKIAkJCQkxQUIxQUU3QjBD
MDUxRkRFMDAxMzlGNEYgLyogem9vbU91dEN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLAorCQkJ
CUJDMTI2RDg0MEMyNDdCMDcwMDJGNEIxQiAvKiBTY3JlZW4uaWRsIGluIFJlc291cmNlcyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
QEAgLTEyNzQ0LDcgKzEyNzYyLDYgQEAKIAkJCQkxNEQ4MjM4QjBBRjkyREY2MDAwNEYwNTcgLyog
Q2hyb21lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFCMjQ3QTZDMEFGRDYzODMwMDNGQTVGRCAv
KiBSZW5kZXJTbGlkZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQwMjY0NUUwQUZEQzE5QjAw
NTkxOUUyIC8qIExvZ2dpbmdNYWMubW0gaW4gU291cmNlcyAqLywKLQkJCQkxNDAyNjkyRDBBRkU3
MkQ4MDA1OTE5RTIgLyogU2NyZWVuTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNjVEQUQ5RkMw
QUZEODZCNDAwQ0U1M0VEIC8qIEZvcm1EYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTY1REFE
QTAxMEFGRDg2QkYwMENFNTNFRCAvKiBGb3JtRGF0YVN0cmVhbU1hYy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCUE3MDAyM0ZEMEIwMkJFQUIwMDE3MDIxNSAvKiBNaW1lVHlwZVJlZ2lzdHJ5LmNwcCBp
biBTb3VyY2VzICovLApAQCAtMTI5ODMsNiArMTMwMDAsOSBAQAogCQkJCUJDQ0JBRDNCMEMxOEJG
RjgwMENFODkwRiAvKiBKU0hUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDQ0JBRDQwMEMxOEMxNDIwMENFODkwRiAvKiBKU0hUTUxDb2xsZWN0aW9uLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUJDRkUyRjExMEMxQjU4MzcwMDIwMjM1RiAvKiBKU1JlY3QuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJQkMxMjZEN0EwQzI0N0E5MDAwMkY0QjFCIC8qIFNjcmVlbi5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlCQzEyNkVCMTBDMjQ5MzA1MDAyRjRCMUIgLyogSlNTY3JlZW4u
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkMxMjZGMjYwQzI0RDQ2NDAwMkY0QjFCIC8qIFBsYXRm
b3JtU2NyZWVuTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pz
L2tqc193aW5kb3cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMva2pzX3dp
bmRvdy5jcHAJKHJldmlzaW9uIDIzNTU1KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfd2lu
ZG93LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsOSArNTIsOSBAQAogI2luY2x1ZGUgIkpTWE1M
SHR0cFJlcXVlc3QuaCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgor
I2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCiAjaW5jbHVkZSAiUGx1Z0luSW5mb1N0b3JlLmgi
CiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgotI2luY2x1ZGUgIlNjcmVlbi5oIgogI2luY2x1ZGUg
IlNlbGVjdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUg
IldpbmRvd0ZlYXR1cmVzLmgiCkBAIC04Miw4ICs4Miw3IEBAIGNvbnN0IGRvdWJsZSBjTWluaW11
bVRpbWVySW50ZXJ2YWwgPSAwLjAKIAogc3RydWN0IFdpbmRvd1ByaXZhdGUgewogICAgIFdpbmRv
d1ByaXZhdGUoKSAKLSAgICAgICAgOiBzY3JlZW4oMCkKLSAgICAgICAgLCBoaXN0b3J5KDApCisg
ICAgICAgIDogaGlzdG9yeSgwKQogICAgICAgICAsIGZyYW1lcygwKQogICAgICAgICAsIGxvYygw
KQogICAgICAgICAsIG1fc2VsZWN0aW9uKDApCkBAIC0xMDIsNyArMTAxLDYgQEAgc3RydWN0IFdp
bmRvd1ByaXZhdGUgewogICAgIFdpbmRvdzo6TGlzdGVuZXJzTWFwIGpzSFRNTEV2ZW50TGlzdGVu
ZXJzOwogICAgIFdpbmRvdzo6VW5wcm90ZWN0ZWRMaXN0ZW5lcnNNYXAganNVbnByb3RlY3RlZEV2
ZW50TGlzdGVuZXJzOwogICAgIFdpbmRvdzo6VW5wcm90ZWN0ZWRMaXN0ZW5lcnNNYXAganNVbnBy
b3RlY3RlZEhUTUxFdmVudExpc3RlbmVyczsKLSAgICBtdXRhYmxlIFNjcmVlbiogc2NyZWVuOwog
ICAgIG11dGFibGUgSGlzdG9yeSogaGlzdG9yeTsKICAgICBtdXRhYmxlIEZyYW1lQXJyYXkqIGZy
YW1lczsKICAgICBtdXRhYmxlIExvY2F0aW9uKiBsb2M7CkBAIC0yMDMsNjEgKzIwMSw2IEBAIHB1
YmxpYzoKIAogbmFtZXNwYWNlIEtKUyB7CiAKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8gU2NyZWVu
IE9iamVjdCAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotLy8gdGFibGUgZm9yIHNjcmVlbiBv
YmplY3QKLS8qCi1AYmVnaW4gU2NyZWVuVGFibGUgNwotICBoZWlnaHQgICAgICAgIFNjcmVlbjo6
SGVpZ2h0ICAgICAgICAgIERvbnRFbnVtfFJlYWRPbmx5Ci0gIHdpZHRoICAgICAgICAgU2NyZWVu
OjpXaWR0aCAgICAgICAgICAgRG9udEVudW18UmVhZE9ubHkKLSAgY29sb3JEZXB0aCAgICBTY3Jl
ZW46OkNvbG9yRGVwdGggICAgICBEb250RW51bXxSZWFkT25seQotICBwaXhlbERlcHRoICAgIFNj
cmVlbjo6UGl4ZWxEZXB0aCAgICAgIERvbnRFbnVtfFJlYWRPbmx5Ci0gIGF2YWlsTGVmdCAgICAg
U2NyZWVuOjpBdmFpbExlZnQgICAgICAgRG9udEVudW18UmVhZE9ubHkKLSAgYXZhaWxUb3AgICAg
ICBTY3JlZW46OkF2YWlsVG9wICAgICAgICBEb250RW51bXxSZWFkT25seQotICBhdmFpbEhlaWdo
dCAgIFNjcmVlbjo6QXZhaWxIZWlnaHQgICAgIERvbnRFbnVtfFJlYWRPbmx5Ci0gIGF2YWlsV2lk
dGggICAgU2NyZWVuOjpBdmFpbFdpZHRoICAgICAgRG9udEVudW18UmVhZE9ubHkKLUBlbmQKLSov
Ci0KLWNvbnN0IENsYXNzSW5mbyBTY3JlZW46OmluZm8gPSB7ICJTY3JlZW4iLCAwLCAmU2NyZWVu
VGFibGUsIDAgfTsKLQotLy8gV2Ugc2V0IHRoZSBvYmplY3QgcHJvdG90eXBlIHNvIHRoYXQgdG9T
dHJpbmcgaXMgaW1wbGVtZW50ZWQKLVNjcmVlbjo6U2NyZWVuKEV4ZWNTdGF0ZSogZXhlYywgRnJh
bWUqIGYpCi0gICAgOiBtX2ZyYW1lKGYpCi17Ci0gICAgc2V0UHJvdG90eXBlKGV4ZWMtPmxleGlj
YWxJbnRlcnByZXRlcigpLT5idWlsdGluT2JqZWN0UHJvdG90eXBlKCkpOwotfQotCi1ib29sIFNj
cmVlbjo6Z2V0T3duUHJvcGVydHlTbG90KEV4ZWNTdGF0ZSAqZXhlYywgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCi17Ci0gIHJldHVybiBnZXRTdGF0
aWNWYWx1ZVNsb3Q8U2NyZWVuLCBKU09iamVjdD4oZXhlYywgJlNjcmVlblRhYmxlLCB0aGlzLCBw
cm9wZXJ0eU5hbWUsIHNsb3QpOwotfQotCi1KU1ZhbHVlKiBTY3JlZW46OmdldFZhbHVlUHJvcGVy
dHkoRXhlY1N0YXRlKiwgaW50IHRva2VuKSBjb25zdAotewotICBXaWRnZXQqIHdpZGdldCA9IG1f
ZnJhbWUgPyBtX2ZyYW1lLT52aWV3KCkgOiAwOyAgCi0KLSAgc3dpdGNoICh0b2tlbikgewotICBj
YXNlIEhlaWdodDoKLSAgICByZXR1cm4ganNOdW1iZXIoc2NyZWVuUmVjdCh3aWRnZXQpLmhlaWdo
dCgpKTsKLSAgY2FzZSBXaWR0aDoKLSAgICByZXR1cm4ganNOdW1iZXIoc2NyZWVuUmVjdCh3aWRn
ZXQpLndpZHRoKCkpOwotICBjYXNlIENvbG9yRGVwdGg6Ci0gIGNhc2UgUGl4ZWxEZXB0aDoKLSAg
ICByZXR1cm4ganNOdW1iZXIoc2NyZWVuRGVwdGgod2lkZ2V0KSk7Ci0gIGNhc2UgQXZhaWxMZWZ0
OgotICAgIHJldHVybiBqc051bWJlcihzY3JlZW5BdmFpbGFibGVSZWN0KHdpZGdldCkueCgpKTsK
LSAgY2FzZSBBdmFpbFRvcDoKLSAgICByZXR1cm4ganNOdW1iZXIoc2NyZWVuQXZhaWxhYmxlUmVj
dCh3aWRnZXQpLnkoKSk7Ci0gIGNhc2UgQXZhaWxIZWlnaHQ6Ci0gICAgcmV0dXJuIGpzTnVtYmVy
KHNjcmVlbkF2YWlsYWJsZVJlY3Qod2lkZ2V0KS5oZWlnaHQoKSk7Ci0gIGNhc2UgQXZhaWxXaWR0
aDoKLSAgICByZXR1cm4ganNOdW1iZXIoc2NyZWVuQXZhaWxhYmxlUmVjdCh3aWRnZXQpLndpZHRo
KCkpOwotICBkZWZhdWx0OgotICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICB9Ci19Ci0KIC8v
Ly8vLy8vLy8vLy8vLy8vLy8vLy8gV2luZG93IE9iamVjdCAvLy8vLy8vLy8vLy8vLy8vLy8vLy8v
Ly8KIAogY29uc3QgQ2xhc3NJbmZvIFdpbmRvdzo6aW5mbyA9IHsgIldpbmRvdyIsIDAsICZXaW5k
b3dUYWJsZSwgMCB9OwpAQCAtMzExLDcgKzI1NCw2IEBAIGNvbnN0IENsYXNzSW5mbyBXaW5kb3c6
OmluZm8gPSB7ICJXaW5kb3cKICAgc2VsZiAgICAgICAgICBXaW5kb3c6OlNlbGYgICAgICAgICAg
ICBEb250RGVsZXRlfFJlYWRPbmx5CiAgIHdpbmRvdyAgICAgICAgV2luZG93OjpXaW5kb3dfICAg
ICAgICAgRG9udERlbGV0ZXxSZWFkT25seQogICB0b3AgICAgICAgICAgIFdpbmRvdzo6VG9wICAg
ICAgICAgICAgIERvbnREZWxldGV8UmVhZE9ubHkKLSAgc2NyZWVuICAgICAgICBXaW5kb3c6OlNj
cmVlbl8gICAgICAgICBEb250RGVsZXRlfFJlYWRPbmx5CiAgIEltYWdlICAgICAgICAgV2luZG93
OjpJbWFnZSAgICAgICAgICAgRG9udERlbGV0ZQogICBPcHRpb24gICAgICAgIFdpbmRvdzo6T3B0
aW9uICAgICAgICAgIERvbnREZWxldGUKICAgWE1MSHR0cFJlcXVlc3QgICAgICAgIFdpbmRvdzo6
WE1MSHR0cFJlcXVlc3QgIERvbnREZWxldGUKQEAgLTQ5OCw4ICs0NDAsNiBAQCBCYXJJbmZvICpX
aW5kb3c6OnNjcm9sbGJhcnMoRXhlY1N0YXRlICplCiB2b2lkIFdpbmRvdzo6bWFyaygpCiB7CiAg
IEpTT2JqZWN0OjptYXJrKCk7Ci0gIGlmIChkLT5zY3JlZW4gJiYgIWQtPnNjcmVlbi0+bWFya2Vk
KCkpCi0gICAgZC0+c2NyZWVuLT5tYXJrKCk7CiAgIGlmIChkLT5oaXN0b3J5ICYmICFkLT5oaXN0
b3J5LT5tYXJrZWQoKSkKICAgICBkLT5oaXN0b3J5LT5tYXJrKCk7CiAgIGlmIChkLT5mcmFtZXMg
JiYgIWQtPmZyYW1lcy0+bWFya2VkKCkpCkBAIC04MzQsMTAgKzc3NCw2IEBAIEpTVmFsdWUgKldp
bmRvdzo6Z2V0VmFsdWVQcm9wZXJ0eShFeGVjU3QKICAgICAgIHJldHVybiByZXRyaWV2ZShtX2Zy
YW1lKTsKICAgICBjYXNlIFRvcDoKICAgICAgIHJldHVybiByZXRyaWV2ZShtX2ZyYW1lLT5wYWdl
KCktPm1haW5GcmFtZSgpKTsKLSAgICBjYXNlIFNjcmVlbl86Ci0gICAgICBpZiAoIWQtPnNjcmVl
bikKLSAgICAgICAgZC0+c2NyZWVuID0gbmV3IFNjcmVlbihleGVjLCBtX2ZyYW1lKTsKLSAgICAg
IHJldHVybiBkLT5zY3JlZW47CiAgICAgY2FzZSBJbWFnZToKICAgICAgIC8vIEZJWE1FOiB0aGlz
IHByb3BlcnR5IChhbmQgdGhlIGZldyBiZWxvdykgcHJvYmFibHkgc2hvdWxkbid0IGNyZWF0ZSBh
IG5ldyBvYmplY3QgZXZlcnkKICAgICAgIC8vIHRpbWUKQEAgLTEzOTgsNyArMTMzNCw2IEBAIEpT
VW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyICpXaW5kb3c6OmZpbmQKIAogdm9pZCBXaW5kb3c6OmNs
ZWFySGVscGVyT2JqZWN0UHJvcGVydGllcygpCiB7Ci0gIGQtPnNjcmVlbiA9IDA7CiAgIGQtPmhp
c3RvcnkgPSAwOwogICBkLT5mcmFtZXMgPSAwOwogICBkLT5sb2MgPSAwOwpJbmRleDogV2ViQ29y
ZS9iaW5kaW5ncy9qcy9ranNfd2luZG93LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5n
cy9qcy9ranNfd2luZG93LmgJKHJldmlzaW9uIDIzNTU1KQorKysgV2ViQ29yZS9iaW5kaW5ncy9q
cy9ranNfd2luZG93LmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDE5ICs2OCw2IEBAIG5hbWVzcGFj
ZSBLSlMgewogCiAgICAgY2xhc3MgRE9NV2luZG93VGltZXI7CiAKLSAgY2xhc3MgU2NyZWVuIDog
cHVibGljIERPTU9iamVjdCB7Ci0gIHB1YmxpYzoKLSAgICBlbnVtIHsgSGVpZ2h0LCBXaWR0aCwg
Q29sb3JEZXB0aCwgUGl4ZWxEZXB0aCwgQXZhaWxMZWZ0LCBBdmFpbFRvcCwgQXZhaWxIZWlnaHQs
IEF2YWlsV2lkdGggfTsKLSAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEV4ZWNT
dGF0ZSAqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlTbG90Jik7Ci0gICAgSlNWYWx1ZSAq
Z2V0VmFsdWVQcm9wZXJ0eShFeGVjU3RhdGUgKmV4ZWMsIGludCB0b2tlbikgY29uc3Q7Ci0gICAg
dmlydHVhbCBjb25zdCBDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZpbmZv
OyB9Ci0gICAgc3RhdGljIGNvbnN0IENsYXNzSW5mbyBpbmZvOwotICBwcml2YXRlOgotICAgIGZy
aWVuZCBjbGFzcyBXaW5kb3c7Ci0gICAgU2NyZWVuKEV4ZWNTdGF0ZSosIFdlYkNvcmU6OkZyYW1l
Kik7Ci0gICAgV2ViQ29yZTo6RnJhbWUqIG1fZnJhbWU7Ci0gIH07Ci0KICAgY2xhc3MgV2luZG93
UHJpdmF0ZTsKIAogICBjbGFzcyBXaW5kb3cgOiBwdWJsaWMgRE9NT2JqZWN0IHsKQEAgLTE3NSw3
ICsxNjIsNyBAQCBuYW1lc3BhY2UgS0pTIHsKICAgICAgICAgICAgTWVudWJhciwgT2Zmc2NyZWVu
QnVmZmVyaW5nLCBPcGVuZXIsIE91dGVySGVpZ2h0LCBPdXRlcldpZHRoLCBQYWdlWE9mZnNldCwg
UGFnZVlPZmZzZXQsCiAgICAgICAgICAgIFBhcmVudCwgUGVyc29uYWxiYXIsIFNjcmVlblgsIFNj
cmVlblksIFNjcm9sbGJhcnMsIFNjcm9sbCwgU2Nyb2xsQnksCiAgICAgICAgICAgIFNjcmVlblRv
cCwgU2NyZWVuTGVmdCwKLSAgICAgICAgICAgU2Nyb2xsVG8sIFNjcm9sbFgsIFNjcm9sbFksIE1v
dmVCeSwgTW92ZVRvLCBSZXNpemVCeSwgUmVzaXplVG8sIFNlbGYsIFdpbmRvd18sIFRvcCwgU2Ny
ZWVuXywKKyAgICAgICAgICAgU2Nyb2xsVG8sIFNjcm9sbFgsIFNjcm9sbFksIE1vdmVCeSwgTW92
ZVRvLCBSZXNpemVCeSwgUmVzaXplVG8sIFNlbGYsIFdpbmRvd18sIFRvcCwKICAgICAgICAgICAg
SW1hZ2UsIE9wdGlvbiwgQWxlcnQsIENvbmZpcm0sIFByb21wdCwgT3BlbiwgUHJpbnQsIFNldFRp
bWVvdXQsIENsZWFyVGltZW91dCwKICAgICAgICAgICAgRm9jdXMsIEdldFNlbGVjdGlvbiwgQmx1
ciwgQ2xvc2UsIFNldEludGVydmFsLCBDbGVhckludGVydmFsLCBDYXB0dXJlRXZlbnRzLCAKICAg
ICAgICAgICAgUmVsZWFzZUV2ZW50cywgQWRkRXZlbnRMaXN0ZW5lciwgUmVtb3ZlRXZlbnRMaXN0
ZW5lciwKSW5kZXg6IFdlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCShyZXZpc2lvbiAyMzU1
NSkKKysrIFdlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00Miw3ICs0Miw3IEBACiAjaW5jbHVkZSAiTWVkaWFRdWVyeUV4cC5oIgogI2luY2x1ZGUg
IlBhZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgotI2luY2x1ZGUgIlNjcmVlbi5oIgor
I2luY2x1ZGUgIlBsYXRmb3JtU2NyZWVuLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpJbmRleDogV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHJldmlzaW9uIDIzNTU1KQor
KysgV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IEFwcGxlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI2LDI1ICsyNiwzMSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRPTVdpbmRv
dy5oIgogCi0jaW5jbHVkZSAiY3Nzc3R5bGVzZWxlY3Rvci5oIgotI2luY2x1ZGUgIkNocm9tZS5o
IgogI2luY2x1ZGUgIkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgIkNT
U1J1bGVMaXN0LmgiCisjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
ICNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFt
ZUxvYWRlci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVk
ZSAiUGxhdGZvcm1TY3JlZW4uaCIKICNpbmNsdWRlICJTY3JlZW4uaCIKKyNpbmNsdWRlICJjc3Nz
dHlsZXNlbGVjdG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRE9NV2luZG93OjpET01X
aW5kb3coRnJhbWUqIGYpCi0gICAgOiBtX2ZyYW1lKGYpCitET01XaW5kb3c6OkRPTVdpbmRvdyhG
cmFtZSogZnJhbWUpCisgICAgOiBtX2ZyYW1lKGZyYW1lKQogewogfQogCi1GcmFtZSogRE9NV2lu
ZG93OjpmcmFtZSgpCitET01XaW5kb3c6On5ET01XaW5kb3coKQoreworfQorCitGcmFtZSogRE9N
V2luZG93OjpmcmFtZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fZnJhbWU7CiB9CkBAIC01Miw2
ICs1OCwxNSBAQCBGcmFtZSogRE9NV2luZG93OjpmcmFtZSgpCiB2b2lkIERPTVdpbmRvdzo6ZGlz
Y29ubmVjdEZyYW1lKCkKIHsKICAgICBtX2ZyYW1lID0gMDsKKyAgICBpZiAobV9zY3JlZW4pCisg
ICAgICAgIG1fc2NyZWVuLT5kaXNjb25uZWN0RnJhbWUoKTsKK30KKworU2NyZWVuKiBET01XaW5k
b3c6OnNjcmVlbigpIGNvbnN0Cit7CisgICAgaWYgKCFtX3NjcmVlbikKKyAgICAgICAgbV9zY3Jl
ZW4gPSBuZXcgU2NyZWVuKG1fZnJhbWUpOworICAgIHJldHVybiBtX3NjcmVlbi5nZXQoKTsKIH0K
IAogRG9jdW1lbnQqIERPTVdpbmRvdzo6ZG9jdW1lbnQoKSBjb25zdApJbmRleDogV2ViQ29yZS9w
YWdlL0RPTVdpbmRvdy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAko
cmV2aXNpb24gMjM1NTUpCisrKyBXZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDIyICsyNywzMCBAQAogI2RlZmluZSBET01XaW5kb3dfaAogCiAjaW5jbHVkZSAi
U2hhcmVkLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewor
CiAgICAgY2xhc3MgQ1NTUnVsZUxpc3Q7CiAgICAgY2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlvbjsK
ICAgICBjbGFzcyBEb2N1bWVudDsKICAgICBjbGFzcyBFbGVtZW50OwogICAgIGNsYXNzIEZyYW1l
OworICAgIGNsYXNzIFNjcmVlbjsKICAgICBjbGFzcyBTdHJpbmc7Ci0gICAgCisKICAgICBjbGFz
cyBET01XaW5kb3cgOiBwdWJsaWMgU2hhcmVkPERPTVdpbmRvdz4gewogICAgIHB1YmxpYzoKICAg
ICAgICAgRE9NV2luZG93KEZyYW1lKik7Ci0gICAgICAgIEZyYW1lKiBmcmFtZSgpOworICAgICAg
ICB2aXJ0dWFsIH5ET01XaW5kb3coKTsKKworICAgICAgICBGcmFtZSogZnJhbWUoKSBjb25zdDsK
ICAgICAgICAgdm9pZCBkaXNjb25uZWN0RnJhbWUoKTsKIAorICAgICAgICAvLyAiRE9NIExldmVs
IDAiCisgICAgICAgIFNjcmVlbiogc2NyZWVuKCkgY29uc3Q7CisKICAgICAgICAgLy8gRE9NIExl
dmVsIDIgQWJzdHJhY3RWaWV3IEludGVyZmFjZQogICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQo
KSBjb25zdDsKICAgICAgICAgCkBAIC01Miw5ICs2MCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIC8vIFdlYktpdCBleHRlbnNpb25zCiAgICAgICAgIFBhc3NSZWZQdHI8Q1NTUnVs
ZUxpc3Q+IGdldE1hdGNoZWRDU1NSdWxlcyhFbGVtZW50KiwgY29uc3QgU3RyaW5nJiBwc2V1ZG9F
bHQsIGJvb2wgYXV0aG9yT25seSA9IHRydWUpIGNvbnN0OwogICAgICAgICBkb3VibGUgZGV2aWNl
UGl4ZWxSYXRpbygpIGNvbnN0OwotICAgICAgICAKKwogICAgIHByaXZhdGU6CiAgICAgICAgIEZy
YW1lKiBtX2ZyYW1lOworICAgICAgICBtdXRhYmxlIFJlZlB0cjxTY3JlZW4+IG1fc2NyZWVuOwog
ICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGFnZS9ET01X
aW5kb3cuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCShyZXZp
c2lvbiAyMzU1NykKKysrIFdlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCw2ICsyOCw5IEBAIG1vZHVsZSB3aW5kb3cgewogICAgIC8vIFlvdSBjYW4ndCBjYWNo
ZSB0aGUgV2luZG93IG9iamVjdCBpbiB0aGUgZ2xvYmFsIG9iamVjdCBiZWNhdXNlIGl0ICppcyog
dGhlIGdsb2JhbCBvYmplY3QuCiAgICAgLy8gRm9yIHRoZSBzYW1lIHJlYXNvbiwgdGhlcmUncyBu
byBuZWVkIHRvLgogICAgIGludGVyZmFjZSBbTGVnYWN5UGFyZW50PUtKUzo6V2luZG93LCBEb05v
dENhY2hlLCBHZW5lcmF0ZU5hdGl2ZUNvbnZlcnRlciwgQ3VzdG9tR2V0T3duUHJvcGVydHlTbG90
XSBET01XaW5kb3cgeworICAgICAgICAvLyAiRE9NIExldmVsIDAiCisgICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBTY3JlZW4gc2NyZWVuOworCiAgICAgICAgIC8vIERPTSBMZXZlbCAyIEFic3Ry
YWN0VmlldyBJbnRlcmZhY2UKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERvY3VtZW50IGRv
Y3VtZW50OwogCkluZGV4OiBXZWJDb3JlL3BhZ2UvU2NyZWVuLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BhZ2UvU2NyZWVuLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGFnZS9TY3Jl
ZW4uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwMyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2NyZWVuLmgiCisKKyNpbmNsdWRlICJGbG9hdFJlY3Qu
aCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUg
IlBsYXRmb3JtU2NyZWVuLmgiCisjaW5jbHVkZSAiV2lkZ2V0LmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworU2NyZWVuOjpTY3JlZW4oRnJhbWUqIGZyYW1lKQorICAgIDogbV9mcmFtZShmcmFt
ZSkKK3sKK30KKwordm9pZCBTY3JlZW46OmRpc2Nvbm5lY3RGcmFtZSgpCit7CisgICAgbV9mcmFt
ZSA9IDA7Cit9CisKK3Vuc2lnbmVkIFNjcmVlbjo6aGVpZ2h0KCkgY29uc3QKK3sKKyAgICBpZiAo
IW1fZnJhbWUpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBzY3JlZW5SZWN0KG1fZnJh
bWUtPnZpZXcoKSkuaGVpZ2h0KCk7Cit9CisKK3Vuc2lnbmVkIFNjcmVlbjo6d2lkdGgoKSBjb25z
dAoreworICAgIGlmICghbV9mcmFtZSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHNj
cmVlblJlY3QobV9mcmFtZS0+dmlldygpKS53aWR0aCgpOworfQorCit1bnNpZ25lZCBTY3JlZW46
OmNvbG9yRGVwdGgoKSBjb25zdAoreworICAgIGlmICghbV9mcmFtZSkKKyAgICAgICAgcmV0dXJu
IDA7CisgICAgcmV0dXJuIHNjcmVlbkRlcHRoKG1fZnJhbWUtPnZpZXcoKSk7Cit9CisKK3Vuc2ln
bmVkIFNjcmVlbjo6cGl4ZWxEZXB0aCgpIGNvbnN0Cit7CisgICAgaWYgKCFtX2ZyYW1lKQorICAg
ICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gc2NyZWVuRGVwdGgobV9mcmFtZS0+dmlldygpKTsK
K30KKwordW5zaWduZWQgU2NyZWVuOjphdmFpbExlZnQoKSBjb25zdAoreworICAgIGlmICghbV9m
cmFtZSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHNjcmVlbkF2YWlsYWJsZVJlY3Qo
bV9mcmFtZS0+dmlldygpKS54KCk7Cit9CisKK3Vuc2lnbmVkIFNjcmVlbjo6YXZhaWxUb3AoKSBj
b25zdAoreworICAgIGlmICghbV9mcmFtZSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJu
IHNjcmVlbkF2YWlsYWJsZVJlY3QobV9mcmFtZS0+dmlldygpKS55KCk7Cit9CisKK3Vuc2lnbmVk
IFNjcmVlbjo6YXZhaWxIZWlnaHQoKSBjb25zdAoreworICAgIGlmICghbV9mcmFtZSkKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHNjcmVlbkF2YWlsYWJsZVJlY3QobV9mcmFtZS0+dmll
dygpKS5oZWlnaHQoKTsKK30KKwordW5zaWduZWQgU2NyZWVuOjphdmFpbFdpZHRoKCkgY29uc3QK
K3sKKyAgICBpZiAoIW1fZnJhbWUpCisgICAgICAgIHJldHVybiAwOworICAgIHJldHVybiBzY3Jl
ZW5BdmFpbGFibGVSZWN0KG1fZnJhbWUtPnZpZXcoKSkud2lkdGgoKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wYWdlL1NjcmVlbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGFnZS9TY3JlZW4uaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGFnZS9TY3Jl
ZW4uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFNj
cmVlbl9oCisjZGVmaW5lIFNjcmVlbl9oCisKKyNpbmNsdWRlICJTaGFyZWQuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgRnJhbWU7CisKKyAgICBjbGFzcyBTY3JlZW4gOiBw
dWJsaWMgU2hhcmVkPFNjcmVlbj4geworICAgIHB1YmxpYzoKKyAgICAgICAgU2NyZWVuKEZyYW1l
Kik7CisgICAgICAgIHZvaWQgZGlzY29ubmVjdEZyYW1lKCk7CisKKyAgICAgICAgdW5zaWduZWQg
aGVpZ2h0KCkgY29uc3Q7CisgICAgICAgIHVuc2lnbmVkIHdpZHRoKCkgY29uc3Q7CisgICAgICAg
IHVuc2lnbmVkIGNvbG9yRGVwdGgoKSBjb25zdDsKKyAgICAgICAgdW5zaWduZWQgcGl4ZWxEZXB0
aCgpIGNvbnN0OworICAgICAgICB1bnNpZ25lZCBhdmFpbExlZnQoKSBjb25zdDsKKyAgICAgICAg
dW5zaWduZWQgYXZhaWxUb3AoKSBjb25zdDsKKyAgICAgICAgdW5zaWduZWQgYXZhaWxIZWlnaHQo
KSBjb25zdDsKKyAgICAgICAgdW5zaWduZWQgYXZhaWxXaWR0aCgpIGNvbnN0OworCisgICAgcHJp
dmF0ZToKKyAgICAgICAgRnJhbWUqIG1fZnJhbWU7CisgICAgfTsKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gU2NyZWVuX2gKSW5kZXg6IFdlYkNvcmUvcGFnZS9TY3JlZW4u
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9TY3JlZW4uaWRsCShyZXZpc2lvbiAwKQor
KysgV2ViQ29yZS9wYWdlL1NjcmVlbi5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworbW9kdWxlIHdpbmRvdyB7CisKKyAgICBpbnRlcmZhY2UgU2NyZWVuIHsKKyAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgaGVpZ2h0OworICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyB3aWR0aDsKKyAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgY29sb3JEZXB0aDsKKyAgICAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIHVuc2lnbmVkIGxvbmcgcGl4ZWxEZXB0aDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIHVuc2lnbmVkIGxvbmcgYXZhaWxMZWZ0OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
dW5zaWduZWQgbG9uZyBhdmFpbFRvcDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2ln
bmVkIGxvbmcgYXZhaWxIZWlnaHQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25l
ZCBsb25nIGF2YWlsV2lkdGg7CisgICAgfTsKKworfQpJbmRleDogV2ViQ29yZS9wYWdlL21hYy9X
ZWJDb3JlRnJhbWVCcmlkZ2UubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL21hYy9XZWJD
b3JlRnJhbWVCcmlkZ2UubW0JKHJldmlzaW9uIDIzNTU1KQorKysgV2ViQ29yZS9wYWdlL21hYy9X
ZWJDb3JlRnJhbWVCcmlkZ2UubW0JKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDcgQEAKICNp
bXBvcnQgIlJlbmRlcldpZGdldC5oIgogI2ltcG9ydCAiUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQu
aCIKICNpbXBvcnQgIlJlc291cmNlUmVxdWVzdC5oIgotI2ltcG9ydCAiU2NyZWVuLmgiCisjaW1w
b3J0ICJQbGF0Zm9ybVNjcmVlbi5oIgogI2ltcG9ydCAiU2VsZWN0aW9uQ29udHJvbGxlci5oIgog
I2ltcG9ydCAiU3lzdGVtVGltZS5oIgogI2ltcG9ydCAiVGV4dEVuY29kaW5nLmgiCkluZGV4OiBX
ZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9QbGF0Zm9ybVNjcmVlbi5oCShyZXZpc2lvbiAyMzU1NSkJKGZyb20gV2ViQ29yZS9w
bGF0Zm9ybS9TY3JlZW4uaDoyMzU1NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TY3Jl
ZW4uaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpZm5kZWYgU2NyZWVuX2gKKyNkZWZpbmUgU2NyZWVuX2gKKworI2luY2x1ZGUgIkZsb2F0UmVj
dC5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgor
CisjaWYgUExBVEZPUk0oTUFDKQorI2lmZGVmIF9fT0JKQ19fCisgICAgQGNsYXNzIE5TU2NyZWVu
OworICAgIEBjbGFzcyBOU1dpbmRvdzsKKyNlbHNlCisgICAgY2xhc3MgTlNTY3JlZW47CisgICAg
Y2xhc3MgTlNXaW5kb3c7CisjZW5kaWYKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
KyAgICBjbGFzcyBGbG9hdFJlY3Q7CisgICAgY2xhc3MgV2lkZ2V0OworICAgIAorICAgIGludCBz
Y3JlZW5EZXB0aChXaWRnZXQqKTsKKyAgICBpbnQgc2NyZWVuRGVwdGhQZXJDb21wb25lbnQoV2lk
Z2V0Kik7CisgICAgYm9vbCBzY3JlZW5Jc01vbm9jaHJvbWUoV2lkZ2V0Kik7CisKKyAgICBGbG9h
dFJlY3Qgc2NyZWVuUmVjdChXaWRnZXQqKTsKKyAgICBGbG9hdFJlY3Qgc2NyZWVuQXZhaWxhYmxl
UmVjdChXaWRnZXQqKTsKKyAgICAKKyNpZiBQTEFURk9STShNQUMpCisgICAgTlNTY3JlZW4gKnNj
cmVlbkZvcldpbmRvdyhOU1dpbmRvdyAqKTsKKworICAgIEZsb2F0UmVjdCB0b1VzZXJTcGFjZShj
b25zdCBOU1JlY3QmLCBOU1dpbmRvdyAqZGVzdGluYXRpb24pOworICAgIE5TUmVjdCB0b0Rldmlj
ZVNwYWNlKGNvbnN0IEZsb2F0UmVjdCYsIE5TV2luZG93ICpzb3VyY2UpOworCisgICAgTlNQb2lu
dCBmbGlwU2NyZWVuUG9pbnQoY29uc3QgTlNQb2ludCYsIE5TU2NyZWVuICopOworI2VuZGlmCisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFNjcmVlbl9oCkluZGV4OiBXZWJD
b3JlL3BsYXRmb3JtL1BsYXRmb3JtU2NyZWVuLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9QbGF0Zm9ybVNjcmVlbi5oCShyZXZpc2lvbiAyMzU1NSkKKysrIFdlYkNvcmUvcGxhdGZv
cm0vUGxhdGZvcm1TY3JlZW4uaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsOCBAQAogICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFNjcmVlbl9oCi0jZGVmaW5lIFNjcmVlbl9oCisj
aWZuZGVmIFBsYXRmb3JtU2NyZWVuX2gKKyNkZWZpbmUgUGxhdGZvcm1TY3JlZW5faAogCiAjaW5j
bHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTQ0LDE0ICs0
NCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBGbG9hdFJlY3Q7CiAgICAg
Y2xhc3MgV2lkZ2V0OwotICAgIAorCiAgICAgaW50IHNjcmVlbkRlcHRoKFdpZGdldCopOwogICAg
IGludCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudChXaWRnZXQqKTsKICAgICBib29sIHNjcmVlbklz
TW9ub2Nocm9tZShXaWRnZXQqKTsKIAogICAgIEZsb2F0UmVjdCBzY3JlZW5SZWN0KFdpZGdldCop
OwogICAgIEZsb2F0UmVjdCBzY3JlZW5BdmFpbGFibGVSZWN0KFdpZGdldCopOwotICAgIAorCiAj
aWYgUExBVEZPUk0oTUFDKQogICAgIE5TU2NyZWVuICpzY3JlZW5Gb3JXaW5kb3coTlNXaW5kb3cg
Kik7CiAKQEAgLTYzLDQgKzYzLDQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKLSNlbmRpZiAvLyBTY3JlZW5faAorI2VuZGlmIC8vIFBsYXRmb3JtU2Ny
ZWVuX2gKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vU2NyZWVuLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wbGF0Zm9ybS9TY3JlZW4uaAkocmV2aXNpb24gMjM1NTUpCisrKyBXZWJDb3JlL3BsYXRm
b3JtL1NjcmVlbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDY2ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2lmbmRlZiBTY3JlZW5faAotI2RlZmluZSBTY3JlZW5faAotCi0jaW5jbHVkZSAi
RmxvYXRSZWN0LmgiCi0jaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+Ci0KLSNpZiBQTEFURk9STShNQUMpCi0jaWZkZWYgX19PQkpDX18KLSAgICBAY2xhc3Mg
TlNTY3JlZW47Ci0gICAgQGNsYXNzIE5TV2luZG93OwotI2Vsc2UKLSAgICBjbGFzcyBOU1NjcmVl
bjsKLSAgICBjbGFzcyBOU1dpbmRvdzsKLSNlbmRpZgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotICAgIGNsYXNzIEZsb2F0UmVjdDsKLSAgICBjbGFzcyBXaWRnZXQ7Ci0gICAgCi0g
ICAgaW50IHNjcmVlbkRlcHRoKFdpZGdldCopOwotICAgIGludCBzY3JlZW5EZXB0aFBlckNvbXBv
bmVudChXaWRnZXQqKTsKLSAgICBib29sIHNjcmVlbklzTW9ub2Nocm9tZShXaWRnZXQqKTsKLQot
ICAgIEZsb2F0UmVjdCBzY3JlZW5SZWN0KFdpZGdldCopOwotICAgIEZsb2F0UmVjdCBzY3JlZW5B
dmFpbGFibGVSZWN0KFdpZGdldCopOwotICAgIAotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBOU1Nj
cmVlbiAqc2NyZWVuRm9yV2luZG93KE5TV2luZG93ICopOwotCi0gICAgRmxvYXRSZWN0IHRvVXNl
clNwYWNlKGNvbnN0IE5TUmVjdCYsIE5TV2luZG93ICpkZXN0aW5hdGlvbik7Ci0gICAgTlNSZWN0
IHRvRGV2aWNlU3BhY2UoY29uc3QgRmxvYXRSZWN0JiwgTlNXaW5kb3cgKnNvdXJjZSk7Ci0KLSAg
ICBOU1BvaW50IGZsaXBTY3JlZW5Qb2ludChjb25zdCBOU1BvaW50JiwgTlNTY3JlZW4gKik7Ci0j
ZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gU2NyZWVuX2gKSW5k
ZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ2RrL1BsYXRmb3JtU2NyZWVuR2RrLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dkay9QbGF0Zm9ybVNjcmVlbkdkay5jcHAJKHJldmlzaW9u
IDIzNTU1KQkoZnJvbSBXZWJDb3JlL3BsYXRmb3JtL2dkay9TY3JlZW5HZGsuY3BwOjIzNTU1KQor
KysgV2ViQ29yZS9wbGF0Zm9ybS9nZGsvUGxhdGZvcm1TY3JlZW5HZGsuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29t
cHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYg
TWljaGFlbCBFbW1lbCBtaWtlLmVtbWVsQGdtYWlsLmNvbSAKKyAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBD
T01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENP
TVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTY3JlZW4uaCIKKyNp
bmNsdWRlICJXaWRnZXQuaCIKKworI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVk
ZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDxnZGsvZ2RrLmg+CisjaW5jbHVkZSA8c3Rk
aW8uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitpbnQgc2NyZWVuRGVwdGgoV2lkZ2V0KiB3
aWRnZXQpIAoreworICAgIEFTU0VSVCh3aWRnZXQtPmRyYXdhYmxlKCkpOworCisgICAgZ2ludCBk
dW1teSwgZGVwdGg7CisgICAgZ2RrX3dpbmRvd19nZXRfZ2VvbWV0cnkod2lkZ2V0LT5kcmF3YWJs
ZSgpLCAmZHVtbXksICZkdW1teSwgJmR1bW15LCAmZHVtbXksICZkZXB0aCk7CisgICAgcmV0dXJu
IGRlcHRoOworfQorCitpbnQgc2NyZWVuRGVwdGhQZXJDb21wb25lbnQoV2lkZ2V0KikKK3sKKyAg
ICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiA4OworfQorCitib29sIHNjcmVlbklzTW9u
b2Nocm9tZShXaWRnZXQqKSAKK3sgCisgICAgbm90SW1wbGVtZW50ZWQoKTsgCisgICAgcmV0dXJu
IGZhbHNlOyAKK30KKworRmxvYXRSZWN0IHNjcmVlblJlY3QoV2lkZ2V0KikgCit7IAorICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIEZsb2F0UmVjdCgpOyAKK30KKworRmxvYXRSZWN0
IHNjcmVlbkF2YWlsYWJsZVJlY3QoV2lkZ2V0KikgCit7IAorICAgIG5vdEltcGxlbWVudGVkKCk7
IAorICAgIHJldHVybiBGbG9hdFJlY3QoKTsgCit9CisKK30KSW5kZXg6IFdlYkNvcmUvcGxhdGZv
cm0vZ2RrL1BsYXRmb3JtU2NyZWVuR2RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL2dkay9QbGF0Zm9ybVNjcmVlbkdkay5jcHAJKHJldmlzaW9uIDIzNTU1KQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9nZGsvUGxhdGZvcm1TY3JlZW5HZGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NiwxMyArMjYsMTMgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2Ny
ZWVuLmgiCi0jaW5jbHVkZSAiV2lkZ2V0LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIK
IAogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0jaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMu
aD4KKyNpbmNsdWRlICJXaWRnZXQuaCIKICNpbmNsdWRlIDxnZGsvZ2RrLmg+CiAjaW5jbHVkZSA8
c3RkaW8uaD4KKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTY5LDQgKzY5LDQgQEAgRmxvYXRSZWN0IHNjcmVlbkF2YWlsYWJsZVJlY3QoV2lk
Z2V0KikgCiAgICAgcmV0dXJuIEZsb2F0UmVjdCgpOyAKIH0KIAotfQorfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9nZGsvU2NyZWVuR2RrLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dkay9TY3JlZW5HZGsuY3BwCShyZXZpc2lvbiAyMzU1
NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ2RrL1NjcmVlbkdkay5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEsNzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRl
ciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwNiBNaWNo
YWVsIEVtbWVsIG1pa2UuZW1tZWxAZ21haWwuY29tIAotICogQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNjcmVlbi5oIgotI2luY2x1
ZGUgIldpZGdldC5oIgotCi0jaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKLSNpbmNsdWRlIDx3
dGYvQXNzZXJ0aW9ucy5oPgotI2luY2x1ZGUgPGdkay9nZGsuaD4KLSNpbmNsdWRlIDxzdGRpby5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWludCBzY3JlZW5EZXB0aChXaWRnZXQqIHdpZGdl
dCkgCi17Ci0gICAgQVNTRVJUKHdpZGdldC0+ZHJhd2FibGUoKSk7Ci0KLSAgICBnaW50IGR1bW15
LCBkZXB0aDsKLSAgICBnZGtfd2luZG93X2dldF9nZW9tZXRyeSh3aWRnZXQtPmRyYXdhYmxlKCks
ICZkdW1teSwgJmR1bW15LCAmZHVtbXksICZkdW1teSwgJmRlcHRoKTsKLSAgICByZXR1cm4gZGVw
dGg7Ci19Ci0KLWludCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudChXaWRnZXQqKQotewotICAgIG5v
dEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDg7Ci19Ci0KLWJvb2wgc2NyZWVuSXNNb25vY2hy
b21lKFdpZGdldCopIAoteyAKLSAgICBub3RJbXBsZW1lbnRlZCgpOyAKLSAgICByZXR1cm4gZmFs
c2U7IAotfQotCi1GbG9hdFJlY3Qgc2NyZWVuUmVjdChXaWRnZXQqKSAKLXsgCi0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLSAgICByZXR1cm4gRmxvYXRSZWN0KCk7IAotfQotCi1GbG9hdFJlY3Qgc2Ny
ZWVuQXZhaWxhYmxlUmVjdChXaWRnZXQqKSAKLXsgCi0gICAgbm90SW1wbGVtZW50ZWQoKTsgCi0g
ICAgcmV0dXJuIEZsb2F0UmVjdCgpOyAKLX0KLQotfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUGxhdGZvcm1Nb3VzZUV2ZW50TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZv
cm0vbWFjL1BsYXRmb3JtTW91c2VFdmVudE1hYy5tbQkocmV2aXNpb24gMjM1NTUpCisrKyBXZWJD
b3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybU1vdXNlRXZlbnRNYWMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTI2LDcgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogI2ltcG9ydCAiUGxhdGZvcm1N
b3VzZUV2ZW50LmgiCiAKLSNpbXBvcnQgIlNjcmVlbi5oIgorI2ltcG9ydCAiUGxhdGZvcm1TY3Jl
ZW4uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL21h
Yy9QbGF0Zm9ybVNjcmVlbk1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL21h
Yy9QbGF0Zm9ybVNjcmVlbk1hYy5tbQkocmV2aXNpb24gMjM1NTUpCShmcm9tIFdlYkNvcmUvcGxh
dGZvcm0vbWFjL1NjcmVlbk1hYy5tbToyMzU1NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vbWFjL1Bs
YXRmb3JtU2NyZWVuTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiU2NyZWVuLmgiCisK
KyNpbXBvcnQgIkZsb2F0UmVjdC5oIgorI2ltcG9ydCAiRnJhbWUuaCIKKyNpbXBvcnQgIkZyYW1l
Vmlldy5oIgorI2ltcG9ydCAiUGFnZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2ludCBz
Y3JlZW5EZXB0aChXaWRnZXQqKQoreworICAgIHJldHVybiBOU0JpdHNQZXJQaXhlbEZyb21EZXB0
aChbW05TU2NyZWVuIGRlZXBlc3RTY3JlZW5dIGRlcHRoXSk7Cit9CisKK2ludCBzY3JlZW5EZXB0
aFBlckNvbXBvbmVudChXaWRnZXQqKQoreworICAgIHJldHVybiBOU0JpdHNQZXJTYW1wbGVGcm9t
RGVwdGgoW1tOU1NjcmVlbiBkZWVwZXN0U2NyZWVuXSBkZXB0aF0pOworfQorCitib29sIHNjcmVl
bklzTW9ub2Nocm9tZShXaWRnZXQqKQoreworICAgIE5TU3RyaW5nICpjb2xvclNwYWNlID0gTlND
b2xvclNwYWNlRnJvbURlcHRoKFtbTlNTY3JlZW4gZGVlcGVzdFNjcmVlbl0gZGVwdGhdKTsKKyAg
ICByZXR1cm4gY29sb3JTcGFjZSA9PSBOU0NhbGlicmF0ZWRXaGl0ZUNvbG9yU3BhY2UKKyAgICAg
ICAgfHwgY29sb3JTcGFjZSA9PSBOU0NhbGlicmF0ZWRCbGFja0NvbG9yU3BhY2UKKyAgICAgICAg
fHwgY29sb3JTcGFjZSA9PSBOU0RldmljZVdoaXRlQ29sb3JTcGFjZQorICAgICAgICB8fCBjb2xv
clNwYWNlID09IE5TRGV2aWNlQmxhY2tDb2xvclNwYWNlOworfQorCisvLyBUaGVzZSBmdW5jdGlv
bnMgc2NhbGUgYmV0d2VlbiBzY3JlZW4gYW5kIHBhZ2UgY29vcmRpbmF0ZXMgYmVjYXVzZSBKYXZh
U2NyaXB0L0RPTSBvcGVyYXRpb25zIAorLy8gYXNzdW1lIHRoYXQgdGhlIHNjcmVlbiBhbmQgdGhl
IHBhZ2Ugc2hhcmUgdGhlIHNhbWUgY29vcmRpbmF0ZSBzeXN0ZW0uCisKK0Zsb2F0UmVjdCBzY3Jl
ZW5SZWN0KFdpZGdldCogd2lkZ2V0KQoreworICAgIE5TV2luZG93ICp3aW5kb3cgPSB3aWRnZXQg
PyBbd2lkZ2V0LT5nZXRWaWV3KCkgd2luZG93XSA6IG5pbDsKKyAgICByZXR1cm4gdG9Vc2VyU3Bh
Y2UoW3NjcmVlbkZvcldpbmRvdyh3aW5kb3cpIGZyYW1lXSwgd2luZG93KTsKK30KKworRmxvYXRS
ZWN0IHNjcmVlbkF2YWlsYWJsZVJlY3QoV2lkZ2V0KiB3aWRnZXQpCit7CisgICAgTlNXaW5kb3cg
KndpbmRvdyA9IHdpZGdldCA/IFt3aWRnZXQtPmdldFZpZXcoKSB3aW5kb3ddIDogbmlsOworICAg
IHJldHVybiB0b1VzZXJTcGFjZShbc2NyZWVuRm9yV2luZG93KHdpbmRvdykgdmlzaWJsZUZyYW1l
XSwgd2luZG93KTsKK30KKworTlNTY3JlZW4gKnNjcmVlbkZvcldpbmRvdyhOU1dpbmRvdyAqd2lu
ZG93KQoreworICAgIE5TU2NyZWVuICpzY3JlZW4gPSBbd2luZG93IHNjcmVlbl07IC8vIG5pbCBp
ZiB0aGUgd2luZG93IGlzIG9mZi1zY3JlZW4KKyAgICBpZiAoc2NyZWVuKQorICAgICAgICByZXR1
cm4gc2NyZWVuOworICAgIAorICAgIE5TQXJyYXkgKnNjcmVlbnMgPSBbTlNTY3JlZW4gc2NyZWVu
c107CisgICAgaWYgKFtzY3JlZW5zIGNvdW50XSA+IDApCisgICAgICAgIHJldHVybiBbc2NyZWVu
cyBvYmplY3RBdEluZGV4OjBdOyAvLyBzY3JlZW4gY29udGFpbmluZyB0aGUgbWVudWJhcgorICAg
IAorICAgIHJldHVybiBuaWw7Cit9CisKK0Zsb2F0UmVjdCB0b1VzZXJTcGFjZShjb25zdCBOU1Jl
Y3QmIHJlY3QsIE5TV2luZG93ICpkZXN0aW5hdGlvbikKK3sKKyAgICBGbG9hdFJlY3QgdXNlclJl
Y3QgPSByZWN0OworICAgIHVzZXJSZWN0LnNldFkoTlNNYXhZKFtzY3JlZW5Gb3JXaW5kb3coZGVz
dGluYXRpb24pIGZyYW1lXSkgLSAodXNlclJlY3QueSgpICsgdXNlclJlY3QuaGVpZ2h0KCkpKTsg
Ly8gZmxpcAorICAgIGlmIChkZXN0aW5hdGlvbikKKyAgICAgICAgdXNlclJlY3Quc2NhbGUoMSAv
IFtkZXN0aW5hdGlvbiB1c2VyU3BhY2VTY2FsZUZhY3Rvcl0pOyAvLyBzY2FsZSBkb3duCisgICAg
cmV0dXJuIHVzZXJSZWN0OworfQorCitOU1JlY3QgdG9EZXZpY2VTcGFjZShjb25zdCBGbG9hdFJl
Y3QmIHJlY3QsIE5TV2luZG93ICpzb3VyY2UpCit7CisgICAgRmxvYXRSZWN0IGRldmljZVJlY3Qg
PSByZWN0OworICAgIGlmIChzb3VyY2UpCisgICAgICAgIGRldmljZVJlY3Quc2NhbGUoW3NvdXJj
ZSB1c2VyU3BhY2VTY2FsZUZhY3Rvcl0pOyAvLyBzY2FsZSB1cAorICAgIGRldmljZVJlY3Quc2V0
WShOU01heFkoW3NjcmVlbkZvcldpbmRvdyhzb3VyY2UpIGZyYW1lXSkgLSAoZGV2aWNlUmVjdC55
KCkgKyBkZXZpY2VSZWN0LmhlaWdodCgpKSk7IC8vIGZsaXAKKyAgICByZXR1cm4gZGV2aWNlUmVj
dDsKK30KKworTlNQb2ludCBmbGlwU2NyZWVuUG9pbnQoY29uc3QgTlNQb2ludCYgc2NyZWVuUG9p
bnQsIE5TU2NyZWVuICpzY3JlZW4pCit7CisgICAgTlNQb2ludCBmbGlwcGVkUG9pbnQgPSBzY3Jl
ZW5Qb2ludDsKKyAgICBmbGlwcGVkUG9pbnQueSA9IE5TTWF4WShbc2NyZWVuIGZyYW1lXSkgLSBm
bGlwcGVkUG9pbnQueTsKKyAgICByZXR1cm4gZmxpcHBlZFBvaW50OworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNjcmVlbk1h
Yy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNjcmVlbk1h
Yy5tbQkocmV2aXNpb24gMjM1NTUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF0Zm9ybVNj
cmVlbk1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogICovCiAKICNpbXBv
cnQgImNvbmZpZy5oIgotI2ltcG9ydCAiU2NyZWVuLmgiCisjaW1wb3J0ICJQbGF0Zm9ybVNjcmVl
bi5oIgogCiAjaW1wb3J0ICJGbG9hdFJlY3QuaCIKICNpbXBvcnQgIkZyYW1lLmgiCkluZGV4OiBX
ZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JlZW5NYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
bGF0Zm9ybS9tYWMvU2NyZWVuTWFjLm1tCShyZXZpc2lvbiAyMzU1NSkKKysrIFdlYkNvcmUvcGxh
dGZvcm0vbWFjL1NjcmVlbk1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMSwxMDggKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLSNpbXBvcnQgIlNjcmVlbi5o
IgotCi0jaW1wb3J0ICJGbG9hdFJlY3QuaCIKLSNpbXBvcnQgIkZyYW1lLmgiCi0jaW1wb3J0ICJG
cmFtZVZpZXcuaCIKLSNpbXBvcnQgIlBhZ2UuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1p
bnQgc2NyZWVuRGVwdGgoV2lkZ2V0KikKLXsKLSAgICByZXR1cm4gTlNCaXRzUGVyUGl4ZWxGcm9t
RGVwdGgoW1tOU1NjcmVlbiBkZWVwZXN0U2NyZWVuXSBkZXB0aF0pOwotfQotCi1pbnQgc2NyZWVu
RGVwdGhQZXJDb21wb25lbnQoV2lkZ2V0KikKLXsKLSAgICByZXR1cm4gTlNCaXRzUGVyU2FtcGxl
RnJvbURlcHRoKFtbTlNTY3JlZW4gZGVlcGVzdFNjcmVlbl0gZGVwdGhdKTsKLX0KLQotYm9vbCBz
Y3JlZW5Jc01vbm9jaHJvbWUoV2lkZ2V0KikKLXsKLSAgICBOU1N0cmluZyAqY29sb3JTcGFjZSA9
IE5TQ29sb3JTcGFjZUZyb21EZXB0aChbW05TU2NyZWVuIGRlZXBlc3RTY3JlZW5dIGRlcHRoXSk7
Ci0gICAgcmV0dXJuIGNvbG9yU3BhY2UgPT0gTlNDYWxpYnJhdGVkV2hpdGVDb2xvclNwYWNlCi0g
ICAgICAgIHx8IGNvbG9yU3BhY2UgPT0gTlNDYWxpYnJhdGVkQmxhY2tDb2xvclNwYWNlCi0gICAg
ICAgIHx8IGNvbG9yU3BhY2UgPT0gTlNEZXZpY2VXaGl0ZUNvbG9yU3BhY2UKLSAgICAgICAgfHwg
Y29sb3JTcGFjZSA9PSBOU0RldmljZUJsYWNrQ29sb3JTcGFjZTsKLX0KLQotLy8gVGhlc2UgZnVu
Y3Rpb25zIHNjYWxlIGJldHdlZW4gc2NyZWVuIGFuZCBwYWdlIGNvb3JkaW5hdGVzIGJlY2F1c2Ug
SmF2YVNjcmlwdC9ET00gb3BlcmF0aW9ucyAKLS8vIGFzc3VtZSB0aGF0IHRoZSBzY3JlZW4gYW5k
IHRoZSBwYWdlIHNoYXJlIHRoZSBzYW1lIGNvb3JkaW5hdGUgc3lzdGVtLgotCi1GbG9hdFJlY3Qg
c2NyZWVuUmVjdChXaWRnZXQqIHdpZGdldCkKLXsKLSAgICBOU1dpbmRvdyAqd2luZG93ID0gd2lk
Z2V0ID8gW3dpZGdldC0+Z2V0VmlldygpIHdpbmRvd10gOiBuaWw7Ci0gICAgcmV0dXJuIHRvVXNl
clNwYWNlKFtzY3JlZW5Gb3JXaW5kb3cod2luZG93KSBmcmFtZV0sIHdpbmRvdyk7Ci19Ci0KLUZs
b2F0UmVjdCBzY3JlZW5BdmFpbGFibGVSZWN0KFdpZGdldCogd2lkZ2V0KQotewotICAgIE5TV2lu
ZG93ICp3aW5kb3cgPSB3aWRnZXQgPyBbd2lkZ2V0LT5nZXRWaWV3KCkgd2luZG93XSA6IG5pbDsK
LSAgICByZXR1cm4gdG9Vc2VyU3BhY2UoW3NjcmVlbkZvcldpbmRvdyh3aW5kb3cpIHZpc2libGVG
cmFtZV0sIHdpbmRvdyk7Ci19Ci0KLU5TU2NyZWVuICpzY3JlZW5Gb3JXaW5kb3coTlNXaW5kb3cg
KndpbmRvdykKLXsKLSAgICBOU1NjcmVlbiAqc2NyZWVuID0gW3dpbmRvdyBzY3JlZW5dOyAvLyBu
aWwgaWYgdGhlIHdpbmRvdyBpcyBvZmYtc2NyZWVuCi0gICAgaWYgKHNjcmVlbikKLSAgICAgICAg
cmV0dXJuIHNjcmVlbjsKLSAgICAKLSAgICBOU0FycmF5ICpzY3JlZW5zID0gW05TU2NyZWVuIHNj
cmVlbnNdOwotICAgIGlmIChbc2NyZWVucyBjb3VudF0gPiAwKQotICAgICAgICByZXR1cm4gW3Nj
cmVlbnMgb2JqZWN0QXRJbmRleDowXTsgLy8gc2NyZWVuIGNvbnRhaW5pbmcgdGhlIG1lbnViYXIK
LSAgICAKLSAgICByZXR1cm4gbmlsOwotfQotCi1GbG9hdFJlY3QgdG9Vc2VyU3BhY2UoY29uc3Qg
TlNSZWN0JiByZWN0LCBOU1dpbmRvdyAqZGVzdGluYXRpb24pCi17Ci0gICAgRmxvYXRSZWN0IHVz
ZXJSZWN0ID0gcmVjdDsKLSAgICB1c2VyUmVjdC5zZXRZKE5TTWF4WShbc2NyZWVuRm9yV2luZG93
KGRlc3RpbmF0aW9uKSBmcmFtZV0pIC0gKHVzZXJSZWN0LnkoKSArIHVzZXJSZWN0LmhlaWdodCgp
KSk7IC8vIGZsaXAKLSAgICBpZiAoZGVzdGluYXRpb24pCi0gICAgICAgIHVzZXJSZWN0LnNjYWxl
KDEgLyBbZGVzdGluYXRpb24gdXNlclNwYWNlU2NhbGVGYWN0b3JdKTsgLy8gc2NhbGUgZG93bgot
ICAgIHJldHVybiB1c2VyUmVjdDsKLX0KLQotTlNSZWN0IHRvRGV2aWNlU3BhY2UoY29uc3QgRmxv
YXRSZWN0JiByZWN0LCBOU1dpbmRvdyAqc291cmNlKQotewotICAgIEZsb2F0UmVjdCBkZXZpY2VS
ZWN0ID0gcmVjdDsKLSAgICBpZiAoc291cmNlKQotICAgICAgICBkZXZpY2VSZWN0LnNjYWxlKFtz
b3VyY2UgdXNlclNwYWNlU2NhbGVGYWN0b3JdKTsgLy8gc2NhbGUgdXAKLSAgICBkZXZpY2VSZWN0
LnNldFkoTlNNYXhZKFtzY3JlZW5Gb3JXaW5kb3coc291cmNlKSBmcmFtZV0pIC0gKGRldmljZVJl
Y3QueSgpICsgZGV2aWNlUmVjdC5oZWlnaHQoKSkpOyAvLyBmbGlwCi0gICAgcmV0dXJuIGRldmlj
ZVJlY3Q7Ci19Ci0KLU5TUG9pbnQgZmxpcFNjcmVlblBvaW50KGNvbnN0IE5TUG9pbnQmIHNjcmVl
blBvaW50LCBOU1NjcmVlbiAqc2NyZWVuKQotewotICAgIE5TUG9pbnQgZmxpcHBlZFBvaW50ID0g
c2NyZWVuUG9pbnQ7Ci0gICAgZmxpcHBlZFBvaW50LnkgPSBOU01heFkoW3NjcmVlbiBmcmFtZV0p
IC0gZmxpcHBlZFBvaW50Lnk7Ci0gICAgcmV0dXJuIGZsaXBwZWRQb2ludDsKLX0KLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9xdC9QbGF0Zm9ybVNjcmVl
blF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL3F0L1BsYXRmb3JtU2NyZWVu
UXQuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9xdC9QbGF0Zm9ybVNjcmVl
blF0LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVNjcmVlbi5oIgorCisjaW5jbHVkZSAiRmxv
YXRSZWN0LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIKKyNp
bmNsdWRlICJXaWRnZXQuaCIKKyNpbmNsdWRlIDxRQXBwbGljYXRpb24+CisjaW5jbHVkZSA8UURl
c2t0b3BXaWRnZXQ+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK2ludCBXZWJDb3JlOjpz
Y3JlZW5EZXB0aChXaWRnZXQqIHcpCit7CisgICAgUURlc2t0b3BXaWRnZXQqIGQgPSBRQXBwbGlj
YXRpb246OmRlc2t0b3AoKTsKKyAgICByZXR1cm4gZC0+c2NyZWVuKGQtPnNjcmVlbk51bWJlcih3
LT5xd2lkZ2V0KCkpKS0+ZGVwdGgoKTsKK30KKworaW50IFdlYkNvcmU6OnNjcmVlbkRlcHRoUGVy
Q29tcG9uZW50KFdpZGdldCogdykKK3sKKyAgICByZXR1cm4gdy0+cXdpZGdldCgpLT5kZXB0aCgp
OworfQorCitib29sIFdlYkNvcmU6OnNjcmVlbklzTW9ub2Nocm9tZShXaWRnZXQqIHcpCit7Cisg
ICAgUURlc2t0b3BXaWRnZXQqIGQgPSBRQXBwbGljYXRpb246OmRlc2t0b3AoKTsKKyAgICByZXR1
cm4gZC0+c2NyZWVuKGQtPnNjcmVlbk51bWJlcih3LT5xd2lkZ2V0KCkpKS0+bnVtQ29sb3JzKCkg
PCAyOworfQorCitGbG9hdFJlY3QgV2ViQ29yZTo6c2NyZWVuUmVjdChXaWRnZXQqIHcpCit7Cisg
ICAgcmV0dXJuIChRUmVjdEYpUUFwcGxpY2F0aW9uOjpkZXNrdG9wKCktPnNjcmVlbkdlb21ldHJ5
KHctPnF3aWRnZXQoKSk7Cit9CisKK0Zsb2F0UmVjdCBXZWJDb3JlOjpzY3JlZW5BdmFpbGFibGVS
ZWN0KFdpZGdldCogdykKK3sKKyAgICByZXR1cm4gKFFSZWN0RilRQXBwbGljYXRpb246OmRlc2t0
b3AoKS0+YXZhaWxhYmxlR2VvbWV0cnkody0+cXdpZGdldCgpKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9xdC9UZW1wb3JhcnlMaW5rU3R1YnMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vcXQvVGVtcG9yYXJ5TGlua1N0dWJz
LmNwcAkocmV2aXNpb24gMjM1NTUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL3F0L1RlbXBvcmFyeUxp
bmtTdHVicy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgTWljaGFlbCBFbW1lbCBtaWtlLmVtbWVsQGdtYWls
LmNvbQogICogQ29weXJpZ2h0IChDKSAyMDA2IEdlb3JnZSBTdGFpa29zIDxzdGFpa29zQGtkZS5v
cmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgRGlyayBNdWVsbGVyIDxtdWVsbGVyQGtkZS5vcmc+
CkBAIC0zMSwzNyArMzEsMzMgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0jaW5jbHVkZSA8
c3RkaW8uaD4KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlICJOb2RlLmgiCisjaW5jbHVk
ZSAiQVhPYmplY3RDYWNoZS5oIgorI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCisjaW5jbHVk
ZSAiQ29va2llSmFyLmgiCisjaW5jbHVkZSAiQ3Vyc29yLmgiCisjaW5jbHVkZSAiRm9udC5oIgog
I2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKLSNpbmNsdWRlICJG
b250LmgiCi0jaW5jbHVkZSAiSW50UG9pbnQuaCIKLSNpbmNsdWRlICJXaWRnZXQuaCIKLSNpbmNs
dWRlICJHcmFwaGljc0NvbnRleHQuaCIKLSNpbmNsdWRlICJDdXJzb3IuaCIKLSNpbmNsdWRlICJs
b2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKLSNpbmNsdWRlICJLVVJMLmgiCi0jaW5j
bHVkZSAiQ2FjaGVkUmVzb3VyY2UuaCIKLSNpbmNsdWRlICJQYXRoLmgiCi0jaW5jbHVkZSAiUGxh
dGZvcm1Nb3VzZUV2ZW50LmgiCi0jaW5jbHVkZSAiQ29va2llSmFyLmgiCi0jaW5jbHVkZSAiU2Ny
ZWVuLmgiCisjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCiAjaW5jbHVkZSAiSGlzdG9yeS5o
IgorI2luY2x1ZGUgIkljb25Mb2FkZXIuaCIKKyNpbmNsdWRlICJJbnRQb2ludC5oIgorI2luY2x1
ZGUgIktVUkwuaCIKICNpbmNsdWRlICJMYW5ndWFnZS5oIgorI2luY2x1ZGUgImxvYWRlci5oIgog
I2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKKyNpbmNsdWRlICJOb2RlLmgiCisjaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJQYXRoLmgiCisjaW5jbHVkZSAiUGxhdGZv
cm1Nb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAiUGx1Z0luSW5mb1N0b3JlLmgiCiAjaW5jbHVkZSAi
UmVuZGVyVGhlbWUuaCIKLSNpbmNsdWRlICJUZXh0Qm91bmRhcmllcy5oIgotI2luY2x1ZGUgIkFY
T2JqZWN0Q2FjaGUuaCIKLSNpbmNsdWRlICJJY29uTG9hZGVyLmgiCiAjaW5jbHVkZSAiU3lzdGVt
VGltZS5oIgotI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCi0KLSNpbmNsdWRlIDxRQXBwbGlj
YXRpb24+Ci0jaW5jbHVkZSA8UURlc2t0b3BXaWRnZXQ+CisjaW5jbHVkZSAiVGV4dEJvdW5kYXJp
ZXMuaCIKKyNpbmNsdWRlICJXaWRnZXQuaCIKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUg
PHN0ZGxpYi5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtMTI0LDMzICsxMjAs
NiBAQCBTdHJpbmcgV2ViQ29yZTo6QVhIZWFkaW5nVGV4dCgpIHsgcmV0dXJuCiAKIHZvaWQgRnJh
bWU6OnNldE5lZWRzUmVhcHBseVN0eWxlcygpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQogCi1pbnQg
V2ViQ29yZTo6c2NyZWVuRGVwdGgoV2lkZ2V0ICp3KQotewotICAgIFFEZXNrdG9wV2lkZ2V0ICpk
ID0gUUFwcGxpY2F0aW9uOjpkZXNrdG9wKCk7Ci0gICAgcmV0dXJuIGQtPnNjcmVlbihkLT5zY3Jl
ZW5OdW1iZXIody0+cXdpZGdldCgpKSktPmRlcHRoKCk7Ci19Ci0KLWludCBXZWJDb3JlOjpzY3Jl
ZW5EZXB0aFBlckNvbXBvbmVudChXaWRnZXQgKncpCi17Ci0gICAgcmV0dXJuIHctPnF3aWRnZXQo
KS0+ZGVwdGgoKTsKLX0KLQotYm9vbCBXZWJDb3JlOjpzY3JlZW5Jc01vbm9jaHJvbWUoV2lkZ2V0
ICp3KQotewotICAgIFFEZXNrdG9wV2lkZ2V0ICpkID0gUUFwcGxpY2F0aW9uOjpkZXNrdG9wKCk7
Ci0gICAgcmV0dXJuIGQtPnNjcmVlbihkLT5zY3JlZW5OdW1iZXIody0+cXdpZGdldCgpKSktPm51
bUNvbG9ycygpIDwgMjsKLX0KLQotRmxvYXRSZWN0IFdlYkNvcmU6OnNjcmVlblJlY3QoV2lkZ2V0
ICp3KQotewotICAgIHJldHVybiAoUVJlY3RGKVFBcHBsaWNhdGlvbjo6ZGVza3RvcCgpLT5zY3Jl
ZW5HZW9tZXRyeSh3LT5xd2lkZ2V0KCkpOwotfQotCi1GbG9hdFJlY3QgV2ViQ29yZTo6c2NyZWVu
QXZhaWxhYmxlUmVjdChXaWRnZXQgKncpCi17Ci0gICAgcmV0dXJuIChRUmVjdEYpUUFwcGxpY2F0
aW9uOjpkZXNrdG9wKCktPmF2YWlsYWJsZUdlb21ldHJ5KHctPnF3aWRnZXQoKSk7Ci19Ci0KIHZv
aWQgRnJhbWVWaWV3Ojp1cGRhdGVCb3JkZXIoKSB7IG5vdEltcGxlbWVudGVkKCk7IH0KIAogYm9v
bCBBWE9iamVjdENhY2hlOjpnQWNjZXNzaWJpbGl0eUVuYWJsZWQgPSBmYWxzZTsKSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vd2luL1BsYXRmb3JtU2NyZWVuV2luLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL3dpbi9QbGF0Zm9ybVNjcmVlbldpbi5jcHAJKHJldmlzaW9uIDIzNTU1
KQkoZnJvbSBXZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JlZW5XaW4uY3BwOjIzNTU1KQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS93aW4vUGxhdGZvcm1TY3JlZW5XaW4uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcgQXBwbGUgSW5j
LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlNjcmVlbi5oIgorCisjaW5jbHVkZSAiSW50UmVjdC5oIgorI2luY2x1ZGUgIkZsb2F0
UmVjdC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCisjaW5j
bHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCisvLyBSZXR1cm5zIGluZm8gZm9yIHRoZSBkZWZhdWx0IG1vbml0b3IgaWYgd2lkZ2V0IGlz
IE5VTEwKK3N0YXRpYyBNT05JVE9SSU5GT0VYIG1vbml0b3JJbmZvRm9yV2lkZ2V0KFdpZGdldCog
d2lkZ2V0KQoreworICAgIEhXTkQgd2luZG93ID0gd2lkZ2V0ID8gd2lkZ2V0LT5jb250YWluaW5n
V2luZG93KCkgOiAwOworICAgIEhNT05JVE9SIG1vbml0b3IgPSBNb25pdG9yRnJvbVdpbmRvdyh3
aW5kb3csIE1PTklUT1JfREVGQVVMVFRPUFJJTUFSWSk7CisKKyAgICBNT05JVE9SSU5GT0VYIG1v
bml0b3JJbmZvOworICAgIG1vbml0b3JJbmZvLmNiU2l6ZSA9IHNpemVvZihNT05JVE9SSU5GT0VY
KTsKKyAgICBHZXRNb25pdG9ySW5mbyhtb25pdG9yLCAmbW9uaXRvckluZm8pOworICAgIHJldHVy
biBtb25pdG9ySW5mbzsKK30KKworc3RhdGljIERFVk1PREUgZGV2aWNlSW5mb0ZvcldpZGdldChX
aWRnZXQqIHdpZGdldCkKK3sKKyAgICBNT05JVE9SSU5GT0VYIG1vbml0b3JJbmZvID0gbW9uaXRv
ckluZm9Gb3JXaWRnZXQod2lkZ2V0KTsKKworICAgIERFVk1PREUgZGV2aWNlSW5mbzsKKyAgICBk
ZXZpY2VJbmZvLmRtU2l6ZSA9IHNpemVvZihERVZNT0RFKTsKKyAgICBkZXZpY2VJbmZvLmRtRHJp
dmVyRXh0cmEgPSAwOworICAgIEVudW1EaXNwbGF5U2V0dGluZ3MobW9uaXRvckluZm8uc3pEZXZp
Y2UsIEVOVU1fQ1VSUkVOVF9TRVRUSU5HUywgJmRldmljZUluZm8pOworCisgICAgcmV0dXJuIGRl
dmljZUluZm87Cit9CisKK2ludCBzY3JlZW5EZXB0aChXaWRnZXQqIHdpZGdldCkKK3sKKyAgICBE
RVZNT0RFIGRldmljZUluZm8gPSBkZXZpY2VJbmZvRm9yV2lkZ2V0KHdpZGdldCk7CisgICAgcmV0
dXJuIGRldmljZUluZm8uZG1CaXRzUGVyUGVsOworfQorCitpbnQgc2NyZWVuRGVwdGhQZXJDb21w
b25lbnQoV2lkZ2V0KiB3aWRnZXQpCit7CisgICAgLy8gRklYTUU6IEFzc3VtZXMgUkdCIC0tIG5v
dCBzdXJlIGlmIHRoaXMgaXMgcmlnaHQuCisgICAgREVWTU9ERSBkZXZpY2VJbmZvID0gZGV2aWNl
SW5mb0ZvcldpZGdldCh3aWRnZXQpOworICAgIHJldHVybiBkZXZpY2VJbmZvLmRtQml0c1BlclBl
bCAvIDM7Cit9CisKK2Jvb2wgc2NyZWVuSXNNb25vY2hyb21lKFdpZGdldCogd2lkZ2V0KQorewor
ICAgIERFVk1PREUgZGV2aWNlSW5mbyA9IGRldmljZUluZm9Gb3JXaWRnZXQod2lkZ2V0KTsKKyAg
ICByZXR1cm4gZGV2aWNlSW5mby5kbUNvbG9yID09IERNQ09MT1JfTU9OT0NIUk9NRTsKK30KKwor
RmxvYXRSZWN0IHNjcmVlblJlY3QoV2lkZ2V0KiB3aWRnZXQpCit7CisgICAgTU9OSVRPUklORk9F
WCBtb25pdG9ySW5mbyA9IG1vbml0b3JJbmZvRm9yV2lkZ2V0KHdpZGdldCk7CisgICAgcmV0dXJu
IG1vbml0b3JJbmZvLnJjTW9uaXRvcjsKK30KKworRmxvYXRSZWN0IHNjcmVlbkF2YWlsYWJsZVJl
Y3QoV2lkZ2V0KiB3aWRnZXQpCit7CisgICAgTU9OSVRPUklORk9FWCBtb25pdG9ySW5mbyA9IG1v
bml0b3JJbmZvRm9yV2lkZ2V0KHdpZGdldCk7CisgICAgcmV0dXJuIG1vbml0b3JJbmZvLnJjV29y
azsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS93
aW4vUGxhdGZvcm1TY3JlZW5XaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0v
d2luL1BsYXRmb3JtU2NyZWVuV2luLmNwcAkocmV2aXNpb24gMjM1NTUpCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL3dpbi9QbGF0Zm9ybVNjcmVlbldpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0LDcg
KzI0LDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2NyZWVuLmgi
CisjaW5jbHVkZSAiUGxhdGZvcm1TY3JlZW4uaCIKIAogI2luY2x1ZGUgIkludFJlY3QuaCIKICNp
bmNsdWRlICJGbG9hdFJlY3QuaCIKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vd2luL1NjcmVlbldp
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS93aW4vU2NyZWVuV2luLmNwcAko
cmV2aXNpb24gMjM1NTUpCisrKyBXZWJDb3JlL3BsYXRmb3JtL3dpbi9TY3JlZW5XaW4uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDkzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYs
IDIwMDcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0g
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIlNjcmVlbi5oIgotCi0jaW5jbHVkZSAiSW50UmVjdC5oIgot
I2luY2x1ZGUgIkZsb2F0UmVjdC5oIgotI2luY2x1ZGUgIkZyYW1lLmgiCi0jaW5jbHVkZSAiRnJh
bWVWaWV3LmgiCi0jaW5jbHVkZSAiUGFnZS5oIgotI2luY2x1ZGUgPHdpbmRvd3MuaD4KLQotbmFt
ZXNwYWNlIFdlYkNvcmUgewotCi0vLyBSZXR1cm5zIGluZm8gZm9yIHRoZSBkZWZhdWx0IG1vbml0
b3IgaWYgd2lkZ2V0IGlzIE5VTEwKLXN0YXRpYyBNT05JVE9SSU5GT0VYIG1vbml0b3JJbmZvRm9y
V2lkZ2V0KFdpZGdldCogd2lkZ2V0KQotewotICAgIEhXTkQgd2luZG93ID0gd2lkZ2V0ID8gd2lk
Z2V0LT5jb250YWluaW5nV2luZG93KCkgOiAwOwotICAgIEhNT05JVE9SIG1vbml0b3IgPSBNb25p
dG9yRnJvbVdpbmRvdyh3aW5kb3csIE1PTklUT1JfREVGQVVMVFRPUFJJTUFSWSk7Ci0KLSAgICBN
T05JVE9SSU5GT0VYIG1vbml0b3JJbmZvOwotICAgIG1vbml0b3JJbmZvLmNiU2l6ZSA9IHNpemVv
ZihNT05JVE9SSU5GT0VYKTsKLSAgICBHZXRNb25pdG9ySW5mbyhtb25pdG9yLCAmbW9uaXRvcklu
Zm8pOwotICAgIHJldHVybiBtb25pdG9ySW5mbzsKLX0KLQotc3RhdGljIERFVk1PREUgZGV2aWNl
SW5mb0ZvcldpZGdldChXaWRnZXQqIHdpZGdldCkKLXsKLSAgICBNT05JVE9SSU5GT0VYIG1vbml0
b3JJbmZvID0gbW9uaXRvckluZm9Gb3JXaWRnZXQod2lkZ2V0KTsKLQotICAgIERFVk1PREUgZGV2
aWNlSW5mbzsKLSAgICBkZXZpY2VJbmZvLmRtU2l6ZSA9IHNpemVvZihERVZNT0RFKTsKLSAgICBk
ZXZpY2VJbmZvLmRtRHJpdmVyRXh0cmEgPSAwOwotICAgIEVudW1EaXNwbGF5U2V0dGluZ3MobW9u
aXRvckluZm8uc3pEZXZpY2UsIEVOVU1fQ1VSUkVOVF9TRVRUSU5HUywgJmRldmljZUluZm8pOwot
Ci0gICAgcmV0dXJuIGRldmljZUluZm87Ci19Ci0KLWludCBzY3JlZW5EZXB0aChXaWRnZXQqIHdp
ZGdldCkKLXsKLSAgICBERVZNT0RFIGRldmljZUluZm8gPSBkZXZpY2VJbmZvRm9yV2lkZ2V0KHdp
ZGdldCk7Ci0gICAgcmV0dXJuIGRldmljZUluZm8uZG1CaXRzUGVyUGVsOwotfQotCi1pbnQgc2Ny
ZWVuRGVwdGhQZXJDb21wb25lbnQoV2lkZ2V0KiB3aWRnZXQpCi17Ci0gICAgLy8gRklYTUU6IEFz
c3VtZXMgUkdCIC0tIG5vdCBzdXJlIGlmIHRoaXMgaXMgcmlnaHQuCi0gICAgREVWTU9ERSBkZXZp
Y2VJbmZvID0gZGV2aWNlSW5mb0ZvcldpZGdldCh3aWRnZXQpOwotICAgIHJldHVybiBkZXZpY2VJ
bmZvLmRtQml0c1BlclBlbCAvIDM7Ci19Ci0KLWJvb2wgc2NyZWVuSXNNb25vY2hyb21lKFdpZGdl
dCogd2lkZ2V0KQotewotICAgIERFVk1PREUgZGV2aWNlSW5mbyA9IGRldmljZUluZm9Gb3JXaWRn
ZXQod2lkZ2V0KTsKLSAgICByZXR1cm4gZGV2aWNlSW5mby5kbUNvbG9yID09IERNQ09MT1JfTU9O
T0NIUk9NRTsKLX0KLQotRmxvYXRSZWN0IHNjcmVlblJlY3QoV2lkZ2V0KiB3aWRnZXQpCi17Ci0g
ICAgTU9OSVRPUklORk9FWCBtb25pdG9ySW5mbyA9IG1vbml0b3JJbmZvRm9yV2lkZ2V0KHdpZGdl
dCk7Ci0gICAgcmV0dXJuIG1vbml0b3JJbmZvLnJjTW9uaXRvcjsKLX0KLQotRmxvYXRSZWN0IHNj
cmVlbkF2YWlsYWJsZVJlY3QoV2lkZ2V0KiB3aWRnZXQpCi17Ci0gICAgTU9OSVRPUklORk9FWCBt
b25pdG9ySW5mbyA9IG1vbml0b3JJbmZvRm9yV2lkZ2V0KHdpZGdldCk7Ci0gICAgcmV0dXJuIG1v
bml0b3JJbmZvLnJjV29yazsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuY3BwCShyZXZpc2lvbiAyMzU1NSkKKysrIFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAK
ICNpbmNsdWRlICJSZW5kZXJUZXh0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKICNpbmNs
dWRlICJSZW5kZXJWaWV3LmgiCi0jaW5jbHVkZSAiU2NyZWVuLmgiCisjaW5jbHVkZSAiUGxhdGZv
cm1TY3JlZW4uaCIKICNpbmNsdWRlICJUZXh0UmVzb3VyY2VEZWNvZGVyLmgiCiAjaW5jbHVkZSAi
VGV4dFN0cmVhbS5oIgogI2luY2x1ZGUgImNzc3N0eWxlc2VsZWN0b3IuaCIKSW5kZXg6IExheW91
dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIzNTU4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMDctMDYtMTYgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGVz
IHRlc3RzIGZvciBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDE5Mwor
ICAgICAgICBNb3ZlIHRoZSBTY3JlZW4gb2JqZWN0IG91dCBvZiB0aGUgSlMgYmluZGluZ3MKKwor
ICAgICAgICAqIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctYXBwZW5kYWdlcy1jbGVhcmVkLWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhw
ZWN0ZWQudHh0OgorCiAyMDA3LTA2LTE1ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4uCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9X
aW5kb3cvd2luZG93LWFwcGVuZGFnZXMtY2xlYXJlZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1hcHBlbmRhZ2VzLWNsZWFyZWQt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyMzU1NSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1dp
bmRvdy93aW5kb3ctYXBwZW5kYWdlcy1jbGVhcmVkLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMTksNiArMTksMTQgQEAgUEFTUyBsb2NhdGlvbi50b1N0cmluZyA9PSAiTEVGVE9WRVIi
IGlzIAogUEFTUyBsb2NhdGlvbmJhci52aXNpYmxlID09ICJMRUZUT1ZFUiIgaXMgZmFsc2UKIFBB
U1MgbWVudWJhci52aXNpYmxlID09ICJMRUZUT1ZFUiIgaXMgZmFsc2UKIFBBU1MgcGVyc29uYWxi
YXIudmlzaWJsZSA9PSAiTEVGVE9WRVIiIGlzIGZhbHNlCitQQVNTIHNjcmVlbi5hdmFpbEhlaWdo
dCA9PSAiTEVGVE9WRVIiIGlzIGZhbHNlCitQQVNTIHNjcmVlbi5hdmFpbExlZnQgPT0gIkxFRlRP
VkVSIiBpcyBmYWxzZQorUEFTUyBzY3JlZW4uYXZhaWxUb3AgPT0gIkxFRlRPVkVSIiBpcyBmYWxz
ZQorUEFTUyBzY3JlZW4uYXZhaWxXaWR0aCA9PSAiTEVGVE9WRVIiIGlzIGZhbHNlCitQQVNTIHNj
cmVlbi5jb2xvckRlcHRoID09ICJMRUZUT1ZFUiIgaXMgZmFsc2UKK1BBU1Mgc2NyZWVuLmhlaWdo
dCA9PSAiTEVGVE9WRVIiIGlzIGZhbHNlCitQQVNTIHNjcmVlbi5waXhlbERlcHRoID09ICJMRUZU
T1ZFUiIgaXMgZmFsc2UKK1BBU1Mgc2NyZWVuLndpZHRoID09ICJMRUZUT1ZFUiIgaXMgZmFsc2UK
IFBBU1Mgc2Nyb2xsYmFycy52aXNpYmxlID09ICJMRUZUT1ZFUiIgaXMgZmFsc2UKIFBBU1Mgc3Rh
dHVzYmFyLnZpc2libGUgPT0gIkxFRlRPVkVSIiBpcyBmYWxzZQogUEFTUyB0b29sYmFyLnZpc2li
bGUgPT0gIkxFRlRPVkVSIiBpcyBmYWxzZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2lu
ZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAyMzU1NykKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVy
dGllcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEwMDUsNiArMTAwNSwxNCBAQCB3
aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lciBbZnVuY3Rpb25dCiB3aW5kb3cucmVzaXplQnkgW2Z1
bmN0aW9uXQogd2luZG93LnJlc2l6ZVRvIFtmdW5jdGlvbl0KIHdpbmRvdy5zY3JlZW4gW29iamVj
dCBTY3JlZW5dCit3aW5kb3cuc2NyZWVuLmF2YWlsSGVpZ2h0IFtudW1iZXJdCit3aW5kb3cuc2Ny
ZWVuLmF2YWlsTGVmdCBbbnVtYmVyXQord2luZG93LnNjcmVlbi5hdmFpbFRvcCBbbnVtYmVyXQor
d2luZG93LnNjcmVlbi5hdmFpbFdpZHRoIFtudW1iZXJdCit3aW5kb3cuc2NyZWVuLmNvbG9yRGVw
dGggW251bWJlcl0KK3dpbmRvdy5zY3JlZW4uaGVpZ2h0IFtudW1iZXJdCit3aW5kb3cuc2NyZWVu
LnBpeGVsRGVwdGggW251bWJlcl0KK3dpbmRvdy5zY3JlZW4ud2lkdGggW251bWJlcl0KIHdpbmRv
dy5zY3JlZW5MZWZ0IFtudW1iZXJdCiB3aW5kb3cuc2NyZWVuVG9wIFtudW1iZXJdCiB3aW5kb3cu
c2NyZWVuWCBbbnVtYmVyXQo=
</data>
<flag name="review"
          id="6215"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>