<?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>83307</bug_id>
          
          <creation_ts>2012-04-05 13:03:50 -0700</creation_ts>
          <short_desc>Replace static_cast with jsCast when casting JSCell subclasses in JSC</short_desc>
          <delta_ts>2012-04-05 13:11:00 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Oliver Hunt">oliver</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>596830</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-04-05 13:03:50 -0700</bug_when>
    <thetext>Replace static_cast with jsCast when casting JSCell subclasses in JSC</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596833</commentid>
    <comment_count>1</comment_count>
      <attachid>135885</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-04-05 13:06:13 -0700</bug_when>
    <thetext>Created attachment 135885
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596834</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-05 13:09:22 -0700</bug_when>
    <thetext>Attachment 135885 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/API/APICast.h&apos;, u&apos;So...&quot; exit_code: 1
Source/JavaScriptCore/jit/JITStubs.cpp:2961:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 1 in 28 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>596835</commentid>
    <comment_count>3</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-04-05 13:11:00 -0700</bug_when>
    <thetext>Committed r113363: &lt;http://trac.webkit.org/changeset/113363&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135885</attachid>
            <date>2012-04-05 13:06:13 -0700</date>
            <delta_ts>2012-04-05 13:07:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-83307-20120405130612.patch</filename>
            <type>text/plain</type>
            <size>34804</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzMzYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZDA2M2E0ODQwN2RhM2M3MzQwYjdhNzYwYmE4YWQ1MDMwMGQwOTViLi4yZTkyY2ViZDRjYzU3MTAz
