<?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>43274</bug_id>
          
          <creation_ts>2010-07-30 15:12:42 -0700</creation_ts>
          <short_desc>Add first pass of structured message passing</short_desc>
          <delta_ts>2010-07-30 15:28:19 -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>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>258416</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-07-30 15:12:42 -0700</bug_when>
    <thetext>Add first pass of structured message passing. Just UIProcess to InjectedBundle this time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258417</commentid>
    <comment_count>1</comment_count>
      <attachid>63110</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-07-30 15:14:04 -0700</bug_when>
    <thetext>Created attachment 63110
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258418</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-30 15:16:46 -0700</bug_when>
    <thetext>Attachment 63110 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp:118:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp:167:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
WebKit2/WebProcess/InjectedBundle/InjectedBundle.h:35:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebKit2/UIProcess/WebContext.cpp:189:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
WebKit2/UIProcess/WebContext.cpp:191:  One space before end of line comments  [whitespace/comments] [5]
WebKit2/UIProcess/WebContext.cpp:192:  One space before end of line comments  [whitespace/comments] [5]
WebKit2/UIProcess/WebContext.cpp:194:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 7 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>258422</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-07-30 15:28:19 -0700</bug_when>
    <thetext>Landed in 64380.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63110</attachid>
            <date>2010-07-30 15:14:04 -0700</date>
            <delta_ts>2010-07-30 15:24:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>structure.diff</filename>
            <type>text/plain</type>
            <size>33728</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDM3NikKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTYgQEAKKzIwMTAtMDctMjkgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXRjaCBm
b3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzMjc0CisgICAgICAg
IEFkZCBmaXJzdCBwYXNzIG9mIHN0cnVjdHVyZWQgbWVzc2FnZSBwYXNzaW5nLgorCisgICAgICAg
IC0gT25seSBzdXBwb3J0cyBwYXNzaW5nIG1lc3NhZ2VzIGZyb20gdGhlIFVJUHJvY2VzcyAtPiBJ
bmplY3RlZEJ1bmRsZQorICAgICAgICAtIE9ubHkgc3VwcG9ydHMgcGFzc2luZyBTdHJpbmdzLCBB
cnJheXMsIGFuZCBXZWJQYWdlIHJlZmVyZW5jZXMgKE5PVEU6IFRoZXJlCisgICAgICAgICAgY3Vy
cmVudGx5IGlzbid0IGEgd2F5IHRvIG1ha2UgYW4gYXJyYXkpLgorICAgICAgICAtIENoYW5nZWQg
SW1tdXRhYmxlQXJyYXkgdG8gb3BlcmF0ZSBvbiBBUElPYmplY3RzIGluc3RlYWQgb2Ygdm9pZCon
cyBhbmQgCisgICAgICAgICAgcmVtb3ZlZCB0aGUgcmV0YWluL3JlbGVhc2UgYWJzdHJhY3Rpb24u
CisKKyAgICAgICAgKiBQbGF0Zm9ybS9Db3JlSVBDL01lc3NhZ2VJRC5oOgorICAgICAgICAoQ29y
ZUlQQzo6KToKKyAgICAgICAgKiBTaGFyZWQvQ29yZUlQQ1N1cHBvcnQvSW5qZWN0ZWRCdW5kbGVN
ZXNzYWdlS2luZHMuaDogQWRkZWQuCisgICAgICAgIChJbmplY3RlZEJ1bmRsZU1lc3NhZ2U6Oik6
CisgICAgICAgIChDb3JlSVBDOjopOgorICAgICAgICAqIFNoYXJlZC9Db3JlSVBDU3VwcG9ydC9X
ZWJQcm9jZXNzTWVzc2FnZUtpbmRzLmg6CisgICAgICAgIChXZWJQcm9jZXNzTWVzc2FnZTo6KToK
KyAgICAgICAgKiBTaGFyZWQvSW1tdXRhYmxlQXJyYXkuY3BwOgorICAgICAgICAoV2ViS2l0OjpJ
bW11dGFibGVBcnJheTo6SW1tdXRhYmxlQXJyYXkpOgorICAgICAgICAoV2ViS2l0OjpJbW11dGFi
bGVBcnJheTo6fkltbXV0YWJsZUFycmF5KToKKyAgICAgICAgKiBTaGFyZWQvSW1tdXRhYmxlQXJy
YXkuaDoKKyAgICAgICAgKFdlYktpdDo6SW1tdXRhYmxlQXJyYXk6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJLaXQ6OkltbXV0YWJsZUFycmF5OjphZG9wdCk6CisgICAgICAgIChXZWJLaXQ6OkltbXV0
YWJsZUFycmF5OjphdCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLQmFzZS5oOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0NvbnRleHQuY3BwOgorICAgICAgICAoV0tDb250ZXh0
UG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0Mv
V0tDb250ZXh0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLVHlwZS5jcHA6CisgICAg
ICAgIChXS0dldFR5cGVJRCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dlYktpdDIuaDoK
KyAgICAgICAgKiBVSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNwcDoKKyAgICAgICAgKFdl
YktpdDo6V2ViQmFja0ZvcndhcmRMaXN0OjpiYWNrTGlzdEFzSW1tdXRhYmxlQXJyYXlXaXRoTGlt
aXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3Q6OmZvcndhcmRMaXN0QXNJ
bW11dGFibGVBcnJheVdpdGhMaW1pdCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0Ojpwb3N0TWVzc2FnZVRvSW5qZWN0ZWRC
dW5kbGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb250ZXh0OjpkaWRSZWNlaXZlTWVzc2FnZUZy
b21JbmplY3RlZEJ1bmRsZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHQuaDoKKyAg
ICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZS5oOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAoV2ViS2l0
OjpJbmplY3RlZEJ1bmRsZTo6ZGlkUmVjZWl2ZU1lc3NhZ2UpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6Y2hpbGRG
cmFtZXMpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKToKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiB3aW4vV2ViS2l0Mi52Y3Byb2o6CisKIDIwMTAt
MDctMzAgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpJbmRleDogV2ViS2l0Mi9QbGF0Zm9ybS9Db3JlSVBDL01l
c3NhZ2VJRC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvUGxhdGZvcm0vQ29yZUlQQy9NZXNzYWdl
SUQuaAkocmV2aXNpb24gNjQzNzYpCisrKyBXZWJLaXQyL1BsYXRmb3JtL0NvcmVJUEMvTWVzc2Fn
ZUlELmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAgZW51bSBNZXNzYWdlQ2xhc3Mg
ewogCiAgICAgLy8gTWVzc2FnZXMgc2VudCBieSB0aGUgVUkgcHJvY2VzcyB0byB0aGUgd2ViIHBy
b2Nlc3MuCiAgICAgTWVzc2FnZUNsYXNzV2ViUHJvY2VzcywKKyAgICBNZXNzYWdlQ2xhc3NJbmpl
Y3RlZEJ1bmRsZSwKICAgICBNZXNzYWdlQ2xhc3NXZWJQYWdlLAogICAgIE1lc3NhZ2VDbGFzc0Ry
YXdpbmdBcmVhLAogCkluZGV4OiBXZWJLaXQyL1NoYXJlZC9JbW11dGFibGVBcnJheS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvSW1tdXRhYmxlQXJyYXkuY3BwCShyZXZpc2lvbiA2
NDM3NikKKysrIFdlYktpdDIvU2hhcmVkL0ltbXV0YWJsZUFycmF5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzEsMjMgKzMxLDIwIEBAIEltbXV0YWJsZUFycmF5OjpJbW11dGFibGVBcnJheSgpCiAg
ICAgOiBtX2VudHJpZXMoMCkKICAgICAsIG1fc2l6ZSgwKQogewotICAgIG1lbXNldCgmbV9jYWxs
YmFja3MsIDAsIHNpemVvZihtX2NhbGxiYWNrcykpOwogfQogCi1JbW11dGFibGVBcnJheTo6SW1t
dXRhYmxlQXJyYXkoY29uc3Qgdm9pZCoqIGVudHJpZXMsIHNpemVfdCBzaXplLCBjb25zdCBJbW11
dGFibGVBcnJheUNhbGxiYWNrcyogY2FsbGJhY2tzKQotICAgIDogbV9lbnRyaWVzKG5ldyB2b2lk
KltzaXplXSkKK0ltbXV0YWJsZUFycmF5OjpJbW11dGFibGVBcnJheShBUElPYmplY3QqKiBlbnRy
aWVzLCBzaXplX3Qgc2l6ZSkKKyAgICA6IG1fZW50cmllcyhuZXcgQVBJT2JqZWN0KltzaXplXSkK
ICAgICAsIG1fc2l6ZShzaXplKQotICAgICwgbV9jYWxsYmFja3MoKmNhbGxiYWNrcykKIHsKICAg
ICBtZW1jcHkobV9lbnRyaWVzLCBlbnRyaWVzLCBtX3NpemUpOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV9zaXplOyArK2kpCi0gICAgICAgIG1fY2FsbGJhY2tzLnJlZihtX2VudHJpZXNb
aV0pOworICAgICAgICBtX2VudHJpZXNbaV0tPnJlZigpOwogfQogCi1JbW11dGFibGVBcnJheTo6
SW1tdXRhYmxlQXJyYXkodm9pZCoqIGVudHJpZXMsIHNpemVfdCBzaXplLCBjb25zdCBJbW11dGFi
bGVBcnJheUNhbGxiYWNrcyogY2FsbGJhY2tzLCBBZG9wdFRhZykKK0ltbXV0YWJsZUFycmF5OjpJ
bW11dGFibGVBcnJheShBUElPYmplY3QqKiBlbnRyaWVzLCBzaXplX3Qgc2l6ZSwgQWRvcHRUYWcp
CiAgICAgOiBtX2VudHJpZXMoZW50cmllcykKICAgICAsIG1fc2l6ZShzaXplKQotICAgICwgbV9j
YWxsYmFja3MoKmNhbGxiYWNrcykKIHsKIH0KIApAQCAtNTcsNyArNTQsNyBAQCBJbW11dGFibGVB
cnJheTo6fkltbXV0YWJsZUFycmF5KCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBtX3NpemU7ICsraSkKLSAgICAgICAgbV9jYWxsYmFja3MuZGVyZWYobV9l
bnRyaWVzW2ldKTsKKyAgICAgICAgbV9lbnRyaWVzW2ldLT5kZXJlZigpOwogICAgIGRlbGV0ZSBb
XSBtX2VudHJpZXM7CiB9CiAKSW5kZXg6IFdlYktpdDIvU2hhcmVkL0ltbXV0YWJsZUFycmF5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0Mi9TaGFyZWQvSW1tdXRhYmxlQXJyYXkuaAkocmV2aXNpb24g
NjQzNzYpCisrKyBXZWJLaXQyL1NoYXJlZC9JbW11dGFibGVBcnJheS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNSw0MSArMzUsMzMgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIEltbXV0YWJs
ZUFycmF5IDogcHVibGljIEFQSU9iamVjdCB7CiBwdWJsaWM6Ci0gICAgc3RydWN0IEltbXV0YWJs
ZUFycmF5Q2FsbGJhY2tzIHsKLSAgICAgICAgdHlwZWRlZiB2b2lkICgqSW1tdXRhYmxlQXJyYXlD
YWxsYmFjaykoY29uc3Qgdm9pZCopOwotICAgICAgICBJbW11dGFibGVBcnJheUNhbGxiYWNrIHJl
ZjsKLSAgICAgICAgSW1tdXRhYmxlQXJyYXlDYWxsYmFjayBkZXJlZjsKLSAgICB9OwotCiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IGNyZWF0ZSgpCiAgICAgewogICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEltbXV0YWJsZUFycmF5KTsKICAgICB9Ci0KLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4gY3JlYXRlKGNvbnN0IHZvaWQqKiBlbnRyaWVz
LCBzaXplX3Qgc2l6ZSwgY29uc3QgSW1tdXRhYmxlQXJyYXlDYWxsYmFja3MqIGNhbGxiYWNrcykK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4gY3JlYXRlKEFQSU9iamVjdCoq
IGVudHJpZXMsIHNpemVfdCBzaXplKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBJbW11dGFibGVBcnJheShlbnRyaWVzLCBzaXplLCBjYWxsYmFja3MpKTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBJbW11dGFibGVBcnJheShlbnRyaWVzLCBzaXplKSk7CiAgICAgfQot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEltbXV0YWJsZUFycmF5PiBhZG9wdCh2b2lkKiogZW50cmll
cywgc2l6ZV90IHNpemUsIGNvbnN0IEltbXV0YWJsZUFycmF5Q2FsbGJhY2tzKiBjYWxsYmFja3Mp
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IGFkb3B0KEFQSU9iamVjdCoq
IGVudHJpZXMsIHNpemVfdCBzaXplKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBJbW11dGFibGVBcnJheShlbnRyaWVzLCBzaXplLCBjYWxsYmFja3MsIEFkb3B0KSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgSW1tdXRhYmxlQXJyYXkoZW50cmllcywgc2l6ZSwgQWRv
cHQpKTsKICAgICB9CiAgICAgfkltbXV0YWJsZUFycmF5KCk7CiAKLSAgICBjb25zdCB2b2lkKiBh
dChzaXplX3QgaSkgeyBBU1NFUlQoaSA8IG1fc2l6ZSk7IHJldHVybiBtX2VudHJpZXNbaV07IH0K
KyAgICBBUElPYmplY3QqIGF0KHNpemVfdCBpKSB7IEFTU0VSVChpIDwgbV9zaXplKTsgcmV0dXJu
IG1fZW50cmllc1tpXTsgfQogICAgIHNpemVfdCBzaXplKCkgeyByZXR1cm4gbV9zaXplOyB9CiAK
IHByaXZhdGU6CiAgICAgSW1tdXRhYmxlQXJyYXkoKTsKLSAgICBJbW11dGFibGVBcnJheShjb25z
dCB2b2lkKiogZW50cmllcywgc2l6ZV90IHNpemUsIGNvbnN0IEltbXV0YWJsZUFycmF5Q2FsbGJh
Y2tzKik7CisgICAgSW1tdXRhYmxlQXJyYXkoQVBJT2JqZWN0KiogZW50cmllcywgc2l6ZV90IHNp
emUpOwogICAgIGVudW0gQWRvcHRUYWcgeyBBZG9wdCB9OwotICAgIEltbXV0YWJsZUFycmF5KHZv
aWQqKiBlbnRyaWVzLCBzaXplX3Qgc2l6ZSwgY29uc3QgSW1tdXRhYmxlQXJyYXlDYWxsYmFja3Mq
LCBBZG9wdFRhZyk7CisgICAgSW1tdXRhYmxlQXJyYXkoQVBJT2JqZWN0KiogZW50cmllcywgc2l6
ZV90IHNpemUsIEFkb3B0VGFnKTsKIAogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgeyBy
ZXR1cm4gVHlwZUFycmF5OyB9CiAKLSAgICB2b2lkKiogbV9lbnRyaWVzOworICAgIEFQSU9iamVj
dCoqIG1fZW50cmllczsKICAgICBzaXplX3QgbV9zaXplOwotICAgIEltbXV0YWJsZUFycmF5Q2Fs
bGJhY2tzIG1fY2FsbGJhY2tzOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBX
ZWJLaXQyL1NoYXJlZC9Db3JlSVBDU3VwcG9ydC9JbmplY3RlZEJ1bmRsZU1lc3NhZ2VLaW5kcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdDIvU2hhcmVkL0NvcmVJUENTdXBwb3J0L0luamVjdGVkQnVu
ZGxlTWVzc2FnZUtpbmRzLmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQyL1NoYXJlZC9Db3JlSVBD
U3VwcG9ydC9JbmplY3RlZEJ1bmRsZU1lc3NhZ2VLaW5kcy5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBJbmplY3RlZEJ1bmRsZU1lc3NhZ2VLaW5k
c19oCisjZGVmaW5lIEluamVjdGVkQnVuZGxlTWVzc2FnZUtpbmRzX2gKKworLy8gTWVzc2FnZXMg
c2VudCBmcm9tIFdlYktpdCB0byB0aGUgaW5qZWN0ZWQgYnVuZGxlLgorCisjaW5jbHVkZSAiTWVz
c2FnZUlELmgiCisKK25hbWVzcGFjZSBJbmplY3RlZEJ1bmRsZU1lc3NhZ2UgeworCitlbnVtIEtp
bmQgeworICAgIFBvc3RNZXNzYWdlCit9OworCit9CisKK25hbWVzcGFjZSBDb3JlSVBDIHsKKwor
dGVtcGxhdGU8PiBzdHJ1Y3QgTWVzc2FnZUtpbmRUcmFpdHM8SW5qZWN0ZWRCdW5kbGVNZXNzYWdl
OjpLaW5kPiB7CisgICAgc3RhdGljIGNvbnN0IE1lc3NhZ2VDbGFzcyBtZXNzYWdlQ2xhc3MgPSBN
ZXNzYWdlQ2xhc3NJbmplY3RlZEJ1bmRsZTsKK307CisKK30KKworI2VuZGlmIC8vIEluamVjdGVk
QnVuZGxlTWVzc2FnZUtpbmRzX2gKSW5kZXg6IFdlYktpdDIvU2hhcmVkL0NvcmVJUENTdXBwb3J0
L1dlYlByb2Nlc3NNZXNzYWdlS2luZHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9D
b3JlSVBDU3VwcG9ydC9XZWJQcm9jZXNzTWVzc2FnZUtpbmRzLmgJKHJldmlzaW9uIDY0Mzc2KQor
KysgV2ViS2l0Mi9TaGFyZWQvQ29yZUlQQ1N1cHBvcnQvV2ViUHJvY2Vzc01lc3NhZ2VLaW5kcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNyw3ICszNyw2IEBAIGVudW0gS2luZCB7CiAgICAgU2V0QXBw
bGljYXRpb25DYWNoZURpcmVjdG9yeSwKICAgICBTZXRTaG91bGRUcmFja1Zpc2l0ZWRMaW5rcywK
ICAgICBDcmVhdGUsCi0gICAgUG9zdE1lc3NhZ2UsCiAgICAgUmVnaXN0ZXJVUkxTY2hlbWVBc0Vt
cHR5RG9jdW1lbnQsCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIFNldHVwQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ1BvcnQKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkTGlzdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRMaXN0LmNw
cAkocmV2aXNpb24gNjQzNzYpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZExp
c3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjYsMzYgKzE2NiwyMCBAQCBCYWNrRm9yd2FyZExp
c3RJdGVtVmVjdG9yIFdlYkJhY2tGb3J3YXJkCiAgICAgcmV0dXJuIGxpc3Q7CiB9CiAKLS8vIElt
bXV0YWJsZUFycmF5OjpJbW11dGFibGVBcnJheUNhbGxiYWNrIFtmb3IgV2ViQmFja0ZvcndhcmRM
aXN0SXRlbV0gY2FsbGJhY2tzCi0KLXN0YXRpYyB2b2lkIHdlYkJhY2tGb3J3YXJkTGlzdEl0ZW1S
ZWYoY29uc3Qgdm9pZCogaXRlbSkKLXsKLSAgICBzdGF0aWNfY2FzdDxXZWJCYWNrRm9yd2FyZExp
c3RJdGVtKj4oY29uc3RfY2FzdDx2b2lkKj4oaXRlbSkpLT5yZWYoKTsKLX0KLQotc3RhdGljIHZv
aWQgd2ViQmFja0ZvcndhcmRMaXN0SXRlbURlcmVmKGNvbnN0IHZvaWQqIGl0ZW0pCi17Ci0gICAg
c3RhdGljX2Nhc3Q8V2ViQmFja0ZvcndhcmRMaXN0SXRlbSo+KGNvbnN0X2Nhc3Q8dm9pZCo+KGl0
ZW0pKS0+ZGVyZWYoKTsKLX0KLQogUGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4gV2ViQmFja0Zv
cndhcmRMaXN0OjpiYWNrTGlzdEFzSW1tdXRhYmxlQXJyYXlXaXRoTGltaXQodW5zaWduZWQgbGlt
aXQpCiB7CiAgICAgdW5zaWduZWQgc2l6ZSA9IHN0ZDo6bWluKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihiYWNrTGlzdENvdW50KCkpLCBsaW1pdCk7CiAgICAgaWYgKCFzaXplKQogICAgICAgICByZXR1
cm4gSW1tdXRhYmxlQXJyYXk6OmNyZWF0ZSgpOwogCi0gICAgdm9pZCoqIGFycmF5ID0gbmV3IHZv
aWQqW3NpemVdOworICAgIEFQSU9iamVjdCoqIGFycmF5ID0gbmV3IEFQSU9iamVjdCpbc2l6ZV07
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gc3RkOjptYXg8aW50PihtX2N1cnJlbnQgLSBsaW1pdCwg
MCksIGogPSAwOyBpIDwgbV9jdXJyZW50OyArK2ksICsraikgewotICAgICAgICBXZWJCYWNrRm9y
d2FyZExpc3RJdGVtKiBpdGVtID0gbV9lbnRyaWVzW2ldLmdldCgpOworICAgICAgICBBUElPYmpl
Y3QqIGl0ZW0gPSBtX2VudHJpZXNbaV0uZ2V0KCk7CiAgICAgICAgIGl0ZW0tPnJlZigpOwogICAg
ICAgICBhcnJheVtqXSA9IGl0ZW07CiAgICAgfQogCi0gICAgSW1tdXRhYmxlQXJyYXk6OkltbXV0
YWJsZUFycmF5Q2FsbGJhY2tzIGNhbGxiYWNrcyA9IHsKLSAgICAgICAgd2ViQmFja0ZvcndhcmRM
aXN0SXRlbVJlZiwKLSAgICAgICAgd2ViQmFja0ZvcndhcmRMaXN0SXRlbURlcmVmCi0gICAgfTsK
LSAgICByZXR1cm4gSW1tdXRhYmxlQXJyYXk6OmFkb3B0KGFycmF5LCBzaXplLCAmY2FsbGJhY2tz
KTsKKyAgICByZXR1cm4gSW1tdXRhYmxlQXJyYXk6OmFkb3B0KGFycmF5LCBzaXplKTsKIH0KIAog
UGFzc1JlZlB0cjxJbW11dGFibGVBcnJheT4gV2ViQmFja0ZvcndhcmRMaXN0Ojpmb3J3YXJkTGlz
dEFzSW1tdXRhYmxlQXJyYXlXaXRoTGltaXQodW5zaWduZWQgbGltaXQpCkBAIC0yMDQsMTkgKzE4
OCwxNSBAQCBQYXNzUmVmUHRyPEltbXV0YWJsZUFycmF5PiBXZWJCYWNrRm9yd2FyCiAgICAgaWYg
KCFzaXplKQogICAgICAgICByZXR1cm4gSW1tdXRhYmxlQXJyYXk6OmNyZWF0ZSgpOwogCi0gICAg
dm9pZCoqIGFycmF5ID0gbmV3IHZvaWQqW3NpemVdOworICAgIEFQSU9iamVjdCoqIGFycmF5ID0g
bmV3IEFQSU9iamVjdCpbc2l6ZV07CiAgICAgdW5zaWduZWQgbGFzdCA9IHN0ZDo6bWluKG1fY3Vy
cmVudCArIGxpbWl0LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obV9lbnRyaWVzLnNpemUoKSAtIDEp
KTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX2N1cnJlbnQgKyAxLCBqID0gMDsgaSA8PSBsYXN0
OyArK2ksICsraikgewotICAgICAgICBXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiBpdGVtID0gbV9l
bnRyaWVzW2ldLmdldCgpOworICAgICAgICBBUElPYmplY3QqIGl0ZW0gPSBtX2VudHJpZXNbaV0u
Z2V0KCk7CiAgICAgICAgIGl0ZW0tPnJlZigpOwogICAgICAgICBhcnJheVtqXSA9IGl0ZW07CiAg
ICAgfQogCi0gICAgSW1tdXRhYmxlQXJyYXk6OkltbXV0YWJsZUFycmF5Q2FsbGJhY2tzIGNhbGxi
YWNrcyA9IHsKLSAgICAgICAgd2ViQmFja0ZvcndhcmRMaXN0SXRlbVJlZiwKLSAgICAgICAgd2Vi
QmFja0ZvcndhcmRMaXN0SXRlbURlcmVmCi0gICAgfTsKLSAgICByZXR1cm4gSW1tdXRhYmxlQXJy
YXk6OmFkb3B0KGFycmF5LCBzaXplLCAmY2FsbGJhY2tzKTsKKyAgICByZXR1cm4gSW1tdXRhYmxl
QXJyYXk6OmFkb3B0KGFycmF5LCBzaXplKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Cklu
ZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAkocmV2aXNpb24gNjQzNzYpCisrKyBXZWJLaXQy
L1VJUHJvY2Vzcy9XZWJDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsOCBA
QAogCiAjaW5jbHVkZSAiV2ViQ29udGV4dC5oIgogCisjaW5jbHVkZSAiSW1tdXRhYmxlQXJyYXku
aCIKKyNpbmNsdWRlICJJbmplY3RlZEJ1bmRsZU1lc3NhZ2VLaW5kcy5oIgogI2luY2x1ZGUgIlJ1
bkxvb3AuaCIKICNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJX
ZWJQYWdlTmFtZXNwYWNlLmgiCkBAIC0xNjUsMTkgKzE2Nyw3MiBAQCB2b2lkIFdlYkNvbnRleHQ6
OnByZWZlcmVuY2VzRGlkQ2hhbmdlKCkKICAgICB9CiB9CiAKLS8vIEluamVjdGVkQnVuZGxlIGNs
aWVudAorbmFtZXNwYWNlIHsKKworLy8gRW5jb2RlcyBwb3N0TWVzc2FnZSBtZXNzYWdlcyBmcm9t
IHRoZSBVSVByb2Nlc3MgLT4gSW5qZWN0ZWRCdW5kbGUKKworLy8gICAtIEFycmF5IC0+IEFycmF5
CisvLyAgIC0gU3RyaW5nIC0+IFN0cmluZworLy8gICAtIFBhZ2UgLT4gQnVuZGxlUGFnZQorCitj
bGFzcyBQb3N0TWVzc2FnZUVuY29kZXIgeworcHVibGljOgorICAgIFBvc3RNZXNzYWdlRW5jb2Rl
cihBUElPYmplY3QqIHJvb3QpIAorICAgICAgICA6IG1fcm9vdChyb290KQorICAgIHsKKyAgICB9
CisKKyAgICB2b2lkIGVuY29kZShDb3JlSVBDOjpBcmd1bWVudEVuY29kZXImIGVuY29kZXIpIGNv
bnN0IAorICAgIHsKKyAgICAgICAgQVBJT2JqZWN0OjpUeXBlIHR5cGUgPSBtX3Jvb3QtPnR5cGUo
KTsKKyAgICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICAgICAgICBjYXNlIEFQSU9iamVjdDo6
VHlwZUFycmF5OiB7CisgICAgICAgICAgICAgICAgSW1tdXRhYmxlQXJyYXkqIGFycmF5ID0gc3Rh
dGljX2Nhc3Q8SW1tdXRhYmxlQXJyYXkqPihtX3Jvb3QpOworICAgICAgICAgICAgICAgIGVuY29k
ZXIuZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQzMl90Pih0eXBlKSk7ICAgICAgICAgICAgLy8gVHlw
ZQorICAgICAgICAgICAgICAgIGVuY29kZXIuZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQ2NF90Pihh
cnJheS0+c2l6ZSgpKSk7ICAgLy8gU2l6ZQorICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgYXJyYXktPnNpemUoKTsgKytpKQorICAgICAgICAgICAgICAgICAgICBlbmNvZGVy
LmVuY29kZShQb3N0TWVzc2FnZUVuY29kZXIoYXJyYXktPmF0KGkpKSk7ICAgLy8gLS0+IFJlY3Vy
c2UKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNh
c2UgQVBJT2JqZWN0OjpUeXBlU3RyaW5nOiB7CisgICAgICAgICAgICAgICAgV2ViU3RyaW5nKiBz
dHJpbmcgPSBzdGF0aWNfY2FzdDxXZWJTdHJpbmcqPihtX3Jvb3QpOworICAgICAgICAgICAgICAg
IGVuY29kZXIuZW5jb2RlKHN0YXRpY19jYXN0PHVpbnQzMl90Pih0eXBlKSk7CisgICAgICAgICAg
ICAgICAgZW5jb2Rlci5lbmNvZGUoc3RyaW5nLT5zdHJpbmcoKSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIEFQSU9iamVjdDo6VHlwZVBh
Z2U6IHsKKyAgICAgICAgICAgICAgICBXZWJQYWdlUHJveHkqIHBhZ2UgPSBzdGF0aWNfY2FzdDxX
ZWJQYWdlUHJveHkqPihtX3Jvb3QpOworICAgICAgICAgICAgICAgIGVuY29kZXIuZW5jb2RlKHN0
YXRpY19jYXN0PHVpbnQzMl90Pih0eXBlKSk7CisgICAgICAgICAgICAgICAgZW5jb2Rlci5lbmNv
ZGUocGFnZS0+cGFnZUlEKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworcHJpdmF0
ZToKKyAgICBBUElPYmplY3QqIG1fcm9vdDsKK307CiAKLXZvaWQgV2ViQ29udGV4dDo6ZGlkUmVj
ZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRCdW5kbGUoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQotewot
ICAgIG1faW5qZWN0ZWRCdW5kbGVDbGllbnQuZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tSW5qZWN0ZWRC
dW5kbGUodGhpcywgbWVzc2FnZSk7CiB9CiAKLXZvaWQgV2ViQ29udGV4dDo6cG9zdE1lc3NhZ2VU
b0luamVjdGVkQnVuZGxlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3ZvaWQgV2ViQ29udGV4dDo6
cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKGNvbnN0IFN0cmluZyYgbWVzc2FnZU5hbWUsIEFQ
SU9iamVjdCogbWVzc2FnZUJvZHkpCiB7CiAgICAgaWYgKCFtX3Byb2Nlc3MpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG1fcHJvY2Vzcy0+c2VuZChXZWJQcm9jZXNzTWVzc2FnZTo6UG9zdE1lc3Nh
Z2UsIDAsIENvcmVJUEM6OkluKG1lc3NhZ2UpKTsKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNv
bnNpZGVyIHJldHVybmluZyBmYWxzZSBmcm9tIHRoaXMgZnVuY3Rpb24gaWYgdGhlIG1lc3NhZ2VC
b2R5IGNhbm5vdAorICAgIC8vIGJlIGVuY29kZWQuCisgICAgbV9wcm9jZXNzLT5zZW5kKEluamVj
dGVkQnVuZGxlTWVzc2FnZTo6UG9zdE1lc3NhZ2UsIDAsIENvcmVJUEM6OkluKG1lc3NhZ2VOYW1l
LCBQb3N0TWVzc2FnZUVuY29kZXIobWVzc2FnZUJvZHkpKSk7Cit9CisKKy8vIEluamVjdGVkQnVu
ZGxlIGNsaWVudAorCit2b2lkIFdlYkNvbnRleHQ6OmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVj
dGVkQnVuZGxlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBtX2luamVjdGVkQnVuZGxl
Q2xpZW50LmRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKHRoaXMsIG1lc3NhZ2Up
OwogfQogCiAvLyBIaXN0b3J5Q2xpZW50CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb250
ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dC5oCShyZXZp
c2lvbiA2NDM3NikKKysrIFdlYktpdDIvVUlQcm9jZXNzL1dlYkNvbnRleHQuaAkod29ya2luZyBj
b3B5KQpAQCAtNzgsOSArNzgsMTAgQEAgcHVibGljOgogCiAgICAgY29uc3QgV2ViQ29yZTo6U3Ry
aW5nJiBpbmplY3RlZEJ1bmRsZVBhdGgoKSBjb25zdCB7IHJldHVybiBtX2luamVjdGVkQnVuZGxl
UGF0aDsgfQogCisgICAgdm9pZCBwb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUoY29uc3QgV2Vi
Q29yZTo6U3RyaW5nJiwgQVBJT2JqZWN0Kik7CisKICAgICAvLyBJbmplY3RlZEJ1bmRsZSBjbGll
bnQKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbUluamVjdGVkQnVuZGxlKGNvbnN0IFdl
YkNvcmU6OlN0cmluZyYpOwotICAgIHZvaWQgcG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKGNv
bnN0IFdlYkNvcmU6OlN0cmluZyYpOwogCiAgICAgLy8gSGlzdG9yeSBjbGllbnQKICAgICB2b2lk
IGRpZE5hdmlnYXRlV2l0aE5hdmlnYXRpb25EYXRhKFdlYkZyYW1lUHJveHkqLCBjb25zdCBXZWJO
YXZpZ2F0aW9uRGF0YVN0b3JlJik7IApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tC
YXNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tCYXNlLmgJKHJl
dmlzaW9uIDY0Mzc2KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tCYXNlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDggKzMzLDggQEAKICNlbmRpZgogCiB0eXBlZGVmIHVpbnQzMl90IFdL
VHlwZUlEOwordHlwZWRlZiB2b2lkKiBXS1R5cGVSZWY7CiAKLXR5cGVkZWYgc3RydWN0IE9wYXF1
ZVdLVHlwZVJlZiogV0tUeXBlUmVmOwogdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlV0tBcnJheVJlZiog
V0tBcnJheVJlZjsKIHR5cGVkZWYgc3RydWN0IE9wYXF1ZVdLQmFja0ZvcndhcmRMaXN0SXRlbVJl
ZiogV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmOwogdHlwZWRlZiBzdHJ1Y3QgT3BhcXVlV0tCYWNr
Rm9yd2FyZExpc3RSZWYqIFdLQmFja0ZvcndhcmRMaXN0UmVmOwpJbmRleDogV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS0NvbnRleHQuY3BwCShyZXZpc2lvbiA2NDM3NikKKysrIFdlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg0LDkgKzg0LDkgQEAg
dm9pZCBXS0NvbnRleHRTZXRIaXN0b3J5Q2xpZW50KFdLQ29udGV4dAogICAgICAgICB0b1dLKGNv
bnRleHRSZWYpLT5pbml0aWFsaXplSGlzdG9yeUNsaWVudCh3a0NsaWVudCk7CiB9CiAKLXZvaWQg
V0tDb250ZXh0UG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKFdLQ29udGV4dFJlZiBjb250ZXh0
UmVmLCBXS1N0cmluZ1JlZiBtZXNzYWdlUmVmKQordm9pZCBXS0NvbnRleHRQb3N0TWVzc2FnZVRv
SW5qZWN0ZWRCdW5kbGUoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLU3RyaW5nUmVmIG1lc3Nh
Z2VOYW1lUmVmLCBXS1R5cGVSZWYgbWVzc2FnZUJvZHlSZWYpCiB7Ci0gICAgdG9XSyhjb250ZXh0
UmVmKS0+cG9zdE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKHRvV0sobWVzc2FnZVJlZiktPnN0cmlu
ZygpKTsKKyAgICB0b1dLKGNvbnRleHRSZWYpLT5wb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUo
dG9XSyhtZXNzYWdlTmFtZVJlZiktPnN0cmluZygpLCB0b1dLKG1lc3NhZ2VCb2R5UmVmKSk7CiB9
CiAKIHZvaWQgV0tDb250ZXh0R2V0U3RhdGlzdGljcyhXS0NvbnRleHRSZWYgY29udGV4dFJlZiwg
V0tDb250ZXh0U3RhdGlzdGljcyogc3RhdGlzdGljcykKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLQ29udGV4dC5oCShyZXZpc2lvbiA2NDM3NikKKysrIFdlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLQ29udGV4dC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw3ICs3Miw3IEBAIFdLX0VYUE9SVCBX
S1ByZWZlcmVuY2VzUmVmIFdLQ29udGV4dEdldFAKIFdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFNl
dEhpc3RvcnlDbGllbnQoV0tDb250ZXh0UmVmIGNvbnRleHQsIGNvbnN0IFdLQ29udGV4dEhpc3Rv
cnlDbGllbnQqIGNsaWVudCk7CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRTZXRJbmplY3RlZEJ1
bmRsZUNsaWVudChXS0NvbnRleHRSZWYgY29udGV4dCwgY29uc3QgV0tDb250ZXh0SW5qZWN0ZWRC
dW5kbGVDbGllbnQqIGNsaWVudCk7CiAKLVdLX0VYUE9SVCB2b2lkIFdLQ29udGV4dFBvc3RNZXNz
YWdlVG9JbmplY3RlZEJ1bmRsZShXS0NvbnRleHRSZWYgY29udGV4dCwgV0tTdHJpbmdSZWYgbWVz
c2FnZSk7CitXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRQb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5k
bGUoV0tDb250ZXh0UmVmIGNvbnRleHQsIFdLU3RyaW5nUmVmIG1lc3NhZ2VOYW1lLCBXS1R5cGVS
ZWYgbWVzc2FnZUJvZHkpOwogCiBXS19FWFBPUlQgV0tDb250ZXh0UmVmIFdLQ29udGV4dFJldGFp
bihXS0NvbnRleHRSZWYgY29udGV4dCk7CiBXS19FWFBPUlQgdm9pZCBXS0NvbnRleHRSZWxlYXNl
KFdLQ29udGV4dFJlZiBjb250ZXh0KTsKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dL
VHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tUeXBlLmNw
cAkocmV2aXNpb24gNjQzNzYpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1R5cGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw1ICszMiw1IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7
CiAKIFdLVHlwZUlEIFdLR2V0VHlwZUlEKFdLVHlwZVJlZiB0eXBlUmVmKQogewotICAgIHJldHVy
biB0b1JlZih0b1dLKHR5cGVSZWYpLT50eXBlKCkpOworICAgIHJldHVybiB0b1JlZihzdGF0aWNf
Y2FzdDxBUElPYmplY3QqPih0eXBlUmVmKS0+dHlwZSgpKTsKIH0KSW5kZXg6IFdlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dlYktpdDIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XZWJLaXQyLmgJKHJldmlzaW9uIDY0Mzc2KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0MvV2ViS2l0Mi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIFdl
YktpdDJfaAogCiAjaW5jbHVkZSA8V2ViS2l0Mi9XS0Jhc2UuaD4KKyNpbmNsdWRlIDxXZWJLaXQy
L1dLVHlwZS5oPgogI2luY2x1ZGUgPFdlYktpdDIvV0tCYWNrRm9yd2FyZExpc3QuaD4KICNpbmNs
dWRlIDxXZWJLaXQyL1dLQmFja0ZvcndhcmRMaXN0SXRlbS5oPgogI2luY2x1ZGUgPFdlYktpdDIv
V0tDb250ZXh0Lmg+CkluZGV4OiBXZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gNjQzNzYpCisrKyBXZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMjEzLDYgKzIxMyw3IEBACiAJCUJDQThDNkIw
MTFFM0MwODcwMDgxMkZCNyAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNBOEM2QUUxMUUzQzA4NzAw
ODEyRkI3IC8qIEluamVjdGVkQnVuZGxlUGFnZVVJQ2xpZW50LmggKi87IH07CiAJCUJDQThDOURD
MTFFNDA4NjUwMDgxMkZCNyAvKiBXZWJCYWNrRm9yd2FyZENvbnRyb2xsZXJDbGllbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQThDOURBMTFFNDA4
NjUwMDgxMkZCNyAvKiBXZWJCYWNrRm9yd2FyZENvbnRyb2xsZXJDbGllbnQuaCAqLzsgfTsKIAkJ
QkNBOEM5REQxMUU0MDg2NTAwODEyRkI3IC8qIFdlYkJhY2tGb3J3YXJkQ29udHJvbGxlckNsaWVu
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0E4
QzlEQjExRTQwODY1MDA4MTJGQjcgLyogV2ViQmFja0ZvcndhcmRDb250cm9sbGVyQ2xpZW50LmNw
cCAqLzsgfTsKKwkJQkNCMjhDQzAxMjAyMzNEOTAwN0Q5OUJDIC8qIEluamVjdGVkQnVuZGxlTWVz
c2FnZUtpbmRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQ0IyOENCRjEyMDIzM0Q5MDA3RDk5QkMgLyogSW5qZWN0ZWRCdW5kbGVNZXNzYWdlS2luZHMu
aCAqLzsgfTsKIAkJQkNCNjM0NzgxMTZCRjEwNjAwNjAzMjE1IC8qIFdlYktpdDIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDQjYzNDc3MTE2QkYxMDYw
MDYwMzIxNSAvKiBXZWJLaXQyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGlj
LCApOyB9OyB9OwogCQlCQ0I3MzQ2RTExQ0VFM0ZGMDBFQzUwMDIgLyogV2ViUHJvY2Vzc1Byb3h5
TWVzc2FnZUtpbmRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQ0I3MzQ2RDExQ0VFM0ZGMDBFQzUwMDIgLyogV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZUtp
bmRzLmggKi87IH07CiAJCUJDQjlFMjQzMTEyMERBQ0EwMEExMzdFMCAvKiBXZWJDb250ZXh0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0I5RTI0MTEx
MjBEQUNBMDBBMTM3RTAgLyogV2ViQ29udGV4dC5oICovOyB9OwpAQCAtMjQ0LDcgKzI0NSw3IEBA
CiAJCUJDRDU5ODAwMTEyQjU3QkUwMEVDOEMyMyAvKiBXZWJQcmVmZXJlbmNlcy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Q1OTdGRTExMkI1N0JF
MDBFQzhDMjMgLyogV2ViUHJlZmVyZW5jZXMuY3BwICovOyB9OwogCQlCQ0Q1OThBQzExMkI3RkRG
MDBFQzhDMjMgLyogV2ViUHJlZmVyZW5jZXNTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNENTk4QUExMTJCN0ZERjAwRUM4QzIzIC8qIFdlYlBy
ZWZlcmVuY2VzU3RvcmUuaCAqLzsgfTsKIAkJQkNENTk4QUQxMTJCN0ZERjAwRUM4QzIzIC8qIFdl
YlByZWZlcmVuY2VzU3RvcmUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkNENTk4QUIxMTJCN0ZERjAwRUM4QzIzIC8qIFdlYlByZWZlcmVuY2VzU3Rv
cmUuY3BwICovOyB9OwotCQlCQ0RCODU4MjEyMDBFQzU3MDA3MjU0QkUgLyogV0tUeXBlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0RCODU4MDEyMDBF
QzU3MDA3MjU0QkUgLyogV0tUeXBlLmggKi87IH07CisJCUJDREI4NTgyMTIwMEVDNTcwMDcyNTRC
RSAvKiBXS1R5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDREI4NTgwMTIwMEVDNTcwMDcyNTRCRSAvKiBXS1R5cGUuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CiAJCUJDREI4NTgzMTIwMEVDNTcwMDcyNTRC
RSAvKiBXS1R5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkNEQjg1ODExMjAwRUM1NzAwNzI1NEJFIC8qIFdLVHlwZS5jcHAgKi87IH07CiAJCUJD
REI4NkMxMTIwMEZCOTcwMDcyNTRCRSAvKiBXZWJVUkwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDREI4NkMwMTIwMEZCOTcwMDcyNTRCRSAvKiBXZWJV
UkwuaCAqLzsgfTsKIAkJQkNERTA1OUIxMUNEQThBRTAwRTQxQUYxIC8qIFdlYkNvbnRleHRJbmpl
Y3RlZEJ1bmRsZUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkNERTA1OTkxMUNEQThBRTAwRTQxQUYxIC8qIFdlYkNvbnRleHRJbmplY3RlZEJ1
bmRsZUNsaWVudC5oICovOyB9OwpAQCAtNTA4LDYgKzUwOSw3IEBACiAJCUJDQThDNkFFMTFFM0Mw
ODcwMDgxMkZCNyAvKiBJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBJbmplY3RlZEJ1bmRsZVBhZ2VVSUNsaWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0E4QzlEQTExRTQwODY1MDA4MTJGQjcgLyogV2ViQmFj
a0ZvcndhcmRDb250cm9sbGVyQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFdlYkJhY2tGb3J3YXJkQ29udHJvbGxlckNsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCQ0E4QzlEQjExRTQwODY1MDA4MTJGQjcgLyogV2ViQmFja0ZvcndhcmRDb250
cm9sbGVyQ2xpZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdl
YkJhY2tGb3J3YXJkQ29udHJvbGxlckNsaWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUJDQjI4Q0JGMTIwMjMzRDkwMDdEOTlCQyAvKiBJbmplY3RlZEJ1bmRsZU1lc3NhZ2VL
aW5kcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbmplY3RlZEJ1bmRsZU1l
c3NhZ2VLaW5kcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0I2MzQ3NzExNkJG
MTA2MDA2MDMyMTUgLyogV2ViS2l0Mi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWJLaXQyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQjczNDZEMTFDRUUz
RkYwMEVDNTAwMiAvKiBXZWJQcm9jZXNzUHJveHlNZXNzYWdlS2luZHMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZUtpbmRzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDQjg2RjRCMTE2QUFBQ0QwMENFMjBCNyAvKiBXZWJL
aXQyLnhjY29uZmlnICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC54Y2NvbmZpZzsgcGF0aCA9IFdlYktpdDIueGNj
b25maWc7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDQwLDYgKzEwNDIsNyBAQAog
CQkJY2hpbGRyZW4gPSAoCiAJCQkJQkM5RTk2OUIxMTQ1N0YzRjAwODcwRTcxIC8qIERyYXdpbmdB
cmVhTWVzc2FnZUtpbmRzLmggKi8sCiAJCQkJQkM5RTk2OTkxMTQ1N0VERTAwODcwRTcxIC8qIERy
YXdpbmdBcmVhUHJveHlNZXNzYWdlS2luZHMuaCAqLywKKwkJCQlCQ0IyOENCRjEyMDIzM0Q5MDA3
RDk5QkMgLyogSW5qZWN0ZWRCdW5kbGVNZXNzYWdlS2luZHMuaCAqLywKIAkJCQlCQzExMUI2MDEx
MkY2MzgzMDAzMzdCQUIgLyogV2ViUGFnZU1lc3NhZ2VLaW5kcy5oICovLAogCQkJCUJDMTExQjYx
MTEyRjYzODMwMDMzN0JBQiAvKiBXZWJQYWdlUHJveHlNZXNzYWdlS2luZHMuaCAqLywKIAkJCQlC
QzExMUI2MjExMkY2MzgzMDAzMzdCQUIgLyogV2ViUHJvY2Vzc01lc3NhZ2VLaW5kcy5oICovLApA
QCAtMTMxNyw2ICsxMzIwLDcgQEAKIAkJCQkxQUU0OUE0OTExRkZBOENFMDA0OEI0NjQgLyogSlNO
UE1ldGhvZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNEQjg1ODIxMjAwRUM1NzAwNzI1NEJFIC8q
IFdLVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNEQjg2QzExMjAwRkI5NzAwNzI1NEJFIC8q
IFdlYlVSTC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkNCMjhDQzAxMjAyMzNEOTAwN0Q5OUJDIC8q
IEluamVjdGVkQnVuZGxlTWVzc2FnZUtpbmRzLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDY0Mzc2KQorKysgV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw5ICsyNiw3IEBACiAjaW5j
bHVkZSAiV2ViUHJvY2Vzcy5oIgogCiAjaW5jbHVkZSAiSW5qZWN0ZWRCdW5kbGUuaCIKLSNpZiBQ
TEFURk9STShNQUMpCi0jaW5jbHVkZSAiTWFjaFBvcnQuaCIKLSNlbmRpZgorI2luY2x1ZGUgIklu
amVjdGVkQnVuZGxlTWVzc2FnZUtpbmRzLmgiCiAjaW5jbHVkZSAiUnVuTG9vcC5oIgogI2luY2x1
ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCkBAIC00
MSw2ICszOSwxMCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvU2NoZW1lUmVnaXN0cnkuaD4KICNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogCisjaWYgUExBVEZPUk0oTUFDKQorI2luY2x1ZGUgIk1h
Y2hQb3J0LmgiCisjZW5kaWYKKwogI2lmbmRlZiBOREVCVUcKICNpbmNsdWRlIDxXZWJDb3JlL0Nh
Y2hlLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9HQ0NvbnRyb2xsZXIuaD4KQEAgLTEwMywxNCArMTA1
LDYgQEAgdm9pZCBXZWJQcm9jZXNzOjpzZXRBcHBsaWNhdGlvbkNhY2hlRGlyZQogICAgIGNhY2hl
U3RvcmFnZSgpLnNldENhY2hlRGlyZWN0b3J5KGRpcmVjdG9yeSk7CiB9CiAKLXZvaWQgV2ViUHJv
Y2Vzczo6Zm9yd2FyZE1lc3NhZ2VUb0luamVjdGVkQnVuZGxlKGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkKLXsKLSAgICBpZiAoIW1faW5qZWN0ZWRCdW5kbGUpCi0gICAgICAgIHJldHVybjsKLQotICAg
IG1faW5qZWN0ZWRCdW5kbGUtPmRpZFJlY2VpdmVNZXNzYWdlKG1lc3NhZ2UpOwotfQotCiB2b2lk
IFdlYlByb2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lQXNFbXB0eURvY3VtZW50KGNvbnN0IFdlYkNv
cmU6OlN0cmluZyYgdXJsU2NoZW1lKQogewogICAgIFNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVS
TFNjaGVtZUFzRW1wdHlEb2N1bWVudCh1cmxTY2hlbWUpOwpAQCAtMjE4LDE0ICsyMTIsNiBAQCB2
b2lkIFdlYlByb2Nlc3M6OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJCiAgICAgICAgICAgICAgICAg
Y3JlYXRlV2ViUGFnZShwYWdlSUQsIHZpZXdTaXplLCBzdG9yZSwgc3RhdGljX2Nhc3Q8RHJhd2lu
Z0FyZWE6OlR5cGU+KGRyYXdpbmdBcmVhVHlwZSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgV2ViUHJvY2Vzc01lc3NhZ2U6OlBvc3RN
ZXNzYWdlOiB7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2U7Ci0gICAgICAgICAgICAg
ICAgaWYgKCFhcmd1bWVudHMtPmRlY29kZShDb3JlSVBDOjpPdXQobWVzc2FnZSkpKQotICAgICAg
ICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICBmb3J3YXJkTWVzc2FnZVRv
SW5qZWN0ZWRCdW5kbGUobWVzc2FnZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICAgICAgfQogICAgICAgICAgICAgY2FzZSBXZWJQcm9jZXNzTWVzc2FnZTo6UmVnaXN0ZXJVUkxT
Y2hlbWVBc0VtcHR5RG9jdW1lbnQ6IHsKICAgICAgICAgICAgICAgICBTdHJpbmcgbWVzc2FnZTsK
ICAgICAgICAgICAgICAgICBpZiAoIWFyZ3VtZW50cy0+ZGVjb2RlKENvcmVJUEM6Ok91dChtZXNz
YWdlKSkpCkBAIC0yNDcsNiArMjMzLDEzIEBAIHZvaWQgV2ViUHJvY2Vzczo6ZGlkUmVjZWl2ZU1l
c3NhZ2UoQ29yZUkKICAgICAgICAgfQogICAgIH0KIAorICAgIGlmIChtZXNzYWdlSUQuaXM8Q29y
ZUlQQzo6TWVzc2FnZUNsYXNzSW5qZWN0ZWRCdW5kbGU+KCkpIHsKKyAgICAgICAgaWYgKCFtX2lu
amVjdGVkQnVuZGxlKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX2luamVjdGVkQnVu
ZGxlLT5kaWRSZWNlaXZlTWVzc2FnZShjb25uZWN0aW9uLCBtZXNzYWdlSUQsICphcmd1bWVudHMp
OyAgICAKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIHVpbnQ2NF90IHBhZ2VJRCA9IGFy
Z3VtZW50cy0+ZGVzdGluYXRpb25JRCgpOwogICAgIGlmICghcGFnZUlEKQogICAgICAgICByZXR1
cm47CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgJKHJldmlzaW9uIDY0Mzc2KQorKysgV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIs
NiBAQCBwcml2YXRlOgogICAgIHZvaWQgbG9hZEluamVjdGVkQnVuZGxlKGNvbnN0IFdlYkNvcmU6
OlN0cmluZyYpOwogI2VuZGlmCiAgICAgdm9pZCBzZXRBcHBsaWNhdGlvbkNhY2hlRGlyZWN0b3J5
KGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpOwotICAgIHZvaWQgZm9yd2FyZE1lc3NhZ2VUb0luamVj
dGVkQnVuZGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpOwogICAgIHZvaWQgcmVnaXN0ZXJVUkxT
Y2hlbWVBc0VtcHR5RG9jdW1lbnQoY29uc3QgV2ViQ29yZTo6U3RyaW5nJik7CiAKICAgICAvLyBD
b3JlSVBDOjpDb25uZWN0aW9uOjpDbGllbnQKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAkocmV2aXNpb24gNjQzNzYp
CisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNSwxMiArMjUsMTcgQEAKIAogI2luY2x1ZGUgIkluamVjdGVk
QnVuZGxlLmgiCiAKKyNpbmNsdWRlICJBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJJbW11dGFibGVB
cnJheS5oIgorI2luY2x1ZGUgIkluamVjdGVkQnVuZGxlTWVzc2FnZUtpbmRzLmgiCiAjaW5jbHVk
ZSAiV0tBUElDYXN0LmgiCiAjaW5jbHVkZSAiV0tCdW5kbGVBUElDYXN0LmgiCiAjaW5jbHVkZSAi
V2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2luY2x1ZGUg
IldlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdlS2luZHMuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL1BhZ2VHcm91cC5oPgorI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0
ci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtODIsMTAgKzg3LDEwMCBAQCB2
b2lkIEluamVjdGVkQnVuZGxlOjp3aWxsRGVzdHJveVBhZ2UoV2ViCiAgICAgICAgIG1fY2xpZW50
LndpbGxEZXN0cm95UGFnZSh0b1JlZih0aGlzKSwgdG9SZWYocGFnZSksIG1fY2xpZW50LmNsaWVu
dEluZm8pOwogfQogCi12b2lkIEluamVjdGVkQnVuZGxlOjpkaWRSZWNlaXZlTWVzc2FnZShjb25z
dCBXZWJDb3JlOjpTdHJpbmcmIG1lc3NhZ2UpCit2b2lkIEluamVjdGVkQnVuZGxlOjpkaWRSZWNl
aXZlTWVzc2FnZShjb25zdCBXZWJDb3JlOjpTdHJpbmcmIG1lc3NhZ2VOYW1lLCBBUElPYmplY3Qq
IG1lc3NhZ2VCb2R5KQogewogICAgIGlmIChtX2NsaWVudC5kaWRSZWNlaXZlTWVzc2FnZSkKLSAg
ICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZU1lc3NhZ2UodG9SZWYodGhpcyksIHRvUmVmKG1lc3Nh
Z2UuaW1wbCgpKSwgbV9jbGllbnQuY2xpZW50SW5mbyk7CisgICAgICAgIG1fY2xpZW50LmRpZFJl
Y2VpdmVNZXNzYWdlKHRvUmVmKHRoaXMpLCB0b1JlZihtZXNzYWdlTmFtZS5pbXBsKCkpLCB0b1Jl
ZihtZXNzYWdlQm9keSksIG1fY2xpZW50LmNsaWVudEluZm8pOworfQorCituYW1lc3BhY2Ugewor
CisvLyBEZWNvZGVzIHBvc3RNZXNzYWdlIG1lc3NhZ2VzIGdvaW5nIGZyb20gdGhlIFVJUHJvY2Vz
cyAtPiBJbmplY3RlZEJ1bmRsZQorCisvLyAgIC0gQXJyYXkgLT4gQXJyYXkKKy8vICAgLSBTdHJp
bmcgLT4gU3RyaW5nCisvLyAgIC0gUGFnZSAtPiBCdW5kbGVQYWdlCisKK2NsYXNzIFBvc3RNZXNz
YWdlRGVjb2RlciB7CitwdWJsaWM6CisgICAgUG9zdE1lc3NhZ2VEZWNvZGVyKEFQSU9iamVjdCoq
IHJvb3QpCisgICAgICAgIDogbV9yb290KHJvb3QpCisgICAgeworICAgIH0KKworICAgIHN0YXRp
YyBib29sIGRlY29kZShDb3JlSVBDOjpBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFBvc3RNZXNz
YWdlRGVjb2RlciYgY29kZXIpCisgICAgeworICAgICAgICB1aW50MzJfdCB0eXBlOworICAgICAg
ICBpZiAoIWRlY29kZXIuZGVjb2RlKHR5cGUpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICAgICAgY2FzZSBBUElPYmplY3Q6OlR5
cGVBcnJheTogeworICAgICAgICAgICAgICAgIHVpbnQ2NF90IHNpemU7CisgICAgICAgICAgICAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShzaXplKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIE93bkFycmF5UHRyPEFQ
SU9iamVjdCo+IGFycmF5OworICAgICAgICAgICAgICAgIGFycmF5LnNldChuZXcgQVBJT2JqZWN0
KltzaXplXSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgQVBJT2JqZWN0KiBl
bGVtZW50OworICAgICAgICAgICAgICAgICAgICBQb3N0TWVzc2FnZURlY29kZXIgbWVzc2FnZUNv
ZGVyKCZlbGVtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZSht
ZXNzYWdlQ29kZXIpKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgICAgICAgICBhcnJheVtpXSA9IGVsZW1lbnQ7CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgKihjb2Rlci5tX3Jvb3QpID0gSW1tdXRhYmxlQXJyYXk6OmNyZWF0
ZShhcnJheS5yZWxlYXNlKCksIHNpemUpLmxlYWtSZWYoKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgQVBJT2JqZWN0OjpUeXBlU3RyaW5n
OiB7CisgICAgICAgICAgICAgICAgU3RyaW5nIHN0cmluZzsKKyAgICAgICAgICAgICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHN0cmluZykpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgICAgICAqKGNvZGVyLm1fcm9vdCkgPSBXZWJTdHJpbmc6OmNyZWF0ZShz
dHJpbmcpLmxlYWtSZWYoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGNhc2UgQVBJT2JqZWN0OjpUeXBlUGFnZTogeworICAgICAgICAgICAgICAg
IHVpbnQ2NF90IHBhZ2VJRDsKKyAgICAgICAgICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHBh
Z2VJRCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAg
ICAqKGNvZGVyLm1fcm9vdCkgPSBXZWJQcm9jZXNzOjpzaGFyZWQoKS53ZWJQYWdlKHBhZ2VJRCk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBUElPYmplY3QqKiBtX3Jvb3Q7
Cit9OworCit9CisKK3ZvaWQgSW5qZWN0ZWRCdW5kbGU6OmRpZFJlY2VpdmVNZXNzYWdlKENvcmVJ
UEM6OkNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIENvcmVJUEM6Ok1lc3NhZ2VJRCBtZXNzYWdlSUQs
IENvcmVJUEM6OkFyZ3VtZW50RGVjb2RlciYgYXJndW1lbnRzKQoreworICAgIHN3aXRjaCAobWVz
c2FnZUlELmdldDxJbmplY3RlZEJ1bmRsZU1lc3NhZ2U6OktpbmQ+KCkpIHsKKyAgICAgICAgY2Fz
ZSBJbmplY3RlZEJ1bmRsZU1lc3NhZ2U6OlBvc3RNZXNzYWdlOiB7CisgICAgICAgICAgICBTdHJp
bmcgbWVzc2FnZU5hbWU7CisgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgYSBS
ZWZQdHI8QVBJT2JqZWN0PgorICAgICAgICAgICAgQVBJT2JqZWN0KiBtZXNzYWdlQm9keSA9IDA7
CisgICAgICAgICAgICBQb3N0TWVzc2FnZURlY29kZXIgbWVzc2FnZUNvZGVyKCZtZXNzYWdlQm9k
eSk7CisgICAgICAgICAgICBpZiAoIWFyZ3VtZW50cy5kZWNvZGUoQ29yZUlQQzo6T3V0KG1lc3Nh
Z2VOYW1lLCBtZXNzYWdlQ29kZXIpKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgICAgIGRpZFJlY2VpdmVNZXNzYWdlKG1lc3NhZ2VOYW1lLCBtZXNzYWdlQm9keSk7CisKKyAg
ICAgICAgICAgIG1lc3NhZ2VCb2R5LT5kZXJlZigpOworCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CkluZGV4OiBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
SW5qZWN0ZWRCdW5kbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAkocmV2aXNpb24gNjQzNzYpCisrKyBXZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMzEsNiArMzEsMTIgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1BsYXRmb3JtU3RyaW5nLmg+CiAj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KIAorbmFtZXNwYWNlIENvcmVJUEMgeworICAgIGNs
YXNzIEFyZ3VtZW50RGVjb2RlcjsKKyAgICBjbGFzcyBDb25uZWN0aW9uOworICAgIGNsYXNzIE1l
c3NhZ2VJRDsKK30KKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKICNpZiBQTEFURk9STShNQUMpCkBA
IC02Niw3ICs3Miw5IEBAIHB1YmxpYzoKICAgICAvLyBDYWxsYmFjayBob29rcwogICAgIHZvaWQg
ZGlkQ3JlYXRlUGFnZShXZWJQYWdlKik7CiAgICAgdm9pZCB3aWxsRGVzdHJveVBhZ2UoV2ViUGFn
ZSopOwotICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoY29uc3QgV2ViQ29yZTo6U3RyaW5nJik7
CisgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZShjb25zdCBXZWJDb3JlOjpTdHJpbmcmLCBBUElP
YmplY3QqKTsKKworICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoQ29yZUlQQzo6Q29ubmVjdGlv
biosIENvcmVJUEM6Ok1lc3NhZ2VJRCwgQ29yZUlQQzo6QXJndW1lbnREZWNvZGVyJik7CiAKIHBy
aXZhdGU6CiAgICAgSW5qZWN0ZWRCdW5kbGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nJik7CkluZGV4
OiBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5k
bGUuaAkocmV2aXNpb24gNjQzNzYpCisrKyBXZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBleHRl
cm4gIkMiIHsKIC8vIENsaWVudAogdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVEaWRDcmVhdGVQYWdl
Q2FsbGJhY2spKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tCdW5kbGVQYWdlUmVmIHBhZ2UsIGNvbnN0
IHZvaWQgKmNsaWVudEluZm8pOwogdHlwZWRlZiB2b2lkICgqV0tCdW5kbGVXaWxsRGVzdHJveVBh
Z2VDYWxsYmFjaykoV0tCdW5kbGVSZWYgYnVuZGxlLCBXS0J1bmRsZVBhZ2VSZWYgcGFnZSwgY29u
c3Qgdm9pZCAqY2xpZW50SW5mbyk7Ci10eXBlZGVmIHZvaWQgKCpXS0J1bmRsZURpZFJlY2VpdmVN
ZXNzYWdlQ2FsbGJhY2spKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tTdHJpbmdSZWYgbWVzc2FnZSwg
Y29uc3Qgdm9pZCAqY2xpZW50SW5mbyk7Cit0eXBlZGVmIHZvaWQgKCpXS0J1bmRsZURpZFJlY2Vp
dmVNZXNzYWdlQ2FsbGJhY2spKFdLQnVuZGxlUmVmIGJ1bmRsZSwgV0tTdHJpbmdSZWYgbmFtZSwg
V0tUeXBlUmVmIG1lc3NhZ2VCb2R5LCBjb25zdCB2b2lkICpjbGllbnRJbmZvKTsKIAogc3RydWN0
IFdLQnVuZGxlQ2xpZW50IHsKICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb247CkluZGV4OiBXZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCShyZXZpc2lvbiA2NDM3NikKKysrIFdlYktp
dDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg1
LDE2ICsxODUsNiBAQCBTdHJpbmcgV2ViRnJhbWU6OnVybCgpIGNvbnN0CiAgICAgcmV0dXJuIG1f
Y29yZUZyYW1lLT5sb2FkZXIoKS0+dXJsKCkuc3RyaW5nKCk7CiB9CiAKLXN0YXRpYyB2b2lkIGNo
aWxkRnJhbWVSZWYoY29uc3Qgdm9pZCogZnJhbWUpCi17Ci0gICAgc3RhdGljX2Nhc3Q8V2ViRnJh
bWUqPihjb25zdF9jYXN0PHZvaWQqPihmcmFtZSkpLT5yZWYoKTsKLX0KLQotc3RhdGljIHZvaWQg
Y2hpbGRGcmFtZURlcmVmKGNvbnN0IHZvaWQqIGZyYW1lKQotewotICAgIHN0YXRpY19jYXN0PFdl
YkZyYW1lKj4oY29uc3RfY2FzdDx2b2lkKj4oZnJhbWUpKS0+ZGVyZWYoKTsKLX0KLQogUGFzc1Jl
ZlB0cjxJbW11dGFibGVBcnJheT4gV2ViRnJhbWU6OmNoaWxkRnJhbWVzKCkKIHsKICAgICBpZiAo
IW1fY29yZUZyYW1lKQpAQCAtMjA0LDcgKzE5NCw3IEBAIFBhc3NSZWZQdHI8SW1tdXRhYmxlQXJy
YXk+IFdlYkZyYW1lOjpjaGkKICAgICBpZiAoIXNpemUpCiAgICAgICAgIHJldHVybiBJbW11dGFi
bGVBcnJheTo6Y3JlYXRlKCk7CiAKLSAgICB2b2lkKiogYXJyYXkgPSBuZXcgdm9pZCpbc2l6ZV07
CisgICAgQVBJT2JqZWN0KiogYXJyYXkgPSBuZXcgQVBJT2JqZWN0KltzaXplXTsKICAgICB1bnNp
Z25lZCBpID0gMDsKICAgICBmb3IgKEZyYW1lKiBjaGlsZCA9IG1fY29yZUZyYW1lLT50cmVlKCkt
PmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRyZWUoKS0+bmV4dFNpYmxpbmco
KSwgKytpKSB7CiAgICAgICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IHN0YXRpY19jYXN0PFdlYkZy
YW1lTG9hZGVyQ2xpZW50Kj4oY2hpbGQtPmxvYWRlcigpLT5jbGllbnQoKSktPndlYkZyYW1lKCk7
CkBAIC0yMTIsMTEgKzIwMiw3IEBAIFBhc3NSZWZQdHI8SW1tdXRhYmxlQXJyYXk+IFdlYkZyYW1l
OjpjaGkKICAgICAgICAgYXJyYXlbaV0gPSB3ZWJGcmFtZTsKICAgICB9CiAKLSAgICBJbW11dGFi
bGVBcnJheTo6SW1tdXRhYmxlQXJyYXlDYWxsYmFja3MgY2FsbGJhY2tzID0gewotICAgICAgICBj
aGlsZEZyYW1lUmVmLAotICAgICAgICBjaGlsZEZyYW1lRGVyZWYKLSAgICB9OwotICAgIHJldHVy
biBJbW11dGFibGVBcnJheTo6YWRvcHQoYXJyYXksIHNpemUsICZjYWxsYmFja3MpOworICAgIHJl
dHVybiBJbW11dGFibGVBcnJheTo6YWRvcHQoYXJyYXksIHNpemUpOwogfQogCiB1bnNpZ25lZCBX
ZWJGcmFtZTo6bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCkKSW5kZXg6IFdlYktpdDIvd2luL1dl
YktpdDIudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCShy
ZXZpc2lvbiA2NDM3NikKKysrIFdlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC00NDgsNiArNDQ4LDE4IEBACiAJCQkJTmFtZT0iQ29yZUlQQ1N1cHBvcnQiDQogCQkJ
CT4NCiAJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXENvcmVJUENTdXBw
b3J0XERyYXdpbmdBcmVhTWVzc2FnZUtpbmRzLmgiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJ
CQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cU2hhcmVkXENvcmVJUENTdXBwb3J0XERy
YXdpbmdBcmVhUHJveHlNZXNzYWdlS2luZHMuaCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJ
CQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxTaGFyZWRcQ29yZUlQQ1N1cHBvcnRcSW5q
ZWN0ZWRCdW5kbGVNZXNzYWdlS2luZHMuaCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8
RmlsZQ0KIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxTaGFyZWRcQ29yZUlQQ1N1cHBvcnRcV2ViUGFn
ZU1lc3NhZ2VLaW5kcy5oIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQo=
</data>
<flag name="review"
          id="51413"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>