MDZiOWVlMTMwMTdlZDRiZDAzOWEzY2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4MSBAQAorMjAxMi0wNC0wNSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgor
CisgICAgICAgIFJlcGxhY2Ugc3RhdGljX2Nhc3Qgd2l0aCBqc0Nhc3Qgd2hlbiBjYXN0aW5nIEpT
Q2VsbCBzdWJjbGFzc2VzIGluIEpTQworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9ODMzMDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSZXBsYWNlIGFsbCB1c2FnZSBvZiBzdGF0aWNfY2FzdDxKU0NlbGwgc3Vi
dHlwZSo+IHdpdGgganNDYXN0PD4gaW4gSmF2YVNjcmlwdENvcmUuCisgICAgICAgIFRoaXMgcmVz
dWx0cyBpbiBhc3NlcnRpb25zIHdoZW4gdW5zYWZlIGNhc3RzIGFyZSBwZXJmb3JtZWQsIGJ1dCBz
aW1wbHkgbGVhdmVzCisgICAgICAgIGEgc3RhdGljX2Nhc3Q8PiBpbiByZWxlYXNlIGJ1aWxkcy4K
KworICAgICAgICAqIEFQSS9BUElDYXN0Lmg6CisgICAgICAgICh0b0pTKToKKyAgICAgICAgKiBB
UEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0SlND
YWxsYmFjayk6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5jcHA6CisgICAgICAg
IChKU0M6OkpTQ2FsbGJhY2tGdW5jdGlvbjo6Y2FsbCk6CisgICAgICAgICogQVBJL0pTQ2FsbGJh
Y2tPYmplY3RGdW5jdGlvbnMuaDoKKyAgICAgICAgKEpTQzo6Ojphc0NhbGxiYWNrT2JqZWN0KToK
KyAgICAgICAgKEpTQzo6OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6Ojo6Y29uc3Ry
dWN0KToKKyAgICAgICAgKEpTQzo6OjpjYWxsKToKKyAgICAgICAgKiBBUEkvSlNPYmplY3RSZWYu
Y3BwOgorICAgICAgICAoSlNPYmplY3RHZXRQcml2YXRlKToKKyAgICAgICAgKEpTT2JqZWN0U2V0
UHJpdmF0ZSk6CisgICAgICAgIChKU09iamVjdEdldFByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAg
IChKU09iamVjdFNldFByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAgIChKU09iamVjdERlbGV0ZVBy
aXZhdGVQcm9wZXJ0eSk6CisgICAgICAgICogQVBJL0pTVmFsdWVSZWYuY3BwOgorICAgICAgICAo
SlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyk6CisgICAgICAgICogQVBJL0pTV2Vha09iamVjdE1hcFJl
ZlByaXZhdGUuY3BwOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpyZXNvbHZlKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnJlc29sdmVDb25zdERlY2wpOgorICAgICAgICAqIGRl
YnVnZ2VyL0RlYnVnZ2VyQWN0aXZhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyQWN0
aXZhdGlvbjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNw
cDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6
OkludGVycHJldGVyOjpleGVjdXRlKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnByaXZh
dGVFeGVjdXRlKToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAgICAoSlNDOjpE
RUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6Cisg
ICAgICAgIChKU0M6OmlzSG9zdEZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTQWN0aXZh
dGlvbi5oOgorICAgICAgICAoSlNDOjphc0FjdGl2YXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUv
SlNBcnJheS5jcHA6CisgICAgICAgIChKU0M6OkpTQXJyYXk6OmRlZmluZU93blByb3BlcnR5KToK
KyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAgKEpTQzo6YXNBcnJheSk6Cisg
ICAgICAgICogcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpib3Vu
ZEZ1bmN0aW9uQ2FsbCk6CisgICAgICAgIChKU0M6OmJvdW5kRnVuY3Rpb25Db25zdHJ1Y3QpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNCeXRlQXJyYXkuaDoKKyAgICAgICAgKEpTQzo6YXNCeXRlQXJy
YXkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDZWxs
Ojp0b09iamVjdCk6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKEpTQzo6
anNDYXN0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChK
U0M6OmFzR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVu
Y3Rpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY0V2YWwpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6c2V0UHJvdG90eXBl
V2l0aEN5Y2xlQ2hlY2spOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6YWxsb3dzQWNjZXNzRnJv
bSk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojp0b1RoaXNPYmplY3QpOgorICAgICAgICAoSlND
OjpKU09iamVjdDo6dW53cmFwcGVkT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OmFzT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuaDoKKyAgICAgICAgKEpTQzo6UmVnaXN0ZXI6OnByb3BlcnR5TmFtZUl0
ZXJhdG9yKToKKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgIChKU0M6OmFz
U3RyaW5nKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6dG9TdHJpbmcpOgorICAgICAgICAqIHJ1
bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6c3RyaW5nUHJvdG9GdW5j
U3Vic3RyKToKKwogMjAxMi0wNC0wNSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KIAogICAgICAgICBNYWtlIHNvbWV0aGluZyBmYXN0ZXIgdGhhbiBKU1N0cmluZ0J1aWxk
ZXIgZm9yIGpvaW5pbmcgYW4gYXJyYXkgb2YgSlNWYWx1ZQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9BUElDYXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQ
SUNhc3QuaAppbmRleCA0Mjk0ZDNkNjgyYTgxNmJiMDQ2N2QyN2RlNjU5OWIwZjc4MzI1MDI2Li5j
ZTdkNGRjZTJmN2NlZDAwZjk3ZWM1NTZmNGEyOTkwODkxMTU4NDAwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0FQSUNhc3QuaApAQCAtNjksNyArNjksNyBAQCBpbmxpbmUgSlNDOjpKU1ZhbHVlIHRv
SlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWVSZWYgdikKICAgICBpZiAoIWpzQ2VsbCkK
ICAgICAgICAgcmV0dXJuIEpTQzo6SlNWYWx1ZSgpOwogICAgIGlmIChqc0NlbGwtPmlzQVBJVmFs
dWVXcmFwcGVyKCkpCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU0M6OkpTQVBJVmFsdWVX
cmFwcGVyKj4oanNDZWxsKS0+dmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU0M6OkpT
QVBJVmFsdWVXcmFwcGVyKj4oanNDZWxsKS0+dmFsdWUoKTsKICAgICByZXR1cm4ganNDZWxsOwog
I2Vsc2UKICAgICByZXR1cm4gSlNDOjpKU1ZhbHVlOjpkZWNvZGUocmVpbnRlcnByZXRfY2FzdDxK
U0M6OkVuY29kZWRKU1ZhbHVlPihjb25zdF9jYXN0PE9wYXF1ZUpTVmFsdWUqPih2KSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuY3Bw
CmluZGV4IDEzNDllNGYzZjhiN2Y1Y2QyMTNjYWEyYzgyZDUyOWZjYmFhN2FhNjYuLmI1YjViOWUz
MDY2NWExNjM2ZTNhMGQ1MWI1MDI3MTQ4MWE0NDc0MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0NvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5jcHAKQEAgLTcwLDcgKzcwLDcg
QEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNDYWxsYmFj
ayhFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNDb250ZXh0UmVmIGN0eCA9IHRvUmVmKGV4ZWMpOwog
ICAgIEpTT2JqZWN0UmVmIGNvbnN0cnVjdG9yUmVmID0gdG9SZWYoY29uc3RydWN0b3IpOwogCi0g
ICAgSlNPYmplY3RDYWxsQXNDb25zdHJ1Y3RvckNhbGxiYWNrIGNhbGxiYWNrID0gc3RhdGljX2Nh
c3Q8SlNDYWxsYmFja0NvbnN0cnVjdG9yKj4oY29uc3RydWN0b3IpLT5jYWxsYmFjaygpOworICAg
IEpTT2JqZWN0Q2FsbEFzQ29uc3RydWN0b3JDYWxsYmFjayBjYWxsYmFjayA9IGpzQ2FzdDxKU0Nh
bGxiYWNrQ29uc3RydWN0b3IqPihjb25zdHJ1Y3RvciktPmNhbGxiYWNrKCk7CiAgICAgaWYgKGNh
bGxiYWNrKSB7CiAgICAgICAgIGludCBhcmd1bWVudENvdW50ID0gc3RhdGljX2Nhc3Q8aW50Pihl
eGVjLT5hcmd1bWVudENvdW50KCkpOwogICAgICAgICBWZWN0b3I8SlNWYWx1ZVJlZiwgMTY+IGFy
Z3VtZW50cyhhcmd1bWVudENvdW50KTsKQEAgLTg4LDcgKzg4LDcgQEAgc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNDYWxsYmFjayhFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUyhyZXN1bHQpKTsKICAgICB9CiAg
ICAgCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKEpTT2JqZWN0TWFrZShjdHgsIHN0
YXRpY19jYXN0PEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcio+KGNvbnN0cnVjdG9yKS0+Y2xhc3NSZWYo
KSwgMCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlMoSlNPYmplY3RNYWtlKGN0
eCwganNDYXN0PEpTQ2FsbGJhY2tDb25zdHJ1Y3Rvcio+KGNvbnN0cnVjdG9yKS0+Y2xhc3NSZWYo
KSwgMCkpKTsKIH0KIAogQ29uc3RydWN0VHlwZSBKU0NhbGxiYWNrQ29uc3RydWN0b3I6OmdldENv
bnN0cnVjdERhdGEoSlNDZWxsKiwgQ29uc3RydWN0RGF0YSYgY29uc3RydWN0RGF0YSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja0Z1bmN0aW9uLmNwcAppbmRleCBi
MjdhNjQ2ZDc2MTA1NjRmNWNmMmJhZDBiYzVmMWVjNDc5MTc0ZmZhLi4yMzE4YTY2YTg4Yjc5MzZk
NTJmOTI0MDdjN2ZmMTAxNTc5YzQxMDc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTQ2FsbGJhY2tGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0FQSS9KU0NhbGxiYWNrRnVuY3Rpb24uY3BwCkBAIC03MCw3ICs3MCw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ2FsbGJhY2tGdW5jdGlvbjo6Y2FsbChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNWYWx1
ZVJlZiByZXN1bHQ7CiAgICAgewogICAgICAgICBBUElDYWxsYmFja1NoaW0gY2FsbGJhY2tTaGlt
KGV4ZWMpOwotICAgICAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxKU0NhbGxiYWNrRnVuY3Rpb24q
Pih0b0pTKGZ1bmN0aW9uUmVmKSktPm1fY2FsbGJhY2soZXhlY1JlZiwgZnVuY3Rpb25SZWYsIHRo
aXNPYmpSZWYsIGFyZ3VtZW50Q291bnQsIGFyZ3VtZW50cy5kYXRhKCksICZleGNlcHRpb24pOwor
ICAgICAgICByZXN1bHQgPSBqc0Nhc3Q8SlNDYWxsYmFja0Z1bmN0aW9uKj4odG9KUyhmdW5jdGlv
blJlZikpLT5tX2NhbGxiYWNrKGV4ZWNSZWYsIGZ1bmN0aW9uUmVmLCB0aGlzT2JqUmVmLCBhcmd1
bWVudENvdW50LCBhcmd1bWVudHMuZGF0YSgpLCAmZXhjZXB0aW9uKTsKICAgICB9CiAgICAgaWYg
KGV4Y2VwdGlvbikKICAgICAgICAgdGhyb3dFcnJvcihleGVjLCB0b0pTKGV4ZWMsIGV4Y2VwdGlv
bikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2Jq
ZWN0RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmpl
Y3RGdW5jdGlvbnMuaAppbmRleCBjMWU4MjQ2MzVkNDE5MTI5N2RhY2FkODRkOGRjNDc2YjQ5NDkw
ZTBhLi4xMzMwMzVmZmMzNmRmNGNhYmVkOGFmNmY4MWQ4NjMyZTgwMThlYzdiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aApAQCAtNDYsNyArNDYsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgogaW5saW5lIEpTQ2Fs
bGJhY2tPYmplY3Q8UGFyZW50PiogSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+Ojphc0NhbGxiYWNr
T2JqZWN0KEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgQVNTRVJUKGFzT2JqZWN0KHZhbHVlKS0+aW5o
ZXJpdHMoJnNfaW5mbykpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU0NhbGxiYWNrT2JqZWN0
Kj4oYXNPYmplY3QodmFsdWUpKTsKKyAgICByZXR1cm4ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Qq
Pihhc09iamVjdCh2YWx1ZSkpOwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgUGFyZW50PgpAQCAtODAs
NyArODAsNyBAQCB2b2lkIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6ZmluaXNoQ3JlYXRpb24o
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQogICAgIEFTU0VSVChQYXJlbnQ6OmluaGVyaXRzKCZz
X2luZm8pKTsKICAgICBBU1NFUlQoUGFyZW50Ojppc0dsb2JhbE9iamVjdCgpKTsKICAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbihnbG9iYWxEYXRhKTsKLSAgICBpbml0KHN0YXRpY19jYXN0PEpTR2xv
YmFsT2JqZWN0Kj4odGhpcyktPmdsb2JhbEV4ZWMoKSk7CisgICAgaW5pdChqc0Nhc3Q8SlNHbG9i
YWxPYmplY3QqPih0aGlzKS0+Z2xvYmFsRXhlYygpKTsKIH0KIAogdGVtcGxhdGUgPGNsYXNzIFBh
cmVudD4KQEAgLTM1NCw3ICszNTQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0
PFBhcmVudD46OmNvbnN0cnVjdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNDb250ZXh0UmVmIGV4
ZWNSZWYgPSB0b1JlZihleGVjKTsKICAgICBKU09iamVjdFJlZiBjb25zdHJ1Y3RvclJlZiA9IHRv
UmVmKGNvbnN0cnVjdG9yKTsKICAgICAKLSAgICBmb3IgKEpTQ2xhc3NSZWYganNDbGFzcyA9IHN0
YXRpY19jYXN0PEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pio+KGNvbnN0cnVjdG9yKS0+Y2xhc3NS
ZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CisgICAgZm9y
IChKU0NsYXNzUmVmIGpzQ2xhc3MgPSBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxQYXJlbnQ+Kj4o
Y29uc3RydWN0b3IpLT5jbGFzc1JlZigpOyBqc0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFy
ZW50Q2xhc3MpIHsKICAgICAgICAgaWYgKEpTT2JqZWN0Q2FsbEFzQ29uc3RydWN0b3JDYWxsYmFj
ayBjYWxsQXNDb25zdHJ1Y3RvciA9IGpzQ2xhc3MtPmNhbGxBc0NvbnN0cnVjdG9yKSB7CiAgICAg
ICAgICAgICBpbnQgYXJndW1lbnRDb3VudCA9IHN0YXRpY19jYXN0PGludD4oZXhlYy0+YXJndW1l
bnRDb3VudCgpKTsKICAgICAgICAgICAgIFZlY3RvcjxKU1ZhbHVlUmVmLCAxNj4gYXJndW1lbnRz
KGFyZ3VtZW50Q291bnQpOwpAQCAtNDIwLDcgKzQyMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2Fs
bGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNPYmplY3RS
ZWYgZnVuY3Rpb25SZWYgPSB0b1JlZihleGVjLT5jYWxsZWUoKSk7CiAgICAgSlNPYmplY3RSZWYg
dGhpc09ialJlZiA9IHRvUmVmKGV4ZWMtPmhvc3RUaGlzVmFsdWUoKS50b1RoaXNPYmplY3QoZXhl
YykpOwogICAgIAotICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gc3RhdGljX2Nhc3Q8SlND
YWxsYmFja09iamVjdDxQYXJlbnQ+Kj4odG9KUyhmdW5jdGlvblJlZikpLT5jbGFzc1JlZigpOyBq
c0NsYXNzOyBqc0NsYXNzID0ganNDbGFzcy0+cGFyZW50Q2xhc3MpIHsKKyAgICBmb3IgKEpTQ2xh
c3NSZWYganNDbGFzcyA9IGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD4qPih0b0pTKGZ1
bmN0aW9uUmVmKSktPmNsYXNzUmVmKCk7IGpzQ2xhc3M7IGpzQ2xhc3MgPSBqc0NsYXNzLT5wYXJl
bnRDbGFzcykgewogICAgICAgICBpZiAoSlNPYmplY3RDYWxsQXNGdW5jdGlvbkNhbGxiYWNrIGNh
bGxBc0Z1bmN0aW9uID0ganNDbGFzcy0+Y2FsbEFzRnVuY3Rpb24pIHsKICAgICAgICAgICAgIGlu
dCBhcmd1bWVudENvdW50ID0gc3RhdGljX2Nhc3Q8aW50PihleGVjLT5hcmd1bWVudENvdW50KCkp
OwogICAgICAgICAgICAgVmVjdG9yPEpTVmFsdWVSZWYsIDE2PiBhcmd1bWVudHMoYXJndW1lbnRD
b3VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVm
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCmluZGV4IDE3
MzI5YWQ4N2Q4Y2JhYzRlNzIzMmU1ZWE3ZDRmMDdmOTNmMTVlOTMuLmUwMTIxNGQ1ZWJmYTEwY2Nm
MjNiODc3OWYwNjJkZDBmOGZlYmFhOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNPYmplY3RSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNP
YmplY3RSZWYuY3BwCkBAIC0zNDEsOSArMzQxLDkgQEAgdm9pZCogSlNPYmplY3RHZXRQcml2YXRl
KEpTT2JqZWN0UmVmIG9iamVjdCkKICAgICBKU09iamVjdCoganNPYmplY3QgPSB0b0pTKG9iamVj
dCk7CiAgICAgCiAgICAgaWYgKGpzT2JqZWN0LT5pbmhlcml0cygmSlNDYWxsYmFja09iamVjdDxK
U0dsb2JhbE9iamVjdD46OnNfaW5mbykpCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU0Nh
bGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0Pio+KGpzT2JqZWN0KS0+Z2V0UHJpdmF0ZSgpOwor
ICAgICAgICByZXR1cm4ganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+Kj4o
anNPYmplY3QpLT5nZXRQcml2YXRlKCk7CiAgICAgaWYgKGpzT2JqZWN0LT5pbmhlcml0cygmSlND
YWxsYmFja09iamVjdDxKU05vbkZpbmFsT2JqZWN0Pjo6c19pbmZvKSkKLSAgICAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNOb25GaW5hbE9iamVjdD4qPihqc09iamVj
dCktPmdldFByaXZhdGUoKTsKKyAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0
PEpTTm9uRmluYWxPYmplY3Q+Kj4oanNPYmplY3QpLT5nZXRQcml2YXRlKCk7CiAgICAgCiAgICAg
cmV0dXJuIDA7CiB9CkBAIC0zNTMsMTEgKzM1MywxMSBAQCBib29sIEpTT2JqZWN0U2V0UHJpdmF0
ZShKU09iamVjdFJlZiBvYmplY3QsIHZvaWQqIGRhdGEpCiAgICAgSlNPYmplY3QqIGpzT2JqZWN0
ID0gdG9KUyhvYmplY3QpOwogICAgIAogICAgIGlmIChqc09iamVjdC0+aW5oZXJpdHMoJkpTQ2Fs
bGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+OjpzX2luZm8pKSB7Ci0gICAgICAgIHN0YXRpY19j
YXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+Kj4oanNPYmplY3QpLT5zZXRQcml2
YXRlKGRhdGEpOworICAgICAgICBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVj
dD4qPihqc09iamVjdCktPnNldFByaXZhdGUoZGF0YSk7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KICAgICBpZiAoanNPYmplY3QtPmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpTTm9u
RmluYWxPYmplY3Q+OjpzX2luZm8pKSB7Ci0gICAgICAgIHN0YXRpY19jYXN0PEpTQ2FsbGJhY2tP
YmplY3Q8SlNOb25GaW5hbE9iamVjdD4qPihqc09iamVjdCktPnNldFByaXZhdGUoZGF0YSk7Cisg
ICAgICAgIGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTTm9uRmluYWxPYmplY3Q+Kj4oanNPYmpl
Y3QpLT5zZXRQcml2YXRlKGRhdGEpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAg
ICAgIApAQCAtMzcyLDkgKzM3Miw5IEBAIEpTVmFsdWVSZWYgSlNPYmplY3RHZXRQcml2YXRlUHJv
cGVydHkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0CiAgICAgSlNW
YWx1ZSByZXN1bHQ7CiAgICAgSWRlbnRpZmllciBuYW1lKHByb3BlcnR5TmFtZS0+aWRlbnRpZmll
cigmZXhlYy0+Z2xvYmFsRGF0YSgpKSk7CiAgICAgaWYgKGpzT2JqZWN0LT5pbmhlcml0cygmSlND
YWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD46OnNfaW5mbykpCi0gICAgICAgIHJlc3VsdCA9
IHN0YXRpY19jYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+Kj4oanNPYmplY3Qp
LT5nZXRQcml2YXRlUHJvcGVydHkobmFtZSk7CisgICAgICAgIHJlc3VsdCA9IGpzQ2FzdDxKU0Nh
bGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0Pio+KGpzT2JqZWN0KS0+Z2V0UHJpdmF0ZVByb3Bl
cnR5KG5hbWUpOwogICAgIGVsc2UgaWYgKGpzT2JqZWN0LT5pbmhlcml0cygmSlNDYWxsYmFja09i
amVjdDxKU05vbkZpbmFsT2JqZWN0Pjo6c19pbmZvKSkKLSAgICAgICAgcmVzdWx0ID0gc3RhdGlj
X2Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU05vbkZpbmFsT2JqZWN0Pio+KGpzT2JqZWN0KS0+Z2V0
UHJpdmF0ZVByb3BlcnR5KG5hbWUpOworICAgICAgICByZXN1bHQgPSBqc0Nhc3Q8SlNDYWxsYmFj
a09iamVjdDxKU05vbkZpbmFsT2JqZWN0Pio+KGpzT2JqZWN0KS0+Z2V0UHJpdmF0ZVByb3BlcnR5
KG5hbWUpOwogICAgIHJldHVybiB0b1JlZihleGVjLCByZXN1bHQpOwogfQogCkBAIC0zODYsMTEg
KzM4NiwxMSBAQCBib29sIEpTT2JqZWN0U2V0UHJpdmF0ZVByb3BlcnR5KEpTQ29udGV4dFJlZiBj
dHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNTdHJpbmdSZQogICAgIEpTVmFsdWUganNWYWx1ZSA9
IHZhbHVlID8gdG9KUyhleGVjLCB2YWx1ZSkgOiBKU1ZhbHVlKCk7CiAgICAgSWRlbnRpZmllciBu
YW1lKHByb3BlcnR5TmFtZS0+aWRlbnRpZmllcigmZXhlYy0+Z2xvYmFsRGF0YSgpKSk7CiAgICAg
aWYgKGpzT2JqZWN0LT5pbmhlcml0cygmSlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD46
OnNfaW5mbykpIHsKLSAgICAgICAgc3RhdGljX2Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0dsb2Jh
bE9iamVjdD4qPihqc09iamVjdCktPnNldFByaXZhdGVQcm9wZXJ0eShleGVjLT5nbG9iYWxEYXRh
KCksIG5hbWUsIGpzVmFsdWUpOworICAgICAgICBqc0Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU0ds
b2JhbE9iamVjdD4qPihqc09iamVjdCktPnNldFByaXZhdGVQcm9wZXJ0eShleGVjLT5nbG9iYWxE
YXRhKCksIG5hbWUsIGpzVmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAg
aWYgKGpzT2JqZWN0LT5pbmhlcml0cygmSlNDYWxsYmFja09iamVjdDxKU05vbkZpbmFsT2JqZWN0
Pjo6c19pbmZvKSkgewotICAgICAgICBzdGF0aWNfY2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTTm9u
RmluYWxPYmplY3Q+Kj4oanNPYmplY3QpLT5zZXRQcml2YXRlUHJvcGVydHkoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBuYW1lLCBqc1ZhbHVlKTsKKyAgICAgICAganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8
SlNOb25GaW5hbE9iamVjdD4qPihqc09iamVjdCktPnNldFByaXZhdGVQcm9wZXJ0eShleGVjLT5n
bG9iYWxEYXRhKCksIG5hbWUsIGpzVmFsdWUpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9
CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDAzLDExICs0MDMsMTEgQEAgYm9vbCBKU09iamVjdERl
bGV0ZVByaXZhdGVQcm9wZXJ0eShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3Qs
IEpTU3RyaW4KICAgICBKU09iamVjdCoganNPYmplY3QgPSB0b0pTKG9iamVjdCk7CiAgICAgSWRl
bnRpZmllciBuYW1lKHByb3BlcnR5TmFtZS0+aWRlbnRpZmllcigmZXhlYy0+Z2xvYmFsRGF0YSgp
KSk7CiAgICAgaWYgKGpzT2JqZWN0LT5pbmhlcml0cygmSlNDYWxsYmFja09iamVjdDxKU0dsb2Jh
bE9iamVjdD46OnNfaW5mbykpIHsKLSAgICAgICAgc3RhdGljX2Nhc3Q8SlNDYWxsYmFja09iamVj
dDxKU0dsb2JhbE9iamVjdD4qPihqc09iamVjdCktPmRlbGV0ZVByaXZhdGVQcm9wZXJ0eShuYW1l
KTsKKyAgICAgICAganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+Kj4oanNP
YmplY3QpLT5kZWxldGVQcml2YXRlUHJvcGVydHkobmFtZSk7CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KICAgICBpZiAoanNPYmplY3QtPmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpT
Tm9uRmluYWxPYmplY3Q+OjpzX2luZm8pKSB7Ci0gICAgICAgIHN0YXRpY19jYXN0PEpTQ2FsbGJh
Y2tPYmplY3Q8SlNOb25GaW5hbE9iamVjdD4qPihqc09iamVjdCktPmRlbGV0ZVByaXZhdGVQcm9w
ZXJ0eShuYW1lKTsKKyAgICAgICAganNDYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNOb25GaW5hbE9i
amVjdD4qPihqc09iamVjdCktPmRlbGV0ZVByaXZhdGVQcm9wZXJ0eShuYW1lKTsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTVmFsdWVSZWYuY3BwCmluZGV4IDFiNGUwM2JkZTUwNjliMDM0OWY0YWFlZWJjMmQz
MTQ2ODFiYjRhNTAuLjliNzI2OGEyZGE2MzAwOWVmMjU1ZDAwYjMwY2IxN2JlOThjZWRkYjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZVJlZi5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcApAQCAtMTMwLDkgKzEzMCw5
IEBAIGJvb2wgSlNWYWx1ZUlzT2JqZWN0T2ZDbGFzcyhKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVl
UmVmIHZhbHVlLCBKU0NsYXNzUmVmIGpzQ2xhCiAgICAgCiAgICAgaWYgKEpTT2JqZWN0KiBvID0g
anNWYWx1ZS5nZXRPYmplY3QoKSkgewogICAgICAgICBpZiAoby0+aW5oZXJpdHMoJkpTQ2FsbGJh
Y2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+OjpzX2luZm8pKQotICAgICAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+Kj4obyktPmluaGVyaXRz
KGpzQ2xhc3MpOworICAgICAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpT
R2xvYmFsT2JqZWN0Pio+KG8pLT5pbmhlcml0cyhqc0NsYXNzKTsKICAgICAgICAgaWYgKG8tPmlu
aGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpTTm9uRmluYWxPYmplY3Q+OjpzX2luZm8pKQotICAg
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNOb25GaW5hbE9i
amVjdD4qPihvKS0+aW5oZXJpdHMoanNDbGFzcyk7CisgICAgICAgICAgICByZXR1cm4ganNDYXN0
PEpTQ2FsbGJhY2tPYmplY3Q8SlNOb25GaW5hbE9iamVjdD4qPihvKS0+aW5oZXJpdHMoanNDbGFz
cyk7CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNXZWFrT2JqZWN0TWFwUmVmUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTV2Vha09iamVjdE1hcFJlZlByaXZhdGUuY3BwCmluZGV4IDQyOTJh
NjBiZDk4NGMxMDE4YTk2MTgwZDk5OGMxY2RiNDU3Y2I1N2IuLmJkZDU2ZjYwMjY5YjA1ZDgwOGYy
OTdmMWI1NGMxZDc4Mjg4NWIxZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNXZWFrT2JqZWN0TWFwUmVmUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmNwcApAQCAtNjUsNyArNjUsNyBAQCBK
U09iamVjdFJlZiBKU1dlYWtPYmplY3RNYXBHZXQoSlNDb250ZXh0UmVmIGN0eCwgSlNXZWFrT2Jq
ZWN0TWFwUmVmIG1hcCwgdm9pZCogawogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4
KTsKICAgICBBUElFbnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOwotICAgIHJldHVybiB0b1JlZihz
dGF0aWNfY2FzdDxKU09iamVjdCo+KG1hcC0+bWFwKCkuZ2V0KGtleSkpKTsKKyAgICByZXR1cm4g
dG9SZWYoanNDYXN0PEpTT2JqZWN0Kj4obWFwLT5tYXAoKS5nZXQoa2V5KSkpOwogfQogCiB2b2lk
IEpTV2Vha09iamVjdE1hcFJlbW92ZShKU0NvbnRleHRSZWYgY3R4LCBKU1dlYWtPYmplY3RNYXBS
ZWYgbWFwLCB2b2lkKiBrZXkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IGMzYTk0MmM0ZDRkYzRmMGNj
ZTQzMTBmZjMwOGNkMWFlMmQ4Y2E4ZjUuLmE1MjBhNGM3OGIwOWJmNzg3MmViOGZlMWUzZmEzYTVh
MDFlYzcwNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC0xMTg1LDcgKzExODUsNyBAQCBSZXNvbHZl
UmVzdWx0IEJ5dGVjb2RlR2VuZXJhdG9yOjpyZXNvbHZlKGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5KQogICAgICAgICAgICAgZmxhZ3MgfD0gUmVzb2x2ZVJlc3VsdDo6RHluYW1pY0ZsYWc7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfSAgICAgICAgCi0gICAgICAgIEpTVmFyaWFibGVP
YmplY3QqIGN1cnJlbnRWYXJpYWJsZU9iamVjdCA9IHN0YXRpY19jYXN0PEpTVmFyaWFibGVPYmpl
Y3QqPihjdXJyZW50U2NvcGUpOworICAgICAgICBKU1ZhcmlhYmxlT2JqZWN0KiBjdXJyZW50VmFy
aWFibGVPYmplY3QgPSBqc0Nhc3Q8SlNWYXJpYWJsZU9iamVjdCo+KGN1cnJlbnRTY29wZSk7CiAg
ICAgICAgIFN5bWJvbFRhYmxlRW50cnkgZW50cnkgPSBjdXJyZW50VmFyaWFibGVPYmplY3QtPnN5
bWJvbFRhYmxlKCkuZ2V0KHByb3BlcnR5LmltcGwoKSk7CiAKICAgICAgICAgLy8gRm91bmQgdGhl
IHByb3BlcnR5CkBAIC0xMjQyLDcgKzEyNDIsNyBAQCBSZXNvbHZlUmVzdWx0IEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpyZXNvbHZlQ29uc3REZWNsKGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5KQogICAg
ICAgICBKU09iamVjdCogY3VycmVudFNjb3BlID0gaXRlci0+Z2V0KCk7CiAgICAgICAgIGlmICgh
Y3VycmVudFNjb3BlLT5pc1ZhcmlhYmxlT2JqZWN0KCkpCiAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgSlNWYXJpYWJsZU9iamVjdCogY3VycmVudFZhcmlhYmxlT2JqZWN0ID0gc3RhdGlj
X2Nhc3Q8SlNWYXJpYWJsZU9iamVjdCo+KGN1cnJlbnRTY29wZSk7CisgICAgICAgIEpTVmFyaWFi
bGVPYmplY3QqIGN1cnJlbnRWYXJpYWJsZU9iamVjdCA9IGpzQ2FzdDxKU1ZhcmlhYmxlT2JqZWN0
Kj4oY3VycmVudFNjb3BlKTsKICAgICAgICAgU3ltYm9sVGFibGVFbnRyeSBlbnRyeSA9IGN1cnJl
bnRWYXJpYWJsZU9iamVjdC0+c3ltYm9sVGFibGUoKS5nZXQocHJvcGVydHkuaW1wbCgpKTsKICAg
ICAgICAgaWYgKGVudHJ5LmlzTnVsbCgpKQogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJBY3RpdmF0aW9uLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3Bw
CmluZGV4IDUyOWEwMmYxNjViOTZjNTAxMjZmN2M4ZGYwNjQ2MTA4MzQxOTMwNDcuLjJhODNmNTEz
OGZlNDQwZTZhZjdmYmMxZjgxY2MwNzI2MjdiODBhNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckFjdGl2YXRpb24uY3BwCkBAIC00NCw3ICs0
NCw3IEBAIHZvaWQgRGVidWdnZXJBY3RpdmF0aW9uOjpmaW5pc2hDcmVhdGlvbihKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIEpTT2JqZWN0KiBhY3RpCiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
Z2xvYmFsRGF0YSk7CiAgICAgQVNTRVJUKGFjdGl2YXRpb24pOwogICAgIEFTU0VSVChhY3RpdmF0
aW9uLT5pc0FjdGl2YXRpb25PYmplY3QoKSk7Ci0gICAgbV9hY3RpdmF0aW9uLnNldChnbG9iYWxE
YXRhLCB0aGlzLCBzdGF0aWNfY2FzdDxKU0FjdGl2YXRpb24qPihhY3RpdmF0aW9uKSk7CisgICAg
bV9hY3RpdmF0aW9uLnNldChnbG9iYWxEYXRhLCB0aGlzLCBqc0Nhc3Q8SlNBY3RpdmF0aW9uKj4o
YWN0aXZhdGlvbikpOwogfQogCiB2b2lkIERlYnVnZ2VyQWN0aXZhdGlvbjo6dmlzaXRDaGlsZHJl
bihKU0NlbGwqIGNlbGwsIFNsb3RWaXNpdG9yJiB2aXNpdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKaW5kZXggNTc2NmQzMTYzMzhlMDNkY2I1YWEzM2Ex
MGVlMzI2Mzg4N2IwNmI1MC4uODljNzYyZjliYWFlMDJhYzY4NTMyNjViN2YyNzA0NjFlYTE5MGFi
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0y
NTMsNyArMjUzLDcgQEAgSlNDZWxsKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkNyZWF0ZVRoaXNJ
bmxpbmVkKEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBwcm90b3QKICAgICBKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOwogICAgIE5hdGl2ZUNhbGxGcmFtZVRy
YWNlciB0cmFjZXIoZ2xvYmFsRGF0YSwgZXhlYyk7CiAgICAgCi0gICAgcmV0dXJuIGNyZWF0ZVRo
aXMoZXhlYywgcHJvdG90eXBlLCBzdGF0aWNfY2FzdDxKU0Z1bmN0aW9uKj4oY29uc3RydWN0b3Ip
KTsKKyAgICByZXR1cm4gY3JlYXRlVGhpcyhleGVjLCBwcm90b3R5cGUsIGpzQ2FzdDxKU0Z1bmN0
aW9uKj4oY29uc3RydWN0b3IpKTsKIH0KIAogSlNDZWxsKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlv
bk5ld09iamVjdChFeGVjU3RhdGUqIGV4ZWMpCkBAIC0xMDI1LDcgKzEwMjUsNyBAQCB2b2lkIERG
R19PUEVSQVRJT04gb3BlcmF0aW9uVGVhck9mZkFjdGl2YXRpb24oRXhlY1N0YXRlKiBleGVjLCBK
U0NlbGwqIGFjdGl2YXRpbwogewogICAgIEFTU0VSVChhY3RpdmF0aW9uKTsKICAgICBBU1NFUlQo
YWN0aXZhdGlvbi0+aW5oZXJpdHMoJkpTQWN0aXZhdGlvbjo6c19pbmZvKSk7Ci0gICAgc3RhdGlj
X2Nhc3Q8SlNBY3RpdmF0aW9uKj4oYWN0aXZhdGlvbiktPnRlYXJPZmYoZXhlYy0+Z2xvYmFsRGF0
YSgpKTsKKyAgICBqc0Nhc3Q8SlNBY3RpdmF0aW9uKj4oYWN0aXZhdGlvbiktPnRlYXJPZmYoZXhl
Yy0+Z2xvYmFsRGF0YSgpKTsKIH0KIAogSlNDZWxsKiBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbk5l
d0Z1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBmdW5jdGlvbkV4ZWN1dGFibGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApp
bmRleCA4ODM2YmVmYWJiNDVmNjdjYTNmNTVlYTlhMWQwYjFiZDRlNDk5ZDhjLi41NjAxNDZlM2Rh
MmZmN2EwMWIwNTYxOTRiNjZlYzZjMzc1NWU3MDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTE1MTQsNyArMTUxNCw3IEBA
IEpTVmFsdWUgSW50ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqIGV2YWwsIENhbGxG
cmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlCiAgICAgZm9yIChTY29wZUNoYWluTm9kZSogbm9kZSA9
IHNjb3BlQ2hhaW47IDsgbm9kZSA9IG5vZGUtPm5leHQuZ2V0KCkpIHsKICAgICAgICAgQVNTRVJU
KG5vZGUpOwogICAgICAgICBpZiAobm9kZS0+b2JqZWN0LT5pc1ZhcmlhYmxlT2JqZWN0KCkgJiYg
IW5vZGUtPm9iamVjdC0+aXNTdGF0aWNTY29wZU9iamVjdCgpKSB7Ci0gICAgICAgICAgICB2YXJp
YWJsZU9iamVjdCA9IHN0YXRpY19jYXN0PEpTVmFyaWFibGVPYmplY3QqPihub2RlLT5vYmplY3Qu
Z2V0KCkpOworICAgICAgICAgICAgdmFyaWFibGVPYmplY3QgPSBqc0Nhc3Q8SlNWYXJpYWJsZU9i
amVjdCo+KG5vZGUtPm9iamVjdC5nZXQoKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgIH0KQEAgLTI4ODMsNyArMjg4Myw3IEBAIEpTVmFsdWUgSW50ZXJwcmV0ZXI6OnByaXZh
dGVFeGVjdXRlKEV4ZWN1dGlvbkZsYWcgZmxhZywgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpCiAg
ICAgICAgICAgICBBU1NFUlRfVU5VU0VEKGVuZCwgaXRlciAhPSBlbmQpOwogICAgICAgICB9CiAg
ICAgICAgIEFTU0VSVCgoKml0ZXIpLT5pc1ZhcmlhYmxlT2JqZWN0KCkpOwotICAgICAgICBKU1Zh
cmlhYmxlT2JqZWN0KiBzY29wZSA9IHN0YXRpY19jYXN0PEpTVmFyaWFibGVPYmplY3QqPihpdGVy
LT5nZXQoKSk7CisgICAgICAgIEpTVmFyaWFibGVPYmplY3QqIHNjb3BlID0ganNDYXN0PEpTVmFy
aWFibGVPYmplY3QqPihpdGVyLT5nZXQoKSk7CiAgICAgICAgIGNhbGxGcmFtZS0+dW5jaGVja2Vk
Uihkc3QpID0gc2NvcGUtPnJlZ2lzdGVyQXQoaW5kZXgpLmdldCgpOwogICAgICAgICBBU1NFUlQo
Y2FsbEZyYW1lLT5yKGRzdCkuanNWYWx1ZSgpKTsKICAgICAgICAgdlBDICs9IE9QQ09ERV9MRU5H
VEgob3BfZ2V0X3Njb3BlZF92YXIpOwpAQCAtMjkxNCw3ICsyOTE0LDcgQEAgSlNWYWx1ZSBJbnRl
cnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUoRXhlY3V0aW9uRmxhZyBmbGFnLCBSZWdpc3RlckZpbGUq
IHJlZ2lzdGVyRmkKICAgICAgICAgfQogCiAgICAgICAgIEFTU0VSVCgoKml0ZXIpLT5pc1Zhcmlh
YmxlT2JqZWN0KCkpOwotICAgICAgICBKU1ZhcmlhYmxlT2JqZWN0KiBzY29wZSA9IHN0YXRpY19j
YXN0PEpTVmFyaWFibGVPYmplY3QqPihpdGVyLT5nZXQoKSk7CisgICAgICAgIEpTVmFyaWFibGVP
YmplY3QqIHNjb3BlID0ganNDYXN0PEpTVmFyaWFibGVPYmplY3QqPihpdGVyLT5nZXQoKSk7CiAg
ICAgICAgIEFTU0VSVChjYWxsRnJhbWUtPnIodmFsdWUpLmpzVmFsdWUoKSk7CiAgICAgICAgIHNj
b3BlLT5yZWdpc3RlckF0KGluZGV4KS5zZXQoKmdsb2JhbERhdGEsIHNjb3BlLCBjYWxsRnJhbWUt
PnIodmFsdWUpLmpzVmFsdWUoKSk7CiAgICAgICAgIHZQQyArPSBPUENPREVfTEVOR1RIKG9wX3B1
dF9zY29wZWRfdmFyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
U3R1YnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKaW5kZXgg
M2NiMmMzYTI0NzViZTg1ZWJkYjRhN2YzNTBmMGM1M2EwNWZlYjMyMS4uNDQ4ZDU4NTJjYmE4ZThm
ODM4NGRhOGFmZjc4MjcyN2FhNTk0OWRlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRTdHVicy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRT
dHVicy5jcHAKQEAgLTI5NDksMjAgKzI5NDksMjAgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oaW50
LCBvcF9lcSkKIAogICAgIGlmIChjZWxsMS0+aXNTdHJpbmcoKSkgewogICAgICAgICBpZiAoc3Jj
Mi5pc0ludDMyKCkpCi0gICAgICAgICAgICByZXR1cm4ganNUb051bWJlcihzdGF0aWNfY2FzdDxK
U1N0cmluZyo+KGNlbGwxKS0+dmFsdWUoc3RhY2tGcmFtZS5jYWxsRnJhbWUpKSA9PSBzcmMyLmFz
SW50MzIoKTsKKyAgICAgICAgICAgIHJldHVybiBqc1RvTnVtYmVyKGpzQ2FzdDxKU1N0cmluZyo+
KGNlbGwxKS0+dmFsdWUoc3RhY2tGcmFtZS5jYWxsRnJhbWUpKSA9PSBzcmMyLmFzSW50MzIoKTsK
ICAgICAgICAgICAgIAogICAgICAgICBpZiAoc3JjMi5pc0RvdWJsZSgpKQotICAgICAgICAgICAg
cmV0dXJuIGpzVG9OdW1iZXIoc3RhdGljX2Nhc3Q8SlNTdHJpbmcqPihjZWxsMSktPnZhbHVlKHN0
YWNrRnJhbWUuY2FsbEZyYW1lKSkgPT0gc3JjMi5hc0RvdWJsZSgpOworICAgICAgICAgICAgcmV0
dXJuIGpzVG9OdW1iZXIoanNDYXN0PEpTU3RyaW5nKj4oY2VsbDEpLT52YWx1ZShzdGFja0ZyYW1l
LmNhbGxGcmFtZSkpID09IHNyYzIuYXNEb3VibGUoKTsKIAogICAgICAgICBpZiAoc3JjMi5pc1Ry
dWUoKSkKLSAgICAgICAgICAgIHJldHVybiBqc1RvTnVtYmVyKHN0YXRpY19jYXN0PEpTU3RyaW5n
Kj4oY2VsbDEpLT52YWx1ZShzdGFja0ZyYW1lLmNhbGxGcmFtZSkpID09IDEuMDsKKyAgICAgICAg
ICAgIHJldHVybiBqc1RvTnVtYmVyKGpzQ2FzdDxKU1N0cmluZyo+KGNlbGwxKS0+dmFsdWUoc3Rh
Y2tGcmFtZS5jYWxsRnJhbWUpKSA9PSAxLjA7CiAKICAgICAgICAgaWYgKHNyYzIuaXNGYWxzZSgp
KQotICAgICAgICAgICAgcmV0dXJuIGpzVG9OdW1iZXIoc3RhdGljX2Nhc3Q8SlNTdHJpbmcqPihj
ZWxsMSktPnZhbHVlKHN0YWNrRnJhbWUuY2FsbEZyYW1lKSkgPT0gMC4wOworICAgICAgICAgICAg
cmV0dXJuIGpzVG9OdW1iZXIoanNDYXN0PEpTU3RyaW5nKj4oY2VsbDEpLT52YWx1ZShzdGFja0Zy
YW1lLmNhbGxGcmFtZSkpID09IDAuMDsKIAogICAgICAgICBKU0NlbGwqIGNlbGwyID0gc3JjMi5h
c0NlbGwoKTsKICAgICAgICAgaWYgKGNlbGwyLT5pc1N0cmluZygpKQotICAgICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PEpTU3RyaW5nKj4oY2VsbDEpLT52YWx1ZShzdGFja0ZyYW1lLmNhbGxG
cmFtZSkgPT0gc3RhdGljX2Nhc3Q8SlNTdHJpbmcqPihjZWxsMiktPnZhbHVlKHN0YWNrRnJhbWUu
Y2FsbEZyYW1lKTsKKyAgICAgICAgICAgIHJldHVybiBqc0Nhc3Q8SlNTdHJpbmcqPihjZWxsMSkt
PnZhbHVlKHN0YWNrRnJhbWUuY2FsbEZyYW1lKSA9PSBqc0Nhc3Q8SlNTdHJpbmcqPihjZWxsMikt
PnZhbHVlKHN0YWNrRnJhbWUuY2FsbEZyYW1lKTsKIAogICAgICAgICBzcmMyID0gYXNPYmplY3Qo
Y2VsbDIpLT50b1ByaW1pdGl2ZShzdGFja0ZyYW1lLmNhbGxGcmFtZSk7CiAgICAgICAgIENIRUNL
X0ZPUl9FWENFUFRJT04oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFi
bGUuaAppbmRleCBkODIxNjQ2YTg0MDQ5ODdiMmIyOGU4MzI1OTVmN2JiNGE2ZWFjMGRjLi4zYjk3
OWJhODI4MGFhMjM4ZDNlMDlkYmFjZTg1NGVlYTg0YWZmOTFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCkBAIC03MjEsNyArNzIxLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICBpbmxpbmUgYm9vbCBpc0hvc3RGdW5jdGlvbihKU1ZhbHVlIHZhbHVlLCBO
YXRpdmVGdW5jdGlvbiBuYXRpdmVGdW5jdGlvbikKICAgICB7Ci0gICAgICAgIEpTRnVuY3Rpb24q
IGZ1bmN0aW9uID0gc3RhdGljX2Nhc3Q8SlNGdW5jdGlvbio+KGdldEpTRnVuY3Rpb24odmFsdWUp
KTsKKyAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGdl
dEpTRnVuY3Rpb24odmFsdWUpKTsKICAgICAgICAgaWYgKCFmdW5jdGlvbiB8fCAhZnVuY3Rpb24t
PmlzSG9zdEZ1bmN0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHJl
dHVybiBmdW5jdGlvbi0+bmF0aXZlRnVuY3Rpb24oKSA9PSBuYXRpdmVGdW5jdGlvbjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgKaW5kZXggZjI2NzY2NGI0
YWNjYmRkOTJkYzQxMTNlYWJkZGU0ZDUxYjRlYjc0My4uY2UwMTM1NGM4MDE2OTA5ZTczZjg1M2Q4
MmM0YTcwMTAwYWFkMjdjOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBY3RpdmF0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
Y3RpdmF0aW9uLmgKQEAgLTEwMiw3ICsxMDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBpbmxp
bmUgSlNBY3RpdmF0aW9uKiBhc0FjdGl2YXRpb24oSlNWYWx1ZSB2YWx1ZSkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChhc09iamVjdCh2YWx1ZSktPmluaGVyaXRzKCZKU0FjdGl2YXRpb246OnNfaW5m
bykpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNBY3RpdmF0aW9uKj4oYXNPYmplY3Qo
dmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU0FjdGl2YXRpb24qPihhc09iamVjdCh2
YWx1ZSkpOwogICAgIH0KICAgICAKICAgICBBTFdBWVNfSU5MSU5FIEpTQWN0aXZhdGlvbiogUmVn
aXN0ZXI6OmFjdGl2YXRpb24oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5LmNwcAppbmRleCA0MjU1ZWFjMTZhMGQ1MjJhNGM1ODE4NWE4MmI2MzYyNTNmYjM4NmNl
Li40Y2E4NmUyZWQzZDQxYzU3YWQwMmY0MzA4YTI3ZWNkYTNlOWRjNzU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcApAQCAtNTQ1LDcgKzU0NSw3IEBAIHZvaWQg
SlNBcnJheTo6c2V0TGVuZ3RoV3JpdGFibGUoRXhlY1N0YXRlKiBleGVjLCBib29sIHdyaXRhYmxl
KQogLy8gRGVmaW5lZCBpbiBFUzUuMSAxNS40LjUuMQogYm9vbCBKU0FycmF5OjpkZWZpbmVPd25Q
cm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjcmlwdG9yLCBib29sIHRo
cm93RXhjZXB0aW9uKQogewotICAgIEpTQXJyYXkqIGFycmF5ID0gc3RhdGljX2Nhc3Q8SlNBcnJh
eSo+KG9iamVjdCk7CisgICAgSlNBcnJheSogYXJyYXkgPSBqc0Nhc3Q8SlNBcnJheSo+KG9iamVj
dCk7CiAKICAgICAvLyAzLiBJZiBQIGlzICJsZW5ndGgiLCB0aGVuCiAgICAgaWYgKHByb3BlcnR5
TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5LmgKaW5kZXggODkwZmRmNGYwYTA5NDRlNTg0YjY2ZjFmNjRlMzU4
MTNjOTcyNDMwNy4uY2EzMTZiMmVjMWMwMjE0YWU0ZGFkOTFjM2NiMmY2ZGIxZTBlMTEzZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaApAQCAtMzM5LDcgKzMzOSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIGlubGluZSBKU0FycmF5KiBhc0FycmF5KEpTQ2VsbCogY2Vs
bCkKICAgICB7CiAgICAgICAgIEFTU0VSVChjZWxsLT5pbmhlcml0cygmSlNBcnJheTo6c19pbmZv
KSk7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU0FycmF5Kj4oY2VsbCk7CisgICAgICAg
IHJldHVybiBqc0Nhc3Q8SlNBcnJheSo+KGNlbGwpOwogICAgIH0KIAogICAgIGlubGluZSBKU0Fy
cmF5KiBhc0FycmF5KEpTVmFsdWUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcAppbmRleCA4ZWJmOGM2MzgxNjQwMDZmNjY1ODA0
MjdlY2Q2ODc4MDE2ZGYyODQxLi41ZmVlNDdjMjQ4MTNhNTdiODc4YTM5MGE4NDYwNzM0YWYzMzQ0
ZmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVu
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5j
dGlvbi5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgY29uc3QgQ2xhc3NJbmZvIEpTQm91bmRGdW5jdGlv
bjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAwLCAwLCBDUkUKIAogRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBib3VuZEZ1bmN0aW9uQ2FsbChFeGVjU3RhdGUqIGV4
ZWMpCiB7Ci0gICAgSlNCb3VuZEZ1bmN0aW9uKiBib3VuZEZ1bmN0aW9uID0gc3RhdGljX2Nhc3Q8
SlNCb3VuZEZ1bmN0aW9uKj4oZXhlYy0+Y2FsbGVlKCkpOworICAgIEpTQm91bmRGdW5jdGlvbiog
Ym91bmRGdW5jdGlvbiA9IGpzQ2FzdDxKU0JvdW5kRnVuY3Rpb24qPihleGVjLT5jYWxsZWUoKSk7
CiAKICAgICBBU1NFUlQoaXNKU0FycmF5KGJvdW5kRnVuY3Rpb24tPmJvdW5kQXJncygpKSk7IC8v
IEN1cnJlbnRseSB0aGlzIGlzIHRydWUhCiAgICAgSlNBcnJheSogYm91bmRBcmdzID0gYXNBcnJh
eShib3VuZEZ1bmN0aW9uLT5ib3VuZEFyZ3MoKSk7CkBAIC01OCw3ICs1OCw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgYm91bmRGdW5jdGlvbkNhbGwoRXhlY1N0YXRlKiBleGVjKQog
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvdW5kRnVuY3Rpb25Db25zdHJ1Y3QoRXhl
Y1N0YXRlKiBleGVjKQogewotICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRGdW5jdGlvbiA9IHN0
YXRpY19jYXN0PEpTQm91bmRGdW5jdGlvbio+KGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBKU0JvdW5k
RnVuY3Rpb24qIGJvdW5kRnVuY3Rpb24gPSBqc0Nhc3Q8SlNCb3VuZEZ1bmN0aW9uKj4oZXhlYy0+
Y2FsbGVlKCkpOwogCiAgICAgQVNTRVJUKGlzSlNBcnJheShib3VuZEZ1bmN0aW9uLT5ib3VuZEFy
Z3MoKSkpOyAvLyBDdXJyZW50bHkgdGhpcyBpcyB0cnVlIQogICAgIEpTQXJyYXkqIGJvdW5kQXJn
cyA9IGFzQXJyYXkoYm91bmRGdW5jdGlvbi0+Ym91bmRBcmdzKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJyYXkuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQnl0ZUFycmF5LmgKaW5kZXggMDYxODFkOTAxMTM0MTA3YWQ1ODg3
N2Y4NWYxNjZiYWUxMTBkYTc2Yy4uZTg3MzY2NzgwM2IyNTc1ZGJiMGE0Y2ZjNTM1NTIxNTllOTlk
ZDEzNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCeXRlQXJy
YXkuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0J5dGVBcnJheS5oCkBA
IC0xMjMsNyArMTIzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgSlNCeXRlQXJyYXkqIGFzQnl0
ZUFycmF5KEpTVmFsdWUgdmFsdWUpOwogICAgIGlubGluZSBKU0J5dGVBcnJheSogYXNCeXRlQXJy
YXkoSlNWYWx1ZSB2YWx1ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU0J5
dGVBcnJheSo+KHZhbHVlLmFzQ2VsbCgpKTsKKyAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU0J5dGVB
cnJheSo+KHZhbHVlLmFzQ2VsbCgpKTsKICAgICB9CiAKICAgICBpbmxpbmUgYm9vbCBpc0pTQnl0
ZUFycmF5KEpTVmFsdWUgdikgeyByZXR1cm4gdi5pc0NlbGwoKSAmJiB2LmFzQ2VsbCgpLT5jbGFz
c0luZm8oKSA9PSAmSlNCeXRlQXJyYXk6OnNfaW5mbzsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbC5jcHAKaW5kZXggZjA4ZDAyNjBhYWVhM2VjZDk2NWQzODg2ZWU4YzAxYWRi
ZjVlZDU0Yi4uN2Y5YmE4OGEyNzczZmJjZThiZWRiY2VmNzcxOTQ2MTNkMWU1MjZlYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCkBAIC0xNTksNyArMTU5LDcgQEAg
SlNPYmplY3QqIEpTQ2VsbDo6dG9PYmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgIGlmIChpc1N0cmluZygpKQogICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSlNTdHJpbmcqPih0aGlzKS0+dG9PYmplY3QoZXhlYywgZ2xv
YmFsT2JqZWN0KTsKICAgICBBU1NFUlQoaXNPYmplY3QoKSk7Ci0gICAgcmV0dXJuIHN0YXRpY19j
YXN0PEpTT2JqZWN0Kj4oY29uc3RfY2FzdDxKU0NlbGwqPih0aGlzKSk7CisgICAgcmV0dXJuIGpz
Q2FzdDxKU09iamVjdCo+KGNvbnN0X2Nhc3Q8SlNDZWxsKj4odGhpcykpOwogfQogCiB2b2lkIHNs
b3dWYWxpZGF0ZUNlbGwoSlNDZWxsKiBjZWxsKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGwuaAppbmRleCAyMzJiNDc0YWUxMmQ1ZWY4Njk2NGRkNTZjNjExYWE4NzJlYmFhNWQyLi5l
ZDg5ZTYyOTFiMjRhMDdlYjFhMGUxNTE5N2I1Njc3OGM0YjQ1MzljIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuaApAQCAtMzUxLDE0ICszNTEsMTQgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVG8sIHR5cGVuYW1lIEZyb20+CiAgICAgaW5saW5l
IFRvIGpzQ2FzdChGcm9tKiBmcm9tKQogICAgIHsKLSAgICAgICAgQVNTRVJUKCFmcm9tIHx8IGZy
b20tPmluaGVyaXRzKCZXVEY6OlJlbW92ZVBvaW50ZXI8VG8+OjpUeXBlOjpzX2luZm8pKTsKKyAg
ICAgICAgQVNTRVJUKCFmcm9tIHx8IGZyb20tPkpTQ2VsbDo6aW5oZXJpdHMoJldURjo6UmVtb3Zl
UG9pbnRlcjxUbz46OlR5cGU6OnNfaW5mbykpOwogICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
VG8+KGZyb20pOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFRvPgogICAgIGlubGlu
ZSBUbyBqc0Nhc3QoSlNWYWx1ZSBmcm9tKQogICAgIHsKLSAgICAgICAgQVNTRVJUKGZyb20uaXND
ZWxsKCkgJiYgZnJvbS5hc0NlbGwoKS0+aW5oZXJpdHMoJldURjo6UmVtb3ZlUG9pbnRlcjxUbz46
OlR5cGU6OnNfaW5mbykpOworICAgICAgICBBU1NFUlQoZnJvbS5pc0NlbGwoKSAmJiBmcm9tLmFz
Q2VsbCgpLT5KU0NlbGw6OmluaGVyaXRzKCZXVEY6OlJlbW92ZVBvaW50ZXI8VG8+OjpUeXBlOjpz
X2luZm8pKTsKICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFRvPihmcm9tLmFzQ2VsbCgpKTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCmluZGV4IGNiYzQzNmUxYThiZTRmZWVmYjEzZGIzZjM2MTI2OTFhN2EzMzUwNWMuLjY0ZWJh
NzQxZDlkMmY5MTUxYjA3YjAzNTEwMWI3NTY1MTkzNGYwNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMzU4LDcgKzM1OCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIGlubGluZSBKU0dsb2JhbE9iamVjdCogYXNHbG9iYWxPYmplY3Qo
SlNWYWx1ZSB2YWx1ZSkKICAgICB7CiAgICAgICAgIEFTU0VSVChhc09iamVjdCh2YWx1ZSktPmlz
R2xvYmFsT2JqZWN0KCkpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNHbG9iYWxPYmpl
Y3QqPihhc09iamVjdCh2YWx1ZSkpOworICAgICAgICByZXR1cm4ganNDYXN0PEpTR2xvYmFsT2Jq
ZWN0Kj4oYXNPYmplY3QodmFsdWUpKTsKICAgICB9CiAKICAgICBpbmxpbmUgdm9pZCBKU0dsb2Jh
bE9iamVjdDo6c2V0UmVnaXN0ZXJzKFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJzLCBQ
YXNzT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVyPFVua25vd24+ID4gcmVnaXN0ZXJBcnJheSwgc2l6
ZV90IGNvdW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCmluZGV4IGE2YzVlYWJiZGIwMTJlODUzNzQxYmMx
OWVmNzFmYzQzODI2YThjNjkuLmE5OWIzNjEyY2JkZGVjNWJmMjE4MDBiOTIxYzE1YjE3YWZiNGZi
MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKQEAgLTUwNSw3ICs1MDUsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNFdmFsKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBK
U09iamVjdCogdGhpc09iamVjdCA9IGV4ZWMtPmhvc3RUaGlzVmFsdWUoKS50b1RoaXNPYmplY3Qo
ZXhlYyk7CiAgICAgSlNPYmplY3QqIHVud3JhcHBlZE9iamVjdCA9IHRoaXNPYmplY3QtPnVud3Jh
cHBlZE9iamVjdCgpOwotICAgIGlmICghdW53cmFwcGVkT2JqZWN0LT5pc0dsb2JhbE9iamVjdCgp
IHx8IHN0YXRpY19jYXN0PEpTR2xvYmFsT2JqZWN0Kj4odW53cmFwcGVkT2JqZWN0KS0+ZXZhbEZ1
bmN0aW9uKCkgIT0gZXhlYy0+Y2FsbGVlKCkpCisgICAgaWYgKCF1bndyYXBwZWRPYmplY3QtPmlz
R2xvYmFsT2JqZWN0KCkgfHwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4odW53cmFwcGVkT2JqZWN0
KS0+ZXZhbEZ1bmN0aW9uKCkgIT0gZXhlYy0+Y2FsbGVlKCkpCiAgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3IoZXhlYywgY3JlYXRlRXZhbEVycm9yKGV4ZWMsICJUaGUgXCJ0aGlzXCIgdmFsdWUg
cGFzc2VkIHRvIGV2YWwgbXVzdCBiZSB0aGUgZ2xvYmFsIG9iamVjdCBmcm9tIHdoaWNoIGV2YWwg
b3JpZ2luYXRlZCIpKTsKIAogICAgIEpTVmFsdWUgeCA9IGV4ZWMtPmFyZ3VtZW50KDApOwpAQCAt
NTI1LDExICs1MjUsMTEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5j
RXZhbChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgfQogCiAgICAgRXZhbEV4ZWN1dGFibGUqIGV2YWwg
PSBFdmFsRXhlY3V0YWJsZTo6Y3JlYXRlKGV4ZWMsIG1ha2VTb3VyY2UocyksIGZhbHNlKTsKLSAg
ICBKU09iamVjdCogZXJyb3IgPSBldmFsLT5jb21waWxlKGV4ZWMsIHN0YXRpY19jYXN0PEpTR2xv
YmFsT2JqZWN0Kj4odW53cmFwcGVkT2JqZWN0KS0+Z2xvYmFsU2NvcGVDaGFpbigpKTsKKyAgICBK
U09iamVjdCogZXJyb3IgPSBldmFsLT5jb21waWxlKGV4ZWMsIGpzQ2FzdDxKU0dsb2JhbE9iamVj
dCo+KHVud3JhcHBlZE9iamVjdCktPmdsb2JhbFNjb3BlQ2hhaW4oKSk7CiAgICAgaWYgKGVycm9y
KQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGVycm9yKTsKIAotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+aW50ZXJwcmV0ZXIoKS0+ZXhlY3V0ZShldmFsLCBleGVj
LCB0aGlzT2JqZWN0LCBzdGF0aWNfY2FzdDxKU0dsb2JhbE9iamVjdCo+KHVud3JhcHBlZE9iamVj
dCktPmdsb2JhbFNjb3BlQ2hhaW4oKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhl
Yy0+aW50ZXJwcmV0ZXIoKS0+ZXhlY3V0ZShldmFsLCBleGVjLCB0aGlzT2JqZWN0LCBqc0Nhc3Q8
SlNHbG9iYWxPYmplY3QqPih1bndyYXBwZWRPYmplY3QpLT5nbG9iYWxTY29wZUNoYWluKCkpKTsK
IH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnbG9iYWxGdW5jUGFyc2VJbnQoRXhl
Y1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3Bw
CmluZGV4IDFiZGI5MGZmNmE1YjIwNTg3ZWVkY2ZjMDcyMzIyNjViNWU5NmFjYmMuLjI0YTE1NTY4
ZWY0NjU4YWM5M2IyY2UxNGU0YTVmOTNmYmQ2ZmM4YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5jcHAKQEAgLTIwMyw3ICsyMDMsNyBAQCBib29sIEpTT2JqZWN0
OjpzZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpT
VmFsdWUgcHJvdAogewogICAgIEpTVmFsdWUgY2hlY2tGb3IgPSB0aGlzOwogICAgIGlmICh0aGlz
LT5pc0dsb2JhbE9iamVjdCgpKQotICAgICAgICBjaGVja0ZvciA9IHN0YXRpY19jYXN0PEpTR2xv
YmFsT2JqZWN0Kj4odGhpcyktPmdsb2JhbEV4ZWMoKS0+dGhpc1ZhbHVlKCk7CisgICAgICAgIGNo
ZWNrRm9yID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4odGhpcyktPmdsb2JhbEV4ZWMoKS0+dGhp
c1ZhbHVlKCk7CiAKICAgICBKU1ZhbHVlIG5leHRQcm90b3R5cGUgPSBwcm90b3R5cGU7CiAgICAg
d2hpbGUgKG5leHRQcm90b3R5cGUgJiYgbmV4dFByb3RvdHlwZS5pc09iamVjdCgpKSB7CkBAIC0y
MTcsNyArMjE3LDcgQEAgYm9vbCBKU09iamVjdDo6c2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hlY2so
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKU1ZhbHVlIHByb3QKIAogYm9vbCBKU09iamVjdDo6
YWxsb3dzQWNjZXNzRnJvbShFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IGlzR2xvYmFsVGhpcygpID8gc3RhdGljX2Nhc3Q8SlNHbG9iYWxUaGlz
Kj4odGhpcyktPnVud3JhcHBlZE9iamVjdCgpIDogdGhpcy0+Z2xvYmFsT2JqZWN0KCk7CisgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGlzR2xvYmFsVGhpcygpID8ganNDYXN0PEpT
R2xvYmFsVGhpcyo+KHRoaXMpLT51bndyYXBwZWRPYmplY3QoKSA6IHRoaXMtPmdsb2JhbE9iamVj
dCgpOwogICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKCkt
PmFsbG93c0FjY2Vzc0Zyb20oZ2xvYmFsT2JqZWN0LCBleGVjKTsKIH0KIApAQCAtNDQ1LDEzICs0
NDUsMTMgQEAgSlNTdHJpbmcqIEpTT2JqZWN0Ojp0b1N0cmluZyhFeGVjU3RhdGUqIGV4ZWMpIGNv
bnN0CiAKIEpTT2JqZWN0KiBKU09iamVjdDo6dG9UaGlzT2JqZWN0KEpTQ2VsbCogY2VsbCwgRXhl
Y1N0YXRlKikKIHsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SlNPYmplY3QqPihjZWxsKTsKKyAg
ICByZXR1cm4ganNDYXN0PEpTT2JqZWN0Kj4oY2VsbCk7CiB9CiAKIEpTT2JqZWN0KiBKU09iamVj
dDo6dW53cmFwcGVkT2JqZWN0KCkKIHsKICAgICBpZiAoaXNHbG9iYWxUaGlzKCkpCi0gICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxKU0dsb2JhbFRoaXMqPih0aGlzKS0+dW53cmFwcGVkT2JqZWN0
KCk7CisgICAgICAgIHJldHVybiBqc0Nhc3Q8SlNHbG9iYWxUaGlzKj4odGhpcyktPnVud3JhcHBl
ZE9iamVjdCgpOwogICAgIHJldHVybiB0aGlzOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuaAppbmRleCAzZjNkMjgxY2Y1ZjM2NDU0NzM4OTJlZThlYzJhNWYyYjQx
YzhhMmFhLi40MTZhNmFiNWI4MzJiOGNlN2Q1ZTVjNmNmMTZiN2M1YmU0Mzk3NjI4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKQEAgLTQ3NCw3ICs0NzQsNyBAQCBp
bmxpbmUgU3RydWN0dXJlKiBjcmVhdGVFbXB0eU9iamVjdFN0cnVjdHVyZShKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIEpTR2xvYmFsTwogaW5saW5lIEpTT2JqZWN0KiBhc09iamVjdChKU0NlbGwq
IGNlbGwpCiB7CiAgICAgQVNTRVJUKGNlbGwtPmlzT2JqZWN0KCkpOwotICAgIHJldHVybiBzdGF0
aWNfY2FzdDxKU09iamVjdCo+KGNlbGwpOworICAgIHJldHVybiBqc0Nhc3Q8SlNPYmplY3QqPihj
ZWxsKTsKIH0KIAogaW5saW5lIEpTT2JqZWN0KiBhc09iamVjdChKU1ZhbHVlIHZhbHVlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5oCmluZGV4IDc1MzBkNzUzMjI3MDRiYzY2MDkxM2U3NjAxYzE0OTU4OTU4MzZkOGQuLjVi
NjVlNTlmMjVjNzIyMmY1NDFkOGJkZjZhOTYwYWI1MDQzMGYwNTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKQEAg
LTEyMSw3ICsxMjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIEFMV0FZU19JTkxJTkUgSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvciogUmVnaXN0ZXI6OnByb3BlcnR5TmFtZUl0ZXJhdG9yKCkgY29u
c3QKICAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yKj4oanNWYWx1ZSgpLmFzQ2VsbCgpKTsKKyAgICAgICAgcmV0dXJuIGpzQ2FzdDxKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yKj4oanNWYWx1ZSgpLmFzQ2VsbCgpKTsKICAgICB9CiAKIH0gLy8gbmFt
ZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
dHJpbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKaW5kZXgg
MzJhMzI3ODhhZDliZjA4ZmQ3ZGFhODJiYjNhMjVjNzY2ZGI5ZWZmMy4uYjg5MjJjOGExMmUyY2Zh
OTExN2U5MDJmYmYxZWE4ODM2OWJiNTgwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTdHJpbmcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0cmluZy5oCkBAIC0yNzcsNyArMjc3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgaW5s
aW5lIEpTU3RyaW5nKiBhc1N0cmluZyhKU1ZhbHVlIHZhbHVlKQogICAgIHsKICAgICAgICAgQVNT
RVJUKHZhbHVlLmFzQ2VsbCgpLT5pc1N0cmluZygpKTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEpTU3RyaW5nKj4odmFsdWUuYXNDZWxsKCkpOworICAgICAgICByZXR1cm4ganNDYXN0PEpT
U3RyaW5nKj4odmFsdWUuYXNDZWxsKCkpOwogICAgIH0KIAogICAgIGlubGluZSBKU1N0cmluZyog
anNFbXB0eVN0cmluZyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCkBAIC00NTgsNyArNDU4LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgaW5saW5lIEpTU3RyaW5nKiBKU1ZhbHVlOjp0b1N0cmlu
ZyhFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiAgICAgewogICAgICAgICBpZiAoaXNTdHJpbmcoKSkK
LSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU1N0cmluZyo+KGFzQ2VsbCgpKTsKKyAg
ICAgICAgICAgIHJldHVybiBqc0Nhc3Q8SlNTdHJpbmcqPihhc0NlbGwoKSk7CiAgICAgICAgIHJl
dHVybiB0b1N0cmluZ1Nsb3dDYXNlKGV4ZWMpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKaW5kZXggNjQwMTRiYThjZTRh
YzhkY2FkM2M5OTIxMDhkZGY2Y2YwNDE3YzQyNy4uYjg0YTBlNDU1ZTRmM2FiNzNhNGIzMDk5YWYx
YWU2OGIyNzE1ZmM4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdQcm90b3R5cGUuY3BwCkBAIC0xMTAzLDcgKzExMDMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY1N1YnN0cihFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
SlNTdHJpbmcqIGpzU3RyaW5nID0gMDsKICAgICBVU3RyaW5nIHVTdHJpbmc7CiAgICAgaWYgKHRo
aXNWYWx1ZS5pc1N0cmluZygpKSB7Ci0gICAgICAgIGpzU3RyaW5nID0gc3RhdGljX2Nhc3Q8SlNT
dHJpbmcqPih0aGlzVmFsdWUuYXNDZWxsKCkpOworICAgICAgICBqc1N0cmluZyA9IGpzQ2FzdDxK
U1N0cmluZyo+KHRoaXNWYWx1ZS5hc0NlbGwoKSk7CiAgICAgICAgIGxlbiA9IGpzU3RyaW5nLT5s
ZW5ndGgoKTsKICAgICB9IGVsc2UgaWYgKHRoaXNWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7
CiAgICAgICAgIC8vIENoZWNrT2JqZWN0Q29lcmNpYmxlCg==
</data>
<flag name="review"
          id="140534"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
      

    </bug>

</bugzilla>